ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.42
Committed: Wed Jun 23 09:02:04 2010 UTC (14 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_014e, Mit_014d, Mit_014c, Mit_014b
Changes since 1.41: +13 -3 lines
Log Message:
Some extra conversion variables

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.42 // $Id: Electron.h,v 1.41 2010/05/23 21:09:38 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 bendavid 1.42 fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(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 bendavid 1.42 Bool_t MatchesVertexConversion() const { return fMatchesVertexConversion; }
129 bendavid 1.33
130    
131 bendavid 1.39 void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
132 bendavid 1.38 void SetScPixCharge(Char_t x) { fScPixCharge = x; }
133 bendavid 1.40 void SetD0PV(Double_t x) { fD0PV = x; }
134     void SetD0PVErr(Double_t x) { fD0PVErr = x; }
135     void SetIp3dPV(Double_t x) { fIp3dPV = x; }
136     void SetIp3dPVErr(Double_t x) { fIp3dPVErr = x; }
137     void SetD0PVBS(Double_t x) { fD0PVBS = x; }
138     void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; }
139     void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; }
140     void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; }
141 bendavid 1.41 void SetGsfPVCompatibility(Double_t x) { fGsfPVCompatibility = x; }
142     void SetGsfPVBSCompatibility(Double_t x) { fGsfPVBSCompatibility = x; }
143     void SetGsfPVCompatibilityMatched(Double_t x) { fGsfPVCompatibilityMatched = x; }
144     void SetGsfPVBSCompatibilityMatched(Double_t x) { fGsfPVBSCompatibilityMatched = x; }
145 bendavid 1.40 void SetConvPartnerDCotTheta(Double_t x) { fConvPartnerDCotTheta = x; }
146     void SetConvPartnerDist(Double_t x) { fConvPartnerDist = x; }
147     void SetConvPartnerRadius(Double_t x) { fConvPartnerRadius = x; }
148 loizides 1.29 void SetClassification(Int_t x) { fClassification = x; }
149     void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
150     void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
151 loizides 1.27 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
152     { fDeltaEtaSuperClTrkAtVtx = x; }
153     void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
154     { fDeltaEtaSeedClTrkAtCalo = x; }
155     void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
156     { fDeltaPhiSuperClTrkAtVtx = x; }
157     void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
158     { fDeltaPhiSeedClTrkAtCalo = x; }
159 bendavid 1.33 void SetE15(Double_t x) { fE15 = x; }
160     void SetE25Max(Double_t x) { fE25Max = x; }
161     void SetE55(Double_t x) { fE55 = x; }
162 loizides 1.29 void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
163     void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
164 bendavid 1.33 void SetFBrem(Double_t x) { fFBrem = x; }
165     void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
166 loizides 1.29 void SetGsfTrk(const Track* t)
167 bendavid 1.31 { fGsfTrackRef = t; ClearCharge(); }
168 loizides 1.29 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
169 bendavid 1.33 void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
170     void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
171 loizides 1.29 void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
172     void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
173     void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
174     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
175     void SetPIn(Double_t PIn) { fPIn = PIn; }
176     void SetPOut(Double_t POut) { fPOut = POut; }
177     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
178     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
179 bendavid 1.31 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
180     void SetSuperCluster(const SuperCluster* sc)
181     { fSuperClusterRef = sc; }
182 loizides 1.29 void SetTrackerTrk(const Track* t)
183 bendavid 1.31 { fTrackerTrackRef = t; ClearCharge(); }
184 bendavid 1.42 void SetConvPartnerTrk(const Track *t)
185     { fConvPartnerTrackRef = t; }
186 bendavid 1.33 void SetEcalRecHitIsoDr04(Double_t x) { fEcalJurassicIsolation = x; }
187     void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
188     void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
189     void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; }
190 loizides 1.34 void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; }
191 bendavid 1.33 void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; }
192     void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
193     void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
194 loizides 1.34 void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; }
195     void SetMva(Double_t x) { fMva = x; }
196     void SetIsEB(Bool_t b) { fIsEB = b; }
197     void SetIsEE(Bool_t b) { fIsEE = b; }
198     void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; }
199     void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; }
200     void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; }
201     void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; }
202     void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; }
203     void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; }
204     void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; }
205 bendavid 1.42 void SetMatchesVertexConversion(Bool_t b) { fMatchesVertexConversion = b; }
206     void SetConversionXYZ(Double_t x, Double_t y, Double_t z)
207     { fConvPosition.SetXYZ(x,y,z); }
208 bendavid 1.33
209    
210 loizides 1.34 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
211     const Track *Trk() const { return BestTrk(); }
212 bendavid 1.42 const Track *ConvPartnerTrk() const { return fConvPartnerTrackRef.Obj(); }
213 sixie 1.13
214 loizides 1.8 protected:
215 bendavid 1.37 Double_t GetCharge() const;
216 loizides 1.34 Double_t GetMass() const { return 0.51099892e-3; }
217 loizides 1.27 void GetMom() const;
218 loizides 1.25
219 bendavid 1.31 Vect3C fMom; //stored three-momentum
220 bendavid 1.37 Char_t fCharge; //stored charge - filled with -99 when reading old files
221 bendavid 1.38 Char_t fScPixCharge; //charge from supercluster-pixel matching
222 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
223     Ref<Track> fTrackerTrackRef; //tracker track reference
224 bendavid 1.42 Ref<Track> fConvPartnerTrackRef; //conversion partner track reference
225 loizides 1.27 Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
226 loizides 1.29 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
227     Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
228     Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
229     Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
230     Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
231     Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
232 bendavid 1.33 Double32_t fFBrem; //[0,0,14]brem fraction
233     Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED*
234     Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1
235     Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2
236 loizides 1.29 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
237 bendavid 1.33 Double32_t fE15; //[0,0,14]1x5 crystal energy
238     Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums)
239 loizides 1.29 Double32_t fE55; //[0,0,14]5x5 crystal energy
240     Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
241     Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
242 bendavid 1.33 Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED*
243     Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED*
244     Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
245     Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
246     Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING*
247     Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4
248     Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED*
249     Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
250     Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
251     Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3
252     Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING*
253 loizides 1.29 Double32_t fPassLooseID; //[0,0,14]pass loose id
254     Double32_t fPassTightID; //[0,0,14]pass tight id
255     Double32_t fIDLikelihood; //[0,0,14]likelihood value
256     Double32_t fPIn; //[0,0,14]momentum at vtx
257     Double32_t fPOut; //[0,0,14]momentum at ecal surface
258 bendavid 1.33 Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track
259     Double32_t fMva; //[0,0,14] pflow mva output
260 bendavid 1.40 Double32_t fD0PV; //[0,0,14]transverse impact parameter to signal PV
261     Double32_t fD0PVErr; //[0,0,14]transverse impact parameter uncertainty to signal PV
262     Double32_t fIp3dPV; //[0,0,14]3d impact parameter to signal PV
263     Double32_t fIp3dPVErr; //[0,0,14]3d impact parameter uncertainty to signal PV
264     Double32_t fD0PVBS; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint
265     Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint
266     Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint
267     Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint
268 bendavid 1.41 Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV
269     Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint
270     Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex)
271     Double32_t fGsfPVBSCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV w/ bs constraint (matching ckf track excluded from vertex)
272 bendavid 1.40 Double32_t fConvPartnerDCotTheta; //[0,0,14]delta cot theta to nearest conversion partner track
273     Double32_t fConvPartnerDist; //[0,0,14]distance in x-y plane to nearest conversion partner track
274     Double32_t fConvPartnerRadius; //[0,0,14]radius of helix intersection with conversion partner track
275 bendavid 1.42 Vect3C fConvPosition;
276 loizides 1.29 Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
277     Bool_t fIsMomentumCorrected; //class dependent E-p combination
278     Int_t fClassification; //classification (see GsfElectron.h)
279 bendavid 1.33 Bool_t fIsEB; //is ECAL barrel
280     Bool_t fIsEE; //is ECAL Endcap
281     Bool_t fIsEBEEGap; //is in barrel-endcap gap
282     Bool_t fIsEBEtaGap; //is in EB eta module gap
283     Bool_t fIsEBPhiGap; //is in EB phi module gap
284     Bool_t fIsEEDeeGap; //is in EE dee gap
285     Bool_t fIsEERingGap; //is in EE ring gap
286     Bool_t fIsEcalDriven; //is std. egamma electron
287     Bool_t fIsTrackerDriven; //is pflow track-seeded electron
288 bendavid 1.42 Bool_t fMatchesVertexConversion;
289 sixie 1.13
290 bendavid 1.42 ClassDef(Electron, 7) // Electron class
291 bendavid 1.1 };
292 loizides 1.4 }
293 loizides 1.8
294 loizides 1.9 //--------------------------------------------------------------------------------------------------
295 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
296 loizides 1.9 {
297 loizides 1.10 // Return "best" track.
298    
299 bendavid 1.24 if (HasGsfTrk())
300 loizides 1.10 return GsfTrk();
301 bendavid 1.24 else if (HasTrackerTrk())
302 loizides 1.10 return TrackerTrk();
303 loizides 1.9
304 loizides 1.10 return 0;
305 loizides 1.9 }
306    
307 loizides 1.25 //--------------------------------------------------------------------------------------------------
308 bendavid 1.37 inline Double_t mithep::Electron::GetCharge() const
309     {
310     // Return stored charge, unless it is set to invalid (-99),
311     // in that case get charge from track as before
312    
313     if (fCharge==-99)
314     return mithep::ChargedParticle::GetCharge();
315     else
316     return fCharge;
317    
318     }
319    
320     //--------------------------------------------------------------------------------------------------
321 loizides 1.25 inline void mithep::Electron::GetMom() const
322 sixie 1.14 {
323 bendavid 1.31 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
324     // since the momentum vector may be computed non-trivially in cmssw
325 sixie 1.14
326 bendavid 1.31 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
327 bendavid 1.18 }
328    
329     //-------------------------------------------------------------------------------------------------
330 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
331 bendavid 1.18 {
332 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
333     // of the track momentum at the vertex.
334    
335     return SCluster()->Seed()->Energy() / PIn();
336 bendavid 1.18 }
337 bendavid 1.31
338     //-------------------------------------------------------------------------------------------------
339     inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
340     {
341     // Set three-vector
342    
343     fMom.Set(pt,eta,phi);
344     ClearMom();
345     }
346 loizides 1.8 #endif