00001 /* 00002 * @class : RecMdcKalHelixSeg 00003 * 00004 * @author: wangjk 00005 * ********************************************************/ 00006 00007 #ifndef RECMDCKALHELIXSEG_H 00008 #define RECMDCKALHELIXSEG_H 00009 #include "GaudiKernel/ContainedObject.h" 00010 #include "GaudiKernel/SmartRef.h" 00011 #include "GaudiKernel/ObjectVector.h" 00012 #include "Identifier/Identifier.h" 00013 #include "Identifier/MdcID.h" 00014 #include "EventModel/EventModel.h" 00015 #include "CLHEP/Matrix/Vector.h" 00016 #include "CLHEP/Matrix/SymMatrix.h" 00017 #include "CLHEP/Vector/ThreeVector.h" 00018 #include "CLHEP/Geometry/Point3D.h" 00019 00020 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00021 typedef HepGeom::Point3D<double> HepPoint3D; 00022 #endif 00023 00024 00025 using namespace CLHEP; 00026 00027 extern const CLID& CLID_RecMdcKalHelixSeg; 00028 00029 class RecMdcKalTrack; 00030 00031 class RecMdcKalHelixSeg : virtual public ContainedObject { 00032 00033 public: 00034 virtual const CLID& clID() const { 00035 return RecMdcKalHelixSeg::classID(); 00036 } 00037 00038 static const CLID& classID() { 00039 return CLID_RecMdcKalHelixSeg; 00040 } 00041 //constrcctor and destructor 00042 RecMdcKalHelixSeg(); 00043 RecMdcKalHelixSeg(RecMdcKalHelixSeg& seg); 00044 ~RecMdcKalHelixSeg(); 00045 00046 //extractors 00047 int getTrackId(void) const { return m_trackid; } 00048 Identifier getMdcId(void) const { return m_mdcid; } 00049 int getFlagLR(void) const { return m_flagLR; } 00050 double getTdc(void) const { return m_tdc; } 00051 double getAdc(void) const { return m_adc; } 00052 double getZhit(void) const { return m_zhit; } 00053 double getTof(void) const{ return m_tof; } 00054 double getDocaIncl(void) const { return m_doca_incl ; } 00055 double getDocaExcl(void) const { return m_doca_excl ; } 00056 double getDD(void) const { return m_dd; }; 00057 double getEntra(void) const { return m_entra; } 00058 double getDT(void) const { return m_dt; } 00059 int getLayerId(void) const {return m_layerId; } 00060 00062 double getDrIncl ( void ) const { return m_helix_incl[0]; } 00063 double getFi0Incl ( void ) const { return m_helix_incl[1]; } 00064 double getCpaIncl ( void ) const { return m_helix_incl[2]; } 00065 double getDzIncl ( void ) const { return m_helix_incl[3]; } 00066 double getTanlIncl( void ) const { return m_helix_incl[4]; } 00067 00068 double getDrExcl ( void ) const { return m_helix_excl[0]; } 00069 double getFi0Excl ( void ) const { return m_helix_excl[1]; } 00070 double getCpaExcl ( void ) const { return m_helix_excl[2]; } 00071 double getDzExcl ( void ) const { return m_helix_excl[3]; } 00072 double getTanlExcl( void ) const { return m_helix_excl[4]; } 00073 00074 HepVector& getHelixIncl( void ) { return m_helix_incl; } 00075 HepVector& getHelixExcl( void ) { return m_helix_excl; } 00076 00077 HepSymMatrix& getErrorIncl( void ) { return m_error_incl; } 00078 HepSymMatrix& getErrorExcl( void ) { return m_error_excl; } 00079 double getResIncl(void) { return m_res_incl; } 00080 double getResExcl(void) { return m_res_excl; } 00081 00082 00083 // modifiers 00084 void setTrackId(int trackid) { m_trackid = trackid ;} 00085 void setMdcId(Identifier mdcid) { m_mdcid = mdcid;} 00086 void setFlagLR(int flagLR) { m_flagLR =flagLR;} 00087 void setTdc(double tdc) { m_tdc = tdc; } 00088 void setAdc(double adc) { m_adc = adc; } 00089 void setZhit(double zhit) { m_zhit = zhit; } 00090 void setTof(double tof) { m_tof = tof; } 00091 void setDocaIncl(double doca) { m_doca_incl = doca; } 00092 void setDocaExcl(double doca) { m_doca_excl = doca; } 00093 00094 void setDD(double dd) { m_dd = dd; } 00095 void setEntra(double entra) { m_entra = entra; } 00096 void setDT(double dt) { m_dt = dt; } 00097 void setLayerId(int layerId) { m_layerId = layerId;} 00098 00099 void setDrIncl(double dr) { m_helix_incl[0] = dr; } 00100 void setFi0Incl(double fi0) { m_helix_incl[1] = fi0; } 00101 void setCpaIncl(double cpa) { m_helix_incl[2] = cpa; } 00102 void setDzIncl(double dz) { m_helix_incl[3] = dz; } 00103 void setTanlIncl(double tanl) { m_helix_incl[4] = tanl; } 00104 00105 void setDrExcl(double dr) { m_helix_excl[0] = dr; } 00106 void setFi0Excl(double fi0) { m_helix_excl[1] = fi0; } 00107 void setCpaExcl(double cpa) { m_helix_excl[2] = cpa; } 00108 void setDzExcl(double dz) { m_helix_excl[3] = dz; } 00109 void setTanlExcl(double tanl) { m_helix_excl[4] = tanl; } 00110 00111 void setResIncl(double res) {m_res_incl = res; } 00112 void setResExcl(double res) {m_res_excl = res; } 00113 00114 void setHelixIncl(const HepVector& helix) { 00115 m_helix_incl = helix; 00116 } 00117 void setErrorIncl(const HepSymMatrix& error) { 00118 m_error_incl = error; 00119 } 00120 void setHelixExcl(const HepVector& helix) { 00121 m_helix_excl = helix; 00122 } 00123 void setErrorExcl(const HepSymMatrix& error) { 00124 m_error_excl = error; 00125 } 00126 00127 void setHelixIncl(double* helix) { 00128 for(int i=0; i<5; i++) { 00129 m_helix_incl[i] = helix[i]; 00130 } 00131 } 00132 void setErrorIncl(double* error) { 00133 int k=0; 00134 for(int i=0; i<5 ; i++) { 00135 for(int j=0; j<=i; j++,k++) { 00136 m_error_incl[i][j] = error[k]; 00137 m_error_incl[j][i] = error[k]; 00138 } 00139 } 00140 } 00141 00142 void setHelixExcl(double* helix) { 00143 for(int i=0; i<5; i++) { 00144 m_helix_excl[i] = helix[i]; 00145 } 00146 } 00147 00148 void setErrorExcl(double* error) { 00149 int k=0; 00150 for(int i=0; i<5 ; i++) { 00151 for(int j=0; j<=i; j++,k++) { 00152 m_error_excl[i][j] = error[k]; 00153 m_error_excl[j][i] = error[k]; 00154 } 00155 } 00156 } 00157 00158 00159 private: 00160 00161 int m_trackid; 00162 Identifier m_mdcid; 00163 int m_flagLR; 00164 double m_tdc; 00165 double m_adc; 00166 double m_zhit; 00167 double m_tof; 00168 double m_doca_incl; 00169 double m_doca_excl; 00170 double m_dd; 00171 double m_entra; 00172 double m_dt; 00173 double m_res_incl; 00174 double m_res_excl; 00175 HepVector m_helix_incl; // 5 track parameters 00176 HepVector m_helix_excl; // 5 track parameters 00177 00178 HepSymMatrix m_error_incl; // error matrix 00179 HepSymMatrix m_error_excl; // error matrix 00180 00181 int m_layerId; 00182 00183 }; 00184 typedef ObjectVector<RecMdcKalHelixSeg> RecMdcKalHelixSegCol; 00185 00186 00187 #endif 00188