00001 // Dear emacs, this is -*- c++ -*- 00002 // $Id: Electron_v1.h 636327 2014-12-16 16:34:24Z christos $ 00003 #ifndef XAODEGAMMA_VERSIONS_ELECTRON_V1_H 00004 #define XAODEGAMMA_VERSIONS_ELECTRON_V1_H 00005 00006 // Core include(s): 00007 #include "AthLinks/ElementLink.h" 00008 // xAOD include(s): 00009 #include "xAODEgamma/versions/Egamma_v1.h" 00010 //Egamma includes 00011 #include "xAODEgamma/EgammaEnums.h" 00012 //Tracking includes 00013 #include "xAODTracking/TrackingPrimitives.h" 00014 //TrackParticle Includes 00015 #include "xAODTracking/TrackParticle.h" 00016 #include "xAODTracking/TrackParticleContainer.h" 00017 00018 //CxxUtils for override final 00019 #include "CxxUtils/final.h" 00020 #include "CxxUtils/override.h" 00021 00022 namespace xAOD { 00023 00033 class Electron_v1 :public xAOD::Egamma_v1{ 00034 00035 public: 00038 00040 Electron_v1(); 00041 00043 Electron_v1(const Electron_v1& el); 00044 00045 00047 00050 00052 Electron_v1& operator=(const Electron_v1& el ); 00053 00055 00058 00060 float charge() const; 00061 00063 void setCharge(float charge); 00064 00066 00069 00071 virtual Type::ObjectType type() const ATH_FINAL; //Always an Electron. 00072 00074 00077 00080 size_t nTrackParticles() const; 00081 00084 const xAOD::TrackParticle* trackParticle( size_t index = 0 ) const; 00085 00088 const ElementLink< TrackParticleContainer >& 00089 trackParticleLink( size_t index = 0 ) const; 00090 00092 typedef std::vector< ElementLink< TrackParticleContainer > > TPELVec_t; 00093 00095 const TPELVec_t& trackParticleLinks() const; 00098 void setTrackParticleLinks( const TPELVec_t& links ); 00099 00101 00104 00106 bool trackCaloMatchValue( float& value, const EgammaParameters::TrackCaloMatchType information ) const; 00107 00110 float trackCaloMatchValue( const EgammaParameters::TrackCaloMatchType information ) const; 00111 00112 00114 bool setTrackCaloMatchValue( float value, const EgammaParameters::TrackCaloMatchType information ); 00115 00119 bool trackParticleSummaryValue( uint8_t& value, const SummaryType information, int index = 0) const; 00120 bool trackParticleSummaryValue( float& value, const SummaryType information, int index = 0) const; 00121 00124 uint8_t trackParticleSummaryIntValue( const SummaryType information, int index = 0) const; 00125 float trackParticleSummaryFloatValue( const SummaryType information, int index = 0) const; 00126 00128 00129 00130 }; // Electron Class 00131 00132 }// xAOD namespace 00133 00134 00135 #endif // XAODEGAMMA_VERSIONS_ELECTRON_V1_H 00136