00001 /* 00002 * @class : MdcDedx 00003 * 00004 * this class models "dE/dx hit" used in Mdc Reconstruction 00005 * 00006 * @author: xcao 00007 * 00008 * ********************************************************/ 00009 00010 #ifndef RECMDCDEDXHIT_H 00011 #define RECMDCDEDXHIT_H 00012 #include "GaudiKernel/ContainedObject.h" 00013 #include "GaudiKernel/SmartRef.h" 00014 #include "GaudiKernel/ObjectVector.h" 00015 #include "EventModel/EventModel.h" 00016 #include "Identifier/Identifier.h" 00017 00018 #include "RecMdcKalHelixSeg.h" 00019 #include "RecMdcHit.h" 00020 00021 extern const CLID& CLID_RecMdcDedxHit; 00022 class RecMdcDedx; 00023 00024 class RecMdcDedxHit : virtual public ContainedObject { 00025 00026 public: 00027 virtual const CLID& clID() const { 00028 return RecMdcDedxHit::classID(); 00029 } 00030 00031 static const CLID& classID() { 00032 return CLID_RecMdcDedxHit; 00033 } 00034 00035 00036 //ctor and dector 00037 RecMdcDedxHit(); 00038 RecMdcDedxHit(const RecMdcDedxHit& recdedxhit ); 00039 ~RecMdcDedxHit(); 00040 // is this hit grouped to any track? 00041 bool isGrouped(void); 00042 bool isMdcHitValid() {return (m_mdcHit!=0);} 00043 bool isMdcKalHelixSegValid() {return (m_mdcKalHelixSeg!=0);} 00044 00045 //extractors 00046 00047 RecMdcKalHelixSeg* getMdcKalHelixSeg() { return m_mdcKalHelixSeg; } 00048 RecMdcHit* getMdcHit() {return m_mdcHit;} 00049 00050 const int getTrkId(void) const { return m_trkid; } 00051 const int getFlagLR(void) const { return m_lr; } 00052 const double getDedx(void) const {return m_dedx; } 00053 double getPathLength(void) const { return m_pathlength; } 00054 const Identifier getMdcId(void) const { return m_mdcid; } 00055 00056 //modifiers 00057 void setMdcKalHelixSeg(const RecMdcKalHelixSeg* mdcKalHelixSeg) {m_mdcKalHelixSeg = mdcKalHelixSeg;} 00058 void setMdcHit(const RecMdcHit* mdcHit) {m_mdcHit = mdcHit;} 00059 00060 void setTrkId(int trkid) { m_trkid = trkid; } 00061 void setFlagLR(int lr) { m_lr = lr; } 00062 void setDedx(double dedx ) {m_dedx = dedx; } 00063 void setPathLength(double pathlength) { m_pathlength = pathlength; } 00064 void setMdcId( Identifier mdcid ) { m_mdcid = mdcid; } 00065 00066 private: 00067 //RecMdcKalHelixSeg m_kalHelixSeg; 00068 int m_trkid; // id of track containing this hit,if this hit belongs to no track, set as -1; 00069 int m_lr; // flag indicating left or right 0:left 1:right 2:ambig 00070 double m_pathlength; //path length of track cross a cell 00071 double m_dedx; 00072 Identifier m_mdcid; // MDC identifier 00073 00074 SmartRef<RecMdcKalHelixSeg> m_mdcKalHelixSeg; 00075 SmartRef<RecMdcHit> m_mdcHit; 00076 }; 00077 00078 typedef ObjectVector<RecMdcDedxHit> RecMdcDedxHitCol; 00079 00080 #endif 00081