30 photonProducer_ = pset.
getParameter<
string>(
"phoProducer");
31 photonCollection_ = pset.
getParameter<
string>(
"photonCollection");
33 barrelRecHitProducer_ = pset.
getParameter<
string>(
"barrelRecHitProducer");
34 barrelRecHitCollection_ = pset.
getParameter<
string>(
"barrelRecHitCollection");
36 endcapRecHitProducer_ = pset.
getParameter<
string>(
"endcapRecHitProducer");
37 endcapRecHitCollection_ = pset.
getParameter<
string>(
"endcapRecHitCollection");
42 invMassEtCut_ = pset.
getParameter<
double>(
"invMassEtCut");
45 numberOfSteps_ = pset.
getParameter<
int>(
"numberOfSteps");
48 useTriggerFiltering_ = pset.
getParameter<
bool>(
"useTriggerFiltering");
51 outputFileName_ = pset.
getParameter<
string>(
"OutputFileName");
53 isolationStrength_ = pset.
getParameter<
int>(
"isolationStrength");
59 histo_index_photons_ = 0;
60 histo_index_conversions_ = 0;
61 histo_index_efficiency_ = 0;
62 histo_index_invMass_ = 0;
81 double eMin = parameters_.getParameter<
double>(
"eMin");
82 double eMax = parameters_.getParameter<
double>(
"eMax");
83 int eBin = parameters_.getParameter<
int>(
"eBin");
85 double etMin = parameters_.getParameter<
double>(
"etMin");
86 double etMax = parameters_.getParameter<
double>(
"etMax");
87 int etBin = parameters_.getParameter<
int>(
"etBin");
89 double sumMin = parameters_.getParameter<
double>(
"sumMin");
90 double sumMax = parameters_.getParameter<
double>(
"sumMax");
91 int sumBin = parameters_.getParameter<
int>(
"sumBin");
93 double etaMin = parameters_.getParameter<
double>(
"etaMin");
94 double etaMax = parameters_.getParameter<
double>(
"etaMax");
95 int etaBin = parameters_.getParameter<
int>(
"etaBin");
97 double phiMin = parameters_.getParameter<
double>(
"phiMin");
98 double phiMax = parameters_.getParameter<
double>(
"phiMax");
99 int phiBin = parameters_.getParameter<
int>(
"phiBin");
101 double r9Min = parameters_.getParameter<
double>(
"r9Min");
102 double r9Max = parameters_.getParameter<
double>(
"r9Max");
103 int r9Bin = parameters_.getParameter<
int>(
"r9Bin");
105 double hOverEMin = parameters_.getParameter<
double>(
"hOverEMin");
106 double hOverEMax = parameters_.getParameter<
double>(
"hOverEMax");
107 int hOverEBin = parameters_.getParameter<
int>(
"hOverEBin");
109 double xMin = parameters_.getParameter<
double>(
"xMin");
110 double xMax = parameters_.getParameter<
double>(
"xMax");
111 int xBin = parameters_.getParameter<
int>(
"xBin");
113 double yMin = parameters_.getParameter<
double>(
"yMin");
114 double yMax = parameters_.getParameter<
double>(
"yMax");
115 int yBin = parameters_.getParameter<
int>(
"yBin");
117 double numberMin = parameters_.getParameter<
double>(
"numberMin");
118 double numberMax = parameters_.getParameter<
double>(
"numberMax");
119 int numberBin = parameters_.getParameter<
int>(
"numberBin");
121 double zMin = parameters_.getParameter<
double>(
"zMin");
122 double zMax = parameters_.getParameter<
double>(
"zMax");
123 int zBin = parameters_.getParameter<
int>(
"zBin");
125 double rMin = parameters_.getParameter<
double>(
"rMin");
126 double rMax = parameters_.getParameter<
double>(
"rMax");
127 int rBin = parameters_.getParameter<
int>(
"rBin");
129 double dPhiTracksMin = parameters_.getParameter<
double>(
"dPhiTracksMin");
130 double dPhiTracksMax = parameters_.getParameter<
double>(
"dPhiTracksMax");
131 int dPhiTracksBin = parameters_.getParameter<
int>(
"dPhiTracksBin");
133 double dEtaTracksMin = parameters_.getParameter<
double>(
"dEtaTracksMin");
134 double dEtaTracksMax = parameters_.getParameter<
double>(
"dEtaTracksMax");
135 int dEtaTracksBin = parameters_.getParameter<
int>(
"dEtaTracksBin");
137 double sigmaIetaMin = parameters_.getParameter<
double>(
"sigmaIetaMin");
138 double sigmaIetaMax = parameters_.getParameter<
double>(
"sigmaIetaMax");
139 int sigmaIetaBin = parameters_.getParameter<
int>(
"sigmaIetaBin");
141 double eOverPMin = parameters_.getParameter<
double>(
"eOverPMin");
142 double eOverPMax = parameters_.getParameter<
double>(
"eOverPMax");
143 int eOverPBin = parameters_.getParameter<
int>(
"eOverPBin");
145 double chi2Min = parameters_.getParameter<
double>(
"chi2Min");
146 double chi2Max = parameters_.getParameter<
double>(
"chi2Max");
147 int chi2Bin = parameters_.getParameter<
int>(
"chi2Bin");
150 int reducedEtBin = etBin/2;
151 int reducedEtaBin = etaBin/2;
152 int reducedSumBin = sumBin/2;
153 int reducedR9Bin = r9Bin/2;
156 parts_.push_back(
"AllEcal");
157 parts_.push_back(
"Barrel");
158 parts_.push_back(
"Endcaps");
160 types_.push_back(
"All");
161 types_.push_back(
"GoodCandidate");
162 types_.push_back(
"Background");
173 totalNumberOfHistos_efficiencyFolder =
dbe_->
bookInt(
"numberOfHistogramsInEfficiencyFolder");
174 totalNumberOfHistos_photonsFolder =
dbe_->
bookInt(
"numberOfHistogramsInPhotonsFolder");
175 totalNumberOfHistos_conversionsFolder =
dbe_->
bookInt(
"numberOfHistogramsInConversionsFolder");
176 totalNumberOfHistos_invMassFolder =
dbe_->
bookInt(
"numberOfHistogramsInInvMassFolder");
184 h_phoEta_Loose_ =
dbe_->
book1D(
"phoEtaLoose",
"Loose Photon #eta",etaBin,etaMin,etaMax);
185 h_phoEta_Tight_ =
dbe_->
book1D(
"phoEtaTight",
"Tight Photon #eta",etaBin,etaMin,etaMax);
186 h_phoEt_Loose_ =
dbe_->
book1D(
"phoEtLoose",
"Loose Photon E_{T}",etBin,etMin,etMax);
187 h_phoEt_Tight_ =
dbe_->
book1D(
"phoEtTight",
"Tight Photon E_{T}",etBin,etMin,etMax);
190 h_phoEta_preHLT_ =
dbe_->
book1D(
"phoEtaPreHLT",
"Photon #eta: before HLT",etaBin,etaMin,etaMax);
191 h_phoEta_postHLT_ =
dbe_->
book1D(
"phoEtaPostHLT",
"Photon #eta: after HLT",etaBin,etaMin,etaMax);
192 h_phoEt_preHLT_ =
dbe_->
book1D(
"phoEtPreHLT",
"Photon E_{T}: before HLT",etBin,etMin,etMax);
193 h_phoEt_postHLT_ =
dbe_->
book1D(
"phoEtPostHLT",
"Photon E_{T}: after HLT",etBin,etMin,etMax);
195 h_convEta_Loose_ =
dbe_->
book1D(
"convEtaLoose",
"Converted Loose Photon #eta",etaBin,etaMin,etaMax);
196 h_convEta_Tight_ =
dbe_->
book1D(
"convEtaTight",
"Converted Tight Photon #eta",etaBin,etaMin,etaMax);
197 h_convEt_Loose_ =
dbe_->
book1D(
"convEtLoose",
"Converted Loose Photon E_{T}",etBin,etMin,etMax);
198 h_convEt_Tight_ =
dbe_->
book1D(
"convEtTight",
"Converted Tight Photon E_{T}",etBin,etMin,etMax);
200 h_phoEta_Vertex_ =
dbe_->
book1D(
"phoEtaVertex",
"Converted Photons before valid vertex cut: #eta",etaBin,etaMin,etaMax);
203 vector<MonitorElement*> temp1DVectorEta;
204 vector<MonitorElement*> temp1DVectorPhi;
205 vector<vector<MonitorElement*> > temp2DVectorPhi;
208 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
210 currentFolder_.str(
"");
211 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV/Conversions";
214 temp1DVectorEta.push_back(
dbe_->
book1D(
"phoConvEtaForEfficiency",
"Converted Photon #eta;#eta",etaBin,etaMin,etaMax));
216 temp1DVectorPhi.push_back(
dbe_->
book1D(
"phoConvPhiForEfficiency"+parts_[
part],
"Converted Photon #phi;#phi",phiBin,phiMin,phiMax));
218 temp2DVectorPhi.push_back(temp1DVectorPhi);
219 temp1DVectorPhi.clear();
221 h_phoConvEtaForEfficiency_.push_back(temp1DVectorEta);
222 temp1DVectorEta.clear();
223 h_phoConvPhiForEfficiency_.push_back(temp2DVectorPhi);
224 temp2DVectorPhi.clear();
234 h_invMassAllPhotons_ = bookHisto(
"invMassAllIsolatedPhotons",
"Two photon invariant mass: All isolated photons;M (GeV)",etBin,etMin,etMax);
235 h_invMassZeroWithTracks_= bookHisto(
"invMassZeroWithTracks",
"Two photon invariant mass: Neither has tracks;M (GeV)", etBin,etMin,etMax);
236 h_invMassOneWithTracks_ = bookHisto(
"invMassOneWithTracks",
"Two photon invariant mass: Only one has tracks;M (GeV)", etBin,etMin,etMax);
237 h_invMassTwoWithTracks_ = bookHisto(
"invMassTwoWithTracks",
"Two photon invariant mass: Both have tracks;M (GeV)", etBin,etMin,etMax);
244 h_phoE_ = book3DHistoVector(
"1D",
"phoE",
"Energy;E (GeV)",eBin,eMin,eMax);
245 h_phoEt_ = book3DHistoVector(
"1D",
"phoEt",
"E_{T};E_{T} (GeV)", etBin,etMin,etMax);
249 h_nPho_ = book3DHistoVector(
"1D",
"nPho",
"Number of Photons per Event;# #gamma",numberBin,numberMin,numberMax);
254 h_phoEta_ = book2DHistoVector(
"1D",
"phoEta",
"#eta;#eta",etaBin,etaMin,etaMax) ;
255 h_phoPhi_ = book3DHistoVector(
"1D",
"phoPhi",
"#phi;#phi",phiBin,phiMin,phiMax) ;
258 h_scEta_ = book2DHistoVector(
"1D",
"scEta",
"SuperCluster #eta;#eta",etaBin,etaMin,etaMax) ;
259 h_scPhi_ = book3DHistoVector(
"1D",
"scPhi",
"SuperCluster #phi;#phi",phiBin,phiMin,phiMax) ;
264 h_r9_ = book3DHistoVector(
"1D",
"r9",
"R9;R9",r9Bin,r9Min, r9Max);
265 h_r9VsEt_ = book2DHistoVector(
"2D",
"r9VsEt2D",
"R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
266 p_r9VsEt_ = book2DHistoVector(
"Profile",
"r9VsEt",
"Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
267 h_r9VsEta_ = book2DHistoVector(
"2D",
"r9VsEta2D",
"R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
268 p_r9VsEta_ = book2DHistoVector(
"Profile",
"r9VsEta",
"Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
271 h_phoSigmaIetaIeta_ = book3DHistoVector(
"1D",
"phoSigmaIetaIeta",
"#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
272 h_sigmaIetaIetaVsEta_ = book2DHistoVector(
"2D",
"sigmaIetaIetaVsEta2D",
"#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
273 p_sigmaIetaIetaVsEta_ = book2DHistoVector(
"Profile",
"sigmaIetaIetaVsEta",
"Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
276 h_e1x5VsEt_ = book2DHistoVector(
"2D",
"e1x5VsEt2D",
"E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
277 p_e1x5VsEt_ = book2DHistoVector(
"Profile",
"e1x5VsEt",
"Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
278 h_e1x5VsEta_ = book2DHistoVector(
"2D",
"e1x5VsEta2D",
"E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
279 p_e1x5VsEta_ = book2DHistoVector(
"Profile",
"e1x5VsEta",
"Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
282 h_e2x5VsEt_ = book2DHistoVector(
"2D",
"e2x5VsEt2D",
"E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
283 p_e2x5VsEt_ = book2DHistoVector(
"Profile",
"e2x5VsEt",
"Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
284 h_e2x5VsEta_ = book2DHistoVector(
"2D",
"e2x5VsEta2D",
"E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
285 p_e2x5VsEta_ = book2DHistoVector(
"Profile",
"e2x5VsEta",
"Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
288 h_r1x5VsEt_ = book2DHistoVector(
"2D",
"r1x5VsEt2D",
"R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
289 p_r1x5VsEt_ = book2DHistoVector(
"Profile",
"r1x5VsEt",
"Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
290 h_r1x5VsEta_ = book2DHistoVector(
"2D",
"r1x5VsEta2D",
"R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
291 p_r1x5VsEta_ = book2DHistoVector(
"Profile",
"r1x5VsEta",
"Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
294 h_r2x5VsEt_ = book2DHistoVector(
"2D",
"r2x5VsEt2D",
"R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
295 p_r2x5VsEt_ = book2DHistoVector(
"Profile",
"r2x5VsEt",
"Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
296 h_r2x5VsEta_ = book2DHistoVector(
"2D",
"r2x5VsEta2D",
"R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
297 p_r2x5VsEta_ = book2DHistoVector(
"Profile",
"r2x5VsEta",
"Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
300 h_maxEXtalOver3x3VsEt_ = book2DHistoVector(
"2D",
"maxEXtalOver3x3VsEt2D",
"(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
301 p_maxEXtalOver3x3VsEt_ = book2DHistoVector(
"Profile",
"maxEXtalOver3x3VsEt",
"Avg (Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
302 h_maxEXtalOver3x3VsEta_ = book2DHistoVector(
"2D",
"maxEXtalOver3x3VsEta2D",
"(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
303 p_maxEXtalOver3x3VsEta_ = book2DHistoVector(
"Profile",
"maxEXtalOver3x3VsEta",
"Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
309 h_nTrackIsolSolid_ = book2DHistoVector(
"1D",
"nIsoTracksSolid",
"Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
310 h_nTrackIsolSolidVsEt_ = book2DHistoVector(
"2D",
"nIsoTracksSolidVsEt2D",
"Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
311 p_nTrackIsolSolidVsEt_ = book2DHistoVector(
"Profile",
"nIsoTracksSolidVsEt",
"Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
312 h_nTrackIsolSolidVsEta_ = book2DHistoVector(
"2D",
"nIsoTracksSolidVsEta2D",
"Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
313 p_nTrackIsolSolidVsEta_ = book2DHistoVector(
"Profile",
"nIsoTracksSolidVsEta",
"Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
316 h_nTrackIsolHollow_ = book2DHistoVector(
"1D",
"nIsoTracksHollow",
"Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
317 h_nTrackIsolHollowVsEt_ = book2DHistoVector(
"2D",
"nIsoTracksHollowVsEt2D",
"Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
318 p_nTrackIsolHollowVsEt_ = book2DHistoVector(
"Profile",
"nIsoTracksHollowVsEt",
"Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",etBin,etMin,etMax,numberBin,numberMin,numberMax);
319 h_nTrackIsolHollowVsEta_ = book2DHistoVector(
"2D",
"nIsoTracksHollowVsEta2D",
"Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
320 p_nTrackIsolHollowVsEta_ = book2DHistoVector(
"Profile",
"nIsoTracksHollowVsEta",
"Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
323 h_trackPtSumSolid_ = book2DHistoVector(
"1D",
"isoPtSumSolid",
"Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
324 h_trackPtSumSolidVsEt_ = book2DHistoVector(
"2D",
"isoPtSumSolidVsEt2D",
"Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
325 p_trackPtSumSolidVsEt_ = book2DHistoVector(
"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);
326 h_trackPtSumSolidVsEta_ = book2DHistoVector(
"2D",
"isoPtSumSolidVsEta2D",
"Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
327 p_trackPtSumSolidVsEta_ = book2DHistoVector(
"Profile",
"isoPtSumSolidVsEta",
"Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
330 h_trackPtSumHollow_ = book2DHistoVector(
"1D",
"isoPtSumHollow",
"Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
331 h_trackPtSumHollowVsEt_ = book2DHistoVector(
"2D",
"isoPtSumHollowVsEt2D",
"Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
332 p_trackPtSumHollowVsEt_ = book2DHistoVector(
"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);
333 h_trackPtSumHollowVsEta_ = book2DHistoVector(
"2D",
"isoPtSumHollowVsEta2D",
"Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
334 p_trackPtSumHollowVsEta_ = book2DHistoVector(
"Profile",
"isoPtSumHollowVsEta",
"Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
340 h_ecalSum_ = book2DHistoVector(
"1D",
"ecalSum",
"Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
341 h_ecalSumVsEt_ = book2DHistoVector(
"2D",
"ecalSumVsEt2D",
"Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
342 p_ecalSumVsEt_ = book3DHistoVector(
"Profile",
"ecalSumVsEt",
"Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
343 h_ecalSumVsEta_ = book2DHistoVector(
"2D",
"ecalSumVsEta2D",
"Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
344 p_ecalSumVsEta_ = book2DHistoVector(
"Profile",
"ecalSumVsEta",
"Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
347 h_hcalSum_ = book2DHistoVector(
"1D",
"hcalSum",
"Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
348 h_hcalSumVsEt_ = book2DHistoVector(
"2D",
"hcalSumVsEt2D",
"Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
349 p_hcalSumVsEt_ = book3DHistoVector(
"Profile",
"hcalSumVsEt",
"Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",etBin,etMin, etMax,sumBin,sumMin,sumMax);
350 h_hcalSumVsEta_ = book2DHistoVector(
"2D",
"hcalSumVsEta2D",
"Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
351 p_hcalSumVsEta_ = book2DHistoVector(
"Profile",
"hcalSumVsEta",
"Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
354 h_hOverE_ = book3DHistoVector(
"1D",
"hOverE",
"H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
355 p_hOverEVsEt_ = book2DHistoVector(
"Profile",
"hOverEVsEt",
"Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
356 p_hOverEVsEta_ = book2DHistoVector(
"Profile",
"hOverEVsEta",
"Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
357 h_h1OverE_ = book3DHistoVector(
"1D",
"h1OverE",
"H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
358 h_h2OverE_ = book3DHistoVector(
"1D",
"h2OverE",
"H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
364 h_phoEt_BadChannels_ = book2DHistoVector(
"1D",
"phoEtBadChannels",
"Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",etBin,etMin,etMax);
365 h_phoEta_BadChannels_ = book2DHistoVector(
"1D",
"phoEtaBadChannels",
"Fraction Containing Bad Channels: #eta;#eta",etaBin,etaMin,etaMax);
366 h_phoPhi_BadChannels_ = book2DHistoVector(
"1D",
"phoPhiBadChannels",
"Fraction Containing Bad Channels: #phi;#phi",phiBin,phiMin,phiMax);
375 h_phoConvE_ = book3DHistoVector(
"1D",
"phoConvE",
"E;E (GeV)",eBin,eMin,eMax);
376 h_phoConvEt_ = book3DHistoVector(
"1D",
"phoConvEt",
"E_{T};E_{T} (GeV)",etBin,etMin,etMax);
380 h_phoConvEta_ = book2DHistoVector(
"1D",
"phoConvEta",
"#eta;#eta",etaBin,etaMin,etaMax);
381 h_phoConvPhi_ = book3DHistoVector(
"1D",
"phoConvPhi",
"#phi;#phi",phiBin,phiMin,phiMax);
385 h_nConv_ = book3DHistoVector(
"1D",
"nConv",
"Number Of Conversions per Event ;# conversions",numberBin,numberMin,numberMax);
389 h_phoConvR9_ = book3DHistoVector(
"1D",
"phoConvR9",
"R9;R9",r9Bin,r9Min,r9Max);
393 h_eOverPTracks_ = book3DHistoVector(
"1D",
"eOverPTracks",
"E/P;E/P",eOverPBin,eOverPMin,eOverPMax);
394 h_pOverETracks_ = book3DHistoVector(
"1D",
"pOverETracks",
"P/E;P/E",eOverPBin,eOverPMin,eOverPMax);
396 h_dPhiTracksAtVtx_ = book3DHistoVector(
"1D",
"dPhiTracksAtVtx",
"#Delta#phi of Tracks at Vertex;#Delta#phi",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
397 h_dPhiTracksAtEcal_ = book3DHistoVector(
"1D",
"dPhiTracksAtEcal",
"Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",dPhiTracksBin,0.,dPhiTracksMax);
398 h_dEtaTracksAtEcal_ = book3DHistoVector(
"1D",
"dEtaTracksAtEcal",
"#Delta#eta of Tracks at Ecal;#Delta#eta",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
400 h_dCotTracks_ = book3DHistoVector(
"1D",
"dCotTracks",
"#Deltacot(#theta) of Tracks;#Deltacot(#theta)",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
401 p_dCotTracksVsEta_ = book2DHistoVector(
"Profile",
"dCotTracksVsEta",
"Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",etaBin,etaMin,etaMax,dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
403 p_nHitsVsEta_ = book2DHistoVector(
"Profile",
"nHitsVsEta",
"Avg Number of Hits per Track vs #eta;#eta;# hits",etaBin,etaMin,etaMax,etaBin,0,16);
405 h_tkChi2_ = book2DHistoVector(
"1D",
"tkChi2",
"#chi^{2} of Track Fitting;#chi^{2}",chi2Bin,chi2Min,chi2Max);
406 p_tkChi2VsEta_ = book2DHistoVector(
"Profile",
"tkChi2VsEta",
"Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",etaBin,etaMin,etaMax,chi2Bin,chi2Min,chi2Max);
410 h_convVtxRvsZ_ = book2DHistoVector(
"2D",
"convVtxRvsZ",
"Vertex Position;Z (cm);R (cm)",1000,zMin,zMax,rBin,rMin,rMax);
411 h_convVtxZEndcap_ = book2DHistoVector(
"1D",
"convVtxZEndcap",
"Vertex Position: #eta > 1.5;Z (cm)",zBin,zMin,zMax);
412 h_convVtxZ_ = book2DHistoVector(
"1D",
"convVtxZ",
"Vertex Position;Z (cm)",zBin,zMin,zMax);
413 h_convVtxR_ = book2DHistoVector(
"1D",
"convVtxR",
"Vertex Position: #eta < 1;R (cm)",rBin,rMin,rMax);
414 h_convVtxYvsX_ = book2DHistoVector(
"2D",
"convVtxYvsX",
"Vertex Position: #eta < 1;X (cm);Y (cm)",xBin,xMin,xMax,yBin,yMin,yMax);
418 h_vertexChi2Prob_ = book2DHistoVector(
"1D",
"vertexChi2Prob",
"#chi^{2} Probability of Vertex Fitting;#chi^{2}",100,0.,1.0);
432 if (nEvt_% prescaleFactor_ )
return;
434 LogInfo(
"PhotonAnalyzer") <<
"PhotonAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " << nEvt_ <<
"\n";
437 bool validTriggerEvent=
true;
440 e.
getByLabel(triggerEvent_,triggerEventHandle);
441 if(!triggerEventHandle.isValid()) {
442 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< triggerEvent_.label() << endl;
443 validTriggerEvent=
false;
445 if(validTriggerEvent) triggerEvent = *(triggerEventHandle.product());
448 bool validPhotons=
true;
451 e.
getByLabel(photonProducer_, photonCollection_ , photonHandle);
452 if ( !photonHandle.isValid()) {
453 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< photonCollection_ << endl;
456 if(validPhotons) photonCollection = *(photonHandle.product());
459 bool validloosePhotonID=
true;
462 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLoose", loosePhotonFlag);
463 if ( !loosePhotonFlag.isValid()) {
464 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDLoose" << endl;
465 validloosePhotonID=
false;
467 if (validloosePhotonID) loosePhotonID = *(loosePhotonFlag.product());
469 bool validtightPhotonID=
true;
472 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDTight", tightPhotonFlag);
473 if ( !tightPhotonFlag.isValid()) {
474 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDTight" << endl;
475 validtightPhotonID=
false;
477 if (validtightPhotonID) tightPhotonID = *(tightPhotonFlag.product());
492 int nConv[100][3][3];
508 for(uint filterIndex=0;filterIndex<triggerEvent.sizeFilters();++filterIndex){
510 string label = triggerEvent.filterTag(filterIndex).label();
512 if(label.find(
"Photon" ) != string::npos ) {
514 for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.filterKeys(filterIndex).size();++filterKeyIndex){
515 Keys.push_back(triggerEvent.filterKeys(filterIndex)[filterKeyIndex]);
525 for ( uint
i=0 ;
i<
Keys.size() ; )
527 if (
i!=(
Keys.size()-1))
537 int photonCounter = 0;
541 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
546 h_phoEta_preHLT_->Fill((*iPho).eta());
547 h_phoEt_preHLT_->Fill( (*iPho).et());
551 double deltaRMin=1000.;
555 for (vector<int>::const_iterator objectKey=
Keys.begin();objectKey!=
Keys.end();objectKey++){
557 deltaR =
reco::deltaR(triggerEvent.getObjects()[(*objectKey)].eta(),triggerEvent.getObjects()[(*objectKey)].phi(),(*iPho).superCluster()->eta(),(*iPho).superCluster()->phi());
558 if(deltaR < deltaRMin) deltaRMin =
deltaR;
562 if(deltaRMin > deltaRMax) {
563 if(useTriggerFiltering_)
continue;
566 if(deltaRMin <= deltaRMax) {
567 h_phoEta_postHLT_->Fill((*iPho).eta() );
568 h_phoEt_postHLT_->Fill( (*iPho).et() );
571 if ((*iPho).et() < minPhoEtCut_)
continue;
578 bool isLoosePhoton(
false), isTightPhoton(
false);
579 if ( !isHeavyIon_ ) {
580 isLoosePhoton = (loosePhotonID)[photonref];
581 isTightPhoton = (tightPhotonID)[photonref];
587 bool phoIsInBarrel=
false;
588 bool phoIsInEndcap=
false;
589 float etaPho = (*iPho).superCluster()->eta();
590 if ( fabs(etaPho) < 1.479 )
597 if ( phoIsInBarrel ) part = 1;
598 if ( phoIsInEndcap ) part = 2;
601 bool isIsolated=
false;
602 if ( isolationStrength_ == 0) isIsolated = isLoosePhoton;
603 if ( isolationStrength_ == 1) isIsolated = isTightPhoton;
606 if ( isIsolated ) type=1;
607 if ( !isIsolated ) type=2;
611 bool validEcalRecHits=
true;
614 if ( phoIsInBarrel ) {
616 e.
getByLabel(barrelRecHitProducer_, barrelRecHitCollection_, ecalRecHitHandle);
617 if (!ecalRecHitHandle.
isValid()) {
618 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<barrelRecHitProducer_;
619 validEcalRecHits=
false;
622 else if ( phoIsInEndcap ) {
624 e.
getByLabel(endcapRecHitProducer_, endcapRecHitCollection_, ecalRecHitHandle);
625 if (!ecalRecHitHandle.
isValid()) {
626 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<endcapRecHitProducer_;
627 validEcalRecHits=
false;
630 if (validEcalRecHits) ecalRecHitCollection = *(ecalRecHitHandle.
product());
638 h_phoEta_Loose_->Fill((*iPho).eta());
639 h_phoEt_Loose_->Fill( (*iPho).et() );
642 h_phoEta_Tight_->Fill((*iPho).eta());
643 h_phoEt_Tight_->Fill( (*iPho).et() );
648 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
649 double Et = (*iPho).et();
650 bool passesCuts =
false;
653 if ( useBinning_ && Et > (
cut+1)*cutStep_ && ( (Et < (
cut+2)*cutStep_) | (
cut == numberOfSteps_-1) ) ){
656 else if ( !useBinning_ && Et > (
cut+1)*cutStep_ ){
666 fill2DHistoVector(h_nTrackIsolSolid_, (*iPho).nTrkSolidConeDR04(),
cut,
type);
667 fill2DHistoVector(h_nTrackIsolHollow_,(*iPho).nTrkHollowConeDR04(),
cut,
type);
669 fill2DHistoVector(h_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
670 fill2DHistoVector(p_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
671 fill2DHistoVector(h_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
672 fill2DHistoVector(p_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
674 fill2DHistoVector(h_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
675 fill2DHistoVector(p_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
676 fill2DHistoVector(h_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
677 fill2DHistoVector(p_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
681 fill2DHistoVector(h_trackPtSumSolid_, (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
682 fill2DHistoVector(h_trackPtSumHollow_,(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
684 fill2DHistoVector(h_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
685 fill2DHistoVector(p_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
686 fill2DHistoVector(h_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
687 fill2DHistoVector(p_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
689 fill2DHistoVector(h_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
690 fill2DHistoVector(p_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
691 fill2DHistoVector(h_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),
cut,
type);
692 fill2DHistoVector(p_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),
cut,
type);
696 fill2DHistoVector(h_ecalSum_,(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
697 fill2DHistoVector(h_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
698 fill2DHistoVector(p_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
699 fill2DHistoVector(h_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
700 fill3DHistoVector(p_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),
cut,
type,
part);
704 fill2DHistoVector(h_hcalSum_,(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
705 fill2DHistoVector(h_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
706 fill2DHistoVector(p_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
707 fill2DHistoVector(h_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
708 fill3DHistoVector(p_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),
cut,
type,
part);
710 fill3DHistoVector(h_hOverE_,(*iPho).hadronicOverEm(),
cut,
type,
part);
711 fill2DHistoVector(p_hOverEVsEta_,(*iPho).eta(),(*iPho).hadronicOverEm(),
cut,
type);
712 fill2DHistoVector(p_hOverEVsEt_, (*iPho).et(), (*iPho).hadronicOverEm(),
cut,
type);
714 fill3DHistoVector(h_h1OverE_,(*iPho).hadronicDepth1OverEm(),
cut,
type,
part);
715 fill3DHistoVector(h_h2OverE_,(*iPho).hadronicDepth2OverEm(),
cut,
type,
part);
727 fill3DHistoVector(h_phoE_, (*iPho).energy(),
cut,
type,
part);
728 fill3DHistoVector(h_phoEt_,(*iPho).et(),
cut,
type,
part);
732 fill2DHistoVector(h_phoEta_,(*iPho).eta(),
cut,
type);
733 fill2DHistoVector(h_scEta_, (*iPho).superCluster()->eta(),
cut,
type);
735 fill3DHistoVector(h_phoPhi_,(*iPho).phi(),
cut,
type,
part);
736 fill3DHistoVector(h_scPhi_, (*iPho).superCluster()->phi(),
cut,
type,
part);
740 fill3DHistoVector(h_r9_,(*iPho).r9(),
cut,
type,
part);
741 fill2DHistoVector(h_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
742 fill2DHistoVector(p_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
743 fill2DHistoVector(h_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
744 fill2DHistoVector(p_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
746 fill2DHistoVector(h_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
747 fill2DHistoVector(p_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
748 fill2DHistoVector(h_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
749 fill2DHistoVector(p_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
751 fill2DHistoVector(h_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
752 fill2DHistoVector(p_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
753 fill2DHistoVector(h_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
754 fill2DHistoVector(p_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
756 fill2DHistoVector(h_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
757 fill2DHistoVector(p_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
758 fill2DHistoVector(h_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
759 fill2DHistoVector(p_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
761 fill2DHistoVector(h_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),
cut,
type);
762 fill2DHistoVector(p_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),
cut,
type);
763 fill2DHistoVector(h_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),
cut,
type);
764 fill2DHistoVector(p_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),
cut,
type);
766 fill2DHistoVector(h_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),
cut,
type);
767 fill2DHistoVector(p_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),
cut,
type);
768 fill2DHistoVector(h_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),
cut,
type);
769 fill2DHistoVector(p_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),
cut,
type);
771 fill3DHistoVector(h_phoSigmaIetaIeta_,(*iPho).sigmaIetaIeta(),
cut,
type,
part);
772 fill2DHistoVector(h_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),
cut,
type);
773 fill2DHistoVector(p_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),
cut,
type);
779 bool atLeastOneDeadChannel=
false;
780 for(
reco::CaloCluster_iterator bcIt = (*iPho).superCluster()->clustersBegin();bcIt != (*iPho).superCluster()->clustersEnd(); ++bcIt) {
781 for(vector< pair<DetId, float> >::const_iterator rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
784 if (rhIt->first == (*it).id() ) {
785 if ( (*it).recoFlag() == 9 ) {
786 atLeastOneDeadChannel=
true;
793 if ( atLeastOneDeadChannel ) {
794 fill2DHistoVector(h_phoPhi_BadChannels_,(*iPho).phi(),
cut,
type);
795 fill2DHistoVector(h_phoEta_BadChannels_,(*iPho).eta(),
cut,
type);
796 fill2DHistoVector(h_phoEt_BadChannels_, (*iPho).et(),
cut,
type);
801 if((*iPho).hasConversionTracks()){
811 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
815 if ( aConv->nTracks() <2 )
continue;
818 if(
cut==0) h_phoEta_Vertex_->Fill(aConv->refittedPairMomentum().eta());
820 if ( !(aConv->conversionVertex().isValid()) )
continue;
822 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
824 if(chi2Prob<0.0005)
continue;
826 fill2DHistoVector(h_vertexChi2Prob_,chi2Prob,
cut,type);
830 fill3DHistoVector(h_phoConvE_, (*iPho).energy(),
cut,
type,
part);
831 fill3DHistoVector(h_phoConvEt_,(*iPho).et(),
cut,
type,
part);
832 fill3DHistoVector(h_phoConvR9_,(*iPho).r9(),
cut,
type,
part);
834 if (
cut==0 && isLoosePhoton){
835 h_convEta_Loose_->Fill((*iPho).eta());
836 h_convEt_Loose_->Fill( (*iPho).et() );
838 if (
cut==0 && isTightPhoton){
839 h_convEta_Tight_->Fill((*iPho).eta());
840 h_convEt_Tight_->Fill( (*iPho).et() );
843 fill2DHistoVector(h_phoConvEta_,aConv->refittedPairMomentum().eta(),
cut,
type);
844 fill3DHistoVector(h_phoConvPhi_,aConv->refittedPairMomentum().phi(),
cut,
type,
part);
847 fill2DHistoVector(h_phoConvEtaForEfficiency_,(*iPho).eta(),
cut,
type);
848 fill3DHistoVector(h_phoConvPhiForEfficiency_,(*iPho).phi(),
cut,
type,
part);
852 double convR=
sqrt(aConv->conversionVertex().position().perp2());
853 double scalar = aConv->conversionVertex().position().x()*aConv->refittedPairMomentum().x() + aConv->conversionVertex().position().y()*aConv->refittedPairMomentum().y();
854 if ( scalar < 0 ) convR= -convR;
856 fill2DHistoVector(h_convVtxRvsZ_,aConv->conversionVertex().position().z(), convR,
cut,
type);
857 fill2DHistoVector(h_convVtxZ_,aConv->conversionVertex().position().z(),
cut,
type);
859 if(fabs(aConv->caloCluster()[0]->eta()) > 1.5){
860 fill2DHistoVector(h_convVtxZEndcap_,aConv->conversionVertex().position().z(),
cut,
type);
862 else if(fabs(aConv->caloCluster()[0]->eta()) < 1){
863 fill2DHistoVector(h_convVtxR_,convR,cut,type);
864 fill2DHistoVector(h_convVtxYvsX_,aConv->conversionVertex().position().x(),aConv->conversionVertex().position().y(),
cut,
type);
867 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
870 for (
unsigned int i=0;
i<tracks.size();
i++) {
871 fill2DHistoVector(h_tkChi2_,tracks[
i]->normalizedChi2(),cut,type);
872 fill2DHistoVector(p_tkChi2VsEta_,aConv->caloCluster()[0]->eta(),tracks[
i]->normalizedChi2(),
cut,
type);
873 fill2DHistoVector(p_dCotTracksVsEta_,aConv->caloCluster()[0]->eta(),aConv->pairCotThetaSeparation(),
cut,
type);
874 fill2DHistoVector(p_nHitsVsEta_,aConv->caloCluster()[0]->eta(),float(tracks[
i]->numberOfValidHits()),
cut,
type);
879 float DPhiTracksAtVtx = -99;
880 float dPhiTracksAtEcal= -99;
881 float dEtaTracksAtEcal= -99;
883 float phiTk1= aConv->tracksPin()[0].phi();
884 float phiTk2= aConv->tracksPin()[1].phi();
885 DPhiTracksAtVtx = phiTk1-phiTk2;
886 DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
888 if (aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
889 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
890 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
891 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
892 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
894 recoPhi1 = phiNormalization(recoPhi1);
895 recoPhi2 = phiNormalization(recoPhi2);
897 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
898 dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
899 dEtaTracksAtEcal = recoEta1 -recoEta2;
904 fill3DHistoVector(h_dPhiTracksAtVtx_,DPhiTracksAtVtx,cut,type,part);
905 fill3DHistoVector(h_dPhiTracksAtEcal_,fabs(dPhiTracksAtEcal),cut,type,part);
906 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,cut,type,part);
907 fill3DHistoVector(h_eOverPTracks_,aConv->EoverPrefittedTracks(),
cut,
type,
part);
908 fill3DHistoVector(h_pOverETracks_,1./aConv->EoverPrefittedTracks(),
cut,
type,
part);
909 fill3DHistoVector(h_dCotTracks_,aConv->pairCotThetaSeparation(),
cut,
type,
part);
923 if (isIsolated && iPho->et()>=invMassEtCut_){
925 for (reco::PhotonCollection::const_iterator iPho2=iPho+1; iPho2!=photonCollection.end(); iPho2++){
930 bool isTightPhoton2(
false), isLoosePhoton2(
false);
932 if ( !isHeavyIon_ ) {
933 isTightPhoton2 = (tightPhotonID)[photonref2];
934 isLoosePhoton2 = (loosePhotonID)[photonref2];
937 bool isIsolated2=
false;
938 if ( isolationStrength_ == 0) isIsolated2 = isLoosePhoton2;
939 if ( isolationStrength_ == 1) isIsolated2 = isTightPhoton2;
944 if(isIsolated2 && iPho2->et()>=invMassEtCut_){
947 float gamgamMass2 = p12.Dot(p12);
950 h_invMassAllPhotons_ -> Fill(
sqrt( gamgamMass2 ));
952 if(conversions.
size()!=0 && conversions[0]->nTracks() >= 2){
953 if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassTwoWithTracks_ -> Fill(
sqrt( gamgamMass2 ));
954 else h_invMassOneWithTracks_ -> Fill(
sqrt( gamgamMass2 ));
956 else if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassOneWithTracks_ -> Fill(
sqrt( gamgamMass2 ));
957 else h_invMassZeroWithTracks_ -> Fill(
sqrt( gamgamMass2 ));
970 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
988 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
989 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
990 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
991 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1005 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
1006 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
1007 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
1008 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1023 const float PI = 3.1415927;
1026 if(phi > PI) {phi = phi -
TWOPI;}
1027 if(phi < -PI) {phi = phi +
TWOPI;}
1035 histoVector[
cut][0]->Fill(x,y);
1036 if(histoVector[cut].
size()>1) histoVector[
cut][
type]->Fill(x,y);
1042 histoVector[
cut][0]->Fill(x);
1043 histoVector[
cut][
type]->Fill(x);
1049 histoVector[
cut][0][0]->Fill(x);
1050 histoVector[
cut][0][
part]->Fill(x);
1051 histoVector[
cut][
type][0]->Fill(x);
1058 histoVector[
cut][0][0]->Fill(x,y);
1059 histoVector[
cut][0][
part]->Fill(x,y);
1060 histoVector[
cut][
type][0]->Fill(x,y);
1069 int histo_index = 0;
1070 stringstream histo_number_stream;
1073 if(
dbe_->
pwd().find(
"InvMass" ) != string::npos){
1074 histo_index_invMass_++;
1075 histo_index = histo_index_invMass_;
1077 if(
dbe_->
pwd().find(
"Efficiencies" ) != string::npos){
1078 histo_index_efficiency_++;
1079 histo_index = histo_index_efficiency_;
1082 histo_number_stream <<
"h_";
1083 if(histo_index<10) histo_number_stream <<
"0";
1084 histo_number_stream << histo_index;
1092 int xbin,
double xmin,
double xmax,
1093 int ybin,
double ymin,
double ymax)
1095 int histo_index = 0;
1097 vector<MonitorElement*> temp1DVector;
1098 vector<vector<MonitorElement*> > temp2DVector;
1101 bool conversionPlot =
false;
1102 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1103 bool TwoDPlot =
false;
1104 if(histoName.find(
"2D" ) != string::npos) TwoDPlot =
true;
1107 histo_index_conversions_++;
1108 histo_index = histo_index_conversions_;
1111 histo_index_photons_++;
1112 histo_index = histo_index_photons_;
1115 stringstream histo_number_stream;
1116 histo_number_stream <<
"h_";
1117 if(histo_index<10) histo_number_stream <<
"0";
1118 histo_number_stream << histo_index <<
"_";
1121 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1125 currentFolder_.str(
"");
1126 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1127 if(conversionPlot) currentFolder_ <<
"/Conversions";
1132 if(conversionPlot) kind =
" Conversions: ";
1133 else kind =
" Photons: ";
1135 if(histoType==
"1D") temp1DVector.push_back(
dbe_->
book1D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax));
1136 else if(histoType==
"2D"){
1137 if((TwoDPlot &&
type==0) || !TwoDPlot){
1138 temp1DVector.push_back(
dbe_->
book2D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax,ybin,ymin,ymax));
1141 else if(histoType==
"Profile") temp1DVector.push_back(
dbe_->
bookProfile( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax,ybin,ymin,ymax,
""));
1142 else cout <<
"bad histoType\n";
1145 temp2DVector.push_back(temp1DVector);
1146 temp1DVector.clear();
1149 return temp2DVector;
1155 int xbin,
double xmin,
double xmax,
1156 int ybin,
double ymin,
double ymax)
1158 int histo_index = 0;
1160 vector<MonitorElement*> temp1DVector;
1161 vector<vector<MonitorElement*> > temp2DVector;
1162 vector<vector<vector<MonitorElement*> > > temp3DVector;
1166 bool conversionPlot =
false;
1167 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1171 histo_index_conversions_++;
1172 histo_index = histo_index_conversions_;
1175 histo_index_photons_++;
1176 histo_index = histo_index_photons_;
1179 stringstream histo_number_stream;
1180 histo_number_stream <<
"h_";
1181 if(histo_index<10) histo_number_stream <<
"0";
1182 histo_number_stream << histo_index <<
"_";
1185 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1191 currentFolder_.str(
"");
1192 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1193 if(conversionPlot) currentFolder_ <<
"/Conversions";
1198 if(conversionPlot) kind =
" Conversions: ";
1199 else kind =
" Photons: ";
1201 if(histoType==
"1D") temp1DVector.push_back(
dbe_->
book1D( histo_number_stream.str()+histoName+parts_[
part],types_[
type]+kind+parts_[
part]+
": "+
title,xbin,xmin,xmax));
1202 else if(histoType==
"2D") temp1DVector.push_back(
dbe_->
book2D( histo_number_stream.str()+histoName+parts_[
part],types_[
type]+kind+parts_[
part]+
": "+
title,xbin,xmin,xmax,ybin,ymin,ymax));
1203 else if(histoType==
"Profile") temp1DVector.push_back(
dbe_->
bookProfile( histo_number_stream.str()+histoName+parts_[
part],types_[
type]+kind+parts_[
part]+
": "+
title,xbin,xmin,xmax,ybin,ymin,ymax,
""));
1204 else cout <<
"bad histoType\n";
1209 temp2DVector.push_back(temp1DVector);
1210 temp1DVector.clear();
1213 temp3DVector.push_back(temp2DVector);
1214 temp2DVector.clear();
1217 return temp3DVector;
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
The single EDProduct to be saved for each event (AOD case)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
MonitorElement * bookHisto(std::string histoName, std::string title, int bin, double min, double max)
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
std::vector< T >::const_iterator const_iterator
#define TWOPI
EgammaCoreTools.
void fill3DHistoVector(std::vector< std::vector< std::vector< MonitorElement * > > > &histoVector, double x, int cut, int type, int part)
double deltaR(double eta1, double phi1, double eta2, double phi2)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
bool isNonnull() const
Checks for non-null.
void fill2DHistoVector(std::vector< std::vector< MonitorElement * > > &histoVector, double x, int cut, int type)
std::vector< std::vector< std::vector< MonitorElement * > > > book3DHistoVector(std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
const T & max(const T &a, const T &b)
float ChiSquaredProbability(double chiSquared, double nrDOF)
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
float phiNormalization(float &a)
const_iterator end() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
virtual ~PhotonAnalyzer()
std::vector< std::vector< MonitorElement * > > book2DHistoVector(std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
virtual void endRun(const edm::Run &, const edm::EventSetup &)
std::vector< size_type > Keys
virtual void analyze(const edm::Event &, const edm::EventSetup &)
std::vector< Photon > PhotonCollection
collectin of Photon objects
T const * product() const
size_type size() const
Size of the RefVector.
MonitorElement * bookInt(const char *name)
Book int.
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
tuple size
Write out results.
void setCurrentFolder(const std::string &fullpath)
PhotonAnalyzer(const edm::ParameterSet &)
const_iterator begin() const
const std::string & pwd(void) const