BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Event/EvtRecEvent/include/EvtRecEvent/EvtRecTrack.h
Go to the documentation of this file.
1#ifndef Event_EvtRecTrack_H
2#define Event_EvtRecTrack_H
3
4#include "EmcRecEventModel/RecEmcShower.h"
5#include "EventModel/EventModel.h"
6#include "ExtEvent/RecExtTrack.h"
7#include "GaudiKernel/ContainedObject.h"
8#include "GaudiKernel/ObjectVector.h"
9#include "GaudiKernel/SmartRef.h"
10#include "GaudiKernel/SmartRefVector.h"
11#include "MdcRecEvent/RecMdcDedx.h"
12#include "MdcRecEvent/RecMdcKalTrack.h"
13#include "MdcRecEvent/RecMdcTrack.h"
14#include "MucRecEvent/RecMucTrack.h"
15#include "TofRecEvent/RecTofTrack.h"
16
17using namespace EventModel;
18
19extern const CLID& CLID_EvtRecTrack;
20
21class EvtRecTrack : virtual public ContainedObject {
22public:
23 virtual const CLID& clID() const { return EvtRecTrack::classID(); }
24 static const CLID& classID() { return CLID_EvtRecTrack; }
25
28
29 EvtRecTrack( const EvtRecTrack& );
30
31 // get Track ID, Particle ID and Data Quality
32 int trackId() const { return m_trackId; }
33 int partId() const { return m_partId; }
34 int quality() const { return m_quality; }
35
36 bool isElectron() const { return ( m_partId & 0x01 ); }
37 bool isMuon() const { return ( m_partId & 0x02 ); }
38 bool isPion() const { return ( m_partId & 0x04 ); }
39 bool isKaon() const { return ( m_partId & 0x08 ); }
40 bool isProton() const { return ( m_partId & 0x10 ); }
41
42 // Sub detector infomation is Valid or not
43 bool isMdcTrackValid() { return ( m_originMdcTrack != 0 ); }
44 bool isMdcKalTrackValid() { return ( m_originMdcKalTrack != 0 ); }
45 bool isMdcDedxValid() { return ( m_originMdcDedx != 0 ); }
46 bool isTofTrackValid() { return ( !m_originTofTrack.empty() ); }
47 bool isEmcShowerValid() { return ( m_originEmcShower != 0 ); }
48 bool isMucTrackValid() { return ( m_originMucTrack != 0 ); }
49 bool isExtTrackValid() { return ( m_originExtTrack != 0 ); }
50
51 // pointer to sub detector infomation
52
53 RecMdcTrack* mdcTrack() { return m_originMdcTrack; }
54 RecMdcKalTrack* mdcKalTrack() { return m_originMdcKalTrack; }
55 RecMdcDedx* mdcDedx() { return m_originMdcDedx; }
56 RecExtTrack* extTrack() { return m_originExtTrack; }
57 SmartRefVector<RecTofTrack> tofTrack() { return m_originTofTrack; }
58 RecEmcShower* emcShower() { return m_originEmcShower; }
59 RecMucTrack* mucTrack() { return m_originMucTrack; }
60
61 // set Track ID, Particle ID and Data Quality
62
63 void setTrackId( const int trkId ) { m_trackId = trkId; }
64 void setPartId( const int partId ) { m_partId = partId; }
65 void setQuality( const int quality ) { m_quality = quality; }
66
67 void tagElectron() { m_partId |= 0x01; }
68 void tagMuon() { m_partId |= 0x02; }
69 void tagPion() { m_partId |= 0x04; }
70 void tagKaon() { m_partId |= 0x08; }
71 void tagProton() { m_partId |= 0x10; }
72
73 // set sub detector pointer
74
75 void setMdcTrack( const RecMdcTrack* trk ) { m_originMdcTrack = trk; }
76 void setMdcKalTrack( const RecMdcKalTrack* trk ) { m_originMdcKalTrack = trk; }
77 void setMdcDedx( const RecMdcDedx* trk ) { m_originMdcDedx = trk; }
78 void setExtTrack( const RecExtTrack* trk ) { m_originExtTrack = trk; }
79 void setTofTrack( const SmartRefVector<RecTofTrack> trk ) { m_originTofTrack = trk; }
80 void addTofTrack( const SmartRef<RecTofTrack> trk ) { m_originTofTrack.push_back( trk ); }
81 void setEmcShower( const RecEmcShower* shower ) { m_originEmcShower = shower; }
82 void setMucTrack( const RecMucTrack* trk ) { m_originMucTrack = trk; }
83
84 // assign operator
85
87
88private:
89 int m_trackId;
90 // Pid: 0x01 - electron, 0x02 - muon, 0x04 - pion, 0x08 - kaon, 0x10 - proton
91 int m_partId;
92 // data quality: 1 - very good, 2 - available, 3 - normal
93 int m_quality;
94
95 SmartRef<RecMdcTrack> m_originMdcTrack;
96 SmartRef<RecMdcKalTrack> m_originMdcKalTrack;
97 SmartRef<RecMdcDedx> m_originMdcDedx;
98 SmartRef<RecExtTrack> m_originExtTrack;
99 SmartRefVector<RecTofTrack> m_originTofTrack;
100 SmartRef<RecEmcShower> m_originEmcShower;
101 SmartRef<RecMucTrack> m_originMucTrack;
102};
103
104typedef ObjectVector<EvtRecTrack> EvtRecTrackCol;
105
106typedef EvtRecTrackCol::iterator EvtRecTrackIterator;
107
108#endif
const CLID & CLID_EvtRecTrack
EvtRecTrackCol::iterator EvtRecTrackIterator
ObjectVector< EvtRecTrack > EvtRecTrackCol
const CLID & CLID_EvtRecTrack
void setTofTrack(const SmartRefVector< RecTofTrack > trk)
void setMdcKalTrack(const RecMdcKalTrack *trk)
SmartRefVector< RecTofTrack > tofTrack()
void setEmcShower(const RecEmcShower *shower)
void addTofTrack(const SmartRef< RecTofTrack > trk)
EvtRecTrack & operator=(const EvtRecTrack &)