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

# Content
1 //--------------------------------------------------------------------------------------------------
2 // $Id: Electron.h,v 1.32 2009/04/07 15:55:36 phedex Exp $
3 //
4 // Electron
5 //
6 // This class holds information about reconstructed electrons from CMSSW.
7 //
8 // Authors: 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() : fESuperClusterOverP(0), fESeedClusterOverPout(0), fDeltaEtaSuperClTrkAtVtx(0),
24 fDeltaEtaSeedClTrkAtCalo(0), fDeltaPhiSuperClTrkAtVtx(0),
25 fDeltaPhiSeedClTrkAtCalo(0), fFBrem(0), fHadronicOverEm(0), fHcalDepth1OverEcal(0),
26 fHcalDepth2OverEcal(0), fNumberOfClusters(0), fE15(0), fE25Max(0), fE33(0),
27 fE55(0), fCovEtaEta(0), fCoviEtaiEta(0), fCovEtaPhi(0), fCovPhiPhi(0),
28 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
39 const Track *BestTrk() const;
40 Double_t CaloIsolation() const { return fCaloIsolation; } //*DEPRECATED*
41 Double_t CaloTowerIsolation() const { return HcalTowerSumEtDr03(); } //*DEPRECATED*
42 Int_t Classification() const { return fClassification; }
43 Double_t CovEtaEta() const { return fCovEtaEta; }
44 Double_t CovEtaPhi() const { return fCovEtaPhi; } //*DEPRECATED*
45 Double_t CovPhiPhi() const { return fCovPhiPhi; } //*DEPRECATED*
46 Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
47 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 Double_t E15() const { return fE15; }
56 Double_t E25Max() const { return fE25Max; }
57 Double_t E33() const { return fE33; } //*DEPRECATED*
58 Double_t E55() const { return fE55; }
59 Double_t EcalJurassicIsolation() const { return EcalRecHitIsoDr04(); } //*DEPRECATED*
60 Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
61 Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
62 Double_t ESeedClusterOverPIn() const;
63 Double_t FBrem() const { return fFBrem; }
64 Double_t FBremOld() const { return (PIn() - POut())/PIn(); }
65 Double_t FracSharedHits() const { return fFracSharedHits; }
66 const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
67 Double_t HadronicOverEm() const { return fHadronicOverEm; }
68 Double_t HcalDepth1OverEcal() const { return fHcalDepth1OverEcal; }
69 Double_t HcalDepth2OverEcal() const { return fHcalDepth2OverEcal; }
70 Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
71 Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
72 Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
73 Double_t HcalIsolation() const { return fHcalJurassicIsolation; } //*DEPRECATED*
74 Double_t IDLikelihood() const { return fIDLikelihood; }
75 Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
76 Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
77 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 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
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 void SetClassification(Int_t x) { fClassification = x; }
109 void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
110 void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
111 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 void SetE15(Double_t x) { fE15 = x; }
120 void SetE25Max(Double_t x) { fE25Max = x; }
121 void SetE55(Double_t x) { fE55 = x; }
122 void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
123 void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
124 void SetFBrem(Double_t x) { fFBrem = x; }
125 void SetFracSharedHits(Double_t x) { fFracSharedHits = x; }
126 void SetGsfTrk(const Track* t)
127 { fGsfTrackRef = t; ClearCharge(); }
128 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
129 void SetHcalDepth1OverEcal(Double_t x) { fHcalDepth1OverEcal = x; }
130 void SetHcalDepth2OverEcal(Double_t x) { fHcalDepth2OverEcal = x; }
131 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 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
140 void SetSuperCluster(const SuperCluster* sc)
141 { fSuperClusterRef = sc; }
142 void SetTrackerTrk(const Track* t)
143 { fTrackerTrackRef = t; ClearCharge(); }
144 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 const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
166 Double_t TrackIsolation() const { return TrackIsolationDr03(); } //*DEPRECATED*
167 const Track *Trk() const { return BestTrk(); }
168
169 protected:
170 Double_t GetMass() const { return 0.51099892e-3; }
171 void GetMom() const;
172
173 Vect3C fMom; //stored three-momentum
174 Ref<Track> fGsfTrackRef; //gsf track reference
175 Ref<Track> fTrackerTrackRef; //tracker track reference
176 Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
177 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 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 Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
188 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 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 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 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 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 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 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
227 ClassDef(Electron, 2) // Electron class
228 };
229 }
230
231 //--------------------------------------------------------------------------------------------------
232 inline const mithep::Track *mithep::Electron::BestTrk() const
233 {
234 // Return "best" track.
235
236 if (HasGsfTrk())
237 return GsfTrk();
238 else if (HasTrackerTrk())
239 return TrackerTrk();
240
241 return 0;
242 }
243
244 //--------------------------------------------------------------------------------------------------
245 inline void mithep::Electron::GetMom() const
246 {
247 // 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
250 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
251 }
252
253 //-------------------------------------------------------------------------------------------------
254 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
255 {
256 // 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 }
261
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 #endif