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) {} |
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), fD0PV(0), fD0PVErr(0), fIp3dPV(0), fIp3dPVErr(0), |
37 |
> |
fD0PVBS(0), fD0PVBSErr(0), fIp3dPVBS(0), fIp3dPVBSErr(0), |
38 |
> |
fGsfPVCompatibility(0), fGsfPVBSCompatibility(0), |
39 |
> |
fGsfPVCompatibilityMatched(0), fGsfPVBSCompatibilityMatched(0), |
40 |
> |
fConvPartnerDCotTheta(0), fConvPartnerDist(0), fConvPartnerRadius(0), |
41 |
> |
fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0), |
42 |
> |
fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0), |
43 |
> |
fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0), |
44 |
> |
fIsEcalDriven(0), fIsTrackerDriven(0) {} |
45 |
|
|
46 |
|
const Track *BestTrk() const; |
47 |
< |
Double_t CaloIsolation() const { return fCaloIsolation; } //*DEPRECATED* |
48 |
< |
Double_t CaloTowerIsolation() const { return HcalTowerSumEtDr03(); } //*DEPRECATED* |
49 |
< |
Int_t Classification() const { return fClassification; } |
50 |
< |
Double_t CovEtaEta() const { return fCovEtaEta; } |
51 |
< |
Double_t CovEtaPhi() const { return fCovEtaPhi; } //*DEPRECATED* |
52 |
< |
Double_t CovPhiPhi() const { return fCovPhiPhi; } //*DEPRECATED* |
53 |
< |
Double_t CoviEtaiEta() const { return fCoviEtaiEta; } |
47 |
> |
Double_t D0PV() const { return fD0PV; } |
48 |
> |
Double_t D0PVErr() const { return fD0PVErr; } |
49 |
> |
Double_t D0PVSignificance() const { return fD0PV/fD0PVErr; } |
50 |
> |
Double_t Ip3dPV() const { return fIp3dPV; } |
51 |
> |
Double_t Ip3dPVErr() const { return fIp3dPVErr; } |
52 |
> |
Double_t Ip3dPVSignificance() const { return fIp3dPV/fIp3dPVErr; } |
53 |
> |
Double_t D0PVBS() const { return fD0PVBS; } |
54 |
> |
Double_t D0PVBSErr() const { return fD0PVBSErr; } |
55 |
> |
Double_t D0PVBSSignificance() const { return fD0PVBS/fD0PVBSErr; } |
56 |
> |
Double_t Ip3dPVBS() const { return fIp3dPVBS; } |
57 |
> |
Double_t Ip3dPVBSErr() const { return fIp3dPVBSErr; } |
58 |
> |
Double_t Ip3dPVBSSignificance() const { return fIp3dPVBS/fIp3dPVBSErr; } |
59 |
> |
Double_t GsfPVCompatibility() const { return fGsfPVCompatibility; } |
60 |
> |
Double_t GsfPVBSCompatibility() const { return fGsfPVBSCompatibility; } |
61 |
> |
Double_t GsfPVCompatibilityMatched() const { return fGsfPVCompatibilityMatched; } |
62 |
> |
Double_t GsfPVBSCompatibilityMatched() const { return fGsfPVBSCompatibilityMatched; } |
63 |
> |
Double_t ConvPartnerDCotTheta() const { return fConvPartnerDCotTheta; } |
64 |
> |
Double_t ConvPartnerDist() const { return fConvPartnerDist; } |
65 |
> |
Double_t ConvPartnerRadius() const { return fConvPartnerRadius; } |
66 |
> |
Double_t CaloIsolation() const { return fCaloIsolation; } // *DEPRECATED* |
67 |
> |
Int_t Classification() const { return fClassification; } |
68 |
> |
Double_t CovEtaEta() const { return fCovEtaEta; } |
69 |
> |
Double_t CoviEtaiEta() const { return fCoviEtaiEta; } |
70 |
|
Double_t DeltaEtaSuperClusterTrackAtVtx() const |
71 |
|
{ return fDeltaEtaSuperClTrkAtVtx; } |
72 |
|
Double_t DeltaEtaSeedClusterTrackAtCalo() const |
75 |
|
{ return fDeltaPhiSuperClTrkAtVtx; } |
76 |
|
Double_t DeltaPhiSeedClusterTrackAtCalo() const |
77 |
|
{ return fDeltaPhiSeedClTrkAtCalo; } |
78 |
< |
Double_t E15() const { return fE15; } |
79 |
< |
Double_t E25Max() const { return fE25Max; } |
80 |
< |
Double_t E33() const { return fE33; } //*DEPRECATED* |
58 |
< |
Double_t E55() const { return fE55; } |
59 |
< |
Double_t EcalJurassicIsolation() const { return EcalRecHitIsoDr04(); } //*DEPRECATED* |
78 |
> |
Double_t E15() const { return fE15; } |
79 |
> |
Double_t E25Max() const { return fE25Max; } |
80 |
> |
Double_t E55() const { return fE55; } |
81 |
|
Double_t ESuperClusterOverP() const { return fESuperClusterOverP; } |
82 |
|
Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; } |
83 |
|
Double_t ESeedClusterOverPIn() const; |
91 |
|
Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); } |
92 |
|
Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); } |
93 |
|
Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); } |
94 |
< |
Double_t HcalIsolation() const { return fHcalJurassicIsolation; } //*DEPRECATED* |
94 |
> |
Double_t HcalIsolation() const { return fHcalJurassicIsolation; } // *DEPRECATED* |
95 |
|
Double_t IDLikelihood() const { return fIDLikelihood; } |
96 |
|
Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; } |
97 |
|
Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; } |
112 |
|
Double_t PIn() const { return fPIn; } |
113 |
|
Double_t POut() const { return fPOut; } |
114 |
|
const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); } |
115 |
+ |
Double_t ScPixCharge() const { return fScPixCharge; } |
116 |
|
|
117 |
|
Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; } |
118 |
|
Double_t HcalTowerSumEtDr04() const { return HcalDepth1TowerSumEtDr04() + |
127 |
|
Double_t TrackIsolationDr03() const { return fTrackIsolation; } |
128 |
|
|
129 |
|
|
130 |
+ |
void SetCharge(Char_t x) { fCharge = x; ClearCharge(); } |
131 |
+ |
void SetScPixCharge(Char_t x) { fScPixCharge = x; } |
132 |
+ |
void SetD0PV(Double_t x) { fD0PV = x; } |
133 |
+ |
void SetD0PVErr(Double_t x) { fD0PVErr = x; } |
134 |
+ |
void SetIp3dPV(Double_t x) { fIp3dPV = x; } |
135 |
+ |
void SetIp3dPVErr(Double_t x) { fIp3dPVErr = x; } |
136 |
+ |
void SetD0PVBS(Double_t x) { fD0PVBS = x; } |
137 |
+ |
void SetD0PVBSErr(Double_t x) { fD0PVBSErr = x; } |
138 |
+ |
void SetIp3dPVBS(Double_t x) { fIp3dPVBS = x; } |
139 |
+ |
void SetIp3dPVBSErr(Double_t x) { fIp3dPVBSErr = x; } |
140 |
+ |
void SetGsfPVCompatibility(Double_t x) { fGsfPVCompatibility = x; } |
141 |
+ |
void SetGsfPVBSCompatibility(Double_t x) { fGsfPVBSCompatibility = x; } |
142 |
+ |
void SetGsfPVCompatibilityMatched(Double_t x) { fGsfPVCompatibilityMatched = x; } |
143 |
+ |
void SetGsfPVBSCompatibilityMatched(Double_t x) { fGsfPVBSCompatibilityMatched = x; } |
144 |
+ |
void SetConvPartnerDCotTheta(Double_t x) { fConvPartnerDCotTheta = x; } |
145 |
+ |
void SetConvPartnerDist(Double_t x) { fConvPartnerDist = x; } |
146 |
+ |
void SetConvPartnerRadius(Double_t x) { fConvPartnerRadius = x; } |
147 |
|
void SetClassification(Int_t x) { fClassification = x; } |
148 |
|
void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; } |
149 |
|
void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; } |
184 |
|
void SetHcalDepth1TowerSumEtDr04(Double_t x) { fHcalDepth1TowerSumEtDr04 = x; } |
185 |
|
void SetHcalDepth2TowerSumEtDr04(Double_t x) { fHcalDepth2TowerSumEtDr04 = x; } |
186 |
|
void SetTrackIsolationDr04(Double_t x) { fTrackIsolationDr04 = x; } |
187 |
< |
void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; } |
187 |
> |
void SetEcalRecHitIsoDr03(Double_t x) { fEcalRecHitSumEtDr03 = x; } |
188 |
|
void SetHcalTowerSumEtDr03(Double_t x) { fCaloTowerIsolation = x; } |
189 |
|
void SetHcalDepth1TowerSumEtDr03(Double_t x) { fHcalDepth1TowerSumEtDr03 = x; } |
190 |
|
void SetHcalDepth2TowerSumEtDr03(Double_t x) { fHcalDepth2TowerSumEtDr03 = x; } |
191 |
< |
void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; } |
192 |
< |
void SetMva(Double_t x) { fMva = x; } |
193 |
< |
void SetIsEB(Bool_t b) { fIsEB = b; } |
194 |
< |
void SetIsEE(Bool_t b) { fIsEE = b; } |
195 |
< |
void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; } |
196 |
< |
void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; } |
197 |
< |
void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; } |
198 |
< |
void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; } |
199 |
< |
void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; } |
200 |
< |
void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; } |
201 |
< |
void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; } |
191 |
> |
void SetTrackIsolationDr03(Double_t x) { fTrackIsolation = x; } |
192 |
> |
void SetMva(Double_t x) { fMva = x; } |
193 |
> |
void SetIsEB(Bool_t b) { fIsEB = b; } |
194 |
> |
void SetIsEE(Bool_t b) { fIsEE = b; } |
195 |
> |
void SetIsEBEEGap(Bool_t b) { fIsEBEEGap = b; } |
196 |
> |
void SetIsEBEtaGap(Bool_t b) { fIsEBEtaGap = b; } |
197 |
> |
void SetIsEBPhiGap(Bool_t b) { fIsEBPhiGap = b; } |
198 |
> |
void SetIsEEDeeGap(Bool_t b) { fIsEEDeeGap = b; } |
199 |
> |
void SetIsEERingGap(Bool_t b) { fIsEERingGap = b; } |
200 |
> |
void SetIsEcalDriven(Bool_t b) { fIsEcalDriven = b; } |
201 |
> |
void SetIsTrackerDriven(Bool_t b) { fIsTrackerDriven = b; } |
202 |
|
|
203 |
|
|
204 |
< |
const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); } |
205 |
< |
Double_t TrackIsolation() const { return TrackIsolationDr03(); } //*DEPRECATED* |
167 |
< |
const Track *Trk() const { return BestTrk(); } |
204 |
> |
const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); } |
205 |
> |
const Track *Trk() const { return BestTrk(); } |
206 |
|
|
207 |
|
protected: |
208 |
< |
Double_t GetMass() const { return 0.51099892e-3; } |
208 |
> |
Double_t GetCharge() const; |
209 |
> |
Double_t GetMass() const { return 0.51099892e-3; } |
210 |
|
void GetMom() const; |
211 |
|
|
212 |
|
Vect3C fMom; //stored three-momentum |
213 |
+ |
Char_t fCharge; //stored charge - filled with -99 when reading old files |
214 |
+ |
Char_t fScPixCharge; //charge from supercluster-pixel matching |
215 |
|
Ref<Track> fGsfTrackRef; //gsf track reference |
216 |
|
Ref<Track> fTrackerTrackRef; //tracker track reference |
217 |
|
Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster |
228 |
|
Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters |
229 |
|
Double32_t fE15; //[0,0,14]1x5 crystal energy |
230 |
|
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* |
231 |
|
Double32_t fE55; //[0,0,14]5x5 crystal energy |
232 |
|
Double32_t fCovEtaEta; //[0,0,14]variance eta-eta |
233 |
|
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* |
234 |
|
Double32_t fCaloIsolation; //[0,0,14](non-jura) ecal isolation based on rechits dR 0.3 *DEPRECATED* |
235 |
|
Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso dR 0.4 *DEPRECATED* |
236 |
|
Double32_t fHcalDepth1TowerSumEtDr04; //[0,0,14]hcal depth1 tower based isolation dR 0.4 |
249 |
|
Double32_t fPOut; //[0,0,14]momentum at ecal surface |
250 |
|
Double32_t fFracSharedHits; //[0,0,14]fraction of shared hits btw gsf and std. track |
251 |
|
Double32_t fMva; //[0,0,14] pflow mva output |
252 |
+ |
Double32_t fD0PV; //[0,0,14]transverse impact parameter to signal PV |
253 |
+ |
Double32_t fD0PVErr; //[0,0,14]transverse impact parameter uncertainty to signal PV |
254 |
+ |
Double32_t fIp3dPV; //[0,0,14]3d impact parameter to signal PV |
255 |
+ |
Double32_t fIp3dPVErr; //[0,0,14]3d impact parameter uncertainty to signal PV |
256 |
+ |
Double32_t fD0PVBS; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint |
257 |
+ |
Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint |
258 |
+ |
Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint |
259 |
+ |
Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint |
260 |
+ |
Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV |
261 |
+ |
Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint |
262 |
+ |
Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex) |
263 |
+ |
Double32_t fGsfPVBSCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV w/ bs constraint (matching ckf track excluded from vertex) |
264 |
+ |
Double32_t fConvPartnerDCotTheta; //[0,0,14]delta cot theta to nearest conversion partner track |
265 |
+ |
Double32_t fConvPartnerDist; //[0,0,14]distance in x-y plane to nearest conversion partner track |
266 |
+ |
Double32_t fConvPartnerRadius; //[0,0,14]radius of helix intersection with conversion partner track |
267 |
|
Bool_t fIsEnergyScaleCorrected; //class dependent escale correction |
268 |
|
Bool_t fIsMomentumCorrected; //class dependent E-p combination |
269 |
|
Int_t fClassification; //classification (see GsfElectron.h) |
277 |
|
Bool_t fIsEcalDriven; //is std. egamma electron |
278 |
|
Bool_t fIsTrackerDriven; //is pflow track-seeded electron |
279 |
|
|
280 |
< |
ClassDef(Electron, 2) // Electron class |
280 |
> |
ClassDef(Electron, 5) // Electron class |
281 |
|
}; |
282 |
|
} |
283 |
|
|
295 |
|
} |
296 |
|
|
297 |
|
//-------------------------------------------------------------------------------------------------- |
298 |
+ |
inline Double_t mithep::Electron::GetCharge() const |
299 |
+ |
{ |
300 |
+ |
// Return stored charge, unless it is set to invalid (-99), |
301 |
+ |
// in that case get charge from track as before |
302 |
+ |
|
303 |
+ |
if (fCharge==-99) |
304 |
+ |
return mithep::ChargedParticle::GetCharge(); |
305 |
+ |
else |
306 |
+ |
return fCharge; |
307 |
+ |
|
308 |
+ |
} |
309 |
+ |
|
310 |
+ |
//-------------------------------------------------------------------------------------------------- |
311 |
|
inline void mithep::Electron::GetMom() const |
312 |
|
{ |
313 |
|
// Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass, |