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, 50.);
1195  iBooker.book1D(histname + "Barrel", "ecalRecHitSumEtDR04: Barrel ", etBin, etMin, 50.);
1197  iBooker.book1D(histname + "Endcap", "ecalRecHitSumEtDR04: Endcap ", etBin, etMin, 50.);
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, 50.);
1300  iBooker.book1D(histname + "Barrel", "hcalTowerSumEtConeDR04: Barrel ", etBin, etMin, 50.);
1302  iBooker.book1D(histname + "Endcap", "hcalTowerSumEtConeDR04: Endcap ", etBin, etMin, 50.);
1303  //
1304  histname = "hcalTowerBcSumEtConeDR04";
1305  if (!isRunCentrally_)
1307  iBooker.book1D(histname + "All", "hcalTowerBcSumEtConeDR04: All Ecal", etBin, etMin, 50.);
1309  iBooker.book1D(histname + "Barrel", "hcalTowerBcSumEtConeDR04: Barrel ", etBin, etMin, 50.);
1311  iBooker.book1D(histname + "Endcap", "hcalTowerBcSumEtConeDR04: Endcap ", etBin, etMin, 50.);
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);
2036  iBooker.book1D(histname + "Barrel_1", "dR(pho,cand) Neutral Hadrons : Barrel |eta| <=1", etBin, etMin, 0.7);
2038  iBooker.book1D(histname + "Barrel_2", "dR(pho,cand) Neutral Hadrons : Barrel |eta | > 1", etBin, etMin, 0.7);
2039  histname = "dRPhoPFcand_Pho_Cleaned";
2041  iBooker.book1D(histname + "All", "dR(pho,cand) Photons : All Ecal", etBin, etMin, 0.7);
2043  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons : Barrel", etBin, etMin, 0.7);
2045  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons : Endcap", etBin, etMin, 0.7);
2046 
2047  //
2048  histname = "SumPtOverPhoPt_ChHad_unCleaned";
2050  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Charged Hadrons : All Ecal", etBin, etMin, 2.);
2052  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Charged Hadrons: Barrel", etBin, etMin, 2.);
2054  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Charged Hadrons: Endcap", etBin, etMin, 2.);
2055  histname = "SumPtOverPhoPt_NeuHad_unCleaned";
2057  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Neutral Hadrons : All Ecal", etBin, etMin, 2.);
2059  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Barrel", etBin, etMin, 2.);
2061  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Endcap", etBin, etMin, 2.);
2062  histname = "SumPtOverPhoPt_Pho_unCleaned";
2064  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Photons: All Ecal", etBin, etMin, 2.);
2066  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Photons: Barrel", etBin, etMin, 2.);
2068  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Photons: Endcap", etBin, etMin, 2.);
2069  histname = "dRPhoPFcand_ChHad_unCleaned";
2071  iBooker.book1D(histname + "All", "dR(pho,cand) Charged Hadrons : All Ecal", etBin, etMin, 0.7);
2073  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Charged Hadrons : Barrel", etBin, etMin, 0.7);
2075  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Charged Hadrons : Endcap", etBin, etMin, 0.7);
2076 
2077  histname = "dRPhoPFcand_NeuHad_unCleaned";
2079  iBooker.book1D(histname + "All", "dR(pho,cand) Neutral Hadrons : All Ecal", etBin, etMin, 0.7);
2081  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Neutral Hadrons : Barrel", etBin, etMin, 0.7);
2083  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Neutral Hadrons : Endcap", etBin, etMin, 0.7);
2085  iBooker.book1D(histname + "Barrel_1", "dR(pho,cand) Neutral Hadrons : Barrel |eta| <=1 ", etBin, etMin, 0.7);
2087  iBooker.book1D(histname + "Barrel_2", "dR(pho,cand) Neutral Hadrons : Barrel |eta| > 1", etBin, etMin, 0.7);
2088 
2089  histname = "dRPhoPFcand_Pho_unCleaned";
2091  iBooker.book1D(histname + "All", "dR(pho,cand) Photons: All Ecal", etBin, etMin, 0.7);
2093  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons: Barrel", etBin, etMin, 0.7);
2095  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons: Endcap", etBin, etMin, 0.7);
2096 
2097  // if ( ! isRunCentrally_ ) {
2098  // Photon pair invariant mass
2099  histname = "gamgamMass";
2100  h_gamgamMass_[0][0] =
2101  iBooker.book1D(histname + "All", "2 photons invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2102  h_gamgamMass_[0][1] =
2103  iBooker.book1D(histname + "Barrel", "2 photons invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2104  h_gamgamMass_[0][2] =
2105  iBooker.book1D(histname + "Endcap", "2 photons invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2106  //
2107  histname = "gamgamMassNoConv";
2108  h_gamgamMass_[1][0] = iBooker.book1D(
2109  histname + "All", "2 photons with no conversion invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2110  h_gamgamMass_[1][1] = iBooker.book1D(
2111  histname + "Barrel", "2 photons with no conversion invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2112  h_gamgamMass_[1][2] = iBooker.book1D(
2113  histname + "Endcap", "2 photons with no conversion invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2114  //
2115  histname = "gamgamMassConv";
2116  h_gamgamMass_[2][0] = iBooker.book1D(
2117  histname + "All", "2 photons with conversion invariant mass: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2118  h_gamgamMass_[2][1] = iBooker.book1D(
2119  histname + "Barrel", "2 photons with conversion invariant mass: Barrel ", ggMassBin, ggMassMin, ggMassMax);
2120  h_gamgamMass_[2][2] = iBooker.book1D(
2121  histname + "Endcap", "2 photons with conversion invariant mass: Endcap ", ggMassBin, ggMassMin, ggMassMax);
2122  // with energy regression1
2123  histname = "gamgamMassRegr1";
2124  h_gamgamMassRegr1_[0][0] =
2125  iBooker.book1D(histname + "All", "2 photons invariant mass Regr1 : All ecal ", ggMassBin, ggMassMin, ggMassMax);
2126  h_gamgamMassRegr1_[0][1] =
2127  iBooker.book1D(histname + "Barrel", "2 photons invariant mass Regr1 : Barrel ", ggMassBin, ggMassMin, ggMassMax);
2128  h_gamgamMassRegr1_[0][2] =
2129  iBooker.book1D(histname + "Endcap", "2 photons invariant mass Regr1 : Endcap ", ggMassBin, ggMassMin, ggMassMax);
2130  //
2131  histname = "gamgamMassRegr1NoConv";
2132  h_gamgamMassRegr1_[1][0] = iBooker.book1D(
2133  histname + "All", "2 photons with no conversion invariant mass Regr1: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2134  h_gamgamMassRegr1_[1][1] = iBooker.book1D(histname + "Barrel",
2135  "2 photons with no conversion invariant mass Regr1: Barrel ",
2136  ggMassBin,
2137  ggMassMin,
2138  ggMassMax);
2139  h_gamgamMassRegr1_[1][2] = iBooker.book1D(histname + "Endcap",
2140  "2 photons with no conversion invariant mass Regr1: Endcap ",
2141  ggMassBin,
2142  ggMassMin,
2143  ggMassMax);
2144  //
2145  histname = "gamgamMassRegr1Conv";
2146  h_gamgamMassRegr1_[2][0] = iBooker.book1D(
2147  histname + "All", "2 photons with conversion invariant mass Regr1: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2148  h_gamgamMassRegr1_[2][1] = iBooker.book1D(histname + "Barrel",
2149  "2 photons with conversion invariant mass Regr1: Barrel ",
2150  ggMassBin,
2151  ggMassMin,
2152  ggMassMax);
2153  h_gamgamMassRegr1_[2][2] = iBooker.book1D(histname + "Endcap",
2154  "2 photons with conversion invariant mass Regr1: Endcap ",
2155  ggMassBin,
2156  ggMassMin,
2157  ggMassMax);
2158  // with energy regression2
2159  histname = "gamgamMassRegr2";
2160  h_gamgamMassRegr2_[0][0] =
2161  iBooker.book1D(histname + "All", "2 photons invariant mass Regr2 : All ecal ", ggMassBin, ggMassMin, ggMassMax);
2162  h_gamgamMassRegr2_[0][1] =
2163  iBooker.book1D(histname + "Barrel", "2 photons invariant mass Regr2 : Barrel ", ggMassBin, ggMassMin, ggMassMax);
2164  h_gamgamMassRegr2_[0][2] =
2165  iBooker.book1D(histname + "Endcap", "2 photons invariant mass Regr2 : Endcap ", ggMassBin, ggMassMin, ggMassMax);
2166  //
2167  histname = "gamgamMassRegr2NoConv";
2168  h_gamgamMassRegr2_[1][0] = iBooker.book1D(
2169  histname + "All", "2 photons with no conversion invariant mass Regr2: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2170  h_gamgamMassRegr2_[1][1] = iBooker.book1D(histname + "Barrel",
2171  "2 photons with no conversion invariant mass Regr2: Barrel ",
2172  ggMassBin,
2173  ggMassMin,
2174  ggMassMax);
2175  h_gamgamMassRegr2_[1][2] = iBooker.book1D(histname + "Endcap",
2176  "2 photons with no conversion invariant mass Regr2: Endcap ",
2177  ggMassBin,
2178  ggMassMin,
2179  ggMassMax);
2180  //
2181  histname = "gamgamMassRegr2Conv";
2182  h_gamgamMassRegr2_[2][0] = iBooker.book1D(
2183  histname + "All", "2 photons with conversion invariant mass Regr2: All ecal ", ggMassBin, ggMassMin, ggMassMax);
2184  h_gamgamMassRegr2_[2][1] = iBooker.book1D(histname + "Barrel",
2185  "2 photons with conversion invariant mass Regr2: Barrel ",
2186  ggMassBin,
2187  ggMassMin,
2188  ggMassMax);
2189  h_gamgamMassRegr2_[2][2] = iBooker.book1D(histname + "Endcap",
2190  "2 photons with conversion invariant mass Regr2: Endcap ",
2191  ggMassBin,
2192  ggMassMin,
2193  ggMassMax);
2194 
2195  //}
2196 
2198 
2199  h_scEta_miniAOD_[0] = iBooker.book1D("scEta_miniAOD", " SC Eta ", etaBin, etaMin, etaMax);
2200  h_scPhi_miniAOD_[0] = iBooker.book1D("scPhi_miniAOD", " SC Phi ", phiBin, phiMin, phiMax);
2201  histname = "phoE";
2202  h_phoE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " Photon Energy: All ecal ", eBin, eMin, eMax);
2203  h_phoE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " Photon Energy: barrel ", eBin, eMin, eMax);
2204  h_phoE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " Photon Energy: Endcap ", eBin, eMin, eMax);
2205 
2206  histname = "phoEt";
2207  h_phoEt_miniAOD_[0][0] =
2208  iBooker.book1D(histname + "All_miniAOD", " Photon Transverse Energy: All ecal ", etBin, etMin, etMax);
2209  h_phoEt_miniAOD_[0][1] =
2210  iBooker.book1D(histname + "Barrel_miniAOD", " Photon Transverse Energy: Barrel ", etBin, etMin, etMax);
2211  h_phoEt_miniAOD_[0][2] =
2212  iBooker.book1D(histname + "Endcap_miniAOD", " Photon Transverse Energy: Endcap ", etBin, etMin, etMax);
2213 
2214  histname = "eRes";
2215  h_phoERes_miniAOD_[0][0] = iBooker.book1D(
2216  histname + "All_miniAOD", " Photon E/E_{true}: All ecal; E/E_{true} (GeV)", resBin, resMin, resMax);
2217  h_phoERes_miniAOD_[0][1] = iBooker.book1D(
2218  histname + "Barrel_miniAOD", "Photon E/E_{true}: Barrel; E/E_{true} (GeV)", resBin, resMin, resMax);
2219  h_phoERes_miniAOD_[0][2] = iBooker.book1D(
2220  histname + "Endcap_miniAOD", " Photon E/E_{true}: Endcap; E/E_{true} (GeV)", resBin, resMin, resMax);
2221 
2222  histname = "sigmaEoE";
2223  h_phoSigmaEoE_miniAOD_[0][0] =
2224  iBooker.book1D(histname + "All_miniAOD", "#sigma_{E}/E: All ecal; #sigma_{E}/E", 100, 0., 0.08);
2225  h_phoSigmaEoE_miniAOD_[0][1] =
2226  iBooker.book1D(histname + "Barrel_miniAOD", "#sigma_{E}/E: Barrel; #sigma_{E}/E", 100, 0., 0.08);
2227  h_phoSigmaEoE_miniAOD_[0][2] =
2228  iBooker.book1D(histname + "Endcap_miniAOD", "#sigma_{E}/E: Endcap, #sigma_{E}/E", 100, 0., 0.08);
2229 
2230  histname = "r9";
2231  h_r9_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " r9: All Ecal", r9Bin, r9Min, r9Max);
2232  h_r9_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " r9: Barrel ", r9Bin, r9Min, r9Max);
2233  h_r9_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " r9: Endcap ", r9Bin, r9Min, r9Max);
2234  histname = "full5x5_r9";
2235  h_full5x5_r9_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " r9: All Ecal", r9Bin, r9Min, r9Max);
2236  h_full5x5_r9_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " r9: Barrel ", r9Bin, r9Min, r9Max);
2237  h_full5x5_r9_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " r9: Endcap ", r9Bin, r9Min, r9Max);
2238  histname = "r1";
2239  h_r1_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " e1x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
2240  h_r1_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " e1x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
2241  h_r1_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " e1x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
2242  histname = "r2";
2243  h_r2_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", " e2x5/e5x5: All Ecal", r9Bin, r9Min, r9Max);
2244  h_r2_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", " e2x5/e5x5: Barrel ", r9Bin, r9Min, r9Max);
2245  h_r2_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", " e2x5/e5x5: Endcap ", r9Bin, r9Min, r9Max);
2246  histname = "hOverE";
2247  h_hOverE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "H/E: All Ecal", 100, 0., 0.2);
2248  h_hOverE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "H/E: Barrel ", 100, 0., 0.2);
2249  h_hOverE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "H/E: Endcap ", 100, 0., 0.2);
2250  //
2251  histname = "newhOverE";
2252  h_newhOverE_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "new H/E: All Ecal", 100, 0., 0.2);
2253  h_newhOverE_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "new H/E: Barrel ", 100, 0., 0.2);
2254  h_newhOverE_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "new H/E: Endcap ", 100, 0., 0.2);
2255  //
2256  histname = "sigmaIetaIeta";
2257  h_sigmaIetaIeta_miniAOD_[0][0] = iBooker.book1D(histname + "All_miniAOD", "sigmaIetaIeta: All Ecal", 100, 0., 0.1);
2258  h_sigmaIetaIeta_miniAOD_[0][1] = iBooker.book1D(histname + "Barrel_miniAOD", "sigmaIetaIeta: Barrel ", 100, 0., 0.05);
2259  h_sigmaIetaIeta_miniAOD_[0][2] = iBooker.book1D(histname + "Endcap_miniAOD", "sigmaIetaIeta: Endcap ", 100, 0., 0.1);
2260  histname = "full5x5_sigmaIetaIeta";
2262  iBooker.book1D(histname + "All_miniAOD", "Full5x5 sigmaIetaIeta: All Ecal", 100, 0., 0.1);
2264  iBooker.book1D(histname + "Barrel_miniAOD", "Full5x5 sigmaIetaIeta: Barrel ", 100, 0., 0.05);
2266  iBooker.book1D(histname + "Endcap_miniAOD", "Full5x5 sigmaIetaIeta: Endcap ", 100, 0., 0.1);
2267  //
2268  histname = "ecalRecHitSumEtConeDR04";
2270  iBooker.book1D(histname + "All_miniAOD", "ecalRecHitSumEtDR04: All Ecal", etBin, etMin, 50.);
2272  iBooker.book1D(histname + "Barrel_miniAOD", "ecalRecHitSumEtDR04: Barrel ", etBin, etMin, 50.);
2274  iBooker.book1D(histname + "Endcap_miniAOD", "ecalRecHitSumEtDR04: Endcap ", etBin, etMin, 50.);
2275  histname = "hcalTowerSumEtConeDR04";
2277  iBooker.book1D(histname + "All_miniAOD", "hcalTowerSumEtConeDR04: All Ecal", etBin, etMin, 50.);
2279  iBooker.book1D(histname + "Barrel_miniAOD", "hcalTowerSumEtConeDR04: Barrel ", etBin, etMin, 50.);
2281  iBooker.book1D(histname + "Endcap_miniAOD", "hcalTowerSumEtConeDR04: Endcap ", etBin, etMin, 50.);
2282  //
2283  histname = "hcalTowerBcSumEtConeDR04";
2285  iBooker.book1D(histname + "All_miniAOD", "hcalTowerBcSumEtConeDR04: All Ecal", etBin, etMin, 50.);
2287  iBooker.book1D(histname + "Barrel_miniAOD", "hcalTowerBcSumEtConeDR04: Barrel ", etBin, etMin, 50.);
2289  iBooker.book1D(histname + "Endcap_miniAOD", "hcalTowerBcSumEtConeDR04: Endcap ", etBin, etMin, 50.);
2290  histname = "isoTrkSolidConeDR04";
2292  iBooker.book1D(histname + "All_miniAOD", "isoTrkSolidConeDR04: All Ecal", etBin, etMin, etMax * 0.1);
2294  iBooker.book1D(histname + "Barrel_miniAOD", "isoTrkSolidConeDR04: Barrel ", etBin, etMin, etMax * 0.1);
2296  iBooker.book1D(histname + "Endcap_miniAOD", "isoTrkSolidConeDR04: Endcap ", etBin, etMin, etMax * 0.1);
2297  histname = "nTrkSolidConeDR04";
2299  iBooker.book1D(histname + "All_miniAOD", "nTrkSolidConeDR04: All Ecal", 20, 0., 20);
2301  iBooker.book1D(histname + "Barrel_miniAOD", "nTrkSolidConeDR04: Barrel ", 20, 0., 20);
2303  iBooker.book1D(histname + "Endcap_miniAOD", "nTrkSolidConeDR04: Endcap ", 20, 0., 20);
2304 
2305  // Infos from Particle Flow - isolation and ID
2306  histname = "chargedHadIso";
2307  h_chHadIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF chargedHadIso: All Ecal", etBin, etMin, 20.);
2308  h_chHadIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF chargedHadIso: Barrel", etBin, etMin, 20.);
2309  h_chHadIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF chargedHadIso: Endcap", etBin, etMin, 20.);
2310  histname = "neutralHadIso";
2311  h_nHadIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF neutralHadIso: All Ecal", etBin, etMin, 20.);
2312  h_nHadIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF neutralHadIso: Barrel", etBin, etMin, 20.);
2313  h_nHadIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF neutralHadIso: Endcap", etBin, etMin, 20.);
2314  histname = "photonIso";
2315  h_phoIso_miniAOD_[0] = iBooker.book1D(histname + "All_miniAOD", "PF photonIso: All Ecal", etBin, etMin, 20.);
2316  h_phoIso_miniAOD_[1] = iBooker.book1D(histname + "Barrel_miniAOD", "PF photonIso: Barrel", etBin, etMin, 20.);
2317  h_phoIso_miniAOD_[2] = iBooker.book1D(histname + "Endcap_miniAOD", "PF photonIso: Endcap", etBin, etMin, 20.);
2318 
2319  iBooker.setCurrentFolder("EgammaV/" + fName_ + "/ConversionInfo");
2320 
2321  histname = "nConv";
2322  h_nConv_[0][0] = iBooker.book1D(histname + "All",
2323  "Number Of two-tracks Conversions per isolated candidates per events: All Ecal ",
2324  10,
2325  -0.5,
2326  9.5);
2327  h_nConv_[0][1] = iBooker.book1D(histname + "Barrel",
2328  "Number Of two-tracks Conversions per isolated candidates per events: Ecal Barrel ",
2329  10,
2330  -0.5,
2331  9.5);
2332  h_nConv_[0][2] = iBooker.book1D(histname + "Endcap",
2333  "Number Of two-tracks Conversions per isolated candidates per events: Ecal Endcap ",
2334  10,
2335  -0.5,
2336  9.5);
2337  h_nConv_[1][0] = iBooker.book1D(histname + "OneLegAll",
2338  "Number Of single leg Conversions per isolated candidates per events: All Ecal ",
2339  10,
2340  -0.5,
2341  9.5);
2342  h_nConv_[1][1] = iBooker.book1D(histname + "OneLegBarrel",
2343  "Number Of single leg Conversions per isolated candidates per events: Ecal Barrel ",
2344  10,
2345  -0.5,
2346  9.5);
2347  h_nConv_[1][2] = iBooker.book1D(histname + "OneLegEndcap",
2348  "Number Of single leg Conversions per isolated candidates per events: Ecal Endcap ",
2349  10,
2350  -0.5,
2351  9.5);
2352 
2353  h_convEta_[0] = iBooker.book1D("convEta1", " converted Photon Eta >1 track", etaBin, etaMin, etaMax);
2354  h_convEta_[1] = iBooker.book1D("convEta2", " converted Photon Eta =2 tracks ", etaBin, etaMin, etaMax);
2355  h_convEta_[2] = iBooker.book1D("convEta2ass", " converted Photon Eta =2 tracks, both ass ", etaBin, etaMin, etaMax);
2356  h_convPhi_[0] = iBooker.book1D("convPhi", " converted Photon Phi ", phiBin, phiMin, phiMax);
2357 
2358  histname = "convERes";
2359  h_convERes_[0][0] =
2360  iBooker.book1D(histname + "All", " Conversion rec/true Energy: All ecal ", resBin, resMin, resMax);
2361  h_convERes_[0][1] =
2362  iBooker.book1D(histname + "Barrel", " Conversion rec/true Energy: Barrel ", resBin, resMin, resMax);
2363  h_convERes_[0][2] =
2364  iBooker.book1D(histname + "Endcap", " Conversion rec/true Energy: Endcap ", resBin, resMin, resMax);
2365 
2366  histname = "p_EResVsR";
2367  p_eResVsR_ = iBooker.bookProfile(
2368  histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 1.5, "");
2369 
2370  histname = "convPtRes";
2371  h_convPtRes_[1][0] =
2372  iBooker.book1D(histname + "All", " Conversion Pt rec/true from tracks : All ecal ", resBin, 0., 1.5);
2373  h_convPtRes_[1][1] =
2374  iBooker.book1D(histname + "Barrel", " Conversion Pt rec/true from tracks: Barrel ", resBin, 0., 1.5);
2375  h_convPtRes_[1][2] =
2376  iBooker.book1D(histname + "Endcap", " Conversion Pt rec/true from tracks: Endcap ", resBin, 0., 1.5);
2377 
2378  if (!isRunCentrally_) {
2379  histname = "r9VsTracks";
2380  h_r9VsNofTracks_[0][0] = iBooker.book2D(
2381  histname + "All", " photons r9 vs nTracks from conversions: All Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2382  h_r9VsNofTracks_[0][1] = iBooker.book2D(
2383  histname + "Barrel", " photons r9 vs nTracks from conversions: Barrel Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2384  h_r9VsNofTracks_[0][2] = iBooker.book2D(
2385  histname + "Endcap", " photons r9 vs nTracks from conversions: Endcap Ecal", r9Bin, r9Min, r9Max, 3, -0.5, 2.5);
2386  }
2387 
2388  histname = "mvaOut";
2389  h_mvaOut_[0] = iBooker.book1D(histname + "All", " mvaOut for all conversions : All Ecal", 100, 0., 1.);
2390  h_mvaOut_[1] = iBooker.book1D(histname + "Barrel", " mvaOut for all conversions : Barrel Ecal", 100, 0., 1.);
2391  h_mvaOut_[2] = iBooker.book1D(histname + "Endcap", " mvaOut for all conversions : Endcap Ecal", 100, 0., 1.);
2392 
2393  histname = "EoverPtracks";
2394  h_EoverPTracks_[0][0] =
2395  iBooker.book1D(histname + "BarrelPix", " photons conversion E/p: barrel pix", eoverpBin, eoverpMin, eoverpMax);
2396  h_EoverPTracks_[0][1] =
2397  iBooker.book1D(histname + "BarrelTib", " photons conversion E/p: barrel tib", eoverpBin, eoverpMin, eoverpMax);
2398  h_EoverPTracks_[0][2] =
2399  iBooker.book1D(histname + "BarrelTob", " photons conversion E/p: barrel tob ", eoverpBin, eoverpMin, eoverpMax);
2400 
2401  h_EoverPTracks_[1][0] = iBooker.book1D(histname + "All", " photons conversion E/p: all Ecal ", 100, 0., 5.);
2402  h_EoverPTracks_[1][1] = iBooker.book1D(histname + "Barrel", " photons conversion E/p: Barrel Ecal", 100, 0., 5.);
2403  h_EoverPTracks_[1][2] = iBooker.book1D(histname + "Endcap", " photons conversion E/p: Endcap Ecal ", 100, 0., 5.);
2404  histname = "EoverP_SL";
2405  h_EoverP_SL_[0] = iBooker.book1D(histname + "All", " photons single leg conversion E/p: all Ecal ", 100, 0., 5.);
2406  h_EoverP_SL_[1] = iBooker.book1D(histname + "Barrel", " photons single leg conversion E/p: Barrel Ecal", 100, 0., 5.);
2407  h_EoverP_SL_[2] =
2408  iBooker.book1D(histname + "Endcap", " photons single leg conversion E/p: Endcap Ecal ", 100, 0., 5.);
2409 
2410  histname = "PoverEtracks";
2411  h_PoverETracks_[1][0] =
2412  iBooker.book1D(histname + "All", " photons conversion p/E: all Ecal ", povereBin, povereMin, povereMax);
2413  h_PoverETracks_[1][1] =
2414  iBooker.book1D(histname + "Barrel", " photons conversion p/E: Barrel Ecal", povereBin, povereMin, povereMax);
2415  h_PoverETracks_[1][2] =
2416  iBooker.book1D(histname + "Endcap", " photons conversion p/E: Endcap Ecal ", povereBin, povereMin, povereMax);
2417 
2418  histname = "pEoverEtrueVsEta";
2419  p_EoverEtrueVsEta_[0] =
2420  iBooker.bookProfile(histname + "All",
2421  " photons conversion with 2 (associated) reco tracks E/Etrue vs #eta: all Ecal ",
2422  etaBin2,
2423  etaMin,
2424  etaMax,
2425  100,
2426  0.,
2427  2.5,
2428  "");
2429 
2430  histname = "pEoverEtrueVsR";
2431  p_EoverEtrueVsR_[0] = iBooker.bookProfile(
2432  histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 2.5, "");
2433 
2434  histname = "pEoverEtrueVsEta";
2435  p_EoverEtrueVsEta_[1] = iBooker.bookProfile(histname + "All2",
2436  " photons conversion 2 reco tracks E/Etrue vs #eta: all Ecal ",
2437  etaBin2,
2438  etaMin,
2439  etaMax,
2440  100,
2441  0.,
2442  2.5,
2443  "");
2444 
2445  histname = "pPoverPtrueVsEta";
2446  p_PoverPtrueVsEta_[0] = iBooker.bookProfile(
2447  histname + "All", " photons conversion P/Ptrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5., "");
2448 
2449  histname = "pEoverPVsEta";
2450  p_EoverPVsEta_[0] = iBooker.bookProfile(
2451  histname + "All", " photons conversion E/P vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5., "");
2452 
2453  if (!isRunCentrally_) {
2454  histname = "EoverEtrueVsEoverP";
2456  iBooker.book2D(histname + "All", " photons conversion E/Etrue vs E/P: all Ecal ", 100, 0., 5., 100, 0.5, 1.5);
2457  h2_EoverEtrueVsEoverP_[1] = iBooker.book2D(
2458  histname + "Barrel", " photons conversion E/Etrue vs E/: Barrel Ecal", 100, 0., 5., 100, 0.5, 1.5);
2459  h2_EoverEtrueVsEoverP_[2] = iBooker.book2D(
2460  histname + "Endcap", " photons conversion E/Etrue vs E/: Endcap Ecal ", 100, 0., 5., 100, 0.5, 1.5);
2461  histname = "PoverPtrueVsEoverP";
2463  iBooker.book2D(histname + "All", " photons conversion P/Ptrue vs E/P: all Ecal ", 100, 0., 5., 100, 0., 2.5);
2464  h2_PoverPtrueVsEoverP_[1] = iBooker.book2D(
2465  histname + "Barrel", " photons conversion P/Ptrue vs E/: Barrel Ecal", 100, 0., 5., 100, 0., 2.5);
2466  h2_PoverPtrueVsEoverP_[2] = iBooker.book2D(
2467  histname + "Endcap", " photons conversion P/Ptrue vs E/: Endcap Ecal ", 100, 0., 5., 100, 0., 2.5);
2468 
2469  histname = "EoverEtrueVsEta";
2470  h2_EoverEtrueVsEta_[0] =
2471  iBooker.book2D(histname + "All",
2472  " photons conversion with 2 (associated) reco tracks E/Etrue vs #eta: all Ecal ",
2473  etaBin2,
2474  etaMin,
2475  etaMax,
2476  100,
2477  0.,
2478  2.5);
2479 
2480  histname = "EoverEtrueVsEta";
2481  h2_EoverEtrueVsEta_[1] = iBooker.book2D(histname + "All2",
2482  " photons conversion 2 reco tracks E/Etrue vs #eta: all Ecal ",
2483  etaBin2,
2484  etaMin,
2485  etaMax,
2486  100,
2487  0.,
2488  2.5);
2489 
2490  histname = "EoverEtrueVsR";
2491  h2_EoverEtrueVsR_[0] =
2492  iBooker.book2D(histname + "All", " photons conversion E/Etrue vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 2.5);
2493 
2494  histname = "PoverPtrueVsEta";
2495  h2_PoverPtrueVsEta_[0] = iBooker.book2D(
2496  histname + "All", " photons conversion P/Ptrue vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5.);
2497 
2498  histname = "EoverPVsEta";
2499  h2_EoverPVsEta_[0] = iBooker.book2D(
2500  histname + "All", " photons conversion E/P vs #eta: all Ecal ", etaBin2, etaMin, etaMax, 100, 0., 5.);
2501 
2502  histname = "EoverPVsR";
2503  h2_EoverPVsR_[0] =
2504  iBooker.book2D(histname + "All", " photons conversion E/P vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 5.);
2505 
2506  histname = "etaVsRsim";
2507  h2_etaVsRsim_[0] = iBooker.book2D(histname + "All",
2508  " eta(sim) vs R (sim) for associated conversions: all Ecal ",
2509  etaBin,
2510  etaMin,
2511  etaMax,
2512  rBin,
2513  rMin,
2514  rMax);
2515  histname = "etaVsRreco";
2516  h2_etaVsRreco_[0] = iBooker.book2D(histname + "All",
2517  " eta(reco) vs R (reco) for associated conversions: all Ecal ",
2518  etaBin,
2519  etaMin,
2520  etaMax,
2521  rBin,
2522  rMin,
2523  rMax);
2524  }
2525 
2526  histname = "pEoverPVsR";
2527  p_EoverPVsR_[0] = iBooker.bookProfile(
2528  histname + "All", " photons conversion E/P vs R: all Ecal ", rBin, rMin, rMax, 100, 0., 5., "");
2529 
2530  histname = "hInvMass";
2531  h_invMass_[0][0] = iBooker.book1D(
2532  histname + "All_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
2533  h_invMass_[0][1] = iBooker.book1D(
2534  histname + "Barrel_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ", 100, 0., 1.5);
2535  h_invMass_[0][2] = iBooker.book1D(
2536  histname + "Endcap_AllTracks", " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ", 100, 0., 1.5);
2537  histname = "hInvMass";
2538  h_invMass_[1][0] = iBooker.book1D(
2539  histname + "All_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: all Ecal ", 100, 0., 1.5);
2540  h_invMass_[1][1] = iBooker.book1D(
2541  histname + "Barrel_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: Barrel Ecal ", 100, 0., 1.5);
2542  h_invMass_[1][2] = iBooker.book1D(
2543  histname + "Endcap_AssTracks", " Photons:Tracks from conversion: Pair invariant mass: Endcap Ecal ", 100, 0., 1.5);
2544 
2545  histname = "hDPhiTracksAtVtx";
2546  h_DPhiTracksAtVtx_[1][0] = iBooker.book1D(histname + "All",
2547  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: all Ecal",
2548  dPhiTracksBin,
2549  dPhiTracksMin,
2550  dPhiTracksMax);
2551  h_DPhiTracksAtVtx_[1][1] =
2552  iBooker.book1D(histname + "Barrel",
2553  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Barrel Ecal",
2554  dPhiTracksBin,
2555  dPhiTracksMin,
2556  dPhiTracksMax);
2557  h_DPhiTracksAtVtx_[1][2] =
2558  iBooker.book1D(histname + "Endcap",
2559  " Photons:Tracks from conversions: #delta#phi Tracks at vertex: Endcap Ecal",
2560  dPhiTracksBin,
2561  dPhiTracksMin,
2562  dPhiTracksMax);
2563 
2564  if (!isRunCentrally_) {
2565  histname = "hDPhiTracksAtVtxVsEta";
2566  h2_DPhiTracksAtVtxVsEta_ = iBooker.book2D(histname + "All",
2567  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta",
2568  etaBin2,
2569  etaMin,
2570  etaMax,
2571  100,
2572  -0.5,
2573  0.5);
2574 
2575  histname = "hDPhiTracksAtVtxVsR";
2576  h2_DPhiTracksAtVtxVsR_ = iBooker.book2D(histname + "All",
2577  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R",
2578  rBin,
2579  rMin,
2580  rMax,
2581  100,
2582  -0.5,
2583  0.5);
2584 
2585  histname = "hDCotTracksVsEta";
2586  h2_DCotTracksVsEta_ = iBooker.book2D(histname + "All",
2587  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta",
2588  etaBin2,
2589  etaMin,
2590  etaMax,
2591  100,
2592  -0.2,
2593  0.2);
2594 
2595  histname = "hDCotTracksVsR";
2596  h2_DCotTracksVsR_ = iBooker.book2D(histname + "All",
2597  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R",
2598  rBin,
2599  rMin,
2600  rMax,
2601  100,
2602  -0.2,
2603  0.2);
2604 
2605  histname = "h2_DPhiTracksAtEcalVsR";
2606  if (fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
2607  h2_DPhiTracksAtEcalVsR_ = iBooker.book2D(histname + "All",
2608  " Photons:Tracks from conversions: #delta#phi at Ecal vs R : all Ecal ",
2609  rBin,
2610  rMin,
2611  rMax,
2612  dPhiTracksBin,
2613  0.,
2614  dPhiTracksMax);
2615 
2616  histname = "h2_DPhiTracksAtEcalVsEta";
2617  if (fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
2619  iBooker.book2D(histname + "All",
2620  " Photons:Tracks from conversions: #delta#phi at Ecal vs #eta : all Ecal ",
2621  etaBin2,
2622  etaMin,
2623  etaMax,
2624  dPhiTracksBin,
2625  0.,
2626  dPhiTracksMax);
2627  }
2628 
2629  histname = "pDPhiTracksAtVtxVsEta";
2631  iBooker.bookProfile(histname + "All",
2632  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs #eta ",
2633  etaBin2,
2634  etaMin,
2635  etaMax,
2636  100,
2637  -0.5,
2638  0.5,
2639  "");
2640 
2641  histname = "pDPhiTracksAtVtxVsR";
2642  p_DPhiTracksAtVtxVsR_ = iBooker.bookProfile(histname + "All",
2643  " Photons:Tracks from conversions: #delta#phi Tracks at vertex vs R ",
2644  rBin,
2645  rMin,
2646  rMax,
2647  100,
2648  -0.5,
2649  0.5,
2650  "");
2651 
2652  histname = "hDCotTracks";
2653  h_DCotTracks_[1][0] = iBooker.book1D(histname + "All",
2654  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: all Ecal ",
2655  dCotTracksBin,
2656  dCotTracksMin,
2657  dCotTracksMax);
2658  h_DCotTracks_[1][1] = iBooker.book1D(histname + "Barrel",
2659  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Barrel Ecal ",
2660  dCotTracksBin,
2661  dCotTracksMin,
2662  dCotTracksMax);
2663  h_DCotTracks_[1][2] = iBooker.book1D(histname + "Endcap",
2664  " Photons:Tracks from conversions #delta cotg(#Theta) Tracks: Endcap Ecal ",
2665  dCotTracksBin,
2666  dCotTracksMin,
2667  dCotTracksMax);
2668 
2669  histname = "pDCotTracksVsEta";
2670  p_DCotTracksVsEta_ = iBooker.bookProfile(histname + "All",
2671  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks vs #eta ",
2672  etaBin2,
2673  etaMin,
2674  etaMax,
2675  100,
2676  -0.2,
2677  0.2,
2678  "");
2679 
2680  histname = "pDCotTracksVsR";
2682  iBooker.bookProfile(histname + "All",
2683  " Photons:Tracks from conversions: #delta cotg(#Theta) Tracks at vertex vs R ",
2684  rBin,
2685  rMin,
2686  rMax,
2687  100,
2688  -0.2,
2689  0.2,
2690  "");
2691 
2692  histname = "hDistMinAppTracks";
2693  h_distMinAppTracks_[1][0] = iBooker.book1D(histname + "All",
2694  " Photons:Tracks from conversions Min Approach Dist Tracks: all Ecal ",
2695  dEtaTracksBin,
2696  -0.1,
2697  0.6);
2698  h_distMinAppTracks_[1][1] = iBooker.book1D(histname + "Barrel",
2699  " Photons:Tracks from conversions Min Approach Dist Tracks: Barrel Ecal ",
2700  dEtaTracksBin,
2701  -0.1,
2702  0.6);
2703  h_distMinAppTracks_[1][2] = iBooker.book1D(histname + "Endcap",
2704  " Photons:Tracks from conversions Min Approach Dist Tracks: Endcap Ecal ",
2705  dEtaTracksBin,
2706  -0.1,
2707  0.6);
2708 
2709  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" ) {
2710  histname = "hDPhiTracksAtEcal";
2711  h_DPhiTracksAtEcal_[1][0] = iBooker.book1D(histname + "All",
2712  " Photons:Tracks from conversions: #delta#phi at Ecal : all Ecal ",
2713  dPhiTracksBin,
2714  0.,
2715  dPhiTracksMax);
2716  h_DPhiTracksAtEcal_[1][1] = iBooker.book1D(histname + "Barrel",
2717  " Photons:Tracks from conversions: #delta#phi at Ecal : Barrel Ecal ",
2718  dPhiTracksBin,
2719  0.,
2720  dPhiTracksMax);
2721  h_DPhiTracksAtEcal_[1][2] = iBooker.book1D(histname + "Endcap",
2722  " Photons:Tracks from conversions: #delta#phi at Ecal : Endcap Ecal ",
2723  dPhiTracksBin,
2724  0.,
2725  dPhiTracksMax);
2726 
2727  histname = "pDPhiTracksAtEcalVsR";
2728  p_DPhiTracksAtEcalVsR_ = iBooker.bookProfile(histname + "All",
2729  " Photons:Tracks from conversions: #delta#phi at Ecal vs R ",
2730  rBin,
2731  rMin,
2732  rMax,
2733  dPhiTracksBin,
2734  0.,
2735  dPhiTracksMax,
2736  "");
2737 
2738  histname = "pDPhiTracksAtEcalVsEta";
2739  p_DPhiTracksAtEcalVsEta_ = iBooker.bookProfile(histname + "All",
2740  " Photons:Tracks from conversions: #delta#phi at Ecal vs #eta ",
2741  etaBin2,
2742  etaMin,
2743  etaMax,
2744  dPhiTracksBin,
2745  0.,
2746  dPhiTracksMax,
2747  "");
2748 
2749  histname = "hDEtaTracksAtEcal";
2750  h_DEtaTracksAtEcal_[1][0] = iBooker.book1D(histname + "All",
2751  " Photons:Tracks from conversions: #delta#eta at Ecal : all Ecal ",
2752  dEtaTracksBin,
2753  dEtaTracksMin,
2754  dEtaTracksMax);
2755  h_DEtaTracksAtEcal_[1][1] = iBooker.book1D(histname + "Barrel",
2756  " Photons:Tracks from conversions: #delta#eta at Ecal : Barrel Ecal ",
2757  dEtaTracksBin,
2758  dEtaTracksMin,
2759  dEtaTracksMax);
2760  h_DEtaTracksAtEcal_[1][2] = iBooker.book1D(histname + "Endcap",
2761  " Photons:Tracks from conversions: #delta#eta at Ecal : Endcap Ecal ",
2762  dEtaTracksBin,
2763  dEtaTracksMin,
2764  dEtaTracksMax);
2765 
2766  // }
2767 
2768  h_convVtxRvsZ_[0] = iBooker.book2D("convVtxRvsZAll",
2769  " Photon Reco conversion vtx position",
2770  zBinForXray,
2771  zMinForXray,
2772  zMaxForXray,
2773  rBinForXray,
2774  rMinForXray,
2775  rMaxForXray);
2776  h_convVtxRvsZ_[1] = iBooker.book2D("convVtxRvsZBarrel",
2777  " Photon Reco conversion vtx position",
2778  zBinForXray,
2779  zMinForXray,
2780  zMaxForXray,
2781  rBinForXray,
2782  rMinForXray,
2783  rMaxForXray);
2784  h_convVtxRvsZ_[2] = iBooker.book2D("convVtxRvsZEndcap",
2785  " Photon Reco conversion vtx position",
2786  zBin2ForXray,
2787  zMinForXray,
2788  zMaxForXray,
2789  rBinForXray,
2790  rMinForXray,
2791  rMaxForXray);
2792  h_convVtxYvsX_ = iBooker.book2D(
2793  "convVtxYvsXTrkBarrel", " Photon Reco conversion vtx position, (x,y) eta<1 ", 100, -80., 80., 100, -80., 80.);
2794  //
2795  h_convSLVtxRvsZ_[0] = iBooker.book2D("convSLVtxRvsZAll",
2796  " Photon Reco single leg conversion innermost hit position",
2797  zBinForXray,
2798  zMinForXray,
2799  zMaxForXray,
2800  rBinForXray,
2801  rMinForXray,
2802  rMaxForXray);
2803  h_convSLVtxRvsZ_[1] = iBooker.book2D("convSLVtxRvsZBarrel",
2804  " Photon Reco single leg conversion innermost hit position",
2805  zBinForXray,
2806  zMinForXray,
2807  zMaxForXray,
2808  rBinForXray,
2809  rMinForXray,
2810  rMaxForXray);
2811  h_convSLVtxRvsZ_[2] = iBooker.book2D("convSLVtxRvsZEndcap",
2812  " Photon Reco single leg conversion innermost hit position",
2813  zBin2ForXray,
2814  zMinForXray,
2815  zMaxForXray,
2816  rBinForXray,
2817  rMinForXray,
2818  rMaxForXray);
2819 
2821  if (!isRunCentrally_) {
2822  h_convVtxRvsZ_zoom_[0] = iBooker.book2D("convVtxRvsZBarrelZoom1",
2823  " Photon Reco conversion vtx position",
2824  zBinForXray,
2825  zMinForXray,
2826  zMaxForXray,
2827  rBinForXray,
2828  -10.,
2829  40.);
2830  h_convVtxRvsZ_zoom_[1] = iBooker.book2D("convVtxRvsZBarrelZoom2",
2831  " Photon Reco conversion vtx position",
2832  zBinForXray,
2833  zMinForXray,
2834  zMaxForXray,
2835  rBinForXray,
2836  -10.,
2837  20.);
2838  h_convVtxYvsX_zoom_[0] = iBooker.book2D("convVtxYvsXTrkBarrelZoom1",
2839  " Photon Reco conversion vtx position, (x,y) eta<1 ",
2840  100,
2841  -40.,
2842  40.,
2843  100,
2844  -40.,
2845  40.);
2846  h_convVtxYvsX_zoom_[1] = iBooker.book2D("convVtxYvsXTrkBarrelZoom2",
2847  " Photon Reco conversion vtx position, (x,y) eta<1 ",
2848  100,
2849  -20.,
2850  20.,
2851  100,
2852  -20.,
2853  20.);
2854  }
2855 
2856  h_convVtxdX_ = iBooker.book1D("convVtxdX", " Photon Reco conversion vtx dX", 100, -20., 20.);
2857  h_convVtxdY_ = iBooker.book1D("convVtxdY", " Photon Reco conversion vtx dY", 100, -20., 20.);
2858  h_convVtxdZ_ = iBooker.book1D("convVtxdZ", " Photon Reco conversion vtx dZ", 100, -20., 20.);
2859  h_convVtxdR_ = iBooker.book1D("convVtxdR", " Photon Reco conversion vtx dR", 100, -20., 20.);
2860 
2862  iBooker.book1D("convVtxdX_barrel", " Photon Reco conversion vtx dX, |eta|<=1.2", 100, -20., 20.);
2864  iBooker.book1D("convVtxdY_barrel", " Photon Reco conversion vtx dY, |eta|<=1.2 ", 100, -20., 20.);
2866  iBooker.book1D("convVtxdZ_barrel", " Photon Reco conversion vtx dZ, |eta|<=1.2,", 100, -20., 20.);
2868  iBooker.book1D("convVtxdR_barrel", " Photon Reco conversion vtx dR, |eta|<=1.2", 100, -20., 20.);
2870  iBooker.book1D("convVtxdX_endcap", " Photon Reco conversion vtx dX, |eta|>1.2", 100, -20., 20.);
2872  iBooker.book1D("convVtxdY_endcap", " Photon Reco conversion vtx dY, |eta|>1.2", 100, -20., 20.);
2874  iBooker.book1D("convVtxdZ_endcap", " Photon Reco conversion vtx dZ, |eta|>1.2", 100, -20., 20.);
2876  iBooker.book1D("convVtxdR_endcap", " Photon Reco conversion vtx dR, |eta|>1.2 ", 100, -20., 20.);
2877 
2878  h_convVtxdPhi_ = iBooker.book1D("convVtxdPhi", " Photon Reco conversion vtx dPhi", 100, -0.005, 0.005);
2879  h_convVtxdEta_ = iBooker.book1D("convVtxdEta", " Photon Reco conversion vtx dEta", 100, -0.5, 0.5);
2880 
2881  if (!isRunCentrally_) {
2883  iBooker.book2D("h2ConvVtxdRVsR", "Photon Reco conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20.);
2884  h2_convVtxdRVsEta_ = iBooker.book2D(
2885  "h2ConvVtxdRVsEta", "Photon Reco conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20.);
2886  }
2887 
2888  p_convVtxdRVsR_ =
2889  iBooker.bookProfile("pConvVtxdRVsR", "Photon Reco conversion vtx dR vsR", rBin, rMin, rMax, 100, -20., 20., "");
2890  p_convVtxdRVsEta_ = iBooker.bookProfile(
2891  "pConvVtxdRVsEta", "Photon Reco conversion vtx dR vs Eta", etaBin2, etaMin, etaMax, 100, -20., 20., "");
2892  p_convVtxdXVsX_ = iBooker.bookProfile("pConvVtxdXVsX", "Conversion vtx dX vs X", 120, -60, 60, 100, -20., 20., "");
2893  p_convVtxdYVsY_ = iBooker.bookProfile("pConvVtxdYVsY", "Conversion vtx dY vs Y", 120, -60, 60, 100, -20., 20., "");
2894  p_convVtxdZVsZ_ =
2895  iBooker.bookProfile("pConvVtxdZVsZ", "Conversion vtx dZ vs Z", zBin, zMin, zMax, 100, -20., 20., "");
2896 
2897  if (!isRunCentrally_) {
2898  h2_convVtxRrecVsTrue_ = iBooker.book2D(
2899  "h2ConvVtxRrecVsTrue", "Photon Reco conversion vtx R rec vs true", rBin, rMin, rMax, rBin, rMin, rMax);
2900  }
2901 
2902  histname = "vtxChi2";
2903  h_vtxChi2_[0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, chi2Min, chi2Max);
2904  h_vtxChi2_[1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, chi2Min, chi2Max);
2905  h_vtxChi2_[2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, chi2Min, chi2Max);
2906  histname = "vtxChi2Prob";
2907  h_vtxChi2Prob_[0] = iBooker.book1D(histname + "All", "vertex #chi^{2} all", 100, 0., 1.);
2908  h_vtxChi2Prob_[1] = iBooker.book1D(histname + "Barrel", "vertex #chi^{2} barrel", 100, 0., 1.);
2909  h_vtxChi2Prob_[2] = iBooker.book1D(histname + "Endcap", "vertex #chi^{2} endcap", 100, 0., 1.);
2910 
2911  histname = "zPVFromTracks";
2912  h_zPVFromTracks_[0] = iBooker.book1D(histname + "All", " Photons: PV z from conversion tracks", 100, -30., 30.);
2913  h_zPVFromTracks_[1] = iBooker.book1D(histname + "Barrel", " Photons: PV z from conversion tracks", 100, -30., 30.);
2914  h_zPVFromTracks_[2] = iBooker.book1D(histname + "Endcap", " Photons: PV z from conversion tracks", 100, -30., 30.);
2915  h_zPVFromTracks_[3] = iBooker.book1D(histname + "EndcapP", " Photons: PV z from conversion tracks", 100, -30., 30.);
2916  h_zPVFromTracks_[4] = iBooker.book1D(histname + "EndcapM", " Photons: PV z from conversion tracks", 100, -30., 30.);
2917  histname = "dzPVFromTracks";
2918  h_dzPVFromTracks_[0] =
2919  iBooker.book1D(histname + "All", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2920  h_dzPVFromTracks_[1] =
2921  iBooker.book1D(histname + "Barrel", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2922  h_dzPVFromTracks_[2] =
2923  iBooker.book1D(histname + "Endcap", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2924  h_dzPVFromTracks_[3] =
2925  iBooker.book1D(histname + "EndcapP", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2926  h_dzPVFromTracks_[4] =
2927  iBooker.book1D(histname + "EndcapM", " Photons: PV Z_rec - Z_true from conversion tracks", 100, -10., 10.);
2928  p_dzPVVsR_ =
2929  iBooker.bookProfile("pdzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3., "");
2930  p_dzPVVsEta_ = iBooker.bookProfile(
2931  "pdzPVVsEta", "Photon Reco conversions: dz(PV) vs Eta", etaBin, etaMin, etaMax, 100, -3., 3., "");
2932 
2933  if (!isRunCentrally_) {
2934  h2_dzPVVsR_ = iBooker.book2D("h2dzPVVsR", "Photon Reco conversions: dz(PV) vs R", rBin, rMin, rMax, 100, -3., 3.);
2935  }
2936 
2938  if (!isRunCentrally_) {
2939  histname = "nHitsVsEta";
2940  nHitsVsEta_[0] = iBooker.book2D(histname + "AllTracks",
2941  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
2942  etaBin,
2943  etaMin,
2944  etaMax,
2945  25,
2946  0.,
2947  25.);
2948 
2949  histname = "nHitsVsEta";
2950  nHitsVsEta_[1] = iBooker.book2D(histname + "AssTracks",
2951  "Photons:Tracks from conversions: # of hits vs #eta associated tracks",
2952  etaBin,
2953  etaMin,
2954  etaMax,
2955  25,
2956  0.,
2957  25.);
2958 
2959  histname = "nHitsVsR";
2960  nHitsVsR_[0] = iBooker.book2D(histname + "AllTracks",
2961  "Photons:Tracks from conversions: # of hits vs radius all tracks",
2962  rBin,
2963  rMin,
2964  rMax,
2965  25,
2966  0.,
2967  25);
2968 
2969  histname = "nHitsVsR";
2970  nHitsVsR_[1] = iBooker.book2D(histname + "AssTracks",
2971  "Photons:Tracks from conversions: # of hits vs radius associated tracks",
2972  rBin,
2973  rMin,
2974  rMax,
2975  25,
2976  0.,
2977  25);
2978 
2979  histname = "h2Chi2VsEta";
2980  h2_Chi2VsEta_[0] = iBooker.book2D(
2981  histname + "All", " Reco Track #chi^{2} vs #eta: All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max);
2982 
2983  histname = "h2Chi2VsR";
2984  h2_Chi2VsR_[0] =
2985  iBooker.book2D(histname + "All", " Reco Track #chi^{2} vs R: All ", rBin, rMin, rMax, 100, chi2Min, chi2Max);
2986  }
2987 
2988  histname = "h_nHitsVsEta";
2989  p_nHitsVsEta_[0] = iBooker.bookProfile(histname + "AllTracks",
2990  "Photons:Tracks from conversions: # of hits vs #eta all tracks",
2991  etaBin,
2992  etaMin,
2993  etaMax,
2994  25,
2995  -0.5,
2996  24.5,
2997  "");
2998 
2999  histname = "h_nHitsVsEta";
3000  p_nHitsVsEta_[1] = iBooker.bookProfile(histname + "AssTracks",
3001  "Photons:Tracks from conversions: # of hits vs #eta associated tracks",
3002  etaBin,
3003  etaMin,
3004  etaMax,
3005  25,
3006  -0.5,
3007  24.5,
3008  "");
3009 
3010  histname = "p_nHitsVsEtaSL";
3011  p_nHitsVsEtaSL_[0] = iBooker.bookProfile(histname + "AllTracks",
3012  "Photons:Tracks from single leg conversions: # of hits vs #eta all tracks",
3013  etaBin,
3014  etaMin,
3015  etaMax,
3016  25,
3017  -0.5,
3018  24.5,
3019  "");
3020 
3021  histname = "h_nHitsVsR";
3022  p_nHitsVsR_[0] = iBooker.bookProfile(histname + "AllTracks",
3023  "Photons:Tracks from conversions: # of hits vs radius all tracks",
3024  rBin,
3025  rMin,
3026  rMax,
3027  25,
3028  -0.5,
3029  24.5,
3030  "");
3031  histname = "p_nHitsVsRSL";
3032  p_nHitsVsRSL_[0] = iBooker.bookProfile(histname + "AllTracks",
3033  "Photons:Tracks from single leg conversions: # of hits vs radius all tracks",
3034  rBin,
3035  rMin,
3036  rMax,
3037  25,
3038  -0.5,
3039  24.5,
3040  "");
3041 
3042  histname = "tkChi2";
3043  h_tkChi2_[0] = iBooker.book1D(
3044  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 100, chi2Min, chi2Max);
3045  histname = "tkChi2SL";
3046  h_tkChi2SL_[0] = iBooker.book1D(histname + "AllTracks",
3047  "Photons:Tracks from single leg conversions: #chi^{2} of associated tracks",
3048  100,
3049  chi2Min,
3050  chi2Max);
3051  histname = "tkChi2Large";
3052  h_tkChi2Large_[0] = iBooker.book1D(
3053  histname + "AllTracks", "Photons:Tracks from conversions: #chi^{2} of all tracks", 1000, 0., 5000.0);
3054 
3055  histname = "h_nHitsVsR";
3056  p_nHitsVsR_[1] = iBooker.bookProfile(histname + "AssTracks",
3057  "Photons:Tracks from conversions: # of hits vs radius associated tracks",
3058  rBin,
3059  rMin,
3060  rMax,
3061  25,
3062  -0.5,
3063  24.5,
3064  "");
3065 
3066  histname = "tkChi2";
3067  h_tkChi2_[1] = iBooker.book1D(
3068  histname + "AssTracks", "Photons:Tracks from conversions: #chi^{2} of associated tracks", 100, chi2Min, chi2Max);
3069  histname = "tkChi2Large";
3070  h_tkChi2Large_[1] = iBooker.book1D(
3071  histname + "AssTracks", "Photons:Tracks from conversions: #chi^{2} of associated tracks", 1000, 0., 5000.0);
3072 
3073  histname = "pChi2VsEta";
3074  p_Chi2VsEta_[0] = iBooker.bookProfile(
3075  histname + "All", " Reco Track #chi^{2} vs #eta : All ", etaBin2, etaMin, etaMax, 100, chi2Min, chi2Max, "");
3076 
3077  histname = "pChi2VsR";
3078  p_Chi2VsR_[0] = iBooker.bookProfile(
3079  histname + "All", " Reco Track #chi^{2} vas R : All ", rBin, rMin, rMax, 100, chi2Min, chi2Max, "");
3080 
3081  histname = "hTkD0";
3082  h_TkD0_[0] = iBooker.book1D(histname + "All", " Reco Track D0*q: All ", 100, -0.1, 0.6);
3083  h_TkD0_[1] = iBooker.book1D(histname + "Barrel", " Reco Track D0*q: Barrel ", 100, -0.1, 0.6);
3084  h_TkD0_[2] = iBooker.book1D(histname + "Endcap", " Reco Track D0*q: Endcap ", 100, -0.1, 0.6);
3085 
3086  histname = "hTkPtPull";
3087  h_TkPtPull_[0] = iBooker.book1D(histname + "All", " Reco Track Pt pull: All ", 100, -10., 10.);
3088  histname = "hTkPtPull";
3089  h_TkPtPull_[1] = iBooker.book1D(histname + "Barrel", " Reco Track Pt pull: Barrel ", 100, -10., 10.);
3090  histname = "hTkPtPull";
3091  h_TkPtPull_[2] = iBooker.book1D(histname + "Endcap", " Reco Track Pt pull: Endcap ", 100, -10., 10.);
3092 
3093  histname = "pTkPtPullEta";
3094  p_TkPtPull_[0] =
3095  iBooker.bookProfile(histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -10., 10., " ");
3096 
3097  if (!isRunCentrally_) {
3098  histname = "h2TkPtPullEta";
3099  h2_TkPtPull_[0] =
3100  iBooker.book2D(histname + "All", " Reco Track Pt pull: All ", etaBin2, etaMin, etaMax, 100, -10., 10.);
3101 
3102  histname = "PtRecVsPtSim";
3103  h2_PtRecVsPtSim_[0] =
3104  iBooker.book2D(histname + "All", "Pt Rec vs Pt sim: All ", etBin, etMin, etMax, etBin, etMin, etMax);
3105  h2_PtRecVsPtSim_[1] =
3106  iBooker.book2D(histname + "Barrel", "Pt Rec vs Pt sim: Barrel ", etBin, etMin, etMax, etBin, etMin, etMax);
3107  h2_PtRecVsPtSim_[2] =
3108  iBooker.book2D(histname + "Endcap", "Pt Rec vs Pt sim: Endcap ", etBin, etMin, etMax, etBin, etMin, etMax);
3109  histname = "PtRecVsPtSimMixProv";
3110  h2_PtRecVsPtSimMixProv_ = iBooker.book2D(
3111  histname + "All", "Pt Rec vs Pt sim All for mix with general tracks ", etBin, etMin, etMax, etBin, etMin, etMax);
3112  }
3113 
3114  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" ) {
3115  histname = "eBcOverTkPout";
3116  hBCEnergyOverTrackPout_[0] = iBooker.book1D(histname + "All", "Matrching BC E/P_out: all Ecal ", 100, 0., 5.);
3117  hBCEnergyOverTrackPout_[1] = iBooker.book1D(histname + "Barrel", "Matrching BC E/P_out: Barrel ", 100, 0., 5.);
3118  hBCEnergyOverTrackPout_[2] = iBooker.book1D(histname + "Endcap", "Matrching BC E/P_out: Endcap ", 100, 0., 5.);
3119  // }
3120 
3122  h_OIinnermostHitR_ = iBooker.book1D("OIinnermostHitR", " R innermost hit for OI tracks ", 50, 0., 25);
3123  h_IOinnermostHitR_ = iBooker.book1D("IOinnermostHitR", " R innermost hit for IO tracks ", 50, 0., 25);
3124 
3126  h_trkProv_[0] = iBooker.book1D("allTrkProv", " Track pair provenance ", 4, 0., 4.);
3127  h_trkProv_[1] = iBooker.book1D("assTrkProv", " Track pair provenance ", 4, 0., 4.);
3128  //
3129  h_trkAlgo_ = iBooker.book1D("allTrackAlgo",
3130  " Track Algo ",
3132  -0.5,
3133  static_cast<double>(reco::TrackBase::algoSize) - 0.5);
3134  h_convAlgo_ = iBooker.book1D("allConvAlgo", " Conv Algo ", 5, -0.5, 4.5);
3135  h_convQuality_ = iBooker.book1D("allConvQuality", "Conv quality ", 11, -0.5, 11.);
3136 
3137  // histos for fake rate
3138  histname = "h_RecoConvTwoTracksEta";
3140  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
3141  histname = "h_RecoConvTwoTracksPhi";
3143  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
3144  histname = "h_RecoConvTwoTracksR";
3146  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated R", rBin, rMin, rMax);
3147  histname = "h_RecoConvTwoTracksZ";
3149  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Z", zBin, zMin, zMax);
3150  histname = "h_RecoConvTwoTracksEt";
3152  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Et", etBin, etMin, etMax);
3153  //
3154  histname = "h_RecoConvTwoMTracksEta";
3156  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #eta", etaBin2, etaMin, etaMax);
3157  histname = "h_RecoConvTwoMTracksPhi";
3159  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #phi", phiBin, phiMin, phiMax);
3160  histname = "h_RecoConvTwoMTracksR";
3162  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated R", rBin, rMin, rMax);
3163  histname = "h_RecoConvTwoMTracksZ";
3165  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Z", zBin, zMin, zMax);
3166  histname = "h_RecoConvTwoMTracksEt";
3168  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Et", etBin, etMin, etMax);
3169 }
3170 
3171 void PhotonValidator::dqmBeginRun(edm::Run const& r, edm::EventSetup const& theEventSetup) {
3172  //get magnetic field
3173  edm::LogInfo("ConvertedPhotonProducer") << " get magnetic field"
3174  << "\n";
3175  theMF_ = theEventSetup.getHandle(magneticFieldToken_);
3176 
3177  thePhotonMCTruthFinder_ = std::make_unique<PhotonMCTruthFinder>();
3178 }
3179 
3181 
3183  thePhotonMCTruthFinder_->clear();
3184  using namespace edm;
3185  // const float etaPhiDistance=0.01;
3186  // Fiducial region
3187  // const float TRK_BARL =0.9;
3188  const float BARL = 1.4442; // DAQ TDR p.290
3189  // const float END_LO = 1.566; // unused
3190  const float END_HI = 2.5;
3191  // Electron mass
3192  //const Float_t mElec= 0.000511;
3193 
3195  e.getByLabel("trackAssociatorByHitsForPhotonValidation", theHitsAssociator);
3197 
3198  nEvt_++;
3199  LogInfo("PhotonValidator") << "PhotonValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_
3200  << "\n";
3201 
3202  // get the geometry from the event setup:
3204 
3206  e.getByToken(offline_pvToken_, vtxH);
3207  h_nRecoVtx_->Fill(float(vtxH->size()));
3208 
3209  // Transform Track into TransientTrack (needed by the Vertex fitter)
3210  auto theTTB = esup.getHandle(transientTrackBuilderToken_);
3211 
3213  Handle<reco::PhotonCollection> photonHandle;
3214  e.getByToken(photonCollectionToken_, photonHandle);
3215  const reco::PhotonCollection photonCollection = *(photonHandle.product());
3216  if (!photonHandle.isValid()) {
3217  edm::LogError("PhotonProducer") << "Error! Can't get the Photon collection " << std::endl;
3218  return;
3219  }
3220 
3221  // Get the PF refined cluster collection
3222  Handle<reco::PFCandidateCollection> pfCandidateHandle;
3223  e.getByToken(pfCandidates_, pfCandidateHandle);
3224  if (!pfCandidateHandle.isValid()) {
3225  edm::LogError("PhotonValidator") << "Error! Can't get the product pfCandidates " << std::endl;
3226  }
3227 
3228  edm::Handle<edm::ValueMap<std::vector<reco::PFCandidateRef> > > phoToParticleBasedIsoMapHandle;
3229  edm::ValueMap<std::vector<reco::PFCandidateRef> > phoToParticleBasedIsoMap;
3230  if (fName_ == "pfPhotonValidator") {
3231  e.getByToken(particleBasedIso_token, phoToParticleBasedIsoMapHandle);
3232  if (!phoToParticleBasedIsoMapHandle.isValid()) {
3233  edm::LogInfo("PhotonValidator") << "Error! Can't get the product: valueMap photons to particle based iso "
3234  << std::endl;
3235  }
3236  phoToParticleBasedIsoMap = *(phoToParticleBasedIsoMapHandle.product());
3237  }
3238 
3239  Handle<edm::View<reco::Track> > outInTrkHandle;
3240  Handle<edm::View<reco::Track> > inOutTrkHandle;
3241  if (!fastSim_) {
3243  e.getByToken(conversionOITrackPr_Token_, outInTrkHandle);
3245  e.getByToken(conversionIOTrackPr_Token_, inOutTrkHandle);
3246 
3247  } // if !fastSim
3248 
3250  //get simtrack info
3251  std::vector<SimTrack> theSimTracks;
3252  std::vector<SimVertex> theSimVertices;
3255 
3256  if (!fastSim_) {
3257  e.getByToken(g4_simTk_Token_, SimTk);
3258  e.getByToken(g4_simVtx_Token_, SimVtx);
3259  } else {
3260  e.getByToken(famos_simTk_Token_, SimTk);
3261  e.getByToken(famos_simVtx_Token_, SimVtx);
3262  }
3263 
3264  theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
3265  theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
3266  std::vector<PhotonMCTruth> mcPhotons = thePhotonMCTruthFinder_->find(theSimTracks, theSimVertices);
3267 
3269  e.getByToken(hepMC_Token_, hepMC);
3270  const HepMC::GenEvent* myGenEvent = hepMC->GetEvent();
3271 
3273  e.getByToken(genpartToken_, genParticles);
3274 
3275  // get generated jets
3276  Handle<reco::GenJetCollection> GenJetsHandle;
3277  e.getByToken(genjets_Token_, GenJetsHandle);
3278  reco::GenJetCollection genJetCollection = *(GenJetsHandle.product());
3279 
3280  // Get electron tracking truth
3281  bool useTP = parameters_.getParameter<bool>("useTP");
3283  edm::Handle<TrackingParticleCollection> ElectronTPHandle;
3284  if (useTP) {
3285  if (!fastSim_) {
3286  e.getByToken(token_tp_, ElectronTPHandle);
3287  trackingParticles = *(ElectronTPHandle.product());
3288  }
3289  }
3290 
3292  std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
3293  reco::SimToRecoCollection OISimToReco;
3294  reco::SimToRecoCollection IOSimToReco;
3295  // Reco to Sim
3296  reco::RecoToSimCollection OIRecoToSim;
3297  reco::RecoToSimCollection IORecoToSim;
3298 
3299  if (useTP) {
3300  if (!fastSim_) {
3301  // Sim to Reco
3302  OISimToReco = trackAssociator->associateSimToReco(outInTrkHandle, ElectronTPHandle);
3303  IOSimToReco = trackAssociator->associateSimToReco(inOutTrkHandle, ElectronTPHandle);
3304  // Reco to Sim
3305  OIRecoToSim = trackAssociator->associateRecoToSim(outInTrkHandle, ElectronTPHandle);
3306  IORecoToSim = trackAssociator->associateRecoToSim(inOutTrkHandle, ElectronTPHandle);
3307  }
3308  }
3309  //
3310  vector<reco::SimToRecoCollection*> StoRCollPtrs;
3311  StoRCollPtrs.push_back(&OISimToReco);
3312  StoRCollPtrs.push_back(&IOSimToReco);
3313  vector<reco::RecoToSimCollection*> RtoSCollPtrs;
3314  RtoSCollPtrs.push_back(&OIRecoToSim);
3315  RtoSCollPtrs.push_back(&IORecoToSim);
3316  //
3317  for (int i = 0; i < 2; i++)
3318  nSimPho_[i] = 0;
3319  for (int i = 0; i < 2; i++)
3320  nSimConv_[i] = 0;
3321 
3322  std::vector<reco::PhotonRef> myPhotons;
3323 
3324  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3325  reco::PhotonRef phoRef(reco::PhotonRef(photonHandle, iPho));
3326  // for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3327  if (fabs(phoRef->eta()) > 2.5)
3328  continue;
3329  myPhotons.push_back(phoRef);
3330  }
3331 
3332  std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
3333  // if ( ! isRunCentrally_ ) {
3334  if (myPhotons.size() >= 2) {
3335  if (myPhotons[0]->et() > 40 && myPhotons[1]->et() > 25) {
3336  math::XYZTLorentzVector p12 = myPhotons[0]->p4() + myPhotons[1]->p4();
3337  math::XYZTLorentzVector p12_regr1 =
3338  myPhotons[0]->p4(reco::Photon::regression1) + myPhotons[1]->p4(reco::Photon::regression1);
3339  math::XYZTLorentzVector p12_regr2 =
3340  myPhotons[0]->p4(reco::Photon::regression2) + myPhotons[1]->p4(reco::Photon::regression2);
3341  float gamgamMass2 = p12.Dot(p12);
3342  float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
3343  float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
3344 
3346  if (gamgamMass2 > 0) {
3347  // total
3348  h_gamgamMass_[0][0]->Fill(sqrt(gamgamMass2));
3349  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3350  h_gamgamMass_[0][1]->Fill(sqrt(gamgamMass2));
3351  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3352  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3353  h_gamgamMass_[0][2]->Fill(sqrt(gamgamMass2));
3354  // Golden photons
3355  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3356  h_gamgamMass_[1][0]->Fill(sqrt(gamgamMass2));
3357  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3358  h_gamgamMass_[1][1]->Fill(sqrt(gamgamMass2));
3359  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3360  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3361  h_gamgamMass_[1][2]->Fill(sqrt(gamgamMass2));
3362  }
3363  // both photons converted
3364  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3365  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3366  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3367  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3368  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3369  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3370  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3371  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3372  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3373  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3374  }
3375  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3376  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3377  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3378  }
3379  }
3380  }
3381  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3382  myPhotons[1]->r9() > 0.93) { // one photon converted
3383  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3384  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3385  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3386  if (chi2Prob1 > 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()) {
3392  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3393  }
3394  }
3395  }
3396  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3397  myPhotons[0]->r9() > 0.93) { // one photon converted
3398  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3399  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3400  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3401  if (chi2Prob1 > 0.0005) {
3402  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3403  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3404  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3405  }
3406  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3407  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3408  }
3409  }
3410  }
3411  }
3412  } // gamgamMass2 > 0
3413 
3415  if (gamgamMass2_regr1 > 0) {
3416  // total
3417  h_gamgamMassRegr1_[0][0]->Fill(sqrt(gamgamMass2_regr1));
3418  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3419  h_gamgamMassRegr1_[0][1]->Fill(sqrt(gamgamMass2_regr1));
3420  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3421  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3422  h_gamgamMassRegr1_[0][2]->Fill(sqrt(gamgamMass2_regr1));
3423  // Golden photons
3424  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3425  h_gamgamMassRegr1_[1][0]->Fill(sqrt(gamgamMass2_regr1));
3426  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3427  h_gamgamMassRegr1_[1][1]->Fill(sqrt(gamgamMass2_regr1));
3428  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3429  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3430  h_gamgamMassRegr1_[1][2]->Fill(sqrt(gamgamMass2_regr1));
3431  }
3432 
3433  // both photons converted
3434  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3435  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3436  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3437  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3438  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3439  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3440  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3441  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3442  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3443  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3444  }
3445  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3446  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3447  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3448  }
3449  }
3450  }
3451  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3452  myPhotons[1]->r9() > 0.93) { // one photon converted
3453  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3454  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3455  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3456  if (chi2Prob1 > 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()) {
3462  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3463  }
3464  }
3465  }
3466  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3467  myPhotons[0]->r9() > 0.93) { // one photon converted
3468  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3469  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3470  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3471  if (chi2Prob1 > 0.0005) {
3472  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3473  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3474  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3475  }
3476  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3477  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3478  }
3479  }
3480  }
3481  }
3482  } // gamgamMass2_regr1 > 0
3483 
3485  if (gamgamMass2_regr2 > 0) {
3486  // total
3487  h_gamgamMassRegr2_[0][0]->Fill(sqrt(gamgamMass2_regr2));
3488  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3489  h_gamgamMassRegr2_[0][1]->Fill(sqrt(gamgamMass2_regr2));
3490  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3491  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3492  h_gamgamMassRegr2_[0][2]->Fill(sqrt(gamgamMass2_regr2));
3493  // Golden photons
3494  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3495  h_gamgamMassRegr2_[1][0]->Fill(sqrt(gamgamMass2_regr2));
3496  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3497  h_gamgamMassRegr2_[1][1]->Fill(sqrt(gamgamMass2_regr2));
3498  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3499  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3500  h_gamgamMassRegr2_[1][2]->Fill(sqrt(gamgamMass2_regr2));
3501  }
3502 
3503  // both photons converted
3504  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3505  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3506  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3507  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3508  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3509  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3510  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3511  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3512  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3513  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3514  }
3515  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3516  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3517  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3518  }
3519  }
3520  }
3521  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3522  myPhotons[1]->r9() > 0.93) { // one photon converted
3523  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3524  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3525  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3526  if (chi2Prob1 > 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()) {
3532  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3533  }
3534  }
3535  }
3536  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3537  myPhotons[0]->r9() > 0.93) { // one photon converted
3538  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3539  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3540  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3541  if (chi2Prob1 > 0.0005) {
3542  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3543  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3544  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3545  }
3546  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3547  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3548  }
3549  }
3550  }
3551  }
3552  } // gamgamMass2_regr2 > 0
3553  }
3554  }
3555  // }
3556 
3557  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
3558  if ((*mcPho).fourMomentum().et() < minPhoEtCut_)
3559  continue;
3560 
3561  for (HepMC::GenEvent::particle_const_iterator mcIter = myGenEvent->particles_begin();
3562  mcIter != myGenEvent->particles_end();
3563  mcIter++) {
3564  if ((*mcIter)->pdg_id() != 22)
3565  continue;
3566  bool isTheSame = false;
3567  HepMC::GenParticle* mother = nullptr;
3568  if ((*mcIter)->production_vertex()) {
3569  if ((*mcIter)->production_vertex()->particles_begin(HepMC::parents) !=
3570  (*mcIter)->production_vertex()->particles_end(HepMC::parents))
3571  mother = *((*mcIter)->production_vertex()->particles_begin(HepMC::parents));
3572  }
3573 
3574  float mcPhi = (*mcPho).fourMomentum().phi();
3575  mcPhi_ = phiNormalization(mcPhi);
3576  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
3577  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
3578 
3579  mcConvR_ = (*mcPho).vertex().perp();
3580  mcConvX_ = (*mcPho).vertex().x();
3581  mcConvY_ = (*mcPho).vertex().y();
3582  mcConvZ_ = (*mcPho).vertex().z();
3583  mcConvEta_ = (*mcPho).vertex().eta();
3584  mcConvPhi_ = (*mcPho).vertex().phi();
3585 
3586  if (fabs(mcEta_) > END_HI)
3587  continue;
3588 
3589  if (mother == nullptr || (mother != nullptr && mother->pdg_id() == 22) ||
3590  (mother != nullptr && mother->pdg_id() == 25) || (mother != nullptr && mother->pdg_id() == 35)) {
3591  double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
3592  float phiMother = (*mcIter)->momentum().phi();
3593  double dPhi = phiNormalization(phiMother) - mcPhi_;
3594  double dEta = fabs((*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity());
3595 
3596  if (dEta <= 0.0001 && dPhi <= 0.0001 && dPt <= 0.0001)
3597  isTheSame = true;
3598  }
3599  if (!isTheSame)
3600  continue;
3601 
3602  nSimPho_[0]++;
3603  if (!isRunCentrally_) {
3604  h_SimPhoMotherEt_[0]->Fill((*mcPho).motherMomentum().et());
3605  h_SimPhoMotherEta_[0]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3606  }
3607 
3608  h_SimPho_[0]->Fill(mcEta_);
3609  h_SimPho_[1]->Fill(mcPhi_);
3610  h_SimPho_[2]->Fill((*mcPho).fourMomentum().et());
3611 
3613 
3614  bool goodSimConversion = false;
3615  bool visibleConversion = false;
3616  bool visibleConversionsWithTwoSimTracks = false;
3617  if ((*mcPho).isAConversion() == 1) {
3618  nSimConv_[0]++;
3619  h_AllSimConv_[0]->Fill(mcEta_);
3620  h_AllSimConv_[1]->Fill(mcPhi_);
3623  h_AllSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3624 
3625  if (!isRunCentrally_) {
3626  if (mcConvR_ < 51)
3628  }
3629 
3630  if ((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
3631  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
3632  visibleConversion = true;
3633 
3634  theConvTP_.clear();
3635  for (size_t i = 0; i < trackingParticles.size(); ++i) {
3636  TrackingParticleRef tp(ElectronTPHandle, i);
3637  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.001 &&
3638  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.001) {
3640  }
3641  }
3642  if (theConvTP_.size() == 2)
3643  visibleConversionsWithTwoSimTracks = true;
3644  goodSimConversion = false;
3645 
3646  if (visibleConversion && visibleConversionsWithTwoSimTracks)
3647  goodSimConversion = true;
3648  if (goodSimConversion) {
3649  nSimConv_[1]++;
3650  h_VisSimConv_[0]->Fill(mcEta_);
3651  h_VisSimConv_[1]->Fill(mcPhi_);
3654  h_VisSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3655 
3656  if (useTP) {
3657  if (!isRunCentrally_) {
3659  iTrk != theConvTP_.end();
3660  ++iTrk) {
3661  h_simTkPt_->Fill((*iTrk)->pt());
3662  h_simTkEta_->Fill((*iTrk)->eta());
3663  }
3664  }
3665  }
3666  }
3667  }
3668 
3669  float minDelta = 10000.;
3670  std::vector<reco::PhotonRef> thePhotons;
3671  int index = 0;
3672  int iMatch = -1;
3673  bool matched = false;
3674 
3675  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3676  reco::PhotonRef aPho(reco::PhotonRef(photonHandle, iPho));
3677  thePhotons.push_back(aPho);
3678  float phiPho = aPho->phi();
3679  float etaPho = aPho->eta();
3680  float deltaPhi = phiPho - mcPhi_;
3681  float deltaEta = etaPho - mcEta_;
3682  if (deltaPhi > pi)
3683  deltaPhi -= twopi;
3684  if (deltaPhi < -pi)
3685  deltaPhi += twopi;
3686  deltaPhi = pow(deltaPhi, 2);
3687  deltaEta = pow(deltaEta, 2);
3688  float delta = sqrt(deltaPhi + deltaEta);
3689  if (delta < 0.1 && delta < minDelta) {
3690  minDelta = delta;
3691  iMatch = index;
3692  }
3693  index++;
3694  } // end loop over reco photons
3695  if (iMatch > -1)
3696  matched = true;
3697 
3698  if (matched) {
3699  nSimPho_[1]++;
3700  if (!isRunCentrally_) {
3701  h_SimPhoMotherEt_[1]->Fill((*mcPho).motherMomentum().et());
3702  h_SimPhoMotherEta_[1]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3703  }
3706  h_MatchedSimPho_[2]->Fill((*mcPho).fourMomentum().et());
3707  }
3708 
3709  if (!matched)
3710  continue;
3711 
3712  bool phoIsInBarrel = false; // full barrel
3713  bool phoIsInBarrel1 = false; // |eta| <=1
3714  bool phoIsInBarrel2 = false; // |eta| >1
3715  bool phoIsInEndcap = false;
3716  bool phoIsInEndcapP = false;
3717  bool phoIsInEndcapM = false;
3718 
3719  reco::PhotonRef matchingPho = thePhotons[iMatch];
3720 
3721  if (fabs(matchingPho->superCluster()->position().eta()) < 1.479) {
3722  phoIsInBarrel = true;
3723  } else {
3724  phoIsInEndcap = true;
3725  if (matchingPho->superCluster()->position().eta() > 0)
3726  phoIsInEndcapP = true;
3727  if (matchingPho->superCluster()->position().eta() < 0)
3728  phoIsInEndcapM = true;
3729  }
3730  if (fabs(matchingPho->superCluster()->position().eta()) <= 1) {
3731  phoIsInBarrel1 = true;
3732  } else if (fabs(matchingPho->superCluster()->position().eta()) > 1) {
3733  phoIsInBarrel2 = true;
3734  }
3735 
3736  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
3737  if (phoIsInBarrel) {
3738  // Get handle to rec hits ecal barrel
3739  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
3740  if (!ecalRecHitHandle.isValid()) {
3741  Labels l;
3743  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3744  return;
3745  }
3746 
3747  } else if (phoIsInEndcap) {
3748  // Get handle to rec hits ecal encap
3749  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
3750  if (!ecalRecHitHandle.isValid()) {
3751  Labels l;
3753  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3754  return;
3755  }
3756  }
3757 
3758  int type = 0;
3759  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
3760  float photonE = matchingPho->energy();
3761  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
3762  //float photonEt= matchingPho->energy()/cosh( matchingPho->eta()) ;
3763  float photonEt = matchingPho->pt();
3764  float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
3765  float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
3766  float r9 = matchingPho->r9();
3767  // float full5x5_r9 = matchingPho->full5x5_r9();
3768  float r1 = matchingPho->r1x5();
3769  float r2 = matchingPho->r2x5();
3770  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
3771  //float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
3772  float hOverE = matchingPho->hadronicOverEm();
3773  float newhOverE = matchingPho->hadTowOverEm();
3774  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
3775  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
3776  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
3777  float trkIso = matchingPho->trkSumPtSolidConeDR04();
3778  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
3779  // PF related quantities
3780  float chargedHadIso = matchingPho->chargedHadronIso();
3781  float neutralHadIso = matchingPho->neutralHadronIso();
3782  float photonIso = matchingPho->photonIso();
3783  float etOutsideMustache = matchingPho->etOutsideMustache();
3784  int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
3785  float pfMVA = matchingPho->pfMVA();
3786 
3787  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
3788  bool atLeastOneDeadChannel = false;
3789  for (reco::CaloCluster_iterator bcIt = matchingPho->superCluster()->clustersBegin();
3790  bcIt != matchingPho->superCluster()->clustersEnd();
3791  ++bcIt) {
3792  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3793  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
3794  ++it) {
3795  if (rhIt->first == (*it).id()) {
3796  if ((*it).recoFlag() == 9) {
3797  atLeastOneDeadChannel = true;
3798  break;
3799  }
3800  }
3801  }
3802  }
3803  }
3804 
3805  if (atLeastOneDeadChannel) {
3808  h_MatchedSimPhoBadCh_[2]->Fill((*mcPho).fourMomentum().et());
3809  }
3810 
3811  if (phoIsInBarrel)
3812  h_phoPixSeedSize_[0]->Fill(matchingPho->electronPixelSeeds().size());
3813  else
3814  h_phoPixSeedSize_[1]->Fill(matchingPho->electronPixelSeeds().size());
3815 
3816  h_scEta_[type]->Fill(matchingPho->superCluster()->eta());
3817  h_scPhi_[type]->Fill(matchingPho->superCluster()->phi());
3818  if (!isRunCentrally_) {
3819  h_scEtaWidth_[type]->Fill(matchingPho->superCluster()->etaWidth());
3820  h_scPhiWidth_[type]->Fill(matchingPho->superCluster()->phiWidth());
3821  }
3822  h_scE_[type][0]->Fill(matchingPho->superCluster()->energy());
3823  h_scEt_[type][0]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3824  if (phoIsInEndcap)
3825  h_psE_->Fill(matchingPho->superCluster()->preshowerEnergy());
3826  //
3827  h_r9_[type][0]->Fill(r9);
3828  //
3829  h_r1_[type][0]->Fill(r1);
3830  //
3831  h_r2_[type][0]->Fill(r2);
3832  //
3834  //
3835  h_hOverE_[type][0]->Fill(hOverE);
3836  p_r9VsEta_[0]->Fill(mcEta_, r9);
3837 
3838  if (!isRunCentrally_) {
3839  h2_r9VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r9);
3840  h2_r1VsEta_[0]->Fill(mcEta_, r1);
3841  h2_r1VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r1);
3842  h2_r2VsEta_[0]->Fill(mcEta_, r2);
3843  h2_r2VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r2);
3845  h2_sigmaIetaIetaVsEt_[0]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3847  h2_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3848  }
3850  p_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3851  //
3852  h_newhOverE_[type][0]->Fill(newhOverE);
3853  p_newhOverEVsEta_[0]->Fill(mcEta_, newhOverE);
3854  p_newhOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhOverE);
3855 
3856  //
3858  if (!isRunCentrally_) {
3860  h2_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3862  h2_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3863  }
3865  if (!isRunCentrally_)
3866  p_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3867  //
3870  if (!isRunCentrally_)
3871  p_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3872  //
3873  if (!isRunCentrally_)
3874  h_hcalTowerBcSumEtConeDR04_[type][0]->Fill(newhcalIso);
3875  p_hcalTowerBcSumEtConeDR04VsEta_[0]->Fill(mcEta_, newhcalIso);
3876  if (!isRunCentrally_)
3877  p_hcalTowerBcSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
3878  //
3880  h_nTrkSolidConeDR04_[type][0]->Fill(nIsoTrk);
3881 
3882  if (!isRunCentrally_) {
3884  h2_isoTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), trkIso);
3885  h2_nTrkSolidConeDR04VsEta_[0]->Fill(mcEta_, nIsoTrk);
3886  h2_nTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3887  }
3888 
3889  h_chHadIso_[0]->Fill(chargedHadIso);
3890  h_nHadIso_[0]->Fill(neutralHadIso);
3891  h_phoIso_[0]->Fill(photonIso);
3892  h_nCluOutsideMustache_[0]->Fill(float(nClusterOutsideMustache));
3893  h_etOutsideMustache_[0]->Fill(etOutsideMustache);
3894  h_pfMva_[0]->Fill(pfMVA);
3895  //
3896  h_phoEta_[type]->Fill(matchingPho->eta());
3897  h_phoPhi_[type]->Fill(matchingPho->phi());
3898  h_phoDEta_[0]->Fill(matchingPho->eta() - (*mcPho).fourMomentum().eta());
3899  h_phoDPhi_[0]->Fill(matchingPho->phi() - mcPhi_);
3900  h_phoE_[type][0]->Fill(photonE);
3901  h_phoEt_[type][0]->Fill(photonEt);
3902  h_nConv_[0][0]->Fill(float(matchingPho->conversions().size()));
3903  h_nConv_[1][0]->Fill(float(matchingPho->conversionsOneLeg().size()));
3904 
3905  //
3906  h_phoERes_[0][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3907  h_phoSigmaEoE_[0][0]->Fill(sigmaEoE);
3908  h_phoEResRegr1_[0][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3909  h_phoEResRegr2_[0][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3910 
3911  p_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3912  p_sigmaEoEVsEta_[0]->Fill(mcEta_, sigmaEoE);
3913  p_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3914 
3915  if (!isRunCentrally_)
3916  h2_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3917  if (!isRunCentrally_)
3918  h2_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3919  if (!isRunCentrally_)
3920  h2_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3921  if (!isRunCentrally_)
3922  h2_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3923  if (!isRunCentrally_)
3924  p_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3925  if (!isRunCentrally_)
3926  p_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3927  //
3928  if ((*mcPho).isAConversion() == 0) {
3929  if (!isRunCentrally_) {
3930  h2_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3931  h2_r9VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r9);
3932  //
3933  h2_r1VsEta_[1]->Fill(mcEta_, r1);
3934  h2_r1VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r1);
3935  //
3936  h2_r2VsEta_[1]->Fill(mcEta_, r2);
3937  h2_r2VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r2);
3938  //
3940  h2_sigmaIetaIetaVsEt_[1]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3941  //
3943  h2_hOverEVsEt_[1]->Fill((*mcPho).fourMomentum().et(), hOverE);
3944  }
3945 
3946  if (!isRunCentrally_) {
3950  h2_isoTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), trkIso);
3951  h2_nTrkSolidConeDR04VsEta_[1]->Fill(mcEta_, nIsoTrk);
3952  h2_nTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3953  }
3955  if (!isRunCentrally_)
3957  }
3958 
3959  if (photonE / (*mcPho).fourMomentum().e() < 0.3 && photonE / (*mcPho).fourMomentum().e() > 0.1) {
3960  }
3961 
3962  if ((r9 > 0.94 && phoIsInBarrel) || (r9 > 0.95 && phoIsInEndcap)) {
3963  h_phoERes_[1][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3964  h_phoSigmaEoE_[1][0]->Fill(sigmaEoE);
3965  h_phoEResRegr1_[1][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3966  h_phoEResRegr2_[1][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3967  if (!isRunCentrally_)
3968  h2_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3969  p_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3970  p_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3971  p_r9VsEta_[1]->Fill(mcEta_, r9);
3972  p_sigmaEoEVsEta_[1]->Fill(mcEta_, sigmaEoE);
3973 
3974  } else if ((r9 <= 0.94 && phoIsInBarrel) || (r9 <= 0.95 && phoIsInEndcap)) {
3975  h_phoERes_[2][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3976  h_phoSigmaEoE_[2][0]->Fill(sigmaEoE);
3977  h_phoEResRegr1_[2][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3978  h_phoEResRegr2_[2][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3979  p_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3980  p_eResVsEta_[2]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3981  p_r9VsEta_[2]->Fill(mcEta_, r9);
3982  p_sigmaEoEVsEta_[2]->Fill(mcEta_, sigmaEoE);
3983 
3984  if (!isRunCentrally_) {
3985  h2_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3986  h_EtR9Less093_[0][0]->Fill(photonEt);
3987  }
3988  }
3989 
3990  if (phoIsInBarrel) {
3991  h_scE_[type][1]->Fill(matchingPho->superCluster()->energy());
3992  h_scEt_[type][1]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3993  h_r9_[type][1]->Fill(r9);
3994  h_r1_[type][1]->Fill(r1);
3995  h_r2_[type][1]->Fill(r2);
3997  h_hOverE_[type][1]->Fill(hOverE);
3998  h_newhOverE_[type][1]->Fill(newhOverE);
4000  p_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4002  p_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4003  h_hcalTowerBcSumEtConeDR04_[type][1]->Fill(newhcalIso);
4004  p_hcalTowerBcSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4006  h_nTrkSolidConeDR04_[type][1]->Fill(nIsoTrk);
4007  h_chHadIso_[1]->Fill(chargedHadIso);
4008  h_nHadIso_[1]->Fill(neutralHadIso);
4009  h_phoIso_[1]->Fill(photonIso);
4010  h_nCluOutsideMustache_[1]->Fill(float(nClusterOutsideMustache));
4011  h_etOutsideMustache_[1]->Fill(etOutsideMustache);
4012  h_pfMva_[1]->Fill(pfMVA);
4013  h_phoE_[type][1]->Fill(photonE);
4014  h_phoEt_[type][1]->Fill(photonEt);
4015  h_nConv_[type][1]->Fill(float(matchingPho->conversions().size()));
4016  h_nConv_[1][1]->Fill(float(matchingPho->conversionsOneLeg().size()));
4017  h_phoERes_[0][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4018  h_phoSigmaEoE_[0][1]->Fill(sigmaEoE);
4019  h_phoEResRegr1_[0][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4020  h_phoEResRegr2_[0][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4021  p_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4022  p_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4023  if (!isRunCentrally_) {
4024  h2_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4025  h2_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4026  h2_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4027  h2_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4028  h2_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4029  }
4030  p_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4031  p_eResVsNVtx_[1][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4032  p_sigmaEoEVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4033  p_sigmaEoEVsNVtx_[1][0]->Fill(float(vtxH->size()), sigmaEoE);
4034 
4035  if (r9 > 0.94) {
4036  h_phoERes_[1][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4037  h_phoSigmaEoE_[1][1]->Fill(sigmaEoE);
4038  h_phoEResRegr1_[1][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4039  h_phoEResRegr2_[1][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4040  if (!isRunCentrally_)
4041  h2_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4042  p_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4043  p_eResVsNVtx_[1][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4044  p_sigmaEoEVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4045  p_sigmaEoEVsNVtx_[1][1]->Fill(float(vtxH->size()), sigmaEoE);
4046  }
4047  if (r9 <= 0.94) {
4048  h_phoERes_[2][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4049  h_phoSigmaEoE_[2][1]->Fill(sigmaEoE);
4050  h_phoEResRegr1_[2][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4051  h_phoEResRegr2_[2][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4052  p_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4053  p_eResVsNVtx_[1][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4054  p_sigmaEoEVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4055  p_sigmaEoEVsNVtx_[1][2]->Fill(float(vtxH->size()), sigmaEoE);
4056  if (!isRunCentrally_) {
4057  h2_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4058  h_EtR9Less093_[0][1]->Fill(photonEt);
4059  }
4060  }
4061  }
4062  if (phoIsInEndcap) {
4063  h_scE_[type][2]->Fill(matchingPho->superCluster()->energy());
4064  h_scEt_[type][2]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4065  h_r9_[type][2]->Fill(r9);
4066  h_r1_[type][2]->Fill(r1);
4067  h_r2_[type][2]->Fill(r2);
4069  h_hOverE_[type][2]->Fill(hOverE);
4070  h_newhOverE_[type][2]->Fill(newhOverE);
4072  p_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4074  p_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4075  h_hcalTowerBcSumEtConeDR04_[type][2]->Fill(newhcalIso);
4076  p_hcalTowerBcSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4078  h_nTrkSolidConeDR04_[type][2]->Fill(nIsoTrk);
4079  h_chHadIso_[2]->Fill(chargedHadIso);
4080  h_nHadIso_[2]->Fill(neutralHadIso);
4081  h_phoIso_[2]->Fill(photonIso);
4082  h_nCluOutsideMustache_[2]->Fill(float(nClusterOutsideMustache));
4083  h_etOutsideMustache_[2]->Fill(etOutsideMustache);
4084  h_pfMva_[2]->Fill(pfMVA);
4085  h_phoE_[type][2]->Fill(photonE);
4086  h_phoEt_[type][2]->Fill(photonEt);
4087  h_nConv_[type][2]->Fill(float(matchingPho->conversions().size()));
4088  h_nConv_[1][2]->Fill(float(matchingPho->conversionsOneLeg().size()));
4089  h_phoERes_[0][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4090  h_phoSigmaEoE_[0][2]->Fill(sigmaEoE);
4091  h_phoEResRegr1_[0][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4092  h_phoEResRegr2_[0][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4093  p_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4094  p_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4095  if (!isRunCentrally_) {
4096  h2_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4097  h2_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4098  h2_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4099  h2_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4100  h2_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4101  }
4102 
4103  p_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4104  p_eResVsNVtx_[2][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4105  p_sigmaEoEVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4106  p_sigmaEoEVsNVtx_[2][0]->Fill(float(vtxH->size()), sigmaEoE);
4107 
4108  if (r9 > 0.95) {
4109  h_phoERes_[1][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4110  h_phoSigmaEoE_[1][2]->Fill(sigmaEoE);
4111  h_phoEResRegr1_[1][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4112  h_phoEResRegr2_[1][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4113  if (!isRunCentrally_)
4114  h2_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4115  p_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4116  p_eResVsNVtx_[2][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4117  p_sigmaEoEVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4118  p_sigmaEoEVsNVtx_[2][1]->Fill(float(vtxH->size()), sigmaEoE);
4119  }
4120  if (r9 <= 0.95) {
4121  h_phoERes_[2][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4122  h_phoSigmaEoE_[2][2]->Fill(sigmaEoE);
4123  h_phoEResRegr1_[2][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4124  h_phoEResRegr2_[2][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4125  p_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4126  p_eResVsNVtx_[2][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4127  p_sigmaEoEVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4128  p_sigmaEoEVsNVtx_[2][2]->Fill(float(vtxH->size()), sigmaEoE);
4129 
4130  if (!isRunCentrally_) {
4131  h2_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4132  h_EtR9Less093_[0][2]->Fill(photonEt);
4133  }
4134  }
4135  }
4136 
4138  if (fName_ == "pfPhotonValidator") {
4139  float SumPtIsoValCh = 0.;
4140  float SumPtIsoValNh = 0.;
4141  float SumPtIsoValPh = 0.;
4142 
4143  float SumPtIsoValCleanCh = 0.;
4144  float SumPtIsoValCleanNh = 0.;
4145  float SumPtIsoValCleanPh = 0.;
4146 
4147  for (unsigned int lCand = 0; lCand < pfCandidateHandle->size(); lCand++) {
4148  reco::PFCandidateRef pfCandRef(reco::PFCandidateRef(pfCandidateHandle, lCand));
4149  float dR = deltaR(matchingPho->eta(), matchingPho->phi(), pfCandRef->eta(), pfCandRef->phi());
4150  if (dR < 0.4) {
4152  reco::PFCandidate::ParticleType type = pfCandRef->particleId();
4153  if (type == reco::PFCandidate::e)
4154  continue;
4155  if (type == reco::PFCandidate::gamma && pfCandRef->mva_nothing_gamma() > 0.)
4156  continue;
4157 
4158  if (type == reco::PFCandidate::h) {
4159  SumPtIsoValCh += pfCandRef->pt();
4161  if (phoIsInBarrel)
4163  else
4165  }
4166  if (type == reco::PFCandidate::h0) {
4167  SumPtIsoValNh += pfCandRef->pt();
4169  if (phoIsInBarrel) {
4171  if (phoIsInBarrel1) {
4173  }
4174  if (phoIsInBarrel2) {
4176  }
4177  } else {
4179  }
4180  }
4181 
4182  if (type == reco::PFCandidate::gamma) {
4183  SumPtIsoValPh += pfCandRef->pt();
4185  if (phoIsInBarrel)
4187  else
4189  }
4190 
4192  bool skip = false;
4193  for (std::vector<reco::PFCandidateRef>::const_iterator i = phoToParticleBasedIsoMap[matchingPho].begin();
4194  i != phoToParticleBasedIsoMap[matchingPho].end();
4195  ++i) {
4196  if ((*i) == pfCandRef) {
4197  skip = true;
4198  }
4199  } // loop over the PFCandidates flagged as overlapping with the photon
4200 
4201  if (skip)
4202  continue;
4203  if (type == reco::PFCandidate::h) {
4204  SumPtIsoValCleanCh += pfCandRef->pt();
4206  if (phoIsInBarrel)
4208  else
4210  }
4211  if (type == reco::PFCandidate::h0) {
4212  SumPtIsoValCleanNh += pfCandRef->pt();
4214  if (phoIsInBarrel) {
4216  if (phoIsInBarrel1) {
4218  }
4219  if (phoIsInBarrel2) {
4221  }
4222  } else {
4224  }
4225  }
4226  if (type == reco::PFCandidate::gamma) {
4227  SumPtIsoValCleanPh += pfCandRef->pt();
4229  if (phoIsInBarrel)
4231  else
4233  }
4234 
4235  } // dr=0.4
4236  } // loop over all PF Candidates
4237 
4238  h_SumPtOverPhoPt_ChHad_Cleaned_[0]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4239  h_SumPtOverPhoPt_NeuHad_Cleaned_[0]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4240  h_SumPtOverPhoPt_Pho_Cleaned_[0]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4241  h_SumPtOverPhoPt_ChHad_unCleaned_[0]->Fill(SumPtIsoValCh / matchingPho->pt());
4242  h_SumPtOverPhoPt_NeuHad_unCleaned_[0]->Fill(SumPtIsoValNh / matchingPho->pt());
4243  h_SumPtOverPhoPt_Pho_unCleaned_[0]->Fill(SumPtIsoValPh / matchingPho->pt());
4244  if (phoIsInBarrel) {
4245  h_SumPtOverPhoPt_ChHad_Cleaned_[1]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4246  h_SumPtOverPhoPt_NeuHad_Cleaned_[1]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4247  h_SumPtOverPhoPt_Pho_Cleaned_[1]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4248  h_SumPtOverPhoPt_ChHad_unCleaned_[1]->Fill(SumPtIsoValCh / matchingPho->pt());
4249  h_SumPtOverPhoPt_NeuHad_unCleaned_[1]->Fill(SumPtIsoValNh / matchingPho->pt());
4250  h_SumPtOverPhoPt_Pho_unCleaned_[1]->Fill(SumPtIsoValPh / matchingPho->pt());
4251  } else {
4252  h_SumPtOverPhoPt_ChHad_Cleaned_[2]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4253  h_SumPtOverPhoPt_NeuHad_Cleaned_[2]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4254  h_SumPtOverPhoPt_Pho_Cleaned_[2]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4255  h_SumPtOverPhoPt_ChHad_unCleaned_[2]->Fill(SumPtIsoValCh / matchingPho->pt());
4256  h_SumPtOverPhoPt_NeuHad_unCleaned_[2]->Fill(SumPtIsoValNh / matchingPho->pt());
4257  h_SumPtOverPhoPt_Pho_unCleaned_[2]->Fill(SumPtIsoValPh / matchingPho->pt());
4258  }
4259 
4260  } // only for pfPhotonValidator
4261 
4262  if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
4263  continue;
4264 
4265  if (!isRunCentrally_) {
4266  h_r9_[1][0]->Fill(r9);
4267  if (phoIsInBarrel)
4268  h_r9_[1][1]->Fill(r9);
4269  if (phoIsInEndcap)
4270  h_r9_[1][2]->Fill(r9);
4271 
4273  if (fabs(mcEta_) <= 1.) {
4276  } else
4278  }
4279 
4280  if (!fastSim_) {
4282  reco::ConversionRefVector conversions = matchingPho->conversions();
4283  bool atLeastOneRecoTwoTrackConversion = false;
4284  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4285  reco::ConversionRef aConv = conversions[iConv];
4286  double like = aConv->MVAout();
4287  if (like < likelihoodCut_)
4288  continue;
4289 
4290  if (!isRunCentrally_)
4291  h2_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4292  p_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4293 
4294  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4295  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4296  if (tracks.size() < 2)
4297  continue;
4298  atLeastOneRecoTwoTrackConversion = true;
4299 
4300  h_mvaOut_[0]->Fill(like);
4301 
4302  if (tracks.size() == 2) {
4303  if (sqrt(aConv->tracksPin()[0].Perp2()) < convTrackMinPtCut_ ||
4304  sqrt(aConv->tracksPin()[1].Perp2()) < convTrackMinPtCut_)
4305  continue;
4306  }
4307 
4308  if (dCotCutOn_) {
4309  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4310  continue;
4311  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4312  continue;
4313  }
4314 
4315  nRecConv_++;
4316 
4317  std::map<const reco::Track*, TrackingParticleRef> myAss;
4318  std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
4319  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMin;
4320  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMax;
4321  //
4322 
4323  int nAssT2 = 0;
4324  for (unsigned int i = 0; i < tracks.size(); i++) {
4325  // reco::TrackRef track = tracks[i].castTo<reco::TrackRef>();
4326 
4327  type = 0;
4328  if (!isRunCentrally_)
4329  nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4330  if (!isRunCentrally_)
4331  nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4332  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits() - 0.0001));
4333  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits() - 0.0001));
4335 
4336  const RefToBase<reco::Track>& tfrb = tracks[i];
4338  tc.push_back(tfrb);
4339  // reco::RecoToSimCollection q = trackAssociator->associateRecoToSim(tc,theConvTP_);
4340  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4341  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4342  int tpI = 0;
4343 
4344  if (q.find(theConvTP_[0]) != q.end()) {
4345  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4346  } else if (q.find(theConvTP_[1]) != q.end()) {
4347  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4348  tpI = 1;
4349  }
4350 
4351  if (trackV.empty())
4352  continue;
4353  edm::RefToBase<reco::Track> tr = trackV.front().first;
4354  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4355  nAssT2++;
4356  }
4357 
4358  type = 0;
4359 
4360  // float totP = sqrt(aConv->pairMomentum().Mag2());
4361  float refP = -99999.;
4362  float refPt = -99999.;
4363  if (aConv->conversionVertex().isValid()) {
4364  refP = sqrt(aConv->refittedPairMomentum().Mag2());
4365  refPt = sqrt(aConv->refittedPairMomentum().perp2());
4366  }
4367  float invM = aConv->pairInvariantMass();
4368 
4369  h_invMass_[type][0]->Fill(invM);
4370  if (phoIsInBarrel)
4371  h_invMass_[type][1]->Fill(invM);
4372  if (phoIsInEndcap)
4373  h_invMass_[type][2]->Fill(invM);
4374 
4376  if (tracks.size() == 2) {
4381  h_SimConvTwoTracks_[4]->Fill((*mcPho).fourMomentum().et());
4382 
4383  if (!aConv->caloCluster().empty())
4384  h_convEta_[1]->Fill(aConv->caloCluster()[0]->eta());
4385 
4386  float trkProvenance = 3;
4387  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4388  trkProvenance = 0;
4389  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4390  trkProvenance = 1;
4391  if ((tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv") ||
4392  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4393  trkProvenance = 2;
4394  if (trkProvenance == 3) {
4395  }
4396  h_trkProv_[0]->Fill(trkProvenance);
4397  h_trkAlgo_->Fill(tracks[0]->algo());
4398  h_trkAlgo_->Fill(tracks[1]->algo());
4399  h_convAlgo_->Fill(aConv->algo());
4400 
4402  if (nAssT2 == 2) {
4403  if (!isRunCentrally_) {
4404  h_r9_[2][0]->Fill(r9);
4405  if (phoIsInBarrel)
4406  h_r9_[2][1]->Fill(r9);
4407  if (phoIsInEndcap)
4408  h_r9_[2][2]->Fill(r9);
4409  }
4410 
4411  if (!aConv->caloCluster().empty())
4412  h_convEta_[2]->Fill(aConv->caloCluster()[0]->eta());
4413  nRecConvAss_++;
4414 
4419  h_SimConvTwoMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4420 
4421  if (aConv->conversionVertex().isValid()) {
4422  float chi2Prob =
4423  ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4424  if (chi2Prob > 0) {
4429  h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill((*mcPho).fourMomentum().et());
4430  }
4431  if (chi2Prob > 0.0005) {
4436  h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill((*mcPho).fourMomentum().et());
4437  }
4438 
4439  if (chi2Prob > 0.0005) {
4440  if (!aConv->caloCluster().empty()) {
4441  h_convEta_[0]->Fill(aConv->caloCluster()[0]->eta());
4442  h_convPhi_[0]->Fill(aConv->caloCluster()[0]->phi());
4443  h_convERes_[0][0]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4444  }
4445  if (!isRunCentrally_) {
4446  h_r9VsNofTracks_[0][0]->Fill(r9, aConv->nTracks());
4447  h_EtR9Less093_[1][0]->Fill(photonEt);
4448  if (phoIsInBarrel)
4449  h_EtR9Less093_[1][1]->Fill(photonEt);
4450  if (phoIsInEndcap)
4451  h_EtR9Less093_[1][2]->Fill(photonEt);
4452  }
4453  if (phoIsInBarrel) {
4454  if (!aConv->caloCluster().empty())
4455  h_convERes_[0][1]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4456  if (!isRunCentrally_)
4457  h_r9VsNofTracks_[0][1]->Fill(r9, aConv->nTracks());
4458  h_mvaOut_[1]->Fill(like);
4459  }
4460  if (phoIsInEndcap) {
4461  if (!aConv->caloCluster().empty())
4462  h_convERes_[0][2]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4463  if (!isRunCentrally_)
4464  h_r9VsNofTracks_[0][2]->Fill(r9, aConv->nTracks());
4465  h_mvaOut_[2]->Fill(like);
4466  }
4467  }
4468  }
4469 
4471  type = 1;
4472 
4473  h_trkProv_[1]->Fill(trkProvenance);
4474  h_invMass_[type][0]->Fill(invM);
4475 
4476  float eoverp = -99999.;
4477 
4478  if (aConv->conversionVertex().isValid()) {
4479  eoverp = photonE / sqrt(aConv->refittedPairMomentum().Mag2());
4480  //eoverp= aConv->EoverPrefittedTracks();
4481  h_convPtRes_[type][0]->Fill(refPt / (*mcPho).fourMomentum().et());
4482  h_EoverPTracks_[type][0]->Fill(eoverp);
4483  h_PoverETracks_[type][0]->Fill(1. / eoverp);
4484  if (!isRunCentrally_)
4485  h2_EoverEtrueVsEoverP_[0]->Fill(eoverp,
4486  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4487  if (!isRunCentrally_)
4488  h2_PoverPtrueVsEoverP_[0]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4489  if (!isRunCentrally_)
4490  h2_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4491  if (!isRunCentrally_)
4492  h2_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4493  p_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4494  p_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4495  p_eResVsR_->Fill(mcConvR_, photonE / (*mcPho).fourMomentum().e());
4496  if (!isRunCentrally_)
4497  h2_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4498  p_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4499  }
4500 
4501  if (!isRunCentrally_)
4503  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4504  if (!isRunCentrally_)
4506  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4507  p_EoverEtrueVsEta_[0]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4508  p_EoverEtrueVsR_[0]->Fill(mcConvR_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4509 
4510  if (!isRunCentrally_)
4512 
4513  // here original tracks and their inner momentum is considered
4514  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
4515  h_DPhiTracksAtVtx_[type][0]->Fill(dPhiTracksAtVtx);
4516  if (!isRunCentrally_)
4517  h2_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4518  if (!isRunCentrally_)
4519  h2_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4520  p_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4521  p_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4522 
4523  h_DCotTracks_[type][0]->Fill(aConv->pairCotThetaSeparation());
4524  if (!isRunCentrally_)
4525  h2_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4526  if (!isRunCentrally_)
4527  h2_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4528  p_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4529  p_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4530 
4531  if (phoIsInBarrel) {
4532  h_invMass_[type][1]->Fill(invM);
4533  if (aConv->conversionVertex().isValid()) {
4534  h_convPtRes_[type][1]->Fill(refPt / (*mcPho).fourMomentum().et());
4535  h_EoverPTracks_[type][1]->Fill(eoverp);
4536  if (mcConvR_ < 15)
4537  h_EoverPTracks_[0][0]->Fill(eoverp);
4538  if (mcConvR_ > 15 && mcConvR_ < 58)
4539  h_EoverPTracks_[0][1]->Fill(eoverp);
4540  if (mcConvR_ > 58)
4541  h_EoverPTracks_[0][2]->Fill(eoverp);
4542  h_PoverETracks_[type][1]->Fill(1. / eoverp);
4543  if (!isRunCentrally_)
4545  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4546  if (!isRunCentrally_)
4547  h2_PoverPtrueVsEoverP_[1]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4548  }
4549  h_DPhiTracksAtVtx_[type][1]->Fill(dPhiTracksAtVtx);
4550  h_DCotTracks_[type][1]->Fill(aConv->pairCotThetaSeparation());
4551  }
4552 
4553  if (phoIsInEndcap) {
4554  h_invMass_[type][2]->Fill(invM);
4555  if (aConv->conversionVertex().isValid()) {
4556  h_convPtRes_[type][2]->Fill(refPt / (*mcPho).fourMomentum().et());
4557  h_EoverPTracks_[type][2]->Fill(eoverp);
4558  h_PoverETracks_[type][2]->Fill(1. / eoverp);
4559  if (!isRunCentrally_)
4561  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4562  if (!isRunCentrally_)
4563  h2_PoverPtrueVsEoverP_[2]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4564  }
4565  h_DPhiTracksAtVtx_[type][2]->Fill(dPhiTracksAtVtx);
4566  h_DCotTracks_[type][2]->Fill(aConv->pairCotThetaSeparation());
4567  }
4568 
4569  if (aConv->conversionVertex().isValid()) {
4570  h_convVtxdX_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4571  h_convVtxdY_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4572  h_convVtxdZ_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4573  h_convVtxdR_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4574 
4575  if (fabs(mcConvEta_) <= 1.2) {
4576  h_convVtxdX_barrel_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4577  h_convVtxdY_barrel_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4578  h_convVtxdZ_barrel_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4579  h_convVtxdR_barrel_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4580  } else {
4581  h_convVtxdX_endcap_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4582  h_convVtxdY_endcap_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4583  h_convVtxdZ_endcap_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4584  h_convVtxdR_endcap_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4585  }
4586 
4587  h_convVtxdPhi_->Fill(aConv->conversionVertex().position().phi() - mcConvPhi_);
4588  h_convVtxdEta_->Fill(aConv->conversionVertex().position().eta() - mcConvEta_);
4589  if (!isRunCentrally_)
4590  h2_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4591  if (!isRunCentrally_)
4592  h2_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4593  p_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4594  p_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4595  float signX = aConv->refittedPairMomentum().x() / fabs(aConv->refittedPairMomentum().x());
4596  float signY = aConv->refittedPairMomentum().y() / fabs(aConv->refittedPairMomentum().y());
4597  float signZ = aConv->refittedPairMomentum().z() / fabs(aConv->refittedPairMomentum().z());
4598  p_convVtxdXVsX_->Fill(mcConvX_, (aConv->conversionVertex().position().x() - mcConvX_) * signX);
4599  p_convVtxdYVsY_->Fill(mcConvY_, (aConv->conversionVertex().position().y() - mcConvY_) * signY);
4600  p_convVtxdZVsZ_->Fill(mcConvZ_, (aConv->conversionVertex().position().z() - mcConvZ_) * signZ);
4601 
4602  if (!isRunCentrally_)
4603  h2_convVtxRrecVsTrue_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()));
4604 
4605  //float zPV = aConv->zOfPrimaryVertexFromTracks();
4606  float thetaConv = aConv->refittedPairMomentum().Theta();
4607  float thetaSC = matchingPho->superCluster()->position().theta();
4608  float rSC =
4609  sqrt(matchingPho->superCluster()->position().x() * matchingPho->superCluster()->position().x() +
4610  matchingPho->superCluster()->position().y() * matchingPho->superCluster()->position().y());
4611  float zSC = matchingPho->superCluster()->position().z();
4612  float zPV = sqrt(rSC * rSC + zSC * zSC) * sin(thetaConv - thetaSC) / sin(thetaConv);
4613 
4614  h_zPVFromTracks_[0]->Fill(zPV);
4615  h_dzPVFromTracks_[0]->Fill(zPV - (*mcPho).primaryVertex().z());
4616 
4617  if (phoIsInBarrel) {
4618  h_zPVFromTracks_[1]->Fill(zPV);
4619  h_dzPVFromTracks_[1]->Fill(zPV - (*mcPho).primaryVertex().z());
4620  } else if (phoIsInEndcap) {
4621  h_zPVFromTracks_[2]->Fill(zPV);
4622  h_dzPVFromTracks_[2]->Fill(zPV - (*mcPho).primaryVertex().z());
4623  } else if (phoIsInEndcapP) {
4624  h_zPVFromTracks_[3]->Fill(zPV);
4625  h_dzPVFromTracks_[3]->Fill(zPV - (*mcPho).primaryVertex().z());
4626  } else if (phoIsInEndcapM) {
4627  h_zPVFromTracks_[4]->Fill(zPV);
4628  h_dzPVFromTracks_[4]->Fill(zPV - (*mcPho).primaryVertex().z());
4629  }
4630 
4631  p_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4632  p_dzPVVsEta_->Fill(mcConvEta_, zPV - (*mcPho).primaryVertex().z());
4633  if (!isRunCentrally_)
4634  h2_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4635  }
4636 
4637  float dPhiTracksAtEcal = -99;
4638  float dEtaTracksAtEcal = -99;
4639  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].isNonnull() &&
4640  aConv->bcMatchingWithTracks()[1].isNonnull()) {
4642  float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
4643  float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
4644  float recoEta1 = aConv->ecalImpactPosition()[0].eta();
4645  float recoEta2 = aConv->ecalImpactPosition()[1].eta();
4646  // unused float bcPhi1 = aConv->bcMatchingWithTracks()[0]->phi();
4647  // unused float bcPhi2 = aConv->bcMatchingWithTracks()[1]->phi();
4648  // unused float bcEta1 = aConv->bcMatchingWithTracks()[0]->eta();
4649  // unused float bcEta2 = aConv->bcMatchingWithTracks()[1]->eta();
4650  recoPhi1 = phiNormalization(recoPhi1);
4651  recoPhi2 = phiNormalization(recoPhi2);
4652  dPhiTracksAtEcal = recoPhi1 - recoPhi2;
4653  dPhiTracksAtEcal = phiNormalization(dPhiTracksAtEcal);
4654  dEtaTracksAtEcal = recoEta1 - recoEta2;
4655 
4656  h_DPhiTracksAtEcal_[type][0]->Fill(fabs(dPhiTracksAtEcal));
4657  if (!isRunCentrally_)
4658  h2_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4659  if (!isRunCentrally_)
4660  h2_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4661  p_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4662  p_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4663 
4664  h_DEtaTracksAtEcal_[type][0]->Fill(dEtaTracksAtEcal);
4665 
4666  if (phoIsInBarrel) {
4667  h_DPhiTracksAtEcal_[type][1]->Fill(fabs(dPhiTracksAtEcal));
4668  h_DEtaTracksAtEcal_[type][1]->Fill(dEtaTracksAtEcal);
4669  }
4670  if (phoIsInEndcap) {
4671  h_DPhiTracksAtEcal_[type][2]->Fill(fabs(dPhiTracksAtEcal));
4672  h_DEtaTracksAtEcal_[type][2]->Fill(dEtaTracksAtEcal);
4673  }
4674  }
4676  for (unsigned int i = 0; i < tracks.size(); i++) {
4677  const RefToBase<reco::Track>& tfrb(tracks[i]);
4678  itAss = myAss.find(tfrb.get());
4679  if (itAss == myAss.end())
4680  continue;
4681 
4682  float trkProvenance = 3;
4683  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4684  trkProvenance = 0;
4685  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4686  trkProvenance = 1;
4687  if ((tracks[0]->algoName() == "outInEcalSeededConv" &&
4688  tracks[1]->algoName() == "inOutEcalSeededConv") ||
4689  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4690  trkProvenance = 2;
4691 
4692  if (!isRunCentrally_)
4694  if (!isRunCentrally_)
4696  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4697  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4700  if (!isRunCentrally_)
4702  if (!isRunCentrally_)
4706 
4707  float simPt = sqrt(((*itAss).second)->momentum().perp2());
4708  // float recPt = sqrt( aConv->tracks()[i]->innerMomentum().Perp2() ) ;
4709  float refPt = -9999.;
4710  float px = 0, py = 0;
4711 
4712  if (aConv->conversionVertex().isValid()) {
4713  reco::Track refTrack = aConv->conversionVertex().refittedTracks()[i];
4714  px = refTrack.momentum().x();
4715  py = refTrack.momentum().y();
4716  refPt = sqrt(px * px + py * py);
4717 
4718  float ptres = refPt - simPt;
4719  // float pterror = aConv->tracks()[i]->ptError();
4720  float pterror = aConv->conversionVertex().refittedTracks()[i].ptError();
4721  if (!isRunCentrally_) {
4722  h2_PtRecVsPtSim_[0]->Fill(simPt, refPt);
4723  if (trkProvenance == 3)
4724  h2_PtRecVsPtSimMixProv_->Fill(simPt, refPt);
4725  }
4726 
4727  h_TkPtPull_[0]->Fill(ptres / pterror);
4728  if (!isRunCentrally_)
4729  h2_TkPtPull_[0]->Fill(mcEta_, ptres / pterror);
4730 
4731  h_TkD0_[0]->Fill(tracks[i]->d0() * tracks[i]->charge());
4732 
4733  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" )
4734  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4735  hBCEnergyOverTrackPout_[0]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4736  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4737 
4738  if (phoIsInBarrel) {
4739  h_TkD0_[1]->Fill(tracks[i]->d0() * tracks[i]->charge());
4740  h_TkPtPull_[1]->Fill(ptres / pterror);
4741  if (!isRunCentrally_)
4742  h2_PtRecVsPtSim_[1]->Fill(simPt, refPt);
4743  //if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4744  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4745  hBCEnergyOverTrackPout_[1]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4746  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4747  }
4748  if (phoIsInEndcap) {
4749  h_TkD0_[2]->Fill(tracks[i]->d0() * tracks[i]->charge());
4750  h_TkPtPull_[2]->Fill(ptres / pterror);
4751  if (!isRunCentrally_)
4752  h2_PtRecVsPtSim_[2]->Fill(simPt, refPt);
4753  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4754  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4755  hBCEnergyOverTrackPout_[2]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4756  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4757  }
4758  }
4759 
4760  } // end loop over track
4761  } // end analysis of two associated tracks
4762  } // end analysis of two tracks
4763 
4764  } // loop over conversions
4765 
4767 
4768  reco::ConversionRefVector conversionsOneLeg = matchingPho->conversionsOneLeg();
4769  if (!atLeastOneRecoTwoTrackConversion) {
4770  for (unsigned int iConv = 0; iConv < conversionsOneLeg.size(); iConv++) {
4771  reco::ConversionRef aConv = conversionsOneLeg[iConv];
4772  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4773 
4774  h_trkAlgo_->Fill(tracks[0]->algo());
4775  h_convAlgo_->Fill(aConv->algo());
4776 
4777  int nAssT = 0;
4778  std::map<const reco::Track*, TrackingParticleRef> myAss;
4779  for (unsigned int i = 0; i < tracks.size(); i++) {
4780  p_nHitsVsEtaSL_[0]->Fill(mcEta_, float(tracks[0]->numberOfValidHits() - 0.0001));
4781  p_nHitsVsRSL_[0]->Fill(mcConvR_, float(tracks[0]->numberOfValidHits() - 0.0001));
4783 
4784  float eoverp = photonE / tracks[0]->p();
4785  h_EoverP_SL_[0]->Fill(eoverp);
4786  if (phoIsInBarrel) {
4787  h_EoverP_SL_[1]->Fill(eoverp);
4788  } else {
4789  h_EoverP_SL_[2]->Fill(eoverp);
4790  }
4791  h_convSLVtxRvsZ_[0]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4792  if (fabs(mcEta_) <= 1.) {
4793  h_convSLVtxRvsZ_[1]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4794  } else {
4795  h_convSLVtxRvsZ_[2]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4796  }
4797 
4798  const RefToBase<reco::Track>& tfrb = tracks[i];
4800  tc.push_back(tfrb);
4801  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4802  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4803  int tpI = 0;
4804 
4805  if (q.find(theConvTP_[0]) != q.end()) {
4806  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4807  } else if (q.find(theConvTP_[1]) != q.end()) {
4808  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4809  tpI = 1;
4810  }
4811 
4812  if (trackV.empty())
4813  continue;
4814  edm::RefToBase<reco::Track> tr = trackV.front().first;
4815  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4816  nAssT++;
4817  }
4818 
4819  if (nAssT > 0) {
4824  h_SimConvOneMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4825  }
4826  } // End loop over single leg conversions
4827  }
4828 
4829  } // if !fastSim
4830  } // End loop over generated particles
4831  } // End loop over simulated Photons
4832 
4833  if (!isRunCentrally_) {
4834  h_nSimPho_[0]->Fill(float(nSimPho_[0]));
4835  h_nSimPho_[1]->Fill(float(nSimPho_[1]));
4836  h_nSimConv_[0]->Fill(float(nSimConv_[0]));
4837  h_nSimConv_[1]->Fill(float(nSimConv_[1]));
4838  }
4839 
4840  if (!fastSim_) {
4842  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
4843  iPho++) {
4844  reco::Photon aPho = reco::Photon(*iPho);
4845  // float et= aPho.superCluster()->energy()/cosh( aPho.superCluster()->eta()) ;
4847  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4848  reco::ConversionRef aConv = conversions[iConv];
4849  double like = aConv->MVAout();
4850  if (like < likelihoodCut_)
4851  continue;
4852  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4853  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4854  if (tracks.size() < 2)
4855  continue;
4856 
4857  RefToBase<reco::Track> tk1 = aConv->tracks().front();
4858  RefToBase<reco::Track> tk2 = aConv->tracks().back();
4860  tc1.push_back(tk1);
4861  tc2.push_back(tk2);
4862 
4863  bool phoIsInBarrel = false;
4864  bool phoIsInEndcap = false;
4865  if (fabs(aPho.superCluster()->position().eta()) < 1.479) {
4866  phoIsInBarrel = true;
4867  } else {
4868  phoIsInEndcap = true;
4869  }
4870 
4871  if (dCotCutOn_) {
4872  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4873  continue;
4874  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4875  continue;
4876  }
4877 
4878  h_RecoConvTwoTracks_[0]->Fill(aPho.eta());
4879  h_RecoConvTwoTracks_[1]->Fill(aPho.phi());
4880  if (aConv->conversionVertex().isValid())
4881  h_RecoConvTwoTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4882  h_RecoConvTwoTracks_[3]->Fill(aConv->conversionVertex().position().z());
4883  h_RecoConvTwoTracks_[4]->Fill(aPho.et());
4884 
4885  int nAssT2 = 0;
4886  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
4887  // mcConvPt_= (*mcPho).fourMomentum().et();
4888  float mcPhi = (*mcPho).fourMomentum().phi();
4889  //simPV_Z = (*mcPho).primaryVertex().z();
4890  mcPhi_ = phiNormalization(mcPhi);
4891  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
4892  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
4893  //mcConvR_= (*mcPho).vertex().perp();
4894  //mcConvX_= (*mcPho).vertex().x();
4895  //mcConvY_= (*mcPho).vertex().y();
4896  //mcConvZ_= (*mcPho).vertex().z();
4897  //mcConvEta_= (*mcPho).vertex().eta();
4898  //mcConvPhi_= (*mcPho).vertex().phi();
4899  if (fabs(mcEta_) > END_HI)
4900  continue;
4901  // if (mcConvPt_<minPhoPtForPurity) continue;
4902  //if (fabs(mcEta_)>maxPhoEtaForPurity) continue;
4903  //if (fabs(mcConvZ_)>maxPhoZForPurity) continue;
4904  //if (mcConvR_>maxPhoRForEffic) continue;
4905 
4906  if ((*mcPho).isAConversion() != 1)
4907  continue;
4908  if (!((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
4909  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
4910  continue;
4911 
4912  theConvTP_.clear();
4913  for (size_t i = 0; i < trackingParticles.size(); ++i) {
4914  TrackingParticleRef tp(ElectronTPHandle, i);
4915  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
4916  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
4918  }
4919  }
4920 
4921  if (theConvTP_.size() < 2)
4922  continue;
4923 
4924  reco::RecoToSimCollection const& p1 = trackAssociator->associateRecoToSim(tc1, theConvTP_);
4925  reco::RecoToSimCollection const& p2 = trackAssociator->associateRecoToSim(tc2, theConvTP_);
4926  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV1, trackV2;
4927 
4928  auto itP1 = p1.find(tk1);
4929  auto itP2 = p2.find(tk2);
4930  bool good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4931  if (not good) {
4932  itP1 = p1.find(tk2);
4933  itP2 = p2.find(tk1);
4934  good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4935  }
4936  if (good) {
4937  std::vector<std::pair<TrackingParticleRef, double> > const& tp1 = itP1->val;
4938  std::vector<std::pair<TrackingParticleRef, double> > const& tp2 = itP2->val;
4939 
4940  TrackingParticleRef tpr1 = tp1.front().first;
4941  TrackingParticleRef tpr2 = tp2.front().first;
4942 
4943  if (abs(tpr1->pdgId()) == 11 && abs(tpr2->pdgId()) == 11) {
4944  if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
4945  (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
4946  if (tpr1->parentVertex().key() == tpr2->parentVertex().key() &&
4947  ((*tpr1->parentVertex()->sourceTracks_begin())->pdgId() == 22)) {
4948  nAssT2 = 2;
4949  break;
4950  }
4951  }
4952  }
4953  }
4954 
4955  } // end loop over simulated photons
4956 
4957  if (nAssT2 == 2) {
4958  h_RecoConvTwoMTracks_[0]->Fill(aPho.eta());
4959  h_RecoConvTwoMTracks_[1]->Fill(aPho.phi());
4960  if (aConv->conversionVertex().isValid())
4961  h_RecoConvTwoMTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4962  h_RecoConvTwoMTracks_[3]->Fill(aConv->conversionVertex().position().z());
4963  h_RecoConvTwoMTracks_[4]->Fill(aPho.et());
4964  }
4965 
4967  if (aConv->conversionVertex().isValid()) {
4968  float chi2Prob = ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4969  double convR = sqrt(aConv->conversionVertex().position().perp2());
4970  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
4971  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
4972 
4973  if (scalar < 0)
4974  convR = -sqrt(aConv->conversionVertex().position().perp2());
4975  h_convVtxRvsZ_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
4976  sqrt(aConv->conversionVertex().position().perp2()));
4977 
4978  if (!aConv->caloCluster().empty()) {
4979  if (!isRunCentrally_)
4980  h2_etaVsRreco_[0]->Fill(aConv->caloCluster()[0]->eta(),
4981  sqrt(aConv->conversionVertex().position().perp2()));
4982  if (fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
4983  h_convVtxYvsX_->Fill(aConv->conversionVertex().position().y(), aConv->conversionVertex().position().x());
4984  h_convVtxRvsZ_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4985 
4986  if (!isRunCentrally_) {
4987  h_convVtxYvsX_zoom_[0]->Fill(aConv->conversionVertex().position().y(),
4988  aConv->conversionVertex().position().x());
4989  h_convVtxYvsX_zoom_[1]->Fill(aConv->conversionVertex().position().y(),
4990  aConv->conversionVertex().position().x());
4991  h_convVtxRvsZ_zoom_[0]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4992  h_convVtxRvsZ_zoom_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4993  }
4994  }
4995  if (fabs(aConv->caloCluster()[0]->eta()) > 1.)
4996  h_convVtxRvsZ_[2]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4997  }
4998 
4999  h_vtxChi2Prob_[0]->Fill(chi2Prob);
5000  h_vtxChi2_[0]->Fill(aConv->conversionVertex().normalizedChi2());
5001  if (phoIsInBarrel) {
5002  h_vtxChi2Prob_[1]->Fill(chi2Prob);
5003  h_vtxChi2_[1]->Fill(aConv->conversionVertex().normalizedChi2());
5004  }
5005  if (phoIsInEndcap) {
5006  h_vtxChi2Prob_[2]->Fill(chi2Prob);
5007  h_vtxChi2_[2]->Fill(aConv->conversionVertex().normalizedChi2());
5008  }
5009 
5010  } // end conversion vertex valid
5011  } // end loop over reco conversions
5012  } // end loop on all reco photons
5013  } // if !fastSim
5014 
5016  float nPho = 0;
5017  for (reco::GenJetCollection::const_iterator genJetIter = genJetCollection.begin();
5018  genJetIter != genJetCollection.end();
5019  ++genJetIter) {
5020  if (genJetIter->pt() < minPhoEtCut_)
5021  continue;
5022  if (fabs(genJetIter->eta()) > 2.5)
5023  continue;
5024 
5025  float mcJetPhi = genJetIter->phi();
5026  mcJetPhi_ = phiNormalization(mcJetPhi);
5027  mcJetEta_ = genJetIter->eta();
5028  float mcJetPt = genJetIter->pt();
5029 
5030  h_SimJet_[0]->Fill(mcJetEta_);
5031  h_SimJet_[1]->Fill(mcJetPhi_);
5032  h_SimJet_[2]->Fill(mcJetPt);
5033 
5034  std::vector<reco::Photon> thePhotons;
5035  bool matched = false;
5036 
5037  reco::Photon matchingPho;
5038  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
5039  iPho++) {
5040  reco::Photon aPho = reco::Photon(*iPho);
5041  float phiPho = aPho.phi();
5042  float etaPho = aPho.eta();
5043  float deltaPhi = phiPho - mcJetPhi_;
5044  float deltaEta = etaPho - mcJetEta_;
5045  if (deltaPhi > pi)
5046  deltaPhi -= twopi;
5047  if (deltaPhi < -pi)
5048  deltaPhi += twopi;
5049  deltaPhi = pow(deltaPhi, 2);
5050  deltaEta = pow(deltaEta, 2);
5051  float delta = sqrt(deltaPhi + deltaEta);
5052  if (delta < 0.3) {
5053  matchingPho = *iPho;
5054  matched = true;
5055  }
5056  } // end loop over reco photons
5057 
5058  if (!matched)
5059  continue;
5060  nPho++;
5061 
5064  h_MatchedSimJet_[2]->Fill(mcJetPt);
5065 
5066  bool phoIsInBarrel = false;
5067  bool phoIsInEndcap = false;
5068  if (fabs(matchingPho.superCluster()->position().eta()) < 1.479) {
5069  phoIsInBarrel = true;
5070  } else {
5071  phoIsInEndcap = true;
5072  }
5073  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
5074  if (phoIsInBarrel) {
5075  // Get handle to rec hits ecal barrel
5076  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
5077  if (!ecalRecHitHandle.isValid()) {
5078  Labels l;
5080  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5081  return;
5082  }
5083 
5084  } else if (phoIsInEndcap) {
5085  // Get handle to rec hits ecal encap
5086  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
5087  if (!ecalRecHitHandle.isValid()) {
5088  Labels l;
5090  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5091  return;
5092  }
5093  }
5094 
5095  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
5096  float photonE = matchingPho.energy();
5097  float photonEt = matchingPho.et();
5098  float r9 = matchingPho.r9();
5099  float r1 = matchingPho.r1x5();
5100  float r2 = matchingPho.r2x5();
5101  float sigmaIetaIeta = matchingPho.sigmaIetaIeta();
5102  float hOverE = matchingPho.hadronicOverEm();
5103  float ecalIso = matchingPho.ecalRecHitSumEtConeDR04();
5104  float hcalIso = matchingPho.hcalTowerSumEtConeDR04();
5105  float trkIso = matchingPho.trkSumPtSolidConeDR04();
5106  float nIsoTrk = matchingPho.nTrkSolidConeDR04();
5107  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
5108 
5109  bool atLeastOneDeadChannel = false;
5110  for (reco::CaloCluster_iterator bcIt = matchingPho.superCluster()->clustersBegin();
5111  bcIt != matchingPho.superCluster()->clustersEnd();
5112  ++bcIt) {
5113  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
5114  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
5115  ++it) {
5116  if (rhIt->first == (*it).id()) {
5117  if ((*it).recoFlag() == 9) {
5118  atLeastOneDeadChannel = true;
5119  break;
5120  }
5121  }
5122  }
5123  }
5124  }
5125 
5126  if (atLeastOneDeadChannel) {
5129  h_MatchedSimJetBadCh_[2]->Fill(mcJetPt);
5130  }
5131 
5132  h_scBkgEta_->Fill(matchingPho.superCluster()->eta());
5133  h_scBkgPhi_->Fill(matchingPho.superCluster()->phi());
5134  h_scBkgE_[0]->Fill(matchingPho.superCluster()->energy());
5135  h_scBkgEt_[0]->Fill(matchingPho.superCluster()->energy() / cosh(matchingPho.superCluster()->eta()));
5136  //
5137  h_phoBkgEta_->Fill(matchingPho.eta());
5138  h_phoBkgPhi_->Fill(matchingPho.phi());
5139  h_phoBkgE_[0]->Fill(photonE);
5140  h_phoBkgEt_[0]->Fill(photonEt);
5141  h_phoBkgDEta_->Fill(matchingPho.eta() - mcJetEta_);
5142  h_phoBkgDPhi_->Fill(matchingPho.phi() - mcJetPhi_);
5143 
5144  h_r9Bkg_[0]->Fill(r9);
5145  h_r1Bkg_[0]->Fill(r1);
5146  h_r2Bkg_[0]->Fill(r2);
5148  h_hOverEBkg_[0]->Fill(hOverE);
5152  h_nTrkSolidConeDR04Bkg_[0]->Fill(nIsoTrk);
5153 
5154  if (!isRunCentrally_) {
5156  h2_r9VsEtBkg_->Fill(mcJetPt, r9);
5158  h2_r1VsEtBkg_->Fill(mcJetPt, r1);
5160  h2_r2VsEtBkg_->Fill(mcJetPt, r2);
5164  h2_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5165 
5167  p_r1VsEtBkg_->Fill(mcJetPt, r1);
5169  p_r2VsEtBkg_->Fill(mcJetPt, r2);
5173  p_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5174  }
5175 
5176  if (!isRunCentrally_) {
5188  p_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5192  h2_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5193  }
5194 
5195  if (phoIsInBarrel) {
5196  h_r9Bkg_[1]->Fill(r9);
5197  h_r1Bkg_[1]->Fill(r1);
5198  h_r2Bkg_[1]->Fill(r2);
5199 
5201  h_hOverEBkg_[1]->Fill(hOverE);
5205  h_nTrkSolidConeDR04Bkg_[1]->Fill(nIsoTrk);
5206 
5207  if (!isRunCentrally_) {
5210  h2_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5217  p_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5218  }
5219  } else if (phoIsInEndcap) {
5220  h_r9Bkg_[2]->Fill(r9);
5221  h_r1Bkg_[2]->Fill(r1);
5222  h_r2Bkg_[2]->Fill(r2);
5223 
5225  h_hOverEBkg_[2]->Fill(hOverE);
5229  h_nTrkSolidConeDR04Bkg_[2]->Fill(nIsoTrk);
5230 
5231  if (!isRunCentrally_) {
5234  h2_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5241  p_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5242  }
5243  }
5244 
5245  if (!fastSim_) {
5248  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
5249  reco::ConversionRef aConv = conversions[iConv];
5250  //std::vector<reco::TrackRef> tracks = aConv->tracks();
5251  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
5252  double like = aConv->MVAout();
5253  if (like < likelihoodCut_)
5254  continue;
5255  if (tracks.size() < 2)
5256  continue;
5257  if (!aConv->caloCluster().empty()) {
5258  h_convEtaBkg_->Fill(aConv->caloCluster()[0]->eta());
5259  h_convPhiBkg_->Fill(aConv->caloCluster()[0]->phi());
5260  }
5261  h_mvaOutBkg_[0]->Fill(like);
5262  float eoverp = aConv->EoverP();
5263  h_EoverPTracksBkg_[0]->Fill(eoverp);
5264  h_PoverETracksBkg_[0]->Fill(1. / eoverp);
5265  h_DCotTracksBkg_[0]->Fill(aConv->pairCotThetaSeparation());
5266  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
5267  h_DPhiTracksAtVtxBkg_[0]->Fill(dPhiTracksAtVtx);
5268 
5269  if (phoIsInBarrel) {
5270  h_mvaOutBkg_[1]->Fill(like);
5271  h_EoverPTracksBkg_[1]->Fill(eoverp);
5272  h_PoverETracksBkg_[1]->Fill(1. / eoverp);
5273  h_DCotTracksBkg_[1]->Fill(aConv->pairCotThetaSeparation());
5274  h_DPhiTracksAtVtxBkg_[1]->Fill(dPhiTracksAtVtx);
5275  } else if (phoIsInEndcap) {
5276  h_mvaOutBkg_[2]->Fill(like);
5277  h_EoverPTracksBkg_[2]->Fill(eoverp);
5278  h_PoverETracksBkg_[2]->Fill(1. / eoverp);
5279  h_DCotTracksBkg_[2]->Fill(aConv->pairCotThetaSeparation());
5280  h_DPhiTracksAtVtxBkg_[2]->Fill(dPhiTracksAtVtx);
5281  }
5282 
5283  if (aConv->conversionVertex().isValid()) {
5284  double convR = sqrt(aConv->conversionVertex().position().perp2());
5285  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
5286  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
5287  if (scalar < 0)
5288  convR = -sqrt(aConv->conversionVertex().position().perp2());
5289 
5290  if (!isRunCentrally_) {
5291  h_convVtxRvsZBkg_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
5292  sqrt(aConv->conversionVertex().position().perp2()));
5293  if (!aConv->caloCluster().empty() && fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
5294  h_convVtxYvsXBkg_->Fill(aConv->conversionVertex().position().y(),
5295  aConv->conversionVertex().position().x());
5296  h_convVtxRvsZBkg_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
5297  }
5298  }
5299 
5300  } // end vertex valid
5301 
5302  } // end loop over conversions
5303  } // if !fastSim
5304  } // end loop over sim jets
5305 
5307  for (reco::GenParticleCollection::const_iterator mcIter = genParticles->begin(); mcIter != genParticles->end();
5308  mcIter++) {
5309  if (!(mcIter->pdgId() == 22))
5310  continue;
5311  if (mcIter->mother() != nullptr and !(mcIter->mother()->pdgId() == 25))
5312  continue;
5313  if (fabs(mcIter->eta()) > 2.5)
5314  continue;
5315 
5316  float mcPhi = mcIter->phi();
5317  float mcEta = mcIter->eta();
5318  //mcEta = etaTransformation(mcEta, (*mcPho).primaryVertex().z() );
5319  float mcEnergy = mcIter->energy();
5320 
5321  double dR = 9999999.;
5322  float minDr = 10000.;
5323  int iMatch = -1;
5324  bool matched = false;
5325 
5326  for (unsigned int ipho = 0; ipho < photonHandle->size(); ipho++) {
5327  reco::PhotonRef pho(reco::PhotonRef(photonHandle, ipho));
5328 
5329  double dphi = pho->phi() - mcPhi;
5330  if (std::fabs(dphi) > CLHEP::pi) {
5331  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
5332  }
5333  double deta = pho->superCluster()->position().eta() - mcEta;
5334 
5335  dR = sqrt(pow((deta), 2) + pow(dphi, 2));
5336  if (dR < 0.1 && dR < minDr) {
5337  minDr = dR;
5338  iMatch = ipho;
5339  }
5340  }
5341 
5342  if (iMatch > -1)
5343  matched = true;
5344  if (!matched)
5345  continue;
5346 
5347  reco::PhotonRef matchingPho(reco::PhotonRef(photonHandle, iMatch));
5348 
5349  bool phoIsInBarrel = false;
5350  bool phoIsInEndcap = false;
5351 
5352  float phoEta = matchingPho->superCluster()->position().eta();
5353  if (fabs(phoEta) < 1.479) {
5354  phoIsInBarrel = true;
5355  } else {
5356  phoIsInEndcap = true;
5357  }
5358 
5359  float photonE = matchingPho->energy();
5360  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
5361  float photonEt = matchingPho->energy() / cosh(matchingPho->eta());
5362  // float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
5363  //float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
5364  float r9 = matchingPho->r9();
5365  float full5x5_r9 = matchingPho->full5x5_r9();
5366  float r1 = matchingPho->r1x5();
5367  float r2 = matchingPho->r2x5();
5368  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
5369  float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
5370  float hOverE = matchingPho->hadronicOverEm();
5371  float newhOverE = matchingPho->hadTowOverEm();
5372  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
5373  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
5374  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
5375  float trkIso = matchingPho->trkSumPtSolidConeDR04();
5376  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
5377  // PF related quantities
5378  float chargedHadIso = matchingPho->chargedHadronIso();
5379  float neutralHadIso = matchingPho->neutralHadronIso();
5380  float photonIso = matchingPho->photonIso();
5381  // float etOutsideMustache = matchingPho->etOutsideMustache();
5382  // int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
5383  //float pfMVA = matchingPho->pfMVA();
5384 
5385  if ((photonEt > 14 && newhOverE < 0.15) || (photonEt > 10 && photonEt < 14 && chargedHadIso < 10)) {
5386  h_scEta_miniAOD_[0]->Fill(matchingPho->superCluster()->eta());
5387  h_scPhi_miniAOD_[0]->Fill(matchingPho->superCluster()->phi());
5388 
5389  h_phoE_miniAOD_[0][0]->Fill(photonE);
5390  h_phoEt_miniAOD_[0][0]->Fill(photonEt);
5391 
5392  h_phoERes_miniAOD_[0][0]->Fill(photonE / mcEnergy);
5393  h_phoSigmaEoE_miniAOD_[0][0]->Fill(sigmaEoE);
5394 
5395  h_r9_miniAOD_[0][0]->Fill(r9);
5396  h_full5x5_r9_miniAOD_[0][0]->Fill(full5x5_r9);
5397  h_r1_miniAOD_[0][0]->Fill(r1);
5398  h_r2_miniAOD_[0][0]->Fill(r2);
5399 
5401  h_full5x5_sigmaIetaIeta_miniAOD_[0][0]->Fill(full5x5_sieie);
5402  h_hOverE_miniAOD_[0][0]->Fill(hOverE);
5403  h_newhOverE_miniAOD_[0][0]->Fill(newhOverE);
5404 
5407  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][0]->Fill(newhcalIso);
5409  h_nTrkSolidConeDR04_miniAOD_[0][0]->Fill(nIsoTrk);
5410 
5411  //
5412  h_chHadIso_miniAOD_[0]->Fill(chargedHadIso);
5413  h_nHadIso_miniAOD_[0]->Fill(neutralHadIso);
5415 
5416  //
5417  if (phoIsInBarrel) {
5418  h_phoE_miniAOD_[0][1]->Fill(photonE);
5419  h_phoEt_miniAOD_[0][1]->Fill(photonEt);
5420 
5421  h_phoERes_miniAOD_[0][1]->Fill(photonE / mcEnergy);
5422  h_phoSigmaEoE_miniAOD_[0][1]->Fill(sigmaEoE);
5423 
5424  h_r9_miniAOD_[0][1]->Fill(r9);
5425  h_full5x5_r9_miniAOD_[0][1]->Fill(full5x5_r9);
5426  h_r1_miniAOD_[0][1]->Fill(r1);
5427  h_r2_miniAOD_[0][1]->Fill(r2);
5429  h_full5x5_sigmaIetaIeta_miniAOD_[0][1]->Fill(full5x5_sieie);
5430  h_hOverE_miniAOD_[0][1]->Fill(hOverE);
5431  h_newhOverE_miniAOD_[0][1]->Fill(newhOverE);
5434  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][1]->Fill(newhcalIso);
5436  h_nTrkSolidConeDR04_miniAOD_[0][1]->Fill(nIsoTrk);
5437  h_chHadIso_miniAOD_[1]->Fill(chargedHadIso);
5438  h_nHadIso_miniAOD_[1]->Fill(neutralHadIso);
5440  }
5441  if (phoIsInEndcap) {
5442  h_phoE_miniAOD_[0][2]->Fill(photonE);
5443  h_phoEt_miniAOD_[0][2]->Fill(photonEt);
5444 
5445  h_phoERes_miniAOD_[0][2]->Fill(photonE / mcEnergy);
5446  h_phoSigmaEoE_miniAOD_[0][2]->Fill(sigmaEoE);
5447  h_r9_miniAOD_[0][2]->Fill(r9);
5448  h_full5x5_r9_miniAOD_[0][2]->Fill(full5x5_r9);
5449  h_r1_miniAOD_[0][2]->Fill(r1);
5450  h_r2_miniAOD_[0][2]->Fill(r2);
5452  h_full5x5_sigmaIetaIeta_miniAOD_[0][2]->Fill(full5x5_sieie);
5453  h_hOverE_miniAOD_[0][2]->Fill(hOverE);
5454  h_newhOverE_miniAOD_[0][2]->Fill(newhOverE);
5457  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][2]->Fill(newhcalIso);
5459  h_nTrkSolidConeDR04_miniAOD_[0][2]->Fill(nIsoTrk);
5460  h_chHadIso_miniAOD_[2]->Fill(chargedHadIso);
5461  h_nHadIso_miniAOD_[2]->Fill(neutralHadIso);
5463  }
5464  } // end histos for comparing with miniAOD
5465 
5466  } // end loop over gen photons
5467 
5468  h_nPho_->Fill(float(nPho));
5469 }
5470 
5472  //---Definitions
5473  const float PI = 3.1415927;
5474  const float TWOPI = 2.0 * PI;
5475 
5476  if (phi > PI) {
5477  phi = phi - TWOPI;
5478  }
5479  if (phi < -PI) {
5480  phi = phi + TWOPI;
5481  }
5482 
5483  return phi;
5484 }
5485 
5486 float PhotonValidator::etaTransformation(float EtaParticle, float Zvertex) {
5487  //---Definitions
5488  const float PI = 3.1415927;
5489 
5490  //---Definitions for ECAL
5491  const float R_ECAL = 136.5;
5492  const float Z_Endcap = 328.0;
5493  const float etaBarrelEndcap = 1.479;
5494 
5495  //---ETA correction
5496 
5497  float Theta = 0.0;
5498  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
5499 
5500  if (ZEcal != 0.0)
5501  Theta = atan(R_ECAL / ZEcal);
5502  if (Theta < 0.0)
5503  Theta = Theta + PI;
5504  float ETA = -log(tan(0.5 * Theta));
5505 
5506  if (fabs(ETA) > etaBarrelEndcap) {
5507  float Zend = Z_Endcap;
5508  if (EtaParticle < 0.0)
5509  Zend = -Zend;
5510  float Zlen = Zend - Zvertex;
5511  float RR = Zlen / sinh(EtaParticle);
5512  Theta = atan(RR / Zend);
5513  if (Theta < 0.0)
5514  Theta = Theta + PI;
5515  ETA = -log(tan(0.5 * Theta));
5516  }
5517  //---Return the result
5518  return ETA;
5519  //---end
5520 }
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:307
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:67
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
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:460
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 * 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:277
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:224
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:498
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:478
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:276
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:408
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:23
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_dRPhoPFcand_NeuHad_Cleaned_[5]
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:130
MonitorElement * h_phoE_[2][3]
MonitorElement * h_simConvVtxYvsX_
MonitorElement * h_hOverE_[3][3]
MonitorElement * p_TkPtPull_[3]
MonitorElement * h_hOverEBkg_[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:502
MonitorElement * p_DCotTracksVsEta_
MonitorElement * h_convPtRes_[2][3]
MonitorElement * h2_nTrkSolidConeDR04VsEtaBkg_
float r2x5() const
Definition: Photon.h:278
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:239
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]
MonitorElement * h_SumPtOverPhoPt_Pho_unCleaned_[3]
MonitorElement * h2_ecalRecHitSumEtConeDR04VsEtBkg_[3]
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:221
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]
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:279
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]
MonitorElement * h_SimPhoMotherEta_[2]
MonitorElement * h_EoverPTracksBkg_[3]
MonitorElement * h_convVtxdR_barrel_
void push_back(const RefToBase< T > &)
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_dRPhoPFcand_NeuHad_unCleaned_[5]
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:216
MonitorElement * h_SimConvOneTracks_[5]
MonitorElement * h_full5x5_sigmaIetaIeta_miniAOD_[3][3]
MonitorElement * h_convEta_[3]
MonitorElement * p_hcalTowerSumEtConeDR04VsEtaBkg_
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