/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/EvtRecEvent/EvtRecEvent-00-02-02/EvtRecEvent/EvtRecTrack.h

Go to the documentation of this file.
00001 #ifndef Event_EvtRecTrack_H
00002 #define Event_EvtRecTrack_H
00003 
00004 #include "GaudiKernel/ObjectVector.h"
00005 #include "GaudiKernel/ContainedObject.h"
00006 #include "GaudiKernel/SmartRef.h"
00007 #include "GaudiKernel/SmartRefVector.h"
00008 #include "EventModel/EventModel.h"
00009 #include "MdcRecEvent/RecMdcTrack.h"
00010 #include "MdcRecEvent/RecMdcKalTrack.h"
00011 #include "MdcRecEvent/RecMdcDedx.h"
00012 #include "ExtEvent/RecExtTrack.h"
00013 #include "TofRecEvent/RecTofTrack.h"
00014 #include "EmcRecEventModel/RecEmcShower.h"
00015 #include "MucRecEvent/RecMucTrack.h"
00016 
00017 using namespace EventModel;
00018 
00019 extern const CLID &CLID_EvtRecTrack;
00020 
00021 class EvtRecTrack:virtual public ContainedObject {
00022  public:
00023   virtual const CLID& clID() const {return  EvtRecTrack::classID();}
00024   static  const CLID& classID() { return CLID_EvtRecTrack;}
00025   
00026   EvtRecTrack();
00027   ~EvtRecTrack() {;}
00028   
00029   EvtRecTrack(const EvtRecTrack&);
00030   
00031   //get Track ID, Particle ID and Data Quality
00032   int trackId() const {return m_trackId;}
00033   int partId() const {return m_partId;}
00034   int quality() const { return m_quality; }
00035 
00036   bool isElectron() const { return (m_partId & 0x01); }
00037   bool isMuon()     const { return (m_partId & 0x02); }
00038   bool isPion()     const { return (m_partId & 0x04); }
00039   bool isKaon()     const { return (m_partId & 0x08); }
00040   bool isProton()   const { return (m_partId & 0x10); }
00041 
00042   //Sub detector infomation is Valid or not
00043   bool isMdcTrackValid() {return (m_originMdcTrack != 0);}
00044   bool isMdcKalTrackValid() {return (m_originMdcKalTrack != 0);}
00045   bool isMdcDedxValid() {return (m_originMdcDedx != 0);}
00046   bool isTofTrackValid() {return (!m_originTofTrack.empty());}
00047   bool isEmcShowerValid() {return (m_originEmcShower!= 0);}
00048   bool isMucTrackValid() {return (m_originMucTrack != 0);}
00049   bool isExtTrackValid() {return (m_originExtTrack != 0);}
00050   
00051   //pointer to sub detector infomation
00052   
00053   RecMdcTrack* mdcTrack()  {return m_originMdcTrack;}
00054   RecMdcKalTrack* mdcKalTrack()  {return m_originMdcKalTrack;}
00055   RecMdcDedx*  mdcDedx()  {return m_originMdcDedx;}
00056   RecExtTrack* extTrack()  {return m_originExtTrack;}
00057   SmartRefVector<RecTofTrack> tofTrack()  {return m_originTofTrack;}
00058   RecEmcShower* emcShower()  {return m_originEmcShower;}
00059   RecMucTrack* mucTrack()  {return m_originMucTrack;}
00060 
00061 
00062   // set Track ID, Particle ID and Data Quality
00063 
00064   void setTrackId(const int trkId) {m_trackId = trkId;}
00065   void setPartId(const int partId) {m_partId = partId;}
00066   void setQuality(const int quality) { m_quality = quality; }
00067 
00068   void tagElectron() { m_partId |= 0x01; }
00069   void tagMuon()     { m_partId |= 0x02; }
00070   void tagPion()     { m_partId |= 0x04; }
00071   void tagKaon()     { m_partId |= 0x08; }
00072   void tagProton()   { m_partId |= 0x10; }
00073   
00074   // set sub detector pointer
00075   
00076   void setMdcTrack(const RecMdcTrack* trk) {m_originMdcTrack = trk;}
00077   void setMdcKalTrack(const RecMdcKalTrack* trk) {m_originMdcKalTrack = trk;}
00078   void setMdcDedx(const RecMdcDedx* trk) {m_originMdcDedx = trk;}
00079   void setExtTrack(const RecExtTrack* trk) {m_originExtTrack = trk;}
00080   void setTofTrack(const SmartRefVector<RecTofTrack> trk) {m_originTofTrack = trk;}
00081   void addTofTrack(const SmartRef<RecTofTrack> trk) {m_originTofTrack.push_back(trk);}
00082   void setEmcShower(const RecEmcShower* shower) {m_originEmcShower = shower;}
00083   void setMucTrack(const RecMucTrack* trk) {m_originMucTrack = trk;}
00084 
00085   // assign operator
00086                 
00087   EvtRecTrack & operator = (const EvtRecTrack &);
00088 
00089                 
00090                 
00091  private:
00092 
00093   int m_trackId;
00094   // Pid: 0x01 - electron, 0x02 - muon, 0x04 - pion, 0x08 - kaon, 0x10 - proton
00095   int m_partId;
00096   //data quality: 1 - very good, 2 - available, 3 - normal
00097   int m_quality;
00098 
00099   SmartRef<RecMdcTrack> m_originMdcTrack;
00100   SmartRef<RecMdcKalTrack> m_originMdcKalTrack;
00101   SmartRef<RecMdcDedx> m_originMdcDedx;
00102   SmartRef<RecExtTrack> m_originExtTrack;
00103   SmartRefVector<RecTofTrack> m_originTofTrack;
00104   SmartRef<RecEmcShower> m_originEmcShower;
00105   SmartRef<RecMucTrack> m_originMucTrack;
00106 
00107 };
00108 
00109 typedef ObjectVector<EvtRecTrack> EvtRecTrackCol;
00110 
00111 typedef EvtRecTrackCol::iterator EvtRecTrackIterator;
00112 
00113 
00114 
00115 #endif

Generated on Tue Nov 29 22:58:29 2016 for BOSS_7.0.2 by  doxygen 1.4.7