ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.41
Committed: Sun May 23 21:09:38 2010 UTC (14 years, 11 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_014a, Mit_014, Mit_014pre3
Changes since 1.40: +16 -2 lines
Log Message:
Add additional electron pv compatibility variables

File Contents

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