CMS 3D CMS Logo

ZToMuMuGammaAnalyzer.cc
Go to the documentation of this file.
1 
15 
22 
23 // DataFormats
46 
50 
52 
53 // Geometry
63 
64 #include "TFile.h"
65 #include "TH1.h"
66 #include "TH2.h"
67 #include "TTree.h"
68 #include "TVector3.h"
69 #include "TProfile.h"
70 
71 //DQM services
74 
75 #include <vector>
76 #include <string>
77 #include <iostream>
78 #include <iomanip>
79 
81 public:
82  explicit ZToMuMuGammaAnalyzer(const edm::ParameterSet&);
83  ~ZToMuMuGammaAnalyzer() override;
84  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
85  void analyze(const edm::Event&, const edm::EventSetup&) override;
86 
87 private:
99 
103  unsigned int prescaleFactor_;
104  std::stringstream currentFolder_;
105  int nEvt_;
106 
107  // muon selection
108  float muonMinPt_;
111  float muonMaxDxy_;
117  // dimuon selection
120  // photon selection
124 
125  // mu mu gamma selection
133 
134  // Histogram parameters
135  double eMin_;
136  double eMax_;
137  int eBin_;
138 
139  double etMin_;
140  double etMax_;
141  int etBin_;
142 
143  double sumMin_;
144  double sumMax_;
145  int sumBin_;
146 
147  double etaMin_;
148  double etaMax_;
149  int etaBin_;
150 
151  double phiMin_;
152  double phiMax_;
153  int phiBin_;
154 
155  double r9Min_;
156  double r9Max_;
157  int r9Bin_;
158 
159  double hOverEMin_;
160  double hOverEMax_;
162 
163  double numberMin_;
164  double numberMax_;
166 
170 
175 
176  float mumuInvMass(const reco::Muon& m1, const reco::Muon& m2);
177  float mumuGammaInvMass(const reco::Muon& mu1, const reco::Muon& mu2, const reco::PhotonRef& pho);
178  bool basicMuonSelection(const reco::Muon& m);
179  bool muonSelection(const reco::Muon& m, const reco::BeamSpot& bs);
180  bool photonSelection(const reco::PhotonRef& p);
181 
186 
191 
193 
198 
204 
210 
216 
222 
228 
232 
238 
244 
250 
256 
262 
268 
274 
278  // Information from Particle Flow
279  // Isolation
283  // Identification
300 };
301 
302 using namespace std;
303 
305  fName_ = pset.getParameter<std::string>("analyzerName");
306  prescaleFactor_ = pset.getUntrackedParameter<int>("prescaleFactor", 1);
307  use2DHistos_ = pset.getParameter<bool>("use2DHistos");
308  makeProfiles_ = pset.getParameter<bool>("makeProfiles");
309 
310  triggerEvent_token_ = consumes<trigger::TriggerEvent>(pset.getParameter<edm::InputTag>("triggerEvent"));
311  offline_pvToken_ = consumes<reco::VertexCollection>(
312  pset.getUntrackedParameter<edm::InputTag>("offlinePV", edm::InputTag("offlinePrimaryVertices")));
313  photon_token_ = consumes<vector<reco::Photon> >(pset.getParameter<edm::InputTag>("phoProducer"));
314  muon_token_ = consumes<vector<reco::Muon> >(pset.getParameter<edm::InputTag>("muonProducer"));
315  pfCandidates_ = consumes<reco::PFCandidateCollection>(pset.getParameter<edm::InputTag>("pfCandidates"));
316  photonIsoValmap_token_ = consumes<edm::ValueMap<std::vector<reco::PFCandidateRef> > >(
317  pset.getParameter<edm::InputTag>("particleBasedIso"));
318  barrelRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit> > >(
319  pset.getParameter<edm::InputTag>("barrelRecHitProducer"));
320  endcapRecHit_token_ = consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit> > >(
321  pset.getParameter<edm::InputTag>("endcapRecHitProducer"));
322  beamSpot_token_ = consumes<reco::BeamSpot>(pset.getParameter<edm::InputTag>("beamSpot"));
323 
324  nEvt_ = 0;
325 
326  // Muon selection
327  muonMinPt_ = pset.getParameter<double>("muonMinPt");
328  minPixStripHits_ = pset.getParameter<int>("minPixStripHits");
329  muonMaxChi2_ = pset.getParameter<double>("muonMaxChi2");
330  muonMaxDxy_ = pset.getParameter<double>("muonMaxDxy");
331  muonMatches_ = pset.getParameter<int>("muonMatches");
332  validPixHits_ = pset.getParameter<int>("validPixHits");
333  validMuonHits_ = pset.getParameter<int>("validMuonHits");
334  muonTrackIso_ = pset.getParameter<double>("muonTrackIso");
335  muonTightEta_ = pset.getParameter<double>("muonTightEta");
336  // Dimuon selection
337  minMumuInvMass_ = pset.getParameter<double>("minMumuInvMass");
338  maxMumuInvMass_ = pset.getParameter<double>("maxMumuInvMass");
339  // Photon selection
340  photonMinEt_ = pset.getParameter<double>("photonMinEt");
341  photonMaxEta_ = pset.getParameter<double>("photonMaxEta");
342  photonTrackIso_ = pset.getParameter<double>("photonTrackIso");
343  // mumuGamma selection
344  nearMuonDr2_ = pset.getParameter<double>("nearMuonDr");
345  nearMuonDr2_ *= nearMuonDr2_;
346  nearMuonHcalIso_ = pset.getParameter<double>("nearMuonHcalIso");
347  farMuonEcalIso_ = pset.getParameter<double>("farMuonEcalIso");
348  farMuonTrackIso_ = pset.getParameter<double>("farMuonTrackIso");
349  farMuonMinPt_ = pset.getParameter<double>("farMuonMinPt");
350  minMumuGammaInvMass_ = pset.getParameter<double>("minMumuGammaInvMass");
351  maxMumuGammaInvMass_ = pset.getParameter<double>("maxMumuGammaInvMass");
352 
353  // Histogram parameters
354  eMin_ = pset.getParameter<double>("eMin");
355  eMax_ = pset.getParameter<double>("eMax");
356  eBin_ = pset.getParameter<int>("eBin");
357 
358  etMin_ = pset.getParameter<double>("etMin");
359  etMax_ = pset.getParameter<double>("etMax");
360  etBin_ = pset.getParameter<int>("etBin");
361 
362  sumMin_ = pset.getParameter<double>("sumMin");
363  sumMax_ = pset.getParameter<double>("sumMax");
364  sumBin_ = pset.getParameter<int>("sumBin");
365 
366  etaMin_ = pset.getParameter<double>("etaMin");
367  etaMax_ = pset.getParameter<double>("etaMax");
368  etaBin_ = pset.getParameter<int>("etaBin");
369 
370  phiMin_ = pset.getParameter<double>("phiMin");
371  phiMax_ = pset.getParameter<double>("phiMax");
372  phiBin_ = pset.getParameter<int>("phiBin");
373 
374  r9Min_ = pset.getParameter<double>("r9Min");
375  r9Max_ = pset.getParameter<double>("r9Max");
376  r9Bin_ = pset.getParameter<int>("r9Bin");
377 
378  hOverEMin_ = pset.getParameter<double>("hOverEMin");
379  hOverEMax_ = pset.getParameter<double>("hOverEMax");
380  hOverEBin_ = pset.getParameter<int>("hOverEBin");
381 
382  numberMin_ = pset.getParameter<double>("numberMin");
383  numberMax_ = pset.getParameter<double>("numberMax");
384  numberBin_ = pset.getParameter<int>("numberBin");
385 
386  sigmaIetaMin_ = pset.getParameter<double>("sigmaIetaMin");
387  sigmaIetaMax_ = pset.getParameter<double>("sigmaIetaMax");
388  sigmaIetaBin_ = pset.getParameter<int>("sigmaIetaBin");
389 
390  reducedEtBin_ = etBin_ / 4;
391  reducedEtaBin_ = etaBin_ / 4;
392  reducedSumBin_ = sumBin_ / 4;
393  reducedR9Bin_ = r9Bin_ / 4;
394 }
395 
397 
399  edm::Run const& /* iRun */,
400  edm::EventSetup const& /* iSetup */) {
402  iBooker.setCurrentFolder("Egamma/" + fName_ + "/ZToMuMuGamma");
403 
404  h1_mumuInvMass_[0] = iBooker.book1D("mumuInvMass", "Two muon invariant mass: M (GeV)", etBin_, etMin_, etMax_);
405  h1_mumuGammaInvMass_[0] =
406  iBooker.book1D("mumuGammaInvMass", "Two-muon plus gamma invariant mass: M (GeV)", etBin_, etMin_, etMax_);
407  h1_mumuGammaInvMass_[1] =
408  iBooker.book1D("mumuGammaInvMassBarrel", "Two-muon plus gamma invariant mass: M (GeV)", etBin_, etMin_, etMax_);
409  h1_mumuGammaInvMass_[2] =
410  iBooker.book1D("mumuGammaInvMassEndcap", "Two-muon plus gamma invariant mass: M (GeV)", etBin_, etMin_, etMax_);
411 
414  h_nRecoVtx_ = iBooker.book1D("nOfflineVtx", "# of Offline Vertices", 200, -0.5, 199.5);
415 
416  //ENERGY
417  h_phoE_[0] = iBooker.book1D("phoE", "Energy;E (GeV)", eBin_, eMin_, eMax_);
418  h_phoSigmaEoverE_[0] = iBooker.book1D("phoSigmaEoverE", "All Ecal: #sigma_{E}/E;#sigma_{E}/E", eBin_, eMin_, eMax_);
419  h_phoEt_[0] = iBooker.book1D("phoEt", "E_{T};E_{T} (GeV)", etBin_, etMin_, etMax_);
420 
421  //NUMBER OF PHOTONS
422  h_nPho_[0] = iBooker.book1D("nPho", "Number of Photons per Event;# #gamma", numberBin_, numberMin_, numberMax_);
423 
424  //GEOMETRICAL
425  h_phoEta_[0] = iBooker.book1D("phoEta", "#eta;#eta", etaBin_, etaMin_, etaMax_);
426  h_phoPhi_[0] = iBooker.book1D("phoPhi", "#phi;#phi", phiBin_, phiMin_, phiMax_);
427 
428  h_scEta_[0] = iBooker.book1D("scEta", "SuperCluster #eta;#eta", etaBin_, etaMin_, etaMax_);
429  h_scPhi_[0] = iBooker.book1D("scPhi", "SuperCluster #phi;#phi", phiBin_, phiMin_, phiMax_);
430 
431  //SHOWER SHAPE
432  h_r9_[0] = iBooker.book1D("r9", "R9;R9", r9Bin_, r9Min_, r9Max_);
433  h_e1x5_[0] = iBooker.book1D("e1x5", "E1x5;E1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
434  h_e2x5_[0] = iBooker.book1D("e2x5", "E2x5;E2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
435  h_r1x5_[0] = iBooker.book1D("r1x5", "r1x5;r1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
436  h_r2x5_[0] = iBooker.book1D("r2x5", "r2x5;r2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
437  h_phoSigmaIetaIeta_[0] = iBooker.book1D(
438  "phoSigmaIetaIeta", "#sigma_{i#etai#eta};#sigma_{i#etai#eta}", sigmaIetaBin_, sigmaIetaMin_, sigmaIetaMax_);
439  //TRACK ISOLATION
440  h_nTrackIsolSolid_[0] = iBooker.book1D(
441  "nIsoTracksSolid", "Number Of Tracks in the Solid Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
442  h_nTrackIsolHollow_[0] = iBooker.book1D(
443  "nIsoTracksHollow", "Number Of Tracks in the Hollow Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
444  h_trackPtSumSolid_[0] =
445  iBooker.book1D("isoPtSumSolid", "Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
446  h_trackPtSumHollow_[0] =
447  iBooker.book1D("isoPtSumHollow", "Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
448  //CALORIMETER ISOLATION VARIABLES
449  h_ecalSum_[0] = iBooker.book1D("ecalSum", "Ecal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
450  h_hcalSum_[0] = iBooker.book1D("hcalSum", "Hcal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
451  h_hOverE_[0] = iBooker.book1D("hOverE", "H/E;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
452  h_h1OverE_[0] = iBooker.book1D("h1OverE", "H/E for Depth 1;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
453  h_h2OverE_[0] = iBooker.book1D("h2OverE", "H/E for Depth 2;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
454  string histname = "newhOverE";
455  h_newhOverE_[0] = iBooker.book1D(histname + "All", "new H/E: All Ecal", 100, 0., 0.1);
456  // Information from Particle Flow
457  histname = "chargedHadIso";
458  h_chHadIso_[0] = iBooker.book1D(histname + "All", "PF chargedHadIso: All Ecal", etBin_, etMin_, 20.);
459  histname = "neutralHadIso";
460  h_nHadIso_[0] = iBooker.book1D(histname + "All", "PF neutralHadIso: All Ecal", etBin_, etMin_, 20.);
461  histname = "photonIso";
462  h_phoIso_[0] = iBooker.book1D(histname + "All", "PF photonIso: All Ecal", etBin_, etMin_, 20.);
463  histname = "nCluOutMustache";
464  h_nCluOutsideMustache_[0] =
465  iBooker.book1D(histname + "All", "PF number of clusters outside Mustache: All Ecal", 50, 0., 50.);
466  histname = "etOutMustache";
467  h_etOutsideMustache_[0] = iBooker.book1D(histname + "All", "PF et outside Mustache: All Ecal", etBin_, etMin_, 20.);
468  histname = "pfMVA";
469  h_pfMva_[0] = iBooker.book1D(histname + "All", "PF MVA output: All Ecal", 50, -1., 2.);
471  histname = "SumPtOverPhoPt_ChHad_Cleaned";
472  h_SumPtOverPhoPt_ChHad_Cleaned_[0] =
473  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Charged Hadrons: All Ecal", etBin_, etMin_, 2.);
474  histname = "SumPtOverPhoPt_NeuHad_Cleaned";
475  h_SumPtOverPhoPt_NeuHad_Cleaned_[0] =
476  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Neutral Hadrons: All Ecal", etBin_, etMin_, 2.);
477  histname = "SumPtOverPhoPt_Pho_Cleaned";
478  h_SumPtOverPhoPt_Pho_Cleaned_[0] =
479  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Photons Hadrons: All Ecal", etBin_, etMin_, 2.);
480  histname = "dRPhoPFcand_ChHad_Cleaned";
481  h_dRPhoPFcand_ChHad_Cleaned_[0] =
482  iBooker.book1D(histname + "All", "dR(pho,cand) Charged Hadrons : All Ecal", etBin_, etMin_, 0.7);
483  histname = "dRPhoPFcand_NeuHad_Cleaned";
484  h_dRPhoPFcand_NeuHad_Cleaned_[0] =
485  iBooker.book1D(histname + "All", "dR(pho,cand) Neutral Hadrons : All Ecal", etBin_, etMin_, 0.7);
486  histname = "dRPhoPFcand_Pho_Cleaned";
487  h_dRPhoPFcand_Pho_Cleaned_[0] =
488  iBooker.book1D(histname + "All", "dR(pho,cand) Photons : All Ecal", etBin_, etMin_, 0.7);
489  //
490  histname = "SumPtOverPhoPt_ChHad_unCleaned";
491  h_SumPtOverPhoPt_ChHad_unCleaned_[0] =
492  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Charged Hadrons : All Ecal", etBin_, etMin_, 2.);
493  histname = "SumPtOverPhoPt_NeuHad_unCleaned";
494  h_SumPtOverPhoPt_NeuHad_unCleaned_[0] =
495  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Neutral Hadrons : All Ecal", etBin_, etMin_, 2.);
496  histname = "SumPtOverPhoPt_Pho_unCleaned";
497  h_SumPtOverPhoPt_Pho_unCleaned_[0] =
498  iBooker.book1D(histname + "All", "Pf Cand Sum Pt Over photon pt Photons: All Ecal", etBin_, etMin_, 2.);
499  histname = "dRPhoPFcand_ChHad_unCleaned";
500  h_dRPhoPFcand_ChHad_unCleaned_[0] =
501  iBooker.book1D(histname + "All", "dR(pho,cand) Charged Hadrons : All Ecal", etBin_, etMin_, 0.7);
502  histname = "dRPhoPFcand_NeuHad_unCleaned";
503  h_dRPhoPFcand_NeuHad_unCleaned_[0] =
504  iBooker.book1D(histname + "All", "dR(pho,cand) Neutral Hadrons : All Ecal", etBin_, etMin_, 0.7);
505  histname = "dRPhoPFcand_Pho_unCleaned";
506  h_dRPhoPFcand_Pho_unCleaned_[0] =
507  iBooker.book1D(histname + "All", "dR(pho,cand) Photons: All Ecal", etBin_, etMin_, 0.7);
508 
509  // NUMBER OF PHOTONS
510  h_nPho_[1] = iBooker.book1D("nPhoBarrel", "Number of Photons per Event;# #gamma", numberBin_, numberMin_, numberMax_);
511  h_nPho_[2] = iBooker.book1D("nPhoEndcap", "Number of Photons per Event;# #gamma", numberBin_, numberMin_, numberMax_);
512  //EB ENERGY
513  h_phoE_[1] = iBooker.book1D("phoEBarrel", "Energy for Barrel;E (GeV)", eBin_, eMin_, eMax_);
514  h_phoSigmaEoverE_[1] = iBooker.book1D("phoSigmaEoverEBarrel", "Barrel: #sigma_E/E;#sigma_{E}/E", eBin_, eMin_, eMax_);
515  h_phoEt_[1] = iBooker.book1D("phoEtBarrel", "E_{T};E_{T} (GeV)", etBin_, etMin_, etMax_);
516  //EE ENERGY
517  h_phoEt_[2] = iBooker.book1D("phoEtEndcap", "E_{T};E_{T} (GeV)", etBin_, etMin_, etMax_);
518  h_phoE_[2] = iBooker.book1D("phoEEndcap", "Energy for Endcap;E (GeV)", eBin_, eMin_, eMax_);
519  h_phoSigmaEoverE_[2] =
520  iBooker.book1D("phoSigmaEoverEEndcap", "Endcap: #sigma_{E}/E;#sigma_{E}/E", eBin_, eMin_, eMax_);
521  //EB GEOMETRICAL
522  h_phoEta_[1] = iBooker.book1D("phoEtaBarrel", "#eta;#eta", etaBin_, etaMin_, etaMax_);
523  h_phoPhi_[1] = iBooker.book1D("phoPhiBarrel", "#phi;#phi", phiBin_, phiMin_, phiMax_);
524  h_scEta_[1] = iBooker.book1D("scEtaBarrel", "SuperCluster #eta;#eta", etaBin_, etaMin_, etaMax_);
525  h_scPhi_[1] = iBooker.book1D("scPhiBarrel", "SuperCluster #phi;#phi", phiBin_, phiMin_, phiMax_);
526  //EE GEOMETRICAL
527  h_phoEta_[2] = iBooker.book1D("phoEtaEndcap", "#eta;#eta", etaBin_, etaMin_, etaMax_);
528  h_phoPhi_[2] = iBooker.book1D("phoPhiEndcap", "#phi;#phi", phiBin_, phiMin_, phiMax_);
529  h_scEta_[2] = iBooker.book1D("scEtaEndcap", "SuperCluster #eta;#eta", etaBin_, etaMin_, etaMax_);
530  h_scPhi_[2] = iBooker.book1D("scPhiEndcap", "SuperCluster #phi;#phi", phiBin_, phiMin_, phiMax_);
531  //SHOWER SHAPES
532  h_r9_[1] = iBooker.book1D("r9Barrel", "R9;R9", r9Bin_, r9Min_, r9Max_);
533  h_r9_[2] = iBooker.book1D("r9Endcap", "R9;R9", r9Bin_, r9Min_, r9Max_);
534  h_e1x5_[1] = iBooker.book1D("e1x5Barrel", "E1x5;E1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
535  h_e1x5_[2] = iBooker.book1D("e1x5Endcap", "E1x5;E1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
536  h_e2x5_[1] = iBooker.book1D("e2x5Barrel", "E2x5;E2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
537  h_e2x5_[2] = iBooker.book1D("e2x5Endcap", "E2x5;E2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
538  h_r1x5_[1] = iBooker.book1D("r1x5Barrel", "r1x5;r1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
539  h_r1x5_[2] = iBooker.book1D("r1x5Endcap", "r1x5;r1X5 (GeV)", reducedEtBin_, etMin_, etMax_);
540  h_r2x5_[1] = iBooker.book1D("r2x5Barrel", "r2x5;r2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
541  h_r2x5_[2] = iBooker.book1D("r2x5Endcap", "r2x5;r2X5 (GeV)", reducedEtBin_, etMin_, etMax_);
542  h_phoSigmaIetaIeta_[1] = iBooker.book1D(
543  "phoSigmaIetaIetaBarrel", "#sigma_{i#etai#eta};#sigma_{i#etai#eta}", sigmaIetaBin_, sigmaIetaMin_, sigmaIetaMax_);
544  h_phoSigmaIetaIeta_[2] = iBooker.book1D(
545  "phoSigmaIetaIetaEndcap", "#sigma_{i#etai#eta};#sigma_{i#etai#eta}", sigmaIetaBin_, sigmaIetaMin_, sigmaIetaMax_);
546  // TRACK ISOLATION
547  h_nTrackIsolSolid_[1] = iBooker.book1D(
548  "nIsoTracksSolidBarrel", "Number Of Tracks in the Solid Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
549  h_nTrackIsolSolid_[2] = iBooker.book1D(
550  "nIsoTracksSolidEndcap", "Number Of Tracks in the Solid Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
551  h_nTrackIsolHollow_[1] = iBooker.book1D(
552  "nIsoTracksHollowBarrel", "Number Of Tracks in the Hollow Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
553  h_nTrackIsolHollow_[2] = iBooker.book1D(
554  "nIsoTracksHollowEndcap", "Number Of Tracks in the Hollow Iso Cone;# tracks", numberBin_, numberMin_, numberMax_);
555  h_trackPtSumSolid_[1] = iBooker.book1D(
556  "isoPtSumSolidBarrel", "Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
557  h_trackPtSumSolid_[2] = iBooker.book1D(
558  "isoPtSumSolidEndcap", "Track P_{T} Sum in the Solid Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
559  h_trackPtSumHollow_[1] = iBooker.book1D(
560  "isoPtSumHollowBarrel", "Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
561  h_trackPtSumHollow_[2] = iBooker.book1D(
562  "isoPtSumHollowEndcap", "Track P_{T} Sum in the Hollow Iso Cone;P_{T} (GeV)", sumBin_, sumMin_, sumMax_);
563  // CALORIMETER ISOLATION VARIABLES
564  h_ecalSum_[1] = iBooker.book1D("ecalSumBarrel", "Ecal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
565  h_ecalSum_[2] = iBooker.book1D("ecalSumEndcap", "Ecal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
566  h_hcalSum_[1] = iBooker.book1D("hcalSumBarrel", "Hcal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
567  h_hcalSum_[2] = iBooker.book1D("hcalSumEndcap", "Hcal Sum in the Iso Cone;E (GeV)", sumBin_, sumMin_, sumMax_);
568  //H/E
569  // EB
570  h_hOverE_[1] = iBooker.book1D("hOverEBarrel", "H/E;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
571  h_h1OverE_[1] = iBooker.book1D("h1OverEBarrel", "H/E for Depth 1;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
572  h_h2OverE_[1] = iBooker.book1D("h2OverEBarrel", "H/E for Depth 2;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
573  histname = "newhOverE";
574  h_newhOverE_[1] = iBooker.book1D(histname + "Barrel", "new H/E: Barrel", 100, 0., 0.1);
575  //EE
576  h_hOverE_[2] = iBooker.book1D("hOverEEndcap", "H/E;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
577  h_h1OverE_[2] = iBooker.book1D("h1OverEEndcap", "H/E for Depth 1;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
578  h_h2OverE_[2] = iBooker.book1D("h2OverEEndcap", "H/E for Depth 2;H/E", hOverEBin_, hOverEMin_, hOverEMax_);
579  histname = "newhOverE";
580  h_newhOverE_[2] = iBooker.book1D(histname + "Endcap", "new H/E: Endcap", 100, 0., 0.1);
581  // Information from Particle Flow
582  histname = "chargedHadIso";
583  h_chHadIso_[1] = iBooker.book1D(histname + "Barrel", "PF chargedHadIso: Barrel", etBin_, etMin_, 20.);
584  h_chHadIso_[2] = iBooker.book1D(histname + "Endcap", "PF chargedHadIso: Endcap", etBin_, etMin_, 20.);
585  histname = "neutralHadIso";
586  h_nHadIso_[1] = iBooker.book1D(histname + "Barrel", "PF neutralHadIso: Barrel", etBin_, etMin_, 20.);
587  h_nHadIso_[2] = iBooker.book1D(histname + "Endcap", "PF neutralHadIso: Endcap", etBin_, etMin_, 20.);
588  histname = "photonIso";
589  h_phoIso_[1] = iBooker.book1D(histname + "Barrel", "PF photonIso: Barrel", etBin_, etMin_, 20.);
590  h_phoIso_[2] = iBooker.book1D(histname + "Endcap", "PF photonIso: Endcap", etBin_, etMin_, 20.);
591  histname = "nCluOutMustache";
592  h_nCluOutsideMustache_[1] =
593  iBooker.book1D(histname + "Barrel", "PF number of clusters outside Mustache: Barrel", 50, 0., 50.);
594  h_nCluOutsideMustache_[2] =
595  iBooker.book1D(histname + "Endcap", "PF number of clusters outside Mustache: Endcap", 50, 0., 50.);
596  histname = "etOutMustache";
597  h_etOutsideMustache_[1] = iBooker.book1D(histname + "Barrel", "PF et outside Mustache: Barrel", etBin_, etMin_, 20.);
598  h_etOutsideMustache_[2] = iBooker.book1D(histname + "Endcap", "PF et outside Mustache: Endcap", etBin_, etMin_, 20.);
599  histname = "pfMVA";
600  h_pfMva_[1] = iBooker.book1D(histname + "Barrel", "PF MVA output: Barrel", 50, -1., 2.);
601  h_pfMva_[2] = iBooker.book1D(histname + "Endcap", "PF MVA output: Endcap", 50, -1, 2.);
603  histname = "SumPtOverPhoPt_ChHad_Cleaned";
604  h_SumPtOverPhoPt_ChHad_Cleaned_[1] =
605  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Charged Hadrons: Barrel", etBin_, etMin_, 2.);
606  h_SumPtOverPhoPt_ChHad_Cleaned_[2] =
607  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Charged Hadrons: Endcap", etBin_, etMin_, 2.);
608  histname = "SumPtOverPhoPt_NeuHad_Cleaned";
609  h_SumPtOverPhoPt_NeuHad_Cleaned_[1] =
610  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Barrel", etBin_, etMin_, 2.);
611  h_SumPtOverPhoPt_NeuHad_Cleaned_[2] =
612  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Endcap", etBin_, etMin_, 2.);
613  histname = "SumPtOverPhoPt_Pho_Cleaned";
614  h_SumPtOverPhoPt_Pho_Cleaned_[1] =
615  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Photons Hadrons: Barrel", etBin_, etMin_, 2.);
616  h_SumPtOverPhoPt_Pho_Cleaned_[2] =
617  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Photons Hadrons: Endcap", etBin_, etMin_, 2.);
618  histname = "dRPhoPFcand_ChHad_Cleaned";
619  h_dRPhoPFcand_ChHad_Cleaned_[1] =
620  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Charged Hadrons : Barrel", etBin_, etMin_, 0.7);
621  h_dRPhoPFcand_ChHad_Cleaned_[2] =
622  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Charged Hadrons : Endcap", etBin_, etMin_, 0.7);
623  histname = "dRPhoPFcand_NeuHad_Cleaned";
624  h_dRPhoPFcand_NeuHad_Cleaned_[1] =
625  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Neutral Hadrons : Barrel", etBin_, etMin_, 0.7);
626  h_dRPhoPFcand_NeuHad_Cleaned_[2] =
627  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Neutral Hadrons : Endcap", etBin_, etMin_, 0.7);
628  histname = "dRPhoPFcand_Pho_Cleaned";
629  h_dRPhoPFcand_Pho_Cleaned_[1] =
630  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons : Barrel", etBin_, etMin_, 0.7);
631  h_dRPhoPFcand_Pho_Cleaned_[2] =
632  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons : Endcap", etBin_, etMin_, 0.7);
633  //
634  histname = "SumPtOverPhoPt_ChHad_unCleaned";
635  h_SumPtOverPhoPt_ChHad_unCleaned_[1] =
636  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Charged Hadrons: Barrel", etBin_, etMin_, 2.);
637  h_SumPtOverPhoPt_ChHad_unCleaned_[2] =
638  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Charged Hadrons: Endcap", etBin_, etMin_, 2.);
639  histname = "SumPtOverPhoPt_NeuHad_unCleaned";
640  h_SumPtOverPhoPt_NeuHad_unCleaned_[1] =
641  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Barrel", etBin_, etMin_, 2.);
642  h_SumPtOverPhoPt_NeuHad_unCleaned_[2] =
643  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Neutral Hadrons: Endcap", etBin_, etMin_, 2.);
644  histname = "SumPtOverPhoPt_Pho_unCleaned";
645  h_SumPtOverPhoPt_Pho_unCleaned_[1] =
646  iBooker.book1D(histname + "Barrel", "PF Cand Sum Pt Over photon pt Photons: Barrel", etBin_, etMin_, 2.);
647  h_SumPtOverPhoPt_Pho_unCleaned_[2] =
648  iBooker.book1D(histname + "Endcap", "PF Cand Sum Pt Over photon pt Photons: Endcap", etBin_, etMin_, 2.);
649  histname = "dRPhoPFcand_ChHad_unCleaned";
650  h_dRPhoPFcand_ChHad_unCleaned_[1] =
651  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Charged Hadrons : Barrel", etBin_, etMin_, 0.7);
652  h_dRPhoPFcand_ChHad_unCleaned_[2] =
653  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Charged Hadrons : Endcap", etBin_, etMin_, 0.7);
654  histname = "dRPhoPFcand_NeuHad_unCleaned";
655  h_dRPhoPFcand_NeuHad_unCleaned_[1] =
656  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Neutral Hadrons : Barrel", etBin_, etMin_, 0.7);
657  h_dRPhoPFcand_NeuHad_unCleaned_[2] =
658  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Neutral Hadrons : Endcap", etBin_, etMin_, 0.7);
659  histname = "dRPhoPFcand_Pho_unCleaned";
660  h_dRPhoPFcand_Pho_unCleaned_[1] =
661  iBooker.book1D(histname + "Barrel", "dR(pho,cand) Photons: Barrel", etBin_, etMin_, 0.7);
662  h_dRPhoPFcand_Pho_unCleaned_[2] =
663  iBooker.book1D(histname + "Endcap", "dR(pho,cand) Photons: Endcap", etBin_, etMin_, 0.7);
664 
666  if (makeProfiles_) {
667  // p_r9VsEt_[0] = iBooker.bookProfile("r9VsEt","Avg R9 vs E_{T};E_{T} (GeV);R9",etBin_,etMin_,etMax_,r9Bin_,r9Min_,r9Max_);
668  p_r9VsEt_[1] = iBooker.bookProfile(
669  "r9VsEtBarrel", "Avg R9 vs E_{T};E_{T} (GeV);R9", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
670  p_r9VsEt_[2] = iBooker.bookProfile(
671  "r9VsEtEndcap", "Avg R9 vs E_{T};E_{T} (GeV);R9", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
672  p_r9VsEta_[0] =
673  iBooker.bookProfile("r9VsEta", "Avg R9 vs #eta;#eta;R9", etaBin_, etaMin_, etaMax_, r9Bin_, r9Min_, r9Max_);
674  //
675  p_sigmaIetaIetaVsEta_[0] = iBooker.bookProfile("sigmaIetaIetaVsEta",
676  "Avg #sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",
677  etaBin_,
678  etaMin_,
679  etaMax_,
680  sigmaIetaBin_,
681  sigmaIetaMin_,
682  sigmaIetaMax_);
683  p_e1x5VsEt_[1] = iBooker.bookProfile(
684  "e1x5VsEtBarrel", "Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)", etBin_, etMin_, etMax_, etBin_, etMin_, etMax_);
685  p_e1x5VsEt_[2] = iBooker.bookProfile(
686  "e1x5VsEtEndcap", "Avg E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)", etBin_, etMin_, etMax_, etBin_, etMin_, etMax_);
687  p_e1x5VsEta_[0] = iBooker.bookProfile(
688  "e1x5VsEta", "Avg E1x5 vs #eta;#eta;E1X5 (GeV)", etaBin_, etaMin_, etaMax_, etBin_, etMin_, etMax_);
689  p_e2x5VsEt_[1] = iBooker.bookProfile(
690  "e2x5VsEtBarrel", "Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)", etBin_, etMin_, etMax_, etBin_, etMin_, etMax_);
691  p_e2x5VsEt_[2] = iBooker.bookProfile(
692  "e2x5VsEtEndcap", "Avg E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)", etBin_, etMin_, etMax_, etBin_, etMin_, etMax_);
693  p_e2x5VsEta_[0] = iBooker.bookProfile(
694  "e2x5VsEta", "Avg E2x5 vs #eta;#eta;E2X5 (GeV)", etaBin_, etaMin_, etaMax_, etBin_, etMin_, etMax_);
695  p_r1x5VsEt_[1] = iBooker.bookProfile(
696  "r1x5VsEtBarrel", "Avg R1x5 vs E_{T};E_{T} (GeV);R1X5", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
697  p_r1x5VsEt_[2] = iBooker.bookProfile(
698  "r1x5VsEtEndcap", "Avg R1x5 vs E_{T};E_{T} (GeV);R1X5", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
699  p_r1x5VsEta_[0] = iBooker.bookProfile(
700  "r1x5VsEta", "Avg R1x5 vs #eta;#eta;R1X5", etaBin_, etaMin_, etaMax_, r9Bin_, r9Min_, r9Max_);
701  p_r2x5VsEt_[1] = iBooker.bookProfile(
702  "r2x5VsEtBarrel", "Avg R2x5 vs E_{T};E_{T} (GeV);R2X5", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
703  p_r2x5VsEt_[2] = iBooker.bookProfile(
704  "r2x5VsEtEndcap", "Avg R2x5 vs E_{T};E_{T} (GeV);R2X5", etBin_, etMin_, etMax_, r9Bin_, r9Min_, r9Max_);
705  p_r2x5VsEta_[0] = iBooker.bookProfile(
706  "r2x5VsEta", "Avg R2x5 vs #eta;#eta;R2X5", etaBin_, etaMin_, etaMax_, r9Bin_, r9Min_, r9Max_);
707  p_nTrackIsolSolidVsEt_[1] =
708  iBooker.bookProfile("nIsoTracksSolidVsEtBarrel",
709  "Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",
710  etBin_,
711  etMin_,
712  etMax_,
713  numberBin_,
714  numberMin_,
715  numberMax_);
716  p_nTrackIsolSolidVsEt_[2] =
717  iBooker.bookProfile("nIsoTracksSolidVsEtEndcap",
718  "Avg Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",
719  etBin_,
720  etMin_,
721  etMax_,
722  numberBin_,
723  numberMin_,
724  numberMax_);
725  p_nTrackIsolSolidVsEta_[0] = iBooker.bookProfile("nIsoTracksSolidVsEta",
726  "Avg Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",
727  etaBin_,
728  etaMin_,
729  etaMax_,
730  numberBin_,
731  numberMin_,
732  numberMax_);
733  p_nTrackIsolHollowVsEt_[1] =
734  iBooker.bookProfile("nIsoTracksHollowVsEtBarrel",
735  "Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",
736  etBin_,
737  etMin_,
738  etMax_,
739  numberBin_,
740  numberMin_,
741  numberMax_);
742  p_nTrackIsolHollowVsEt_[2] =
743  iBooker.bookProfile("nIsoTracksHollowVsEtEndcap",
744  "Avg Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",
745  etBin_,
746  etMin_,
747  etMax_,
748  numberBin_,
749  numberMin_,
750  numberMax_);
751  p_nTrackIsolHollowVsEta_[0] =
752  iBooker.bookProfile("nIsoTracksHollowVsEta",
753  "Avg Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",
754  etaBin_,
755  etaMin_,
756  etaMax_,
757  numberBin_,
758  numberMin_,
759  numberMax_);
760  p_trackPtSumSolidVsEt_[1] =
761  iBooker.bookProfile("isoPtSumSolidVsEtBarrel",
762  "Avg Track P_{T} Sum in the Solid Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
763  etBin_,
764  etMin_,
765  etMax_,
766  sumBin_,
767  sumMin_,
768  sumMax_);
769  p_trackPtSumSolidVsEt_[2] =
770  iBooker.bookProfile("isoPtSumSolidVsEtEndcap",
771  "Avg Track P_{T} Sum in the Solid Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
772  etBin_,
773  etMin_,
774  etMax_,
775  sumBin_,
776  sumMin_,
777  sumMax_);
778  p_trackPtSumSolidVsEta_[0] =
779  iBooker.bookProfile("isoPtSumSolidVsEta",
780  "Avg Track P_{T} Sum in the Solid Iso Cone vs #eta;#eta;P_{T} (GeV)",
781  etaBin_,
782  etaMin_,
783  etaMax_,
784  sumBin_,
785  sumMin_,
786  sumMax_);
787  p_trackPtSumHollowVsEt_[1] =
788  iBooker.bookProfile("isoPtSumHollowVsEtBarrel",
789  "Avg Track P_{T} Sum in the Hollow Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
790  etBin_,
791  etMin_,
792  etMax_,
793  sumBin_,
794  sumMin_,
795  sumMax_);
796  p_trackPtSumHollowVsEt_[2] =
797  iBooker.bookProfile("isoPtSumHollowVsEtEndcap",
798  "Avg Track P_{T} Sum in the Hollow Iso Cone vs E_{T};E_{T} (GeV);P_{T} (GeV)",
799  etBin_,
800  etMin_,
801  etMax_,
802  sumBin_,
803  sumMin_,
804  sumMax_);
805  p_trackPtSumHollowVsEta_[0] =
806  iBooker.bookProfile("isoPtSumHollowVsEta",
807  "Avg Track P_{T} Sum in the Hollow Iso Cone vs #eta;#eta;P_{T} (GeV)",
808  etaBin_,
809  etaMin_,
810  etaMax_,
811  sumBin_,
812  sumMin_,
813  sumMax_);
814  p_ecalSumVsEt_[1] = iBooker.bookProfile("ecalSumVsEtBarrel",
815  "Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
816  etBin_,
817  etMin_,
818  etMax_,
819  sumBin_,
820  sumMin_,
821  sumMax_);
822  p_ecalSumVsEt_[2] = iBooker.bookProfile("ecalSumVsEtEndcap",
823  "Avg Ecal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
824  etBin_,
825  etMin_,
826  etMax_,
827  sumBin_,
828  sumMin_,
829  sumMax_);
830  p_ecalSumVsEta_[0] = iBooker.bookProfile("ecalSumVsEta",
831  "Avg Ecal Sum in the Iso Cone vs #eta;#eta;E (GeV)",
832  etaBin_,
833  etaMin_,
834  etaMax_,
835  sumBin_,
836  sumMin_,
837  sumMax_);
838  p_hcalSumVsEt_[1] = iBooker.bookProfile("hcalSumVsEtBarrel",
839  "Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
840  etBin_,
841  etMin_,
842  etMax_,
843  sumBin_,
844  sumMin_,
845  sumMax_);
846  p_hcalSumVsEt_[2] = iBooker.bookProfile("hcalSumVsEtEndcap",
847  "Avg Hcal Sum in the Iso Cone vs E_{T};E_{T} (GeV);E (GeV)",
848  etBin_,
849  etMin_,
850  etMax_,
851  sumBin_,
852  sumMin_,
853  sumMax_);
854  p_hcalSumVsEta_[0] = iBooker.bookProfile("hcalSumVsEta",
855  "Avg Hcal Sum in the Iso Cone vs #eta;#eta;E (GeV)",
856  etaBin_,
857  etaMin_,
858  etaMax_,
859  sumBin_,
860  sumMin_,
861  sumMax_);
862  p_hOverEVsEt_[1] = iBooker.bookProfile("p_hOverEVsEtBarrel",
863  "Avg H/E vs Et;E_{T} (GeV);H/E",
864  etBin_,
865  etMin_,
866  etMax_,
867  hOverEBin_,
868  hOverEMin_,
869  hOverEMax_);
870  p_hOverEVsEt_[2] = iBooker.bookProfile("p_hOverEVsEtEndcap",
871  "Avg H/E vs Et;E_{T} (GeV);H/E",
872  etBin_,
873  etMin_,
874  etMax_,
875  hOverEBin_,
876  hOverEMin_,
877  hOverEMax_);
878  p_hOverEVsEta_[0] = iBooker.bookProfile(
879  "p_hOverEVsEta", "Avg H/E vs #eta;#eta;H/E", etaBin_, etaMin_, etaMax_, hOverEBin_, hOverEMin_, hOverEMax_);
880 
881  // sigmaE/E
882  histname = "sigmaEoverEVsNVtx";
883  p_phoSigmaEoverEVsNVtx_[1] = iBooker.bookProfile(histname + "Barrel",
884  "Photons #sigma_{E}/E vs N_{vtx}: Barrel; N_{vtx}; #sigma_{E}/E ",
885  200,
886  -0.5,
887  199.5,
888  100,
889  0.,
890  0.08,
891  "");
892  p_phoSigmaEoverEVsNVtx_[2] = iBooker.bookProfile(histname + "Endcap",
893  "Photons #sigma_{E}/E vs N_{vtx}: Endcap; N_{vtx}; #sigma_{E}/E",
894  200,
895  -0.5,
896  199.5,
897  100,
898  0.,
899  0.08,
900  "");
901  }
902 
904  if (use2DHistos_) {
905  //SHOWER SHAPE
906  //r9
907  h2_r9VsEt_[0] = iBooker.book2D(
908  "r9VsEt2D", "R9 vs E_{T};E_{T} (GeV);R9", reducedEtBin_, etMin_, etMax_, reducedR9Bin_, r9Min_, r9Max_);
909  h2_r9VsEt_[1] = iBooker.book2D(
910  "r9VsEt2DBarrel", "R9 vs E_{T};E_{T} (GeV);R9", reducedEtBin_, etMin_, etMax_, reducedR9Bin_, r9Min_, r9Max_);
911  h2_r9VsEt_[2] = iBooker.book2D(
912  "r9VsEt2DEndcap", "R9 vs E_{T};E_{T} (GeV);R9", reducedEtBin_, etMin_, etMax_, reducedR9Bin_, r9Min_, r9Max_);
913  h2_r9VsEta_[0] = iBooker.book2D(
914  "r9VsEta2D", "R9 vs #eta;#eta;R9", reducedEtaBin_, etaMin_, etaMax_, reducedR9Bin_, r9Min_, r9Max_);
915  //sigmaIetaIeta
916  h2_sigmaIetaIetaVsEta_[0] = iBooker.book2D("sigmaIetaIetaVsEta2D",
917  "#sigma_{i#etai#eta} vs #eta;#eta;#sigma_{i#etai#eta}",
918  reducedEtaBin_,
919  etaMin_,
920  etaMax_,
921  sigmaIetaBin_,
922  sigmaIetaMin_,
923  sigmaIetaMax_);
924  //e1x5
925  h2_e1x5VsEt_[0] = iBooker.book2D("e1x5VsEt2D",
926  "E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",
927  reducedEtBin_,
928  etMin_,
929  etMax_,
930  reducedEtBin_,
931  etMin_,
932  etMax_);
933  h2_e1x5VsEt_[1] = iBooker.book2D("e1x5VsEt2DBarrel",
934  "E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",
935  reducedEtBin_,
936  etMin_,
937  etMax_,
938  reducedEtBin_,
939  etMin_,
940  etMax_);
941  h2_e1x5VsEt_[2] = iBooker.book2D("e1x5VsEt2DEndcap",
942  "E1x5 vs E_{T};E_{T} (GeV);E1X5 (GeV)",
943  reducedEtBin_,
944  etMin_,
945  etMax_,
946  reducedEtBin_,
947  etMin_,
948  etMax_);
949  h2_e1x5VsEta_[0] = iBooker.book2D(
950  "e1x5VsEta2D", "E1x5 vs #eta;#eta;E1X5 (GeV)", reducedEtaBin_, etaMin_, etaMax_, reducedEtBin_, etMin_, etMax_);
951  //e2x5
952  h2_e2x5VsEt_[0] = iBooker.book2D("e2x5VsEt2D",
953  "E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",
954  reducedEtBin_,
955  etMin_,
956  etMax_,
957  reducedEtBin_,
958  etMin_,
959  etMax_);
960  h2_e2x5VsEt_[1] = iBooker.book2D("e2x5VsEt2DBarrel",
961  "E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",
962  reducedEtBin_,
963  etMin_,
964  etMax_,
965  reducedEtBin_,
966  etMin_,
967  etMax_);
968  h2_e2x5VsEt_[2] = iBooker.book2D("e2x5VsEt2DEndcap",
969  "E2x5 vs E_{T};E_{T} (GeV);E2X5 (GeV)",
970  reducedEtBin_,
971  etMin_,
972  etMax_,
973  reducedEtBin_,
974  etMin_,
975  etMax_);
976  h2_e2x5VsEta_[0] = iBooker.book2D(
977  "e2x5VsEta2D", "E2x5 vs #eta;#eta;E2X5 (GeV)", reducedEtaBin_, etaMin_, etaMax_, reducedEtBin_, etMin_, etMax_);
978  //r1x5
979  h2_r1x5VsEt_[0] = iBooker.book2D(
980  "r1x5VsEt2D", "R1x5 vs E_{T};E_{T} (GeV);R1X5", reducedEtBin_, etMin_, etMax_, reducedR9Bin_, r9Min_, r9Max_);
981  h2_r1x5VsEt_[1] = iBooker.book2D("r1x5VsEt2DBarrel",
982  "R1x5 vs E_{T};E_{T} (GeV);R1X5",
983  reducedEtBin_,
984  etMin_,
985  etMax_,
986  reducedR9Bin_,
987  r9Min_,
988  r9Max_);
989  h2_r1x5VsEt_[2] = iBooker.book2D("r1x5VsEt2DEndcap",
990  "R1x5 vs E_{T};E_{T} (GeV);R1X5",
991  reducedEtBin_,
992  etMin_,
993  etMax_,
994  reducedR9Bin_,
995  r9Min_,
996  r9Max_);
997  h2_r1x5VsEta_[0] = iBooker.book2D(
998  "r1x5VsEta2D", "R1x5 vs #eta;#eta;R1X5", reducedEtaBin_, etaMin_, etaMax_, reducedR9Bin_, r9Min_, r9Max_);
999  //r2x5
1000  h2_r2x5VsEt_[0] = iBooker.book2D(
1001  "r2x5VsEt2D", "R2x5 vs E_{T};E_{T} (GeV);R2X5", reducedEtBin_, etMin_, etMax_, reducedR9Bin_, r9Min_, r9Max_);
1002  h2_r2x5VsEt_[1] = iBooker.book2D("r2x5VsEt2DBarrel",
1003  "R2x5 vs E_{T};E_{T} (GeV);R2X5",
1004  reducedEtBin_,
1005  etMin_,
1006  etMax_,
1007  reducedR9Bin_,
1008  r9Min_,
1009  r9Max_);
1010  h2_r2x5VsEt_[2] = iBooker.book2D("r2x5VsEt2DEndcap",
1011  "R2x5 vs E_{T};E_{T} (GeV);R2X5",
1012  reducedEtBin_,
1013  etMin_,
1014  etMax_,
1015  reducedR9Bin_,
1016  r9Min_,
1017  r9Max_);
1018  h2_r2x5VsEta_[0] = iBooker.book2D(
1019  "r2x5VsEta2D", "R2x5 vs #eta;#eta;R2X5", reducedEtaBin_, etaMin_, etaMax_, reducedR9Bin_, r9Min_, r9Max_);
1020  //TRACK ISOLATION
1021  //nTrackIsolSolid
1022  h2_nTrackIsolSolidVsEt_[0] = iBooker.book2D("nIsoTracksSolidVsEt2D",
1023  "Number Of Tracks in the Solid Iso Cone vs E_{T};E_{T};# tracks",
1024  reducedEtBin_,
1025  etMin_,
1026  etMax_,
1027  numberBin_,
1028  numberMin_,
1029  numberMax_);
1030  h2_nTrackIsolSolidVsEta_[0] = iBooker.book2D("nIsoTracksSolidVsEta2D",
1031  "Number Of Tracks in the Solid Iso Cone vs #eta;#eta;# tracks",
1032  reducedEtaBin_,
1033  etaMin_,
1034  etaMax_,
1035  numberBin_,
1036  numberMin_,
1037  numberMax_);
1038  //nTrackIsolHollow
1039  h2_nTrackIsolHollowVsEt_[0] = iBooker.book2D("nIsoTracksHollowVsEt2D",
1040  "Number Of Tracks in the Hollow Iso Cone vs E_{T};E_{T};# tracks",
1041  reducedEtBin_,
1042  etMin_,
1043  etMax_,
1044  numberBin_,
1045  numberMin_,
1046  numberMax_);
1047  h2_nTrackIsolHollowVsEta_[0] = iBooker.book2D("nIsoTracksHollowVsEta2D",
1048  "Number Of Tracks in the Hollow Iso Cone vs #eta;#eta;# tracks",
1049  reducedEtaBin_,
1050  etaMin_,
1051  etaMax_,
1052  numberBin_,
1053  numberMin_,
1054  numberMax_);
1055  //trackPtSumSolid
1056  h2_trackPtSumSolidVsEt_[0] = iBooker.book2D("isoPtSumSolidVsEt2D",
1057  "Track P_{T} Sum in the Solid Iso Cone;E_{T} (GeV);P_{T} (GeV)",
1058  reducedEtBin_,
1059  etMin_,
1060  etMax_,
1061  reducedSumBin_,
1062  sumMin_,
1063  sumMax_);
1064  h2_trackPtSumSolidVsEta_[0] = iBooker.book2D("isoPtSumSolidVsEta2D",
1065  "Track P_{T} Sum in the Solid Iso Cone;#eta;P_{T} (GeV)",
1066  reducedEtaBin_,
1067  etaMin_,
1068  etaMax_,
1069  reducedSumBin_,
1070  sumMin_,
1071  sumMax_);
1072  //trackPtSumHollow
1073  h2_trackPtSumHollowVsEt_[0] = iBooker.book2D("isoPtSumHollowVsEt2D",
1074  "Track P_{T} Sum in the Hollow Iso Cone;E_{T} (GeV);P_{T} (GeV)",
1075  reducedEtBin_,
1076  etMin_,
1077  etMax_,
1078  reducedSumBin_,
1079  sumMin_,
1080  sumMax_);
1081  h2_trackPtSumHollowVsEta_[0] = iBooker.book2D("isoPtSumHollowVsEta2D",
1082  "Track P_{T} Sum in the Hollow Iso Cone;#eta;P_{T} (GeV)",
1083  reducedEtaBin_,
1084  etaMin_,
1085  etaMax_,
1086  reducedSumBin_,
1087  sumMin_,
1088  sumMax_);
1089  //CALORIMETER ISOLATION VARIABLES
1090  //ecal sum
1091  h2_ecalSumVsEt_[0] = iBooker.book2D("ecalSumVsEt2D",
1092  "Ecal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",
1093  reducedEtBin_,
1094  etMin_,
1095  etMax_,
1096  reducedSumBin_,
1097  sumMin_,
1098  sumMax_);
1099  h2_ecalSumVsEta_[0] = iBooker.book2D("ecalSumVsEta2D",
1100  "Ecal Sum in the Iso Cone;#eta;E (GeV)",
1101  reducedEtaBin_,
1102  etaMin_,
1103  etaMax_,
1104  reducedSumBin_,
1105  sumMin_,
1106  sumMax_);
1107  //hcal sum
1108  h2_hcalSumVsEt_[0] = iBooker.book2D("hcalSumVsEt2D",
1109  "Hcal Sum in the Iso Cone;E_{T} (GeV);E (GeV)",
1110  reducedEtBin_,
1111  etMin_,
1112  etMax_,
1113  reducedSumBin_,
1114  sumMin_,
1115  sumMax_);
1116  h2_hcalSumVsEta_[0] = iBooker.book2D("hcalSumVsEta2D",
1117  "Hcal Sum in the Iso Cone;#eta;E (GeV)",
1118  reducedEtaBin_,
1119  etaMin_,
1120  etaMax_,
1121  reducedSumBin_,
1122  sumMin_,
1123  sumMax_);
1124  }
1125 }
1126 
1128  using namespace edm;
1129 
1130  if (nEvt_ % prescaleFactor_)
1131  return;
1132  nEvt_++;
1133  LogInfo("ZToMuMuGammaAnalyzer") << "ZToMuMuGammaAnalyzer Analyzing event number: " << e.id() << " Global Counter "
1134  << nEvt_ << "\n";
1135 
1136  // Get the trigger results
1137  bool validTriggerEvent = true;
1138  edm::Handle<trigger::TriggerEvent> triggerEventHandle;
1140  e.getByToken(triggerEvent_token_, triggerEventHandle);
1141  if (!triggerEventHandle.isValid()) {
1142  edm::LogInfo("PhotonAnalyzer") << "Error! Can't get the product: triggerEvent_token_" << endl;
1143  validTriggerEvent = false;
1144  }
1145  if (validTriggerEvent)
1146  triggerEvent = *(triggerEventHandle.product());
1147 
1148  // Get the reconstructed photons
1149  // bool validPhotons=true;
1150  Handle<reco::PhotonCollection> photonHandle;
1152  e.getByToken(photon_token_, photonHandle);
1153  if (!photonHandle.isValid()) {
1154  edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product: photon_token_" << endl;
1155  //validPhotons=false;
1156  }
1157  // if(validPhotons) photonCollection = *(photonHandle.product());
1158 
1159  // Get the PF refined cluster collection
1160  Handle<reco::PFCandidateCollection> pfCandidateHandle;
1161  e.getByToken(pfCandidates_, pfCandidateHandle);
1162  if (!pfCandidateHandle.isValid()) {
1163  edm::LogError("PhotonValidator") << "Error! Can't get the product pfCandidates " << std::endl;
1164  }
1165 
1166  edm::Handle<edm::ValueMap<std::vector<reco::PFCandidateRef> > > phoToParticleBasedIsoMapHandle;
1167  edm::ValueMap<std::vector<reco::PFCandidateRef> > phoToParticleBasedIsoMap;
1168  if (fName_ == "zmumugammaGedValidation") {
1169  e.getByToken(photonIsoValmap_token_, phoToParticleBasedIsoMapHandle);
1170  // e.getByLabel("particleBasedIsolation",valueMapPhoPFCandIso_,phoToParticleBasedIsoMapHandle);
1171  if (!phoToParticleBasedIsoMapHandle.isValid()) {
1172  edm::LogInfo("PhotonValidator") << "Error! Can't get the product: valueMap photons to particle based iso "
1173  << std::endl;
1174  }
1175  phoToParticleBasedIsoMap = *(phoToParticleBasedIsoMapHandle.product());
1176  }
1177 
1178  // Get the reconstructed muons
1179  bool validMuons = true;
1180  Handle<reco::MuonCollection> muonHandle;
1182  e.getByToken(muon_token_, muonHandle);
1183  if (!muonHandle.isValid()) {
1184  edm::LogInfo("ZToMuMuGammaAnalyzer") << "Error! Can't get the product: muon_token_" << endl;
1185  validMuons = false;
1186  }
1187  if (validMuons)
1188  muonCollection = *(muonHandle.product());
1189 
1190  // Get the beam spot
1191  edm::Handle<reco::BeamSpot> bsHandle;
1192  e.getByToken(beamSpot_token_, bsHandle);
1193  if (!bsHandle.isValid()) {
1194  edm::LogError("TrackerOnlyConversionProducer") << "Error! Can't get the product primary Vertex Collection "
1195  << "\n";
1196  return;
1197  }
1198  const reco::BeamSpot& thebs = *bsHandle.product();
1199 
1200  //Prepare list of photon-related HLT filter names
1201  vector<int> Keys;
1202  for (uint filterIndex = 0; filterIndex < triggerEvent.sizeFilters();
1203  ++filterIndex) { //loop over all trigger filters in event (i.e. filters passed)
1204  string label = triggerEvent.filterTag(filterIndex).label();
1205  if (label.find("Photon") != string::npos) { //get photon-related filters
1206  for (uint filterKeyIndex = 0; filterKeyIndex < triggerEvent.filterKeys(filterIndex).size();
1207  ++filterKeyIndex) { //loop over keys to objects passing this filter
1208  Keys.push_back(
1209  triggerEvent.filterKeys(filterIndex)[filterKeyIndex]); //add keys to a vector for later reference
1210  }
1211  }
1212  }
1213 
1214  // sort Keys vector in ascending order
1215  // and erases duplicate entries from the vector
1216  sort(Keys.begin(), Keys.end());
1217  for (uint i = 0; i < Keys.size();) {
1218  if (i != (Keys.size() - 1)) {
1219  if (Keys[i] == Keys[i + 1]) {
1220  Keys.erase(Keys.begin() + i + 1);
1221  } else {
1222  ++i;
1223  }
1224  } else {
1225  ++i;
1226  }
1227  }
1228 
1230  e.getByToken(offline_pvToken_, vtxH);
1231  h_nRecoVtx_->Fill(float(vtxH->size()));
1232 
1233  //photon counters
1234  int nPho = 0;
1235  int nPhoBarrel = 0;
1236  int nPhoEndcap = 0;
1237 
1239  if (muonCollection.size() < 2)
1240  return;
1241 
1242  for (reco::MuonCollection::const_iterator iMu = muonCollection.begin(); iMu != muonCollection.end(); iMu++) {
1243  if (!basicMuonSelection(*iMu))
1244  continue;
1245 
1246  for (reco::MuonCollection::const_iterator iMu2 = iMu + 1; iMu2 != muonCollection.end(); iMu2++) {
1247  if (!basicMuonSelection(*iMu2))
1248  continue;
1249  if (iMu->charge() * iMu2->charge() > 0)
1250  continue;
1251 
1252  if (!muonSelection(*iMu, thebs) && !muonSelection(*iMu2, thebs))
1253  continue;
1254 
1255  float mumuMass = mumuInvMass(*iMu, *iMu2);
1256  if (mumuMass < minMumuInvMass_ || mumuMass > maxMumuInvMass_)
1257  continue;
1258 
1259  h1_mumuInvMass_[0]->Fill(mumuMass);
1260 
1261  if (photonHandle->empty())
1262  continue;
1263 
1264  reco::Muon nearMuon;
1265  reco::Muon farMuon;
1266  for (unsigned int iPho = 0; iPho < photonHandle->size(); iPho++) {
1267  reco::PhotonRef aPho(reco::PhotonRef(photonHandle, iPho));
1268  //
1269  double dr1 = deltaR2((*iMu).eta(), aPho->eta(), (*iMu).phi(), aPho->phi());
1270  double dr2 = deltaR2((*iMu2).eta(), aPho->eta(), (*iMu2).phi(), aPho->phi());
1271  double drNear;
1272  if (dr1 < dr2) {
1273  nearMuon = *iMu;
1274  farMuon = *iMu2;
1275  drNear = dr1;
1276  } else {
1277  nearMuon = *iMu2;
1278  farMuon = *iMu;
1279  drNear = dr2;
1280  }
1281  //
1282  if (nearMuon.isolationR03().hadEt > nearMuonHcalIso_)
1283  continue;
1284  if (farMuon.isolationR03().sumPt > farMuonTrackIso_)
1285  continue;
1286  if (farMuon.isolationR03().emEt > farMuonEcalIso_)
1287  continue;
1288  if (farMuon.pt() < farMuonMinPt_)
1289  continue;
1290  if (drNear > nearMuonDr2_)
1291  continue;
1292  //
1293  if (!photonSelection(aPho))
1294  continue;
1295  float mumuGammaMass = mumuGammaInvMass(*iMu, *iMu2, aPho);
1296  if (mumuGammaMass < minMumuGammaInvMass_ || mumuGammaMass > maxMumuGammaInvMass_)
1297  continue;
1298  //
1299  //counter: number of photons
1300  int iDet = 0;
1301  if (aPho->isEB() || aPho->isEE()) {
1302  nPho++;
1303  }
1304  if (aPho->isEB()) {
1305  iDet = 1;
1306  nPhoBarrel++;
1307  }
1308  if (aPho->isEE()) {
1309  iDet = 2;
1310  nPhoEndcap++;
1311  }
1312 
1313  //PHOTON RELATED HISTOGRAMS
1314  h1_mumuGammaInvMass_[0]->Fill(mumuGammaMass);
1315  h1_mumuGammaInvMass_[iDet]->Fill(mumuGammaMass);
1316  //ENERGY
1317  h_phoE_[0]->Fill(aPho->energy());
1318  h_phoSigmaEoverE_[0]->Fill(aPho->getCorrectedEnergyError(aPho->getCandidateP4type()) / aPho->energy());
1319  h_phoEt_[0]->Fill(aPho->et());
1320  h_phoE_[iDet]->Fill(aPho->energy());
1321  h_phoSigmaEoverE_[iDet]->Fill(aPho->getCorrectedEnergyError(aPho->getCandidateP4type()) / aPho->energy());
1322  p_phoSigmaEoverEVsNVtx_[iDet]->Fill(float(vtxH->size()),
1323  aPho->getCorrectedEnergyError(aPho->getCandidateP4type()) / aPho->energy());
1324  h_phoEt_[iDet]->Fill(aPho->et());
1325  //GEOMETRICAL
1326  h_phoEta_[0]->Fill(aPho->eta());
1327  h_phoPhi_[0]->Fill(aPho->phi());
1328  h_scEta_[0]->Fill(aPho->superCluster()->eta());
1329  h_scPhi_[0]->Fill(aPho->superCluster()->phi());
1330  h_phoEta_[iDet]->Fill(aPho->eta());
1331  h_phoPhi_[iDet]->Fill(aPho->phi());
1332  h_scEta_[iDet]->Fill(aPho->superCluster()->eta());
1333  h_scPhi_[iDet]->Fill(aPho->superCluster()->phi());
1334  //SHOWER SHAPE
1335  h_r9_[0]->Fill(aPho->r9());
1336  h_e1x5_[0]->Fill(aPho->e1x5());
1337  h_e2x5_[0]->Fill(aPho->e2x5());
1338  h_r1x5_[0]->Fill(aPho->r1x5());
1339  h_r2x5_[0]->Fill(aPho->r2x5());
1340  h_phoSigmaIetaIeta_[0]->Fill(aPho->sigmaIetaIeta());
1341  //
1342  h_r9_[iDet]->Fill(aPho->r9());
1343  h_e1x5_[iDet]->Fill(aPho->e1x5());
1344  h_e2x5_[iDet]->Fill(aPho->e2x5());
1345  h_r1x5_[iDet]->Fill(aPho->r1x5());
1346  h_r2x5_[iDet]->Fill(aPho->r2x5());
1347  h_phoSigmaIetaIeta_[iDet]->Fill(aPho->sigmaIetaIeta());
1348  //TRACK ISOLATION
1349  h_nTrackIsolSolid_[0]->Fill(aPho->nTrkSolidConeDR04());
1350  h_nTrackIsolHollow_[0]->Fill(aPho->nTrkHollowConeDR04());
1351  h_trackPtSumSolid_[0]->Fill(aPho->trkSumPtSolidConeDR04());
1352  h_trackPtSumHollow_[0]->Fill(aPho->trkSumPtSolidConeDR04());
1353  h_nTrackIsolSolid_[iDet]->Fill(aPho->nTrkSolidConeDR04());
1354  h_nTrackIsolHollow_[iDet]->Fill(aPho->nTrkHollowConeDR04());
1355  h_trackPtSumSolid_[iDet]->Fill(aPho->trkSumPtSolidConeDR04());
1356  h_trackPtSumHollow_[iDet]->Fill(aPho->trkSumPtSolidConeDR04());
1357  //CALORIMETER ISOLATION
1358  h_ecalSum_[0]->Fill(aPho->ecalRecHitSumEtConeDR04());
1359  h_hcalSum_[0]->Fill(aPho->hcalTowerSumEtConeDR04());
1360  h_hOverE_[0]->Fill(aPho->hadTowOverEm());
1361  h_h1OverE_[0]->Fill(aPho->hadTowOverEm(1));
1362  h_h2OverE_[0]->Fill(aPho->hadTowOverEm(2));
1363  h_newhOverE_[0]->Fill(aPho->hadTowOverEm());
1364  h_ecalSum_[iDet]->Fill(aPho->ecalRecHitSumEtConeDR04());
1365  h_hcalSum_[iDet]->Fill(aPho->hcalTowerSumEtConeDR04());
1366  h_hOverE_[iDet]->Fill(aPho->hadTowOverEm());
1367  h_h1OverE_[iDet]->Fill(aPho->hadTowOverEm(1));
1368  h_h2OverE_[iDet]->Fill(aPho->hadTowOverEm(2));
1369  h_newhOverE_[iDet]->Fill(aPho->hadTowOverEm());
1370  // Isolation from particle flow
1371  h_chHadIso_[0]->Fill(aPho->chargedHadronIso());
1372  h_nHadIso_[0]->Fill(aPho->neutralHadronIso());
1373  h_phoIso_[0]->Fill(aPho->photonIso());
1374  h_nCluOutsideMustache_[0]->Fill(float(aPho->nClusterOutsideMustache()));
1375  h_etOutsideMustache_[0]->Fill(aPho->etOutsideMustache());
1376  h_pfMva_[0]->Fill(aPho->pfMVA());
1377  h_chHadIso_[iDet]->Fill(aPho->chargedHadronIso());
1378  h_nHadIso_[iDet]->Fill(aPho->neutralHadronIso());
1379  h_phoIso_[iDet]->Fill(aPho->photonIso());
1380  h_nCluOutsideMustache_[iDet]->Fill(float(aPho->nClusterOutsideMustache()));
1381  h_etOutsideMustache_[iDet]->Fill(aPho->etOutsideMustache());
1382  h_pfMva_[iDet]->Fill(aPho->pfMVA());
1383 
1385  if (fName_ == "zmumugammaGedValidation") {
1386  float SumPtIsoValCh = 0.;
1387  float SumPtIsoValNh = 0.;
1388  float SumPtIsoValPh = 0.;
1389 
1390  float SumPtIsoValCleanCh = 0.;
1391  float SumPtIsoValCleanNh = 0.;
1392  float SumPtIsoValCleanPh = 0.;
1393 
1394  for (unsigned int lCand = 0; lCand < pfCandidateHandle->size(); lCand++) {
1395  reco::PFCandidateRef pfCandRef(reco::PFCandidateRef(pfCandidateHandle, lCand));
1396  float dR = deltaR2(aPho->eta(), aPho->phi(), pfCandRef->eta(), pfCandRef->phi());
1397  if (dR < 0.4 * 0.4) {
1399  reco::PFCandidate::ParticleType type = pfCandRef->particleId();
1400  if (type == reco::PFCandidate::e)
1401  continue;
1402  if (type == reco::PFCandidate::gamma && pfCandRef->mva_nothing_gamma() > 0.)
1403  continue;
1404  dR = sqrt(dR);
1405 
1406  if (type == reco::PFCandidate::h) {
1407  SumPtIsoValCh += pfCandRef->pt();
1408  h_dRPhoPFcand_ChHad_unCleaned_[0]->Fill(dR);
1409  h_dRPhoPFcand_ChHad_unCleaned_[iDet]->Fill(dR);
1410  }
1411  if (type == reco::PFCandidate::h0) {
1412  SumPtIsoValNh += pfCandRef->pt();
1413  h_dRPhoPFcand_NeuHad_unCleaned_[0]->Fill(dR);
1414  h_dRPhoPFcand_NeuHad_unCleaned_[iDet]->Fill(dR);
1415  }
1416  if (type == reco::PFCandidate::gamma) {
1417  SumPtIsoValPh += pfCandRef->pt();
1418  h_dRPhoPFcand_Pho_unCleaned_[0]->Fill(dR);
1419  h_dRPhoPFcand_Pho_unCleaned_[iDet]->Fill(dR);
1420  }
1422  bool skip = false;
1423  for (std::vector<reco::PFCandidateRef>::const_iterator i = phoToParticleBasedIsoMap[aPho].begin();
1424  i != phoToParticleBasedIsoMap[aPho].end();
1425  ++i) {
1426  // std::cout << " PhotonValidator PfCand pt " << pfCandRef->pt() << " id " <<pfCandRef->particleId() << " and in the map " << (*i)->pt() << " type " << (*i)->particleId() << std::endl;
1427  if ((*i) == pfCandRef) {
1428  skip = true;
1429  }
1430  } // loop over the PFCandidates flagged as overlapping with the photon
1431 
1432  if (skip)
1433  continue;
1434  if (type == reco::PFCandidate::h) {
1435  SumPtIsoValCleanCh += pfCandRef->pt();
1436  h_dRPhoPFcand_ChHad_Cleaned_[0]->Fill(dR);
1437  h_dRPhoPFcand_ChHad_Cleaned_[iDet]->Fill(dR);
1438  }
1439  if (type == reco::PFCandidate::h0) {
1440  SumPtIsoValCleanNh += pfCandRef->pt();
1441  h_dRPhoPFcand_NeuHad_Cleaned_[0]->Fill(dR);
1442  h_dRPhoPFcand_NeuHad_Cleaned_[iDet]->Fill(dR);
1443  }
1444  if (type == reco::PFCandidate::gamma) {
1445  SumPtIsoValCleanPh += pfCandRef->pt();
1446  h_dRPhoPFcand_Pho_Cleaned_[0]->Fill(dR);
1447  h_dRPhoPFcand_Pho_Cleaned_[iDet]->Fill(dR);
1448  }
1449  } // dr=0.4
1450  } // loop over all PF Candidates
1451 
1452  h_SumPtOverPhoPt_ChHad_Cleaned_[0]->Fill(SumPtIsoValCleanCh / aPho->pt());
1453  h_SumPtOverPhoPt_NeuHad_Cleaned_[0]->Fill(SumPtIsoValCleanNh / aPho->pt());
1454  h_SumPtOverPhoPt_Pho_Cleaned_[0]->Fill(SumPtIsoValCleanPh / aPho->pt());
1455  h_SumPtOverPhoPt_ChHad_unCleaned_[0]->Fill(SumPtIsoValCh / aPho->pt());
1456  h_SumPtOverPhoPt_NeuHad_unCleaned_[0]->Fill(SumPtIsoValNh / aPho->pt());
1457  h_SumPtOverPhoPt_Pho_unCleaned_[0]->Fill(SumPtIsoValPh / aPho->pt());
1458  //
1459  h_SumPtOverPhoPt_ChHad_Cleaned_[iDet]->Fill(SumPtIsoValCleanCh / aPho->pt());
1460  h_SumPtOverPhoPt_NeuHad_Cleaned_[iDet]->Fill(SumPtIsoValCleanNh / aPho->pt());
1461  h_SumPtOverPhoPt_Pho_Cleaned_[iDet]->Fill(SumPtIsoValCleanPh / aPho->pt());
1462  h_SumPtOverPhoPt_ChHad_unCleaned_[iDet]->Fill(SumPtIsoValCh / aPho->pt());
1463  h_SumPtOverPhoPt_NeuHad_unCleaned_[iDet]->Fill(SumPtIsoValNh / aPho->pt());
1464  h_SumPtOverPhoPt_Pho_unCleaned_[iDet]->Fill(SumPtIsoValPh / aPho->pt());
1465  } // only for zmumugammaGedValidation
1466 
1467  if (makeProfiles_) {
1468  p_r9VsEt_[iDet]->Fill(aPho->et(), aPho->r9());
1469  p_r9VsEta_[0]->Fill(aPho->eta(), aPho->r9());
1470  p_e1x5VsEt_[iDet]->Fill(aPho->et(), aPho->e1x5());
1471  p_e1x5VsEta_[0]->Fill(aPho->eta(), aPho->e1x5());
1472  p_e2x5VsEt_[iDet]->Fill(aPho->et(), aPho->e2x5());
1473  p_e2x5VsEta_[0]->Fill(aPho->eta(), aPho->e2x5());
1474  p_r1x5VsEt_[iDet]->Fill(aPho->et(), aPho->r1x5());
1475  p_r1x5VsEta_[0]->Fill(aPho->eta(), aPho->r1x5());
1476  p_r2x5VsEt_[iDet]->Fill(aPho->et(), aPho->r2x5());
1477  p_r2x5VsEta_[0]->Fill(aPho->eta(), aPho->r2x5());
1478  //
1479  p_sigmaIetaIetaVsEta_[0]->Fill(aPho->eta(), aPho->sigmaIetaIeta());
1480  p_nTrackIsolSolidVsEt_[iDet]->Fill(aPho->et(), aPho->nTrkSolidConeDR04());
1481  p_nTrackIsolSolidVsEta_[0]->Fill(aPho->eta(), aPho->nTrkSolidConeDR04());
1482  p_nTrackIsolHollowVsEt_[iDet]->Fill(aPho->et(), aPho->nTrkHollowConeDR04());
1483  p_nTrackIsolHollowVsEta_[0]->Fill(aPho->eta(), aPho->nTrkHollowConeDR04());
1484  p_trackPtSumSolidVsEt_[iDet]->Fill(aPho->et(), aPho->trkSumPtSolidConeDR04());
1485  p_trackPtSumSolidVsEta_[0]->Fill(aPho->eta(), aPho->trkSumPtSolidConeDR04());
1486  p_trackPtSumHollowVsEt_[iDet]->Fill(aPho->et(), aPho->trkSumPtHollowConeDR04());
1487  p_trackPtSumHollowVsEta_[0]->Fill(aPho->eta(), aPho->trkSumPtHollowConeDR04());
1488  //
1489  p_ecalSumVsEt_[iDet]->Fill(aPho->et(), aPho->ecalRecHitSumEtConeDR04());
1490  p_ecalSumVsEta_[0]->Fill(aPho->eta(), aPho->ecalRecHitSumEtConeDR04());
1491  p_hcalSumVsEt_[iDet]->Fill(aPho->et(), aPho->hcalTowerSumEtConeDR04());
1492  p_hcalSumVsEta_[0]->Fill(aPho->eta(), aPho->hcalTowerSumEtConeDR04());
1493  p_hOverEVsEt_[iDet]->Fill(aPho->et(), aPho->hadTowOverEm());
1494  p_hOverEVsEta_[0]->Fill(aPho->eta(), aPho->hadTowOverEm());
1495  }
1496 
1498  if (use2DHistos_) {
1499  //SHOWER SHAPE
1500  h2_r9VsEt_[iDet]->Fill(aPho->et(), aPho->r9());
1501  h2_r9VsEta_[0]->Fill(aPho->eta(), aPho->r9());
1502  h2_e1x5VsEt_[iDet]->Fill(aPho->et(), aPho->e1x5());
1503  h2_e1x5VsEta_[0]->Fill(aPho->eta(), aPho->e1x5());
1504  h2_e2x5VsEta_[0]->Fill(aPho->eta(), aPho->e2x5());
1505  h2_e2x5VsEt_[iDet]->Fill(aPho->et(), aPho->e2x5());
1506  h2_r1x5VsEta_[0]->Fill(aPho->eta(), aPho->r1x5());
1507  h2_r1x5VsEt_[iDet]->Fill(aPho->et(), aPho->r1x5());
1508  h2_r2x5VsEt_[iDet]->Fill(aPho->et(), aPho->r2x5());
1509  h2_r2x5VsEta_[0]->Fill(aPho->eta(), aPho->r2x5());
1510  h2_sigmaIetaIetaVsEta_[0]->Fill(aPho->eta(), aPho->sigmaIetaIeta());
1511  //TRACK ISOLATION
1512  h2_nTrackIsolSolidVsEt_[0]->Fill(aPho->et(), aPho->nTrkSolidConeDR04());
1513  h2_nTrackIsolSolidVsEta_[0]->Fill(aPho->eta(), aPho->nTrkSolidConeDR04());
1514  h2_nTrackIsolHollowVsEt_[0]->Fill(aPho->et(), aPho->nTrkHollowConeDR04());
1515  h2_nTrackIsolHollowVsEta_[0]->Fill(aPho->eta(), aPho->nTrkHollowConeDR04());
1516  h2_trackPtSumSolidVsEt_[0]->Fill(aPho->et(), aPho->trkSumPtSolidConeDR04());
1517  h2_trackPtSumSolidVsEta_[0]->Fill(aPho->eta(), aPho->trkSumPtSolidConeDR04());
1518  h2_trackPtSumHollowVsEt_[0]->Fill(aPho->et(), aPho->trkSumPtHollowConeDR04());
1519  h2_trackPtSumHollowVsEta_[0]->Fill(aPho->eta(), aPho->trkSumPtHollowConeDR04());
1520  //CALORIMETER ISOLATION
1521  h2_ecalSumVsEt_[iDet]->Fill(aPho->et(), aPho->ecalRecHitSumEtConeDR04());
1522  h2_ecalSumVsEta_[0]->Fill(aPho->eta(), aPho->ecalRecHitSumEtConeDR04());
1523  h2_hcalSumVsEt_[iDet]->Fill(aPho->et(), aPho->hcalTowerSumEtConeDR04());
1524  h2_hcalSumVsEta_[0]->Fill(aPho->eta(), aPho->hcalTowerSumEtConeDR04());
1525  }
1526  } //end photon loop
1527 
1528  h_nPho_[0]->Fill(float(nPho));
1529  h_nPho_[1]->Fill(float(nPhoBarrel));
1530  h_nPho_[2]->Fill(float(nPhoEndcap));
1531  } //end inner muon loop
1532  } //end outer muon loop
1533 } //End of Analyze method
1534 
1536  bool result = true;
1537  if (!mu.innerTrack().isNonnull())
1538  result = false;
1539  if (!mu.globalTrack().isNonnull())
1540  result = false;
1541  if (!mu.isGlobalMuon())
1542  result = false;
1543  if (mu.pt() < muonMinPt_)
1544  result = false;
1545  if (fabs(mu.eta()) > 2.4)
1546  result = false;
1547 
1548  int pixHits = 0;
1549  int tkHits = 0;
1550  if (mu.innerTrack().isNonnull()) {
1551  pixHits = mu.innerTrack()->hitPattern().numberOfValidPixelHits();
1552  tkHits = mu.innerTrack()->hitPattern().numberOfValidStripHits();
1553  }
1554 
1555  if (pixHits + tkHits < minPixStripHits_)
1556  result = false;
1557 
1558  return result;
1559 }
1560 
1562  bool result = true;
1563  if (mu.globalTrack()->normalizedChi2() > muonMaxChi2_)
1564  result = false;
1565  if (fabs(mu.globalTrack()->dxy(beamSpot)) > muonMaxDxy_)
1566  result = false;
1567  if (mu.numberOfMatches() < muonMatches_)
1568  result = false;
1569 
1570  if (mu.track()->hitPattern().numberOfValidPixelHits() < validPixHits_)
1571  result = false;
1572  if (mu.globalTrack()->hitPattern().numberOfValidMuonHits() < validMuonHits_)
1573  result = false;
1574  if (!mu.isTrackerMuon())
1575  result = false;
1576  // track isolation
1577  if (mu.isolationR03().sumPt > muonTrackIso_)
1578  result = false;
1579  if (fabs(mu.eta()) > muonTightEta_)
1580  result = false;
1581 
1582  return result;
1583 }
1584 
1586  bool result = true;
1587  if (pho->pt() < photonMinEt_)
1588  result = false;
1589  if (fabs(pho->eta()) > photonMaxEta_)
1590  result = false;
1591  if (pho->isEBEEGap())
1592  result = false;
1593 
1594  double EtCorrHcalIso = pho->hcalTowerSumEtConeDR03() - 0.005 * pho->pt();
1595  double EtCorrTrkIso = pho->trkSumPtHollowConeDR03() - 0.002 * pho->pt();
1596 
1597  if (pho->r9() <= 0.9) {
1598  if (pho->isEB() && (pho->hadTowOverEm() > 0.075 || pho->sigmaIetaIeta() > 0.014))
1599  result = false;
1600  if (pho->isEE() && (pho->hadTowOverEm() > 0.075 || pho->sigmaIetaIeta() > 0.034))
1601  result = false;
1603  if (EtCorrHcalIso > 4.0)
1604  result = false;
1605  if (EtCorrTrkIso > 4.0)
1606  result = false;
1607  if (pho->chargedHadronIso() > 4)
1608  result = false;
1609  } else {
1610  if (pho->isEB() && (pho->hadTowOverEm() > 0.082 || pho->sigmaIetaIeta() > 0.014))
1611  result = false;
1612  if (pho->isEE() && (pho->hadTowOverEm() > 0.075 || pho->sigmaIetaIeta() > 0.034))
1613  result = false;
1615  if (EtCorrHcalIso > 50.0)
1616  result = false;
1617  if (EtCorrTrkIso > 50.0)
1618  result = false;
1619  if (pho->chargedHadronIso() > 4)
1620  result = false;
1621  }
1622  return result;
1623 }
1624 
1626  math::XYZTLorentzVector p12 = mu1.p4() + mu2.p4();
1627  float mumuMass2 = p12.Dot(p12);
1628  float invMass = sqrt(mumuMass2);
1629  return invMass;
1630 }
1631 
1633  math::XYZTLorentzVector p12 = mu1.p4() + mu2.p4() + pho->p4();
1634  float Mass2 = p12.Dot(p12);
1635  float invMass = sqrt(Mass2);
1636  return invMass;
1637 }
1638 
1641 
muonSelection
MU SELECTION #########################.
MonitorElement * h_dRPhoPFcand_Pho_unCleaned_[3]
MonitorElement * p_hOverEVsEta_[3]
float hadEt
hcal sum-Et
Definition: MuonIsolation.h:8
MonitorElement * h_pfMva_[3]
const MuonIsolation & isolationR03() const
Definition: Muon.h:166
MonitorElement * h_SumPtOverPhoPt_ChHad_unCleaned_[3]
MonitorElement * h_dRPhoPFcand_Pho_Cleaned_[3]
MonitorElement * h2_nTrackIsolSolidVsEt_[3]
ParticleType
particle types
Definition: PFCandidate.h:44
MonitorElement * p_sigmaIetaIetaVsEta_[3]
MonitorElement * p_r1x5VsEta_[3]
float sumPt
sum-pt of tracks
Definition: MuonIsolation.h:6
bool muonSelection(const reco::Muon &m, const reco::BeamSpot &bs)
MonitorElement * h_phoSigmaIetaIeta_[3]
double pt() const final
transverse momentum
The single EDProduct to be saved for each event (AOD case)
Definition: TriggerEvent.h:26
MonitorElement * h2_r2x5VsEta_[3]
MonitorElement * h_newhOverE_[3]
edm::EDGetTokenT< reco::PFCandidateCollection > pfCandidates_
MonitorElement * h2_trackPtSumHollowVsEt_[3]
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
edm::EDGetTokenT< edm::SortedCollection< EcalRecHit, edm::StrictWeakOrdering< EcalRecHit > > > barrelRecHit_token_
MonitorElement * h_SumPtOverPhoPt_NeuHad_unCleaned_[3]
edm::EDGetTokenT< std::vector< reco::Photon > > photon_token_
MonitorElement * p_nTrackIsolHollowVsEta_[3]
MonitorElement * h2_r9VsEt_[3]
MonitorElement * h_nCluOutsideMustache_[3]
MonitorElement * h2_ecalSumVsEt_[3]
MonitorElement * h_nTrackIsolSolid_[3]
MonitorElement * h_SumPtOverPhoPt_Pho_Cleaned_[3]
MonitorElement * h_trackPtSumHollow_[3]
MonitorElement * h2_nTrackIsolSolidVsEta_[3]
MonitorElement * p_ecalSumVsEt_[3]
MonitorElement * h_phoEta_[3]
MonitorElement * h_nPho_[3]
MonitorElement * h_chHadIso_[3]
T const * product() const
Definition: Handle.h:70
MonitorElement * h_phoSigmaEoverE_[3]
MonitorElement * h_dRPhoPFcand_NeuHad_Cleaned_[3]
MonitorElement * h_r1x5_[3]
MonitorElement * p_phoSigmaEoverEVsNVtx_[3]
MonitorElement * h2_sigmaIetaIetaVsEta_[3]
MonitorElement * h_dRPhoPFcand_NeuHad_unCleaned_[3]
MonitorElement * h2_hcalSumVsEt_[3]
MonitorElement * h_hcalSum_[3]
MonitorElement * h_phoPhi_[3]
MonitorElement * p_newhOverEVsEt_[3]
MonitorElement * p_trackPtSumHollowVsEt_[3]
Log< level::Error, false > LogError
MonitorElement * h2_ecalSumVsEta_[3]
edm::EDGetTokenT< trigger::TriggerEvent > triggerEvent_token_
MonitorElement * p_newhOverEVsEta_[3]
const LorentzVector & p4() const final
four-momentum Lorentz vector
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
const_iterator end() const
Definition: ValueMap.h:224
MonitorElement * h_hOverE_[3]
MonitorElement * h_trackPtSumSolid_[3]
MonitorElement * p_hcalSumVsEt_[3]
MonitorElement * p_e1x5VsEt_[3]
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
MonitorElement * h2_r2x5VsEt_[3]
char const * label
MonitorElement * h_h1OverE_[3]
MonitorElement * h_SumPtOverPhoPt_ChHad_Cleaned_[3]
MonitorElement * h2_e1x5VsEta_[3]
MonitorElement * h1_mumuGammaInvMass_[3]
MonitorElement * h2_trackPtSumSolidVsEt_[3]
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:408
MonitorElement * h_phoE_[3]
MonitorElement * p_r2x5VsEta_[3]
T sqrt(T t)
Definition: SSEVec.h:23
MonitorElement * h_nRecoVtx_
std::stringstream currentFolder_
float emEt
ecal sum-Et
Definition: MuonIsolation.h:7
edm::EDGetTokenT< edm::SortedCollection< EcalRecHit, edm::StrictWeakOrdering< EcalRecHit > > > endcapRecHit_token_
MonitorElement * p_e2x5VsEt_[3]
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
MonitorElement * p_hcalSumVsEta_[3]
float mumuInvMass(const reco::Muon &m1, const reco::Muon &m2)
float mumuGammaInvMass(const reco::Muon &mu1, const reco::Muon &mu2, const reco::PhotonRef &pho)
ZToMuMuGammaAnalyzer(const edm::ParameterSet &)
MonitorElement * h_phoEt_[3]
MonitorElement * p_ecalSumVsEta_[3]
MonitorElement * p_r9VsEta_[3]
MonitorElement * h_nHadIso_[3]
edm::EDGetTokenT< reco::VertexCollection > offline_pvToken_
MonitorElement * p_trackPtSumSolidVsEta_[3]
MonitorElement * h1_mumuInvMass_[3]
photon histos
Log< level::Info, false > LogInfo
MonitorElement * h2_trackPtSumSolidVsEta_[3]
MonitorElement * h2_hcalSumVsEta_[3]
MonitorElement * h_dRPhoPFcand_ChHad_unCleaned_[3]
bool photonSelection(const reco::PhotonRef &p)
MonitorElement * h_scPhi_[3]
MonitorElement * h2_e1x5VsEt_[3]
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_scEta_[3]
edm::EDGetTokenT< edm::ValueMap< std::vector< reco::PFCandidateRef > > > photonIsoValmap_token_
std::vector< size_type > Keys
std::vector< Photon > PhotonCollection
collectin of Photon objects
Definition: PhotonFwd.h:9
MonitorElement * h_nTrackIsolHollow_[3]
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:221
MonitorElement * p_r2x5VsEt_[3]
MonitorElement * h_SumPtOverPhoPt_Pho_unCleaned_[3]
MonitorElement * h_SumPtOverPhoPt_NeuHad_Cleaned_[3]
MonitorElement * h_etOutsideMustache_[3]
MonitorElement * h_e1x5_[3]
MonitorElement * h2_nTrackIsolHollowVsEt_[3]
MonitorElement * h2_nTrackIsolHollowVsEta_[3]
edm::EDGetTokenT< reco::BeamSpot > beamSpot_token_
MonitorElement * h2_e2x5VsEta_[3]
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * h2_trackPtSumHollowVsEta_[3]
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * h_r9_[3]
HLT enums.
MonitorElement * p_r1x5VsEt_[3]
MonitorElement * p_nTrackIsolHollowVsEt_[3]
MonitorElement * p_r9VsEt_[3]
bool basicMuonSelection(const reco::Muon &m)
MonitorElement * p_trackPtSumSolidVsEt_[3]
edm::EDGetTokenT< edm::ValueMap< bool > > PhotonIDTight_token_
MonitorElement * p_e2x5VsEta_[3]
MonitorElement * h_e2x5_[3]
MonitorElement * h2_r1x5VsEta_[3]
edm::EDGetTokenT< edm::ValueMap< bool > > PhotonIDLoose_token_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * p_trackPtSumHollowVsEta_[3]
MonitorElement * h_dRPhoPFcand_ChHad_Cleaned_[3]
MonitorElement * p_hOverEVsEt_[3]
MonitorElement * h2_r1x5VsEt_[3]
MonitorElement * p_nTrackIsolSolidVsEt_[3]
MonitorElement * p_e1x5VsEta_[3]
MonitorElement * p_nTrackIsolSolidVsEta_[3]
MonitorElement * h2_r9VsEta_[3]
Definition: Run.h:45
edm::EDGetTokenT< std::vector< reco::Muon > > muon_token_
MonitorElement * h_ecalSum_[3]
MonitorElement * h_phoIso_[3]
MonitorElement * h_h2OverE_[3]
MonitorElement * h_r2x5_[3]
MonitorElement * h2_e2x5VsEt_[3]