ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitAna/DataTree/interface/Electron.h
Revision: 1.32
Committed: Tue Apr 7 15:55:36 2009 UTC (16 years ago) by phedex
Content type: text/plain
Branch: MAIN
CVS Tags: Mit_009c, Mit_009b, Mit_009a, Mit_009
Changes since 1.31: +2 -1 lines
Log Message:
add FBrem accessor

File Contents

# User Rev Content
1 bendavid 1.1 //--------------------------------------------------------------------------------------------------
2 phedex 1.32 // $Id: Electron.h,v 1.31 2009/03/20 18:44:17 bendavid Exp $
3 bendavid 1.1 //
4 paus 1.3 // Electron
5 bendavid 1.1 //
6 loizides 1.29 // This class holds information about reconstructed electrons from CMSSW.
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 loizides 1.29 fDeltaPhiSeedClTrkAtCalo(0), fHadronicOverEm(0), fNumberOfClusters(0), fE33(0),
26 loizides 1.22 fE55(0), fCovEtaEta(0), fCoviEtaiEta(0), fCovEtaPhi(0), fCovPhiPhi(0),
27     fCaloIsolation(0), fCaloTowerIsolation(0), fTrackIsolation(0),
28     fEcalJurassicIsolation(0), fHcalJurassicIsolation(0), fPassLooseID(0),
29 loizides 1.29 fPassTightID(0), fIDLikelihood(0), fPIn(0), fPOut(0),
30     fIsEnergyScaleCorrected(0), fIsMomentumCorrected(0), fClassification(0) {}
31    
32     const Track *BestTrk() const;
33     Double_t CaloIsolation() const { return fCaloIsolation; }
34     Double_t CaloTowerIsolation() const { return fCaloTowerIsolation; }
35     Int_t Classification() const { return fClassification; }
36     Double_t CovEtaEta() const { return fCovEtaEta; }
37     Double_t CovEtaPhi() const { return fCovEtaPhi; }
38     Double_t CovPhiPhi() const { return fCovPhiPhi; }
39     Double_t CoviEtaiEta() const { return fCoviEtaiEta; }
40 loizides 1.27 Double_t DeltaEtaSuperClusterTrackAtVtx() const
41     { return fDeltaEtaSuperClTrkAtVtx; }
42     Double_t DeltaEtaSeedClusterTrackAtCalo() const
43     { return fDeltaEtaSeedClTrkAtCalo; }
44     Double_t DeltaPhiSuperClusterTrackAtVtx() const
45     { return fDeltaPhiSuperClTrkAtVtx; }
46     Double_t DeltaPhiSeedClusterTrackAtCalo() const
47     { return fDeltaPhiSeedClTrkAtCalo; }
48 loizides 1.29 Double_t E33() const { return fE33; }
49     Double_t E55() const { return fE55; }
50     Double_t EcalJurassicIsolation() const { return fEcalJurassicIsolation; }
51     Double_t ESuperClusterOverP() const { return fESuperClusterOverP; }
52     Double_t ESeedClusterOverPout() const { return fESeedClusterOverPout; }
53     Double_t ESeedClusterOverPIn() const;
54 phedex 1.32 Double_t FBrem() const { return (PIn() - POut())/PIn(); }
55 loizides 1.29 const Track *GsfTrk() const { return fGsfTrackRef.Obj(); }
56 loizides 1.30 Double_t HadronicOverEm() const { return fHadronicOverEm; }
57 loizides 1.29 Bool_t HasGsfTrk() const { return fGsfTrackRef.IsValid(); }
58     Bool_t HasTrackerTrk() const { return fTrackerTrackRef.IsValid(); }
59     Bool_t HasSuperCluster() const { return fSuperClusterRef.IsValid(); }
60     Double_t HcalIsolation() const { return fHcalJurassicIsolation; }
61     Double_t IDLikelihood() const { return fIDLikelihood; }
62     Bool_t IsEnergyScaleCorrected() const { return fIsEnergyScaleCorrected; }
63     Bool_t IsMomentumCorrected() const { return fIsMomentumCorrected; }
64     Double_t NumberOfClusters() const { return fNumberOfClusters; }
65     EObjType ObjType() const { return kElectron; }
66     Double_t PassLooseID() const { return fPassLooseID; }
67     Double_t PassTightID() const { return fPassTightID; }
68     Double_t PIn() const { return fPIn; }
69     Double_t POut() const { return fPOut; }
70     const SuperCluster *SCluster() const { return fSuperClusterRef.Obj(); }
71     void SetCaloIsolation(Double_t caloiso) { fCaloIsolation = caloiso; }
72     void SetCaloTowerIsolation(Double_t tiso) { fCaloTowerIsolation = tiso; }
73     void SetClassification(Int_t x) { fClassification = x; }
74     void SetCovEtaEta(Double_t CovEtaEta) { fCovEtaEta = CovEtaEta; }
75     void SetCovEtaPhi(Double_t CovEtaPhi) { fCovEtaPhi = CovEtaPhi; }
76     void SetCovPhiPhi(Double_t CovPhiPhi) { fCovPhiPhi = CovPhiPhi; }
77     void SetCoviEtaiEta(Double_t CoviEtaiEta) { fCoviEtaiEta = CoviEtaiEta; }
78 loizides 1.27 void SetDeltaEtaSuperClusterTrackAtVtx(Double_t x)
79     { fDeltaEtaSuperClTrkAtVtx = x; }
80     void SetDeltaEtaSeedClusterTrackAtCalo(Double_t x)
81     { fDeltaEtaSeedClTrkAtCalo = x; }
82     void SetDeltaPhiSuperClusterTrackAtVtx(Double_t x)
83     { fDeltaPhiSuperClTrkAtVtx = x; }
84     void SetDeltaPhiSeedClusterTrackAtCalo(Double_t x)
85     { fDeltaPhiSeedClTrkAtCalo = x; }
86 loizides 1.29 void SetE33(Double_t E33) { fE33 = E33; }
87     void SetE55(Double_t E55) { fE55 = E55; }
88     void SetESeedClusterOverPout(Double_t x) { fESeedClusterOverPout = x; }
89     void SetESuperClusterOverP(Double_t x) { fESuperClusterOverP = x; }
90     void SetEcalJurassicIso(Double_t iso ) { fEcalJurassicIsolation = iso; }
91     void SetGsfTrk(const Track* t)
92 bendavid 1.31 { fGsfTrackRef = t; ClearCharge(); }
93 loizides 1.29 void SetHadronicOverEm(Double_t x) { fHadronicOverEm = x; }
94     void SetHcalIsolation(Double_t iso ) { fHcalJurassicIsolation = iso; }
95     void SetIDLikelihood(Double_t likelihood) { fIDLikelihood = likelihood; }
96     void SetIsEnergyScaleCorrected(Bool_t x) { fIsEnergyScaleCorrected = x; }
97     void SetIsMomentumCorrected(Bool_t x) { fIsMomentumCorrected = x; }
98     void SetNumberOfClusters(Double_t x) { fNumberOfClusters = x; }
99     void SetPIn(Double_t PIn) { fPIn = PIn; }
100     void SetPOut(Double_t POut) { fPOut = POut; }
101     void SetPassLooseID(Double_t passLooseID) { fPassLooseID = passLooseID; }
102     void SetPassTightID(Double_t passTightID) { fPassTightID = passTightID; }
103 bendavid 1.31 void SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi);
104     void SetSuperCluster(const SuperCluster* sc)
105     { fSuperClusterRef = sc; }
106 loizides 1.29 void SetTrackerTrk(const Track* t)
107 bendavid 1.31 { fTrackerTrackRef = t; ClearCharge(); }
108 loizides 1.29 void SetTrackIsolation(Double_t trkiso) { fTrackIsolation = trkiso; }
109     const Track *TrackerTrk() const { return fTrackerTrackRef.Obj(); }
110     Double_t TrackIsolation() const { return fTrackIsolation; }
111     const Track *Trk() const { return BestTrk(); }
112 sixie 1.13
113 loizides 1.8 protected:
114 loizides 1.29 Double_t GetMass() const { return 0.51099892e-3; }
115 loizides 1.27 void GetMom() const;
116 loizides 1.25
117 bendavid 1.31 Vect3C fMom; //stored three-momentum
118 loizides 1.27 Ref<Track> fGsfTrackRef; //gsf track reference
119     Ref<Track> fTrackerTrackRef; //tracker track reference
120     Ref<SuperCluster> fSuperClusterRef; //reference to SuperCluster
121 loizides 1.29 Double32_t fESuperClusterOverP; //[0,0,14]super cluster e over p ratio
122     Double32_t fESeedClusterOverPout; //[0,0,14]seed cluster e over p mom
123     Double32_t fDeltaEtaSuperClTrkAtVtx; //[0,0,14]delta eta of super cluster with trk
124     Double32_t fDeltaEtaSeedClTrkAtCalo; //[0,0,14]delta eta of seeed cluster with trk
125     Double32_t fDeltaPhiSuperClTrkAtVtx; //[0,0,14]delta phi of super cluster with trk
126     Double32_t fDeltaPhiSeedClTrkAtCalo; //[0,0,14]delta phi of seeed cluster with trk
127     Double32_t fHadronicOverEm; //[0,0,14]hadronic over em fraction
128     Double32_t fNumberOfClusters; //[0,0,14]number of associated clusters
129     Double32_t fE33; //[0,0,14]3x3 crystal energy
130     Double32_t fE55; //[0,0,14]5x5 crystal energy
131     Double32_t fCovEtaEta; //[0,0,14]variance eta-eta
132     Double32_t fCoviEtaiEta; //[0,0,14]covariance eta-eta (in crystals)
133     Double32_t fCovEtaPhi; //[0,0,14]covariance eta-phi
134     Double32_t fCovPhiPhi; //[0,0,14]covariance phi-phi
135     Double32_t fCaloIsolation; //[0,0,14]isolation based on rechits
136     Double32_t fCaloTowerIsolation; //[0,0,14]isolation based on calo towers
137     Double32_t fTrackIsolation; //[0,0,14]isolation based on tracks
138     Double32_t fEcalJurassicIsolation; //[0,0,14]ecal jura iso
139     Double32_t fHcalJurassicIsolation; //[0,0,14]hcal jura iso
140     Double32_t fPassLooseID; //[0,0,14]pass loose id
141     Double32_t fPassTightID; //[0,0,14]pass tight id
142     Double32_t fIDLikelihood; //[0,0,14]likelihood value
143     Double32_t fPIn; //[0,0,14]momentum at vtx
144     Double32_t fPOut; //[0,0,14]momentum at ecal surface
145     Bool_t fIsEnergyScaleCorrected; //class dependent escale correction
146     Bool_t fIsMomentumCorrected; //class dependent E-p combination
147     Int_t fClassification; //classification (see GsfElectron.h)
148 sixie 1.13
149 loizides 1.7 ClassDef(Electron, 1) // Electron class
150 bendavid 1.1 };
151 loizides 1.4 }
152 loizides 1.8
153 loizides 1.9 //--------------------------------------------------------------------------------------------------
154 loizides 1.10 inline const mithep::Track *mithep::Electron::BestTrk() const
155 loizides 1.9 {
156 loizides 1.10 // Return "best" track.
157    
158 bendavid 1.24 if (HasGsfTrk())
159 loizides 1.10 return GsfTrk();
160 bendavid 1.24 else if (HasTrackerTrk())
161 loizides 1.10 return TrackerTrk();
162 loizides 1.9
163 loizides 1.10 return 0;
164 loizides 1.9 }
165    
166 loizides 1.25 //--------------------------------------------------------------------------------------------------
167     inline void mithep::Electron::GetMom() const
168 sixie 1.14 {
169 bendavid 1.31 // Get momentum of the electron. We use an explicitly stored three vector, with the pdg mass,
170     // since the momentum vector may be computed non-trivially in cmssw
171 sixie 1.14
172 bendavid 1.31 fCachedMom.SetCoordinates(fMom.Rho(),fMom.Eta(),fMom.Phi(),GetMass());
173 bendavid 1.18 }
174    
175     //-------------------------------------------------------------------------------------------------
176 loizides 1.25 inline Double_t mithep::Electron::ESeedClusterOverPIn() const
177 bendavid 1.18 {
178 loizides 1.25 // Return energy of the SuperCluster seed divided by the magnitude
179     // of the track momentum at the vertex.
180    
181     return SCluster()->Seed()->Energy() / PIn();
182 bendavid 1.18 }
183 bendavid 1.31
184     //-------------------------------------------------------------------------------------------------
185     inline void mithep::Electron::SetPtEtaPhi(Double_t pt, Double_t eta, Double_t phi)
186     {
187     // Set three-vector
188    
189     fMom.Set(pt,eta,phi);
190     ClearMom();
191     }
192 loizides 1.8 #endif