5 |
|
// |
6 |
|
// This class holds information about reconstructed electrons from CMSSW. |
7 |
|
// |
8 |
< |
// Authors: C.Loizides, J.Bendavid, S.Xie |
8 |
> |
// Authors: C.Paus, G.Ceballos, C.Loizides, J.Bendavid, S.Xie |
9 |
|
//-------------------------------------------------------------------------------------------------- |
10 |
|
|
11 |
|
#ifndef MITANA_DATATREE_ELECTRON_H |
48 |
|
fConvFlag(0), fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0), |
49 |
|
fClassification(0), fIsEB(), fIsEE(0), fIsEBEEGap(0), fIsEBEtaGap(0), |
50 |
|
fIsEBPhiGap(0), fIsEEDeeGap(0), fIsEERingGap(0), |
51 |
< |
fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(0) {} |
51 |
> |
fIsEcalDriven(0), fIsTrackerDriven(0), fMatchesVertexConversion(0), |
52 |
> |
fHadOverEmTow(0), fHCalIsoTowDr03(0), fHCalIsoTowDr04(0), |
53 |
> |
fEcalEnergy(0), fEcalEnergyError(0), fTrackMomentumError(0) {} |
54 |
|
|
55 |
|
const Track *BestTrk() const; |
56 |
|
Double_t D0PV() const { return fD0PV; } |
122 |
|
Double_t E55() const { return fE55; } |
123 |
|
Double_t ESuperClusterOverP() const { return fESuperClusterOverP; } |
124 |
|
Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; } |
125 |
+ |
Double_t EEleClusterOverPout() const { return fEEleClusterOverPout; } |
126 |
|
Double_t ESeedClusterOverPIn() const; |
127 |
|
Double_t FBrem() const { return fFBrem; } |
128 |
|
Double_t FBremOld() const { return (PIn() - POut())/PIn(); } |
155 |
|
Double_t PIn() const { return fPIn; } |
156 |
|
Double_t POut() const { return fPOut; } |
157 |
|
const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); } |
158 |
+ |
const SuperCluster *PFSCluster() const { return fPFSuperClusterRef.Obj(); } |
159 |
|
Double_t ScPixCharge() const { return fScPixCharge; } |
160 |
|
|
161 |
|
Double_t EcalRecHitIsoDr04() const { return fEcalJurassicIsolation; } |
176 |
|
UInt_t NAmbiguousGsfTracks() const { return fAmbiguousGsfTracks.Entries(); } |
177 |
|
Bool_t HasAmbiguousGsfTrack(const Track *t) const { return fAmbiguousGsfTracks.HasObject(t); } |
178 |
|
const Track *AmbiguousGsfTrack(UInt_t i) const { return fAmbiguousGsfTracks.At(i); } |
179 |
< |
|
179 |
> |
Int_t CTFTrkNLayersWithMeasurement() const { return fCTFTrkNLayersWithMeasurement; } |
180 |
> |
Double_t HadOverEmTow() const { return fHadOverEmTow; } |
181 |
> |
Double_t HcalIsoTowDr03() const { return fHCalIsoTowDr03; } |
182 |
> |
Double_t HcalIsoTowDr04() const { return fHCalIsoTowDr04; } |
183 |
> |
Double_t EcalEnergy() const { return fEcalEnergy; } |
184 |
> |
Double_t EcalEnergyError() const { return fEcalEnergyError; } |
185 |
> |
Double_t TrackMomentumError() const { return fTrackMomentumError; } |
186 |
> |
|
187 |
|
void AddAmbiguousGsfTrack(const Track *t) { fAmbiguousGsfTracks.Add(t); } |
188 |
|
void SetCharge(Char_t x) { fCharge = x; ClearCharge(); } |
189 |
|
void SetScPixCharge(Char_t x) { fScPixCharge = x; } |
242 |
|
void SetE25Max(Double_t x) { fE25Max = x; } |
243 |
|
void SetE55(Double_t x) { fE55 = x; } |
244 |
|
void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; } |
245 |
+ |
void SetEEleClusterOverPout(Double_t x) { fEEleClusterOverPout = x; } |
246 |
|
void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; } |
247 |
|
void SetFBrem(Double_t x) { fFBrem = x; } |
248 |
|
void SetFracSharedHits(Double_t x) { fFracSharedHits = x; } |
262 |
|
void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi); |
263 |
|
void SetSuperCluster(const SuperCluster* sc) |
264 |
|
{ fSuperClusterRef = sc; } |
265 |
+ |
void SetPFSuperCluster(const SuperCluster* sc) |
266 |
+ |
{ fPFSuperClusterRef = sc; } |
267 |
|
void SetTrackerTrk(const Track* t) |
268 |
|
{ fTrackerTrackRef = t; ClearCharge(); } |
269 |
|
void SetConvPartnerTrk(const Track *t) |
293 |
|
void SetMatchesVertexConversion(Bool_t b) { fMatchesVertexConversion = b; } |
294 |
|
void SetConversionXYZ(Double_t x, Double_t y, Double_t z) |
295 |
|
{ fConvPosition.SetXYZ(x,y,z); } |
296 |
< |
|
296 |
> |
void SetCTFTrkNLayersWithMeasurement(Int_t x){ fCTFTrkNLayersWithMeasurement = x; } |
297 |
> |
void SetHadOverEmTow(Double_t x) { fHadOverEmTow = x; } |
298 |
> |
void SetHCalIsoTowDr03(Double_t x) { fHCalIsoTowDr03 = x; } |
299 |
> |
void SetHCalIsoTowDr04(Double_t x) { fHCalIsoTowDr04 = x; } |
300 |
> |
void SetEcalEnergy(Double_t e) { fEcalEnergy = e; } |
301 |
> |
void SetEcalEnergyError(Double_t e) { fEcalEnergyError = e; } |
302 |
> |
void SetTrackMomentumError(Double_t e) { fTrackMomentumError = e; } |
303 |
|
|
304 |
|
const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); } |
305 |
|
const Track *Trk() const { return BestTrk(); } |
306 |
|
const Track *ConvPartnerTrk() const { return fConvPartnerTrackRef.Obj(); } |
307 |
|
|
308 |
|
// Some structural tools |
309 |
< |
void Mark() const; |
309 |
> |
void Mark(UInt_t i=1) const; |
310 |
|
|
311 |
|
protected: |
312 |
|
Double_t GetCharge() const; |
362 |
|
Double32_t fD0PVBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (gsf track) |
363 |
|
Double32_t fIp3dPVBS; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (gsf track) |
364 |
|
Double32_t fIp3dPVBSErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (gsf track) |
365 |
< |
Double32_t fD0PVCkf; //[0,0,14]transverse impact parameter to signal PV (ckf track) |
366 |
< |
Double32_t fD0PVCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (ckf track) |
367 |
< |
Double32_t fIp3dPVCkf; //[0,0,14]3d impact parameter to signal PV (ckf track) |
368 |
< |
Double32_t fIp3dPVCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV (ckf track) |
369 |
< |
Double32_t fD0PVBSCkf; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (ckf track) |
370 |
< |
Double32_t fD0PVBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (ckf track) |
371 |
< |
Double32_t fIp3dPVBSCkf; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (ckf track) |
372 |
< |
Double32_t fIp3dPVBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (ckf track) |
373 |
< |
Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (gsf track) |
374 |
< |
Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (gsf track) |
375 |
< |
Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB (gsf track) |
376 |
< |
Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (gsf track) |
377 |
< |
Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (gsf track) |
378 |
< |
Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track) |
379 |
< |
Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (gsf track) |
380 |
< |
Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track) |
381 |
< |
Double32_t fD0PVUBCkf; //[0,0,14]transverse impact parameter to signal PVUB (ckf track) |
382 |
< |
Double32_t fD0PVUBCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (ckf track) |
383 |
< |
Double32_t fIp3dPVUBCkf; //[0,0,14]3d impact parameter to signal PVUB (ckf track) |
384 |
< |
Double32_t fIp3dPVUBCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (ckf track) |
385 |
< |
Double32_t fD0PVUBBSCkf; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (ckf track) |
386 |
< |
Double32_t fD0PVUBBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track) |
387 |
< |
Double32_t fIp3dPVUBBSCkf; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (ckf track) |
388 |
< |
Double32_t fIp3dPVUBBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track) |
365 |
> |
Double32_t fD0PVCkf; //[0,0,14]transverse impact parameter to signal PV (ckf track) |
366 |
> |
Double32_t fD0PVCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV (ckf track) |
367 |
> |
Double32_t fIp3dPVCkf; //[0,0,14]3d impact parameter to signal PV (ckf track) |
368 |
> |
Double32_t fIp3dPVCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV (ckf track) |
369 |
> |
Double32_t fD0PVBSCkf; //[0,0,14]transverse impact parameter to signal PV w/ bs constraint (ckf track) |
370 |
> |
Double32_t fD0PVBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PV w/ bs constraint (ckf track) |
371 |
> |
Double32_t fIp3dPVBSCkf; //[0,0,14]3d impact parameter to signal PV w/ bs constraint (ckf track) |
372 |
> |
Double32_t fIp3dPVBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PV w/ bs constraint (ckf track) |
373 |
> |
Double32_t fD0PVUB; //[0,0,14]transverse impact parameter to signal PVUB (gsf track) |
374 |
> |
Double32_t fD0PVUBErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (gsf track) |
375 |
> |
Double32_t fIp3dPVUB; //[0,0,14]3d impact parameter to signal PVUB (gsf track) |
376 |
> |
Double32_t fIp3dPVUBErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (gsf track) |
377 |
> |
Double32_t fD0PVUBBS; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (gsf track) |
378 |
> |
Double32_t fD0PVUBBSErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track) |
379 |
> |
Double32_t fIp3dPVUBBS; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (gsf track) |
380 |
> |
Double32_t fIp3dPVUBBSErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (gsf track) |
381 |
> |
Double32_t fD0PVUBCkf; //[0,0,14]transverse impact parameter to signal PVUB (ckf track) |
382 |
> |
Double32_t fD0PVUBCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB (ckf track) |
383 |
> |
Double32_t fIp3dPVUBCkf; //[0,0,14]3d impact parameter to signal PVUB (ckf track) |
384 |
> |
Double32_t fIp3dPVUBCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB (ckf track) |
385 |
> |
Double32_t fD0PVUBBSCkf; //[0,0,14]transverse impact parameter to signal PVUB w/ bs constraint (ckf track) |
386 |
> |
Double32_t fD0PVUBBSCkfErr; //[0,0,14]transverse impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track) |
387 |
> |
Double32_t fIp3dPVUBBSCkf; //[0,0,14]3d impact parameter to signal PVUB w/ bs constraint (ckf track) |
388 |
> |
Double32_t fIp3dPVUBBSCkfErr; //[0,0,14]3d impact parameter uncertainty to signal PVUB w/ bs constraint (ckf track) |
389 |
|
Double32_t fGsfPVCompatibility; //[0,0,14]gsf compatibility with signal PV |
390 |
|
Double32_t fGsfPVBSCompatibility; //[0,0,14]gsf compatibility with signal PV w/ bs constraint |
391 |
|
Double32_t fGsfPVCompatibilityMatched; //[0,0,14]gsf compatibility with signal PV (matching ckf track excluded from vertex) |
412 |
|
Bool_t fIsTrackerDriven; //is pflow track-seeded electron |
413 |
|
Bool_t fMatchesVertexConversion; |
414 |
|
RefArray<Track> fAmbiguousGsfTracks; //ambiguous gsf tracks for this electron |
415 |
+ |
Double_t fEEleClusterOverPout; //energy of the electron cluster |
416 |
+ |
Int_t fCTFTrkNLayersWithMeasurement; //number of tracker layers from associated ctf trk |
417 |
+ |
Double32_t fHadOverEmTow; //[0,0,14]per-tower definition of hadronic/em energy fraction |
418 |
+ |
Double32_t fHCalIsoTowDr03; //[0,0,14]hcal isolation matched to per tower h/e definition |
419 |
+ |
Double32_t fHCalIsoTowDr04; //[0,0,14]hcal isolation matched to per tower h/e definition |
420 |
+ |
Double32_t fEcalEnergy; //[0,0,14]corrected Ecal energy |
421 |
+ |
Double32_t fEcalEnergyError; //[0,0,14]corrected Ecal energy error |
422 |
+ |
Double32_t fTrackMomentumError; //track momentum error |
423 |
+ |
Ref<SuperCluster> fPFSuperClusterRef; //reference to Particle Flow SuperCluster |
424 |
|
|
425 |
< |
ClassDef(Electron, 12) // Electron class |
425 |
> |
ClassDef(Electron, 15) // Electron class |
426 |
|
}; |
427 |
|
} |
428 |
|
|
429 |
|
//-------------------------------------------------------------------------------------------------- |
430 |
< |
inline void mithep::Electron::Mark() const |
430 |
> |
inline void mithep::Electron::Mark(UInt_t ib) const |
431 |
|
{ |
432 |
|
// mark myself |
433 |
< |
mithep::DataObject::Mark(); |
433 |
> |
mithep::DataObject::Mark(ib); |
434 |
|
// mark my dependencies if they are there |
435 |
< |
if (HasSuperCluster()) |
436 |
< |
SCluster()->Mark(); |
437 |
< |
if (HasGsfTrk()) |
438 |
< |
GsfTrk()->Mark(); |
439 |
< |
if (HasTrackerTrk()) |
440 |
< |
TrackerTrk()->Mark(); |
435 |
> |
if (fSuperClusterRef.IsValid()) |
436 |
> |
fSuperClusterRef.Obj()->Mark(ib); |
437 |
> |
if (fGsfTrackRef.IsValid()) |
438 |
> |
fGsfTrackRef.Obj()->Mark(ib); |
439 |
> |
if (fTrackerTrackRef.IsValid()) |
440 |
> |
fTrackerTrackRef.Obj()->Mark(ib); |
441 |
|
if (fConvPartnerTrackRef.IsValid()) |
442 |
< |
ConvPartnerTrk()->Mark(); |
443 |
< |
for (UInt_t i=0; i<NAmbiguousGsfTracks(); i++) |
415 |
< |
fAmbiguousGsfTracks.At(i)->Mark(); |
442 |
> |
fConvPartnerTrackRef.Obj()->Mark(ib); |
443 |
> |
fAmbiguousGsfTracks.Mark(ib); |
444 |
|
} |
445 |
|
|
446 |
|
//-------------------------------------------------------------------------------------------------- |