ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.33
Committed: Tue Jul 7 08:31:45 2009 UTC (15 years, 10 months ago) by bendavid
Content type: text/plain
Branch: MAIN
Changes since 1.32: +112 -34 lines
Log Message:
Update electron isolation, id, shower shape, pf flags

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 bendavid 1.33 // $Id: Electron.h,v 1.32 2009/04/07 15:55:36 phedex 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.22 Electron() : fESuperClusterOverP(0), fESeedClusterOverPout(0), fDeltaEtaSuperClTrkAtVtx(0),
24     fDeltaEtaSeedClTrkAtCalo(0), fDeltaPhiSuperClTrkAtVtx(0),
25 bendavid 1.33 fDeltaPhiSeedClTrkAtCalo(0), fFBrem(0), fHadronicOverEm(0), fHcalDepth1OverEcal(0),
26     fHcalDepth2OverEcal(0), fNumberOfClusters(0), fE15(0), fE25Max(0), fE33(0),
27 loizides 1.22 fE55(0), fCovEtaEta(0), fCoviEtaiEta(0), fCovEtaPhi(0), fCovPhiPhi(0),
28 bendavid 1.33 fCaloIsolation(0), fHcalJurassicIsolation(0),
29     fHcalDepth1TowerSumEtDr04(0), fHcalDepth2TowerSumEtDr04(0),
30     fEcalJurassicIsolation(0), fTrackIsolationDr04(0), fCaloTowerIsolation(0),
31     fHcalDepth1TowerSumEtDr03(0), fHcalDepth2TowerSumEtDr03(0),
32     fEcalRecHitSumEtDr03(0), fTrackIsolation(0), fPassLooseID(0),
33     fPassTightID(0), fIDLikelihood(0), fPIn(0), fPOut(0), fFracSharedHits(0),
34     fMva(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0),
35     fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0),
36     fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0),
37     fIsEcalDriven(0), fIsTrackerDriven(0) {}
38 loizides 1.29
39     const Track *BestTrk() const;
40 bendavid 1.33 Double_t CaloIsolation() const { return fCaloIsolation; } //*DEPRECATED*
41     Double_t CaloTowerIsolation() const { return HcalTowerSumEtDr03(); } //*DEPRECATED*
42 loizides 1.29 Int_t Classification() const { return fClassification; }
43     Double_t CovEtaEta() const { return fCovEtaEta; }
44 bendavid 1.33 Double_t CovEtaPhi() const { return fCovEtaPhi; } //*DEPRECATED*
45     Double_t CovPhiPhi() const { return fCovPhiPhi; } //*DEPRECATED*
46 loizides 1.29 Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
47 loizides 1.27 Double_t DeltaEtaSuperClusterTrackAtVtx() const
48     { return fDeltaEtaSuperClTrkAtVtx; }
49     Double_t DeltaEtaSeedClusterTrackAtCalo() const
50     { return fDeltaEtaSeedClTrkAtCalo; }
51     Double_t DeltaPhiSuperClusterTrackAtVtx() const
52     { return fDeltaPhiSuperClTrkAtVtx; }
53     Double_t DeltaPhiSeedClusterTrackAtCalo() const
54     { return fDeltaPhiSeedClTrkAtCalo; }
55 bendavid 1.33 Double_t E15() const { return fE15; }
56     Double_t E25Max() const { return fE25Max; }
57     Double_t E33() const { return fE33; } //*DEPRECATED*
58 loizides 1.29 Double_t E55() const { return fE55; }
59 bendavid 1.33 Double_t EcalJurassicIsolation() const { return EcalRecHitIsoDr04(); } //*DEPRECATED*
60 loizides 1.29 Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
61     Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
62     Double_t ESeedClusterOverPIn() const;
63 bendavid 1.33 Double_t FBrem() const { return fFBrem; }
64     Double_t FBremOld() const { return (PIn() - POut())/PIn(); }
65     Double_t FracSharedHits() const { return fFracSharedHits; }
66 loizides 1.29 const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
67 loizides 1.30 Double_t HadronicOverEm() const { return fHadronicOverEm; }
68 bendavid 1.33 Double_t HcalDepth1OverEcal() const { return fHcalDepth1OverEcal; }
69     Double_t HcalDepth2OverEcal() const { return fHcalDepth2OverEcal; }
70 loizides 1.29 Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
71     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
72     Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
73 bendavid 1.33 Double_t HcalIsolation() const { return fHcalJurassicIsolation; } //*DEPRECATED*
74 loizides 1.29 Double_t IDLikelihood() const { return fIDLikelihood; }
75     Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
76     Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
77 bendavid 1.33 Bool_t IsEB() const { return fIsEB; }
78     Bool_t IsEE() const { return fIsEE; }
79     Bool_t IsEBEEGap() const { return fIsEBEEGap; }
80     Bool_t IsEBEtaGap() const { return fIsEBEtaGap; }
81     Bool_t IsEBPhiGap() const { return fIsEBPhiGap; }
82     Bool_t IsEEDeeGap() const { return fIsEEDeeGap; }
83     Bool_t IsEERingGap() const { return fIsEERingGap; }
84     Bool_t IsEcalDriven() const { return fIsEcalDriven; }
85     Bool_t IsTrackerDriven() const { return fIsTrackerDriven; }
86     Double_t Mva() const { return fMva; }
87 loizides 1.29 Double_t NumberOfClusters() const { return fNumberOfClusters; }
88     EObjType ObjType() const { return kElectron; }
89     Double_t PassLooseID() const { return fPassLooseID; }
90     Double_t PassTightID() const { return fPassTightID; }
91     Double_t PIn() const { return fPIn; }
92     Double_t POut() const { return fPOut; }
93     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
94 bendavid 1.33
95     Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; }
96     Double_t HcalTowerSumEtDr04() const { return HcalDepth1TowerSumEtDr04() +
97     HcalDepth2TowerSumEtDr04(); }
98     Double_t HcalDepth1TowerSumEtDr04() const { return fHcalDepth1TowerSumEtDr04; }
99     Double_t HcalDepth2TowerSumEtDr04() const { return fHcalDepth2TowerSumEtDr04; }
100     Double_t TrackIsolationDr04() const { return fTrackIsolationDr04; }
101     Double_t EcalRecHitIsoDr03() const { return fEcalRecHitSumEtDr03; }
102     Double_t HcalTowerSumEtDr03() const { return fCaloTowerIsolation; }
103     Double_t HcalDepth1TowerSumEtDr03() const { return fHcalDepth1TowerSumEtDr03; }
104     Double_t HcalDepth2TowerSumEtDr03() const { return fHcalDepth2TowerSumEtDr03; }
105     Double_t TrackIsolationDr03() const { return fTrackIsolation; }
106    
107    
108 loizides 1.29 void SetClassification(Int_t x) { fClassification = x; }
109     void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
110     void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
111 loizides 1.27 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
112     { fDeltaEtaSuperClTrkAtVtx = x; }
113     void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
114     { fDeltaEtaSeedClTrkAtCalo = x; }
115     void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
116     { fDeltaPhiSuperClTrkAtVtx = x; }
117     void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
118     { fDeltaPhiSeedClTrkAtCalo = x; }
119 bendavid 1.33 void SetE15(Double_t x) { fE15 = x; }
120     void SetE25Max(Double_t x) { fE25Max = x; }
121     void SetE55(Double_t x) { fE55 = x; }
122 loizides 1.29 void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
123     void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
124 bendavid 1.33 void SetFBrem(Double_t x) { fFBrem = x; }
125     void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
126 loizides 1.29 void SetGsfTrk(const Track* t)
127 bendavid 1.31 { fGsfTrackRef = t; ClearCharge(); }
128 loizides 1.29 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
129 bendavid 1.33 void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
130     void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
131 loizides 1.29 void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
132     void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
133     void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
134     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
135     void SetPIn(Double_t PIn) { fPIn = PIn; }
136     void SetPOut(Double_t POut) { fPOut = POut; }
137     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
138     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
139 bendavid 1.31 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
140     void SetSuperCluster(const SuperCluster* sc)
141     { fSuperClusterRef = sc; }
142 loizides 1.29 void SetTrackerTrk(const Track* t)
143 bendavid 1.31 { fTrackerTrackRef = t; ClearCharge(); }
144 bendavid 1.33 void SetEcalRecHitIsoDr04(Double_t x) { fEcalJurassicIsolation = x; }
145     void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; }
146     void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; }
147     void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; }
148     void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; }
149     void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; }
150     void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; }
151     void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; }
152     void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; }
153     void SetMva(Double_t x) { fMva = x; }
154     void SetIsEB(Bool_t b) { fIsEB = b; }
155     void SetIsEE(Bool_t b) { fIsEE = b; }
156     void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; }
157     void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; }
158     void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; }
159     void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; }
160     void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; }
161     void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; }
162     void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; }
163    
164    
165 loizides 1.29 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
166 bendavid 1.33 Double_t TrackIsolation() const { return TrackIsolationDr03(); } //*DEPRECATED*
167 loizides 1.29 const Track *Trk() const { return BestTrk(); }
168 sixie 1.13
169 loizides 1.8 protected:
170 loizides 1.29 Double_t GetMass() const { return 0.51099892e-3; }
171 loizides 1.27 void GetMom() const;
172 loizides 1.25
173 bendavid 1.31 Vect3C fMom; //stored three-momentum
174 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
175     Ref<Track> fTrackerTrackRef; //tracker track reference
176     Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
177 loizides 1.29 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
178     Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
179     Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
180     Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
181     Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
182     Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
183 bendavid 1.33 Double32_t fFBrem; //[0,0,14]brem fraction
184     Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED*
185     Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1
186     Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2
187 loizides 1.29 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
188 bendavid 1.33 Double32_t fE15; //[0,0,14]1x5 crystal energy
189     Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums)
190     Double32_t fE33; //[0,0,14]3x3 crystal energy *DEPRECATED*
191 loizides 1.29 Double32_t fE55; //[0,0,14]5x5 crystal energy
192     Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
193     Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
194 bendavid 1.33 Double32_t fCovEtaPhi; //[0,0,14]covariance eta-phi *DEPRECATED*
195     Double32_t fCovPhiPhi; //[0,0,14]covariance phi-phi *DEPRECATED*
196     Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED*
197     Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED*
198     Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4
199     Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4
200     Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING*
201     Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4
202     Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED*
203     Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3
204     Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3
205     Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3
206     Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING*
207 loizides 1.29 Double32_t fPassLooseID; //[0,0,14]pass loose id
208     Double32_t fPassTightID; //[0,0,14]pass tight id
209     Double32_t fIDLikelihood; //[0,0,14]likelihood value
210     Double32_t fPIn; //[0,0,14]momentum at vtx
211     Double32_t fPOut; //[0,0,14]momentum at ecal surface
212 bendavid 1.33 Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track
213     Double32_t fMva; //[0,0,14] pflow mva output
214 loizides 1.29 Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
215     Bool_t fIsMomentumCorrected; //class dependent E-p combination
216     Int_t fClassification; //classification (see GsfElectron.h)
217 bendavid 1.33 Bool_t fIsEB; //is ECAL barrel
218     Bool_t fIsEE; //is ECAL Endcap
219     Bool_t fIsEBEEGap; //is in barrel-endcap gap
220     Bool_t fIsEBEtaGap; //is in EB eta module gap
221     Bool_t fIsEBPhiGap; //is in EB phi module gap
222     Bool_t fIsEEDeeGap; //is in EE dee gap
223     Bool_t fIsEERingGap; //is in EE ring gap
224     Bool_t fIsEcalDriven; //is std. egamma electron
225     Bool_t fIsTrackerDriven; //is pflow track-seeded electron
226 sixie 1.13
227 bendavid 1.33 ClassDef(Electron, 2) // Electron class
228 bendavid 1.1 };
229 loizides 1.4 }
230 loizides 1.8
231 loizides 1.9 //--------------------------------------------------------------------------------------------------
232 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
233 loizides 1.9 {
234 loizides 1.10 // Return "best" track.
235    
236 bendavid 1.24 if (HasGsfTrk())
237 loizides 1.10 return GsfTrk();
238 bendavid 1.24 else if (HasTrackerTrk())
239 loizides 1.10 return TrackerTrk();
240 loizides 1.9
241 loizides 1.10 return 0;
242 loizides 1.9 }
243    
244 loizides 1.25 //--------------------------------------------------------------------------------------------------
245     inline void mithep::Electron::GetMom() const
246 sixie 1.14 {
247 bendavid 1.31 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
248     // since the momentum vector may be computed non-trivially in cmssw
249 sixie 1.14
250 bendavid 1.31 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
251 bendavid 1.18 }
252    
253     //-------------------------------------------------------------------------------------------------
254 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
255 bendavid 1.18 {
256 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
257     // of the track momentum at the vertex.
258    
259     return SCluster()->Seed()->Energy() / PIn();
260 bendavid 1.18 }
261 bendavid 1.31
262     //-------------------------------------------------------------------------------------------------
263     inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
264     {
265     // Set three-vector
266    
267     fMom.Set(pt,eta,phi);
268     ClearMom();
269     }
270 loizides 1.8 #endif