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");
50 minimalSetOfHistos_ = pset.
getParameter<
bool>(
"minimalSetOfHistos");
51 excludeBkgHistos_ = pset.
getParameter<
bool>(
"excludeBkgHistos");
54 outputFileName_ = pset.
getParameter<
string>(
"OutputFileName");
56 isolationStrength_ = pset.
getParameter<
int>(
"isolationStrength");
62 histo_index_photons_ = 0;
63 histo_index_conversions_ = 0;
64 histo_index_efficiency_ = 0;
65 histo_index_invMass_ = 0;
84 double eMin = parameters_.getParameter<
double>(
"eMin");
85 double eMax = parameters_.getParameter<
double>(
"eMax");
86 int eBin = parameters_.getParameter<
int>(
"eBin");
88 double etMin = parameters_.getParameter<
double>(
"etMin");
89 double etMax = parameters_.getParameter<
double>(
"etMax");
90 int etBin = parameters_.getParameter<
int>(
"etBin");
92 double sumMin = parameters_.getParameter<
double>(
"sumMin");
93 double sumMax = parameters_.getParameter<
double>(
"sumMax");
94 int sumBin = parameters_.getParameter<
int>(
"sumBin");
96 double etaMin = parameters_.getParameter<
double>(
"etaMin");
97 double etaMax = parameters_.getParameter<
double>(
"etaMax");
98 int etaBin = parameters_.getParameter<
int>(
"etaBin");
100 double phiMin = parameters_.getParameter<
double>(
"phiMin");
101 double phiMax = parameters_.getParameter<
double>(
"phiMax");
102 int phiBin = parameters_.getParameter<
int>(
"phiBin");
104 double r9Min = parameters_.getParameter<
double>(
"r9Min");
105 double r9Max = parameters_.getParameter<
double>(
"r9Max");
106 int r9Bin = parameters_.getParameter<
int>(
"r9Bin");
108 double hOverEMin = parameters_.getParameter<
double>(
"hOverEMin");
109 double hOverEMax = parameters_.getParameter<
double>(
"hOverEMax");
110 int hOverEBin = parameters_.getParameter<
int>(
"hOverEBin");
112 double xMin = parameters_.getParameter<
double>(
"xMin");
113 double xMax = parameters_.getParameter<
double>(
"xMax");
114 int xBin = parameters_.getParameter<
int>(
"xBin");
116 double yMin = parameters_.getParameter<
double>(
"yMin");
117 double yMax = parameters_.getParameter<
double>(
"yMax");
118 int yBin = parameters_.getParameter<
int>(
"yBin");
120 double numberMin = parameters_.getParameter<
double>(
"numberMin");
121 double numberMax = parameters_.getParameter<
double>(
"numberMax");
122 int numberBin = parameters_.getParameter<
int>(
"numberBin");
124 double zMin = parameters_.getParameter<
double>(
"zMin");
125 double zMax = parameters_.getParameter<
double>(
"zMax");
126 int zBin = parameters_.getParameter<
int>(
"zBin");
128 double rMin = parameters_.getParameter<
double>(
"rMin");
129 double rMax = parameters_.getParameter<
double>(
"rMax");
130 int rBin = parameters_.getParameter<
int>(
"rBin");
132 double dPhiTracksMin = parameters_.getParameter<
double>(
"dPhiTracksMin");
133 double dPhiTracksMax = parameters_.getParameter<
double>(
"dPhiTracksMax");
134 int dPhiTracksBin = parameters_.getParameter<
int>(
"dPhiTracksBin");
136 double dEtaTracksMin = parameters_.getParameter<
double>(
"dEtaTracksMin");
137 double dEtaTracksMax = parameters_.getParameter<
double>(
"dEtaTracksMax");
138 int dEtaTracksBin = parameters_.getParameter<
int>(
"dEtaTracksBin");
140 double sigmaIetaMin = parameters_.getParameter<
double>(
"sigmaIetaMin");
141 double sigmaIetaMax = parameters_.getParameter<
double>(
"sigmaIetaMax");
142 int sigmaIetaBin = parameters_.getParameter<
int>(
"sigmaIetaBin");
144 double eOverPMin = parameters_.getParameter<
double>(
"eOverPMin");
145 double eOverPMax = parameters_.getParameter<
double>(
"eOverPMax");
146 int eOverPBin = parameters_.getParameter<
int>(
"eOverPBin");
148 double chi2Min = parameters_.getParameter<
double>(
"chi2Min");
149 double chi2Max = parameters_.getParameter<
double>(
"chi2Max");
150 int chi2Bin = parameters_.getParameter<
int>(
"chi2Bin");
153 int reducedEtBin = etBin/4;
154 int reducedEtaBin = etaBin/4;
155 int reducedSumBin = sumBin/4;
156 int reducedR9Bin = r9Bin/4;
159 parts_.push_back(
"AllEcal");
160 parts_.push_back(
"Barrel");
161 parts_.push_back(
"Endcaps");
163 types_.push_back(
"All");
164 types_.push_back(
"GoodCandidate");
165 if (!excludeBkgHistos_) types_.push_back(
"Background");
176 totalNumberOfHistos_efficiencyFolder =
dbe_->
bookInt(
"numberOfHistogramsInEfficiencyFolder");
177 totalNumberOfHistos_photonsFolder =
dbe_->
bookInt(
"numberOfHistogramsInPhotonsFolder");
178 totalNumberOfHistos_conversionsFolder =
dbe_->
bookInt(
"numberOfHistogramsInConversionsFolder");
179 totalNumberOfHistos_invMassFolder =
dbe_->
bookInt(
"numberOfHistogramsInInvMassFolder");
187 h_phoEta_Loose_ =
dbe_->
book1D(
"phoEtaLoose",
"Loose Photon #eta",etaBin,etaMin,etaMax);
188 h_phoEta_Tight_ =
dbe_->
book1D(
"phoEtaTight",
"Tight Photon #eta",etaBin,etaMin,etaMax);
189 h_phoEt_Loose_ =
dbe_->
book1D(
"phoEtLoose",
"Loose Photon E_{T}",etBin,etMin,etMax);
190 h_phoEt_Tight_ =
dbe_->
book1D(
"phoEtTight",
"Tight Photon E_{T}",etBin,etMin,etMax);
193 h_phoEta_preHLT_ =
dbe_->
book1D(
"phoEtaPreHLT",
"Photon #eta: before HLT",etaBin,etaMin,etaMax);
194 h_phoEta_postHLT_ =
dbe_->
book1D(
"phoEtaPostHLT",
"Photon #eta: after HLT",etaBin,etaMin,etaMax);
195 h_phoEt_preHLT_ =
dbe_->
book1D(
"phoEtPreHLT",
"Photon E_{T}: before HLT",etBin,etMin,etMax);
196 h_phoEt_postHLT_ =
dbe_->
book1D(
"phoEtPostHLT",
"Photon E_{T}: after HLT",etBin,etMin,etMax);
198 h_convEta_Loose_ =
dbe_->
book1D(
"convEtaLoose",
"Converted Loose Photon #eta",etaBin,etaMin,etaMax);
199 h_convEta_Tight_ =
dbe_->
book1D(
"convEtaTight",
"Converted Tight Photon #eta",etaBin,etaMin,etaMax);
200 h_convEt_Loose_ =
dbe_->
book1D(
"convEtLoose",
"Converted Loose Photon E_{T}",etBin,etMin,etMax);
201 h_convEt_Tight_ =
dbe_->
book1D(
"convEtTight",
"Converted Tight Photon E_{T}",etBin,etMin,etMax);
203 h_phoEta_Vertex_ =
dbe_->
book1D(
"phoEtaVertex",
"Converted Photons before valid vertex cut: #eta",etaBin,etaMin,etaMax);
206 vector<MonitorElement*> temp1DVectorEta;
207 vector<MonitorElement*> temp1DVectorPhi;
208 vector<vector<MonitorElement*> > temp2DVectorPhi;
211 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
213 currentFolder_.str(
"");
214 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV/Conversions";
217 temp1DVectorEta.push_back(
dbe_->
book1D(
"phoConvEtaForEfficiency",
"Converted Photon #eta;#eta",etaBin,etaMin,etaMax));
219 temp1DVectorPhi.push_back(
dbe_->
book1D(
"phoConvPhiForEfficiency"+parts_[
part],
"Converted Photon #phi;#phi",phiBin,phiMin,phiMax));
221 temp2DVectorPhi.push_back(temp1DVectorPhi);
222 temp1DVectorPhi.clear();
224 h_phoConvEtaForEfficiency_.push_back(temp1DVectorEta);
225 temp1DVectorEta.clear();
226 h_phoConvPhiForEfficiency_.push_back(temp2DVectorPhi);
227 temp2DVectorPhi.clear();
237 h_invMassAllPhotons_ = bookHisto(
"invMassAllIsolatedPhotons",
"Two photon invariant mass: All isolated photons;M (GeV)",etBin,etMin,etMax);
238 h_invMassZeroWithTracks_= bookHisto(
"invMassZeroWithTracks",
"Two photon invariant mass: Neither has tracks;M (GeV)", etBin,etMin,etMax);
239 h_invMassOneWithTracks_ = bookHisto(
"invMassOneWithTracks",
"Two photon invariant mass: Only one has tracks;M (GeV)", etBin,etMin,etMax);
240 h_invMassTwoWithTracks_ = bookHisto(
"invMassTwoWithTracks",
"Two photon invariant mass: Both have tracks;M (GeV)", etBin,etMin,etMax);
247 book3DHistoVector(h_phoE_,
"1D",
"phoE",
"Energy;E (GeV)",eBin,eMin,eMax);
248 book3DHistoVector(h_phoEt_,
"1D",
"phoEt",
"E_{T};E_{T} (GeV)", etBin,etMin,etMax);
252 book3DHistoVector(h_nPho_,
"1D",
"nPho",
"Number of Photons per Event;# #gamma",numberBin,numberMin,numberMax);
257 book2DHistoVector(h_phoEta_,
"1D",
"phoEta",
"#eta;#eta",etaBin,etaMin,etaMax) ;
258 book3DHistoVector(h_phoPhi_,
"1D",
"phoPhi",
"#phi;#phi",phiBin,phiMin,phiMax) ;
261 book2DHistoVector(h_scEta_,
"1D",
"scEta",
"SuperCluster #eta;#eta",etaBin,etaMin,etaMax) ;
262 book3DHistoVector(h_scPhi_,
"1D",
"scPhi",
"SuperCluster #phi;#phi",phiBin,phiMin,phiMax) ;
267 book3DHistoVector(h_r9_,
"1D",
"r9",
"R9;R9",r9Bin,r9Min, r9Max);
268 book2DHistoVector(h_r9VsEt_,
"2D",
"r9VsEt2D",
"R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
269 book2DHistoVector(p_r9VsEt_,
"Profile",
"r9VsEt",
"Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
270 book2DHistoVector(h_r9VsEta_,
"2D",
"r9VsEta2D",
"R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
271 book2DHistoVector(p_r9VsEta_,
"Profile",
"r9VsEta",
"Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
274 book3DHistoVector(h_phoSigmaIetaIeta_,
"1D",
"phoSigmaIetaIeta",
"#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
275 book2DHistoVector(h_sigmaIetaIetaVsEta_,
"2D",
"sigmaIetaIetaVsEta2D",
"#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
276 book2DHistoVector(p_sigmaIetaIetaVsEta_,
"Profile",
"sigmaIetaIetaVsEta",
"Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
279 book2DHistoVector(h_e1x5VsEt_,
"2D",
"e1x5VsEt2D",
"E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
280 book2DHistoVector(p_e1x5VsEt_,
"Profile",
"e1x5VsEt",
"Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
281 book2DHistoVector(h_e1x5VsEta_,
"2D",
"e1x5VsEta2D",
"E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
282 book2DHistoVector(p_e1x5VsEta_,
"Profile",
"e1x5VsEta",
"Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
285 book2DHistoVector(h_e2x5VsEt_,
"2D",
"e2x5VsEt2D",
"E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
286 book2DHistoVector(p_e2x5VsEt_,
"Profile",
"e2x5VsEt",
"Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
287 book2DHistoVector(h_e2x5VsEta_,
"2D",
"e2x5VsEta2D",
"E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
288 book2DHistoVector(p_e2x5VsEta_,
"Profile",
"e2x5VsEta",
"Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
291 book2DHistoVector(h_r1x5VsEt_,
"2D",
"r1x5VsEt2D",
"R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
292 book2DHistoVector(p_r1x5VsEt_,
"Profile",
"r1x5VsEt",
"Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
293 book2DHistoVector(h_r1x5VsEta_,
"2D",
"r1x5VsEta2D",
"R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
294 book2DHistoVector(p_r1x5VsEta_,
"Profile",
"r1x5VsEta",
"Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
297 book2DHistoVector( h_r2x5VsEt_ ,
"2D",
"r2x5VsEt2D",
"R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
298 book2DHistoVector( p_r2x5VsEt_ ,
"Profile",
"r2x5VsEt",
"Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
299 book2DHistoVector( h_r2x5VsEta_ ,
"2D",
"r2x5VsEta2D",
"R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
300 book2DHistoVector( p_r2x5VsEta_ ,
"Profile",
"r2x5VsEta",
"Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
303 book2DHistoVector( h_maxEXtalOver3x3VsEt_ ,
"2D",
"maxEXtalOver3x3VsEt2D",
"(Max Xtal E)/E3x3 vs E_{T};E_{T} (GeV);(Max Xtal E)/E3x3",reducedEtBin,etMin,etMax,r9Bin,r9Min,r9Max);
304 book2DHistoVector( 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);
305 book2DHistoVector( h_maxEXtalOver3x3VsEta_ ,
"2D",
"maxEXtalOver3x3VsEta2D",
"(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
306 book2DHistoVector( p_maxEXtalOver3x3VsEta_ ,
"Profile",
"maxEXtalOver3x3VsEta",
"Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
312 book2DHistoVector( h_nTrackIsolSolid_ ,
"1D",
"nIsoTracksSolid",
"Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
313 book2DHistoVector( h_nTrackIsolSolidVsEt_ ,
"2D",
"nIsoTracksSolidVsEt2D",
"Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
314 book2DHistoVector( 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);
315 book2DHistoVector( h_nTrackIsolSolidVsEta_ ,
"2D",
"nIsoTracksSolidVsEta2D",
"Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
316 book2DHistoVector( p_nTrackIsolSolidVsEta_ ,
"Profile",
"nIsoTracksSolidVsEta",
"Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
319 book2DHistoVector( h_nTrackIsolHollow_ ,
"1D",
"nIsoTracksHollow",
"Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
320 book2DHistoVector( h_nTrackIsolHollowVsEt_ ,
"2D",
"nIsoTracksHollowVsEt2D",
"Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",reducedEtBin,etMin, etMax,numberBin,numberMin,numberMax);
321 book2DHistoVector( 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);
322 book2DHistoVector( h_nTrackIsolHollowVsEta_ ,
"2D",
"nIsoTracksHollowVsEta2D",
"Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
323 book2DHistoVector( p_nTrackIsolHollowVsEta_ ,
"Profile",
"nIsoTracksHollowVsEta",
"Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
326 book2DHistoVector( h_trackPtSumSolid_ ,
"1D",
"isoPtSumSolid",
"Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
327 book2DHistoVector( 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);
328 book2DHistoVector( 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);
329 book2DHistoVector( h_trackPtSumSolidVsEta_ ,
"2D",
"isoPtSumSolidVsEta2D",
"Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
330 book2DHistoVector( 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);
333 book2DHistoVector( h_trackPtSumHollow_ ,
"1D",
"isoPtSumHollow",
"Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
334 book2DHistoVector( 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);
335 book2DHistoVector( 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);
336 book2DHistoVector( h_trackPtSumHollowVsEta_ ,
"2D",
"isoPtSumHollowVsEta2D",
"Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
337 book2DHistoVector( 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);
343 book2DHistoVector( h_ecalSum_ ,
"1D",
"ecalSum",
"Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
344 book2DHistoVector( h_ecalSumVsEt_ ,
"2D",
"ecalSumVsEt2D",
"Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
345 book3DHistoVector( 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);
346 book2DHistoVector( h_ecalSumVsEta_ ,
"2D",
"ecalSumVsEta2D",
"Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
347 book2DHistoVector( p_ecalSumVsEta_ ,
"Profile",
"ecalSumVsEta",
"Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
350 book2DHistoVector( h_hcalSum_ ,
"1D",
"hcalSum",
"Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
351 book2DHistoVector( h_hcalSumVsEt_ ,
"2D",
"hcalSumVsEt2D",
"Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
352 book3DHistoVector( 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);
353 book2DHistoVector( h_hcalSumVsEta_ ,
"2D",
"hcalSumVsEta2D",
"Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
354 book2DHistoVector( p_hcalSumVsEta_ ,
"Profile",
"hcalSumVsEta",
"Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
357 book3DHistoVector( h_hOverE_ ,
"1D",
"hOverE",
"H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
358 book2DHistoVector( p_hOverEVsEt_ ,
"Profile",
"hOverEVsEt",
"Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
359 book2DHistoVector( p_hOverEVsEta_ ,
"Profile",
"hOverEVsEta",
"Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
360 book3DHistoVector( h_h1OverE_ ,
"1D",
"h1OverE",
"H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
361 book3DHistoVector( h_h2OverE_ ,
"1D",
"h2OverE",
"H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
367 book2DHistoVector( h_phoEt_BadChannels_ ,
"1D",
"phoEtBadChannels",
"Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",etBin,etMin,etMax);
368 book2DHistoVector( h_phoEta_BadChannels_ ,
"1D",
"phoEtaBadChannels",
"Fraction Containing Bad Channels: #eta;#eta",etaBin,etaMin,etaMax);
369 book2DHistoVector( h_phoPhi_BadChannels_ ,
"1D",
"phoPhiBadChannels",
"Fraction Containing Bad Channels: #phi;#phi",phiBin,phiMin,phiMax);
378 book3DHistoVector( h_phoConvE_ ,
"1D",
"phoConvE",
"E;E (GeV)",eBin,eMin,eMax);
379 book3DHistoVector( h_phoConvEt_ ,
"1D",
"phoConvEt",
"E_{T};E_{T} (GeV)",etBin,etMin,etMax);
383 book2DHistoVector( h_phoConvEta_ ,
"1D",
"phoConvEta",
"#eta;#eta",etaBin,etaMin,etaMax);
384 book3DHistoVector( h_phoConvPhi_ ,
"1D",
"phoConvPhi",
"#phi;#phi",phiBin,phiMin,phiMax);
388 book3DHistoVector( h_nConv_ ,
"1D",
"nConv",
"Number Of Conversions per Event ;# conversions",numberBin,numberMin,numberMax);
392 book3DHistoVector( h_phoConvR9_ ,
"1D",
"phoConvR9",
"R9;R9",r9Bin,r9Min,r9Max);
396 book3DHistoVector( h_eOverPTracks_ ,
"1D",
"eOverPTracks",
"E/P;E/P",eOverPBin,eOverPMin,eOverPMax);
397 book3DHistoVector( h_pOverETracks_ ,
"1D",
"pOverETracks",
"P/E;P/E",eOverPBin,eOverPMin,eOverPMax);
399 book3DHistoVector( h_dPhiTracksAtVtx_ ,
"1D",
"dPhiTracksAtVtx",
"#Delta#phi of Tracks at Vertex;#Delta#phi",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
400 book3DHistoVector( h_dPhiTracksAtEcal_ ,
"1D",
"dPhiTracksAtEcal",
"Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",dPhiTracksBin,0.,dPhiTracksMax);
401 book3DHistoVector( h_dEtaTracksAtEcal_ ,
"1D",
"dEtaTracksAtEcal",
"#Delta#eta of Tracks at Ecal;#Delta#eta",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
403 book3DHistoVector( h_dCotTracks_ ,
"1D",
"dCotTracks",
"#Deltacot(#theta) of Tracks;#Deltacot(#theta)",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
404 book2DHistoVector( p_dCotTracksVsEta_ ,
"Profile",
"dCotTracksVsEta",
"Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",etaBin,etaMin,etaMax,dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
406 book2DHistoVector( p_nHitsVsEta_ ,
"Profile",
"nHitsVsEta",
"Avg Number of Hits per Track vs #eta;#eta;# hits",etaBin,etaMin,etaMax,etaBin,0,16);
408 book2DHistoVector( h_tkChi2_ ,
"1D",
"tkChi2",
"#chi^{2} of Track Fitting;#chi^{2}",chi2Bin,chi2Min,chi2Max);
409 book2DHistoVector( p_tkChi2VsEta_ ,
"Profile",
"tkChi2VsEta",
"Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",etaBin,etaMin,etaMax,chi2Bin,chi2Min,chi2Max);
413 book2DHistoVector( h_convVtxRvsZ_ ,
"2D",
"convVtxRvsZ",
"Vertex Position;Z (cm);R (cm)",500,zMin,zMax,rBin,rMin,rMax);
414 book2DHistoVector( h_convVtxZEndcap_ ,
"1D",
"convVtxZEndcap",
"Vertex Position: #eta > 1.5;Z (cm)",zBin,zMin,zMax);
415 book2DHistoVector( h_convVtxZ_ ,
"1D",
"convVtxZ",
"Vertex Position;Z (cm)",zBin,zMin,zMax);
416 book2DHistoVector( h_convVtxR_ ,
"1D",
"convVtxR",
"Vertex Position: #eta < 1;R (cm)",rBin,rMin,rMax);
417 book2DHistoVector( h_convVtxYvsX_ ,
"2D",
"convVtxYvsX",
"Vertex Position: #eta < 1;X (cm);Y (cm)",xBin,xMin,xMax,yBin,yMin,yMax);
421 book2DHistoVector( h_vertexChi2Prob_ ,
"1D",
"vertexChi2Prob",
"#chi^{2} Probability of Vertex Fitting;#chi^{2}",100,0.,1.0);
435 if (nEvt_% prescaleFactor_ )
return;
437 LogInfo(
"PhotonAnalyzer") <<
"PhotonAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " << nEvt_ <<
"\n";
440 bool validTriggerEvent=
true;
443 e.
getByLabel(triggerEvent_,triggerEventHandle);
444 if(!triggerEventHandle.isValid()) {
445 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< triggerEvent_.label() << endl;
446 validTriggerEvent=
false;
448 if(validTriggerEvent) triggerEvent = *(triggerEventHandle.product());
451 bool validPhotons=
true;
454 e.
getByLabel(photonProducer_, photonCollection_ , photonHandle);
455 if ( !photonHandle.isValid()) {
456 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< photonCollection_ << endl;
459 if(validPhotons) photonCollection = *(photonHandle.product());
462 bool validloosePhotonID=
true;
465 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLoose", loosePhotonFlag);
466 if ( !loosePhotonFlag.isValid()) {
467 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDLoose" << endl;
468 validloosePhotonID=
false;
470 if (validloosePhotonID) loosePhotonID = *(loosePhotonFlag.product());
472 bool validtightPhotonID=
true;
475 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDTight", tightPhotonFlag);
476 if ( !tightPhotonFlag.isValid()) {
477 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDTight" << endl;
478 validtightPhotonID=
false;
480 if (validtightPhotonID) tightPhotonID = *(tightPhotonFlag.product());
495 int nConv[100][3][3];
511 for(uint filterIndex=0;filterIndex<triggerEvent.sizeFilters();++filterIndex){
513 string label = triggerEvent.filterTag(filterIndex).label();
515 if(label.find(
"Photon" ) != string::npos ) {
517 for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.filterKeys(filterIndex).size();++filterKeyIndex){
518 Keys.push_back(triggerEvent.filterKeys(filterIndex)[filterKeyIndex]);
528 for ( uint
i=0 ;
i<
Keys.size() ; )
530 if (
i!=(
Keys.size()-1))
540 int photonCounter = 0;
544 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
549 h_phoEta_preHLT_->Fill((*iPho).eta());
550 h_phoEt_preHLT_->Fill( (*iPho).et());
554 double deltaRMin=1000.;
558 for (vector<int>::const_iterator objectKey=
Keys.begin();objectKey!=
Keys.end();objectKey++){
560 deltaR =
reco::deltaR(triggerEvent.getObjects()[(*objectKey)].eta(),triggerEvent.getObjects()[(*objectKey)].phi(),(*iPho).superCluster()->eta(),(*iPho).superCluster()->phi());
561 if(deltaR < deltaRMin) deltaRMin =
deltaR;
565 if(deltaRMin > deltaRMax) {
566 if(useTriggerFiltering_)
continue;
569 if(deltaRMin <= deltaRMax) {
570 h_phoEta_postHLT_->Fill((*iPho).eta() );
571 h_phoEt_postHLT_->Fill( (*iPho).et() );
574 if ((*iPho).et() < minPhoEtCut_)
continue;
581 bool isLoosePhoton(
false), isTightPhoton(
false);
582 if ( !isHeavyIon_ ) {
583 isLoosePhoton = (loosePhotonID)[photonref];
584 isTightPhoton = (tightPhotonID)[photonref];
590 bool phoIsInBarrel=
false;
591 bool phoIsInEndcap=
false;
592 float etaPho = (*iPho).superCluster()->eta();
593 if ( fabs(etaPho) < 1.479 )
600 if ( phoIsInBarrel ) part = 1;
601 if ( phoIsInEndcap ) part = 2;
604 bool isIsolated=
false;
605 if ( isolationStrength_ == 0) isIsolated = isLoosePhoton;
606 if ( isolationStrength_ == 1) isIsolated = isTightPhoton;
609 if ( isIsolated ) type=1;
610 if ( !excludeBkgHistos_ && !isIsolated ) type=2;
614 bool validEcalRecHits=
true;
617 if ( phoIsInBarrel ) {
619 e.
getByLabel(barrelRecHitProducer_, barrelRecHitCollection_, ecalRecHitHandle);
620 if (!ecalRecHitHandle.
isValid()) {
621 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<barrelRecHitProducer_;
622 validEcalRecHits=
false;
625 else if ( phoIsInEndcap ) {
627 e.
getByLabel(endcapRecHitProducer_, endcapRecHitCollection_, ecalRecHitHandle);
628 if (!ecalRecHitHandle.
isValid()) {
629 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<endcapRecHitProducer_;
630 validEcalRecHits=
false;
633 if (validEcalRecHits) ecalRecHitCollection = *(ecalRecHitHandle.
product());
641 h_phoEta_Loose_->Fill((*iPho).eta());
642 h_phoEt_Loose_->Fill( (*iPho).et() );
645 h_phoEta_Tight_->Fill((*iPho).eta());
646 h_phoEt_Tight_->Fill( (*iPho).et() );
651 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
652 double Et = (*iPho).et();
653 bool passesCuts =
false;
656 if ( useBinning_ && Et > (
cut+1)*cutStep_ && ( (Et < (
cut+2)*cutStep_) | (
cut == numberOfSteps_-1) ) ){
659 else if ( !useBinning_ && Et > (
cut+1)*cutStep_ ){
668 fill2DHistoVector(h_nTrackIsolSolid_, (*iPho).nTrkSolidConeDR04(),
cut,
type);
669 fill2DHistoVector(h_nTrackIsolHollow_,(*iPho).nTrkHollowConeDR04(),
cut,
type);
671 fill2DHistoVector(h_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
672 fill2DHistoVector(p_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
673 fill2DHistoVector(h_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
674 fill2DHistoVector(p_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
676 fill2DHistoVector(h_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
677 fill2DHistoVector(p_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
678 fill2DHistoVector(h_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
679 fill2DHistoVector(p_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
682 fill2DHistoVector(h_trackPtSumSolid_, (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
683 fill2DHistoVector(h_trackPtSumHollow_,(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
685 fill2DHistoVector(h_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
686 fill2DHistoVector(p_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
687 fill2DHistoVector(h_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
688 fill2DHistoVector(p_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
690 fill2DHistoVector(h_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
691 fill2DHistoVector(p_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
692 fill2DHistoVector(h_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),
cut,
type);
693 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);
726 fill3DHistoVector(h_phoE_, (*iPho).energy(),
cut,
type,
part);
727 fill3DHistoVector(h_phoEt_,(*iPho).et(),
cut,
type,
part);
731 fill2DHistoVector(h_phoEta_,(*iPho).eta(),
cut,
type);
732 fill2DHistoVector(h_scEta_, (*iPho).superCluster()->eta(),
cut,
type);
734 fill3DHistoVector(h_phoPhi_,(*iPho).phi(),
cut,
type,
part);
735 fill3DHistoVector(h_scPhi_, (*iPho).superCluster()->phi(),
cut,
type,
part);
739 fill3DHistoVector(h_r9_,(*iPho).r9(),
cut,
type,
part);
740 fill2DHistoVector(h_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
741 fill2DHistoVector(p_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
742 fill2DHistoVector(h_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
743 fill2DHistoVector(p_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
745 fill2DHistoVector(h_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
746 fill2DHistoVector(p_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
747 fill2DHistoVector(h_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
748 fill2DHistoVector(p_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
750 fill2DHistoVector(h_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
751 fill2DHistoVector(p_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
752 fill2DHistoVector(h_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
753 fill2DHistoVector(p_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
755 fill2DHistoVector(h_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
756 fill2DHistoVector(p_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
757 fill2DHistoVector(h_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
758 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);
848 fill2DHistoVector(h_phoConvEtaForEfficiency_,(*iPho).eta(),
cut,
type);
849 fill3DHistoVector(h_phoConvPhiForEfficiency_,(*iPho).phi(),
cut,
type,
part);
853 double convR=
sqrt(aConv->conversionVertex().position().perp2());
854 double scalar = aConv->conversionVertex().position().x()*aConv->refittedPairMomentum().x() + aConv->conversionVertex().position().y()*aConv->refittedPairMomentum().y();
855 if ( scalar < 0 ) convR= -convR;
857 fill2DHistoVector(h_convVtxRvsZ_,aConv->conversionVertex().position().z(), convR,
cut,
type);
858 fill2DHistoVector(h_convVtxZ_,aConv->conversionVertex().position().z(),
cut,
type);
860 if(fabs(aConv->caloCluster()[0]->eta()) > 1.5){
861 fill2DHistoVector(h_convVtxZEndcap_,aConv->conversionVertex().position().z(),
cut,
type);
863 else if(fabs(aConv->caloCluster()[0]->eta()) < 1){
864 fill2DHistoVector(h_convVtxR_,convR,cut,type);
865 fill2DHistoVector(h_convVtxYvsX_,aConv->conversionVertex().position().x(),aConv->conversionVertex().position().y(),
cut,
type);
868 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
871 for (
unsigned int i=0;
i<tracks.size();
i++) {
872 fill2DHistoVector(h_tkChi2_,tracks[
i]->normalizedChi2(),cut,type);
873 fill2DHistoVector(p_tkChi2VsEta_,aConv->caloCluster()[0]->eta(),tracks[
i]->normalizedChi2(),
cut,
type);
874 fill2DHistoVector(p_dCotTracksVsEta_,aConv->caloCluster()[0]->eta(),aConv->pairCotThetaSeparation(),
cut,
type);
875 fill2DHistoVector(p_nHitsVsEta_,aConv->caloCluster()[0]->eta(),float(tracks[
i]->numberOfValidHits()),
cut,
type);
880 float DPhiTracksAtVtx = -99;
881 float dPhiTracksAtEcal= -99;
882 float dEtaTracksAtEcal= -99;
884 float phiTk1= aConv->tracksPin()[0].phi();
885 float phiTk2= aConv->tracksPin()[1].phi();
886 DPhiTracksAtVtx = phiTk1-phiTk2;
887 DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
889 if (aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
890 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
891 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
892 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
893 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
895 recoPhi1 = phiNormalization(recoPhi1);
896 recoPhi2 = phiNormalization(recoPhi2);
898 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
899 dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
900 dEtaTracksAtEcal = recoEta1 -recoEta2;
905 fill3DHistoVector(h_dPhiTracksAtVtx_,DPhiTracksAtVtx,cut,type,part);
906 fill3DHistoVector(h_dPhiTracksAtEcal_,fabs(dPhiTracksAtEcal),cut,type,part);
907 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,cut,type,part);
908 fill3DHistoVector(h_eOverPTracks_,aConv->EoverPrefittedTracks(),
cut,
type,
part);
909 fill3DHistoVector(h_pOverETracks_,1./aConv->EoverPrefittedTracks(),
cut,
type,
part);
910 fill3DHistoVector(h_dCotTracks_,aConv->pairCotThetaSeparation(),
cut,
type,
part);
924 if (isIsolated && iPho->et()>=invMassEtCut_){
926 for (reco::PhotonCollection::const_iterator iPho2=iPho+1; iPho2!=photonCollection.end(); iPho2++){
931 bool isTightPhoton2(
false), isLoosePhoton2(
false);
933 if ( !isHeavyIon_ ) {
934 isTightPhoton2 = (tightPhotonID)[photonref2];
935 isLoosePhoton2 = (loosePhotonID)[photonref2];
938 bool isIsolated2=
false;
939 if ( isolationStrength_ == 0) isIsolated2 = isLoosePhoton2;
940 if ( isolationStrength_ == 1) isIsolated2 = isTightPhoton2;
945 if(isIsolated2 && iPho2->et()>=invMassEtCut_){
948 float gamgamMass2 = p12.Dot(p12);
951 h_invMassAllPhotons_ ->
Fill(
sqrt( gamgamMass2 ));
953 if(conversions.
size()!=0 && conversions[0]->nTracks() >= 2){
954 if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassTwoWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
955 else h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
957 else if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
958 else h_invMassZeroWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
971 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
989 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
990 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
991 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
992 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1006 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
1007 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
1008 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
1009 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1024 const float PI = 3.1415927;
1027 if(phi > PI) {phi = phi -
TWOPI;}
1028 if(phi < -PI) {phi = phi +
TWOPI;}
1036 histoVector[
cut][0]->Fill(x,y);
1037 if(histoVector[cut].
size()>1) histoVector[
cut][
type]->Fill(x,y);
1043 histoVector[
cut][0]->Fill(x);
1044 histoVector[
cut][
type]->Fill(x);
1050 histoVector[
cut][0][0]->Fill(x);
1051 histoVector[
cut][0][
part]->Fill(x);
1052 histoVector[
cut][
type][0]->Fill(x);
1059 histoVector[
cut][0][0]->Fill(x,y);
1060 histoVector[
cut][0][
part]->Fill(x,y);
1061 histoVector[
cut][
type][0]->Fill(x,y);
1070 int histo_index = 0;
1071 stringstream histo_number_stream;
1074 if(
dbe_->
pwd().find(
"InvMass" ) != string::npos){
1075 histo_index_invMass_++;
1076 histo_index = histo_index_invMass_;
1078 if(
dbe_->
pwd().find(
"Efficiencies" ) != string::npos){
1079 histo_index_efficiency_++;
1080 histo_index = histo_index_efficiency_;
1083 histo_number_stream <<
"h_";
1084 if(histo_index<10) histo_number_stream <<
"0";
1085 histo_number_stream << histo_index;
1093 string histoType,
string histoName,
string title,
1094 int xbin,
double xmin,
double xmax,
1095 int ybin,
double ymin,
double ymax)
1097 int histo_index = 0;
1099 vector<MonitorElement*> temp1DVector;
1103 bool conversionPlot =
false;
1104 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1105 bool TwoDPlot =
false;
1106 if(histoName.find(
"2D" ) != string::npos) TwoDPlot =
true;
1109 histo_index_conversions_++;
1110 histo_index = histo_index_conversions_;
1113 histo_index_photons_++;
1114 histo_index = histo_index_photons_;
1117 stringstream histo_number_stream;
1118 histo_number_stream <<
"h_";
1119 if(histo_index<10) histo_number_stream <<
"0";
1120 histo_number_stream << histo_index <<
"_";
1124 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1128 currentFolder_.str(
"");
1129 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1130 if(conversionPlot) currentFolder_ <<
"/Conversions";
1135 if(conversionPlot) kind =
" Conversions: ";
1136 else kind =
" Photons: ";
1138 if(histoType==
"1D") temp1DVector.push_back(
dbe_->
book1D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax));
1139 else if(histoType==
"2D"){
1140 if((TwoDPlot &&
type==0) || !TwoDPlot){
1141 temp1DVector.push_back(
dbe_->
book2D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax,ybin,ymin,ymax));
1144 else if(histoType==
"Profile") temp1DVector.push_back(
dbe_->
bookProfile( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,xmin,xmax,ybin,ymin,ymax,
""));
1145 else cout <<
"bad histoType\n";
1148 temp2DVector.push_back(temp1DVector);
1149 temp1DVector.clear();
1158 string histoType,
string histoName,
string title,
1159 int xbin,
double xmin,
double xmax,
1160 int ybin,
double ymin,
double ymax)
1164 int histo_index = 0;
1166 vector<MonitorElement*> temp1DVector;
1167 vector<vector<MonitorElement*> > temp2DVector;
1172 bool conversionPlot =
false;
1173 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1177 histo_index_conversions_++;
1178 histo_index = histo_index_conversions_;
1181 histo_index_photons_++;
1182 histo_index = histo_index_photons_;
1187 stringstream histo_number_stream;
1188 histo_number_stream <<
"h_";
1189 if(histo_index<10) histo_number_stream <<
"0";
1190 histo_number_stream << histo_index <<
"_";
1192 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1198 currentFolder_.str(
"");
1199 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1200 if(conversionPlot) currentFolder_ <<
"/Conversions";
1205 if(conversionPlot) kind =
" Conversions: ";
1206 else kind =
" Photons: ";
1208 if(histoType==
"1D") temp1DVector.push_back(
dbe_->
book1D( histo_number_stream.str()+histoName+parts_[
part],types_[
type]+kind+parts_[
part]+
": "+
title,xbin,xmin,xmax));
1209 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));
1210 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,
""));
1211 else cout <<
"bad histoType\n";
1216 temp2DVector.push_back(temp1DVector);
1217 temp1DVector.clear();
1220 temp3DVector.push_back(temp2DVector);
1221 temp2DVector.clear();
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< EcalRecHit >::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)
const T & max(const T &a, const T &b)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
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)
void book3DHistoVector(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 etMin(const PFCandidate &cand, double cut)
const_iterator end() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
virtual ~PhotonAnalyzer()
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.
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
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
double scalar(const CLHEP::HepGenMatrix &m)
Return the matrix as a scalar. Raise an assertion if the matris is not .
void book2DHistoVector(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)