00001 #ifndef RECTRACKLIST_H 00002 #define RECTRACKLIST_H 00003 00004 #include "GaudiKernel/ObjectVector.h" 00005 #include "GaudiKernel/ContainedObject.h" 00006 #include "GaudiKernel/SmartRef.h" 00007 #include "EventModel/EventModel.h" 00008 #include "MdcRecEvent/RecMdcTrack.h" 00009 #include "MdcRecEvent/RecMdcKalTrack.h" 00010 #include "MdcRecEvent/RecMdcDedx.h" 00011 #include "ExtEvent/RecExtTrack.h" 00012 #include "TofRecEvent/RecTofTrack.h" 00013 #include "EmcRecEventModel/RecEmcShower.h" 00014 #include "MucRecEvent/RecMucTrack.h" 00015 00016 using namespace EventModel; 00017 00018 extern const CLID &CLID_RecTrackList; 00019 00020 class RecTrackList:virtual public ContainedObject 00021 { 00022 public: 00023 virtual const CLID& clID() const {return RecTrackList::classID();} 00024 static const CLID& classID() { return CLID_RecTrackList;} 00025 00026 RecTrackList(); 00027 ~RecTrackList() {;} 00028 00029 RecTrackList(const RecTrackList &); 00030 00031 bool IsMdcTrkValid() {return (myMdcTrk != 0);} 00032 bool IsMdcKalTrkValid() {return (myKalTrk != 0);} 00033 bool IsDedxValid() {return (myMdcDedx != 0);} 00034 bool IsExtTrkValid() {return (myExtTrk != 0);} 00035 bool IsTofTrkValid() {return (myTofTrk != 0);} 00036 bool IsEmcTrkValid() {return (myRecEmcShower != 0);} 00037 bool IsMucTrkValid() {return (myMucTrk != 0);} 00038 00039 int GetTrkId() {return myTrkId;} 00040 RecMdcTrack* MdcTrk() {return myMdcTrk;} 00041 RecMdcKalTrack* MdcKalTrk() {return myKalTrk;} 00042 RecMdcDedx* DedxTrk() {return myMdcDedx;} 00043 RecExtTrack* ExtTrk() {return myExtTrk;} 00044 RecTofTrack* TofTrk() {return myTofTrk;} 00045 RecEmcShower* EmcTrk() {return myRecEmcShower;} 00046 RecMucTrack* MucTrk() {return myMucTrk;} 00047 00048 void setTrackID(const int trkID) { myTrkId = trkID;} 00049 void setMdcTrk( RecMdcTrack* trk) { myMdcTrk = trk;} 00050 void setMdcKalTrk( RecMdcKalTrack* trk) { myKalTrk = trk;} 00051 void setDedxTrk( RecMdcDedx* trk) { myMdcDedx = trk;} 00052 void setExtTrk( RecExtTrack* trk) { myExtTrk = trk;} 00053 void setTofTrk( RecTofTrack* trk) { myTofTrk = trk;} 00054 void setEmcTrk( RecEmcShower* trk) { myRecEmcShower = trk;} 00055 void setMucTrk( RecMucTrack* trk) { myMucTrk = trk;} 00056 00057 int MdcTrkIdx() { return myMdcTrkIdx;} 00058 int MdcKalTrkIdx() { return myKalTrkIdx;} 00059 int DedxTrkIdx() { return myMdcDedxIdx;} 00060 int ExtTrkIdx() { return myExtTrkIdx;} 00061 int TofTrkIdx() { return myTofTrkIdx;} 00062 int EmcTrkIdx() { return myRecEmcShowerIdx;} 00063 int MucTrkIdx() { return myMucTrkIdx;} 00064 00065 void setMdcTrkIdx( int idx ) { myMdcTrkIdx = idx ;} 00066 void setMdcKalTrkIdx( int idx ) { myKalTrkIdx = idx ;} 00067 void setDedxTrkIdx( int idx ) { myMdcDedxIdx = idx ;} 00068 void setExtTrkIdx( int idx ) { myExtTrkIdx = idx ;} 00069 void setTofTrkIdx( int idx ) { myTofTrkIdx = idx ;} 00070 void setEmcTrkIdx( int idx ) { myRecEmcShowerIdx = idx ;} 00071 void setMucTrkIdx( int idx ) { myMucTrkIdx = idx;} 00072 00073 00074 RecTrackList & operator = (const RecTrackList &); 00075 00076 00077 private: 00078 int myTrkId; 00079 SmartRef<RecMdcTrack> myMdcTrk; 00080 SmartRef<RecMdcKalTrack> myKalTrk; 00081 SmartRef<RecMdcDedx> myMdcDedx; 00082 SmartRef<RecExtTrack> myExtTrk; 00083 SmartRef<RecTofTrack> myTofTrk; 00084 SmartRef<RecEmcShower> myRecEmcShower; 00085 SmartRef<RecMucTrack> myMucTrk; 00086 00087 int myMdcTrkIdx; 00088 int myKalTrkIdx; 00089 int myMdcDedxIdx; 00090 int myExtTrkIdx; 00091 int myTofTrkIdx; 00092 int myRecEmcShowerIdx; 00093 int myMucTrkIdx; 00094 }; 00095 00096 typedef ObjectVector<RecTrackList> RecTrackListCol; 00097 00098 typedef RecTrackListCol::iterator RecTrackIterator; 00099 typedef RecMdcTrackCol::iterator RecMdcTrackIterator; 00100 typedef RecMdcKalTrackCol::iterator RecMdcKalTrackIterator; 00101 00102 00103 #endif