00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id: TrigElectron_v1.h 631115 2014-11-26 08:34:25Z gwatts $ 00003 #ifndef XAODTRIGEGAMMA_VERSIONS_TRIGELECTRON_V1_H 00004 #define XAODTRIGEGAMMA_VERSIONS_TRIGELECTRON_V1_H 00005 00006 // System include(s): 00007 extern "C" { 00008 # include <stdint.h> 00009 } 00010 00011 // EDM include(s): 00012 #include "AthLinks/ElementLink.h" 00013 #include "xAODBase/IParticle.h" 00014 #include "xAODTrigCalo/TrigEMClusterContainer.h" 00015 #include "xAODTracking/TrackParticleContainer.h" 00016 00017 namespace xAOD { 00018 00031 class TrigElectron_v1 : public IParticle { 00032 00033 public: 00035 TrigElectron_v1(); 00036 00039 00041 virtual double pt() const; 00043 virtual double eta() const { return caloEta(); } 00045 virtual double phi() const { return caloPhi(); } 00047 virtual double m() const { return 0.510998928; } 00049 virtual double e() const; 00051 virtual double rapidity() const; 00052 00054 virtual const FourMom_t& p4() const; 00055 00057 virtual Type::ObjectType type() const { return Type::TrigElectron; } 00058 00060 00063 00065 uint32_t roiWord() const; 00067 void setRoiWord( uint32_t roi ); 00068 00070 float zvtx() const; 00072 void setZvtx( float zVtx ); 00073 00075 float charge() const; 00077 void setCharge( float charge ); 00078 00080 int nTRTHits() const; 00082 void setNTRTHits( int nTRTHits ); 00083 00085 int nTRTHiThresholdHits() const; 00087 void setNTRTHiThresholdHits( int nTRTHiThresholdHits ); 00088 00090 float rcore() const; 00092 void setRcore( float rcore ); 00093 00095 float eratio() const; 00097 void setEratio( float eratio ); 00098 00100 float etHad() const; 00102 void setEtHad( float etHad ); 00103 00105 float etHad1() const; 00107 void setEtHad1( float etHad1 ); 00108 00110 float f0() const; 00112 void setF0( float value ); 00113 00115 float f1() const; 00117 void setF1( float value ); 00118 00120 float f2() const; 00122 void setF2( float value ); 00123 00125 float f3() const; 00127 void setF3( float value ); 00128 00130 00133 00135 float trkEtaAtCalo() const; 00137 void setTrkEtaAtCalo( float trEta ); 00138 00140 float trkPhiAtCalo() const; 00142 void setTrkPhiAtCalo( float trPhi ); 00143 00145 float etOverPt() const; 00147 void setEtOverPt( float etOverpt ); 00148 00150 float trkClusDeta() const; 00152 float trkClusDphi() const; 00153 00155 void setPt( double pt ); 00156 00158 float caloEta() const; 00160 void setCaloEta( float caloEta ); 00161 00163 float caloPhi() const; 00165 void setCaloPhi( float caloPhi ); 00166 00168 00171 00173 typedef ElementLink< TrigEMClusterContainer > EMClusterLink_t; 00174 00176 const TrigEMCluster* emCluster() const; 00178 const EMClusterLink_t& emClusterLink() const; 00180 void setEmClusterLink( const EMClusterLink_t& value ); 00181 00183 typedef ElementLink< TrackParticleContainer > TrackParticleLink_t; 00184 00186 const TrackParticle* trackParticle() const; 00188 const TrackParticleLink_t& trackParticleLink() const; 00190 void setTrackParticleLink( const TrackParticleLink_t& value ); 00191 00193 00195 void init( uint32_t roi, 00196 float trkEtaAtCalo, float trkPhiAtCalo, float etOverPt, 00197 const EMClusterLink_t& clLink, 00198 const TrackParticleLink_t& tpLink ); 00199 00200 private: 00202 mutable FourMom_t m_p4; 00204 mutable bool m_p4Cached; 00205 00206 }; // class TrigElectron_v1 00207 00208 } // namespace xAOD 00209 00210 #endif // not XAODTRIGEGAMMA_VERSIONS_TRIGELECTRON_V1_H