00001 /* 00002 * 00003 * this class models "Hit" used in Mdc Reconstruction 00004 * 00005 * 00006 * ********************************************************/ 00007 00008 #ifndef RECMDCHIT_H 00009 #define RECMDCHIT_H 00010 #include "GaudiKernel/ContainedObject.h" 00011 #include "GaudiKernel/SmartRef.h" 00012 #include "GaudiKernel/ObjectVector.h" 00013 #include "MdcGeomSvc/MdcGeoWire.h" 00014 #include "EventModel/EventModel.h" 00015 #include "Identifier/Identifier.h" 00016 00017 00018 extern const CLID& CLID_RecMdcHit; 00019 00020 class RecMdcTrack; 00021 00022 class RecMdcHit : virtual public ContainedObject { 00023 00024 public: 00025 virtual const CLID& clID() const { 00026 return RecMdcHit::classID(); 00027 } 00028 00029 static const CLID& classID() { 00030 return CLID_RecMdcHit; 00031 } 00032 00033 //ctor and dector 00034 RecMdcHit(); 00035 RecMdcHit(const RecMdcHit& rechit ); 00036 ~RecMdcHit(); 00037 // is this hit grouped to any track? 00038 bool isGrouped(void); 00039 //extractors 00040 const int getId(void) const { return m_id; } 00041 const int getTrkId(void) const { return m_trkid; } 00042 const double getDriftDistLeft(void) const { return m_ddl; } 00043 const double getDriftDistRight(void) const { return m_ddr ; } 00044 const double getErrDriftDistLeft(void) const { return m_erddl; } 00045 const double getErrDriftDistRight(void) const { return m_erddr; } 00046 const double getChisqAdd(void) const { return m_pChisq;} 00047 const int getFlagLR(void) const { return m_lr; } 00048 const int getStat(void) const { return m_stat; } 00049 const Identifier getMdcId(void) const { return m_mdcid; } 00050 const double getTdc(void) const { return m_tdc; } 00051 const double getAdc(void) const { return m_adc; } 00052 const double getDriftT(void) const { return m_driftT;} 00053 const double getDoca(void) const { return m_doca; } 00054 const double getEntra(void) const { return m_entra; } 00055 const double getZhit(void) const { return m_zhit; } 00056 const double getFltLen(void) const { return m_fltLen;} 00057 //modifiers 00058 void setId(int id) { m_id = id; } 00059 void setTrkId(int trkid) { m_trkid = trkid; } 00060 void setDriftDistLeft(double ddl) { m_ddl = ddl; } 00061 void setDriftDistRight(double ddr) { m_ddr = ddr ; } 00062 void setErrDriftDistLeft(double erddl) { m_erddl = erddl; } 00063 void setErrDriftDistRight(double erddr) { m_erddr = erddr; } 00064 void setChisqAdd(double pChisq) { m_pChisq = pChisq;} 00065 void setFlagLR(int lr) { m_lr = lr; } 00066 void setStat(int stat) { m_stat = stat; } 00067 void setMdcId( Identifier mdcid ) { m_mdcid = mdcid; } 00068 void setTdc(double tdc) { m_tdc = tdc; } 00069 void setAdc(double adc) { m_adc = adc; } 00070 void setDriftT(double driftT) { m_driftT = driftT;} 00071 void setDoca(double doca) { m_doca = doca; } 00072 void setEntra(double entra) { m_entra = entra; } 00073 void setZhit(double zhit) { m_zhit = zhit; } 00074 void setFltLen(double fltLen) { m_fltLen = fltLen;} 00075 00076 00077 private: 00078 00079 int m_id; // the id of thie hit 00080 int m_trkid; // id of track containing this hit,if this hit 00081 // belongs to no track, set as -1; 00082 double m_ddl; // drift distance left 00083 double m_ddr; // drift distance right 00084 double m_erddl; // error of drift distance left 00085 double m_erddr; // error of drift distance right 00086 double m_pChisq; // contribution to chisquare 00087 int m_lr; // flag indicating left or right 0:left 1:right 2:ambig 00088 int m_stat; // status flag 00089 Identifier m_mdcid; // MDC identifier 00090 double m_tdc; // corrected TDC 00091 double m_adc; // corrected ADC 00092 double m_driftT; // drift time 00093 double m_doca; // distance of closesest approach for helix in the cell 00094 double m_entra; // entrance angle in azimuth 00095 double m_zhit; // z coordinate of the hit 00096 double m_fltLen; // flight length of this hit 00097 }; 00098 00099 typedef ObjectVector<RecMdcHit> RecMdcHitCol; 00100 00101 #endif 00102