26 barrelRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit,edm::StrictWeakOrdering<EcalRecHit> > >(pset.
getParameter<
edm::InputTag>(
"barrelRecHitProducer"));
29 endcapRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit,edm::StrictWeakOrdering<EcalRecHit> > >(pset.
getParameter<
edm::InputTag>(
"endcapRecHitProducer"));
35 invMassEtCut_ = pset.
getParameter<
double>(
"invMassEtCut");
37 numberOfSteps_ = pset.
getParameter<
int>(
"numberOfSteps");
39 useTriggerFiltering_ = pset.
getParameter<
bool>(
"useTriggerFiltering");
40 minimalSetOfHistos_ = pset.
getParameter<
bool>(
"minimalSetOfHistos");
41 excludeBkgHistos_ = pset.
getParameter<
bool>(
"excludeBkgHistos");
43 isolationStrength_ = pset.
getParameter<
int>(
"isolationStrength");
46 histo_index_photons_ = 0;
47 histo_index_conversions_ = 0;
48 histo_index_efficiency_ = 0;
49 histo_index_invMass_ = 0;
54 parts_.push_back(
"AllEcal");
55 parts_.push_back(
"Barrel");
56 parts_.push_back(
"Endcaps");
58 types_.push_back(
"All");
59 types_.push_back(
"GoodCandidate");
60 if (!excludeBkgHistos_)
62 types_.push_back(
"Background");
91 sigmaIetaMin_ = pset.
getParameter<
double>(
"sigmaIetaMin");
92 sigmaIetaMax_ = pset.
getParameter<
double>(
"sigmaIetaMax");
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");
134 reducedEtBin_ = etBin_/4;
135 reducedEtaBin_ = etaBin_/4;
136 reducedR9Bin_ = r9Bin_/4;
137 reducedSumBin_ = sumBin_/4;
148 bookHistogramsForHistogramCounts(iBooker);
150 bookHistogramsEfficiency(iBooker);
151 bookHistogramsInvMass(iBooker);
152 bookHistogramsPhotons(iBooker);
153 bookHistogramsConversions(iBooker);
155 fillHistogramsForHistogramCounts(iBooker);
162 totalNumberOfHistos_efficiencyFolder = iBooker.
bookInt(
"numberOfHistogramsInEfficiencyFolder");
163 totalNumberOfHistos_invMassFolder = iBooker.
bookInt(
"numberOfHistogramsInInvMassFolder");
164 totalNumberOfHistos_photonsFolder = iBooker.
bookInt(
"numberOfHistogramsInPhotonsFolder");
165 totalNumberOfHistos_conversionsFolder = iBooker.
bookInt(
"numberOfHistogramsInConversionsFolder");
171 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
172 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
173 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
174 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
183 h_phoEta_Loose_ = iBooker.
book1D(
"phoEtaLoose",
"Loose Photon #eta", etaBin_, etaMin_, etaMax_);
184 h_phoEta_Tight_ = iBooker.
book1D(
"phoEtaTight",
"Tight Photon #eta", etaBin_, etaMin_, etaMax_);
186 h_phoEt_Loose_ = iBooker.
book1D(
"phoEtLoose",
"Loose Photon E_{T}", etBin_, etMin_, etMax_);
187 h_phoEt_Tight_ = iBooker.
book1D(
"phoEtTight",
"Tight Photon E_{T}", etBin_, etMin_, etMax_);
189 h_phoEta_preHLT_ = iBooker.
book1D(
"phoEtaPreHLT",
"Photon #eta: before HLT", etaBin_, etaMin_, etaMax_);
190 h_phoEta_postHLT_ = iBooker.
book1D(
"phoEtaPostHLT",
"Photon #eta: after HLT", etaBin_, etaMin_, etaMax_);
191 h_phoEt_preHLT_ = iBooker.
book1D(
"phoEtPreHLT",
"Photon E_{T}: before HLT", etBin_, etMin_, etMax_);
192 h_phoEt_postHLT_ = iBooker.
book1D(
"phoEtPostHLT",
"Photon E_{T}: after HLT", etBin_, etMin_, etMax_);
194 h_convEta_Loose_ = iBooker.
book1D(
"convEtaLoose",
"Converted Loose Photon #eta", etaBin_, etaMin_, etaMax_);
195 h_convEta_Tight_ = iBooker.
book1D(
"convEtaTight",
"Converted Tight Photon #eta", etaBin_, etaMin_, etaMax_);
196 h_convEt_Loose_ = iBooker.
book1D(
"convEtLoose",
"Converted Loose Photon E_{T}", etBin_, etMin_, etMax_);
197 h_convEt_Tight_ = iBooker.
book1D(
"convEtTight",
"Converted Tight Photon E_{T}", etBin_, etMin_, etMax_);
199 h_phoEta_Vertex_ = iBooker.
book1D(
"phoEtaVertex",
"Converted Photons before valid vertex cut: #eta", etaBin_, etaMin_, etaMax_);
202 vector<MonitorElement*> temp1DVectorEta;
203 vector<MonitorElement*> temp1DVectorPhi;
204 vector<vector<MonitorElement*> > temp2DVectorPhi;
206 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
208 currentFolder_.str(
"");
209 currentFolder_ <<
"Egamma/"+fName_+
"/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV/Conversions";
212 temp1DVectorEta.push_back(iBooker.
book1D(
"phoConvEtaForEfficiency",
"Converted Photon #eta;#eta",etaBin_,etaMin_,etaMax_));
214 temp1DVectorPhi.push_back(iBooker.
book1D(
"phoConvPhiForEfficiency"+parts_[
part],
"Converted Photon #phi;#phi",phiBin_,phiMin_,phiMax_));
216 temp2DVectorPhi.push_back(temp1DVectorPhi);
217 temp1DVectorPhi.clear();
219 h_phoConvEtaForEfficiency_.push_back(temp1DVectorEta);
220 temp1DVectorEta.clear();
221 h_phoConvPhiForEfficiency_.push_back(temp2DVectorPhi);
222 temp2DVectorPhi.clear();
231 h_invMassAllPhotons_ = bookHisto(iBooker,
"invMassAllIsolatedPhotons",
"Two photon invariant mass: All isolated photons;M (GeV)", etBin_, etMin_, etMax_);
232 h_invMassPhotonsEBarrel_ = bookHisto(iBooker,
"invMassIsoPhotonsEBarrel",
"Two photon invariant mass: isolated photons in barrel; M (GeV)", etBin_, etMin_, etMax_);
233 h_invMassPhotonsEEndcap_ = bookHisto(iBooker,
"invMassIsoPhotonsEEndcap",
"Two photon invariant mass: isolated photons in endcap; M (GeV)", etBin_, etMin_, etMax_);
234 h_invMassPhotonsEEndcapEBarrel_ = bookHisto(iBooker,
"invMassIsoPhotonsEEndcapEBarrel",
"Two photon invariant mass: isolated photons in endcap-barrel; M (GeV)", etBin_, etMin_, etMax_);
236 h_invMassZeroWithTracks_ = bookHisto(iBooker,
"invMassZeroWithTracks",
"Two photon invariant mass: Neither has tracks;M (GeV)", etBin_, etMin_, etMax_);
237 h_invMassOneWithTracks_ = bookHisto(iBooker,
"invMassOneWithTracks",
"Two photon invariant mass: Only one has tracks;M (GeV)", etBin_, etMin_, etMax_);
238 h_invMassTwoWithTracks_ = bookHisto(iBooker,
"invMassTwoWithTracks",
"Two photon invariant mass: Both have tracks;M (GeV)", etBin_, etMin_, etMax_);
240 h_nRecoVtx_ = bookHisto(iBooker,
"nOfflineVtx",
"# of Offline Vertices", 80, -0.5, 79.5);
249 book3DHistoVector(iBooker, h_phoE_,
"1D",
"phoE",
"Energy;E (GeV)",eBin_,eMin_,eMax_);
250 book3DHistoVector(iBooker, h_phoSigmaEoverE_,
"1D",
"phoSigmaEoverE",
"#sigma_{E}/E; #sigma_{E}/E", 100,0.,0.08);
251 book3DHistoVector(iBooker, p_phoSigmaEoverEvsNVtx_,
"Profile",
"phoSigmaEoverEvsNVtx",
"#sigma_{E}/E vs NVtx; N_{vtx}; #sigma_{E}/E",80, -0.5, 79.5, 100,0., 0.08);
252 book3DHistoVector(iBooker, h_phoEt_,
"1D",
"phoEt",
"E_{T};E_{T} (GeV)", etBin_,etMin_,etMax_);
255 book3DHistoVector(iBooker, h_nPho_,
"1D",
"nPho",
"Number of Photons per Event;# #gamma",numberBin_,numberMin_,numberMax_);
259 book2DHistoVector(iBooker, h_phoEta_,
"1D",
"phoEta",
"#eta;#eta",etaBin_,etaMin_,etaMax_) ;
260 book3DHistoVector(iBooker, h_phoPhi_,
"1D",
"phoPhi",
"#phi;#phi",phiBin_,phiMin_,phiMax_) ;
263 book2DHistoVector(iBooker, h_scEta_,
"1D",
"scEta",
"SuperCluster #eta;#eta",etaBin_,etaMin_,etaMax_) ;
264 book3DHistoVector(iBooker, h_scPhi_,
"1D",
"scPhi",
"SuperCluster #phi;#phi",phiBin_,phiMin_,phiMax_) ;
268 book3DHistoVector(iBooker, h_r9_,
"1D",
"r9",
"R9;R9",r9Bin_,r9Min_, r9Max_);
270 book2DHistoVector(iBooker, h_r9VsEt_,
"2D",
"r9VsEt2D",
"R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin_,etMin_,etMax_,reducedR9Bin_,r9Min_,r9Max_);
272 book2DHistoVector(iBooker, p_r9VsEt_,
"Profile",
"r9VsEt",
"Avg R9 vs E_{T};E_{T} (GeV);R9",etBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
274 book2DHistoVector(iBooker, h_r9VsEta_,
"2D",
"r9VsEta2D",
"R9 vs #eta;#eta;R9",reducedEtaBin_,etaMin_,etaMax_,reducedR9Bin_,r9Min_,r9Max_);
276 book2DHistoVector(iBooker, p_r9VsEta_,
"Profile",
"r9VsEta",
"Avg R9 vs #eta;#eta;R9",etaBin_,etaMin_,etaMax_,r9Bin_,r9Min_,r9Max_);
279 book3DHistoVector(iBooker, h_phoSigmaIetaIeta_,
"1D",
"phoSigmaIetaIeta",
"#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin_,sigmaIetaMin_,sigmaIetaMax_);
281 book2DHistoVector(iBooker, h_sigmaIetaIetaVsEta_,
"2D",
"sigmaIetaIetaVsEta2D",
"#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin_,etaMin_,etaMax_,sigmaIetaBin_,sigmaIetaMin_,sigmaIetaMax_);
283 book2DHistoVector(iBooker, p_sigmaIetaIetaVsEta_,
"Profile",
"sigmaIetaIetaVsEta",
"Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin_,etaMin_,etaMax_,sigmaIetaBin_,sigmaIetaMin_,sigmaIetaMax_);
287 book2DHistoVector(iBooker, h_e1x5VsEt_,
"2D",
"e1x5VsEt2D",
"E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin_,etMin_,etMax_,reducedEtBin_,etMin_,etMax_);
289 book2DHistoVector(iBooker, p_e1x5VsEt_,
"Profile",
"e1x5VsEt",
"Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin_,etMin_,etMax_,etBin_,etMin_,etMax_);
291 book2DHistoVector(iBooker, h_e1x5VsEta_,
"2D",
"e1x5VsEta2D",
"E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin_,etaMin_,etaMax_,reducedEtBin_,etMin_,etMax_);
293 book2DHistoVector(iBooker, p_e1x5VsEta_,
"Profile",
"e1x5VsEta",
"Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin_,etaMin_,etaMax_,etBin_,etMin_,etMax_);
297 book2DHistoVector(iBooker, h_e2x5VsEt_,
"2D",
"e2x5VsEt2D",
"E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin_,etMin_,etMax_,reducedEtBin_,etMin_,etMax_);
299 book2DHistoVector(iBooker, p_e2x5VsEt_,
"Profile",
"e2x5VsEt",
"Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin_,etMin_,etMax_,etBin_,etMin_,etMax_);
301 book2DHistoVector(iBooker, h_e2x5VsEta_,
"2D",
"e2x5VsEta2D",
"E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin_,etaMin_,etaMax_,reducedEtBin_,etMin_,etMax_);
303 book2DHistoVector(iBooker, p_e2x5VsEta_,
"Profile",
"e2x5VsEta",
"Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin_,etaMin_,etaMax_,etBin_,etMin_,etMax_);
307 book2DHistoVector(iBooker, h_r1x5VsEt_,
"2D",
"r1x5VsEt2D",
"R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin_,etMin_,etMax_,reducedR9Bin_,r9Min_,r9Max_);
309 book2DHistoVector(iBooker, p_r1x5VsEt_,
"Profile",
"r1x5VsEt",
"Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
311 book2DHistoVector(iBooker, h_r1x5VsEta_,
"2D",
"r1x5VsEta2D",
"R1x5 vs #eta;#eta;R1X5",reducedEtaBin_,etaMin_,etaMax_,reducedR9Bin_,r9Min_,r9Max_);
313 book2DHistoVector(iBooker, p_r1x5VsEta_,
"Profile",
"r1x5VsEta",
"Avg R1x5 vs #eta;#eta;R1X5",etaBin_,etaMin_,etaMax_,r9Bin_,r9Min_,r9Max_);
317 book2DHistoVector(iBooker, h_r2x5VsEt_ ,
"2D",
"r2x5VsEt2D",
"R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin_,etMin_,etMax_,reducedR9Bin_,r9Min_,r9Max_);
319 book2DHistoVector(iBooker, p_r2x5VsEt_ ,
"Profile",
"r2x5VsEt",
"Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
321 book2DHistoVector(iBooker, h_r2x5VsEta_ ,
"2D",
"r2x5VsEta2D",
"R2x5 vs #eta;#eta;R2X5",reducedEtaBin_,etaMin_,etaMax_,reducedR9Bin_,r9Min_,r9Max_);
323 book2DHistoVector(iBooker, p_r2x5VsEta_ ,
"Profile",
"r2x5VsEta",
"Avg R2x5 vs #eta;#eta;R2X5",etaBin_,etaMin_,etaMax_,r9Bin_,r9Min_,r9Max_);
327 book2DHistoVector(iBooker, h_maxEXtalOver3x3VsEt_ ,
"2D",
"maxEXtalOver3x3VsEt2D",
"(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
329 book2DHistoVector(iBooker, p_maxEXtalOver3x3VsEt_ ,
"Profile",
"maxEXtalOver3x3VsEt",
"Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
331 book2DHistoVector(iBooker, h_maxEXtalOver3x3VsEta_ ,
"2D",
"maxEXtalOver3x3VsEta2D",
"(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin_,etaMin_,etaMax_,r9Bin_,r9Min_,r9Max_);
333 book2DHistoVector(iBooker, p_maxEXtalOver3x3VsEta_ ,
"Profile",
"maxEXtalOver3x3VsEta",
"Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin_,etaMin_,etaMax_,r9Bin_,r9Min_,r9Max_);
337 book2DHistoVector(iBooker, h_nTrackIsolSolid_ ,
"1D",
"nIsoTracksSolid",
"Number Of Tracks in the Solid Iso Cone;# tracks",numberBin_,numberMin_,numberMax_);
339 book2DHistoVector(iBooker, h_nTrackIsolSolidVsEt_ ,
"2D",
"nIsoTracksSolidVsEt2D",
"Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin_,etMin_, etMax_,numberBin_,numberMin_,numberMax_);
341 book2DHistoVector(iBooker, p_nTrackIsolSolidVsEt_ ,
"Profile",
"nIsoTracksSolidVsEt",
"Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin_,etMin_,etMax_,numberBin_,numberMin_,numberMax_);
343 book2DHistoVector(iBooker, h_nTrackIsolSolidVsEta_ ,
"2D",
"nIsoTracksSolidVsEta2D",
"Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin_,etaMin_, etaMax_,numberBin_,numberMin_,numberMax_);
345 book2DHistoVector(iBooker, p_nTrackIsolSolidVsEta_ ,
"Profile",
"nIsoTracksSolidVsEta",
"Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin_,etaMin_, etaMax_,numberBin_,numberMin_,numberMax_);
348 book2DHistoVector(iBooker, h_nTrackIsolHollow_ ,
"1D",
"nIsoTracksHollow",
"Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin_,numberMin_,numberMax_);
350 book2DHistoVector(iBooker, h_nTrackIsolHollowVsEt_ ,
"2D",
"nIsoTracksHollowVsEt2D",
"Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin_,etMin_, etMax_,numberBin_,numberMin_,numberMax_);
352 book2DHistoVector(iBooker, p_nTrackIsolHollowVsEt_ ,
"Profile",
"nIsoTracksHollowVsEt",
"Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin_,etMin_,etMax_,numberBin_,numberMin_,numberMax_);
354 book2DHistoVector(iBooker, h_nTrackIsolHollowVsEta_ ,
"2D",
"nIsoTracksHollowVsEta2D",
"Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin_,etaMin_, etaMax_,numberBin_,numberMin_,numberMax_);
356 book2DHistoVector(iBooker, p_nTrackIsolHollowVsEta_ ,
"Profile",
"nIsoTracksHollowVsEta",
"Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin_,etaMin_, etaMax_,numberBin_,numberMin_,numberMax_);
359 book2DHistoVector(iBooker, h_trackPtSumSolid_ ,
"1D",
"isoPtSumSolid",
"Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin_,sumMin_,sumMax_);
361 book2DHistoVector(iBooker, h_trackPtSumSolidVsEt_ ,
"2D",
"isoPtSumSolidVsEt2D",
"Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin_,etMin_, etMax_,reducedSumBin_,sumMin_,sumMax_);
363 book2DHistoVector(iBooker, p_trackPtSumSolidVsEt_ ,
"Profile",
"isoPtSumSolidVsEt",
"Avg Track P_{T} Sum in the Solid Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",etBin_,etMin_,etMax_,sumBin_,sumMin_,sumMax_);
365 book2DHistoVector(iBooker, h_trackPtSumSolidVsEta_ ,
"2D",
"isoPtSumSolidVsEta2D",
"Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin_,etaMin_, etaMax_,reducedSumBin_,sumMin_,sumMax_);
367 book2DHistoVector(iBooker, p_trackPtSumSolidVsEta_ ,
"Profile",
"isoPtSumSolidVsEta",
"Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin_,etaMin_, etaMax_,sumBin_,sumMin_,sumMax_);
370 book2DHistoVector(iBooker, h_trackPtSumHollow_ ,
"1D",
"isoPtSumHollow",
"Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin_,sumMin_,sumMax_);
372 book2DHistoVector(iBooker, h_trackPtSumHollowVsEt_ ,
"2D",
"isoPtSumHollowVsEt2D",
"Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin_,etMin_, etMax_,reducedSumBin_,sumMin_,sumMax_);
374 book2DHistoVector(iBooker, p_trackPtSumHollowVsEt_ ,
"Profile",
"isoPtSumHollowVsEt",
"Avg Track P_{T} Sum in the Hollow Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",etBin_,etMin_,etMax_,sumBin_,sumMin_,sumMax_);
376 book2DHistoVector(iBooker, h_trackPtSumHollowVsEta_ ,
"2D",
"isoPtSumHollowVsEta2D",
"Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin_,etaMin_, etaMax_,reducedSumBin_,sumMin_,sumMax_);
378 book2DHistoVector(iBooker, p_trackPtSumHollowVsEta_ ,
"Profile",
"isoPtSumHollowVsEta",
"Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin_,etaMin_, etaMax_,sumBin_,sumMin_,sumMax_);
382 book2DHistoVector(iBooker, h_ecalSum_,
"1D",
"ecalSum",
"Ecal Sum in the Iso Cone;E (GeV)",sumBin_,sumMin_,sumMax_);
383 book2DHistoVector(iBooker, h_ecalSumEBarrel_,
"1D",
"ecalSumEBarrel",
"Ecal Sum in the IsoCone for Barrel;E (GeV)",sumBin_,sumMin_,sumMax_);
384 book2DHistoVector(iBooker, h_ecalSumEEndcap_,
"1D",
"ecalSumEEndcap",
"Ecal Sum in the IsoCone for Endcap;E (GeV)",sumBin_,sumMin_,sumMax_);
386 book2DHistoVector(iBooker, h_ecalSumVsEt_,
"2D",
"ecalSumVsEt2D",
"Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin_,etMin_, etMax_,reducedSumBin_,sumMin_,sumMax_);
388 book3DHistoVector(iBooker, p_ecalSumVsEt_,
"Profile",
"ecalSumVsEt",
"Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin_,etMin_, etMax_,sumBin_,sumMin_,sumMax_);
390 book2DHistoVector(iBooker, h_ecalSumVsEta_,
"2D",
"ecalSumVsEta2D",
"Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin_,etaMin_, etaMax_,reducedSumBin_,sumMin_,sumMax_);
392 book2DHistoVector(iBooker, p_ecalSumVsEta_,
"Profile",
"ecalSumVsEta",
"Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin_,etaMin_, etaMax_,sumBin_,sumMin_,sumMax_);
395 book2DHistoVector(iBooker, h_hcalSum_,
"1D",
"hcalSum",
"Hcal Sum in the Iso Cone;E (GeV)",sumBin_,sumMin_,sumMax_);
396 book2DHistoVector(iBooker, h_hcalSumEBarrel_,
"1D",
"hcalSumEBarrel",
"Hcal Sum in the IsoCone for Barrel;E (GeV)",sumBin_,sumMin_,sumMax_);
397 book2DHistoVector(iBooker, h_hcalSumEEndcap_,
"1D",
"hcalSumEEndcap",
"Hcal Sum in the IsoCone for Endcap;E (GeV)",sumBin_,sumMin_,sumMax_);
399 book2DHistoVector(iBooker, h_hcalSumVsEt_,
"2D",
"hcalSumVsEt2D",
"Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin_,etMin_, etMax_,reducedSumBin_,sumMin_,sumMax_);
401 book3DHistoVector(iBooker, p_hcalSumVsEt_,
"Profile",
"hcalSumVsEt",
"Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin_,etMin_, etMax_,sumBin_,sumMin_,sumMax_);
403 book2DHistoVector(iBooker, h_hcalSumVsEta_,
"2D",
"hcalSumVsEta2D",
"Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin_,etaMin_, etaMax_,reducedSumBin_,sumMin_,sumMax_);
405 book2DHistoVector(iBooker, p_hcalSumVsEta_,
"Profile",
"hcalSumVsEta",
"Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin_,etaMin_, etaMax_,sumBin_,sumMin_,sumMax_);
408 book3DHistoVector(iBooker, h_hOverE_,
"1D",
"hOverE",
"H/E;H/E",hOverEBin_,hOverEMin_,hOverEMax_);
409 book2DHistoVector(iBooker, p_hOverEVsEt_,
"Profile",
"hOverEVsEt",
"Avg H/E vs Et;E_{T} (GeV);H/E",etBin_,etMin_,etMax_,hOverEBin_,hOverEMin_,hOverEMax_);
410 book2DHistoVector(iBooker, p_hOverEVsEta_,
"Profile",
"hOverEVsEta",
"Avg H/E vs #eta;#eta;H/E",etaBin_,etaMin_,etaMax_,hOverEBin_,hOverEMin_,hOverEMax_);
411 book3DHistoVector(iBooker, h_h1OverE_,
"1D",
"h1OverE",
"H/E for Depth 1;H/E",hOverEBin_,hOverEMin_,hOverEMax_);
412 book3DHistoVector(iBooker, h_h2OverE_,
"1D",
"h2OverE",
"H/E for Depth 2;H/E",hOverEBin_,hOverEMin_,hOverEMax_);
415 book2DHistoVector(iBooker, h_phoIsoBarrel_,
"1D",
"phoIsoBarrel",
"PF photon iso Barrel;E (GeV)",reducedEtBin_,etMin_,25.);
416 book2DHistoVector(iBooker, h_phoIsoEndcap_,
"1D",
"phoIsoEndcap",
"PF photon iso Endcap;E (GeV)",reducedEtBin_,etMin_,25.);
417 book2DHistoVector(iBooker, h_chHadIsoBarrel_,
"1D",
"chHadIsoBarrel",
"PF charged Had iso Barrel;E (GeV)",reducedEtBin_,etMin_,25.);
418 book2DHistoVector(iBooker, h_chHadIsoEndcap_,
"1D",
"chHadIsoEndcap",
"PF charged Had iso Endcap;E (GeV)",reducedEtBin_,etMin_,25.);
419 book2DHistoVector(iBooker, h_nHadIsoBarrel_,
"1D",
"neutralHadIsoBarrel",
"PF neutral Had iso Barrel;E (GeV)",reducedEtBin_,etMin_,25.);
420 book2DHistoVector(iBooker, h_nHadIsoEndcap_,
"1D",
"neutralHadIsoEndcap",
"PF neutral Had iso Endcap;E (GeV)",reducedEtBin_,etMin_,25.);
424 book2DHistoVector(iBooker, h_phoEt_BadChannels_ ,
"1D",
"phoEtBadChannels",
"Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",etBin_,etMin_,etMax_);
425 book2DHistoVector(iBooker, h_phoEta_BadChannels_ ,
"1D",
"phoEtaBadChannels",
"Fraction Containing Bad Channels: #eta;#eta",etaBin_,etaMin_,etaMax_);
426 book2DHistoVector(iBooker, h_phoPhi_BadChannels_ ,
"1D",
"phoPhiBadChannels",
"Fraction Containing Bad Channels: #phi;#phi",phiBin_,phiMin_,phiMax_);
432 iBooker.
setCurrentFolder(
"Egamma/"+fName_+
"/AllPhotons/Et Above 0 GeV/Conversions");
435 book3DHistoVector(iBooker, h_phoConvE_ ,
"1D",
"phoConvE",
"E;E (GeV)",eBin_,eMin_,eMax_);
436 book3DHistoVector(iBooker, h_phoConvEt_ ,
"1D",
"phoConvEt",
"E_{T};E_{T} (GeV)",etBin_,etMin_,etMax_);
439 book2DHistoVector(iBooker, h_phoConvEta_ ,
"1D",
"phoConvEta",
"#eta;#eta",etaBin_,etaMin_,etaMax_);
440 book3DHistoVector(iBooker, h_phoConvPhi_ ,
"1D",
"phoConvPhi",
"#phi;#phi",phiBin_,phiMin_,phiMax_);
443 book3DHistoVector(iBooker, h_nConv_ ,
"1D",
"nConv",
"Number Of Conversions per Event ;# conversions",numberBin_,numberMin_,numberMax_);
446 book3DHistoVector(iBooker, h_phoConvR9_ ,
"1D",
"phoConvR9",
"R9;R9",r9Bin_,r9Min_,r9Max_);
449 book3DHistoVector(iBooker, h_eOverPTracks_ ,
"1D",
"eOverPTracks",
"E/P;E/P",eOverPBin_,eOverPMin_,eOverPMax_);
450 book3DHistoVector(iBooker, h_pOverETracks_ ,
"1D",
"pOverETracks",
"P/E;P/E",eOverPBin_,eOverPMin_,eOverPMax_);
451 book3DHistoVector(iBooker, h_dPhiTracksAtVtx_ ,
"1D",
"dPhiTracksAtVtx",
"#Delta#phi of Tracks at Vertex;#Delta#phi",dPhiTracksBin_,dPhiTracksMin_,dPhiTracksMax_);
452 book3DHistoVector(iBooker, h_dPhiTracksAtEcal_,
"1D",
"dPhiTracksAtEcal",
"Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",dPhiTracksBin_,0.,dPhiTracksMax_);
453 book3DHistoVector(iBooker, h_dEtaTracksAtEcal_,
"1D",
"dEtaTracksAtEcal",
"#Delta#eta of Tracks at Ecal;#Delta#eta",dEtaTracksBin_,dEtaTracksMin_,dEtaTracksMax_);
454 book3DHistoVector(iBooker, h_dCotTracks_ ,
"1D",
"dCotTracks",
"#Deltacot(#theta) of Tracks;#Deltacot(#theta)",dEtaTracksBin_,dEtaTracksMin_,dEtaTracksMax_);
455 book2DHistoVector(iBooker, p_dCotTracksVsEta_ ,
"Profile",
"dCotTracksVsEta",
"Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",etaBin_,etaMin_,etaMax_,dEtaTracksBin_,dEtaTracksMin_,dEtaTracksMax_);
456 book2DHistoVector(iBooker, p_nHitsVsEta_ ,
"Profile",
"nHitsVsEta",
"Avg Number of Hits per Track vs #eta;#eta;# hits",etaBin_,etaMin_,etaMax_,etaBin_,0,16);
457 book2DHistoVector(iBooker, h_tkChi2_ ,
"1D",
"tkChi2",
"#chi^{2} of Track Fitting;#chi^{2}",chi2Bin_,chi2Min_,chi2Max_);
458 book2DHistoVector(iBooker, p_tkChi2VsEta_ ,
"Profile",
"tkChi2VsEta",
"Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",etaBin_,etaMin_,etaMax_,chi2Bin_,chi2Min_,chi2Max_);
461 book2DHistoVector(iBooker, h_convVtxRvsZ_ ,
"2D",
"convVtxRvsZ",
"Vertex Position;Z (cm);R (cm)",500,zMin_,zMax_,rBin_,rMin_,rMax_);
462 book2DHistoVector(iBooker, h_convVtxZEndcap_ ,
"1D",
"convVtxZEndcap",
"Vertex Position: #eta > 1.5;Z (cm)",zBin_,zMin_,zMax_);
463 book2DHistoVector(iBooker, h_convVtxZ_ ,
"1D",
"convVtxZ",
"Vertex Position;Z (cm)",zBin_,zMin_,zMax_);
464 book2DHistoVector(iBooker, h_convVtxR_ ,
"1D",
"convVtxR",
"Vertex Position: #eta < 1;R (cm)",rBin_,rMin_,rMax_);
465 book2DHistoVector(iBooker, h_convVtxYvsX_ ,
"2D",
"convVtxYvsX",
"Vertex Position: #eta < 1;X (cm);Y (cm)",xBin_,xMin_,xMax_,yBin_,yMin_,yMax_);
466 book2DHistoVector(iBooker, h_vertexChi2Prob_ ,
"1D",
"vertexChi2Prob",
"#chi^{2} Probability of Vertex Fitting;#chi^{2}",100,0.,1.0);
472 string histoName,
string title,
476 stringstream histo_number_stream;
479 if(iBooker.
pwd().find(
"InvMass" ) != string::npos){
480 histo_index_invMass_++;
481 histo_index = histo_index_invMass_;
483 if(iBooker.
pwd().find(
"Efficiencies" ) != string::npos){
484 histo_index_efficiency_++;
485 histo_index = histo_index_efficiency_;
488 histo_number_stream <<
"h_";
489 if(histo_index<10) histo_number_stream <<
"0";
490 histo_number_stream << histo_index;
496 vector<vector<MonitorElement*> > &temp2DVector,
497 string histoType,
string histoName,
string title,
503 vector<MonitorElement*> temp1DVector;
506 bool conversionPlot =
false;
507 if(iBooker.
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
508 bool TwoDPlot =
false;
509 if(histoName.find(
"2D" ) != string::npos) TwoDPlot =
true;
512 histo_index_conversions_++;
513 histo_index = histo_index_conversions_;
516 histo_index_photons_++;
517 histo_index = histo_index_photons_;
520 stringstream histo_number_stream;
521 histo_number_stream <<
"h_";
522 if(histo_index<10) histo_number_stream <<
"0";
523 histo_number_stream << histo_index <<
"_";
525 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
527 currentFolder_.str(
"");
528 currentFolder_ <<
"Egamma/"+fName_+
"/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
529 if(conversionPlot) currentFolder_ <<
"/Conversions";
534 if(conversionPlot) kind =
" Conversions: ";
535 else kind =
" Photons: ";
537 if(histoType==
"1D") temp1DVector.push_back(iBooker.
book1D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,
xmin,
xmax));
538 else if(histoType==
"2D"){
539 if((TwoDPlot &&
type==0) || !TwoDPlot){
544 else cout <<
"bad histoType\n";
547 temp2DVector.push_back(temp1DVector);
548 temp1DVector.clear();
553 vector<vector<vector<MonitorElement*> > > &temp3DVector,
554 string histoType,
string histoName,
string title,
560 vector<MonitorElement*> temp1DVector;
561 vector<vector<MonitorElement*> > temp2DVector;
564 bool conversionPlot =
false;
565 if(iBooker.
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
568 histo_index_conversions_++;
569 histo_index = histo_index_conversions_;
572 histo_index_photons_++;
573 histo_index = histo_index_photons_;
576 stringstream histo_number_stream;
577 histo_number_stream <<
"h_";
578 if(histo_index<10) histo_number_stream <<
"0";
579 histo_number_stream << histo_index <<
"_";
581 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
584 currentFolder_.str(
"");
585 currentFolder_ <<
"Egamma/"+fName_+
"/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
586 if(conversionPlot) currentFolder_ <<
"/Conversions";
590 if(conversionPlot) kind =
" Conversions: ";
591 else kind =
" Photons: ";
593 if(histoType==
"1D") temp1DVector.push_back(iBooker.
book1D( histo_number_stream.str()+histoName+parts_[
part],types_[
type]+kind+parts_[
part]+
": "+
title,xbin,
xmin,
xmax));
596 else cout <<
"bad histoType\n";
598 temp2DVector.push_back(temp1DVector);
599 temp1DVector.clear();
601 temp3DVector.push_back(temp2DVector);
602 temp2DVector.clear();
612 if (nEvt_% prescaleFactor_ )
return;
614 LogInfo(fName_) <<
"PhotonAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " << nEvt_ <<
"\n";
617 bool validTriggerEvent=
true;
620 e.
getByToken(triggerEvent_token_,triggerEventHandle);
621 if(!triggerEventHandle.
isValid()) {
622 edm::LogInfo(fName_) <<
"Error! Can't get the product: triggerEvent_" << endl;
623 validTriggerEvent=
false;
631 if ( !photonHandle.
isValid()) {
632 edm::LogInfo(fName_) <<
"Error! Can't get the product: photon_token_" << endl;
641 e.
getByToken(PhotonIDLoose_token_, loosePhotonFlag);
642 if ( !loosePhotonFlag.
isValid()) {
643 edm::LogInfo(fName_) <<
"Error! Can't get the product: PhotonIDLoose_token_" << endl;
651 e.
getByToken(PhotonIDTight_token_, tightPhotonFlag);
652 if ( !tightPhotonFlag.
isValid()) {
653 edm::LogInfo(fName_) <<
"Error! Can't get the product: PhotonIDTight_token_" << endl;
663 h_nRecoVtx_ ->Fill (
float(vtxH->size()));
677 int nConv[100][3][3];
690 for(uint filterIndex=0;filterIndex<triggerEvent.
sizeFilters();++filterIndex){
692 if(label.find(
"Photon" ) != string::npos ) {
693 for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.
filterKeys(filterIndex).size();++filterKeyIndex){
694 Keys.push_back(triggerEvent.
filterKeys(filterIndex)[filterKeyIndex]);
701 sort(Keys.begin(),Keys.end());
702 for ( uint
i=0 ;
i<Keys.size() ; )
704 if (
i!=(Keys.size()-1))
706 if (Keys[
i]==Keys[
i+1]) Keys.erase(Keys.begin()+
i+1) ;
717 for(
unsigned int iPho=0; iPho < photonHandle->size(); iPho++) {
723 h_phoEta_preHLT_->Fill(aPho->
eta());
724 h_phoEt_preHLT_->Fill( aPho->
et());
730 for (vector<int>::const_iterator objectKey=Keys.begin();objectKey!=Keys.end();objectKey++){
733 if(deltaR < deltaRMin) deltaRMin =
deltaR;
737 if(deltaRMin > deltaRMax) {
738 if(useTriggerFiltering_)
continue;
741 if(deltaRMin <= deltaRMax) {
742 h_phoEta_postHLT_->Fill(aPho->
eta() );
743 h_phoEt_postHLT_->Fill( aPho->
et() );
747 bool isLoosePhoton(
false), isTightPhoton(
false);
748 if ( photonSelection (aPho) ) isLoosePhoton=
true ;
751 bool phoIsInBarrel=
false;
752 bool phoIsInEndcap=
false;
754 if ( fabs(etaPho) < 1.479 )
761 if ( phoIsInBarrel ) part = 1;
762 if ( phoIsInEndcap ) part = 2;
765 bool isIsolated=
false;
766 if ( isolationStrength_ == 0) isIsolated = isLoosePhoton;
767 if ( isolationStrength_ == 1) isIsolated = isTightPhoton;
768 if ( isolationStrength_ == 2) isIsolated = photonSelectionSlimmed(aPho);
771 if ( isIsolated ) type=1;
772 if ( !excludeBkgHistos_ && !isIsolated ) type=2;
775 bool validEcalRecHits=
true;
778 if ( phoIsInBarrel ) {
780 e.
getByToken(barrelRecHit_token_, ecalRecHitHandle);
781 if (!ecalRecHitHandle.
isValid()) {
782 edm::LogError(fName_) <<
"Error! Can't get the product: barrelRecHit_token_";
783 validEcalRecHits=
false;
786 else if ( phoIsInEndcap ) {
788 e.
getByToken(endcapRecHit_token_, ecalRecHitHandle);
789 if (!ecalRecHitHandle.
isValid()) {
790 edm::LogError(fName_) <<
"Error! Can't get the product: endcapRecHit_token";
791 validEcalRecHits=
false;
794 if (validEcalRecHits) ecalRecHitCollection = *(ecalRecHitHandle.
product());
800 h_phoEta_Loose_->Fill(aPho->
eta());
801 h_phoEt_Loose_->Fill( aPho->
et() );
804 h_phoEta_Tight_->Fill(aPho->
eta());
805 h_phoEt_Tight_->Fill( aPho->
et() );
808 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
809 double Et = aPho->
et();
810 bool passesCuts =
false;
813 if ( useBinning_ && Et > (
cut+1)*cutStep_ && ( (Et < (
cut+2)*cutStep_) | (
cut == numberOfSteps_-1) ) ){
816 else if ( !useBinning_ && Et > (
cut+1)*cutStep_ ){
909 fill2DHistoVector(h_phoEta_,aPho->
eta(),
cut,
type);
918 if (standAlone_) fill2DHistoVector(h_r9VsEta_,aPho->
eta(),aPho->
r9(),
cut,
type);
919 fill2DHistoVector(p_r9VsEta_,aPho->
eta(),aPho->
r9(),
cut,
type);
920 if (standAlone_) fill2DHistoVector(h_r9VsEt_, aPho->
et(), aPho->
r9(),
cut,
type);
921 fill2DHistoVector(p_r9VsEt_, aPho->
et(), aPho->
r9(),
cut,
type);
923 if (standAlone_) fill2DHistoVector(h_e1x5VsEta_,aPho->
eta(),aPho->
e1x5(),
cut,
type);
924 fill2DHistoVector(p_e1x5VsEta_,aPho->
eta(),aPho->
e1x5(),
cut,
type);
925 if (standAlone_) fill2DHistoVector(h_e1x5VsEt_, aPho->
et(), aPho->
e1x5(),
cut,
type);
926 fill2DHistoVector(p_e1x5VsEt_, aPho->
et(), aPho->
e1x5(),
cut,
type);
928 if (standAlone_) fill2DHistoVector(h_e2x5VsEta_,aPho->
eta(),aPho->
e2x5(),
cut,
type);
929 fill2DHistoVector(p_e2x5VsEta_,aPho->
eta(),aPho->
e2x5(),
cut,
type);
930 if (standAlone_) fill2DHistoVector(h_e2x5VsEt_, aPho->
et(), aPho->
e2x5(),
cut,
type);
931 fill2DHistoVector(p_e2x5VsEt_, aPho->
et(), aPho->
e2x5(),
cut,
type);
938 if (standAlone_) fill2DHistoVector(h_r1x5VsEta_,aPho->
eta(),aPho->
r1x5(),
cut,
type);
939 fill2DHistoVector(p_r1x5VsEta_,aPho->
eta(),aPho->
r1x5(),
cut,
type);
940 if (standAlone_) fill2DHistoVector(h_r1x5VsEt_, aPho->
et(), aPho->
r1x5(),
cut,
type);
941 fill2DHistoVector(p_r1x5VsEt_, aPho->
et(), aPho->
r1x5(),
cut,
type);
943 if (standAlone_) fill2DHistoVector(h_r2x5VsEta_,aPho->
eta(),aPho->
r2x5(),
cut,
type);
944 fill2DHistoVector(p_r2x5VsEta_,aPho->
eta(),aPho->
r2x5(),
cut,
type);
945 if (standAlone_) fill2DHistoVector(h_r2x5VsEt_, aPho->
et(), aPho->
r2x5(),
cut,
type);
946 fill2DHistoVector(p_r2x5VsEt_, aPho->
et(), aPho->
r2x5(),
cut,
type);
953 bool atLeastOneDeadChannel=
false;
955 for(vector< pair<DetId, float> >::const_iterator rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
958 if (rhIt->first == (*it).id() ) {
959 if ( (*it).recoFlag() == 9 ) {
960 atLeastOneDeadChannel=
true;
967 if ( atLeastOneDeadChannel ) {
968 fill2DHistoVector(h_phoPhi_BadChannels_,aPho->
phi(),
cut,
type);
969 fill2DHistoVector(h_phoEta_BadChannels_,aPho->
eta(),
cut,
type);
970 fill2DHistoVector(h_phoEt_BadChannels_, aPho->
et(),
cut,
type);
984 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
988 if ( aConv->nTracks() <2 )
continue;
991 if(
cut==0) h_phoEta_Vertex_->Fill(aConv->refittedPairMomentum().eta());
993 if ( !(aConv->conversionVertex().isValid()) )
continue;
995 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
997 if(chi2Prob<0.0005)
continue;
999 fill2DHistoVector(h_vertexChi2Prob_,chi2Prob,
cut,type);
1005 if (
cut==0 && isLoosePhoton){
1006 h_convEta_Loose_->Fill(aPho->
eta());
1007 h_convEt_Loose_->Fill( aPho->
et() );
1009 if (
cut==0 && isTightPhoton){
1010 h_convEta_Tight_->Fill(aPho->
eta());
1011 h_convEt_Tight_->Fill( aPho->
et() );
1014 fill2DHistoVector(h_phoConvEta_,aConv->refittedPairMomentum().eta(),
cut,
type);
1015 fill3DHistoVector(h_phoConvPhi_,aConv->refittedPairMomentum().phi(),
cut,
type,
part);
1018 fill2DHistoVector(h_phoConvEtaForEfficiency_,aPho->
eta(),
cut,
type);
1019 fill3DHistoVector(h_phoConvPhiForEfficiency_,aPho->
phi(),
cut,
type,
part);
1022 double convR=
sqrt(aConv->conversionVertex().position().perp2());
1023 double scalar = aConv->conversionVertex().position().x()*aConv->refittedPairMomentum().x() + aConv->conversionVertex().position().y()*aConv->refittedPairMomentum().y();
1024 if ( scalar < 0 ) convR= -convR;
1026 fill2DHistoVector(h_convVtxRvsZ_,aConv->conversionVertex().position().z(), convR,
cut,
type);
1027 fill2DHistoVector(h_convVtxZ_,aConv->conversionVertex().position().z(),
cut,
type);
1030 if( fabs(aPho->
eta()) > 1.5){
1031 fill2DHistoVector(h_convVtxZEndcap_,aConv->conversionVertex().position().z(),
cut,
type);
1033 else if(fabs(aPho->
eta()) < 1){
1034 fill2DHistoVector(h_convVtxR_,convR,cut,type);
1035 fill2DHistoVector(h_convVtxYvsX_,aConv->conversionVertex().position().x(),aConv->conversionVertex().position().y(),
cut,
type);
1039 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
1042 for (
unsigned int i=0;
i<tracks.size();
i++) {
1043 fill2DHistoVector(h_tkChi2_,tracks[
i]->normalizedChi2(),cut,type);
1044 fill2DHistoVector(p_tkChi2VsEta_,aPho->
eta(),tracks[
i]->normalizedChi2(),
cut,
type);
1045 fill2DHistoVector(p_dCotTracksVsEta_,aPho->
eta(),aConv->pairCotThetaSeparation(),
cut,
type);
1046 fill2DHistoVector(p_nHitsVsEta_,aPho->
eta(),
float(tracks[
i]->numberOfValidHits()),
cut,
type);
1051 float DPhiTracksAtVtx = -99;
1052 float dPhiTracksAtEcal= -99;
1053 float dEtaTracksAtEcal= -99;
1055 float phiTk1= aConv->tracksPin()[0].phi();
1056 float phiTk2= aConv->tracksPin()[1].phi();
1057 DPhiTracksAtVtx = phiTk1-phiTk2;
1058 DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
1060 if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
1061 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
1062 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
1063 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
1064 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
1066 recoPhi1 = phiNormalization(recoPhi1);
1067 recoPhi2 = phiNormalization(recoPhi2);
1069 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
1070 dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
1071 dEtaTracksAtEcal = recoEta1 -recoEta2;
1074 fill3DHistoVector(h_dPhiTracksAtVtx_,DPhiTracksAtVtx,cut,type,part);
1075 fill3DHistoVector(h_dPhiTracksAtEcal_,fabs(dPhiTracksAtEcal),cut,type,part);
1076 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,cut,type,part);
1077 fill3DHistoVector(h_eOverPTracks_,aConv->EoverPrefittedTracks(),
cut,
type,
part);
1078 fill3DHistoVector(h_pOverETracks_,1./aConv->EoverPrefittedTracks(),
cut,
type,
part);
1079 fill3DHistoVector(h_dCotTracks_,aConv->pairCotThetaSeparation(),
cut,
type,
part);
1086 if (isIsolated && aPho->
et()>=invMassEtCut_){
1087 for(
unsigned int iPho2=iPho+1; iPho2 < photonHandle->size(); iPho2++) {
1095 bool isTightPhoton2(
false), isLoosePhoton2(
false);
1096 if ( photonSelection (aPho2) ) isLoosePhoton2=
true;
1103 bool isIsolated2=
false;
1104 if ( isolationStrength_ == 0) isIsolated2 = isLoosePhoton2;
1105 if ( isolationStrength_ == 1) isIsolated2 = isTightPhoton2;
1106 if ( isolationStrength_ == 2) isIsolated2 = photonSelectionSlimmed(aPho2);
1111 if(isIsolated2 && aPho2->
et()>=invMassEtCut_){
1114 float gamgamMass2 = p12.Dot(p12);
1117 h_invMassAllPhotons_ ->
Fill(
sqrt( gamgamMass2 ));
1118 if(aPho->
isEB() && aPho2->
isEB()){h_invMassPhotonsEBarrel_ ->
Fill(
sqrt( gamgamMass2 ));}
1119 else if(aPho->
isEE() && aPho2->
isEE()){h_invMassPhotonsEEndcap_ ->
Fill(
sqrt( gamgamMass2 ));}
1120 else {h_invMassPhotonsEEndcapEBarrel_ ->
Fill(
sqrt( gamgamMass2 ));}
1122 if(!conversions.
empty() && conversions[0]->nTracks() >= 2){
1123 if(!conversions2.
empty() && conversions2[0]->nTracks() >= 2) h_invMassTwoWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
1124 else h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
1126 else if(!conversions2.
empty() && conversions2[0]->nTracks() >= 2) h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
1127 else h_invMassZeroWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
1134 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
1148 const float PI = 3.1415927;
1151 if(phi > PI) {phi = phi -
TWOPI;}
1152 if(phi < -PI) {phi = phi +
TWOPI;}
1159 histoVector[
cut][0]->Fill(
x,y);
1165 histoVector[
cut][0]->Fill(
x);
1171 histoVector[
cut][0][0]->Fill(
x);
1172 histoVector[
cut][0][
part]->Fill(
x);
1173 histoVector[
cut][
type][0]->Fill(
x);
1179 histoVector[
cut][0][0]->Fill(
x,y);
1180 histoVector[
cut][0][
part]->Fill(
x,y);
1181 histoVector[
cut][
type][0]->Fill(
x,y);
1188 if ( pho->
pt() < minPhoEtCut_ ) result=
false;
1189 if ( fabs(pho->
eta()) > photonMaxEta_ ) result=
false;
1195 if (pho->
r9() <=0.9) {
1199 if (EtCorrHcalIso>4.0) result=
false;
1200 if (EtCorrTrkIso>4.0) result=
false ;
1206 if (EtCorrHcalIso>50.0) result=
false;
1207 if (EtCorrTrkIso>50.0) result=
false;
1217 if ( pho->
pt() < minPhoEtCut_ ) result=
false;
1218 if ( fabs(pho->
eta()) > photonMaxEta_ ) result=
false;
bool photonSelection(const reco::Photon *p)
T getParameter(std::string const &) const
virtual double pt() const final
transverse momentum
T getUntrackedParameter(std::string const &, T const &) const
void bookHistogramsPhotons(DQMStore::IBooker &)
float hcalTowerSumEtConeDR04() const
Hcal isolation sum.
bool isNonnull() const
Checks for non-null.
The single EDProduct to be saved for each event (AOD case)
trigger::size_type sizeFilters() const
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
float neutralHadronIso() const
float hcalTowerSumEtConeDR03() const
Hcal isolation sum.
MonitorElement * bookProfile(Args &&...args)
virtual double eta() const final
momentum pseudorapidity
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const std::string & pwd(void)
float trkSumPtSolidConeDR04() const
const Keys & filterKeys(trigger::size_type index) const
MonitorElement * bookInt(Args &&...args)
std::vector< EcalRecHit >::const_iterator const_iterator
float e1x5() const
Shower shape variables.
bool isEBEEGap() const
true if photon is in boundary between EB and EE
float ecalRecHitSumEtConeDR04() const
float trkSumPtHollowConeDR03() const
void fill3DHistoVector(std::vector< std::vector< std::vector< MonitorElement * > > > &histoVector, double x, int cut, int type, int part)
void bookHistogramsConversions(DQMStore::IBooker &)
bool empty() const
Is the RefVector empty.
float hadronicDepth2OverEm() const
the hadronic release in depth2 over electromagnetic fraction
virtual double phi() const final
momentum azimuthal angle
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
T x() const
Cartesian x coordinate.
virtual double et() const final
transverse energy
MonitorElement * bookHisto(DQMStore::IBooker &, std::string histoName, std::string title, int bin, double min, double max)
void fill2DHistoVector(std::vector< std::vector< MonitorElement * > > &histoVector, double x, int cut, int type)
void fillHistogramsForHistogramCounts(DQMStore::IBooker &)
void analyze(const edm::Event &, const edm::EventSetup &) override
reco::ConversionRefVector conversions() const
vector of references to Conversion's
const TriggerObjectCollection & getObjects() const
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
float sigmaIetaIeta() const
virtual double energy() const final
energy
MonitorElement * book1D(Args &&...args)
#define TWOPI
EgammaCoreTools.
auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
float ChiSquaredProbability(double chiSquared, double nrDOF)
float hadTowOverEm() const
the ration of hadronic energy in towers behind the BCs in the SC and the SC energy ...
int nTrkHollowConeDR04() const
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
void bookHistogramsInvMass(DQMStore::IBooker &)
float phiNormalization(float &a)
float getCorrectedEnergyError(P4type type) const
P4type getCandidateP4type() const
bin
set the eta bin as selection string.
const_iterator end() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
float hadronicDepth1OverEm() const
the hadronic release in depth1 over electromagnetic fraction
bool hasConversionTracks() const
Bool flagging photons with a vector of refereces to conversions with size >0.
const edm::InputTag filterTag(trigger::size_type index) const
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)
bool photonSelectionSlimmed(const reco::Photon *p)
void setCurrentFolder(const std::string &fullpath)
T const * product() const
MonitorElement * book2D(Args &&...args)
std::vector< size_type > Keys
std::vector< Photon > PhotonCollection
collectin of Photon objects
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
int nTrkSolidConeDR04() const
const LorentzVector & p4(P4type type) const
float trkSumPtHollowConeDR04() const
void bookHistogramsForHistogramCounts(DQMStore::IBooker &)
size_type size() const
Size of the RefVector.
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)
void bookHistogramsEfficiency(DQMStore::IBooker &)
~PhotonAnalyzer() override
PhotonAnalyzer(const edm::ParameterSet &)
const_iterator begin() const
double scalar(const CLHEP::HepGenMatrix &m)
Return the matrix as a scalar. Raise an assertion if the matris is not .
float maxEnergyXtal() const