CMS 3D CMS Logo

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 
33  pixelSeed_ = false;
34  haloTaggerMVAVal_ = 99;
35  }
36 
38  Photon(const Photon&);
39 
41  Photon(const LorentzVector& p4, const Point& caloPos, const PhotonCoreRef& core, const Point& vtx = Point(0, 0, 0));
42 
44  Photon& operator=(const Photon&) = default;
45 
47  ~Photon() override;
48 
50  Photon* clone() const override;
51 
55 
56  //
58  //
59  // retrieve provenance
60  bool isPFlowPhoton() const { return this->photonCore()->isPFlowPhoton(); }
61  bool isStandardPhoton() const { return this->photonCore()->isStandardPhoton(); }
63  reco::SuperClusterRef superCluster() const override;
65  reco::SuperClusterRef parentSuperCluster() const { return this->photonCore()->parentSuperCluster(); }
67  reco::ConversionRefVector conversions() const { return this->photonCore()->conversions(); }
68  enum ConversionProvenance { egamma = 0, pflow = 1, both = 2 };
69 
71  reco::ConversionRefVector conversionsOneLeg() const { return this->photonCore()->conversionsOneLeg(); }
73  bool hasConversionTracks() const {
74  if (!this->photonCore()->conversions().empty() || !this->photonCore()->conversionsOneLeg().empty())
75  return true;
76  else
77  return false;
78  }
80  reco::ElectronSeedRefVector electronPixelSeeds() const { return this->photonCore()->electronPixelSeeds(); }
82  bool hasPixelSeed() const {
83  if (!(this->photonCore()->electronPixelSeeds()).empty())
84  return true;
85  else
86  return false;
87  }
88  int conversionTrackProvenance(const edm::RefToBase<reco::Track>& convTrack) const;
89 
93  void setVertex(const Point& vertex) override;
95  bool isPhoton() const override { return true; }
96 
97  //=======================================================
98  // Fiducial Flags
99  //=======================================================
100  struct FiducialFlags {
101  //Fiducial flags
102  bool isEB; //Photon is in EB
103  bool isEE; //Photon is in EE
104  bool isEBEtaGap; //Photon is in supermodule/supercrystal eta gap in EB
105  bool isEBPhiGap; //Photon is in supermodule/supercrystal phi gap in EB
106  bool isEERingGap; //Photon is in crystal ring gap in EE
107  bool isEEDeeGap; //Photon is in crystal dee gap in EE
108  bool isEBEEGap; //Photon is in border between EB and EE.
109 
111  : isEB(false),
112  isEE(false),
113  isEBEtaGap(false),
114  isEBPhiGap(false),
116  isEEDeeGap(false),
118 
119  {}
120  };
121 
126  bool isEB() const { return fiducialFlagBlock_.isEB; }
127  // true if photon is in ECAL endcap
128  bool isEE() const { return fiducialFlagBlock_.isEE; }
130  bool isEBGap() const { return (isEBEtaGap() || isEBPhiGap()); }
131  bool isEBEtaGap() const { return fiducialFlagBlock_.isEBEtaGap; }
132  bool isEBPhiGap() const { return fiducialFlagBlock_.isEBPhiGap; }
134  bool isEEGap() const { return (isEERingGap() || isEEDeeGap()); }
135  bool isEERingGap() const { return fiducialFlagBlock_.isEERingGap; }
136  bool isEEDeeGap() const { return fiducialFlagBlock_.isEEDeeGap; }
138  bool isEBEEGap() const { return fiducialFlagBlock_.isEBEEGap; }
139 
140  //=======================================================
141  // Shower Shape Variables
142  //=======================================================
143 
144  struct ShowerShape {
145  float sigmaEtaEta;
147  float e1x5;
148  float e2x5;
149  float e3x3;
150  float e5x5;
152  float hcalDepth1OverEcal; // hcal over ecal energy using first hcal depth
153  float hcalDepth2OverEcal; // hcal over ecal energy using 2nd hcal depth
156  std::array<float, 7> hcalOverEcal; // hcal over ecal seed cluster energy per depth (using rechits within a cone)
157  std::array<float, 7>
158  hcalOverEcalBc; // hcal over ecal seed cluster energy per depth (using rechits behind clusters)
159  std::vector<CaloTowerDetId> hcalTowersBehindClusters;
161  bool pre7DepthHcal; // to work around an ioread rule issue on legacy RECO files
162  float effSigmaRR;
165  float e2nd;
166  float eTop;
167  float eLeft;
168  float eRight;
169  float eBottom;
170  float e1x3;
171  float e2x2;
172  float e2x5Max;
173  float e2x5Left;
174  float e2x5Right;
175  float e2x5Top;
176  float e2x5Bottom;
177  float smMajor;
178  float smMinor;
179  float smAlpha;
181  : sigmaEtaEta(std::numeric_limits<float>::max()),
182  sigmaIetaIeta(std::numeric_limits<float>::max()),
183  e1x5(0.f),
184  e2x5(0.f),
185  e3x3(0.f),
186  e5x5(0.f),
187  maxEnergyXtal(0.f),
192  hcalOverEcal{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
193  hcalOverEcalBc{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
194  invalidHcal(false),
195  pre7DepthHcal(true),
199  e2nd(0.f),
200  eTop(0.f),
201  eLeft(0.f),
202  eRight(0.f),
203  eBottom(0.f),
204  e1x3(0.f),
205  e2x2(0.f),
206  e2x5Max(0.f),
207  e2x5Left(0.f),
208  e2x5Right(0.f),
209  e2x5Top(0.f),
210  e2x5Bottom(0.f),
211  smMajor(0.f),
212  smMinor(0.f),
213  smAlpha(0.f) {}
214  };
217 
220 
222  float hcalOverEcal(const ShowerShape& ss, int depth) const {
223  if (ss.pre7DepthHcal) {
224  if (depth == 0)
225  return ss.hcalDepth1OverEcal + ss.hcalDepth2OverEcal;
226  else if (depth == 1)
227  return ss.hcalDepth1OverEcal;
228  else if (depth == 2)
229  return ss.hcalDepth2OverEcal;
230 
231  return 0.f;
232  } else {
233  const auto& hovere = ss.hcalOverEcal;
234  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.f)
235  : hovere[depth - 1];
236  }
237  }
238  float hcalOverEcal(int depth = 0) const { return hcalOverEcal(showerShapeBlock_, depth); }
239  float hadronicOverEm(int depth = 0) const { return hcalOverEcal(depth); }
240 
242  float hcalOverEcalBc(const ShowerShape& ss, int depth) const {
243  if (ss.pre7DepthHcal) {
244  if (depth == 0)
245  return ss.hcalDepth1OverEcalBc + ss.hcalDepth2OverEcalBc;
246  else if (depth == 1)
247  return ss.hcalDepth1OverEcalBc;
248  else if (depth == 2)
249  return ss.hcalDepth2OverEcalBc;
250 
251  return 0.f;
252  } else {
253  const auto& hovere = ss.hcalOverEcalBc;
254  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hovere), std::end(hovere), 0.f)
255  : hovere[depth - 1];
256  }
257  }
258  float hcalOverEcalBc(int depth = 0) const { return hcalOverEcalBc(showerShapeBlock_, depth); }
259  float hadTowOverEm(int depth = 0) const { return hcalOverEcalBc(depth); }
260 
261  const std::vector<CaloTowerDetId>& hcalTowersBehindClusters() const {
263  }
264 
268 
270  float e1x5() const { return showerShapeBlock_.e1x5; }
271  float e2x5() const { return showerShapeBlock_.e2x5; }
272  float e3x3() const { return showerShapeBlock_.e3x3; }
273  float e5x5() const { return showerShapeBlock_.e5x5; }
275  float sigmaEtaEta() const { return showerShapeBlock_.sigmaEtaEta; }
277  float r1x5() const { return showerShapeBlock_.e1x5 / showerShapeBlock_.e5x5; }
278  float r2x5() const { return showerShapeBlock_.e2x5 / showerShapeBlock_.e5x5; }
279  float r9() const { return showerShapeBlock_.e3x3 / this->superCluster()->rawEnergy(); }
280 
282  float full5x5_e1x5() const { return full5x5_showerShapeBlock_.e1x5; }
283  float full5x5_e2x5() const { return full5x5_showerShapeBlock_.e2x5; }
284  float full5x5_e3x3() const { return full5x5_showerShapeBlock_.e3x3; }
285  float full5x5_e5x5() const { return full5x5_showerShapeBlock_.e5x5; }
291  float full5x5_r9() const { return full5x5_showerShapeBlock_.e3x3 / this->superCluster()->rawEnergy(); }
292 
295  float full5x5_hadronicOverEm(int depth = 0) const { return full5x5_hcalOverEcal(depth); }
296 
299  float full5x5_hadTowOverEm(int depth = 0) const { return full5x5_hcalOverEcalBc(depth); }
300 
301  //=======================================================
302  // SaturationInfo
303  //=======================================================
304 
305  struct SaturationInfo {
309  };
310 
311  // accessors
314  const SaturationInfo& saturationInfo() const { return saturationInfo_; }
316 
317  //=======================================================
318  // Energy Determinations
319  //=======================================================
321 
337  : scEcalEnergy(0.),
338  scEcalEnergyError(999.),
339  scEcalP4(0., 0., 0., 0.),
340  phoEcalEnergy(0.),
341  phoEcalEnergyError(999.),
342  phoEcalP4(0., 0., 0., 0.),
343  regression1Energy(0.),
345  regression1P4(0., 0., 0., 0.),
346  regression2Energy(0.),
348  regression2P4(0., 0., 0., 0.),
350  };
351 
352  using RecoCandidate::p4;
353  using RecoCandidate::setP4;
354 
355  //sets both energy and its uncertainty
356  void setCorrectedEnergy(P4type type, float E, float dE, bool toCand = true);
357  void setP4(P4type type, const LorentzVector& p4, float p4Error, bool setToRecoCandidate);
360 
361  float getCorrectedEnergy(P4type type) const;
362  float getCorrectedEnergyError(P4type type) const;
364  const LorentzVector& p4(P4type type) const;
366 
367  //=======================================================
368  // MIP Variables
369  //=======================================================
370 
371  struct MIPVariables {
372  float mipChi2;
374  float mipSlope;
377  bool mipIsHalo;
378 
380  :
381 
382  mipChi2(0),
383  mipTotEnergy(0),
384  mipSlope(0),
385  mipIntercept(0),
386  mipNhitCone(0),
387  mipIsHalo(false) {}
388  };
389 
391  float mipChi2() const { return mipVariableBlock_.mipChi2; }
392  float mipTotEnergy() const { return mipVariableBlock_.mipTotEnergy; }
393  float mipSlope() const { return mipVariableBlock_.mipSlope; }
394  float mipIntercept() const { return mipVariableBlock_.mipIntercept; }
395  int mipNhitCone() const { return mipVariableBlock_.mipNhitCone; }
396  bool mipIsHalo() const { return mipVariableBlock_.mipIsHalo; }
397 
399  void setMIPVariables(const MIPVariables& mipVar) { mipVariableBlock_ = mipVar; }
400 
401  //=======================================================
402  // Isolation Variables
403  //=======================================================
404 
406  //These are analysis quantities calculated in the PhotonIDAlgo class
407 
408  //EcalRecHit isolation
410  //HcalTower isolation
412  //HcalDepth1Tower isolation
414  //HcalDepth2Tower isolation
416  //HcalTower isolation subtracting the hadronic energy in towers behind the BCs in the SC
418  //HcalDepth1Tower isolation subtracting the hadronic energy in towers behind the BCs in the SC
420  //HcalDepth2Tower isolation subtracting the hadronic energy in towers behind the BCs in the SC
422  std::array<float, 7> hcalRecHitSumEt; // ...per depth, with photon footprint within a cone removed
423  std::array<float, 7> hcalRecHitSumEtBc; // ...per depth, with hcal rechits behind cluster removed
424  bool pre7DepthHcal; // to work around an ioread rule issue on legacy RECO files
425  //Sum of track pT in a cone of dR
427  //Sum of track pT in a hollow cone of outer radius, inner radius
429  //Number of tracks in a cone of dR
431  //Number of tracks in a hollow cone of outer radius, inner radius
434  :
435 
436  ecalRecHitSumEt(0.f),
437  hcalTowerSumEt(0.f),
440  hcalTowerSumEtBc(0.f),
443  hcalRecHitSumEt{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
444  hcalRecHitSumEtBc{{0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}},
445  pre7DepthHcal(true),
446  trkSumPtSolidCone(0.f),
448  nTrkSolidCone(0),
449  nTrkHollowCone(0) {}
450  };
451 
453  void setIsolationVariables(const IsolationVariables& isolInDr04, const IsolationVariables& isolInDr03) {
454  isolationR04_ = isolInDr04;
455  isolationR03_ = isolInDr03;
456  }
457 
462  float hcalTowerSumEt(const IsolationVariables& iv, int depth) const {
463  if (iv.pre7DepthHcal) {
464  if (depth == 0)
465  return iv.hcalTowerSumEt;
466  else if (depth == 1)
467  return iv.hcalDepth1TowerSumEt;
468  else if (depth == 2)
469  return iv.hcalDepth2TowerSumEt;
470 
471  return 0.f;
472  } else {
473  const auto& hcaliso = iv.hcalRecHitSumEt;
474  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.f)
475  : hcaliso[depth - 1];
476  }
477  }
478  float hcalTowerSumEtConeDR04(int depth = 0) const { return hcalTowerSumEt(isolationR04_, depth); }
480  float hcalTowerSumEtBc(const IsolationVariables& iv, int depth) const {
481  if (iv.pre7DepthHcal) {
482  if (depth == 0)
483  return iv.hcalTowerSumEtBc;
484  else if (depth == 1)
485  return iv.hcalDepth1TowerSumEtBc;
486  else if (depth == 2)
487  return iv.hcalDepth2TowerSumEtBc;
488 
489  return 0.f;
490  } else {
491  const auto& hcaliso = iv.hcalRecHitSumEtBc;
492  return (!(depth > 0 and depth < 8)) ? std::accumulate(std::begin(hcaliso), std::end(hcaliso), 0.f)
493  : hcaliso[depth - 1];
494  }
495  }
497  // Track pT sum
499  //As above, excluding the core at the center of the cone
501  //Returns number of tracks in a cone of dR
503  //As above, excluding the core at the center of the cone
505  //
509  float hcalTowerSumEtConeDR03(int depth = 0) const { return hcalTowerSumEt(isolationR03_, depth); }
512  // Track pT sum c
514  //As above, excluding the core at the center of the cone
516  //Returns number of tracks in a cone of dR
518  //As above, excluding the core at the center of the cone
520 
521  //=======================================================
522  // PFlow based Isolation Variables
523  //=======================================================
524 
526  float chargedHadronIso; //charged hadron isolation with dxy,dz match to pv
527  float chargedHadronWorstVtxIso; //max charged hadron isolation when dxy/dz matching to given vtx
528  float chargedHadronWorstVtxGeomVetoIso; //as chargedHadronWorstVtxIso but an additional geometry based veto cone
529  float chargedHadronPFPVIso; //only considers particles assigned to the primary vertex (PV) by particle flow, corresponds to <10_6 chargedHadronIso
531  float photonIso;
532  float sumEcalClusterEt; //sum pt of ecal clusters, vetoing clusters part of photon
533  float sumHcalClusterEt; //sum pt of hcal clusters, vetoing clusters part of photon
535  :
536 
537  chargedHadronIso(0.),
541  neutralHadronIso(0.),
542  photonIso(0.),
543  sumEcalClusterEt(0.),
544  sumHcalClusterEt(0.) {}
545  };
546 
553  float photonIso() const { return pfIsolation_.photonIso; }
554 
555  //backwards compat functions for pat::Photon
556  float ecalPFClusterIso() const { return pfIsolation_.sumEcalClusterEt; };
557  float hcalPFClusterIso() const { return pfIsolation_.sumHcalClusterEt; };
558 
561 
564 
565  static constexpr float mvaPlaceholder = -999999999.;
566 
570  float mva;
571  float dnn;
572 
575  };
576 
577  // getters
579  float etOutsideMustache() const { return pfID_.etOutsideMustache; }
580  float pfMVA() const { return pfID_.mva; }
581  float pfDNN() const { return pfID_.dnn; }
582  // setters
583  void setPflowIDVariables(const PflowIDVariables& pfid) { pfID_ = pfid; }
584 
585  // 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
586  void hcalToRun2EffDepth();
587 
589  float haloTaggerMVAVal() const { return haloTaggerMVAVal_; }
590 
593 
594  private:
596  bool overlap(const Candidate&) const override;
601  //
603  //
615  };
616 
617 } // namespace reco
618 
619 #endif
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:242
bool hasPixelSeed() const
Bool flagging photons having a non-zero size vector of Ref to electornPixel seeds.
Definition: Photon.h:82
MIPVariables mipVariableBlock_
Definition: Photon.h:611
void setPflowIsolationVariables(const PflowIsolationVariables &pfisol)
Set Particle Flow Isolation variables.
Definition: Photon.h:563
float full5x5_hadTowOverEm(int depth=0) const
Definition: Photon.h:299
float trkSumPtSolidConeDR03() const
Definition: Photon.h:513
SaturationInfo saturationInfo_
Definition: Photon.h:609
Photon * clone() const override
returns a clone of the candidate
void setMIPVariables(const MIPVariables &mipVar)
set mip Variables
Definition: Photon.h:399
float hcalOverEcal(const ShowerShape &ss, int depth) const
the total hadronic over electromagnetic fraction
Definition: Photon.h:222
float getCorrectedEnergy(P4type type) const
reco::ConversionRefVector conversionsOneLeg() const
vector of references to one leg Conversion&#39;s
Definition: Photon.h:71
ShowerShape full5x5_showerShapeBlock_
Definition: Photon.h:608
Definition: Photon.py:1
std::array< float, 7 > hcalRecHitSumEtBc
Definition: Photon.h:423
PflowIsolationVariables pfIsolation_
Definition: Photon.h:612
float full5x5_hadronicOverEm(int depth=0) const
Definition: Photon.h:295
float hcalPFClusterIso() const
Definition: Photon.h:557
float sigmaEtaEta() const
Definition: Photon.h:275
std::vector< CaloTowerDetId > hcalTowersBehindClusters
Definition: Photon.h:159
float hcalTowerSumEtConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcal()...
Definition: Photon.h:509
bool isEBPhiGap() const
Definition: Photon.h:132
void setCandidateP4type(const P4type type)
Definition: Photon.h:359
reco::ConversionRefVector conversions() const
vector of references to Conversion&#39;s
Definition: Photon.h:67
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
bool isEEDeeGap() const
Definition: Photon.h:136
const ShowerShape & full5x5_showerShapeVariables() const
Definition: Photon.h:216
const ShowerShape & showerShapeVariables() const
Definition: Photon.h:215
float chargedHadronWorstVtxGeomVetoIso() const
Definition: Photon.h:550
float full5x5_maxEnergyXtal() const
Definition: Photon.h:286
float ecalRecHitSumEtConeDR04() const
Definition: Photon.h:460
reco::SuperClusterRef parentSuperCluster() const
Ref to PFlow SuperCluster.
Definition: Photon.h:65
float full5x5_r2x5() const
Definition: Photon.h:290
float hcalTowerSumEtBcConeDR03(int depth=0) const
Hcal isolation sum for each depth excluding the region containing the rechits used for hcalOverEcalBc...
Definition: Photon.h:511
Definition: __init__.py:1
float mipSlope() const
Definition: Photon.h:393
const std::vector< CaloTowerDetId > & hcalTowersBehindClusters() const
Definition: Photon.h:261
int conversionTrackProvenance(const edm::RefToBase< reco::Track > &convTrack) const
float e1x5() const
Shower shape variables.
Definition: Photon.h:270
float full5x5_r1x5() const
Definition: Photon.h:289
bool isEB() const
Definition: Photon.h:126
bool overlap(const Candidate &) const override
check overlap with another candidate
float maxEnergyXtal() const
Definition: Photon.h:274
float chargedHadronWorstVtxIso() const
Definition: Photon.h:549
void setSaturationInfo(const SaturationInfo &s)
Definition: Photon.h:315
const Point & vertex() const override
vertex position (overwritten by PF...)
float r1x5() const
Definition: Photon.h:277
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:158
void setHaloTaggerMVAVal(float x)
set the haloTaggerMVAVal here
Definition: Photon.h:592
int nTrkHollowConeDR03() const
Definition: Photon.h:519
IsolationVariables isolationR03_
Definition: Photon.h:606
ConversionProvenance
Definition: Photon.h:68
const LorentzVector & p4() const final
four-momentum Lorentz vector
Photon()
default constructor
Definition: Photon.h:32
float photonIso() const
Definition: Photon.h:553
void setVertex(const Point &vertex) override
set primary event vertex used to define photon direction
float nSaturatedXtals() const
Definition: Photon.h:312
bool isPFlowPhoton() const
Retrieve photonCore attributes.
Definition: Photon.h:60
float e5x5() const
Definition: Photon.h:273
math::XYZPointF caloPosition_
position of seed BasicCluster for shower depth of unconverted photon
Definition: Photon.h:598
Photon & operator=(const Photon &)=default
assignment operator
P4type getCandidateP4type() const
Definition: Photon.h:363
bool isPhoton() const override
Implement Candidate method for particle species.
Definition: Photon.h:95
float trkSumPtSolidConeDR04() const
Definition: Photon.h:498
LorentzVector regression2P4
Definition: Photon.h:334
IsolationVariables isolationR04_
Definition: Photon.h:605
bool hadTowOverEmValid() const
Definition: Photon.h:267
void setPhotonCore(const reco::PhotonCoreRef &photonCore)
Definition: Photon.h:54
bool mipIsHalo() const
Definition: Photon.h:396
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:480
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
float hcalTowerSumEtConeDR04(int depth=0) const
Definition: Photon.h:478
float sigmaIetaIeta() const
Definition: Photon.h:276
void setEnergyCorrections(const EnergyCorrections &e)
Definition: Photon.h:358
bool isEERingGap() const
Definition: Photon.h:135
float hcalOverEcal(int depth=0) const
Definition: Photon.h:238
const SaturationInfo & saturationInfo() const
Definition: Photon.h:314
float chargedHadronIso() const
Accessors for Particle Flow Isolation variables.
Definition: Photon.h:548
void setPflowIDVariables(const PflowIDVariables &pfid)
Definition: Photon.h:583
float mipChi2() const
MIP variables.
Definition: Photon.h:391
EnergyCorrections eCorrections_
Definition: Photon.h:610
float full5x5_sigmaIetaIeta() const
Definition: Photon.h:288
reco::ElectronSeedRefVector electronPixelSeeds() const
reference to electron Pixel seed
Definition: Photon.h:80
float getCorrectedEnergyError(P4type type) const
float mipTotEnergy() const
Definition: Photon.h:392
bool isEE() const
Definition: Photon.h:128
float hcalTowerSumEtBcConeDR04(int depth=0) const
Definition: Photon.h:496
void hcalToRun2EffDepth()
float haloTaggerMVAVal() const
MVA based beam halo tagger - trained for EE and for pT > 200 GeV.
Definition: Photon.h:589
bool isEBEtaGap() const
Definition: Photon.h:131
math::XYZTLorentzVector LorentzVector
void setShowerShapeVariables(const ShowerShape &a)
Definition: Photon.h:218
double f[11][100]
float pfMVA() const
Definition: Photon.h:580
float ecalRecHitSumEtConeDR03() const
Isolation variables in cone dR=0.3.
Definition: Photon.h:507
math::XYZPointF caloPosition() const
position in ECAL: this is th SC position if r9<0.93. If r8>0.93 is position of seed BasicCluster taki...
Definition: Photon.h:91
bool isEEGap() const
true if photon is in EE, and inside the boundaries in supercrystal/D
Definition: Photon.h:134
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:462
float trkSumPtHollowConeDR03() const
Definition: Photon.h:515
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:298
~Photon() override
destructor
float full5x5_sigmaEtaEta() const
Definition: Photon.h:287
FiducialFlags fiducialFlagBlock_
Definition: Photon.h:604
float hadTowOverEm(int depth=0) const
Definition: Photon.h:259
bool hadronicOverEmValid() const
returns false if H/E is not reliably estimated (e.g. because hcal was off or masked) ...
Definition: Photon.h:266
float pfDNN() const
Definition: Photon.h:581
reco::PhotonCoreRef photonCore() const
returns a reference to the core photon object
Definition: Photon.h:53
int nTrkSolidConeDR04() const
Definition: Photon.h:502
float trkSumPtHollowConeDR04() const
Definition: Photon.h:500
bool pixelSeed_
Definition: Photon.h:602
LorentzVector regression1P4
Definition: Photon.h:331
float r2x5() const
Definition: Photon.h:278
float hadronicOverEm(int depth=0) const
Definition: Photon.h:239
float full5x5_e2x5() const
Definition: Photon.h:283
float ecalPFClusterIso() const
Definition: Photon.h:556
std::array< float, 7 > hcalOverEcal
Definition: Photon.h:156
int nTrkSolidConeDR03() const
Definition: Photon.h:517
float full5x5_hcalOverEcal(int depth=0) const
the total hadronic over electromagnetic fraction
Definition: Photon.h:294
bool hasConversionTracks() const
Bool flagging photons with a vector of refereces to conversions with size >0.
Definition: Photon.h:73
void setFiducialVolumeFlags(const FiducialFlags &a)
set flags for photons in the ECAL fiducial volume
Definition: Photon.h:123
bool isStandardPhoton() const
Definition: Photon.h:61
std::array< float, 7 > hcalRecHitSumEt
Definition: Photon.h:422
float r9() const
Definition: Photon.h:279
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
PflowIDVariables pfID_
Definition: Photon.h:613
bool isEBGap() const
true if photon is in EB, and inside the boundaries in super crystals/modules
Definition: Photon.h:130
void full5x5_setShowerShapeVariables(const ShowerShape &a)
Definition: Photon.h:219
float etOutsideMustache() const
Definition: Photon.h:579
fixed size matrix
int mipNhitCone() const
Definition: Photon.h:395
Structure Point Contains parameters of Gaussian fits to DMRs.
double a
Definition: hdecay.h:121
float chargedHadronPFPVIso() const
Definition: Photon.h:551
const EnergyCorrections & energyCorrections() const
Definition: Photon.h:365
float isSeedSaturated() const
Definition: Photon.h:313
int nClusterOutsideMustache() const
Definition: Photon.h:578
float x
float mipIntercept() const
Definition: Photon.h:394
int nTrkHollowConeDR04() const
Definition: Photon.h:504
ShowerShape showerShapeBlock_
Definition: Photon.h:607
const PflowIsolationVariables & getPflowIsolationVariables() const
Get Particle Flow Isolation variables block.
Definition: Photon.h:560
reco::PhotonCoreRef photonCore_
reference to the PhotonCore
Definition: Photon.h:600
float full5x5_e1x5() const
full5x5 Shower shape variables
Definition: Photon.h:282
float neutralHadronIso() const
Definition: Photon.h:552
float haloTaggerMVAVal_
Definition: Photon.h:614
void setP4(const LorentzVector &p4) final
set 4-momentum
float hcalOverEcalBc(int depth=0) const
Definition: Photon.h:258
bool isEBEEGap() const
true if photon is in boundary between EB and EE
Definition: Photon.h:138
void setIsolationVariables(const IsolationVariables &isolInDr04, const IsolationVariables &isolInDr03)
set relevant isolation variables
Definition: Photon.h:453
void setP4(P4type type, const LorentzVector &p4, float p4Error, bool setToRecoCandidate)
static constexpr float mvaPlaceholder
Definition: Photon.h:565
float e3x3() const
Definition: Photon.h:272
math::XYZPoint Point
point in the space
Definition: LeafCandidate.h:27
float full5x5_e5x5() const
Definition: Photon.h:285
float full5x5_e3x3() const
Definition: Photon.h:284
float full5x5_r9() const
Definition: Photon.h:291
float e2x5() const
Definition: Photon.h:271