From 5e0b7618091d351dac61ffe71b0be3c5e386e68b Mon Sep 17 00:00:00 2001 From: Volker Adler Date: Wed, 19 Mar 2014 20:53:17 +0100 Subject: [PATCH] QCDAnalysis consumes migration. --- .../Skimming/interface/QCDSingleJetFilter.h | 13 ++- .../Skimming/src/QCDSingleJetFilter.cc | 29 +++--- .../interface/AnalysisRootpleProducer.h | 32 +++---- .../interface/AnalysisRootpleProducerOnlyMC.h | 26 ++--- .../UEAnalysis/src/AnalysisRootpleProducer.cc | 94 +++++++++---------- .../src/AnalysisRootpleProducerOnlyMC.cc | 60 ++++++------ 6 files changed, 129 insertions(+), 125 deletions(-) diff --git a/QCDAnalysis/Skimming/interface/QCDSingleJetFilter.h b/QCDAnalysis/Skimming/interface/QCDSingleJetFilter.h index cd98c5000489c..0ed2d1fc5d441 100644 --- a/QCDAnalysis/Skimming/interface/QCDSingleJetFilter.h +++ b/QCDAnalysis/Skimming/interface/QCDSingleJetFilter.h @@ -1,12 +1,12 @@ #ifndef __QCDSingleJetFilter__H__ #define __QCDSingleJetFilter__H__ -/* \class QCDSingleJetFilter for CSA07 Excercise +/* \class QCDSingleJetFilter for CSA07 Excercise * by Andreas Oehler (andreas.oehler@cern.ch) * Filter to select on pt of the jet with hightest Pt can do a random prescale (requires RandomNumber Service)[deactivated] - + */ // user include files @@ -18,6 +18,8 @@ #include #include "FWCore/Utilities/interface/InputTag.h" +#include + //RandomGenerator Service taken out //namespace CLHEP { @@ -25,7 +27,7 @@ //} class QCDSingleJetFilter : public edm::EDFilter { - + public: // Constructor QCDSingleJetFilter(const edm::ParameterSet&); @@ -36,7 +38,7 @@ class QCDSingleJetFilter : public edm::EDFilter { /// Get event properties to send to builder to fill seed collection virtual bool filter(edm::Event&, const edm::EventSetup&); - + private: @@ -44,7 +46,8 @@ class QCDSingleJetFilter : public edm::EDFilter { //CLHEP::RandFlat *theFlatDistrib; double theMinPt; //,thePreScale; - edm::InputTag theTriggerJetCollectionA,theTrigCollB; + edm::EDGetTokenT theTriggerJetCollectionAToken; + edm::EDGetTokenT theTrigCollBToken; }; #endif diff --git a/QCDAnalysis/Skimming/src/QCDSingleJetFilter.cc b/QCDAnalysis/Skimming/src/QCDSingleJetFilter.cc index 3b5c6bd62e013..61d6964ebfc1b 100644 --- a/QCDAnalysis/Skimming/src/QCDSingleJetFilter.cc +++ b/QCDAnalysis/Skimming/src/QCDSingleJetFilter.cc @@ -1,6 +1,6 @@ /* \class QCDSingleJetFilter * - * QCDSingleJetFilter for CSA07 Excercise + * QCDSingleJetFilter for CSA07 Excercise * * author: Andreas Oehler (andreas.oehler@cern.ch) * see header @@ -14,8 +14,7 @@ #include #include #include -#include -#include +#include #include @@ -45,7 +44,9 @@ QCDSingleJetFilter::~QCDSingleJetFilter(){ // Constructor //QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset):theFlatDistrib(0),theTriggerJetCollectionA(pset.getParameter("TriggerJetCollectionA")),theTrigCollB(pset.getParameter("TriggerJetCollectionB")){ -QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset):theTriggerJetCollectionA(pset.getParameter("TriggerJetCollectionA")),theTrigCollB(pset.getParameter("TriggerJetCollectionB")){ +QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset): + theTriggerJetCollectionAToken(consumes(pset.getParameter("TriggerJetCollectionA"))), + theTrigCollBToken(consumes(pset.getParameter("TriggerJetCollectionB"))){ // Local Debug flag //debug = pset.getParameter("DebugHiggsToZZ4LeptonsSkim"); @@ -58,7 +59,7 @@ QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset):theTrigger //if (thePreScale<1) thePreScale=0; // Eventually, HLT objects: - + //get Random-Service running: //edm::Service rng; //if (!rng.isAvailable()) { @@ -81,10 +82,10 @@ bool QCDSingleJetFilter::filter(edm::Event& event, const edm::EventSetup& setup) //now get right Jet-Collection: edm::Handle theTriggerCollectionJetsA; edm::Handle theTrigCollJetsB; - - event.getByLabel(theTriggerJetCollectionA,theTriggerCollectionJetsA); - event.getByLabel(theTrigCollB,theTrigCollJetsB); - + + event.getByToken(theTriggerJetCollectionAToken,theTriggerCollectionJetsA); + event.getByToken(theTrigCollBToken,theTrigCollJetsB); + for (reco::CaloJetCollection::const_iterator iter=theTriggerCollectionJetsA->begin();iter!=theTriggerCollectionJetsA->end();++iter){ if ((*iter).pt()>=theMinPt) { keepEvent=true; @@ -98,14 +99,14 @@ bool QCDSingleJetFilter::filter(edm::Event& event, const edm::EventSetup& setup) break; } } - - - //double randval = theFlatDistrib->fire(); + + + //double randval = theFlatDistrib->fire(); //if (thePreScale<1) keepEvent=false; //else if ((randval>(1.0/thePreScale))&&keepEvent) keepEvent=false; // cout<<"KeepEvent?: "< -#include +#include #include class AnalysisRootpleProducer : public edm::EDAnalyzer { - + public: - + // explicit AnalysisRootpleProducer( const edm::ParameterSet& ) ; virtual ~AnalysisRootpleProducer() {} // no need to delete ROOT stuff // as it'll be deleted upon closing TFile - + virtual void analyze( const edm::Event&, const edm::EventSetup& ) ; virtual void beginJob() ; virtual void endJob() ; - + void fillEventInfo(int); void fillMCParticles(float, float, float, float); void fillTracks(float, float, float, float); @@ -61,17 +61,17 @@ class AnalysisRootpleProducer : public edm::EDAnalyzer void store(); private: - + bool onlyRECO; - edm::InputTag mcEvent; // label of MC event - edm::InputTag genJetCollName; // label of Jet made with MC particles - edm::InputTag chgJetCollName; // label of Jet made with only charged MC particles - edm::InputTag chgGenPartCollName; // label of charged MC particles - edm::InputTag tracksJetCollName; - edm::InputTag recoCaloJetCollName; - edm::InputTag tracksCollName; - edm::InputTag triggerResultsTag; + edm::EDGetTokenT< edm::HepMCProduct > mcEventToken; // label of MC event + edm::EDGetTokenT< reco::GenJetCollection > genJetCollToken; // label of Jet made with MC particles + edm::EDGetTokenT< reco::GenJetCollection > chgJetCollToken; // label of Jet made with only charged MC particles + edm::EDGetTokenT< std::vector > chgGenPartCollToken; // label of charged MC particles + edm::EDGetTokenT< reco::BasicJetCollection > tracksJetCollToken; + edm::EDGetTokenT< reco::CaloJetCollection > recoCaloJetCollToken; + edm::EDGetTokenT< reco::CandidateCollection > tracksCollToken; + edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken; edm::Handle< edm::HepMCProduct > EvtHandle ; edm::Handle< std::vector > CandHandleMC ; @@ -89,7 +89,7 @@ class AnalysisRootpleProducer : public edm::EDAnalyzer TTree* AnalysisTree; - static const int NMCPMAX = 10000; + static const int NMCPMAX = 10000; static const int NTKMAX = 10000; static const int NIJMAX = 10000; static const int NCJMAX = 10000; @@ -97,7 +97,7 @@ class AnalysisRootpleProducer : public edm::EDAnalyzer static const int NEHJMAX = 10000; int EventKind,NumberMCParticles,NumberTracks,NumberInclusiveJet,NumberChargedJet,NumberTracksJet,NumberCaloJet; - + float MomentumMC[NMCPMAX],TransverseMomentumMC[NMCPMAX],EtaMC[NMCPMAX],PhiMC[NMCPMAX]; float MomentumTK[NTKMAX],TransverseMomentumTK[NTKMAX],EtaTK[NTKMAX],PhiTK[NTKMAX]; float MomentumIJ[NIJMAX],TransverseMomentumIJ[NIJMAX],EtaIJ[NIJMAX],PhiIJ[NIJMAX]; diff --git a/QCDAnalysis/UEAnalysis/interface/AnalysisRootpleProducerOnlyMC.h b/QCDAnalysis/UEAnalysis/interface/AnalysisRootpleProducerOnlyMC.h index f6784b9fa6be6..8362d5ba7b4f7 100644 --- a/QCDAnalysis/UEAnalysis/interface/AnalysisRootpleProducerOnlyMC.h +++ b/QCDAnalysis/UEAnalysis/interface/AnalysisRootpleProducerOnlyMC.h @@ -30,16 +30,16 @@ class AnalysisRootpleProducerOnlyMC : public edm::EDAnalyzer { - + public: - + explicit AnalysisRootpleProducerOnlyMC( const edm::ParameterSet& ) ; - virtual ~AnalysisRootpleProducerOnlyMC() {} + virtual ~AnalysisRootpleProducerOnlyMC() {} virtual void analyze( const edm::Event&, const edm::EventSetup& ) ; virtual void beginJob() ; virtual void endJob() ; - + void fillEventInfo(int); void fillMCParticles(float, float, float, float); void fillInclusiveJet(float, float, float, float); @@ -47,25 +47,25 @@ class AnalysisRootpleProducerOnlyMC : public edm::EDAnalyzer void store(); private: - - edm::InputTag mcEvent; // label of MC event - edm::InputTag genJetCollName; // label of Jet made with MC particles - edm::InputTag chgJetCollName; // label of Jet made with only charged MC particles - edm::InputTag chgGenPartCollName; // label of charged MC particles + + edm::EDGetTokenT< edm::HepMCProduct > mcEventToken; // label of MC event + edm::EDGetTokenT< reco::GenJetCollection > genJetCollToken; // label of Jet made with MC particles + edm::EDGetTokenT< reco::GenJetCollection > chgJetCollToken; // label of Jet made with only charged MC particles + edm::EDGetTokenT< std::vector > chgGenPartCollToken; // label of charged MC particles edm::Handle< edm::HepMCProduct > EvtHandle ; edm::Handle< std::vector > CandHandleMC ; edm::Handle< reco::GenJetCollection > GenJetsHandle ; edm::Handle< reco::GenJetCollection > ChgGenJetsHandle ; - + float piG; edm::Service fs; TTree* AnalysisTree; - static const int NMCPMAX = 10000; + static const int NMCPMAX = 10000; static const int NTKMAX = 10000; static const int NIJMAX = 10000; static const int NCJMAX = 10000; @@ -73,7 +73,7 @@ class AnalysisRootpleProducerOnlyMC : public edm::EDAnalyzer static const int NEHJMAX = 10000; int EventKind,NumberMCParticles,NumberTracks,NumberInclusiveJet,NumberChargedJet,NumberTracksJet,NumberCaloJet; - + float MomentumMC[NMCPMAX],TransverseMomentumMC[NMCPMAX],EtaMC[NMCPMAX],PhiMC[NMCPMAX]; float MomentumTK[NTKMAX],TransverseMomentumTK[NTKMAX],EtaTK[NTKMAX],PhiTK[NTKMAX]; float MomentumIJ[NIJMAX],TransverseMomentumIJ[NIJMAX],EtaIJ[NIJMAX],PhiIJ[NIJMAX]; @@ -84,7 +84,7 @@ class AnalysisRootpleProducerOnlyMC : public edm::EDAnalyzer TClonesArray* MonteCarlo; TClonesArray* InclusiveJet; TClonesArray* ChargedJet; - + }; #endif diff --git a/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducer.cc b/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducer.cc index 7dc35dc83f612..d8e2fe3d6bb88 100644 --- a/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducer.cc +++ b/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducer.cc @@ -1,7 +1,7 @@ // Authors: F. Ambroglini, L. Fano' #include #include "FWCore/Common/interface/TriggerNames.h" - + using namespace edm; using namespace std; using namespace reco; @@ -33,7 +33,7 @@ class CaloJetSort{ return a.pt() > b.pt(); } }; - + void AnalysisRootpleProducer::store(){ @@ -105,16 +105,16 @@ AnalysisRootpleProducer::AnalysisRootpleProducer( const ParameterSet& pset ) onlyRECO = pset.getUntrackedParameter("OnlyRECO",false); // particle, track and jet collections - mcEvent = pset.getUntrackedParameter("MCEvent",std::string("")); - genJetCollName = pset.getUntrackedParameter("GenJetCollectionName",std::string("")); - chgJetCollName = pset.getUntrackedParameter("ChgGenJetCollectionName",std::string("")); - tracksJetCollName = pset.getUntrackedParameter("TracksJetCollectionName",std::string("")); - recoCaloJetCollName = pset.getUntrackedParameter("RecoCaloJetCollectionName",std::string("")); - chgGenPartCollName = pset.getUntrackedParameter("ChgGenPartCollectionName",std::string("")); - tracksCollName = pset.getUntrackedParameter("TracksCollectionName",std::string("")); + mcEventToken = mayConsume(pset.getUntrackedParameter("MCEvent",std::string(""))); + genJetCollToken = mayConsume(pset.getUntrackedParameter("GenJetCollectionName",std::string(""))); + chgJetCollToken = mayConsume(pset.getUntrackedParameter("ChgGenJetCollectionName",std::string(""))); + tracksJetCollToken = consumes(pset.getUntrackedParameter("TracksJetCollectionName",std::string(""))); + recoCaloJetCollToken = consumes(pset.getUntrackedParameter("RecoCaloJetCollectionName",std::string(""))); + chgGenPartCollToken = mayConsume >(pset.getUntrackedParameter("ChgGenPartCollectionName",std::string(""))); + tracksCollToken = consumes(pset.getUntrackedParameter("TracksCollectionName",std::string(""))); // trigger results - triggerResultsTag = pset.getParameter("triggerResults"); + triggerResultsToken = consumes(pset.getParameter("triggerResults")); // hltFilterTag = pset.getParameter("hltFilter"); // triggerName = pset.getParameter("triggerName"); @@ -129,7 +129,7 @@ AnalysisRootpleProducer::AnalysisRootpleProducer( const ParameterSet& pset ) void AnalysisRootpleProducer::beginJob() { - + // use TFileService for output to root file AnalysisTree = fs->make("AnalysisTree","MBUE Analysis Tree "); @@ -137,48 +137,48 @@ void AnalysisRootpleProducer::beginJob() // store p, pt, eta, phi for particles and jets - // GenParticles at hadron level + // GenParticles at hadron level AnalysisTree->Branch("NumberMCParticles",&NumberMCParticles,"NumberMCParticles/I"); AnalysisTree->Branch("MomentumMC",MomentumMC,"MomentumMC[NumberMCParticles]/F"); AnalysisTree->Branch("TransverseMomentumMC",TransverseMomentumMC,"TransverseMomentumMC[NumberMCParticles]/F"); AnalysisTree->Branch("EtaMC",EtaMC,"EtaMC[NumberMCParticles]/F"); AnalysisTree->Branch("PhiMC",PhiMC,"PhiMC[NumberMCParticles]/F"); - + // tracks AnalysisTree->Branch("NumberTracks",&NumberTracks,"NumberTracks/I"); AnalysisTree->Branch("MomentumTK",MomentumTK,"MomentumTK[NumberTracks]/F"); AnalysisTree->Branch("TrasverseMomentumTK",TransverseMomentumTK,"TransverseMomentumTK[NumberTracks]/F"); AnalysisTree->Branch("EtaTK",EtaTK,"EtaTK[NumberTracks]/F"); AnalysisTree->Branch("PhiTK",PhiTK,"PhiTK[NumberTracks]/F"); - + // GenJets AnalysisTree->Branch("NumberInclusiveJet",&NumberInclusiveJet,"NumberInclusiveJet/I"); AnalysisTree->Branch("MomentumIJ",MomentumIJ,"MomentumIJ[NumberInclusiveJet]/F"); AnalysisTree->Branch("TrasverseMomentumIJ",TransverseMomentumIJ,"TransverseMomentumIJ[NumberInclusiveJet]/F"); AnalysisTree->Branch("EtaIJ",EtaIJ,"EtaIJ[NumberInclusiveJet]/F"); AnalysisTree->Branch("PhiIJ",PhiIJ,"PhiIJ[NumberInclusiveJet]/F"); - + // jets from charged GenParticles AnalysisTree->Branch("NumberChargedJet",&NumberChargedJet,"NumberChargedJet/I"); AnalysisTree->Branch("MomentumCJ",MomentumCJ,"MomentumCJ[NumberChargedJet]/F"); AnalysisTree->Branch("TrasverseMomentumCJ",TransverseMomentumCJ,"TransverseMomentumCJ[NumberChargedJet]/F"); AnalysisTree->Branch("EtaCJ",EtaCJ,"EtaCJ[NumberChargedJet]/F"); AnalysisTree->Branch("PhiCJ",PhiCJ,"PhiCJ[NumberChargedJet]/F"); - + // jets from tracks AnalysisTree->Branch("NumberTracksJet",&NumberTracksJet,"NumberTracksJet/I"); AnalysisTree->Branch("MomentumTJ",MomentumTJ,"MomentumTJ[NumberTracksJet]/F"); AnalysisTree->Branch("TrasverseMomentumTJ",TransverseMomentumTJ,"TransverseMomentumTJ[NumberTracksJet]/F"); AnalysisTree->Branch("EtaTJ",EtaTJ,"EtaTJ[NumberTracksJet]/F"); AnalysisTree->Branch("PhiTJ",PhiTJ,"PhiTJ[NumberTracksJet]/F"); - + // jets from calorimeter towers AnalysisTree->Branch("NumberCaloJet",&NumberCaloJet,"NumberCaloJet/I"); AnalysisTree->Branch("MomentumEHJ",MomentumEHJ,"MomentumEHJ[NumberCaloJet]/F"); AnalysisTree->Branch("TrasverseMomentumEHJ",TransverseMomentumEHJ,"TransverseMomentumEHJ[NumberCaloJet]/F"); AnalysisTree->Branch("EtaEHJ",EtaEHJ,"EtaEHJ[NumberCaloJet]/F"); AnalysisTree->Branch("PhiEHJ",PhiEHJ,"PhiEHJ[NumberCaloJet]/F"); - + // alternative storage method: // save TClonesArrays of TLorentzVectors @@ -207,20 +207,20 @@ void AnalysisRootpleProducer::beginJob() } - + void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) { - - e.getByLabel( triggerResultsTag, triggerResults ); + + e.getByToken( triggerResultsToken, triggerResults ); const edm::TriggerNames & triggerNames = e.triggerNames(*triggerResults); acceptedTriggers->Clear(); - unsigned int iAcceptedTriggers( 0 ); + unsigned int iAcceptedTriggers( 0 ); if ( triggerResults.product()->wasrun() ) { //cout << "at least one path out of " << triggerResults.product()->size() << " ran? " << triggerResults.product()->wasrun() << endl; - - if ( triggerResults.product()->accept() ) + + if ( triggerResults.product()->accept() ) { //cout << endl << "at least one path accepted? " << triggerResults.product()->accept() << endl; @@ -247,20 +247,20 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) // skipped, if onlyRECO flag set to true if(!onlyRECO){ - - e.getByLabel( mcEvent , EvtHandle ); - e.getByLabel( chgGenPartCollName, CandHandleMC ); - e.getByLabel( chgJetCollName , ChgGenJetsHandle ); - e.getByLabel( genJetCollName , GenJetsHandle ); - + + e.getByToken( mcEventToken , EvtHandle ); + e.getByToken( chgGenPartCollToken, CandHandleMC ); + e.getByToken( chgJetCollToken , ChgGenJetsHandle ); + e.getByToken( genJetCollToken , GenJetsHandle ); + const HepMC::GenEvent* Evt = EvtHandle->GetEvent() ; - + EventKind = Evt->signal_process_id(); std::vector GenPart; std::vector ChgGenJetContainer; std::vector GenJetContainer; - + GenPart.clear(); ChgGenJetContainer.clear(); GenJetContainer.clear(); @@ -310,7 +310,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) // hadron level particles if (CandHandleMC->size()){ - + for (vector::const_iterator it(CandHandleMC->begin()), itEnd(CandHandleMC->end()); it != itEnd;it++) { @@ -327,23 +327,23 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) } } - } + } + - // reco level analysis - - e.getByLabel( tracksCollName , CandHandleRECO ); - e.getByLabel( recoCaloJetCollName, RecoCaloJetsHandle ); - e.getByLabel( tracksJetCollName , TracksJetsHandle ); - + + e.getByToken( tracksCollToken , CandHandleRECO ); + e.getByToken( recoCaloJetCollToken, RecoCaloJetsHandle ); + e.getByToken( tracksJetCollToken , TracksJetsHandle ); + std::vector Tracks; std::vector TracksJetContainer; std::vector RecoCaloJetContainer; - + Tracks.clear(); TracksJetContainer.clear(); RecoCaloJetContainer.clear(); - + Track->Clear(); TracksJet->Clear(); CalorimeterJet->Clear(); @@ -364,7 +364,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) new((*CalorimeterJet)[iCalorimeterJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy()); } } - + if(TracksJetsHandle->size()) { for(BasicJetCollection::const_iterator it(TracksJetsHandle->begin()), itEnd(TracksJetsHandle->end()); @@ -373,7 +373,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) TracksJetContainer.push_back(*it); } std::stable_sort(TracksJetContainer.begin(),TracksJetContainer.end(),BasicJetSort()); - + std::vector::const_iterator it(TracksJetContainer.begin()), itEnd(TracksJetContainer.end()); for(int iTracksJet(0); it != itEnd; ++it, ++iTracksJet) { @@ -381,7 +381,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) new((*TracksJet)[iTracksJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy()); } } - + if(CandHandleRECO->size()) { for(CandidateCollection::const_iterator it(CandHandleRECO->begin()), itEnd(CandHandleRECO->end()); @@ -390,7 +390,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) Tracks.push_back(it->p4()); } std::stable_sort(Tracks.begin(),Tracks.end(),GreaterPt()); - + std::vector::const_iterator it( Tracks.begin()), itEnd(Tracks.end()); for(int iTracks(0); it != itEnd; ++it, ++iTracks) { @@ -398,7 +398,7 @@ void AnalysisRootpleProducer::analyze( const Event& e, const EventSetup& ) new ((*Track)[iTracks]) TLorentzVector(it->Px(), it->Py(), it->Pz(), it->E()); } } - + store(); } diff --git a/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducerOnlyMC.cc b/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducerOnlyMC.cc index fb9f2cacc9860..8e29244b89a3d 100644 --- a/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducerOnlyMC.cc +++ b/QCDAnalysis/UEAnalysis/src/AnalysisRootpleProducerOnlyMC.cc @@ -1,6 +1,6 @@ // Authors: F. Ambroglini, L. Fano' #include - + using namespace edm; using namespace std; using namespace reco; @@ -8,7 +8,7 @@ using namespace reco; class GreaterPt { public: - bool operator()( const math::XYZTLorentzVector& a, const math::XYZTLorentzVector& b) + bool operator()( const math::XYZTLorentzVector& a, const math::XYZTLorentzVector& b) { return a.pt() > b.pt(); } @@ -17,7 +17,7 @@ class GreaterPt class GenJetSort { public: - bool operator()(const GenJet& a, const GenJet& b) + bool operator()(const GenJet& a, const GenJet& b) { return a.pt() > b.pt(); } @@ -67,10 +67,10 @@ void AnalysisRootpleProducerOnlyMC::fillChargedJet(float p, float pt, float eta, AnalysisRootpleProducerOnlyMC::AnalysisRootpleProducerOnlyMC( const ParameterSet& pset ) { - mcEvent = pset.getUntrackedParameter("MCEvent",std::string("")); - genJetCollName = pset.getUntrackedParameter("GenJetCollectionName",std::string("")); - chgJetCollName = pset.getUntrackedParameter("ChgGenJetCollectionName",std::string("")); - chgGenPartCollName = pset.getUntrackedParameter("ChgGenPartCollectionName",std::string("")); + mcEventToken = consumes(pset.getUntrackedParameter("MCEvent",std::string(""))); + genJetCollToken = consumes(pset.getUntrackedParameter("GenJetCollectionName",std::string(""))); + chgJetCollToken = consumes(pset.getUntrackedParameter("ChgGenJetCollectionName",std::string(""))); + chgGenPartCollToken = consumes >(pset.getUntrackedParameter("ChgGenPartCollectionName",std::string(""))); piG = acos(-1.); NumberMCParticles=0; @@ -81,12 +81,12 @@ AnalysisRootpleProducerOnlyMC::AnalysisRootpleProducerOnlyMC( const ParameterSet void AnalysisRootpleProducerOnlyMC::beginJob() { - // use TFileService for output to root file + // use TFileService for output to root file AnalysisTree = fs->make("AnalysisTree","MBUE Analysis Tree "); - + // process type AnalysisTree->Branch("EventKind",&EventKind,"EventKind/I"); - + // store p, pt, eta, phi for particles and jets // GenParticles at hadron level @@ -102,14 +102,14 @@ void AnalysisRootpleProducerOnlyMC::beginJob() AnalysisTree->Branch("TrasverseMomentumIJ",TransverseMomentumIJ,"TransverseMomentumIJ[NumberInclusiveJet]/F"); AnalysisTree->Branch("EtaIJ",EtaIJ,"EtaIJ[NumberInclusiveJet]/F"); AnalysisTree->Branch("PhiIJ",PhiIJ,"PhiIJ[NumberInclusiveJet]/F"); - + // jets from charged GenParticles AnalysisTree->Branch("NumberChargedJet",&NumberChargedJet,"NumberChargedJet/I"); AnalysisTree->Branch("MomentumCJ",MomentumCJ,"MomentumCJ[NumberChargedJet]/F"); AnalysisTree->Branch("TrasverseMomentumCJ",TransverseMomentumCJ,"TransverseMomentumCJ[NumberChargedJet]/F"); AnalysisTree->Branch("EtaCJ",EtaCJ,"EtaCJ[NumberChargedJet]/F"); AnalysisTree->Branch("PhiCJ",PhiCJ,"PhiCJ[NumberChargedJet]/F"); - + // alternative storage method: // save TClonesArrays of TLorentzVectors @@ -117,7 +117,7 @@ void AnalysisRootpleProducerOnlyMC::beginJob() MonteCarlo = new TClonesArray("TLorentzVector", 10000); AnalysisTree->Branch("MonteCarlo", "TClonesArray", &MonteCarlo, 128000, 0); - + InclusiveJet = new TClonesArray("TLorentzVector", 10000); AnalysisTree->Branch("InclusiveJet", "TClonesArray", &InclusiveJet, 128000, 0); @@ -125,27 +125,27 @@ void AnalysisRootpleProducerOnlyMC::beginJob() AnalysisTree->Branch("ChargedJet", "TClonesArray", &ChargedJet, 128000, 0); } - + void AnalysisRootpleProducerOnlyMC::analyze( const Event& e, const EventSetup& ) { - e.getByLabel( mcEvent , EvtHandle ) ; - e.getByLabel( chgGenPartCollName, CandHandleMC ); - e.getByLabel( chgJetCollName , ChgGenJetsHandle ); - e.getByLabel( genJetCollName , GenJetsHandle ); - + e.getByToken( mcEventToken , EvtHandle ); + e.getByToken( chgGenPartCollToken, CandHandleMC ); + e.getByToken( chgJetCollToken , ChgGenJetsHandle ); + e.getByToken( genJetCollToken , GenJetsHandle ); + const HepMC::GenEvent* Evt = EvtHandle->GetEvent() ; - + EventKind = Evt->signal_process_id(); - + std::vector GenPart; std::vector ChgGenJetContainer; std::vector GenJetContainer; - + GenPart.clear(); ChgGenJetContainer.clear(); GenJetContainer.clear(); - + ChargedJet->Clear(); InclusiveJet->Clear(); MonteCarlo->Clear(); @@ -157,9 +157,9 @@ void AnalysisRootpleProducerOnlyMC::analyze( const Event& e, const EventSetup& ) { ChgGenJetContainer.push_back(*it); } - + std::stable_sort(ChgGenJetContainer.begin(),ChgGenJetContainer.end(),GenJetSort()); - + std::vector::const_iterator it(ChgGenJetContainer.begin()), itEnd(ChgGenJetContainer.end()); for ( int iChargedJet(0); it != itEnd; ++it, ++iChargedJet) { @@ -167,9 +167,9 @@ void AnalysisRootpleProducerOnlyMC::analyze( const Event& e, const EventSetup& ) new((*ChargedJet)[iChargedJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy()); } } - + if (GenJetsHandle->size()){ - + for ( GenJetCollection::const_iterator it(GenJetsHandle->begin()), itEnd(GenJetsHandle->end()); it!=itEnd; ++it ) { @@ -178,14 +178,14 @@ void AnalysisRootpleProducerOnlyMC::analyze( const Event& e, const EventSetup& ) std::stable_sort(GenJetContainer.begin(),GenJetContainer.end(),GenJetSort()); - std::vector::const_iterator it(GenJetContainer.begin()), itEnd(GenJetContainer.end()); + std::vector::const_iterator it(GenJetContainer.begin()), itEnd(GenJetContainer.end()); for ( int iInclusiveJet(0); it != itEnd; ++it, ++iInclusiveJet) { fillInclusiveJet(it->p(),it->pt(),it->eta(),it->phi()); new((*InclusiveJet)[iInclusiveJet]) TLorentzVector(it->px(), it->py(), it->pz(), it->energy()); } } - + if (CandHandleMC->size()){ for (vector::const_iterator it(CandHandleMC->begin()), itEnd(CandHandleMC->end()); @@ -200,7 +200,7 @@ void AnalysisRootpleProducerOnlyMC::analyze( const Event& e, const EventSetup& ) for( int iMonteCarlo(0); it != itEnd; ++it, ++iMonteCarlo ) { fillMCParticles(it->P(),it->Pt(),it->Eta(),it->Phi()); - new((*MonteCarlo)[iMonteCarlo]) TLorentzVector(it->Px(), it->Py(), it->Pz(), it->E()); + new((*MonteCarlo)[iMonteCarlo]) TLorentzVector(it->Px(), it->Py(), it->Pz(), it->E()); } }