1 |
bendavid |
1.1 |
//--------------------------------------------------------------------------------------------------
|
2 |
bendavid |
1.18 |
// $Id: Electron.h,v 1.17 2008/09/09 12:50:43 sixie Exp $
|
3 |
bendavid |
1.1 |
//
|
4 |
paus |
1.3 |
// Electron
|
5 |
bendavid |
1.1 |
//
|
6 |
|
|
// Details to be worked out...
|
7 |
|
|
//
|
8 |
sixie |
1.13 |
// Authors: C.Loizides, J.Bendavid, S.Xie
|
9 |
bendavid |
1.1 |
//--------------------------------------------------------------------------------------------------
|
10 |
|
|
|
11 |
loizides |
1.6 |
#ifndef DATATREE_ELECTRON_H
|
12 |
|
|
#define DATATREE_ELECTRON_H
|
13 |
|
|
|
14 |
sixie |
1.13 |
#include "MitAna/DataTree/interface/SuperCluster.h"
|
15 |
bendavid |
1.11 |
#include "MitAna/DataTree/interface/ChargedParticle.h"
|
16 |
loizides |
1.6 |
|
17 |
bendavid |
1.1 |
namespace mithep
|
18 |
|
|
{
|
19 |
bendavid |
1.11 |
class Electron : public ChargedParticle
|
20 |
bendavid |
1.1 |
{
|
21 |
|
|
public:
|
22 |
|
|
Electron() {}
|
23 |
|
|
~Electron() {}
|
24 |
|
|
|
25 |
sixie |
1.14 |
const Track *BestTrk() const;
|
26 |
|
|
const Track *GsfTrk() const;
|
27 |
|
|
const Track *TrackerTrk() const;
|
28 |
|
|
const SuperCluster *SCluster() const;
|
29 |
|
|
FourVector Mom() const;
|
30 |
|
|
const Track *Trk() const { return BestTrk(); }
|
31 |
bendavid |
1.18 |
Double_t E() const;
|
32 |
|
|
Double_t P() const;
|
33 |
|
|
Double_t Pt() const;
|
34 |
|
|
Double_t Px() const;
|
35 |
|
|
Double_t Py() const;
|
36 |
|
|
Double_t Pz() const;
|
37 |
sixie |
1.14 |
|
38 |
sixie |
1.13 |
Double_t Mass() const { return 0.51099892e-3; }
|
39 |
|
|
Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
|
40 |
|
|
Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
|
41 |
sixie |
1.15 |
Double_t ESeedClusterOverPIn() const;
|
42 |
|
|
Double_t PIn() const { return fPIn; }
|
43 |
|
|
Double_t POut() const { return fPOut; }
|
44 |
sixie |
1.13 |
Double_t DeltaEtaSuperClusterTrackAtVtx() const { return fDeltaEtaSuperClTrkAtVtx; }
|
45 |
|
|
Double_t DeltaEtaSeedClusterTrackAtCalo() const { return fDeltaEtaSeedClTrkAtCalo; }
|
46 |
|
|
Double_t DeltaPhiSuperClusterTrackAtVtx() const { return fDeltaPhiSuperClTrkAtVtx; }
|
47 |
|
|
Double_t DeltaPhiSeedClusterTrackAtCalo() const { return fDeltaPhiSeedClTrkAtCalo; }
|
48 |
|
|
Double_t HadronicOverEm() const { return fHadronicOverEm; }
|
49 |
|
|
Double_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
|
50 |
|
|
Double_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
|
51 |
|
|
Double_t NumberOfClusters() const { return fNumberOfClusters; }
|
52 |
|
|
Double_t Classification() const { return fClassification; }
|
53 |
|
|
Double_t E33() const { return fE33; }
|
54 |
|
|
Double_t E55() const { return fE55; }
|
55 |
|
|
Double_t CovEtaEta() const { return fCovEtaEta; }
|
56 |
|
|
Double_t CovEtaPhi() const { return fCovEtaPhi; }
|
57 |
|
|
Double_t CovPhiPhi() const { return fCovPhiPhi; }
|
58 |
|
|
Double_t CaloIsolation() const { return fCaloIsolation; }
|
59 |
sixie |
1.16 |
Double_t CaloTowerIsolation() const { return fCaloTowerIsolation; }
|
60 |
sixie |
1.13 |
Double_t TrackIsolation() const { return fTrackIsolation; }
|
61 |
sixie |
1.17 |
Double_t EcalJurassicIsolation() const { return fEcalJurassicIsolation; }
|
62 |
|
|
Double_t HcalJurassicIsolation() const { return fHcalJurassicIsolation; }
|
63 |
|
|
|
64 |
sixie |
1.15 |
Double_t PassLooseID() const { return fPassLooseID; }
|
65 |
|
|
Double_t PassTightID() const { return fPassTightID; }
|
66 |
|
|
Double_t IDLikelihood() const { return fIDLikelihood; }
|
67 |
sixie |
1.13 |
|
68 |
|
|
void SetGsfTrk(Track* t) { fGsfTrackRef = t; }
|
69 |
|
|
void SetTrackerTrk(Track* t) { fTrackerTrackRef = t; }
|
70 |
|
|
void SetSuperCluster(SuperCluster* sc) { fSuperClusterRef = sc; }
|
71 |
|
|
void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
|
72 |
|
|
void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
|
73 |
sixie |
1.15 |
void SetPIn(Double_t PIn) { fPIn = PIn; }
|
74 |
|
|
void SetPOut(Double_t POut) { fPOut = POut; }
|
75 |
sixie |
1.13 |
void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x) { fDeltaEtaSuperClTrkAtVtx = x; }
|
76 |
|
|
void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x) { fDeltaEtaSeedClTrkAtCalo = x; }
|
77 |
|
|
void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x) { fDeltaPhiSuperClTrkAtVtx = x; }
|
78 |
|
|
void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x) { fDeltaPhiSeedClTrkAtCalo = x; }
|
79 |
|
|
void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
|
80 |
|
|
void SetIsEnergyScaleCorrected(Double_t x) { fIsEnergyScaleCorrected = x; }
|
81 |
|
|
void SetIsMomentumCorrected(Double_t x) { fIsMomentumCorrected = x; }
|
82 |
|
|
void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
|
83 |
|
|
void SetClassification(Double_t x) { fClassification = x; }
|
84 |
|
|
void SetE33(Double_t E33) { fE33 = E33; }
|
85 |
|
|
void SetE55(Double_t E55) { fE55 = E55; }
|
86 |
|
|
void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
|
87 |
|
|
void SetCovEtaPhi(Double_t CovEtaPhi) { fCovEtaPhi = CovEtaPhi; }
|
88 |
|
|
void SetCovPhiPhi(Double_t CovPhiPhi) { fCovPhiPhi = CovPhiPhi; }
|
89 |
|
|
void SetCaloIsolation(Double_t CaloIsolation) { fCaloIsolation = CaloIsolation; }
|
90 |
sixie |
1.16 |
void SetCaloTowerIsolation(Double_t TowerIso) { fCaloTowerIsolation = TowerIso; }
|
91 |
sixie |
1.13 |
void SetTrackIsolation(Double_t TrackIsolation) { fTrackIsolation = TrackIsolation;}
|
92 |
sixie |
1.17 |
void SetEcalJurassicIsolation(Double_t iso ) { fEcalJurassicIsolation = iso; }
|
93 |
|
|
void SetHcalJurassicIsolation(Double_t iso ) { fHcalJurassicIsolation = iso; }
|
94 |
sixie |
1.15 |
void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
|
95 |
|
|
void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
|
96 |
|
|
void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
|
97 |
sixie |
1.13 |
|
98 |
loizides |
1.8 |
protected:
|
99 |
loizides |
1.9 |
TRef fGsfTrackRef; //global combined track reference
|
100 |
|
|
TRef fTrackerTrackRef; //tracker track reference
|
101 |
sixie |
1.13 |
TRef fSuperClusterRef; //superCluster
|
102 |
|
|
|
103 |
|
|
Double_t fESuperClusterOverP;
|
104 |
|
|
Double_t fESeedClusterOverPout;
|
105 |
|
|
Double_t fDeltaEtaSuperClTrkAtVtx;
|
106 |
|
|
Double_t fDeltaEtaSeedClTrkAtCalo;
|
107 |
|
|
Double_t fDeltaPhiSuperClTrkAtVtx;
|
108 |
|
|
Double_t fDeltaPhiSeedClTrkAtCalo;
|
109 |
|
|
Double_t fHadronicOverEm;
|
110 |
|
|
Double_t fIsEnergyScaleCorrected;
|
111 |
|
|
Double_t fIsMomentumCorrected;
|
112 |
|
|
Double_t fNumberOfClusters;
|
113 |
|
|
Double_t fClassification;
|
114 |
|
|
Double_t fE33;
|
115 |
|
|
Double_t fE55;
|
116 |
|
|
Double_t fCovEtaEta;
|
117 |
|
|
Double_t fCovEtaPhi;
|
118 |
|
|
Double_t fCovPhiPhi;
|
119 |
|
|
Double_t fCaloIsolation;
|
120 |
sixie |
1.16 |
Double_t fCaloTowerIsolation;
|
121 |
sixie |
1.13 |
Double_t fTrackIsolation;
|
122 |
sixie |
1.17 |
Double_t fEcalJurassicIsolation;
|
123 |
|
|
Double_t fHcalJurassicIsolation;
|
124 |
sixie |
1.15 |
Double_t fPassLooseID;
|
125 |
|
|
Double_t fPassTightID;
|
126 |
|
|
Double_t fIDLikelihood;
|
127 |
|
|
Double_t fPIn;
|
128 |
|
|
Double_t fPOut;
|
129 |
sixie |
1.13 |
|
130 |
loizides |
1.7 |
ClassDef(Electron, 1) // Electron class
|
131 |
bendavid |
1.1 |
};
|
132 |
loizides |
1.4 |
}
|
133 |
loizides |
1.8 |
|
134 |
loizides |
1.9 |
//--------------------------------------------------------------------------------------------------
|
135 |
loizides |
1.10 |
inline const mithep::Track *mithep::Electron::BestTrk() const
|
136 |
loizides |
1.9 |
{
|
137 |
loizides |
1.10 |
// Return "best" track.
|
138 |
|
|
|
139 |
|
|
if (GsfTrk())
|
140 |
|
|
return GsfTrk();
|
141 |
|
|
else if (TrackerTrk())
|
142 |
|
|
return TrackerTrk();
|
143 |
loizides |
1.9 |
|
144 |
loizides |
1.10 |
return 0;
|
145 |
loizides |
1.9 |
}
|
146 |
|
|
|
147 |
|
|
//--------------------------------------------------------------------------------------------------
|
148 |
loizides |
1.10 |
inline const mithep::Track *mithep::Electron::GsfTrk() const
|
149 |
loizides |
1.9 |
{
|
150 |
loizides |
1.10 |
// Return global combined track.
|
151 |
loizides |
1.9 |
|
152 |
loizides |
1.10 |
return static_cast<const Track*>(fGsfTrackRef.GetObject());
|
153 |
loizides |
1.9 |
}
|
154 |
|
|
|
155 |
|
|
//--------------------------------------------------------------------------------------------------
|
156 |
loizides |
1.10 |
inline const mithep::Track *mithep::Electron::TrackerTrk() const
|
157 |
loizides |
1.9 |
{
|
158 |
loizides |
1.10 |
// Return tracker track.
|
159 |
loizides |
1.9 |
|
160 |
loizides |
1.10 |
return static_cast<const Track*>(fTrackerTrackRef.GetObject());
|
161 |
loizides |
1.9 |
}
|
162 |
sixie |
1.13 |
//--------------------------------------------------------------------------------------------------
|
163 |
|
|
inline const mithep::SuperCluster *mithep::Electron::SCluster() const
|
164 |
|
|
{
|
165 |
|
|
// Return Super cluster
|
166 |
|
|
|
167 |
|
|
return static_cast<const SuperCluster*>(fSuperClusterRef.GetObject());
|
168 |
|
|
}
|
169 |
sixie |
1.14 |
|
170 |
|
|
//-------------------------------------------------------------------------------------------------
|
171 |
|
|
inline mithep::FourVector mithep::Electron::Mom() const
|
172 |
|
|
{
|
173 |
|
|
// Return Momentum of the electron. We use the direction of the
|
174 |
|
|
// Track and the Energy of the Super Cluster
|
175 |
|
|
|
176 |
bendavid |
1.18 |
return FourVector(Px(), Py(), Pz(), E());
|
177 |
sixie |
1.14 |
}
|
178 |
sixie |
1.15 |
|
179 |
bendavid |
1.18 |
//-------------------------------------------------------------------------------------------------
|
180 |
sixie |
1.15 |
inline Double_t mithep::Electron::ESeedClusterOverPIn() const
|
181 |
|
|
{
|
182 |
|
|
// Return Energy of the SuperCluster Seed Divided by the magnitude
|
183 |
|
|
// of the track momentum at the vertex
|
184 |
|
|
|
185 |
|
|
return SCluster()->Seed()->Energy() / PIn();
|
186 |
|
|
}
|
187 |
|
|
|
188 |
bendavid |
1.18 |
//-------------------------------------------------------------------------------------------------
|
189 |
|
|
inline Double_t mithep::Electron::E() const
|
190 |
|
|
{
|
191 |
|
|
// Return Energy of the SuperCluster if present
|
192 |
|
|
// or else return energy derived from the track
|
193 |
|
|
|
194 |
|
|
const mithep::SuperCluster *sc = SCluster();
|
195 |
|
|
if (sc)
|
196 |
|
|
return sc->Energy();
|
197 |
|
|
else
|
198 |
|
|
return TMath::Sqrt(Trk()->P()*Trk()->P() + Mass()*Mass());
|
199 |
|
|
}
|
200 |
|
|
|
201 |
|
|
//-------------------------------------------------------------------------------------------------
|
202 |
|
|
inline Double_t mithep::Electron::P() const
|
203 |
|
|
{
|
204 |
|
|
// Return momentum derived from the SuperCluster if present
|
205 |
|
|
// or else return momentum from the track
|
206 |
|
|
|
207 |
|
|
const mithep::SuperCluster *sc = SCluster();
|
208 |
|
|
if (sc)
|
209 |
|
|
return TMath::Sqrt(sc->Energy()*sc->Energy() - Mass()*Mass());
|
210 |
|
|
else
|
211 |
|
|
return Trk()->P();
|
212 |
|
|
}
|
213 |
|
|
|
214 |
|
|
//-------------------------------------------------------------------------------------------------
|
215 |
|
|
inline Double_t mithep::Electron::Px() const
|
216 |
|
|
{
|
217 |
|
|
return Pt()*TMath::Cos(Trk()->Phi());
|
218 |
|
|
}
|
219 |
|
|
|
220 |
|
|
//-------------------------------------------------------------------------------------------------
|
221 |
|
|
inline Double_t mithep::Electron::Py() const
|
222 |
|
|
{
|
223 |
|
|
return Pt()*TMath::Sin(Trk()->Phi());
|
224 |
|
|
}
|
225 |
sixie |
1.15 |
|
226 |
bendavid |
1.18 |
//-------------------------------------------------------------------------------------------------
|
227 |
|
|
inline Double_t mithep::Electron::Pz() const
|
228 |
|
|
{
|
229 |
|
|
return P()*TMath::Sin(Trk()->Lambda());
|
230 |
|
|
}
|
231 |
|
|
|
232 |
|
|
//-------------------------------------------------------------------------------------------------
|
233 |
|
|
inline Double_t mithep::Electron::Pt() const
|
234 |
|
|
{
|
235 |
|
|
return TMath::Abs(P()*TMath::Cos(Trk()->Lambda()));
|
236 |
|
|
}
|
237 |
loizides |
1.8 |
#endif
|