3 |
|
// |
4 |
|
// Electron |
5 |
|
// |
6 |
< |
// Details to be worked out... TODO: Needs description ala Muon class |
6 |
> |
// This class holds information about reconstructed electrons from CMSSW. |
7 |
|
// |
8 |
|
// Authors: C.Loizides, J.Bendavid, S.Xie |
9 |
|
//-------------------------------------------------------------------------------------------------- |
20 |
|
class Electron : public ChargedParticle |
21 |
|
{ |
22 |
|
public: |
23 |
< |
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 |
< |
|
32 |
< |
const Track *BestTrk() const; |
33 |
< |
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 |
< |
Int_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; } |
23 |
> |
Electron() : |
24 |
> |
fCharge(-99), fScPixCharge(0), |
25 |
> |
fESuperClusterOverP(0), fESeedClusterOverPout(0), fDeltaEtaSuperClTrkAtVtx(0), |
26 |
> |
fDeltaEtaSeedClTrkAtCalo(0), fDeltaPhiSuperClTrkAtVtx(0), |
27 |
> |
fDeltaPhiSeedClTrkAtCalo(0), fFBrem(0), fHadronicOverEm(0), fHcalDepth1OverEcal(0), |
28 |
> |
fHcalDepth2OverEcal(0), fNumberOfClusters(0), fE15(0), fE25Max(0), |
29 |
> |
fE55(0), fCovEtaEta(0), fCoviEtaiEta(0), |
30 |
> |
fCaloIsolation(0), fHcalJurassicIsolation(0), |
31 |
> |
fHcalDepth1TowerSumEtDr04(0), fHcalDepth2TowerSumEtDr04(0), |
32 |
> |
fEcalJurassicIsolation(0), fTrackIsolationDr04(0), fCaloTowerIsolation(0), |
33 |
> |
fHcalDepth1TowerSumEtDr03(0), fHcalDepth2TowerSumEtDr03(0), |
34 |
> |
fEcalRecHitSumEtDr03(0), fTrackIsolation(0), fPassLooseID(0), |
35 |
> |
fPassTightID(0), fIDLikelihood(0), fPIn(0), fPOut(0), fFracSharedHits(0), |
36 |
> |
fMva(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0), |
37 |
> |
fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0), |
38 |
> |
fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0), |
39 |
> |
fIsEcalDriven(0), fIsTrackerDriven(0) {} |
40 |
> |
|
41 |
> |
const Track *BestTrk() const; |
42 |
> |
Double_t CaloIsolation() const { return fCaloIsolation; } // *DEPRECATED* |
43 |
> |
Int_t Classification() const { return fClassification; } |
44 |
> |
Double_t CovEtaEta() const { return fCovEtaEta; } |
45 |
> |
Double_t CoviEtaiEta() const { return fCoviEtaiEta; } |
46 |
|
Double_t DeltaEtaSuperClusterTrackAtVtx() const |
47 |
|
{ return fDeltaEtaSuperClTrkAtVtx; } |
48 |
|
Double_t DeltaEtaSeedClusterTrackAtCalo() const |
51 |
|
{ return fDeltaPhiSuperClTrkAtVtx; } |
52 |
|
Double_t DeltaPhiSeedClusterTrackAtCalo() const |
53 |
|
{ return fDeltaPhiSeedClTrkAtCalo; } |
54 |
< |
Double_t E33() const { return fE33; } |
55 |
< |
Double_t E55() const { return fE55; } |
56 |
< |
Double_t EcalJurassicIsolation() const { return fEcalJurassicIsolation; } |
57 |
< |
Double_t ESuperClusterOverP() const { return fESuperClusterOverP; } |
58 |
< |
Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; } |
59 |
< |
Double_t ESeedClusterOverPIn() const; |
60 |
< |
Double_t IDLikelihood() const { return fIDLikelihood; } |
61 |
< |
Double_t IsEnergyScaleCorrected()const { return fIsEnergyScaleCorrected; } |
62 |
< |
Double_t IsMomentumCorrected() const { return fIsMomentumCorrected; } |
63 |
< |
Double_t HadronicOverEm() const { return fHadronicOverEm; } |
64 |
< |
Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); } |
65 |
< |
Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); } |
66 |
< |
Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); } |
67 |
< |
Double_t HcalIsolation() const { return fHcalJurassicIsolation; } |
68 |
< |
Double_t NumberOfClusters() const { return fNumberOfClusters; } |
69 |
< |
EObjType ObjType() const { return kElectron; } |
70 |
< |
Double_t PassLooseID() const { return fPassLooseID; } |
71 |
< |
Double_t PassTightID() const { return fPassTightID; } |
72 |
< |
Double_t PIn() const { return fPIn; } |
73 |
< |
Double_t POut() const { return fPOut; } |
74 |
< |
Double_t TrackIsolation() const { return fTrackIsolation; } |
75 |
< |
void SetGsfTrk(const Track* t) |
76 |
< |
{ fGsfTrackRef = t; ClearMom(); ClearCharge(); } |
77 |
< |
void SetTrackerTrk(const Track* t) |
78 |
< |
{ fTrackerTrackRef = t; ClearMom(); ClearCharge(); } |
79 |
< |
void SetSuperCluster(const SuperCluster* sc) |
80 |
< |
{ fSuperClusterRef = sc; ClearMom(); } |
81 |
< |
void SetCaloIsolation(Double_t caloiso) { fCaloIsolation = caloiso; } |
82 |
< |
void SetCaloTowerIsolation(Double_t tiso) { fCaloTowerIsolation = tiso; } |
83 |
< |
void SetClassification(Int_t x) { fClassification = x; } |
84 |
< |
void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; } |
85 |
< |
void SetCovEtaPhi(Double_t CovEtaPhi) { fCovEtaPhi = CovEtaPhi; } |
86 |
< |
void SetCovPhiPhi(Double_t CovPhiPhi) { fCovPhiPhi = CovPhiPhi; } |
87 |
< |
void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; } |
54 |
> |
Double_t E15() const { return fE15; } |
55 |
> |
Double_t E25Max() const { return fE25Max; } |
56 |
> |
Double_t E55() const { return fE55; } |
57 |
> |
Double_t ESuperClusterOverP() const { return fESuperClusterOverP; } |
58 |
> |
Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; } |
59 |
> |
Double_t ESeedClusterOverPIn() const; |
60 |
> |
Double_t FBrem() const { return fFBrem; } |
61 |
> |
Double_t FBremOld() const { return (PIn() - POut())/PIn(); } |
62 |
> |
Double_t FracSharedHits() const { return fFracSharedHits; } |
63 |
> |
const Track *GsfTrk() const { return fGsfTrackRef.Obj(); } |
64 |
> |
Double_t HadronicOverEm() const { return fHadronicOverEm; } |
65 |
> |
Double_t HcalDepth1OverEcal() const { return fHcalDepth1OverEcal; } |
66 |
> |
Double_t HcalDepth2OverEcal() const { return fHcalDepth2OverEcal; } |
67 |
> |
Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); } |
68 |
> |
Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); } |
69 |
> |
Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); } |
70 |
> |
Double_t HcalIsolation() const { return fHcalJurassicIsolation; } // *DEPRECATED* |
71 |
> |
Double_t IDLikelihood() const { return fIDLikelihood; } |
72 |
> |
Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; } |
73 |
> |
Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; } |
74 |
> |
Bool_t IsEB() const { return fIsEB; } |
75 |
> |
Bool_t IsEE() const { return fIsEE; } |
76 |
> |
Bool_t IsEBEEGap() const { return fIsEBEEGap; } |
77 |
> |
Bool_t IsEBEtaGap() const { return fIsEBEtaGap; } |
78 |
> |
Bool_t IsEBPhiGap() const { return fIsEBPhiGap; } |
79 |
> |
Bool_t IsEEDeeGap() const { return fIsEEDeeGap; } |
80 |
> |
Bool_t IsEERingGap() const { return fIsEERingGap; } |
81 |
> |
Bool_t IsEcalDriven() const { return fIsEcalDriven; } |
82 |
> |
Bool_t IsTrackerDriven() const { return fIsTrackerDriven; } |
83 |
> |
Double_t Mva() const { return fMva; } |
84 |
> |
Double_t NumberOfClusters() const { return fNumberOfClusters; } |
85 |
> |
EObjType ObjType() const { return kElectron; } |
86 |
> |
Double_t PassLooseID() const { return fPassLooseID; } |
87 |
> |
Double_t PassTightID() const { return fPassTightID; } |
88 |
> |
Double_t PIn() const { return fPIn; } |
89 |
> |
Double_t POut() const { return fPOut; } |
90 |
> |
const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); } |
91 |
> |
Double_t ScPixCharge() const { return fScPixCharge; } |
92 |
> |
|
93 |
> |
Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; } |
94 |
> |
Double_t HcalTowerSumEtDr04() const { return HcalDepth1TowerSumEtDr04() + |
95 |
> |
HcalDepth2TowerSumEtDr04(); } |
96 |
> |
Double_t HcalDepth1TowerSumEtDr04() const { return fHcalDepth1TowerSumEtDr04; } |
97 |
> |
Double_t HcalDepth2TowerSumEtDr04() const { return fHcalDepth2TowerSumEtDr04; } |
98 |
> |
Double_t TrackIsolationDr04() const { return fTrackIsolationDr04; } |
99 |
> |
Double_t EcalRecHitIsoDr03() const { return fEcalRecHitSumEtDr03; } |
100 |
> |
Double_t HcalTowerSumEtDr03() const { return fCaloTowerIsolation; } |
101 |
> |
Double_t HcalDepth1TowerSumEtDr03() const { return fHcalDepth1TowerSumEtDr03; } |
102 |
> |
Double_t HcalDepth2TowerSumEtDr03() const { return fHcalDepth2TowerSumEtDr03; } |
103 |
> |
Double_t TrackIsolationDr03() const { return fTrackIsolation; } |
104 |
> |
|
105 |
> |
|
106 |
> |
void SetCharge(Char_t x) { fCharge = x; } |
107 |
> |
void SetScPixCharge(Char_t x) { fScPixCharge = x; } |
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) |
116 |
|
{ fDeltaPhiSuperClTrkAtVtx = x; } |
117 |
|
void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x) |
118 |
|
{ fDeltaPhiSeedClTrkAtCalo = x; } |
119 |
< |
void SetE33(Double_t E33) { fE33 = E33; } |
120 |
< |
void SetE55(Double_t E55) { fE55 = E55; } |
121 |
< |
void SetEcalJurassicIso(Double_t iso ) { fEcalJurassicIsolation = iso; } |
122 |
< |
void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; } |
123 |
< |
void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; } |
124 |
< |
void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; } |
125 |
< |
void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; } |
126 |
< |
void SetIsEnergyScaleCorrected(Double_t x) { fIsEnergyScaleCorrected = x; } |
127 |
< |
void SetIsMomentumCorrected(Double_t x) { fIsMomentumCorrected = x; } |
128 |
< |
void SetHcalIsolation(Double_t iso ) { fHcalJurassicIsolation = iso; } |
129 |
< |
void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; } |
130 |
< |
void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; } |
131 |
< |
void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; } |
132 |
< |
void SetPIn(Double_t PIn) { fPIn = PIn; } |
133 |
< |
void SetPOut(Double_t POut) { fPOut = POut; } |
134 |
< |
void SetTrackIsolation(Double_t trkiso) { fTrackIsolation = trkiso; } |
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 |
> |
const Track *Trk() const { return BestTrk(); } |
167 |
|
|
168 |
|
protected: |
169 |
< |
Double_t GetMass() const { return 0.51099892e-3; } |
169 |
> |
Double_t GetCharge() const; |
170 |
> |
Double_t GetMass() const { return 0.51099892e-3; } |
171 |
|
void GetMom() const; |
172 |
|
|
173 |
+ |
Vect3C fMom; //stored three-momentum |
174 |
+ |
Char_t fCharge; //stored charge - filled with -99 when reading old files |
175 |
+ |
Char_t fScPixCharge; //charge from supercluster-pixel matching |
176 |
|
Ref<Track> fGsfTrackRef; //gsf track reference |
177 |
|
Ref<Track> fTrackerTrackRef; //tracker track reference |
178 |
|
Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster |
179 |
< |
Double32_t fESuperClusterOverP; // |
180 |
< |
Double32_t fESeedClusterOverPout; // |
181 |
< |
Double32_t fDeltaEtaSuperClTrkAtVtx; // |
182 |
< |
Double32_t fDeltaEtaSeedClTrkAtCalo; // |
183 |
< |
Double32_t fDeltaPhiSuperClTrkAtVtx; // |
184 |
< |
Double32_t fDeltaPhiSeedClTrkAtCalo; // |
185 |
< |
Double32_t fHadronicOverEm; // |
186 |
< |
Double32_t fIsEnergyScaleCorrected; // |
187 |
< |
Double32_t fIsMomentumCorrected; // |
188 |
< |
Double32_t fNumberOfClusters; // |
189 |
< |
Int_t fClassification; // |
190 |
< |
Double32_t fE33; // |
191 |
< |
Double32_t fE55; // |
192 |
< |
Double32_t fCovEtaEta; // |
193 |
< |
Double32_t fCoviEtaiEta; // |
194 |
< |
Double32_t fCovEtaPhi; // |
195 |
< |
Double32_t fCovPhiPhi; // |
196 |
< |
Double32_t fCaloIsolation; // |
197 |
< |
Double32_t fCaloTowerIsolation; // |
198 |
< |
Double32_t fTrackIsolation; // |
199 |
< |
Double32_t fEcalJurassicIsolation; // |
200 |
< |
Double32_t fHcalJurassicIsolation; // |
201 |
< |
Double32_t fPassLooseID; // |
202 |
< |
Double32_t fPassTightID; // |
203 |
< |
Double32_t fIDLikelihood; // |
204 |
< |
Double32_t fPIn; // |
205 |
< |
Double32_t fPOut; // |
179 |
> |
Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio |
180 |
> |
Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom |
181 |
> |
Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk |
182 |
> |
Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk |
183 |
> |
Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk |
184 |
> |
Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk |
185 |
> |
Double32_t fFBrem; //[0,0,14]brem fraction |
186 |
> |
Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction *DEPRECATED* |
187 |
> |
Double32_t fHcalDepth1OverEcal; //[0,0,14]hadronic over em fraction depth1 |
188 |
> |
Double32_t fHcalDepth2OverEcal; //[0,0,14]hadronic over em fraction depth2 |
189 |
> |
Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters |
190 |
> |
Double32_t fE15; //[0,0,14]1x5 crystal energy |
191 |
> |
Double32_t fE25Max; //[0,0,14]2x5 crystal energy (max of two possible sums) |
192 |
> |
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 |
> |
Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED* |
196 |
> |
Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED* |
197 |
> |
Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4 |
198 |
> |
Double32_t fHcalDepth2TowerSumEtDr04; //[0,0,14]hcal depth2 tower based isolation dR 0.4 |
199 |
> |
Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso dR 0.4 *RENAMING* |
200 |
> |
Double32_t fTrackIsolationDr04; //[0,0,14]isolation based on tracks dR 0.4 |
201 |
> |
Double32_t fCaloTowerIsolation; //[0,0,14]hcal tower based isolation dR 0.3 *DEPRECATED* |
202 |
> |
Double32_t fHcalDepth1TowerSumEtDr03; //[0,0,14]hcal depth1 tower based isolation dR 0.3 |
203 |
> |
Double32_t fHcalDepth2TowerSumEtDr03; //[0,0,14]hcal depth2 tower based isolation dR 0.3 |
204 |
> |
Double32_t fEcalRecHitSumEtDr03; //[0,0,14]ecal jura iso dR 0.3 |
205 |
> |
Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks dR 0.3 *RENAMING* |
206 |
> |
Double32_t fPassLooseID; //[0,0,14]pass loose id |
207 |
> |
Double32_t fPassTightID; //[0,0,14]pass tight id |
208 |
> |
Double32_t fIDLikelihood; //[0,0,14]likelihood value |
209 |
> |
Double32_t fPIn; //[0,0,14]momentum at vtx |
210 |
> |
Double32_t fPOut; //[0,0,14]momentum at ecal surface |
211 |
> |
Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track |
212 |
> |
Double32_t fMva; //[0,0,14] pflow mva output |
213 |
> |
Bool_t fIsEnergyScaleCorrected; //class dependent escale correction |
214 |
> |
Bool_t fIsMomentumCorrected; //class dependent E-p combination |
215 |
> |
Int_t fClassification; //classification (see GsfElectron.h) |
216 |
> |
Bool_t fIsEB; //is ECAL barrel |
217 |
> |
Bool_t fIsEE; //is ECAL Endcap |
218 |
> |
Bool_t fIsEBEEGap; //is in barrel-endcap gap |
219 |
> |
Bool_t fIsEBEtaGap; //is in EB eta module gap |
220 |
> |
Bool_t fIsEBPhiGap; //is in EB phi module gap |
221 |
> |
Bool_t fIsEEDeeGap; //is in EE dee gap |
222 |
> |
Bool_t fIsEERingGap; //is in EE ring gap |
223 |
> |
Bool_t fIsEcalDriven; //is std. egamma electron |
224 |
> |
Bool_t fIsTrackerDriven; //is pflow track-seeded electron |
225 |
|
|
226 |
< |
ClassDef(Electron, 1) // Electron class |
226 |
> |
ClassDef(Electron, 3) // Electron class |
227 |
|
}; |
228 |
|
} |
229 |
|
|
241 |
|
} |
242 |
|
|
243 |
|
//-------------------------------------------------------------------------------------------------- |
244 |
< |
inline void mithep::Electron::GetMom() const |
244 |
> |
inline Double_t mithep::Electron::GetCharge() const |
245 |
|
{ |
246 |
< |
// Get momentum of the electron. We use the direction of the |
247 |
< |
// track and the energy of the SuperCluster. |
168 |
< |
|
169 |
< |
const mithep::Track *trk = Trk(); |
246 |
> |
// Return stored charge, unless it is set to invalid (-99), |
247 |
> |
// in that case get charge from track as before |
248 |
|
|
249 |
< |
if (!trk) { |
250 |
< |
fCachedMom.SetCoordinates(0,0,0,0); |
173 |
< |
return; |
174 |
< |
} |
175 |
< |
|
176 |
< |
Double_t p = 0; |
177 |
< |
Double_t mass = GetMass(); |
178 |
< |
|
179 |
< |
const mithep::SuperCluster *sc = SCluster(); |
180 |
< |
if (sc) |
181 |
< |
p = TMath::Sqrt(sc->Energy()*sc->Energy() - mass*mass); |
249 |
> |
if (fCharge==-99) |
250 |
> |
return mithep::ChargedParticle::GetCharge(); |
251 |
|
else |
252 |
< |
p = trk->P(); |
252 |
> |
return fCharge; |
253 |
|
|
254 |
< |
Double_t pt = TMath::Abs(p*TMath::Cos(trk->Lambda())); |
255 |
< |
fCachedMom.SetCoordinates(pt,trk->Eta(),trk->Phi(),mass); |
254 |
> |
} |
255 |
> |
|
256 |
> |
//-------------------------------------------------------------------------------------------------- |
257 |
> |
inline void mithep::Electron::GetMom() const |
258 |
> |
{ |
259 |
> |
// Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass, |
260 |
> |
// since the momentum vector may be computed non-trivially in cmssw |
261 |
> |
|
262 |
> |
fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass()); |
263 |
|
} |
264 |
|
|
265 |
|
//------------------------------------------------------------------------------------------------- |
270 |
|
|
271 |
|
return SCluster()->Seed()->Energy() / PIn(); |
272 |
|
} |
273 |
+ |
|
274 |
+ |
//------------------------------------------------------------------------------------------------- |
275 |
+ |
inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi) |
276 |
+ |
{ |
277 |
+ |
// Set three-vector |
278 |
+ |
|
279 |
+ |
fMom.Set(pt,eta,phi); |
280 |
+ |
ClearMom(); |
281 |
+ |
} |
282 |
|
#endif |