CMS 3D CMS Logo

PhotonValidator.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <memory>
3 
4 //
7 //
9 
10 //
14 //
16 //
20 //
25 //
30 //
31 #include "CLHEP/Units/GlobalPhysicalConstants.h"
33 
34 //
54 
55 //
60 
63 //
64 //#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
65 //
66 #include "TFile.h"
67 #include "TH1.h"
68 #include "TH2.h"
69 #include "TTree.h"
70 #include "TVector3.h"
71 #include "TProfile.h"
72 //
81 using namespace std;
82 
84  : magneticFieldToken_{esConsumes<edm::Transition::BeginRun>()},
85  caloGeometryToken_{esConsumes()},
86  transientTrackBuilderToken_{esConsumes(edm::ESInputTag("", "TransientTrackBuilder"))} {
87  fName_ = pset.getParameter<std::string>("analyzerName");
88  verbosity_ = pset.getUntrackedParameter<int>("Verbosity");
89  parameters_ = pset;
90  fastSim_ = pset.getParameter<bool>("fastSim");
91  isRunCentrally_ = pset.getParameter<bool>("isRunCentrally");
92 
93  photonCollectionProducer_ = pset.getParameter<std::string>("phoProducer");
94  photonCollection_ = pset.getParameter<std::string>("photonCollection");
95  photonCollectionToken_ =
96  consumes<reco::PhotonCollection>(edm::InputTag(photonCollectionProducer_, photonCollection_));
97 
98  token_tp_ = consumes<TrackingParticleCollection>(pset.getParameter<edm::InputTag>("label_tp"));
99 
100  barrelEcalHits_ = consumes<EcalRecHitCollection>(pset.getParameter<edm::InputTag>("barrelEcalHits"));
101  endcapEcalHits_ = consumes<EcalRecHitCollection>(pset.getParameter<edm::InputTag>("endcapEcalHits"));
102 
103  conversionOITrackProducer_ = pset.getParameter<std::string>("conversionOITrackProducer");
104  conversionIOTrackProducer_ = pset.getParameter<std::string>("conversionIOTrackProducer");
105  conversionOITrackPr_Token_ = consumes<edm::View<reco::Track> >(edm::InputTag(conversionOITrackProducer_));
106  conversionIOTrackPr_Token_ = consumes<edm::View<reco::Track> >(edm::InputTag(conversionIOTrackProducer_));
107 
108  pfCandidates_ = consumes<reco::PFCandidateCollection>(pset.getParameter<edm::InputTag>("pfCandidates"));
109  valueMapPhoPFCandIso_ = pset.getParameter<std::string>("valueMapPhoToParticleBasedIso");
110  particleBasedIso_token =
111  consumes<edm::ValueMap<std::vector<reco::PFCandidateRef> > >(pset.getUntrackedParameter<edm::InputTag>(
112  "particleBasedIso", edm::InputTag("particleBasedIsolation", valueMapPhoPFCandIso_)));
113 
114  minPhoEtCut_ = pset.getParameter<double>("minPhoEtCut");
115  convTrackMinPtCut_ = pset.getParameter<double>("convTrackMinPtCut");
116  likelihoodCut_ = pset.getParameter<double>("likelihoodCut");
117 
118  trkIsolExtRadius_ = pset.getParameter<double>("trkIsolExtR");
119  trkIsolInnRadius_ = pset.getParameter<double>("trkIsolInnR");
120  trkPtLow_ = pset.getParameter<double>("minTrackPtCut");
121  lip_ = pset.getParameter<double>("lipCut");
122  ecalIsolRadius_ = pset.getParameter<double>("ecalIsolR");
123  bcEtLow_ = pset.getParameter<double>("minBcEtCut");
124  hcalIsolExtRadius_ = pset.getParameter<double>("hcalIsolExtR");
125  hcalIsolInnRadius_ = pset.getParameter<double>("hcalIsolInnR");
126  hcalHitEtLow_ = pset.getParameter<double>("minHcalHitEtCut");
127 
128  numOfTracksInCone_ = pset.getParameter<int>("maxNumOfTracksInCone");
129  trkPtSumCut_ = pset.getParameter<double>("trkPtSumCut");
130  ecalEtSumCut_ = pset.getParameter<double>("ecalEtSumCut");
131  hcalEtSumCut_ = pset.getParameter<double>("hcalEtSumCut");
132  dCotCutOn_ = pset.getParameter<bool>("dCotCutOn");
133  dCotCutValue_ = pset.getParameter<double>("dCotCutValue");
134  dCotHardCutValue_ = pset.getParameter<double>("dCotHardCutValue");
135 
136  offline_pvToken_ = consumes<reco::VertexCollection>(
137  pset.getUntrackedParameter<edm::InputTag>("offlinePV", edm::InputTag("offlinePrimaryVertices")));
138  g4_simTk_Token_ = consumes<edm::SimTrackContainer>(edm::InputTag("g4SimHits"));
139  g4_simVtx_Token_ = consumes<edm::SimVertexContainer>(edm::InputTag("g4SimHits"));
140  famos_simTk_Token_ = consumes<edm::SimTrackContainer>(edm::InputTag("fastSimProducer"));
141  famos_simVtx_Token_ = consumes<edm::SimVertexContainer>(edm::InputTag("fastSimProducer"));
142  hepMC_Token_ = consumes<edm::HepMCProduct>(edm::InputTag("generatorSmeared"));
143  genjets_Token_ = consumes<reco::GenJetCollection>(edm::InputTag("ak4GenJets"));
144 
145  genpartToken_ = consumes<reco::GenParticleCollection>(edm::InputTag("genParticles"));
146 
147  consumes<reco::TrackToTrackingParticleAssociator>(edm::InputTag("trackAssociatorByHitsForPhotonValidation"));
148 
149  nEvt_ = 0;
150  nEntry_ = 0;
151  nRecConv_ = 0;
152  nRecConvAss_ = 0;
153  nRecConvAssWithEcal_ = 0;
154  nInvalidPCA_ = 0;
155 }
156 
158 
160  double resMin = parameters_.getParameter<double>("resMin");
161  double resMax = parameters_.getParameter<double>("resMax");
162  int resBin = parameters_.getParameter<int>("resBin");
163 
164  double eMin = parameters_.getParameter<double>("eMin");
165  double eMax = parameters_.getParameter<double>("eMax");
166  int eBin = parameters_.getParameter<int>("eBin");
167 
168  double etMin = parameters_.getParameter<double>("etMin");
169  double etMax = parameters_.getParameter<double>("etMax");
170  int etBin = parameters_.getParameter<int>("etBin");
171 
172  double etScale = parameters_.getParameter<double>("etScale");
173 
174  double etaMin = parameters_.getParameter<double>("etaMin");
175  double etaMax = parameters_.getParameter<double>("etaMax");
176  int etaBin = parameters_.getParameter<int>("etaBin");
177  int etaBin2 = parameters_.getParameter<int>("etaBin2");
178 
179  double dEtaMin = parameters_.getParameter<double>("dEtaMin");
180  double dEtaMax = parameters_.getParameter<double>("dEtaMax");
181  int dEtaBin = parameters_.getParameter<int>("dEtaBin");
182 
183  double phiMin = parameters_.getParameter<double>("phiMin");
184  double phiMax = parameters_.getParameter<double>("phiMax");
185  int phiBin = parameters_.getParameter<int>("phiBin");
186 
187  double dPhiMin = parameters_.getParameter<double>("dPhiMin");
188  double dPhiMax = parameters_.getParameter<double>("dPhiMax");
189  int dPhiBin = parameters_.getParameter<int>("dPhiBin");
190 
191  double rMin = parameters_.getParameter<double>("rMin");
192  double rMax = parameters_.getParameter<double>("rMax");
193  int rBin = parameters_.getParameter<int>("rBin");
194 
195  double zMin = parameters_.getParameter<double>("zMin");
196  double zMax = parameters_.getParameter<double>("zMax");
197  int zBin = parameters_.getParameter<int>("zBin");
198 
199  double r9Min = parameters_.getParameter<double>("r9Min");
200  double r9Max = parameters_.getParameter<double>("r9Max");
201  int r9Bin = parameters_.getParameter<int>("r9Bin");
202 
203  double dPhiTracksMin = parameters_.getParameter<double>("dPhiTracksMin");
204  double dPhiTracksMax = parameters_.getParameter<double>("dPhiTracksMax");
205  int dPhiTracksBin = parameters_.getParameter<int>("dPhiTracksBin");
206 
207  double dEtaTracksMin = parameters_.getParameter<double>("dEtaTracksMin");
208  double dEtaTracksMax = parameters_.getParameter<double>("dEtaTracksMax");
209  int dEtaTracksBin = parameters_.getParameter<int>("dEtaTracksBin");
210 
211  double dCotTracksMin = parameters_.getParameter<double>("dCotTracksMin");
212  double dCotTracksMax = parameters_.getParameter<double>("dCotTracksMax");
213  int dCotTracksBin = parameters_.getParameter<int>("dCotTracksBin");
214 
215  double povereMin = parameters_.getParameter<double>("povereMin");
216  double povereMax = parameters_.getParameter<double>("povereMax");
217  int povereBin = parameters_.getParameter<int>("povereBin");
218 
219  double eoverpMin = parameters_.getParameter<double>("eoverpMin");
220  double eoverpMax = parameters_.getParameter<double>("eoverpMax");
221  int eoverpBin = parameters_.getParameter<int>("eoverpBin");
222 
223  double chi2Min = parameters_.getParameter<double>("chi2Min");
224  double chi2Max = parameters_.getParameter<double>("chi2Max");
225 
226  int ggMassBin = parameters_.getParameter<int>("ggMassBin");
227  double ggMassMin = parameters_.getParameter<double>("ggMassMin");
228  double ggMassMax = parameters_.getParameter<double>("ggMassMax");
229 
230  double rMinForXray = parameters_.getParameter<double>("rMinForXray");
231  double rMaxForXray = parameters_.getParameter<double>("rMaxForXray");
232  int rBinForXray = parameters_.getParameter<int>("rBinForXray");
233  double zMinForXray = parameters_.getParameter<double>("zMinForXray");
234  double zMaxForXray = parameters_.getParameter<double>("zMaxForXray");
235  int zBinForXray = parameters_.getParameter<int>("zBinForXray");
236  int zBin2ForXray = parameters_.getParameter<int>("zBin2ForXray");
237 
239  // SC from reco photons
240 
241  iBooker.setCurrentFolder("EgammaV/" + fName_ + "/SimulationInfo");
242 
243  // simulation information about all MC photons found
244  std::string histname = "nOfSimPhotons";
245  if (!isRunCentrally_) {
246  h_nSimPho_[0] = iBooker.book1D(histname, "# of Sim photons per event ", 20, -0.5, 19.5);
247  histname = "SimPhoMotherEt";
248  h_SimPhoMotherEt_[0] = iBooker.book1D(histname, "Sim photon Mother tranverse energy spectrum", etBin, etMin, etMax);
249  h_SimPhoMotherEta_[0] = iBooker.book1D("SimPhoMotherEta", " Sim Photon Mother Eta ", etaBin, etaMin, etaMax);
250  histname = "SimPhoMotherEtMatched";
251  h_SimPhoMotherEt_[1] = iBooker.book1D(
252  histname, "Sim photon matched by a reco Photon: Mother tranverse energy spectrum", etBin, etMin, etMax);
253  h_SimPhoMotherEta_[1] = iBooker.book1D(
254  "SimPhoMotherEtaMatched", " Sim Photon matched by a reco Photon: Mother Eta ", etaBin, etaMin, etaMax);
255  }
256 
257  histname = "h_SimPhoEta";
258  h_SimPho_[0] = iBooker.book1D(histname, " All photons simulated #eta", etaBin, etaMin, etaMax);
259  histname = "h_SimPhoPhi";
260  h_SimPho_[1] = iBooker.book1D(histname, " All photons simulated #phi", phiBin, phiMin, phiMax);
261  histname = "h_SimPhoEt";
262  h_SimPho_[2] = iBooker.book1D(histname, " All photons simulated Et", etBin, etMin, etMax);
263  // Numerators
264  histname = "nOfSimPhotonsMatched";
265  h_nSimPho_[1] = iBooker.book1D(histname, "# of Sim photons matched by a reco Photon per event ", 20, -0.5, 19.5);
266  histname = "h_MatchedSimPhoEta";
267  h_MatchedSimPho_[0] = iBooker.book1D(histname, " Matching photons simulated #eta", etaBin, etaMin, etaMax);
268  histname = "h_MatchedSimPhoPhi";
269  h_MatchedSimPho_[1] = iBooker.book1D(histname, " Matching photons simulated #phi", phiBin, phiMin, phiMax);
270  histname = "h_MatchedSimPhoEt";
271  h_MatchedSimPho_[2] = iBooker.book1D(histname, " Matching photons simulated Et", etBin, etMin, etMax);
272  //
273  histname = "h_MatchedSimPhoBadChEta";
274  h_MatchedSimPhoBadCh_[0] = iBooker.book1D(histname, " Matching photons simulated #eta", etaBin, etaMin, etaMax);
275  histname = "h_MatchedSimPhoBadChPhi";
276  h_MatchedSimPhoBadCh_[1] = iBooker.book1D(histname, " Matching photons simulated #phi", phiBin, phiMin, phiMax);
277  histname = "h_MatchedSimPhoBadChEt";
278  h_MatchedSimPhoBadCh_[2] = iBooker.book1D(histname, " Matching photons simulated Et", etBin, etMin, etMax);
279 
281  histname = "nOfSimConversions";
282  if (!isRunCentrally_) {
283  h_nSimConv_[0] = iBooker.book1D(histname, "# of Sim conversions per event ", 20, -0.5, 19.5);
284  histname = "nOfVisSimConversions";
285  h_nSimConv_[1] = iBooker.book1D(histname, "# of Sim conversions per event ", 20, -0.5, 19.5);
286  }
288  histname = "h_AllSimConvEta";
289  h_AllSimConv_[0] = iBooker.book1D(histname, " All conversions: simulated #eta", etaBin2, etaMin, etaMax);
290  histname = "h_AllSimConvPhi";
291  h_AllSimConv_[1] = iBooker.book1D(histname, " All conversions: simulated #phi", phiBin, phiMin, phiMax);
292  histname = "h_AllSimConvR";
293  h_AllSimConv_[2] = iBooker.book1D(histname, " All conversions: simulated R", rBin, rMin, rMax);
294  histname = "h_AllSimConvZ";
295  h_AllSimConv_[3] = iBooker.book1D(histname, " All conversions: simulated Z", zBin, zMin, zMax);
296  histname = "h_AllSimConvEt";
297  h_AllSimConv_[4] = iBooker.book1D(histname, " All conversions: simulated Et", etBin, etMin, etMax);
298  //
299  histname = "h_VisSimConvEta";
300  h_VisSimConv_[0] = iBooker.book1D(histname, " All vis conversions: simulated #eta", etaBin2, etaMin, etaMax);
301  histname = "h_VisSimConvPhi";
302  h_VisSimConv_[1] = iBooker.book1D(histname, " All vis conversions: simulated #phi", phiBin, phiMin, phiMax);
303  histname = "h_VisSimConvR";
304  h_VisSimConv_[2] = iBooker.book1D(histname, " All vis conversions: simulated R", rBin, rMin, rMax);
305  histname = "h_VisSimConvZ";
306  h_VisSimConv_[3] = iBooker.book1D(histname, " All vis conversions: simulated Z", zBin, zMin, zMax);
307  histname = "h_VisSimConvEt";
308  h_VisSimConv_[4] = iBooker.book1D(histname, " All vis conversions: simulated Et", etBin, etMin, etMax);
310  histname = "h_SimConvOneTracksEta";
312  iBooker.book1D(histname, " All vis conversions with 1 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
313  histname = "h_SimConvOneTracksPhi";
315  iBooker.book1D(histname, " All vis conversions with 1 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
316  histname = "h_SimConvOneTracksR";
318  iBooker.book1D(histname, " All vis conversions with 1 reco tracks: simulated R", rBin, rMin, rMax);
319  histname = "h_SimConvOneTracksZ";
321  iBooker.book1D(histname, " All vis conversions with 1 reco tracks: simulated Z", zBin, zMin, zMax);
322  histname = "h_SimConvOneTracksEt";
324  iBooker.book1D(histname, " All vis conversions with 1 reco tracks: simulated Et", etBin, etMin, etMax);
325  //
326  histname = "h_SimConvTwoMTracksEta";
327  h_SimConvTwoMTracks_[0] = iBooker.book1D(
328  histname, " All vis conversions with 2 reco-matching tracks: simulated #eta", etaBin2, etaMin, etaMax);
329  histname = "h_SimConvTwoMTracksPhi";
330  h_SimConvTwoMTracks_[1] = iBooker.book1D(
331  histname, " All vis conversions with 2 reco-matching tracks: simulated #phi", phiBin, phiMin, phiMax);
332  histname = "h_SimConvTwoMTracksR";
334  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated R", rBin, rMin, rMax);
335  histname = "h_SimConvTwoMTracksZ";
337  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Z", zBin, zMin, zMax);
338  histname = "h_SimConvTwoMTracksEt";
340  iBooker.book1D(histname, " All vis conversions with 2 reco-matching tracks: simulated Et", etBin, etMin, etMax);
341  //
342  histname = "h_SimConvTwoTracksEta";
344  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
345  histname = "h_SimConvTwoTracksPhi";
347  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
348  histname = "h_SimConvTwoTracksR";
350  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated R", rBin, rMin, rMax);
351  histname = "h_SimConvTwoTracksZ";
353  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated Z", zBin, zMin, zMax);
354  histname = "h_SimConvTwoTracksEt";
356  iBooker.book1D(histname, " All vis conversions with 2 reco tracks: simulated Et", etBin, etMin, etMax);
357  //
358  histname = "h_SimConvOneMTracksEta";
359  h_SimConvOneMTracks_[0] = iBooker.book1D(
360  histname, " All vis conversions with 1 reco-matching tracks: simulated #eta", etaBin2, etaMin, etaMax);
361  histname = "h_SimConvOneMTracksPhi";
362  h_SimConvOneMTracks_[1] = iBooker.book1D(
363  histname, " All vis conversions with 1 reco-matching tracks: simulated #phi", phiBin, phiMin, phiMax);
364  histname = "h_SimConvOneMTracksR";
366  iBooker.book1D(histname, " All vis conversions with 1 reco-matching tracks: simulated R", rBin, rMin, rMax);
367  histname = "h_SimConvOneMTracksZ";
369  iBooker.book1D(histname, " All vis conversions with 1 reco-matching tracks: simulated Z", zBin, zMin, zMax);
370  histname = "h_SimConvOneMTracksEt";
372  iBooker.book1D(histname, " All vis conversions with 1 reco-matching tracks: simulated Et", etBin, etMin, etMax);
373  //
374  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0";
376  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #eta", etaBin2, etaMin, etaMax);
377  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0";
379  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #phi", phiBin, phiMin, phiMax);
380  histname = "h_SimConvTwoMTracksRAndVtxPGT0";
382  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated R", rBin, rMin, rMax);
383  histname = "h_SimConvTwoMTracksZAndVtxPGT0";
385  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Z", zBin, zMin, zMax);
386  histname = "h_SimConvTwoMTracksEtAndVtxPGT0";
388  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Et", etBin, etMin, etMax);
389  //
390  histname = "h_SimConvTwoMTracksEtaAndVtxPGT0005";
392  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #eta", etaBin2, etaMin, etaMax);
393  histname = "h_SimConvTwoMTracksPhiAndVtxPGT0005";
395  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated #phi", phiBin, phiMin, phiMax);
396  histname = "h_SimConvTwoMTracksRAndVtxPGT0005";
398  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated R", rBin, rMin, rMax);
399  histname = "h_SimConvTwoMTracksZAndVtxPGT0005";
401  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Z", zBin, zMin, zMax);
402  histname = "h_SimConvTwoMTracksEtAndVtxPGT0005";
404  histname, " All vis conversions with 2 reco-matching tracks + vertex: simulated Et", etBin, etMin, etMax);
405 
406  if (!isRunCentrally_) {
407  h_SimConvEtaPix_[0] = iBooker.book1D("simConvEtaPix", " sim converted Photon Eta: Pix ", etaBin, etaMin, etaMax);
408  h_simTkPt_ = iBooker.book1D("simTkPt", "Sim conversion tracks pt ", etBin * 3, 0., etMax);
409  h_simTkEta_ = iBooker.book1D("simTkEta", "Sim conversion tracks eta ", etaBin, etaMin, etaMax);
410  h_simConvVtxRvsZ_[0] = iBooker.book2D("simConvVtxRvsZAll",
411  " Photon Sim conversion vtx position",
412  zBinForXray,
413  zMinForXray,
414  zMaxForXray,
415  rBinForXray,
416  rMinForXray,
417  rMaxForXray);
418  h_simConvVtxRvsZ_[1] = iBooker.book2D("simConvVtxRvsZBarrel",
419  " Photon Sim conversion vtx position",
420  zBinForXray,
421  zMinForXray,
422  zMaxForXray,
423  rBinForXray,
424  rMinForXray,
425  rMaxForXray);
426  h_simConvVtxRvsZ_[2] = iBooker.book2D("simConvVtxRvsZEndcap",
427  " Photon Sim conversion vtx position",
428  zBin2ForXray,
429  zMinForXray,
430  zMaxForXray,
431  rBinForXray,
432  rMinForXray,
433  rMaxForXray);
434  h_simConvVtxYvsX_ = iBooker.book2D(
435  "simConvVtxYvsXTrkBarrel", " Photon Sim conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
436  }
437 
439  histname = "h_SimJetEta";
440  h_SimJet_[0] = iBooker.book1D(histname, " Jet bkg simulated #eta", etaBin, etaMin, etaMax);
441  histname = "h_SimJetPhi";
442  h_SimJet_[1] = iBooker.book1D(histname, " Jet bkg simulated #phi", phiBin, phiMin, phiMax);
443  histname = "h_SimJetEt";
444  h_SimJet_[2] = iBooker.book1D(histname, " Jet bkg simulated Et", etBin, etMin, etMax);
445  //
446  histname = "h_MatchedSimJetEta";
447  h_MatchedSimJet_[0] = iBooker.book1D(histname, " Matching jet simulated #eta", etaBin, etaMin, etaMax);
448  histname = "h_MatchedSimJetPhi";
449  h_MatchedSimJet_[1] = iBooker.book1D(histname, " Matching jet simulated #phi", phiBin, phiMin, phiMax);
450  histname = "h_MatchedSimJetEt";
451  h_MatchedSimJet_[2] = iBooker.book1D(histname, " Matching jet simulated Et", etBin, etMin, etMax);
452  //
453  histname = "h_MatchedSimJetBadChEta";
454  h_MatchedSimJetBadCh_[0] = iBooker.book1D(histname, " Matching jet simulated #eta", etaBin, etaMin, etaMax);
455  histname = "h_MatchedSimJetBadChPhi";
456  h_MatchedSimJetBadCh_[1] = iBooker.book1D(histname, " Matching jet simulated #phi", phiBin, phiMin, phiMax);
457  histname = "h_MatchedSimJetBadChEt";
458  h_MatchedSimJetBadCh_[2] = iBooker.book1D(histname, " Matching jet simulated Et", etBin, etMin, etMax);
459 
460  iBooker.setCurrentFolder("EgammaV/" + fName_ + "/Background");
461 
462  histname = "nOfPhotons";
463  h_nPho_ = iBooker.book1D(histname, "# of Reco photons per event ", 20, -0.5, 19.5);
464 
465  h_scBkgEta_ = iBooker.book1D("scBkgEta", " SC Bkg Eta ", etaBin, etaMin, etaMax);
466  h_scBkgPhi_ = iBooker.book1D("scBkgPhi", " SC Bkg Phi ", phiBin, phiMin, phiMax);
467  //
468  h_phoBkgEta_ = iBooker.book1D("phoBkgEta", " Photon Bkg Eta ", etaBin, etaMin, etaMax);
469  h_phoBkgPhi_ = iBooker.book1D("phoBkgPhi", " Photon Bkg Phi ", phiBin, phiMin, phiMax);
470  //
471  h_phoBkgDEta_ = iBooker.book1D("phoBkgDEta", " Photon Eta(rec)-Eta(true) ", dEtaBin, dEtaMin, dEtaMax);
472  h_phoBkgDPhi_ = iBooker.book1D("phoBkgDPhi", " Photon Phi(rec)-Phi(true) ", dPhiBin, dPhiMin, dPhiMax);
473  //
474  histname = "phoBkgE";
475  h_phoBkgE_[0] = iBooker.book1D(histname + "All", " Photon Bkg Energy: All ecal ", eBin, eMin, eMax);
476  h_phoBkgE_[1] = iBooker.book1D(histname + "Barrel", " Photon Bkg Energy: barrel ", eBin, eMin, eMax);
477  h_phoBkgE_[2] = iBooker.book1D(histname + "Endcap", " Photon Bkg Energy: Endcap ", eBin, eMin, eMax);
478  //
479  histname = "phoBkgEt";
480  h_phoBkgEt_[0] = iBooker.book1D(histname + "All", " Photon Bkg Transverse Energy: All ecal ", etBin, etMin, etMax);
481  h_phoBkgEt_[1] = iBooker.book1D(histname + "Barrel", " Photon Bkg Transverse Energy: Barrel ", etBin, etMin, etMax);
482  h_phoBkgEt_[2] = iBooker.book1D(histname + "Endcap", " Photon BkgTransverse Energy: Endcap ", etBin, etMin, etMax);
483 
484  //
485  histname = "scBkgE";
486  h_scBkgE_[0] = iBooker.book1D(histname + "All", " SC bkg Energy: All Ecal ", eBin, eMin, eMax);
487  h_scBkgE_[1] = iBooker.book1D(histname + "Barrel", " SC bkg Energy: Barrel ", eBin, eMin, eMax);
488  h_scBkgE_[2] = iBooker.book1D(histname + "Endcap", " SC bkg Energy: Endcap ", eBin, eMin, eMax);
489  histname = "scBkgEt";
490  h_scBkgEt_[0] = iBooker.book1D(histname + "All", " SC bkg Et: All Ecal ", eBin, eMin, eMax);
491  h_scBkgEt_[1] = iBooker.book1D(histname + "Barrel", " SC bkg Et: Barrel ", eBin, eMin, eMax);
492  h_scBkgEt_[2] = iBooker.book1D(histname + "Endcap", " SC bkg Et: Endcap ", eBin, eMin, eMax);
493  //
494  histname = "r9Bkg";
495  h_r9Bkg_[0] = iBooker.book1D(histname + "All", " r9 bkg: All Ecal", r9Bin, r9Min, r9Max);
496  h_r9Bkg_[1] = iBooker.book1D(histname + "Barrel", " r9 bkg: Barrel ", r9Bin, r9Min, r9Max);
497  h_r9Bkg_[2] = iBooker.book1D(histname + "Endcap", " r9 bkg: Endcap ", r9Bin, r9Min, r9Max);
498  //
499  histname = "R9VsEtaBkg";
500  if (!isRunCentrally_)
502  iBooker.book2D(histname + "All", " Bkg r9 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
503  //
504  histname = "R9VsEtBkg";
505  if (!isRunCentrally_)
506  h2_r9VsEtBkg_ =
507  iBooker.book2D(histname + "All", " Bkg photons r9 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
508  //
509  histname = "r1Bkg";
510  h_r1Bkg_[0] = iBooker.book1D(histname + "All", " Bkg photon e1x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
511  h_r1Bkg_[1] = iBooker.book1D(histname + "Barrel", " Bkg photon e1x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
512  h_r1Bkg_[2] = iBooker.book1D(histname + "Endcap", " Bkg photon e1x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
513  //
514  histname = "R1VsEtaBkg";
515  if (!isRunCentrally_)
516  h2_r1VsEtaBkg_ = iBooker.book2D(
517  histname + "All", " Bkg photons e1x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
518  histname = "pR1VsEtaBkg";
519  if (!isRunCentrally_)
520  p_r1VsEtaBkg_ = iBooker.bookProfile(
521  histname + "All", " Bkg photons e1x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
522  //
523  histname = "R1VsEtBkg";
524  if (!isRunCentrally_)
525  h2_r1VsEtBkg_ =
526  iBooker.book2D(histname + "All", " Bkg photons e1x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
527  histname = "pR1VsEtBkg";
528  if (!isRunCentrally_)
529  p_r1VsEtBkg_ = iBooker.bookProfile(
530  histname + "All", " Bkg photons e2x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
531  //
532  histname = "r2Bkg";
533  h_r2Bkg_[0] = iBooker.book1D(histname + "All", " Bkg photon e2x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
534  h_r2Bkg_[1] = iBooker.book1D(histname + "Barrel", " Bkg photon e2x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
535  h_r2Bkg_[2] = iBooker.book1D(histname + "Endcap", " Bkg photon e2x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
536  //
537  histname = "R2VsEtaBkg";
538  if (!isRunCentrally_)
539  h2_r2VsEtaBkg_ = iBooker.book2D(
540  histname + "All", " Bkg photons e2x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
541  histname = "pR2VsEtaBkg";
542  if (!isRunCentrally_)
543  p_r2VsEtaBkg_ = iBooker.bookProfile(
544  histname + "All", " Bkg photons e2x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
545  //
546  histname = "R2VsEtBkg";
547  if (!isRunCentrally_)
548  h2_r2VsEtBkg_ =
549  iBooker.book2D(histname + "All", " Bkg photons e2x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
550  histname = "pR2VsEtBkg";
551  if (!isRunCentrally_)
552  p_r2VsEtBkg_ = iBooker.bookProfile(
553  histname + "All", " Bkg photons e2x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
554 
555  histname = "sigmaIetaIetaBkg";
556  h_sigmaIetaIetaBkg_[0] = iBooker.book1D(histname + "All", "Bkg sigmaIetaIeta: All Ecal", 100, 0., 0.1);
557  h_sigmaIetaIetaBkg_[1] = iBooker.book1D(histname + "Barrel", "Bkg sigmaIetaIeta: Barrel ", 100, 0., 0.05);
558  h_sigmaIetaIetaBkg_[2] = iBooker.book1D(histname + "Endcap", "Bkg sigmaIetaIeta: Endcap ", 100, 0., 0.1);
559  //
560  histname = "sigmaIetaIetaVsEtaBkg";
561  if (!isRunCentrally_)
563  histname + "All", " Bkg photons sigmaIetaIeta vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
564  histname = "pSigmaIetaIetaVsEtaBkg";
565  if (!isRunCentrally_)
567  histname + "All", " Bkg photons sigmaIetaIeta vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
568  //
569  histname = "sigmaIetaIetaVsEtBkg";
570  if (!isRunCentrally_)
571  h2_sigmaIetaIetaVsEtBkg_[0] = iBooker.book2D(
572  histname + "All", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
573  if (!isRunCentrally_)
574  h2_sigmaIetaIetaVsEtBkg_[1] = iBooker.book2D(
575  histname + "Barrel", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
576  if (!isRunCentrally_)
577  h2_sigmaIetaIetaVsEtBkg_[2] = iBooker.book2D(
578  histname + "Endcap", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
579  //
580  histname = "pSigmaIetaIetaVsEtBkg";
581  if (!isRunCentrally_)
583  histname + "All", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
584  if (!isRunCentrally_)
586  histname + "Barrel", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
587  if (!isRunCentrally_)
589  histname + "Endcap", " Bkg photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
590  //
591  histname = "hOverEBkg";
592  h_hOverEBkg_[0] = iBooker.book1D(histname + "All", "H/E bkg: All Ecal", 100, 0., 1.);
593  h_hOverEBkg_[1] = iBooker.book1D(histname + "Barrel", "H/E bkg: Barrel ", 100, 0., 1.);
594  h_hOverEBkg_[2] = iBooker.book1D(histname + "Endcap", "H/E bkg: Endcap ", 100, 0., 1.);
595  //
596  histname = "pHOverEVsEtaBkg";
597  if (!isRunCentrally_)
599  iBooker.bookProfile(histname + "All", " Bkg H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
600  histname = "pHOverEVsEtBkg";
601  if (!isRunCentrally_)
603  iBooker.bookProfile(histname + "All", " Bkg photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
604  if (!isRunCentrally_) {
605  histname = "hOverEVsEtaBkg";
607  iBooker.book2D(histname + "All", " Bkg H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
608  //
609  histname = "hOverEVsEtBkg";
611  iBooker.book2D(histname + "All", " Bkg photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
612  }
613  //
614  histname = "ecalRecHitSumEtConeDR04Bkg";
616  iBooker.book1D(histname + "All", "bkg ecalRecHitSumEtDR04: All Ecal", etBin, etMin, 50.);
618  iBooker.book1D(histname + "Barrel", "bkg ecalRecHitSumEtDR04: Barrel ", etBin, etMin, 50.);
620  iBooker.book1D(histname + "Endcap", "bkg ecalRecHitSumEtDR04: Endcap ", etBin, etMin, 50.);
621  //
622  if (!isRunCentrally_) {
623  histname = "ecalRecHitSumEtConeDR04VsEtaBkg";
624  h2_ecalRecHitSumEtConeDR04VsEtaBkg_ = iBooker.book2D(histname + "All",
625  " bkg ecalRecHitSumEtDR04 vs #eta: all Ecal ",
626  etaBin2,
627  etaMin,
628  etaMax,
629  etBin,
630  etMin,
631  etMax * etScale);
632  histname = "ecalRecHitSumEtConeDR04VsEtBkg";
633  h2_ecalRecHitSumEtConeDR04VsEtBkg_[0] = iBooker.book2D(histname + "All",
634  " Bkg ecalRecHitSumEtDR04 vs Et: all Ecal ",
635  etBin,
636  etMin,
637  etMax,
638  etBin,
639  etMin,
640  etMax * etScale);
641  h2_ecalRecHitSumEtConeDR04VsEtBkg_[1] = iBooker.book2D(histname + "Barrel",
642  " Bkg ecalRecHitSumEtDR04 vs Et: Barrel ",
643  etBin,
644  etMin,
645  etMax,
646  etBin,
647  etMin,
648  etMax * etScale);
649  h2_ecalRecHitSumEtConeDR04VsEtBkg_[2] = iBooker.book2D(histname + "Endcap",
650  " Bkg ecalRecHitSumEtDR04 vs Et: Endcap ",
651  etBin,
652  etMin,
653  etMax,
654  etBin,
655  etMin,
656  etMax * etScale);
657  histname = "hcalTowerSumEtConeDR04VsEtaBkg";
658  h2_hcalTowerSumEtConeDR04VsEtaBkg_ = iBooker.book2D(histname + "All",
659  " bkg hcalTowerSumEtDR04 vs #eta: all Ecal ",
660  etaBin2,
661  etaMin,
662  etaMax,
663  etBin,
664  etMin,
665  etMax * etScale);
666  histname = "hcalTowerSumEtConeDR04VsEtBkg";
667  h2_hcalTowerSumEtConeDR04VsEtBkg_[0] = iBooker.book2D(histname + "All",
668  " Bkg hcalTowerSumEtDR04 vs Et: all Ecal ",
669  etBin,
670  etMin,
671  etMax,
672  etBin,
673  etMin,
674  etMax * etScale);
675  h2_hcalTowerSumEtConeDR04VsEtBkg_[1] = iBooker.book2D(histname + "Barrel",
676  " Bkg hcalTowerSumEtDR04 vs Et: Barrel ",
677  etBin,
678  etMin,
679  etMax,
680  etBin,
681  etMin,
682  etMax * etScale);
683  h2_hcalTowerSumEtConeDR04VsEtBkg_[2] = iBooker.book2D(histname + "Endcap",
684  " Bkg hcalTowerSumEtDR04 vs Et: Endcap ",
685  etBin,
686  etMin,
687  etMax,
688  etBin,
689  etMin,
690  etMax * etScale);
691  }
692 
693  histname = "pEcalRecHitSumEtConeDR04VsEtaBkg";
694  if (!isRunCentrally_)
695  p_ecalRecHitSumEtConeDR04VsEtaBkg_ = iBooker.bookProfile(histname + "All",
696  "bkg photons ecalRecHitSumEtDR04 vs #eta: all Ecal ",
697  etaBin2,
698  etaMin,
699  etaMax,
700  etBin,
701  etMin,
702  etMax * etScale,
703  "");
704  //
705  histname = "pEcalRecHitSumEtConeDR04VsEtBkg";
706  if (!isRunCentrally_)
707  p_ecalRecHitSumEtConeDR04VsEtBkg_[0] = iBooker.bookProfile(histname + "All",
708  "Bkg ecalRecHitSumEtDR04 vs Et: all Ecal ",
709  etBin,
710  etMin,
711  etMax,
712  etBin,
713  etMin,
714  etMax * etScale,
715  "");
716  if (!isRunCentrally_)
717  p_ecalRecHitSumEtConeDR04VsEtBkg_[1] = iBooker.bookProfile(histname + "Barrel",
718  "Bkg ecalRecHitSumEtDR04 vs Et: all Ecal ",
719  etBin,
720  etMin,
721  etMax,
722  etBin,
723  etMin,
724  etMax * etScale,
725  "");
726  if (!isRunCentrally_)
727  p_ecalRecHitSumEtConeDR04VsEtBkg_[2] = iBooker.bookProfile(histname + "Endcap",
728  "Bkg ecalRecHitSumEtDR04 vs Et: all Ecal ",
729  etBin,
730  etMin,
731  etMax,
732  etBin,
733  etMin,
734  etMax * etScale,
735  "");
736  //
737  histname = "hcalTowerSumEtConeDR04Bkg";
739  iBooker.book1D(histname + "All", "bkg hcalTowerSumEtDR04: All Ecal", etBin, etMin, 20.);
741  iBooker.book1D(histname + "Barrel", "bkg hcalTowerSumEtDR04: Barrel ", etBin, etMin, 20.);
743  iBooker.book1D(histname + "Endcap", "bkg hcalTowerSumEtDR04: Endcap ", etBin, etMin, 20.);
744  //
745  histname = "pHcalTowerSumEtConeDR04VsEtaBkg";
746  if (!isRunCentrally_)
747  p_hcalTowerSumEtConeDR04VsEtaBkg_ = iBooker.bookProfile(histname + "All",
748  "bkg photons hcalTowerSumEtDR04 vs #eta: all Ecal ",
749  etaBin2,
750  etaMin,
751  etaMax,
752  etBin,
753  etMin,
754  etMax * etScale,
755  "");
756  //
757  histname = "pHcalTowerSumEtConeDR04VsEtBkg";
758  if (!isRunCentrally_)
759  p_hcalTowerSumEtConeDR04VsEtBkg_[0] = iBooker.bookProfile(histname + "All",
760  "Bkg hcalTowerSumEtDR04 vs Et: all Ecal ",
761  etBin,
762  etMin,
763  etMax,
764  etBin,
765  etMin,
766  etMax * etScale,
767  "");
768  if (!isRunCentrally_)
769  p_hcalTowerSumEtConeDR04VsEtBkg_[1] = iBooker.bookProfile(histname + "Barrel",
770  "Bkg hcalTowerSumEtDR04 vs Et: all Ecal ",
771  etBin,
772  etMin,
773  etMax,
774  etBin,
775  etMin,
776  etMax * etScale,
777  "");
778  if (!isRunCentrally_)
779  p_hcalTowerSumEtConeDR04VsEtBkg_[2] = iBooker.bookProfile(histname + "Endcap",
780  "Bkg hcalTowerSumEtDR04 vs Et: all Ecal ",
781  etBin,
782  etMin,
783  etMax,
784  etBin,
785  etMin,
786  etMax * etScale,
787  "");
788  //
789  histname = "isoTrkSolidConeDR04Bkg";
791  iBooker.book1D(histname + "All", "isoTrkSolidConeDR04 Bkg: All Ecal", etBin, etMin, etMax * 0.1);
793  iBooker.book1D(histname + "Barrel", "isoTrkSolidConeDR04 Bkg: Barrel ", etBin, etMin, etMax * 0.1);
795  iBooker.book1D(histname + "Endcap", "isoTrkSolidConeDR04 Bkg: Endcap ", etBin, etMin, etMax * 0.1);
796  //
797  histname = "isoTrkSolidConeDR04VsEtaBkg";
798  if (!isRunCentrally_)
799  h2_isoTrkSolidConeDR04VsEtaBkg_ = iBooker.book2D(histname + "All",
800  " Bkg photons isoTrkSolidConeDR04 vs #eta: all Ecal ",
801  etaBin2,
802  etaMin,
803  etaMax,
804  etBin,
805  etMin,
806  etMax * 0.1);
807  histname = "pIsoTrkSolidConeDR04VsEtaBkg";
808  if (!isRunCentrally_)
809  p_isoTrkSolidConeDR04VsEtaBkg_ = iBooker.bookProfile(histname + "All",
810  " Bkg photons isoTrkSolidConeDR04 vs #eta: all Ecal ",
811  etaBin2,
812  etaMin,
813  etaMax,
814  etBin,
815  etMin,
816  etMax * 0.1);
817  //
818  histname = "isoTrkSolidConeDR04VsEtBkg";
819  if (!isRunCentrally_)
820  h2_isoTrkSolidConeDR04VsEtBkg_[0] = iBooker.book2D(histname + "All",
821  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
822  etBin,
823  etMin,
824  etMax,
825  etBin,
826  etMin,
827  etMax * 0.1);
828  if (!isRunCentrally_)
829  h2_isoTrkSolidConeDR04VsEtBkg_[1] = iBooker.book2D(histname + "Barrel",
830  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
831  etBin,
832  etMin,
833  etMax,
834  etBin,
835  etMin,
836  etMax * 0.1);
837  if (!isRunCentrally_)
838  h2_isoTrkSolidConeDR04VsEtBkg_[2] = iBooker.book2D(histname + "Endcap",
839  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
840  etBin,
841  etMin,
842  etMax,
843  etBin,
844  etMin,
845  etMax * 0.1);
846  histname = "pIsoTrkSolidConeDR04VsEtBkg";
847  if (!isRunCentrally_)
848  p_isoTrkSolidConeDR04VsEtBkg_[0] = iBooker.bookProfile(histname + "All",
849  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
850  etBin,
851  etMin,
852  etMax,
853  etBin,
854  etMin,
855  etMax * 0.1);
856  if (!isRunCentrally_)
857  p_isoTrkSolidConeDR04VsEtBkg_[1] = iBooker.bookProfile(histname + "Barrel",
858  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
859  etBin,
860  etMin,
861  etMax,
862  etBin,
863  etMin,
864  etMax * 0.1);
865  if (!isRunCentrally_)
866  p_isoTrkSolidConeDR04VsEtBkg_[2] = iBooker.bookProfile(histname + "Endcap",
867  " Bkg photons isoTrkSolidConeDR04 vs Et: all Ecal ",
868  etBin,
869  etMin,
870  etMax,
871  etBin,
872  etMin,
873  etMax * 0.1);
874  //
875  histname = "nTrkSolidConeDR04Bkg";
876  h_nTrkSolidConeDR04Bkg_[0] = iBooker.book1D(histname + "All", "Bkg nTrkSolidConeDR04: All Ecal", 20, 0., 20);
877  h_nTrkSolidConeDR04Bkg_[1] = iBooker.book1D(histname + "Barrel", "Bkg nTrkSolidConeDR04: Barrel ", 20, 0., 20);
878  h_nTrkSolidConeDR04Bkg_[2] = iBooker.book1D(histname + "Endcap", "Bkg nTrkSolidConeDR04: Endcap ", 20, 0., 20);
879  //
880  histname = "nTrkSolidConeDR04VsEtaBkg";
881  if (!isRunCentrally_)
883  histname + "All", " Bkg photons nTrkSolidConeDR04 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 20, 0., 20);
884  histname = "p_nTrkSolidConeDR04VsEtaBkg";
885  if (!isRunCentrally_)
887  histname + "All", " Bkg photons nTrkSolidConeDR04 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 20, 0., 20);
888  //
889  histname = "nTrkSolidConeDR04VsEtBkg";
890  if (!isRunCentrally_)
892  histname + "All", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
893  if (!isRunCentrally_)
895  histname + "Barrel", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
896  if (!isRunCentrally_)
898  histname + "Endcap", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
899  //
900  histname = "pnTrkSolidConeDR04VsEtBkg";
901  if (!isRunCentrally_)
903  histname + "All", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
904  if (!isRunCentrally_)
906  histname + "Barrel", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
907  if (!isRunCentrally_)
909  histname + "Endcap", "Bkg photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
910  //
911  h_convEtaBkg_ = iBooker.book1D("convEtaBkg", " converted Photon Bkg Eta 2 tracks", etaBin, etaMin, etaMax);
912  h_convPhiBkg_ = iBooker.book1D("convPhiBkg", " converted Photon Bkg Phi ", phiBin, phiMin, phiMax);
913  //
914  histname = "mvaOutBkg";
915  h_mvaOutBkg_[0] = iBooker.book1D(histname + "All", " mvaOut conversions bkg : All Ecal", 100, 0., 1.);
916  h_mvaOutBkg_[1] = iBooker.book1D(histname + "Barrel", " mvaOut conversions bkg: Barrel Ecal", 100, 0., 1.);
917  h_mvaOutBkg_[2] = iBooker.book1D(histname + "Endcap", " mvaOut conversions bkg: Endcap Ecal", 100, 0., 1.);
918 
919  histname = "PoverEtracksBkg";
920  h_PoverETracksBkg_[0] =
921  iBooker.book1D(histname + "All", " bkg photons conversion p/E: all Ecal ", povereBin, povereMin, povereMax);
922  h_PoverETracksBkg_[1] =
923  iBooker.book1D(histname + "Barrel", "bkg photons conversion p/E: Barrel Ecal", povereBin, povereMin, povereMax);
924  h_PoverETracksBkg_[2] =
925  iBooker.book1D(histname + "Endcap", " bkg photons conversion p/E: Endcap Ecal ", povereBin, povereMin, povereMax);
926 
927  histname = "EoverPtracksBkg";
928  h_EoverPTracksBkg_[0] =
929  iBooker.book1D(histname + "All", " bkg photons conversion E/p: all Ecal ", eoverpBin, eoverpMin, eoverpMax);
930  h_EoverPTracksBkg_[1] =
931  iBooker.book1D(histname + "Barrel", "bkg photons conversion E/p: Barrel Ecal", eoverpBin, eoverpMin, eoverpMax);
932  h_EoverPTracksBkg_[2] =
933  iBooker.book1D(histname + "Endcap", " bkg photons conversion E/p: Endcap Ecal ", eoverpBin, eoverpMin, eoverpMax);
934 
935  histname = "hDCotTracksBkg";
936  h_DCotTracksBkg_[0] = iBooker.book1D(histname + "All",
937  " bkg Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
940  dCotTracksMax);
941  h_DCotTracksBkg_[1] = iBooker.book1D(histname + "Barrel",
942  " bkg Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
945  dCotTracksMax);
946  h_DCotTracksBkg_[2] = iBooker.book1D(histname + "Endcap",
947  " bkg Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
950  dCotTracksMax);
951 
952  histname = "hDPhiTracksAtVtxBkg";
954  iBooker.book1D(histname + "All",
955  " Bkg Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
958  dPhiTracksMax);
960  iBooker.book1D(histname + "Barrel",
961  " Bkg Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
964  dPhiTracksMax);
966  iBooker.book1D(histname + "Endcap",
967  " Bkg Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
970  dPhiTracksMax);
971 
972  if (!isRunCentrally_) {
973  h_convVtxRvsZBkg_[0] = iBooker.book2D("convVtxRvsZAllBkg",
974  " Bkg Photon Reco conversion vtx position",
975  zBinForXray,
976  zMinForXray,
977  zMaxForXray,
978  rBinForXray,
979  rMinForXray,
980  rMaxForXray);
981  h_convVtxRvsZBkg_[1] = iBooker.book2D("convVtxRvsZBarrelBkg",
982  " Bkg Photon Reco conversion vtx position",
983  zBinForXray,
984  zMinForXray,
985  zMaxForXray,
986  rBinForXray,
987  rMinForXray,
988  rMaxForXray);
989  h_convVtxYvsXBkg_ = iBooker.book2D("convVtxYvsXTrkBarrelBkg",
990  " Bkg Photon Reco conversion vtx position, (x,y) eta<1 ",
991  100,
992  -80.,
993  80.,
994  100,
995  -80.,
996  80.);
997  }
998 
999  //
1000  iBooker.setCurrentFolder("EgammaV/" + fName_ + "/Photons");
1001 
1002  histname = "nOfflineVtx";
1003  h_nRecoVtx_ = iBooker.book1D(histname, "# of Offline Vertices", 200, -0.5, 199.5);
1004 
1005  h_phoEta_[0] = iBooker.book1D("phoEta", " Photon Eta ", etaBin, etaMin, etaMax);
1006  h_phoPhi_[0] = iBooker.book1D("phoPhi", " Photon Phi ", phiBin, phiMin, phiMax);
1007 
1008  h_phoDEta_[0] = iBooker.book1D("phoDEta", " Photon Eta(rec)-Eta(true) ", dEtaBin, dEtaMin, dEtaMax);
1009  h_phoDPhi_[0] = iBooker.book1D("phoDPhi", " Photon Phi(rec)-Phi(true) ", dPhiBin, dPhiMin, dPhiMax);
1010 
1011  h_scEta_[0] = iBooker.book1D("scEta", " SC Eta ", etaBin, etaMin, etaMax);
1012  h_scPhi_[0] = iBooker.book1D("scPhi", " SC Phi ", phiBin, phiMin, phiMax);
1013 
1014  if (!isRunCentrally_) {
1015  h_scEtaWidth_[0] = iBooker.book1D("scEtaWidth", " SC Eta Width ", 100, 0., 0.1);
1016  h_scPhiWidth_[0] = iBooker.book1D("scPhiWidth", " SC Phi Width ", 100, 0., 1.);
1017  }
1018 
1019  histname = "scE";
1020  h_scE_[0][0] = iBooker.book1D(histname + "All", " SC Energy: All Ecal ", eBin, eMin, eMax);
1021  h_scE_[0][1] = iBooker.book1D(histname + "Barrel", " SC Energy: Barrel ", eBin, eMin, eMax);
1022  h_scE_[0][2] = iBooker.book1D(histname + "Endcap", " SC Energy: Endcap ", eBin, eMin, eMax);
1023 
1024  histname = "psE";
1025  h_psE_ = iBooker.book1D(histname + "Endcap", " ES Energy ", eBin, eMin, 50.);
1026 
1027  histname = "scEt";
1028  h_scEt_[0][0] = iBooker.book1D(histname + "All", " SC Et: All Ecal ", etBin, etMin, etMax);
1029  h_scEt_[0][1] = iBooker.book1D(histname + "Barrel", " SC Et: Barrel", etBin, etMin, etMax);
1030  h_scEt_[0][2] = iBooker.book1D(histname + "Endcap", " SC Et: Endcap", etBin, etMin, etMax);
1031 
1032  histname = "r9";
1033  h_r9_[0][0] = iBooker.book1D(histname + "All", " r9: All Ecal", r9Bin, r9Min, r9Max);
1034  h_r9_[0][1] = iBooker.book1D(histname + "Barrel", " r9: Barrel ", r9Bin, r9Min, r9Max);
1035  h_r9_[0][2] = iBooker.book1D(histname + "Endcap", " r9: Endcap ", r9Bin, r9Min, r9Max);
1036  //
1037 
1038  if (!isRunCentrally_) {
1039  histname = "r9ConvFromMC";
1040  h_r9_[1][0] = iBooker.book1D(histname + "All", " r9: All Ecal", r9Bin, r9Min, r9Max);
1041  h_r9_[1][1] = iBooker.book1D(histname + "Barrel", " r9: Barrel ", r9Bin, r9Min, r9Max);
1042  h_r9_[1][2] = iBooker.book1D(histname + "Endcap", " r9: Endcap ", r9Bin, r9Min, r9Max);
1043  //
1044  histname = "r9ConvFromReco";
1045  h_r9_[2][0] = iBooker.book1D(histname + "All", " r9: All Ecal", r9Bin, r9Min, r9Max);
1046  h_r9_[2][1] = iBooker.book1D(histname + "Barrel", " r9: Barrel ", r9Bin, r9Min, r9Max);
1047  h_r9_[2][2] = iBooker.book1D(histname + "Endcap", " r9: Endcap ", r9Bin, r9Min, r9Max);
1049  histname = "EtR9Less093";
1050  h_EtR9Less093_[0][0] = iBooker.book1D(histname + "All", " r9 < 0.94 or 0.95 : All Ecal", etBin, etMin, etMax);
1051  h_EtR9Less093_[0][1] = iBooker.book1D(histname + "Barrel", " r9 < 0.94 : Barrel ", etBin, etMin, etMax);
1052  h_EtR9Less093_[0][2] = iBooker.book1D(histname + "Endcap", " r9 < 0.95 : Endcap ", etBin, etMin, etMax);
1053  histname = "EtR9Less093Conv";
1054  h_EtR9Less093_[1][0] =
1055  iBooker.book1D(histname + "All", " r9 < 0.94, 0.95 and good conv : All Ecal", etBin, etMin, etMax);
1056  h_EtR9Less093_[1][1] =
1057  iBooker.book1D(histname + "Barrel", " r9 < 0.94 and good conv : Barrel ", etBin, etMin, etMax);
1058  h_EtR9Less093_[1][2] =
1059  iBooker.book1D(histname + "Endcap", " r9 < 0.95 and good conv : Endcap ", etBin, etMin, etMax);
1060  }
1061 
1063  histname = "pR9VsEta";
1064  p_r9VsEta_[0] = iBooker.bookProfile(
1065  histname + "All", " All photons r9 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1066  p_r9VsEta_[1] = iBooker.bookProfile(
1067  histname + "Unconv", " Unconv photons r9 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1068  p_r9VsEta_[2] = iBooker.bookProfile(
1069  histname + "Conv", " Conv photons r9 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1070  //
1071  histname = "R9VsEt";
1072  if (!isRunCentrally_)
1073  h2_r9VsEt_[0] =
1074  iBooker.book2D(histname + "All", " All photons r9 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1075  if (!isRunCentrally_)
1076  h2_r9VsEt_[1] =
1077  iBooker.book2D(histname + "Unconv", " All photons r9 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1078  //
1079  histname = "r1";
1080  h_r1_[0][0] = iBooker.book1D(histname + "All", " e1x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
1081  h_r1_[0][1] = iBooker.book1D(histname + "Barrel", " e1x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
1082  h_r1_[0][2] = iBooker.book1D(histname + "Endcap", " e1x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
1083  //
1084  histname = "R1VsEta";
1085  if (!isRunCentrally_)
1086  h2_r1VsEta_[0] = iBooker.book2D(
1087  histname + "All", " All photons e1x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1088  if (!isRunCentrally_)
1089  h2_r1VsEta_[1] = iBooker.book2D(
1090  histname + "Unconv", " All photons e1x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1091  //
1092  histname = "R1VsEt";
1093  if (!isRunCentrally_)
1094  h2_r1VsEt_[0] =
1095  iBooker.book2D(histname + "All", " All photons e1x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1096  if (!isRunCentrally_)
1097  h2_r1VsEt_[1] = iBooker.book2D(
1098  histname + "Unconv", " All photons e1x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1099  //
1100  histname = "r2";
1101  h_r2_[0][0] = iBooker.book1D(histname + "All", " e2x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
1102  h_r2_[0][1] = iBooker.book1D(histname + "Barrel", " e2x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
1103  h_r2_[0][2] = iBooker.book1D(histname + "Endcap", " e2x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
1104  //
1105  histname = "R2VsEta";
1106  if (!isRunCentrally_)
1107  h2_r2VsEta_[0] = iBooker.book2D(
1108  histname + "All", " All photons e2x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1109  if (!isRunCentrally_)
1110  h2_r2VsEta_[1] = iBooker.book2D(
1111  histname + "Unconv", " All photons e2x5/e5x5 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 1.1);
1112  //
1113  histname = "R2VsEt";
1114  if (!isRunCentrally_)
1115  h2_r2VsEt_[0] =
1116  iBooker.book2D(histname + "All", " All photons e2x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1117  if (!isRunCentrally_)
1118  h2_r2VsEt_[1] = iBooker.book2D(
1119  histname + "Unconv", " All photons e2x5/e5x5 vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 1.1);
1120  //
1121  histname = "sigmaIetaIeta";
1122  h_sigmaIetaIeta_[0][0] = iBooker.book1D(histname + "All", "sigmaIetaIeta: All Ecal", 100, 0., 0.1);
1123  h_sigmaIetaIeta_[0][1] = iBooker.book1D(histname + "Barrel", "sigmaIetaIeta: Barrel ", 100, 0., 0.05);
1124  h_sigmaIetaIeta_[0][2] = iBooker.book1D(histname + "Endcap", "sigmaIetaIeta: Endcap ", 100, 0., 0.1);
1125  //
1126  histname = "sigmaIetaIetaVsEta";
1127  if (!isRunCentrally_)
1128  h2_sigmaIetaIetaVsEta_[0] = iBooker.book2D(
1129  histname + "All", " All photons sigmaIetaIeta vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1130  if (!isRunCentrally_)
1131  h2_sigmaIetaIetaVsEta_[1] = iBooker.book2D(
1132  histname + "Unconv", " All photons sigmaIetaIeta vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1133  //
1134  histname = "sigmaIetaIetaVsEt";
1135  if (!isRunCentrally_)
1136  h2_sigmaIetaIetaVsEt_[0] = iBooker.book2D(
1137  histname + "All", " All photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1138  if (!isRunCentrally_)
1139  h2_sigmaIetaIetaVsEt_[1] = iBooker.book2D(
1140  histname + "Unconv", " All photons sigmaIetaIeta vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1141  //
1142  histname = "hOverE";
1143  h_hOverE_[0][0] = iBooker.book1D(histname + "All", "H/E: All Ecal", 100, 0., 0.1);
1144  h_hOverE_[0][1] = iBooker.book1D(histname + "Barrel", "H/E: Barrel ", 100, 0., 0.1);
1145  h_hOverE_[0][2] = iBooker.book1D(histname + "Endcap", "H/E: Endcap ", 100, 0., 0.1);
1146  //
1147  histname = "newhOverE";
1148  h_newhOverE_[0][0] = iBooker.book1D(histname + "All", "new H/E: All Ecal", 100, 0., 0.1);
1149  h_newhOverE_[0][1] = iBooker.book1D(histname + "Barrel", "new H/E: Barrel ", 100, 0., 0.1);
1150  h_newhOverE_[0][2] = iBooker.book1D(histname + "Endcap", "new H/E: Endcap ", 100, 0., 0.1);
1151 
1152  //
1153  if (!isRunCentrally_) {
1154  histname = "hOverEVsEta";
1155  h2_hOverEVsEta_[0] =
1156  iBooker.book2D(histname + "All", " All photons H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1157  h2_hOverEVsEta_[1] = iBooker.book2D(
1158  histname + "Unconv", " All photons H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1159  //
1160  histname = "hOverEVsEt";
1161  h2_hOverEVsEt_[0] =
1162  iBooker.book2D(histname + "All", " All photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1163  h2_hOverEVsEt_[1] =
1164  iBooker.book2D(histname + "Unconv", " All photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1165  //
1166  }
1167  histname = "pHoverEVsEta";
1168  p_hOverEVsEta_[0] = iBooker.bookProfile(
1169  histname + "All", " All photons H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1170  p_hOverEVsEta_[1] = iBooker.bookProfile(
1171  histname + "Unconv", " All photons H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1172  //
1173  histname = "pHoverEVsEt";
1174  p_hOverEVsEt_[0] =
1175  iBooker.bookProfile(histname + "All", " All photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1176  p_hOverEVsEt_[1] =
1177  iBooker.bookProfile(histname + "Unconv", " All photons H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1178  //
1179  histname = "pnewHoverEVsEta";
1180  p_newhOverEVsEta_[0] = iBooker.bookProfile(
1181  histname + "All", " All photons new H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1182  p_newhOverEVsEta_[1] = iBooker.bookProfile(
1183  histname + "Unconv", " All photons new H/E vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 0.1);
1184  //
1185  histname = "pnewHoverEVsEt";
1186  p_newhOverEVsEt_[0] =
1187  iBooker.bookProfile(histname + "All", " All photons new H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1188  p_newhOverEVsEt_[1] = iBooker.bookProfile(
1189  histname + "Unconv", " All photons new H/E vs Et: all Ecal ", etBin, etMin, etMax, 100, 0., 0.1);
1190  //
1191  histname = "ecalRecHitSumEtConeDR04";
1193  iBooker.book1D(histname + "All", "ecalRecHitSumEtDR04: All Ecal", etBin, etMin, 20.);
1195  iBooker.book1D(histname + "Barrel", "ecalRecHitSumEtDR04: Barrel ", etBin, etMin, 20.);
1197  iBooker.book1D(histname + "Endcap", "ecalRecHitSumEtDR04: Endcap ", etBin, etMin, 20.);
1198  //
1199 
1200  if (!isRunCentrally_) {
1201  histname = "ecalRecHitSumEtConeDR04VsEta";
1202  h2_ecalRecHitSumEtConeDR04VsEta_[0] = iBooker.book2D(histname + "All",
1203  " All photons ecalRecHitSumEtDR04 vs #eta: all Ecal ",
1204  etaBin2,
1205  etaMin,
1206  etaMax,
1207  etBin,
1208  etMin,
1209  etMax * etScale);
1210  h2_ecalRecHitSumEtConeDR04VsEta_[1] = iBooker.book2D(histname + "Unconv",
1211  " All photons ecalRecHitSumEtDR04 vs #eta: all Ecal ",
1212  etaBin2,
1213  etaMin,
1214  etaMax,
1215  etBin,
1216  etMin,
1217  etMax * etScale);
1218  }
1219  histname = "pEcalRecHitSumEtConeDR04VsEta";
1220  p_ecalRecHitSumEtConeDR04VsEta_[0] = iBooker.bookProfile(histname + "All",
1221  "All photons ecalRecHitSumEtDR04 vs #eta: all Ecal ",
1222  etaBin2,
1223  etaMin,
1224  etaMax,
1225  etBin,
1226  etMin,
1227  etMax * etScale,
1228  "");
1229  p_ecalRecHitSumEtConeDR04VsEta_[1] = iBooker.bookProfile(histname + "Unconv",
1230  "All photons ecalRecHitSumEtDR04 vs #eta: all Ecal ",
1231  etaBin2,
1232  etaMin,
1233  etaMax,
1234  etBin,
1235  etMin,
1236  etMax * etScale,
1237  "");
1238  //
1239  if (!isRunCentrally_) {
1240  histname = "ecalRecHitSumEtConeDR04VsEt";
1241  h2_ecalRecHitSumEtConeDR04VsEt_[0] = iBooker.book2D(histname + "All",
1242  " All photons ecalRecHitSumEtDR04 vs Et: all Ecal ",
1243  etBin,
1244  etMin,
1245  etMax,
1246  etBin,
1247  etMin,
1248  etMax * etScale);
1249  h2_ecalRecHitSumEtConeDR04VsEt_[1] = iBooker.book2D(histname + "Barrel",
1250  " All photons ecalRecHitSumEtDR04 vs Et: Barrel ",
1251  etBin,
1252  etMin,
1253  etMax,
1254  etBin,
1255  etMin,
1256  etMax * etScale);
1257  h2_ecalRecHitSumEtConeDR04VsEt_[2] = iBooker.book2D(histname + "Endcap",
1258  " All photons ecalRecHitSumEtDR04 vs Et: Endcap ",
1259  etBin,
1260  etMin,
1261  etMax,
1262  etBin,
1263  etMin,
1264  etMax * etScale);
1265  }
1266  histname = "pEcalRecHitSumEtConeDR04VsEt";
1267  if (!isRunCentrally_)
1268  p_ecalRecHitSumEtConeDR04VsEt_[0] = iBooker.bookProfile(histname + "All",
1269  "All photons ecalRecHitSumEtDR04 vs Et: all Ecal ",
1270  etBin,
1271  etMin,
1272  etMax,
1273  etBin,
1274  etMin,
1275  etMax * etScale,
1276  "");
1277  p_ecalRecHitSumEtConeDR04VsEt_[1] = iBooker.bookProfile(histname + "Barrel",
1278  "All photons ecalRecHitSumEtDR04 vs Et: all Ecal ",
1279  etBin,
1280  etMin,
1281  etMax,
1282  etBin,
1283  etMin,
1284  etMax * etScale,
1285  "");
1286  p_ecalRecHitSumEtConeDR04VsEt_[2] = iBooker.bookProfile(histname + "Endcap",
1287  "All photons ecalRecHitSumEtDR04 vs Et: all Ecal ",
1288  etBin,
1289  etMin,
1290  etMax,
1291  etBin,
1292  etMin,
1293  etMax * etScale,
1294  "");
1295  //
1296  histname = "hcalTowerSumEtConeDR04";
1298  iBooker.book1D(histname + "All", "hcalTowerSumEtConeDR04: All Ecal", etBin, etMin, 20.);
1300  iBooker.book1D(histname + "Barrel", "hcalTowerSumEtConeDR04: Barrel ", etBin, etMin, 20.);
1302  iBooker.book1D(histname + "Endcap", "hcalTowerSumEtConeDR04: Endcap ", etBin, etMin, 20.);
1303  //
1304  histname = "hcalTowerBcSumEtConeDR04";
1305  if (!isRunCentrally_)
1307  iBooker.book1D(histname + "All", "hcalTowerBcSumEtConeDR04: All Ecal", etBin, etMin, 20.);
1309  iBooker.book1D(histname + "Barrel", "hcalTowerBcSumEtConeDR04: Barrel ", etBin, etMin, 20.);
1311  iBooker.book1D(histname + "Endcap", "hcalTowerBcSumEtConeDR04: Endcap ", etBin, etMin, 20.);
1312 
1313  //
1314  if (!isRunCentrally_) {
1315  histname = "hcalTowerSumEtConeDR04VsEta";
1316  h2_hcalTowerSumEtConeDR04VsEta_[0] = iBooker.book2D(histname + "All",
1317  " All photons hcalTowerSumEtConeDR04 vs #eta: all Ecal ",
1318  etaBin2,
1319  etaMin,
1320  etaMax,
1321  etBin,
1322  etMin,
1323  etMax * 0.1);
1324  h2_hcalTowerSumEtConeDR04VsEta_[1] = iBooker.book2D(histname + "Unconv",
1325  " All photons hcalTowerSumEtConeDR04 vs #eta: all Ecal ",
1326  etaBin2,
1327  etaMin,
1328  etaMax,
1329  etBin,
1330  etMin,
1331  etMax * 0.1);
1332  }
1333  histname = "pHcalTowerSumEtConeDR04VsEta";
1334  p_hcalTowerSumEtConeDR04VsEta_[0] = iBooker.bookProfile(histname + "All",
1335  "All photons hcalTowerSumEtDR04 vs #eta: all Ecal ",
1336  etaBin2,
1337  etaMin,
1338  etaMax,
1339  etBin,
1340  etMin,
1341  etMax * 0.1,
1342  "");
1343  p_hcalTowerSumEtConeDR04VsEta_[1] = iBooker.bookProfile(histname + "Unconv",
1344  "All photons hcalTowerSumEtDR04 vs #eta: all Ecal ",
1345  etaBin2,
1346  etaMin,
1347  etaMax,
1348  etBin,
1349  etMin,
1350  etMax * 0.1,
1351  "");
1352  histname = "pHcalTowerBcSumEtConeDR04VsEta";
1353  p_hcalTowerBcSumEtConeDR04VsEta_[0] = iBooker.bookProfile(histname + "All",
1354  "All photons hcalTowerBcSumEtDR04 vs #eta: all Ecal ",
1355  etaBin2,
1356  etaMin,
1357  etaMax,
1358  etBin,
1359  etMin,
1360  etMax * 0.1,
1361  "");
1362  p_hcalTowerBcSumEtConeDR04VsEta_[1] = iBooker.bookProfile(histname + "Unconv",
1363  "All photons hcalTowerBcSumEtDR04 vs #eta: all Ecal ",
1364  etaBin2,
1365  etaMin,
1366  etaMax,
1367  etBin,
1368  etMin,
1369  etMax * 0.1,
1370  "");
1371  //
1372  if (!isRunCentrally_) {
1373  histname = "hcalTowerSumEtConeDR04VsEt";
1374  h2_hcalTowerSumEtConeDR04VsEt_[0] = iBooker.book2D(histname + "All",
1375  " All photons hcalTowerSumEtConeDR04 vs Et: all Ecal ",
1376  etBin,
1377  etMin,
1378  etMax,
1379  etBin,
1380  etMin,
1381  etMax * 0.1);
1382  h2_hcalTowerSumEtConeDR04VsEt_[1] = iBooker.book2D(histname + "Barrel",
1383  " All photons hcalTowerSumEtConeDR04 vs Et: Barrel ",
1384  etBin,
1385  etMin,
1386  etMax,
1387  etBin,
1388  etMin,
1389  etMax * 0.1);
1390  h2_hcalTowerSumEtConeDR04VsEt_[2] = iBooker.book2D(histname + "Endcap",
1391  " All photons hcalTowerSumEtConeDR04 vs Et: Endcap ",
1392  etBin,
1393  etMin,
1394  etMax,
1395  etBin,
1396  etMin,
1397  etMax * 0.1);
1398  }
1399  histname = "pHcalTowerSumEtConeDR04VsEt";
1400  if (!isRunCentrally_)
1401  p_hcalTowerSumEtConeDR04VsEt_[0] = iBooker.bookProfile(histname + "All",
1402  "All photons hcalTowerSumEtDR04 vs Et: all Ecal ",
1403  etBin,
1404  etMin,
1405  etMax,
1406  etBin,
1407  etMin,
1408  etMax * etScale,
1409  "");
1410  p_hcalTowerSumEtConeDR04VsEt_[1] = iBooker.bookProfile(histname + "Barrel",
1411  "All photons hcalTowerSumEtDR04 vs Et: all Ecal ",
1412  etBin,
1413  etMin,
1414  etMax,
1415  etBin,
1416  etMin,
1417  etMax * etScale,
1418  "");
1419  p_hcalTowerSumEtConeDR04VsEt_[2] = iBooker.bookProfile(histname + "Endcap",
1420  "All photons hcalTowerSumEtDR04 vs Et: all Ecal ",
1421  etBin,
1422  etMin,
1423  etMax,
1424  etBin,
1425  etMin,
1426  etMax * etScale,
1427  "");
1428  //
1429  histname = "pHcalTowerBcSumEtConeDR04VsEt";
1430  if (!isRunCentrally_)
1431  p_hcalTowerBcSumEtConeDR04VsEt_[0] = iBooker.bookProfile(histname + "All",
1432  "All photons hcalTowerBcSumEtDR04 vs Et: all Ecal ",
1433  etBin,
1434  etMin,
1435  etMax,
1436  etBin,
1437  etMin,
1438  etMax * etScale,
1439  "");
1440  p_hcalTowerBcSumEtConeDR04VsEt_[1] = iBooker.bookProfile(histname + "Barrel",
1441  "All photons hcalTowerBcSumEtDR04 vs Et: all Ecal ",
1442  etBin,
1443  etMin,
1444  etMax,
1445  etBin,
1446  etMin,
1447  etMax * etScale,
1448  "");
1449  p_hcalTowerBcSumEtConeDR04VsEt_[2] = iBooker.bookProfile(histname + "Endcap",
1450  "All photons hcalTowerBcSumEtDR04 vs Et: all Ecal ",
1451  etBin,
1452  etMin,
1453  etMax,
1454  etBin,
1455  etMin,
1456  etMax * etScale,
1457  "");
1458 
1459  //
1460  histname = "isoTrkSolidConeDR04";
1461  h_isoTrkSolidConeDR04_[0][0] =
1462  iBooker.book1D(histname + "All", "isoTrkSolidConeDR04: All Ecal", etBin, etMin, etMax * 0.1);
1463  h_isoTrkSolidConeDR04_[0][1] =
1464  iBooker.book1D(histname + "Barrel", "isoTrkSolidConeDR04: Barrel ", etBin, etMin, etMax * 0.1);
1465  h_isoTrkSolidConeDR04_[0][2] =
1466  iBooker.book1D(histname + "Endcap", "isoTrkSolidConeDR04: Endcap ", etBin, etMin, etMax * 0.1);
1467  //
1468 
1469  histname = "isoTrkSolidConeDR04VsEta";
1470  if (!isRunCentrally_)
1471  h2_isoTrkSolidConeDR04VsEta_[0] = iBooker.book2D(histname + "All",
1472  " All photons isoTrkSolidConeDR04 vs #eta: all Ecal ",
1473  etaBin2,
1474  etaMin,
1475  etaMax,
1476  etBin,
1477  etMin,
1478  etMax * 0.1);
1479  if (!isRunCentrally_)
1480  h2_isoTrkSolidConeDR04VsEta_[1] = iBooker.book2D(histname + "Unconv",
1481  " All photons isoTrkSolidConeDR04 vs #eta: all Ecal ",
1482  etaBin2,
1483  etaMin,
1484  etaMax,
1485  etBin,
1486  etMin,
1487  etMax * 0.1);
1488 
1489  //
1490  histname = "isoTrkSolidConeDR04VsEt";
1491  if (!isRunCentrally_)
1492  h2_isoTrkSolidConeDR04VsEt_[0] = iBooker.book2D(histname + "All",
1493  " All photons isoTrkSolidConeDR04 vs Et: all Ecal ",
1494  etBin,
1495  etMin,
1496  etMax,
1497  etBin,
1498  etMin,
1499  etMax * 0.1);
1500  if (!isRunCentrally_)
1501  h2_isoTrkSolidConeDR04VsEt_[1] = iBooker.book2D(histname + "Unconv",
1502  " All photons isoTrkSolidConeDR04 vs Et: all Ecal ",
1503  etBin,
1504  etMin,
1505  etMax,
1506  etBin,
1507  etMin,
1508  etMax * 0.1);
1509  //
1510  histname = "nTrkSolidConeDR04";
1511  h_nTrkSolidConeDR04_[0][0] = iBooker.book1D(histname + "All", "nTrkSolidConeDR04: All Ecal", 20, 0., 20);
1512  h_nTrkSolidConeDR04_[0][1] = iBooker.book1D(histname + "Barrel", "nTrkSolidConeDR04: Barrel ", 20, 0., 20);
1513  h_nTrkSolidConeDR04_[0][2] = iBooker.book1D(histname + "Endcap", "nTrkSolidConeDR04: Endcap ", 20, 0., 20);
1514  //
1515  histname = "nTrkSolidConeDR04VsEta";
1516  if (!isRunCentrally_)
1517  h2_nTrkSolidConeDR04VsEta_[0] = iBooker.book2D(
1518  histname + "All", " All photons nTrkSolidConeDR04 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 20, 0., 20);
1519  if (!isRunCentrally_)
1520  h2_nTrkSolidConeDR04VsEta_[1] = iBooker.book2D(
1521  histname + "Unconv", " All photons nTrkSolidConeDR04 vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 20, 0., 20);
1522  //
1523  histname = "nTrkSolidConeDR04VsEt";
1524  if (!isRunCentrally_)
1525  h2_nTrkSolidConeDR04VsEt_[0] = iBooker.book2D(
1526  histname + "All", " All photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
1527  if (!isRunCentrally_)
1528  h2_nTrkSolidConeDR04VsEt_[1] = iBooker.book2D(
1529  histname + "Unconv", " All photons nTrkSolidConeDR04 vs Et: all Ecal ", etBin, etMin, etMax, 20, 0., 20);
1530  //
1531  histname = "phoE";
1532  h_phoE_[0][0] = iBooker.book1D(histname + "All", " Photon Energy: All ecal ", eBin, eMin, eMax);
1533  h_phoE_[0][1] = iBooker.book1D(histname + "Barrel", " Photon Energy: barrel ", eBin, eMin, eMax);
1534  h_phoE_[0][2] = iBooker.book1D(histname + "Endcap", " Photon Energy: Endcap ", eBin, eMin, eMax);
1535 
1536  histname = "phoEt";
1537  h_phoEt_[0][0] = iBooker.book1D(histname + "All", " Photon Transverse Energy: All ecal ", etBin, etMin, etMax);
1538  h_phoEt_[0][1] = iBooker.book1D(histname + "Barrel", " Photon Transverse Energy: Barrel ", etBin, etMin, etMax);
1539  h_phoEt_[0][2] = iBooker.book1D(histname + "Endcap", " Photon Transverse Energy: Endcap ", etBin, etMin, etMax);
1540 
1541  histname = "eRes";
1542  h_phoERes_[0][0] =
1543  iBooker.book1D(histname + "All", " Photon E/E_{true}: All ecal; E/E_{true} (GeV)", resBin, resMin, resMax);
1544  h_phoERes_[0][1] =
1545  iBooker.book1D(histname + "Barrel", "Photon E/E_{true}: Barrel; E/E_{true} (GeV)", resBin, resMin, resMax);
1546  h_phoERes_[0][2] =
1547  iBooker.book1D(histname + "Endcap", " Photon E/E_{true}: Endcap; E/E_{true} (GeV)", resBin, resMin, resMax);
1548 
1549  h_phoERes_[1][0] = iBooker.book1D(
1550  histname + "unconvAll", " Photon E/E_{true} if r9>0.94, 0.95: All ecal; E/E_{true} (GeV)", resBin, resMin, resMax);
1551  h_phoERes_[1][1] = iBooker.book1D(
1552  histname + "unconvBarrel", " Photon E/E_{true} if r9>0.94: Barrel; E/E_{true} (GeV)", resBin, resMin, resMax);
1553  h_phoERes_[1][2] = iBooker.book1D(
1554  histname + "unconvEndcap", " Photon E/E_{true} if r9>0.95: Endcap; E/E_{true} (GeV)", resBin, resMin, resMax);
1555 
1556  h_phoERes_[2][0] = iBooker.book1D(
1557  histname + "convAll", " Photon E/E_{true} if r9<0.0.94, 0.95: All ecal; E/E_{true} (GeV)", resBin, resMin, resMax);
1558  h_phoERes_[2][1] = iBooker.book1D(
1559  histname + "convBarrel", " Photon E/E_{true} if r9<0.94: Barrel; E/E_{true} (GeV)", resBin, resMin, resMax);
1560  h_phoERes_[2][2] = iBooker.book1D(
1561  histname + "convEndcap", " Photon E/E_{true} if r9<0.95: Endcap; E/E_{true} (GeV)", resBin, resMin, resMax);
1562 
1563  histname = "sigmaEoE";
1564  h_phoSigmaEoE_[0][0] = iBooker.book1D(histname + "All", "#sigma_{E}/E: All ecal; #sigma_{E}/E", 100, 0., 0.08);
1565  h_phoSigmaEoE_[0][1] = iBooker.book1D(histname + "Barrel", "#sigma_{E}/E: Barrel; #sigma_{E}/E", 100, 0., 0.08);
1566  h_phoSigmaEoE_[0][2] = iBooker.book1D(histname + "Endcap", "#sigma_{E}/E: Endcap, #sigma_{E}/E", 100, 0., 0.08);
1567 
1568  h_phoSigmaEoE_[1][0] =
1569  iBooker.book1D(histname + "unconvAll", "#sigma_{E}/E if r9>0.94, 0.95: All ecal; #sigma_{E}/E", 100, 0., 0.08);
1570  h_phoSigmaEoE_[1][1] =
1571  iBooker.book1D(histname + "unconvBarrel", "#sigma_{E}/E if r9>0.94: Barrel; #sigma_{E}/E", 100, 0., 0.08);
1572  h_phoSigmaEoE_[1][2] =
1573  iBooker.book1D(histname + "unconvEndcap", "#sigma_{E}/E r9>0.95: Endcap; #sigma_{E}/E", 100, 0., 0.08);
1574 
1575  h_phoSigmaEoE_[2][0] =
1576  iBooker.book1D(histname + "convAll", "#sigma_{E}/E if r9<0.0.94, 0.95: All ecal, #sigma_{E}/E", 100, 0., 0.08);
1577  h_phoSigmaEoE_[2][1] =
1578  iBooker.book1D(histname + "convBarrel", "#sigma_{E}/E if r9<0.94: Barrel, #sigma_{E}/E", 100, 0., 0.08);
1579  h_phoSigmaEoE_[2][2] =
1580  iBooker.book1D(histname + "convEndcap", "#sigma_{E}/E if r9<0.95: Endcap, #sigma_{E}/E", 100, 0., 0.08);
1581 
1582  histname = "eResVsEta";
1583  if (!isRunCentrally_)
1584  h2_eResVsEta_[0] = iBooker.book2D(
1585  histname + "All", " All photons E/Etrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 2.5);
1586  if (!isRunCentrally_)
1587  h2_eResVsEta_[1] = iBooker.book2D(
1588  histname + "Unconv", " Unconv photons E/Etrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 2.5);
1589 
1590  histname = "pEResVsEta";
1591  p_eResVsEta_[0] = iBooker.bookProfile(
1592  histname + "All", "All photons E/Etrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, resBin, resMin, resMax, "");
1593  p_eResVsEta_[1] = iBooker.bookProfile(histname + "Unconv",
1594  "Unconv photons E/Etrue vs #eta: all Ecal",
1595  etaBin2,
1596  etaMin,
1597  etaMax,
1598  resBin,
1599  resMin,
1600  resMax,
1601  "");
1602  p_eResVsEta_[2] = iBooker.bookProfile(
1603  histname + "Conv", "Conv photons E/Etrue vs #eta: all Ecal", etaBin2, etaMin, etaMax, resBin, resMin, resMax, "");
1604 
1605  histname = "pSigmaEoEVsEta";
1606  p_sigmaEoEVsEta_[0] = iBooker.bookProfile(histname + "All",
1607  "All photons: #sigma_{E}/E vs #eta: all Ecal; #eta; #sigma_{E}/E",
1608  etaBin2,
1609  etaMin,
1610  etaMax,
1611  100,
1612  0.,
1613  0.08,
1614  "");
1615  p_sigmaEoEVsEta_[1] = iBooker.bookProfile(histname + "Unconv",
1616  "Unconv photons #sigma_{E}/E vs #eta: all Ecal; #eta; #sigma_{E}/E ",
1617  etaBin2,
1618  etaMin,
1619  etaMax,
1620  100,
1621  0.,
1622  0.08,
1623  "");
1624  p_sigmaEoEVsEta_[2] = iBooker.bookProfile(histname + "Conv",
1625  "Conv photons #sigma_{E}/E vs #eta: all Ecal; #eta; #sigma_{E}/E",
1626  etaBin2,
1627  etaMin,
1628  etaMax,
1629  100,
1630  0.,
1631  0.08,
1632  "");
1633 
1634  histname = "pSigmaEoEVsEt";
1635  p_sigmaEoEVsEt_[1][0] = iBooker.bookProfile(histname + "Barrel",
1636  "All photons #sigma_{E}/E vs E_{T}: Barrel; E_{T} (GeV); #sigma_{E}/E ",
1637  etBin,
1638  etMin,
1639  etMax,
1640  100,
1641  0.,
1642  0.08,
1643  "");
1644  p_sigmaEoEVsEt_[1][1] =
1645  iBooker.bookProfile(histname + "unconvBarrel",
1646  "Unconv photons #sigma_{E}/E vs E_{T}: Barrel; E_{T} (GeV); #sigma_{E}/E ",
1647  etBin,
1648  etMin,
1649  etMax,
1650  100,
1651  0.,
1652  0.08,
1653  "");
1654  p_sigmaEoEVsEt_[1][2] = iBooker.bookProfile(histname + "convBarrel",
1655  "Conv photons #sigma_{E}/E vs E_{T}: Barrel; E_{T} (GeV); #sigma_{E}/E",
1656  etBin,
1657  etMin,
1658  etMax,
1659  100,
1660  0.,
1661  0.08,
1662  "");
1663  p_sigmaEoEVsEt_[2][0] = iBooker.bookProfile(histname + "Endcap",
1664  "All photons #sigma_{E}/E vs E_{T}: Endcap; E_{T} (GeV); #sigma_{E}/E ",
1665  etBin,
1666  etMin,
1667  etMax,
1668  100,
1669  0.,
1670  0.08,
1671  "");
1672  p_sigmaEoEVsEt_[2][1] =
1673  iBooker.bookProfile(histname + "unconvEndcap",
1674  "Unconv photons #sigma_{E}/E vs E_{T}: Endcap; E_{T} (GeV); #sigma_{E}/E ",
1675  etBin,
1676  etMin,
1677  etMax,
1678  100,
1679  0.,
1680  0.08,
1681  "");
1682  p_sigmaEoEVsEt_[2][2] = iBooker.bookProfile(histname + "convEndcap",
1683  "Conv photons #sigma_{E}/E vs E_{T}: Endcap; E_{T} (GeV); #sigma_{E}/E",
1684  etBin,
1685  etMin,
1686  etMax,
1687  100,
1688  0.,
1689  0.08,
1690  "");
1691 
1692  histname = "pSigmaEoEVsNVtx";
1693  p_sigmaEoEVsNVtx_[1][0] = iBooker.bookProfile(histname + "Barrel",
1694  "All photons: #sigma_{E}/E vs N_{vtx}: Barrel; N_{vtx}; #sigma_{E}/E",
1695  200,
1696  -0.5,
1697  199.5,
1698  100,
1699  0.,
1700  0.08,
1701  "");
1702  p_sigmaEoEVsNVtx_[1][1] =
1703  iBooker.bookProfile(histname + "unconvBarrel",
1704  "Unconv photons #sigma_{E}/E vs N_{vtx}: Barrel; N_{vtx}; #sigma_{E}/E ",
1705  200,
1706  -0.5,
1707  199.5,
1708  100,
1709  0.,
1710  0.08,
1711  "");
1712  p_sigmaEoEVsNVtx_[1][2] = iBooker.bookProfile(histname + "convBarrel",
1713  "Conv photons #sigma_{E}/E vs N_{vtx}: Barrel; N_{vtx}; #sigma_{E}/E",
1714  200,
1715  -0.5,
1716  199.5,
1717  100,
1718  0.,
1719  0.08,
1720  "");
1721  p_sigmaEoEVsNVtx_[2][0] = iBooker.bookProfile(histname + "Endcap",
1722  "All photons: #sigma_{E}/E vs N_{vtx}: Endcap; N_{vtx}; #sigma_{E}/E",
1723  200,
1724  -0.5,
1725  199.5,
1726  100,
1727  0.,
1728  0.08,
1729  "");
1730  p_sigmaEoEVsNVtx_[2][1] =
1731  iBooker.bookProfile(histname + "unconvEndcap",
1732  "Unconv photons #sigma_{E}/E vs N_{vtx}: Endcap; N_{vtx}; #sigma_{E}/E ",
1733  200,
1734  -0.5,
1735  199.5,
1736  100,
1737  0.,
1738  0.08,
1739  "");
1740  p_sigmaEoEVsNVtx_[2][2] = iBooker.bookProfile(histname + "convEndcap",
1741  "Conv photons #sigma_{E}/E vs N_{vtx}: Endcap; N_{vtx}; #sigma_{E}/E",
1742  200,
1743  -0.5,
1744  199.5,
1745  100,
1746  0.,
1747  0.08,
1748  "");
1749 
1750  if (!isRunCentrally_) {
1751  histname = "eResVsEt";
1752  h2_eResVsEt_[0][0] = iBooker.book2D(
1753  histname + "All", " All photons E/Etrue vs true Et: all Ecal ", etBin, etMin, etMax, 100, 0.9, 1.1);
1754  h2_eResVsEt_[0][1] = iBooker.book2D(
1755  histname + "unconv", " All photons E/Etrue vs true Et: all Ecal ", etBin, etMin, etMax, 100, 0.9, 1.1);
1756  h2_eResVsEt_[0][2] = iBooker.book2D(
1757  histname + "conv", " All photons E/Etrue vs true Et: all Ecal ", etBin, etMin, etMax, 100, 0.9, 1.1);
1758  h2_eResVsEt_[1][0] = iBooker.book2D(
1759  histname + "Barrel", " All photons E/Etrue vs true Et: Barrel ", etBin, etMin, etMax, 100, 0.9, 1.1);
1760  h2_eResVsEt_[1][1] = iBooker.book2D(
1761  histname + "unconvBarrel", " All photons E/Etrue vs true Et: Barrel ", etBin, etMin, etMax, 100, 0.9, 1.1);
1762  h2_eResVsEt_[1][2] = iBooker.book2D(
1763  histname + "convBarrel", " All photons E/Etrue vs true Et: Barrel ", etBin, etMin, etMax, 100, 0.9, 1.1);
1764  h2_eResVsEt_[2][0] = iBooker.book2D(
1765  histname + "Endcap", " All photons E/Etrue vs true Et: Endcap ", etBin, etMin, etMax, 100, 0.9, 1.1);
1766  h2_eResVsEt_[2][1] = iBooker.book2D(
1767  histname + "unconvEndcap", " All photons E/Etrue vs true Et: Endcap ", etBin, etMin, etMax, 100, 0.9, 1.1);
1768  h2_eResVsEt_[2][2] = iBooker.book2D(
1769  histname + "convEndcap", " All photons E/Etrue vs true Et: Endcap ", etBin, etMin, etMax, 100, 0.9, 1.1);
1770  }
1771 
1772  histname = "pEResVsEt";
1773  p_eResVsEt_[0][0] = iBooker.bookProfile(
1774  histname + "All", "All photons E/Etrue vs Et: all Ecal ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1775  p_eResVsEt_[0][1] = iBooker.bookProfile(
1776  histname + "unconv", "All photons E/Etrue vs Et: all Ecal ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1777  p_eResVsEt_[0][2] = iBooker.bookProfile(
1778  histname + "conv", "All photons E/Etrue vs Et: all Ecal ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1779  p_eResVsEt_[1][0] = iBooker.bookProfile(
1780  histname + "Barrel", "All photons E/Etrue vs Et: Barrel ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1781  p_eResVsEt_[1][1] = iBooker.bookProfile(
1782  histname + "unconvBarrel", "All photons E/Etrue vs Et: Barrel ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1783  p_eResVsEt_[1][2] = iBooker.bookProfile(
1784  histname + "convBarrel", "All photons E/Etrue vs Et: Barrel ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1785  p_eResVsEt_[2][0] = iBooker.bookProfile(
1786  histname + "Endcap", "All photons E/Etrue vs Et: Endcap ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1787  p_eResVsEt_[2][1] = iBooker.bookProfile(
1788  histname + "unconvEndcap", "All photons E/Etrue vs Et: Endcap ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1789  p_eResVsEt_[2][2] = iBooker.bookProfile(
1790  histname + "convEndcap", "All photons E/Etrue vs Et: Endcap ", etBin, etMin, etMax, resBin, resMin, resMax, "");
1791 
1792  histname = "pEResVsNVtx";
1793  p_eResVsNVtx_[1][0] = iBooker.bookProfile(histname + "Barrel",
1794  "All photons E/E_{true} vs N_{vtx}: Barrel; N_{vtx}; E}/E_{true}",
1795  200,
1796  -0.5,
1797  199.5,
1798  resBin,
1799  resMin,
1800  resMax,
1801  "");
1802  p_eResVsNVtx_[1][1] =
1803  iBooker.bookProfile(histname + "unconvBarrel",
1804  "Unconverted photons E/E_{true} vs N_{vtx}: Barrel; N_{vtx}; E}/E_{true} ",
1805  200,
1806  -0.5,
1807  199.5,
1808  resBin,
1809  resMin,
1810  resMax,
1811  "");
1812  p_eResVsNVtx_[1][2] =
1813  iBooker.bookProfile(histname + "convBarrel",
1814  " Converted photons E/E_{true} vs N_{vtx}: Barrel; N_{vtx}; E}/E_{true} ",
1815  200,
1816  -0.5,
1817  199.5,
1818  resBin,
1819  resMin,
1820  resMax,
1821  "");
1822  p_eResVsNVtx_[2][0] = iBooker.bookProfile(histname + "Endcap",
1823  "All photons E/E_{true} vs N_{vtx}: Endcap; N_{vtx}; E}/E_{true} ",
1824  200,
1825  -0.5,
1826  199.5,
1827  resBin,
1828  resMin,
1829  resMax,
1830  "");
1831  p_eResVsNVtx_[2][1] =
1832  iBooker.bookProfile(histname + "unconvEndcap",
1833  "Uncoverted photons E/E_{true} vs N_{vtx}: Endcap; N_{vtx}; E}/E_{true} ",
1834  2080,
1835  -0.5,
1836  199.5,
1837  resBin,
1838  resMin,
1839  resMax,
1840  "");
1841  p_eResVsNVtx_[2][2] = iBooker.bookProfile(histname + "convEndcap",
1842  "Converted photons E/E_{true} vs N_{vtx}: Endcap; N_{vtx}; E}/E_{true} ",
1843  200,
1844  -0.5,
1845  199.5,
1846  resBin,
1847  resMin,
1848  resMax,
1849  "");
1850 
1851  histname = "eResVsR9";
1852  if (!isRunCentrally_)
1853  h2_eResVsR9_[0] = iBooker.book2D(
1854  histname + "All", " All photons E/Etrue vs R9: all Ecal ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1855  if (!isRunCentrally_)
1856  h2_eResVsR9_[1] = iBooker.book2D(
1857  histname + "Barrel", " All photons E/Etrue vs R9: Barrel ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1858  if (!isRunCentrally_)
1859  h2_eResVsR9_[2] = iBooker.book2D(
1860  histname + "Endcap", " All photons E/Etrue vs R9: Endcap ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1861  histname = "pEResVsR9";
1862  if (!isRunCentrally_)
1863  p_eResVsR9_[0] = iBooker.bookProfile(
1864  histname + "All", " All photons E/Etrue vs R9: all Ecal ", r9Bin * 2, r9Min, r9Max, resBin, resMin, resMax, "");
1865  p_eResVsR9_[1] = iBooker.bookProfile(
1866  histname + "Barrel", " All photons E/Etrue vs R9: Barrel ", r9Bin * 2, r9Min, r9Max, resBin, resMin, resMax, "");
1867  p_eResVsR9_[2] = iBooker.bookProfile(
1868  histname + "Endcap", " All photons E/Etrue vs R9: Endcap ", r9Bin * 2, r9Min, r9Max, resBin, resMin, resMax, "");
1869  histname = "sceResVsR9";
1870  if (!isRunCentrally_)
1871  h2_sceResVsR9_[0] = iBooker.book2D(
1872  histname + "All", " All photons scE/Etrue vs R9: all Ecal ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1873  if (!isRunCentrally_)
1874  h2_sceResVsR9_[1] = iBooker.book2D(
1875  histname + "Barrel", " All photons scE/Etrue vs R9: Barrel ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1876  if (!isRunCentrally_)
1877  h2_sceResVsR9_[2] = iBooker.book2D(
1878  histname + "Endcap", " All photons scE/Etrue vs R9: Endcap ", r9Bin * 2, r9Min, r9Max, 100, 0., 2.5);
1879  histname = "scpEResVsR9";
1880  if (!isRunCentrally_)
1881  p_sceResVsR9_[0] = iBooker.bookProfile(histname + "All",
1882  " All photons scE/Etrue vs R9: all Ecal ",
1883  r9Bin * 2,
1884  r9Min,
1885  r9Max,
1886  resBin,
1887  resMin,
1888  resMax,
1889  "");
1890  p_sceResVsR9_[1] = iBooker.bookProfile(histname + "Barrel",
1891  " All photons scE/Etrue vs R9: Barrel ",
1892  r9Bin * 2,
1893  r9Min,
1894  r9Max,
1895  resBin,
1896  resMin,
1897  resMax,
1898  "");
1899  p_sceResVsR9_[2] = iBooker.bookProfile(histname + "Endcap",
1900  " All photons scE/Etrue vs R9: Endcap ",
1901  r9Bin * 2,
1902  r9Min,
1903  r9Max,
1904  resBin,
1905  resMin,
1906  resMax,
1907  "");
1908 
1909  // Photon E resolution when using energy values from regressions
1910  histname = "eResRegr1";
1911  h_phoEResRegr1_[0][0] =
1912  iBooker.book1D(histname + "All", " Photon rec/true Energy from Regression1 : All ecal ", resBin, resMin, resMax);
1913  h_phoEResRegr1_[0][1] =
1914  iBooker.book1D(histname + "Barrel", " Photon rec/true Energy from Regression1: Barrel ", resBin, resMin, resMax);
1915  h_phoEResRegr1_[0][2] =
1916  iBooker.book1D(histname + "Endcap", " Photon rec/true Energy from Regression1: Endcap ", resBin, resMin, resMax);
1917 
1918  h_phoEResRegr1_[1][0] = iBooker.book1D(histname + "unconvAll",
1919  " Photon rec/true Energy from Regression1 if r9>0.94, 0.95: All ecal ",
1920  resBin,
1921  resMin,
1922  resMax);
1923  h_phoEResRegr1_[1][1] = iBooker.book1D(
1924  histname + "unconvBarrel", " Photon rec/true Energy from Regression1 if r9>0.94: Barrel ", resBin, resMin, resMax);
1925  h_phoEResRegr1_[1][2] = iBooker.book1D(
1926  histname + "unconvEndcap", " Photon rec/true Energy from Regression1 if r9>0.95: Endcap ", resBin, resMin, resMax);
1927 
1928  h_phoEResRegr1_[2][0] = iBooker.book1D(histname + "convAll",
1929  " Photon rec/true Energy from Regression1if r9<0.0.94, 0.95: All ecal ",
1930  resBin,
1931  resMin,
1932  resMax);
1933  h_phoEResRegr1_[2][1] = iBooker.book1D(
1934  histname + "convBarrel", " Photon rec/true Energy from Regression1 if r9<0.94: Barrel ", resBin, resMin, resMax);
1935  h_phoEResRegr1_[2][2] = iBooker.book1D(
1936  histname + "convEndcap", " Photon rec/true Energy from Regression1 if r9<0.95: Endcap ", resBin, resMin, resMax);
1937 
1938  histname = "eResRegr2";
1939  h_phoEResRegr2_[0][0] =
1940  iBooker.book1D(histname + "All", " Photon rec/true Energy from Regression2 : All ecal ", resBin, resMin, resMax);
1941  h_phoEResRegr2_[0][1] =
1942  iBooker.book1D(histname + "Barrel", " Photon rec/true Energy from Regression2: Barrel ", resBin, resMin, resMax);
1943  h_phoEResRegr2_[0][2] =
1944  iBooker.book1D(histname + "Endcap", " Photon rec/true Energy from Regression2: Endcap ", resBin, resMin, resMax);
1945 
1946  h_phoEResRegr2_[1][0] = iBooker.book1D(histname + "unconvAll",
1947  " Photon rec/true Energy from Regression2 if r9>0.94, 0.95: All ecal ",
1948  resBin,
1949  resMin,
1950  resMax);
1951  h_phoEResRegr2_[1][1] = iBooker.book1D(
1952  histname + "unconvBarrel", " Photon rec/true Energy from Regression2 if r9>0.94: Barrel ", resBin, resMin, resMax);
1953  h_phoEResRegr2_[1][2] = iBooker.book1D(
1954  histname + "unconvEndcap", " Photon rec/true Energy from Regression2 if r9>0.95: Endcap ", resBin, resMin, resMax);
1955 
1956  h_phoEResRegr2_[2][0] = iBooker.book1D(histname + "convAll",
1957  " Photon rec/true Energy from Regression2 if r9<0.0.94, 0.95: All ecal ",
1958  resBin,
1959  resMin,
1960  resMax);
1961  h_phoEResRegr2_[2][1] = iBooker.book1D(
1962  histname + "convBarrel", " Photon rec/true Energy from Regression2 if r9<0.94: Barrel ", resBin, resMin, resMax);
1963  h_phoEResRegr2_[2][2] = iBooker.book1D(
1964  histname + "convEndcap", " Photon rec/true Energy from Regression2 if r9<0.95: Endcap ", resBin, resMin, resMax);
1965  //
1966  histname = "phoPixSeedSize";
1967  h_phoPixSeedSize_[0] = iBooker.book1D(histname + "Barrel", "Pixel seeds size ", 100, 0., 100.);
1968  h_phoPixSeedSize_[1] = iBooker.book1D(histname + "Endcap", "Pixel seeds size ", 100, 0., 100.);
1969 
1970  // Infos from Particle Flow - isolation and ID
1971  histname = "chargedHadIso";
1972  h_chHadIso_[0] = iBooker.book1D(histname + "All", "PF chargedHadIso: All Ecal", etBin, etMin, 20.);
1973  h_chHadIso_[1] = iBooker.book1D(histname + "Barrel", "PF chargedHadIso: Barrel", etBin, etMin, 20.);
1974  h_chHadIso_[2] = iBooker.book1D(histname + "Endcap", "PF chargedHadIso: Endcap", etBin, etMin, 20.);
1975  histname = "neutralHadIso";
1976  h_nHadIso_[0] = iBooker.book1D(histname + "All", "PF neutralHadIso: All Ecal", etBin, etMin, 20.);
1977  h_nHadIso_[1] = iBooker.book1D(histname + "Barrel", "PF neutralHadIso: Barrel", etBin, etMin, 20.);
1978  h_nHadIso_[2] = iBooker.book1D(histname + "Endcap", "PF neutralHadIso: Endcap", etBin, etMin, 20.);
1979  histname = "photonIso";
1980  h_phoIso_[0] = iBooker.book1D(histname + "All", "PF photonIso: All Ecal", etBin, etMin, 20.);
1981  h_phoIso_[1] = iBooker.book1D(histname + "Barrel", "PF photonIso: Barrel", etBin, etMin, 20.);
1982  h_phoIso_[2] = iBooker.book1D(histname + "Endcap", "PF photonIso: Endcap", etBin, etMin, 20.);
1983  histname = "nCluOutMustache";
1985  iBooker.book1D(histname + "All", "PF number of clusters outside Mustache: All Ecal", 50, 0., 50.);
1987  iBooker.book1D(histname + "Barrel", "PF number of clusters outside Mustache: Barrel", 50, 0., 50.);
1989  iBooker.book1D(histname + "Endcap", "PF number of clusters outside Mustache: Endcap", 50, 0., 50.);
1990  histname = "etOutMustache";
1991  h_etOutsideMustache_[0] = iBooker.book1D(histname + "All", "PF et outside Mustache: All Ecal", etBin, etMin, 20.);
1992  h_etOutsideMustache_[1] = iBooker.book1D(histname + "Barrel", "PF et outside Mustache: Barrel", etBin, etMin, 20.);
1993  h_etOutsideMustache_[2] = iBooker.book1D(histname + "Endcap", "PF et outside Mustache: Endcap", etBin, etMin, 20.);
1994  histname = "pfMVA";
1995  h_pfMva_[0] = iBooker.book1D(histname + "All", "PF MVA output: All Ecal", 50, -1., 2.);
1996  h_pfMva_[1] = iBooker.book1D(histname + "Barrel", "PF MVA output: Barrel", 50, -1., 2.);
1997  h_pfMva_[2] = iBooker.book1D(histname + "Endcap", "PF MVA output: Endcap", 50, -1, 2.);
1999  histname = "SumPtOverPhoPt_ChHad_Cleaned";
2001  iBooker.book1D(histname + "All", "Pf Cand SumPt/P_{T}_{#gamma}: Charged Hadrons: All Ecal", etBin, etMin, 2.);
2003  iBooker.book1D(histname + "Barrel", "PF Cand SumPt/P_{T}_{#gamma}: Charged Hadrons: Barrel", etBin, etMin, 2.);
2005  iBooker.book1D(histname + "Endcap", "PF Cand SumPt/P_{T}_{#gamma}: Charged Hadrons: Endcap", etBin, etMin, 2.);
2006  histname = "SumPtOverPhoPt_NeuHad_Cleaned";
2008  iBooker.book1D(histname + "All", "Pf Cand SumPt/P_{T}_{#gamma}: Neutral Hadrons: All Ecal", etBin, etMin, 2.);
2010  iBooker.book1D(histname + "Barrel", "PF Cand SumPt/P_{T}_{#gamma}: Neutral Hadrons: Barrel", etBin, etMin, 2.);
2012  iBooker.book1D(histname + "Endcap", "PF Cand SumPt/P_{T}_{#gamma}: Neutral Hadrons: Endcap", etBin, etMin, 2.);
2013  histname = "SumPtOverPhoPt_Pho_Cleaned";
2015  iBooker.book1D(histname + "All", "Pf Cand SumPt/P_{T}_{#gamma}: Photons: All Ecal", etBin, etMin, 2.);
2017  iBooker.book1D(histname + "Barrel", "PF Cand SumPt/P_{T}_{#gamma}: Photons: Barrel", etBin, etMin, 2.);
2019  iBooker.book1D(histname + "Endcap", "PF Cand SumPt/P_{T}_{#gamma}: Photons: Endcap", etBin, etMin, 2.);
2020 
2021  histname = "dRPhoPFcand_ChHad_Cleaned";
2023  iBooker.book1D(histname + "All", "dR(pho,cand) Charged Hadrons : All Ecal", etBin, etMin, 0.7);
2025  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Charged Hadrons : Barrel", etBin, etMin, 0.7);
2027  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Charged Hadrons : Endcap", etBin, etMin, 0.7);
2028  histname = "dRPhoPFcand_NeuHad_Cleaned";
2030  iBooker.book1D(histname + "All", "dR(pho,cand) Neutral Hadrons : All Ecal", etBin, etMin, 0.7);
2032  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Neutral Hadrons : Barrel", etBin, etMin, 0.7);
2034  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Neutral Hadrons : Endcap", etBin, etMin, 0.7);
2035  histname = "dRPhoPFcand_Pho_Cleaned";
2037  iBooker.book1D(histname + "All", "dR(pho,cand) Photons : All Ecal", etBin, etMin, 0.7);
2039  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons : Barrel", etBin, etMin, 0.7);
2041  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons : Endcap", etBin, etMin, 0.7);
2042 
2043  //
2044  histname = "SumPtOverPhoPt_ChHad_unCleaned";
2046  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Charged Hadrons : All Ecal", etBin, etMin, 2.);
2048  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Charged Hadrons: Barrel", etBin, etMin, 2.);
2050  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Charged Hadrons: Endcap", etBin, etMin, 2.);
2051  histname = "SumPtOverPhoPt_NeuHad_unCleaned";
2053  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Neutral Hadrons : All Ecal", etBin, etMin, 2.);
2055  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Barrel", etBin, etMin, 2.);
2057  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Endcap", etBin, etMin, 2.);
2058  histname = "SumPtOverPhoPt_Pho_unCleaned";
2060  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Photons: All Ecal", etBin, etMin, 2.);
2062  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Photons: Barrel", etBin, etMin, 2.);
2064  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Photons: Endcap", etBin, etMin, 2.);
2065  histname = "dRPhoPFcand_ChHad_unCleaned";
2067  iBooker.book1D(histname + "All", "dR(pho,cand) Charged Hadrons : All Ecal", etBin, etMin, 0.7);
2069  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Charged Hadrons : Barrel", etBin, etMin, 0.7);
2071  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Charged Hadrons : Endcap", etBin, etMin, 0.7);
2072  histname = "dRPhoPFcand_NeuHad_unCleaned";
2074  iBooker.book1D(histname + "All", "dR(pho,cand) Neutral Hadrons : All Ecal", etBin, etMin, 0.7);
2076  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Neutral Hadrons : Barrel", etBin, etMin, 0.7);
2078  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Neutral Hadrons : Endcap", etBin, etMin, 0.7);
2079  histname = "dRPhoPFcand_Pho_unCleaned";
2081  iBooker.book1D(histname + "All", "dR(pho,cand) Photons: All Ecal", etBin, etMin, 0.7);
2083  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons: Barrel", etBin, etMin, 0.7);
2085  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons: Endcap", etBin, etMin, 0.7);
2086 
2087  // if ( ! isRunCentrally_ ) {
2088  // Photon pair invariant mass
2089  histname = "gamgamMass";
2090  h_gamgamMass_[0][0] =
2091  iBooker.book1D(histname + "All", "2 photons invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2092  h_gamgamMass_[0][1] =
2093  iBooker.book1D(histname + "Barrel", "2 photons invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2094  h_gamgamMass_[0][2] =
2095  iBooker.book1D(histname + "Endcap", "2 photons invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2096  //
2097  histname = "gamgamMassNoConv";
2098  h_gamgamMass_[1][0] = iBooker.book1D(
2099  histname + "All", "2 photons with no conversion invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2100  h_gamgamMass_[1][1] = iBooker.book1D(
2101  histname + "Barrel", "2 photons with no conversion invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2102  h_gamgamMass_[1][2] = iBooker.book1D(
2103  histname + "Endcap", "2 photons with no conversion invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2104  //
2105  histname = "gamgamMassConv";
2106  h_gamgamMass_[2][0] = iBooker.book1D(
2107  histname + "All", "2 photons with conversion invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2108  h_gamgamMass_[2][1] = iBooker.book1D(
2109  histname + "Barrel", "2 photons with conversion invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2110  h_gamgamMass_[2][2] = iBooker.book1D(
2111  histname + "Endcap", "2 photons with conversion invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2112  // with energy regression1
2113  histname = "gamgamMassRegr1";
2114  h_gamgamMassRegr1_[0][0] =
2115  iBooker.book1D(histname + "All", "2 photons invariant mass Regr1 : All ecal ", ggMassBin, ggMassMin, ggMassMax);
2116  h_gamgamMassRegr1_[0][1] =
2117  iBooker.book1D(histname + "Barrel", "2 photons invariant mass Regr1 : Barrel ", ggMassBin, ggMassMin, ggMassMax);
2118  h_gamgamMassRegr1_[0][2] =
2119  iBooker.book1D(histname + "Endcap", "2 photons invariant mass Regr1 : Endcap ", ggMassBin, ggMassMin, ggMassMax);
2120  //
2121  histname = "gamgamMassRegr1NoConv";
2122  h_gamgamMassRegr1_[1][0] = iBooker.book1D(
2123  histname + "All", "2 photons with no conversion invariant mass Regr1: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2124  h_gamgamMassRegr1_[1][1] = iBooker.book1D(histname + "Barrel",
2125  "2 photons with no conversion invariant mass Regr1: Barrel ",
2126  ggMassBin,
2127  ggMassMin,
2128  ggMassMax);
2129  h_gamgamMassRegr1_[1][2] = iBooker.book1D(histname + "Endcap",
2130  "2 photons with no conversion invariant mass Regr1: Endcap ",
2131  ggMassBin,
2132  ggMassMin,
2133  ggMassMax);
2134  //
2135  histname = "gamgamMassRegr1Conv";
2136  h_gamgamMassRegr1_[2][0] = iBooker.book1D(
2137  histname + "All", "2 photons with conversion invariant mass Regr1: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2138  h_gamgamMassRegr1_[2][1] = iBooker.book1D(histname + "Barrel",
2139  "2 photons with conversion invariant mass Regr1: Barrel ",
2140  ggMassBin,
2141  ggMassMin,
2142  ggMassMax);
2143  h_gamgamMassRegr1_[2][2] = iBooker.book1D(histname + "Endcap",
2144  "2 photons with conversion invariant mass Regr1: Endcap ",
2145  ggMassBin,
2146  ggMassMin,
2147  ggMassMax);
2148  // with energy regression2
2149  histname = "gamgamMassRegr2";
2150  h_gamgamMassRegr2_[0][0] =
2151  iBooker.book1D(histname + "All", "2 photons invariant mass Regr2 : All ecal ", ggMassBin, ggMassMin, ggMassMax);
2152  h_gamgamMassRegr2_[0][1] =
2153  iBooker.book1D(histname + "Barrel", "2 photons invariant mass Regr2 : Barrel ", ggMassBin, ggMassMin, ggMassMax);
2154  h_gamgamMassRegr2_[0][2] =
2155  iBooker.book1D(histname + "Endcap", "2 photons invariant mass Regr2 : Endcap ", ggMassBin, ggMassMin, ggMassMax);
2156  //
2157  histname = "gamgamMassRegr2NoConv";
2158  h_gamgamMassRegr2_[1][0] = iBooker.book1D(
2159  histname + "All", "2 photons with no conversion invariant mass Regr2: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2160  h_gamgamMassRegr2_[1][1] = iBooker.book1D(histname + "Barrel",
2161  "2 photons with no conversion invariant mass Regr2: Barrel ",
2162  ggMassBin,
2163  ggMassMin,
2164  ggMassMax);
2165  h_gamgamMassRegr2_[1][2] = iBooker.book1D(histname + "Endcap",
2166  "2 photons with no conversion invariant mass Regr2: Endcap ",
2167  ggMassBin,
2168  ggMassMin,
2169  ggMassMax);
2170  //
2171  histname = "gamgamMassRegr2Conv";
2172  h_gamgamMassRegr2_[2][0] = iBooker.book1D(
2173  histname + "All", "2 photons with conversion invariant mass Regr2: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2174  h_gamgamMassRegr2_[2][1] = iBooker.book1D(histname + "Barrel",
2175  "2 photons with conversion invariant mass Regr2: Barrel ",
2176  ggMassBin,
2177  ggMassMin,
2178  ggMassMax);
2179  h_gamgamMassRegr2_[2][2] = iBooker.book1D(histname + "Endcap",
2180  "2 photons with conversion invariant mass Regr2: Endcap ",
2181  ggMassBin,
2182  ggMassMin,
2183  ggMassMax);
2184 
2185  //}
2186 
2188 
2189  h_scEta_miniAOD_[0] = iBooker.book1D("scEta_miniAOD", " SC Eta ", etaBin, etaMin, etaMax);
2190  h_scPhi_miniAOD_[0] = iBooker.book1D("scPhi_miniAOD", " SC Phi ", phiBin, phiMin, phiMax);
2191  histname = "phoE";
2192  h_phoE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " Photon Energy: All ecal ", eBin, eMin, eMax);
2193  h_phoE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " Photon Energy: barrel ", eBin, eMin, eMax);
2194  h_phoE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " Photon Energy: Endcap ", eBin, eMin, eMax);
2195 
2196  histname = "phoEt";
2197  h_phoEt_miniAOD_[0][0] =
2198  iBooker.book1D(histname + "All_miniAOD", " Photon Transverse Energy: All ecal ", etBin, etMin, etMax);
2199  h_phoEt_miniAOD_[0][1] =
2200  iBooker.book1D(histname + "Barrel_miniAOD", " Photon Transverse Energy: Barrel ", etBin, etMin, etMax);
2201  h_phoEt_miniAOD_[0][2] =
2202  iBooker.book1D(histname + "Endcap_miniAOD", " Photon Transverse Energy: Endcap ", etBin, etMin, etMax);
2203 
2204  histname = "eRes";
2205  h_phoERes_miniAOD_[0][0] = iBooker.book1D(
2206  histname + "All_miniAOD", " Photon E/E_{true}: All ecal; E/E_{true} (GeV)", resBin, resMin, resMax);
2207  h_phoERes_miniAOD_[0][1] = iBooker.book1D(
2208  histname + "Barrel_miniAOD", "Photon E/E_{true}: Barrel; E/E_{true} (GeV)", resBin, resMin, resMax);
2209  h_phoERes_miniAOD_[0][2] = iBooker.book1D(
2210  histname + "Endcap_miniAOD", " Photon E/E_{true}: Endcap; E/E_{true} (GeV)", resBin, resMin, resMax);
2211 
2212  histname = "sigmaEoE";
2213  h_phoSigmaEoE_miniAOD_[0][0] =
2214  iBooker.book1D(histname + "All_miniAOD", "#sigma_{E}/E: All ecal; #sigma_{E}/E", 100, 0., 0.08);
2215  h_phoSigmaEoE_miniAOD_[0][1] =
2216  iBooker.book1D(histname + "Barrel_miniAOD", "#sigma_{E}/E: Barrel; #sigma_{E}/E", 100, 0., 0.08);
2217  h_phoSigmaEoE_miniAOD_[0][2] =
2218  iBooker.book1D(histname + "Endcap_miniAOD", "#sigma_{E}/E: Endcap, #sigma_{E}/E", 100, 0., 0.08);
2219 
2220  histname = "r9";
2221  h_r9_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " r9: All Ecal", r9Bin, r9Min, r9Max);
2222  h_r9_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " r9: Barrel ", r9Bin, r9Min, r9Max);
2223  h_r9_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " r9: Endcap ", r9Bin, r9Min, r9Max);
2224  histname = "full5x5_r9";
2225  h_full5x5_r9_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " r9: All Ecal", r9Bin, r9Min, r9Max);
2226  h_full5x5_r9_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " r9: Barrel ", r9Bin, r9Min, r9Max);
2227  h_full5x5_r9_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " r9: Endcap ", r9Bin, r9Min, r9Max);
2228  histname = "r1";
2229  h_r1_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " e1x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
2230  h_r1_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " e1x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
2231  h_r1_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " e1x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
2232  histname = "r2";
2233  h_r2_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " e2x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
2234  h_r2_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " e2x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
2235  h_r2_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " e2x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
2236  histname = "hOverE";
2237  h_hOverE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "H/E: All Ecal", 100, 0., 0.2);
2238  h_hOverE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "H/E: Barrel ", 100, 0., 0.2);
2239  h_hOverE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "H/E: Endcap ", 100, 0., 0.2);
2240  //
2241  histname = "newhOverE";
2242  h_newhOverE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "new H/E: All Ecal", 100, 0., 0.2);
2243  h_newhOverE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "new H/E: Barrel ", 100, 0., 0.2);
2244  h_newhOverE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "new H/E: Endcap ", 100, 0., 0.2);
2245  //
2246  histname = "sigmaIetaIeta";
2247  h_sigmaIetaIeta_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "sigmaIetaIeta: All Ecal", 100, 0., 0.1);
2248  h_sigmaIetaIeta_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "sigmaIetaIeta: Barrel ", 100, 0., 0.05);
2249  h_sigmaIetaIeta_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "sigmaIetaIeta: Endcap ", 100, 0., 0.1);
2250  histname = "full5x5_sigmaIetaIeta";
2252  iBooker.book1D(histname + "All_miniAOD", "Full5x5 sigmaIetaIeta: All Ecal", 100, 0., 0.1);
2254  iBooker.book1D(histname + "Barrel_miniAOD", "Full5x5 sigmaIetaIeta: Barrel ", 100, 0., 0.05);
2256  iBooker.book1D(histname + "Endcap_miniAOD", "Full5x5 sigmaIetaIeta: Endcap ", 100, 0., 0.1);
2257  //
2258  histname = "ecalRecHitSumEtConeDR04";
2260  iBooker.book1D(histname + "All_miniAOD", "ecalRecHitSumEtDR04: All Ecal", etBin, etMin, 20.);
2262  iBooker.book1D(histname + "Barrel_miniAOD", "ecalRecHitSumEtDR04: Barrel ", etBin, etMin, 20.);
2264  iBooker.book1D(histname + "Endcap_miniAOD", "ecalRecHitSumEtDR04: Endcap ", etBin, etMin, 20.);
2265  histname = "hcalTowerSumEtConeDR04";
2267  iBooker.book1D(histname + "All_miniAOD", "hcalTowerSumEtConeDR04: All Ecal", etBin, etMin, 20.);
2269  iBooker.book1D(histname + "Barrel_miniAOD", "hcalTowerSumEtConeDR04: Barrel ", etBin, etMin, 20.);
2271  iBooker.book1D(histname + "Endcap_miniAOD", "hcalTowerSumEtConeDR04: Endcap ", etBin, etMin, 20.);
2272  //
2273  histname = "hcalTowerBcSumEtConeDR04";
2275  iBooker.book1D(histname + "All_miniAOD", "hcalTowerBcSumEtConeDR04: All Ecal", etBin, etMin, 20.);
2277  iBooker.book1D(histname + "Barrel_miniAOD", "hcalTowerBcSumEtConeDR04: Barrel ", etBin, etMin, 20.);
2279  iBooker.book1D(histname + "Endcap_miniAOD", "hcalTowerBcSumEtConeDR04: Endcap ", etBin, etMin, 20.);
2280  histname = "isoTrkSolidConeDR04";
2282  iBooker.book1D(histname + "All_miniAOD", "isoTrkSolidConeDR04: All Ecal", etBin, etMin, etMax * 0.1);
2284  iBooker.book1D(histname + "Barrel_miniAOD", "isoTrkSolidConeDR04: Barrel ", etBin, etMin, etMax * 0.1);
2286  iBooker.book1D(histname + "Endcap_miniAOD", "isoTrkSolidConeDR04: Endcap ", etBin, etMin, etMax * 0.1);
2287  histname = "nTrkSolidConeDR04";
2289  iBooker.book1D(histname + "All_miniAOD", "nTrkSolidConeDR04: All Ecal", 20, 0., 20);
2291  iBooker.book1D(histname + "Barrel_miniAOD", "nTrkSolidConeDR04: Barrel ", 20, 0., 20);
2293  iBooker.book1D(histname + "Endcap_miniAOD", "nTrkSolidConeDR04: Endcap ", 20, 0., 20);
2294 
2295  // Infos from Particle Flow - isolation and ID
2296  histname = "chargedHadIso";
2297  h_chHadIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF chargedHadIso: All Ecal", etBin, etMin, 20.);
2298  h_chHadIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF chargedHadIso: Barrel", etBin, etMin, 20.);
2299  h_chHadIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF chargedHadIso: Endcap", etBin, etMin, 20.);
2300  histname = "neutralHadIso";
2301  h_nHadIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF neutralHadIso: All Ecal", etBin, etMin, 20.);
2302  h_nHadIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF neutralHadIso: Barrel", etBin, etMin, 20.);
2303  h_nHadIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF neutralHadIso: Endcap", etBin, etMin, 20.);
2304  histname = "photonIso";
2305  h_phoIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF photonIso: All Ecal", etBin, etMin, 20.);
2306  h_phoIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF photonIso: Barrel", etBin, etMin, 20.);
2307  h_phoIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF photonIso: Endcap", etBin, etMin, 20.);
2308 
2309  iBooker.setCurrentFolder("EgammaV/" + fName_ + "/ConversionInfo");
2310 
2311  histname = "nConv";
2312  h_nConv_[0][0] = iBooker.book1D(histname + "All",
2313  "Number Of two-tracks Conversions per isolated candidates per events: All Ecal ",
2314  10,
2315  -0.5,
2316  9.5);
2317  h_nConv_[0][1] = iBooker.book1D(histname + "Barrel",
2318  "Number Of two-tracks Conversions per isolated candidates per events: Ecal Barrel ",
2319  10,
2320  -0.5,
2321  9.5);
2322  h_nConv_[0][2] = iBooker.book1D(histname + "Endcap",
2323  "Number Of two-tracks Conversions per isolated candidates per events: Ecal Endcap ",
2324  10,
2325  -0.5,
2326  9.5);
2327  h_nConv_[1][0] = iBooker.book1D(histname + "OneLegAll",
2328  "Number Of single leg Conversions per isolated candidates per events: All Ecal ",
2329  10,
2330  -0.5,
2331  9.5);
2332  h_nConv_[1][1] = iBooker.book1D(histname + "OneLegBarrel",
2333  "Number Of single leg Conversions per isolated candidates per events: Ecal Barrel ",
2334  10,
2335  -0.5,
2336  9.5);
2337  h_nConv_[1][2] = iBooker.book1D(histname + "OneLegEndcap",
2338  "Number Of single leg Conversions per isolated candidates per events: Ecal Endcap ",
2339  10,
2340  -0.5,
2341  9.5);
2342 
2343  h_convEta_[0] = iBooker.book1D("convEta1", " converted Photon Eta >1 track", etaBin, etaMin, etaMax);
2344  h_convEta_[1] = iBooker.book1D("convEta2", " converted Photon Eta =2 tracks ", etaBin, etaMin, etaMax);
2345  h_convEta_[2] = iBooker.book1D("convEta2ass", " converted Photon Eta =2 tracks, both ass ", etaBin, etaMin, etaMax);
2346  h_convPhi_[0] = iBooker.book1D("convPhi", " converted Photon Phi ", phiBin, phiMin, phiMax);
2347 
2348  histname = "convERes";
2349  h_convERes_[0][0] =
2350  iBooker.book1D(histname + "All", " Conversion rec/true Energy: All ecal ", resBin, resMin, resMax);
2351  h_convERes_[0][1] =
2352  iBooker.book1D(histname + "Barrel", " Conversion rec/true Energy: Barrel ", resBin, resMin, resMax);
2353  h_convERes_[0][2] =
2354  iBooker.book1D(histname + "Endcap", " Conversion rec/true Energy: Endcap ", resBin, resMin, resMax);
2355 
2356  histname = "p_EResVsR";
2357  p_eResVsR_ = iBooker.bookProfile(
2358  histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 1.5, "");
2359 
2360  histname = "convPtRes";
2361  h_convPtRes_[1][0] =
2362  iBooker.book1D(histname + "All", " Conversion Pt rec/true from tracks : All ecal ", resBin, 0., 1.5);
2363  h_convPtRes_[1][1] =
2364  iBooker.book1D(histname + "Barrel", " Conversion Pt rec/true from tracks: Barrel ", resBin, 0., 1.5);
2365  h_convPtRes_[1][2] =
2366  iBooker.book1D(histname + "Endcap", " Conversion Pt rec/true from tracks: Endcap ", resBin, 0., 1.5);
2367 
2368  if (!isRunCentrally_) {
2369  histname = "r9VsTracks";
2370  h_r9VsNofTracks_[0][0] = iBooker.book2D(
2371  histname + "All", " photons r9 vs nTracks from conversions: All Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2372  h_r9VsNofTracks_[0][1] = iBooker.book2D(
2373  histname + "Barrel", " photons r9 vs nTracks from conversions: Barrel Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2374  h_r9VsNofTracks_[0][2] = iBooker.book2D(
2375  histname + "Endcap", " photons r9 vs nTracks from conversions: Endcap Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2376  }
2377 
2378  histname = "mvaOut";
2379  h_mvaOut_[0] = iBooker.book1D(histname + "All", " mvaOut for all conversions : All Ecal", 100, 0., 1.);
2380  h_mvaOut_[1] = iBooker.book1D(histname + "Barrel", " mvaOut for all conversions : Barrel Ecal", 100, 0., 1.);
2381  h_mvaOut_[2] = iBooker.book1D(histname + "Endcap", " mvaOut for all conversions : Endcap Ecal", 100, 0., 1.);
2382 
2383  histname = "EoverPtracks";
2384  h_EoverPTracks_[0][0] =
2385  iBooker.book1D(histname + "BarrelPix", " photons conversion E/p: barrel pix", eoverpBin, eoverpMin, eoverpMax);
2386  h_EoverPTracks_[0][1] =
2387  iBooker.book1D(histname + "BarrelTib", " photons conversion E/p: barrel tib", eoverpBin, eoverpMin, eoverpMax);
2388  h_EoverPTracks_[0][2] =
2389  iBooker.book1D(histname + "BarrelTob", " photons conversion E/p: barrel tob ", eoverpBin, eoverpMin, eoverpMax);
2390 
2391  h_EoverPTracks_[1][0] = iBooker.book1D(histname + "All", " photons conversion E/p: all Ecal ", 100, 0., 5.);
2392  h_EoverPTracks_[1][1] = iBooker.book1D(histname + "Barrel", " photons conversion E/p: Barrel Ecal", 100, 0., 5.);
2393  h_EoverPTracks_[1][2] = iBooker.book1D(histname + "Endcap", " photons conversion E/p: Endcap Ecal ", 100, 0., 5.);
2394  histname = "EoverP_SL";
2395  h_EoverP_SL_[0] = iBooker.book1D(histname + "All", " photons single leg conversion E/p: all Ecal ", 100, 0., 5.);
2396  h_EoverP_SL_[1] = iBooker.book1D(histname + "Barrel", " photons single leg conversion E/p: Barrel Ecal", 100, 0., 5.);
2397  h_EoverP_SL_[2] =
2398  iBooker.book1D(histname + "Endcap", " photons single leg conversion E/p: Endcap Ecal ", 100, 0., 5.);
2399 
2400  histname = "PoverEtracks";
2401  h_PoverETracks_[1][0] =
2402  iBooker.book1D(histname + "All", " photons conversion p/E: all Ecal ", povereBin, povereMin, povereMax);
2403  h_PoverETracks_[1][1] =
2404  iBooker.book1D(histname + "Barrel", " photons conversion p/E: Barrel Ecal", povereBin, povereMin, povereMax);
2405  h_PoverETracks_[1][2] =
2406  iBooker.book1D(histname + "Endcap", " photons conversion p/E: Endcap Ecal ", povereBin, povereMin, povereMax);
2407 
2408  histname = "pEoverEtrueVsEta";
2409  p_EoverEtrueVsEta_[0] =
2410  iBooker.bookProfile(histname + "All",
2411  " photons conversion with 2 (associated) reco tracks E/Etrue vs #eta: all Ecal ",
2412  etaBin2,
2413  etaMin,
2414  etaMax,
2415  100,
2416  0.,
2417  2.5,
2418  "");
2419 
2420  histname = "pEoverEtrueVsR";
2421  p_EoverEtrueVsR_[0] = iBooker.bookProfile(
2422  histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 2.5, "");
2423 
2424  histname = "pEoverEtrueVsEta";
2425  p_EoverEtrueVsEta_[1] = iBooker.bookProfile(histname + "All2",
2426  " photons conversion 2 reco tracks E/Etrue vs #eta: all Ecal ",
2427  etaBin2,
2428  etaMin,
2429  etaMax,
2430  100,
2431  0.,
2432  2.5,
2433  "");
2434 
2435  histname = "pPoverPtrueVsEta";
2436  p_PoverPtrueVsEta_[0] = iBooker.bookProfile(
2437  histname + "All", " photons conversion P/Ptrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5., "");
2438 
2439  histname = "pEoverPVsEta";
2440  p_EoverPVsEta_[0] = iBooker.bookProfile(
2441  histname + "All", " photons conversion E/P vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5., "");
2442 
2443  if (!isRunCentrally_) {
2444  histname = "EoverEtrueVsEoverP";
2446  iBooker.book2D(histname + "All", " photons conversion E/Etrue vs E/P: all Ecal ", 100, 0., 5., 100, 0.5, 1.5);
2447  h2_EoverEtrueVsEoverP_[1] = iBooker.book2D(
2448  histname + "Barrel", " photons conversion E/Etrue vs E/: Barrel Ecal", 100, 0., 5., 100, 0.5, 1.5);
2449  h2_EoverEtrueVsEoverP_[2] = iBooker.book2D(
2450  histname + "Endcap", " photons conversion E/Etrue vs E/: Endcap Ecal ", 100, 0., 5., 100, 0.5, 1.5);
2451  histname = "PoverPtrueVsEoverP";
2453  iBooker.book2D(histname + "All", " photons conversion P/Ptrue vs E/P: all Ecal ", 100, 0., 5., 100, 0., 2.5);
2454  h2_PoverPtrueVsEoverP_[1] = iBooker.book2D(
2455  histname + "Barrel", " photons conversion P/Ptrue vs E/: Barrel Ecal", 100, 0., 5., 100, 0., 2.5);
2456  h2_PoverPtrueVsEoverP_[2] = iBooker.book2D(
2457  histname + "Endcap", " photons conversion P/Ptrue vs E/: Endcap Ecal ", 100, 0., 5., 100, 0., 2.5);
2458 
2459  histname = "EoverEtrueVsEta";
2460  h2_EoverEtrueVsEta_[0] =
2461  iBooker.book2D(histname + "All",
2462  " photons conversion with 2 (associated) reco tracks E/Etrue vs #eta: all Ecal ",
2463  etaBin2,
2464  etaMin,
2465  etaMax,
2466  100,
2467  0.,
2468  2.5);
2469 
2470  histname = "EoverEtrueVsEta";
2471  h2_EoverEtrueVsEta_[1] = iBooker.book2D(histname + "All2",
2472  " photons conversion 2 reco tracks E/Etrue vs #eta: all Ecal ",
2473  etaBin2,
2474  etaMin,
2475  etaMax,
2476  100,
2477  0.,
2478  2.5);
2479 
2480  histname = "EoverEtrueVsR";
2481  h2_EoverEtrueVsR_[0] =
2482  iBooker.book2D(histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 2.5);
2483 
2484  histname = "PoverPtrueVsEta";
2485  h2_PoverPtrueVsEta_[0] = iBooker.book2D(
2486  histname + "All", " photons conversion P/Ptrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5.);
2487 
2488  histname = "EoverPVsEta";
2489  h2_EoverPVsEta_[0] = iBooker.book2D(
2490  histname + "All", " photons conversion E/P vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5.);
2491 
2492  histname = "EoverPVsR";
2493  h2_EoverPVsR_[0] =
2494  iBooker.book2D(histname + "All", " photons conversion E/P vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 5.);
2495 
2496  histname = "etaVsRsim";
2497  h2_etaVsRsim_[0] = iBooker.book2D(histname + "All",
2498  " eta(sim) vs R (sim) for associated conversions: all Ecal ",
2499  etaBin,
2500  etaMin,
2501  etaMax,
2502  rBin,
2503  rMin,
2504  rMax);
2505  histname = "etaVsRreco";
2506  h2_etaVsRreco_[0] = iBooker.book2D(histname + "All",
2507  " eta(reco) vs R (reco) for associated conversions: all Ecal ",
2508  etaBin,
2509  etaMin,
2510  etaMax,
2511  rBin,
2512  rMin,
2513  rMax);
2514  }
2515 
2516  histname = "pEoverPVsR";
2517  p_EoverPVsR_[0] = iBooker.bookProfile(
2518  histname + "All", " photons conversion E/P vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 5., "");
2519 
2520  histname = "hInvMass";
2521  h_invMass_[0][0] = iBooker.book1D(
2522  histname + "All_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
2523  h_invMass_[0][1] = iBooker.book1D(
2524  histname + "Barrel_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ", 100, 0., 1.5);
2525  h_invMass_[0][2] = iBooker.book1D(
2526  histname + "Endcap_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ", 100, 0., 1.5);
2527  histname = "hInvMass";
2528  h_invMass_[1][0] = iBooker.book1D(
2529  histname + "All_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
2530  h_invMass_[1][1] = iBooker.book1D(
2531  histname + "Barrel_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ", 100, 0., 1.5);
2532  h_invMass_[1][2] = iBooker.book1D(
2533  histname + "Endcap_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ", 100, 0., 1.5);
2534 
2535  histname = "hDPhiTracksAtVtx";
2536  h_DPhiTracksAtVtx_[1][0] = iBooker.book1D(histname + "All",
2537  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
2538  dPhiTracksBin,
2539  dPhiTracksMin,
2540  dPhiTracksMax);
2541  h_DPhiTracksAtVtx_[1][1] =
2542  iBooker.book1D(histname + "Barrel",
2543  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
2544  dPhiTracksBin,
2545  dPhiTracksMin,
2546  dPhiTracksMax);
2547  h_DPhiTracksAtVtx_[1][2] =
2548  iBooker.book1D(histname + "Endcap",
2549  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
2550  dPhiTracksBin,
2551  dPhiTracksMin,
2552  dPhiTracksMax);
2553 
2554  if (!isRunCentrally_) {
2555  histname = "hDPhiTracksAtVtxVsEta";
2556  h2_DPhiTracksAtVtxVsEta_ = iBooker.book2D(histname + "All",
2557  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",
2558  etaBin2,
2559  etaMin,
2560  etaMax,
2561  100,
2562  -0.5,
2563  0.5);
2564 
2565  histname = "hDPhiTracksAtVtxVsR";
2566  h2_DPhiTracksAtVtxVsR_ = iBooker.book2D(histname + "All",
2567  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",
2568  rBin,
2569  rMin,
2570  rMax,
2571  100,
2572  -0.5,
2573  0.5);
2574 
2575  histname = "hDCotTracksVsEta";
2576  h2_DCotTracksVsEta_ = iBooker.book2D(histname + "All",
2577  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",
2578  etaBin2,
2579  etaMin,
2580  etaMax,
2581  100,
2582  -0.2,
2583  0.2);
2584 
2585  histname = "hDCotTracksVsR";
2586  h2_DCotTracksVsR_ = iBooker.book2D(histname + "All",
2587  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",
2588  rBin,
2589  rMin,
2590  rMax,
2591  100,
2592  -0.2,
2593  0.2);
2594 
2595  histname = "h2_DPhiTracksAtEcalVsR";
2596  if (fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
2597  h2_DPhiTracksAtEcalVsR_ = iBooker.book2D(histname + "All",
2598  " Photons:Tracks from conversions: #delta#phi at Ecal vs R : all Ecal ",
2599  rBin,
2600  rMin,
2601  rMax,
2602  dPhiTracksBin,
2603  0.,
2604  dPhiTracksMax);
2605 
2606  histname = "h2_DPhiTracksAtEcalVsEta";
2607  if (fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
2609  iBooker.book2D(histname + "All",
2610  " Photons:Tracks from conversions: #delta#phi at Ecal vs #eta : all Ecal ",
2611  etaBin2,
2612  etaMin,
2613  etaMax,
2614  dPhiTracksBin,
2615  0.,
2616  dPhiTracksMax);
2617  }
2618 
2619  histname = "pDPhiTracksAtVtxVsEta";
2621  iBooker.bookProfile(histname + "All",
2622  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",
2623  etaBin2,
2624  etaMin,
2625  etaMax,
2626  100,
2627  -0.5,
2628  0.5,
2629  "");
2630 
2631  histname = "pDPhiTracksAtVtxVsR";
2632  p_DPhiTracksAtVtxVsR_ = iBooker.bookProfile(histname + "All",
2633  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",
2634  rBin,
2635  rMin,
2636  rMax,
2637  100,
2638  -0.5,
2639  0.5,
2640  "");
2641 
2642  histname = "hDCotTracks";
2643  h_DCotTracks_[1][0] = iBooker.book1D(histname + "All",
2644  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
2645  dCotTracksBin,
2646  dCotTracksMin,
2647  dCotTracksMax);
2648  h_DCotTracks_[1][1] = iBooker.book1D(histname + "Barrel",
2649  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
2650  dCotTracksBin,
2651  dCotTracksMin,
2652  dCotTracksMax);
2653  h_DCotTracks_[1][2] = iBooker.book1D(histname + "Endcap",
2654  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
2655  dCotTracksBin,
2656  dCotTracksMin,
2657  dCotTracksMax);
2658 
2659  histname = "pDCotTracksVsEta";
2660  p_DCotTracksVsEta_ = iBooker.bookProfile(histname + "All",
2661  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",
2662  etaBin2,
2663  etaMin,
2664  etaMax,
2665  100,
2666  -0.2,
2667  0.2,
2668  "");
2669 
2670  histname = "pDCotTracksVsR";
2672  iBooker.bookProfile(histname + "All",
2673  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",
2674  rBin,
2675  rMin,
2676  rMax,
2677  100,
2678  -0.2,
2679  0.2,
2680  "");
2681 
2682  histname = "hDistMinAppTracks";
2683  h_distMinAppTracks_[1][0] = iBooker.book1D(histname + "All",
2684  " Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",
2685  dEtaTracksBin,
2686  -0.1,
2687  0.6);
2688  h_distMinAppTracks_[1][1] = iBooker.book1D(histname + "Barrel",
2689  " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
2690  dEtaTracksBin,
2691  -0.1,
2692  0.6);
2693  h_distMinAppTracks_[1][2] = iBooker.book1D(histname + "Endcap",
2694  " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
2695  dEtaTracksBin,
2696  -0.1,
2697  0.6);
2698 
2699  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" ) {
2700  histname = "hDPhiTracksAtEcal";
2701  h_DPhiTracksAtEcal_[1][0] = iBooker.book1D(histname + "All",
2702  " Photons:Tracks from conversions: #delta#phi at Ecal : all Ecal ",
2703  dPhiTracksBin,
2704  0.,
2705  dPhiTracksMax);
2706  h_DPhiTracksAtEcal_[1][1] = iBooker.book1D(histname + "Barrel",
2707  " Photons:Tracks from conversions: #delta#phi at Ecal : Barrel Ecal ",
2708  dPhiTracksBin,
2709  0.,
2710  dPhiTracksMax);
2711  h_DPhiTracksAtEcal_[1][2] = iBooker.book1D(histname + "Endcap",
2712  " Photons:Tracks from conversions: #delta#phi at Ecal : Endcap Ecal ",
2713  dPhiTracksBin,
2714  0.,
2715  dPhiTracksMax);
2716 
2717  histname = "pDPhiTracksAtEcalVsR";
2718  p_DPhiTracksAtEcalVsR_ = iBooker.bookProfile(histname + "All",
2719  " Photons:Tracks from conversions: #delta#phi at Ecal vs R ",
2720  rBin,
2721  rMin,
2722  rMax,
2723  dPhiTracksBin,
2724  0.,
2725  dPhiTracksMax,
2726  "");
2727 
2728  histname = "pDPhiTracksAtEcalVsEta";
2729  p_DPhiTracksAtEcalVsEta_ = iBooker.bookProfile(histname + "All",
2730  " Photons:Tracks from conversions: #delta#phi at Ecal vs #eta ",
2731  etaBin2,
2732  etaMin,
2733  etaMax,
2734  dPhiTracksBin,
2735  0.,
2736  dPhiTracksMax,
2737  "");
2738 
2739  histname = "hDEtaTracksAtEcal";
2740  h_DEtaTracksAtEcal_[1][0] = iBooker.book1D(histname + "All",
2741  " Photons:Tracks from conversions: #delta#eta at Ecal : all Ecal ",
2742  dEtaTracksBin,
2743  dEtaTracksMin,
2744  dEtaTracksMax);
2745  h_DEtaTracksAtEcal_[1][1] = iBooker.book1D(histname + "Barrel",
2746  " Photons:Tracks from conversions: #delta#eta at Ecal : Barrel Ecal ",
2747  dEtaTracksBin,
2748  dEtaTracksMin,
2749  dEtaTracksMax);
2750  h_DEtaTracksAtEcal_[1][2] = iBooker.book1D(histname + "Endcap",
2751  " Photons:Tracks from conversions: #delta#eta at Ecal : Endcap Ecal ",
2752  dEtaTracksBin,
2753  dEtaTracksMin,
2754  dEtaTracksMax);
2755 
2756  // }
2757 
2758  h_convVtxRvsZ_[0] = iBooker.book2D("convVtxRvsZAll",
2759  " Photon Reco conversion vtx position",
2760  zBinForXray,
2761  zMinForXray,
2762  zMaxForXray,
2763  rBinForXray,
2764  rMinForXray,
2765  rMaxForXray);
2766  h_convVtxRvsZ_[1] = iBooker.book2D("convVtxRvsZBarrel",
2767  " Photon Reco conversion vtx position",
2768  zBinForXray,
2769  zMinForXray,
2770  zMaxForXray,
2771  rBinForXray,
2772  rMinForXray,
2773  rMaxForXray);
2774  h_convVtxRvsZ_[2] = iBooker.book2D("convVtxRvsZEndcap",
2775  " Photon Reco conversion vtx position",
2776  zBin2ForXray,
2777  zMinForXray,
2778  zMaxForXray,
2779  rBinForXray,
2780  rMinForXray,
2781  rMaxForXray);
2782  h_convVtxYvsX_ = iBooker.book2D(
2783  "convVtxYvsXTrkBarrel", " Photon Reco conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
2784  //
2785  h_convSLVtxRvsZ_[0] = iBooker.book2D("convSLVtxRvsZAll",
2786  " Photon Reco single leg conversion innermost hit position",
2787  zBinForXray,
2788  zMinForXray,
2789  zMaxForXray,
2790  rBinForXray,
2791  rMinForXray,
2792  rMaxForXray);
2793  h_convSLVtxRvsZ_[1] = iBooker.book2D("convSLVtxRvsZBarrel",
2794  " Photon Reco single leg conversion innermost hit position",
2795  zBinForXray,
2796  zMinForXray,
2797  zMaxForXray,
2798  rBinForXray,
2799  rMinForXray,
2800  rMaxForXray);
2801  h_convSLVtxRvsZ_[2] = iBooker.book2D("convSLVtxRvsZEndcap",
2802  " Photon Reco single leg conversion innermost hit position",
2803  zBin2ForXray,
2804  zMinForXray,
2805  zMaxForXray,
2806  rBinForXray,
2807  rMinForXray,
2808  rMaxForXray);
2809 
2811  if (!isRunCentrally_) {
2812  h_convVtxRvsZ_zoom_[0] = iBooker.book2D("convVtxRvsZBarrelZoom1",
2813  " Photon Reco conversion vtx position",
2814  zBinForXray,
2815  zMinForXray,
2816  zMaxForXray,
2817  rBinForXray,
2818  -10.,
2819  40.);
2820  h_convVtxRvsZ_zoom_[1] = iBooker.book2D("convVtxRvsZBarrelZoom2",
2821  " Photon Reco conversion vtx position",
2822  zBinForXray,
2823  zMinForXray,
2824  zMaxForXray,
2825  rBinForXray,
2826  -10.,
2827  20.);
2828  h_convVtxYvsX_zoom_[0] = iBooker.book2D("convVtxYvsXTrkBarrelZoom1",
2829  " Photon Reco conversion vtx position, (x,y) eta<1 ",
2830  100,
2831  -40.,
2832  40.,
2833  100,
2834  -40.,
2835  40.);
2836  h_convVtxYvsX_zoom_[1] = iBooker.book2D("convVtxYvsXTrkBarrelZoom2",
2837  " Photon Reco conversion vtx position, (x,y) eta<1 ",
2838  100,
2839  -20.,
2840  20.,
2841  100,
2842  -20.,
2843  20.);
2844  }
2845 
2846  h_convVtxdX_ = iBooker.book1D("convVtxdX", " Photon Reco conversion vtx dX", 100, -20., 20.);
2847  h_convVtxdY_ = iBooker.book1D("convVtxdY", " Photon Reco conversion vtx dY", 100, -20., 20.);
2848  h_convVtxdZ_ = iBooker.book1D("convVtxdZ", " Photon Reco conversion vtx dZ", 100, -20., 20.);
2849  h_convVtxdR_ = iBooker.book1D("convVtxdR", " Photon Reco conversion vtx dR", 100, -20., 20.);
2850 
2852  iBooker.book1D("convVtxdX_barrel", " Photon Reco conversion vtx dX, |eta|<=1.2", 100, -20., 20.);
2854  iBooker.book1D("convVtxdY_barrel", " Photon Reco conversion vtx dY, |eta|<=1.2 ", 100, -20., 20.);
2856  iBooker.book1D("convVtxdZ_barrel", " Photon Reco conversion vtx dZ, |eta|<=1.2,", 100, -20., 20.);
2858  iBooker.book1D("convVtxdR_barrel", " Photon Reco conversion vtx dR, |eta|<=1.2", 100, -20., 20.);
2860  iBooker.book1D("convVtxdX_endcap", " Photon Reco conversion vtx dX, |eta|>1.2", 100, -20., 20.);
2862  iBooker.book1D("convVtxdY_endcap", " Photon Reco conversion vtx dY, |eta|>1.2", 100, -20., 20.);
2864  iBooker.book1D("convVtxdZ_endcap", " Photon Reco conversion vtx dZ, |eta|>1.2", 100, -20., 20.);
2866  iBooker.book1D("convVtxdR_endcap", " Photon Reco conversion vtx dR, |eta|>1.2 ", 100, -20., 20.);
2867 
2868  h_convVtxdPhi_ = iBooker.book1D("convVtxdPhi", " Photon Reco conversion vtx dPhi", 100, -0.005, 0.005);
2869  h_convVtxdEta_ = iBooker.book1D("convVtxdEta", " Photon Reco conversion vtx dEta", 100, -0.5, 0.5);
2870 
2871  if (!isRunCentrally_) {
2873  iBooker.book2D("h2ConvVtxdRVsR", "Photon Reco conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20.);
2874  h2_convVtxdRVsEta_ = iBooker.book2D(
2875  "h2ConvVtxdRVsEta", "Photon Reco conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20.);
2876  }
2877 
2878  p_convVtxdRVsR_ =
2879  iBooker.bookProfile("pConvVtxdRVsR", "Photon Reco conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20., "");
2880  p_convVtxdRVsEta_ = iBooker.bookProfile(
2881  "pConvVtxdRVsEta", "Photon Reco conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20., "");
2882  p_convVtxdXVsX_ = iBooker.bookProfile("pConvVtxdXVsX", "Conversion vtx dX vs X", 120, -60, 60, 100, -20., 20., "");
2883  p_convVtxdYVsY_ = iBooker.bookProfile("pConvVtxdYVsY", "Conversion vtx dY vs Y", 120, -60, 60, 100, -20., 20., "");
2884  p_convVtxdZVsZ_ =
2885  iBooker.bookProfile("pConvVtxdZVsZ", "Conversion vtx dZ vs Z", zBin, zMin, zMax, 100, -20., 20., "");
2886 
2887  if (!isRunCentrally_) {
2888  h2_convVtxRrecVsTrue_ = iBooker.book2D(
2889  "h2ConvVtxRrecVsTrue", "Photon Reco conversion vtx R rec vs true", rBin, rMin, rMax, rBin, rMin, rMax);
2890  }
2891 
2892  histname = "vtxChi2";
2893  h_vtxChi2_[0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, chi2Min, chi2Max);
2894  h_vtxChi2_[1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, chi2Min, chi2Max);
2895  h_vtxChi2_[2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, chi2Min, chi2Max);
2896  histname = "vtxChi2Prob";
2897  h_vtxChi2Prob_[0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, 0., 1.);
2898  h_vtxChi2Prob_[1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, 0., 1.);
2899  h_vtxChi2Prob_[2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, 0., 1.);
2900 
2901  histname = "zPVFromTracks";
2902  h_zPVFromTracks_[0] = iBooker.book1D(histname + "All", " Photons: PV z from conversion tracks", 100, -30., 30.);
2903  h_zPVFromTracks_[1] = iBooker.book1D(histname + "Barrel", " Photons: PV z from conversion tracks", 100, -30., 30.);
2904  h_zPVFromTracks_[2] = iBooker.book1D(histname + "Endcap", " Photons: PV z from conversion tracks", 100, -30., 30.);
2905  h_zPVFromTracks_[3] = iBooker.book1D(histname + "EndcapP", " Photons: PV z from conversion tracks", 100, -30., 30.);
2906  h_zPVFromTracks_[4] = iBooker.book1D(histname + "EndcapM", " Photons: PV z from conversion tracks", 100, -30., 30.);
2907  histname = "dzPVFromTracks";
2908  h_dzPVFromTracks_[0] =
2909  iBooker.book1D(histname + "All", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2910  h_dzPVFromTracks_[1] =
2911  iBooker.book1D(histname + "Barrel", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2912  h_dzPVFromTracks_[2] =
2913  iBooker.book1D(histname + "Endcap", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2914  h_dzPVFromTracks_[3] =
2915  iBooker.book1D(histname + "EndcapP", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2916  h_dzPVFromTracks_[4] =
2917  iBooker.book1D(histname + "EndcapM", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2918  p_dzPVVsR_ =
2919  iBooker.bookProfile("pdzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3., "");
2920  p_dzPVVsEta_ = iBooker.bookProfile(
2921  "pdzPVVsEta", "Photon Reco conversions: dz(PV) vs Eta", etaBin, etaMin, etaMax, 100, -3., 3., "");
2922 
2923  if (!isRunCentrally_) {
2924  h2_dzPVVsR_ = iBooker.book2D("h2dzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3.);
2925  }
2926 
2928  if (!isRunCentrally_) {
2929  histname = "nHitsVsEta";
2930  nHitsVsEta_[0] = iBooker.book2D(histname + "AllTracks",
2931  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
2932  etaBin,
2933  etaMin,
2934  etaMax,
2935  25,
2936  0.,
2937  25.);
2938 
2939  histname = "nHitsVsEta";
2940  nHitsVsEta_[1] = iBooker.book2D(histname + "AssTracks",
2941  "Photons:Tracks from conversions: # of hits vs #eta associated tracks",
2942  etaBin,
2943  etaMin,
2944  etaMax,
2945  25,
2946  0.,
2947  25.);
2948 
2949  histname = "nHitsVsR";
2950  nHitsVsR_[0] = iBooker.book2D(histname + "AllTracks",
2951  "Photons:Tracks from conversions: # of hits vs radius all tracks",
2952  rBin,
2953  rMin,
2954  rMax,
2955  25,
2956  0.,
2957  25);
2958 
2959  histname = "nHitsVsR";
2960  nHitsVsR_[1] = iBooker.book2D(histname + "AssTracks",
2961  "Photons:Tracks from conversions: # of hits vs radius associated tracks",
2962  rBin,
2963  rMin,
2964  rMax,
2965  25,
2966  0.,
2967  25);
2968 
2969  histname = "h2Chi2VsEta";
2970  h2_Chi2VsEta_[0] = iBooker.book2D(
2971  histname + "All", " Reco Track #chi^{2} vs #eta: All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max);
2972 
2973  histname = "h2Chi2VsR";
2974  h2_Chi2VsR_[0] =
2975  iBooker.book2D(histname + "All", " Reco Track #chi^{2} vs R: All ", rBin, rMin, rMax, 100, chi2Min, chi2Max);
2976  }
2977 
2978  histname = "h_nHitsVsEta";
2979  p_nHitsVsEta_[0] = iBooker.bookProfile(histname + "AllTracks",
2980  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
2981  etaBin,
2982  etaMin,
2983  etaMax,
2984  25,
2985  -0.5,
2986  24.5,
2987  "");
2988 
2989  histname = "h_nHitsVsEta";
2990  p_nHitsVsEta_[1] = iBooker.bookProfile(histname + "AssTracks",
2991  "Photons:Tracks from conversions: # of hits vs #eta associated tracks",
2992  etaBin,
2993  etaMin,
2994  etaMax,
2995  25,
2996  -0.5,
2997  24.5,
2998  "");
2999 
3000  histname = "p_nHitsVsEtaSL";
3001  p_nHitsVsEtaSL_[0] = iBooker.bookProfile(histname + "AllTracks",
3002  "Photons:Tracks from single leg conversions: # of hits vs #eta all tracks",
3003  etaBin,
3004  etaMin,
3005  etaMax,
3006  25,
3007  -0.5,
3008  24.5,
3009  "");
3010 
3011  histname = "h_nHitsVsR";
3012  p_nHitsVsR_[0] = iBooker.bookProfile(histname + "AllTracks",
3013  "Photons:Tracks from conversions: # of hits vs radius all tracks",
3014  rBin,
3015  rMin,
3016  rMax,
3017  25,
3018  -0.5,
3019  24.5,
3020  "");
3021  histname = "p_nHitsVsRSL";
3022  p_nHitsVsRSL_[0] = iBooker.bookProfile(histname + "AllTracks",
3023  "Photons:Tracks from single leg conversions: # of hits vs radius all tracks",
3024  rBin,
3025  rMin,
3026  rMax,
3027  25,
3028  -0.5,
3029  24.5,
3030  "");
3031 
3032  histname = "tkChi2";
3033  h_tkChi2_[0] = iBooker.book1D(
3034  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
3035  histname = "tkChi2SL";
3036  h_tkChi2SL_[0] = iBooker.book1D(histname + "AllTracks",
3037  "Photons:Tracks from single leg conversions: #chi^{2} of associated tracks",
3038  100,
3039  chi2Min,
3040  chi2Max);
3041  histname = "tkChi2Large";
3042  h_tkChi2Large_[0] = iBooker.book1D(
3043  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
3044 
3045  histname = "h_nHitsVsR";
3046  p_nHitsVsR_[1] = iBooker.bookProfile(histname + "AssTracks",
3047  "Photons:Tracks from conversions: # of hits vs radius associated tracks",
3048  rBin,
3049  rMin,
3050  rMax,
3051  25,
3052  -0.5,
3053  24.5,
3054  "");
3055 
3056  histname = "tkChi2";
3057  h_tkChi2_[1] = iBooker.book1D(
3058  histname + "AssTracks", "Photons:Tracks from conversions: #chi^{2} of associated tracks", 100, chi2Min, chi2Max);
3059  histname = "tkChi2Large";
3060  h_tkChi2Large_[1] = iBooker.book1D(
3061  histname + "AssTracks", "Photons:Tracks from conversions: #chi^{2} of associated tracks", 1000, 0., 5000.0);
3062 
3063  histname = "pChi2VsEta";
3064  p_Chi2VsEta_[0] = iBooker.bookProfile(
3065  histname + "All", " Reco Track #chi^{2} vs #eta : All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max, "");
3066 
3067  histname = "pChi2VsR";
3068  p_Chi2VsR_[0] = iBooker.bookProfile(
3069  histname + "All", " Reco Track #chi^{2} vas R : All ", rBin, rMin, rMax, 100, chi2Min, chi2Max, "");
3070 
3071  histname = "hTkD0";
3072  h_TkD0_[0] = iBooker.book1D(histname + "All", " Reco Track D0*q: All ", 100, -0.1, 0.6);
3073  h_TkD0_[1] = iBooker.book1D(histname + "Barrel", " Reco Track D0*q: Barrel ", 100, -0.1, 0.6);
3074  h_TkD0_[2] = iBooker.book1D(histname + "Endcap", " Reco Track D0*q: Endcap ", 100, -0.1, 0.6);
3075 
3076  histname = "hTkPtPull";
3077  h_TkPtPull_[0] = iBooker.book1D(histname + "All", " Reco Track Pt pull: All ", 100, -10., 10.);
3078  histname = "hTkPtPull";
3079  h_TkPtPull_[1] = iBooker.book1D(histname + "Barrel", " Reco Track Pt pull: Barrel ", 100, -10., 10.);
3080  histname = "hTkPtPull";
3081  h_TkPtPull_[2] = iBooker.book1D(histname + "Endcap", " Reco Track Pt pull: Endcap ", 100, -10., 10.);
3082 
3083  histname = "pTkPtPullEta";
3084  p_TkPtPull_[0] =
3085  iBooker.bookProfile(histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -10., 10., " ");
3086 
3087  if (!isRunCentrally_) {
3088  histname = "h2TkPtPullEta";
3089  h2_TkPtPull_[0] =
3090  iBooker.book2D(histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -10., 10.);
3091 
3092  histname = "PtRecVsPtSim";
3093  h2_PtRecVsPtSim_[0] =
3094  iBooker.book2D(histname + "All", "Pt Rec vs Pt sim: All ", etBin, etMin, etMax, etBin, etMin, etMax);
3095  h2_PtRecVsPtSim_[1] =
3096  iBooker.book2D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", etBin, etMin, etMax, etBin, etMin, etMax);
3097  h2_PtRecVsPtSim_[2] =
3098  iBooker.book2D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", etBin, etMin, etMax, etBin, etMin, etMax);
3099  histname = "PtRecVsPtSimMixProv";
3100  h2_PtRecVsPtSimMixProv_ = iBooker.book2D(
3101  histname + "All", "Pt Rec vs Pt sim All for mix with general tracks ", etBin, etMin, etMax, etBin, etMin, etMax);
3102  }
3103 
3104  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" ) {
3105  histname = "eBcOverTkPout";
3106  hBCEnergyOverTrackPout_[0] = iBooker.book1D(histname + "All", "Matrching BC E/P_out: all Ecal ", 100, 0., 5.);
3107  hBCEnergyOverTrackPout_[1] = iBooker.book1D(histname + "Barrel", "Matrching BC E/P_out: Barrel ", 100, 0., 5.);
3108  hBCEnergyOverTrackPout_[2] = iBooker.book1D(histname + "Endcap", "Matrching BC E/P_out: Endcap ", 100, 0., 5.);
3109  // }
3110 
3112  h_OIinnermostHitR_ = iBooker.book1D("OIinnermostHitR", " R innermost hit for OI tracks ", 50, 0., 25);
3113  h_IOinnermostHitR_ = iBooker.book1D("IOinnermostHitR", " R innermost hit for IO tracks ", 50, 0., 25);
3114 
3116  h_trkProv_[0] = iBooker.book1D("allTrkProv", " Track pair provenance ", 4, 0., 4.);
3117  h_trkProv_[1] = iBooker.book1D("assTrkProv", " Track pair provenance ", 4, 0., 4.);
3118  //
3119  h_trkAlgo_ =
3120  iBooker.book1D("allTrackAlgo", " Track Algo ", reco::TrackBase::algoSize, -0.5, reco::TrackBase::algoSize - 0.5);
3121  h_convAlgo_ = iBooker.book1D("allConvAlgo", " Conv Algo ", 5, -0.5, 4.5);
3122  h_convQuality_ = iBooker.book1D("allConvQuality", "Conv quality ", 11, -0.5, 11.);
3123 
3124  // histos for fake rate
3125  histname = "h_RecoConvTwoTracksEta";
3127  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
3128  histname = "h_RecoConvTwoTracksPhi";
3130  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
3131  histname = "h_RecoConvTwoTracksR";
3133  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated R", rBin, rMin, rMax);
3134  histname = "h_RecoConvTwoTracksZ";
3136  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Z", zBin, zMin, zMax);
3137  histname = "h_RecoConvTwoTracksEt";
3139  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Et", etBin, etMin, etMax);
3140  //
3141  histname = "h_RecoConvTwoMTracksEta";
3143  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #eta", etaBin2, etaMin, etaMax);
3144  histname = "h_RecoConvTwoMTracksPhi";
3146  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #phi", phiBin, phiMin, phiMax);
3147  histname = "h_RecoConvTwoMTracksR";
3149  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated R", rBin, rMin, rMax);
3150  histname = "h_RecoConvTwoMTracksZ";
3152  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Z", zBin, zMin, zMax);
3153  histname = "h_RecoConvTwoMTracksEt";
3155  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Et", etBin, etMin, etMax);
3156 }
3157 
3158 void PhotonValidator::dqmBeginRun(edm::Run const& r, edm::EventSetup const& theEventSetup) {
3159  //get magnetic field
3160  edm::LogInfo("ConvertedPhotonProducer") << " get magnetic field"
3161  << "\n";
3162  theMF_ = theEventSetup.getHandle(magneticFieldToken_);
3163 
3164  thePhotonMCTruthFinder_ = std::make_unique<PhotonMCTruthFinder>();
3165 }
3166 
3168 
3170  thePhotonMCTruthFinder_->clear();
3171  using namespace edm;
3172  // const float etaPhiDistance=0.01;
3173  // Fiducial region
3174  // const float TRK_BARL =0.9;
3175  const float BARL = 1.4442; // DAQ TDR p.290
3176  // const float END_LO = 1.566; // unused
3177  const float END_HI = 2.5;
3178  // Electron mass
3179  //const Float_t mElec= 0.000511;
3180 
3182  e.getByLabel("trackAssociatorByHitsForPhotonValidation", theHitsAssociator);
3184 
3185  nEvt_++;
3186  LogInfo("PhotonValidator") << "PhotonValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_
3187  << "\n";
3188 
3189  // get the geometry from the event setup:
3191 
3193  e.getByToken(offline_pvToken_, vtxH);
3194  h_nRecoVtx_->Fill(float(vtxH->size()));
3195 
3196  // Transform Track into TransientTrack (needed by the Vertex fitter)
3197  auto theTTB = esup.getHandle(transientTrackBuilderToken_);
3198 
3200  Handle<reco::PhotonCollection> photonHandle;
3201  e.getByToken(photonCollectionToken_, photonHandle);
3202  const reco::PhotonCollection photonCollection = *(photonHandle.product());
3203  if (!photonHandle.isValid()) {
3204  edm::LogError("PhotonProducer") << "Error! Can't get the Photon collection " << std::endl;
3205  return;
3206  }
3207 
3208  // Get the PF refined cluster collection
3209  Handle<reco::PFCandidateCollection> pfCandidateHandle;
3210  e.getByToken(pfCandidates_, pfCandidateHandle);
3211  if (!pfCandidateHandle.isValid()) {
3212  edm::LogError("PhotonValidator") << "Error! Can't get the product pfCandidates " << std::endl;
3213  }
3214 
3215  edm::Handle<edm::ValueMap<std::vector<reco::PFCandidateRef> > > phoToParticleBasedIsoMapHandle;
3216  edm::ValueMap<std::vector<reco::PFCandidateRef> > phoToParticleBasedIsoMap;
3217  if (fName_ == "pfPhotonValidator") {
3218  e.getByToken(particleBasedIso_token, phoToParticleBasedIsoMapHandle);
3219  if (!phoToParticleBasedIsoMapHandle.isValid()) {
3220  edm::LogInfo("PhotonValidator") << "Error! Can't get the product: valueMap photons to particle based iso "
3221  << std::endl;
3222  }
3223  phoToParticleBasedIsoMap = *(phoToParticleBasedIsoMapHandle.product());
3224  }
3225 
3226  Handle<edm::View<reco::Track> > outInTrkHandle;
3227  Handle<edm::View<reco::Track> > inOutTrkHandle;
3228  if (!fastSim_) {
3230  e.getByToken(conversionOITrackPr_Token_, outInTrkHandle);
3232  e.getByToken(conversionIOTrackPr_Token_, inOutTrkHandle);
3233 
3234  // Loop over Out In Tracks
3235  int iTrk = 0;
3236  int nHits = 0;
3237  for (View<reco::Track>::const_iterator iTk = outInTrkHandle->begin(); iTk != outInTrkHandle->end(); iTk++) {
3238  h_OIinnermostHitR_->Fill(sqrt(iTk->innerPosition().Perp2()));
3239  for (trackingRecHit_iterator itHits = iTk->extra()->recHitsBegin(); itHits != iTk->extra()->recHitsEnd();
3240  ++itHits) {
3241  if ((*itHits)->isValid()) {
3242  nHits++;
3243  }
3244  }
3245 
3246  iTrk++;
3247  }
3248 
3249  // Loop over In Out Tracks Barrel
3250  iTrk = 0;
3251  for (View<reco::Track>::const_iterator iTk = inOutTrkHandle->begin(); iTk != inOutTrkHandle->end(); iTk++) {
3252  h_IOinnermostHitR_->Fill(sqrt(iTk->innerPosition().Perp2()));
3253  nHits = 0;
3254  for (trackingRecHit_iterator itHits = iTk->extra()->recHitsBegin(); itHits != iTk->extra()->recHitsEnd();
3255  ++itHits) {
3256  if ((*itHits)->isValid()) {
3257  nHits++;
3258  }
3259  }
3260  iTrk++;
3261  }
3262 
3263  } // if !fastSim
3264 
3266  //get simtrack info
3267  std::vector<SimTrack> theSimTracks;
3268  std::vector<SimVertex> theSimVertices;
3271 
3272  if (!fastSim_) {
3273  e.getByToken(g4_simTk_Token_, SimTk);
3274  e.getByToken(g4_simVtx_Token_, SimVtx);
3275  } else {
3276  e.getByToken(famos_simTk_Token_, SimTk);
3277  e.getByToken(famos_simVtx_Token_, SimVtx);
3278  }
3279 
3280  theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
3281  theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
3282  std::vector<PhotonMCTruth> mcPhotons = thePhotonMCTruthFinder_->find(theSimTracks, theSimVertices);
3283 
3285  e.getByToken(hepMC_Token_, hepMC);
3286  const HepMC::GenEvent* myGenEvent = hepMC->GetEvent();
3287 
3289  e.getByToken(genpartToken_, genParticles);
3290 
3291  // get generated jets
3292  Handle<reco::GenJetCollection> GenJetsHandle;
3293  e.getByToken(genjets_Token_, GenJetsHandle);
3294  reco::GenJetCollection genJetCollection = *(GenJetsHandle.product());
3295 
3296  // Get electron tracking truth
3297  bool useTP = parameters_.getParameter<bool>("useTP");
3299  edm::Handle<TrackingParticleCollection> ElectronTPHandle;
3300  if (useTP) {
3301  if (!fastSim_) {
3302  e.getByToken(token_tp_, ElectronTPHandle);
3303  trackingParticles = *(ElectronTPHandle.product());
3304  }
3305  }
3306 
3308  std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
3309  reco::SimToRecoCollection OISimToReco;
3310  reco::SimToRecoCollection IOSimToReco;
3311  // Reco to Sim
3312  reco::RecoToSimCollection OIRecoToSim;
3313  reco::RecoToSimCollection IORecoToSim;
3314 
3315  if (useTP) {
3316  if (!fastSim_) {
3317  // Sim to Reco
3318  OISimToReco = trackAssociator->associateSimToReco(outInTrkHandle, ElectronTPHandle);
3319  IOSimToReco = trackAssociator->associateSimToReco(inOutTrkHandle, ElectronTPHandle);
3320  // Reco to Sim
3321  OIRecoToSim = trackAssociator->associateRecoToSim(outInTrkHandle, ElectronTPHandle);
3322  IORecoToSim = trackAssociator->associateRecoToSim(inOutTrkHandle, ElectronTPHandle);
3323  }
3324  }
3325  //
3326  vector<reco::SimToRecoCollection*> StoRCollPtrs;
3327  StoRCollPtrs.push_back(&OISimToReco);
3328  StoRCollPtrs.push_back(&IOSimToReco);
3329  vector<reco::RecoToSimCollection*> RtoSCollPtrs;
3330  RtoSCollPtrs.push_back(&OIRecoToSim);
3331  RtoSCollPtrs.push_back(&IORecoToSim);
3332  //
3333  for (int i = 0; i < 2; i++)
3334  nSimPho_[i] = 0;
3335  for (int i = 0; i < 2; i++)
3336  nSimConv_[i] = 0;
3337 
3338  std::vector<reco::PhotonRef> myPhotons;
3339 
3340  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3341  reco::PhotonRef phoRef(reco::PhotonRef(photonHandle, iPho));
3342  // for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3343  if (fabs(phoRef->eta()) > 2.5)
3344  continue;
3345  myPhotons.push_back(phoRef);
3346  }
3347 
3348  std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
3349  // if ( ! isRunCentrally_ ) {
3350  if (myPhotons.size() >= 2) {
3351  if (myPhotons[0]->et() > 40 && myPhotons[1]->et() > 25) {
3352  math::XYZTLorentzVector p12 = myPhotons[0]->p4() + myPhotons[1]->p4();
3353  math::XYZTLorentzVector p12_regr1 =
3354  myPhotons[0]->p4(reco::Photon::regression1) + myPhotons[1]->p4(reco::Photon::regression1);
3355  math::XYZTLorentzVector p12_regr2 =
3356  myPhotons[0]->p4(reco::Photon::regression2) + myPhotons[1]->p4(reco::Photon::regression2);
3357  float gamgamMass2 = p12.Dot(p12);
3358  float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
3359  float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
3360 
3362  if (gamgamMass2 > 0) {
3363  // total
3364  h_gamgamMass_[0][0]->Fill(sqrt(gamgamMass2));
3365  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3366  h_gamgamMass_[0][1]->Fill(sqrt(gamgamMass2));
3367  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3368  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3369  h_gamgamMass_[0][2]->Fill(sqrt(gamgamMass2));
3370  // Golden photons
3371  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3372  h_gamgamMass_[1][0]->Fill(sqrt(gamgamMass2));
3373  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3374  h_gamgamMass_[1][1]->Fill(sqrt(gamgamMass2));
3375  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3376  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3377  h_gamgamMass_[1][2]->Fill(sqrt(gamgamMass2));
3378  }
3379  // both photons converted
3380  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3381  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3382  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3383  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3384  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3385  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3386  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3387  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3388  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3389  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3390  }
3391  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3392  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3393  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3394  }
3395  }
3396  }
3397  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3398  myPhotons[1]->r9() > 0.93) { // one photon converted
3399  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3400  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3401  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3402  if (chi2Prob1 > 0.0005) {
3403  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3404  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3405  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3406  }
3407  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3408  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3409  }
3410  }
3411  }
3412  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3413  myPhotons[0]->r9() > 0.93) { // one photon converted
3414  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3415  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3416  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3417  if (chi2Prob1 > 0.0005) {
3418  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3419  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3420  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3421  }
3422  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3423  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3424  }
3425  }
3426  }
3427  }
3428  } // gamgamMass2 > 0
3429 
3431  if (gamgamMass2_regr1 > 0) {
3432  // total
3433  h_gamgamMassRegr1_[0][0]->Fill(sqrt(gamgamMass2_regr1));
3434  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3435  h_gamgamMassRegr1_[0][1]->Fill(sqrt(gamgamMass2_regr1));
3436  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3437  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3438  h_gamgamMassRegr1_[0][2]->Fill(sqrt(gamgamMass2_regr1));
3439  // Golden photons
3440  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3441  h_gamgamMassRegr1_[1][0]->Fill(sqrt(gamgamMass2_regr1));
3442  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3443  h_gamgamMassRegr1_[1][1]->Fill(sqrt(gamgamMass2_regr1));
3444  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3445  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3446  h_gamgamMassRegr1_[1][2]->Fill(sqrt(gamgamMass2_regr1));
3447  }
3448 
3449  // both photons converted
3450  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3451  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3452  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3453  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3454  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3455  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3456  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3457  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3458  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3459  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3460  }
3461  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3462  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3463  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3464  }
3465  }
3466  }
3467  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3468  myPhotons[1]->r9() > 0.93) { // one photon converted
3469  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3470  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3471  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3472  if (chi2Prob1 > 0.0005) {
3473  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3474  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3475  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3476  }
3477  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3478  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3479  }
3480  }
3481  }
3482  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3483  myPhotons[0]->r9() > 0.93) { // one photon converted
3484  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3485  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3486  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3487  if (chi2Prob1 > 0.0005) {
3488  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3489  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3490  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3491  }
3492  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3493  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3494  }
3495  }
3496  }
3497  }
3498  } // gamgamMass2_regr1 > 0
3499 
3501  if (gamgamMass2_regr2 > 0) {
3502  // total
3503  h_gamgamMassRegr2_[0][0]->Fill(sqrt(gamgamMass2_regr2));
3504  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3505  h_gamgamMassRegr2_[0][1]->Fill(sqrt(gamgamMass2_regr2));
3506  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3507  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3508  h_gamgamMassRegr2_[0][2]->Fill(sqrt(gamgamMass2_regr2));
3509  // Golden photons
3510  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3511  h_gamgamMassRegr2_[1][0]->Fill(sqrt(gamgamMass2_regr2));
3512  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3513  h_gamgamMassRegr2_[1][1]->Fill(sqrt(gamgamMass2_regr2));
3514  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3515  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3516  h_gamgamMassRegr2_[1][2]->Fill(sqrt(gamgamMass2_regr2));
3517  }
3518 
3519  // both photons converted
3520  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3521  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3522  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3523  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3524  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3525  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3526  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3527  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3528  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3529  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3530  }
3531  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3532  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3533  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3534  }
3535  }
3536  }
3537  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3538  myPhotons[1]->r9() > 0.93) { // one photon converted
3539  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3540  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3541  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3542  if (chi2Prob1 > 0.0005) {
3543  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3544  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3545  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3546  }
3547  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3548  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3549  }
3550  }
3551  }
3552  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3553  myPhotons[0]->r9() > 0.93) { // one photon converted
3554  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3555  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3556  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3557  if (chi2Prob1 > 0.0005) {
3558  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3559  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3560  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3561  }
3562  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3563  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3564  }
3565  }
3566  }
3567  }
3568  } // gamgamMass2_regr2 > 0
3569  }
3570  }
3571  // }
3572 
3573  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
3574  if ((*mcPho).fourMomentum().et() < minPhoEtCut_)
3575  continue;
3576 
3577  for (HepMC::GenEvent::particle_const_iterator mcIter = myGenEvent->particles_begin();
3578  mcIter != myGenEvent->particles_end();
3579  mcIter++) {
3580  if ((*mcIter)->pdg_id() != 22)
3581  continue;
3582  bool isTheSame = false;
3583  HepMC::GenParticle* mother = nullptr;
3584  if ((*mcIter)->production_vertex()) {
3585  if ((*mcIter)->production_vertex()->particles_begin(HepMC::parents) !=
3586  (*mcIter)->production_vertex()->particles_end(HepMC::parents))
3587  mother = *((*mcIter)->production_vertex()->particles_begin(HepMC::parents));
3588  }
3589 
3590  float mcPhi = (*mcPho).fourMomentum().phi();
3591  mcPhi_ = phiNormalization(mcPhi);
3592  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
3593  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
3594  mcConvR_ = (*mcPho).vertex().perp();
3595  mcConvX_ = (*mcPho).vertex().x();
3596  mcConvY_ = (*mcPho).vertex().y();
3597  mcConvZ_ = (*mcPho).vertex().z();
3598  mcConvEta_ = (*mcPho).vertex().eta();
3599  mcConvPhi_ = (*mcPho).vertex().phi();
3600 
3601  if (fabs(mcEta_) > END_HI)
3602  continue;
3603 
3604  if (mother == nullptr || (mother != nullptr && mother->pdg_id() == 22) ||
3605  (mother != nullptr && mother->pdg_id() == 25) || (mother != nullptr && mother->pdg_id() == 35)) {
3606  double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
3607  float phiMother = (*mcIter)->momentum().phi();
3608  double dPhi = phiNormalization(phiMother) - mcPhi_;
3609  double dEta = fabs((*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity());
3610 
3611  if (dEta <= 0.0001 && dPhi <= 0.0001 && dPt <= 0.0001)
3612  isTheSame = true;
3613  }
3614  if (!isTheSame)
3615  continue;
3616 
3617  nSimPho_[0]++;
3618  if (!isRunCentrally_) {
3619  h_SimPhoMotherEt_[0]->Fill((*mcPho).motherMomentum().et());
3620  h_SimPhoMotherEta_[0]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3621  }
3622 
3623  h_SimPho_[0]->Fill(mcEta_);
3624  h_SimPho_[1]->Fill(mcPhi_);
3625  h_SimPho_[2]->Fill((*mcPho).fourMomentum().et());
3626 
3628 
3629  bool goodSimConversion = false;
3630  bool visibleConversion = false;
3631  bool visibleConversionsWithTwoSimTracks = false;
3632  if ((*mcPho).isAConversion() == 1) {
3633  nSimConv_[0]++;
3634  h_AllSimConv_[0]->Fill(mcEta_);
3635  h_AllSimConv_[1]->Fill(mcPhi_);
3638  h_AllSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3639 
3640  if (!isRunCentrally_) {
3641  if (mcConvR_ < 51)
3643  }
3644 
3645  if ((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
3646  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
3647  visibleConversion = true;
3648 
3649  theConvTP_.clear();
3650  for (size_t i = 0; i < trackingParticles.size(); ++i) {
3651  TrackingParticleRef tp(ElectronTPHandle, i);
3652  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.001 &&
3653  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.001) {
3655  }
3656  }
3657  if (theConvTP_.size() == 2)
3658  visibleConversionsWithTwoSimTracks = true;
3659  goodSimConversion = false;
3660 
3661  if (visibleConversion && visibleConversionsWithTwoSimTracks)
3662  goodSimConversion = true;
3663  if (goodSimConversion) {
3664  nSimConv_[1]++;
3665  h_VisSimConv_[0]->Fill(mcEta_);
3666  h_VisSimConv_[1]->Fill(mcPhi_);
3669  h_VisSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3670 
3671  if (useTP) {
3672  if (!isRunCentrally_) {
3674  iTrk != theConvTP_.end();
3675  ++iTrk) {
3676  h_simTkPt_->Fill((*iTrk)->pt());
3677  h_simTkEta_->Fill((*iTrk)->eta());
3678  }
3679  }
3680  }
3681  }
3682  }
3683 
3684  float minDelta = 10000.;
3685  std::vector<reco::PhotonRef> thePhotons;
3686  int index = 0;
3687  int iMatch = -1;
3688  bool matched = false;
3689 
3690  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3691  reco::PhotonRef aPho(reco::PhotonRef(photonHandle, iPho));
3692  thePhotons.push_back(aPho);
3693  float phiPho = aPho->phi();
3694  float etaPho = aPho->eta();
3695  float deltaPhi = phiPho - mcPhi_;
3696  float deltaEta = etaPho - mcEta_;
3697  if (deltaPhi > pi)
3698  deltaPhi -= twopi;
3699  if (deltaPhi < -pi)
3700  deltaPhi += twopi;
3701  deltaPhi = pow(deltaPhi, 2);
3702  deltaEta = pow(deltaEta, 2);
3703  float delta = sqrt(deltaPhi + deltaEta);
3704  if (delta < 0.1 && delta < minDelta) {
3705  minDelta = delta;
3706  iMatch = index;
3707  }
3708  index++;
3709  } // end loop over reco photons
3710  if (iMatch > -1)
3711  matched = true;
3712 
3713  if (matched) {
3714  nSimPho_[1]++;
3715  if (!isRunCentrally_) {
3716  h_SimPhoMotherEt_[1]->Fill((*mcPho).motherMomentum().et());
3717  h_SimPhoMotherEta_[1]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3718  }
3721  h_MatchedSimPho_[2]->Fill((*mcPho).fourMomentum().et());
3722  }
3723 
3724  if (!matched)
3725  continue;
3726 
3727  bool phoIsInBarrel = false;
3728  bool phoIsInEndcap = false;
3729  bool phoIsInEndcapP = false;
3730  bool phoIsInEndcapM = false;
3731 
3732  reco::PhotonRef matchingPho = thePhotons[iMatch];
3733 
3734  if (fabs(matchingPho->superCluster()->position().eta()) < 1.479) {
3735  phoIsInBarrel = true;
3736  } else {
3737  phoIsInEndcap = true;
3738  if (matchingPho->superCluster()->position().eta() > 0)
3739  phoIsInEndcapP = true;
3740  if (matchingPho->superCluster()->position().eta() < 0)
3741  phoIsInEndcapM = true;
3742  }
3743 
3744  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
3745  if (phoIsInBarrel) {
3746  // Get handle to rec hits ecal barrel
3747  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
3748  if (!ecalRecHitHandle.isValid()) {
3749  Labels l;
3751  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3752  return;
3753  }
3754 
3755  } else if (phoIsInEndcap) {
3756  // Get handle to rec hits ecal encap
3757  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
3758  if (!ecalRecHitHandle.isValid()) {
3759  Labels l;
3761  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3762  return;
3763  }
3764  }
3765 
3766  int type = 0;
3767  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
3768  float photonE = matchingPho->energy();
3769  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
3770  //float photonEt= matchingPho->energy()/cosh( matchingPho->eta()) ;
3771  float photonEt = matchingPho->pt();
3772  float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
3773  float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
3774  float r9 = matchingPho->r9();
3775  // float full5x5_r9 = matchingPho->full5x5_r9();
3776  float r1 = matchingPho->r1x5();
3777  float r2 = matchingPho->r2x5();
3778  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
3779  //float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
3780  float hOverE = matchingPho->hadronicOverEm();
3781  float newhOverE = matchingPho->hadTowOverEm();
3782  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
3783  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
3784  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
3785  float trkIso = matchingPho->trkSumPtSolidConeDR04();
3786  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
3787  // PF related quantities
3788  float chargedHadIso = matchingPho->chargedHadronIso();
3789  float neutralHadIso = matchingPho->neutralHadronIso();
3790  float photonIso = matchingPho->photonIso();
3791  float etOutsideMustache = matchingPho->etOutsideMustache();
3792  int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
3793  float pfMVA = matchingPho->pfMVA();
3794 
3795  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
3796  bool atLeastOneDeadChannel = false;
3797  for (reco::CaloCluster_iterator bcIt = matchingPho->superCluster()->clustersBegin();
3798  bcIt != matchingPho->superCluster()->clustersEnd();
3799  ++bcIt) {
3800  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3801  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
3802  ++it) {
3803  if (rhIt->first == (*it).id()) {
3804  if ((*it).recoFlag() == 9) {
3805  atLeastOneDeadChannel = true;
3806  break;
3807  }
3808  }
3809  }
3810  }
3811  }
3812 
3813  if (atLeastOneDeadChannel) {
3816  h_MatchedSimPhoBadCh_[2]->Fill((*mcPho).fourMomentum().et());
3817  }
3818 
3819  if (phoIsInBarrel)
3820  h_phoPixSeedSize_[0]->Fill(matchingPho->electronPixelSeeds().size());
3821  else
3822  h_phoPixSeedSize_[1]->Fill(matchingPho->electronPixelSeeds().size());
3823 
3824  h_scEta_[type]->Fill(matchingPho->superCluster()->eta());
3825  h_scPhi_[type]->Fill(matchingPho->superCluster()->phi());
3826  if (!isRunCentrally_) {
3827  h_scEtaWidth_[type]->Fill(matchingPho->superCluster()->etaWidth());
3828  h_scPhiWidth_[type]->Fill(matchingPho->superCluster()->phiWidth());
3829  }
3830  h_scE_[type][0]->Fill(matchingPho->superCluster()->energy());
3831  h_scEt_[type][0]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3832  if (phoIsInEndcap)
3833  h_psE_->Fill(matchingPho->superCluster()->preshowerEnergy());
3834  //
3835  h_r9_[type][0]->Fill(r9);
3836  //
3837  h_r1_[type][0]->Fill(r1);
3838  //
3839  h_r2_[type][0]->Fill(r2);
3840  //
3841  h_sigmaIetaIeta_[type][0]->Fill(sigmaIetaIeta);
3842  //
3843  h_hOverE_[type][0]->Fill(hOverE);
3844  p_r9VsEta_[0]->Fill(mcEta_, r9);
3845 
3846  if (!isRunCentrally_) {
3847  h2_r9VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r9);
3848  h2_r1VsEta_[0]->Fill(mcEta_, r1);
3849  h2_r1VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r1);
3850  h2_r2VsEta_[0]->Fill(mcEta_, r2);
3851  h2_r2VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r2);
3852  h2_sigmaIetaIetaVsEta_[0]->Fill(mcEta_, sigmaIetaIeta);
3853  h2_sigmaIetaIetaVsEt_[0]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3855  h2_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3856  }
3858  p_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3859  //
3860  h_newhOverE_[type][0]->Fill(newhOverE);
3861  p_newhOverEVsEta_[0]->Fill(mcEta_, newhOverE);
3862  p_newhOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhOverE);
3863 
3864  //
3865  h_ecalRecHitSumEtConeDR04_[type][0]->Fill(ecalIso);
3866  if (!isRunCentrally_) {
3868  h2_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3870  h2_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3871  }
3873  if (!isRunCentrally_)
3874  p_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3875  //
3876  h_hcalTowerSumEtConeDR04_[type][0]->Fill(hcalIso);
3878  if (!isRunCentrally_)
3879  p_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3880  //
3881  if (!isRunCentrally_)
3882  h_hcalTowerBcSumEtConeDR04_[type][0]->Fill(newhcalIso);
3883  p_hcalTowerBcSumEtConeDR04VsEta_[0]->Fill(mcEta_, newhcalIso);
3884  if (!isRunCentrally_)
3885  p_hcalTowerBcSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
3886  //
3887  h_isoTrkSolidConeDR04_[type][0]->Fill(trkIso);
3888  h_nTrkSolidConeDR04_[type][0]->Fill(nIsoTrk);
3889 
3890  if (!isRunCentrally_) {
3892  h2_isoTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), trkIso);
3893  h2_nTrkSolidConeDR04VsEta_[0]->Fill(mcEta_, nIsoTrk);
3894  h2_nTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3895  }
3896 
3897  h_chHadIso_[0]->Fill(chargedHadIso);
3898  h_nHadIso_[0]->Fill(neutralHadIso);
3899  h_phoIso_[0]->Fill(photonIso);
3900  h_nCluOutsideMustache_[0]->Fill(float(nClusterOutsideMustache));
3901  h_etOutsideMustache_[0]->Fill(etOutsideMustache);
3902  h_pfMva_[0]->Fill(pfMVA);
3903  //
3904  h_phoEta_[type]->Fill(matchingPho->eta());
3905  h_phoPhi_[type]->Fill(matchingPho->phi());
3906  h_phoDEta_[0]->Fill(matchingPho->eta() - (*mcPho).fourMomentum().eta());
3907  h_phoDPhi_[0]->Fill(matchingPho->phi() - mcPhi_);
3908  h_phoE_[type][0]->Fill(photonE);
3909  h_phoEt_[type][0]->Fill(photonEt);
3910  h_nConv_[0][0]->Fill(float(matchingPho->conversions().size()));
3911  h_nConv_[1][0]->Fill(float(matchingPho->conversionsOneLeg().size()));
3912 
3913  //
3914  h_phoERes_[0][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3915  h_phoSigmaEoE_[0][0]->Fill(sigmaEoE);
3916  h_phoEResRegr1_[0][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3917  h_phoEResRegr2_[0][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3918 
3919  p_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3920  p_sigmaEoEVsEta_[0]->Fill(mcEta_, sigmaEoE);
3921  p_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3922 
3923  if (!isRunCentrally_)
3924  h2_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3925  if (!isRunCentrally_)
3926  h2_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3927  if (!isRunCentrally_)
3928  h2_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3929  if (!isRunCentrally_)
3930  h2_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3931  if (!isRunCentrally_)
3932  p_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3933  if (!isRunCentrally_)
3934  p_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3935  //
3936  if ((*mcPho).isAConversion() == 0) {
3937  if (!isRunCentrally_) {
3938  h2_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3939  h2_r9VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r9);
3940  //
3941  h2_r1VsEta_[1]->Fill(mcEta_, r1);
3942  h2_r1VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r1);
3943  //
3944  h2_r2VsEta_[1]->Fill(mcEta_, r2);
3945  h2_r2VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r2);
3946  //
3947  h2_sigmaIetaIetaVsEta_[1]->Fill(mcEta_, sigmaIetaIeta);
3948  h2_sigmaIetaIetaVsEt_[1]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3949  //
3951  h2_hOverEVsEt_[1]->Fill((*mcPho).fourMomentum().et(), hOverE);
3952  }
3953 
3954  if (!isRunCentrally_) {
3958  h2_isoTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), trkIso);
3959  h2_nTrkSolidConeDR04VsEta_[1]->Fill(mcEta_, nIsoTrk);
3960  h2_nTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3961  }
3963  if (!isRunCentrally_)
3965  }
3966 
3967  if (photonE / (*mcPho).fourMomentum().e() < 0.3 && photonE / (*mcPho).fourMomentum().e() > 0.1) {
3968  }
3969 
3970  if ((r9 > 0.94 && phoIsInBarrel) || (r9 > 0.95 && phoIsInEndcap)) {
3971  h_phoERes_[1][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3972  h_phoSigmaEoE_[1][0]->Fill(sigmaEoE);
3973  h_phoEResRegr1_[1][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3974  h_phoEResRegr2_[1][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3975  if (!isRunCentrally_)
3976  h2_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3977  p_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3978  p_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3979  p_r9VsEta_[1]->Fill(mcEta_, r9);
3980  p_sigmaEoEVsEta_[1]->Fill(mcEta_, sigmaEoE);
3981 
3982  } else if ((r9 <= 0.94 && phoIsInBarrel) || (r9 <= 0.95 && phoIsInEndcap)) {
3983  h_phoERes_[2][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3984  h_phoSigmaEoE_[2][0]->Fill(sigmaEoE);
3985  h_phoEResRegr1_[2][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3986  h_phoEResRegr2_[2][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3987  p_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3988  p_eResVsEta_[2]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3989  p_r9VsEta_[2]->Fill(mcEta_, r9);
3990  p_sigmaEoEVsEta_[2]->Fill(mcEta_, sigmaEoE);
3991 
3992  if (!isRunCentrally_) {
3993  h2_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3994  h_EtR9Less093_[0][0]->Fill(photonEt);
3995  }
3996  }
3997 
3998  if (phoIsInBarrel) {
3999  h_scE_[type][1]->Fill(matchingPho->superCluster()->energy());
4000  h_scEt_[type][1]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4001  h_r9_[type][1]->Fill(r9);
4002  h_r1_[type][1]->Fill(r1);
4003  h_r2_[type][1]->Fill(r2);
4004  h_sigmaIetaIeta_[type][1]->Fill(sigmaIetaIeta);
4005  h_hOverE_[type][1]->Fill(hOverE);
4006  h_newhOverE_[type][1]->Fill(newhOverE);
4007  h_ecalRecHitSumEtConeDR04_[type][1]->Fill(ecalIso);
4008  p_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4009  h_hcalTowerSumEtConeDR04_[type][1]->Fill(hcalIso);
4010  p_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4011  h_hcalTowerBcSumEtConeDR04_[type][1]->Fill(newhcalIso);
4012  p_hcalTowerBcSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4013  h_isoTrkSolidConeDR04_[type][1]->Fill(trkIso);
4014  h_nTrkSolidConeDR04_[type][1]->Fill(nIsoTrk);
4015  h_chHadIso_[1]->Fill(chargedHadIso);
4016  h_nHadIso_[1]->Fill(neutralHadIso);
4017  h_phoIso_[1]->Fill(photonIso);
4018  h_nCluOutsideMustache_[1]->Fill(float(nClusterOutsideMustache));
4019  h_etOutsideMustache_[1]->Fill(etOutsideMustache);
4020  h_pfMva_[1]->Fill(pfMVA);
4021  h_phoE_[type][1]->Fill(photonE);
4022  h_phoEt_[type][1]->Fill(photonEt);
4023  h_nConv_[type][1]->Fill(float(matchingPho->conversions().size()));
4024  h_nConv_[1][1]->Fill(float(matchingPho->conversionsOneLeg().size()));
4025  h_phoERes_[0][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4026  h_phoSigmaEoE_[0][1]->Fill(sigmaEoE);
4027  h_phoEResRegr1_[0][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4028  h_phoEResRegr2_[0][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4029  p_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4030  p_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4031  if (!isRunCentrally_) {
4032  h2_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4033  h2_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4034  h2_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4035  h2_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4036  h2_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4037  }
4038  p_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4039  p_eResVsNVtx_[1][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4040  p_sigmaEoEVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4041  p_sigmaEoEVsNVtx_[1][0]->Fill(float(vtxH->size()), sigmaEoE);
4042 
4043  if (r9 > 0.94) {
4044  h_phoERes_[1][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4045  h_phoSigmaEoE_[1][1]->Fill(sigmaEoE);
4046  h_phoEResRegr1_[1][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4047  h_phoEResRegr2_[1][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4048  if (!isRunCentrally_)
4049  h2_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4050  p_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4051  p_eResVsNVtx_[1][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4052  p_sigmaEoEVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4053  p_sigmaEoEVsNVtx_[1][1]->Fill(float(vtxH->size()), sigmaEoE);
4054  }
4055  if (r9 <= 0.94) {
4056  h_phoERes_[2][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4057  h_phoSigmaEoE_[2][1]->Fill(sigmaEoE);
4058  h_phoEResRegr1_[2][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4059  h_phoEResRegr2_[2][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4060  p_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4061  p_eResVsNVtx_[1][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4062  p_sigmaEoEVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4063  p_sigmaEoEVsNVtx_[1][2]->Fill(float(vtxH->size()), sigmaEoE);
4064  if (!isRunCentrally_) {
4065  h2_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4066  h_EtR9Less093_[0][1]->Fill(photonEt);
4067  }
4068  }
4069  }
4070  if (phoIsInEndcap) {
4071  h_scE_[type][2]->Fill(matchingPho->superCluster()->energy());
4072  h_scEt_[type][2]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4073  h_r9_[type][2]->Fill(r9);
4074  h_r1_[type][2]->Fill(r1);
4075  h_r2_[type][2]->Fill(r2);
4076  h_sigmaIetaIeta_[type][2]->Fill(sigmaIetaIeta);
4077  h_hOverE_[type][2]->Fill(hOverE);
4078  h_newhOverE_[type][2]->Fill(newhOverE);
4079  h_ecalRecHitSumEtConeDR04_[type][2]->Fill(ecalIso);
4080  p_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4081  h_hcalTowerSumEtConeDR04_[type][2]->Fill(hcalIso);
4082  p_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4083  h_hcalTowerBcSumEtConeDR04_[type][2]->Fill(newhcalIso);
4084  p_hcalTowerBcSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4085  h_isoTrkSolidConeDR04_[type][2]->Fill(trkIso);
4086  h_nTrkSolidConeDR04_[type][2]->Fill(nIsoTrk);
4087  h_chHadIso_[2]->Fill(chargedHadIso);
4088  h_nHadIso_[2]->Fill(neutralHadIso);
4089  h_phoIso_[2]->Fill(photonIso);
4090  h_nCluOutsideMustache_[2]->Fill(float(nClusterOutsideMustache));
4091  h_etOutsideMustache_[2]->Fill(etOutsideMustache);
4092  h_pfMva_[2]->Fill(pfMVA);
4093  h_phoE_[type][2]->Fill(photonE);
4094  h_phoEt_[type][2]->Fill(photonEt);
4095  h_nConv_[type][2]->Fill(float(matchingPho->conversions().size()));
4096  h_nConv_[1][2]->Fill(float(matchingPho->conversionsOneLeg().size()));
4097  h_phoERes_[0][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4098  h_phoSigmaEoE_[0][2]->Fill(sigmaEoE);
4099  h_phoEResRegr1_[0][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4100  h_phoEResRegr2_[0][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4101  p_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4102  p_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4103  if (!isRunCentrally_) {
4104  h2_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4105  h2_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4106  h2_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4107  h2_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4108  h2_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4109  }
4110 
4111  p_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4112  p_eResVsNVtx_[2][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4113  p_sigmaEoEVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4114  p_sigmaEoEVsNVtx_[2][0]->Fill(float(vtxH->size()), sigmaEoE);
4115 
4116  if (r9 > 0.95) {
4117  h_phoERes_[1][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4118  h_phoSigmaEoE_[1][2]->Fill(sigmaEoE);
4119  h_phoEResRegr1_[1][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4120  h_phoEResRegr2_[1][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4121  if (!isRunCentrally_)
4122  h2_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4123  p_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4124  p_eResVsNVtx_[2][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4125  p_sigmaEoEVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4126  p_sigmaEoEVsNVtx_[2][1]->Fill(float(vtxH->size()), sigmaEoE);
4127  }
4128  if (r9 <= 0.95) {
4129  h_phoERes_[2][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4130  h_phoSigmaEoE_[2][2]->Fill(sigmaEoE);
4131  h_phoEResRegr1_[2][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4132  h_phoEResRegr2_[2][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4133  p_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4134  p_eResVsNVtx_[2][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4135  p_sigmaEoEVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4136  p_sigmaEoEVsNVtx_[2][2]->Fill(float(vtxH->size()), sigmaEoE);
4137 
4138  if (!isRunCentrally_) {
4139  h2_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4140  h_EtR9Less093_[0][2]->Fill(photonEt);
4141  }
4142  }
4143  }
4144 
4146  if (fName_ == "pfPhotonValidator") {
4147  float SumPtIsoValCh = 0.;
4148  float SumPtIsoValNh = 0.;
4149  float SumPtIsoValPh = 0.;
4150 
4151  float SumPtIsoValCleanCh = 0.;
4152  float SumPtIsoValCleanNh = 0.;
4153  float SumPtIsoValCleanPh = 0.;
4154 
4155  for (unsigned int lCand = 0; lCand < pfCandidateHandle->size(); lCand++) {
4156  reco::PFCandidateRef pfCandRef(reco::PFCandidateRef(pfCandidateHandle, lCand));
4157  float dR = deltaR(matchingPho->eta(), matchingPho->phi(), pfCandRef->eta(), pfCandRef->phi());
4158  if (dR < 0.4) {
4160  reco::PFCandidate::ParticleType type = pfCandRef->particleId();
4161  if (type == reco::PFCandidate::e)
4162  continue;
4163  if (type == reco::PFCandidate::gamma && pfCandRef->mva_nothing_gamma() > 0.)
4164  continue;
4165 
4166  if (type == reco::PFCandidate::h) {
4167  SumPtIsoValCh += pfCandRef->pt();
4169  if (phoIsInBarrel)
4171  else
4173  }
4174  if (type == reco::PFCandidate::h0) {
4175  SumPtIsoValNh += pfCandRef->pt();
4177  if (phoIsInBarrel)
4179  else
4181  }
4182  if (type == reco::PFCandidate::gamma) {
4183  SumPtIsoValPh += pfCandRef->pt();
4185  if (phoIsInBarrel)
4187  else
4189  }
4191  bool skip = false;
4192  for (std::vector<reco::PFCandidateRef>::const_iterator i = phoToParticleBasedIsoMap[matchingPho].begin();
4193  i != phoToParticleBasedIsoMap[matchingPho].end();
4194  ++i) {
4195  if ((*i) == pfCandRef) {
4196  skip = true;
4197  }
4198  } // loop over the PFCandidates flagged as overlapping with the photon
4199 
4200  if (skip)
4201  continue;
4202  if (type == reco::PFCandidate::h) {
4203  SumPtIsoValCleanCh += pfCandRef->pt();
4205  if (phoIsInBarrel)
4207  else
4209  }
4210  if (type == reco::PFCandidate::h0) {
4211  SumPtIsoValCleanNh += pfCandRef->pt();
4213  if (phoIsInBarrel)
4215  else
4217  }
4218  if (type == reco::PFCandidate::gamma) {
4219  SumPtIsoValCleanPh += pfCandRef->pt();
4221  if (phoIsInBarrel)
4223  else
4225  }
4226 
4227  } // dr=0.4
4228  } // loop over all PF Candidates
4229 
4230  h_SumPtOverPhoPt_ChHad_Cleaned_[0]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4231  h_SumPtOverPhoPt_NeuHad_Cleaned_[0]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4232  h_SumPtOverPhoPt_Pho_Cleaned_[0]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4233  h_SumPtOverPhoPt_ChHad_unCleaned_[0]->Fill(SumPtIsoValCh / matchingPho->pt());
4234  h_SumPtOverPhoPt_NeuHad_unCleaned_[0]->Fill(SumPtIsoValNh / matchingPho->pt());
4235  h_SumPtOverPhoPt_Pho_unCleaned_[0]->Fill(SumPtIsoValPh / matchingPho->pt());
4236  if (phoIsInBarrel) {
4237  h_SumPtOverPhoPt_ChHad_Cleaned_[1]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4238  h_SumPtOverPhoPt_NeuHad_Cleaned_[1]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4239  h_SumPtOverPhoPt_Pho_Cleaned_[1]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4240  h_SumPtOverPhoPt_ChHad_unCleaned_[1]->Fill(SumPtIsoValCh / matchingPho->pt());
4241  h_SumPtOverPhoPt_NeuHad_unCleaned_[1]->Fill(SumPtIsoValNh / matchingPho->pt());
4242  h_SumPtOverPhoPt_Pho_unCleaned_[1]->Fill(SumPtIsoValPh / matchingPho->pt());
4243  } else {
4244  h_SumPtOverPhoPt_ChHad_Cleaned_[2]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4245  h_SumPtOverPhoPt_NeuHad_Cleaned_[2]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4246  h_SumPtOverPhoPt_Pho_Cleaned_[2]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4247  h_SumPtOverPhoPt_ChHad_unCleaned_[2]->Fill(SumPtIsoValCh / matchingPho->pt());
4248  h_SumPtOverPhoPt_NeuHad_unCleaned_[2]->Fill(SumPtIsoValNh / matchingPho->pt());
4249  h_SumPtOverPhoPt_Pho_unCleaned_[2]->Fill(SumPtIsoValPh / matchingPho->pt());
4250  }
4251 
4252  } // only for pfPhotonValidator
4253 
4254  if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
4255  continue;
4256 
4257  if (!isRunCentrally_) {
4258  h_r9_[1][0]->Fill(r9);
4259  if (phoIsInBarrel)
4260  h_r9_[1][1]->Fill(r9);
4261  if (phoIsInEndcap)
4262  h_r9_[1][2]->Fill(r9);
4263 
4265  if (fabs(mcEta_) <= 1.) {
4268  } else
4270  }
4271 
4272  if (!fastSim_) {
4274  reco::ConversionRefVector conversions = matchingPho->conversions();
4275  bool atLeastOneRecoTwoTrackConversion = false;
4276  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4277  reco::ConversionRef aConv = conversions[iConv];
4278  double like = aConv->MVAout();
4279  if (like < likelihoodCut_)
4280  continue;
4281 
4282  if (!isRunCentrally_)
4283  h2_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4284  p_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4285 
4286  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4287  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4288  if (tracks.size() < 2)
4289  continue;
4290  atLeastOneRecoTwoTrackConversion = true;
4291 
4292  h_mvaOut_[0]->Fill(like);
4293 
4294  if (tracks.size() == 2) {
4295  if (sqrt(aConv->tracksPin()[0].Perp2()) < convTrackMinPtCut_ ||
4296  sqrt(aConv->tracksPin()[1].Perp2()) < convTrackMinPtCut_)
4297  continue;
4298  }
4299 
4300  if (dCotCutOn_) {
4301  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4302  continue;
4303  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4304  continue;
4305  }
4306 
4307  nRecConv_++;
4308 
4309  std::map<const reco::Track*, TrackingParticleRef> myAss;
4310  std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
4311  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMin;
4312  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMax;
4313  //
4314 
4315  int nAssT2 = 0;
4316  for (unsigned int i = 0; i < tracks.size(); i++) {
4317  // reco::TrackRef track = tracks[i].castTo<reco::TrackRef>();
4318 
4319  type = 0;
4320  if (!isRunCentrally_)
4321  nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4322  if (!isRunCentrally_)
4323  nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4324  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits() - 0.0001));
4325  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits() - 0.0001));
4327 
4330  tc.push_back(tfrb);
4331  // reco::RecoToSimCollection q = trackAssociator->associateRecoToSim(tc,theConvTP_);
4332  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4333  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4334  int tpI = 0;
4335 
4336  if (q.find(theConvTP_[0]) != q.end()) {
4337  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4338  } else if (q.find(theConvTP_[1]) != q.end()) {
4339  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4340  tpI = 1;
4341  }
4342 
4343  if (trackV.empty())
4344  continue;
4345  edm::RefToBase<reco::Track> tr = trackV.front().first;
4346  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4347  nAssT2++;
4348  }
4349 
4350  type = 0;
4351 
4352  // float totP = sqrt(aConv->pairMomentum().Mag2());
4353  float refP = -99999.;
4354  float refPt = -99999.;
4355  if (aConv->conversionVertex().isValid()) {
4356  refP = sqrt(aConv->refittedPairMomentum().Mag2());
4357  refPt = sqrt(aConv->refittedPairMomentum().perp2());
4358  }
4359  float invM = aConv->pairInvariantMass();
4360 
4361  h_invMass_[type][0]->Fill(invM);
4362  if (phoIsInBarrel)
4363  h_invMass_[type][1]->Fill(invM);
4364  if (phoIsInEndcap)
4365  h_invMass_[type][2]->Fill(invM);
4366 
4368  if (tracks.size() == 2) {
4373  h_SimConvTwoTracks_[4]->Fill((*mcPho).fourMomentum().et());
4374 
4375  if (!aConv->caloCluster().empty())
4376  h_convEta_[1]->Fill(aConv->caloCluster()[0]->eta());
4377 
4378  float trkProvenance = 3;
4379  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4380  trkProvenance = 0;
4381  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4382  trkProvenance = 1;
4383  if ((tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv") ||
4384  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4385  trkProvenance = 2;
4386  if (trkProvenance == 3) {
4387  }
4388  h_trkProv_[0]->Fill(trkProvenance);
4389  h_trkAlgo_->Fill(tracks[0]->algo());
4390  h_trkAlgo_->Fill(tracks[1]->algo());
4391  h_convAlgo_->Fill(aConv->algo());
4392 
4394  if (nAssT2 == 2) {
4395  if (!isRunCentrally_) {
4396  h_r9_[2][0]->Fill(r9);
4397  if (phoIsInBarrel)
4398  h_r9_[2][1]->Fill(r9);
4399  if (phoIsInEndcap)
4400  h_r9_[2][2]->Fill(r9);
4401  }
4402 
4403  if (!aConv->caloCluster().empty())
4404  h_convEta_[2]->Fill(aConv->caloCluster()[0]->eta());
4405  nRecConvAss_++;
4406 
4411  h_SimConvTwoMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4412 
4413  if (aConv->conversionVertex().isValid()) {
4414  float chi2Prob =
4415  ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4416  if (chi2Prob > 0) {
4421  h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill((*mcPho).fourMomentum().et());
4422  }
4423  if (chi2Prob > 0.0005) {
4428  h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill((*mcPho).fourMomentum().et());
4429  }
4430 
4431  if (chi2Prob > 0.0005) {
4432  if (!aConv->caloCluster().empty()) {
4433  h_convEta_[0]->Fill(aConv->caloCluster()[0]->eta());
4434  h_convPhi_[0]->Fill(aConv->caloCluster()[0]->phi());
4435  h_convERes_[0][0]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4436  }
4437  if (!isRunCentrally_) {
4438  h_r9VsNofTracks_[0][0]->Fill(r9, aConv->nTracks());
4439  h_EtR9Less093_[1][0]->Fill(photonEt);
4440  if (phoIsInBarrel)
4441  h_EtR9Less093_[1][1]->Fill(photonEt);
4442  if (phoIsInEndcap)
4443  h_EtR9Less093_[1][2]->Fill(photonEt);
4444  }
4445  if (phoIsInBarrel) {
4446  if (!aConv->caloCluster().empty())
4447  h_convERes_[0][1]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4448  if (!isRunCentrally_)
4449  h_r9VsNofTracks_[0][1]->Fill(r9, aConv->nTracks());
4450  h_mvaOut_[1]->Fill(like);
4451  }
4452  if (phoIsInEndcap) {
4453  if (!aConv->caloCluster().empty())
4454  h_convERes_[0][2]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4455  if (!isRunCentrally_)
4456  h_r9VsNofTracks_[0][2]->Fill(r9, aConv->nTracks());
4457  h_mvaOut_[2]->Fill(like);
4458  }
4459  }
4460  }
4461 
4463  type = 1;
4464 
4465  h_trkProv_[1]->Fill(trkProvenance);
4466  h_invMass_[type][0]->Fill(invM);
4467 
4468  float eoverp = -99999.;
4469 
4470  if (aConv->conversionVertex().isValid()) {
4471  eoverp = photonE / sqrt(aConv->refittedPairMomentum().Mag2());
4472  //eoverp= aConv->EoverPrefittedTracks();
4473  h_convPtRes_[type][0]->Fill(refPt / (*mcPho).fourMomentum().et());
4474  h_EoverPTracks_[type][0]->Fill(eoverp);
4475  h_PoverETracks_[type][0]->Fill(1. / eoverp);
4476  if (!isRunCentrally_)
4477  h2_EoverEtrueVsEoverP_[0]->Fill(eoverp,
4478  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4479  if (!isRunCentrally_)
4480  h2_PoverPtrueVsEoverP_[0]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4481  if (!isRunCentrally_)
4482  h2_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4483  if (!isRunCentrally_)
4484  h2_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4485  p_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4486  p_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4487  p_eResVsR_->Fill(mcConvR_, photonE / (*mcPho).fourMomentum().e());
4488  if (!isRunCentrally_)
4489  h2_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4490  p_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4491  }
4492 
4493  if (!isRunCentrally_)
4495  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4496  if (!isRunCentrally_)
4498  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4499  p_EoverEtrueVsEta_[0]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4500  p_EoverEtrueVsR_[0]->Fill(mcConvR_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4501 
4502  if (!isRunCentrally_)
4504 
4505  // here original tracks and their inner momentum is considered
4506  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
4507  h_DPhiTracksAtVtx_[type][0]->Fill(dPhiTracksAtVtx);
4508  if (!isRunCentrally_)
4509  h2_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4510  if (!isRunCentrally_)
4511  h2_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4512  p_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4513  p_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4514 
4515  h_DCotTracks_[type][0]->Fill(aConv->pairCotThetaSeparation());
4516  if (!isRunCentrally_)
4517  h2_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4518  if (!isRunCentrally_)
4519  h2_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4520  p_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4521  p_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4522 
4523  if (phoIsInBarrel) {
4524  h_invMass_[type][1]->Fill(invM);
4525  if (aConv->conversionVertex().isValid()) {
4526  h_convPtRes_[type][1]->Fill(refPt / (*mcPho).fourMomentum().et());
4527  h_EoverPTracks_[type][1]->Fill(eoverp);
4528  if (mcConvR_ < 15)
4529  h_EoverPTracks_[0][0]->Fill(eoverp);
4530  if (mcConvR_ > 15 && mcConvR_ < 58)
4531  h_EoverPTracks_[0][1]->Fill(eoverp);
4532  if (mcConvR_ > 58)
4533  h_EoverPTracks_[0][2]->Fill(eoverp);
4534  h_PoverETracks_[type][1]->Fill(1. / eoverp);
4535  if (!isRunCentrally_)
4537  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4538  if (!isRunCentrally_)
4539  h2_PoverPtrueVsEoverP_[1]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4540  }
4541  h_DPhiTracksAtVtx_[type][1]->Fill(dPhiTracksAtVtx);
4542  h_DCotTracks_[type][1]->Fill(aConv->pairCotThetaSeparation());
4543  }
4544 
4545  if (phoIsInEndcap) {
4546  h_invMass_[type][2]->Fill(invM);
4547  if (aConv->conversionVertex().isValid()) {
4548  h_convPtRes_[type][2]->Fill(refPt / (*mcPho).fourMomentum().et());
4549  h_EoverPTracks_[type][2]->Fill(eoverp);
4550  h_PoverETracks_[type][2]->Fill(1. / eoverp);
4551  if (!isRunCentrally_)
4553  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4554  if (!isRunCentrally_)
4555  h2_PoverPtrueVsEoverP_[2]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4556  }
4557  h_DPhiTracksAtVtx_[type][2]->Fill(dPhiTracksAtVtx);
4558  h_DCotTracks_[type][2]->Fill(aConv->pairCotThetaSeparation());
4559  }
4560 
4561  if (aConv->conversionVertex().isValid()) {
4562  h_convVtxdX_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4563  h_convVtxdY_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4564  h_convVtxdZ_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4565  h_convVtxdR_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4566 
4567  if (fabs(mcConvEta_) <= 1.2) {
4568  h_convVtxdX_barrel_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4569  h_convVtxdY_barrel_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4570  h_convVtxdZ_barrel_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4571  h_convVtxdR_barrel_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4572  } else {
4573  h_convVtxdX_endcap_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4574  h_convVtxdY_endcap_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4575  h_convVtxdZ_endcap_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4576  h_convVtxdR_endcap_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4577  }
4578 
4579  h_convVtxdPhi_->Fill(aConv->conversionVertex().position().phi() - mcConvPhi_);
4580  h_convVtxdEta_->Fill(aConv->conversionVertex().position().eta() - mcConvEta_);
4581  if (!isRunCentrally_)
4582  h2_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4583  if (!isRunCentrally_)
4584  h2_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4585  p_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4586  p_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4587  float signX = aConv->refittedPairMomentum().x() / fabs(aConv->refittedPairMomentum().x());
4588  float signY = aConv->refittedPairMomentum().y() / fabs(aConv->refittedPairMomentum().y());
4589  float signZ = aConv->refittedPairMomentum().z() / fabs(aConv->refittedPairMomentum().z());
4590  p_convVtxdXVsX_->Fill(mcConvX_, (aConv->conversionVertex().position().x() - mcConvX_) * signX);
4591  p_convVtxdYVsY_->Fill(mcConvY_, (aConv->conversionVertex().position().y() - mcConvY_) * signY);
4592  p_convVtxdZVsZ_->Fill(mcConvZ_, (aConv->conversionVertex().position().z() - mcConvZ_) * signZ);
4593 
4594  if (!isRunCentrally_)
4595  h2_convVtxRrecVsTrue_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()));
4596 
4597  //float zPV = aConv->zOfPrimaryVertexFromTracks();
4598  float thetaConv = aConv->refittedPairMomentum().Theta();
4599  float thetaSC = matchingPho->superCluster()->position().theta();
4600  float rSC =
4601  sqrt(matchingPho->superCluster()->position().x() * matchingPho->superCluster()->position().x() +
4602  matchingPho->superCluster()->position().y() * matchingPho->superCluster()->position().y());
4603  float zSC = matchingPho->superCluster()->position().z();
4604  float zPV = sqrt(rSC * rSC + zSC * zSC) * sin(thetaConv - thetaSC) / sin(thetaConv);
4605 
4606  h_zPVFromTracks_[0]->Fill(zPV);
4607  h_dzPVFromTracks_[0]->Fill(zPV - (*mcPho).primaryVertex().z());
4608 
4609  if (phoIsInBarrel) {
4610  h_zPVFromTracks_[1]->Fill(zPV);
4611  h_dzPVFromTracks_[1]->Fill(zPV - (*mcPho).primaryVertex().z());
4612  } else if (phoIsInEndcap) {
4613  h_zPVFromTracks_[2]->Fill(zPV);
4614  h_dzPVFromTracks_[2]->Fill(zPV - (*mcPho).primaryVertex().z());
4615  } else if (phoIsInEndcapP) {
4616  h_zPVFromTracks_[3]->Fill(zPV);
4617  h_dzPVFromTracks_[3]->Fill(zPV - (*mcPho).primaryVertex().z());
4618  } else if (phoIsInEndcapM) {
4619  h_zPVFromTracks_[4]->Fill(zPV);
4620  h_dzPVFromTracks_[4]->Fill(zPV - (*mcPho).primaryVertex().z());
4621  }
4622 
4623  p_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4624  p_dzPVVsEta_->Fill(mcConvEta_, zPV - (*mcPho).primaryVertex().z());
4625  if (!isRunCentrally_)
4626  h2_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4627  }
4628 
4629  float dPhiTracksAtEcal = -99;
4630  float dEtaTracksAtEcal = -99;
4631  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].isNonnull() &&
4632  aConv->bcMatchingWithTracks()[1].isNonnull()) {
4634  float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
4635  float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
4636  float recoEta1 = aConv->ecalImpactPosition()[0].eta();
4637  float recoEta2 = aConv->ecalImpactPosition()[1].eta();
4638  // unused float bcPhi1 = aConv->bcMatchingWithTracks()[0]->phi();
4639  // unused float bcPhi2 = aConv->bcMatchingWithTracks()[1]->phi();
4640  // unused float bcEta1 = aConv->bcMatchingWithTracks()[0]->eta();
4641  // unused float bcEta2 = aConv->bcMatchingWithTracks()[1]->eta();
4642  recoPhi1 = phiNormalization(recoPhi1);
4643  recoPhi2 = phiNormalization(recoPhi2);
4644  dPhiTracksAtEcal = recoPhi1 - recoPhi2;
4645  dPhiTracksAtEcal = phiNormalization(dPhiTracksAtEcal);
4646  dEtaTracksAtEcal = recoEta1 - recoEta2;
4647 
4648  h_DPhiTracksAtEcal_[type][0]->Fill(fabs(dPhiTracksAtEcal));
4649  if (!isRunCentrally_)
4650  h2_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4651  if (!isRunCentrally_)
4652  h2_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4653  p_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4654  p_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4655 
4656  h_DEtaTracksAtEcal_[type][0]->Fill(dEtaTracksAtEcal);
4657 
4658  if (phoIsInBarrel) {
4659  h_DPhiTracksAtEcal_[type][1]->Fill(fabs(dPhiTracksAtEcal));
4660  h_DEtaTracksAtEcal_[type][1]->Fill(dEtaTracksAtEcal);
4661  }
4662  if (phoIsInEndcap) {
4663  h_DPhiTracksAtEcal_[type][2]->Fill(fabs(dPhiTracksAtEcal));
4664  h_DEtaTracksAtEcal_[type][2]->Fill(dEtaTracksAtEcal);
4665  }
4666  }
4668  for (unsigned int i = 0; i < tracks.size(); i++) {
4670  itAss = myAss.find(tfrb.get());
4671  if (itAss == myAss.end())
4672  continue;
4673 
4674  float trkProvenance = 3;
4675  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4676  trkProvenance = 0;
4677  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4678  trkProvenance = 1;
4679  if ((tracks[0]->algoName() == "outInEcalSeededConv" &&
4680  tracks[1]->algoName() == "inOutEcalSeededConv") ||
4681  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4682  trkProvenance = 2;
4683 
4684  if (!isRunCentrally_)
4686  if (!isRunCentrally_)
4688  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4689  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4692  if (!isRunCentrally_)
4694  if (!isRunCentrally_)
4698 
4699  float simPt = sqrt(((*itAss).second)->momentum().perp2());
4700  // float recPt = sqrt( aConv->tracks()[i]->innerMomentum().Perp2() ) ;
4701  float refPt = -9999.;
4702  float px = 0, py = 0;
4703 
4704  if (aConv->conversionVertex().isValid()) {
4705  reco::Track refTrack = aConv->conversionVertex().refittedTracks()[i];
4706  px = refTrack.momentum().x();
4707  py = refTrack.momentum().y();
4708  refPt = sqrt(px * px + py * py);
4709 
4710  float ptres = refPt - simPt;
4711  // float pterror = aConv->tracks()[i]->ptError();
4712  float pterror = aConv->conversionVertex().refittedTracks()[i].ptError();
4713  if (!isRunCentrally_) {
4714  h2_PtRecVsPtSim_[0]->Fill(simPt, refPt);
4715  if (trkProvenance == 3)
4716  h2_PtRecVsPtSimMixProv_->Fill(simPt, refPt);
4717  }
4718 
4719  h_TkPtPull_[0]->Fill(ptres / pterror);
4720  if (!isRunCentrally_)
4721  h2_TkPtPull_[0]->Fill(mcEta_, ptres / pterror);
4722 
4723  h_TkD0_[0]->Fill(tracks[i]->d0() * tracks[i]->charge());
4724 
4725  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" )
4726  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4727  hBCEnergyOverTrackPout_[0]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4728  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4729 
4730  if (phoIsInBarrel) {
4731  h_TkD0_[1]->Fill(tracks[i]->d0() * tracks[i]->charge());
4732  h_TkPtPull_[1]->Fill(ptres / pterror);
4733  if (!isRunCentrally_)
4734  h2_PtRecVsPtSim_[1]->Fill(simPt, refPt);
4735  //if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4736  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4737  hBCEnergyOverTrackPout_[1]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4738  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4739  }
4740  if (phoIsInEndcap) {
4741  h_TkD0_[2]->Fill(tracks[i]->d0() * tracks[i]->charge());
4742  h_TkPtPull_[2]->Fill(ptres / pterror);
4743  if (!isRunCentrally_)
4744  h2_PtRecVsPtSim_[2]->Fill(simPt, refPt);
4745  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4746  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4747  hBCEnergyOverTrackPout_[2]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4748  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4749  }
4750  }
4751 
4752  } // end loop over track
4753  } // end analysis of two associated tracks
4754  } // end analysis of two tracks
4755 
4756  } // loop over conversions
4757 
4759 
4760  reco::ConversionRefVector conversionsOneLeg = matchingPho->conversionsOneLeg();
4761  if (!atLeastOneRecoTwoTrackConversion) {
4762  for (unsigned int iConv = 0; iConv < conversionsOneLeg.size(); iConv++) {
4763  reco::ConversionRef aConv = conversionsOneLeg[iConv];
4764  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4765 
4766  h_trkAlgo_->Fill(tracks[0]->algo());
4767  h_convAlgo_->Fill(aConv->algo());
4768 
4769  int nAssT = 0;
4770  std::map<const reco::Track*, TrackingParticleRef> myAss;
4771  for (unsigned int i = 0; i < tracks.size(); i++) {
4772  p_nHitsVsEtaSL_[0]->Fill(mcEta_, float(tracks[0]->numberOfValidHits() - 0.0001));
4773  p_nHitsVsRSL_[0]->Fill(mcConvR_, float(tracks[0]->numberOfValidHits() - 0.0001));
4775 
4776  float eoverp = photonE / tracks[0]->p();
4777  h_EoverP_SL_[0]->Fill(eoverp);
4778  if (phoIsInBarrel) {
4779  h_EoverP_SL_[1]->Fill(eoverp);
4780  } else {
4781  h_EoverP_SL_[2]->Fill(eoverp);
4782  }
4783  h_convSLVtxRvsZ_[0]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4784  if (fabs(mcEta_) <= 1.) {
4785  h_convSLVtxRvsZ_[1]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4786  } else {
4787  h_convSLVtxRvsZ_[2]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4788  }
4789 
4792  tc.push_back(tfrb);
4793  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4794  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4795  int tpI = 0;
4796 
4797  if (q.find(theConvTP_[0]) != q.end()) {
4798  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4799  } else if (q.find(theConvTP_[1]) != q.end()) {
4800  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4801  tpI = 1;
4802  }
4803 
4804  if (trackV.empty())
4805  continue;
4806  edm::RefToBase<reco::Track> tr = trackV.front().first;
4807  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4808  nAssT++;
4809  }
4810 
4811  if (nAssT > 0) {
4816  h_SimConvOneMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4817  }
4818  } // End loop over single leg conversions
4819  }
4820 
4821  } // if !fastSim
4822  } // End loop over generated particles
4823  } // End loop over simulated Photons
4824 
4825  if (!isRunCentrally_) {
4826  h_nSimPho_[0]->Fill(float(nSimPho_[0]));
4827  h_nSimPho_[1]->Fill(float(nSimPho_[1]));
4828  h_nSimConv_[0]->Fill(float(nSimConv_[0]));
4829  h_nSimConv_[1]->Fill(float(nSimConv_[1]));
4830  }
4831 
4832  if (!fastSim_) {
4834  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
4835  iPho++) {
4836  reco::Photon aPho = reco::Photon(*iPho);
4837  // float et= aPho.superCluster()->energy()/cosh( aPho.superCluster()->eta()) ;
4839  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4840  reco::ConversionRef aConv = conversions[iConv];
4841  double like = aConv->MVAout();
4842  if (like < likelihoodCut_)
4843  continue;
4844  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4845  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4846  if (tracks.size() < 2)
4847  continue;
4848 
4849  RefToBase<reco::Track> tk1 = aConv->tracks().front();
4850  RefToBase<reco::Track> tk2 = aConv->tracks().back();
4852  tc1.push_back(tk1);
4853  tc2.push_back(tk2);
4854 
4855  bool phoIsInBarrel = false;
4856  bool phoIsInEndcap = false;
4857  if (fabs(aPho.superCluster()->position().eta()) < 1.479) {
4858  phoIsInBarrel = true;
4859  } else {
4860  phoIsInEndcap = true;
4861  }
4862 
4863  if (dCotCutOn_) {
4864  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4865  continue;
4866  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4867  continue;
4868  }
4869 
4870  h_RecoConvTwoTracks_[0]->Fill(aPho.eta());
4871  h_RecoConvTwoTracks_[1]->Fill(aPho.phi());
4872  if (aConv->conversionVertex().isValid())
4873  h_RecoConvTwoTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4874  h_RecoConvTwoTracks_[3]->Fill(aConv->conversionVertex().position().z());
4875  h_RecoConvTwoTracks_[4]->Fill(aPho.et());
4876 
4877  int nAssT2 = 0;
4878  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
4879  // mcConvPt_= (*mcPho).fourMomentum().et();
4880  float mcPhi = (*mcPho).fourMomentum().phi();
4881  //simPV_Z = (*mcPho).primaryVertex().z();
4882  mcPhi_ = phiNormalization(mcPhi);
4883  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
4884  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
4885  //mcConvR_= (*mcPho).vertex().perp();
4886  //mcConvX_= (*mcPho).vertex().x();
4887  //mcConvY_= (*mcPho).vertex().y();
4888  //mcConvZ_= (*mcPho).vertex().z();
4889  //mcConvEta_= (*mcPho).vertex().eta();
4890  //mcConvPhi_= (*mcPho).vertex().phi();
4891  if (fabs(mcEta_) > END_HI)
4892  continue;
4893  // if (mcConvPt_<minPhoPtForPurity) continue;
4894  //if (fabs(mcEta_)>maxPhoEtaForPurity) continue;
4895  //if (fabs(mcConvZ_)>maxPhoZForPurity) continue;
4896  //if (mcConvR_>maxPhoRForEffic) continue;
4897 
4898  if ((*mcPho).isAConversion() != 1)
4899  continue;
4900  if (!((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
4901  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
4902  continue;
4903 
4904  theConvTP_.clear();
4905  for (size_t i = 0; i < trackingParticles.size(); ++i) {
4906  TrackingParticleRef tp(ElectronTPHandle, i);
4907  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
4908  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
4910  }
4911  }
4912 
4913  if (theConvTP_.size() < 2)
4914  continue;
4915 
4916  reco::RecoToSimCollection const& p1 = trackAssociator->associateRecoToSim(tc1, theConvTP_);
4917  reco::RecoToSimCollection const& p2 = trackAssociator->associateRecoToSim(tc2, theConvTP_);
4918  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV1, trackV2;
4919 
4920  auto itP1 = p1.find(tk1);
4921  auto itP2 = p2.find(tk2);
4922  bool good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4923  if (not good) {
4924  itP1 = p1.find(tk2);
4925  itP2 = p2.find(tk1);
4926  good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4927  }
4928  if (good) {
4929  std::vector<std::pair<TrackingParticleRef, double> > const& tp1 = itP1->val;
4930  std::vector<std::pair<TrackingParticleRef, double> > const& tp2 = itP2->val;
4931 
4932  TrackingParticleRef tpr1 = tp1.front().first;
4933  TrackingParticleRef tpr2 = tp2.front().first;
4934 
4935  if (abs(tpr1->pdgId()) == 11 && abs(tpr2->pdgId()) == 11) {
4936  if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
4937  (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
4938  if (tpr1->parentVertex().key() == tpr2->parentVertex().key() &&
4939  ((*tpr1->parentVertex()->sourceTracks_begin())->pdgId() == 22)) {
4940  nAssT2 = 2;
4941  break;
4942  }
4943  }
4944  }
4945  }
4946 
4947  } // end loop over simulated photons
4948 
4949  if (nAssT2 == 2) {
4950  h_RecoConvTwoMTracks_[0]->Fill(aPho.eta());
4951  h_RecoConvTwoMTracks_[1]->Fill(aPho.phi());
4952  if (aConv->conversionVertex().isValid())
4953  h_RecoConvTwoMTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4954  h_RecoConvTwoMTracks_[3]->Fill(aConv->conversionVertex().position().z());
4955  h_RecoConvTwoMTracks_[4]->Fill(aPho.et());
4956  }
4957 
4959  if (aConv->conversionVertex().isValid()) {
4960  float chi2Prob = ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4961  double convR = sqrt(aConv->conversionVertex().position().perp2());
4962  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
4963  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
4964 
4965  if (scalar < 0)
4966  convR = -sqrt(aConv->conversionVertex().position().perp2());
4967  h_convVtxRvsZ_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
4968  sqrt(aConv->conversionVertex().position().perp2()));
4969 
4970  if (!aConv->caloCluster().empty()) {
4971  if (!isRunCentrally_)
4972  h2_etaVsRreco_[0]->Fill(aConv->caloCluster()[0]->eta(),
4973  sqrt(aConv->conversionVertex().position().perp2()));
4974  if (fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
4975  h_convVtxYvsX_->Fill(aConv->conversionVertex().position().y(), aConv->conversionVertex().position().x());
4976  h_convVtxRvsZ_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4977 
4978  if (!isRunCentrally_) {
4979  h_convVtxYvsX_zoom_[0]->Fill(aConv->conversionVertex().position().y(),
4980  aConv->conversionVertex().position().x());
4981  h_convVtxYvsX_zoom_[1]->Fill(aConv->conversionVertex().position().y(),
4982  aConv->conversionVertex().position().x());
4983  h_convVtxRvsZ_zoom_[0]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4984  h_convVtxRvsZ_zoom_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4985  }
4986  }
4987  if (fabs(aConv->caloCluster()[0]->eta()) > 1.)
4988  h_convVtxRvsZ_[2]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4989  }
4990 
4991  h_vtxChi2Prob_[0]->Fill(chi2Prob);
4992  h_vtxChi2_[0]->Fill(aConv->conversionVertex().normalizedChi2());
4993  if (phoIsInBarrel) {
4994  h_vtxChi2Prob_[1]->Fill(chi2Prob);
4995  h_vtxChi2_[1]->Fill(aConv->conversionVertex().normalizedChi2());
4996  }
4997  if (phoIsInEndcap) {
4998  h_vtxChi2Prob_[2]->Fill(chi2Prob);
4999  h_vtxChi2_[2]->Fill(aConv->conversionVertex().normalizedChi2());
5000  }
5001 
5002  } // end conversion vertex valid
5003  } // end loop over reco conversions
5004  } // end loop on all reco photons
5005  } // if !fastSim
5006 
5008  float nPho = 0;
5009  for (reco::GenJetCollection::const_iterator genJetIter = genJetCollection.begin();
5010  genJetIter != genJetCollection.end();
5011  ++genJetIter) {
5012  if (genJetIter->pt() < minPhoEtCut_)
5013  continue;
5014  if (fabs(genJetIter->eta()) > 2.5)
5015  continue;
5016 
5017  float mcJetPhi = genJetIter->phi();
5018  mcJetPhi_ = phiNormalization(mcJetPhi);
5019  mcJetEta_ = genJetIter->eta();
5020  float mcJetPt = genJetIter->pt();
5021 
5022  h_SimJet_[0]->Fill(mcJetEta_);
5023  h_SimJet_[1]->Fill(mcJetPhi_);
5024  h_SimJet_[2]->Fill(mcJetPt);
5025 
5026  std::vector<reco::Photon> thePhotons;
5027  bool matched = false;
5028 
5029  reco::Photon matchingPho;
5030  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
5031  iPho++) {
5032  reco::Photon aPho = reco::Photon(*iPho);
5033  float phiPho = aPho.phi();
5034  float etaPho = aPho.eta();
5035  float deltaPhi = phiPho - mcJetPhi_;
5036  float deltaEta = etaPho - mcJetEta_;
5037  if (deltaPhi > pi)
5038  deltaPhi -= twopi;
5039  if (deltaPhi < -pi)
5040  deltaPhi += twopi;
5041  deltaPhi = pow(deltaPhi, 2);
5042  deltaEta = pow(deltaEta, 2);
5043  float delta = sqrt(deltaPhi + deltaEta);
5044  if (delta < 0.3) {
5045  matchingPho = *iPho;
5046  matched = true;
5047  }
5048  } // end loop over reco photons
5049 
5050  if (!matched)
5051  continue;
5052  nPho++;
5053 
5056  h_MatchedSimJet_[2]->Fill(mcJetPt);
5057 
5058  bool phoIsInBarrel = false;
5059  bool phoIsInEndcap = false;
5060  if (fabs(matchingPho.superCluster()->position().eta()) < 1.479) {
5061  phoIsInBarrel = true;
5062  } else {
5063  phoIsInEndcap = true;
5064  }
5065  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
5066  if (phoIsInBarrel) {
5067  // Get handle to rec hits ecal barrel
5068  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
5069  if (!ecalRecHitHandle.isValid()) {
5070  Labels l;
5072  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5073  return;
5074  }
5075 
5076  } else if (phoIsInEndcap) {
5077  // Get handle to rec hits ecal encap
5078  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
5079  if (!ecalRecHitHandle.isValid()) {
5080  Labels l;
5082  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5083  return;
5084  }
5085  }
5086 
5087  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
5088  float photonE = matchingPho.energy();
5089  float photonEt = matchingPho.et();
5090  float r9 = matchingPho.r9();
5091  float r1 = matchingPho.r1x5();
5092  float r2 = matchingPho.r2x5();
5093  float sigmaIetaIeta = matchingPho.sigmaIetaIeta();
5094  float hOverE = matchingPho.hadronicOverEm();
5095  float ecalIso = matchingPho.ecalRecHitSumEtConeDR04();
5096  float hcalIso = matchingPho.hcalTowerSumEtConeDR04();
5097  float trkIso = matchingPho.trkSumPtSolidConeDR04();
5098  float nIsoTrk = matchingPho.nTrkSolidConeDR04();
5099  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
5100 
5101  bool atLeastOneDeadChannel = false;
5102  for (reco::CaloCluster_iterator bcIt = matchingPho.superCluster()->clustersBegin();
5103  bcIt != matchingPho.superCluster()->clustersEnd();
5104  ++bcIt) {
5105  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
5106  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
5107  ++it) {
5108  if (rhIt->first == (*it).id()) {
5109  if ((*it).recoFlag() == 9) {
5110  atLeastOneDeadChannel = true;
5111  break;
5112  }
5113  }
5114  }
5115  }
5116  }
5117 
5118  if (atLeastOneDeadChannel) {
5121  h_MatchedSimJetBadCh_[2]->Fill(mcJetPt);
5122  }
5123 
5124  h_scBkgEta_->Fill(matchingPho.superCluster()->eta());
5125  h_scBkgPhi_->Fill(matchingPho.superCluster()->phi());
5126  h_scBkgE_[0]->Fill(matchingPho.superCluster()->energy());
5127  h_scBkgEt_[0]->Fill(matchingPho.superCluster()->energy() / cosh(matchingPho.superCluster()->eta()));
5128  //
5129  h_phoBkgEta_->Fill(matchingPho.eta());
5130  h_phoBkgPhi_->Fill(matchingPho.phi());
5131  h_phoBkgE_[0]->Fill(photonE);
5132  h_phoBkgEt_[0]->Fill(photonEt);
5133  h_phoBkgDEta_->Fill(matchingPho.eta() - mcJetEta_);
5134  h_phoBkgDPhi_->Fill(matchingPho.phi() - mcJetPhi_);
5135 
5136  h_r9Bkg_[0]->Fill(r9);
5137  h_r1Bkg_[0]->Fill(r1);
5138  h_r2Bkg_[0]->Fill(r2);
5139  h_sigmaIetaIetaBkg_[0]->Fill(sigmaIetaIeta);
5140  h_hOverEBkg_[0]->Fill(hOverE);
5141  h_ecalRecHitSumEtConeDR04Bkg_[0]->Fill(ecalIso);
5142  h_hcalTowerSumEtConeDR04Bkg_[0]->Fill(hcalIso);
5143  h_isoTrkSolidConeDR04Bkg_[0]->Fill(trkIso);
5144  h_nTrkSolidConeDR04Bkg_[0]->Fill(nIsoTrk);
5145 
5146  if (!isRunCentrally_) {
5148  h2_r9VsEtBkg_->Fill(mcJetPt, r9);
5150  h2_r1VsEtBkg_->Fill(mcJetPt, r1);
5152  h2_r2VsEtBkg_->Fill(mcJetPt, r2);
5153  h2_sigmaIetaIetaVsEtaBkg_->Fill(mcJetEta_, sigmaIetaIeta);
5154  h2_sigmaIetaIetaVsEtBkg_[0]->Fill(mcJetPt, sigmaIetaIeta);
5156  h2_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5157 
5159  p_r1VsEtBkg_->Fill(mcJetPt, r1);
5161  p_r2VsEtBkg_->Fill(mcJetPt, r2);
5162  p_sigmaIetaIetaVsEtaBkg_->Fill(mcJetEta_, sigmaIetaIeta);
5163  p_sigmaIetaIetaVsEtBkg_[0]->Fill(mcJetPt, sigmaIetaIeta);
5165  p_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5166  }
5167 
5168  if (!isRunCentrally_) {
5170  h2_ecalRecHitSumEtConeDR04VsEtBkg_[0]->Fill(mcJetPt, ecalIso);
5172  h2_hcalTowerSumEtConeDR04VsEtBkg_[0]->Fill(mcJetPt, hcalIso);
5174  p_ecalRecHitSumEtConeDR04VsEtBkg_[0]->Fill(mcJetPt, ecalIso);
5176  p_hcalTowerSumEtConeDR04VsEtBkg_[0]->Fill(mcJetPt, hcalIso);
5178  p_isoTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, trkIso);
5180  p_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5182  h2_isoTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, trkIso);
5184  h2_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5185  }
5186 
5187  if (phoIsInBarrel) {
5188  h_r9Bkg_[1]->Fill(r9);
5189  h_r1Bkg_[1]->Fill(r1);
5190  h_r2Bkg_[1]->Fill(r2);
5191 
5192  h_sigmaIetaIetaBkg_[1]->Fill(sigmaIetaIeta);
5193  h_hOverEBkg_[1]->Fill(hOverE);
5194  h_ecalRecHitSumEtConeDR04Bkg_[1]->Fill(ecalIso);
5195  h_hcalTowerSumEtConeDR04Bkg_[1]->Fill(hcalIso);
5196  h_isoTrkSolidConeDR04Bkg_[1]->Fill(trkIso);
5197  h_nTrkSolidConeDR04Bkg_[1]->Fill(nIsoTrk);
5198 
5199  if (!isRunCentrally_) {
5200  h2_sigmaIetaIetaVsEtBkg_[1]->Fill(mcJetPt, sigmaIetaIeta);
5201  h2_isoTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, trkIso);
5202  h2_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5203  h2_ecalRecHitSumEtConeDR04VsEtBkg_[1]->Fill(mcJetPt, ecalIso);
5204  h2_hcalTowerSumEtConeDR04VsEtBkg_[1]->Fill(mcJetPt, hcalIso);
5205  p_sigmaIetaIetaVsEtBkg_[1]->Fill(mcJetPt, sigmaIetaIeta);
5206  p_ecalRecHitSumEtConeDR04VsEtBkg_[1]->Fill(mcJetPt, ecalIso);
5207  p_hcalTowerSumEtConeDR04VsEtBkg_[1]->Fill(mcJetPt, hcalIso);
5208  p_isoTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, trkIso);
5209  p_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5210  }
5211  } else if (phoIsInEndcap) {
5212  h_r9Bkg_[2]->Fill(r9);
5213  h_r1Bkg_[2]->Fill(r1);
5214  h_r2Bkg_[2]->Fill(r2);
5215 
5216  h_sigmaIetaIetaBkg_[2]->Fill(sigmaIetaIeta);
5217  h_hOverEBkg_[2]->Fill(hOverE);
5218  h_ecalRecHitSumEtConeDR04Bkg_[2]->Fill(ecalIso);
5219  h_hcalTowerSumEtConeDR04Bkg_[2]->Fill(hcalIso);
5220  h_isoTrkSolidConeDR04Bkg_[2]->Fill(trkIso);
5221  h_nTrkSolidConeDR04Bkg_[2]->Fill(nIsoTrk);
5222 
5223  if (!isRunCentrally_) {
5224  h2_sigmaIetaIetaVsEtBkg_[2]->Fill(mcJetPt, sigmaIetaIeta);
5225  h2_isoTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, trkIso);
5226  h2_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5227  h2_ecalRecHitSumEtConeDR04VsEtBkg_[2]->Fill(mcJetPt, ecalIso);
5228  h2_hcalTowerSumEtConeDR04VsEtBkg_[2]->Fill(mcJetPt, hcalIso);
5229  p_sigmaIetaIetaVsEtBkg_[2]->Fill(mcJetPt, sigmaIetaIeta);
5230  p_ecalRecHitSumEtConeDR04VsEtBkg_[2]->Fill(mcJetPt, ecalIso);
5231  p_hcalTowerSumEtConeDR04VsEtBkg_[2]->Fill(mcJetPt, hcalIso);
5232  p_isoTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, trkIso);
5233  p_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5234  }
5235  }
5236 
5237  if (!fastSim_) {
5240  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
5241  reco::ConversionRef aConv = conversions[iConv];
5242  //std::vector<reco::TrackRef> tracks = aConv->tracks();
5243  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
5244  double like = aConv->MVAout();
5245  if (like < likelihoodCut_)
5246  continue;
5247  if (tracks.size() < 2)
5248  continue;
5249  if (!aConv->caloCluster().empty()) {
5250  h_convEtaBkg_->Fill(aConv->caloCluster()[0]->eta());
5251  h_convPhiBkg_->Fill(aConv->caloCluster()[0]->phi());
5252  }
5253  h_mvaOutBkg_[0]->Fill(like);
5254  float eoverp = aConv->EoverP();
5255  h_EoverPTracksBkg_[0]->Fill(eoverp);
5256  h_PoverETracksBkg_[0]->Fill(1. / eoverp);
5257  h_DCotTracksBkg_[0]->Fill(aConv->pairCotThetaSeparation());
5258  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
5259  h_DPhiTracksAtVtxBkg_[0]->Fill(dPhiTracksAtVtx);
5260 
5261  if (phoIsInBarrel) {
5262  h_mvaOutBkg_[1]->Fill(like);
5263  h_EoverPTracksBkg_[1]->Fill(eoverp);
5264  h_PoverETracksBkg_[1]->Fill(1. / eoverp);
5265  h_DCotTracksBkg_[1]->Fill(aConv->pairCotThetaSeparation());
5266  h_DPhiTracksAtVtxBkg_[1]->Fill(dPhiTracksAtVtx);
5267  } else if (phoIsInEndcap) {
5268  h_mvaOutBkg_[2]->Fill(like);
5269  h_EoverPTracksBkg_[2]->Fill(eoverp);
5270  h_PoverETracksBkg_[2]->Fill(1. / eoverp);
5271  h_DCotTracksBkg_[2]->Fill(aConv->pairCotThetaSeparation());
5272  h_DPhiTracksAtVtxBkg_[2]->Fill(dPhiTracksAtVtx);
5273  }
5274 
5275  if (aConv->conversionVertex().isValid()) {
5276  double convR = sqrt(aConv->conversionVertex().position().perp2());
5277  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
5278  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
5279  if (scalar < 0)
5280  convR = -sqrt(aConv->conversionVertex().position().perp2());
5281 
5282  if (!isRunCentrally_) {
5283  h_convVtxRvsZBkg_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
5284  sqrt(aConv->conversionVertex().position().perp2()));
5285  if (!aConv->caloCluster().empty() && fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
5286  h_convVtxYvsXBkg_->Fill(aConv->conversionVertex().position().y(),
5287  aConv->conversionVertex().position().x());
5288  h_convVtxRvsZBkg_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
5289  }
5290  }
5291 
5292  } // end vertex valid
5293 
5294  } // end loop over conversions
5295  } // if !fastSim
5296  } // end loop over sim jets
5297 
5299  for (reco::GenParticleCollection::const_iterator mcIter = genParticles->begin(); mcIter != genParticles->end();
5300  mcIter++) {
5301  if (!(mcIter->pdgId() == 22))
5302  continue;
5303  if (mcIter->mother() != nullptr and !(mcIter->mother()->pdgId() == 25))
5304  continue;
5305  if (fabs(mcIter->eta()) > 2.5)
5306  continue;
5307 
5308  float mcPhi = mcIter->phi();
5309  float mcEta = mcIter->eta();
5310  //mcEta = etaTransformation(mcEta, (*mcPho).primaryVertex().z() );
5311  float mcEnergy = mcIter->energy();
5312 
5313  double dR = 9999999.;
5314  float minDr = 10000.;
5315  int iMatch = -1;
5316  bool matched = false;
5317 
5318  for (unsigned int ipho = 0; ipho < photonHandle->size(); ipho++) {
5319  reco::PhotonRef pho(reco::PhotonRef(photonHandle, ipho));
5320 
5321  double dphi = pho->phi() - mcPhi;
5322  if (std::fabs(dphi) > CLHEP::pi) {
5323  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
5324  }
5325  double deta = pho->superCluster()->position().eta() - mcEta;
5326 
5327  dR = sqrt(pow((deta), 2) + pow(dphi, 2));
5328  if (dR < 0.1 && dR < minDr) {
5329  minDr = dR;
5330  iMatch = ipho;
5331  }
5332  }
5333 
5334  if (iMatch > -1)
5335  matched = true;
5336  if (!matched)
5337  continue;
5338 
5339  reco::PhotonRef matchingPho(reco::PhotonRef(photonHandle, iMatch));
5340 
5341  bool phoIsInBarrel = false;
5342  bool phoIsInEndcap = false;
5343 
5344  float phoEta = matchingPho->superCluster()->position().eta();
5345  if (fabs(phoEta) < 1.479) {
5346  phoIsInBarrel = true;
5347  } else {
5348  phoIsInEndcap = true;
5349  }
5350 
5351  float photonE = matchingPho->energy();
5352  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
5353  float photonEt = matchingPho->energy() / cosh(matchingPho->eta());
5354  // float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
5355  //float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
5356  float r9 = matchingPho->r9();
5357  float full5x5_r9 = matchingPho->full5x5_r9();
5358  float r1 = matchingPho->r1x5();
5359  float r2 = matchingPho->r2x5();
5360  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
5361  float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
5362  float hOverE = matchingPho->hadronicOverEm();
5363  float newhOverE = matchingPho->hadTowOverEm();
5364  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
5365  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
5366  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
5367  float trkIso = matchingPho->trkSumPtSolidConeDR04();
5368  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
5369  // PF related quantities
5370  float chargedHadIso = matchingPho->chargedHadronIso();
5371  float neutralHadIso = matchingPho->neutralHadronIso();
5372  float photonIso = matchingPho->photonIso();
5373  // float etOutsideMustache = matchingPho->etOutsideMustache();
5374  // int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
5375  //float pfMVA = matchingPho->pfMVA();
5376 
5377  if ((photonEt > 14 && newhOverE < 0.15) || (photonEt > 10 && photonEt < 14 && chargedHadIso < 10)) {
5378  h_scEta_miniAOD_[0]->Fill(matchingPho->superCluster()->eta());
5379  h_scPhi_miniAOD_[0]->Fill(matchingPho->superCluster()->phi());
5380 
5381  h_phoE_miniAOD_[0][0]->Fill(photonE);
5382  h_phoEt_miniAOD_[0][0]->Fill(photonEt);
5383 
5384  h_phoERes_miniAOD_[0][0]->Fill(photonE / mcEnergy);
5385  h_phoSigmaEoE_miniAOD_[0][0]->Fill(sigmaEoE);
5386 
5387  h_r9_miniAOD_[0][0]->Fill(r9);
5388  h_full5x5_r9_miniAOD_[0][0]->Fill(full5x5_r9);
5389  h_r1_miniAOD_[0][0]->Fill(r1);
5390  h_r2_miniAOD_[0][0]->Fill(r2);
5391 
5392  h_sigmaIetaIeta_miniAOD_[0][0]->Fill(sigmaIetaIeta);
5393  h_full5x5_sigmaIetaIeta_miniAOD_[0][0]->Fill(full5x5_sieie);
5394  h_hOverE_miniAOD_[0][0]->Fill(hOverE);
5395  h_newhOverE_miniAOD_[0][0]->Fill(newhOverE);
5396 
5397  h_ecalRecHitSumEtConeDR04_miniAOD_[0][0]->Fill(ecalIso);
5398  h_hcalTowerSumEtConeDR04_miniAOD_[0][0]->Fill(hcalIso);
5399  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][0]->Fill(newhcalIso);
5400  h_isoTrkSolidConeDR04_miniAOD_[0][0]->Fill(trkIso);
5401  h_nTrkSolidConeDR04_miniAOD_[0][0]->Fill(nIsoTrk);
5402 
5403  //
5404  h_chHadIso_miniAOD_[0]->Fill(chargedHadIso);
5405  h_nHadIso_miniAOD_[0]->Fill(neutralHadIso);
5407 
5408  //
5409  if (phoIsInBarrel) {
5410  h_phoE_miniAOD_[0][1]->Fill(photonE);
5411  h_phoEt_miniAOD_[0][1]->Fill(photonEt);
5412 
5413  h_phoERes_miniAOD_[0][1]->Fill(photonE / mcEnergy);
5414  h_phoSigmaEoE_miniAOD_[0][1]->Fill(sigmaEoE);
5415 
5416  h_r9_miniAOD_[0][1]->Fill(r9);
5417  h_full5x5_r9_miniAOD_[0][1]->Fill(full5x5_r9);
5418  h_r1_miniAOD_[0][1]->Fill(r1);
5419  h_r2_miniAOD_[0][1]->Fill(r2);
5420  h_sigmaIetaIeta_miniAOD_[0][1]->Fill(sigmaIetaIeta);
5421  h_full5x5_sigmaIetaIeta_miniAOD_[0][1]->Fill(full5x5_sieie);
5422  h_hOverE_miniAOD_[0][1]->Fill(hOverE);
5423  h_newhOverE_miniAOD_[0][1]->Fill(newhOverE);
5424  h_ecalRecHitSumEtConeDR04_miniAOD_[0][1]->Fill(ecalIso);
5425  h_hcalTowerSumEtConeDR04_miniAOD_[0][1]->Fill(hcalIso);
5426  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][1]->Fill(newhcalIso);
5427  h_isoTrkSolidConeDR04_miniAOD_[0][1]->Fill(trkIso);
5428  h_nTrkSolidConeDR04_miniAOD_[0][1]->Fill(nIsoTrk);
5429  h_chHadIso_miniAOD_[1]->Fill(chargedHadIso);
5430  h_nHadIso_miniAOD_[1]->Fill(neutralHadIso);
5432  }
5433  if (phoIsInEndcap) {
5434  h_phoE_miniAOD_[0][2]->Fill(photonE);
5435  h_phoEt_miniAOD_[0][2]->Fill(photonEt);
5436 
5437  h_phoERes_miniAOD_[0][2]->Fill(photonE / mcEnergy);
5438  h_phoSigmaEoE_miniAOD_[0][2]->Fill(sigmaEoE);
5439  h_r9_miniAOD_[0][2]->Fill(r9);
5440  h_full5x5_r9_miniAOD_[0][2]->Fill(full5x5_r9);
5441  h_r1_miniAOD_[0][2]->Fill(r1);
5442  h_r2_miniAOD_[0][2]->Fill(r2);
5443  h_sigmaIetaIeta_miniAOD_[0][2]->Fill(sigmaIetaIeta);
5444  h_full5x5_sigmaIetaIeta_miniAOD_[0][2]->Fill(full5x5_sieie);
5445  h_hOverE_miniAOD_[0][2]->Fill(hOverE);
5446  h_newhOverE_miniAOD_[0][2]->Fill(newhOverE);
5447  h_ecalRecHitSumEtConeDR04_miniAOD_[0][2]->Fill(ecalIso);
5448  h_hcalTowerSumEtConeDR04_miniAOD_[0][2]->Fill(hcalIso);
5449  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][2]->Fill(newhcalIso);
5450  h_isoTrkSolidConeDR04_miniAOD_[0][2]->Fill(trkIso);
5451  h_nTrkSolidConeDR04_miniAOD_[0][2]->Fill(nIsoTrk);
5452  h_chHadIso_miniAOD_[2]->Fill(chargedHadIso);
5453  h_nHadIso_miniAOD_[2]->Fill(neutralHadIso);
5455  }
5456  } // end histos for comparing with miniAOD
5457 
5458  } // end loop over gen photons
5459 
5460  h_nPho_->Fill(float(nPho));
5461 }
5462 
5464  //---Definitions
5465  const float PI = 3.1415927;
5466  const float TWOPI = 2.0 * PI;
5467 
5468  if (phi > PI) {
5469  phi = phi - TWOPI;
5470  }
5471  if (phi < -PI) {
5472  phi = phi + TWOPI;
5473  }
5474 
5475  return phi;
5476 }
5477 
5478 float PhotonValidator::etaTransformation(float EtaParticle, float Zvertex) {
5479  //---Definitions
5480  const float PI = 3.1415927;
5481 
5482  //---Definitions for ECAL
5483  const float R_ECAL = 136.5;
5484  const float Z_Endcap = 328.0;
5485  const float etaBarrelEndcap = 1.479;
5486 
5487  //---ETA correction
5488 
5489  float Theta = 0.0;
5490  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
5491 
5492  if (ZEcal != 0.0)
5493  Theta = atan(R_ECAL / ZEcal);
5494  if (Theta < 0.0)
5495  Theta = Theta + PI;
5496  float ETA = -log(tan(0.5 * Theta));
5497 
5498  if (fabs(ETA) > etaBarrelEndcap) {
5499  float Zend = Z_Endcap;
5500  if (EtaParticle < 0.0)
5501  Zend = -Zend;
5502  float Zlen = Zend - Zvertex;
5503  float RR = Zlen / sinh(EtaParticle);
5504  Theta = atan(RR / Zend);
5505  if (Theta < 0.0)
5506  Theta = Theta + PI;
5507  ETA = -log(tan(0.5 * Theta));
5508  }
5509  //---Return the result
5510  return ETA;
5511  //---end
5512 }
MonitorElement * p_DCotTracksVsR_
MonitorElement * p_sigmaEoEVsEta_[3]
MonitorElement * h_convVtxdX_endcap_
MonitorElement * h_SumPtOverPhoPt_NeuHad_unCleaned_[3]
MonitorElement * h_zPVFromTracks_[5]
MonitorElement * h_hOverE_miniAOD_[3][3]
edm::EDGetTokenT< EcalRecHitCollection > barrelEcalHits_
MonitorElement * h_OIinnermostHitR_
MonitorElement * h2_nTrkSolidConeDR04VsEta_[3]
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
MonitorElement * p_hOverEVsEtBkg_
MonitorElement * h_nSimPho_[2]
MonitorElement * p_DPhiTracksAtEcalVsR_
MonitorElement * h_scBkgPhi_
MonitorElement * h2_Chi2VsR_[3]
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * h_sigmaIetaIeta_[3][3]
ParticleType
particle types
Definition: PFCandidate.h:44
MonitorElement * p_sceResVsR9_[3]
MonitorElement * h_DPhiTracksAtEcal_[2][3]
MonitorElement * h_scPhi_miniAOD_[2]
TPRegexp parents
Definition: eve_filter.cc:21
MonitorElement * h2_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * h_IOinnermostHitR_
MonitorElement * h_phoBkgDPhi_
MonitorElement * p_nHitsVsEtaSL_[2]
MonitorElement * h_DPhiTracksAtVtx_[2][3]
MonitorElement * p_EoverEtrueVsEta_[3]
MonitorElement * p_EoverPVsEta_[3]
MonitorElement * h_convVtxdZ_
MonitorElement * h_dRPhoPFcand_Pho_Cleaned_[3]
MonitorElement * h_newhOverE_[3][3]
MonitorElement * h_phoBkgPhi_
MonitorElement * h_chHadIso_[3]
MonitorElement * h_phoPhi_[2]
edm::EDGetTokenT< edm::SimVertexContainer > g4_simVtx_Token_
MonitorElement * h_hcalTowerBcSumEtConeDR04_[3][3]
MonitorElement * h2_PoverPtrueVsEoverP_[3]
reco::ConversionRefVector conversions() const
vector of references to Conversion&#39;s
Definition: Photon.h:64
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * h_mvaOut_[3]
MonitorElement * h_scE_[2][3]
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
MonitorElement * h_nRecoVtx_
MonitorElement * h_convVtxRvsZ_zoom_[2]
MonitorElement * h2_hOverEVsEt_[3]
MonitorElement * h_hcalTowerSumEtConeDR04_miniAOD_[3][3]
edm::EDGetTokenT< edm::HepMCProduct > hepMC_Token_
MonitorElement * h_SumPtOverPhoPt_NeuHad_Cleaned_[3]
MonitorElement * p_hcalTowerSumEtConeDR04VsEt_[3]
std::string fName_
MonitorElement * p_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_DPhiTracksAtVtxBkg_[3]
edm::EDGetTokenT< edm::SimVertexContainer > famos_simVtx_Token_
MonitorElement * h2_EoverPVsR_[3]
MonitorElement * h_phoEt_[2][3]
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilderToken_
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:457
MonitorElement * h_DEtaTracksAtEcal_[2][3]
edm::EDGetTokenT< reco::PFCandidateCollection > pfCandidates_
MonitorElement * h_phoEResRegr2_[3][3]
MonitorElement * p_convVtxdYVsY_
MonitorElement * h_phoDEta_[2]
MonitorElement * h_SimJet_[3]
MonitorElement * h2_convVtxdRVsEta_
MonitorElement * h_RecoConvTwoMTracks_[5]
MonitorElement * h_convVtxdY_
MonitorElement * h_psE_
MonitorElement * h_scEtaWidth_[2]
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
MonitorElement * h2_hOverEVsEtaBkg_
MonitorElement * h2_DCotTracksVsEta_
std::vector< GenJet > GenJetCollection
collection of GenJet objects
T const * product() const
Definition: Handle.h:70
MonitorElement * h2_etaVsRsim_[3]
MonitorElement * h2_PtRecVsPtSim_[3]
MonitorElement * h2_PoverPtrueVsEta_[3]
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_convVtxdZ_endcap_
std::vector< EcalRecHit >::const_iterator const_iterator
edm::EDGetTokenT< edm::View< reco::Track > > conversionIOTrackPr_Token_
MonitorElement * h_scEt_[2][3]
MonitorElement * h_dzPVFromTracks_[5]
MonitorElement * p_EoverEtrueVsR_[3]
MonitorElement * h2_sigmaIetaIetaVsEtBkg_[3]
MonitorElement * h_ecalRecHitSumEtConeDR04Bkg_[3]
MonitorElement * h_simConvVtxRvsZ_[4]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEt_[3]
MonitorElement * h_MatchedSimJet_[3]
MonitorElement * p_nHitsVsRSL_[2]
MonitorElement * p_r2VsEtBkg_
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
MonitorElement * h_dRPhoPFcand_NeuHad_Cleaned_[3]
MonitorElement * h2_isoTrkSolidConeDR04VsEtaBkg_
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0005_[5]
MonitorElement * h2_r1VsEtaBkg_
MonitorElement * h2_isoTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h_TkD0_[3]
MonitorElement * h_dRPhoPFcand_ChHad_Cleaned_[3]
MonitorElement * h_chHadIso_miniAOD_[3]
MonitorElement * h_convVtxdY_endcap_
MonitorElement * h_EoverP_SL_[3]
std::unique_ptr< PhotonMCTruthFinder > thePhotonMCTruthFinder_
float r1x5() const
Definition: Photon.h:274
MonitorElement * p_eResVsR9_[3]
MonitorElement * h_etOutsideMustache_[3]
MonitorElement * h2_DPhiTracksAtVtxVsEta_
MonitorElement * p_DPhiTracksAtVtxVsR_
MonitorElement * h_SumPtOverPhoPt_ChHad_Cleaned_[3]
MonitorElement * p_sigmaEoEVsEt_[3][3]
MonitorElement * h_convVtxdR_endcap_
Log< level::Error, false > LogError
MonitorElement * h_convSLVtxRvsZ_[3]
MonitorElement * h_phoEt_miniAOD_[2][3]
static constexpr float R_ECAL
MonitorElement * p_newhOverEVsEta_[3]
MonitorElement * h2_convVtxRrecVsTrue_
MonitorElement * h2_DCotTracksVsR_
edm::EDGetTokenT< EcalRecHitCollection > endcapEcalHits_
MonitorElement * h2_PtRecVsPtSimMixProv_
MonitorElement * h_SumPtOverPhoPt_ChHad_unCleaned_[3]
key_type key() const
Accessor for product key.
Definition: Ref.h:250
MonitorElement * h_convEtaBkg_
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > particleBasedIso_token
static const double deltaEta
Definition: CaloConstants.h:8
MonitorElement * h_phoE_miniAOD_[2][3]
MonitorElement * h_scPhi_[2]
MonitorElement * h2_r2VsEtaBkg_
MonitorElement * h_convVtxdPhi_
MonitorElement * h_scBkgE_[3]
MonitorElement * h_convERes_[2][3]
MonitorElement * p_Chi2VsR_[3]
MonitorElement * h_SimPho_[3]
Denominator for efficiencies.
const_iterator end() const
Definition: ValueMap.h:230
MonitorElement * h2_r2VsEtBkg_
MonitorElement * p_r2VsEtaBkg_
MonitorElement * h_convVtxRvsZ_[3]
const Double_t pi
MonitorElement * h_nTrkSolidConeDR04_miniAOD_[3][3]
MonitorElement * h_convPhi_[2]
MonitorElement * h_nConv_[2][3]
info per conversion
MonitorElement * h2_isoTrkSolidConeDR04VsEt_[3]
MonitorElement * h_full5x5_r9_miniAOD_[3][3]
void Fill(long long x)
MonitorElement * h_r9_[3][3]
eBin
CAREFULL for the time being only Loos exists 1 => Tight Photon = GoodCandidate.
MonitorElement * h2_sigmaIetaIetaVsEta_[3]
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
MonitorElement * h_dRPhoPFcand_Pho_unCleaned_[3]
MonitorElement * p_EoverPVsR_[3]
float trkSumPtSolidConeDR04() const
Definition: Photon.h:495
edm::ESHandle< MagneticField > theMF_
MonitorElement * h2_sceResVsR9_[3]
MonitorElement * h_phoEta_[2]
MonitorElement * h2_Chi2VsEta_[3]
#define ETA
MonitorElement * h_simTkPt_
MonitorElement * h_mvaOutBkg_[3]
MonitorElement * h_trkAlgo_
MonitorElement * h2_dzPVVsR_
edm::EDGetTokenT< edm::SimTrackContainer > g4_simTk_Token_
MonitorElement * h_scEta_[2]
MonitorElement * h_convVtxdX_barrel_
MonitorElement * h2_hOverEVsEta_[3]
MonitorElement * p_eResVsR_
MonitorElement * p_hcalTowerSumEtConeDR04VsEtBkg_[3]
MonitorElement * h_tkChi2Large_[2]
MonitorElement * h2_r1VsEt_[3]
MonitorElement * h_trkProv_[2]
MonitorElement * p_sigmaIetaIetaVsEtaBkg_
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float hcalTowerSumEtConeDR04(int depth=0) const
Definition: Photon.h:475
edm::ParameterSet parameters_
MonitorElement * p_convVtxdRVsEta_
MonitorElement * h_r1_[3][3]
MonitorElement * h_EoverPTracks_[2][3]
MonitorElement * h_phoSigmaEoE_miniAOD_[3][3]
MonitorElement * h_scPhiWidth_[2]
MonitorElement * h2_etaVsRreco_[3]
float sigmaIetaIeta() const
Definition: Photon.h:273
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
MonitorElement * h2_r1VsEta_[3]
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtaBkg_
float phiNormalization(float &a)
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * h2_r2VsEta_[3]
MonitorElement * h_nHadIso_miniAOD_[3]
MonitorElement * h_isoTrkSolidConeDR04_[3][3]
MonitorElement * p_hOverEVsEt_[3]
MonitorElement * h_EtR9Less093_[3][3]
MonitorElement * h_tkChi2SL_[2]
MonitorElement * h2_eResVsEt_[3][3]
MonitorElement * h_r9VsNofTracks_[2][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_[3][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_miniAOD_[3][3]
MonitorElement * h_phoEResRegr1_[3][3]
MonitorElement * h2_r9VsEtBkg_
MonitorElement * p_hOverEVsEta_[3]
MonitorElement * h2_TkPtPull_[3]
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * h_SumPtOverPhoPt_Pho_Cleaned_[3]
#define TWOPI
MonitorElement * h_MatchedSimPhoBadCh_[3]
MonitorElement * h_MatchedSimJetBadCh_[3]
MonitorElement * h_convVtxdEta_
MonitorElement * h_r2_[3][3]
MonitorElement * p_nHitsVsEta_[2]
MonitorElement * h_convVtxdY_barrel_
float ChiSquaredProbability(double chiSquared, double nrDOF)
~PhotonValidator() override
MonitorElement * p_sigmaIetaIetaVsEtBkg_[3]
MonitorElement * h2_EoverEtrueVsEta_[3]
MonitorElement * h_phoBkgDEta_
MonitorElement * h_phoIso_miniAOD_[3]
MonitorElement * h_simTkEta_
MonitorElement * nHitsVsEta_[2]
static constexpr float etaBarrelEndcap
const_iterator begin() const
MonitorElement * p_nTrkSolidConeDR04VsEtaBkg_
MonitorElement * h2_sigmaIetaIetaVsEtaBkg_
MonitorElement * h_gamgamMassRegr1_[3][3]
MonitorElement * p_convVtxdXVsX_
MonitorElement * p_dzPVVsR_
MonitorElement * hBCEnergyOverTrackPout_[3]
MonitorElement * h_PoverETracksBkg_[3]
MonitorElement * h_invMass_[2][3]
edm::EDGetTokenT< TrackingParticleCollection > token_tp_
MonitorElement * h2_EoverEtrueVsEoverP_[3]
#define PI
Definition: QcdUeDQM.h:37
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:151
MonitorElement * h_phoE_[2][3]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_hOverE_[3][3]
MonitorElement * p_TkPtPull_[3]
MonitorElement * h_hOverEBkg_[3]
MonitorElement * h_dRPhoPFcand_NeuHad_unCleaned_[3]
MonitorElement * h_SimPhoMotherEt_[2]
MonitorElement * h2_eResVsR9_[3]
MonitorElement * nHitsVsR_[2]
MonitorElement * h_r1Bkg_[3]
MonitorElement * h_scEta_miniAOD_[2]
Histos for comparison with miniAOD content.
const_iterator end() const
MonitorElement * h_convVtxdX_
MonitorElement * p_isoTrkSolidConeDR04VsEtaBkg_
MonitorElement * h2_DPhiTracksAtVtxVsR_
MonitorElement * h_convVtxYvsXBkg_
MonitorElement * h_TkPtPull_[3]
MonitorElement * h2_EoverPVsEta_[3]
edm::ESHandle< CaloGeometry > theCaloGeom_
MonitorElement * h_nTrkSolidConeDR04Bkg_[3]
Log< level::Info, false > LogInfo
int nTrkSolidConeDR04() const
Definition: Photon.h:499
MonitorElement * p_DCotTracksVsEta_
MonitorElement * h_convPtRes_[2][3]
MonitorElement * h2_nTrkSolidConeDR04VsEtaBkg_
float r2x5() const
Definition: Photon.h:275
MonitorElement * h_r2Bkg_[3]
MonitorElement * h_MatchedSimPho_[3]
Numerator for efficiencies.
MonitorElement * p_convVtxdRVsR_
static constexpr float d0
float hadronicOverEm(int depth=0) const
Definition: Photon.h:236
MonitorElement * h_convVtxRvsZBkg_[2]
MonitorElement * p_Chi2VsEta_[3]
MonitorElement * h_nHadIso_[3]
MonitorElement * h2_hOverEVsEtBkg_
MonitorElement * p_sigmaEoEVsNVtx_[3][3]
size_type size() const
Size of the RefVector.
Definition: RefVector.h:102
MonitorElement * p_eResVsNVtx_[3][3]
auto const & tracks
cannot be loose
MonitorElement * h_SumPtOverPhoPt_Pho_unCleaned_[3]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtBkg_[3]
auto const good
min quality of good
void clear()
Clear the vector.
Definition: RefVector.h:142
MonitorElement * h_nSimConv_[2]
MonitorElement * h_nTrkSolidConeDR04_[3][3]
MonitorElement * h_sigmaIetaIetaBkg_[3]
MonitorElement * h2_EoverEtrueVsR_[3]
MonitorElement * p_hcalTowerBcSumEtConeDR04VsEta_[3]
MonitorElement * h_SimConvTwoMTracksAndVtxPGT0_[5]
MonitorElement * h_gamgamMass_[3][3]
MonitorElement * h_distMinAppTracks_[2][3]
MonitorElement * h_nPho_
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
edm::EDGetTokenT< reco::GenParticleCollection > genpartToken_
MonitorElement * p_PoverPtrueVsEta_[3]
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:228
MonitorElement * h_r9Bkg_[3]
MonitorElement * h_phoERes_[3][3]
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * h_isoTrkSolidConeDR04Bkg_[3]
MonitorElement * h2_r9VsEtaBkg_
MonitorElement * h_convVtxYvsX_zoom_[2]
MonitorElement * h_convAlgo_
MonitorElement * h_nCluOutsideMustache_[3]
edm::EDGetTokenT< reco::GenJetCollection > genjets_Token_
MonitorElement * h_hcalTowerSumEtConeDR04_[3][3]
MonitorElement * h2_nTrkSolidConeDR04VsEt_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtBkg_[3]
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
MonitorElement * h_convQuality_
MonitorElement * h2_r1VsEtBkg_
MonitorElement * h_DCotTracksBkg_[3]
MonitorElement * h_phoIso_[3]
MonitorElement * p_ecalRecHitSumEtConeDR04VsEta_[3]
MonitorElement * p_r1VsEtaBkg_
MonitorElement * h_PoverETracks_[2][3]
float etaTransformation(float a, float b)
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEt_[3]
MonitorElement * h_phoPixSeedSize_[2]
float r9() const
Definition: Photon.h:276
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:664
MonitorElement * h_vtxChi2_[3]
MonitorElement * p_nTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * p_hcalTowerBcSumEtConeDR04VsEt_[3]
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * h_pfMva_[3]
edm::EDGetTokenT< reco::PhotonCollection > photonCollectionToken_
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtBkg_[3]
MonitorElement * h_hcalTowerSumEtConeDR04Bkg_[3]
MonitorElement * p_convVtxdZVsZ_
MonitorElement * p_hcalTowerSumEtConeDR04VsEta_[3]
MonitorElement * h_r1_miniAOD_[3][3]
MonitorElement * p_r1VsEtBkg_
MonitorElement * h_phoBkgEt_[3]
double et() const final
transverse energy
HLT enums.
MonitorElement * h2_isoTrkSolidConeDR04VsEta_[3]
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
MonitorElement * h_SimPhoMotherEta_[2]
MonitorElement * h_EoverPTracksBkg_[3]
MonitorElement * h_convVtxdR_barrel_
void push_back(const RefToBase< T > &)
static constexpr float ZEcal
MonitorElement * h_VisSimConv_[6]
MonitorElement * h_SimConvTwoMTracks_[5]
MonitorElement * h2_nTrkSolidConeDR04VsEtBkg_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtaBkg_
MonitorElement * p_eResVsEt_[3][3]
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:67
MonitorElement * h_convVtxYvsX_
MonitorElement * h_phoBkgE_[3]
MonitorElement * p_hOverEVsEtaBkg_
MonitorElement * h_r2_miniAOD_[3][3]
MonitorElement * h_phoSigmaEoE_[3][3]
MonitorElement * h_RecoConvTwoTracks_[5]
MonitorElement * p_r9VsEta_[3]
MonitorElement * h_DCotTracks_[2][3]
MonitorElement * h_phoERes_miniAOD_[3][3]
MonitorElement * h2_DPhiTracksAtEcalVsR_
std::vector< TrackingParticle > TrackingParticleCollection
MonitorElement * p_eResVsEta_[3]
edm::RefVector< TrackingParticleCollection > theConvTP_
MonitorElement * h_newhOverE_miniAOD_[3][3]
void dqmBeginRun(edm::Run const &r, edm::EventSetup const &theEventSetup) override
MonitorElement * h_dRPhoPFcand_ChHad_unCleaned_[3]
MonitorElement * h_AllSimConv_[5]
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * h_vtxChi2Prob_[3]
MonitorElement * h_scBkgEta_
MonitorElement * p_nHitsVsR_[2]
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:223
MonitorElement * h_hcalTowerBcSumEtConeDR04_miniAOD_[3][3]
MonitorElement * h_r9_miniAOD_[3][3]
MonitorElement * h2_convVtxdRVsR_
double phi() const final
momentum azimuthal angle
MonitorElement * h_gamgamMassRegr2_[3][3]
MonitorElement * p_newhOverEVsEt_[3]
MonitorElement * h2_r2VsEt_[3]
MonitorElement * h_convVtxdR_
MonitorElement * h_convVtxdZ_barrel_
value_type const * get() const
Definition: RefToBase.h:209
MonitorElement * h_SimConvOneTracks_[5]
MonitorElement * h_full5x5_sigmaIetaIeta_miniAOD_[3][3]
MonitorElement * h_convEta_[3]
MonitorElement * p_hcalTowerSumEtConeDR04VsEtaBkg_
int etaBin(const l1t::HGCalMulticluster *cl)
MonitorElement * p_ecalRecHitSumEtConeDR04VsEt_[3]
double mcPhi_
global variable for the MC photon
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
MonitorElement * h_SimConvTwoTracks_[5]
MonitorElement * h2_sigmaIetaIetaVsEt_[3]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtaBkg_
MonitorElement * h_scBkgEt_[3]
MonitorElement * h2_DPhiTracksAtEcalVsEta_
edm::EDGetTokenT< edm::View< reco::Track > > conversionOITrackPr_Token_
MonitorElement * h_sigmaIetaIeta_miniAOD_[3][3]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEta_[3]
MonitorElement * h_SimConvEtaPix_[2]
static constexpr float Z_Endcap
MonitorElement * h2_eResVsEta_[3]
Definition: Run.h:45
MonitorElement * p_DPhiTracksAtVtxVsEta_
void labelsForToken(EDGetToken iToken, Labels &oLabels) const
MonitorElement * p_DPhiTracksAtEcalVsEta_
MonitorElement * h_phoDPhi_[2]
MonitorElement * h_convPhiBkg_
edm::EDGetTokenT< edm::SimTrackContainer > famos_simTk_Token_
MonitorElement * h_phoBkgEta_
MonitorElement * h2_r9VsEt_[3]
MonitorElement * h_tkChi2_[2]
MonitorElement * p_dzPVVsEta_
double scalar(const CLHEP::HepGenMatrix &m)
Return the matrix as a scalar. Raise an assertion if the matris is not .
Definition: matutil.cc:166
PhotonValidator(const edm::ParameterSet &)
MonitorElement * h_SimConvOneMTracks_[5]
double energy() const final
energy
MonitorElement * h_isoTrkSolidConeDR04_miniAOD_[3][3]
double eta() const final
momentum pseudorapidity
void dqmEndRun(edm::Run const &r, edm::EventSetup const &es) override