Skip to content

Commit

Permalink
Use reco::TrackToTrackingParticleAssociator instead of TrackAssociato…
Browse files Browse the repository at this point in the history
…rBase

The TrackAssociatorBase lives in the EventSetup but gets data from both the
edm::Event and edm::EventSetup. This is not allowed by CMSSW rules. Therefore
TrackAssociatorBase is replaced by reco::TrackToTrackingParticleAssociator which
is obtained via the edm::Event.
This solves the consumes problem associated with TrackAssociatorBase usage.
  • Loading branch information
Dr15Jones committed Jan 14, 2015
1 parent babfb43 commit a8f086d
Show file tree
Hide file tree
Showing 90 changed files with 559 additions and 549 deletions.
21 changes: 12 additions & 9 deletions Alignment/OfflineValidation/plugins/ValidationMisalignedTracker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,16 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "SimDataFormats/Track/interface/SimTrackContainer.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
#include "SimDataFormats/Associations/interface/TrackToTrackingParticleAssociator.h"

#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
#include "TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"

//
// constructors and destructor
Expand Down Expand Up @@ -236,14 +239,15 @@ ValidationMisalignedTracker::~ValidationMisalignedTracker()
void
ValidationMisalignedTracker::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
{
if (watchTrackAssociatorRecord_.check(iSetup)) {
associatore.clear();
edm::ESHandle<TrackAssociatorBase> theAssociator;
std::vector<const reco::TrackToTrackingParticleAssociator*> associatore;

{
edm::Handle<reco::TrackToTrackingParticleAssociator> theAssociator;
for (unsigned int w=0;w<associators.size();w++) {
iSetup.get<TrackAssociatorRecord>().get(associators[w], theAssociator);
iEvent.getByLabel(associators[w], theAssociator);
associatore.push_back( theAssociator.product() );
}
}
}

edm::LogInfo("Tracker Misalignment Validation") << "\n Starting!";

Expand Down Expand Up @@ -354,13 +358,12 @@ ValidationMisalignedTracker::analyze(const edm::Event& iEvent, const edm::EventS
//associate tracks
LogTrace("TrackValidator") << "Calling associateRecoToSim method" << "\n";
reco::RecoToSimCollection recSimColl=associatore[ww]->associateRecoToSim(trackCollection,
TPCollectionHfake,
&iEvent,&iSetup);
TPCollectionHfake);

LogTrace("TrackValidator") << "Calling associateSimToReco method" << "\n";
reco::SimToRecoCollection simRecColl=associatore[ww]->associateSimToReco(trackCollection,
TPCollectionHeff,
&iEvent, &iSetup);
TPCollectionHeff);




Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

//
#include "FWCore/Framework/interface/ESHandle.h"
#include "SimTracker/Records/interface/TrackAssociatorRecord.h"
#include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingVertex.h"
Expand All @@ -39,8 +37,8 @@ class ValidationMisalignedTracker : public edm::EDAnalyzer {


private:
virtual void analyze(const edm::Event&, const edm::EventSetup&);
virtual void endJob() ;
virtual void analyze(const edm::Event&, const edm::EventSetup&) override;
virtual void endJob() override;

// ----------member data ---------------------------

Expand Down Expand Up @@ -92,16 +90,13 @@ class ValidationMisalignedTracker : public edm::EDAnalyzer {
bool onlyDiag;
edm::ESHandle<MagneticField> theMF;
std::vector<std::string> associators;
std::vector<const TrackAssociatorBase*> associatore;

std::vector<edm::InputTag> label;
edm::InputTag label_tp_effic;
edm::InputTag label_tp_fake;

GlobalVector magField;
std::vector<float> ptused;

edm::ESWatcher<TrackAssociatorRecord> watchTrackAssociatorRecord_;
};

#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@
### validation-specific includes
process.load("SimTracker.TrackAssociation.TrackAssociatorByHits_cfi")
process.load("SimTracker.TrackAssociatorProducers.trackAssociatorByHits_cfi")
process.load("Validation.RecoTrack.cuts_cff")
process.load("Validation.RecoTrack.MultiTrackValidator_cff")
process.load("SimGeneral.TrackingAnalysis.trackingParticles_cfi")
### configuration MultiTrackValidator ###
process.multiTrackValidator.outputFile = '.oO[outputFile]Oo.'
process.multiTrackValidator.associators = ['TrackAssociatorByHits']
process.multiTrackValidator.associators = ['trackAssociatorByHits']
process.multiTrackValidator.UseAssociators = cms.bool(True)
process.multiTrackValidator.label = ['generalTracks']
Expand All @@ -51,12 +51,14 @@
process.siPixelRecHits*process.siStripMatchedRecHits*
process.ckftracks*
process.cutsRecoTracks*
process.trackAssociatorByHits*
process.multiTrackValidator
)
process.re_tracking = cms.Sequence(process.siPixelRecHits*process.siStripMatchedRecHits*
process.ckftracks*
process.cutsRecoTracks*
process.trackAssociatorByHits*
process.multiTrackValidator
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/Utilities/interface/ESInputTag.h"

class ShallowSimTracksProducer : public edm::EDProducer {

Expand All @@ -17,9 +16,9 @@ class ShallowSimTracksProducer : public edm::EDProducer {
const std::string Prefix;
const std::string Suffix;
const edm::InputTag trackingParticles_tag;
const edm::ESInputTag associator_tag;
const edm::InputTag associator_tag;
const edm::InputTag tracks_tag;
void produce( edm::Event &, const edm::EventSetup & );
void produce( edm::Event &, const edm::EventSetup & ) override;

};
#endif
13 changes: 6 additions & 7 deletions CalibTracker/SiStripCommon/plugins/ShallowSimTracksProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h"
#include "SimTracker/Records/interface/TrackAssociatorRecord.h"
#include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h"
#include "SimDataFormats/Associations/interface/TrackToTrackingParticleAssociator.h"
#include "DataFormats/RecoCandidate/interface/TrackAssociation.h"

#include "FWCore/MessageLogger/interface/MessageLogger.h"
Expand All @@ -15,7 +14,7 @@ ShallowSimTracksProducer::ShallowSimTracksProducer(const edm::ParameterSet& conf
: Prefix( conf.getParameter<std::string>("Prefix") ),
Suffix( conf.getParameter<std::string>("Suffix") ),
trackingParticles_tag( conf.getParameter<edm::InputTag>("TrackingParticles")),
associator_tag( conf.getParameter<edm::ESInputTag>("Associator")),
associator_tag( conf.getParameter<edm::InputTag>("Associator")),
tracks_tag( conf.getParameter<edm::InputTag>("Tracks"))
{
produces <std::vector<unsigned> > ( Prefix + "multi" + Suffix );
Expand All @@ -36,9 +35,9 @@ ShallowSimTracksProducer::ShallowSimTracksProducer(const edm::ParameterSet& conf
void ShallowSimTracksProducer::
produce(edm::Event& event, const edm::EventSetup& setup) {

edm::Handle<edm::View<reco::Track> > tracks ; event.getByLabel( tracks_tag, tracks);
edm::Handle<TrackingParticleCollection> trackingParticles ; event.getByLabel( trackingParticles_tag, trackingParticles );
edm::ESHandle<TrackAssociatorBase> associator ; setup.get<TrackAssociatorRecord>().get( associator_tag, associator);
edm::Handle<edm::View<reco::Track> > tracks ; event.getByLabel( tracks_tag, tracks);
edm::Handle<TrackingParticleCollection> trackingParticles ; event.getByLabel( trackingParticles_tag, trackingParticles );
edm::Handle<reco::TrackToTrackingParticleAssociator> associator ; event.getByLabel( associator_tag, associator);

unsigned size = tracks->size();
std::auto_ptr<std::vector<unsigned> > multi ( new std::vector<unsigned>(size, 0));
Expand All @@ -56,7 +55,7 @@ produce(edm::Event& event, const edm::EventSetup& setup) {
std::auto_ptr<std::vector<double> > vy ( new std::vector<double> (size,-1000));
std::auto_ptr<std::vector<double> > vz ( new std::vector<double> (size,-1000));

reco::RecoToSimCollection associations = associator->associateRecoToSim( tracks, trackingParticles, &event, &setup );
reco::RecoToSimCollection associations = associator->associateRecoToSim( tracks, trackingParticles);

for( reco::RecoToSimCollection::const_iterator association = associations.begin();
association != associations.end(); association++) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import FWCore.ParameterSet.Config as cms

from SimTracker.TrackAssociation.TrackAssociatorByHits_cfi import *
from SimTracker.TrackAssociatorProducers.trackAssociatorByHits_cfi import *

shallowSimTracks = cms.EDProducer("ShallowSimTracksProducer",
Associator=cms.ESInputTag('TrackAssociatorByHits:TrackAssociatorByHits'),
Associator=cms.InputTag('trackAssociatorByHits'),
TrackingParticles=cms.InputTag("mix:MergedTrackTruth"),
Tracks=cms.InputTag("generalTracks",""),
Prefix=cms.string("strack"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

#track match
from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
from SimTracker.TrackAssociation.TrackAssociatorByChi2_cfi import *
from SimTracker.TrackAssociation.TrackAssociatorByHits_cfi import *
from SimTracker.TrackAssociation.trackMCMatchSequence_cff import *
# define post-reco generator sequence
postreco_generator = cms.Sequence(trackMCMatchSequence)
Expand Down
16 changes: 7 additions & 9 deletions DPGAnalysis/SiStripTools/plugins/OverlapProblemTPAnalyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"

#include "SimTracker/TrackAssociation/interface/TrackAssociatorBase.h"
#include "SimTracker/Records/interface/TrackAssociatorRecord.h"
#include "SimDataFormats/Associations/interface/TrackToTrackingParticleAssociator.h"

#include "TH1F.h"
#include "TH2F.h"
Expand Down Expand Up @@ -87,6 +86,7 @@ class OverlapProblemTPAnalyzer : public edm::EDAnalyzer {

edm::EDGetTokenT<TrackingParticleCollection> m_tpcollToken;
edm::EDGetTokenT<edm::View<reco::Track> > m_trkcollToken;
edm::EDGetTokenT<reco::TrackToTrackingParticleAssociator> m_associatorToken;
};

//
Expand All @@ -103,8 +103,8 @@ class OverlapProblemTPAnalyzer : public edm::EDAnalyzer {
OverlapProblemTPAnalyzer::OverlapProblemTPAnalyzer(const edm::ParameterSet& iConfig):
m_simhitytecr(), m_assosimhitytecr(),
m_tpcollToken(consumes<TrackingParticleCollection>(iConfig.getParameter<edm::InputTag>("trackingParticlesCollection"))),
m_trkcollToken(consumes<edm::View<reco::Track> >(iConfig.getParameter<edm::InputTag>("trackCollection")))

m_trkcollToken(consumes<edm::View<reco::Track> >(iConfig.getParameter<edm::InputTag>("trackCollection"))),
m_associatorToken(consumes<reco::TrackToTrackingParticleAssociator>(edm::InputTag("trackAssociatorByHits")))
{
//now do what ever initialization is needed

Expand Down Expand Up @@ -172,14 +172,12 @@ OverlapProblemTPAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetu
Handle<TrackingParticleCollection> tpcoll;
iEvent.getByToken(m_tpcollToken,tpcoll);

// TrackAssociator ESHandle

ESHandle<TrackAssociatorBase> tahandle;
iSetup.get<TrackAssociatorRecord>().get("TrackAssociatorByHits",tahandle);
Handle<reco::TrackToTrackingParticleAssociator> tahandle;
iEvent.getByToken(m_associatorToken,tahandle);

// associate reco to sim tracks

reco::SimToRecoCollection srcoll = tahandle->associateSimToReco(trkcoll,tpcoll,&iEvent,&iSetup);
reco::SimToRecoCollection srcoll = tahandle->associateSimToReco(trkcoll,tpcoll);

// loop on Handle with index and use find

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
# Tracking particle module
from SimGeneral.TrackingAnalysis.trackingParticles_cfi import *
# Track Associators
from SimTracker.TrackAssociation.TrackAssociatorByChi2_cfi import *
from SimTracker.TrackAssociation.TrackAssociatorByHits_cfi import *
from SimTracker.TrackAssociatorProducers.trackAssociatorByChi2_cfi import *
from SimTracker.TrackAssociatorPRoducers.trackAssociatorByHits_cfi import *
#new postreco sequence
from SimTracker.TrackAssociation.trackMCMatch_cfi import *
from SimTracker.TrackAssociation.trackingParticleRecoTrackAsssociation_cff import *
Expand All @@ -17,20 +17,20 @@
from Validation.RecoTrack.cutsTPEffic_cfi import *
from Validation.RecoTrack.cutsTPFake_cfi import *
from Validation.RecoTrack.MultiTrackValidator_cff import *
valid = cms.Sequence(cms.SequencePlaceholder("genParticles")*trackingParticles*cutsRecoTracks*cutsTPEffic*cutsTPFake*multiTrackValidator)
valid = cms.Sequence(cms.SequencePlaceholder("genParticles")*trackingParticles*cutsRecoTracks*cutsTPEffic*cutsTPFake*trackAssociatorByHits*multiTrackValidator)
#mergedtruth.simHitCollections = cms.PSet(tracker = cms.vstring("famosSimHitsTrackerHits"))
#mergedtruth.simHitLabel = 'famosSimHits'
mergedtruth.removeDeadModules = cms.bool(False)
TrackAssociatorByHits.associateStrip = False
TrackAssociatorByHits.associatePixel = False
trackAssociatorByHits.associateStrip = False
trackAssociatorByHits.associatePixel = False
#TrackAssociatorByHits.ROUList = ['famosSimHitsTrackerHits']

#use cutsRecoTracks
cutsRecoTracks.quality = ['highPurity']

# pass only high purity tracks
multiTrackValidator.label = ['cutsRecoTracks']
multiTrackValidator.associators = ['TrackAssociatorByHits']
multiTrackValidator.associators = ['trackAssociatorByHits']
multiTrackValidator.UseAssociators = True


Loading

0 comments on commit a8f086d

Please sign in to comment.