From bee06fc0927930f000bc04b6592cc6f8a9cc4b23 Mon Sep 17 00:00:00 2001 From: izisopou <54803536+izisopou@users.noreply.github.com> Date: Tue, 27 Oct 2020 18:21:19 +0200 Subject: [PATCH] Update JetResponseAnalyzer.cc --- JetAnalyzers/src/JetResponseAnalyzer.cc | 87 +++++++++++++++++++------ 1 file changed, 68 insertions(+), 19 deletions(-) diff --git a/JetAnalyzers/src/JetResponseAnalyzer.cc b/JetAnalyzers/src/JetResponseAnalyzer.cc index dc0ccc14..0572f71d 100644 --- a/JetAnalyzers/src/JetResponseAnalyzer.cc +++ b/JetAnalyzers/src/JetResponseAnalyzer.cc @@ -25,11 +25,11 @@ JetResponseAnalyzer::JetResponseAnalyzer(const edm::ParameterSet& iConfig) , srcRhoHLT_ (consumes(iConfig.getParameter ("srcRhoHLT"))) , srcVtx_ (consumes(iConfig.getParameter ("srcVtx"))) , srcGenInfo_ (consumes(edm::InputTag("generator")) ) - , srcPileupInfo_ (consumes >(edm::InputTag("addPileupInfo")) ) + , srcPileupInfo_ (consumes >(edm::InputTag("slimmedAddPileupInfo")) ) //, srcPFCandidates_ (consumes >(iConfig.getParameter("srcPFCandidates"))) , srcPFCandidates_ (consumes(iConfig.getParameter("srcPFCandidates"))) , srcPFCandidatesAsFwdPtr_(consumes > >(iConfig.getParameter("srcPFCandidates"))) - , srcGenParticles_ (consumes >(iConfig.getParameter("srcGenParticles"))) + , srcGenParticles_ (consumes >(iConfig.getParameter("srcGenParticles"))) , jecLabel_ (iConfig.getParameter ("jecLabel")) , doComposition_ (iConfig.getParameter ("doComposition")) , doFlavor_ (iConfig.getParameter ("doFlavor")) @@ -115,6 +115,51 @@ void JetResponseAnalyzer::beginJob() } + + + +//shamelessly taken from JetSpecific.cc +//this method exists for pfjets (neutralMultiplicity()), but not for genjets +void getMult( vector const & particles, int* nMult, int* chMult ) { + + vector::const_iterator itParticle; + for (itParticle=particles.begin();itParticle!=particles.end();++itParticle){ + const reco::Candidate* pfCand = itParticle->get(); + + switch (std::abs(pfCand->pdgId())) { + + case 211: //PFCandidate::h: // charged hadron + (*chMult)++; + break; + + case 130: //PFCandidate::h0 : // neutral hadron + (*nMult)++; + break; + + case 22: //PFCandidate::gamma: // photon + (*nMult)++; + break; + + case 11: // PFCandidate::e: // electron + (*chMult)++; + break; + + case 13: //PFCandidate::mu: // muon + (*chMult)++; + break; + + case 1: // PFCandidate::h_HF : // hadron in HF + (*nMult)++; + break; + + case 2: //PFCandidate::egamma_HF : // electromagnetic in HF + (*nMult)++; + break; + } + } +} + +//_______________ //______________________________________________________________________________ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) @@ -134,7 +179,7 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, edm::Handle vtx; edm::Handle pfCandidates; edm::Handle > > pfCandidatesAsFwdPtr; - edm::Handle > genParticles; + edm::Handle > genParticles; // Jet CORRECTOR jetCorrector_ = (jecLabel_.empty()) ? 0 : JetCorrector::getJetCorrector(jecLabel_,iSetup); @@ -189,8 +234,8 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, JRAEvt_->refpvz = -1000.0; iEvent.getByToken(srcGenParticles_, genParticles); for (size_t i = 0; i < genParticles->size(); ++i) { - const reco::GenParticle & genIt = (*genParticles)[i]; - if ( genIt.isHardProcess() ) { + const pat::PackedGenParticle & genIt = (*genParticles)[i]; + if ( genIt.fromHardProcessFinalState() ) { JRAEvt_->refpvz = genIt.vz(); break; } @@ -257,18 +302,19 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, JRAEvt_->refdphijt->push_back(reco::deltaPhi(jet->phi(),ref->phi())); else JRAEvt_->refdrjt->push_back(reco::deltaR(jet->eta(),jet->phi(),ref->eta(),ref->phi())); - + if ((!doBalancing_&&JRAEvt_->refdrjt->at(JRAEvt_->nref)>deltaRMax_)|| (doBalancing_&&std::abs(JRAEvt_->refdphijt->at(JRAEvt_->nref))refdphijt->pop_back(); else JRAEvt_->refdrjt->pop_back(); continue; } - JRAEvt_->refpdgid->push_back(0); - JRAEvt_->refpdgid_algorithmicDef->push_back(0); - JRAEvt_->refpdgid_physicsDef->push_back(0); + if (getFlavorFromMap_) { + JRAEvt_->refpdgid_algorithmicDef->push_back(0); + JRAEvt_->refpdgid_physicsDef->push_back(0); + reco::JetMatchedPartonsCollection::const_iterator itPartonMatch; itPartonMatch=refToPartonMap->begin(); for (;itPartonMatch!=refToPartonMap->end();++itPartonMatch) { @@ -277,7 +323,7 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, const reco::Candidate* cand = &(*jetRef); if (cand==&(*ref)) break; } - + if (itPartonMatch!=refToPartonMap->end()&& itPartonMatch->second.algoDefinitionParton().get()!=0&& itPartonMatch->second.physicsDefinitionParton().get()!=0) { @@ -315,10 +361,6 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, } } } - else { - JRAEvt_->refpdgid_algorithmicDef->at(JRAEvt_->nref)=0; - JRAEvt_->refpdgid_physicsDef->at(JRAEvt_->nref)=0; - } JRAEvt_->refpdgid->at(JRAEvt_->nref)=ref->pdgId(); // Beta/Beta Star Calculation @@ -439,12 +481,21 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, JRAEvt_->jtmuf ->push_back(pfJetRef->muonEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); JRAEvt_->jthfhf->push_back(pfJetRef->HFHadronEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); JRAEvt_->jthfef->push_back(pfJetRef->HFEMEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); +int chMult=0, nMult=0; + getMult( ref.castTo()->getJetConstituents(), &nMult, &chMult ); + JRAEvt_->refnMult ->push_back( nMult ); + JRAEvt_->refchMult->push_back( chMult ); + + //this method exists for pfjets (neutralMultiplicity()), but not for genjets + //original i thought since genjet didn't have it i should make this method + chMult=0; nMult=0; + getMult( jet.castTo()->getJetConstituents(), &nMult, &chMult ); + JRAEvt_->jtnMult ->push_back( nMult ); + JRAEvt_->jtchMult->push_back( chMult ); } } - JRAEvt_->nref++; } - // PFCANDIDATE INFORMATION //Dual handle idea from https://github.com/aperloff/cmssw/blob/CMSSW_7_6_X/RecoJets/JetProducers/plugins/VirtualJetProducer.cc //Random-Cone algo from https://github.com/cihar29/OffsetAnalysis/blob/master/run_offset.py @@ -483,10 +534,8 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, } } } - - tree_->Fill(); - + return; }