26 #include <Math/VectorUtil.h>
33 namespace SVfit_namespace
46 if ( mag2 <= 0. )
return p;
47 double mag = TMath::Sqrt(mag2);
53 return (p1.x()*p2.x() + p1.y()*p2.y() + p1.z()*p2.z());
58 double p3_x = p1.y()*p2.z() - p1.z()*p2.y();
59 double p3_y = p1.z()*p2.x() - p1.x()*p2.z();
60 double p3_z = p1.x()*p2.y() - p1.y()*p2.x();
82 srcReplacedMuons_(cfg.getParameter<edm::InputTag>(
"srcReplacedMuons")),
83 srcRecMuons_(cfg.getParameter<edm::InputTag>(
"srcRecMuons")),
84 srcRecTracks_(cfg.getParameter<edm::InputTag>(
"srcRecTracks")),
85 srcCaloTowers_(cfg.getParameter<edm::InputTag>(
"srcCaloTowers")),
86 srcRecPFCandidates_(cfg.getParameter<edm::InputTag>(
"srcRecPFCandidates")),
87 srcRecJets_(cfg.getParameter<edm::InputTag>(
"srcRecJets")),
88 srcTheRecVertex_(cfg.getParameter<edm::InputTag>(
"srcTheRecVertex")),
89 srcRecVertices_(cfg.getParameter<edm::InputTag>(
"srcRecVertices")),
90 srcRecVerticesWithBS_(cfg.getParameter<edm::InputTag>(
"srcRecVerticesWithBS")),
91 srcBeamSpot_(cfg.getParameter<edm::InputTag>(
"srcBeamSpot")),
92 srcGenDiTaus_(cfg.getParameter<edm::InputTag>(
"srcGenDiTaus")),
93 dRminSeparation_(cfg.getParameter<double>(
"dRminSeparation")),
94 srcGenLeg1_(cfg.getParameter<edm::InputTag>(
"srcGenLeg1")),
95 srcRecLeg1_(cfg.getParameter<edm::InputTag>(
"srcRecLeg1")),
96 srcGenLeg2_(cfg.getParameter<edm::InputTag>(
"srcGenLeg2")),
97 srcRecLeg2_(cfg.getParameter<edm::InputTag>(
"srcRecLeg2")),
98 srcGenParticles_(cfg.getParameter<edm::InputTag>(
"srcGenParticles")),
99 srcL1ETM_(cfg.getParameter<edm::InputTag>(
"srcL1ETM")),
100 srcGenCaloMEt_(cfg.getParameter<edm::InputTag>(
"srcGenCaloMEt")),
101 srcGenPFMEt_(cfg.getParameter<edm::InputTag>(
"srcGenPFMEt")),
102 srcRecCaloMEt_(cfg.getParameter<edm::InputTag>(
"srcRecCaloMEt")),
103 srcRecPFMEt_(cfg.getParameter<edm::InputTag>(
"srcRecPFMEt")),
104 srcMuonsBeforeRad_(cfg.getParameter<edm::InputTag>(
"srcMuonsBeforeRad")),
105 srcMuonsAfterRad_(cfg.getParameter<edm::InputTag>(
"srcMuonsAfterRad")),
106 srcMuonRadCorrWeight_(cfg.getParameter<edm::InputTag>(
"srcMuonRadCorrWeight")),
107 srcMuonRadCorrWeightUp_(cfg.getParameter<edm::InputTag>(
"srcMuonRadCorrWeightUp")),
108 srcMuonRadCorrWeightDown_(cfg.getParameter<edm::InputTag>(
"srcMuonRadCorrWeightDown")),
109 srcOtherWeights_(cfg.getParameter<
vInputTag>(
"srcOtherWeights")),
110 srcGenFilterInfo_(cfg.getParameter<edm::InputTag>(
"srcGenFilterInfo")),
111 dqmDirectory_(cfg.getParameter<std::
string>(
"dqmDirectory")),
112 replacedMuonPtThresholdHigh_(cfg.getParameter<double>(
"replacedMuonPtThresholdHigh")),
113 replacedMuonPtThresholdLow_(cfg.getParameter<double>(
"replacedMuonPtThresholdLow"))
115 typedef std::pair<int, int> pint;
116 std::vector<pint> jetBins;
117 jetBins.push_back(pint(-1, -1));
118 jetBins.push_back(pint(0, 0));
119 jetBins.push_back(pint(1, 1));
120 jetBins.push_back(pint(2, 2));
121 jetBins.push_back(pint(3, 1000));
122 for ( std::vector<pint>::const_iterator jetBin = jetBins.begin();
123 jetBin != jetBins.end(); ++jetBin ) {
210 template <
typename T>
214 if ( cfg.
exists(keyword) ) {
216 for ( edm::VParameterSet::const_iterator cfgLeptonDistribution = cfgLeptonDistributions.begin();
217 cfgLeptonDistribution != cfgLeptonDistributions.end(); ++cfgLeptonDistribution ) {
219 std::string cutGen = cfgLeptonDistribution->exists(
"cutGen") ?
220 cfgLeptonDistribution->getParameter<
std::string>(
"cutGen") :
"";
222 std::string cutRec = cfgLeptonDistribution->exists(
"cutRec") ?
223 cfgLeptonDistribution->getParameter<
std::string>(
"cutRec") :
"";
224 double dRmatch = cfgLeptonDistribution->exists(
"dRmatch") ?
225 cfgLeptonDistribution->getParameter<
double>(
"dRmatch") : 0.3;
228 leptonDistributions.push_back(leptonDistribution);
236 if ( cfg.
exists(keyword) ) {
238 for ( edm::VParameterSet::const_iterator cfgLeptonDistribution = cfgLeptonDistributions.begin();
239 cfgLeptonDistribution != cfgLeptonDistributions.end(); ++cfgLeptonDistribution ) {
241 std::string cutGen = cfgLeptonDistribution->exists(
"cutGen") ?
242 cfgLeptonDistribution->getParameter<
std::string>(
"cutGen") :
"";
244 std::string cutRec = cfgLeptonDistribution->exists(
"cutRec") ?
245 cfgLeptonDistribution->getParameter<
std::string>(
"cutRec") :
"";
246 double dRmatch = cfgLeptonDistribution->exists(
"dRmatch") ?
247 cfgLeptonDistribution->getParameter<
double>(
"dRmatch") : 0.3;
249 electronDistributionExtra* electronDistribution =
new electronDistributionExtra(minJets, maxJets, srcGen, cutGen, srcRec, cutRec, dRmatch, dqmDirectory,
srcTheRecVertex_,
ebRHToken_,
eeRHToken_);
250 electronDistributionsExtra.push_back(electronDistribution);
258 if ( cfg.
exists(keyword) ) {
260 for ( edm::VParameterSet::const_iterator cfgLeptonDistribution = cfgLeptonDistributions.begin();
261 cfgLeptonDistribution != cfgLeptonDistributions.end(); ++cfgLeptonDistribution ) {
263 std::string cutGen = cfgLeptonDistribution->exists(
"cutGen") ?
264 cfgLeptonDistribution->getParameter<
std::string>(
"cutGen") :
"";
266 std::string cutRec = cfgLeptonDistribution->exists(
"cutRec") ?
267 cfgLeptonDistribution->getParameter<
std::string>(
"cutRec") :
"";
268 double dRmatch = cfgLeptonDistribution->exists(
"dRmatch") ?
269 cfgLeptonDistribution->getParameter<
double>(
"dRmatch") : 0.3;
272 tauDistributionsExtra.push_back(tauDistribution);
277 template <
typename T>
281 if ( cfg.
exists(keyword) ) {
283 for ( edm::VParameterSet::const_iterator cfgLeptonEfficiency = cfgLeptonEfficiencies.begin();
284 cfgLeptonEfficiency != cfgLeptonEfficiencies.end(); ++cfgLeptonEfficiency ) {
286 std::string cutGen = cfgLeptonEfficiency->exists(
"cutGen") ?
287 cfgLeptonEfficiency->getParameter<
std::string>(
"cutGen") :
"";
289 std::string cutRec = cfgLeptonEfficiency->exists(
"cutRec") ?
290 cfgLeptonEfficiency->getParameter<
std::string>(
"cutRec") :
"";
291 double dRmatch = cfgLeptonEfficiency->exists(
"dRmatch") ?
292 cfgLeptonEfficiency->getParameter<
double>(
"dRmatch") : 0.3;
295 leptonEfficiencies.push_back(leptonEfficiency);
300 template <
typename T1,
typename T2>
304 if ( cfg.
exists(keyword) ) {
306 for ( edm::VParameterSet::const_iterator cfgLeptonL1TriggerEfficiency = cfgLeptonL1TriggerEfficiencies.begin();
307 cfgLeptonL1TriggerEfficiency != cfgLeptonL1TriggerEfficiencies.end(); ++cfgLeptonL1TriggerEfficiency ) {
309 std::string cutRef = cfgLeptonL1TriggerEfficiency->exists(
"cutRef") ?
310 cfgLeptonL1TriggerEfficiency->getParameter<
std::string>(
"cutRef") :
"";
313 double dRmatch = cfgLeptonL1TriggerEfficiency->exists(
"dRmatch") ?
314 cfgLeptonL1TriggerEfficiency->getParameter<
double>(
"dRmatch") : 0.3;
317 leptonL1TriggerEfficiencies.push_back(leptonL1TriggerEfficiency);
322 template <
typename T>
326 if ( cfg.
exists(keyword) ) {
328 for ( edm::VParameterSet::const_iterator cfgL1ExtraObjectDistribution = cfgL1ExtraObjectDistributions.begin();
329 cfgL1ExtraObjectDistribution != cfgL1ExtraObjectDistributions.end(); ++cfgL1ExtraObjectDistribution ) {
332 cfgL1ExtraObjectDistribution->getParameter<
std::string>(
"cut") :
"";
335 l1ExtraObjectDistributions.push_back(l1ExtraObjectDistribution);
343 if ( cfg.
exists(keyword) ) {
345 for ( edm::VParameterSet::const_iterator cfgMEtDistribution = cfgMEtDistributions.begin();
346 cfgMEtDistribution != cfgMEtDistributions.end(); ++cfgMEtDistribution ) {
352 metDistributions.push_back(metDistribution);
360 if ( cfg.
exists(keyword) ) {
362 for ( edm::VParameterSet::const_iterator cfgMEtL1TriggerEfficiency = cfgMEtL1TriggerEfficiencies.begin();
363 cfgMEtL1TriggerEfficiency != cfgMEtL1TriggerEfficiencies.end(); ++cfgMEtL1TriggerEfficiency ) {
366 double cutL1Et = cfgMEtL1TriggerEfficiency->getParameter<
double>(
"cutL1Et");
367 double cutL1Pt = cfgMEtL1TriggerEfficiency->getParameter<
double>(
"cutL1Pt");
370 metL1TriggerEfficiencies.push_back(metL1TriggerEfficiency);
379 <<
"Failed to access dqmStore !!\n";
538 typedef std::pair<int, int> pint;
539 std::vector<pint> jetBins;
540 jetBins.push_back(pint(-1, -1));
541 jetBins.push_back(pint(0, 0));
542 jetBins.push_back(pint(1, 1));
543 jetBins.push_back(pint(2, 2));
544 jetBins.push_back(pint(3, 1000));
545 for ( std::vector<pint>::const_iterator jetBin = jetBins.begin();
546 jetBin != jetBins.end(); ++jetBin ) {
548 if ( !dqmDirectory_beforeRad.EndsWith(
"/") ) dqmDirectory_beforeRad.Append(
"/");
549 dqmDirectory_beforeRad.Append(
"beforeRad");
551 muonRadCorrUncertaintyPlotEntry_beforeRad->
bookHistograms(dqmStore);
554 if ( !dqmDirectory_afterRad.EndsWith(
"/") ) dqmDirectory_afterRad.Append(
"/");
555 dqmDirectory_afterRad.Append(
"afterRad");
557 muonRadCorrUncertaintyPlotEntry_afterRad->
bookHistograms(dqmStore);
560 if ( !dqmDirectory_afterRadAndCorr.EndsWith(
"/") ) dqmDirectory_afterRadAndCorr.Append(
"/");
561 dqmDirectory_afterRadAndCorr.Append(
"afterRadAndCorr");
563 muonRadCorrUncertaintyPlotEntry_afterRadAndCorr->
bookHistograms(dqmStore);
569 std::vector<std::string> genTauDecayModes;
571 genTauDecayModes.push_back(
std::string(
"oneProng0Pi0"));
572 genTauDecayModes.push_back(
std::string(
"oneProng1Pi0"));
573 genTauDecayModes.push_back(
std::string(
"oneProng2Pi0"));
574 genTauDecayModes.push_back(
std::string(
"threeProng0Pi0"));
575 genTauDecayModes.push_back(
std::string(
"threeProng1Pi0"));
576 for ( std::vector<std::string>::const_iterator
genTauDecayMode = genTauDecayModes.begin();
605 void fillVisPtEtaPhiMassDistributions(
const edm::Event& evt,
619 visDecayProduct1 != visDecayProducts1->end(); ++visDecayProduct1 ) {
621 visDecayProduct2 != visDecayProducts2->end(); ++visDecayProduct2 ) {
622 double dR =
deltaR(visDecayProduct1->p4(), visDecayProduct2->p4());
627 histogram_visDiTauPt->
Fill(visDiTauP4.pt(), evtWeight);
628 histogram_visDiTauEta->
Fill(visDiTauP4.eta(), evtWeight);
629 histogram_visDiTauPhi->
Fill(visDiTauP4.phi(), evtWeight);
630 histogram_visDiTauMass->
Fill(visDiTauP4.mass(), evtWeight);
638 double sumPx = visP4.px() + metP4.px();
639 double sumPy = visP4.py() + metP4.py();
640 double sumEt =
TMath::Max(visP4.Et(), visP4.pt()) + TMath::Sqrt(metP4.pt());
641 double mt2 = sumEt*sumEt - (sumPx*sumPx + sumPy*sumPy);
642 if ( mt2 < 0 ) mt2 = 0.;
643 return TMath::Sqrt(mt2);
646 void fillX1andX2Distributions(
const edm::Event& evt,
680 genDiTau != genDiTaus->end(); ++genDiTau ) {
682 if ( !(genDiTau_composite && genDiTau_composite->
numberOfDaughters() == 2) )
continue;
688 if ( !(genLeg1 && genLeg1->
energy() > 0. &&
689 genLeg2 && genLeg2->
energy() > 0.) )
continue;
691 visDecayProduct1 != visDecayProducts1->end(); ++visDecayProduct1 ) {
692 double dR1matchedTo1 =
deltaR(visDecayProduct1->p4(), genLeg1->
p4());
693 double dR1matchedTo2 =
deltaR(visDecayProduct1->p4(), genLeg2->
p4());
695 visDecayProduct2 != visDecayProducts2->end(); ++visDecayProduct2 ) {
696 double dR2matchedTo1 =
deltaR(visDecayProduct2->p4(), genLeg1->
p4());
697 double dR2matchedTo2 =
deltaR(visDecayProduct2->p4(), genLeg2->
p4());
702 bool matched =
false;
703 if ( dR1matchedTo1 < 0.3 && dR2matchedTo1 > 0.5 &&
704 dR2matchedTo2 < 0.3 && dR1matchedTo2 > 0.5 ) {
705 leg1P4 = genLeg1->
p4();
706 X1 = visDecayProduct1->energy()/genLeg1->
energy();
707 leg2P4 = genLeg2->
p4();
708 X2 = visDecayProduct2->energy()/genLeg2->
energy();
710 }
else if ( dR1matchedTo2 < 0.3 && dR2matchedTo2 > 0.5 &&
711 dR2matchedTo1 < 0.3 && dR1matchedTo1 > 0.5 ) {
712 leg1P4 = genLeg2->
p4();
713 X1 = visDecayProduct1->energy()/genLeg2->
energy();
714 leg2P4 = genLeg1->
p4();
715 X2 = visDecayProduct2->energy()/genLeg1->
energy();
720 if ( histogram_tau1Pt && histogram_tau1Eta && histogram_tau1Phi ) {
721 histogram_tau1Pt->
Fill(genLeg1->
pt(), evtWeight);
722 histogram_tau1Eta->
Fill(genLeg1->
eta(), evtWeight);
723 histogram_tau1Phi->
Fill(genLeg1->
phi(), evtWeight);
725 if ( histogram_leg1Pt && histogram_leg1Eta && histogram_leg1Phi ) {
726 histogram_leg1Pt->
Fill(visDecayProduct1->pt(), evtWeight);
727 histogram_leg1Eta->
Fill(visDecayProduct1->eta(), evtWeight);
728 histogram_leg1Phi->
Fill(visDecayProduct1->phi(), evtWeight);
730 histogram_leg1X->
Fill(X1, evtWeight);
731 if ( histogram_leg1XforLeg2X0_00to0_25 && histogram_leg1XforLeg2X0_25to0_50 && histogram_leg1XforLeg2X0_50to0_75 && histogram_leg1XforLeg2X0_75to1_00 ) {
732 if ( X2 < 0.25 ) histogram_leg1XforLeg2X0_00to0_25->
Fill(X1, evtWeight);
733 else if ( X2 < 0.50 ) histogram_leg1XforLeg2X0_25to0_50->
Fill(X1, evtWeight);
734 else if ( X2 < 0.75 ) histogram_leg1XforLeg2X0_50to0_75->
Fill(X1, evtWeight);
735 else histogram_leg1XforLeg2X0_75to1_00->
Fill(X1, evtWeight);
737 if ( histogram_leg1Mt ) histogram_leg1Mt->
Fill(compMt(visDecayProduct1->p4(), metP4), evtWeight);
738 if ( histogram_tau2Pt && histogram_tau2Eta && histogram_tau2Phi ) {
739 histogram_tau2Pt->
Fill(genLeg2->
pt(), evtWeight);
740 histogram_tau2Eta->
Fill(genLeg2->
eta(), evtWeight);
741 histogram_tau2Phi->
Fill(genLeg2->
phi(), evtWeight);
743 if ( histogram_leg2Pt && histogram_leg2Eta && histogram_leg2Phi ) {
744 histogram_leg2Pt->
Fill(visDecayProduct2->pt(), evtWeight);
745 histogram_leg2Eta->
Fill(visDecayProduct2->eta(), evtWeight);
746 histogram_leg2Phi->
Fill(visDecayProduct2->phi(), evtWeight);
748 histogram_leg2X->
Fill(X2, evtWeight);
749 if ( histogram_leg2XforLeg1X0_00to0_25 && histogram_leg2XforLeg1X0_25to0_50 && histogram_leg2XforLeg1X0_50to0_75 && histogram_leg2XforLeg1X0_75to1_00 ) {
750 if ( X1 < 0.25 ) histogram_leg2XforLeg1X0_00to0_25->
Fill(X2, evtWeight);
751 else if ( X1 < 0.50 ) histogram_leg2XforLeg1X0_25to0_50->
Fill(X2, evtWeight);
752 else if ( X1 < 0.75 ) histogram_leg2XforLeg1X0_50to0_75->
Fill(X2, evtWeight);
753 else histogram_leg2XforLeg1X0_75to1_00->
Fill(X2, evtWeight);
754 if ( histogram_leg2Mt ) histogram_leg2Mt->
Fill(compMt(visDecayProduct2->p4(), metP4), evtWeight);
756 histogram_VisDeltaPhiLeg1Leg2->
Fill(
normalizedPhi(visDecayProduct1->phi() - visDecayProduct2->phi()), evtWeight);
771 std::ostringstream retVal;
772 retVal <<
"Run = " << run_number <<
", LS = " << ls_number <<
", Event = " << event_number;
780 std::cout <<
"<MCEmbeddingValidationAnalyzer::analyze>:" << std::endl;
788 for ( std::vector<reco::CandidateBaseRef>::const_iterator replacedMuon = replacedMuons.begin();
789 replacedMuon != replacedMuons.end(); ++replacedMuon ) {
790 if ( (*replacedMuon)->charge() > +0.5 ) replacedMuonPlus = replacedMuon->
get();
791 else if ( (*replacedMuon)->charge() < -0.5 ) replacedMuonMinus = replacedMuon->
get();
795 if ( replacedMuonPlus )
std::cout <<
"replacedMuonPlus: Pt = " << replacedMuonPlus->
pt() <<
", eta = " << replacedMuonPlus->
eta() <<
", phi = " << replacedMuonPlus->
phi() << std::endl;
796 if ( replacedMuonMinus )
std::cout <<
"replacedMuonMinus: Pt = " << replacedMuonMinus->
pt() <<
", eta = " << replacedMuonMinus->
eta() <<
", phi = " << replacedMuonMinus->
phi() << std::endl;
806 genDiTau != genDiTaus->end(); ++genDiTau ) {
808 if ( !(genDiTau_composite && genDiTau_composite->
numberOfDaughters() == 2) )
continue;
810 for (
size_t iDaughter = 0; iDaughter < numDaughters; ++iDaughter ) {
812 if ( daughter->
charge() > +0.5 ) genTauPlus = daughter;
813 else if ( daughter->
charge() < -0.5 ) genTauMinus = daughter;
817 if ( genTauPlus )
std::cout <<
"genTauPlus: Pt = " << genTauPlus->
pt() <<
", eta = " << genTauPlus->
eta() <<
", phi = " << genTauPlus->
phi() << std::endl;
818 if ( genTauMinus )
std::cout <<
"genTauMinus: Pt = " << genTauMinus->
pt() <<
", eta = " << genTauMinus->
eta() <<
", phi = " << genTauMinus->
phi() << std::endl;
821 double dRmin = 1.e+3;
822 if ( replacedMuonPlus && genTauPlus ) {
823 double dR =
deltaR(genTauPlus->
p4(), replacedMuonPlus->
p4());
825 if ( dR < dRmin ) dRmin =
dR;
827 if ( replacedMuonPlus && genTauMinus ) {
828 double dR =
deltaR(genTauMinus->
p4(), replacedMuonPlus->
p4());
830 if ( dR < dRmin ) dRmin =
dR;
832 if ( replacedMuonMinus && genTauPlus ) {
833 double dR =
deltaR(genTauPlus->
p4(), replacedMuonMinus->
p4());
835 if ( dR < dRmin ) dRmin =
dR;
837 if ( replacedMuonMinus && genTauMinus ) {
838 double dR =
deltaR(genTauMinus->
p4(), replacedMuonMinus->
p4());
839 if (
verbosity_ )
std::cout <<
" dR(replacedMuonMinus, genTauMinus) = " << dR << std::endl;
840 if ( dR < dRmin ) dRmin =
dR;
847 double evtWeight = 1.0;
848 std::map<std::string, double> evtWeightMap;
854 evtWeight *= (*weight);
855 evtWeightMap[Form(
"%s_%s", srcWeight->label().data(), srcWeight->instance().data())] = (*weight);
861 if ( genFilterInfo->numEventsTried() > 0 ) {
862 double weight = genFilterInfo->filterEfficiency();
870 if ( evtWeight < 1.e-3 || evtWeight > 1.
e+3 || TMath::IsNaN(evtWeight) )
return;
874 double muonRadCorrWeight = 1.;
875 double muonRadCorrWeightUp = 1.;
876 double muonRadCorrWeightDown = 1.;
880 muonRadCorrWeight = (*muonRadCorrWeight_handle);
881 evtWeightMap[
"muonRadCorrWeight"] = muonRadCorrWeight;
884 muonRadCorrWeightUp = (*muonRadCorrWeightUp_handle);
887 muonRadCorrWeightDown = (*muonRadCorrWeightDown_handle);
893 for ( std::vector<plotEntryTypeEvtWeight*>::iterator evtWeightPlotEntry =
evtWeightPlotEntries_.begin();
895 (*evtWeightPlotEntry)->fillHistograms(evt, evtWeightMap);
901 int numTracksPtGt5 = 0;
902 int numTracksPtGt10 = 0;
903 int numTracksPtGt20 = 0;
904 int numTracksPtGt30 = 0;
905 int numTracksPtGt40 = 0;
906 for ( reco::TrackCollection::const_iterator track = tracks->begin();
907 track != tracks->end(); ++track ) {
908 if ( track->pt() > 5. ) ++numTracksPtGt5;
909 if ( track->pt() > 10. ) ++numTracksPtGt10;
910 if ( track->pt() > 20. ) ++numTracksPtGt20;
911 if ( track->pt() > 30. ) ++numTracksPtGt30;
912 if ( track->pt() > 40. ) ++numTracksPtGt40;
922 int numChargedPFCandsPtGt5 = 0;
923 int numChargedPFCandsPtGt10 = 0;
924 int numChargedPFCandsPtGt20 = 0;
925 int numChargedPFCandsPtGt30 = 0;
926 int numChargedPFCandsPtGt40 = 0;
927 int numNeutralPFCandsPtGt5 = 0;
928 int numNeutralPFCandsPtGt10 = 0;
929 int numNeutralPFCandsPtGt20 = 0;
930 int numNeutralPFCandsPtGt30 = 0;
931 int numNeutralPFCandsPtGt40 = 0;
932 for ( reco::PFCandidateCollection::const_iterator pfCandidate = pfCandidates->begin();
933 pfCandidate != pfCandidates->end(); ++pfCandidate ) {
934 if (
TMath::Abs(pfCandidate->charge()) > 0.5 ) {
935 if ( pfCandidate->pt() > 5. ) ++numChargedPFCandsPtGt5;
936 if ( pfCandidate->pt() > 10. ) ++numChargedPFCandsPtGt10;
937 if ( pfCandidate->pt() > 20. ) ++numChargedPFCandsPtGt20;
938 if ( pfCandidate->pt() > 30. ) ++numChargedPFCandsPtGt30;
939 if ( pfCandidate->pt() > 40. ) ++numChargedPFCandsPtGt40;
941 if ( pfCandidate->pt() > 5. ) ++numNeutralPFCandsPtGt5;
942 if ( pfCandidate->pt() > 10. ) ++numNeutralPFCandsPtGt10;
943 if ( pfCandidate->pt() > 20. ) ++numNeutralPFCandsPtGt20;
944 if ( pfCandidate->pt() > 30. ) ++numNeutralPFCandsPtGt30;
945 if ( pfCandidate->pt() > 40. ) ++numNeutralPFCandsPtGt40;
961 int numJetsRawPtGt20 = 0;
962 int numJetsRawPtGt20AbsEtaLt2_5 = 0;
963 int numJetsRawPtGt20AbsEta2_5to4_5 = 0;
964 int numJetsCorrPtGt20 = 0;
965 int numJetsCorrPtGt20AbsEtaLt2_5 = 0;
966 int numJetsCorrPtGt20AbsEta2_5to4_5 = 0;
967 int numJetsRawPtGt30 = 0;
968 int numJetsRawPtGt30AbsEtaLt2_5 = 0;
969 int numJetsRawPtGt30AbsEta2_5to4_5 = 0;
970 int numJetsCorrPtGt30 = 0;
971 int numJetsCorrPtGt30AbsEtaLt2_5 = 0;
972 int numJetsCorrPtGt30AbsEta2_5to4_5 = 0;
973 for ( pat::JetCollection::const_iterator
jet = jets->begin();
974 jet != jets->end(); ++
jet ) {
977 double rawJetPt = rawJetP4.pt();
978 double rawJetAbsEta =
TMath::Abs(rawJetP4.eta());
979 if ( rawJetAbsEta < 4.5 ) {
983 if ( rawJetPt > 20. ) {
986 if ( rawJetAbsEta < 2.5 ) ++numJetsRawPtGt20AbsEtaLt2_5;
987 else if ( rawJetAbsEta < 4.5 ) ++numJetsRawPtGt20AbsEta2_5to4_5;
989 if ( rawJetPt > 30. ) {
992 if ( rawJetAbsEta < 2.5 ) ++numJetsRawPtGt30AbsEtaLt2_5;
993 else if ( rawJetAbsEta < 4.5 ) ++numJetsRawPtGt30AbsEta2_5to4_5;
998 double corrJetPt = corrJetP4.pt();
999 double corrJetAbsEta =
TMath::Abs(corrJetP4.eta());
1000 if ( corrJetAbsEta < 4.5 ) {
1004 if ( corrJetPt > 20. ) {
1006 ++numJetsCorrPtGt20;
1007 if ( corrJetAbsEta < 2.5 ) ++numJetsCorrPtGt20AbsEtaLt2_5;
1008 else if ( corrJetAbsEta < 4.5 ) ++numJetsCorrPtGt20AbsEta2_5to4_5;
1010 if ( corrJetPt > 30. ) {
1012 ++numJetsCorrPtGt30;
1013 if ( corrJetAbsEta < 2.5 ) ++numJetsCorrPtGt30AbsEtaLt2_5;
1014 else if ( corrJetAbsEta < 4.5 ) ++numJetsCorrPtGt30AbsEta2_5to4_5;
1033 int numGlobalMuons = 0;
1034 int numStandAloneMuons = 0;
1036 for ( reco::MuonCollection::const_iterator
muon = muons->begin();
1038 if (
muon->isGlobalMuon() ) ++numGlobalMuons;
1039 if (
muon->isStandAloneMuon() ) ++numStandAloneMuons;
1040 if (
muon->isPFMuon() ) ++numPFMuons;
1048 if ( theVertex->size() >= 1 ) {
1056 for ( reco::VertexCollection::const_iterator vertex = vertices->begin();
1057 vertex != vertices->end(); ++vertex ) {
1065 for ( reco::VertexCollection::const_iterator vertex = verticesWithBS->begin();
1066 vertex != verticesWithBS->end(); ++vertex ) {
1081 genDiTau != genDiTaus->end(); ++genDiTau ) {
1088 bool passesCutsBeforeRotation =
false;
1091 bool passesCutsAfterRotation =
false;
1093 genDiTau != genDiTaus->end(); ++genDiTau ) {
1095 if ( !(genDiTau_composite && genDiTau_composite->
numberOfDaughters() == 2) )
continue;
1098 if ( !(genTau1 && genTau2) )
continue;
1101 passesCutsAfterRotation =
true;
1106 if ( genTauPlus && genTauMinus ) {
1109 ROOT::Math::Boost boost_to_rf(diTauP4_lab.BoostToCM());
1112 if ( (diTauP4_rf.P()*tauPlusP4_rf.P()) > 0. ) {
1113 double cosGjAngle = (diTauP4_rf.px()*tauPlusP4_rf.px() + diTauP4_rf.py()*tauPlusP4_rf.py() + diTauP4_rf.pz()*tauPlusP4_rf.pz())/(diTauP4_rf.P()*tauPlusP4_rf.P());
1114 double gjAngle = TMath::ACos(cosGjAngle);
1118 if ( replacedMuonPlus && genTauPlus && replacedMuonMinus && genTauMinus ) {
1169 for ( reco::GenParticleCollection::const_iterator genParticle = genParticles->begin();
1170 genParticle != genParticles->end(); ++genParticle ) {
1171 if ( genParticle->status() == 1 ) {
1172 int absPdgId =
TMath::Abs(genParticle->pdgId());
1173 if ( absPdgId == 12 || absPdgId == 14 || absPdgId == 16 )
continue;
1174 sumGenParticleP4 += genParticle->p4();
1175 if (
TMath::Abs(genParticle->charge()) > 0.5 ) sumGenParticleP4_charged += genParticle->p4();
1183 double sumEtCaloTowersECAL = 0.;
1185 double sumEtCaloTowersHCAL = 0.;
1187 double sumEtCaloTowersHF = 0.;
1189 double sumEtCaloTowersHO = 0.;
1191 caloTower != caloTowers->end(); ++caloTower ) {
1192 if ( caloTower->energy() != 0. ) {
1193 double emFrac_ecal = caloTower->emEnergy()/caloTower->energy();
1194 double emFrac_hcal = (caloTower->energyInHB() + caloTower->energyInHE())/caloTower->energy();
1195 double emFrac_hf = caloTower->energyInHF()/caloTower->energy();
1196 double emFrac_ho = caloTower->energyInHO()/caloTower->energy();
1197 sumCaloTowerP4_ecal += (emFrac_ecal*caloTower->p4());
1198 sumEtCaloTowersECAL += (emFrac_ecal*caloTower->et());
1199 sumCaloTowerP4_hcal += (emFrac_hcal*caloTower->p4());
1200 sumEtCaloTowersHCAL += (emFrac_hcal*caloTower->et());
1201 sumCaloTowerP4_hf += (emFrac_hf*caloTower->p4());
1202 sumEtCaloTowersHF += (emFrac_hf*caloTower->et());
1203 sumCaloTowerP4_ho += (emFrac_ho*caloTower->p4());
1204 sumEtCaloTowersHO += (emFrac_ho*caloTower->et());
1218 bool genMuonPlus_beforeRad_found =
false;
1220 bool genMuonMinus_beforeRad_found =
false;
1222 bool genMuonPlus_afterRad_found =
false;
1224 bool genMuonMinus_afterRad_found =
false;
1226 findMuons(evt,
srcMuonsBeforeRad_, genMuonPlusP4_beforeRad, genMuonPlus_beforeRad_found, genMuonMinusP4_beforeRad, genMuonMinus_beforeRad_found);
1227 findMuons(evt,
srcMuonsAfterRad_, genMuonPlusP4_afterRad, genMuonPlus_afterRad_found, genMuonMinusP4_afterRad, genMuonMinus_afterRad_found);
1229 bool genMuonPlus_found = (genMuonPlus_beforeRad_found && genMuonPlus_afterRad_found);
1230 bool genMuonMinus_found = (genMuonMinus_beforeRad_found && genMuonMinus_afterRad_found);
1232 if ( genTauPlus && genMuonPlus_found && genTauMinus && genMuonMinus_found ) {
1235 (*muonRadCorrUncertaintyPlotEntry)->fillHistograms(numJetsCorrPtGt30, genMuonPlusP4_beforeRad, genMuonMinusP4_beforeRad, evtWeight, muonRadCorrWeight, muonRadCorrWeightUp, muonRadCorrWeightDown);
1239 (*muonRadCorrUncertaintyPlotEntry)->fillHistograms(numJetsCorrPtGt30, genMuonPlusP4_afterRad, genMuonMinusP4_afterRad, evtWeight, muonRadCorrWeight, muonRadCorrWeightUp, muonRadCorrWeightDown);
1243 (*muonRadCorrUncertaintyPlotEntry)->fillHistograms(numJetsCorrPtGt30, genTauPlus->
p4(), genTauMinus->
p4(), evtWeight, muonRadCorrWeight, muonRadCorrWeightUp, muonRadCorrWeightDown);
1248 <<
" (" << runLumiEventNumbers_to_string(evt) <<
")" << std::endl
1249 <<
" Failed to match muons before and after radiation to embedded tau leptons !!" << std::endl;
1251 if ( genTauPlus )
std::cout <<
"Pt = " << genTauPlus->
pt() <<
", eta = " << genTauPlus->
eta() <<
", phi = " << genTauPlus->
phi() << std::endl;
1253 std::cout <<
"genMuonPlus (before Rad.): ";
1254 if ( genMuonPlus_found )
std::cout <<
"Pt = " << genMuonPlusP4_beforeRad.pt() <<
", eta = " << genMuonPlusP4_beforeRad.eta() <<
", phi = " << genMuonPlusP4_beforeRad.phi() << std::endl;
1257 if ( genTauMinus )
std::cout <<
"Pt = " << genTauMinus->
pt() <<
", eta = " << genTauMinus->
eta() <<
", phi = " << genTauMinus->
phi() << std::endl;
1259 std::cout <<
"genMuonMinus (before Rad.): ";
1260 if ( genMuonMinus_found )
std::cout <<
"Pt = " << genMuonMinusP4_beforeRad.pt() <<
", eta = " << genMuonMinusP4_beforeRad.eta() <<
", phi = " << genMuonMinusP4_beforeRad.phi() << std::endl;
1278 genDiTau != genDiTaus->end(); ++genDiTau ) {
1280 if ( !(genDiTau_composite && genDiTau_composite->
numberOfDaughters() == 2) )
continue;
1287 if ( !(genTau1 && genTau2) )
continue;
1288 std::string genTauDecayMode1 = getGenTauDecayMode(genTau1);
1289 std::string genTauDecayMode2 = getGenTauDecayMode(genTau2);
1291 if ( genTauDecayMode1 ==
"electron" || genTauDecayMode1 ==
"muon" ) genTauDecayMode_ref = genTauDecayMode2;
1292 else if ( genTauDecayMode2 ==
"electron" || genTauDecayMode2 ==
"muon" ) genTauDecayMode_ref = genTauDecayMode1;
1293 for ( std::vector<plotEntryTypeL1ETM*>::iterator l1ETMplotEntry =
l1ETMplotEntries_.begin();
1295 (*l1ETMplotEntry)->fillHistograms(genTauDecayMode_ref, l1MEtP4, genCaloMEtP4, recCaloMEtP4, genDiTau->p4(), muonRadCorrWeight*evtWeight);
1321 std::vector<const reco::Candidate*> replacedMuons;
1322 if ( replacedMuonPlus ) replacedMuons.push_back(replacedMuonPlus);
1323 if ( replacedMuonMinus ) replacedMuons.push_back(replacedMuonMinus);
1324 for ( std::vector<const reco::Candidate*>::const_iterator replacedMuon = replacedMuons.begin();
1325 replacedMuon != replacedMuons.end(); ++replacedMuon ) {
1326 for ( reco::TrackCollection::const_iterator track = tracks->begin();
1327 track != tracks->end(); ++track ) {
1328 if ( track->pt() > 10. ) {
1329 double dR =
deltaR(track->eta(), track->phi(), (*replacedMuon)->eta(), (*replacedMuon)->phi());
1332 <<
" (" << runLumiEventNumbers_to_string(evt) <<
")" << std::endl
1333 <<
" Found track: Pt = " << track->pt() <<
", eta = " << track->eta() <<
", phi = " << track->phi() <<
", charge = " << track->charge() <<
" in direction of"
1334 <<
" a replaced muon: Pt = " << (*replacedMuon)->pt()<<
", eta = " << (*replacedMuon)->eta() <<
", phi = " << (*replacedMuon)->phi() <<
", charge = " << (*replacedMuon)->charge()
1335 <<
" (dR = " << dR <<
"). This may point to a problem in removing all muon signals in the Embedding." << std::endl;
1340 for ( reco::PFCandidateCollection::const_iterator pfCandidate = pfCandidates->begin();
1341 pfCandidate != pfCandidates->end(); ++pfCandidate ) {
1342 if ( pfCandidate->pt() > 10. &&
TMath::Abs(pfCandidate->charge()) > 0.5 ) {
1343 double dR =
deltaR(pfCandidate->eta(), pfCandidate->phi(), (*replacedMuon)->eta(), (*replacedMuon)->phi());
1346 <<
" (" << runLumiEventNumbers_to_string(evt) <<
")" << std::endl
1347 <<
" Found charged PFCandidate: Pt = " << pfCandidate->pt() <<
", eta = " << pfCandidate->eta() <<
", phi = " << pfCandidate->phi() <<
", charge = " << pfCandidate->charge() <<
" in direction of"
1348 <<
" a replaced muon: Pt = " << (*replacedMuon)->pt()<<
", eta = " << (*replacedMuon)->eta() <<
", phi = " << (*replacedMuon)->phi() <<
", charge = " << (*replacedMuon)->charge()
1349 <<
" (dR = " << dR <<
"). This may point to a problem in removing all muon signals in the Embedding." << std::endl;
1354 for ( reco::MuonCollection::const_iterator
muon = muons->begin();
1356 if (
muon->pt() > 10. ) {
1357 double dR =
deltaR(
muon->eta(),
muon->phi(), (*replacedMuon)->eta(), (*replacedMuon)->phi());
1360 <<
" (" << runLumiEventNumbers_to_string(evt) <<
")" << std::endl
1361 <<
" Found track: Pt = " <<
muon->pt() <<
", eta = " <<
muon->eta() <<
", phi = " <<
muon->phi() <<
", charge = " <<
muon->charge() <<
" in direction of"
1362 <<
" a replaced muon: Pt = " << (*replacedMuon)->pt()<<
", eta = " << (*replacedMuon)->eta() <<
", phi = " << (*replacedMuon)->phi() <<
", charge = " << (*replacedMuon)->charge()
1363 <<
" (dR = " << dR <<
"). This may point to a problem in removing all muon signals in the Embedding." << std::endl;
int muonRadCorrUncertainty_maxWarnings_
T getParameter(std::string const &) const
EventNumber_t event() const
MonitorElement * histogramGenLeg2Pt_
std::string genTauDecayMode(const reco::CompositePtrCandidate &c)
edm::InputTag srcGenPFMEt_
std::vector< metL1TriggerEfficiencyType * > metL1TriggerEfficiencies_
void fillHistograms(std::vector< T * > collection, int numJets, const edm::Event &evt, double evtWeight)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
MonitorElement * histogramGenLeg1XforGenLeg2X0_75to1_00_
void setupL1ExtraObjectDistribution(int, int, const edm::ParameterSet &, const std::string &, std::vector< l1ExtraObjectDistributionT< T > * > &)
virtual double energy() const =0
energy
std::vector< plotEntryTypeMuonRadCorrUncertainty * > muonRadCorrUncertaintyPlotEntries_afterRad_
MonitorElement * histogramRecCaloMEtECAL_
MonitorElement * histogramRotationAngleMatrix_
MonitorElement * histogramGenTau1Eta_
MonitorElement * histogramGenDiTauPhi_
edm::InputTag srcRecTracks_
MonitorElement * histogramRecCaloMEtHCAL_
std::vector< leptonEfficiencyT< pat::Electron > * > electronEfficiencies_
MonitorElement * histogramGenLeg1XforGenLeg2X0_50to0_75_
edm::InputTag srcRecPFCandidates_
MonitorElement * histogramEventCounter_
void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * histogramGenDiTauEta_
edm::InputTag srcGenFilterInfo_
math::XYZVector Vector
point in the space
MonitorElement * histogramNumGlobalMuons_
edm::InputTag srcRecLeg2_
edm::InputTag srcReplacedMuons_
MonitorElement * histogramRecVertexY_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
edm::InputTag srcGenParticles_
edm::InputTag srcTheRecVertex_
MonitorElement * histogramTheRecVertexX_
double phiLabFromLabMomenta(const reco::Candidate::LorentzVector &motherP4, const reco::Candidate::LorentzVector &visP4)
MonitorElement * histogramGenDiTauDecayAngle_
unsigned int EventNumber_t
MonitorElement * histogramNumJetsCorrPtGt30AbsEta2_5to4_5_
MonitorElement * histogramGenLeg2Mt_
virtual float eta() const =0
momentum pseudorapidity
MonitorElement * histogramGenDeltaPhiLeg1Leg2_
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
#define DEFINE_FWK_MODULE(type)
void bookHistograms(DQMStore &dqmStore)
int muonRadCorrUncertainty_numWarnings_
std::vector< ParameterSet > VParameterSet
std::vector< leptonL1TriggerEfficiencyT1T2< pat::Electron, l1extra::L1EmParticle > * > electronL1TriggerEfficiencies_
double replacedMuonPtThresholdHigh_
MCEmbeddingValidationAnalyzer(const edm::ParameterSet &)
MonitorElement * histogramGenLeg2XforGenLeg1X0_25to0_50_
MonitorElement * histogramNumChargedPFCandsPtGt5_
MonitorElement * histogramTheRecVertexZ_
MonitorElement * histogramNumNeutralPFCandsPtGt30_
edm::InputTag srcGenLeg1_
edm::InputTag srcRecJets_
MonitorElement * histogramGenLeg1Pt_
MonitorElement * histogramPhiRotLegMinus_
MonitorElement * histogramRecLeg1X_
MonitorElement * histogramNumNeutralPFCandsPtGt10_
MonitorElement * histogramGenTau2Pt_
std::vector< CaloTower >::const_iterator const_iterator
bool exists(std::string const ¶meterName) const
checks if a parameter exists
MonitorElement * histogramGenVisDiTauEta_
edm::LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * histogramGenTau1Phi_
MonitorElement * histogramCorrJetPtAbsEta2_5to4_5_
virtual float phi() const =0
momentum azimuthal angle
MonitorElement * histogramRotationLegPlusDeltaR_
void setupMEtL1TriggerEfficiency(int, int, const edm::ParameterSet &, const std::string &, std::vector< metL1TriggerEfficiencyType * > &)
MonitorElement * histogramRecVertexZ_
MonitorElement * histogramGenLeg1Eta_
std::vector< plotEntryTypeL1ETM * > l1ETMplotEntries_
MonitorElement * histogramPhiRotLegPlus_
void bookHistograms(DQMStore &dqmStore)
MonitorElement * histogramGenDiTauMass_
MonitorElement * histogramWarning_recMuonNearReplacedMuon_
MonitorElement * histogramGenLeg2Eta_
MonitorElement * histogramRecLeg2PFMt_
std::vector< tauDistributionExtra * > tauDistributionsExtra_
edm::InputTag srcMuonRadCorrWeightDown_
MonitorElement * histogramRotationLegMinusDeltaR_
MonitorElement * histogramRawJetPtAbsEta2_5to4_5_
unsigned int LuminosityBlockNumber_t
virtual size_type numberOfDaughters() const
number of daughters
MonitorElement * histogramNumChargedPFCandsPtGt10_
MonitorElement * histogramGenLeg1XforGenLeg2X0_25to0_50_
std::vector< plotEntryTypeMuonRadCorrUncertainty * > muonRadCorrUncertaintyPlotEntries_afterRadAndCorr_
std::vector< leptonDistributionT< pat::Electron > * > electronDistributions_
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
double replacedMuonPtThresholdLow_
MonitorElement * histogramNumRecVertices_
edm::InputTag srcRecMuons_
edm::View< reco::Candidate > CandidateView
MonitorElement * histogramGenLeg1XforGenLeg2X0_00to0_25_
std::string dqmDirectory_
MonitorElement * histogramRecVisDiTauPt_
virtual bool hasMasterClone() const =0
MonitorElement * histogramGenVisDiTauPhi_
MonitorElement * histogramCorrJetEtaPtGt20_
MonitorElement * histogramRecLeg1PFMt_
virtual float pt() const =0
transverse momentum
std::vector< edm::InputTag > vInputTag
MonitorElement * histogramNumJetsRawPtGt30AbsEtaLt2_5_
reco::Candidate::Vector compCrossProduct(const reco::Candidate::Vector &p1, const reco::Candidate::Vector &p2)
MonitorElement * histogramBeamSpotY_
edm::InputTag srcRecVertices_
void bookHistograms(std::vector< T * > collection, DQMStore &dqmStore)
MonitorElement * histogramRecVertexWithBSx_
void setupLeptonL1TriggerEfficiency(int, int, const edm::ParameterSet &, const std::string &, std::vector< leptonL1TriggerEfficiencyT1T2< T1, T2 > * > &)
MonitorElement * histogramGenFilterEfficiency_
MonitorElement * histogramRecVertexX_
MonitorElement * histogramRecCaloSumEtHO_
std::vector< leptonEfficiencyT< reco::GsfElectron > * > gsfElectronEfficiencies_
MonitorElement * histogramSumGenParticlePt_charged_
MonitorElement * histogramNumJetsCorrPtGt20_
edm::EDGetTokenT< EcalRecHitCollection > eeRHToken_
vInputTag srcOtherWeights_
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
MonitorElement * histogramGenTau2Phi_
MonitorElement * histogramRecVisDeltaPhiLeg1Leg2_
edm::View< reco::MET > METView
MonitorElement * histogramNumTracksPtGt30_
edm::InputTag srcRecPFMEt_
MonitorElement * histogramRawJetEtaPtGt30_
MonitorElement * histogramNumStandAloneMuons_
reco::Candidate::Vector normalize(const reco::Candidate::Vector &p)
edm::InputTag srcRecLeg1_
math::XYZPoint Point
point in the space
MonitorElement * histogramGenVisDiTauPt_
MonitorElement * histogramNumNeutralPFCandsPtGt5_
MonitorElement * histogramNumChargedPFCandsPtGt40_
MonitorElement * histogramCorrJetPt_
MonitorElement * histogramNumJetsRawPtGt20AbsEtaLt2_5_
virtual int charge() const =0
electric charge
edm::InputTag srcMuonsBeforeRad_
std::vector< leptonEfficiencyT< pat::Muon > * > muonEfficiencies_
MonitorElement * histogramNumJetsCorrPtGt20AbsEta2_5to4_5_
MonitorElement * histogramRawJetPt_
MonitorElement * histogramNumJetsRawPtGt30AbsEta2_5to4_5_
std::string dqmDirectory_full(const std::string &dqmSubDirectory)
edm::InputTag srcCaloTowers_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * histogramGenTau1Pt_
std::vector< plotEntryTypeEvtWeight * > evtWeightPlotEntries_
MonitorElement * histogramRawJetPtAbsEtaLt2_5_
MonitorElement * histogramWarning_recPFCandNearReplacedMuon_
std::vector< l1ExtraObjectDistributionT< l1extra::L1JetParticle > * > l1CentralJetDistributions_
double compScalarProduct(const reco::Candidate::Vector &p1, const reco::Candidate::Vector &p2)
MonitorElement * histogramRecVisDiTauMass_
double deltaR(double eta1, double eta2, double phi1, double phi2)
edm::InputTag srcGenCaloMEt_
std::vector< plotEntryTypeMuonRadCorrUncertainty * > muonRadCorrUncertaintyPlotEntries_beforeRad_
MonitorElement * histogramRecLeg2X_
MonitorElement * histogramNumChargedPFCandsPtGt30_
MonitorElement * histogramGenVisDiTauMass_
MonitorElement * histogramRecVisDiTauPhi_
MonitorElement * histogramNumJetsCorrPtGt20AbsEtaLt2_5_
MonitorElement * histogramGenCaloMEt_
std::vector< l1ExtraObjectDistributionT< l1extra::L1JetParticle > * > l1TauDistributions_
MonitorElement * histogramGenLeg2Phi_
std::vector< metDistributionType * > metDistributions_
MonitorElement * histogramNumJetsRawPtGt20AbsEta2_5to4_5_
MonitorElement * histogramNumJetsRawPtGt20_
edm::InputTag srcMuonRadCorrWeight_
virtual const Candidate * daughter(size_type) const
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
MonitorElement * histogramRecVisDiTauEta_
MonitorElement * histogramRecVertexWithBSy_
void setupLeptonDistribution(int, int, const edm::ParameterSet &, const std::string &, std::vector< leptonDistributionT< T > * > &)
MonitorElement * histogramGenLeg1X_
MonitorElement * histogramGenLeg2XforGenLeg1X0_00to0_25_
MonitorElement * histogramNumJetsCorrPtGt30_
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void cleanCollection(std::vector< T * > collection)
MonitorElement * histogramNumJetsRawPtGt30_
MonitorElement * histogramGenLeg1Phi_
edm::InputTag srcGenLeg2_
MonitorElement * histogramNumTracksPtGt20_
MonitorElement * histogramNumTracksPtGt40_
MonitorElement * histogramNumNeutralPFCandsPtGt20_
void setupMEtDistribution(int, int, const edm::ParameterSet &, const std::string &, std::vector< metDistributionType * > &)
edm::InputTag srcGenDiTaus_
MonitorElement * histogramNumRecVerticesWithBS_
std::vector< leptonL1TriggerEfficiencyT1T2< pat::Muon, l1extra::L1MuonParticle > * > muonL1TriggerEfficiencies_
MonitorElement * histogramRecCaloSumEtHCAL_
void setupTauDistributionExtra(int, int, const edm::ParameterSet &, const std::string &, std::vector< tauDistributionExtra * > &)
edm::EDGetTokenT< EcalRecHitCollection > ebRHToken_
void setupElectronDistributionExtra(int, int, const edm::ParameterSet &, const std::string &, std::vector< electronDistributionExtra * > &)
T get() const
get a component
MonitorElement * histogramRecVertexWithBSz_
MonitorElement * histogramWarning_recTrackNearReplacedMuon_
std::vector< l1ExtraObjectDistributionT< l1extra::L1EmParticle > * > l1ElectronDistributions_
std::vector< l1ExtraObjectDistributionT< l1extra::L1MuonParticle > * > l1MuonDistributions_
MonitorElement * histogramGenLeg2XforGenLeg1X0_50to0_75_
std::vector< leptonDistributionT< pat::Muon > * > muonDistributions_
edm::InputTag srcMuonRadCorrWeightUp_
void findMuons(const edm::Event &, const edm::InputTag &, reco::Candidate::LorentzVector &, bool &, reco::Candidate::LorentzVector &, bool &)
MonitorElement * histogramGenLeg2XforGenLeg1X0_75to1_00_
MonitorElement * histogramNumPFMuons_
std::vector< reco::CandidateBaseRef > getSelMuons(const edm::Event &, const edm::InputTag &)
MonitorElement * histogramGenLeg1Mt_
MonitorElement * histogramGenPFMEt_
MonitorElement * histogramCorrJetEtaPtGt30_
MonitorElement * histogramNumTracksPtGt5_
MonitorElement * histogramRecCaloSumEtECAL_
void bookHistograms(DQMStore &dqmStore)
edm::InputTag srcBeamSpot_
MonitorElement * histogramBeamSpotX_
std::vector< electronDistributionExtra * > electronDistributionsExtra_
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
MonitorElement * histogramTheRecVertexY_
edm::InputTag srcRecVerticesWithBS_
MonitorElement * histogramGenLeg2X_
MonitorElement * histogramCorrJetPtAbsEtaLt2_5_
MonitorElement * histogramGenVisDeltaPhiLeg1Leg2_
MonitorElement * histogramGenTau2Eta_
~MCEmbeddingValidationAnalyzer()
math::XYZTLorentzVector LorentzVector
Lorentz vector.
std::vector< leptonEfficiencyT< pat::Tau > * > tauEfficiencies_
edm::InputTag srcMuonsAfterRad_
MonitorElement * histogramRawJetEtaPtGt20_
MonitorElement * histogramGenDiTauPt_
MonitorElement * histogramSumGenParticlePt_
MonitorElement * histogramRecCaloMEtHF_
std::vector< l1ExtraObjectDistributionT< l1extra::L1JetParticle > * > l1ForwardJetDistributions_
void setupLeptonEfficiency(int, int, const edm::ParameterSet &, const std::string &, std::vector< leptonEfficiencyT< T > * > &)
MonitorElement * histogramNumTracksPtGt10_
void setCurrentFolder(const std::string &fullpath)
MonitorElement * histogramNumNeutralPFCandsPtGt40_
MonitorElement * histogramNumJetsCorrPtGt30AbsEtaLt2_5_
MonitorElement * histogramNumChargedPFCandsPtGt20_
edm::InputTag srcRecCaloMEt_
MonitorElement * histogramRecCaloSumEtHF_
MonitorElement * histogramRecCaloMEtHO_
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
virtual const CandidateBaseRef & masterClone() const =0
std::vector< leptonDistributionT< pat::Tau > * > tauDistributions_