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