CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Photon.h
Go to the documentation of this file.
1 #ifndef EgammaCandidates_Photon_h
2 #define EgammaCandidates_Photon_h
3 
18 #include <numeric>
19 
20 namespace reco {
21 
22  class Photon : public RecoCandidate {
23  public:
25  struct FiducialFlags;
26  struct IsolationVariables;
27  struct ShowerShape;
28  struct MIPVariables;
29  struct SaturationInfo;
30 
32  Photon() : RecoCandidate() { pixelSeed_ = false; }
33 
35  Photon(const Photon&);
36 
38  Photon(const LorentzVector& p4, const Point& caloPos, const PhotonCoreRef& core, const Point& vtx = Point(0, 0, 0));
39 
41  ~Photon() override;
42 
44  Photon* clone() const override;
45 
49 
50  //
52  //
53  // retrieve provenance
54  bool isPFlowPhoton() const { return this->photonCore()->isPFlowPhoton(); }
55  bool isStandardPhoton() const { return this->photonCore()->isStandardPhoton(); }
57  reco::SuperClusterRef superCluster() const override;
59  reco::SuperClusterRef parentSuperCluster() const { return this->photonCore()->parentSuperCluster(); }
61  reco::ConversionRefVector conversions() const { return this->photonCore()->conversions(); }
62  enum ConversionProvenance { egamma = 0, pflow = 1, both = 2 };
63 
65  reco::ConversionRefVector conversionsOneLeg() const { return this->photonCore()->conversionsOneLeg(); }
67  bool hasConversionTracks() const {
68  if (!this->photonCore()->conversions().empty() || !this->photonCore()->conversionsOneLeg().empty())
69  return true;
70  else
71  return false;
72  }
74  reco::ElectronSeedRefVector electronPixelSeeds() const { return this->photonCore()->electronPixelSeeds(); }
76  bool hasPixelSeed() const {
77  if (!(this->photonCore()->electronPixelSeeds()).empty())
78  return true;
79  else
80  return false;
81  }
82  int conversionTrackProvenance(const edm::RefToBase<reco::Track>& convTrack) const;
83 
87  void setVertex(const Point& vertex) override;
89  bool isPhoton() const override { return true; }
90 
91  //=======================================================
92  // Fiducial Flags
93  //=======================================================
94  struct FiducialFlags {
95  //Fiducial flags
96  bool isEB; //Photon is in EB
97  bool isEE; //Photon is in EE
98  bool isEBEtaGap; //Photon is in supermodule/supercrystal eta gap in EB
99  bool isEBPhiGap; //Photon is in supermodule/supercrystal phi gap in EB
100  bool isEERingGap; //Photon is in crystal ring gap in EE
101  bool isEEDeeGap; //Photon is in crystal dee gap in EE
102  bool isEBEEGap; //Photon is in border between EB and EE.
103 
105  : isEB(false),
106  isEE(false),
107  isEBEtaGap(false),
108  isEBPhiGap(false),
110  isEEDeeGap(false),
112 
113  {}
114  };
115 
120  bool isEB() const { return fiducialFlagBlock_.isEB; }
121  // true if photon is in ECAL endcap
122  bool isEE() const { return fiducialFlagBlock_.isEE; }
124  bool isEBGap() const { return (isEBEtaGap() || isEBPhiGap()); }
125  bool isEBEtaGap() const { return fiducialFlagBlock_.isEBEtaGap; }
126  bool isEBPhiGap() const { return fiducialFlagBlock_.isEBPhiGap; }
128  bool isEEGap() const { return (isEERingGap() || isEEDeeGap()); }
129  bool isEERingGap() const { return fiducialFlagBlock_.isEERingGap; }
130  bool isEEDeeGap() const { return fiducialFlagBlock_.isEEDeeGap; }
132  bool isEBEEGap() const { return fiducialFlagBlock_.isEBEEGap; }
133 
134  //=======================================================
135  // Shower Shape Variables
136  //=======================================================
137 
138  struct ShowerShape {
139  float sigmaEtaEta;
141  float e1x5;
142  float e2x5;
143  float e3x3;
144  float e5x5;
146  float hcalDepth1OverEcal; // hcal over ecal energy using first hcal depth
147  float hcalDepth2OverEcal; // hcal over ecal energy using 2nd hcal depth
150  std::array<float, 7> hcalOverEcal; // hcal over ecal seed cluster energy per depth (using rechits within a cone)
151  std::array<float, 7>
152  hcalOverEcalBc; // hcal over ecal seed cluster energy per depth (using rechits behind clusters)
153  std::vector<CaloTowerDetId> hcalTowersBehindClusters;
155  bool pre7DepthHcal; // to work around an ioread rule issue on legacy RECO files
156  float effSigmaRR;
159  float e2nd;
160  float eTop;
161  float eLeft;
162  float eRight;
163  float eBottom;
164  float e1x3;
165  float e2x2;
166  float e2x5Max;
167  float e2x5Left;
168  float e2x5Right;
169  float e2x5Top;
170  float e2x5Bottom;
171  float smMajor;
172  float smMinor;
173  float smAlpha;
175  : sigmaEtaEta(std::numeric_limits<float>::max()),
176  sigmaIetaIeta(std::numeric_limits<float>::max()),
177  e1x5(0.f),
178  e2x5(0.f),
179  e3x3(0.f),
180  e5x5(0.f),
181  maxEnergyXtal(0.f),
186  hcalOverEcal{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
187  hcalOverEcalBc{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
188  invalidHcal(false),
189  pre7DepthHcal(true),
193  e2nd(0.f),
194  eTop(0.f),
195  eLeft(0.f),
196  eRight(0.f),
197  eBottom(0.f),
198  e1x3(0.f),
199  e2x2(0.f),
200  e2x5Max(0.f),
201  e2x5Left(0.f),
202  e2x5Right(0.f),
203  e2x5Top(0.f),
204  e2x5Bottom(0.f),
205  smMajor(0.f),
206  smMinor(0.f),
207  smAlpha(0.f) {}
208  };
211 
214 
216  float hcalOverEcal(const ShowerShape& ss, int depth) const {
217  if (ss.pre7DepthHcal) {
218  if (depth == 0)
219  return ss.hcalDepth1OverEcal + ss.hcalDepth2OverEcal;
220  else if (depth == 1)
221  return ss.hcalDepth1OverEcal;
222  else if (depth == 2)
223  return ss.hcalDepth2OverEcal;
224 
225  return 0.f;
226  } else {
227  const auto& hovere = ss.hcalOverEcal;
228  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.f)
229  : hovere[depth - 1];
230  }
231  }
232  float hcalOverEcal(int depth = 0) const { return hcalOverEcal(showerShapeBlock_, depth); }
233  float hadronicOverEm(int depth = 0) const { return hcalOverEcal(depth); }
234 
236  float hcalOverEcalBc(const ShowerShape& ss, int depth) const {
237  if (ss.pre7DepthHcal) {
238  if (depth == 0)
240  else if (depth == 1)
241  return ss.hcalDepth1OverEcalBc;
242  else if (depth == 2)
243  return ss.hcalDepth2OverEcalBc;
244 
245  return 0.f;
246  } else {
247  const auto& hovere = ss.hcalOverEcalBc;
248  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.f)
249  : hovere[depth - 1];
250  }
251  }
252  float hcalOverEcalBc(int depth = 0) const { return hcalOverEcalBc(showerShapeBlock_, depth); }
253  float hadTowOverEm(int depth = 0) const { return hcalOverEcalBc(depth); }
254 
255  const std::vector<CaloTowerDetId>& hcalTowersBehindClusters() const {
257  }
258 
262 
264  float e1x5() const { return showerShapeBlock_.e1x5; }
265  float e2x5() const { return showerShapeBlock_.e2x5; }
266  float e3x3() const { return showerShapeBlock_.e3x3; }
267  float e5x5() const { return showerShapeBlock_.e5x5; }
269  float sigmaEtaEta() const { return showerShapeBlock_.sigmaEtaEta; }
271  float r1x5() const { return showerShapeBlock_.e1x5 / showerShapeBlock_.e5x5; }
272  float r2x5() const { return showerShapeBlock_.e2x5 / showerShapeBlock_.e5x5; }
273  float r9() const { return showerShapeBlock_.e3x3 / this->superCluster()->rawEnergy(); }
274 
276  float full5x5_e1x5() const { return full5x5_showerShapeBlock_.e1x5; }
277  float full5x5_e2x5() const { return full5x5_showerShapeBlock_.e2x5; }
278  float full5x5_e3x3() const { return full5x5_showerShapeBlock_.e3x3; }
279  float full5x5_e5x5() const { return full5x5_showerShapeBlock_.e5x5; }
285  float full5x5_r9() const { return full5x5_showerShapeBlock_.e3x3 / this->superCluster()->rawEnergy(); }
286 
289  float full5x5_hadronicOverEm(int depth = 0) const { return full5x5_hcalOverEcal(depth); }
290 
293  float full5x5_hadTowOverEm(int depth = 0) const { return full5x5_hcalOverEcalBc(depth); }
294 
295  //=======================================================
296  // SaturationInfo
297  //=======================================================
298 
299  struct SaturationInfo {
303  };
304 
305  // accessors
308  const SaturationInfo& saturationInfo() const { return saturationInfo_; }
310 
311  //=======================================================
312  // Energy Determinations
313  //=======================================================
315 
331  : scEcalEnergy(0.),
332  scEcalEnergyError(999.),
333  scEcalP4(0., 0., 0., 0.),
334  phoEcalEnergy(0.),
335  phoEcalEnergyError(999.),
336  phoEcalP4(0., 0., 0., 0.),
337  regression1Energy(0.),
339  regression1P4(0., 0., 0., 0.),
340  regression2Energy(0.),
342  regression2P4(0., 0., 0., 0.),
344  };
345 
346  using RecoCandidate::p4;
347  using RecoCandidate::setP4;
348 
349  //sets both energy and its uncertainty
350  void setCorrectedEnergy(P4type type, float E, float dE, bool toCand = true);
351  void setP4(P4type type, const LorentzVector& p4, float p4Error, bool setToRecoCandidate);
354 
355  float getCorrectedEnergy(P4type type) const;
356  float getCorrectedEnergyError(P4type type) const;
358  const LorentzVector& p4(P4type type) const;
360 
361  //=======================================================
362  // MIP Variables
363  //=======================================================
364 
365  struct MIPVariables {
366  float mipChi2;
368  float mipSlope;
371  bool mipIsHalo;
372 
374  :
375 
376  mipChi2(0),
377  mipTotEnergy(0),
378  mipSlope(0),
379  mipIntercept(0),
380  mipNhitCone(0),
381  mipIsHalo(false) {}
382  };
383 
385  float mipChi2() const { return mipVariableBlock_.mipChi2; }
386  float mipTotEnergy() const { return mipVariableBlock_.mipTotEnergy; }
387  float mipSlope() const { return mipVariableBlock_.mipSlope; }
388  float mipIntercept() const { return mipVariableBlock_.mipIntercept; }
389  int mipNhitCone() const { return mipVariableBlock_.mipNhitCone; }
390  bool mipIsHalo() const { return mipVariableBlock_.mipIsHalo; }
391 
393  void setMIPVariables(const MIPVariables& mipVar) { mipVariableBlock_ = mipVar; }
394 
395  //=======================================================
396  // Isolation Variables
397  //=======================================================
398 
400  //These are analysis quantities calculated in the PhotonIDAlgo class
401 
402  //EcalRecHit isolation
404  //HcalTower isolation
406  //HcalDepth1Tower isolation
408  //HcalDepth2Tower isolation
410  //HcalTower isolation subtracting the hadronic energy in towers behind the BCs in the SC
412  //HcalDepth1Tower isolation subtracting the hadronic energy in towers behind the BCs in the SC
414  //HcalDepth2Tower isolation subtracting the hadronic energy in towers behind the BCs in the SC
416  std::array<float, 7> hcalRecHitSumEt; // ...per depth, with photon footprint within a cone removed
417  std::array<float, 7> hcalRecHitSumEtBc; // ...per depth, with hcal rechits behind cluster removed
418  bool pre7DepthHcal; // to work around an ioread rule issue on legacy RECO files
419  //Sum of track pT in a cone of dR
421  //Sum of track pT in a hollow cone of outer radius, inner radius
423  //Number of tracks in a cone of dR
425  //Number of tracks in a hollow cone of outer radius, inner radius
428  :
429 
430  ecalRecHitSumEt(0.f),
431  hcalTowerSumEt(0.f),
434  hcalTowerSumEtBc(0.f),
437  hcalRecHitSumEt{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
438  hcalRecHitSumEtBc{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
439  pre7DepthHcal(true),
440  trkSumPtSolidCone(0.f),
442  nTrkSolidCone(0),
444  };
445 
447  void setIsolationVariables(const IsolationVariables& isolInDr04, const IsolationVariables& isolInDr03) {
448  isolationR04_ = isolInDr04;
449  isolationR03_ = isolInDr03;
450  }
451 
456  float hcalTowerSumEt(const IsolationVariables& iv, int depth) const {
457  if (iv.pre7DepthHcal) {
458  if (depth == 0)
459  return iv.hcalTowerSumEt;
460  else if (depth == 1)
461  return iv.hcalDepth1TowerSumEt;
462  else if (depth == 2)
463  return iv.hcalDepth2TowerSumEt;
464 
465  return 0.f;
466  } else {
467  const auto& hcaliso = iv.hcalRecHitSumEt;
468  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.f)
469  : hcaliso[depth - 1];
470  }
471  }
472  float hcalTowerSumEtConeDR04(int depth = 0) const { return hcalTowerSumEt(isolationR04_, depth); }
474  float hcalTowerSumEtBc(const IsolationVariables& iv, int depth) const {
475  if (iv.pre7DepthHcal) {
476  if (depth == 0)
477  return iv.hcalTowerSumEtBc;
478  else if (depth == 1)
479  return iv.hcalDepth1TowerSumEtBc;
480  else if (depth == 2)
481  return iv.hcalDepth2TowerSumEtBc;
482 
483  return 0.f;
484  } else {
485  const auto& hcaliso = iv.hcalRecHitSumEtBc;
486  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.f)
487  : hcaliso[depth - 1];
488  }
489  }
491  // Track pT sum
493  //As above, excluding the core at the center of the cone
495  //Returns number of tracks in a cone of dR
497  //As above, excluding the core at the center of the cone
499  //
503  float hcalTowerSumEtConeDR03(int depth = 0) const { return hcalTowerSumEt(isolationR03_, depth); }
506  // Track pT sum c
508  //As above, excluding the core at the center of the cone
510  //Returns number of tracks in a cone of dR
512  //As above, excluding the core at the center of the cone
514 
515  //=======================================================
516  // PFlow based Isolation Variables
517  //=======================================================
518 
520  float chargedHadronIso; //charged hadron isolation with dxy,dz match to pv
521  float chargedHadronWorstVtxIso; //max charged hadron isolation when dxy/dz matching to given vtx
522  float chargedHadronWorstVtxGeomVetoIso; //as chargedHadronWorstVtxIso but an additional geometry based veto cone
523  float chargedHadronPFPVIso; //only considers particles assigned to the primary vertex (PV) by particle flow, corresponds to <10_6 chargedHadronIso
525  float photonIso;
526  float sumEcalClusterEt; //sum pt of ecal clusters, vetoing clusters part of photon
527  float sumHcalClusterEt; //sum pt of hcal clusters, vetoing clusters part of photon
529  :
530 
531  chargedHadronIso(0.),
535  neutralHadronIso(0.),
536  photonIso(0.),
537  sumEcalClusterEt(0.),
538  sumHcalClusterEt(0.) {}
539  };
540 
547  float photonIso() const { return pfIsolation_.photonIso; }
548 
549  //backwards compat functions for pat::Photon
550  float ecalPFClusterIso() const { return pfIsolation_.sumEcalClusterEt; };
551  float hcalPFClusterIso() const { return pfIsolation_.sumHcalClusterEt; };
552 
555 
558 
559  static constexpr float mvaPlaceholder = -999999999.;
560 
564  float mva;
565  float dnn;
566 
569  };
570 
571  // getters
573  float etOutsideMustache() const { return pfID_.etOutsideMustache; }
574  float pfMVA() const { return pfID_.mva; }
575  float pfDNN() const { return pfID_.dnn; }
576  // setters
577  void setPflowIDVariables(const PflowIDVariables& pfid) { pfID_ = pfid; }
578 
579  // go back to run2-like 2 effective depths if desired - depth 1 is the normal depth 1, depth 2 is the sum over the rest
580  void hcalToRun2EffDepth();
581 
582  private:
584  bool overlap(const Candidate&) const override;
589  //
591  //
602  };
603 
604 } // namespace reco
605 
606 #endif
MIPVariables mipVariableBlock_
Definition: Photon.h:599
float chargedHadronPFPVIso() const
Definition: Photon.h:545
void setPflowIsolationVariables(const PflowIsolationVariables &pfisol)
Set Particle Flow Isolation variables.
Definition: Photon.h:557
SaturationInfo saturationInfo_
Definition: Photon.h:597
Photon * clone() const override
returns a clone of the candidate
void setMIPVariables(const MIPVariables &mipVar)
set mip Variables
Definition: Photon.h:393
float trkSumPtSolidConeDR03() const
Definition: Photon.h:507
ShowerShape full5x5_showerShapeBlock_
Definition: Photon.h:596
std::array< float, 7 > hcalRecHitSumEtBc
Definition: Photon.h:417
PflowIsolationVariables pfIsolation_
Definition: Photon.h:600
std::vector< CaloTowerDetId > hcalTowersBehindClusters
Definition: Photon.h:153
bool isEE() const
Definition: Photon.h:122
int32_t *__restrict__ iv
bool isEEDeeGap() const
Definition: Photon.h:130
void setCandidateP4type(const P4type type)
Definition: Photon.h:353
const EnergyCorrections & energyCorrections() const
Definition: Photon.h:359
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
Definition: Photon.h:542
bool isEBGap() const
true if photon is in EB, and inside the boundaries in super crystals/modules
Definition: Photon.h:124
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
float neutralHadronIso() const
Definition: Photon.h:546
float e5x5() const
Definition: Photon.h:267
float full5x5_r2x5() const
Definition: Photon.h:284
float full5x5_hcalOverEcalBc(int depth=0) const
the ratio of total energy of hcal rechits behind the SC and the SC energy
Definition: Photon.h:292
const SaturationInfo & saturationInfo() const
Definition: Photon.h:308
float hcalOverEcalBc(int depth=0) const
Definition: Photon.h:252
reco::ConversionRefVector conversionsOneLeg() const
vector of references to one leg Conversion&#39;s
Definition: Photon.h:65
float pfDNN() const
Definition: Photon.h:575
float hcalTowerSumEtConeDR04(int depth=0) const
Definition: Photon.h:472
float hcalOverEcalBc(const ShowerShape &ss, int depth) const
the ratio of total energy of hcal rechits behind the SC and the SC energy
Definition: Photon.h:236
float trkSumPtSolidConeDR04() const
Definition: Photon.h:492
int nTrkSolidConeDR03() const
Definition: Photon.h:511
float full5x5_e2x5() const
Definition: Photon.h:277
float e1x5() const
Shower shape variables.
Definition: Photon.h:264
bool isEBEEGap() const
true if photon is in boundary between EB and EE
Definition: Photon.h:132
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:454
bool overlap(const Candidate &) const override
check overlap with another candidate
void setSaturationInfo(const SaturationInfo &s)
Definition: Photon.h:309
float full5x5_r1x5() const
Definition: Photon.h:283
const Point & vertex() const override
vertex position (overwritten by PF...)
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
std::array< float, 7 > hcalOverEcalBc
Definition: Photon.h:152
float trkSumPtHollowConeDR03() const
Definition: Photon.h:509
float hcalOverEcal(const ShowerShape &ss, int depth) const
the total hadronic over electromagnetic fraction
Definition: Photon.h:216
float full5x5_maxEnergyXtal() const
Definition: Photon.h:280
float full5x5_sigmaEtaEta() const
Definition: Photon.h:281
IsolationVariables isolationR03_
Definition: Photon.h:594
int conversionTrackProvenance(const edm::RefToBase< reco::Track > &convTrack) const
ConversionProvenance
Definition: Photon.h:62
const LorentzVector & p4() const final
four-momentum Lorentz vector
float photonIso() const
Definition: Photon.h:547
Photon()
default constructor
Definition: Photon.h:32
void setVertex(const Point &vertex) override
set primary event vertex used to define photon direction
float mipIntercept() const
Definition: Photon.h:388
math::XYZPointF caloPosition_
position of seed BasicCluster for shower depth of unconverted photon
Definition: Photon.h:586
float full5x5_e1x5() const
full5x5 Shower shape variables
Definition: Photon.h:276
float full5x5_e3x3() const
Definition: Photon.h:278
float hcalPFClusterIso() const
Definition: Photon.h:551
float full5x5_r9() const
Definition: Photon.h:285
bool isPhoton() const override
Implement Candidate method for particle species.
Definition: Photon.h:89
float ecalPFClusterIso() const
Definition: Photon.h:550
LorentzVector regression2P4
Definition: Photon.h:328
reco::PhotonCoreRef photonCore() const
returns a reference to the core photon object
Definition: Photon.h:47
bool mipIsHalo() const
Definition: Photon.h:390
IsolationVariables isolationR04_
Definition: Photon.h:593
void setPhotonCore(const reco::PhotonCoreRef &photonCore)
Definition: Photon.h:48
float full5x5_sigmaIetaIeta() const
Definition: Photon.h:282
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
reco::ConversionRefVector conversions() const
vector of references to Conversion&#39;s
Definition: Photon.h:61
void setEnergyCorrections(const EnergyCorrections &e)
Definition: Photon.h:352
bool isStandardPhoton() const
Definition: Photon.h:55
bool isEBPhiGap() const
Definition: Photon.h:126
void setPflowIDVariables(const PflowIDVariables &pfid)
Definition: Photon.h:577
float sigmaIetaIeta() const
Definition: Photon.h:270
EnergyCorrections eCorrections_
Definition: Photon.h:598
void hcalToRun2EffDepth()
math::XYZTLorentzVector LorentzVector
void setShowerShapeVariables(const ShowerShape &a)
Definition: Photon.h:212
float e2x5() const
Definition: Photon.h:265
float sigmaEtaEta() const
Definition: Photon.h:269
float full5x5_hcalOverEcal(int depth=0) const
the total hadronic over electromagnetic fraction
Definition: Photon.h:288
int nTrkHollowConeDR04() const
Definition: Photon.h:498
int nTrkHollowConeDR03() const
Definition: Photon.h:513
bool isPFlowPhoton() const
Retrieve photonCore attributes.
Definition: Photon.h:54
~Photon() override
destructor
float mipTotEnergy() const
Definition: Photon.h:386
float hadronicOverEm(int depth=0) const
Definition: Photon.h:233
math::XYZPointF caloPosition() const
position in ECAL: this is th SC position if r9&lt;0.93. If r8&gt;0.93 is position of seed BasicCluster taki...
Definition: Photon.h:85
float r1x5() const
Definition: Photon.h:271
FiducialFlags fiducialFlagBlock_
Definition: Photon.h:592
float getCorrectedEnergyError(P4type type) const
P4type getCandidateP4type() const
Definition: Photon.h:357
float hcalTowerSumEtBcConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcalBc...
Definition: Photon.h:505
float etOutsideMustache() const
Definition: Photon.h:573
bool hasConversionTracks() const
Bool flagging photons with a vector of refereces to conversions with size &gt;0.
Definition: Photon.h:67
float full5x5_hadronicOverEm(int depth=0) const
Definition: Photon.h:289
bool pixelSeed_
Definition: Photon.h:590
LorentzVector regression1P4
Definition: Photon.h:325
bool isEEGap() const
true if photon is in EE, and inside the boundaries in supercrystal/D
Definition: Photon.h:128
float e3x3() const
Definition: Photon.h:266
float hcalOverEcal(int depth=0) const
Definition: Photon.h:232
std::array< float, 7 > hcalOverEcal
Definition: Photon.h:150
bool hasPixelSeed() const
Bool flagging photons having a non-zero size vector of Ref to electornPixel seeds.
Definition: Photon.h:76
float hcalTowerSumEt(const IsolationVariables &iv, int depth) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
Definition: Photon.h:456
void setFiducialVolumeFlags(const FiducialFlags &a)
set flags for photons in the ECAL fiducial volume
Definition: Photon.h:117
int nTrkSolidConeDR04() const
Definition: Photon.h:496
float hadTowOverEm(int depth=0) const
Definition: Photon.h:253
std::array< float, 7 > hcalRecHitSumEt
Definition: Photon.h:416
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
bool isEERingGap() const
Definition: Photon.h:129
PflowIDVariables pfID_
Definition: Photon.h:601
float getCorrectedEnergy(P4type type) const
bool hadronicOverEmValid() const
returns false if H/E is not reliably estimated (e.g. because hcal was off or masked) ...
Definition: Photon.h:260
float full5x5_hadTowOverEm(int depth=0) const
Definition: Photon.h:293
bool isEB() const
Definition: Photon.h:120
float trkSumPtHollowConeDR04() const
Definition: Photon.h:494
float r2x5() const
Definition: Photon.h:272
void full5x5_setShowerShapeVariables(const ShowerShape &a)
Definition: Photon.h:213
float ecalRecHitSumEtConeDR03() const
Isolation variables in cone dR=0.3.
Definition: Photon.h:501
float hcalTowerSumEtBc(const IsolationVariables &iv, int depth) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcalBc...
Definition: Photon.h:474
const ShowerShape & full5x5_showerShapeVariables() const
Definition: Photon.h:210
Structure Point Contains parameters of Gaussian fits to DMRs.
Definition: DMRtrends.cc:57
double a
Definition: hdecay.h:119
int nClusterOutsideMustache() const
Definition: Photon.h:572
float r9() const
Definition: Photon.h:273
reco::ElectronSeedRefVector electronPixelSeeds() const
reference to electron Pixel seed
Definition: Photon.h:74
string end
Definition: dataset.py:937
const std::vector< CaloTowerDetId > & hcalTowersBehindClusters() const
Definition: Photon.h:255
float mipSlope() const
Definition: Photon.h:387
float chargedHadronWorstVtxIso() const
Definition: Photon.h:543
float isSeedSaturated() const
Definition: Photon.h:307
int mipNhitCone() const
Definition: Photon.h:389
float hcalTowerSumEtConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
Definition: Photon.h:503
float chargedHadronWorstVtxGeomVetoIso() const
Definition: Photon.h:544
reco::SuperClusterRef parentSuperCluster() const
Ref to PFlow SuperCluster.
Definition: Photon.h:59
float pfMVA() const
Definition: Photon.h:574
ShowerShape showerShapeBlock_
Definition: Photon.h:595
const PflowIsolationVariables & getPflowIsolationVariables() const
Get Particle Flow Isolation variables block.
Definition: Photon.h:554
float mipChi2() const
MIP variables.
Definition: Photon.h:385
bool hadTowOverEmValid() const
Definition: Photon.h:261
const ShowerShape & showerShapeVariables() const
Definition: Photon.h:209
float hcalTowerSumEtBcConeDR04(int depth=0) const
Definition: Photon.h:490
reco::PhotonCoreRef photonCore_
reference to the PhotonCore
Definition: Photon.h:588
float full5x5_e5x5() const
Definition: Photon.h:279
void setP4(const LorentzVector &p4) final
set 4-momentum
float nSaturatedXtals() const
Definition: Photon.h:306
void setIsolationVariables(const IsolationVariables &isolInDr04, const IsolationVariables &isolInDr03)
set relevant isolation variables
Definition: Photon.h:447
void setP4(P4type type, const LorentzVector &p4, float p4Error, bool setToRecoCandidate)
static constexpr float mvaPlaceholder
Definition: Photon.h:559
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:27
bool isEBEtaGap() const
Definition: Photon.h:125
float maxEnergyXtal() const
Definition: Photon.h:268