CMS 3D CMS Logo

GsfElectron.h
Go to the documentation of this file.
1 #ifndef GsfElectron_h
2 #define GsfElectron_h
3 
8 //#include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
15 //#include "DataFormats/Math/interface/LorentzVector.h"
19 #include <vector>
20 #include <limits>
21 
22 namespace reco
23  {
24 
25 
26 /****************************************************************************
27  * \class reco::GsfElectron
28  *
29  * An Electron with a GsfTrack seeded from an ElectronSeed.
30  * Renamed from PixelMatchGsfElectron.
31  * Originally adapted from the TRecElectron class in ORCA.
32  *
33  * \author Claude Charlot - Laboratoire Leprince-Ringuet - École polytechnique, CNRS/IN2P3
34  * \author David Chamont - Laboratoire Leprince-Ringuet - École polytechnique, CNRS/IN2P3
35  *
36  ****************************************************************************/
37 
38 class GsfElectron : public RecoCandidate
39  {
40 
41  //=======================================================
42  // Constructors
43  //
44  // The clone() method with arguments, and the copy
45  // constructor with edm references is designed for
46  // someone which want to duplicates all
47  // collections.
48  //=======================================================
49 
50  public :
51 
52  // some nested structures defined later on
53  struct ChargeInfo ;
54  struct TrackClusterMatching ;
55  struct TrackExtrapolations ;
56  struct ClosestCtfTrack ;
57  struct FiducialFlags ;
58  struct ShowerShape ;
59  struct IsolationVariables ;
60  struct ConversionRejection ;
62  struct SaturationInfo ;
63 
64  GsfElectron() ;
65  GsfElectron( const GsfElectronCoreRef & ) ;
67  (
68  const GsfElectron &,
69  const GsfElectronCoreRef &
70  ) ;
72  (
73  const GsfElectron & electron,
74  const GsfElectronCoreRef & core,
76  const TrackRef & closestCtfTrack,
77  const TrackBaseRef & conversionPartner,
78  const GsfTrackRefVector & ambiguousTracks
79  ) ;
81  (
82  int charge,
83  const ChargeInfo &,
84  const GsfElectronCoreRef &,
85  const TrackClusterMatching &,
86  const TrackExtrapolations &,
87  const ClosestCtfTrack &,
88  const FiducialFlags &,
89  const ShowerShape &,
90  const ConversionRejection &
91  ) ;
93  (
94  int charge,
95  const ChargeInfo &,
96  const GsfElectronCoreRef &,
97  const TrackClusterMatching &,
98  const TrackExtrapolations &,
99  const ClosestCtfTrack &,
100  const FiducialFlags &,
101  const ShowerShape &,
102  const ShowerShape &,
103  const ConversionRejection &,
104  const SaturationInfo &
105  ) ;
106  GsfElectron * clone() const override ;
108  (
109  const GsfElectronCoreRef & core,
110  const CaloClusterPtr & electronCluster,
111  const TrackRef & closestCtfTrack,
112  const TrackBaseRef & conversionPartner,
113  const GsfTrackRefVector & ambiguousTracks
114  ) const ;
115  ~GsfElectron() override {} ;
116 
117  private:
118 
119  void init() ;
120 
121 
122  //=======================================================
123  // Candidate methods and complementary information
124  //
125  // The gsf electron producer has tried to best evaluate
126  // the four momentum and charge and given those values to
127  // the GsfElectron constructor, which forwarded them to
128  // the Candidate constructor. Those values can be retreived
129  // with getters inherited from Candidate : p4() and charge().
130  //=======================================================
131 
132  public:
133 
134  // Inherited from Candidate
135  // const LorentzVector & charge() const ;
136  // const LorentzVector & p4() const ;
137 
138  // Complementary struct
139  struct ChargeInfo
140  {
146  : scPixCharge(0), isGsfCtfScPixConsistent(false),
147  isGsfScPixConsistent(false), isGsfCtfConsistent(false)
148  {}
149  } ;
150 
151  // Charge info accessors
152  // to get gsf track charge: gsfTrack()->charge()
153  // to get ctf track charge, if closestCtfTrackRef().isNonnull(): closestCtfTrackRef()->charge()
154  int scPixCharge() const { return chargeInfo_.scPixCharge ; }
158  const ChargeInfo & chargeInfo() const { return chargeInfo_ ; }
159 
160  // Candidate redefined methods
161  bool isElectron() const override { return true ; }
162  bool overlap( const Candidate & ) const override ;
163 
164  private:
165 
166  // Complementary attributes
168 
169 
170  //=======================================================
171  // Core Attributes
172  //
173  // They all have been computed before, when building the
174  // collection of GsfElectronCore instances. Each GsfElectron
175  // has a reference toward a GsfElectronCore.
176  //=======================================================
177 
178  public:
179 
180  // accessors
181  virtual GsfElectronCoreRef core() const ;
182  void setCore(const reco::GsfElectronCoreRef &core) { core_ = core; }
183 
184  // forward core methods
185  SuperClusterRef superCluster() const override { return core()->superCluster() ; }
186  GsfTrackRef gsfTrack() const override { return core()->gsfTrack() ; }
187  float ctfGsfOverlap() const { return core()->ctfGsfOverlap() ; }
188  bool ecalDrivenSeed() const { return core()->ecalDrivenSeed() ; }
189  bool trackerDrivenSeed() const { return core()->trackerDrivenSeed() ; }
190  virtual SuperClusterRef parentSuperCluster() const { return core()->parentSuperCluster() ; }
192  //methods used for MVA variables
193  float closestCtfTrackNormChi2() const { return closestCtfTrackRefValid() ? closestCtfTrackRef()->normalizedChi2() : 0; }
194  int closestCtfTrackNLayers() const { return closestCtfTrackRefValid() ? closestCtfTrackRef()->hitPattern().trackerLayersWithMeasurement() : -1; }
195 
196  // backward compatibility
198  {
199  TrackRef ctfTrack ; // best matching ctf track
200  float shFracInnerHits ; // fraction of common hits between the ctf and gsf tracks
201  ClosestCtfTrack() : shFracInnerHits(0.) {}
202  ClosestCtfTrack( TrackRef track, float sh ) : ctfTrack(track), shFracInnerHits(sh) {}
203  } ;
204  float shFracInnerHits() const { return core()->ctfGsfOverlap() ; }
205  virtual TrackRef closestCtfTrackRef() const { return core()->ctfTrack() ; }
206  virtual ClosestCtfTrack closestCtfTrack() const { return ClosestCtfTrack(core()->ctfTrack(),core()->ctfGsfOverlap()) ; }
207 
208  private:
209 
210  // attributes
212 
213 
214  //=======================================================
215  // Track-Cluster Matching Attributes
216  //=======================================================
217 
218  public:
219 
221  {
222  CaloClusterPtr electronCluster ; // basic cluster best matching gsf track
223  float eSuperClusterOverP ; // the supercluster energy / track momentum at the PCA to the beam spot
224  float eSeedClusterOverP ; // the seed cluster energy / track momentum at the PCA to the beam spot
225  float eSeedClusterOverPout ; // the seed cluster energy / track momentum at calo extrapolated from the outermost track state
226  float eEleClusterOverPout ; // the electron cluster energy / track momentum at calo extrapolated from the outermost track state
227  float deltaEtaSuperClusterAtVtx ; // the supercluster eta - track eta position at calo extrapolated from innermost track state
228  float deltaEtaSeedClusterAtCalo ; // the seed cluster eta - track eta position at calo extrapolated from the outermost track state
229  float deltaEtaEleClusterAtCalo ; // the electron cluster eta - track eta position at calo extrapolated from the outermost state
230  float deltaPhiEleClusterAtCalo ; // the electron cluster phi - track phi position at calo extrapolated from the outermost track state
231  float deltaPhiSuperClusterAtVtx ; // the supercluster phi - track phi position at calo extrapolated from the innermost track state
232  float deltaPhiSeedClusterAtCalo ; // the seed cluster phi - track phi position at calo extrapolated from the outermost track state
234  : eSuperClusterOverP(0.),
235  eSeedClusterOverP(0.),
236  eSeedClusterOverPout(0.),
237  eEleClusterOverPout(0.),
238  deltaEtaSuperClusterAtVtx(std::numeric_limits<float>::max()),
239  deltaEtaSeedClusterAtCalo(std::numeric_limits<float>::max()),
240  deltaEtaEleClusterAtCalo(std::numeric_limits<float>::max()),
241  deltaPhiEleClusterAtCalo(std::numeric_limits<float>::max()),
242  deltaPhiSuperClusterAtVtx(std::numeric_limits<float>::max()),
243  deltaPhiSeedClusterAtCalo(std::numeric_limits<float>::max())
244  {}
245  } ;
246 
247  // accessors
259  float deltaEtaSeedClusterTrackAtVtx() const { return superCluster().isNonnull() && superCluster()->seed().isNonnull() ?
261  }
263 
264  // for backward compatibility, usefull ?
267 
268 
269  private:
270 
271  // attributes
273 
274 
275  //=======================================================
276  // Track extrapolations
277  //=======================================================
278 
279  public :
280 
282  {
283  math::XYZPointF positionAtVtx ; // the track PCA to the beam spot
284  math::XYZPointF positionAtCalo ; // the track PCA to the supercluster position
285  math::XYZVectorF momentumAtVtx ; // the track momentum at the PCA to the beam spot
286  math::XYZVectorF momentumAtCalo ; // the track momentum extrapolated at the supercluster position from the innermost track state
287  math::XYZVectorF momentumOut ; // the track momentum extrapolated at the seed cluster position from the outermost track state
288  math::XYZVectorF momentumAtEleClus ; // the track momentum extrapolated at the ele cluster position from the outermost track state
289  math::XYZVectorF momentumAtVtxWithConstraint ; // the track momentum at the PCA to the beam spot using bs constraint
290  } ;
291 
292  // accessors
301 
302  // setter (if you know what you're doing)
304 
305  // for backward compatibility
308 
309 
310  private:
311 
312  // attributes
314 
315 
316  //=======================================================
317  // SuperCluster direct access
318  //=======================================================
319 
320  public :
321 
322  // direct accessors
323  math::XYZPoint superClusterPosition() const { return superCluster()->position() ; } // the super cluster position
324  int basicClustersSize() const { return superCluster()->clustersSize() ; } // number of basic clusters inside the supercluster
325  CaloCluster_iterator basicClustersBegin() const { return superCluster()->clustersBegin() ; }
326  CaloCluster_iterator basicClustersEnd() const { return superCluster()->clustersEnd() ; }
327 
328  // for backward compatibility
329  math::XYZPoint caloPosition() const { return superCluster()->position() ; }
330 
331 
332 
333  //=======================================================
334  // Fiducial Flags
335  //=======================================================
336 
337  public :
338 
340  {
341  bool isEB ; // true if particle is in ECAL Barrel
342  bool isEE ; // true if particle is in ECAL Endcaps
343  bool isEBEEGap ; // true if particle is in the crack between EB and EE
344  bool isEBEtaGap ; // true if particle is in EB, and inside the eta gaps between modules
345  bool isEBPhiGap ; // true if particle is in EB, and inside the phi gaps between modules
346  bool isEEDeeGap ; // true if particle is in EE, and inside the gaps between dees
347  bool isEERingGap ; // true if particle is in EE, and inside the gaps between rings
349  : isEB(false), isEE(false), isEBEEGap(false),
350  isEBEtaGap(false), isEBPhiGap(false),
351  isEEDeeGap(false), isEERingGap(false)
352  {}
353  } ;
354 
355  // accessors
356  bool isEB() const { return fiducialFlags_.isEB ; }
357  bool isEE() const { return fiducialFlags_.isEE ; }
358  bool isGap() const { return ((isEBEEGap())||(isEBGap())||(isEEGap())) ; }
359  bool isEBEEGap() const { return fiducialFlags_.isEBEEGap ; }
360  bool isEBGap() const { return (isEBEtaGap()||isEBPhiGap()) ; }
361  bool isEBEtaGap() const { return fiducialFlags_.isEBEtaGap ; }
362  bool isEBPhiGap() const { return fiducialFlags_.isEBPhiGap ; }
363  bool isEEGap() const { return (isEEDeeGap()||isEERingGap()) ; }
364  bool isEEDeeGap() const { return fiducialFlags_.isEEDeeGap ; }
365  bool isEERingGap() const { return fiducialFlags_.isEERingGap ; }
366  const FiducialFlags & fiducialFlags() const { return fiducialFlags_ ; }
367  // setters... not necessary in regular situations
368  // but handy for late stage modifications of electron objects
369  void setFFlagIsEB(const bool b) { fiducialFlags_.isEB = b; }
370  void setFFlagIsEE(const bool b) { fiducialFlags_.isEE = b; }
371  void setFFlagIsEBEEGap(const bool b) { fiducialFlags_.isEBEEGap = b; }
376 
377  private:
378 
379  // attributes
381 
382 
383  //=======================================================
384  // Shower Shape Variables
385  //=======================================================
386 
387  public :
388 
389  struct ShowerShape
390  {
391  float sigmaEtaEta ; // weighted cluster rms along eta and inside 5x5 (absolute eta)
392  float sigmaIetaIeta ; // weighted cluster rms along eta and inside 5x5 (Xtal eta)
393  float sigmaIphiIphi ; // weighted cluster rms along phi and inside 5x5 (Xtal phi)
394  float e1x5 ; // energy inside 1x5 in etaxphi around the seed Xtal
395  float e2x5Max ; // energy inside 2x5 in etaxphi around the seed Xtal (max bwt the 2 possible sums)
396  float e5x5 ; // energy inside 5x5 in etaxphi around the seed Xtal
397  float r9 ; // ratio of the 3x3 energy and supercluster energy
398  float hcalDepth1OverEcal ; // hcal over ecal seed cluster energy using 1st hcal depth (using hcal towers within a cone)
399  float hcalDepth2OverEcal ; // hcal over ecal seed cluster energy using 2nd hcal depth (using hcal towers within a cone)
400  std::vector<CaloTowerDetId> hcalTowersBehindClusters ; //
401  float hcalDepth1OverEcalBc ; // hcal over ecal seed cluster energy using 1st hcal depth (using hcal towers behind clusters)
402  float hcalDepth2OverEcalBc ; // hcal over ecal seed cluster energy using 2nd hcal depth (using hcal towers behind clusters)
403  bool invalidHcal ; // set to true if the hcal energy estimate is not valid (e.g. the corresponding tower was off or masked)
405  float eMax;
406  float e2nd;
407  float eTop;
408  float eLeft;
409  float eRight;
410  float eBottom;
411  float e2x5Top;
412  float e2x5Left;
413  float e2x5Right;
414  float e2x5Bottom;
416  : sigmaEtaEta(std::numeric_limits<float>::max()),
417  sigmaIetaIeta(std::numeric_limits<float>::max()),
418  sigmaIphiIphi(std::numeric_limits<float>::max()),
419  e1x5(0.), e2x5Max(0.), e5x5(0.),
420  r9(-std::numeric_limits<float>::max()),
421  hcalDepth1OverEcal(0.), hcalDepth2OverEcal(0.),
422  hcalDepth1OverEcalBc(0.), hcalDepth2OverEcalBc(0.),
423  invalidHcal(false),
424  sigmaIetaIphi(0.f),
425  eMax(0.f),
426  e2nd(0.f),
427  eTop(0.f),
428  eLeft(0.f),
429  eRight(0.f),
430  eBottom(0.f),
431  e2x5Top(0.f),
432  e2x5Left(0.f),
433  e2x5Right(0.f),
434  e2x5Bottom(0.f)
435  {}
436  } ;
437 
438  // accessors
439  float sigmaEtaEta() const { return showerShape_.sigmaEtaEta ; }
440  float sigmaIetaIeta() const { return showerShape_.sigmaIetaIeta ; }
441  float sigmaIphiIphi() const { return showerShape_.sigmaIphiIphi ; }
442  float e1x5() const { return showerShape_.e1x5 ; }
443  float e2x5Max() const { return showerShape_.e2x5Max ; }
444  float e5x5() const { return showerShape_.e5x5 ; }
445  float r9() const { return showerShape_.r9 ; }
448  float hcalOverEcal() const { return hcalDepth1OverEcal() + hcalDepth2OverEcal() ; }
449  const std::vector<CaloTowerDetId> & hcalTowersBehindClusters() const { return showerShape_.hcalTowersBehindClusters ; }
452  float hcalOverEcalBc() const { return hcalDepth1OverEcalBc() + hcalDepth2OverEcalBc() ; }
453  float hcalOverEcalValid() const { return !showerShape_.invalidHcal; }
454  float eLeft() const { return showerShape_.eLeft; }
455  float eRight() const { return showerShape_.eRight; }
456  float eTop() const { return showerShape_.eTop; }
457  float eBottom() const { return showerShape_.eBottom; }
458  const ShowerShape & showerShape() const { return showerShape_ ; }
459  // non-zero-suppressed and no-fractions shower shapes
460  // ecal energy is always that from the full 5x5
464  float full5x5_e1x5() const { return full5x5_showerShape_.e1x5 ; }
465  float full5x5_e2x5Max() const { return full5x5_showerShape_.e2x5Max ; }
466  float full5x5_e5x5() const { return full5x5_showerShape_.e5x5 ; }
467  float full5x5_r9() const { return full5x5_showerShape_.r9 ; }
477  float full5x5_e2x5Top() const { return full5x5_showerShape_.e2x5Top; }
479  float full5x5_eLeft() const { return full5x5_showerShape_.eLeft; }
480  float full5x5_eRight() const { return full5x5_showerShape_.eRight; }
481  float full5x5_eTop() const { return full5x5_showerShape_.eTop; }
482  float full5x5_eBottom() const { return full5x5_showerShape_.eBottom; }
484 
485  // setters (if you know what you're doing)
488 
489  // for backward compatibility (this will only ever be the ZS shapes!)
490  float scSigmaEtaEta() const { return sigmaEtaEta() ; }
491  float scSigmaIEtaIEta() const { return sigmaIetaIeta() ; }
492  float scE1x5() const { return e1x5() ; }
493  float scE2x5Max() const { return e2x5Max() ; }
494  float scE5x5() const { return e5x5() ; }
495  float hadronicOverEm() const {return hcalOverEcal();}
496  float hadronicOverEm1() const {return hcalDepth1OverEcal();}
497  float hadronicOverEm2() const {return hcalDepth2OverEcal();}
498 
499 
500  private:
501 
502  // attributes
505 
506  //=======================================================
507  // SaturationInfo
508  //=======================================================
509 
510  public :
511 
512  struct SaturationInfo {
516  : nSaturatedXtals(0), isSeedSaturated(false) {};
517  } ;
518 
519  // accessors
522  const SaturationInfo& saturationInfo() const { return saturationInfo_; }
524 
525  private:
526 
528 
529  //=======================================================
530  // Isolation Variables
531  //=======================================================
532 
533  public :
534 
536  {
537  float tkSumPt ; // track iso with electron footprint removed
538  float tkSumPtHEEP ; // track iso used for the HEEP ID
539  float ecalRecHitSumEt ; // ecal iso deposit with electron footprint removed
540  float hcalDepth1TowerSumEt ; // hcal depht 1 iso deposit with electron footprint removed
541  float hcalDepth2TowerSumEt ; // hcal depht 2 iso deposit with electron footprint removed
542  float hcalDepth1TowerSumEtBc ; // hcal depht 1 iso deposit without towers behind clusters
543  float hcalDepth2TowerSumEtBc ; // hcal depht 2 iso deposit without towers behind clusters
545  : tkSumPt(0.), tkSumPtHEEP(0.), ecalRecHitSumEt(0.),
546  hcalDepth1TowerSumEt(0.), hcalDepth2TowerSumEt(0.),
547  hcalDepth1TowerSumEtBc(0.), hcalDepth2TowerSumEtBc(0.)
548  {}
549  } ;
550 
551  // 03 accessors
552  float dr03TkSumPt() const { return dr03_.tkSumPt ; }
553  float dr03TkSumPtHEEP() const { return dr03_.tkSumPtHEEP ; }
554  float dr03EcalRecHitSumEt() const { return dr03_.ecalRecHitSumEt ; }
561  const IsolationVariables & dr03IsolationVariables() const { return dr03_ ; }
562 
563  // 04 accessors
564  float dr04TkSumPt() const { return dr04_.tkSumPt ; }
565  float dr04TkSumPtHEEP() const { return dr04_.tkSumPtHEEP ; }
566  float dr04EcalRecHitSumEt() const { return dr04_.ecalRecHitSumEt ; }
573  const IsolationVariables & dr04IsolationVariables() const { return dr04_ ; }
574 
575  // setters ?!?
576  void setDr03Isolation( const IsolationVariables & dr03 ) { dr03_ = dr03 ; }
577  void setDr04Isolation( const IsolationVariables & dr04 ) { dr04_ = dr04 ; }
578 
579  // for backward compatibility
580  void setIsolation03( const IsolationVariables & dr03 ) { dr03_ = dr03 ; }
581  void setIsolation04( const IsolationVariables & dr04 ) { dr04_ = dr04 ; }
582  const IsolationVariables & isolationVariables03() const { return dr03_ ; }
583  const IsolationVariables & isolationVariables04() const { return dr04_ ; }
584 
585  private:
586 
587  // attributes
590 
591 
592  //=======================================================
593  // Conversion Rejection Information
594  //=======================================================
595 
596  public :
597 
599  {
600  int flags ; // -max:not-computed, other: as computed by Puneeth conversion code
601  TrackBaseRef partner ; // conversion partner
602  float dist ; // distance to the conversion partner
603  float dcot ; // difference of cot(angle) with the conversion partner track
604  float radius ; // signed conversion radius
605  float vtxFitProb ; //fit probablity (chi2/ndof) of the matched conversion vtx
607  : flags(-1),
608  dist(std::numeric_limits<float>::max()),
609  dcot(std::numeric_limits<float>::max()),
610  radius(std::numeric_limits<float>::max()),
611  vtxFitProb(std::numeric_limits<float>::max())
612  {}
613  } ;
614 
615  // accessors
616  int convFlags() const { return conversionRejection_.flags ; }
618  float convDist() const { return conversionRejection_.dist ; }
619  float convDcot() const { return conversionRejection_.dcot ; }
620  float convRadius() const { return conversionRejection_.radius ; }
621  float convVtxFitProb() const { return conversionRejection_.vtxFitProb ; }
624  private:
625 
626  // attributes
628 
629 
630  //=======================================================
631  // Pflow Information
632  //=======================================================
633 
634  public:
635 
637  {
638  //first three data members that changed names, according to DataFormats/MuonReco/interface/MuonPFIsolation.h
641  float sumPhotonEt;
642  //then four new data members, corresponding to DataFormats/MuonReco/interface/MuonPFIsolation.h
646  float sumPUPt;
647  //new pf cluster based isolation values
648  float sumEcalClusterEt; //sum pt of ecal clusters, vetoing clusters part of electron
649  float sumHcalClusterEt; //sum pt of hcal clusters, vetoing clusters part of electron
651  sumChargedHadronPt(0),sumNeutralHadronEt(0),sumPhotonEt(0),sumChargedParticlePt(0),
652  sumNeutralHadronEtHighThreshold(0),sumPhotonEtHighThreshold(0),sumPUPt(0),
653  sumEcalClusterEt(0),sumHcalClusterEt(0){};
654  } ;
655 
656  struct MvaInput
657  {
658  int earlyBrem ; // Early Brem detected (-2=>unknown,-1=>could not be evaluated,0=>wrong,1=>true)
659  int lateBrem ; // Late Brem detected (-2=>unknown,-1=>could not be evaluated,0=>wrong,1=>true)
660  float sigmaEtaEta ; // Sigma-eta-eta with the PF cluster
661  float hadEnergy ; // Associated PF Had Cluster energy
662  float deltaEta ; // PF-cluster GSF track delta-eta
663  int nClusterOutsideMustache ; // -2 => unknown, -1 =>could not be evaluated, 0 and more => number of clusters
666  : earlyBrem(-2), lateBrem(-2),
667  sigmaEtaEta(std::numeric_limits<float>::max()),
668  hadEnergy(0.),
669  deltaEta(std::numeric_limits<float>::max()),
670  nClusterOutsideMustache(-2),
671  etOutsideMustache(-std::numeric_limits<float>::max())
672  {}
673  } ;
674 
675  struct MvaOutput
676  {
677  int status ; // see PFCandidateElectronExtra::StatusFlag
678  float mva_Isolated ;
679  float mva_e_pi ;
680  float mvaByPassForIsolated ; // complementary MVA used in preselection
682  : status(-1), mva_Isolated(-999999999.),mva_e_pi(-999999999.), mvaByPassForIsolated(-999999999.)
683  {}
684  } ;
685 
686  // accessors
688  //backwards compat functions for pat::Electron
689  float ecalPFClusterIso() const { return pfIso_.sumEcalClusterEt; };
690  float hcalPFClusterIso() const { return pfIso_.sumHcalClusterEt; };
691 
692  const MvaInput & mvaInput() const { return mvaInput_ ; }
693  const MvaOutput & mvaOutput() const { return mvaOutput_ ; }
694 
695  // setters
697  void setMvaInput( const MvaInput & mi ) { mvaInput_ = mi ; }
698  void setMvaOutput( const MvaOutput & mo ) { mvaOutput_ = mo ; }
699 
700  // for backward compatibility
701  float mva_Isolated() const { return mvaOutput_.mva_Isolated ; }
702  float mva_e_pi() const { return mvaOutput_.mva_e_pi ; }
703 
704  private:
705 
709 
710 
711  //=======================================================
712  // Preselection and Ambiguity
713  //=======================================================
714 
715  public :
716 
717  // accessors
718  bool ecalDriven() const ; // return true if ecalDrivenSeed() and passingCutBasedPreselection()
721  bool ambiguous() const { return ambiguous_ ; }
725 
726  // setters
729  void setAmbiguous( bool flag ) { ambiguous_ = flag ; }
732 
733  // backward compatibility
735  bool passingMvaPreselection() const { return passMvaPreslection_ ; }
736 
737  private:
738 
739  // attributes
742  bool passMvaPreslection_ ; // to be removed : passPflowPreslection_
743  bool ambiguous_ ;
744  GsfTrackRefVector ambiguousGsfTracks_ ; // ambiguous gsf tracks
745 
746 
747  //=======================================================
748  // Brem Fractions and Classification
749  //=======================================================
750 
751  public :
752 
754  {
755  float trackFbrem ; // the brem fraction from gsf fit: (track momentum in - track momentum out) / track momentum in
756  float superClusterFbrem ; // the brem fraction from supercluster: (supercluster energy - electron cluster energy) / supercluster energy
757  constexpr static float kDefaultValue = -1.e30;
759  : trackFbrem(kDefaultValue), superClusterFbrem(kDefaultValue)
760  {}
761  } ;
763 
764  // accessors
765  float trackFbrem() const { return classVariables_.trackFbrem ; }
768  Classification classification() const { return class_ ; }
769 
770  // utilities
771  int numberOfBrems() const { return basicClustersSize()-1 ; }
772  float fbrem() const { return trackFbrem() ; }
773 
774  // setters
778  void setClassification( Classification myclass ) { class_ = myclass ; }
779 
780  private:
781 
782  // attributes
784  Classification class_ ; // fbrem and number of clusters based electron classification
785 
786 
787  //=======================================================
788  // Corrections
789  //
790  // The only methods, with classification, which modify
791  // the electrons after they have been constructed.
792  // They change a given characteristic, such as the super-cluster
793  // energy, and propagate the change consistently
794  // to all the depending attributes.
795  // We expect the methods to be called in a given order
796  // and so to store specific kind of corrections
797  // 1) classify()
798  // 2) correctEcalEnergy() : depending on classification and eta
799  // 3) correctMomemtum() : depending on classification and ecal energy and tracker momentum errors
800  //
801  // Beware that correctEcalEnergy() is modifying few attributes which
802  // were potentially used for preselection, whose value used in
803  // preselection will not be available any more :
804  // hcalDepth1OverEcal, hcalDepth2OverEcal, eSuperClusterOverP,
805  // eSeedClusterOverP, eEleClusterOverPout.
806  //=======================================================
807 
808  public :
809 
811 
812  struct Corrections
813  {
814  bool isEcalEnergyCorrected ; // true if ecal energy has been corrected
815  float correctedEcalEnergy ; // corrected energy (if !isEcalEnergyCorrected this value is identical to the supercluster energy)
816  float correctedEcalEnergyError ; // error on energy
817  //bool isMomentumCorrected ; // DEPRECATED
818  float trackMomentumError ; // track momentum error from gsf fit
819  //
820  LorentzVector fromSuperClusterP4 ; // for P4_FROM_SUPER_CLUSTER
821  float fromSuperClusterP4Error ; // for P4_FROM_SUPER_CLUSTER
822  LorentzVector combinedP4 ; // for P4_COMBINATION
823  float combinedP4Error ; // for P4_COMBINATION
824  LorentzVector pflowP4 ; // for P4_PFLOW_COMBINATION
825  float pflowP4Error ; // for P4_PFLOW_COMBINATION
826  P4Kind candidateP4Kind ; // say which momentum has been stored in reco::Candidate
827  //
829  : isEcalEnergyCorrected(false), correctedEcalEnergy(0.), correctedEcalEnergyError(999.),
830  /*isMomentumCorrected(false),*/ trackMomentumError(999.),
831  fromSuperClusterP4Error(999.), combinedP4Error(999.), pflowP4Error(999.),
832  candidateP4Kind(P4_UNKNOWN)
833  {}
834  } ;
835 
836  // setters
837  void setCorrectedEcalEnergyError( float newEnergyError ) ;
838  void setCorrectedEcalEnergy( float newEnergy ) ;
840  void setP4( P4Kind kind, const LorentzVector & p4, float p4Error, bool setCandidate ) ;
841  using RecoCandidate::setP4 ;
842 
843  // accessors
848  const LorentzVector & p4( P4Kind kind ) const ;
849  using RecoCandidate::p4 ;
850  float p4Error( P4Kind kind ) const ;
852  const Corrections & corrections() const { return corrections_ ; }
853 
854  // bare setter (if you know what you're doing)
856 
857  // for backward compatibility
859  float ecalEnergy() const { return correctedEcalEnergy() ; }
860  float ecalEnergyError() const { return correctedEcalEnergyError() ; }
861  //bool isMomentumCorrected() const { return corrections_.isMomentumCorrected ; }
862  float caloEnergy() const { return correctedEcalEnergy() ; }
863  bool isEnergyScaleCorrected() const { return isEcalEnergyCorrected() ; }
864  void correctEcalEnergy( float newEnergy, float newEnergyError )
865  {
866  setCorrectedEcalEnergy(newEnergy) ;
867  setEcalEnergyError(newEnergyError) ;
868  }
869  void correctMomentum( const LorentzVector & p4, float trackMomentumError, float p4Error )
870  { setTrackMomentumError(trackMomentumError) ; setP4(P4_COMBINATION,p4,p4Error,true) ; }
871 
872 
873  private:
874 
875  // attributes
877 
878  public:
881  float dPhi1 ;
883  float dPhi2 ;
885  float dRz1 ;
887  float dRz2 ;
889  unsigned char subdetectors ;
891  dPhi1(-999),
892  dPhi2(-999),
893  dRz1(-999),
894  dRz2(-999),
895  subdetectors(0)
896  {}
898  };
899  void setPixelMatchSubdetectors(int sd1, int sd2){ pixelMatchVariables_.subdetectors = 10*sd1+sd2 ; }
900  void setPixelMatchDPhi1(float dPhi1){ pixelMatchVariables_.dPhi1 = dPhi1 ; }
901  void setPixelMatchDPhi2(float dPhi2){ pixelMatchVariables_.dPhi2 = dPhi2 ; }
902  void setPixelMatchDRz1 (float dRz1 ){ pixelMatchVariables_.dRz1 = dRz1 ; }
903  void setPixelMatchDRz2 (float dRz2 ){ pixelMatchVariables_.dRz2 = dRz2 ; }
904 
907  float pixelMatchDPhi1() const { return pixelMatchVariables_.dPhi1 ; }
908  float pixelMatchDPhi2() const { return pixelMatchVariables_.dPhi2 ; }
909  float pixelMatchDRz1 () const { return pixelMatchVariables_.dRz1 ; }
910  float pixelMatchDRz2 () const { return pixelMatchVariables_.dRz2 ; }
911  private:
913  } ;
914 
915  } // namespace reco
916 
917 #endif
const PflowIsolationVariables & pfIsolationVariables() const
Definition: GsfElectron.h:687
CaloCluster_iterator basicClustersEnd() const
Definition: GsfElectron.h:326
float sigmaIphiIphi() const
Definition: GsfElectron.h:441
CaloClusterPtr electronCluster() const
Definition: GsfElectron.h:248
bool isEEGap() const
Definition: GsfElectron.h:363
void setDr04Isolation(const IsolationVariables &dr04)
Definition: GsfElectron.h:577
const ShowerShape & showerShape() const
Definition: GsfElectron.h:458
bool isAvailable() const
Definition: Ref.h:575
float dPhi1
Pixel match variable: deltaPhi for innermost hit.
Definition: GsfElectron.h:881
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
Definition: GsfElectron.h:186
float dr04HcalTowerSumEt() const
Definition: GsfElectron.h:569
float full5x5_eLeft() const
Definition: GsfElectron.h:479
unsigned char subdetectors
Subdetectors for first and second pixel hit.
Definition: GsfElectron.h:889
void correctEcalEnergy(float newEnergy, float newEnergyError)
Definition: GsfElectron.h:864
void setTrackFbrem(float fbrem)
Definition: GsfElectron.h:775
MvaInput mvaInput_
Definition: GsfElectron.h:707
PixelMatchVariables pixelMatchVariables_
Definition: GsfElectron.h:912
void setP4(P4Kind kind, const LorentzVector &p4, float p4Error, bool setCandidate)
Definition: GsfElectron.cc:199
float nSaturatedXtals() const
Definition: GsfElectron.h:520
void setPassCutBasedPreselection(bool flag)
Definition: GsfElectron.h:727
virtual TrackRef closestCtfTrackRef() const
Definition: GsfElectron.h:205
float trackMomentumError() const
Definition: GsfElectron.h:847
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:251
GsfTrackRefVector::const_iterator ambiguousGsfTracksBegin() const
Definition: GsfElectron.h:723
void setFFlagIsEE(const bool b)
Definition: GsfElectron.h:370
void setPixelMatchDRz2(float dRz2)
Definition: GsfElectron.h:903
float scSigmaEtaEta() const
Definition: GsfElectron.h:490
void setCore(const reco::GsfElectronCoreRef &core)
Definition: GsfElectron.h:182
const Corrections & corrections() const
Definition: GsfElectron.h:852
bool isEBEtaGap() const
Definition: GsfElectron.h:361
float dr03HcalDepth1TowerSumEtBc() const
Definition: GsfElectron.h:558
virtual SuperClusterRef parentSuperCluster() const
Definition: GsfElectron.h:190
float eSuperClusterOverP() const
Definition: GsfElectron.h:249
float dRz2
Pixel match variable: deltaRz for second hit.
Definition: GsfElectron.h:887
P4Kind candidateP4Kind() const
Definition: GsfElectron.h:851
const TrackExtrapolations & trackExtrapolations() const
Definition: GsfElectron.h:300
float full5x5_e5x5() const
Definition: GsfElectron.h:466
float full5x5_hcalDepth1OverEcalBc() const
Definition: GsfElectron.h:471
void setPixelMatchDPhi1(float dPhi1)
Definition: GsfElectron.h:900
math::XYZVectorF trackMomentumAtVtxWithConstraint() const
Definition: GsfElectron.h:299
GsfElectron * clone() const override
returns a clone of the Candidate object
Definition: GsfElectron.cc:161
const IsolationVariables & isolationVariables03() const
Definition: GsfElectron.h:582
bool isEBEEGap() const
Definition: GsfElectron.h:359
float dr04HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:567
float hcalDepth2OverEcal() const
Definition: GsfElectron.h:447
bool overlap(const Candidate &) const override
check overlap with another candidate
Definition: GsfElectron.cc:152
float full5x5_e1x5() const
Definition: GsfElectron.h:464
const SaturationInfo & saturationInfo() const
Definition: GsfElectron.h:522
float pixelMatchDRz2() const
Definition: GsfElectron.h:910
float hadronicOverEm1() const
Definition: GsfElectron.h:496
Classification class_
Definition: GsfElectron.h:784
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error)
Definition: GsfElectron.h:869
float full5x5_hcalDepth2OverEcal() const
Definition: GsfElectron.h:469
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:295
ConversionRejection conversionRejection_
Definition: GsfElectron.h:627
Definition: __init__.py:1
void setMvaInput(const MvaInput &mi)
Definition: GsfElectron.h:697
void setSaturationInfo(const SaturationInfo &s)
Definition: GsfElectron.h:523
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
Definition: GsfElectron.h:646
float p4Error(P4Kind kind) const
Definition: GsfElectron.cc:237
float full5x5_sigmaIphiIphi() const
Definition: GsfElectron.h:463
float full5x5_hcalOverEcalValid() const
Definition: GsfElectron.h:474
void setShowerShape(const ShowerShape &s)
Definition: GsfElectron.h:486
float isSeedSaturated() const
Definition: GsfElectron.h:521
float dr04TkSumPt() const
Definition: GsfElectron.h:564
Corrections corrections_
Definition: GsfElectron.h:876
float pixelMatchDPhi2() const
Definition: GsfElectron.h:908
SaturationInfo saturationInfo_
Definition: GsfElectron.h:527
int charge() const final
electric charge
Definition: LeafCandidate.h:91
float sumNeutralHadronEtHighThreshold
sum pt of neutral hadrons with a higher threshold
Definition: GsfElectron.h:644
bool isEERingGap() const
Definition: GsfElectron.h:365
bool passingCutBasedPreselection() const
Definition: GsfElectron.h:719
bool passingMvaPreselection() const
Definition: GsfElectron.h:735
cv
Definition: cuy.py:364
float dr03HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:556
float sumChargedParticlePt
sum-pt of charged Particles(inludes e/mu)
Definition: GsfElectron.h:643
float hcalOverEcalValid() const
Definition: GsfElectron.h:453
float fbrem() const
Definition: GsfElectron.h:772
const std::vector< CaloTowerDetId > & hcalTowersBehindClusters() const
Definition: GsfElectron.h:449
void setAmbiguous(bool flag)
Definition: GsfElectron.h:729
GsfTrackRefVector ambiguousGsfTracks_
Definition: GsfElectron.h:744
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
float scE2x5Max() const
Definition: GsfElectron.h:493
void setConversionRejectionVariables(const ConversionRejection &convRej)
Definition: GsfElectron.h:623
float e2x5Max() const
Definition: GsfElectron.h:443
float eBottom() const
Definition: GsfElectron.h:457
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:253
int basicClustersSize() const
Definition: GsfElectron.h:324
float convDist() const
Definition: GsfElectron.h:618
float dr03TkSumPtHEEP() const
Definition: GsfElectron.h:553
ChargeInfo chargeInfo_
Definition: GsfElectron.h:167
float convRadius() const
Definition: GsfElectron.h:620
void setPfIsolationVariables(const PflowIsolationVariables &iso)
Definition: GsfElectron.h:696
math::XYZPointF TrackPositionAtVtx() const
Definition: GsfElectron.h:306
void setDr03Isolation(const IsolationVariables &dr03)
Definition: GsfElectron.h:576
bool isEEDeeGap() const
Definition: GsfElectron.h:364
void setMvaOutput(const MvaOutput &mo)
Definition: GsfElectron.h:698
float dr04HcalTowerSumEtBc() const
Definition: GsfElectron.h:572
bool ambiguous() const
Definition: GsfElectron.h:721
const IsolationVariables & dr04IsolationVariables() const
Definition: GsfElectron.h:573
const ClassificationVariables & classificationVariables() const
Definition: GsfElectron.h:767
float superClusterFbrem() const
Definition: GsfElectron.h:766
bool isEcalEnergyCorrected() const
Definition: GsfElectron.h:844
bool isElectron() const override
Definition: GsfElectron.h:161
bool isEE() const
Definition: GsfElectron.h:357
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:248
bool isEB() const
Definition: GsfElectron.h:356
void setPixelMatchSubdetectors(int sd1, int sd2)
Definition: GsfElectron.h:899
virtual reco::TrackRef track() const
reference to a Track
GsfTrackRefVector::const_iterator ambiguousGsfTracksEnd() const
Definition: GsfElectron.h:724
void setSuperClusterFbrem(float fbrem)
Definition: GsfElectron.h:776
int closestCtfTrackNLayers() const
Definition: GsfElectron.h:194
float convDcot() const
Definition: GsfElectron.h:619
float full5x5_sigmaIetaIeta() const
Definition: GsfElectron.h:462
void clearAmbiguousGsfTracks()
Definition: GsfElectron.h:730
~GsfElectron() override
Definition: GsfElectron.h:115
void setFFlagIsEBEEGap(const bool b)
Definition: GsfElectron.h:371
bool isGsfScPixChargeConsistent() const
Definition: GsfElectron.h:156
int pixelMatchSubdetector1() const
Definition: GsfElectron.h:905
const IsolationVariables & isolationVariables04() const
Definition: GsfElectron.h:583
float full5x5_e2x5Top() const
Definition: GsfElectron.h:477
void setFFlagIsEBEtaGap(const bool b)
Definition: GsfElectron.h:372
PflowIsolationVariables pfIso_
Definition: GsfElectron.h:706
bool isGap() const
Definition: GsfElectron.h:358
float dr04HcalDepth2TowerSumEt() const
Definition: GsfElectron.h:568
math::XYZVectorF trackMomentumAtCalo() const
Definition: GsfElectron.h:296
bool isGsfCtfChargeConsistent() const
Definition: GsfElectron.h:157
float pixelMatchDPhi1() const
Definition: GsfElectron.h:907
float deltaEtaSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:253
void setFFlagIsEERingGap(const bool b)
Definition: GsfElectron.h:375
float dPhi2
Pixel match variable: deltaPhi for second hit.
Definition: GsfElectron.h:883
void setCorrectedEcalEnergyError(float newEnergyError)
Definition: GsfElectron.cc:179
#define kDefaultValue
float sigmaIetaIeta() const
Definition: GsfElectron.h:440
float hadronicOverEm() const
Definition: GsfElectron.h:495
float dr03HcalDepth2TowerSumEtBc() const
Definition: GsfElectron.h:559
float eSeedClusterOverP() const
Definition: GsfElectron.h:250
MvaOutput mvaOutput_
Definition: GsfElectron.h:708
float dr04EcalRecHitSumEt() const
Definition: GsfElectron.h:566
FiducialFlags fiducialFlags_
Definition: GsfElectron.h:380
float closestCtfTrackNormChi2() const
Definition: GsfElectron.h:193
float deltaPhiSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:257
const MvaInput & mvaInput() const
Definition: GsfElectron.h:692
float sumPhotonEtHighThreshold
sum pt of PF photons with a higher threshold
Definition: GsfElectron.h:645
float full5x5_sigmaEtaEta() const
Definition: GsfElectron.h:461
ShowerShape showerShape_
Definition: GsfElectron.h:503
float trackFbrem() const
Definition: GsfElectron.h:765
math::XYZVectorF trackMomentumOut() const
Definition: GsfElectron.h:297
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:641
float deltaPhiSuperClusterTrackAtVtx() const
Definition: GsfElectron.h:256
int numberOfBrems() const
Definition: GsfElectron.h:771
float eLeft() const
Definition: GsfElectron.h:454
float hcalOverEcal() const
Definition: GsfElectron.h:448
void setPassMvaPreselection(bool flag)
Definition: GsfElectron.h:734
float dr04HcalDepth1TowerSumEtBc() const
Definition: GsfElectron.h:570
float dr03TkSumPt() const
Definition: GsfElectron.h:552
math::XYZPointF trackPositionAtCalo() const
Definition: GsfElectron.h:294
void setFFlagIsEBPhiGap(const bool b)
Definition: GsfElectron.h:373
std::vector< CaloTowerDetId > hcalTowersBehindClusters
Definition: GsfElectron.h:400
float dr03HcalDepth1TowerSumEt() const
Definition: GsfElectron.h:555
double f[11][100]
float eTop() const
Definition: GsfElectron.h:456
math::XYZPointF TrackPositionAtCalo() const
Definition: GsfElectron.h:307
const LorentzVector & p4() const final
four-momentum Lorentz vector
Definition: LeafCandidate.h:99
float eEleClusterOverPout() const
Definition: GsfElectron.h:252
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:640
float eSeedClusterOverPout() const
Definition: GsfElectron.h:251
void setFFlagIsEB(const bool b)
Definition: GsfElectron.h:369
float full5x5_hcalOverEcalBc() const
Definition: GsfElectron.h:473
float hcalPFClusterIso() const
Definition: GsfElectron.h:690
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:17
float hadronicOverEm2() const
Definition: GsfElectron.h:497
int pixelMatchSubdetector2() const
Definition: GsfElectron.h:906
float hcalOverEcalBc() const
Definition: GsfElectron.h:452
int scPixCharge() const
Definition: GsfElectron.h:154
float scSigmaIEtaIEta() const
Definition: GsfElectron.h:491
float pixelMatchDRz1() const
Definition: GsfElectron.h:909
void setIsolation04(const IsolationVariables &dr04)
Definition: GsfElectron.h:581
IsolationVariables dr04_
Definition: GsfElectron.h:589
float ecalEnergyError() const
Definition: GsfElectron.h:860
float deltaPhiEleClusterTrackAtCalo() const
Definition: GsfElectron.h:258
void setDeltaPhiSuperClusterAtVtx(float dphi)
Definition: GsfElectron.h:266
bool isEnergyScaleCorrected() const
Definition: GsfElectron.h:863
void setEcalEnergyError(float energyError)
Definition: GsfElectron.h:858
void setTrackMomentumError(float trackMomentumError)
Definition: GsfElectron.cc:195
math::XYZPoint superClusterPosition() const
Definition: GsfElectron.h:323
float full5x5_hcalDepth1OverEcal() const
Definition: GsfElectron.h:468
float deltaEtaSeedClusterTrackAtVtx() const
Definition: GsfElectron.h:259
float dr04TkSumPtHEEP() const
Definition: GsfElectron.h:565
float hcalDepth1OverEcal() const
Definition: GsfElectron.h:446
float shFracInnerHits() const
Definition: GsfElectron.h:204
float correctedEcalEnergy() const
Definition: GsfElectron.h:845
void setPixelMatchDPhi2(float dPhi2)
Definition: GsfElectron.h:901
ClassificationVariables classVariables_
Definition: GsfElectron.h:783
bool isEBGap() const
Definition: GsfElectron.h:360
GsfElectronCoreRef core_
Definition: GsfElectron.h:211
ShowerShape full5x5_showerShape_
Definition: GsfElectron.h:504
TrackBaseRef convPartner() const
Definition: GsfElectron.h:617
float full5x5_e2x5Bottom() const
Definition: GsfElectron.h:478
const ChargeInfo & chargeInfo() const
Definition: GsfElectron.h:158
float full5x5_e2x5Max() const
Definition: GsfElectron.h:465
float eRight() const
Definition: GsfElectron.h:455
CaloCluster_iterator basicClustersBegin() const
Definition: GsfElectron.h:325
void clear()
Clear the vector.
Definition: RefVector.h:147
float deltaEtaEleClusterTrackAtCalo() const
Definition: GsfElectron.h:255
void setClassification(Classification myclass)
Definition: GsfElectron.h:778
float e1x5() const
Definition: GsfElectron.h:442
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
Classification classification() const
Definition: GsfElectron.h:768
float hcalDepth2OverEcalBc() const
Definition: GsfElectron.h:451
const MvaOutput & mvaOutput() const
Definition: GsfElectron.h:693
float full5x5_hcalOverEcal() const
Definition: GsfElectron.h:470
math::XYZPoint caloPosition() const
Definition: GsfElectron.h:329
GsfTrackRefVector::size_type ambiguousGsfTracksSize() const
Definition: GsfElectron.h:722
float dr04HcalDepth2TowerSumEtBc() const
Definition: GsfElectron.h:571
double b
Definition: hdecay.h:120
float full5x5_eBottom() const
Definition: GsfElectron.h:482
float full5x5_hcalDepth2OverEcalBc() const
Definition: GsfElectron.h:472
bool closestCtfTrackRefValid() const
Definition: GsfElectron.h:191
float full5x5_eTop() const
Definition: GsfElectron.h:481
float ecalPFClusterIso() const
Definition: GsfElectron.h:689
float ecalEnergy() const
Definition: GsfElectron.h:859
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
virtual GsfElectronCoreRef core() const
Definition: GsfElectron.cc:8
float mva_Isolated() const
Definition: GsfElectron.h:701
float dr03EcalRecHitSumEt() const
Definition: GsfElectron.h:554
math::XYZVectorF trackMomentumAtEleClus() const
Definition: GsfElectron.h:298
float mva_e_pi() const
Definition: GsfElectron.h:702
float e5x5() const
Definition: GsfElectron.h:444
float dr03HcalTowerSumEtBc() const
Definition: GsfElectron.h:560
float full5x5_r9() const
Definition: GsfElectron.h:467
math::XYZVectorF momentumAtVtxWithConstraint
Definition: GsfElectron.h:289
float correctedEcalEnergyError() const
Definition: GsfElectron.h:846
void setCorrectedEcalEnergy(float newEnergy)
Definition: GsfElectron.cc:182
void setIsolation03(const IsolationVariables &dr03)
Definition: GsfElectron.h:580
float r9() const
Definition: GsfElectron.h:445
float deltaEtaSeedClusterTrackAtCalo() const
Definition: GsfElectron.h:254
const ShowerShape & full5x5_showerShape() const
Definition: GsfElectron.h:483
fixed size matrix
void setTrackExtrapolations(const TrackExtrapolations &te)
Definition: GsfElectron.h:303
const IsolationVariables & dr03IsolationVariables() const
Definition: GsfElectron.h:561
int convFlags() const
Definition: GsfElectron.h:616
math::XYZPointF trackPositionAtVtx() const
Definition: GsfElectron.h:293
float full5x5_eRight() const
Definition: GsfElectron.h:480
bool isEBPhiGap() const
Definition: GsfElectron.h:362
bool isGsfCtfScPixChargeConsistent() const
Definition: GsfElectron.h:155
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:185
ClosestCtfTrack(TrackRef track, float sh)
Definition: GsfElectron.h:202
const TrackClusterMatching & trackClusterMatching() const
Definition: GsfElectron.h:262
float convVtxFitProb() const
Definition: GsfElectron.h:621
bool trackerDrivenSeed() const
Definition: GsfElectron.h:189
void setPassPflowPreselection(bool flag)
Definition: GsfElectron.h:728
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:69
size_type size() const
Size of the RefVector.
Definition: RefVector.h:107
float dr03HcalTowerSumEt() const
Definition: GsfElectron.h:557
const ConversionRejection & conversionRejectionVariables() const
Definition: GsfElectron.h:622
void setDeltaEtaSuperClusterAtVtx(float de)
Definition: GsfElectron.h:265
float dRz1
Pixel match variable: deltaRz for innermost hit.
Definition: GsfElectron.h:885
void setCorrections(const Corrections &c)
Definition: GsfElectron.h:855
void setClassificationVariables(const ClassificationVariables &cv)
Definition: GsfElectron.h:777
float scE5x5() const
Definition: GsfElectron.h:494
TrackClusterMatching trackClusterMatching_
Definition: GsfElectron.h:272
bool passCutBasedPreselection_
Definition: GsfElectron.h:740
float hcalDepth1OverEcalBc() const
Definition: GsfElectron.h:450
IsolationVariables dr03_
Definition: GsfElectron.h:588
void addAmbiguousGsfTrack(const reco::GsfTrackRef &t)
Definition: GsfElectron.h:731
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:639
void full5x5_setShowerShape(const ShowerShape &s)
Definition: GsfElectron.h:487
TrackExtrapolations trackExtrapolations_
Definition: GsfElectron.h:313
float full5x5_e2x5Right() const
Definition: GsfElectron.h:476
float caloEnergy() const
Definition: GsfElectron.h:862
bool ecalDriven() const
Definition: GsfElectron.cc:174
void setFFlagIsEEDeeGap(const bool b)
Definition: GsfElectron.h:374
bool passPflowPreselection_
Definition: GsfElectron.h:741
float ctfGsfOverlap() const
Definition: GsfElectron.h:187
const FiducialFlags & fiducialFlags() const
Definition: GsfElectron.h:366
void setP4(const LorentzVector &p4) final
set 4-momentum
void setPixelMatchDRz1(float dRz1)
Definition: GsfElectron.h:902
#define constexpr
virtual ClosestCtfTrack closestCtfTrack() const
Definition: GsfElectron.h:206
float sigmaEtaEta() const
Definition: GsfElectron.h:439
float scE1x5() const
Definition: GsfElectron.h:492
float full5x5_e2x5Left() const
Definition: GsfElectron.h:475
float energyError(float E, float *par)
bool ecalDrivenSeed() const
Definition: GsfElectron.h:188
bool passingPflowPreselection() const
Definition: GsfElectron.h:720