From e9176e479804637e021de50c8487b0b79c131bbe Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 3 Apr 2014 18:29:25 +0200 Subject: [PATCH 1/5] fastsim: migrate FamosProducer to consumes --- .../EventProducer/interface/FamosProducer.h | 22 ++++++- .../EventProducer/src/FamosProducer.cc | 61 ++++++++++++------- 2 files changed, 58 insertions(+), 25 deletions(-) diff --git a/FastSimulation/EventProducer/interface/FamosProducer.h b/FastSimulation/EventProducer/interface/FamosProducer.h index e9fd34b996f6f..6ee5038738e74 100644 --- a/FastSimulation/EventProducer/interface/FamosProducer.h +++ b/FastSimulation/EventProducer/interface/FamosProducer.h @@ -3,6 +3,11 @@ #include "FWCore/Framework/interface/EDProducer.h" +#include "DataFormats/HepMCCandidate/interface/GenParticle.h" +#include "DataFormats/BeamSpot/interface/BeamSpot.h" +#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" // future obsolete +#include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h" // obsolete + class FamosManager; class ParameterSet; class Event; @@ -28,10 +33,21 @@ class FamosProducer : public edm::EDProducer FamosManager * famosManager_; HepMC::GenEvent * evt_; bool simulateMuons; - edm::InputTag theSourceLabel; - edm::InputTag theGenParticleLabel; - edm::InputTag theBeamSpotLabel; + // labels + edm::InputTag sourceLabel; // FUTURE OBSOLETE + edm::InputTag genParticleLabel; + edm::InputTag beamSpotLabel; + + // tokens + edm::EDGetTokenT beamSpotToken; + edm::EDGetTokenT genParticleToken; + // FUTURE OBSOLETE CODE + edm::EDGetTokenT sourceToken; + edm::EDGetTokenT puToken; + // OBSOLETE CODE + edm::EDGetTokenT > mixSourceToken; + edm::EDGetTokenT mixGenParticleToken; }; #endif diff --git a/FastSimulation/EventProducer/src/FamosProducer.cc b/FastSimulation/EventProducer/src/FamosProducer.cc index f76fb025f2f36..a88a64d95a62d 100644 --- a/FastSimulation/EventProducer/src/FamosProducer.cc +++ b/FastSimulation/EventProducer/src/FamosProducer.cc @@ -3,7 +3,6 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/ESHandle.h" -#include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h" #include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h" #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" @@ -22,12 +21,10 @@ #include "FastSimulation/Calorimetry/interface/CalorimetryManager.h" #include "FastSimulation/TrajectoryManager/interface/TrajectoryManager.h" #include "FastSimulation/Utilities/interface/RandomEngineAndDistribution.h" -#include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h" -#include "DataFormats/HepMCCandidate/interface/GenParticle.h" #include "Geometry/Records/interface/IdealGeometryRecord.h" -#include "HepMC/GenEvent.h" #include "HepMC/GenVertex.h" +#include "HepMC/GenEvent.h" #include #include @@ -49,12 +46,25 @@ FamosProducer::FamosProducer(edm::ParameterSet const & p) if ( simulateMuons ) produces("MuonSimTracks"); // The generator input label - theSourceLabel = p.getParameter("SourceLabel"); - theGenParticleLabel = p.getParameter("GenParticleLabel"); - theBeamSpotLabel = p.getParameter("BeamSpotLabel"); - + sourceLabel = p.getParameter("SourceLabel"); + genParticleLabel = p.getParameter("GenParticleLabel"); + beamSpotLabel = p.getParameter("BeamSpotLabel"); + + // consume declarations + beamSpotToken = consumes(beamSpotLabel); + genParticleToken = consumes(genParticleLabel); + // FUTURE OBSOLETE CODE + sourceToken = consumes(sourceLabel); + edm::InputTag _label = edm::InputTag("famosPileUp","PileUpEvents"); + puToken = consumes(_label); + // OBSOLETE CODE + _label = edm::InputTag("mixGenPU","generator"); + mixSourceToken = consumes >(_label); + _label = edm::InputTag("genParticlesFromMixingModule"); + mixGenParticleToken = consumes(_label); + + // famos manager famosManager_ = new FamosManager(p); - } FamosProducer::~FamosProducer() @@ -77,7 +87,7 @@ void FamosProducer::produce(edm::Event & iEvent, const edm::EventSetup & es) // // The beam spot position edm::Handle recoBeamSpotHandle; - iEvent.getByLabel(theBeamSpotLabel,recoBeamSpotHandle); + iEvent.getByToken(beamSpotToken,recoBeamSpotHandle); math::XYZPoint BSPosition_ = recoBeamSpotHandle->position(); //Retrieve tracker topology from geometry @@ -101,21 +111,23 @@ void FamosProducer::produce(edm::Event & iEvent, const edm::EventSetup & es) PrimaryVertexGenerator* theVertexGenerator = fevt->thePrimaryVertexGenerator(); - const reco::GenParticleCollection* myGenParticlesXF = 0; + const reco::GenParticleCollection* myGenParticlesXF = 0; //OBSOLETE const reco::GenParticleCollection* myGenParticles = 0; const HepMC::GenEvent* thePUEvents = 0; + // BEGIN OBSOLETE CODE Handle > theHepMCProductCrossingFrame; - bool isPileUpXF = iEvent.getByLabel("mixGenPU","generator",theHepMCProductCrossingFrame); - + bool isPileUpXF = iEvent.getByToken(mixSourceToken,theHepMCProductCrossingFrame); if (isPileUpXF){// take the GenParticle from crossingframe event collection, if it exists Handle genEvtXF; - bool genPartXF = iEvent.getByLabel("genParticlesFromMixingModule",genEvtXF); + bool genPartXF = iEvent.getByToken(mixGenParticleToken,genEvtXF); if(genPartXF) myGenParticlesXF = &(*genEvtXF); } else{// otherwise, use the old famos PU + // END OBSOLETE CODE // Get the generated signal event - bool source = iEvent.getByLabel(theSourceLabel,theHepMCProduct); + // BEGIN FUTURE OBSOLETE CODE + bool source = iEvent.getByToken(sourceToken,theHepMCProduct); if ( source ) { myGenEvent = theHepMCProduct->GetEvent(); // First rotate in case of beam crossing angle (except if done already) @@ -127,13 +139,14 @@ void FamosProducer::produce(edm::Event & iEvent, const edm::EventSetup & es) } fevt->setBeamSpot(BSPosition_); - + // GEN LEVEL INFO NOT IN HEPMC FORMAT // In case there is no HepMCProduct, seek a genParticle Candidate Collection bool genPart = false; if ( !myGenEvent ) { + //END FUTURE OBSOLETE CODE // Look for the particle CandidateCollection Handle genEvt; - genPart = iEvent.getByLabel(theGenParticleLabel,genEvt); + genPart = iEvent.getByToken(genParticleToken,genEvt); if ( genPart ) myGenParticles = &(*genEvt); } @@ -142,21 +155,24 @@ void FamosProducer::produce(edm::Event & iEvent, const edm::EventSetup & es) << "any form (HepMCProduct, genParticles)" << std::endl << "Please check SourceLabel or GenParticleLabel" << std::endl; + // BEGIN FUTURE OBSOLETE CODE // Get the pile-up events from the pile-up producer // There might be no pile-up events, by the way, in that case, just continue Handle thePileUpEvents; - bool isPileUp = iEvent.getByLabel("famosPileUp","PileUpEvents",thePileUpEvents); + bool isPileUp = iEvent.getByToken(puToken,thePileUpEvents); thePUEvents = isPileUp ? thePileUpEvents->GetEvent() : 0; - + // END FUTURE OBSOLETE CODE }//end else + // pass the event to the Famos Manager for propagation and simulation - if (myGenParticlesXF) { + if (myGenParticlesXF) {// OBSOLETE OPTION famosManager_->reconstruct(myGenParticlesXF,tTopo, &random); } else { - famosManager_->reconstruct(myGenEvent,myGenParticles,thePUEvents,tTopo, &random); + famosManager_->reconstruct(myGenEvent,myGenParticles,thePUEvents,tTopo, &random); // FUTURE OBSOLETE ARGUMENTS: myGenEvents, thePUEvents } + // BEGIN FUTURE OBSOLETE CODE // Set the vertex back to the HepMCProduct (except if it was smeared already) if ( myGenEvent ) { if ( theVertexGenerator ) { @@ -168,7 +184,8 @@ void FamosProducer::produce(edm::Event & iEvent, const edm::EventSetup & es) if ( fabs(theVertexGenerator->Z()) > 1E-10 ) theHepMCProduct->applyVtxGen( &theVertex ); } } - + // END FUTURE OBSOLETE CODE + CalorimetryManager * calo = famosManager_->calorimetryManager(); TrajectoryManager * tracker = famosManager_->trackerManager(); From 4a6bd6a65e051e0a31dbf08f7cf39e3aa9aa5717 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 3 Apr 2014 19:07:45 +0200 Subject: [PATCH 2/5] migrate FastSimulation/MuonSimHitProducer and FastSimulation/TrackingRecHitProducer to consumes --- .../interface/MuonSimHitProducer.h | 16 +++++++++++++--- .../src/MuonSimHitProducer.cc | 17 ++++++++++++----- .../SiTrackerGaussianSmearingRecHitConverter.cc | 5 +++-- .../SiTrackerGaussianSmearingRecHitConverter.h | 4 +++- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/FastSimulation/MuonSimHitProducer/interface/MuonSimHitProducer.h b/FastSimulation/MuonSimHitProducer/interface/MuonSimHitProducer.h index 9b000bb2af27b..c5c6d05b2e4f0 100644 --- a/FastSimulation/MuonSimHitProducer/interface/MuonSimHitProducer.h +++ b/FastSimulation/MuonSimHitProducer/interface/MuonSimHitProducer.h @@ -37,7 +37,8 @@ class MaterialEffects; class TrajectoryStateOnSurface; class Propagator; class RandomEngineAndDistribution; - +class SimTrack; +class SimVertex; /* namespace reco { class Muon; @@ -93,10 +94,19 @@ class MuonSimHitProducer : public edm::EDProducer { RandomEngineAndDistribution const*); - // ----------- parameters ---------------------------- + // ----------- parameters ---------------------------- bool fullPattern_; bool doL1_ , doL3_ , doGL_; - std::string theSimModuleLabel_ , theSimModuleProcess_, theTrkModuleLabel_ ; + + // tags + edm::InputTag simMuonLabel; + edm::InputTag simVertexLabel; + + // tokens + edm::EDGetTokenT > simMuonToken; + edm::EDGetTokenT > simVertexToken; + + }; #endif diff --git a/FastSimulation/MuonSimHitProducer/src/MuonSimHitProducer.cc b/FastSimulation/MuonSimHitProducer/src/MuonSimHitProducer.cc index 308a49e0255b9..c507bf3802fe2 100644 --- a/FastSimulation/MuonSimHitProducer/src/MuonSimHitProducer.cc +++ b/FastSimulation/MuonSimHitProducer/src/MuonSimHitProducer.cc @@ -95,6 +95,11 @@ MuonSimHitProducer::MuonSimHitProducer(const edm::ParameterSet& iConfig): edm::ParameterSet serviceParameters = iConfig.getParameter("ServiceParameters"); theService = new MuonServiceProxy(serviceParameters); + + // consumes + simMuonToken = consumes >(simMuonLabel); + simVertexToken = consumes >(simVertexLabel); + } // ---- method called once each job just before starting event loop ---- @@ -160,8 +165,8 @@ MuonSimHitProducer::produce(edm::Event& iEvent,const edm::EventSetup& iSetup) { std::vector theRPCHits; DirectMuonNavigation navigation(theService->detLayerGeometry()); - iEvent.getByLabel(theSimModuleLabel_,theSimModuleProcess_,simMuons); - iEvent.getByLabel(theSimModuleLabel_,simVertices); + iEvent.getByToken(simMuonToken,simMuons); + iEvent.getByToken(simVertexToken,simVertices); for ( unsigned int itrk=0; itrksize(); itrk++ ) { const SimTrack &mySimTrack = (*simMuons)[itrk]; @@ -526,9 +531,11 @@ MuonSimHitProducer::readParameters(const edm::ParameterSet& fastMuons, const edm::ParameterSet& fastTracks, const edm::ParameterSet& matEff) { // Muons - theSimModuleLabel_ = fastMuons.getParameter("simModuleLabel"); - theSimModuleProcess_ = fastMuons.getParameter("simModuleProcess"); - theTrkModuleLabel_ = fastMuons.getParameter("trackModuleLabel"); + std::string _simModuleLabel = fastMuons.getParameter("simModuleLabel"); + std::string _simModuleProcess = fastMuons.getParameter("simModuleProcess"); + simMuonLabel = edm::InputTag(_simModuleLabel,_simModuleProcess); + simVertexLabel = edm::InputTag(_simModuleLabel); + std::vector simHitIneffDT = fastMuons.getParameter >("simHitDTIneffParameters"); std::vector simHitIneffCSC = fastMuons.getParameter >("simHitCSCIneffParameters"); kDT = simHitIneffDT[0]; diff --git a/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.cc b/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.cc index 1b3d31538892f..33ac7ec8ca3cf 100644 --- a/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.cc +++ b/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.cc @@ -91,7 +91,8 @@ SiTrackerGaussianSmearingRecHitConverter::SiTrackerGaussianSmearingRecHitConvert //--- PSimHit Containers // trackerContainers.clear(); // trackerContainers = conf.getParameter >("ROUList"); - inputSimHits = conf.getParameter("InputSimHits"); + simHitLabel = conf.getParameter("InputSimHits"); + simHitToken = consumes(simHitLabel); //--- delta rays p cut [GeV/c] to filter PSimHits with p> deltaRaysPCut = conf.getParameter("DeltaRaysMomentumCut"); @@ -615,7 +616,7 @@ void SiTrackerGaussianSmearingRecHitConverter::produce(edm::Event& e, const edm: */ edm::Handle allTrackerHits_handle; - e.getByLabel(inputSimHits,allTrackerHits_handle); + e.getByToken(simHitToken,allTrackerHits_handle); const edm::PSimHitContainer& allTrackerHits=*allTrackerHits_handle; // Step B: create temporary RecHit collection and fill it with Gaussian smeared RecHit's diff --git a/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.h b/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.h index 5df934e5c1549..3cf840d83c767 100644 --- a/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.h +++ b/FastSimulation/TrackingRecHitProducer/src/SiTrackerGaussianSmearingRecHitConverter.h @@ -104,7 +104,8 @@ class SiTrackerGaussianSmearingRecHitConverter : public edm::EDProducer // // parameters // std::vector trackerContainers; - edm::InputTag inputSimHits; + edm::InputTag simHitLabel; + edm::EDGetTokenT simHitToken; edm::ParameterSet pset_; double deltaRaysPCut; // GeV/c bool trackingPSimHits; // in case it is true make RecHit = replica of PSimHit without errors (1 um) @@ -251,6 +252,7 @@ class SiTrackerGaussianSmearingRecHitConverter : public edm::EDProducer typedef SiTrackerGSRecHit2D::ClusterRefProd ClusterRefProd; // Added for cluster reference ClusterRefProd FastTrackerClusterRefProd; + }; From dea04624275e8450d3248b6d696527ee2eb3dc1d Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 3 Apr 2014 20:38:50 +0200 Subject: [PATCH 3/5] fastsim: migrate TrajectorySeedProducer to consumes --- .../plugins/TrajectorySeedProducer.cc | 25 ++++++++++++------- .../Tracking/plugins/TrajectorySeedProducer.h | 13 ++++++++++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc b/FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc index 85b772e79583d..d0eba210dd81e 100644 --- a/FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc +++ b/FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc @@ -8,9 +8,7 @@ #include "DataFormats/Common/interface/Handle.h" #include "DataFormats/Common/interface/OwnVector.h" #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSRecHit2DCollection.h" -#include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSMatchedRecHit2DCollection.h" #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "DataFormats/BeamSpot/interface/BeamSpot.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" @@ -21,8 +19,6 @@ #include "FastSimulation/Tracking/plugins/TrajectorySeedProducer.h" #include "FastSimulation/Tracking/interface/TrackerRecHit.h" -#include "SimDataFormats/Track/interface/SimTrackContainer.h" -#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" #include "TrackingTools/TrajectoryParametrization/interface/CurvilinearTrajectoryError.h" #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" @@ -320,6 +316,17 @@ TrajectorySeedProducer::TrajectorySeedProducer(const edm::ParameterSet& conf) :t << " WARNING : zVertexConstraint does not have the proper size " << std::endl; //removed - } + + // consumes + beamSpotToken = consumes(theBeamSpot); + edm::InputTag _label("famosSimHits"); + simTrackToken = consumes(_label); + simVertexToken = consumes(_label); + recHitToken = consumes(hitProducer); + for ( unsigned ialgo=0; ialgo(_label)); + } } // Virtual destructor needed. @@ -394,7 +401,7 @@ TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) { // Beam spot edm::Handle recoBeamSpotHandle; - e.getByLabel(theBeamSpot,recoBeamSpotHandle); + e.getByToken(beamSpotToken,recoBeamSpotHandle); math::XYZPoint BSPosition_ = recoBeamSpotHandle->position(); //not used anymore. take the value from the py @@ -408,10 +415,10 @@ TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) { // SimTracks and SimVertices edm::Handle theSimTracks; - e.getByLabel("famosSimHits",theSimTracks); + e.getByToken(simTrackToken,theSimTracks); edm::Handle theSimVtx; - e.getByLabel("famosSimHits",theSimVtx); + e.getByToken(simVertexToken,theSimVtx); #ifdef FAMOS_DEBUG std::cout << " Step A: SimTracks found " << theSimTracks->size() << std::endl; @@ -419,7 +426,7 @@ TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) { // edm::Handle theGSRecHits; edm::Handle theGSRecHits; - e.getByLabel(hitProducer, theGSRecHits); + e.getByToken(recHitToken, theGSRecHits); // No tracking attempted if no hits (but put an empty collection in the event)! #ifdef FAMOS_DEBUG @@ -440,7 +447,7 @@ TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es) { //PAT Attempt!!!! //originHalfLength[ialgo] = 3.*sigmaz0; // Overrides the configuration edm::Handle aHandle; - bool isVertexCollection = e.getByLabel(primaryVertices[ialgo],aHandle); + bool isVertexCollection = e.getByToken(recoVertexToken[ialgo],aHandle); if (!isVertexCollection ) continue; vertices[ialgo] = &(*aHandle); } diff --git a/FastSimulation/Tracking/plugins/TrajectorySeedProducer.h b/FastSimulation/Tracking/plugins/TrajectorySeedProducer.h index 27caf4bb471b7..e871a75a769f6 100644 --- a/FastSimulation/Tracking/plugins/TrajectorySeedProducer.h +++ b/FastSimulation/Tracking/plugins/TrajectorySeedProducer.h @@ -6,6 +6,11 @@ #include "DataFormats/GeometryVector/interface/GlobalPoint.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" +#include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSMatchedRecHit2DCollection.h" +#include "SimDataFormats/Track/interface/SimTrackContainer.h" +#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" +#include "DataFormats/BeamSpot/interface/BeamSpot.h" + #include #include @@ -18,12 +23,14 @@ class PTrajectoryStateOnDet; class ParticlePropagator; class PropagatorWithMaterial; + namespace edm { class ParameterSet; class Event; class EventSetup; } + class TrajectorySeedProducer : public edm::EDProducer { public: @@ -110,6 +117,12 @@ class TrajectorySeedProducer : public edm::EDProducer std::vector vertices; double x0, y0, z0; + // tokens + edm::EDGetTokenT beamSpotToken; + edm::EDGetTokenT simTrackToken; + edm::EDGetTokenT simVertexToken; + edm::EDGetTokenT recHitToken; + std::vector > recoVertexToken; }; #endif From 533d309979738f6c8c75a5c1d450014f1f68555a Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 3 Apr 2014 21:00:00 +0200 Subject: [PATCH 4/5] fastsim: migrate FastTrackMerger to consumes --- .../Tracking/plugins/FastTrackMerger.cc | 21 ++++++++++++------- .../Tracking/plugins/FastTrackMerger.h | 17 ++++++++++++--- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/FastSimulation/Tracking/plugins/FastTrackMerger.cc b/FastSimulation/Tracking/plugins/FastTrackMerger.cc index f38cebc705013..613517ba82f7d 100644 --- a/FastSimulation/Tracking/plugins/FastTrackMerger.cc +++ b/FastSimulation/Tracking/plugins/FastTrackMerger.cc @@ -10,12 +10,9 @@ #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSRecHit2DCollection.h" #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSMatchedRecHit2DCollection.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackExtra.h" #include "DataFormats/TrackReco/interface/TrackExtraFwd.h" -#include "TrackingTools/PatternTools/interface/Trajectory.h" -#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" #include "FastSimulation/Tracking/plugins/FastTrackMerger.h" @@ -82,6 +79,16 @@ FastTrackMerger::FastTrackMerger(const edm::ParameterSet& conf) produces(); produces(); } + + // consumes + for ( unsigned aProducer=0; aProducer(removeTrackProducers[aProducer])); + } + for ( unsigned aProducer=0; aProducer(trackProducers[aProducer])); + trajectoryTokens.push_back(consumes >(trackProducers[aProducer])); + assoMapTokens.push_back(consumes(trackProducers[aProducer])); + } } @@ -147,7 +154,7 @@ FastTrackMerger::produce(edm::Event& e, const edm::EventSetup& es) { // First, the tracks to be removed std::set removeTracks; for ( unsigned aProducer=0; aProducerbegin(); reco::TrackCollection::const_iterator lastTrack = theTrackCollection->end(); @@ -167,7 +174,7 @@ FastTrackMerger::produce(edm::Event& e, const edm::EventSetup& es) { // Loop on the track producers to be merged for ( unsigned aProducer=0; aProducerrecHitsSize(); recoHits->reserve(nRecoHits); // This is to save some time at push_back. - e.getByLabel(trackProducers[aProducer],theTrajectoryCollection); - e.getByLabel(trackProducers[aProducer],theAssoMap); + e.getByToken(trajectoryTokens[aProducer],theTrajectoryCollection); + e.getByToken(assoMapTokens[aProducer],theAssoMap); // The track collection iterators. TrajTrackAssociationCollection::const_iterator anAssociation; diff --git a/FastSimulation/Tracking/plugins/FastTrackMerger.h b/FastSimulation/Tracking/plugins/FastTrackMerger.h index 2acde15c8b46b..60a875612d8a3 100644 --- a/FastSimulation/Tracking/plugins/FastTrackMerger.h +++ b/FastSimulation/Tracking/plugins/FastTrackMerger.h @@ -4,6 +4,10 @@ #include "FWCore/Framework/interface/EDProducer.h" #include "FWCore/Utilities/interface/InputTag.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "TrackingTools/PatternTools/interface/Trajectory.h" +#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" + #include #include @@ -13,9 +17,10 @@ namespace edm { class EventSetup; } -namespace reco { - class Track; -} +//namespace reco { +// class Track; +//} + class FastTrackMerger : public edm::EDProducer { @@ -45,6 +50,12 @@ class FastTrackMerger : public edm::EDProducer unsigned theMaxLostHits; unsigned theMaxConsecutiveLostHits; + // consumes + std::vector > removeTrackTokens; + std::vector > trackTokens; + std::vector > > trajectoryTokens; + std::vector > assoMapTokens; + }; #endif From d8bd411b09114a6832c66458c458529be12a2816 Mon Sep 17 00:00:00 2001 From: Lukas Date: Fri, 4 Apr 2014 12:02:11 +0200 Subject: [PATCH 5/5] fastsim: consumes for FSPFProducer, TrackCandidateProducer --- .../ParticleFlow/plugins/FSPFProducer.cc | 7 ++-- .../ParticleFlow/plugins/FSPFProducer.h | 5 ++- .../plugins/TrackCandidateProducer.cc | 32 +++++++++++-------- .../Tracking/plugins/TrackCandidateProducer.h | 15 +++++++++ 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/FastSimulation/ParticleFlow/plugins/FSPFProducer.cc b/FastSimulation/ParticleFlow/plugins/FSPFProducer.cc index 26dec8c856d46..60ad98e262bb0 100644 --- a/FastSimulation/ParticleFlow/plugins/FSPFProducer.cc +++ b/FastSimulation/ParticleFlow/plugins/FSPFProducer.cc @@ -3,7 +3,6 @@ #include "FWCore/Utilities/interface/Exception.h" #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" -#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" #include "DataFormats/Math/interface/LorentzVector.h" using namespace std; @@ -25,7 +24,9 @@ FSPFProducer::FSPFProducer(const edm::ParameterSet& iConfig) { middle_th = iConfig.getParameter("middle_th"); // register products produces(); - + + // consumes + pfCandidateToken = consumes(labelPFCandidateCollection_); } FSPFProducer::~FSPFProducer() {} @@ -35,7 +36,7 @@ FSPFProducer::produce(Event& iEvent, const EventSetup& iSetup) { Handle < reco::PFCandidateCollection > pfCandidates; - iEvent.getByLabel (labelPFCandidateCollection_, pfCandidates); + iEvent.getByToken (pfCandidateToken, pfCandidates); auto_ptr< reco::PFCandidateCollection > pOutputCandidateCollection(new PFCandidateCollection); diff --git a/FastSimulation/ParticleFlow/plugins/FSPFProducer.h b/FastSimulation/ParticleFlow/plugins/FSPFProducer.h index a87603bbab681..98c5b0d0417d0 100644 --- a/FastSimulation/ParticleFlow/plugins/FSPFProducer.h +++ b/FastSimulation/ParticleFlow/plugins/FSPFProducer.h @@ -12,6 +12,8 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" + class PFCandidate; class FSPFProducer : public edm::EDProducer { @@ -33,7 +35,8 @@ class FSPFProducer : public edm::EDProducer { std::vector EM_HF_ScaleFactor; double energy_threshold(double eta); - + + edm::EDGetTokenT pfCandidateToken; }; #endif diff --git a/FastSimulation/Tracking/plugins/TrackCandidateProducer.cc b/FastSimulation/Tracking/plugins/TrackCandidateProducer.cc index 50c5d9262808e..efb6c417971cf 100644 --- a/FastSimulation/Tracking/plugins/TrackCandidateProducer.cc +++ b/FastSimulation/Tracking/plugins/TrackCandidateProducer.cc @@ -12,15 +12,11 @@ #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSRecHit2DCollection.h" #include "DataFormats/TrackerRecHit2D/interface/SiTrackerGSMatchedRecHit2DCollection.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/TrackReco/interface/TrackExtraFwd.h" #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "TrackingTools/PatternTools/interface/Trajectory.h" -#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" - #include "FastSimulation/Tracking/interface/TrackerRecHit.h" //#include "FastSimulation/Tracking/interface/TrackerRecHitSplit.h" @@ -43,8 +39,6 @@ //Propagator withMaterial #include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "SimDataFormats/Track/interface/SimTrackContainer.h" -#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" // @@ -99,6 +93,18 @@ TrackCandidateProducer::TrackCandidateProducer(const edm::ParameterSet& conf):th simTracks_ = conf.getParameter("SimTracks"); estimatorCut_= conf.getParameter("EstimatorCut"); + + // consumes + seedToken = consumes >(seedProducer); + recHitToken = consumes(hitProducer); + edm::InputTag _label("famosSimHits"); + simVertexToken = consumes(_label); + simTrackToken = consumes(_label); + for(unsigned tprod=0; tprod < trackProducers.size(); ++tprod){ + trackTokens.push_back(consumes(trackProducers[tprod])); + trajectoryTokens.push_back(consumes >(trackProducers[tprod])); + assoMapTokens.push_back(consumes(trackProducers[tprod])); + } } @@ -156,7 +162,7 @@ TrackCandidateProducer::produce(edm::Event& e, const edm::EventSetup& es) { // Get the seeds // edm::Handle theSeeds; edm::Handle > theSeeds; - e.getByLabel(seedProducer,theSeeds); + e.getByToken(seedToken,theSeeds); //Retrieve tracker topology from geometry edm::ESHandle tTopoHand; @@ -178,16 +184,16 @@ TrackCandidateProducer::produce(edm::Event& e, const edm::EventSetup& es) { // Get the GS RecHits // edm::Handle theGSRecHits; edm::Handle theGSRecHits; - e.getByLabel(hitProducer, theGSRecHits); + e.getByToken(recHitToken, theGSRecHits); //get other general things const std::vector theSimTrackIds = theGSRecHits->ids(); // SimTracks and SimVertices edm::Handle theSimVtx; - e.getByLabel("famosSimHits",theSimVtx); + e.getByToken(simVertexToken,theSimVtx); edm::Handle theSTC; - e.getByLabel("famosSimHits",theSTC); + e.getByToken(simTrackToken,theSTC); const edm::SimTrackContainer* theSimTracks = &(*theSTC); LogDebug("FastTracking")<<"looking at: "<< theSimTrackIds.size()<<" simtracks."; @@ -218,7 +224,7 @@ TrackCandidateProducer::produce(edm::Event& e, const edm::EventSetup& es) { theAssoMaps.resize(nCollections); isTrackCollections.resize(nCollections); for ( unsigned tprod=0; tprod < nCollections; ++tprod ) { - isTrackCollections[tprod] = e.getByLabel(trackProducers[tprod],theTrackCollections[tprod]); + isTrackCollections[tprod] = e.getByToken(trackTokens[tprod],theTrackCollections[tprod]); if ( isTrackCollections[tprod] ) { // The track collection @@ -226,8 +232,8 @@ TrackCandidateProducer::produce(edm::Event& e, const edm::EventSetup& es) { reco::TrackCollection::const_iterator lastTrack = theTrackCollections[tprod]->end(); // The numbers of hits for ( ; aTrack!=lastTrack; ++aTrack ) nRecoHits+= aTrack->recHitsSize(); - e.getByLabel(trackProducers[tprod],theTrajectoryCollections[tprod]); - e.getByLabel(trackProducers[tprod],theAssoMaps[tprod]); + e.getByToken(trajectoryTokens[tprod],theTrajectoryCollections[tprod]); + e.getByToken(assoMapTokens[tprod],theAssoMaps[tprod]); // The association between trajectories and tracks anAssociation = theAssoMaps[tprod]->begin(); lastAssociation = theAssoMaps[tprod]->end(); diff --git a/FastSimulation/Tracking/plugins/TrackCandidateProducer.h b/FastSimulation/Tracking/plugins/TrackCandidateProducer.h index 73285013c4e6b..46d1f5665039c 100644 --- a/FastSimulation/Tracking/plugins/TrackCandidateProducer.h +++ b/FastSimulation/Tracking/plugins/TrackCandidateProducer.h @@ -6,6 +6,12 @@ #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "TrackingTools/PatternTools/interface/Trajectory.h" +#include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h" +#include "SimDataFormats/Track/interface/SimTrackContainer.h" +#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" + class TrackerGeometry; class TrajectoryStateOnSurface; class PropagatorWithMaterial; @@ -67,6 +73,15 @@ class TrackCandidateProducer : public edm::EDProducer edm::InputTag simTracks_; double estimatorCut_; + + // tokens + edm::EDGetTokenT > seedToken; + edm::EDGetTokenT recHitToken; + edm::EDGetTokenT simVertexToken; + edm::EDGetTokenT simTrackToken; + std::vector > trackTokens; + std::vector > > trajectoryTokens; + std::vector > assoMapTokens; }; #endif