6 |
|
#include "DataFormats/HepMCCandidate/interface/GenParticle.h" |
7 |
|
#include "DataFormats/MuonReco/interface/Muon.h" |
8 |
|
#include "DataFormats/MuonReco/interface/MuonFwd.h" |
9 |
+ |
#include "DataFormats/MuonReco/interface/MuonSelectors.h" |
10 |
|
#include "DataFormats/VertexReco/interface/Vertex.h" |
11 |
|
#include "DataFormats/HLTReco/interface/TriggerEvent.h" |
12 |
|
#include "DataFormats/TrackReco/interface/TrackFwd.h" |
35 |
|
|
36 |
|
HbbTreeMaker::HbbTreeMaker(const edm::ParameterSet & pset): |
37 |
|
debug_(pset.getParameter<int>("DEBUG")), |
38 |
+ |
processData_(pset.getParameter<bool>("ProcessData")), |
39 |
|
flavour_(pset.getParameter<unsigned int>("JetFlavour")), |
40 |
|
doGen_(pset.getParameter<bool>("DOGEN")), |
41 |
|
genParticleSrc_(pset.getParameter<edm::InputTag>("GenParticles")), |
84 |
|
|
85 |
|
lDir = lFileService->mkdir("JetFlavours"); |
86 |
|
|
87 |
< |
jetFlav_.Initialise(lDir, debug_, flavour_); |
87 |
> |
if (!processData_) jetFlav_.Initialise(lDir, debug_, flavour_); |
88 |
|
|
89 |
|
}//beginJob |
90 |
|
|
91 |
|
void HbbTreeMaker::endJob(){//endJob |
92 |
< |
jetFlav_.printSummary(); |
92 |
> |
if (!processData_) jetFlav_.printSummary(); |
93 |
|
|
94 |
|
//tree_->Write(); |
95 |
|
//delete tree_; |
113 |
|
aEvt.getByLabel(genParticleSrc_,lGenParticles); |
114 |
|
if (debug_) std::cout << "** ngenParticles = " << lGenParticles->size() << std::endl; |
115 |
|
} catch(cms::Exception& e) { |
116 |
< |
std::cout << "AMM: Collection genParticles not available! Exception : " << e.what() << ". " << std::endl; |
116 |
> |
if (!processData_) std::cout << "AMM: Collection genParticles not available! Exception : " << e.what() << ". " << std::endl; |
117 |
|
} |
118 |
|
|
119 |
< |
if (doGen_) HbbParticles(lGenParticles,event_->particles()); |
119 |
> |
if (doGen_ && !processData_) HbbParticles(lGenParticles,event_->particles()); |
120 |
|
|
121 |
< |
unsigned int lNPartons = jetFlav_.fillPartons(lGenParticles); |
121 |
> |
unsigned int lNPartons = 0; |
122 |
> |
if (!processData_) lNPartons = jetFlav_.fillPartons(lGenParticles); |
123 |
|
|
124 |
< |
if (debug_) std::cout << "--- Number of partons = " << lNPartons << "." << std::endl; |
124 |
> |
if (debug_ && !processData_) std::cout << "--- Number of partons = " << lNPartons << "." << std::endl; |
125 |
|
|
126 |
|
|
127 |
|
edm::Handle<std::vector<reco::Vertex> > lRecoVertices; |
315 |
|
//if (debug_ > 1) std::cout << "**** Ele #" << iEle << ", pT,eta,phi = " << (*iter).pt() << " " << (*iter).eta() << " " << (*iter).phi() << std::endl; |
316 |
|
|
317 |
|
HbbAnalysis::GenVars lGen; |
318 |
< |
if ((*iter).genLepton()){ |
318 |
> |
if (!processData_ && (*iter).genLepton()){ |
319 |
|
lGen.valid = true; |
320 |
|
lGen.E = (*iter).genLepton()->energy(); |
321 |
|
lGen.pT = (*iter).genLepton()->pt(); |
400 |
|
const reco::Muon* recoMuon = dynamic_cast<const reco::Muon*>((*iter).originalObject()); |
401 |
|
|
402 |
|
HbbAnalysis::GenVars lGen; |
403 |
< |
if ((*iter).genLepton()){ |
403 |
> |
if (!processData_ && (*iter).genLepton()){ |
404 |
|
lGen.valid = true; |
405 |
|
lGen.E = (*iter).genLepton()->energy(); |
406 |
|
lGen.pT = (*iter).genLepton()->pt(); |
482 |
|
else if (recoMuon->isCaloMuon()) lID.type = 4; |
483 |
|
else lID.type = 0; |
484 |
|
|
485 |
< |
if (recoMuon->isGood(reco::Muon::AllGlobalMuons)) lID.ids.push_back(1); |
486 |
< |
if (recoMuon->isGood(reco::Muon::AllStandAloneMuons)) lID.ids.push_back(2); |
487 |
< |
if (recoMuon->isGood(reco::Muon::AllTrackerMuons)) lID.ids.push_back(3); |
488 |
< |
if (recoMuon->isGood(reco::Muon::TrackerMuonArbitrated)) lID.ids.push_back(4); |
489 |
< |
if (recoMuon->isGood(reco::Muon::AllArbitrated)) lID.ids.push_back(5); |
490 |
< |
if (recoMuon->isGood(reco::Muon::GlobalMuonPromptTight)) lID.ids.push_back(6); |
491 |
< |
if (recoMuon->isGood(reco::Muon::TMLastStationLoose)) lID.ids.push_back(7); |
492 |
< |
if (recoMuon->isGood(reco::Muon::TMLastStationTight)) lID.ids.push_back(8); |
493 |
< |
if (recoMuon->isGood(reco::Muon::TM2DCompatibilityLoose)) lID.ids.push_back(9); |
494 |
< |
if (recoMuon->isGood(reco::Muon::TM2DCompatibilityTight)) lID.ids.push_back(10); |
495 |
< |
if (recoMuon->isGood(reco::Muon::TMOneStationLoose)) lID.ids.push_back(11); |
496 |
< |
if (recoMuon->isGood(reco::Muon::TMOneStationTight)) lID.ids.push_back(12); |
497 |
< |
if (recoMuon->isGood(reco::Muon::TMLastStationOptimizedLowPtLoose)) lID.ids.push_back(13); |
498 |
< |
if (recoMuon->isGood(reco::Muon::TMLastStationOptimizedLowPtTight)) lID.ids.push_back(14); |
485 |
> |
if (muon::isGoodMuon(*recoMuon,muon::AllGlobalMuons)) lID.ids.push_back(1); |
486 |
> |
if (muon::isGoodMuon(*recoMuon,muon::AllStandAloneMuons)) lID.ids.push_back(2); |
487 |
> |
if (muon::isGoodMuon(*recoMuon,muon::AllTrackerMuons)) lID.ids.push_back(3); |
488 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TrackerMuonArbitrated)) lID.ids.push_back(4); |
489 |
> |
if (muon::isGoodMuon(*recoMuon,muon::AllArbitrated)) lID.ids.push_back(5); |
490 |
> |
if (muon::isGoodMuon(*recoMuon,muon::GlobalMuonPromptTight)) lID.ids.push_back(6); |
491 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationLoose)) lID.ids.push_back(7); |
492 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationTight)) lID.ids.push_back(8); |
493 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TM2DCompatibilityLoose)) lID.ids.push_back(9); |
494 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TM2DCompatibilityTight)) lID.ids.push_back(10); |
495 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMOneStationLoose)) lID.ids.push_back(11); |
496 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMOneStationTight)) lID.ids.push_back(12); |
497 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationOptimizedLowPtLoose)) lID.ids.push_back(13); |
498 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationOptimizedLowPtTight)) lID.ids.push_back(14); |
499 |
> |
if (muon::isGoodMuon(*recoMuon,muon::GMTkChiCompatibility)) lID.ids.push_back(15); |
500 |
> |
if (muon::isGoodMuon(*recoMuon,muon::GMStaChiCompatibility)) lID.ids.push_back(16); |
501 |
> |
if (muon::isGoodMuon(*recoMuon,muon::GMTkKinkTight)) lID.ids.push_back(17); |
502 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationAngLoose)) lID.ids.push_back(18); |
503 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationAngTight)) lID.ids.push_back(19); |
504 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMOneStationAngLoose)) lID.ids.push_back(20); |
505 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMOneStationAngTight)) lID.ids.push_back(21); |
506 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationOptimizedBarrelLowPtLoose)) lID.ids.push_back(22); |
507 |
> |
if (muon::isGoodMuon(*recoMuon,muon::TMLastStationOptimizedBarrelLowPtTight)) lID.ids.push_back(23); |
508 |
|
|
509 |
|
lID.caloCompat = recoMuon->caloCompatibility(); |
510 |
< |
lID.segCompat = recoMuon->segmentCompatibility(); |
510 |
> |
lID.segCompat = muon::segmentCompatibility(*recoMuon); |
511 |
|
lID.nChambers = recoMuon->numberOfChambers(); |
512 |
|
lID.nMatchesLoose = recoMuon->numberOfMatches(reco::Muon::NoArbitration); |
513 |
|
lID.nMatchesMedium = recoMuon->numberOfMatches(reco::Muon::SegmentArbitration); |
538 |
|
//if (debug_ > 1) std::cout << "**** Ele #" << iEle << ", pT,eta,phi = " << (*iter).pt() << " " << (*iter).eta() << " " << (*iter).phi() << std::endl; |
539 |
|
|
540 |
|
HbbAnalysis::GenVars lGen; |
541 |
< |
if ((*iter).genLepton()){ |
541 |
> |
if (!processData_ && (*iter).genLepton()){ |
542 |
|
lGen.valid = true; |
543 |
|
lGen.E = (*iter).genLepton()->energy(); |
544 |
|
lGen.pT = (*iter).genLepton()->pt(); |
569 |
|
|
570 |
|
|
571 |
|
HbbAnalysis::GenVars lGenJet; |
572 |
< |
if ((*iter).genJet()){ |
572 |
> |
if (!processData_ && (*iter).genJet()){ |
573 |
|
lGenJet.valid = true; |
574 |
+ |
lGenJet.E = (*iter).genJet()->energy(); |
575 |
|
lGenJet.pT = (*iter).genJet()->pt(); |
576 |
|
lGenJet.eta = (*iter).genJet()->eta(); |
577 |
|
lGenJet.phi = (*iter).genJet()->phi(); |
585 |
|
} |
586 |
|
else { |
587 |
|
lGenJet.valid = false; |
588 |
+ |
lGenJet.E = 0; |
589 |
|
lGenJet.pT = 0; |
590 |
|
lGenJet.eta = 0; |
591 |
|
lGenJet.phi = 0; |
698 |
|
} |
699 |
|
|
700 |
|
|
687 |
– |
HbbAnalysis::PFTauIDVars lpfId; |
701 |
|
HbbAnalysis::CaloTauIDVars lcaloId; |
702 |
+ |
lcaloId.byIsolation = 0; |
703 |
+ |
lcaloId.byLeadingTrackFinding = 0; |
704 |
+ |
lcaloId.byLeadingTrackPtCut = 0; |
705 |
+ |
|
706 |
+ |
HbbAnalysis::PFTauIDVars lpfId; |
707 |
+ |
lpfId.byLeadingTrackFinding = 0; |
708 |
+ |
lpfId.byLeadingTrackPtCut = 0; |
709 |
+ |
lpfId.byTrackIsolation = 0; |
710 |
+ |
lpfId.byECALIsolation = 0; |
711 |
+ |
lpfId.byIsolation = 0; |
712 |
+ |
lpfId.againstElectron = 0; |
713 |
+ |
lpfId.againstMuon = 0; |
714 |
+ |
|
715 |
+ |
|
716 |
|
|
717 |
|
for (unsigned int id(0); id<lIDs.size(); id++){ |
718 |
|
|
778 |
|
HbbAnalysis::PFTauCandVars lNeutr; |
779 |
|
lNeutr.nSigCands = (*iter).signalPFNeutrHadrCands().size(); |
780 |
|
lNeutr.nIsoCands = (*iter).isolationPFNeutrHadrCands().size(); |
781 |
< |
lNeutr.isolationPtSum = 0; |
781 |
> |
lNeutr.isolationPtSum = (*iter).neutralHadronIso(); |
782 |
|
|
783 |
|
HbbAnalysis::PFTauCandVars lGamma; |
784 |
|
lGamma.nSigCands = (*iter).signalPFGammaCands().size(); |
832 |
|
//if (debug_ > 1) std::cout << "**** Ele #" << iEle << ", pT,eta,phi = " << (*iter).pt() << " " << (*iter).eta() << " " << (*iter).phi() << std::endl; |
833 |
|
|
834 |
|
HbbAnalysis::GenVars lGen; |
835 |
< |
if ((*iter).genParton()){ |
835 |
> |
if (!processData_ && (*iter).genParton()){ |
836 |
|
lGen.valid = true; |
837 |
|
lGen.E = (*iter).genParton()->energy(); |
838 |
|
lGen.pT = (*iter).genParton()->pt(); |
863 |
|
|
864 |
|
|
865 |
|
HbbAnalysis::GenVars lGenJet; |
866 |
< |
if ((*iter).genJet()){ |
866 |
> |
if (!processData_ && (*iter).genJet()){ |
867 |
|
lGenJet.valid = true; |
868 |
+ |
lGenJet.E = (*iter).genJet()->energy(); |
869 |
|
lGenJet.pT = (*iter).genJet()->pt(); |
870 |
|
lGenJet.eta = (*iter).genJet()->eta(); |
871 |
|
lGenJet.phi = (*iter).genJet()->phi(); |
879 |
|
} |
880 |
|
else { |
881 |
|
lGenJet.valid = false; |
882 |
+ |
lGenJet.E = 0; |
883 |
|
lGenJet.pT = 0; |
884 |
|
lGenJet.eta = 0; |
885 |
|
lGenJet.phi = 0; |
903 |
|
lReco.vz = (*iter).vz(); |
904 |
|
|
905 |
|
unsigned int lFlav = 0; |
906 |
< |
if (aJetFlav.nPartons()) { |
906 |
> |
if (!processData_ && aJetFlav.nPartons()) { |
907 |
|
lFlav = aJetFlav.partonMatchingGenJet((*iter),aGenParticles,0.4).second; |
908 |
|
} |
909 |
|
|
912 |
|
lCommon.partonFlavour = (*iter).partonFlavour(); |
913 |
|
lCommon.nAssociatedTracks = ((*iter).associatedTracks()).size(); |
914 |
|
lCommon.rawpT = (*iter).pt(); |
915 |
< |
if ((*iter).hasJetCorrFactors()) |
916 |
< |
lCommon.rawpT = (*iter).pt()/((*iter).jetCorrFactors().scaleDefault()); |
915 |
> |
if ((*iter).hasCorrFactors()) |
916 |
> |
lCommon.rawpT = (*iter).pt()/((*iter).corrFactor((*iter).corrStep())); |
917 |
|
//lCommon.rawEta = (*iter).; |
918 |
|
//lCommon.rawPhi = (*iter).; |
919 |
|
// p_hasJetCorrFactors->Fill(aJet.hasJetCorrFactors()); |
1003 |
|
|
1004 |
|
const reco::GenMET *lGenMET = lMet.genMET(); |
1005 |
|
|
1006 |
< |
if (lGenMET){ |
1006 |
> |
if (!processData_ && lGenMET){ |
1007 |
|
lGen.mET = lGenMET->pt(); |
1008 |
|
lGen.mEx = lGenMET->px(); |
1009 |
|
lGen.mEy = lGenMET->py(); |