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_invMassPhotonsEBarrel_ = bookHisto(
"invMassIsoPhotonsEBarrel",
"Two photon invariant mass: isolated photons in barrel; M (GeV)",etBin,etMin,etMax);
239 h_invMassPhotonsEEndcap_ = bookHisto(
"invMassIsoPhotonsEEndcap",
"Two photon invariant mass: isolated photons in endcap; M (GeV)",etBin,etMin,etMax);
241 h_invMassZeroWithTracks_= bookHisto(
"invMassZeroWithTracks",
"Two photon invariant mass: Neither has tracks;M (GeV)", etBin,etMin,etMax);
242 h_invMassOneWithTracks_ = bookHisto(
"invMassOneWithTracks",
"Two photon invariant mass: Only one has tracks;M (GeV)", etBin,etMin,etMax);
243 h_invMassTwoWithTracks_ = bookHisto(
"invMassTwoWithTracks",
"Two photon invariant mass: Both have tracks;M (GeV)", etBin,etMin,etMax);
250 book3DHistoVector(h_phoE_,
"1D",
"phoE",
"Energy;E (GeV)",eBin,eMin,eMax);
251 book3DHistoVector(h_phoEt_,
"1D",
"phoEt",
"E_{T};E_{T} (GeV)", etBin,etMin,etMax);
255 book3DHistoVector(h_nPho_,
"1D",
"nPho",
"Number of Photons per Event;# #gamma",numberBin,numberMin,numberMax);
260 book2DHistoVector(h_phoEta_,
"1D",
"phoEta",
"#eta;#eta",etaBin,etaMin,etaMax) ;
261 book3DHistoVector(h_phoPhi_,
"1D",
"phoPhi",
"#phi;#phi",phiBin,phiMin,phiMax) ;
264 book2DHistoVector(h_scEta_,
"1D",
"scEta",
"SuperCluster #eta;#eta",etaBin,etaMin,etaMax) ;
265 book3DHistoVector(h_scPhi_,
"1D",
"scPhi",
"SuperCluster #phi;#phi",phiBin,phiMin,phiMax) ;
270 book3DHistoVector(h_r9_,
"1D",
"r9",
"R9;R9",r9Bin,r9Min, r9Max);
271 book2DHistoVector(h_r9VsEt_,
"2D",
"r9VsEt2D",
"R9 vs E_{T};E_{T} (GeV);R9",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
272 book2DHistoVector(p_r9VsEt_,
"Profile",
"r9VsEt",
"Avg R9 vs E_{T};E_{T} (GeV);R9",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
273 book2DHistoVector(h_r9VsEta_,
"2D",
"r9VsEta2D",
"R9 vs #eta;#eta;R9",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
274 book2DHistoVector(p_r9VsEta_,
"Profile",
"r9VsEta",
"Avg R9 vs #eta;#eta;R9",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
277 book3DHistoVector(h_phoSigmaIetaIeta_,
"1D",
"phoSigmaIetaIeta",
"#sigma_{i#etai#eta};#sigma_{i#etai#eta}",sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
278 book2DHistoVector(h_sigmaIetaIetaVsEta_,
"2D",
"sigmaIetaIetaVsEta2D",
"#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",reducedEtaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
279 book2DHistoVector(p_sigmaIetaIetaVsEta_,
"Profile",
"sigmaIetaIetaVsEta",
"Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",etaBin,etaMin,etaMax,sigmaIetaBin,sigmaIetaMin,sigmaIetaMax);
282 book2DHistoVector(h_e1x5VsEt_,
"2D",
"e1x5VsEt2D",
"E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
283 book2DHistoVector(p_e1x5VsEt_,
"Profile",
"e1x5VsEt",
"Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
284 book2DHistoVector(h_e1x5VsEta_,
"2D",
"e1x5VsEta2D",
"E1x5 vs #eta;#eta;E1X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
285 book2DHistoVector(p_e1x5VsEta_,
"Profile",
"e1x5VsEta",
"Avg E1x5 vs #eta;#eta;E1X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
288 book2DHistoVector(h_e2x5VsEt_,
"2D",
"e2x5VsEt2D",
"E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",reducedEtBin,etMin,etMax,reducedEtBin,etMin,etMax);
289 book2DHistoVector(p_e2x5VsEt_,
"Profile",
"e2x5VsEt",
"Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",etBin,etMin,etMax,etBin,etMin,etMax);
290 book2DHistoVector(h_e2x5VsEta_,
"2D",
"e2x5VsEta2D",
"E2x5 vs #eta;#eta;E2X5 (GeV)",reducedEtaBin,etaMin,etaMax,reducedEtBin,etMin,etMax);
291 book2DHistoVector(p_e2x5VsEta_,
"Profile",
"e2x5VsEta",
"Avg E2x5 vs #eta;#eta;E2X5 (GeV)",etaBin,etaMin,etaMax,etBin,etMin,etMax);
294 book2DHistoVector(h_r1x5VsEt_,
"2D",
"r1x5VsEt2D",
"R1x5 vs E_{T};E_{T} (GeV);R1X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
295 book2DHistoVector(p_r1x5VsEt_,
"Profile",
"r1x5VsEt",
"Avg R1x5 vs E_{T};E_{T} (GeV);R1X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
296 book2DHistoVector(h_r1x5VsEta_,
"2D",
"r1x5VsEta2D",
"R1x5 vs #eta;#eta;R1X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
297 book2DHistoVector(p_r1x5VsEta_,
"Profile",
"r1x5VsEta",
"Avg R1x5 vs #eta;#eta;R1X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
300 book2DHistoVector( h_r2x5VsEt_ ,
"2D",
"r2x5VsEt2D",
"R2x5 vs E_{T};E_{T} (GeV);R2X5",reducedEtBin,etMin,etMax,reducedR9Bin,r9Min,r9Max);
301 book2DHistoVector( p_r2x5VsEt_ ,
"Profile",
"r2x5VsEt",
"Avg R2x5 vs E_{T};E_{T} (GeV);R2X5",etBin,etMin,etMax,r9Bin,r9Min,r9Max);
302 book2DHistoVector( h_r2x5VsEta_ ,
"2D",
"r2x5VsEta2D",
"R2x5 vs #eta;#eta;R2X5",reducedEtaBin,etaMin,etaMax,reducedR9Bin,r9Min,r9Max);
303 book2DHistoVector( p_r2x5VsEta_ ,
"Profile",
"r2x5VsEta",
"Avg R2x5 vs #eta;#eta;R2X5",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
306 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);
307 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);
308 book2DHistoVector( h_maxEXtalOver3x3VsEta_ ,
"2D",
"maxEXtalOver3x3VsEta2D",
"(Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",reducedEtaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
309 book2DHistoVector( p_maxEXtalOver3x3VsEta_ ,
"Profile",
"maxEXtalOver3x3VsEta",
"Avg (Max Xtal E)/E3x3 vs #eta;#eta;(Max Xtal E)/E3x3",etaBin,etaMin,etaMax,r9Bin,r9Min,r9Max);
315 book2DHistoVector( h_nTrackIsolSolid_ ,
"1D",
"nIsoTracksSolid",
"Number Of Tracks in the Solid Iso Cone;# tracks",numberBin,numberMin,numberMax);
316 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);
317 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);
318 book2DHistoVector( h_nTrackIsolSolidVsEta_ ,
"2D",
"nIsoTracksSolidVsEta2D",
"Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
319 book2DHistoVector( p_nTrackIsolSolidVsEta_ ,
"Profile",
"nIsoTracksSolidVsEta",
"Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
322 book2DHistoVector( h_nTrackIsolHollow_ ,
"1D",
"nIsoTracksHollow",
"Number Of Tracks in the Hollow Iso Cone;# tracks",numberBin,numberMin,numberMax);
323 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);
324 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);
325 book2DHistoVector( h_nTrackIsolHollowVsEta_ ,
"2D",
"nIsoTracksHollowVsEta2D",
"Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",reducedEtaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
326 book2DHistoVector( p_nTrackIsolHollowVsEta_ ,
"Profile",
"nIsoTracksHollowVsEta",
"Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",etaBin,etaMin, etaMax,numberBin,numberMin,numberMax);
329 book2DHistoVector( h_trackPtSumSolid_ ,
"1D",
"isoPtSumSolid",
"Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
330 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);
331 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);
332 book2DHistoVector( h_trackPtSumSolidVsEta_ ,
"2D",
"isoPtSumSolidVsEta2D",
"Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
333 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);
336 book2DHistoVector( h_trackPtSumHollow_ ,
"1D",
"isoPtSumHollow",
"Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)",sumBin,sumMin,sumMax);
337 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);
338 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);
339 book2DHistoVector( h_trackPtSumHollowVsEta_ ,
"2D",
"isoPtSumHollowVsEta2D",
"Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
340 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);
346 book2DHistoVector( h_ecalSum_ ,
"1D",
"ecalSum",
"Ecal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
347 book2DHistoVector( h_ecalSumEBarrel_,
"1D",
"ecalSumEBarrel",
"Ecal Sum in the IsoCone for Barrel;E (GeV)",sumBin,sumMin,sumMax);
348 book2DHistoVector( h_ecalSumEEndcap_,
"1D",
"ecalSumEEndcap",
"Ecal Sum in the IsoCone for Endcap;E (GeV)",sumBin,sumMin,sumMax);
349 book2DHistoVector( h_ecalSumVsEt_ ,
"2D",
"ecalSumVsEt2D",
"Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
350 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);
351 book2DHistoVector( h_ecalSumVsEta_ ,
"2D",
"ecalSumVsEta2D",
"Ecal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
352 book2DHistoVector( p_ecalSumVsEta_ ,
"Profile",
"ecalSumVsEta",
"Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
355 book2DHistoVector( h_hcalSum_ ,
"1D",
"hcalSum",
"Hcal Sum in the Iso Cone;E (GeV)",sumBin,sumMin,sumMax);
356 book2DHistoVector( h_hcalSumEBarrel_,
"1D",
"hcalSumEBarrel",
"Hcal Sum in the IsoCone for Barrel;E (GeV)",sumBin,sumMin,sumMax);
357 book2DHistoVector( h_hcalSumEEndcap_,
"1D",
"hcalSumEEndcap",
"Hcal Sum in the IsoCone for Endcap;E (GeV)",sumBin,sumMin,sumMax);
358 book2DHistoVector( h_hcalSumVsEt_ ,
"2D",
"hcalSumVsEt2D",
"Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",reducedEtBin,etMin, etMax,reducedSumBin,sumMin,sumMax);
359 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);
360 book2DHistoVector( h_hcalSumVsEta_ ,
"2D",
"hcalSumVsEta2D",
"Hcal Sum in the Iso Cone;#eta;E (GeV)",reducedEtaBin,etaMin, etaMax,reducedSumBin,sumMin,sumMax);
361 book2DHistoVector( p_hcalSumVsEta_ ,
"Profile",
"hcalSumVsEta",
"Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",etaBin,etaMin, etaMax,sumBin,sumMin,sumMax);
364 book3DHistoVector( h_hOverE_ ,
"1D",
"hOverE",
"H/E;H/E",hOverEBin,hOverEMin,hOverEMax);
365 book2DHistoVector( p_hOverEVsEt_ ,
"Profile",
"hOverEVsEt",
"Avg H/E vs Et;E_{T} (GeV);H/E",etBin,etMin,etMax,hOverEBin,hOverEMin,hOverEMax);
366 book2DHistoVector( p_hOverEVsEta_ ,
"Profile",
"hOverEVsEta",
"Avg H/E vs #eta;#eta;H/E",etaBin,etaMin,etaMax,hOverEBin,hOverEMin,hOverEMax);
367 book3DHistoVector( h_h1OverE_ ,
"1D",
"h1OverE",
"H/E for Depth 1;H/E",hOverEBin,hOverEMin,hOverEMax);
368 book3DHistoVector( h_h2OverE_ ,
"1D",
"h2OverE",
"H/E for Depth 2;H/E",hOverEBin,hOverEMin,hOverEMax);
374 book2DHistoVector( h_phoEt_BadChannels_ ,
"1D",
"phoEtBadChannels",
"Fraction Containing Bad Channels: E_{T};E_{T} (GeV)",etBin,etMin,etMax);
375 book2DHistoVector( h_phoEta_BadChannels_ ,
"1D",
"phoEtaBadChannels",
"Fraction Containing Bad Channels: #eta;#eta",etaBin,etaMin,etaMax);
376 book2DHistoVector( h_phoPhi_BadChannels_ ,
"1D",
"phoPhiBadChannels",
"Fraction Containing Bad Channels: #phi;#phi",phiBin,phiMin,phiMax);
385 book3DHistoVector( h_phoConvE_ ,
"1D",
"phoConvE",
"E;E (GeV)",eBin,eMin,eMax);
386 book3DHistoVector( h_phoConvEt_ ,
"1D",
"phoConvEt",
"E_{T};E_{T} (GeV)",etBin,etMin,etMax);
390 book2DHistoVector( h_phoConvEta_ ,
"1D",
"phoConvEta",
"#eta;#eta",etaBin,etaMin,etaMax);
391 book3DHistoVector( h_phoConvPhi_ ,
"1D",
"phoConvPhi",
"#phi;#phi",phiBin,phiMin,phiMax);
395 book3DHistoVector( h_nConv_ ,
"1D",
"nConv",
"Number Of Conversions per Event ;# conversions",numberBin,numberMin,numberMax);
399 book3DHistoVector( h_phoConvR9_ ,
"1D",
"phoConvR9",
"R9;R9",r9Bin,r9Min,r9Max);
403 book3DHistoVector( h_eOverPTracks_ ,
"1D",
"eOverPTracks",
"E/P;E/P",eOverPBin,eOverPMin,eOverPMax);
404 book3DHistoVector( h_pOverETracks_ ,
"1D",
"pOverETracks",
"P/E;P/E",eOverPBin,eOverPMin,eOverPMax);
406 book3DHistoVector( h_dPhiTracksAtVtx_ ,
"1D",
"dPhiTracksAtVtx",
"#Delta#phi of Tracks at Vertex;#Delta#phi",dPhiTracksBin,dPhiTracksMin,dPhiTracksMax);
407 book3DHistoVector( h_dPhiTracksAtEcal_ ,
"1D",
"dPhiTracksAtEcal",
"Abs(#Delta#phi) of Tracks at Ecal;#Delta#phi",dPhiTracksBin,0.,dPhiTracksMax);
408 book3DHistoVector( h_dEtaTracksAtEcal_ ,
"1D",
"dEtaTracksAtEcal",
"#Delta#eta of Tracks at Ecal;#Delta#eta",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
410 book3DHistoVector( h_dCotTracks_ ,
"1D",
"dCotTracks",
"#Deltacot(#theta) of Tracks;#Deltacot(#theta)",dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
411 book2DHistoVector( p_dCotTracksVsEta_ ,
"Profile",
"dCotTracksVsEta",
"Avg #Deltacot(#theta) of Tracks vs #eta;#eta;#Deltacot(#theta)",etaBin,etaMin,etaMax,dEtaTracksBin,dEtaTracksMin,dEtaTracksMax);
413 book2DHistoVector( p_nHitsVsEta_ ,
"Profile",
"nHitsVsEta",
"Avg Number of Hits per Track vs #eta;#eta;# hits",etaBin,etaMin,etaMax,etaBin,0,16);
415 book2DHistoVector( h_tkChi2_ ,
"1D",
"tkChi2",
"#chi^{2} of Track Fitting;#chi^{2}",chi2Bin,chi2Min,chi2Max);
416 book2DHistoVector( p_tkChi2VsEta_ ,
"Profile",
"tkChi2VsEta",
"Avg #chi^{2} of Track Fitting vs #eta;#eta;#chi^{2}",etaBin,etaMin,etaMax,chi2Bin,chi2Min,chi2Max);
420 book2DHistoVector( h_convVtxRvsZ_ ,
"2D",
"convVtxRvsZ",
"Vertex Position;Z (cm);R (cm)",500,zMin,zMax,rBin,rMin,rMax);
421 book2DHistoVector( h_convVtxZEndcap_ ,
"1D",
"convVtxZEndcap",
"Vertex Position: #eta > 1.5;Z (cm)",zBin,zMin,zMax);
422 book2DHistoVector( h_convVtxZ_ ,
"1D",
"convVtxZ",
"Vertex Position;Z (cm)",zBin,zMin,zMax);
423 book2DHistoVector( h_convVtxR_ ,
"1D",
"convVtxR",
"Vertex Position: #eta < 1;R (cm)",rBin,rMin,rMax);
424 book2DHistoVector( h_convVtxYvsX_ ,
"2D",
"convVtxYvsX",
"Vertex Position: #eta < 1;X (cm);Y (cm)",xBin,xMin,xMax,yBin,yMin,yMax);
428 book2DHistoVector( h_vertexChi2Prob_ ,
"1D",
"vertexChi2Prob",
"#chi^{2} Probability of Vertex Fitting;#chi^{2}",100,0.,1.0);
442 if (nEvt_% prescaleFactor_ )
return;
444 LogInfo(
"PhotonAnalyzer") <<
"PhotonAnalyzer Analyzing event number: " << e.
id() <<
" Global Counter " << nEvt_ <<
"\n";
447 bool validTriggerEvent=
true;
450 e.
getByLabel(triggerEvent_,triggerEventHandle);
451 if(!triggerEventHandle.isValid()) {
452 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< triggerEvent_.label() << endl;
453 validTriggerEvent=
false;
455 if(validTriggerEvent) triggerEvent = *(triggerEventHandle.product());
458 bool validPhotons=
true;
461 e.
getByLabel(photonProducer_, photonCollection_ , photonHandle);
462 if ( !photonHandle.isValid()) {
463 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<< photonCollection_ << endl;
466 if(validPhotons) photonCollection = *(photonHandle.product());
469 bool validloosePhotonID=
true;
472 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDLoose", loosePhotonFlag);
473 if ( !loosePhotonFlag.isValid()) {
474 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDLoose" << endl;
475 validloosePhotonID=
false;
477 if (validloosePhotonID) loosePhotonID = *(loosePhotonFlag.product());
479 bool validtightPhotonID=
true;
482 e.
getByLabel(
"PhotonIDProd",
"PhotonCutBasedIDTight", tightPhotonFlag);
483 if ( !tightPhotonFlag.isValid()) {
484 edm::LogInfo(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<
"PhotonCutBasedIDTight" << endl;
485 validtightPhotonID=
false;
487 if (validtightPhotonID) tightPhotonID = *(tightPhotonFlag.product());
502 int nConv[100][3][3];
518 for(uint filterIndex=0;filterIndex<triggerEvent.sizeFilters();++filterIndex){
520 string label = triggerEvent.filterTag(filterIndex).label();
522 if(label.find(
"Photon" ) != string::npos ) {
524 for(uint filterKeyIndex=0;filterKeyIndex<triggerEvent.filterKeys(filterIndex).size();++filterKeyIndex){
525 Keys.push_back(triggerEvent.filterKeys(filterIndex)[filterKeyIndex]);
535 for ( uint
i=0 ;
i<
Keys.size() ; )
537 if (
i!=(
Keys.size()-1))
547 int photonCounter = 0;
551 for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
556 h_phoEta_preHLT_->Fill((*iPho).eta());
557 h_phoEt_preHLT_->Fill( (*iPho).et());
561 double deltaRMin=1000.;
565 for (vector<int>::const_iterator objectKey=
Keys.begin();objectKey!=
Keys.end();objectKey++){
567 deltaR =
reco::deltaR(triggerEvent.getObjects()[(*objectKey)].eta(),triggerEvent.getObjects()[(*objectKey)].phi(),(*iPho).superCluster()->eta(),(*iPho).superCluster()->phi());
568 if(deltaR < deltaRMin) deltaRMin =
deltaR;
572 if(deltaRMin > deltaRMax) {
573 if(useTriggerFiltering_)
continue;
576 if(deltaRMin <= deltaRMax) {
577 h_phoEta_postHLT_->Fill((*iPho).eta() );
578 h_phoEt_postHLT_->Fill( (*iPho).et() );
581 if ((*iPho).et() < minPhoEtCut_)
continue;
588 bool isLoosePhoton(
false), isTightPhoton(
false);
589 if ( !isHeavyIon_ ) {
590 isLoosePhoton = (loosePhotonID)[photonref];
591 isTightPhoton = (tightPhotonID)[photonref];
597 bool phoIsInBarrel=
false;
598 bool phoIsInEndcap=
false;
599 float etaPho = (*iPho).superCluster()->eta();
600 if ( fabs(etaPho) < 1.479 )
607 if ( phoIsInBarrel ) part = 1;
608 if ( phoIsInEndcap ) part = 2;
611 bool isIsolated=
false;
612 if ( isolationStrength_ == 0) isIsolated = isLoosePhoton;
613 if ( isolationStrength_ == 1) isIsolated = isTightPhoton;
616 if ( isIsolated ) type=1;
617 if ( !excludeBkgHistos_ && !isIsolated ) type=2;
621 bool validEcalRecHits=
true;
624 if ( phoIsInBarrel ) {
626 e.
getByLabel(barrelRecHitProducer_, barrelRecHitCollection_, ecalRecHitHandle);
627 if (!ecalRecHitHandle.
isValid()) {
628 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<barrelRecHitProducer_;
629 validEcalRecHits=
false;
632 else if ( phoIsInEndcap ) {
634 e.
getByLabel(endcapRecHitProducer_, endcapRecHitCollection_, ecalRecHitHandle);
635 if (!ecalRecHitHandle.
isValid()) {
636 edm::LogError(
"PhotonAnalyzer") <<
"Error! Can't get the product "<<endcapRecHitProducer_;
637 validEcalRecHits=
false;
640 if (validEcalRecHits) ecalRecHitCollection = *(ecalRecHitHandle.
product());
648 h_phoEta_Loose_->Fill((*iPho).eta());
649 h_phoEt_Loose_->Fill( (*iPho).et() );
652 h_phoEta_Tight_->Fill((*iPho).eta());
653 h_phoEt_Tight_->Fill( (*iPho).et() );
658 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
659 double Et = (*iPho).et();
660 bool passesCuts =
false;
663 if ( useBinning_ && Et > (
cut+1)*cutStep_ && ( (Et < (
cut+2)*cutStep_) | (
cut == numberOfSteps_-1) ) ){
666 else if ( !useBinning_ && Et > (
cut+1)*cutStep_ ){
675 fill2DHistoVector(h_nTrackIsolSolid_, (*iPho).nTrkSolidConeDR04(),
cut,
type);
676 fill2DHistoVector(h_nTrackIsolHollow_,(*iPho).nTrkHollowConeDR04(),
cut,
type);
678 fill2DHistoVector(h_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
679 fill2DHistoVector(p_nTrackIsolSolidVsEta_, (*iPho).eta(),(*iPho).nTrkSolidConeDR04(),
cut,
type);
680 fill2DHistoVector(h_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
681 fill2DHistoVector(p_nTrackIsolHollowVsEta_,(*iPho).eta(),(*iPho).nTrkHollowConeDR04(),
cut,
type);
683 fill2DHistoVector(h_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
684 fill2DHistoVector(p_nTrackIsolSolidVsEt_, (*iPho).et(), (*iPho).nTrkSolidConeDR04(),
cut,
type);
685 fill2DHistoVector(h_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
686 fill2DHistoVector(p_nTrackIsolHollowVsEt_, (*iPho).et(), (*iPho).nTrkHollowConeDR04(),
cut,
type);
689 fill2DHistoVector(h_trackPtSumSolid_, (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
690 fill2DHistoVector(h_trackPtSumHollow_,(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
692 fill2DHistoVector(h_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
693 fill2DHistoVector(p_trackPtSumSolidVsEta_, (*iPho).eta(),(*iPho).trkSumPtSolidConeDR04(),
cut,
type);
694 fill2DHistoVector(h_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
695 fill2DHistoVector(p_trackPtSumHollowVsEta_,(*iPho).eta(),(*iPho).trkSumPtHollowConeDR04(),
cut,
type);
697 fill2DHistoVector(h_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
698 fill2DHistoVector(p_trackPtSumSolidVsEt_, (*iPho).et(), (*iPho).trkSumPtSolidConeDR04(),
cut,
type);
699 fill2DHistoVector(h_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),
cut,
type);
700 fill2DHistoVector(p_trackPtSumHollowVsEt_, (*iPho).et(), (*iPho).trkSumPtHollowConeDR04(),
cut,
type);
703 fill2DHistoVector(h_ecalSum_,(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
704 if(iPho->isEB()){fill2DHistoVector(h_ecalSumEBarrel_,(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);}
705 if(iPho->isEE()){fill2DHistoVector(h_ecalSumEEndcap_,(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);}
706 fill2DHistoVector(h_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
707 fill2DHistoVector(p_ecalSumVsEta_,(*iPho).eta(),(*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
708 fill2DHistoVector(h_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),
cut,
type);
709 fill3DHistoVector(p_ecalSumVsEt_, (*iPho).et(), (*iPho).ecalRecHitSumEtConeDR04(),
cut,
type,
part);
713 fill2DHistoVector(h_hcalSum_,(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
714 if(iPho->isEB()){fill2DHistoVector(h_hcalSumEBarrel_,(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);}
715 if(iPho->isEE()){fill2DHistoVector(h_hcalSumEEndcap_,(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);}
716 fill2DHistoVector(h_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
717 fill2DHistoVector(p_hcalSumVsEta_,(*iPho).eta(),(*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
718 fill2DHistoVector(h_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),
cut,
type);
719 fill3DHistoVector(p_hcalSumVsEt_, (*iPho).et(), (*iPho).hcalTowerSumEtConeDR04(),
cut,
type,
part);
721 fill3DHistoVector(h_hOverE_,(*iPho).hadronicOverEm(),
cut,
type,
part);
722 fill2DHistoVector(p_hOverEVsEta_,(*iPho).eta(),(*iPho).hadronicOverEm(),
cut,
type);
723 fill2DHistoVector(p_hOverEVsEt_, (*iPho).et(), (*iPho).hadronicOverEm(),
cut,
type);
725 fill3DHistoVector(h_h1OverE_,(*iPho).hadronicDepth1OverEm(),
cut,
type,
part);
726 fill3DHistoVector(h_h2OverE_,(*iPho).hadronicDepth2OverEm(),
cut,
type,
part);
737 fill3DHistoVector(h_phoE_, (*iPho).energy(),
cut,
type,
part);
738 fill3DHistoVector(h_phoEt_,(*iPho).et(),
cut,
type,
part);
742 fill2DHistoVector(h_phoEta_,(*iPho).eta(),
cut,
type);
743 fill2DHistoVector(h_scEta_, (*iPho).superCluster()->eta(),
cut,
type);
745 fill3DHistoVector(h_phoPhi_,(*iPho).phi(),
cut,
type,
part);
746 fill3DHistoVector(h_scPhi_, (*iPho).superCluster()->phi(),
cut,
type,
part);
750 fill3DHistoVector(h_r9_,(*iPho).r9(),
cut,
type,
part);
751 fill2DHistoVector(h_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
752 fill2DHistoVector(p_r9VsEta_,(*iPho).eta(),(*iPho).r9(),
cut,
type);
753 fill2DHistoVector(h_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
754 fill2DHistoVector(p_r9VsEt_, (*iPho).et(), (*iPho).r9(),
cut,
type);
756 fill2DHistoVector(h_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
757 fill2DHistoVector(p_e1x5VsEta_,(*iPho).eta(),(*iPho).e1x5(),
cut,
type);
758 fill2DHistoVector(h_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
759 fill2DHistoVector(p_e1x5VsEt_, (*iPho).et(), (*iPho).e1x5(),
cut,
type);
761 fill2DHistoVector(h_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
762 fill2DHistoVector(p_e2x5VsEta_,(*iPho).eta(),(*iPho).e2x5(),
cut,
type);
763 fill2DHistoVector(h_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
764 fill2DHistoVector(p_e2x5VsEt_, (*iPho).et(), (*iPho).e2x5(),
cut,
type);
766 fill2DHistoVector(h_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
767 fill2DHistoVector(p_maxEXtalOver3x3VsEta_,(*iPho).eta(),(*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
768 fill2DHistoVector(h_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
769 fill2DHistoVector(p_maxEXtalOver3x3VsEt_, (*iPho).et(), (*iPho).maxEnergyXtal()/(*iPho).e3x3(),
cut,
type);
772 fill2DHistoVector(h_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),
cut,
type);
773 fill2DHistoVector(p_r1x5VsEta_,(*iPho).eta(),(*iPho).r1x5(),
cut,
type);
774 fill2DHistoVector(h_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),
cut,
type);
775 fill2DHistoVector(p_r1x5VsEt_, (*iPho).et(), (*iPho).r1x5(),
cut,
type);
777 fill2DHistoVector(h_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),
cut,
type);
778 fill2DHistoVector(p_r2x5VsEta_,(*iPho).eta(),(*iPho).r2x5(),
cut,
type);
779 fill2DHistoVector(h_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),
cut,
type);
780 fill2DHistoVector(p_r2x5VsEt_, (*iPho).et(), (*iPho).r2x5(),
cut,
type);
782 fill3DHistoVector(h_phoSigmaIetaIeta_,(*iPho).sigmaIetaIeta(),
cut,
type,
part);
783 fill2DHistoVector(h_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),
cut,
type);
784 fill2DHistoVector(p_sigmaIetaIetaVsEta_,(*iPho).eta(),(*iPho).sigmaIetaIeta(),
cut,
type);
790 bool atLeastOneDeadChannel=
false;
791 for(
reco::CaloCluster_iterator bcIt = (*iPho).superCluster()->clustersBegin();bcIt != (*iPho).superCluster()->clustersEnd(); ++bcIt) {
792 for(vector< pair<DetId, float> >::const_iterator rhIt = (*bcIt)->hitsAndFractions().begin();rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
795 if (rhIt->first == (*it).id() ) {
796 if ( (*it).recoFlag() == 9 ) {
797 atLeastOneDeadChannel=
true;
804 if ( atLeastOneDeadChannel ) {
805 fill2DHistoVector(h_phoPhi_BadChannels_,(*iPho).phi(),
cut,
type);
806 fill2DHistoVector(h_phoEta_BadChannels_,(*iPho).eta(),
cut,
type);
807 fill2DHistoVector(h_phoEt_BadChannels_, (*iPho).et(),
cut,
type);
812 if((*iPho).hasConversionTracks()){
822 for (
unsigned int iConv=0; iConv<conversions.
size(); iConv++) {
826 if ( aConv->nTracks() <2 )
continue;
829 if(
cut==0) h_phoEta_Vertex_->Fill(aConv->refittedPairMomentum().eta());
831 if ( !(aConv->conversionVertex().isValid()) )
continue;
833 float chi2Prob =
ChiSquaredProbability( aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof() );
835 if(chi2Prob<0.0005)
continue;
837 fill2DHistoVector(h_vertexChi2Prob_,chi2Prob,
cut,type);
841 fill3DHistoVector(h_phoConvE_, (*iPho).energy(),
cut,
type,
part);
842 fill3DHistoVector(h_phoConvEt_,(*iPho).et(),
cut,
type,
part);
843 fill3DHistoVector(h_phoConvR9_,(*iPho).r9(),
cut,
type,
part);
845 if (
cut==0 && isLoosePhoton){
846 h_convEta_Loose_->Fill((*iPho).eta());
847 h_convEt_Loose_->Fill( (*iPho).et() );
849 if (
cut==0 && isTightPhoton){
850 h_convEta_Tight_->Fill((*iPho).eta());
851 h_convEt_Tight_->Fill( (*iPho).et() );
854 fill2DHistoVector(h_phoConvEta_,aConv->refittedPairMomentum().eta(),
cut,
type);
855 fill3DHistoVector(h_phoConvPhi_,aConv->refittedPairMomentum().phi(),
cut,
type,
part);
859 fill2DHistoVector(h_phoConvEtaForEfficiency_,(*iPho).eta(),
cut,
type);
860 fill3DHistoVector(h_phoConvPhiForEfficiency_,(*iPho).phi(),
cut,
type,
part);
864 double convR=
sqrt(aConv->conversionVertex().position().perp2());
865 double scalar = aConv->conversionVertex().position().x()*aConv->refittedPairMomentum().x() + aConv->conversionVertex().position().y()*aConv->refittedPairMomentum().y();
866 if ( scalar < 0 ) convR= -convR;
868 fill2DHistoVector(h_convVtxRvsZ_,aConv->conversionVertex().position().z(), convR,
cut,
type);
869 fill2DHistoVector(h_convVtxZ_,aConv->conversionVertex().position().z(),
cut,
type);
871 if(fabs(aConv->caloCluster()[0]->eta()) > 1.5){
872 fill2DHistoVector(h_convVtxZEndcap_,aConv->conversionVertex().position().z(),
cut,
type);
874 else if(fabs(aConv->caloCluster()[0]->eta()) < 1){
875 fill2DHistoVector(h_convVtxR_,convR,cut,type);
876 fill2DHistoVector(h_convVtxYvsX_,aConv->conversionVertex().position().x(),aConv->conversionVertex().position().y(),
cut,
type);
879 const std::vector<edm::RefToBase<reco::Track> >
tracks = aConv->tracks();
882 for (
unsigned int i=0;
i<tracks.size();
i++) {
883 fill2DHistoVector(h_tkChi2_,tracks[
i]->normalizedChi2(),cut,type);
884 fill2DHistoVector(p_tkChi2VsEta_,aConv->caloCluster()[0]->eta(),tracks[
i]->normalizedChi2(),
cut,
type);
885 fill2DHistoVector(p_dCotTracksVsEta_,aConv->caloCluster()[0]->eta(),aConv->pairCotThetaSeparation(),
cut,
type);
886 fill2DHistoVector(p_nHitsVsEta_,aConv->caloCluster()[0]->eta(),float(tracks[
i]->numberOfValidHits()),
cut,
type);
891 float DPhiTracksAtVtx = -99;
892 float dPhiTracksAtEcal= -99;
893 float dEtaTracksAtEcal= -99;
895 float phiTk1= aConv->tracksPin()[0].phi();
896 float phiTk2= aConv->tracksPin()[1].phi();
897 DPhiTracksAtVtx = phiTk1-phiTk2;
898 DPhiTracksAtVtx = phiNormalization( DPhiTracksAtVtx );
900 if (aConv->bcMatchingWithTracks()[0].
isNonnull() && aConv->bcMatchingWithTracks()[1].
isNonnull() ) {
901 float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
902 float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
903 float recoEta1 = aConv->ecalImpactPosition()[0].eta();
904 float recoEta2 = aConv->ecalImpactPosition()[1].eta();
906 recoPhi1 = phiNormalization(recoPhi1);
907 recoPhi2 = phiNormalization(recoPhi2);
909 dPhiTracksAtEcal = recoPhi1 -recoPhi2;
910 dPhiTracksAtEcal = phiNormalization( dPhiTracksAtEcal );
911 dEtaTracksAtEcal = recoEta1 -recoEta2;
916 fill3DHistoVector(h_dPhiTracksAtVtx_,DPhiTracksAtVtx,cut,type,part);
917 fill3DHistoVector(h_dPhiTracksAtEcal_,fabs(dPhiTracksAtEcal),cut,type,part);
918 fill3DHistoVector(h_dEtaTracksAtEcal_, dEtaTracksAtEcal,cut,type,part);
919 fill3DHistoVector(h_eOverPTracks_,aConv->EoverPrefittedTracks(),
cut,
type,
part);
920 fill3DHistoVector(h_pOverETracks_,1./aConv->EoverPrefittedTracks(),
cut,
type,
part);
921 fill3DHistoVector(h_dCotTracks_,aConv->pairCotThetaSeparation(),
cut,
type,
part);
935 if (isIsolated && iPho->et()>=invMassEtCut_){
937 for (reco::PhotonCollection::const_iterator iPho2=iPho+1; iPho2!=photonCollection.end(); iPho2++){
942 bool isTightPhoton2(
false), isLoosePhoton2(
false);
944 if ( !isHeavyIon_ ) {
945 isTightPhoton2 = (tightPhotonID)[photonref2];
946 isLoosePhoton2 = (loosePhotonID)[photonref2];
949 bool isIsolated2=
false;
950 if ( isolationStrength_ == 0) isIsolated2 = isLoosePhoton2;
951 if ( isolationStrength_ == 1) isIsolated2 = isTightPhoton2;
956 if(isIsolated2 && iPho2->et()>=invMassEtCut_){
959 float gamgamMass2 = p12.Dot(p12);
962 h_invMassAllPhotons_ ->
Fill(
sqrt( gamgamMass2 ));
963 if(iPho->isEB() && iPho2->isEB()){h_invMassPhotonsEBarrel_ ->
Fill(
sqrt( gamgamMass2 ));}
964 if(iPho->isEE() || iPho2->isEE()){h_invMassPhotonsEEndcap_ ->
Fill(
sqrt( gamgamMass2 ));}
966 if(conversions.
size()!=0 && conversions[0]->nTracks() >= 2){
967 if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassTwoWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
968 else h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
970 else if(conversions2.
size()!=0 && conversions2[0]->nTracks() >= 2) h_invMassOneWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
971 else h_invMassZeroWithTracks_ ->
Fill(
sqrt( gamgamMass2 ));
984 for (
int cut = 0;
cut !=numberOfSteps_; ++
cut) {
1002 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
1003 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
1004 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
1005 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1019 totalNumberOfHistos_efficiencyFolder->Fill(histo_index_efficiency_);
1020 totalNumberOfHistos_invMassFolder->Fill(histo_index_invMass_);
1021 totalNumberOfHistos_photonsFolder->Fill(histo_index_photons_);
1022 totalNumberOfHistos_conversionsFolder->Fill(histo_index_conversions_);
1037 const float PI = 3.1415927;
1040 if(phi > PI) {phi = phi -
TWOPI;}
1041 if(phi < -PI) {phi = phi +
TWOPI;}
1049 histoVector[
cut][0]->Fill(x,y);
1050 if(histoVector[cut].
size()>1) histoVector[
cut][
type]->Fill(x,y);
1056 histoVector[
cut][0]->Fill(x);
1057 histoVector[
cut][
type]->Fill(x);
1063 histoVector[
cut][0][0]->Fill(x);
1064 histoVector[
cut][0][
part]->Fill(x);
1065 histoVector[
cut][
type][0]->Fill(x);
1072 histoVector[
cut][0][0]->Fill(x,y);
1073 histoVector[
cut][0][
part]->Fill(x,y);
1074 histoVector[
cut][
type][0]->Fill(x,y);
1083 int histo_index = 0;
1084 stringstream histo_number_stream;
1087 if(
dbe_->
pwd().find(
"InvMass" ) != string::npos){
1088 histo_index_invMass_++;
1089 histo_index = histo_index_invMass_;
1091 if(
dbe_->
pwd().find(
"Efficiencies" ) != string::npos){
1092 histo_index_efficiency_++;
1093 histo_index = histo_index_efficiency_;
1096 histo_number_stream <<
"h_";
1097 if(histo_index<10) histo_number_stream <<
"0";
1098 histo_number_stream << histo_index;
1106 string histoType,
string histoName,
string title,
1108 int ybin,
double ymin,
double ymax)
1110 int histo_index = 0;
1112 vector<MonitorElement*> temp1DVector;
1116 bool conversionPlot =
false;
1117 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1118 bool TwoDPlot =
false;
1119 if(histoName.find(
"2D" ) != string::npos) TwoDPlot =
true;
1122 histo_index_conversions_++;
1123 histo_index = histo_index_conversions_;
1126 histo_index_photons_++;
1127 histo_index = histo_index_photons_;
1130 stringstream histo_number_stream;
1131 histo_number_stream <<
"h_";
1132 if(histo_index<10) histo_number_stream <<
"0";
1133 histo_number_stream << histo_index <<
"_";
1137 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1141 currentFolder_.str(
"");
1142 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1143 if(conversionPlot) currentFolder_ <<
"/Conversions";
1148 if(conversionPlot) kind =
" Conversions: ";
1149 else kind =
" Photons: ";
1151 if(histoType==
"1D") temp1DVector.push_back(
dbe_->
book1D( histo_number_stream.str()+histoName,types_[
type]+kind+
title,xbin,
xmin,
xmax));
1152 else if(histoType==
"2D"){
1153 if((TwoDPlot &&
type==0) || !TwoDPlot){
1158 else cout <<
"bad histoType\n";
1161 temp2DVector.push_back(temp1DVector);
1162 temp1DVector.clear();
1171 string histoType,
string histoName,
string title,
1173 int ybin,
double ymin,
double ymax)
1177 int histo_index = 0;
1179 vector<MonitorElement*> temp1DVector;
1180 vector<vector<MonitorElement*> > temp2DVector;
1185 bool conversionPlot =
false;
1186 if(
dbe_->
pwd().find(
"Conversions" ) != string::npos) conversionPlot =
true;
1190 histo_index_conversions_++;
1191 histo_index = histo_index_conversions_;
1194 histo_index_photons_++;
1195 histo_index = histo_index_photons_;
1200 stringstream histo_number_stream;
1201 histo_number_stream <<
"h_";
1202 if(histo_index<10) histo_number_stream <<
"0";
1203 histo_number_stream << histo_index <<
"_";
1205 for(
int cut = 0;
cut != numberOfSteps_; ++
cut){
1211 currentFolder_.str(
"");
1212 currentFolder_ <<
"Egamma/PhotonAnalyzer/" << types_[
type] <<
"Photons/Et above " << (
cut+1)*cutStep_ <<
" GeV";
1213 if(conversionPlot) currentFolder_ <<
"/Conversions";
1218 if(conversionPlot) kind =
" Conversions: ";
1219 else kind =
" Photons: ";
1224 else cout <<
"bad histoType\n";
1229 temp2DVector.push_back(temp1DVector);
1230 temp1DVector.clear();
1233 temp3DVector.push_back(temp2DVector);
1234 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)
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)
auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
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)