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_ =
3130  iBooker.book1D("allTrackAlgo", " Track Algo ", reco::TrackBase::algoSize, -0.5, reco::TrackBase::algoSize - 0.5);
3131  h_convAlgo_ = iBooker.book1D("allConvAlgo", " Conv Algo ", 5, -0.5, 4.5);
3132  h_convQuality_ = iBooker.book1D("allConvQuality", "Conv quality ", 11, -0.5, 11.);
3133 
3134  // histos for fake rate
3135  histname = "h_RecoConvTwoTracksEta";
3137  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #eta", etaBin2, etaMin, etaMax);
3138  histname = "h_RecoConvTwoTracksPhi";
3140  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated #phi", phiBin, phiMin, phiMax);
3141  histname = "h_RecoConvTwoTracksR";
3143  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated R", rBin, rMin, rMax);
3144  histname = "h_RecoConvTwoTracksZ";
3146  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Z", zBin, zMin, zMax);
3147  histname = "h_RecoConvTwoTracksEt";
3149  iBooker.book1D(histname, " All reco conversions with 2 reco tracks: simulated Et", etBin, etMin, etMax);
3150  //
3151  histname = "h_RecoConvTwoMTracksEta";
3153  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #eta", etaBin2, etaMin, etaMax);
3154  histname = "h_RecoConvTwoMTracksPhi";
3156  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated #phi", phiBin, phiMin, phiMax);
3157  histname = "h_RecoConvTwoMTracksR";
3159  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated R", rBin, rMin, rMax);
3160  histname = "h_RecoConvTwoMTracksZ";
3162  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Z", zBin, zMin, zMax);
3163  histname = "h_RecoConvTwoMTracksEt";
3165  iBooker.book1D(histname, " All reco conversions with 2 reco-ass tracks: simulated Et", etBin, etMin, etMax);
3166 }
3167 
3168 void PhotonValidator::dqmBeginRun(edm::Run const& r, edm::EventSetup const& theEventSetup) {
3169  //get magnetic field
3170  edm::LogInfo("ConvertedPhotonProducer") << " get magnetic field"
3171  << "\n";
3172  theMF_ = theEventSetup.getHandle(magneticFieldToken_);
3173 
3174  thePhotonMCTruthFinder_ = std::make_unique<PhotonMCTruthFinder>();
3175 }
3176 
3178 
3180  thePhotonMCTruthFinder_->clear();
3181  using namespace edm;
3182  // const float etaPhiDistance=0.01;
3183  // Fiducial region
3184  // const float TRK_BARL =0.9;
3185  const float BARL = 1.4442; // DAQ TDR p.290
3186  // const float END_LO = 1.566; // unused
3187  const float END_HI = 2.5;
3188  // Electron mass
3189  //const Float_t mElec= 0.000511;
3190 
3192  e.getByLabel("trackAssociatorByHitsForPhotonValidation", theHitsAssociator);
3194 
3195  nEvt_++;
3196  LogInfo("PhotonValidator") << "PhotonValidator Analyzing event number: " << e.id() << " Global Counter " << nEvt_
3197  << "\n";
3198 
3199  // get the geometry from the event setup:
3201 
3203  e.getByToken(offline_pvToken_, vtxH);
3204  h_nRecoVtx_->Fill(float(vtxH->size()));
3205 
3206  // Transform Track into TransientTrack (needed by the Vertex fitter)
3207  auto theTTB = esup.getHandle(transientTrackBuilderToken_);
3208 
3210  Handle<reco::PhotonCollection> photonHandle;
3211  e.getByToken(photonCollectionToken_, photonHandle);
3212  const reco::PhotonCollection photonCollection = *(photonHandle.product());
3213  if (!photonHandle.isValid()) {
3214  edm::LogError("PhotonProducer") << "Error! Can't get the Photon collection " << std::endl;
3215  return;
3216  }
3217 
3218  // Get the PF refined cluster collection
3219  Handle<reco::PFCandidateCollection> pfCandidateHandle;
3220  e.getByToken(pfCandidates_, pfCandidateHandle);
3221  if (!pfCandidateHandle.isValid()) {
3222  edm::LogError("PhotonValidator") << "Error! Can't get the product pfCandidates " << std::endl;
3223  }
3224 
3225  edm::Handle<edm::ValueMap<std::vector<reco::PFCandidateRef> > > phoToParticleBasedIsoMapHandle;
3226  edm::ValueMap<std::vector<reco::PFCandidateRef> > phoToParticleBasedIsoMap;
3227  if (fName_ == "pfPhotonValidator") {
3228  e.getByToken(particleBasedIso_token, phoToParticleBasedIsoMapHandle);
3229  if (!phoToParticleBasedIsoMapHandle.isValid()) {
3230  edm::LogInfo("PhotonValidator") << "Error! Can't get the product: valueMap photons to particle based iso "
3231  << std::endl;
3232  }
3233  phoToParticleBasedIsoMap = *(phoToParticleBasedIsoMapHandle.product());
3234  }
3235 
3236  Handle<edm::View<reco::Track> > outInTrkHandle;
3237  Handle<edm::View<reco::Track> > inOutTrkHandle;
3238  if (!fastSim_) {
3240  e.getByToken(conversionOITrackPr_Token_, outInTrkHandle);
3242  e.getByToken(conversionIOTrackPr_Token_, inOutTrkHandle);
3243 
3244  } // if !fastSim
3245 
3247  //get simtrack info
3248  std::vector<SimTrack> theSimTracks;
3249  std::vector<SimVertex> theSimVertices;
3252 
3253  if (!fastSim_) {
3254  e.getByToken(g4_simTk_Token_, SimTk);
3255  e.getByToken(g4_simVtx_Token_, SimVtx);
3256  } else {
3257  e.getByToken(famos_simTk_Token_, SimTk);
3258  e.getByToken(famos_simVtx_Token_, SimVtx);
3259  }
3260 
3261  theSimTracks.insert(theSimTracks.end(), SimTk->begin(), SimTk->end());
3262  theSimVertices.insert(theSimVertices.end(), SimVtx->begin(), SimVtx->end());
3263  std::vector<PhotonMCTruth> mcPhotons = thePhotonMCTruthFinder_->find(theSimTracks, theSimVertices);
3264 
3266  e.getByToken(hepMC_Token_, hepMC);
3267  const HepMC::GenEvent* myGenEvent = hepMC->GetEvent();
3268 
3270  e.getByToken(genpartToken_, genParticles);
3271 
3272  // get generated jets
3273  Handle<reco::GenJetCollection> GenJetsHandle;
3274  e.getByToken(genjets_Token_, GenJetsHandle);
3275  reco::GenJetCollection genJetCollection = *(GenJetsHandle.product());
3276 
3277  // Get electron tracking truth
3278  bool useTP = parameters_.getParameter<bool>("useTP");
3280  edm::Handle<TrackingParticleCollection> ElectronTPHandle;
3281  if (useTP) {
3282  if (!fastSim_) {
3283  e.getByToken(token_tp_, ElectronTPHandle);
3284  trackingParticles = *(ElectronTPHandle.product());
3285  }
3286  }
3287 
3289  std::vector<reco::PhotonCollection::const_iterator> StoRMatchedConvertedPhotons;
3290  reco::SimToRecoCollection OISimToReco;
3291  reco::SimToRecoCollection IOSimToReco;
3292  // Reco to Sim
3293  reco::RecoToSimCollection OIRecoToSim;
3294  reco::RecoToSimCollection IORecoToSim;
3295 
3296  if (useTP) {
3297  if (!fastSim_) {
3298  // Sim to Reco
3299  OISimToReco = trackAssociator->associateSimToReco(outInTrkHandle, ElectronTPHandle);
3300  IOSimToReco = trackAssociator->associateSimToReco(inOutTrkHandle, ElectronTPHandle);
3301  // Reco to Sim
3302  OIRecoToSim = trackAssociator->associateRecoToSim(outInTrkHandle, ElectronTPHandle);
3303  IORecoToSim = trackAssociator->associateRecoToSim(inOutTrkHandle, ElectronTPHandle);
3304  }
3305  }
3306  //
3307  vector<reco::SimToRecoCollection*> StoRCollPtrs;
3308  StoRCollPtrs.push_back(&OISimToReco);
3309  StoRCollPtrs.push_back(&IOSimToReco);
3310  vector<reco::RecoToSimCollection*> RtoSCollPtrs;
3311  RtoSCollPtrs.push_back(&OIRecoToSim);
3312  RtoSCollPtrs.push_back(&IORecoToSim);
3313  //
3314  for (int i = 0; i < 2; i++)
3315  nSimPho_[i] = 0;
3316  for (int i = 0; i < 2; i++)
3317  nSimConv_[i] = 0;
3318 
3319  std::vector<reco::PhotonRef> myPhotons;
3320 
3321  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3322  reco::PhotonRef phoRef(reco::PhotonRef(photonHandle, iPho));
3323  // for( reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end(); iPho++) {
3324  if (fabs(phoRef->eta()) > 2.5)
3325  continue;
3326  myPhotons.push_back(phoRef);
3327  }
3328 
3329  std::sort(myPhotons.begin(), myPhotons.end(), sortPhotons());
3330  // if ( ! isRunCentrally_ ) {
3331  if (myPhotons.size() >= 2) {
3332  if (myPhotons[0]->et() > 40 && myPhotons[1]->et() > 25) {
3333  math::XYZTLorentzVector p12 = myPhotons[0]->p4() + myPhotons[1]->p4();
3334  math::XYZTLorentzVector p12_regr1 =
3335  myPhotons[0]->p4(reco::Photon::regression1) + myPhotons[1]->p4(reco::Photon::regression1);
3336  math::XYZTLorentzVector p12_regr2 =
3337  myPhotons[0]->p4(reco::Photon::regression2) + myPhotons[1]->p4(reco::Photon::regression2);
3338  float gamgamMass2 = p12.Dot(p12);
3339  float gamgamMass2_regr1 = p12_regr1.Dot(p12_regr1);
3340  float gamgamMass2_regr2 = p12_regr2.Dot(p12_regr2);
3341 
3343  if (gamgamMass2 > 0) {
3344  // total
3345  h_gamgamMass_[0][0]->Fill(sqrt(gamgamMass2));
3346  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3347  h_gamgamMass_[0][1]->Fill(sqrt(gamgamMass2));
3348  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3349  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3350  h_gamgamMass_[0][2]->Fill(sqrt(gamgamMass2));
3351  // Golden photons
3352  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3353  h_gamgamMass_[1][0]->Fill(sqrt(gamgamMass2));
3354  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3355  h_gamgamMass_[1][1]->Fill(sqrt(gamgamMass2));
3356  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3357  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3358  h_gamgamMass_[1][2]->Fill(sqrt(gamgamMass2));
3359  }
3360  // both photons converted
3361  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3362  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3363  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3364  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3365  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3366  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3367  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3368  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3369  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3370  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3371  }
3372  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3373  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3374  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3375  }
3376  }
3377  }
3378  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3379  myPhotons[1]->r9() > 0.93) { // one photon converted
3380  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3381  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3382  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3383  if (chi2Prob1 > 0.0005) {
3384  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3385  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3386  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3387  }
3388  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3389  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3390  }
3391  }
3392  }
3393  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3394  myPhotons[0]->r9() > 0.93) { // one photon converted
3395  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3396  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3397  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3398  if (chi2Prob1 > 0.0005) {
3399  h_gamgamMass_[2][0]->Fill(sqrt(gamgamMass2));
3400  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3401  h_gamgamMass_[2][1]->Fill(sqrt(gamgamMass2));
3402  }
3403  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3404  h_gamgamMass_[2][2]->Fill(sqrt(gamgamMass2));
3405  }
3406  }
3407  }
3408  }
3409  } // gamgamMass2 > 0
3410 
3412  if (gamgamMass2_regr1 > 0) {
3413  // total
3414  h_gamgamMassRegr1_[0][0]->Fill(sqrt(gamgamMass2_regr1));
3415  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3416  h_gamgamMassRegr1_[0][1]->Fill(sqrt(gamgamMass2_regr1));
3417  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3418  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3419  h_gamgamMassRegr1_[0][2]->Fill(sqrt(gamgamMass2_regr1));
3420  // Golden photons
3421  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3422  h_gamgamMassRegr1_[1][0]->Fill(sqrt(gamgamMass2_regr1));
3423  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3424  h_gamgamMassRegr1_[1][1]->Fill(sqrt(gamgamMass2_regr1));
3425  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3426  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3427  h_gamgamMassRegr1_[1][2]->Fill(sqrt(gamgamMass2_regr1));
3428  }
3429 
3430  // both photons converted
3431  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3432  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3433  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3434  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3435  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3436  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3437  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3438  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3439  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3440  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3441  }
3442  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3443  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3444  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3445  }
3446  }
3447  }
3448  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3449  myPhotons[1]->r9() > 0.93) { // one photon converted
3450  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3451  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3452  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3453  if (chi2Prob1 > 0.0005) {
3454  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3455  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3456  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3457  }
3458  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3459  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3460  }
3461  }
3462  }
3463  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3464  myPhotons[0]->r9() > 0.93) { // one photon converted
3465  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3466  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3467  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3468  if (chi2Prob1 > 0.0005) {
3469  h_gamgamMassRegr1_[2][0]->Fill(sqrt(gamgamMass2_regr1));
3470  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3471  h_gamgamMassRegr1_[2][1]->Fill(sqrt(gamgamMass2_regr1));
3472  }
3473  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3474  h_gamgamMassRegr1_[2][2]->Fill(sqrt(gamgamMass2_regr1));
3475  }
3476  }
3477  }
3478  }
3479  } // gamgamMass2_regr1 > 0
3480 
3482  if (gamgamMass2_regr2 > 0) {
3483  // total
3484  h_gamgamMassRegr2_[0][0]->Fill(sqrt(gamgamMass2_regr2));
3485  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3486  h_gamgamMassRegr2_[0][1]->Fill(sqrt(gamgamMass2_regr2));
3487  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3488  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3489  h_gamgamMassRegr2_[0][2]->Fill(sqrt(gamgamMass2_regr2));
3490  // Golden photons
3491  if (myPhotons[0]->r9() > 0.94 && myPhotons[1]->r9() > 0.94) {
3492  h_gamgamMassRegr2_[1][0]->Fill(sqrt(gamgamMass2_regr2));
3493  if (myPhotons[0]->isEB() && myPhotons[1]->isEB())
3494  h_gamgamMassRegr2_[1][1]->Fill(sqrt(gamgamMass2_regr2));
3495  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3496  (myPhotons[0]->isEB() && myPhotons[1]->isEE()))
3497  h_gamgamMassRegr2_[1][2]->Fill(sqrt(gamgamMass2_regr2));
3498  }
3499 
3500  // both photons converted
3501  if (!myPhotons[0]->conversions().empty() && !myPhotons[1]->conversions().empty()) {
3502  if (myPhotons[0]->conversions()[0]->nTracks() == 2 && myPhotons[1]->conversions()[0]->nTracks() == 2) {
3503  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3504  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3505  float chi2Prob2 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3506  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3507  if (chi2Prob1 > 0.0005 && chi2Prob2 > 0.0005) {
3508  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3509  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3510  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3511  }
3512  if ((myPhotons[0]->isEE() && myPhotons[1]->isEE()) || (myPhotons[0]->isEE() && myPhotons[1]->isEB()) ||
3513  (myPhotons[0]->isEB() && myPhotons[1]->isEE())) {
3514  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3515  }
3516  }
3517  }
3518  } else if (!myPhotons[0]->conversions().empty() && myPhotons[1]->conversions().empty() &&
3519  myPhotons[1]->r9() > 0.93) { // one photon converted
3520  if (myPhotons[0]->conversions()[0]->nTracks() == 2) {
3521  float chi2Prob1 = ChiSquaredProbability(myPhotons[0]->conversions()[0]->conversionVertex().chi2(),
3522  myPhotons[0]->conversions()[0]->conversionVertex().ndof());
3523  if (chi2Prob1 > 0.0005) {
3524  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3525  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3526  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3527  }
3528  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3529  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3530  }
3531  }
3532  }
3533  } else if (!myPhotons[1]->conversions().empty() && myPhotons[0]->conversions().empty() &&
3534  myPhotons[0]->r9() > 0.93) { // one photon converted
3535  if (myPhotons[1]->conversions()[0]->nTracks() == 2) {
3536  float chi2Prob1 = ChiSquaredProbability(myPhotons[1]->conversions()[0]->conversionVertex().chi2(),
3537  myPhotons[1]->conversions()[0]->conversionVertex().ndof());
3538  if (chi2Prob1 > 0.0005) {
3539  h_gamgamMassRegr2_[2][0]->Fill(sqrt(gamgamMass2_regr2));
3540  if (myPhotons[0]->isEB() && myPhotons[1]->isEB()) {
3541  h_gamgamMassRegr2_[2][1]->Fill(sqrt(gamgamMass2_regr2));
3542  }
3543  if (myPhotons[0]->isEE() || myPhotons[1]->isEE()) {
3544  h_gamgamMassRegr2_[2][2]->Fill(sqrt(gamgamMass2_regr2));
3545  }
3546  }
3547  }
3548  }
3549  } // gamgamMass2_regr2 > 0
3550  }
3551  }
3552  // }
3553 
3554  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
3555  if ((*mcPho).fourMomentum().et() < minPhoEtCut_)
3556  continue;
3557 
3558  for (HepMC::GenEvent::particle_const_iterator mcIter = myGenEvent->particles_begin();
3559  mcIter != myGenEvent->particles_end();
3560  mcIter++) {
3561  if ((*mcIter)->pdg_id() != 22)
3562  continue;
3563  bool isTheSame = false;
3564  HepMC::GenParticle* mother = nullptr;
3565  if ((*mcIter)->production_vertex()) {
3566  if ((*mcIter)->production_vertex()->particles_begin(HepMC::parents) !=
3567  (*mcIter)->production_vertex()->particles_end(HepMC::parents))
3568  mother = *((*mcIter)->production_vertex()->particles_begin(HepMC::parents));
3569  }
3570 
3571  float mcPhi = (*mcPho).fourMomentum().phi();
3572  mcPhi_ = phiNormalization(mcPhi);
3573  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
3574  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
3575 
3576  mcConvR_ = (*mcPho).vertex().perp();
3577  mcConvX_ = (*mcPho).vertex().x();
3578  mcConvY_ = (*mcPho).vertex().y();
3579  mcConvZ_ = (*mcPho).vertex().z();
3580  mcConvEta_ = (*mcPho).vertex().eta();
3581  mcConvPhi_ = (*mcPho).vertex().phi();
3582 
3583  if (fabs(mcEta_) > END_HI)
3584  continue;
3585 
3586  if (mother == nullptr || (mother != nullptr && mother->pdg_id() == 22) ||
3587  (mother != nullptr && mother->pdg_id() == 25) || (mother != nullptr && mother->pdg_id() == 35)) {
3588  double dPt = fabs((*mcIter)->momentum().perp() - (*mcPho).fourMomentum().et());
3589  float phiMother = (*mcIter)->momentum().phi();
3590  double dPhi = phiNormalization(phiMother) - mcPhi_;
3591  double dEta = fabs((*mcIter)->momentum().eta() - (*mcPho).fourMomentum().pseudoRapidity());
3592 
3593  if (dEta <= 0.0001 && dPhi <= 0.0001 && dPt <= 0.0001)
3594  isTheSame = true;
3595  }
3596  if (!isTheSame)
3597  continue;
3598 
3599  nSimPho_[0]++;
3600  if (!isRunCentrally_) {
3601  h_SimPhoMotherEt_[0]->Fill((*mcPho).motherMomentum().et());
3602  h_SimPhoMotherEta_[0]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3603  }
3604 
3605  h_SimPho_[0]->Fill(mcEta_);
3606  h_SimPho_[1]->Fill(mcPhi_);
3607  h_SimPho_[2]->Fill((*mcPho).fourMomentum().et());
3608 
3610 
3611  bool goodSimConversion = false;
3612  bool visibleConversion = false;
3613  bool visibleConversionsWithTwoSimTracks = false;
3614  if ((*mcPho).isAConversion() == 1) {
3615  nSimConv_[0]++;
3616  h_AllSimConv_[0]->Fill(mcEta_);
3617  h_AllSimConv_[1]->Fill(mcPhi_);
3620  h_AllSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3621 
3622  if (!isRunCentrally_) {
3623  if (mcConvR_ < 51)
3625  }
3626 
3627  if ((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
3628  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210))
3629  visibleConversion = true;
3630 
3631  theConvTP_.clear();
3632  for (size_t i = 0; i < trackingParticles.size(); ++i) {
3633  TrackingParticleRef tp(ElectronTPHandle, i);
3634  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.001 &&
3635  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.001) {
3637  }
3638  }
3639  if (theConvTP_.size() == 2)
3640  visibleConversionsWithTwoSimTracks = true;
3641  goodSimConversion = false;
3642 
3643  if (visibleConversion && visibleConversionsWithTwoSimTracks)
3644  goodSimConversion = true;
3645  if (goodSimConversion) {
3646  nSimConv_[1]++;
3647  h_VisSimConv_[0]->Fill(mcEta_);
3648  h_VisSimConv_[1]->Fill(mcPhi_);
3651  h_VisSimConv_[4]->Fill((*mcPho).fourMomentum().et());
3652 
3653  if (useTP) {
3654  if (!isRunCentrally_) {
3656  iTrk != theConvTP_.end();
3657  ++iTrk) {
3658  h_simTkPt_->Fill((*iTrk)->pt());
3659  h_simTkEta_->Fill((*iTrk)->eta());
3660  }
3661  }
3662  }
3663  }
3664  }
3665 
3666  float minDelta = 10000.;
3667  std::vector<reco::PhotonRef> thePhotons;
3668  int index = 0;
3669  int iMatch = -1;
3670  bool matched = false;
3671 
3672  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
3673  reco::PhotonRef aPho(reco::PhotonRef(photonHandle, iPho));
3674  thePhotons.push_back(aPho);
3675  float phiPho = aPho->phi();
3676  float etaPho = aPho->eta();
3677  float deltaPhi = phiPho - mcPhi_;
3678  float deltaEta = etaPho - mcEta_;
3679  if (deltaPhi > pi)
3680  deltaPhi -= twopi;
3681  if (deltaPhi < -pi)
3682  deltaPhi += twopi;
3683  deltaPhi = pow(deltaPhi, 2);
3684  deltaEta = pow(deltaEta, 2);
3685  float delta = sqrt(deltaPhi + deltaEta);
3686  if (delta < 0.1 && delta < minDelta) {
3687  minDelta = delta;
3688  iMatch = index;
3689  }
3690  index++;
3691  } // end loop over reco photons
3692  if (iMatch > -1)
3693  matched = true;
3694 
3695  if (matched) {
3696  nSimPho_[1]++;
3697  if (!isRunCentrally_) {
3698  h_SimPhoMotherEt_[1]->Fill((*mcPho).motherMomentum().et());
3699  h_SimPhoMotherEta_[1]->Fill((*mcPho).motherMomentum().pseudoRapidity());
3700  }
3703  h_MatchedSimPho_[2]->Fill((*mcPho).fourMomentum().et());
3704  }
3705 
3706  if (!matched)
3707  continue;
3708 
3709  bool phoIsInBarrel = false; // full barrel
3710  bool phoIsInBarrel1 = false; // |eta| <=1
3711  bool phoIsInBarrel2 = false; // |eta| >1
3712  bool phoIsInEndcap = false;
3713  bool phoIsInEndcapP = false;
3714  bool phoIsInEndcapM = false;
3715 
3716  reco::PhotonRef matchingPho = thePhotons[iMatch];
3717 
3718  if (fabs(matchingPho->superCluster()->position().eta()) < 1.479) {
3719  phoIsInBarrel = true;
3720  } else {
3721  phoIsInEndcap = true;
3722  if (matchingPho->superCluster()->position().eta() > 0)
3723  phoIsInEndcapP = true;
3724  if (matchingPho->superCluster()->position().eta() < 0)
3725  phoIsInEndcapM = true;
3726  }
3727  if (fabs(matchingPho->superCluster()->position().eta()) <= 1) {
3728  phoIsInBarrel1 = true;
3729  } else if (fabs(matchingPho->superCluster()->position().eta()) > 1) {
3730  phoIsInBarrel2 = true;
3731  }
3732 
3733  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
3734  if (phoIsInBarrel) {
3735  // Get handle to rec hits ecal barrel
3736  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
3737  if (!ecalRecHitHandle.isValid()) {
3738  Labels l;
3740  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3741  return;
3742  }
3743 
3744  } else if (phoIsInEndcap) {
3745  // Get handle to rec hits ecal encap
3746  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
3747  if (!ecalRecHitHandle.isValid()) {
3748  Labels l;
3750  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
3751  return;
3752  }
3753  }
3754 
3755  int type = 0;
3756  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
3757  float photonE = matchingPho->energy();
3758  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
3759  //float photonEt= matchingPho->energy()/cosh( matchingPho->eta()) ;
3760  float photonEt = matchingPho->pt();
3761  float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
3762  float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
3763  float r9 = matchingPho->r9();
3764  // float full5x5_r9 = matchingPho->full5x5_r9();
3765  float r1 = matchingPho->r1x5();
3766  float r2 = matchingPho->r2x5();
3767  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
3768  //float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
3769  float hOverE = matchingPho->hadronicOverEm();
3770  float newhOverE = matchingPho->hadTowOverEm();
3771  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
3772  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
3773  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
3774  float trkIso = matchingPho->trkSumPtSolidConeDR04();
3775  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
3776  // PF related quantities
3777  float chargedHadIso = matchingPho->chargedHadronIso();
3778  float neutralHadIso = matchingPho->neutralHadronIso();
3779  float photonIso = matchingPho->photonIso();
3780  float etOutsideMustache = matchingPho->etOutsideMustache();
3781  int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
3782  float pfMVA = matchingPho->pfMVA();
3783 
3784  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
3785  bool atLeastOneDeadChannel = false;
3786  for (reco::CaloCluster_iterator bcIt = matchingPho->superCluster()->clustersBegin();
3787  bcIt != matchingPho->superCluster()->clustersEnd();
3788  ++bcIt) {
3789  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
3790  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
3791  ++it) {
3792  if (rhIt->first == (*it).id()) {
3793  if ((*it).recoFlag() == 9) {
3794  atLeastOneDeadChannel = true;
3795  break;
3796  }
3797  }
3798  }
3799  }
3800  }
3801 
3802  if (atLeastOneDeadChannel) {
3805  h_MatchedSimPhoBadCh_[2]->Fill((*mcPho).fourMomentum().et());
3806  }
3807 
3808  if (phoIsInBarrel)
3809  h_phoPixSeedSize_[0]->Fill(matchingPho->electronPixelSeeds().size());
3810  else
3811  h_phoPixSeedSize_[1]->Fill(matchingPho->electronPixelSeeds().size());
3812 
3813  h_scEta_[type]->Fill(matchingPho->superCluster()->eta());
3814  h_scPhi_[type]->Fill(matchingPho->superCluster()->phi());
3815  if (!isRunCentrally_) {
3816  h_scEtaWidth_[type]->Fill(matchingPho->superCluster()->etaWidth());
3817  h_scPhiWidth_[type]->Fill(matchingPho->superCluster()->phiWidth());
3818  }
3819  h_scE_[type][0]->Fill(matchingPho->superCluster()->energy());
3820  h_scEt_[type][0]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3821  if (phoIsInEndcap)
3822  h_psE_->Fill(matchingPho->superCluster()->preshowerEnergy());
3823  //
3824  h_r9_[type][0]->Fill(r9);
3825  //
3826  h_r1_[type][0]->Fill(r1);
3827  //
3828  h_r2_[type][0]->Fill(r2);
3829  //
3831  //
3832  h_hOverE_[type][0]->Fill(hOverE);
3833  p_r9VsEta_[0]->Fill(mcEta_, r9);
3834 
3835  if (!isRunCentrally_) {
3836  h2_r9VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r9);
3837  h2_r1VsEta_[0]->Fill(mcEta_, r1);
3838  h2_r1VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r1);
3839  h2_r2VsEta_[0]->Fill(mcEta_, r2);
3840  h2_r2VsEt_[0]->Fill((*mcPho).fourMomentum().et(), r2);
3842  h2_sigmaIetaIetaVsEt_[0]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3844  h2_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3845  }
3847  p_hOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), hOverE);
3848  //
3849  h_newhOverE_[type][0]->Fill(newhOverE);
3850  p_newhOverEVsEta_[0]->Fill(mcEta_, newhOverE);
3851  p_newhOverEVsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhOverE);
3852 
3853  //
3855  if (!isRunCentrally_) {
3857  h2_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3859  h2_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3860  }
3862  if (!isRunCentrally_)
3863  p_ecalRecHitSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3864  //
3867  if (!isRunCentrally_)
3868  p_hcalTowerSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), hcalIso);
3869  //
3870  if (!isRunCentrally_)
3871  h_hcalTowerBcSumEtConeDR04_[type][0]->Fill(newhcalIso);
3872  p_hcalTowerBcSumEtConeDR04VsEta_[0]->Fill(mcEta_, newhcalIso);
3873  if (!isRunCentrally_)
3874  p_hcalTowerBcSumEtConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
3875  //
3876  h_isoTrkSolidConeDR04_[type][0]->Fill(trkIso);
3877  h_nTrkSolidConeDR04_[type][0]->Fill(nIsoTrk);
3878 
3879  if (!isRunCentrally_) {
3881  h2_isoTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), trkIso);
3882  h2_nTrkSolidConeDR04VsEta_[0]->Fill(mcEta_, nIsoTrk);
3883  h2_nTrkSolidConeDR04VsEt_[0]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3884  }
3885 
3886  h_chHadIso_[0]->Fill(chargedHadIso);
3887  h_nHadIso_[0]->Fill(neutralHadIso);
3888  h_phoIso_[0]->Fill(photonIso);
3889  h_nCluOutsideMustache_[0]->Fill(float(nClusterOutsideMustache));
3890  h_etOutsideMustache_[0]->Fill(etOutsideMustache);
3891  h_pfMva_[0]->Fill(pfMVA);
3892  //
3893  h_phoEta_[type]->Fill(matchingPho->eta());
3894  h_phoPhi_[type]->Fill(matchingPho->phi());
3895  h_phoDEta_[0]->Fill(matchingPho->eta() - (*mcPho).fourMomentum().eta());
3896  h_phoDPhi_[0]->Fill(matchingPho->phi() - mcPhi_);
3897  h_phoE_[type][0]->Fill(photonE);
3898  h_phoEt_[type][0]->Fill(photonEt);
3899  h_nConv_[0][0]->Fill(float(matchingPho->conversions().size()));
3900  h_nConv_[1][0]->Fill(float(matchingPho->conversionsOneLeg().size()));
3901 
3902  //
3903  h_phoERes_[0][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3904  h_phoSigmaEoE_[0][0]->Fill(sigmaEoE);
3905  h_phoEResRegr1_[0][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3906  h_phoEResRegr2_[0][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3907 
3908  p_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3909  p_sigmaEoEVsEta_[0]->Fill(mcEta_, sigmaEoE);
3910  p_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3911 
3912  if (!isRunCentrally_)
3913  h2_eResVsEta_[0]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3914  if (!isRunCentrally_)
3915  h2_eResVsEt_[0][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3916  if (!isRunCentrally_)
3917  h2_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3918  if (!isRunCentrally_)
3919  h2_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3920  if (!isRunCentrally_)
3921  p_eResVsR9_[0]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
3922  if (!isRunCentrally_)
3923  p_sceResVsR9_[0]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
3924  //
3925  if ((*mcPho).isAConversion() == 0) {
3926  if (!isRunCentrally_) {
3927  h2_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3928  h2_r9VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r9);
3929  //
3930  h2_r1VsEta_[1]->Fill(mcEta_, r1);
3931  h2_r1VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r1);
3932  //
3933  h2_r2VsEta_[1]->Fill(mcEta_, r2);
3934  h2_r2VsEt_[1]->Fill((*mcPho).fourMomentum().et(), r2);
3935  //
3937  h2_sigmaIetaIetaVsEt_[1]->Fill((*mcPho).fourMomentum().et(), sigmaIetaIeta);
3938  //
3940  h2_hOverEVsEt_[1]->Fill((*mcPho).fourMomentum().et(), hOverE);
3941  }
3942 
3943  if (!isRunCentrally_) {
3947  h2_isoTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), trkIso);
3948  h2_nTrkSolidConeDR04VsEta_[1]->Fill(mcEta_, nIsoTrk);
3949  h2_nTrkSolidConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), nIsoTrk);
3950  }
3952  if (!isRunCentrally_)
3954  }
3955 
3956  if (photonE / (*mcPho).fourMomentum().e() < 0.3 && photonE / (*mcPho).fourMomentum().e() > 0.1) {
3957  }
3958 
3959  if ((r9 > 0.94 && phoIsInBarrel) || (r9 > 0.95 && phoIsInEndcap)) {
3960  h_phoERes_[1][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3961  h_phoSigmaEoE_[1][0]->Fill(sigmaEoE);
3962  h_phoEResRegr1_[1][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3963  h_phoEResRegr2_[1][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3964  if (!isRunCentrally_)
3965  h2_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3966  p_eResVsEt_[0][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3967  p_eResVsEta_[1]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3968  p_r9VsEta_[1]->Fill(mcEta_, r9);
3969  p_sigmaEoEVsEta_[1]->Fill(mcEta_, sigmaEoE);
3970 
3971  } else if ((r9 <= 0.94 && phoIsInBarrel) || (r9 <= 0.95 && phoIsInEndcap)) {
3972  h_phoERes_[2][0]->Fill(photonE / (*mcPho).fourMomentum().e());
3973  h_phoSigmaEoE_[2][0]->Fill(sigmaEoE);
3974  h_phoEResRegr1_[2][0]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
3975  h_phoEResRegr2_[2][0]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
3976  p_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3977  p_eResVsEta_[2]->Fill(mcEta_, photonE / (*mcPho).fourMomentum().e());
3978  p_r9VsEta_[2]->Fill(mcEta_, r9);
3979  p_sigmaEoEVsEta_[2]->Fill(mcEta_, sigmaEoE);
3980 
3981  if (!isRunCentrally_) {
3982  h2_eResVsEt_[0][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
3983  h_EtR9Less093_[0][0]->Fill(photonEt);
3984  }
3985  }
3986 
3987  if (phoIsInBarrel) {
3988  h_scE_[type][1]->Fill(matchingPho->superCluster()->energy());
3989  h_scEt_[type][1]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
3990  h_r9_[type][1]->Fill(r9);
3991  h_r1_[type][1]->Fill(r1);
3992  h_r2_[type][1]->Fill(r2);
3994  h_hOverE_[type][1]->Fill(hOverE);
3995  h_newhOverE_[type][1]->Fill(newhOverE);
3997  p_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
3999  p_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4000  h_hcalTowerBcSumEtConeDR04_[type][1]->Fill(newhcalIso);
4001  p_hcalTowerBcSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4002  h_isoTrkSolidConeDR04_[type][1]->Fill(trkIso);
4003  h_nTrkSolidConeDR04_[type][1]->Fill(nIsoTrk);
4004  h_chHadIso_[1]->Fill(chargedHadIso);
4005  h_nHadIso_[1]->Fill(neutralHadIso);
4006  h_phoIso_[1]->Fill(photonIso);
4007  h_nCluOutsideMustache_[1]->Fill(float(nClusterOutsideMustache));
4008  h_etOutsideMustache_[1]->Fill(etOutsideMustache);
4009  h_pfMva_[1]->Fill(pfMVA);
4010  h_phoE_[type][1]->Fill(photonE);
4011  h_phoEt_[type][1]->Fill(photonEt);
4012  h_nConv_[type][1]->Fill(float(matchingPho->conversions().size()));
4013  h_nConv_[1][1]->Fill(float(matchingPho->conversionsOneLeg().size()));
4014  h_phoERes_[0][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4015  h_phoSigmaEoE_[0][1]->Fill(sigmaEoE);
4016  h_phoEResRegr1_[0][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4017  h_phoEResRegr2_[0][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4018  p_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4019  p_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4020  if (!isRunCentrally_) {
4021  h2_eResVsR9_[1]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4022  h2_sceResVsR9_[1]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4023  h2_ecalRecHitSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4024  h2_hcalTowerSumEtConeDR04VsEt_[1]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4025  h2_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4026  }
4027  p_eResVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4028  p_eResVsNVtx_[1][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4029  p_sigmaEoEVsEt_[1][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4030  p_sigmaEoEVsNVtx_[1][0]->Fill(float(vtxH->size()), sigmaEoE);
4031 
4032  if (r9 > 0.94) {
4033  h_phoERes_[1][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4034  h_phoSigmaEoE_[1][1]->Fill(sigmaEoE);
4035  h_phoEResRegr1_[1][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4036  h_phoEResRegr2_[1][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4037  if (!isRunCentrally_)
4038  h2_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4039  p_eResVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4040  p_eResVsNVtx_[1][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4041  p_sigmaEoEVsEt_[1][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4042  p_sigmaEoEVsNVtx_[1][1]->Fill(float(vtxH->size()), sigmaEoE);
4043  }
4044  if (r9 <= 0.94) {
4045  h_phoERes_[2][1]->Fill(photonE / (*mcPho).fourMomentum().e());
4046  h_phoSigmaEoE_[2][1]->Fill(sigmaEoE);
4047  h_phoEResRegr1_[2][1]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4048  h_phoEResRegr2_[2][1]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4049  p_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4050  p_eResVsNVtx_[1][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4051  p_sigmaEoEVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4052  p_sigmaEoEVsNVtx_[1][2]->Fill(float(vtxH->size()), sigmaEoE);
4053  if (!isRunCentrally_) {
4054  h2_eResVsEt_[1][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4055  h_EtR9Less093_[0][1]->Fill(photonEt);
4056  }
4057  }
4058  }
4059  if (phoIsInEndcap) {
4060  h_scE_[type][2]->Fill(matchingPho->superCluster()->energy());
4061  h_scEt_[type][2]->Fill(matchingPho->superCluster()->energy() / cosh(matchingPho->superCluster()->eta()));
4062  h_r9_[type][2]->Fill(r9);
4063  h_r1_[type][2]->Fill(r1);
4064  h_r2_[type][2]->Fill(r2);
4066  h_hOverE_[type][2]->Fill(hOverE);
4067  h_newhOverE_[type][2]->Fill(newhOverE);
4069  p_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4071  p_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4072  h_hcalTowerBcSumEtConeDR04_[type][2]->Fill(newhcalIso);
4073  p_hcalTowerBcSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), newhcalIso);
4074  h_isoTrkSolidConeDR04_[type][2]->Fill(trkIso);
4075  h_nTrkSolidConeDR04_[type][2]->Fill(nIsoTrk);
4076  h_chHadIso_[2]->Fill(chargedHadIso);
4077  h_nHadIso_[2]->Fill(neutralHadIso);
4078  h_phoIso_[2]->Fill(photonIso);
4079  h_nCluOutsideMustache_[2]->Fill(float(nClusterOutsideMustache));
4080  h_etOutsideMustache_[2]->Fill(etOutsideMustache);
4081  h_pfMva_[2]->Fill(pfMVA);
4082  h_phoE_[type][2]->Fill(photonE);
4083  h_phoEt_[type][2]->Fill(photonEt);
4084  h_nConv_[type][2]->Fill(float(matchingPho->conversions().size()));
4085  h_nConv_[1][2]->Fill(float(matchingPho->conversionsOneLeg().size()));
4086  h_phoERes_[0][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4087  h_phoSigmaEoE_[0][2]->Fill(sigmaEoE);
4088  h_phoEResRegr1_[0][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4089  h_phoEResRegr2_[0][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4090  p_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4091  p_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4092  if (!isRunCentrally_) {
4093  h2_eResVsR9_[2]->Fill(r9, photonE / (*mcPho).fourMomentum().e());
4094  h2_sceResVsR9_[2]->Fill(r9, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4095  h2_ecalRecHitSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), ecalIso);
4096  h2_hcalTowerSumEtConeDR04VsEt_[2]->Fill((*mcPho).fourMomentum().et(), hcalIso);
4097  h2_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4098  }
4099 
4100  p_eResVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4101  p_eResVsNVtx_[2][0]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4102  p_sigmaEoEVsEt_[2][0]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4103  p_sigmaEoEVsNVtx_[2][0]->Fill(float(vtxH->size()), sigmaEoE);
4104 
4105  if (r9 > 0.95) {
4106  h_phoERes_[1][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4107  h_phoSigmaEoE_[1][2]->Fill(sigmaEoE);
4108  h_phoEResRegr1_[1][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4109  h_phoEResRegr2_[1][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4110  if (!isRunCentrally_)
4111  h2_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4112  p_eResVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4113  p_eResVsNVtx_[2][1]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4114  p_sigmaEoEVsEt_[2][1]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4115  p_sigmaEoEVsNVtx_[2][1]->Fill(float(vtxH->size()), sigmaEoE);
4116  }
4117  if (r9 <= 0.95) {
4118  h_phoERes_[2][2]->Fill(photonE / (*mcPho).fourMomentum().e());
4119  h_phoSigmaEoE_[2][2]->Fill(sigmaEoE);
4120  h_phoEResRegr1_[2][2]->Fill(photonERegr1 / (*mcPho).fourMomentum().e());
4121  h_phoEResRegr2_[2][2]->Fill(photonERegr2 / (*mcPho).fourMomentum().e());
4122  p_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4123  p_eResVsNVtx_[2][2]->Fill(float(vtxH->size()), photonE / (*mcPho).fourMomentum().e());
4124  p_sigmaEoEVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), sigmaEoE);
4125  p_sigmaEoEVsNVtx_[2][2]->Fill(float(vtxH->size()), sigmaEoE);
4126 
4127  if (!isRunCentrally_) {
4128  h2_eResVsEt_[2][2]->Fill((*mcPho).fourMomentum().et(), photonE / (*mcPho).fourMomentum().e());
4129  h_EtR9Less093_[0][2]->Fill(photonEt);
4130  }
4131  }
4132  }
4133 
4135  if (fName_ == "pfPhotonValidator") {
4136  float SumPtIsoValCh = 0.;
4137  float SumPtIsoValNh = 0.;
4138  float SumPtIsoValPh = 0.;
4139 
4140  float SumPtIsoValCleanCh = 0.;
4141  float SumPtIsoValCleanNh = 0.;
4142  float SumPtIsoValCleanPh = 0.;
4143 
4144  for (unsigned int lCand = 0; lCand < pfCandidateHandle->size(); lCand++) {
4145  reco::PFCandidateRef pfCandRef(reco::PFCandidateRef(pfCandidateHandle, lCand));
4146  float dR = deltaR(matchingPho->eta(), matchingPho->phi(), pfCandRef->eta(), pfCandRef->phi());
4147  if (dR < 0.4) {
4149  reco::PFCandidate::ParticleType type = pfCandRef->particleId();
4150  if (type == reco::PFCandidate::e)
4151  continue;
4152  if (type == reco::PFCandidate::gamma && pfCandRef->mva_nothing_gamma() > 0.)
4153  continue;
4154 
4155  if (type == reco::PFCandidate::h) {
4156  SumPtIsoValCh += pfCandRef->pt();
4158  if (phoIsInBarrel)
4160  else
4162  }
4163  if (type == reco::PFCandidate::h0) {
4164  SumPtIsoValNh += pfCandRef->pt();
4166  if (phoIsInBarrel) {
4168  if (phoIsInBarrel1) {
4170  }
4171  if (phoIsInBarrel2) {
4173  }
4174  } else {
4176  }
4177  }
4178 
4179  if (type == reco::PFCandidate::gamma) {
4180  SumPtIsoValPh += pfCandRef->pt();
4182  if (phoIsInBarrel)
4184  else
4186  }
4187 
4189  bool skip = false;
4190  for (std::vector<reco::PFCandidateRef>::const_iterator i = phoToParticleBasedIsoMap[matchingPho].begin();
4191  i != phoToParticleBasedIsoMap[matchingPho].end();
4192  ++i) {
4193  if ((*i) == pfCandRef) {
4194  skip = true;
4195  }
4196  } // loop over the PFCandidates flagged as overlapping with the photon
4197 
4198  if (skip)
4199  continue;
4200  if (type == reco::PFCandidate::h) {
4201  SumPtIsoValCleanCh += pfCandRef->pt();
4203  if (phoIsInBarrel)
4205  else
4207  }
4208  if (type == reco::PFCandidate::h0) {
4209  SumPtIsoValCleanNh += pfCandRef->pt();
4211  if (phoIsInBarrel) {
4213  if (phoIsInBarrel1) {
4215  }
4216  if (phoIsInBarrel2) {
4218  }
4219  } else {
4221  }
4222  }
4223  if (type == reco::PFCandidate::gamma) {
4224  SumPtIsoValCleanPh += pfCandRef->pt();
4226  if (phoIsInBarrel)
4228  else
4230  }
4231 
4232  } // dr=0.4
4233  } // loop over all PF Candidates
4234 
4235  h_SumPtOverPhoPt_ChHad_Cleaned_[0]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4236  h_SumPtOverPhoPt_NeuHad_Cleaned_[0]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4237  h_SumPtOverPhoPt_Pho_Cleaned_[0]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4238  h_SumPtOverPhoPt_ChHad_unCleaned_[0]->Fill(SumPtIsoValCh / matchingPho->pt());
4239  h_SumPtOverPhoPt_NeuHad_unCleaned_[0]->Fill(SumPtIsoValNh / matchingPho->pt());
4240  h_SumPtOverPhoPt_Pho_unCleaned_[0]->Fill(SumPtIsoValPh / matchingPho->pt());
4241  if (phoIsInBarrel) {
4242  h_SumPtOverPhoPt_ChHad_Cleaned_[1]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4243  h_SumPtOverPhoPt_NeuHad_Cleaned_[1]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4244  h_SumPtOverPhoPt_Pho_Cleaned_[1]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4245  h_SumPtOverPhoPt_ChHad_unCleaned_[1]->Fill(SumPtIsoValCh / matchingPho->pt());
4246  h_SumPtOverPhoPt_NeuHad_unCleaned_[1]->Fill(SumPtIsoValNh / matchingPho->pt());
4247  h_SumPtOverPhoPt_Pho_unCleaned_[1]->Fill(SumPtIsoValPh / matchingPho->pt());
4248  } else {
4249  h_SumPtOverPhoPt_ChHad_Cleaned_[2]->Fill(SumPtIsoValCleanCh / matchingPho->pt());
4250  h_SumPtOverPhoPt_NeuHad_Cleaned_[2]->Fill(SumPtIsoValCleanNh / matchingPho->pt());
4251  h_SumPtOverPhoPt_Pho_Cleaned_[2]->Fill(SumPtIsoValCleanPh / matchingPho->pt());
4252  h_SumPtOverPhoPt_ChHad_unCleaned_[2]->Fill(SumPtIsoValCh / matchingPho->pt());
4253  h_SumPtOverPhoPt_NeuHad_unCleaned_[2]->Fill(SumPtIsoValNh / matchingPho->pt());
4254  h_SumPtOverPhoPt_Pho_unCleaned_[2]->Fill(SumPtIsoValPh / matchingPho->pt());
4255  }
4256 
4257  } // only for pfPhotonValidator
4258 
4259  if (!(visibleConversion && visibleConversionsWithTwoSimTracks))
4260  continue;
4261 
4262  if (!isRunCentrally_) {
4263  h_r9_[1][0]->Fill(r9);
4264  if (phoIsInBarrel)
4265  h_r9_[1][1]->Fill(r9);
4266  if (phoIsInEndcap)
4267  h_r9_[1][2]->Fill(r9);
4268 
4270  if (fabs(mcEta_) <= 1.) {
4273  } else
4275  }
4276 
4277  if (!fastSim_) {
4279  reco::ConversionRefVector conversions = matchingPho->conversions();
4280  bool atLeastOneRecoTwoTrackConversion = false;
4281  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4282  reco::ConversionRef aConv = conversions[iConv];
4283  double like = aConv->MVAout();
4284  if (like < likelihoodCut_)
4285  continue;
4286 
4287  if (!isRunCentrally_)
4288  h2_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4289  p_EoverEtrueVsEta_[1]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4290 
4291  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4292  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4293  if (tracks.size() < 2)
4294  continue;
4295  atLeastOneRecoTwoTrackConversion = true;
4296 
4297  h_mvaOut_[0]->Fill(like);
4298 
4299  if (tracks.size() == 2) {
4300  if (sqrt(aConv->tracksPin()[0].Perp2()) < convTrackMinPtCut_ ||
4301  sqrt(aConv->tracksPin()[1].Perp2()) < convTrackMinPtCut_)
4302  continue;
4303  }
4304 
4305  if (dCotCutOn_) {
4306  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4307  continue;
4308  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4309  continue;
4310  }
4311 
4312  nRecConv_++;
4313 
4314  std::map<const reco::Track*, TrackingParticleRef> myAss;
4315  std::map<const reco::Track*, TrackingParticleRef>::const_iterator itAss;
4316  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMin;
4317  std::map<reco::TrackRef, TrackingParticleRef>::const_iterator itAssMax;
4318  //
4319 
4320  int nAssT2 = 0;
4321  for (unsigned int i = 0; i < tracks.size(); i++) {
4322  // reco::TrackRef track = tracks[i].castTo<reco::TrackRef>();
4323 
4324  type = 0;
4325  if (!isRunCentrally_)
4326  nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4327  if (!isRunCentrally_)
4328  nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4329  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits() - 0.0001));
4330  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits() - 0.0001));
4332 
4333  const RefToBase<reco::Track>& tfrb = tracks[i];
4335  tc.push_back(tfrb);
4336  // reco::RecoToSimCollection q = trackAssociator->associateRecoToSim(tc,theConvTP_);
4337  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4338  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4339  int tpI = 0;
4340 
4341  if (q.find(theConvTP_[0]) != q.end()) {
4342  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4343  } else if (q.find(theConvTP_[1]) != q.end()) {
4344  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4345  tpI = 1;
4346  }
4347 
4348  if (trackV.empty())
4349  continue;
4350  edm::RefToBase<reco::Track> tr = trackV.front().first;
4351  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4352  nAssT2++;
4353  }
4354 
4355  type = 0;
4356 
4357  // float totP = sqrt(aConv->pairMomentum().Mag2());
4358  float refP = -99999.;
4359  float refPt = -99999.;
4360  if (aConv->conversionVertex().isValid()) {
4361  refP = sqrt(aConv->refittedPairMomentum().Mag2());
4362  refPt = sqrt(aConv->refittedPairMomentum().perp2());
4363  }
4364  float invM = aConv->pairInvariantMass();
4365 
4366  h_invMass_[type][0]->Fill(invM);
4367  if (phoIsInBarrel)
4368  h_invMass_[type][1]->Fill(invM);
4369  if (phoIsInEndcap)
4370  h_invMass_[type][2]->Fill(invM);
4371 
4373  if (tracks.size() == 2) {
4378  h_SimConvTwoTracks_[4]->Fill((*mcPho).fourMomentum().et());
4379 
4380  if (!aConv->caloCluster().empty())
4381  h_convEta_[1]->Fill(aConv->caloCluster()[0]->eta());
4382 
4383  float trkProvenance = 3;
4384  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4385  trkProvenance = 0;
4386  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4387  trkProvenance = 1;
4388  if ((tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv") ||
4389  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4390  trkProvenance = 2;
4391  if (trkProvenance == 3) {
4392  }
4393  h_trkProv_[0]->Fill(trkProvenance);
4394  h_trkAlgo_->Fill(tracks[0]->algo());
4395  h_trkAlgo_->Fill(tracks[1]->algo());
4396  h_convAlgo_->Fill(aConv->algo());
4397 
4399  if (nAssT2 == 2) {
4400  if (!isRunCentrally_) {
4401  h_r9_[2][0]->Fill(r9);
4402  if (phoIsInBarrel)
4403  h_r9_[2][1]->Fill(r9);
4404  if (phoIsInEndcap)
4405  h_r9_[2][2]->Fill(r9);
4406  }
4407 
4408  if (!aConv->caloCluster().empty())
4409  h_convEta_[2]->Fill(aConv->caloCluster()[0]->eta());
4410  nRecConvAss_++;
4411 
4416  h_SimConvTwoMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4417 
4418  if (aConv->conversionVertex().isValid()) {
4419  float chi2Prob =
4420  ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4421  if (chi2Prob > 0) {
4426  h_SimConvTwoMTracksAndVtxPGT0_[4]->Fill((*mcPho).fourMomentum().et());
4427  }
4428  if (chi2Prob > 0.0005) {
4433  h_SimConvTwoMTracksAndVtxPGT0005_[4]->Fill((*mcPho).fourMomentum().et());
4434  }
4435 
4436  if (chi2Prob > 0.0005) {
4437  if (!aConv->caloCluster().empty()) {
4438  h_convEta_[0]->Fill(aConv->caloCluster()[0]->eta());
4439  h_convPhi_[0]->Fill(aConv->caloCluster()[0]->phi());
4440  h_convERes_[0][0]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4441  }
4442  if (!isRunCentrally_) {
4443  h_r9VsNofTracks_[0][0]->Fill(r9, aConv->nTracks());
4444  h_EtR9Less093_[1][0]->Fill(photonEt);
4445  if (phoIsInBarrel)
4446  h_EtR9Less093_[1][1]->Fill(photonEt);
4447  if (phoIsInEndcap)
4448  h_EtR9Less093_[1][2]->Fill(photonEt);
4449  }
4450  if (phoIsInBarrel) {
4451  if (!aConv->caloCluster().empty())
4452  h_convERes_[0][1]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4453  if (!isRunCentrally_)
4454  h_r9VsNofTracks_[0][1]->Fill(r9, aConv->nTracks());
4455  h_mvaOut_[1]->Fill(like);
4456  }
4457  if (phoIsInEndcap) {
4458  if (!aConv->caloCluster().empty())
4459  h_convERes_[0][2]->Fill(aConv->caloCluster()[0]->energy() / (*mcPho).fourMomentum().e());
4460  if (!isRunCentrally_)
4461  h_r9VsNofTracks_[0][2]->Fill(r9, aConv->nTracks());
4462  h_mvaOut_[2]->Fill(like);
4463  }
4464  }
4465  }
4466 
4468  type = 1;
4469 
4470  h_trkProv_[1]->Fill(trkProvenance);
4471  h_invMass_[type][0]->Fill(invM);
4472 
4473  float eoverp = -99999.;
4474 
4475  if (aConv->conversionVertex().isValid()) {
4476  eoverp = photonE / sqrt(aConv->refittedPairMomentum().Mag2());
4477  //eoverp= aConv->EoverPrefittedTracks();
4478  h_convPtRes_[type][0]->Fill(refPt / (*mcPho).fourMomentum().et());
4479  h_EoverPTracks_[type][0]->Fill(eoverp);
4480  h_PoverETracks_[type][0]->Fill(1. / eoverp);
4481  if (!isRunCentrally_)
4482  h2_EoverEtrueVsEoverP_[0]->Fill(eoverp,
4483  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4484  if (!isRunCentrally_)
4485  h2_PoverPtrueVsEoverP_[0]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4486  if (!isRunCentrally_)
4487  h2_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4488  if (!isRunCentrally_)
4489  h2_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4490  p_EoverPVsEta_[0]->Fill(mcEta_, eoverp);
4491  p_EoverPVsR_[0]->Fill(mcConvR_, eoverp);
4492  p_eResVsR_->Fill(mcConvR_, photonE / (*mcPho).fourMomentum().e());
4493  if (!isRunCentrally_)
4494  h2_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4495  p_PoverPtrueVsEta_[0]->Fill(mcEta_, refP / (*mcPho).fourMomentum().e());
4496  }
4497 
4498  if (!isRunCentrally_)
4500  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4501  if (!isRunCentrally_)
4503  matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4504  p_EoverEtrueVsEta_[0]->Fill(mcEta_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4505  p_EoverEtrueVsR_[0]->Fill(mcConvR_, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4506 
4507  if (!isRunCentrally_)
4509 
4510  // here original tracks and their inner momentum is considered
4511  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
4512  h_DPhiTracksAtVtx_[type][0]->Fill(dPhiTracksAtVtx);
4513  if (!isRunCentrally_)
4514  h2_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4515  if (!isRunCentrally_)
4516  h2_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4517  p_DPhiTracksAtVtxVsEta_->Fill(mcEta_, dPhiTracksAtVtx);
4518  p_DPhiTracksAtVtxVsR_->Fill(mcConvR_, dPhiTracksAtVtx);
4519 
4520  h_DCotTracks_[type][0]->Fill(aConv->pairCotThetaSeparation());
4521  if (!isRunCentrally_)
4522  h2_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4523  if (!isRunCentrally_)
4524  h2_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4525  p_DCotTracksVsEta_->Fill(mcEta_, aConv->pairCotThetaSeparation());
4526  p_DCotTracksVsR_->Fill(mcConvR_, aConv->pairCotThetaSeparation());
4527 
4528  if (phoIsInBarrel) {
4529  h_invMass_[type][1]->Fill(invM);
4530  if (aConv->conversionVertex().isValid()) {
4531  h_convPtRes_[type][1]->Fill(refPt / (*mcPho).fourMomentum().et());
4532  h_EoverPTracks_[type][1]->Fill(eoverp);
4533  if (mcConvR_ < 15)
4534  h_EoverPTracks_[0][0]->Fill(eoverp);
4535  if (mcConvR_ > 15 && mcConvR_ < 58)
4536  h_EoverPTracks_[0][1]->Fill(eoverp);
4537  if (mcConvR_ > 58)
4538  h_EoverPTracks_[0][2]->Fill(eoverp);
4539  h_PoverETracks_[type][1]->Fill(1. / eoverp);
4540  if (!isRunCentrally_)
4542  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4543  if (!isRunCentrally_)
4544  h2_PoverPtrueVsEoverP_[1]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4545  }
4546  h_DPhiTracksAtVtx_[type][1]->Fill(dPhiTracksAtVtx);
4547  h_DCotTracks_[type][1]->Fill(aConv->pairCotThetaSeparation());
4548  }
4549 
4550  if (phoIsInEndcap) {
4551  h_invMass_[type][2]->Fill(invM);
4552  if (aConv->conversionVertex().isValid()) {
4553  h_convPtRes_[type][2]->Fill(refPt / (*mcPho).fourMomentum().et());
4554  h_EoverPTracks_[type][2]->Fill(eoverp);
4555  h_PoverETracks_[type][2]->Fill(1. / eoverp);
4556  if (!isRunCentrally_)
4558  eoverp, matchingPho->superCluster()->energy() / (*mcPho).fourMomentum().e());
4559  if (!isRunCentrally_)
4560  h2_PoverPtrueVsEoverP_[2]->Fill(eoverp, refP / (*mcPho).fourMomentum().e());
4561  }
4562  h_DPhiTracksAtVtx_[type][2]->Fill(dPhiTracksAtVtx);
4563  h_DCotTracks_[type][2]->Fill(aConv->pairCotThetaSeparation());
4564  }
4565 
4566  if (aConv->conversionVertex().isValid()) {
4567  h_convVtxdX_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4568  h_convVtxdY_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4569  h_convVtxdZ_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4570  h_convVtxdR_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4571 
4572  if (fabs(mcConvEta_) <= 1.2) {
4573  h_convVtxdX_barrel_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4574  h_convVtxdY_barrel_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4575  h_convVtxdZ_barrel_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4576  h_convVtxdR_barrel_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4577  } else {
4578  h_convVtxdX_endcap_->Fill(aConv->conversionVertex().position().x() - mcConvX_);
4579  h_convVtxdY_endcap_->Fill(aConv->conversionVertex().position().y() - mcConvY_);
4580  h_convVtxdZ_endcap_->Fill(aConv->conversionVertex().position().z() - mcConvZ_);
4581  h_convVtxdR_endcap_->Fill(sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4582  }
4583 
4584  h_convVtxdPhi_->Fill(aConv->conversionVertex().position().phi() - mcConvPhi_);
4585  h_convVtxdEta_->Fill(aConv->conversionVertex().position().eta() - mcConvEta_);
4586  if (!isRunCentrally_)
4587  h2_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4588  if (!isRunCentrally_)
4589  h2_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4590  p_convVtxdRVsR_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4591  p_convVtxdRVsEta_->Fill(mcEta_, sqrt(aConv->conversionVertex().position().perp2()) - mcConvR_);
4592  float signX = aConv->refittedPairMomentum().x() / fabs(aConv->refittedPairMomentum().x());
4593  float signY = aConv->refittedPairMomentum().y() / fabs(aConv->refittedPairMomentum().y());
4594  float signZ = aConv->refittedPairMomentum().z() / fabs(aConv->refittedPairMomentum().z());
4595  p_convVtxdXVsX_->Fill(mcConvX_, (aConv->conversionVertex().position().x() - mcConvX_) * signX);
4596  p_convVtxdYVsY_->Fill(mcConvY_, (aConv->conversionVertex().position().y() - mcConvY_) * signY);
4597  p_convVtxdZVsZ_->Fill(mcConvZ_, (aConv->conversionVertex().position().z() - mcConvZ_) * signZ);
4598 
4599  if (!isRunCentrally_)
4600  h2_convVtxRrecVsTrue_->Fill(mcConvR_, sqrt(aConv->conversionVertex().position().perp2()));
4601 
4602  //float zPV = aConv->zOfPrimaryVertexFromTracks();
4603  float thetaConv = aConv->refittedPairMomentum().Theta();
4604  float thetaSC = matchingPho->superCluster()->position().theta();
4605  float rSC =
4606  sqrt(matchingPho->superCluster()->position().x() * matchingPho->superCluster()->position().x() +
4607  matchingPho->superCluster()->position().y() * matchingPho->superCluster()->position().y());
4608  float zSC = matchingPho->superCluster()->position().z();
4609  float zPV = sqrt(rSC * rSC + zSC * zSC) * sin(thetaConv - thetaSC) / sin(thetaConv);
4610 
4611  h_zPVFromTracks_[0]->Fill(zPV);
4612  h_dzPVFromTracks_[0]->Fill(zPV - (*mcPho).primaryVertex().z());
4613 
4614  if (phoIsInBarrel) {
4615  h_zPVFromTracks_[1]->Fill(zPV);
4616  h_dzPVFromTracks_[1]->Fill(zPV - (*mcPho).primaryVertex().z());
4617  } else if (phoIsInEndcap) {
4618  h_zPVFromTracks_[2]->Fill(zPV);
4619  h_dzPVFromTracks_[2]->Fill(zPV - (*mcPho).primaryVertex().z());
4620  } else if (phoIsInEndcapP) {
4621  h_zPVFromTracks_[3]->Fill(zPV);
4622  h_dzPVFromTracks_[3]->Fill(zPV - (*mcPho).primaryVertex().z());
4623  } else if (phoIsInEndcapM) {
4624  h_zPVFromTracks_[4]->Fill(zPV);
4625  h_dzPVFromTracks_[4]->Fill(zPV - (*mcPho).primaryVertex().z());
4626  }
4627 
4628  p_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4629  p_dzPVVsEta_->Fill(mcConvEta_, zPV - (*mcPho).primaryVertex().z());
4630  if (!isRunCentrally_)
4631  h2_dzPVVsR_->Fill(mcConvR_, zPV - (*mcPho).primaryVertex().z());
4632  }
4633 
4634  float dPhiTracksAtEcal = -99;
4635  float dEtaTracksAtEcal = -99;
4636  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[0].isNonnull() &&
4637  aConv->bcMatchingWithTracks()[1].isNonnull()) {
4639  float recoPhi1 = aConv->ecalImpactPosition()[0].phi();
4640  float recoPhi2 = aConv->ecalImpactPosition()[1].phi();
4641  float recoEta1 = aConv->ecalImpactPosition()[0].eta();
4642  float recoEta2 = aConv->ecalImpactPosition()[1].eta();
4643  // unused float bcPhi1 = aConv->bcMatchingWithTracks()[0]->phi();
4644  // unused float bcPhi2 = aConv->bcMatchingWithTracks()[1]->phi();
4645  // unused float bcEta1 = aConv->bcMatchingWithTracks()[0]->eta();
4646  // unused float bcEta2 = aConv->bcMatchingWithTracks()[1]->eta();
4647  recoPhi1 = phiNormalization(recoPhi1);
4648  recoPhi2 = phiNormalization(recoPhi2);
4649  dPhiTracksAtEcal = recoPhi1 - recoPhi2;
4650  dPhiTracksAtEcal = phiNormalization(dPhiTracksAtEcal);
4651  dEtaTracksAtEcal = recoEta1 - recoEta2;
4652 
4653  h_DPhiTracksAtEcal_[type][0]->Fill(fabs(dPhiTracksAtEcal));
4654  if (!isRunCentrally_)
4655  h2_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4656  if (!isRunCentrally_)
4657  h2_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4658  p_DPhiTracksAtEcalVsR_->Fill(mcConvR_, fabs(dPhiTracksAtEcal));
4659  p_DPhiTracksAtEcalVsEta_->Fill(mcEta_, fabs(dPhiTracksAtEcal));
4660 
4661  h_DEtaTracksAtEcal_[type][0]->Fill(dEtaTracksAtEcal);
4662 
4663  if (phoIsInBarrel) {
4664  h_DPhiTracksAtEcal_[type][1]->Fill(fabs(dPhiTracksAtEcal));
4665  h_DEtaTracksAtEcal_[type][1]->Fill(dEtaTracksAtEcal);
4666  }
4667  if (phoIsInEndcap) {
4668  h_DPhiTracksAtEcal_[type][2]->Fill(fabs(dPhiTracksAtEcal));
4669  h_DEtaTracksAtEcal_[type][2]->Fill(dEtaTracksAtEcal);
4670  }
4671  }
4673  for (unsigned int i = 0; i < tracks.size(); i++) {
4674  const RefToBase<reco::Track>& tfrb(tracks[i]);
4675  itAss = myAss.find(tfrb.get());
4676  if (itAss == myAss.end())
4677  continue;
4678 
4679  float trkProvenance = 3;
4680  if (tracks[0]->algoName() == "outInEcalSeededConv" && tracks[1]->algoName() == "outInEcalSeededConv")
4681  trkProvenance = 0;
4682  if (tracks[0]->algoName() == "inOutEcalSeededConv" && tracks[1]->algoName() == "inOutEcalSeededConv")
4683  trkProvenance = 1;
4684  if ((tracks[0]->algoName() == "outInEcalSeededConv" &&
4685  tracks[1]->algoName() == "inOutEcalSeededConv") ||
4686  (tracks[1]->algoName() == "outInEcalSeededConv" && tracks[0]->algoName() == "inOutEcalSeededConv"))
4687  trkProvenance = 2;
4688 
4689  if (!isRunCentrally_)
4691  if (!isRunCentrally_)
4693  p_nHitsVsEta_[type]->Fill(mcEta_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4694  p_nHitsVsR_[type]->Fill(mcConvR_, float(tracks[i]->numberOfValidHits()) - 0.0001);
4697  if (!isRunCentrally_)
4699  if (!isRunCentrally_)
4703 
4704  float simPt = sqrt(((*itAss).second)->momentum().perp2());
4705  // float recPt = sqrt( aConv->tracks()[i]->innerMomentum().Perp2() ) ;
4706  float refPt = -9999.;
4707  float px = 0, py = 0;
4708 
4709  if (aConv->conversionVertex().isValid()) {
4710  reco::Track refTrack = aConv->conversionVertex().refittedTracks()[i];
4711  px = refTrack.momentum().x();
4712  py = refTrack.momentum().y();
4713  refPt = sqrt(px * px + py * py);
4714 
4715  float ptres = refPt - simPt;
4716  // float pterror = aConv->tracks()[i]->ptError();
4717  float pterror = aConv->conversionVertex().refittedTracks()[i].ptError();
4718  if (!isRunCentrally_) {
4719  h2_PtRecVsPtSim_[0]->Fill(simPt, refPt);
4720  if (trkProvenance == 3)
4721  h2_PtRecVsPtSimMixProv_->Fill(simPt, refPt);
4722  }
4723 
4724  h_TkPtPull_[0]->Fill(ptres / pterror);
4725  if (!isRunCentrally_)
4726  h2_TkPtPull_[0]->Fill(mcEta_, ptres / pterror);
4727 
4728  h_TkD0_[0]->Fill(tracks[i]->d0() * tracks[i]->charge());
4729 
4730  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator" )
4731  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4732  hBCEnergyOverTrackPout_[0]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4733  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4734 
4735  if (phoIsInBarrel) {
4736  h_TkD0_[1]->Fill(tracks[i]->d0() * tracks[i]->charge());
4737  h_TkPtPull_[1]->Fill(ptres / pterror);
4738  if (!isRunCentrally_)
4739  h2_PtRecVsPtSim_[1]->Fill(simPt, refPt);
4740  //if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4741  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4742  hBCEnergyOverTrackPout_[1]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4743  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4744  }
4745  if (phoIsInEndcap) {
4746  h_TkD0_[2]->Fill(tracks[i]->d0() * tracks[i]->charge());
4747  h_TkPtPull_[2]->Fill(ptres / pterror);
4748  if (!isRunCentrally_)
4749  h2_PtRecVsPtSim_[2]->Fill(simPt, refPt);
4750  // if ( fName_ != "pfPhotonValidator" && fName_ != "oldpfPhotonValidator")
4751  if (!aConv->bcMatchingWithTracks().empty() && aConv->bcMatchingWithTracks()[i].isNonnull())
4752  hBCEnergyOverTrackPout_[2]->Fill(aConv->bcMatchingWithTracks()[i]->energy() /
4753  sqrt(aConv->tracks()[i]->outerMomentum().Mag2()));
4754  }
4755  }
4756 
4757  } // end loop over track
4758  } // end analysis of two associated tracks
4759  } // end analysis of two tracks
4760 
4761  } // loop over conversions
4762 
4764 
4765  reco::ConversionRefVector conversionsOneLeg = matchingPho->conversionsOneLeg();
4766  if (!atLeastOneRecoTwoTrackConversion) {
4767  for (unsigned int iConv = 0; iConv < conversionsOneLeg.size(); iConv++) {
4768  reco::ConversionRef aConv = conversionsOneLeg[iConv];
4769  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4770 
4771  h_trkAlgo_->Fill(tracks[0]->algo());
4772  h_convAlgo_->Fill(aConv->algo());
4773 
4774  int nAssT = 0;
4775  std::map<const reco::Track*, TrackingParticleRef> myAss;
4776  for (unsigned int i = 0; i < tracks.size(); i++) {
4777  p_nHitsVsEtaSL_[0]->Fill(mcEta_, float(tracks[0]->numberOfValidHits() - 0.0001));
4778  p_nHitsVsRSL_[0]->Fill(mcConvR_, float(tracks[0]->numberOfValidHits() - 0.0001));
4780 
4781  float eoverp = photonE / tracks[0]->p();
4782  h_EoverP_SL_[0]->Fill(eoverp);
4783  if (phoIsInBarrel) {
4784  h_EoverP_SL_[1]->Fill(eoverp);
4785  } else {
4786  h_EoverP_SL_[2]->Fill(eoverp);
4787  }
4788  h_convSLVtxRvsZ_[0]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4789  if (fabs(mcEta_) <= 1.) {
4790  h_convSLVtxRvsZ_[1]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4791  } else {
4792  h_convSLVtxRvsZ_[2]->Fill(tracks[0]->innerPosition().z(), sqrt(tracks[0]->innerPosition().Perp2()));
4793  }
4794 
4795  const RefToBase<reco::Track>& tfrb = tracks[i];
4797  tc.push_back(tfrb);
4798  reco::SimToRecoCollection q = trackAssociator->associateSimToReco(tc, theConvTP_);
4799  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV;
4800  int tpI = 0;
4801 
4802  if (q.find(theConvTP_[0]) != q.end()) {
4803  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[0]];
4804  } else if (q.find(theConvTP_[1]) != q.end()) {
4805  trackV = (std::vector<std::pair<RefToBase<reco::Track>, double> >)q[theConvTP_[1]];
4806  tpI = 1;
4807  }
4808 
4809  if (trackV.empty())
4810  continue;
4811  edm::RefToBase<reco::Track> tr = trackV.front().first;
4812  myAss.insert(std::make_pair(tr.get(), theConvTP_[tpI]));
4813  nAssT++;
4814  }
4815 
4816  if (nAssT > 0) {
4821  h_SimConvOneMTracks_[4]->Fill((*mcPho).fourMomentum().et());
4822  }
4823  } // End loop over single leg conversions
4824  }
4825 
4826  } // if !fastSim
4827  } // End loop over generated particles
4828  } // End loop over simulated Photons
4829 
4830  if (!isRunCentrally_) {
4831  h_nSimPho_[0]->Fill(float(nSimPho_[0]));
4832  h_nSimPho_[1]->Fill(float(nSimPho_[1]));
4833  h_nSimConv_[0]->Fill(float(nSimConv_[0]));
4834  h_nSimConv_[1]->Fill(float(nSimConv_[1]));
4835  }
4836 
4837  if (!fastSim_) {
4839  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
4840  iPho++) {
4841  reco::Photon aPho = reco::Photon(*iPho);
4842  // float et= aPho.superCluster()->energy()/cosh( aPho.superCluster()->eta()) ;
4844  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
4845  reco::ConversionRef aConv = conversions[iConv];
4846  double like = aConv->MVAout();
4847  if (like < likelihoodCut_)
4848  continue;
4849  //std::vector<reco::TrackRef> tracks = aConv->tracks();
4850  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
4851  if (tracks.size() < 2)
4852  continue;
4853 
4854  RefToBase<reco::Track> tk1 = aConv->tracks().front();
4855  RefToBase<reco::Track> tk2 = aConv->tracks().back();
4857  tc1.push_back(tk1);
4858  tc2.push_back(tk2);
4859 
4860  bool phoIsInBarrel = false;
4861  bool phoIsInEndcap = false;
4862  if (fabs(aPho.superCluster()->position().eta()) < 1.479) {
4863  phoIsInBarrel = true;
4864  } else {
4865  phoIsInEndcap = true;
4866  }
4867 
4868  if (dCotCutOn_) {
4869  if ((fabs(mcEta_) > 1.1 && fabs(mcEta_) < 1.4) && fabs(aConv->pairCotThetaSeparation()) > dCotHardCutValue_)
4870  continue;
4871  if (fabs(aConv->pairCotThetaSeparation()) > dCotCutValue_)
4872  continue;
4873  }
4874 
4875  h_RecoConvTwoTracks_[0]->Fill(aPho.eta());
4876  h_RecoConvTwoTracks_[1]->Fill(aPho.phi());
4877  if (aConv->conversionVertex().isValid())
4878  h_RecoConvTwoTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4879  h_RecoConvTwoTracks_[3]->Fill(aConv->conversionVertex().position().z());
4880  h_RecoConvTwoTracks_[4]->Fill(aPho.et());
4881 
4882  int nAssT2 = 0;
4883  for (std::vector<PhotonMCTruth>::const_iterator mcPho = mcPhotons.begin(); mcPho != mcPhotons.end(); mcPho++) {
4884  // mcConvPt_= (*mcPho).fourMomentum().et();
4885  float mcPhi = (*mcPho).fourMomentum().phi();
4886  //simPV_Z = (*mcPho).primaryVertex().z();
4887  mcPhi_ = phiNormalization(mcPhi);
4888  mcEta_ = (*mcPho).fourMomentum().pseudoRapidity();
4889  mcEta_ = etaTransformation(mcEta_, (*mcPho).primaryVertex().z());
4890  //mcConvR_= (*mcPho).vertex().perp();
4891  //mcConvX_= (*mcPho).vertex().x();
4892  //mcConvY_= (*mcPho).vertex().y();
4893  //mcConvZ_= (*mcPho).vertex().z();
4894  //mcConvEta_= (*mcPho).vertex().eta();
4895  //mcConvPhi_= (*mcPho).vertex().phi();
4896  if (fabs(mcEta_) > END_HI)
4897  continue;
4898  // if (mcConvPt_<minPhoPtForPurity) continue;
4899  //if (fabs(mcEta_)>maxPhoEtaForPurity) continue;
4900  //if (fabs(mcConvZ_)>maxPhoZForPurity) continue;
4901  //if (mcConvR_>maxPhoRForEffic) continue;
4902 
4903  if ((*mcPho).isAConversion() != 1)
4904  continue;
4905  if (!((fabs(mcEta_) <= BARL && mcConvR_ < 85) ||
4906  (fabs(mcEta_) > BARL && fabs(mcEta_) <= END_HI && fabs((*mcPho).vertex().z()) < 210)))
4907  continue;
4908 
4909  theConvTP_.clear();
4910  for (size_t i = 0; i < trackingParticles.size(); ++i) {
4911  TrackingParticleRef tp(ElectronTPHandle, i);
4912  if (fabs(tp->vx() - (*mcPho).vertex().x()) < 0.0001 && fabs(tp->vy() - (*mcPho).vertex().y()) < 0.0001 &&
4913  fabs(tp->vz() - (*mcPho).vertex().z()) < 0.0001) {
4915  }
4916  }
4917 
4918  if (theConvTP_.size() < 2)
4919  continue;
4920 
4921  reco::RecoToSimCollection const& p1 = trackAssociator->associateRecoToSim(tc1, theConvTP_);
4922  reco::RecoToSimCollection const& p2 = trackAssociator->associateRecoToSim(tc2, theConvTP_);
4923  std::vector<std::pair<RefToBase<reco::Track>, double> > trackV1, trackV2;
4924 
4925  auto itP1 = p1.find(tk1);
4926  auto itP2 = p2.find(tk2);
4927  bool good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4928  if (not good) {
4929  itP1 = p1.find(tk2);
4930  itP2 = p2.find(tk1);
4931  good = (itP1 != p1.end()) and (not itP1->val.empty()) and (itP2 != p2.end()) and (not itP2->val.empty());
4932  }
4933  if (good) {
4934  std::vector<std::pair<TrackingParticleRef, double> > const& tp1 = itP1->val;
4935  std::vector<std::pair<TrackingParticleRef, double> > const& tp2 = itP2->val;
4936 
4937  TrackingParticleRef tpr1 = tp1.front().first;
4938  TrackingParticleRef tpr2 = tp2.front().first;
4939 
4940  if (abs(tpr1->pdgId()) == 11 && abs(tpr2->pdgId()) == 11) {
4941  if ((tpr1->parentVertex()->sourceTracks_end() - tpr1->parentVertex()->sourceTracks_begin() == 1) &&
4942  (tpr2->parentVertex()->sourceTracks_end() - tpr2->parentVertex()->sourceTracks_begin() == 1)) {
4943  if (tpr1->parentVertex().key() == tpr2->parentVertex().key() &&
4944  ((*tpr1->parentVertex()->sourceTracks_begin())->pdgId() == 22)) {
4945  nAssT2 = 2;
4946  break;
4947  }
4948  }
4949  }
4950  }
4951 
4952  } // end loop over simulated photons
4953 
4954  if (nAssT2 == 2) {
4955  h_RecoConvTwoMTracks_[0]->Fill(aPho.eta());
4956  h_RecoConvTwoMTracks_[1]->Fill(aPho.phi());
4957  if (aConv->conversionVertex().isValid())
4958  h_RecoConvTwoMTracks_[2]->Fill(aConv->conversionVertex().position().perp2());
4959  h_RecoConvTwoMTracks_[3]->Fill(aConv->conversionVertex().position().z());
4960  h_RecoConvTwoMTracks_[4]->Fill(aPho.et());
4961  }
4962 
4964  if (aConv->conversionVertex().isValid()) {
4965  float chi2Prob = ChiSquaredProbability(aConv->conversionVertex().chi2(), aConv->conversionVertex().ndof());
4966  double convR = sqrt(aConv->conversionVertex().position().perp2());
4967  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
4968  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
4969 
4970  if (scalar < 0)
4971  convR = -sqrt(aConv->conversionVertex().position().perp2());
4972  h_convVtxRvsZ_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
4973  sqrt(aConv->conversionVertex().position().perp2()));
4974 
4975  if (!aConv->caloCluster().empty()) {
4976  if (!isRunCentrally_)
4977  h2_etaVsRreco_[0]->Fill(aConv->caloCluster()[0]->eta(),
4978  sqrt(aConv->conversionVertex().position().perp2()));
4979  if (fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
4980  h_convVtxYvsX_->Fill(aConv->conversionVertex().position().y(), aConv->conversionVertex().position().x());
4981  h_convVtxRvsZ_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4982 
4983  if (!isRunCentrally_) {
4984  h_convVtxYvsX_zoom_[0]->Fill(aConv->conversionVertex().position().y(),
4985  aConv->conversionVertex().position().x());
4986  h_convVtxYvsX_zoom_[1]->Fill(aConv->conversionVertex().position().y(),
4987  aConv->conversionVertex().position().x());
4988  h_convVtxRvsZ_zoom_[0]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4989  h_convVtxRvsZ_zoom_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4990  }
4991  }
4992  if (fabs(aConv->caloCluster()[0]->eta()) > 1.)
4993  h_convVtxRvsZ_[2]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
4994  }
4995 
4996  h_vtxChi2Prob_[0]->Fill(chi2Prob);
4997  h_vtxChi2_[0]->Fill(aConv->conversionVertex().normalizedChi2());
4998  if (phoIsInBarrel) {
4999  h_vtxChi2Prob_[1]->Fill(chi2Prob);
5000  h_vtxChi2_[1]->Fill(aConv->conversionVertex().normalizedChi2());
5001  }
5002  if (phoIsInEndcap) {
5003  h_vtxChi2Prob_[2]->Fill(chi2Prob);
5004  h_vtxChi2_[2]->Fill(aConv->conversionVertex().normalizedChi2());
5005  }
5006 
5007  } // end conversion vertex valid
5008  } // end loop over reco conversions
5009  } // end loop on all reco photons
5010  } // if !fastSim
5011 
5013  float nPho = 0;
5014  for (reco::GenJetCollection::const_iterator genJetIter = genJetCollection.begin();
5015  genJetIter != genJetCollection.end();
5016  ++genJetIter) {
5017  if (genJetIter->pt() < minPhoEtCut_)
5018  continue;
5019  if (fabs(genJetIter->eta()) > 2.5)
5020  continue;
5021 
5022  float mcJetPhi = genJetIter->phi();
5023  mcJetPhi_ = phiNormalization(mcJetPhi);
5024  mcJetEta_ = genJetIter->eta();
5025  float mcJetPt = genJetIter->pt();
5026 
5027  h_SimJet_[0]->Fill(mcJetEta_);
5028  h_SimJet_[1]->Fill(mcJetPhi_);
5029  h_SimJet_[2]->Fill(mcJetPt);
5030 
5031  std::vector<reco::Photon> thePhotons;
5032  bool matched = false;
5033 
5034  reco::Photon matchingPho;
5035  for (reco::PhotonCollection::const_iterator iPho = photonCollection.begin(); iPho != photonCollection.end();
5036  iPho++) {
5037  reco::Photon aPho = reco::Photon(*iPho);
5038  float phiPho = aPho.phi();
5039  float etaPho = aPho.eta();
5040  float deltaPhi = phiPho - mcJetPhi_;
5041  float deltaEta = etaPho - mcJetEta_;
5042  if (deltaPhi > pi)
5043  deltaPhi -= twopi;
5044  if (deltaPhi < -pi)
5045  deltaPhi += twopi;
5046  deltaPhi = pow(deltaPhi, 2);
5047  deltaEta = pow(deltaEta, 2);
5048  float delta = sqrt(deltaPhi + deltaEta);
5049  if (delta < 0.3) {
5050  matchingPho = *iPho;
5051  matched = true;
5052  }
5053  } // end loop over reco photons
5054 
5055  if (!matched)
5056  continue;
5057  nPho++;
5058 
5061  h_MatchedSimJet_[2]->Fill(mcJetPt);
5062 
5063  bool phoIsInBarrel = false;
5064  bool phoIsInEndcap = false;
5065  if (fabs(matchingPho.superCluster()->position().eta()) < 1.479) {
5066  phoIsInBarrel = true;
5067  } else {
5068  phoIsInEndcap = true;
5069  }
5070  edm::Handle<EcalRecHitCollection> ecalRecHitHandle;
5071  if (phoIsInBarrel) {
5072  // Get handle to rec hits ecal barrel
5073  e.getByToken(barrelEcalHits_, ecalRecHitHandle);
5074  if (!ecalRecHitHandle.isValid()) {
5075  Labels l;
5077  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5078  return;
5079  }
5080 
5081  } else if (phoIsInEndcap) {
5082  // Get handle to rec hits ecal encap
5083  e.getByToken(endcapEcalHits_, ecalRecHitHandle);
5084  if (!ecalRecHitHandle.isValid()) {
5085  Labels l;
5087  edm::LogError("PhotonProducer") << "Error! Can't get the product " << l.module;
5088  return;
5089  }
5090  }
5091 
5092  const EcalRecHitCollection ecalRecHitCollection = *(ecalRecHitHandle.product());
5093  float photonE = matchingPho.energy();
5094  float photonEt = matchingPho.et();
5095  float r9 = matchingPho.r9();
5096  float r1 = matchingPho.r1x5();
5097  float r2 = matchingPho.r2x5();
5098  float sigmaIetaIeta = matchingPho.sigmaIetaIeta();
5099  float hOverE = matchingPho.hadronicOverEm();
5100  float ecalIso = matchingPho.ecalRecHitSumEtConeDR04();
5101  float hcalIso = matchingPho.hcalTowerSumEtConeDR04();
5102  float trkIso = matchingPho.trkSumPtSolidConeDR04();
5103  float nIsoTrk = matchingPho.nTrkSolidConeDR04();
5104  std::vector<std::pair<DetId, float> >::const_iterator rhIt;
5105 
5106  bool atLeastOneDeadChannel = false;
5107  for (reco::CaloCluster_iterator bcIt = matchingPho.superCluster()->clustersBegin();
5108  bcIt != matchingPho.superCluster()->clustersEnd();
5109  ++bcIt) {
5110  for (rhIt = (*bcIt)->hitsAndFractions().begin(); rhIt != (*bcIt)->hitsAndFractions().end(); ++rhIt) {
5111  for (EcalRecHitCollection::const_iterator it = ecalRecHitCollection.begin(); it != ecalRecHitCollection.end();
5112  ++it) {
5113  if (rhIt->first == (*it).id()) {
5114  if ((*it).recoFlag() == 9) {
5115  atLeastOneDeadChannel = true;
5116  break;
5117  }
5118  }
5119  }
5120  }
5121  }
5122 
5123  if (atLeastOneDeadChannel) {
5126  h_MatchedSimJetBadCh_[2]->Fill(mcJetPt);
5127  }
5128 
5129  h_scBkgEta_->Fill(matchingPho.superCluster()->eta());
5130  h_scBkgPhi_->Fill(matchingPho.superCluster()->phi());
5131  h_scBkgE_[0]->Fill(matchingPho.superCluster()->energy());
5132  h_scBkgEt_[0]->Fill(matchingPho.superCluster()->energy() / cosh(matchingPho.superCluster()->eta()));
5133  //
5134  h_phoBkgEta_->Fill(matchingPho.eta());
5135  h_phoBkgPhi_->Fill(matchingPho.phi());
5136  h_phoBkgE_[0]->Fill(photonE);
5137  h_phoBkgEt_[0]->Fill(photonEt);
5138  h_phoBkgDEta_->Fill(matchingPho.eta() - mcJetEta_);
5139  h_phoBkgDPhi_->Fill(matchingPho.phi() - mcJetPhi_);
5140 
5141  h_r9Bkg_[0]->Fill(r9);
5142  h_r1Bkg_[0]->Fill(r1);
5143  h_r2Bkg_[0]->Fill(r2);
5145  h_hOverEBkg_[0]->Fill(hOverE);
5148  h_isoTrkSolidConeDR04Bkg_[0]->Fill(trkIso);
5149  h_nTrkSolidConeDR04Bkg_[0]->Fill(nIsoTrk);
5150 
5151  if (!isRunCentrally_) {
5153  h2_r9VsEtBkg_->Fill(mcJetPt, r9);
5155  h2_r1VsEtBkg_->Fill(mcJetPt, r1);
5157  h2_r2VsEtBkg_->Fill(mcJetPt, r2);
5161  h2_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5162 
5164  p_r1VsEtBkg_->Fill(mcJetPt, r1);
5166  p_r2VsEtBkg_->Fill(mcJetPt, r2);
5170  p_hOverEVsEtBkg_->Fill(mcJetPt, hOverE);
5171  }
5172 
5173  if (!isRunCentrally_) {
5183  p_isoTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, trkIso);
5185  p_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5187  h2_isoTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, trkIso);
5189  h2_nTrkSolidConeDR04VsEtBkg_[0]->Fill(mcJetPt, nIsoTrk);
5190  }
5191 
5192  if (phoIsInBarrel) {
5193  h_r9Bkg_[1]->Fill(r9);
5194  h_r1Bkg_[1]->Fill(r1);
5195  h_r2Bkg_[1]->Fill(r2);
5196 
5198  h_hOverEBkg_[1]->Fill(hOverE);
5201  h_isoTrkSolidConeDR04Bkg_[1]->Fill(trkIso);
5202  h_nTrkSolidConeDR04Bkg_[1]->Fill(nIsoTrk);
5203 
5204  if (!isRunCentrally_) {
5206  h2_isoTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, trkIso);
5207  h2_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5213  p_isoTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, trkIso);
5214  p_nTrkSolidConeDR04VsEtBkg_[1]->Fill(mcJetPt, nIsoTrk);
5215  }
5216  } else if (phoIsInEndcap) {
5217  h_r9Bkg_[2]->Fill(r9);
5218  h_r1Bkg_[2]->Fill(r1);
5219  h_r2Bkg_[2]->Fill(r2);
5220 
5222  h_hOverEBkg_[2]->Fill(hOverE);
5225  h_isoTrkSolidConeDR04Bkg_[2]->Fill(trkIso);
5226  h_nTrkSolidConeDR04Bkg_[2]->Fill(nIsoTrk);
5227 
5228  if (!isRunCentrally_) {
5230  h2_isoTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, trkIso);
5231  h2_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5237  p_isoTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, trkIso);
5238  p_nTrkSolidConeDR04VsEtBkg_[2]->Fill(mcJetPt, nIsoTrk);
5239  }
5240  }
5241 
5242  if (!fastSim_) {
5245  for (unsigned int iConv = 0; iConv < conversions.size(); iConv++) {
5246  reco::ConversionRef aConv = conversions[iConv];
5247  //std::vector<reco::TrackRef> tracks = aConv->tracks();
5248  const std::vector<edm::RefToBase<reco::Track> > tracks = aConv->tracks();
5249  double like = aConv->MVAout();
5250  if (like < likelihoodCut_)
5251  continue;
5252  if (tracks.size() < 2)
5253  continue;
5254  if (!aConv->caloCluster().empty()) {
5255  h_convEtaBkg_->Fill(aConv->caloCluster()[0]->eta());
5256  h_convPhiBkg_->Fill(aConv->caloCluster()[0]->phi());
5257  }
5258  h_mvaOutBkg_[0]->Fill(like);
5259  float eoverp = aConv->EoverP();
5260  h_EoverPTracksBkg_[0]->Fill(eoverp);
5261  h_PoverETracksBkg_[0]->Fill(1. / eoverp);
5262  h_DCotTracksBkg_[0]->Fill(aConv->pairCotThetaSeparation());
5263  float dPhiTracksAtVtx = aConv->dPhiTracksAtVtx();
5264  h_DPhiTracksAtVtxBkg_[0]->Fill(dPhiTracksAtVtx);
5265 
5266  if (phoIsInBarrel) {
5267  h_mvaOutBkg_[1]->Fill(like);
5268  h_EoverPTracksBkg_[1]->Fill(eoverp);
5269  h_PoverETracksBkg_[1]->Fill(1. / eoverp);
5270  h_DCotTracksBkg_[1]->Fill(aConv->pairCotThetaSeparation());
5271  h_DPhiTracksAtVtxBkg_[1]->Fill(dPhiTracksAtVtx);
5272  } else if (phoIsInEndcap) {
5273  h_mvaOutBkg_[2]->Fill(like);
5274  h_EoverPTracksBkg_[2]->Fill(eoverp);
5275  h_PoverETracksBkg_[2]->Fill(1. / eoverp);
5276  h_DCotTracksBkg_[2]->Fill(aConv->pairCotThetaSeparation());
5277  h_DPhiTracksAtVtxBkg_[2]->Fill(dPhiTracksAtVtx);
5278  }
5279 
5280  if (aConv->conversionVertex().isValid()) {
5281  double convR = sqrt(aConv->conversionVertex().position().perp2());
5282  double scalar = aConv->conversionVertex().position().x() * aConv->pairMomentum().x() +
5283  aConv->conversionVertex().position().y() * aConv->pairMomentum().y();
5284  if (scalar < 0)
5285  convR = -sqrt(aConv->conversionVertex().position().perp2());
5286 
5287  if (!isRunCentrally_) {
5288  h_convVtxRvsZBkg_[0]->Fill(fabs(aConv->conversionVertex().position().z()),
5289  sqrt(aConv->conversionVertex().position().perp2()));
5290  if (!aConv->caloCluster().empty() && fabs(aConv->caloCluster()[0]->eta()) <= 1.) {
5291  h_convVtxYvsXBkg_->Fill(aConv->conversionVertex().position().y(),
5292  aConv->conversionVertex().position().x());
5293  h_convVtxRvsZBkg_[1]->Fill(fabs(aConv->conversionVertex().position().z()), convR);
5294  }
5295  }
5296 
5297  } // end vertex valid
5298 
5299  } // end loop over conversions
5300  } // if !fastSim
5301  } // end loop over sim jets
5302 
5304  for (reco::GenParticleCollection::const_iterator mcIter = genParticles->begin(); mcIter != genParticles->end();
5305  mcIter++) {
5306  if (!(mcIter->pdgId() == 22))
5307  continue;
5308  if (mcIter->mother() != nullptr and !(mcIter->mother()->pdgId() == 25))
5309  continue;
5310  if (fabs(mcIter->eta()) > 2.5)
5311  continue;
5312 
5313  float mcPhi = mcIter->phi();
5314  float mcEta = mcIter->eta();
5315  //mcEta = etaTransformation(mcEta, (*mcPho).primaryVertex().z() );
5316  float mcEnergy = mcIter->energy();
5317 
5318  double dR = 9999999.;
5319  float minDr = 10000.;
5320  int iMatch = -1;
5321  bool matched = false;
5322 
5323  for (unsigned int ipho = 0; ipho < photonHandle->size(); ipho++) {
5324  reco::PhotonRef pho(reco::PhotonRef(photonHandle, ipho));
5325 
5326  double dphi = pho->phi() - mcPhi;
5327  if (std::fabs(dphi) > CLHEP::pi) {
5328  dphi = dphi < 0 ? (CLHEP::twopi) + dphi : dphi - CLHEP::twopi;
5329  }
5330  double deta = pho->superCluster()->position().eta() - mcEta;
5331 
5332  dR = sqrt(pow((deta), 2) + pow(dphi, 2));
5333  if (dR < 0.1 && dR < minDr) {
5334  minDr = dR;
5335  iMatch = ipho;
5336  }
5337  }
5338 
5339  if (iMatch > -1)
5340  matched = true;
5341  if (!matched)
5342  continue;
5343 
5344  reco::PhotonRef matchingPho(reco::PhotonRef(photonHandle, iMatch));
5345 
5346  bool phoIsInBarrel = false;
5347  bool phoIsInEndcap = false;
5348 
5349  float phoEta = matchingPho->superCluster()->position().eta();
5350  if (fabs(phoEta) < 1.479) {
5351  phoIsInBarrel = true;
5352  } else {
5353  phoIsInEndcap = true;
5354  }
5355 
5356  float photonE = matchingPho->energy();
5357  float sigmaEoE = matchingPho->getCorrectedEnergyError(matchingPho->getCandidateP4type()) / matchingPho->energy();
5358  float photonEt = matchingPho->energy() / cosh(matchingPho->eta());
5359  // float photonERegr1 = matchingPho->getCorrectedEnergy(reco::Photon::regression1);
5360  //float photonERegr2 = matchingPho->getCorrectedEnergy(reco::Photon::regression2);
5361  float r9 = matchingPho->r9();
5362  float full5x5_r9 = matchingPho->full5x5_r9();
5363  float r1 = matchingPho->r1x5();
5364  float r2 = matchingPho->r2x5();
5365  float sigmaIetaIeta = matchingPho->sigmaIetaIeta();
5366  float full5x5_sieie = matchingPho->full5x5_sigmaIetaIeta();
5367  float hOverE = matchingPho->hadronicOverEm();
5368  float newhOverE = matchingPho->hadTowOverEm();
5369  float ecalIso = matchingPho->ecalRecHitSumEtConeDR04();
5370  float hcalIso = matchingPho->hcalTowerSumEtConeDR04();
5371  float newhcalIso = matchingPho->hcalTowerSumEtBcConeDR04();
5372  float trkIso = matchingPho->trkSumPtSolidConeDR04();
5373  float nIsoTrk = matchingPho->nTrkSolidConeDR04();
5374  // PF related quantities
5375  float chargedHadIso = matchingPho->chargedHadronIso();
5376  float neutralHadIso = matchingPho->neutralHadronIso();
5377  float photonIso = matchingPho->photonIso();
5378  // float etOutsideMustache = matchingPho->etOutsideMustache();
5379  // int nClusterOutsideMustache = matchingPho->nClusterOutsideMustache();
5380  //float pfMVA = matchingPho->pfMVA();
5381 
5382  if ((photonEt > 14 && newhOverE < 0.15) || (photonEt > 10 && photonEt < 14 && chargedHadIso < 10)) {
5383  h_scEta_miniAOD_[0]->Fill(matchingPho->superCluster()->eta());
5384  h_scPhi_miniAOD_[0]->Fill(matchingPho->superCluster()->phi());
5385 
5386  h_phoE_miniAOD_[0][0]->Fill(photonE);
5387  h_phoEt_miniAOD_[0][0]->Fill(photonEt);
5388 
5389  h_phoERes_miniAOD_[0][0]->Fill(photonE / mcEnergy);
5390  h_phoSigmaEoE_miniAOD_[0][0]->Fill(sigmaEoE);
5391 
5392  h_r9_miniAOD_[0][0]->Fill(r9);
5393  h_full5x5_r9_miniAOD_[0][0]->Fill(full5x5_r9);
5394  h_r1_miniAOD_[0][0]->Fill(r1);
5395  h_r2_miniAOD_[0][0]->Fill(r2);
5396 
5398  h_full5x5_sigmaIetaIeta_miniAOD_[0][0]->Fill(full5x5_sieie);
5399  h_hOverE_miniAOD_[0][0]->Fill(hOverE);
5400  h_newhOverE_miniAOD_[0][0]->Fill(newhOverE);
5401 
5404  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][0]->Fill(newhcalIso);
5405  h_isoTrkSolidConeDR04_miniAOD_[0][0]->Fill(trkIso);
5406  h_nTrkSolidConeDR04_miniAOD_[0][0]->Fill(nIsoTrk);
5407 
5408  //
5409  h_chHadIso_miniAOD_[0]->Fill(chargedHadIso);
5410  h_nHadIso_miniAOD_[0]->Fill(neutralHadIso);
5412 
5413  //
5414  if (phoIsInBarrel) {
5415  h_phoE_miniAOD_[0][1]->Fill(photonE);
5416  h_phoEt_miniAOD_[0][1]->Fill(photonEt);
5417 
5418  h_phoERes_miniAOD_[0][1]->Fill(photonE / mcEnergy);
5419  h_phoSigmaEoE_miniAOD_[0][1]->Fill(sigmaEoE);
5420 
5421  h_r9_miniAOD_[0][1]->Fill(r9);
5422  h_full5x5_r9_miniAOD_[0][1]->Fill(full5x5_r9);
5423  h_r1_miniAOD_[0][1]->Fill(r1);
5424  h_r2_miniAOD_[0][1]->Fill(r2);
5426  h_full5x5_sigmaIetaIeta_miniAOD_[0][1]->Fill(full5x5_sieie);
5427  h_hOverE_miniAOD_[0][1]->Fill(hOverE);
5428  h_newhOverE_miniAOD_[0][1]->Fill(newhOverE);
5431  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][1]->Fill(newhcalIso);
5432  h_isoTrkSolidConeDR04_miniAOD_[0][1]->Fill(trkIso);
5433  h_nTrkSolidConeDR04_miniAOD_[0][1]->Fill(nIsoTrk);
5434  h_chHadIso_miniAOD_[1]->Fill(chargedHadIso);
5435  h_nHadIso_miniAOD_[1]->Fill(neutralHadIso);
5437  }
5438  if (phoIsInEndcap) {
5439  h_phoE_miniAOD_[0][2]->Fill(photonE);
5440  h_phoEt_miniAOD_[0][2]->Fill(photonEt);
5441 
5442  h_phoERes_miniAOD_[0][2]->Fill(photonE / mcEnergy);
5443  h_phoSigmaEoE_miniAOD_[0][2]->Fill(sigmaEoE);
5444  h_r9_miniAOD_[0][2]->Fill(r9);
5445  h_full5x5_r9_miniAOD_[0][2]->Fill(full5x5_r9);
5446  h_r1_miniAOD_[0][2]->Fill(r1);
5447  h_r2_miniAOD_[0][2]->Fill(r2);
5449  h_full5x5_sigmaIetaIeta_miniAOD_[0][2]->Fill(full5x5_sieie);
5450  h_hOverE_miniAOD_[0][2]->Fill(hOverE);
5451  h_newhOverE_miniAOD_[0][2]->Fill(newhOverE);
5454  h_hcalTowerBcSumEtConeDR04_miniAOD_[0][2]->Fill(newhcalIso);
5455  h_isoTrkSolidConeDR04_miniAOD_[0][2]->Fill(trkIso);
5456  h_nTrkSolidConeDR04_miniAOD_[0][2]->Fill(nIsoTrk);
5457  h_chHadIso_miniAOD_[2]->Fill(chargedHadIso);
5458  h_nHadIso_miniAOD_[2]->Fill(neutralHadIso);
5460  }
5461  } // end histos for comparing with miniAOD
5462 
5463  } // end loop over gen photons
5464 
5465  h_nPho_->Fill(float(nPho));
5466 }
5467 
5469  //---Definitions
5470  const float PI = 3.1415927;
5471  const float TWOPI = 2.0 * PI;
5472 
5473  if (phi > PI) {
5474  phi = phi - TWOPI;
5475  }
5476  if (phi < -PI) {
5477  phi = phi + TWOPI;
5478  }
5479 
5480  return phi;
5481 }
5482 
5483 float PhotonValidator::etaTransformation(float EtaParticle, float Zvertex) {
5484  //---Definitions
5485  const float PI = 3.1415927;
5486 
5487  //---Definitions for ECAL
5488  const float R_ECAL = 136.5;
5489  const float Z_Endcap = 328.0;
5490  const float etaBarrelEndcap = 1.479;
5491 
5492  //---ETA correction
5493 
5494  float Theta = 0.0;
5495  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
5496 
5497  if (ZEcal != 0.0)
5498  Theta = atan(R_ECAL / ZEcal);
5499  if (Theta < 0.0)
5500  Theta = Theta + PI;
5501  float ETA = -log(tan(0.5 * Theta));
5502 
5503  if (fabs(ETA) > etaBarrelEndcap) {
5504  float Zend = Z_Endcap;
5505  if (EtaParticle < 0.0)
5506  Zend = -Zend;
5507  float Zlen = Zend - Zvertex;
5508  float RR = Zlen / sinh(EtaParticle);
5509  Theta = atan(RR / Zend);
5510  if (Theta < 0.0)
5511  Theta = Theta + PI;
5512  ETA = -log(tan(0.5 * Theta));
5513  }
5514  //---Return the result
5515  return ETA;
5516  //---end
5517 }
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:399
MonitorElement * h2_r1VsEta_[3]
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * p_ecalRecHitSumEtConeDR04VsEtaBkg_
float phiNormalization(float &a)
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * h2_r2VsEta_[3]
MonitorElement * h_nHadIso_miniAOD_[3]
MonitorElement * h_isoTrkSolidConeDR04_[3][3]
MonitorElement * p_hOverEVsEt_[3]
MonitorElement * h_EtR9Less093_[3][3]
MonitorElement * h_tkChi2SL_[2]
MonitorElement * h2_eResVsEt_[3][3]
MonitorElement * h_r9VsNofTracks_[2][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_[3][3]
MonitorElement * h_ecalRecHitSumEtConeDR04_miniAOD_[3][3]
MonitorElement * h_phoEResRegr1_[3][3]
MonitorElement * h2_r9VsEtBkg_
MonitorElement * p_hOverEVsEta_[3]
MonitorElement * h2_TkPtPull_[3]
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * h_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:212
MonitorElement * h_isoTrkSolidConeDR04Bkg_[3]
MonitorElement * h2_r9VsEtaBkg_
MonitorElement * h_convVtxYvsX_zoom_[2]
MonitorElement * h_convAlgo_
MonitorElement * h_nCluOutsideMustache_[3]
edm::EDGetTokenT< reco::GenJetCollection > genjets_Token_
MonitorElement * h_hcalTowerSumEtConeDR04_[3][3]
MonitorElement * h2_nTrkSolidConeDR04VsEt_[3]
MonitorElement * h2_hcalTowerSumEtConeDR04VsEtBkg_[3]
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:211
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