ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.60
Committed: Sat Sep 1 11:37:40 2012 UTC (12 years, 8 months ago) by sixie
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_032, Mit_031, Mit_030, Mit_029c, Mit_029b, Mit_030_pre1, Mit_029a, HEAD
Changes since 1.59: +2 -1 lines
Log Message:
add accessor for electron track momentum error

File Contents

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: Electron.h,v 1.59 2012/08/09 21:15:46 paus Exp $
3 //
4 // Electron
5 //
6 // This class holds information about reconstructed electrons from CMSSW.
7 //
8 // Authors: C.Paus, G.Ceballos, C.Loizides, J.Bendavid, S.Xie
9 //--------------------------------------------------------------------------------------------------
10
11 #ifndef MITANA_DATATREE_ELECTRON_H
12 #define MITANA_DATATREE_ELECTRON_H
13
14 #include "MitAna/DataTree/interface/SuperCluster.h"
15 #include "MitAna/DataTree/interface/ChargedParticle.h"
16 #include "MitAna/DataCont/interface/Ref.h"
17
18 namespace mithep
19 {
20 class Electron : public ChargedParticle
21 {
22 public:
23 Electron() :
24 fCharge(-99), fScPixCharge(0),
25 fESuperClusterOverP(0), fESeedClusterOverPout(0), fDeltaEtaSuperClTrkAtVtx(0),
26 fDeltaEtaSeedClTrkAtCalo(0), fDeltaPhiSuperClTrkAtVtx(0),
27 fDeltaPhiSeedClTrkAtCalo(0), fFBrem(0), fHadronicOverEm(0), fHcalDepth1OverEcal(0),
28 fHcalDepth2OverEcal(0), fNumberOfClusters(0), fE15(0), fE25Max(0),
29 fE55(0), fCovEtaEta(0), fCoviEtaiEta(0),
30 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 fMva(0), fD0PV(0), fD0PVErr(0), fIp3dPV(0), fIp3dPVErr(0),
37 fD0PVBS(0), fD0PVBSErr(0), fIp3dPVBS(0), fIp3dPVBSErr(0),
38 fD0PVCkf(0), fD0PVCkfErr(0), fIp3dPVCkf(0), fIp3dPVCkfErr(0),
39 fD0PVBSCkf(0), fD0PVBSCkfErr(0), fIp3dPVBSCkf(0), fIp3dPVBSCkfErr(0),
40 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 fGsfPVCompatibility(0), fGsfPVBSCompatibility(0),
45 fGsfPVCompatibilityMatched(0), fGsfPVBSCompatibilityMatched(0),
46 fConvPartnerDCotTheta(0), fConvPartnerDist(0), fConvPartnerRadius(0),
47 fPFChargedHadronIso(0), fPFNeutralHadronIso(0), fPFPhotonIso(0),
48 fConvFlag(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0),
49 fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0),
50 fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0),
51 fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(0),
52 fHadOverEmTow(0), fHCalIsoTowDr03(0), fHCalIsoTowDr04(0),
53 fEcalEnergy(0), fEcalEnergyError(0), fTrackMomentumError(0) {}
54
55 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 Double_t Ip3dPVUBBSCkfSignificance() const { return fIp3dPVUBBSCkf/fIp3dPVUBBSCkfErr; }
104 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 Double_t EEleClusterOverPout() const { return fEEleClusterOverPout; }
126 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 const SuperCluster *PFSCluster() const { return fPFSuperClusterRef.Obj(); }
159 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 Bool_t HasAmbiguousGsfTrack(const Track *t) const { return fAmbiguousGsfTracks.HasObject(t); }
178 const Track *AmbiguousGsfTrack(UInt_t i) const { return fAmbiguousGsfTracks.At(i); }
179 Int_t CTFTrkNLayersWithMeasurement() const { return fCTFTrkNLayersWithMeasurement; }
180 Double_t HadOverEmTow() const { return fHadOverEmTow; }
181 Double_t HcalIsoTowDr03() const { return fHCalIsoTowDr03; }
182 Double_t HcalIsoTowDr04() const { return fHCalIsoTowDr04; }
183 Double_t EcalEnergy() const { return fEcalEnergy; }
184 Double_t EcalEnergyError() const { return fEcalEnergyError; }
185 Double_t TrackMomentumError() const { return fTrackMomentumError; }
186
187 void AddAmbiguousGsfTrack(const Track *t) { fAmbiguousGsfTracks.Add(t); }
188 void SetCharge(Char_t x) { fCharge = x; ClearCharge(); }
189 void SetScPixCharge(Char_t x) { fScPixCharge = x; }
190 void SetD0PV(Double_t x) { fD0PV = x; }
191 void SetD0PVErr(Double_t x) { fD0PVErr = x; }
192 void SetIp3dPV(Double_t x) { fIp3dPV = x; }
193 void SetIp3dPVErr(Double_t x) { fIp3dPVErr = x; }
194 void SetD0PVBS(Double_t x) { fD0PVBS = x; }
195 void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; }
196 void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; }
197 void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; }
198 void SetD0PVCkf(Double_t x) { fD0PVCkf = x; }
199 void SetD0PVCkfErr(Double_t x) { fD0PVCkfErr = x; }
200 void SetIp3dPVCkf(Double_t x) { fIp3dPVCkf = x; }
201 void SetIp3dPVCkfErr(Double_t x) { fIp3dPVCkfErr = x; }
202 void SetD0PVBSCkf(Double_t x) { fD0PVBSCkf = x; }
203 void SetD0PVBSCkfErr(Double_t x) { fD0PVBSCkfErr = x; }
204 void SetIp3dPVBSCkf(Double_t x) { fIp3dPVBSCkf = x; }
205 void SetIp3dPVBSCkfErr(Double_t x) { fIp3dPVBSCkfErr = x; }
206 void SetD0PVUB(Double_t x) { fD0PVUB = x; }
207 void SetD0PVUBErr(Double_t x) { fD0PVUBErr = x; }
208 void SetIp3dPVUB(Double_t x) { fIp3dPVUB = x; }
209 void SetIp3dPVUBErr(Double_t x) { fIp3dPVUBErr = x; }
210 void SetD0PVUBBS(Double_t x) { fD0PVUBBS = x; }
211 void SetD0PVUBBSErr(Double_t x) { fD0PVUBBSErr = x; }
212 void SetIp3dPVUBBS(Double_t x) { fIp3dPVUBBS = x; }
213 void SetIp3dPVUBBSErr(Double_t x) { fIp3dPVUBBSErr = x; }
214 void SetD0PVUBCkf(Double_t x) { fD0PVUBCkf = x; }
215 void SetD0PVUBCkfErr(Double_t x) { fD0PVUBCkfErr = x; }
216 void SetIp3dPVUBCkf(Double_t x) { fIp3dPVUBCkf = x; }
217 void SetIp3dPVUBCkfErr(Double_t x) { fIp3dPVUBCkfErr = x; }
218 void SetD0PVUBBSCkf(Double_t x) { fD0PVUBBSCkf = x; }
219 void SetD0PVUBBSCkfErr(Double_t x) { fD0PVUBBSCkfErr = x; }
220 void SetIp3dPVUBBSCkf(Double_t x) { fIp3dPVUBBSCkf = x; }
221 void SetIp3dPVUBBSCkfErr(Double_t x) { fIp3dPVUBBSCkfErr = x; }
222 void SetGsfPVCompatibility(Double_t x) { fGsfPVCompatibility = x; }
223 void SetGsfPVBSCompatibility(Double_t x) { fGsfPVBSCompatibility = x; }
224 void SetGsfPVCompatibilityMatched(Double_t x) { fGsfPVCompatibilityMatched = x; }
225 void SetGsfPVBSCompatibilityMatched(Double_t x) { fGsfPVBSCompatibilityMatched = x; }
226 void SetConvPartnerDCotTheta(Double_t x) { fConvPartnerDCotTheta = x; }
227 void SetConvPartnerDist(Double_t x) { fConvPartnerDist = x; }
228 void SetConvPartnerRadius(Double_t x) { fConvPartnerRadius = x; }
229 void SetConvFlag(Int_t n) { fConvFlag = n; }
230 void SetClassification(Int_t x) { fClassification = x; }
231 void SetCovEtaEta(Double_t x) { fCovEtaEta = x; }
232 void SetCoviEtaiEta(Double_t x) { fCoviEtaiEta = x; }
233 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
234 { fDeltaEtaSuperClTrkAtVtx = x; }
235 void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
236 { fDeltaEtaSeedClTrkAtCalo = x; }
237 void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
238 { fDeltaPhiSuperClTrkAtVtx = x; }
239 void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
240 { fDeltaPhiSeedClTrkAtCalo = x; }
241 void SetE15(Double_t x) { fE15 = x; }
242 void SetE25Max(Double_t x) { fE25Max = x; }
243 void SetE55(Double_t x) { fE55 = x; }
244 void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
245 void SetEEleClusterOverPout(Double_t x) { fEEleClusterOverPout = x; }
246 void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
247 void SetFBrem(Double_t x) { fFBrem = x; }
248 void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
249 void SetGsfTrk(const Track* t)
250 { fGsfTrackRef = t; ClearCharge(); }
251 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
252 void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
253 void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
254 void SetIDLikelihood(Double_t x) { fIDLikelihood = x; }
255 void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
256 void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
257 void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
258 void SetPIn(Double_t pIn) { fPIn = pIn; }
259 void SetPOut(Double_t pOut) { fPOut = pOut; }
260 void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
261 void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
262 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
263 void SetSuperCluster(const SuperCluster* sc)
264 { fSuperClusterRef = sc; }
265 void SetPFSuperCluster(const SuperCluster* sc)
266 { fPFSuperClusterRef = sc; }
267 void SetTrackerTrk(const Track* t)
268 { fTrackerTrackRef = t; ClearCharge(); }
269 void SetConvPartnerTrk(const Track *t)
270 { fConvPartnerTrackRef = t; }
271 void SetEcalRecHitIsoDr04(Double_t x) { fEcalJurassicIsolation = x; }
272 void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
273 void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
274 void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; }
275 void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; }
276 void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; }
277 void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
278 void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
279 void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; }
280 void SetPFChargedHadronIso(Double_t x) { fPFChargedHadronIso = x; }
281 void SetPFNeutralHadronIso(Double_t x) { fPFNeutralHadronIso = x; }
282 void SetPFPhotonIso(Double_t x) { fPFPhotonIso = x; }
283 void SetMva(Double_t x) { fMva = x; }
284 void SetIsEB(Bool_t b) { fIsEB = b; }
285 void SetIsEE(Bool_t b) { fIsEE = b; }
286 void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; }
287 void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; }
288 void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; }
289 void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; }
290 void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; }
291 void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; }
292 void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; }
293 void SetMatchesVertexConversion(Bool_t b) { fMatchesVertexConversion = b; }
294 void SetConversionXYZ(Double_t x, Double_t y, Double_t z)
295 { fConvPosition.SetXYZ(x,y,z); }
296 void SetCTFTrkNLayersWithMeasurement(Int_t x){ fCTFTrkNLayersWithMeasurement = x; }
297 void SetHadOverEmTow(Double_t x) { fHadOverEmTow = x; }
298 void SetHCalIsoTowDr03(Double_t x) { fHCalIsoTowDr03 = x; }
299 void SetHCalIsoTowDr04(Double_t x) { fHCalIsoTowDr04 = x; }
300 void SetEcalEnergy(Double_t e) { fEcalEnergy = e; }
301 void SetEcalEnergyError(Double_t e) { fEcalEnergyError = e; }
302 void SetTrackMomentumError(Double_t e) { fTrackMomentumError = e; }
303
304 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
305 const Track *Trk() const { return BestTrk(); }
306 const Track *ConvPartnerTrk() const { return fConvPartnerTrackRef.Obj(); }
307
308 // Some structural tools
309 void Mark(UInt_t i=1) const;
310
311 protected:
312 Double_t GetCharge() const;
313 Double_t GetMass() const { return 0.51099892e-3; }
314 void GetMom() const;
315
316 Vect3C fMom; //stored three-momentum
317 Char_t fCharge; //stored charge - filled with -99 when reading old files
318 Char_t fScPixCharge; //charge from supercluster-pixel matching
319 Ref<Track> fGsfTrackRef; //gsf track reference
320 Ref<Track> fTrackerTrackRef; //tracker track reference
321 Ref<Track> fConvPartnerTrackRef; //conversion partner track reference
322 Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
323 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
324 Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
325 Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
326 Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
327 Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
328 Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
329 Double32_t fFBrem; //[0,0,14]brem fraction
330 Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED*
331 Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1
332 Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2
333 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
334 Double32_t fE15; //[0,0,14]1x5 crystal energy
335 Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums)
336 Double32_t fE55; //[0,0,14]5x5 crystal energy
337 Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
338 Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
339 Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED*
340 Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED*
341 Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
342 Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
343 Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING*
344 Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4
345 Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED*
346 Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
347 Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
348 Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3
349 Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING*
350 Double32_t fPassLooseID; //[0,0,14]pass loose id
351 Double32_t fPassTightID; //[0,0,14]pass tight id
352 Double32_t fIDLikelihood; //[0,0,14]likelihood value
353 Double32_t fPIn; //[0,0,14]momentum at vtx
354 Double32_t fPOut; //[0,0,14]momentum at ecal surface
355 Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track
356 Double32_t fMva; //[0,0,14] pflow mva output
357 Double32_t fD0PV; //[0,0,14]transverse impact parameter to signal PV (gsf track)
358 Double32_t fD0PVErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (gsf track)
359 Double32_t fIp3dPV; //[0,0,14]3d impact parameter to signal PV (gsf track)
360 Double32_t fIp3dPVErr; //[0,0,14]3d impact parameter uncertainty to signal PV (gsf track)
361 Double32_t fD0PVBS; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (gsf track)
362 Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
363 Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (gsf track)
364 Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (gsf track)
365 Double32_t fD0PVCkf; //[0,0,14]transverse impact parameter to signal PV (ckf track)
366 Double32_t fD0PVCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (ckf track)
367 Double32_t fIp3dPVCkf; //[0,0,14]3d impact parameter to signal PV (ckf track)
368 Double32_t fIp3dPVCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV (ckf track)
369 Double32_t fD0PVBSCkf; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (ckf track)
370 Double32_t fD0PVBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
371 Double32_t fIp3dPVBSCkf; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (ckf track)
372 Double32_t fIp3dPVBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (ckf track)
373 Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (gsf track)
374 Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (gsf track)
375 Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB (gsf track)
376 Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (gsf track)
377 Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (gsf track)
378 Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track)
379 Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (gsf track)
380 Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track)
381 Double32_t fD0PVUBCkf; //[0,0,14]transverse impact parameter to signal PVUB (ckf track)
382 Double32_t fD0PVUBCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (ckf track)
383 Double32_t fIp3dPVUBCkf; //[0,0,14]3d impact parameter to signal PVUB (ckf track)
384 Double32_t fIp3dPVUBCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (ckf track)
385 Double32_t fD0PVUBBSCkf; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (ckf track)
386 Double32_t fD0PVUBBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track)
387 Double32_t fIp3dPVUBBSCkf; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (ckf track)
388 Double32_t fIp3dPVUBBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track)
389 Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV
390 Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint
391 Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex)
392 Double32_t fGsfPVBSCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV w/ bs constraint (matching ckf track excluded from vertex)
393 Double32_t fConvPartnerDCotTheta; //[0,0,14]delta cot theta to nearest conversion partner track
394 Double32_t fConvPartnerDist; //[0,0,14]distance in x-y plane to nearest conversion partner track
395 Double32_t fConvPartnerRadius; //[0,0,14]radius of helix intersection with conversion partner track
396 Double32_t fPFChargedHadronIso; //[0,0,14]pf isolation, charged hadrons
397 Double32_t fPFNeutralHadronIso; //[0,0,14]pf isolation, neutral hadrons
398 Double32_t fPFPhotonIso; //[0,0,14]pf isolation, photons
399 Int_t fConvFlag; //conversion flag indicating which track combination was used
400 Vect3C fConvPosition;
401 Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
402 Bool_t fIsMomentumCorrected; //class dependent E-p combination
403 Int_t fClassification; //classification (see GsfElectron.h)
404 Bool_t fIsEB; //is ECAL barrel
405 Bool_t fIsEE; //is ECAL Endcap
406 Bool_t fIsEBEEGap; //is in barrel-endcap gap
407 Bool_t fIsEBEtaGap; //is in EB eta module gap
408 Bool_t fIsEBPhiGap; //is in EB phi module gap
409 Bool_t fIsEEDeeGap; //is in EE dee gap
410 Bool_t fIsEERingGap; //is in EE ring gap
411 Bool_t fIsEcalDriven; //is std. egamma electron
412 Bool_t fIsTrackerDriven; //is pflow track-seeded electron
413 Bool_t fMatchesVertexConversion;
414 RefArray<Track> fAmbiguousGsfTracks; //ambiguous gsf tracks for this electron
415 Double_t fEEleClusterOverPout; //energy of the electron cluster
416 Int_t fCTFTrkNLayersWithMeasurement; //number of tracker layers from associated ctf trk
417 Double32_t fHadOverEmTow; //[0,0,14]per-tower definition of hadronic/em energy fraction
418 Double32_t fHCalIsoTowDr03; //[0,0,14]hcal isolation matched to per tower h/e definition
419 Double32_t fHCalIsoTowDr04; //[0,0,14]hcal isolation matched to per tower h/e definition
420 Double32_t fEcalEnergy; //[0,0,14]corrected Ecal energy
421 Double32_t fEcalEnergyError; //[0,0,14]corrected Ecal energy error
422 Double32_t fTrackMomentumError; //track momentum error
423 Ref<SuperCluster> fPFSuperClusterRef; //reference to Particle Flow SuperCluster
424
425 ClassDef(Electron, 15) // Electron class
426 };
427 }
428
429 //--------------------------------------------------------------------------------------------------
430 inline void mithep::Electron::Mark(UInt_t ib) const
431 {
432 // mark myself
433 mithep::DataObject::Mark(ib);
434 // mark my dependencies if they are there
435 if (fSuperClusterRef.IsValid())
436 fSuperClusterRef.Obj()->Mark(ib);
437 if (fGsfTrackRef.IsValid())
438 fGsfTrackRef.Obj()->Mark(ib);
439 if (fTrackerTrackRef.IsValid())
440 fTrackerTrackRef.Obj()->Mark(ib);
441 if (fConvPartnerTrackRef.IsValid())
442 fConvPartnerTrackRef.Obj()->Mark(ib);
443 fAmbiguousGsfTracks.Mark(ib);
444 }
445
446 //--------------------------------------------------------------------------------------------------
447 inline const mithep::Track *mithep::Electron::BestTrk() const
448 {
449 // Return "best" track.
450
451 if (HasGsfTrk())
452 return GsfTrk();
453 else if (HasTrackerTrk())
454 return TrackerTrk();
455
456 return 0;
457 }
458
459 //--------------------------------------------------------------------------------------------------
460 inline Double_t mithep::Electron::GetCharge() const
461 {
462 // Return stored charge, unless it is set to invalid (-99),
463 // in that case get charge from track as before
464
465 if (fCharge==-99)
466 return mithep::ChargedParticle::GetCharge();
467 else
468 return fCharge;
469
470 }
471
472 //--------------------------------------------------------------------------------------------------
473 inline void mithep::Electron::GetMom() const
474 {
475 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
476 // since the momentum vector may be computed non-trivially in cmssw
477
478 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
479 }
480
481 //-------------------------------------------------------------------------------------------------
482 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
483 {
484 // Return energy of the SuperCluster seed divided by the magnitude
485 // of the track momentum at the vertex.
486
487 return SCluster()->Seed()->Energy() / PIn();
488 }
489
490 //-------------------------------------------------------------------------------------------------
491 inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
492 {
493 // Set three-vector
494
495 fMom.Set(pt,eta,phi);
496 ClearMom();
497 }
498 #endif