ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.45
Committed: Mon Apr 4 23:38:00 2011 UTC (14 years, 1 month ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_020d, TMit_020d, Mit_020c, Mit_021pre1, Mit_020b
Changes since 1.44: +6 -3 lines
Log Message:
add additional flag for partner track conversions

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.45 // $Id: Electron.h,v 1.44 2011/01/27 21:57:15 bendavid Exp $
3 bendavid 1.1 //
4 paus 1.3 // Electron
5 bendavid 1.1 //
6 loizides 1.29 // This class holds information about reconstructed electrons from CMSSW.
7 bendavid 1.1 //
8 sixie 1.13 // Authors: C.Loizides, J.Bendavid, S.Xie
9 bendavid 1.1 //--------------------------------------------------------------------------------------------------
10    
11 loizides 1.23 #ifndef MITANA_DATATREE_ELECTRON_H
12     #define MITANA_DATATREE_ELECTRON_H
13 loizides 1.6
14 sixie 1.13 #include "MitAna/DataTree/interface/SuperCluster.h"
15 bendavid 1.11 #include "MitAna/DataTree/interface/ChargedParticle.h"
16 bendavid 1.24 #include "MitAna/DataCont/interface/Ref.h"
17 loizides 1.6
18 bendavid 1.1 namespace mithep
19     {
20 bendavid 1.11 class Electron : public ChargedParticle
21 bendavid 1.1 {
22     public:
23 loizides 1.34 Electron() :
24 bendavid 1.38 fCharge(-99), fScPixCharge(0),
25 loizides 1.34 fESuperClusterOverP(0), fESeedClusterOverPout(0), fDeltaEtaSuperClTrkAtVtx(0),
26     fDeltaEtaSeedClTrkAtCalo(0), fDeltaPhiSuperClTrkAtVtx(0),
27     fDeltaPhiSeedClTrkAtCalo(0), fFBrem(0), fHadronicOverEm(0), fHcalDepth1OverEcal(0),
28 bendavid 1.35 fHcalDepth2OverEcal(0), fNumberOfClusters(0), fE15(0), fE25Max(0),
29     fE55(0), fCovEtaEta(0), fCoviEtaiEta(0),
30 loizides 1.34 fCaloIsolation(0), fHcalJurassicIsolation(0),
31     fHcalDepth1TowerSumEtDr04(0), fHcalDepth2TowerSumEtDr04(0),
32     fEcalJurassicIsolation(0), fTrackIsolationDr04(0), fCaloTowerIsolation(0),
33     fHcalDepth1TowerSumEtDr03(0), fHcalDepth2TowerSumEtDr03(0),
34     fEcalRecHitSumEtDr03(0), fTrackIsolation(0), fPassLooseID(0),
35     fPassTightID(0), fIDLikelihood(0), fPIn(0), fPOut(0), fFracSharedHits(0),
36 bendavid 1.40 fMva(0), fD0PV(0), fD0PVErr(0), fIp3dPV(0), fIp3dPVErr(0),
37     fD0PVBS(0), fD0PVBSErr(0), fIp3dPVBS(0), fIp3dPVBSErr(0),
38 bendavid 1.44 fD0PVCkf(0), fD0PVCkfErr(0), fIp3dPVCkf(0), fIp3dPVCkfErr(0),
39     fD0PVBSCkf(0), fD0PVBSCkfErr(0), fIp3dPVBSCkf(0), fIp3dPVBSCkfErr(0),
40 bendavid 1.41 fGsfPVCompatibility(0), fGsfPVBSCompatibility(0),
41     fGsfPVCompatibilityMatched(0), fGsfPVBSCompatibilityMatched(0),
42 bendavid 1.40 fConvPartnerDCotTheta(0), fConvPartnerDist(0), fConvPartnerRadius(0),
43 bendavid 1.45 fConvFlag(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0),
44 loizides 1.34 fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0),
45     fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0),
46 bendavid 1.42 fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(0) {}
47 loizides 1.29
48     const Track *BestTrk() const;
49 bendavid 1.40 Double_t D0PV() const { return fD0PV; }
50     Double_t D0PVErr() const { return fD0PVErr; }
51     Double_t D0PVSignificance() const { return fD0PV/fD0PVErr; }
52     Double_t Ip3dPV() const { return fIp3dPV; }
53     Double_t Ip3dPVErr() const { return fIp3dPVErr; }
54     Double_t Ip3dPVSignificance() const { return fIp3dPV/fIp3dPVErr; }
55     Double_t D0PVBS() const { return fD0PVBS; }
56     Double_t D0PVBSErr() const { return fD0PVBSErr; }
57     Double_t D0PVBSSignificance() const { return fD0PVBS/fD0PVBSErr; }
58     Double_t Ip3dPVBS() const { return fIp3dPVBS; }
59     Double_t Ip3dPVBSErr() const { return fIp3dPVBSErr; }
60     Double_t Ip3dPVBSSignificance() const { return fIp3dPVBS/fIp3dPVBSErr; }
61 bendavid 1.44 Double_t D0PVCkf() const { return fD0PVCkf; }
62     Double_t D0PVCkfErr() const { return fD0PVCkfErr; }
63     Double_t D0PVCkfSignificance() const { return fD0PVCkf/fD0PVCkfErr; }
64     Double_t Ip3dPVCkf() const { return fIp3dPVCkf; }
65     Double_t Ip3dPVCkfErr() const { return fIp3dPVCkfErr; }
66     Double_t Ip3dPVCkfSignificance() const { return fIp3dPVCkf/fIp3dPVCkfErr; }
67     Double_t D0PVBSCkf() const { return fD0PVBSCkf; }
68     Double_t D0PVBSCkfErr() const { return fD0PVBSCkfErr; }
69     Double_t D0PVBSCkfSignificance() const { return fD0PVBSCkf/fD0PVBSCkfErr; }
70     Double_t Ip3dPVBSCkf() const { return fIp3dPVBSCkf; }
71     Double_t Ip3dPVBSCkfErr() const { return fIp3dPVBSCkfErr; }
72     Double_t Ip3dPVBSCkfSignificance() const { return fIp3dPVBSCkf/fIp3dPVBSCkfErr; }
73 bendavid 1.41 Double_t GsfPVCompatibility() const { return fGsfPVCompatibility; }
74     Double_t GsfPVBSCompatibility() const { return fGsfPVBSCompatibility; }
75     Double_t GsfPVCompatibilityMatched() const { return fGsfPVCompatibilityMatched; }
76     Double_t GsfPVBSCompatibilityMatched() const { return fGsfPVBSCompatibilityMatched; }
77 bendavid 1.40 Double_t ConvPartnerDCotTheta() const { return fConvPartnerDCotTheta; }
78     Double_t ConvPartnerDist() const { return fConvPartnerDist; }
79     Double_t ConvPartnerRadius() const { return fConvPartnerRadius; }
80 bendavid 1.45 Int_t ConvFlag() const { return fConvFlag; }
81 ceballos 1.36 Double_t CaloIsolation() const { return fCaloIsolation; } // *DEPRECATED*
82 loizides 1.34 Int_t Classification() const { return fClassification; }
83     Double_t CovEtaEta() const { return fCovEtaEta; }
84     Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
85 loizides 1.27 Double_t DeltaEtaSuperClusterTrackAtVtx() const
86     { return fDeltaEtaSuperClTrkAtVtx; }
87     Double_t DeltaEtaSeedClusterTrackAtCalo() const
88     { return fDeltaEtaSeedClTrkAtCalo; }
89     Double_t DeltaPhiSuperClusterTrackAtVtx() const
90     { return fDeltaPhiSuperClTrkAtVtx; }
91     Double_t DeltaPhiSeedClusterTrackAtCalo() const
92     { return fDeltaPhiSeedClTrkAtCalo; }
93 loizides 1.34 Double_t E15() const { return fE15; }
94     Double_t E25Max() const { return fE25Max; }
95     Double_t E55() const { return fE55; }
96 loizides 1.29 Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
97     Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
98     Double_t ESeedClusterOverPIn() const;
99 bendavid 1.33 Double_t FBrem() const { return fFBrem; }
100     Double_t FBremOld() const { return (PIn() - POut())/PIn(); }
101     Double_t FracSharedHits() const { return fFracSharedHits; }
102 loizides 1.29 const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
103 loizides 1.30 Double_t HadronicOverEm() const { return fHadronicOverEm; }
104 bendavid 1.33 Double_t HcalDepth1OverEcal() const { return fHcalDepth1OverEcal; }
105     Double_t HcalDepth2OverEcal() const { return fHcalDepth2OverEcal; }
106 loizides 1.29 Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
107     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
108     Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
109 ceballos 1.36 Double_t HcalIsolation() const { return fHcalJurassicIsolation; } // *DEPRECATED*
110 loizides 1.29 Double_t IDLikelihood() const { return fIDLikelihood; }
111     Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
112     Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
113 bendavid 1.33 Bool_t IsEB() const { return fIsEB; }
114     Bool_t IsEE() const { return fIsEE; }
115     Bool_t IsEBEEGap() const { return fIsEBEEGap; }
116     Bool_t IsEBEtaGap() const { return fIsEBEtaGap; }
117     Bool_t IsEBPhiGap() const { return fIsEBPhiGap; }
118     Bool_t IsEEDeeGap() const { return fIsEEDeeGap; }
119     Bool_t IsEERingGap() const { return fIsEERingGap; }
120     Bool_t IsEcalDriven() const { return fIsEcalDriven; }
121     Bool_t IsTrackerDriven() const { return fIsTrackerDriven; }
122     Double_t Mva() const { return fMva; }
123 loizides 1.29 Double_t NumberOfClusters() const { return fNumberOfClusters; }
124     EObjType ObjType() const { return kElectron; }
125     Double_t PassLooseID() const { return fPassLooseID; }
126     Double_t PassTightID() const { return fPassTightID; }
127     Double_t PIn() const { return fPIn; }
128     Double_t POut() const { return fPOut; }
129     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
130 bendavid 1.38 Double_t ScPixCharge() const { return fScPixCharge; }
131 bendavid 1.33
132     Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; }
133     Double_t HcalTowerSumEtDr04() const { return HcalDepth1TowerSumEtDr04() +
134     HcalDepth2TowerSumEtDr04(); }
135     Double_t HcalDepth1TowerSumEtDr04() const { return fHcalDepth1TowerSumEtDr04; }
136     Double_t HcalDepth2TowerSumEtDr04() const { return fHcalDepth2TowerSumEtDr04; }
137     Double_t TrackIsolationDr04() const { return fTrackIsolationDr04; }
138     Double_t EcalRecHitIsoDr03() const { return fEcalRecHitSumEtDr03; }
139     Double_t HcalTowerSumEtDr03() const { return fCaloTowerIsolation; }
140     Double_t HcalDepth1TowerSumEtDr03() const { return fHcalDepth1TowerSumEtDr03; }
141     Double_t HcalDepth2TowerSumEtDr03() const { return fHcalDepth2TowerSumEtDr03; }
142     Double_t TrackIsolationDr03() const { return fTrackIsolation; }
143 bendavid 1.42 Bool_t MatchesVertexConversion() const { return fMatchesVertexConversion; }
144 bendavid 1.43 UInt_t NAmbiguousGsfTracks() const { return fAmbiguousGsfTracks.Entries(); }
145     Bool_t HasAmbiguousGsfTrack(const Track *t) const { return fAmbiguousGsfTracks.HasObject(t); }
146     const Track *AmbiguousGsfTrack(UInt_t i) const { return fAmbiguousGsfTracks.At(i); }
147 bendavid 1.33
148 bendavid 1.43 void AddAmbiguousGsfTrack(const Track *t) { fAmbiguousGsfTracks.Add(t); }
149 bendavid 1.39 void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
150 bendavid 1.38 void SetScPixCharge(Char_t x) { fScPixCharge = x; }
151 bendavid 1.40 void SetD0PV(Double_t x) { fD0PV = x; }
152     void SetD0PVErr(Double_t x) { fD0PVErr = x; }
153     void SetIp3dPV(Double_t x) { fIp3dPV = x; }
154     void SetIp3dPVErr(Double_t x) { fIp3dPVErr = x; }
155     void SetD0PVBS(Double_t x) { fD0PVBS = x; }
156     void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; }
157     void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; }
158     void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; }
159 bendavid 1.44 void SetD0PVCkf(Double_t x) { fD0PVCkf = x; }
160     void SetD0PVCkfErr(Double_t x) { fD0PVCkfErr = x; }
161     void SetIp3dPVCkf(Double_t x) { fIp3dPVCkf = x; }
162     void SetIp3dPVCkfErr(Double_t x) { fIp3dPVCkfErr = x; }
163     void SetD0PVBSCkf(Double_t x) { fD0PVBSCkf = x; }
164     void SetD0PVBSCkfErr(Double_t x) { fD0PVBSCkfErr = x; }
165     void SetIp3dPVBSCkf(Double_t x) { fIp3dPVBSCkf = x; }
166     void SetIp3dPVBSCkfErr(Double_t x) { fIp3dPVBSCkfErr = x; }
167 bendavid 1.41 void SetGsfPVCompatibility(Double_t x) { fGsfPVCompatibility = x; }
168     void SetGsfPVBSCompatibility(Double_t x) { fGsfPVBSCompatibility = x; }
169     void SetGsfPVCompatibilityMatched(Double_t x) { fGsfPVCompatibilityMatched = x; }
170     void SetGsfPVBSCompatibilityMatched(Double_t x) { fGsfPVBSCompatibilityMatched = x; }
171 bendavid 1.40 void SetConvPartnerDCotTheta(Double_t x) { fConvPartnerDCotTheta = x; }
172     void SetConvPartnerDist(Double_t x) { fConvPartnerDist = x; }
173     void SetConvPartnerRadius(Double_t x) { fConvPartnerRadius = x; }
174 bendavid 1.45 void SetConvFlag(Int_t n) { fConvFlag = n; }
175 loizides 1.29 void SetClassification(Int_t x) { fClassification = x; }
176     void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
177     void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
178 loizides 1.27 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
179     { fDeltaEtaSuperClTrkAtVtx = x; }
180     void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
181     { fDeltaEtaSeedClTrkAtCalo = x; }
182     void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
183     { fDeltaPhiSuperClTrkAtVtx = x; }
184     void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
185     { fDeltaPhiSeedClTrkAtCalo = x; }
186 bendavid 1.33 void SetE15(Double_t x) { fE15 = x; }
187     void SetE25Max(Double_t x) { fE25Max = x; }
188     void SetE55(Double_t x) { fE55 = x; }
189 loizides 1.29 void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
190     void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
191 bendavid 1.33 void SetFBrem(Double_t x) { fFBrem = x; }
192     void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
193 loizides 1.29 void SetGsfTrk(const Track* t)
194 bendavid 1.31 { fGsfTrackRef = t; ClearCharge(); }
195 loizides 1.29 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
196 bendavid 1.33 void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
197     void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
198 loizides 1.29 void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
199     void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
200     void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
201     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
202     void SetPIn(Double_t PIn) { fPIn = PIn; }
203     void SetPOut(Double_t POut) { fPOut = POut; }
204     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
205     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
206 bendavid 1.31 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
207     void SetSuperCluster(const SuperCluster* sc)
208     { fSuperClusterRef = sc; }
209 loizides 1.29 void SetTrackerTrk(const Track* t)
210 bendavid 1.31 { fTrackerTrackRef = t; ClearCharge(); }
211 bendavid 1.42 void SetConvPartnerTrk(const Track *t)
212     { fConvPartnerTrackRef = t; }
213 bendavid 1.33 void SetEcalRecHitIsoDr04(Double_t x) { fEcalJurassicIsolation = x; }
214     void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
215     void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
216     void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; }
217 loizides 1.34 void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; }
218 bendavid 1.33 void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; }
219     void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
220     void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
221 loizides 1.34 void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; }
222     void SetMva(Double_t x) { fMva = x; }
223     void SetIsEB(Bool_t b) { fIsEB = b; }
224     void SetIsEE(Bool_t b) { fIsEE = b; }
225     void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; }
226     void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; }
227     void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; }
228     void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; }
229     void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; }
230     void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; }
231     void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; }
232 bendavid 1.42 void SetMatchesVertexConversion(Bool_t b) { fMatchesVertexConversion = b; }
233     void SetConversionXYZ(Double_t x, Double_t y, Double_t z)
234     { fConvPosition.SetXYZ(x,y,z); }
235 bendavid 1.33
236    
237 loizides 1.34 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
238     const Track *Trk() const { return BestTrk(); }
239 bendavid 1.42 const Track *ConvPartnerTrk() const { return fConvPartnerTrackRef.Obj(); }
240 sixie 1.13
241 loizides 1.8 protected:
242 bendavid 1.37 Double_t GetCharge() const;
243 loizides 1.34 Double_t GetMass() const { return 0.51099892e-3; }
244 loizides 1.27 void GetMom() const;
245 loizides 1.25
246 bendavid 1.31 Vect3C fMom; //stored three-momentum
247 bendavid 1.37 Char_t fCharge; //stored charge - filled with -99 when reading old files
248 bendavid 1.38 Char_t fScPixCharge; //charge from supercluster-pixel matching
249 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
250     Ref<Track> fTrackerTrackRef; //tracker track reference
251 bendavid 1.42 Ref<Track> fConvPartnerTrackRef; //conversion partner track reference
252 loizides 1.27 Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
253 loizides 1.29 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
254     Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
255     Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
256     Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
257     Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
258     Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
259 bendavid 1.33 Double32_t fFBrem; //[0,0,14]brem fraction
260     Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED*
261     Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1
262     Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2
263 loizides 1.29 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
264 bendavid 1.33 Double32_t fE15; //[0,0,14]1x5 crystal energy
265     Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums)
266 loizides 1.29 Double32_t fE55; //[0,0,14]5x5 crystal energy
267     Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
268     Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
269 bendavid 1.33 Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED*
270     Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED*
271     Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
272     Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
273     Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING*
274     Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4
275     Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED*
276     Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
277     Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
278     Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3
279     Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING*
280 loizides 1.29 Double32_t fPassLooseID; //[0,0,14]pass loose id
281     Double32_t fPassTightID; //[0,0,14]pass tight id
282     Double32_t fIDLikelihood; //[0,0,14]likelihood value
283     Double32_t fPIn; //[0,0,14]momentum at vtx
284     Double32_t fPOut; //[0,0,14]momentum at ecal surface
285 bendavid 1.33 Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track
286     Double32_t fMva; //[0,0,14] pflow mva output
287 bendavid 1.44 Double32_t fD0PV; //[0,0,14]transverse impact parameter to signal PV (gsf track)
288     Double32_t fD0PVErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (gsf track)
289     Double32_t fIp3dPV; //[0,0,14]3d impact parameter to signal PV (gsf track)
290     Double32_t fIp3dPVErr; //[0,0,14]3d impact parameter uncertainty to signal PV (gsf track)
291     Double32_t fD0PVBS; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (gsf track)
292     Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
293     Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (gsf track)
294     Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
295     Double32_t fD0PVCkf; //[0,0,14]transverse impact parameter to signal PV (ckf track)
296     Double32_t fD0PVCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (ckf track)
297     Double32_t fIp3dPVCkf; //[0,0,14]3d impact parameter to signal PV (ckf track)
298     Double32_t fIp3dPVCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV (ckf track)
299     Double32_t fD0PVBSCkf; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (ckf track)
300     Double32_t fD0PVBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
301     Double32_t fIp3dPVBSCkf; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (ckf track)
302     Double32_t fIp3dPVBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
303 bendavid 1.41 Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV
304     Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint
305     Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex)
306     Double32_t fGsfPVBSCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV w/ bs constraint (matching ckf track excluded from vertex)
307 bendavid 1.40 Double32_t fConvPartnerDCotTheta; //[0,0,14]delta cot theta to nearest conversion partner track
308     Double32_t fConvPartnerDist; //[0,0,14]distance in x-y plane to nearest conversion partner track
309     Double32_t fConvPartnerRadius; //[0,0,14]radius of helix intersection with conversion partner track
310 bendavid 1.45 Int_t fConvFlag; //conversion flag indicating which track combination was used
311 bendavid 1.42 Vect3C fConvPosition;
312 loizides 1.29 Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
313     Bool_t fIsMomentumCorrected; //class dependent E-p combination
314     Int_t fClassification; //classification (see GsfElectron.h)
315 bendavid 1.33 Bool_t fIsEB; //is ECAL barrel
316     Bool_t fIsEE; //is ECAL Endcap
317     Bool_t fIsEBEEGap; //is in barrel-endcap gap
318     Bool_t fIsEBEtaGap; //is in EB eta module gap
319     Bool_t fIsEBPhiGap; //is in EB phi module gap
320     Bool_t fIsEEDeeGap; //is in EE dee gap
321     Bool_t fIsEERingGap; //is in EE ring gap
322     Bool_t fIsEcalDriven; //is std. egamma electron
323     Bool_t fIsTrackerDriven; //is pflow track-seeded electron
324 bendavid 1.42 Bool_t fMatchesVertexConversion;
325 bendavid 1.43 RefArray<Track> fAmbiguousGsfTracks; //ambiguous gsf tracks for this electron
326 sixie 1.13
327 bendavid 1.45 ClassDef(Electron, 10) // Electron class
328 bendavid 1.1 };
329 loizides 1.4 }
330 loizides 1.8
331 loizides 1.9 //--------------------------------------------------------------------------------------------------
332 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
333 loizides 1.9 {
334 loizides 1.10 // Return "best" track.
335    
336 bendavid 1.24 if (HasGsfTrk())
337 loizides 1.10 return GsfTrk();
338 bendavid 1.24 else if (HasTrackerTrk())
339 loizides 1.10 return TrackerTrk();
340 loizides 1.9
341 loizides 1.10 return 0;
342 loizides 1.9 }
343    
344 loizides 1.25 //--------------------------------------------------------------------------------------------------
345 bendavid 1.37 inline Double_t mithep::Electron::GetCharge() const
346     {
347     // Return stored charge, unless it is set to invalid (-99),
348     // in that case get charge from track as before
349    
350     if (fCharge==-99)
351     return mithep::ChargedParticle::GetCharge();
352     else
353     return fCharge;
354    
355     }
356    
357     //--------------------------------------------------------------------------------------------------
358 loizides 1.25 inline void mithep::Electron::GetMom() const
359 sixie 1.14 {
360 bendavid 1.31 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
361     // since the momentum vector may be computed non-trivially in cmssw
362 sixie 1.14
363 bendavid 1.31 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
364 bendavid 1.18 }
365    
366     //-------------------------------------------------------------------------------------------------
367 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
368 bendavid 1.18 {
369 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
370     // of the track momentum at the vertex.
371    
372     return SCluster()->Seed()->Energy() / PIn();
373 bendavid 1.18 }
374 bendavid 1.31
375     //-------------------------------------------------------------------------------------------------
376     inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
377     {
378     // Set three-vector
379    
380     fMom.Set(pt,eta,phi);
381     ClearMom();
382     }
383 loizides 1.8 #endif