ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.27
Committed: Tue Mar 3 17:04:09 2009 UTC (16 years, 2 months ago) by loizides
Content type: text/plain
Branch: MAIN
Changes since 1.26: +110 -99 lines
Log Message:
Cleanup and double32.

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 loizides 1.27 // $Id: Electron.h,v 1.26 2009/02/26 17:06:24 bendavid Exp $
3 bendavid 1.1 //
4 paus 1.3 // Electron
5 bendavid 1.1 //
6 loizides 1.22 // Details to be worked out... TODO: Needs description ala Muon class
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     fDeltaPhiSeedClTrkAtCalo(0), fHadronicOverEm(0), fIsEnergyScaleCorrected(0),
26     fIsMomentumCorrected(0), fNumberOfClusters(0), fClassification(0), fE33(0),
27     fE55(0), fCovEtaEta(0), fCoviEtaiEta(0), fCovEtaPhi(0), fCovPhiPhi(0),
28     fCaloIsolation(0), fCaloTowerIsolation(0), fTrackIsolation(0),
29     fEcalJurassicIsolation(0), fHcalJurassicIsolation(0), fPassLooseID(0),
30     fPassTightID(0), fIDLikelihood(0), fPIn(0), fPOut(0) {}
31 bendavid 1.1
32 sixie 1.14 const Track *BestTrk() const;
33 loizides 1.27 const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
34     const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
35     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
36     const Track *Trk() const { return BestTrk(); }
37     Double_t CaloIsolation() const { return fCaloIsolation; }
38     Double_t CaloTowerIsolation() const { return fCaloTowerIsolation; }
39     Double_t Classification() const { return fClassification; }
40     Double_t CovEtaEta() const { return fCovEtaEta; }
41     Double_t CovEtaPhi() const { return fCovEtaPhi; }
42     Double_t CovPhiPhi() const { return fCovPhiPhi; }
43     Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
44     Double_t DeltaEtaSuperClusterTrackAtVtx() const
45     { return fDeltaEtaSuperClTrkAtVtx; }
46     Double_t DeltaEtaSeedClusterTrackAtCalo() const
47     { return fDeltaEtaSeedClTrkAtCalo; }
48     Double_t DeltaPhiSuperClusterTrackAtVtx() const
49     { return fDeltaPhiSuperClTrkAtVtx; }
50     Double_t DeltaPhiSeedClusterTrackAtCalo() const
51     { return fDeltaPhiSeedClTrkAtCalo; }
52     Double_t E33() const { return fE33; }
53     Double_t E55() const { return fE55; }
54     Double_t EcalJurassicIsolation() const { return fEcalJurassicIsolation; }
55     Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
56     Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
57     Double_t ESeedClusterOverPIn() const;
58     Double_t IDLikelihood() const { return fIDLikelihood; }
59     Double_t IsEnergyScaleCorrected()const { return fIsEnergyScaleCorrected; }
60     Double_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
61     Double_t HadronicOverEm() const { return fHadronicOverEm; }
62     Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
63     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
64     Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
65     Double_t HcalIsolation() const { return fHcalJurassicIsolation; }
66     Double_t NumberOfClusters() const { return fNumberOfClusters; }
67     EObjType ObjType() const { return kElectron; }
68     Double_t PassLooseID() const { return fPassLooseID; }
69     Double_t PassTightID() const { return fPassTightID; }
70     Double_t PIn() const { return fPIn; }
71     Double_t POut() const { return fPOut; }
72     Double_t TrackIsolation() const { return fTrackIsolation; }
73     void SetGsfTrk(const Track* t)
74     { fGsfTrackRef = t; ClearMom(); ClearCharge(); }
75     void SetTrackerTrk(const Track* t)
76     { fTrackerTrackRef = t; ClearMom(); ClearCharge(); }
77     void SetSuperCluster(const SuperCluster* sc)
78     { fSuperClusterRef = sc; ClearMom(); }
79     void SetCaloIsolation(Double_t caloiso) { fCaloIsolation = caloiso; }
80     void SetCaloTowerIsolation(Double_t tiso) { fCaloTowerIsolation = tiso; }
81     void SetClassification(Double_t x) { fClassification = x; }
82     void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
83     void SetCovEtaPhi(Double_t CovEtaPhi) { fCovEtaPhi = CovEtaPhi; }
84     void SetCovPhiPhi(Double_t CovPhiPhi) { fCovPhiPhi = CovPhiPhi; }
85     void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
86     void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
87     { fDeltaEtaSuperClTrkAtVtx = x; }
88     void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
89     { fDeltaEtaSeedClTrkAtCalo = x; }
90     void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
91     { fDeltaPhiSuperClTrkAtVtx = x; }
92     void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
93     { fDeltaPhiSeedClTrkAtCalo = x; }
94     void SetE33(Double_t E33) { fE33 = E33; }
95     void SetE55(Double_t E55) { fE55 = E55; }
96     void SetEcalJurassicIso(Double_t iso ) { fEcalJurassicIsolation = iso; }
97     void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
98     void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
99     void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
100     void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
101     void SetIsEnergyScaleCorrected(Double_t x) { fIsEnergyScaleCorrected = x; }
102     void SetIsMomentumCorrected(Double_t x) { fIsMomentumCorrected = x; }
103     void SetHcalIsolation(Double_t iso ) { fHcalJurassicIsolation = iso; }
104     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
105     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
106     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
107     void SetPIn(Double_t PIn) { fPIn = PIn; }
108     void SetPOut(Double_t POut) { fPOut = POut; }
109     void SetTrackIsolation(Double_t trkiso) { fTrackIsolation = trkiso; }
110 sixie 1.13
111 loizides 1.8 protected:
112 loizides 1.27 Double_t GetMass() const { return 0.51099892e-3; }
113     void GetMom() const;
114 loizides 1.25
115 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
116     Ref<Track> fTrackerTrackRef; //tracker track reference
117     Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
118     Double32_t fESuperClusterOverP; //
119     Double32_t fESeedClusterOverPout; //
120     Double32_t fDeltaEtaSuperClTrkAtVtx; //
121     Double32_t fDeltaEtaSeedClTrkAtCalo; //
122     Double32_t fDeltaPhiSuperClTrkAtVtx; //
123     Double32_t fDeltaPhiSeedClTrkAtCalo; //
124     Double32_t fHadronicOverEm; //
125     Double32_t fIsEnergyScaleCorrected; //
126     Double32_t fIsMomentumCorrected; //
127     Double32_t fNumberOfClusters; //
128     Double32_t fClassification; //
129     Double32_t fE33; //
130     Double32_t fE55; //
131     Double32_t fCovEtaEta; //
132     Double32_t fCoviEtaiEta; //
133     Double32_t fCovEtaPhi; //
134     Double32_t fCovPhiPhi; //
135     Double32_t fCaloIsolation; //
136     Double32_t fCaloTowerIsolation; //
137     Double32_t fTrackIsolation; //
138     Double32_t fEcalJurassicIsolation; //
139     Double32_t fHcalJurassicIsolation; //
140     Double32_t fPassLooseID; //
141     Double32_t fPassTightID; //
142     Double32_t fIDLikelihood; //
143     Double32_t fPIn; //
144     Double32_t fPOut; //
145 sixie 1.13
146 loizides 1.7 ClassDef(Electron, 1) // Electron class
147 bendavid 1.1 };
148 loizides 1.4 }
149 loizides 1.8
150 loizides 1.9 //--------------------------------------------------------------------------------------------------
151 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
152 loizides 1.9 {
153 loizides 1.10 // Return "best" track.
154    
155 bendavid 1.24 if (HasGsfTrk())
156 loizides 1.10 return GsfTrk();
157 bendavid 1.24 else if (HasTrackerTrk())
158 loizides 1.10 return TrackerTrk();
159 loizides 1.9
160 loizides 1.10 return 0;
161 loizides 1.9 }
162    
163 loizides 1.25 //--------------------------------------------------------------------------------------------------
164     inline void mithep::Electron::GetMom() const
165 sixie 1.14 {
166 loizides 1.25 // Get momentum of the electron. We use the direction of the
167 loizides 1.22 // track and the energy of the SuperCluster.
168 sixie 1.14
169 loizides 1.25 const mithep::Track *trk = Trk();
170 sixie 1.15
171 loizides 1.25 if (!trk) {
172     fCachedMom.SetCoordinates(0,0,0,0);
173     return;
174     }
175 sixie 1.15
176 loizides 1.25 Double_t p = 0;
177     Double_t mass = GetMass();
178 bendavid 1.18
179     const mithep::SuperCluster *sc = SCluster();
180     if (sc)
181 loizides 1.25 p = TMath::Sqrt(sc->Energy()*sc->Energy() - mass*mass);
182 bendavid 1.18 else
183 loizides 1.25 p = trk->P();
184 loizides 1.22
185 loizides 1.25 Double_t pt = TMath::Abs(p*TMath::Cos(trk->Lambda()));
186     fCachedMom.SetCoordinates(pt,trk->Eta(),trk->Phi(),mass);
187 bendavid 1.18 }
188    
189     //-------------------------------------------------------------------------------------------------
190 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
191 bendavid 1.18 {
192 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
193     // of the track momentum at the vertex.
194    
195     return SCluster()->Seed()->Energy() / PIn();
196 bendavid 1.18 }
197 loizides 1.8 #endif