20 fName_ =
pset.getParameter<
string>(
"analyzerName");
21 prescaleFactor_ =
pset.getUntrackedParameter<
int>(
"prescaleFactor", 1);
23 photon_token_ = consumes<vector<reco::Photon> >(
pset.getParameter<
edm::InputTag>(
"phoProducer"));
24 barrelRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit> > >(
26 PhotonIDLoose_token_ = consumes<edm::ValueMap<bool> >(
pset.getParameter<
edm::InputTag>(
"photonIDLoose"));
27 PhotonIDTight_token_ = consumes<edm::ValueMap<bool> >(
pset.getParameter<
edm::InputTag>(
"photonIDTight"));
28 endcapRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit> > >(
30 triggerEvent_token_ = consumes<trigger::TriggerEvent>(
pset.getParameter<
edm::InputTag>(
"triggerEvent"));
31 offline_pvToken_ = consumes<reco::VertexCollection>(
34 minPhoEtCut_ =
pset.getParameter<
double>(
"minPhoEtCut");
35 photonMaxEta_ =
pset.getParameter<
double>(
"maxPhoEta");
36 invMassEtCut_ =
pset.getParameter<
double>(
"invMassEtCut");
37 cutStep_ =
pset.getParameter<
double>(
"cutStep");
38 numberOfSteps_ =
pset.getParameter<
int>(
"numberOfSteps");
39 useBinning_ =
pset.getParameter<
bool>(
"useBinning");
40 useTriggerFiltering_ =
pset.getParameter<
bool>(
"useTriggerFiltering");
41 minimalSetOfHistos_ =
pset.getParameter<
bool>(
"minimalSetOfHistos");
42 excludeBkgHistos_ =
pset.getParameter<
bool>(
"excludeBkgHistos");
43 standAlone_ =
pset.getParameter<
bool>(
"standAlone");
44 isolationStrength_ =
pset.getParameter<
int>(
"isolationStrength");
45 isHeavyIon_ =
pset.getUntrackedParameter<
bool>(
"isHeavyIon",
false);
47 histo_index_photons_ = 0;
48 histo_index_conversions_ = 0;
49 histo_index_efficiency_ = 0;
50 histo_index_invMass_ = 0;
55 parts_.push_back(
"AllEcal");
56 parts_.push_back(
"Barrel");
57 parts_.push_back(
"Endcaps");
59 types_.push_back(
"All");
60 types_.push_back(
"GoodCandidate");
61 if (!excludeBkgHistos_) {
62 types_.push_back(
"Background");
66 etaBin_ =
pset.getParameter<
int>(
"etaBin");
67 etaMin_ =
pset.getParameter<
double>(
"etaMin");
68 etaMax_ =
pset.getParameter<
double>(
"etaMax");
70 etBin_ =
pset.getParameter<
int>(
"etBin");
71 etMin_ =
pset.getParameter<
double>(
"etMin");
72 etMax_ =
pset.getParameter<
double>(
"etMax");
74 phiBin_ =
pset.getParameter<
int>(
"phiBin");
75 phiMin_ =
pset.getParameter<
double>(
"phiMin");
76 phiMax_ =
pset.getParameter<
double>(
"phiMax");
78 eBin_ =
pset.getParameter<
int>(
"eBin");
79 eMin_ =
pset.getParameter<
double>(
"eMin");
80 eMax_ =
pset.getParameter<
double>(
"eMax");
82 numberBin_ =
pset.getParameter<
int>(
"numberBin");
83 numberMin_ =
pset.getParameter<
double>(
"numberMin");
84 numberMax_ =
pset.getParameter<
double>(
"numberMax");
86 r9Bin_ =
pset.getParameter<
int>(
"r9Bin");
87 r9Min_ =
pset.getParameter<
double>(
"r9Min");
88 r9Max_ =
pset.getParameter<
double>(
"r9Max");
90 sigmaIetaBin_ =
pset.getParameter<
int>(
"sigmaIetaBin");
91 sigmaIetaMin_ =
pset.getParameter<
double>(
"sigmaIetaMin");
92 sigmaIetaMax_ =
pset.getParameter<
double>(
"sigmaIetaMax");
94 sumBin_ =
pset.getParameter<
int>(
"sumBin");
95 sumMin_ =
pset.getParameter<
double>(
"sumMin");
96 sumMax_ =
pset.getParameter<
double>(
"sumMax");
98 hOverEBin_ =
pset.getParameter<
int>(
"hOverEBin");
99 hOverEMin_ =
pset.getParameter<
double>(
"hOverEMin");
100 hOverEMax_ =
pset.getParameter<
double>(
"hOverEMax");
102 eOverPBin_ =
pset.getParameter<
int>(
"eOverPBin");
103 eOverPMin_ =
pset.getParameter<
double>(
"eOverPMin");
104 eOverPMax_ =
pset.getParameter<
double>(
"eOverPMax");
106 dPhiTracksBin_ =
pset.getParameter<
int>(
"dPhiTracksBin");
107 dPhiTracksMin_ =
pset.getParameter<
double>(
"dPhiTracksMin");
108 dPhiTracksMax_ =
pset.getParameter<
double>(
"dPhiTracksMax");
110 dEtaTracksBin_ =
pset.getParameter<
int>(
"dEtaTracksBin");
111 dEtaTracksMin_ =
pset.getParameter<
double>(
"dEtaTracksMin");
112 dEtaTracksMax_ =
pset.getParameter<
double>(
"dEtaTracksMax");
114 chi2Bin_ =
pset.getParameter<
int>(
"chi2Bin");
115 chi2Min_ =
pset.getParameter<
double>(
"chi2Min");
116 chi2Max_ =
pset.getParameter<
double>(
"chi2Max");
118 zBin_ =
pset.getParameter<
int>(
"zBin");
119 zMin_ =
pset.getParameter<
double>(
"zMin");
120 zMax_ =
pset.getParameter<
double>(
"zMax");
122 rBin_ =
pset.getParameter<
int>(
"rBin");
123 rMin_ =
pset.getParameter<
double>(
"rMin");
124 rMax_ =
pset.getParameter<
double>(
"rMax");
126 xBin_ =
pset.getParameter<
int>(
"xBin");
127 xMin_ =
pset.getParameter<
double>(
"xMin");
128 xMax_ =
pset.getParameter<
double>(
"xMax");
130 yBin_ =
pset.getParameter<
int>(
"yBin");
131 yMin_ =
pset.getParameter<
double>(
"yMin");
132 yMax_ =
pset.getParameter<
double>(
"yMax");
134 reducedEtBin_ = etBin_ / 4;
135 reducedEtaBin_ = etaBin_ / 4;
136 reducedR9Bin_ = r9Bin_ / 4;
137 reducedSumBin_ = sumBin_ / 4;
145 bookHistogramsForHistogramCounts(iBooker);
147 bookHistogramsEfficiency(iBooker);
148 bookHistogramsInvMass(iBooker);
149 bookHistogramsPhotons(iBooker);
150 bookHistogramsConversions(iBooker);
152 fillHistogramsForHistogramCounts(iBooker);
158 totalNumberOfHistos_efficiencyFolder = iBooker.
bookInt(
"numberOfHistogramsInEfficiencyFolder");
159 totalNumberOfHistos_invMassFolder = iBooker.
bookInt(
"numberOfHistogramsInInvMassFolder");
160 totalNumberOfHistos_photonsFolder = iBooker.
bookInt(
"numberOfHistogramsInPhotonsFolder");
161 totalNumberOfHistos_conversionsFolder = iBooker.
bookInt(
"numberOfHistogramsInConversionsFolder");
166 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
167 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
168 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
169 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
177 h_phoEta_Loose_ = iBooker.
book1D(
"phoEtaLoose",
"Loose Photon #eta", etaBin_, etaMin_, etaMax_);
178 h_phoEta_Tight_ = iBooker.
book1D(
"phoEtaTight",
"Tight Photon #eta", etaBin_, etaMin_, etaMax_);
180 h_phoEt_Loose_ = iBooker.
book1D(
"phoEtLoose",
"Loose Photon E_{T}", etBin_, etMin_, etMax_);
181 h_phoEt_Tight_ = iBooker.
book1D(
"phoEtTight",
"Tight Photon E_{T}", etBin_, etMin_, etMax_);
183 h_phoEta_preHLT_ = iBooker.
book1D(
"phoEtaPreHLT",
"Photon #eta: before HLT", etaBin_, etaMin_, etaMax_);
184 h_phoEta_postHLT_ = iBooker.
book1D(
"phoEtaPostHLT",
"Photon #eta: after HLT", etaBin_, etaMin_, etaMax_);
185 h_phoEt_preHLT_ = iBooker.
book1D(
"phoEtPreHLT",
"Photon E_{T}: before HLT", etBin_, etMin_, etMax_);
186 h_phoEt_postHLT_ = iBooker.
book1D(
"phoEtPostHLT",
"Photon E_{T}: after HLT", etBin_, etMin_, etMax_);
188 h_convEta_Loose_ = iBooker.
book1D(
"convEtaLoose",
"Converted Loose Photon #eta", etaBin_, etaMin_, etaMax_);
189 h_convEta_Tight_ = iBooker.
book1D(
"convEtaTight",
"Converted Tight Photon #eta", etaBin_, etaMin_, etaMax_);
190 h_convEt_Loose_ = iBooker.
book1D(
"convEtLoose",
"Converted Loose Photon E_{T}", etBin_, etMin_, etMax_);
191 h_convEt_Tight_ = iBooker.
book1D(
"convEtTight",
"Converted Tight Photon E_{T}", etBin_, etMin_, etMax_);
194 iBooker.
book1D(
"phoEtaVertex",
"Converted Photons before valid vertex cut: #eta", etaBin_, etaMin_, etaMax_);
197 vector<MonitorElement*> temp1DVectorEta;
198 vector<MonitorElement*> temp1DVectorPhi;
199 vector<vector<MonitorElement*> > temp2DVectorPhi;
201 for (
int cut = 0;
cut != numberOfSteps_; ++
cut) {
203 currentFolder_.str(
"");
204 currentFolder_ <<
"Egamma/" + fName_ +
"/" << types_[
type] <<
"Photons/Et above " << (
cut + 1) * cutStep_
205 <<
" GeV/Conversions";
208 temp1DVectorEta.push_back(
209 iBooker.
book1D(
"phoConvEtaForEfficiency",
"Converted Photon #eta;#eta", etaBin_, etaMin_, etaMax_));
211 temp1DVectorPhi.push_back(iBooker.
book1D(
212 "phoConvPhiForEfficiency" + parts_[
part],
"Converted Photon #phi;#phi", phiBin_, phiMin_, phiMax_));
214 temp2DVectorPhi.push_back(temp1DVectorPhi);
215 temp1DVectorPhi.clear();
217 h_phoConvEtaForEfficiency_.push_back(temp1DVectorEta);
218 temp1DVectorEta.clear();
219 h_phoConvPhiForEfficiency_.push_back(temp2DVectorPhi);
220 temp2DVectorPhi.clear();
228 h_invMassAllPhotons_ = bookHisto(iBooker,
229 "invMassAllIsolatedPhotons",
230 "Two photon invariant mass: All isolated photons;M (GeV)",
234 h_invMassPhotonsEBarrel_ = bookHisto(iBooker,
235 "invMassIsoPhotonsEBarrel",
236 "Two photon invariant mass: isolated photons in barrel; M (GeV)",
240 h_invMassPhotonsEEndcap_ = bookHisto(iBooker,
241 "invMassIsoPhotonsEEndcap",
242 "Two photon invariant mass: isolated photons in endcap; M (GeV)",
246 h_invMassPhotonsEEndcapEBarrel_ = bookHisto(iBooker,
247 "invMassIsoPhotonsEEndcapEBarrel",
248 "Two photon invariant mass: isolated photons in endcap-barrel; M (GeV)",
253 h_invMassZeroWithTracks_ = bookHisto(
254 iBooker,
"invMassZeroWithTracks",
"Two photon invariant mass: Neither has tracks;M (GeV)", etBin_, etMin_, etMax_);
255 h_invMassOneWithTracks_ = bookHisto(
256 iBooker,
"invMassOneWithTracks",
"Two photon invariant mass: Only one has tracks;M (GeV)", etBin_, etMin_, etMax_);
257 h_invMassTwoWithTracks_ = bookHisto(
258 iBooker,
"invMassTwoWithTracks",
"Two photon invariant mass: Both have tracks;M (GeV)", etBin_, etMin_, etMax_);
260 h_nRecoVtx_ = bookHisto(iBooker,
"nOfflineVtx",
"# of Offline Vertices", 200, -0.5, 199.5);
268 book3DHistoVector(iBooker, h_phoE_,
"1D",
"phoE",
"Energy;E (GeV)", eBin_, eMin_, eMax_);
269 book3DHistoVector(iBooker, h_phoSigmaEoverE_,
"1D",
"phoSigmaEoverE",
"#sigma_{E}/E; #sigma_{E}/E", 100, 0., 0.08);
270 book3DHistoVector(iBooker,
271 p_phoSigmaEoverEvsNVtx_,
273 "phoSigmaEoverEvsNVtx",
274 "#sigma_{E}/E vs NVtx; N_{vtx}; #sigma_{E}/E",
281 book3DHistoVector(iBooker, h_phoEt_,
"1D",
"phoEt",
"E_{T};E_{T} (GeV)", etBin_, etMin_, etMax_);
285 iBooker, h_nPho_,
"1D",
"nPho",
"Number of Photons per Event;# #gamma", numberBin_, numberMin_, numberMax_);
289 book2DHistoVector(iBooker, h_phoEta_,
"1D",
"phoEta",
"#eta;#eta", etaBin_, etaMin_, etaMax_);
290 book3DHistoVector(iBooker, h_phoPhi_,
"1D",
"phoPhi",
"#phi;#phi", phiBin_, phiMin_, phiMax_);
293 book2DHistoVector(iBooker, h_scEta_,
"1D",
"scEta",
"SuperCluster #eta;#eta", etaBin_, etaMin_, etaMax_);
294 book3DHistoVector(iBooker, h_scPhi_,
"1D",
"scPhi",
"SuperCluster #phi;#phi", phiBin_, phiMin_, phiMax_);
298 book3DHistoVector(iBooker, h_r9_,
"1D",
"r9",
"R9;R9", r9Bin_, r9Min_, r9Max_);
300 book2DHistoVector(iBooker,
304 "R9 vs E_{T};E_{T} (GeV);R9",
312 book2DHistoVector(iBooker,
316 "Avg R9 vs E_{T};E_{T} (GeV);R9",
324 book2DHistoVector(iBooker,
328 "R9 vs #eta;#eta;R9",
336 book2DHistoVector(iBooker,
340 "Avg R9 vs #eta;#eta;R9",
349 book3DHistoVector(iBooker,
353 "#sigma_{i#etai#eta};#sigma_{i#etai#eta}",
358 book2DHistoVector(iBooker,
359 h_sigmaIetaIetaVsEta_,
361 "sigmaIetaIetaVsEta2D",
362 "#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",
370 book2DHistoVector(iBooker,
371 p_sigmaIetaIetaVsEta_,
373 "sigmaIetaIetaVsEta",
374 "Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",
384 book2DHistoVector(iBooker,
388 "E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",
396 book2DHistoVector(iBooker,
400 "Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",
408 book2DHistoVector(iBooker,
412 "E1x5 vs #eta;#eta;E1X5 (GeV)",
420 book2DHistoVector(iBooker,
424 "Avg E1x5 vs #eta;#eta;E1X5 (GeV)",
434 book2DHistoVector(iBooker,
438 "E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",
446 book2DHistoVector(iBooker,
450 "Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",
458 book2DHistoVector(iBooker,
462 "E2x5 vs #eta;#eta;E2X5 (GeV)",
470 book2DHistoVector(iBooker,
474 "Avg E2x5 vs #eta;#eta;E2X5 (GeV)",
484 book2DHistoVector(iBooker,
488 "R1x5 vs E_{T};E_{T} (GeV);R1X5",
496 book2DHistoVector(iBooker,
500 "Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",
508 book2DHistoVector(iBooker,
512 "R1x5 vs #eta;#eta;R1X5",
520 book2DHistoVector(iBooker,
524 "Avg R1x5 vs #eta;#eta;R1X5",
534 book2DHistoVector(iBooker,
538 "R2x5 vs E_{T};E_{T} (GeV);R2X5",
546 book2DHistoVector(iBooker,
550 "Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",
558 book2DHistoVector(iBooker,
562 "R2x5 vs #eta;#eta;R2X5",
570 book2DHistoVector(iBooker,
574 "Avg R2x5 vs #eta;#eta;R2X5",
584 book2DHistoVector(iBooker,
585 h_maxEXtalOver3x3VsEt_,
587 "maxEXtalOver3x3VsEt2D",
588 "(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",
596 book2DHistoVector(iBooker,
597 p_maxEXtalOver3x3VsEt_,
599 "maxEXtalOver3x3VsEt",
600 "Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",
608 book2DHistoVector(iBooker,
609 h_maxEXtalOver3x3VsEta_,
611 "maxEXtalOver3x3VsEta2D",
612 "(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",
620 book2DHistoVector(iBooker,
621 p_maxEXtalOver3x3VsEta_,
623 "maxEXtalOver3x3VsEta",
624 "Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",
634 book2DHistoVector(iBooker,
638 "Number Of Tracks in the Solid Iso Cone;# tracks",
643 book2DHistoVector(iBooker,
644 h_nTrackIsolSolidVsEt_,
646 "nIsoTracksSolidVsEt2D",
647 "Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",
655 book2DHistoVector(iBooker,
656 p_nTrackIsolSolidVsEt_,
658 "nIsoTracksSolidVsEt",
659 "Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",
667 book2DHistoVector(iBooker,
668 h_nTrackIsolSolidVsEta_,
670 "nIsoTracksSolidVsEta2D",
671 "Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",
679 book2DHistoVector(iBooker,
680 p_nTrackIsolSolidVsEta_,
682 "nIsoTracksSolidVsEta",
683 "Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",
692 book2DHistoVector(iBooker,
696 "Number Of Tracks in the Hollow Iso Cone;# tracks",
701 book2DHistoVector(iBooker,
702 h_nTrackIsolHollowVsEt_,
704 "nIsoTracksHollowVsEt2D",
705 "Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",
713 book2DHistoVector(iBooker,
714 p_nTrackIsolHollowVsEt_,
716 "nIsoTracksHollowVsEt",
717 "Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",
725 book2DHistoVector(iBooker,
726 h_nTrackIsolHollowVsEta_,
728 "nIsoTracksHollowVsEta2D",
729 "Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",
737 book2DHistoVector(iBooker,
738 p_nTrackIsolHollowVsEta_,
740 "nIsoTracksHollowVsEta",
741 "Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",
750 book2DHistoVector(iBooker,
754 "Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",
759 book2DHistoVector(iBooker,
760 h_trackPtSumSolidVsEt_,
762 "isoPtSumSolidVsEt2D",
763 "Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",
771 book2DHistoVector(iBooker,
772 p_trackPtSumSolidVsEt_,
775 "Avg Track P_{T} Sum in the Solid Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
783 book2DHistoVector(iBooker,
784 h_trackPtSumSolidVsEta_,
786 "isoPtSumSolidVsEta2D",
787 "Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",
795 book2DHistoVector(iBooker,
796 p_trackPtSumSolidVsEta_,
798 "isoPtSumSolidVsEta",
799 "Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",
808 book2DHistoVector(iBooker,
812 "Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",
817 book2DHistoVector(iBooker,
818 h_trackPtSumHollowVsEt_,
820 "isoPtSumHollowVsEt2D",
821 "Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",
829 book2DHistoVector(iBooker,
830 p_trackPtSumHollowVsEt_,
832 "isoPtSumHollowVsEt",
833 "Avg Track P_{T} Sum in the Hollow Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
841 book2DHistoVector(iBooker,
842 h_trackPtSumHollowVsEta_,
844 "isoPtSumHollowVsEta2D",
845 "Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",
853 book2DHistoVector(iBooker,
854 p_trackPtSumHollowVsEta_,
856 "isoPtSumHollowVsEta",
857 "Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",
868 iBooker, h_ecalSum_,
"1D",
"ecalSum",
"Ecal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
869 book2DHistoVector(iBooker,
873 "Ecal Sum in the IsoCone for Barrel;E (GeV)",
877 book2DHistoVector(iBooker,
881 "Ecal Sum in the IsoCone for Endcap;E (GeV)",
886 book2DHistoVector(iBooker,
890 "Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",
898 book3DHistoVector(iBooker,
902 "Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
910 book2DHistoVector(iBooker,
914 "Ecal Sum in the Iso Cone;#eta;E (GeV)",
922 book2DHistoVector(iBooker,
926 "Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",
936 iBooker, h_hcalSum_,
"1D",
"hcalSum",
"Hcal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
937 book2DHistoVector(iBooker,
941 "Hcal Sum in the IsoCone for Barrel;E (GeV)",
945 book2DHistoVector(iBooker,
949 "Hcal Sum in the IsoCone for Endcap;E (GeV)",
954 book2DHistoVector(iBooker,
958 "Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",
966 book3DHistoVector(iBooker,
970 "Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
978 book2DHistoVector(iBooker,
982 "Hcal Sum in the Iso Cone;#eta;E (GeV)",
990 book2DHistoVector(iBooker,
994 "Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",
1003 book3DHistoVector(iBooker, h_hOverE_,
"1D",
"hOverE",
"H/E;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
1004 book2DHistoVector(iBooker,
1008 "Avg H/E vs Et;E_{T} (GeV);H/E",
1015 book2DHistoVector(iBooker,
1019 "Avg H/E vs #eta;#eta;H/E",
1026 book3DHistoVector(iBooker, h_h1OverE_,
"1D",
"h1OverE",
"H/E for Depth 1;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
1027 book3DHistoVector(iBooker, h_h2OverE_,
"1D",
"h2OverE",
"H/E for Depth 2;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
1031 iBooker, h_phoIsoBarrel_,
"1D",
"phoIsoBarrel",
"PF photon iso Barrel;E (GeV)", reducedEtBin_, etMin_, 25.);
1033 iBooker, h_phoIsoEndcap_,
"1D",
"phoIsoEndcap",
"PF photon iso Endcap;E (GeV)", reducedEtBin_, etMin_, 25.);
1034 book2DHistoVector(iBooker,
1038 "PF charged Had iso Barrel;E (GeV)",
1042 book2DHistoVector(iBooker,
1046 "PF charged Had iso Endcap;E (GeV)",
1050 book2DHistoVector(iBooker,
1053 "neutralHadIsoBarrel",
1054 "PF neutral Had iso Barrel;E (GeV)",
1058 book2DHistoVector(iBooker,
1061 "neutralHadIsoEndcap",
1062 "PF neutral Had iso Endcap;E (GeV)",
1069 book2DHistoVector(iBooker,
1070 h_phoEt_BadChannels_,
1073 "Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",
1077 book2DHistoVector(iBooker,
1078 h_phoEta_BadChannels_,
1080 "phoEtaBadChannels",
1081 "Fraction Containing Bad Channels: #eta;#eta",
1085 book2DHistoVector(iBooker,
1086 h_phoPhi_BadChannels_,
1088 "phoPhiBadChannels",
1089 "Fraction Containing Bad Channels: #phi;#phi",
1097 iBooker.
setCurrentFolder(
"Egamma/" + fName_ +
"/AllPhotons/Et Above 0 GeV/Conversions");
1100 book3DHistoVector(iBooker, h_phoConvE_,
"1D",
"phoConvE",
"E;E (GeV)", eBin_, eMin_, eMax_);
1101 book3DHistoVector(iBooker, h_phoConvEt_,
"1D",
"phoConvEt",
"E_{T};E_{T} (GeV)", etBin_, etMin_, etMax_);
1104 book2DHistoVector(iBooker, h_phoConvEta_,
"1D",
"phoConvEta",
"#eta;#eta", etaBin_, etaMin_, etaMax_);
1105 book3DHistoVector(iBooker, h_phoConvPhi_,
"1D",
"phoConvPhi",
"#phi;#phi", phiBin_, phiMin_, phiMax_);
1108 book3DHistoVector(iBooker,
1112 "Number Of Conversions per Event ;# conversions",
1118 book3DHistoVector(iBooker, h_phoConvR9_,
"1D",
"phoConvR9",
"R9;R9", r9Bin_, r9Min_, r9Max_);
1121 book3DHistoVector(iBooker, h_eOverPTracks_,
"1D",
"eOverPTracks",
"E/P;E/P", eOverPBin_, eOverPMin_, eOverPMax_);
1122 book3DHistoVector(iBooker, h_pOverETracks_,
"1D",
"pOverETracks",
"P/E;P/E", eOverPBin_, eOverPMin_, eOverPMax_);
1123 book3DHistoVector(iBooker,
1127 "#Delta#phi of Tracks at Vertex;#Delta#phi",
1131 book3DHistoVector(iBooker,
1132 h_dPhiTracksAtEcal_,
1135 "Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",
1139 book3DHistoVector(iBooker,
1140 h_dEtaTracksAtEcal_,
1143 "#Delta#eta of Tracks at Ecal;#Delta#eta",
1147 book3DHistoVector(iBooker,
1151 "#Deltacot(#theta) of Tracks;#Deltacot(#theta)",
1155 book2DHistoVector(iBooker,
1159 "Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",
1166 book2DHistoVector(iBooker,
1170 "Avg Number of Hits per Track vs #eta;#eta;# hits",
1178 iBooker, h_tkChi2_,
"1D",
"tkChi2",
"#chi^{2} of Track Fitting;#chi^{2}", chi2Bin_, chi2Min_, chi2Max_);
1179 book2DHistoVector(iBooker,
1183 "Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",
1192 book2DHistoVector(iBooker,
1196 "Vertex Position;Z (cm);R (cm)",
1204 iBooker, h_convVtxZEndcap_,
"1D",
"convVtxZEndcap",
"Vertex Position: #eta > 1.5;Z (cm)", zBin_, zMin_, zMax_);
1205 book2DHistoVector(iBooker, h_convVtxZ_,
"1D",
"convVtxZ",
"Vertex Position;Z (cm)", zBin_, zMin_, zMax_);
1206 book2DHistoVector(iBooker, h_convVtxR_,
"1D",
"convVtxR",
"Vertex Position: #eta < 1;R (cm)", rBin_, rMin_, rMax_);
1207 book2DHistoVector(iBooker,
1211 "Vertex Position: #eta < 1;X (cm);Y (cm)",
1218 book2DHistoVector(iBooker,
1222 "#chi^{2} Probability of Vertex Fitting;#chi^{2}",
1232 int histo_index = 0;
1233 stringstream histo_number_stream;
1236 if (iBooker.
pwd().find(
"InvMass") != string::npos) {
1237 histo_index_invMass_++;
1238 histo_index = histo_index_invMass_;
1240 if (iBooker.
pwd().find(
"Efficiencies") != string::npos) {
1241 histo_index_efficiency_++;
1242 histo_index = histo_index_efficiency_;
1245 histo_number_stream <<
"h_";
1246 if (histo_index < 10)
1247 histo_number_stream <<
"0";
1248 histo_number_stream << histo_index;
1254 vector<vector<MonitorElement*> >& temp2DVector,
1264 int histo_index = 0;
1266 vector<MonitorElement*> temp1DVector;
1269 bool conversionPlot =
false;
1270 if (iBooker.
pwd().find(
"Conversions") != string::npos)
1271 conversionPlot =
true;
1272 bool TwoDPlot =
false;
1273 if (
histoName.find(
"2D") != string::npos)
1276 if (conversionPlot) {
1277 histo_index_conversions_++;
1278 histo_index = histo_index_conversions_;
1280 histo_index_photons_++;
1281 histo_index = histo_index_photons_;
1284 stringstream histo_number_stream;
1285 histo_number_stream <<
"h_";
1286 if (histo_index < 10)
1287 histo_number_stream <<
"0";
1288 histo_number_stream << histo_index <<
"_";
1290 for (
int cut = 0;
cut != numberOfSteps_; ++
cut) {
1292 currentFolder_.str(
"");
1293 currentFolder_ <<
"Egamma/" + fName_ +
"/" << types_[
type] <<
"Photons/Et above " << (
cut + 1) * cutStep_
1296 currentFolder_ <<
"/Conversions";
1302 kind =
" Conversions: ";
1304 kind =
" Photons: ";
1306 if (histoType ==
"1D")
1307 temp1DVector.push_back(
1309 else if (histoType ==
"2D") {
1310 if ((TwoDPlot &&
type == 0) || !TwoDPlot) {
1311 temp1DVector.push_back(iBooker.
book2D(
1314 }
else if (histoType ==
"Profile")
1318 cout <<
"bad histoType\n";
1321 temp2DVector.push_back(temp1DVector);
1322 temp1DVector.clear();
1327 vector<
vector<vector<MonitorElement*> > >& temp3DVector,
1337 int histo_index = 0;
1339 vector<MonitorElement*> temp1DVector;
1340 vector<vector<MonitorElement*> > temp2DVector;
1343 bool conversionPlot =
false;
1344 if (iBooker.
pwd().find(
"Conversions") != string::npos)
1345 conversionPlot =
true;
1347 if (conversionPlot) {
1348 histo_index_conversions_++;
1349 histo_index = histo_index_conversions_;
1351 histo_index_photons_++;
1352 histo_index = histo_index_photons_;
1355 stringstream histo_number_stream;
1356 histo_number_stream <<
"h_";
1357 if (histo_index < 10)
1358 histo_number_stream <<
"0";
1359 histo_number_stream << histo_index <<
"_";
1361 for (
int cut = 0;
cut != numberOfSteps_; ++
cut) {
1364 currentFolder_.str(
"");
1365 currentFolder_ <<
"Egamma/" + fName_ +
"/" << types_[
type] <<
"Photons/Et above " << (
cut + 1) * cutStep_
1368 currentFolder_ <<
"/Conversions";
1373 kind =
" Conversions: ";
1375 kind =
" Photons: ";
1377 if (histoType ==
"1D")
1378 temp1DVector.push_back(iBooker.
book1D(histo_number_stream.str() +
histoName + parts_[
part],
1383 else if (histoType ==
"2D")
1384 temp1DVector.push_back(iBooker.
book2D(histo_number_stream.str() +
histoName + parts_[
part],
1392 else if (histoType ==
"Profile")
1403 cout <<
"bad histoType\n";
1405 temp2DVector.push_back(temp1DVector);
1406 temp1DVector.clear();
1408 temp3DVector.push_back(temp2DVector);
1409 temp2DVector.clear();
1416 using namespace edm;
1418 if (nEvt_ % prescaleFactor_)
1421 LogInfo(fName_) <<
"PhotonAnalyzer Analyzing event number: " <<
e.id() <<
" Global Counter " << nEvt_ <<
"\n";
1424 bool validTriggerEvent =
true;
1427 e.getByToken(triggerEvent_token_, triggerEventHandle);
1428 if (!triggerEventHandle.
isValid()) {
1429 edm::LogInfo(fName_) <<
"Error! Can't get the product: triggerEvent_" << endl;
1430 validTriggerEvent =
false;
1437 e.getByToken(photon_token_, photonHandle);
1438 if (!photonHandle.
isValid()) {
1439 edm::LogInfo(fName_) <<
"Error! Can't get the product: photon_token_" << endl;
1447 e.getByToken(PhotonIDLoose_token_, loosePhotonFlag);
1448 if (!loosePhotonFlag.
isValid()) {
1449 edm::LogInfo(fName_) <<
"Error! Can't get the product: PhotonIDLoose_token_" << endl;
1457 e.getByToken(PhotonIDTight_token_, tightPhotonFlag);
1458 if (!tightPhotonFlag.
isValid()) {
1459 edm::LogInfo(fName_) <<
"Error! Can't get the product: PhotonIDTight_token_" << endl;
1467 e.getByToken(offline_pvToken_, vtxH);
1468 h_nRecoVtx_->Fill(
float(vtxH->size()));
1472 int nPho[100][3][3];
1475 for (
unsigned int type = 0;
type != types_.size(); ++
type) {
1476 for (
unsigned int part = 0;
part != parts_.size(); ++
part) {
1482 int nConv[100][3][3];
1485 for (
unsigned int type = 0;
type != types_.size(); ++
type) {
1486 for (
unsigned int part = 0;
part != parts_.size(); ++
part) {
1498 if (
label.find(
"Photon") != string::npos) {
1499 for (
uint filterKeyIndex = 0; filterKeyIndex <
triggerEvent.filterKeys(filterIndex).size();
1511 if (
i != (
Keys.size() - 1)) {
1525 for (
unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
1531 h_phoEta_preHLT_->Fill(aPho->
eta());
1532 h_phoEt_preHLT_->Fill(aPho->
et());
1538 for (vector<int>::const_iterator objectKey =
Keys.begin(); objectKey !=
Keys.end();
1550 if (useTriggerFiltering_)
1555 h_phoEta_postHLT_->Fill(aPho->
eta());
1556 h_phoEt_postHLT_->Fill(aPho->
et());
1560 bool isLoosePhoton(
false), isTightPhoton(
false);
1562 isLoosePhoton =
true;
1565 bool phoIsInBarrel =
false;
1566 bool phoIsInEndcap =
false;
1568 if (fabs(etaPho) < 1.479)
1569 phoIsInBarrel =
true;
1571 phoIsInEndcap =
true;
1581 bool isIsolated =
false;
1582 if (isolationStrength_ == 0)
1583 isIsolated = isLoosePhoton;
1584 if (isolationStrength_ == 1)
1585 isIsolated = isTightPhoton;
1586 if (isolationStrength_ == 2)
1587 isIsolated = photonSelectionSlimmed(aPho);
1592 if (!excludeBkgHistos_ && !isIsolated)
1596 bool validEcalRecHits =
true;
1599 if (phoIsInBarrel) {
1601 e.getByToken(barrelRecHit_token_, ecalRecHitHandle);
1602 if (!ecalRecHitHandle.
isValid()) {
1603 edm::LogError(fName_) <<
"Error! Can't get the product: barrelRecHit_token_";
1604 validEcalRecHits =
false;
1606 }
else if (phoIsInEndcap) {
1608 e.getByToken(endcapRecHit_token_, ecalRecHitHandle);
1609 if (!ecalRecHitHandle.
isValid()) {
1610 edm::LogError(fName_) <<
"Error! Can't get the product: endcapRecHit_token";
1611 validEcalRecHits =
false;
1614 if (validEcalRecHits)
1615 ecalRecHitCollection = *(ecalRecHitHandle.
product());
1620 if (isLoosePhoton) {
1621 h_phoEta_Loose_->Fill(aPho->
eta());
1622 h_phoEt_Loose_->Fill(aPho->
et());
1624 if (isTightPhoton) {
1625 h_phoEta_Tight_->Fill(aPho->
eta());
1626 h_phoEt_Tight_->Fill(aPho->
et());
1629 for (
int cut = 0;
cut != numberOfSteps_; ++
cut) {
1630 double Et = aPho->
et();
1631 bool passesCuts =
false;
1634 if (useBinning_ && Et > (
cut + 1) * cutStep_ && ((Et < (
cut + 2) * cutStep_) | (
cut == numberOfSteps_ - 1))) {
1636 }
else if (!useBinning_ && Et > (
cut + 1) * cutStep_) {
1740 fill3DHistoVector(h_phoSigmaEoverE_,
1747 fill3DHistoVector(p_phoSigmaEoverEvsNVtx_,
1748 float(vtxH->size()),
1758 fill2DHistoVector(h_phoEta_, aPho->
eta(),
cut,
type);
1768 fill2DHistoVector(h_r9VsEta_, aPho->
eta(), aPho->
r9(),
cut,
type);
1769 fill2DHistoVector(p_r9VsEta_, aPho->
eta(), aPho->
r9(),
cut,
type);
1771 fill2DHistoVector(h_r9VsEt_, aPho->
et(), aPho->
r9(),
cut,
type);
1772 fill2DHistoVector(p_r9VsEt_, aPho->
et(), aPho->
r9(),
cut,
type);
1775 fill2DHistoVector(h_e1x5VsEta_, aPho->
eta(), aPho->
e1x5(),
cut,
type);
1776 fill2DHistoVector(p_e1x5VsEta_, aPho->
eta(), aPho->
e1x5(),
cut,
type);
1778 fill2DHistoVector(h_e1x5VsEt_, aPho->
et(), aPho->
e1x5(),
cut,
type);
1779 fill2DHistoVector(p_e1x5VsEt_, aPho->
et(), aPho->
e1x5(),
cut,
type);
1782 fill2DHistoVector(h_e2x5VsEta_, aPho->
eta(), aPho->
e2x5(),
cut,
type);
1783 fill2DHistoVector(p_e2x5VsEta_, aPho->
eta(), aPho->
e2x5(),
cut,
type);
1785 fill2DHistoVector(h_e2x5VsEt_, aPho->
et(), aPho->
e2x5(),
cut,
type);
1786 fill2DHistoVector(p_e2x5VsEt_, aPho->
et(), aPho->
e2x5(),
cut,
type);
1796 fill2DHistoVector(h_r1x5VsEta_, aPho->
eta(), aPho->
r1x5(),
cut,
type);
1797 fill2DHistoVector(p_r1x5VsEta_, aPho->
eta(), aPho->
r1x5(),
cut,
type);
1799 fill2DHistoVector(h_r1x5VsEt_, aPho->
et(), aPho->
r1x5(),
cut,
type);
1800 fill2DHistoVector(p_r1x5VsEt_, aPho->
et(), aPho->
r1x5(),
cut,
type);
1803 fill2DHistoVector(h_r2x5VsEta_, aPho->
eta(), aPho->
r2x5(),
cut,
type);
1804 fill2DHistoVector(p_r2x5VsEta_, aPho->
eta(), aPho->
r2x5(),
cut,
type);
1806 fill2DHistoVector(h_r2x5VsEt_, aPho->
et(), aPho->
r2x5(),
cut,
type);
1807 fill2DHistoVector(p_r2x5VsEt_, aPho->
et(), aPho->
r2x5(),
cut,
type);
1815 bool atLeastOneDeadChannel =
false;
1819 for (
vector<pair<DetId, float> >::const_iterator rhIt = (*bcIt)->hitsAndFractions().begin();
1820 rhIt != (*bcIt)->hitsAndFractions().end();
1824 it != ecalRecHitCollection.
end();
1826 if (rhIt->first == (*it).id()) {
1827 if ((*it).recoFlag() == 9) {
1828 atLeastOneDeadChannel =
true;
1835 if (atLeastOneDeadChannel) {
1836 fill2DHistoVector(h_phoPhi_BadChannels_, aPho->
phi(),
cut,
type);
1837 fill2DHistoVector(h_phoEta_BadChannels_, aPho->
eta(),
cut,
type);
1838 fill2DHistoVector(h_phoEt_BadChannels_, aPho->
et(),
cut,
type);
1852 for (
unsigned int iConv = 0; iConv <
conversions.size(); iConv++) {
1855 if (aConv->nTracks() < 2)
1860 h_phoEta_Vertex_->Fill(aConv->refittedPairMomentum().eta());
1862 if (!(aConv->conversionVertex().isValid()))
1865 float chi2Prob =
ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
1867 if (chi2Prob < 0.0005)
1870 fill2DHistoVector(h_vertexChi2Prob_, chi2Prob,
cut,
type);
1873 fill3DHistoVector(h_phoConvEt_, aPho->
et(),
cut,
type,
part);
1874 fill3DHistoVector(h_phoConvR9_, aPho->
r9(),
cut,
type,
part);
1876 if (
cut == 0 && isLoosePhoton) {
1877 h_convEta_Loose_->Fill(aPho->
eta());
1878 h_convEt_Loose_->Fill(aPho->
et());
1880 if (
cut == 0 && isTightPhoton) {
1881 h_convEta_Tight_->Fill(aPho->
eta());
1882 h_convEt_Tight_->Fill(aPho->
et());
1885 fill2DHistoVector(h_phoConvEta_, aConv->refittedPairMomentum().eta(),
cut,
type);
1886 fill3DHistoVector(h_phoConvPhi_, aConv->refittedPairMomentum().phi(),
cut,
type,
part);
1889 fill2DHistoVector(h_phoConvEtaForEfficiency_, aPho->
eta(),
cut,
type);
1890 fill3DHistoVector(h_phoConvPhiForEfficiency_, aPho->
phi(),
cut,
type,
part);
1893 double convR =
sqrt(aConv->conversionVertex().position().perp2());
1894 double scalar = aConv->conversionVertex().position().x() * aConv->refittedPairMomentum().x() +
1895 aConv->conversionVertex().position().y() * aConv->refittedPairMomentum().y();
1899 fill2DHistoVector(h_convVtxRvsZ_,
1900 aConv->conversionVertex().position().z(),
1904 fill2DHistoVector(h_convVtxZ_, aConv->conversionVertex().position().z(),
cut,
type);
1906 if (fabs(aPho->
eta()) > 1.5) {
1907 fill2DHistoVector(h_convVtxZEndcap_, aConv->conversionVertex().position().z(),
cut,
type);
1908 }
else if (fabs(aPho->
eta()) < 1) {
1909 fill2DHistoVector(h_convVtxR_, convR,
cut,
type);
1910 fill2DHistoVector(h_convVtxYvsX_,
1911 aConv->conversionVertex().position().x(),
1912 aConv->conversionVertex().position().y(),
1917 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
1919 for (
unsigned int i = 0;
i <
tracks.size();
i++) {
1921 fill2DHistoVector(p_tkChi2VsEta_, aPho->
eta(),
tracks[
i]->normalizedChi2(),
cut,
type);
1922 fill2DHistoVector(p_dCotTracksVsEta_, aPho->
eta(), aConv->pairCotThetaSeparation(),
cut,
type);
1928 float DPhiTracksAtVtx = -99;
1929 float dPhiTracksAtEcal = -99;
1930 float dEtaTracksAtEcal = -99;
1932 float phiTk1 = aConv->tracksPin()[0].phi();
1933 float phiTk2 = aConv->tracksPin()[1].phi();
1934 DPhiTracksAtVtx = phiTk1 - phiTk2;
1935 DPhiTracksAtVtx = phiNormalization(DPhiTracksAtVtx);
1937 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].
isNonnull() &&
1938 aConv->bcMatchingWithTracks()[1].
isNonnull()) {
1939 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
1940 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
1941 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
1942 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
1944 recoPhi1 = phiNormalization(recoPhi1);
1945 recoPhi2 = phiNormalization(recoPhi2);
1947 dPhiTracksAtEcal = recoPhi1 - recoPhi2;
1948 dPhiTracksAtEcal = phiNormalization(dPhiTracksAtEcal);
1949 dEtaTracksAtEcal = recoEta1 - recoEta2;
1952 fill3DHistoVector(h_dPhiTracksAtVtx_, DPhiTracksAtVtx,
cut,
type,
part);
1953 fill3DHistoVector(h_dPhiTracksAtEcal_, fabs(dPhiTracksAtEcal),
cut,
type,
part);
1954 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,
cut,
type,
part);
1955 fill3DHistoVector(h_eOverPTracks_, aConv->EoverPrefittedTracks(),
cut,
type,
part);
1956 fill3DHistoVector(h_pOverETracks_, 1. / aConv->EoverPrefittedTracks(),
cut,
type,
part);
1957 fill3DHistoVector(h_dCotTracks_, aConv->pairCotThetaSeparation(),
cut,
type,
part);
1964 if (isIsolated && aPho->
et() >= invMassEtCut_) {
1965 for (
unsigned int iPho2 = iPho + 1; iPho2 < photonHandle->size(); iPho2++) {
1973 bool isTightPhoton2(
false), isLoosePhoton2(
false);
1975 isLoosePhoton2 =
true;
1982 bool isIsolated2 =
false;
1983 if (isolationStrength_ == 0)
1984 isIsolated2 = isLoosePhoton2;
1985 if (isolationStrength_ == 1)
1986 isIsolated2 = isTightPhoton2;
1987 if (isolationStrength_ == 2)
1988 isIsolated2 = photonSelectionSlimmed(aPho2);
1993 if (isIsolated2 && aPho2->
et() >= invMassEtCut_) {
1995 float gamgamMass2 = p12.Dot(p12);
1997 h_invMassAllPhotons_->Fill(
sqrt(gamgamMass2));
1998 if (aPho->
isEB() && aPho2->
isEB()) {
1999 h_invMassPhotonsEBarrel_->Fill(
sqrt(gamgamMass2));
2000 }
else if (aPho->
isEE() && aPho2->
isEE()) {
2001 h_invMassPhotonsEEndcap_->Fill(
sqrt(gamgamMass2));
2003 h_invMassPhotonsEEndcapEBarrel_->Fill(
sqrt(gamgamMass2));
2007 if (!conversions2.
empty() && conversions2[0]->nTracks() >= 2)
2008 h_invMassTwoWithTracks_->Fill(
sqrt(gamgamMass2));
2010 h_invMassOneWithTracks_->Fill(
sqrt(gamgamMass2));
2011 }
else if (!conversions2.
empty() && conversions2[0]->nTracks() >= 2)
2012 h_invMassOneWithTracks_->Fill(
sqrt(gamgamMass2));
2014 h_invMassZeroWithTracks_->Fill(
sqrt(gamgamMass2));
2021 for (
int cut = 0;
cut != numberOfSteps_; ++
cut) {
2034 const float PI = 3.1415927;
2048 vector<vector<MonitorElement*> >& histoVector,
double x,
double y,
int cut,
int type) {
2049 histoVector[
cut][0]->Fill(x, y);
2050 if (histoVector[
cut].
size() > 1)
2051 histoVector[
cut][
type]->Fill(x, y);
2055 histoVector[
cut][0]->Fill(x);
2056 histoVector[
cut][
type]->Fill(x);
2061 histoVector[
cut][0][0]->Fill(x);
2062 histoVector[
cut][0][
part]->Fill(x);
2063 histoVector[
cut][
type][0]->Fill(x);
2069 histoVector[
cut][0][0]->Fill(x, y);
2070 histoVector[
cut][0][
part]->Fill(x, y);
2071 histoVector[
cut][
type][0]->Fill(x, y);
2077 if (pho->
pt() < minPhoEtCut_)
2079 if (fabs(pho->
eta()) > photonMaxEta_)
2087 if (pho->
r9() <= 0.9) {
2093 if (EtCorrHcalIso > 4.0)
2095 if (EtCorrTrkIso > 4.0)
2105 if (EtCorrHcalIso > 50.0)
2107 if (EtCorrTrkIso > 50.0)
2118 if (pho->
pt() < minPhoEtCut_)
2120 if (fabs(pho->
eta()) > photonMaxEta_)
bool photonSelection(const reco::Photon *p)
void fill3DHistoVector(std::vector< std::vector< std::vector< MonitorElement *> > > &histoVector, double x, int cut, int type, int part)
bool empty() const
Is the RefVector empty.
void bookHistogramsPhotons(DQMStore::IBooker &)
float hcalTowerSumEtConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
double pt() const final
transverse momentum
The single EDProduct to be saved for each event (AOD case)
reco::ConversionRefVector conversions() const
vector of references to Conversion's
virtual void setCurrentFolder(std::string const &fullpath)
float ecalRecHitSumEtConeDR04() const
virtual std::string pwd()
T const * product() const
std::vector< EcalRecHit >::const_iterator const_iterator
void book2DHistoVector(DQMStore::IBooker &, std::vector< std::vector< MonitorElement *> > &toFill, std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
bool isNonnull() const
Checks for non-null.
float e1x5() const
Shower shape variables.
float maxEnergyXtal() const
Log< level::Error, false > LogError
void bookHistogramsConversions(DQMStore::IBooker &)
MonitorElement * bookHisto(DQMStore::IBooker &, std::string histoName, std::string title, int bin, double min, double max)
P4type getCandidateP4type() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
float trkSumPtSolidConeDR04() const
void fillHistogramsForHistogramCounts(DQMStore::IBooker &)
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float hcalTowerSumEtConeDR04(int depth=0) const
void analyze(const edm::Event &, const edm::EventSetup &) override
float sigmaIetaIeta() const
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
float getCorrectedEnergyError(P4type type) const
float ChiSquaredProbability(double chiSquared, double nrDOF)
const_iterator begin() const
float trkSumPtHollowConeDR03() const
void bookHistogramsInvMass(DQMStore::IBooker &)
float phiNormalization(float &a)
float hadTowOverEm(int depth=0) const
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const_iterator end() const
Log< level::Info, false > LogInfo
int nTrkSolidConeDR04() const
float trkSumPtHollowConeDR04() const
float hadronicOverEm(int depth=0) const
bool photonSelectionSlimmed(const reco::Photon *p)
auto const & tracks
cannot be loose
std::vector< size_type > Keys
std::vector< Photon > PhotonCollection
collectin of Photon objects
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
bool hasConversionTracks() const
Bool flagging photons with a vector of refereces to conversions with size >0.
MonitorElement * bookInt(TString const &name, FUNC onbooking=NOOP())
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
double et() const final
transverse energy
void bookHistogramsForHistogramCounts(DQMStore::IBooker &)
void fill2DHistoVector(std::vector< std::vector< MonitorElement *> > &histoVector, double x, int cut, int type)
const LorentzVector & p4(P4type type) const
void bookHistogramsEfficiency(DQMStore::IBooker &)
int nTrkHollowConeDR04() const
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
~PhotonAnalyzer() override
double phi() const final
momentum azimuthal angle
float neutralHadronIso() const
PhotonAnalyzer(const edm::ParameterSet &)
bool isEBEEGap() const
true if photon is in boundary between EB and EE
void book3DHistoVector(DQMStore::IBooker &, std::vector< std::vector< std::vector< MonitorElement *> > > &toFill, std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
double scalar(const CLHEP::HepGenMatrix &m)
Return the matrix as a scalar. Raise an assertion if the matris is not .
double energy() const final
energy
double eta() const final
momentum pseudorapidity