00001 //----------------------------------------------------------------------------- 00002 // $Id: TMDCWireHitMC.h,v 1.6 2010/03/31 09:58:59 liucy Exp $ 00003 //----------------------------------------------------------------------------- 00004 // Filename : TMDCWireHitMC.h 00005 // Section : Tracking MDC 00006 // Owner : Yoshi Iwasaki 00007 // Email : yoshihito.iwasaki@kek.jp 00008 //----------------------------------------------------------------------------- 00009 // Description : A class to represent a MC wire hit in MDC. 00010 // See http://bsunsrv1.kek.jp/~yiwasaki/tracking/ 00011 //----------------------------------------------------------------------------- 00012 00013 #ifndef TMDCWireHitMC_FLAG_ 00014 #define TMDCWireHitMC_FLAG_ 00015 00016 #ifdef TRKRECO_DEBUG_DETAIL 00017 #ifndef TRKRECO_DEBUG 00018 #define TRKRECO_DEBUG 00019 #endif 00020 #endif 00021 00022 #include <string> 00023 00024 #define HEP_SHORT_NAMES 00025 #include "CLHEP/Alist/AList.h" 00026 #include "CLHEP/Vector/ThreeVector.h" 00027 #ifndef CLHEP_POINT3D_H 00028 #include "CLHEP/Geometry/Point3D.h" 00029 #endif 00030 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00031 typedef HepGeom::Point3D<double> HepPoint3D; 00032 #endif 00033 #include "CLHEP/Geometry/Vector3D.h" 00034 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00035 typedef HepGeom::Vector3D<double> HepVector3D; 00036 #endif 00037 using namespace CLHEP; 00038 class TMDC; 00039 class TMDCWire; 00040 class TMDCWireHit; 00041 class TTrackHEP; 00042 //struct datcdc_mcwirhit; 00043 class MdcDat_mcwirhit; 00044 00046 class TMDCWireHitMC { 00047 00048 public: 00050 TMDCWireHitMC(const TMDCWire *, const TMDCWireHit *, MdcDat_mcwirhit *); 00051 00053 virtual ~TMDCWireHitMC(); 00054 00055 public:// Selectors 00057 float distance(void) const; 00058 00060 const HepPoint3D & hitPosition(void) const; 00061 00063 const HepPoint3D & entrance(void) const; 00064 00066 const HepVector3D & direction(void) const; 00067 00069 const Hep3Vector & momentum(void) const; 00070 00072 int leftRight(void) const; 00073 00075 MdcDat_mcwirhit * datcdc(void) const; 00076 00078 const TMDCWire * const wire(void) const; 00079 00081 const TTrackHEP * const hep(void) const; 00082 00084 const TMDCWireHit * const hit(void) const; 00085 00086 public:// Modifiers 00087 00088 private: 00089 const TMDCWire * _wire; 00090 const TMDCWireHit * _hit; 00091 HepPoint3D _position; 00092 HepPoint3D _entrance; 00093 HepVector3D _direction; 00094 Hep3Vector _momentum; 00095 float _distance; 00096 float _energy; 00097 int _leftRight; 00098 MdcDat_mcwirhit * _datcdc; 00099 const TTrackHEP * _hep; 00100 00101 friend class TMDC; 00102 }; 00103 00104 //----------------------------------------------------------------------------- 00105 00106 #ifdef TMDCWireHitMC_NO_INLINE 00107 #define inline 00108 #else 00109 #undef inline 00110 #define TMDCWireHitMC_INLINE_DEFINE_HERE 00111 #endif 00112 00113 #ifdef TMDCWireHitMC_INLINE_DEFINE_HERE 00114 00115 inline 00116 float 00117 TMDCWireHitMC::distance(void) const { 00118 return _distance; 00119 } 00120 00121 inline 00122 const HepPoint3D & 00123 TMDCWireHitMC::hitPosition(void) const { 00124 return _position; 00125 } 00126 00127 inline 00128 const HepPoint3D & 00129 TMDCWireHitMC::entrance(void) const { 00130 return _entrance; 00131 } 00132 00133 inline 00134 const HepVector3D & 00135 TMDCWireHitMC::direction(void) const { 00136 return _direction; 00137 } 00138 00139 inline 00140 int 00141 TMDCWireHitMC::leftRight(void) const { 00142 return _leftRight; 00143 } 00144 00145 inline 00146 MdcDat_mcwirhit * 00147 TMDCWireHitMC::datcdc(void) const { 00148 return _datcdc; 00149 } 00150 00151 inline 00152 const TMDCWire * const 00153 TMDCWireHitMC::wire(void) const { 00154 return _wire; 00155 } 00156 00157 inline 00158 const TTrackHEP * const 00159 TMDCWireHitMC::hep(void) const { 00160 return _hep; 00161 } 00162 00163 inline 00164 const TMDCWireHit * const 00165 TMDCWireHitMC::hit(void) const { 00166 return _hit; 00167 } 00168 00169 inline 00170 const Hep3Vector & 00171 TMDCWireHitMC::momentum(void) const { 00172 return _momentum; 00173 } 00174 00175 #endif 00176 00177 #undef inline 00178 00179 #endif /* TMDCWireHitMC_FLAG_ */