CMS 3D CMS Logo

PatPhotonSimpleAnalyzer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: PatPhotonSimpleAnalyzer
4 // Class: PatPhotonSimpleAnalyzer
5 //
14 //
15 // Original Author: M.B. Anderson
16 // based on simple photon analyzer by: J. Stilley, A. Askew
17 //
18 // Created: Wed Sep 23 12:00:01 CDT 2008
19 //
20 
26 
27 #include "TFile.h"
28 #include "TH1.h"
29 #include "TTree.h"
30 
31 #include <memory>
32 #include <string>
33 
35 public:
37  ~PatPhotonSimpleAnalyzer() override;
38 
39  void analyze(const edm::Event&, const edm::EventSetup&) override;
40  void beginJob() override;
41  void endJob() override;
42 
43 private:
44  std::string outputFile_; // output file
45  double minPhotonEt_; // minimum photon Et
46  double minPhotonAbsEta_; // min and
47  double maxPhotonAbsEta_; // max abs(eta)
48  double minPhotonR9_; // minimum R9 = E(3x3)/E(SuperCluster)
49  double maxPhotonHoverE_; // maximum HCAL / ECAL
50  bool createPhotonTTree_; // Create a TTree of photon variables
51 
52  // Will be used for creating TTree of photons.
53  // These names did not have to match those from a phtn->...
54  // but do match for clarity.
62  float isEBGap;
63  float isEEGap;
64  float isEBEEGap;
65  float r9;
66  float et;
67  float eta;
68  float phi;
70  float ecalIso;
71  float hcalIso;
72  float trackIso;
73  };
75 
76  // root file to store histograms
77  TFile* rootFile_;
78 
79  // data members for histograms to be filled
80 
81  // PhotonID Histograms
88  TH1F* h_ebgap_;
89  TH1F* h_eeGap_;
90  TH1F* h_ebeeGap_;
91  TH1F* h_r9_;
92 
93  // Photon Histograms
94  TH1F* h_photonEt_;
95  TH1F* h_photonEta_;
96  TH1F* h_photonPhi_;
97  TH1F* h_hadoverem_;
98 
99  // Photon's SuperCluster Histograms
104 
105  // Composite or Other Histograms
108  TH1F* h_nPho_;
109 
110  // TTree
112 };
113 
116 
117 using namespace std;
118 
120 // Constructor //
123  // Read Parameters from configuration file
124 
125  // output filename
126  outputFile_ = ps.getParameter<std::string>("outputFile");
127  // Read variables that must be passed to allow a
128  // supercluster to be placed in histograms as a photon.
129  minPhotonEt_ = ps.getParameter<double>("minPhotonEt");
130  minPhotonAbsEta_ = ps.getParameter<double>("minPhotonAbsEta");
131  maxPhotonAbsEta_ = ps.getParameter<double>("maxPhotonAbsEta");
132  minPhotonR9_ = ps.getParameter<double>("minPhotonR9");
133  maxPhotonHoverE_ = ps.getParameter<double>("maxPhotonHoverE");
134 
135  // Read variable to that decidedes whether
136  // a TTree of photons is created or not
137  createPhotonTTree_ = ps.getParameter<bool>("createPhotonTTree");
138 
139  // open output file to store histograms
140  rootFile_ = TFile::Open(outputFile_.c_str(), "RECREATE");
141 }
142 
144 // Destructor //
147  // do anything here that needs to be done at desctruction time
148  // (e.g. close files, deallocate resources etc.)
149 
150  delete rootFile_;
151 }
152 
154 // method called once each job just before starting event loop //
157  // go to *OUR* rootfile
158  rootFile_->cd();
159 
160  // Book Histograms
161  // PhotonID Histograms
162  h_isoEcalRecHit_ = new TH1F("photonEcalIso", "Ecal Rec Hit Isolation", 100, 0, 100);
163  h_isoHcalRecHit_ = new TH1F("photonHcalIso", "Hcal Rec Hit Isolation", 100, 0, 100);
164  h_trk_pt_solid_ = new TH1F("photonTrackSolidIso", "Sum of track pT in a cone of #DeltaR", 100, 0, 100);
165  h_trk_pt_hollow_ = new TH1F("photonTrackHollowIso", "Sum of track pT in a hollow cone", 100, 0, 100);
166  h_ntrk_solid_ = new TH1F("photonTrackCountSolid", "Number of tracks in a cone of #DeltaR", 100, 0, 100);
167  h_ntrk_hollow_ = new TH1F("photonTrackCountHollow", "Number of tracks in a hollow cone", 100, 0, 100);
168  h_ebgap_ = new TH1F("photonInEBgap", "Ecal Barrel gap flag", 2, -0.5, 1.5);
169  h_eeGap_ = new TH1F("photonInEEgap", "Ecal Endcap gap flag", 2, -0.5, 1.5);
170  h_ebeeGap_ = new TH1F("photonInEEgap", "Ecal Barrel/Endcap gap flag", 2, -0.5, 1.5);
171  h_r9_ = new TH1F("photonR9", "R9 = E(3x3) / E(SuperCluster)", 300, 0, 3);
172 
173  // Photon Histograms
174  h_photonEt_ = new TH1F("photonEt", "Photon E_{T}", 200, 0, 200);
175  h_photonEta_ = new TH1F("photonEta", "Photon #eta", 200, -4, 4);
176  h_photonPhi_ = new TH1F("photonPhi", "Photon #phi", 200, -1. * M_PI, M_PI);
177  h_hadoverem_ = new TH1F("photonHoverE", "Hadronic over EM", 200, 0, 1);
178 
179  // Photon's SuperCluster Histograms
180  h_photonScEt_ = new TH1F("photonScEt", "Photon SuperCluster E_{T}", 200, 0, 200);
181  h_photonScEta_ = new TH1F("photonScEta", "Photon #eta", 200, -4, 4);
182  h_photonScPhi_ = new TH1F("photonScPhi", "Photon #phi", 200, -1. * M_PI, M_PI);
183  h_photonScEtaWidth_ = new TH1F("photonScEtaWidth", "#eta-width", 100, 0, .1);
184 
185  // Composite or Other Histograms
186  h_photonInAnyGap_ = new TH1F("photonInAnyGap", "Photon in any gap flag", 2, -0.5, 1.5);
187  h_nPassingPho_ = new TH1F("photonPassingCount", "Total number photons (0=NotPassing, 1=Passing)", 2, -0.5, 1.5);
188  h_nPho_ = new TH1F("photonCount", "Number of photons passing cuts in event", 10, 0, 10);
189 
190  // Create a TTree of photons if set to 'True' in config file
191  if (createPhotonTTree_) {
192  tree_PhotonAll_ = new TTree("TreePhotonAll", "Reconstructed Photon");
193  tree_PhotonAll_->Branch(
194  "recPhoton",
195  &recPhoton.isolationEcalRecHit,
196  "isolationEcalRecHit/"
197  "F:isolationHcalRecHit:isolationSolidTrkCone:isolationHollowTrkCone:nTrkSolidCone:nTrkHollowCone:isEBGap:"
198  "isEEGap:isEBEEGap:r9:et:eta:phi:hadronicOverEm:ecalIso:hcalIso:trackIso");
199  }
200 }
201 
203 // method called to for each event //
206  using namespace std;
207  using namespace edm;
208 
209  // Grab pat::Photon
210  Handle<View<pat::Photon> > photonHandle;
211  evt.getByLabel("selectedLayer1Photons", photonHandle);
212  View<pat::Photon> photons = *photonHandle;
213 
214  int photonCounter = 0;
215 
216  for (int i = 0; i < int(photons.size()); i++) {
217  pat::Photon currentPhoton = photons.at(i);
218 
219  float photonEt = currentPhoton.et();
220  float superClusterEt =
221  (currentPhoton.superCluster()->energy()) / (cosh(currentPhoton.superCluster()->position().eta()));
222 
223  // Only store photon candidates (SuperClusters) that pass some simple cuts
224  bool passCuts = (photonEt > minPhotonEt_) && (fabs(currentPhoton.eta()) > minPhotonAbsEta_) &&
225  (fabs(currentPhoton.eta()) < maxPhotonAbsEta_) && (currentPhoton.r9() > minPhotonR9_) &&
226  (currentPhoton.hadronicOverEm() < maxPhotonHoverE_);
227 
228  if (passCuts) {
230  // fill histograms //
232  // PhotonID Variables
233  h_isoEcalRecHit_->Fill(currentPhoton.ecalRecHitSumEtConeDR04());
234  h_isoHcalRecHit_->Fill(currentPhoton.hcalTowerSumEtConeDR04());
235  h_trk_pt_solid_->Fill(currentPhoton.trkSumPtSolidConeDR04());
236  h_trk_pt_hollow_->Fill(currentPhoton.trkSumPtHollowConeDR04());
237  h_ntrk_solid_->Fill(currentPhoton.nTrkSolidConeDR04());
238  h_ntrk_hollow_->Fill(currentPhoton.nTrkHollowConeDR04());
239  h_ebgap_->Fill(currentPhoton.isEBGap());
240  h_eeGap_->Fill(currentPhoton.isEEGap());
241  h_ebeeGap_->Fill(currentPhoton.isEBEEGap());
242  h_r9_->Fill(currentPhoton.r9());
243 
244  // Photon Variables
245  h_photonEt_->Fill(photonEt);
246  h_photonEta_->Fill(currentPhoton.eta());
247  h_photonPhi_->Fill(currentPhoton.phi());
248  h_hadoverem_->Fill(currentPhoton.hadronicOverEm());
249 
250  // Photon's SuperCluster Variables
251  // eta is with respect to detector (not physics) vertex,
252  // thus Et and eta are different from photon.
253  h_photonScEt_->Fill(superClusterEt);
254  h_photonScEta_->Fill(currentPhoton.superCluster()->position().eta());
255  h_photonScPhi_->Fill(currentPhoton.superCluster()->position().phi());
256  h_photonScEtaWidth_->Fill(currentPhoton.superCluster()->etaWidth());
257 
258  // It passed photon cuts, mark it
259  h_nPassingPho_->Fill(1.0);
260 
262  // fill TTree (optional) //
264  if (createPhotonTTree_) {
265  recPhoton.isolationEcalRecHit = currentPhoton.ecalRecHitSumEtConeDR04();
266  recPhoton.isolationHcalRecHit = currentPhoton.hcalTowerSumEtConeDR04();
267  recPhoton.isolationSolidTrkCone = currentPhoton.trkSumPtSolidConeDR04();
268  recPhoton.isolationHollowTrkCone = currentPhoton.trkSumPtHollowConeDR04();
269  recPhoton.nTrkSolidCone = currentPhoton.nTrkSolidConeDR04();
270  recPhoton.nTrkHollowCone = currentPhoton.nTrkHollowConeDR04();
271  recPhoton.isEBGap = currentPhoton.isEBGap();
272  recPhoton.isEEGap = currentPhoton.isEEGap();
273  recPhoton.isEBEEGap = currentPhoton.isEBEEGap();
274  recPhoton.r9 = currentPhoton.r9();
275  recPhoton.et = currentPhoton.et();
276  recPhoton.eta = currentPhoton.eta();
277  recPhoton.phi = currentPhoton.phi();
278  recPhoton.hadronicOverEm = currentPhoton.hadronicOverEm();
279  recPhoton.ecalIso = currentPhoton.ecalIso();
280  recPhoton.hcalIso = currentPhoton.hcalIso();
281  recPhoton.trackIso = currentPhoton.trackIso();
282 
283  // Fill the tree (this records all the recPhoton.* since
284  // tree_PhotonAll_ was set to point at that.
285  tree_PhotonAll_->Fill();
286  }
287 
288  // Record whether it was near any module gap.
289  // Very convoluted at the moment.
290  bool inAnyGap = currentPhoton.isEBEEGap() || (currentPhoton.isEB() && currentPhoton.isEBGap()) ||
291  (currentPhoton.isEE() && currentPhoton.isEEGap());
292  if (inAnyGap) {
293  h_photonInAnyGap_->Fill(1.0);
294  } else {
295  h_photonInAnyGap_->Fill(0.0);
296  }
297 
298  photonCounter++;
299  } else {
300  // This didn't pass photon cuts, mark it
301  h_nPassingPho_->Fill(0.0);
302  }
303 
304  } // End Loop over photons
305  h_nPho_->Fill(photonCounter);
306 }
307 
309 // method called once each job just after ending the event loop //
312  // go to *OUR* root file and store histograms
313  rootFile_->cd();
314 
315  // PhotonID Histograms
316  h_isoEcalRecHit_->Write();
317  h_isoHcalRecHit_->Write();
318  h_trk_pt_solid_->Write();
319  h_trk_pt_hollow_->Write();
320  h_ntrk_solid_->Write();
321  h_ntrk_hollow_->Write();
322  h_ebgap_->Write();
323  h_eeGap_->Write();
324  h_ebeeGap_->Write();
325  h_r9_->Write();
326 
327  // Photon Histograms
328  h_photonEt_->Write();
329  h_photonEta_->Write();
330  h_photonPhi_->Write();
331  h_hadoverem_->Write();
332 
333  // Photon's SuperCluster Histograms
334  h_photonScEt_->Write();
335  h_photonScEta_->Write();
336  h_photonScPhi_->Write();
337  h_photonScEtaWidth_->Write();
338 
339  // Composite or Other Histograms
340  h_photonInAnyGap_->Write();
341  h_nPassingPho_->Write();
342  h_nPho_->Write();
343 
344  // Write the root file (really writes the TTree)
345  rootFile_->Write();
346  rootFile_->Close();
347 }
348 
349 //define this as a plug-in
350 // DEFINE_FWK_MODULE(PatPhotonSimpleAnalyzer);
reco::Photon::hadronicOverEm
float hadronicOverEm(int depth=0) const
Definition: Photon.h:233
EDAnalyzer.h
mps_fire.i
i
Definition: mps_fire.py:428
PatPhotonSimpleAnalyzer::struct_recPhoton::nTrkSolidCone
float nTrkSolidCone
Definition: PatPhotonSimpleAnalyzer.cc:60
PatPhotonSimpleAnalyzer::struct_recPhoton::et
float et
Definition: PatPhotonSimpleAnalyzer.cc:66
PatPhotonSimpleAnalyzer::h_trk_pt_solid_
TH1F * h_trk_pt_solid_
Definition: PatPhotonSimpleAnalyzer.cc:84
PatPhotonSimpleAnalyzer::minPhotonAbsEta_
double minPhotonAbsEta_
Definition: PatPhotonSimpleAnalyzer.cc:46
PatPhotonSimpleAnalyzer::struct_recPhoton::isEBEEGap
float isEBEEGap
Definition: PatPhotonSimpleAnalyzer.cc:64
PatPhotonSimpleAnalyzer::maxPhotonAbsEta_
double maxPhotonAbsEta_
Definition: PatPhotonSimpleAnalyzer.cc:47
PatPhotonSimpleAnalyzer::h_photonPhi_
TH1F * h_photonPhi_
Definition: PatPhotonSimpleAnalyzer.cc:96
pat::Photon::ecalIso
float ecalIso() const
Definition: Photon.h:114
edm
HLT enums.
Definition: AlignableModifier.h:19
Photon.h
pat::Photon
Analysis-level Photon class.
Definition: Photon.h:46
PatPhotonSimpleAnalyzer::h_photonScEtaWidth_
TH1F * h_photonScEtaWidth_
Definition: PatPhotonSimpleAnalyzer.cc:103
PatPhotonSimpleAnalyzer::PatPhotonSimpleAnalyzer
PatPhotonSimpleAnalyzer(const edm::ParameterSet &)
Definition: PatPhotonSimpleAnalyzer.cc:122
PatPhotonSimpleAnalyzer::h_photonEta_
TH1F * h_photonEta_
Definition: PatPhotonSimpleAnalyzer.cc:95
PatPhotonSimpleAnalyzer::minPhotonR9_
double minPhotonR9_
Definition: PatPhotonSimpleAnalyzer.cc:48
PatPhotonSimpleAnalyzer::struct_recPhoton::isolationHollowTrkCone
float isolationHollowTrkCone
Definition: PatPhotonSimpleAnalyzer.cc:59
reco::Photon::hcalTowerSumEtConeDR04
float hcalTowerSumEtConeDR04(int depth=0) const
Definition: Photon.h:472
edm::one::EDAnalyzer
Definition: EDAnalyzer.h:30
reco::Photon::trkSumPtHollowConeDR04
float trkSumPtHollowConeDR04() const
Definition: Photon.h:494
edm::Handle
Definition: AssociativeIterator.h:50
PatPhotonSimpleAnalyzer::struct_recPhoton::isEBGap
float isEBGap
Definition: PatPhotonSimpleAnalyzer.cc:62
PatPhotonSimpleAnalyzer::tree_PhotonAll_
TTree * tree_PhotonAll_
Definition: PatPhotonSimpleAnalyzer.cc:111
PatPhotonSimpleAnalyzer::struct_recPhoton::isolationEcalRecHit
float isolationEcalRecHit
Definition: PatPhotonSimpleAnalyzer.cc:56
PatPhotonSimpleAnalyzer::h_photonScEt_
TH1F * h_photonScEt_
Definition: PatPhotonSimpleAnalyzer.cc:100
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
PatPhotonSimpleAnalyzer::struct_recPhoton::ecalIso
float ecalIso
Definition: PatPhotonSimpleAnalyzer.cc:70
PatPhotonSimpleAnalyzer::h_ntrk_hollow_
TH1F * h_ntrk_hollow_
Definition: PatPhotonSimpleAnalyzer.cc:87
PatPhotonSimpleAnalyzer::minPhotonEt_
double minPhotonEt_
Definition: PatPhotonSimpleAnalyzer.cc:45
PatPhotonSimpleAnalyzer::~PatPhotonSimpleAnalyzer
~PatPhotonSimpleAnalyzer() override
Definition: PatPhotonSimpleAnalyzer.cc:146
reco::Photon::isEE
bool isEE() const
Definition: Photon.h:122
reco::Photon::nTrkSolidConeDR04
int nTrkSolidConeDR04() const
Definition: Photon.h:496
PatPhotonSimpleAnalyzer::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: PatPhotonSimpleAnalyzer.cc:205
reco::Photon::nTrkHollowConeDR04
int nTrkHollowConeDR04() const
Definition: Photon.h:498
PatPhotonSimpleAnalyzer::h_isoHcalRecHit_
TH1F * h_isoHcalRecHit_
Definition: PatPhotonSimpleAnalyzer.cc:83
PatPhotonSimpleAnalyzer::struct_recPhoton::phi
float phi
Definition: PatPhotonSimpleAnalyzer.cc:68
pat::Photon::trackIso
float trackIso() const
Definition: Photon.h:111
edm::Event::getByLabel
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:500
PatPhotonSimpleAnalyzer::struct_recPhoton::eta
float eta
Definition: PatPhotonSimpleAnalyzer.cc:67
PatPhotonSimpleAnalyzer::h_ebgap_
TH1F * h_ebgap_
Definition: PatPhotonSimpleAnalyzer.cc:88
PatPhotonSimpleAnalyzer::struct_recPhoton::isEEGap
float isEEGap
Definition: PatPhotonSimpleAnalyzer.cc:63
PatPhotonSimpleAnalyzer::h_ebeeGap_
TH1F * h_ebeeGap_
Definition: PatPhotonSimpleAnalyzer.cc:90
PatPhotonSimpleAnalyzer::outputFile_
std::string outputFile_
Definition: PatPhotonSimpleAnalyzer.cc:44
edm::View
Definition: CaloClusterFwd.h:14
PatPhotonSimpleAnalyzer::struct_recPhoton::nTrkHollowCone
float nTrkHollowCone
Definition: PatPhotonSimpleAnalyzer.cc:61
PatPhotonSimpleAnalyzer::beginJob
void beginJob() override
Definition: PatPhotonSimpleAnalyzer.cc:156
PatPhotonSimpleAnalyzer::h_nPho_
TH1F * h_nPho_
Definition: PatPhotonSimpleAnalyzer.cc:108
edm::ParameterSet
Definition: ParameterSet.h:47
reco::Photon::r9
float r9() const
Definition: Photon.h:273
Event.h
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
PatPhotonSimpleAnalyzer::h_photonInAnyGap_
TH1F * h_photonInAnyGap_
Definition: PatPhotonSimpleAnalyzer.cc:106
reco::Photon::isEB
bool isEB() const
Definition: Photon.h:120
PatPhotonSimpleAnalyzer::maxPhotonHoverE_
double maxPhotonHoverE_
Definition: PatPhotonSimpleAnalyzer.cc:49
createfilelist.int
int
Definition: createfilelist.py:10
PatPhotonSimpleAnalyzer::struct_recPhoton::hcalIso
float hcalIso
Definition: PatPhotonSimpleAnalyzer.cc:71
reco::Photon::isEEGap
bool isEEGap() const
true if photon is in EE, and inside the boundaries in supercrystal/D
Definition: Photon.h:128
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
PatPhotonSimpleAnalyzer
Definition: PatPhotonSimpleAnalyzer.cc:34
PatPhotonSimpleAnalyzer::h_nPassingPho_
TH1F * h_nPassingPho_
Definition: PatPhotonSimpleAnalyzer.cc:107
PatPhotonSimpleAnalyzer::h_photonScEta_
TH1F * h_photonScEta_
Definition: PatPhotonSimpleAnalyzer.cc:101
BPHMonitor_cfi.photons
photons
Definition: BPHMonitor_cfi.py:91
PatPhotonSimpleAnalyzer::createPhotonTTree_
bool createPhotonTTree_
Definition: PatPhotonSimpleAnalyzer.cc:50
PatPhotonSimpleAnalyzer::h_r9_
TH1F * h_r9_
Definition: PatPhotonSimpleAnalyzer.cc:91
PatPhotonSimpleAnalyzer::h_photonEt_
TH1F * h_photonEt_
Definition: PatPhotonSimpleAnalyzer.cc:94
PatPhotonSimpleAnalyzer::struct_recPhoton::isolationSolidTrkCone
float isolationSolidTrkCone
Definition: PatPhotonSimpleAnalyzer.cc:58
edm::EventSetup
Definition: EventSetup.h:58
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
reco::LeafCandidate::et
double et() const final
transverse energy
Definition: LeafCandidate.h:127
PatPhotonSimpleAnalyzer::struct_recPhoton::trackIso
float trackIso
Definition: PatPhotonSimpleAnalyzer.cc:72
PatPhotonSimpleAnalyzer::recPhoton
struct_recPhoton recPhoton
Definition: PatPhotonSimpleAnalyzer.cc:74
std
Definition: JetResolutionObject.h:76
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
PatPhotonSimpleAnalyzer::struct_recPhoton::isolationHcalRecHit
float isolationHcalRecHit
Definition: PatPhotonSimpleAnalyzer.cc:57
PatPhotonSimpleAnalyzer::h_trk_pt_hollow_
TH1F * h_trk_pt_hollow_
Definition: PatPhotonSimpleAnalyzer.cc:85
reco::Photon::trkSumPtSolidConeDR04
float trkSumPtSolidConeDR04() const
Definition: Photon.h:492
PatPhotonSimpleAnalyzer::rootFile_
TFile * rootFile_
Definition: PatPhotonSimpleAnalyzer.cc:77
PatPhotonSimpleAnalyzer::h_eeGap_
TH1F * h_eeGap_
Definition: PatPhotonSimpleAnalyzer.cc:89
reco::Photon::ecalRecHitSumEtConeDR04
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:454
PatPhotonSimpleAnalyzer::endJob
void endJob() override
Definition: PatPhotonSimpleAnalyzer.cc:311
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
View.h
ParameterSet.h
PatPhotonSimpleAnalyzer::struct_recPhoton::hadronicOverEm
float hadronicOverEm
Definition: PatPhotonSimpleAnalyzer.cc:69
edm::Event
Definition: Event.h:73
reco::Photon::isEBEEGap
bool isEBEEGap() const
true if photon is in boundary between EB and EE
Definition: Photon.h:132
PatPhotonSimpleAnalyzer::h_hadoverem_
TH1F * h_hadoverem_
Definition: PatPhotonSimpleAnalyzer.cc:97
pat::Photon::hcalIso
float hcalIso() const
Definition: Photon.h:117
PatPhotonSimpleAnalyzer::struct_recPhoton
Definition: PatPhotonSimpleAnalyzer.cc:55
PatPhotonSimpleAnalyzer::h_ntrk_solid_
TH1F * h_ntrk_solid_
Definition: PatPhotonSimpleAnalyzer.cc:86
PatPhotonSimpleAnalyzer::struct_recPhoton::r9
float r9
Definition: PatPhotonSimpleAnalyzer.cc:65
PatPhotonSimpleAnalyzer::h_isoEcalRecHit_
TH1F * h_isoEcalRecHit_
Definition: PatPhotonSimpleAnalyzer.cc:82
PatPhotonSimpleAnalyzer::h_photonScPhi_
TH1F * h_photonScPhi_
Definition: PatPhotonSimpleAnalyzer.cc:102
reco::Photon::isEBGap
bool isEBGap() const
true if photon is in EB, and inside the boundaries in super crystals/modules
Definition: Photon.h:124
pat::Photon::superCluster
reco::SuperClusterRef superCluster() const override
override the superCluster method from CaloJet, to access the internal storage of the supercluster