ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.34
Committed: Mon Jul 20 04:57:27 2009 UTC (15 years, 9 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.33: +41 -40 lines
Log Message:
Cleanup

File Contents

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