ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.51
Committed: Wed Apr 4 21:00:15 2012 UTC (13 years, 1 month ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_026
Changes since 1.50: +10 -4 lines
Log Message:
add ElectronClusterEnergyOverPout and CTFTrkNLayersWithMeasurement

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 sixie 1.51 // $Id: Electron.h,v 1.50 2012/03/29 23:41:55 paus 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.47 fD0PVUB(0), fD0PVUBErr(0), fIp3dPVUB(0), fIp3dPVUBErr(0),
41     fD0PVUBBS(0), fD0PVUBBSErr(0), fIp3dPVUBBS(0), fIp3dPVUBBSErr(0),
42     fD0PVUBCkf(0), fD0PVUBCkfErr(0), fIp3dPVUBCkf(0), fIp3dPVUBCkfErr(0),
43     fD0PVUBBSCkf(0), fD0PVUBBSCkfErr(0), fIp3dPVUBBSCkf(0), fIp3dPVUBBSCkfErr(0),
44 bendavid 1.41 fGsfPVCompatibility(0), fGsfPVBSCompatibility(0),
45     fGsfPVCompatibilityMatched(0), fGsfPVBSCompatibilityMatched(0),
46 bendavid 1.40 fConvPartnerDCotTheta(0), fConvPartnerDist(0), fConvPartnerRadius(0),
47 bendavid 1.46 fPFChargedHadronIso(0), fPFNeutralHadronIso(0), fPFPhotonIso(0),
48 bendavid 1.45 fConvFlag(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0),
49 loizides 1.34 fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0),
50     fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0),
51 bendavid 1.42 fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(0) {}
52 loizides 1.29
53 paus 1.48 const Track *BestTrk() const;
54     Double_t D0PV() const { return fD0PV; }
55     Double_t D0PVErr() const { return fD0PVErr; }
56     Double_t D0PVSignificance() const { return fD0PV/fD0PVErr; }
57     Double_t Ip3dPV() const { return fIp3dPV; }
58     Double_t Ip3dPVErr() const { return fIp3dPVErr; }
59     Double_t Ip3dPVSignificance() const { return fIp3dPV/fIp3dPVErr; }
60     Double_t D0PVBS() const { return fD0PVBS; }
61     Double_t D0PVBSErr() const { return fD0PVBSErr; }
62     Double_t D0PVBSSignificance() const { return fD0PVBS/fD0PVBSErr; }
63     Double_t Ip3dPVBS() const { return fIp3dPVBS; }
64     Double_t Ip3dPVBSErr() const { return fIp3dPVBSErr; }
65     Double_t Ip3dPVBSSignificance() const { return fIp3dPVBS/fIp3dPVBSErr; }
66     Double_t D0PVCkf() const { return fD0PVCkf; }
67     Double_t D0PVCkfErr() const { return fD0PVCkfErr; }
68     Double_t D0PVCkfSignificance() const { return fD0PVCkf/fD0PVCkfErr; }
69     Double_t Ip3dPVCkf() const { return fIp3dPVCkf; }
70     Double_t Ip3dPVCkfErr() const { return fIp3dPVCkfErr; }
71     Double_t Ip3dPVCkfSignificance() const { return fIp3dPVCkf/fIp3dPVCkfErr; }
72     Double_t D0PVBSCkf() const { return fD0PVBSCkf; }
73     Double_t D0PVBSCkfErr() const { return fD0PVBSCkfErr; }
74     Double_t D0PVBSCkfSignificance() const { return fD0PVBSCkf/fD0PVBSCkfErr; }
75     Double_t Ip3dPVBSCkf() const { return fIp3dPVBSCkf; }
76     Double_t Ip3dPVBSCkfErr() const { return fIp3dPVBSCkfErr; }
77     Double_t Ip3dPVBSCkfSignificance() const { return fIp3dPVBSCkf/fIp3dPVBSCkfErr; }
78     Double_t D0PVUB() const { return fD0PVUB; }
79     Double_t D0PVUBErr() const { return fD0PVUBErr; }
80     Double_t D0PVUBSignificance() const { return fD0PVUB/fD0PVUBErr; }
81     Double_t Ip3dPVUB() const { return fIp3dPVUB; }
82     Double_t Ip3dPVUBErr() const { return fIp3dPVUBErr; }
83     Double_t Ip3dPVUBSignificance() const { return fIp3dPVUB/fIp3dPVUBErr; }
84     Double_t D0PVUBBS() const { return fD0PVUBBS; }
85     Double_t D0PVUBBSErr() const { return fD0PVUBBSErr; }
86     Double_t D0PVUBBSSignificance() const { return fD0PVUBBS/fD0PVUBBSErr; }
87     Double_t Ip3dPVUBBS() const { return fIp3dPVUBBS; }
88     Double_t Ip3dPVUBBSErr() const { return fIp3dPVUBBSErr; }
89     Double_t Ip3dPVUBBSSignificance() const { return fIp3dPVUBBS/fIp3dPVUBBSErr; }
90     Double_t D0PVUBCkf() const { return fD0PVUBCkf; }
91     Double_t D0PVUBCkfErr() const { return fD0PVUBCkfErr; }
92     Double_t D0PVUBCkfSignificance() const { return fD0PVUBCkf/fD0PVUBCkfErr; }
93     Double_t Ip3dPVUBCkf() const { return fIp3dPVUBCkf; }
94     Double_t Ip3dPVUBCkfErr() const { return fIp3dPVUBCkfErr; }
95     Double_t Ip3dPVUBCkfSignificance() const { return fIp3dPVUBCkf/fIp3dPVUBCkfErr; }
96     Double_t D0PVUBBSCkf() const { return fD0PVUBBSCkf; }
97     Double_t D0PVUBBSCkfErr() const { return fD0PVUBBSCkfErr; }
98     Double_t D0PVUBBSCkfSignificance() const { return fD0PVUBBSCkf/fD0PVUBBSCkfErr; }
99     Double_t Ip3dPVUBBSCkf() const { return fIp3dPVUBBSCkf; }
100     Double_t Ip3dPVUBBSCkfErr() const { return fIp3dPVUBBSCkfErr; }
101 bendavid 1.47 Double_t Ip3dPVUBBSCkfSignificance() const { return fIp3dPVUBBSCkf/fIp3dPVUBBSCkfErr; }
102 paus 1.48 Double_t GsfPVCompatibility() const { return fGsfPVCompatibility; }
103     Double_t GsfPVBSCompatibility() const { return fGsfPVBSCompatibility; }
104     Double_t GsfPVCompatibilityMatched() const { return fGsfPVCompatibilityMatched; }
105     Double_t GsfPVBSCompatibilityMatched() const { return fGsfPVBSCompatibilityMatched; }
106     Double_t ConvPartnerDCotTheta() const { return fConvPartnerDCotTheta; }
107     Double_t ConvPartnerDist() const { return fConvPartnerDist; }
108     Double_t ConvPartnerRadius() const { return fConvPartnerRadius; }
109     Int_t ConvFlag() const { return fConvFlag; }
110     Double_t CaloIsolation() const { return fCaloIsolation; } // *DEPRECATED*
111     Int_t Classification() const { return fClassification; }
112     Double_t CovEtaEta() const { return fCovEtaEta; }
113     Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
114     Double_t DeltaEtaSuperClusterTrackAtVtx() const { return fDeltaEtaSuperClTrkAtVtx; }
115     Double_t DeltaEtaSeedClusterTrackAtCalo() const { return fDeltaEtaSeedClTrkAtCalo; }
116     Double_t DeltaPhiSuperClusterTrackAtVtx() const { return fDeltaPhiSuperClTrkAtVtx; }
117     Double_t DeltaPhiSeedClusterTrackAtCalo() const { return fDeltaPhiSeedClTrkAtCalo; }
118     Double_t E15() const { return fE15; }
119     Double_t E25Max() const { return fE25Max; }
120     Double_t E55() const { return fE55; }
121     Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
122     Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
123 sixie 1.51 Double_t EEleClusterOverPout() const { return fEEleClusterOverPout; }
124 paus 1.48 Double_t ESeedClusterOverPIn() const;
125     Double_t FBrem() const { return fFBrem; }
126     Double_t FBremOld() const { return (PIn() - POut())/PIn(); }
127     Double_t FracSharedHits() const { return fFracSharedHits; }
128     const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
129     Double_t HadronicOverEm() const { return fHadronicOverEm; }
130     Double_t HcalDepth1OverEcal() const { return fHcalDepth1OverEcal; }
131     Double_t HcalDepth2OverEcal() const { return fHcalDepth2OverEcal; }
132     Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
133     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
134     Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
135     Double_t HcalIsolation() const { return fHcalJurassicIsolation; } // *DEPRECATED*
136     Double_t IDLikelihood() const { return fIDLikelihood; }
137     Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
138     Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
139     Bool_t IsEB() const { return fIsEB; }
140     Bool_t IsEE() const { return fIsEE; }
141     Bool_t IsEBEEGap() const { return fIsEBEEGap; }
142     Bool_t IsEBEtaGap() const { return fIsEBEtaGap; }
143     Bool_t IsEBPhiGap() const { return fIsEBPhiGap; }
144     Bool_t IsEEDeeGap() const { return fIsEEDeeGap; }
145     Bool_t IsEERingGap() const { return fIsEERingGap; }
146     Bool_t IsEcalDriven() const { return fIsEcalDriven; }
147     Bool_t IsTrackerDriven() const { return fIsTrackerDriven; }
148     Double_t Mva() const { return fMva; }
149     Double_t NumberOfClusters() const { return fNumberOfClusters; }
150     EObjType ObjType() const { return kElectron; }
151     Double_t PassLooseID() const { return fPassLooseID; }
152     Double_t PassTightID() const { return fPassTightID; }
153     Double_t PIn() const { return fPIn; }
154     Double_t POut() const { return fPOut; }
155     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
156     Double_t ScPixCharge() const { return fScPixCharge; }
157    
158     Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; }
159     Double_t HcalTowerSumEtDr04() const { return HcalDepth1TowerSumEtDr04() +
160     HcalDepth2TowerSumEtDr04(); }
161     Double_t HcalDepth1TowerSumEtDr04() const { return fHcalDepth1TowerSumEtDr04; }
162     Double_t HcalDepth2TowerSumEtDr04() const { return fHcalDepth2TowerSumEtDr04; }
163     Double_t TrackIsolationDr04() const { return fTrackIsolationDr04; }
164     Double_t EcalRecHitIsoDr03() const { return fEcalRecHitSumEtDr03; }
165     Double_t HcalTowerSumEtDr03() const { return fCaloTowerIsolation; }
166     Double_t HcalDepth1TowerSumEtDr03() const { return fHcalDepth1TowerSumEtDr03; }
167     Double_t HcalDepth2TowerSumEtDr03() const { return fHcalDepth2TowerSumEtDr03; }
168     Double_t TrackIsolationDr03() const { return fTrackIsolation; }
169     Double_t PFChargedHadronIso() const { return fPFChargedHadronIso; }
170     Double_t PFNeutralHadronIso() const { return fPFNeutralHadronIso; }
171     Double_t PFPhotonIso() const { return fPFPhotonIso; }
172     Bool_t MatchesVertexConversion() const { return fMatchesVertexConversion; }
173     UInt_t NAmbiguousGsfTracks() const { return fAmbiguousGsfTracks.Entries(); }
174 bendavid 1.43 Bool_t HasAmbiguousGsfTrack(const Track *t) const { return fAmbiguousGsfTracks.HasObject(t); }
175 paus 1.48 const Track *AmbiguousGsfTrack(UInt_t i) const { return fAmbiguousGsfTracks.At(i); }
176 sixie 1.51 Int_t CTFTrkNLayersWithMeasurement() const { return fCTFTrkNLayersWithMeasurement; }
177    
178 paus 1.48 void AddAmbiguousGsfTrack(const Track *t) { fAmbiguousGsfTracks.Add(t); }
179     void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
180     void SetScPixCharge(Char_t x) { fScPixCharge = x; }
181     void SetD0PV(Double_t x) { fD0PV = x; }
182     void SetD0PVErr(Double_t x) { fD0PVErr = x; }
183     void SetIp3dPV(Double_t x) { fIp3dPV = x; }
184     void SetIp3dPVErr(Double_t x) { fIp3dPVErr = x; }
185     void SetD0PVBS(Double_t x) { fD0PVBS = x; }
186     void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; }
187     void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; }
188     void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; }
189     void SetD0PVCkf(Double_t x) { fD0PVCkf = x; }
190     void SetD0PVCkfErr(Double_t x) { fD0PVCkfErr = x; }
191     void SetIp3dPVCkf(Double_t x) { fIp3dPVCkf = x; }
192     void SetIp3dPVCkfErr(Double_t x) { fIp3dPVCkfErr = x; }
193     void SetD0PVBSCkf(Double_t x) { fD0PVBSCkf = x; }
194     void SetD0PVBSCkfErr(Double_t x) { fD0PVBSCkfErr = x; }
195     void SetIp3dPVBSCkf(Double_t x) { fIp3dPVBSCkf = x; }
196     void SetIp3dPVBSCkfErr(Double_t x) { fIp3dPVBSCkfErr = x; }
197     void SetD0PVUB(Double_t x) { fD0PVUB = x; }
198     void SetD0PVUBErr(Double_t x) { fD0PVUBErr = x; }
199     void SetIp3dPVUB(Double_t x) { fIp3dPVUB = x; }
200     void SetIp3dPVUBErr(Double_t x) { fIp3dPVUBErr = x; }
201     void SetD0PVUBBS(Double_t x) { fD0PVUBBS = x; }
202     void SetD0PVUBBSErr(Double_t x) { fD0PVUBBSErr = x; }
203     void SetIp3dPVUBBS(Double_t x) { fIp3dPVUBBS = x; }
204     void SetIp3dPVUBBSErr(Double_t x) { fIp3dPVUBBSErr = x; }
205     void SetD0PVUBCkf(Double_t x) { fD0PVUBCkf = x; }
206     void SetD0PVUBCkfErr(Double_t x) { fD0PVUBCkfErr = x; }
207     void SetIp3dPVUBCkf(Double_t x) { fIp3dPVUBCkf = x; }
208     void SetIp3dPVUBCkfErr(Double_t x) { fIp3dPVUBCkfErr = x; }
209     void SetD0PVUBBSCkf(Double_t x) { fD0PVUBBSCkf = x; }
210     void SetD0PVUBBSCkfErr(Double_t x) { fD0PVUBBSCkfErr = x; }
211     void SetIp3dPVUBBSCkf(Double_t x) { fIp3dPVUBBSCkf = x; }
212     void SetIp3dPVUBBSCkfErr(Double_t x) { fIp3dPVUBBSCkfErr = x; }
213     void SetGsfPVCompatibility(Double_t x) { fGsfPVCompatibility = x; }
214     void SetGsfPVBSCompatibility(Double_t x) { fGsfPVBSCompatibility = x; }
215     void SetGsfPVCompatibilityMatched(Double_t x) { fGsfPVCompatibilityMatched = x; }
216 bendavid 1.41 void SetGsfPVBSCompatibilityMatched(Double_t x) { fGsfPVBSCompatibilityMatched = x; }
217 paus 1.48 void SetConvPartnerDCotTheta(Double_t x) { fConvPartnerDCotTheta = x; }
218     void SetConvPartnerDist(Double_t x) { fConvPartnerDist = x; }
219     void SetConvPartnerRadius(Double_t x) { fConvPartnerRadius = x; }
220     void SetConvFlag(Int_t n) { fConvFlag = n; }
221     void SetClassification(Int_t x) { fClassification = x; }
222     void SetCovEtaEta(Double_t x) { fCovEtaEta = x; }
223     void SetCoviEtaiEta(Double_t x) { fCoviEtaiEta = x; }
224 loizides 1.27 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
225 paus 1.48 { fDeltaEtaSuperClTrkAtVtx = x; }
226 loizides 1.27 void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
227 paus 1.48 { fDeltaEtaSeedClTrkAtCalo = x; }
228 loizides 1.27 void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
229 paus 1.48 { fDeltaPhiSuperClTrkAtVtx = x; }
230 loizides 1.27 void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
231 paus 1.48 { fDeltaPhiSeedClTrkAtCalo = x; }
232     void SetE15(Double_t x) { fE15 = x; }
233     void SetE25Max(Double_t x) { fE25Max = x; }
234     void SetE55(Double_t x) { fE55 = x; }
235     void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
236 sixie 1.51 void SetEEleClusterOverPout(Double_t x) { fEEleClusterOverPout = x; }
237 paus 1.48 void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
238     void SetFBrem(Double_t x) { fFBrem = x; }
239     void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
240 loizides 1.29 void SetGsfTrk(const Track* t)
241 bendavid 1.31 { fGsfTrackRef = t; ClearCharge(); }
242 paus 1.48 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
243     void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
244     void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
245     void SetIDLikelihood(Double_t x) { fIDLikelihood = x; }
246     void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
247     void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
248     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
249     void SetPIn(Double_t pIn) { fPIn = pIn; }
250     void SetPOut(Double_t pOut) { fPOut = pOut; }
251     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
252     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
253 bendavid 1.31 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
254     void SetSuperCluster(const SuperCluster* sc)
255     { fSuperClusterRef = sc; }
256 loizides 1.29 void SetTrackerTrk(const Track* t)
257 bendavid 1.31 { fTrackerTrackRef = t; ClearCharge(); }
258 bendavid 1.42 void SetConvPartnerTrk(const Track *t)
259     { fConvPartnerTrackRef = t; }
260 paus 1.48 void SetEcalRecHitIsoDr04(Double_t x) { fEcalJurassicIsolation = x; }
261 bendavid 1.33 void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
262     void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
263 paus 1.48 void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; }
264     void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; }
265     void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; }
266 bendavid 1.33 void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
267     void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
268 paus 1.48 void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; }
269     void SetPFChargedHadronIso(Double_t x) { fPFChargedHadronIso = x; }
270     void SetPFNeutralHadronIso(Double_t x) { fPFNeutralHadronIso = x; }
271     void SetPFPhotonIso(Double_t x) { fPFPhotonIso = x; }
272     void SetMva(Double_t x) { fMva = x; }
273     void SetIsEB(Bool_t b) { fIsEB = b; }
274     void SetIsEE(Bool_t b) { fIsEE = b; }
275     void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; }
276     void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; }
277     void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; }
278     void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; }
279     void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; }
280     void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; }
281     void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; }
282 bendavid 1.42 void SetMatchesVertexConversion(Bool_t b) { fMatchesVertexConversion = b; }
283     void SetConversionXYZ(Double_t x, Double_t y, Double_t z)
284     { fConvPosition.SetXYZ(x,y,z); }
285 sixie 1.51 void SetCTFTrkNLayersWithMeasurement(Int_t x){ fCTFTrkNLayersWithMeasurement = x; }
286    
287 bendavid 1.33
288 paus 1.48 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
289     const Track *Trk() const { return BestTrk(); }
290 bendavid 1.42 const Track *ConvPartnerTrk() const { return fConvPartnerTrackRef.Obj(); }
291 sixie 1.13
292 paus 1.49 // Some structural tools
293 paus 1.50 void Mark(UInt_t i=1) const;
294 paus 1.49
295 loizides 1.8 protected:
296 bendavid 1.37 Double_t GetCharge() const;
297 paus 1.48 Double_t GetMass() const { return 0.51099892e-3; }
298 loizides 1.27 void GetMom() const;
299 loizides 1.25
300 bendavid 1.31 Vect3C fMom; //stored three-momentum
301 bendavid 1.37 Char_t fCharge; //stored charge - filled with -99 when reading old files
302 bendavid 1.38 Char_t fScPixCharge; //charge from supercluster-pixel matching
303 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
304     Ref<Track> fTrackerTrackRef; //tracker track reference
305 bendavid 1.42 Ref<Track> fConvPartnerTrackRef; //conversion partner track reference
306 loizides 1.27 Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
307 loizides 1.29 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
308     Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
309     Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
310     Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
311     Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
312     Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
313 bendavid 1.33 Double32_t fFBrem; //[0,0,14]brem fraction
314     Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED*
315     Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1
316     Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2
317 loizides 1.29 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
318 bendavid 1.33 Double32_t fE15; //[0,0,14]1x5 crystal energy
319     Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums)
320 loizides 1.29 Double32_t fE55; //[0,0,14]5x5 crystal energy
321     Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
322     Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
323 bendavid 1.33 Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED*
324     Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED*
325     Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
326     Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
327     Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING*
328     Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4
329     Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED*
330     Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
331     Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
332     Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3
333     Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING*
334 loizides 1.29 Double32_t fPassLooseID; //[0,0,14]pass loose id
335     Double32_t fPassTightID; //[0,0,14]pass tight id
336     Double32_t fIDLikelihood; //[0,0,14]likelihood value
337     Double32_t fPIn; //[0,0,14]momentum at vtx
338     Double32_t fPOut; //[0,0,14]momentum at ecal surface
339 bendavid 1.33 Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track
340     Double32_t fMva; //[0,0,14] pflow mva output
341 bendavid 1.44 Double32_t fD0PV; //[0,0,14]transverse impact parameter to signal PV (gsf track)
342     Double32_t fD0PVErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (gsf track)
343     Double32_t fIp3dPV; //[0,0,14]3d impact parameter to signal PV (gsf track)
344     Double32_t fIp3dPVErr; //[0,0,14]3d impact parameter uncertainty to signal PV (gsf track)
345     Double32_t fD0PVBS; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (gsf track)
346     Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
347     Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (gsf track)
348     Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
349     Double32_t fD0PVCkf; //[0,0,14]transverse impact parameter to signal PV (ckf track)
350     Double32_t fD0PVCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (ckf track)
351     Double32_t fIp3dPVCkf; //[0,0,14]3d impact parameter to signal PV (ckf track)
352     Double32_t fIp3dPVCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV (ckf track)
353     Double32_t fD0PVBSCkf; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (ckf track)
354     Double32_t fD0PVBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
355     Double32_t fIp3dPVBSCkf; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (ckf track)
356     Double32_t fIp3dPVBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
357 bendavid 1.47 Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (gsf track)
358     Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (gsf track)
359     Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB (gsf track)
360     Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (gsf track)
361     Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (gsf track)
362     Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track)
363     Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (gsf track)
364     Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track)
365     Double32_t fD0PVUBCkf; //[0,0,14]transverse impact parameter to signal PVUB (ckf track)
366     Double32_t fD0PVUBCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (ckf track)
367     Double32_t fIp3dPVUBCkf; //[0,0,14]3d impact parameter to signal PVUB (ckf track)
368     Double32_t fIp3dPVUBCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (ckf track)
369     Double32_t fD0PVUBBSCkf; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (ckf track)
370     Double32_t fD0PVUBBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track)
371     Double32_t fIp3dPVUBBSCkf; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (ckf track)
372     Double32_t fIp3dPVUBBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track)
373 bendavid 1.41 Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV
374     Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint
375     Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex)
376     Double32_t fGsfPVBSCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV w/ bs constraint (matching ckf track excluded from vertex)
377 bendavid 1.40 Double32_t fConvPartnerDCotTheta; //[0,0,14]delta cot theta to nearest conversion partner track
378     Double32_t fConvPartnerDist; //[0,0,14]distance in x-y plane to nearest conversion partner track
379     Double32_t fConvPartnerRadius; //[0,0,14]radius of helix intersection with conversion partner track
380 bendavid 1.46 Double32_t fPFChargedHadronIso; //[0,0,14]pf isolation, charged hadrons
381     Double32_t fPFNeutralHadronIso; //[0,0,14]pf isolation, neutral hadrons
382     Double32_t fPFPhotonIso; //[0,0,14]pf isolation, photons
383 bendavid 1.45 Int_t fConvFlag; //conversion flag indicating which track combination was used
384 bendavid 1.42 Vect3C fConvPosition;
385 loizides 1.29 Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
386     Bool_t fIsMomentumCorrected; //class dependent E-p combination
387     Int_t fClassification; //classification (see GsfElectron.h)
388 bendavid 1.33 Bool_t fIsEB; //is ECAL barrel
389     Bool_t fIsEE; //is ECAL Endcap
390     Bool_t fIsEBEEGap; //is in barrel-endcap gap
391     Bool_t fIsEBEtaGap; //is in EB eta module gap
392     Bool_t fIsEBPhiGap; //is in EB phi module gap
393     Bool_t fIsEEDeeGap; //is in EE dee gap
394     Bool_t fIsEERingGap; //is in EE ring gap
395     Bool_t fIsEcalDriven; //is std. egamma electron
396     Bool_t fIsTrackerDriven; //is pflow track-seeded electron
397 bendavid 1.42 Bool_t fMatchesVertexConversion;
398 bendavid 1.43 RefArray<Track> fAmbiguousGsfTracks; //ambiguous gsf tracks for this electron
399 sixie 1.51 Double_t fEEleClusterOverPout; //energy of the electron cluster
400     Int_t fCTFTrkNLayersWithMeasurement; //number of tracker layers from associated ctf trk
401 sixie 1.13
402 sixie 1.51 ClassDef(Electron, 13) // Electron class
403 bendavid 1.1 };
404 loizides 1.4 }
405 loizides 1.8
406 loizides 1.9 //--------------------------------------------------------------------------------------------------
407 paus 1.50 inline void mithep::Electron::Mark(UInt_t ib) const
408 paus 1.49 {
409     // mark myself
410 paus 1.50 mithep::DataObject::Mark(ib);
411 paus 1.49 // mark my dependencies if they are there
412 paus 1.50 if (fSuperClusterRef.IsValid())
413     fSuperClusterRef.Obj()->Mark(ib);
414     if (fGsfTrackRef.IsValid())
415     fGsfTrackRef.Obj()->Mark(ib);
416     if (fTrackerTrackRef.IsValid())
417     fTrackerTrackRef.Obj()->Mark(ib);
418 paus 1.49 if (fConvPartnerTrackRef.IsValid())
419 paus 1.50 fConvPartnerTrackRef.Obj()->Mark(ib);
420     fAmbiguousGsfTracks.Mark(ib);
421 paus 1.49 }
422    
423     //--------------------------------------------------------------------------------------------------
424 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
425 loizides 1.9 {
426 loizides 1.10 // Return "best" track.
427    
428 bendavid 1.24 if (HasGsfTrk())
429 loizides 1.10 return GsfTrk();
430 bendavid 1.24 else if (HasTrackerTrk())
431 loizides 1.10 return TrackerTrk();
432 loizides 1.9
433 loizides 1.10 return 0;
434 loizides 1.9 }
435    
436 loizides 1.25 //--------------------------------------------------------------------------------------------------
437 bendavid 1.37 inline Double_t mithep::Electron::GetCharge() const
438     {
439     // Return stored charge, unless it is set to invalid (-99),
440     // in that case get charge from track as before
441    
442     if (fCharge==-99)
443     return mithep::ChargedParticle::GetCharge();
444     else
445     return fCharge;
446    
447     }
448    
449     //--------------------------------------------------------------------------------------------------
450 loizides 1.25 inline void mithep::Electron::GetMom() const
451 sixie 1.14 {
452 bendavid 1.31 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
453     // since the momentum vector may be computed non-trivially in cmssw
454 sixie 1.14
455 bendavid 1.31 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
456 bendavid 1.18 }
457    
458     //-------------------------------------------------------------------------------------------------
459 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
460 bendavid 1.18 {
461 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
462     // of the track momentum at the vertex.
463    
464     return SCluster()->Seed()->Energy() / PIn();
465 bendavid 1.18 }
466 bendavid 1.31
467     //-------------------------------------------------------------------------------------------------
468     inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
469     {
470     // Set three-vector
471    
472     fMom.Set(pt,eta,phi);
473     ClearMom();
474     }
475 loizides 1.8 #endif