00001 #ifndef TOFHITSTATUS_H 00002 #define TOFHITSTATUS_H 00003 00004 #include "DstEvent/DstTofTrack.h" 00005 00006 class TofHitStatus { 00007 00008 public: 00009 00010 TofHitStatus(); 00011 virtual ~TofHitStatus() {} 00012 00013 void init(); 00014 TofHitStatus& operator=(const DstTofTrack& source); 00015 TofHitStatus& operator=(const TofHitStatus& source); 00016 // TofHitStatus& operator+(const TofHitStatus& source1, const TofHitStatus& source2 ) 00017 00018 public: 00019 00020 unsigned int value() const { return m_status; } 00021 // void status( const bool raw, bool readout, bool counter, bool cluster,bool barrel, bool east, const unsigned int layer, unsigned int ncounter, unsigned int neast, unsigned int nwest ) const; 00022 bool is_raw() const { return m_raw; } 00023 bool is_readout() const { return m_readout; } 00024 bool is_counter() const { return m_counter; } 00025 bool is_cluster() const { return m_cluster; } 00026 bool is_barrel() const { return m_barrel; } 00027 bool is_east() const { return m_east; } 00028 unsigned int layer() const { return m_layer; } 00029 bool is_overflow() const { return m_overflow; } 00030 bool is_multihit() const { return m_multihit; } 00031 unsigned int ncounter() const { return m_ncounter; } 00032 unsigned int neast() const { return m_neast; } 00033 unsigned int nwest() const { return m_nwest; } 00034 bool is_mrpc() const { return m_mrpc; } 00035 00036 static bool is_raw( unsigned int status ); 00037 static bool is_readout( unsigned int status ); 00038 static bool is_counter( unsigned int status ); 00039 static bool is_cluster( unsigned int status ); 00040 static bool is_barrel( unsigned int status ); 00041 static bool is_east( unsigned int status ); 00042 static unsigned int layer( unsigned int status ); 00043 static bool is_overflow( unsigned int status ); 00044 static bool is_multihit( unsigned int status ); 00045 static unsigned int ncounter( unsigned int status ); 00046 static unsigned int neast( unsigned int status ); 00047 static unsigned int nwest( unsigned int status ); 00048 static unsigned int part( unsigned int status ); 00049 static bool is_mrpc( unsigned int status ); 00050 00051 public: 00052 00053 void setStatus( unsigned int status ); 00054 void setRaw( bool raw ); 00055 void setReadout( bool readout ); 00056 void setCounter( bool counter ); 00057 void setCluster( bool cluster ); 00058 void setBarrel( bool barrel ); 00059 void setEast( bool east ); 00060 void setLayer( unsigned int layer ); 00061 void setOverflow( bool overflow ); 00062 void setMultihit( bool multihit ); 00063 void setNCounter( unsigned int ncounter ); 00064 void setNEast( unsigned int neast ); 00065 void setNWest( unsigned int nwest ); 00066 void setMRPC( bool mrpc ); 00067 00068 void setBarrelCluster( unsigned int layer ); 00069 void setBarrelCounter( unsigned int layer ); 00070 void setBarrelReadout( unsigned int layer, bool east ); 00071 void setBarrelRaw( unsigned int layer, bool east ); 00072 void setEndcapCluster( bool east ); 00073 void setEndcapRaw( bool east ); 00074 void setMRPCReadout( bool east ); 00075 void setMRPCCluster( bool cluster, bool east ); 00076 void setNoHit(); 00077 00078 private: 00079 00080 unsigned int m_status; 00081 bool m_raw; 00082 bool m_readout; 00083 bool m_counter; 00084 bool m_cluster; 00085 bool m_barrel; 00086 bool m_east; 00087 unsigned int m_layer; 00088 bool m_overflow; 00089 bool m_multihit; 00090 unsigned int m_ncounter; 00091 unsigned int m_neast; 00092 unsigned int m_nwest; 00093 bool m_mrpc; 00094 00095 static const unsigned int Raw_Index = 0; 00096 static const unsigned int Raw_Mask = 0x00000001; 00097 static const unsigned int Readout_Index = 1; 00098 static const unsigned int Readout_Mask = 0x00000002; 00099 static const unsigned int Counter_Index = 2; 00100 static const unsigned int Counter_Mask = 0x00000004; 00101 static const unsigned int Cluster_Index = 3; 00102 static const unsigned int Cluster_Mask = 0x00000008; 00103 static const unsigned int Barrel_Index = 4; 00104 static const unsigned int Barrel_Mask = 0x00000010; 00105 static const unsigned int East_Index = 5; 00106 static const unsigned int East_Mask = 0x00000020; 00107 static const unsigned int Layer_Index = 6; 00108 static const unsigned int Layer_Mask = 0x000000C0; 00109 static const unsigned int Overflow_Index = 8; 00110 static const unsigned int Overflow_Mask = 0x00000100; 00111 static const unsigned int Multihit_Index = 9; 00112 static const unsigned int Multihit_Mask = 0x00000200; 00113 static const unsigned int Ncounter_Index = 12; 00114 static const unsigned int Ncounter_Mask = 0x0000F000; 00115 static const unsigned int Neast_Index = 16; 00116 static const unsigned int Neast_Mask = 0x000F0000; 00117 static const unsigned int Nwest_Index = 20; 00118 static const unsigned int Nwest_Mask = 0x00F00000; 00119 static const unsigned int N_Mask = 0x0000000F; 00120 static const unsigned int MRPC_Index = 24; 00121 static const unsigned int MRPC_Mask = 0x01000000; 00122 static const unsigned int N_MRPC = 0x00000001; 00123 00124 }; 00125 #endif //TOFHITSTATUS_H