ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.56
Committed: Sat May 12 16:06:05 2012 UTC (12 years, 11 months ago) by paus
Content type: text/plain
Branch: MAIN
Changes since 1.55: +1 -14 lines
Log Message:
New tag 028 (EcalEnergy added).

File Contents

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