ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.52
Committed: Fri Apr 20 16:05:48 2012 UTC (13 years ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.51: +13 -4 lines
Log Message:
Add new H/E variables for electrons and photons

File Contents

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