/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/DetectorDescription/Identifier/Identifier-00-02-17/src/TofID.cxx

Go to the documentation of this file.
00001 #include "Identifier/TofID.h"
00002 #include <assert.h>
00003 #include <iostream>
00004 
00005 
00006 TofID::TofID(void) {
00007 }
00008 
00009 TofID::~TofID(void) {
00010 }
00011 
00012 //----------------------------------------------------------------------------
00013 bool TofID::values_ok ( const unsigned int barrel_ec,  
00014                         const unsigned int layer, 
00015                         const unsigned int phi_module,
00016                         const unsigned int end
00017                         ) {
00018   if ( barrel_ec > BARREL_EC_MAX ) return false;
00019   if ( BARREL_EC_MIN == barrel_ec || BARREL_EC_MIN == barrel_ec) {
00020     if ( layer > LAYER_ENDCAP_MAX ) return false;
00021   }
00022   else {
00023     if ( layer > LAYER_BARREL_MAX  ) return false;
00024   }
00025   if( end > 1 ) return false;
00026 
00027   return true;
00028 }
00029 
00030 
00031 //-----------------------------------------------------------------------------
00032 bool TofID::values_ok ( const unsigned int barrel_ec,
00033                         const unsigned int endcap,
00034                         const unsigned int module,
00035                         const unsigned int strip,
00036                         const unsigned int end
00037                         ) {
00038   if( barrel_ec != BARREL_EC_MRPC ) return false;
00039   if( endcap > ENDCAP_MRPC_MAX ) return false;
00040   if( module > MODULE_MRPC_MAX ) return false;
00041   if( strip  > STRIP_MRPC_MAX  ) return false;
00042   if( end    > 1               ) return false;
00043 
00044   return true;
00045 }
00046 
00047 
00048 //----------------------------------------------------------------------------
00049 bool  TofID::is_barrel (const Identifier& id) {
00050   unsigned int pos = (id.get_value() & TofID::BARREL_EC_MASK) >>  TofID::BARREL_EC_INDEX;
00051   return (pos == BARREL_EC_MAX || pos == BARREL_EC_MIN || pos == BARREL_EC_MRPC) ? false : true;
00052 }
00053 
00054 
00055 bool  TofID::is_barrel (const unsigned int barrel_ec) {
00056   return (barrel_ec == BARREL_EC_MAX || barrel_ec == BARREL_EC_MIN || barrel_ec == BARREL_EC_MRPC) ? false : true;
00057 }
00058 
00059 
00060 //----------------------------------------------------------------------------
00061 int TofID::barrel_ec (const Identifier& id ) {
00062   return ((id.get_value() & TofID::BARREL_EC_MASK) >>  TofID::BARREL_EC_INDEX);
00063 }
00064 
00065 //----------------------------------------------------------------------------
00066 int TofID::layer (const Identifier& id) {
00067   if( ( TofID::is_mrpc( id ) ) ) { return -999; }
00068   return ((id.get_value() & TofID::LAYER_MASK) >>  TofID::LAYER_INDEX);
00069 }
00070 
00071 
00072 //----------------------------------------------------------------------------
00073 int TofID::phi_module (const Identifier& id) {
00074   if( ( TofID::is_mrpc( id ) ) ) { return -999; }
00075   return ((id.get_value() & TofID::PHI_MASK) >>  TofID::PHI_INDEX);
00076 }
00077 
00078 //----------------------------------------------------------------------------
00079 int TofID::end(const Identifier& id) {
00080   return ((id.get_value() & TofID::END_MASK) >> TofID::END_INDEX);
00081 }
00082 
00083 //----------------------------------------------------------------------------
00084 int TofID::layer_max  (const Identifier& id) {
00085    if (is_barrel(id)) {
00086     return LAYER_BARREL_MAX;
00087   } else {
00088     return LAYER_ENDCAP_MAX;
00089   }  
00090 }
00091 
00092 //----------------------------------------------------------------------------
00093 int TofID::phi_module_max    (const Identifier& id) {
00094   if (is_barrel(id)) {
00095     return PHI_BARREL_MAX;
00096   } else {
00097     return PHI_ENDCAP_MAX;
00098   } 
00099 }
00100 
00101 //----------------------------------------------------------------------------
00102 bool TofID::is_scin( const Identifier& id ) {
00103   unsigned int pos = (id.get_value() & TofID::BARREL_EC_MASK) >>  TofID::BARREL_EC_INDEX;
00104   return (pos == BARREL_EC_MRPC) ? false : true;
00105 }
00106 
00107 
00108 bool TofID::is_scin(const unsigned int barrel_ec ) {
00109   return (barrel_ec < BARREL_EC_MRPC) ? true : false;
00110 }
00111 
00112 //----------------------------------------------------------------------------
00113 bool TofID::is_mrpc( const Identifier& id ) {
00114   unsigned int pos = (id.get_value() & TofID::BARREL_EC_MASK) >>  TofID::BARREL_EC_INDEX;
00115   return (pos == BARREL_EC_MRPC) ? true : false;
00116 }
00117 
00118 
00119 bool TofID::is_mrpc(const unsigned int barrel_ec ) {
00120   return (barrel_ec == BARREL_EC_MRPC) ? true : false;
00121 }
00122 
00123 //----------------------------------------------------------------------------
00124 int TofID::endcap( const Identifier& id ) {
00125   if( ( TofID::is_scin( id ) ) ) { return -999; }
00126   return ((id.get_value() & TofID::ENDCAP_MASK) >>  TofID::ENDCAP_INDEX);
00127 }
00128 
00129 //----------------------------------------------------------------------------
00130 int TofID::module( const Identifier& id ) {
00131   if( ( TofID::is_scin( id ) ) ) { return -999; }
00132   return ((id.get_value() & TofID::MODULE_MASK) >>  TofID::MODULE_INDEX);
00133 }
00134 
00135 //----------------------------------------------------------------------------
00136 int TofID::strip( const Identifier& id ) {
00137   if( ( TofID::is_scin( id ) ) ) { return -999; }
00138   return ((id.get_value() & TofID::STRIP_MASK) >>  TofID::STRIP_INDEX);
00139 }
00140 
00141 
00142 //----------------------------------------------------------------------------
00143 Identifier TofID::cell_id ( int barrel_ec,
00144                             int layer,   
00145                             int phi_module,
00146                             int end 
00147                             ) {
00148   assert ( values_ok(barrel_ec, layer, phi_module, end) ); 
00149   unsigned int value = (BesDetectorID::TOF_ID << TOF_INDEX) | 
00150                        (barrel_ec << BARREL_EC_INDEX)|
00151                        (layer << LAYER_INDEX) | (phi_module << PHI_INDEX) | 
00152                        (end << END_INDEX);
00153   return Identifier(value); 
00154 }
00155 
00156 
00157 Identifier TofID::cell_id(int value) {
00158   return Identifier(value);
00159 }
00160 
00161 
00162 //----------------------------------------------------------------------------
00163 Identifier TofID::cell_id ( int barrel_ec,
00164                             int endcap,
00165                             int module,
00166                             int strip,
00167                             int end
00168                             ) {
00169   assert ( values_ok(barrel_ec, endcap, module, strip, end) );
00170   unsigned int value = (BesDetectorID::TOF_ID << TOF_INDEX) |
00171                        (barrel_ec << BARREL_EC_INDEX)|
00172                        (endcap << ENDCAP_INDEX) | (module << MODULE_INDEX) |
00173                        (strip << STRIP_INDEX) | (end << END_INDEX);
00174   return Identifier(value);
00175 }
00176 
00177 //----------------------------------------------------------------------------
00178 unsigned int TofID::getIntID ( int barrel_ec,
00179                                int layer,
00180                                int phi_module,
00181                                int end
00182                                )
00183 {
00184      unsigned int value = (BesDetectorID::TOF_ID << TOF_INDEX) |
00185                      (barrel_ec << BARREL_EC_INDEX)|
00186                      (layer << LAYER_INDEX) | (phi_module << PHI_INDEX) |
00187                      (end << END_INDEX);
00188      return value;
00189 }
00190 
00191 
00192 //----------------------------------------------------------------------------
00193 unsigned int TofID::getIntID ( int barrel_ec,
00194                                int endcap,
00195                                int module,
00196                                int strip,
00197                                int end
00198                                ) {
00199   unsigned int value = (BesDetectorID::TOF_ID << TOF_INDEX) |
00200                        (barrel_ec << BARREL_EC_INDEX)|
00201                        (endcap << ENDCAP_INDEX) | (module << MODULE_INDEX) |
00202                        (strip << STRIP_INDEX) | (end << END_INDEX);
00203   return value;
00204 }
00205 
00206 
00207 unsigned int TofID::getLAYER_BARREL_MAX()
00208 {
00209      return LAYER_BARREL_MAX;
00210 }
00211 
00212 unsigned int TofID::getLAYER_ENDCAP_MAX()
00213 {
00214      return LAYER_ENDCAP_MAX;
00215 }
00216 
00217 unsigned int TofID::getPHI_BARREL_MAX()
00218 {
00219      return PHI_BARREL_MAX;
00220 }
00221 
00222 unsigned int TofID::getPHI_ENDCAP_MAX()
00223 {
00224      return PHI_ENDCAP_MAX;
00225 }
00226 unsigned int TofID::getBARREL_EC_MAX()
00227 {
00228      return BARREL_EC_MAX;
00229 }
00230 
00231 unsigned int TofID::getBARREL_EC_MIN()
00232 {
00233      return BARREL_EC_MIN;
00234 }
00235 
00236 unsigned int TofID::getBARREL_EC_MRPC()
00237 {
00238   return BARREL_EC_MRPC;
00239 }
00240 
00241 unsigned int TofID::getENDCAP_MRPC_MAX()
00242 {
00243   return ENDCAP_MRPC_MAX;
00244 }
00245 
00246 unsigned int TofID::getMODULE_MRPC_MAX()
00247 {
00248   return MODULE_MRPC_MAX;
00249 }
00250 
00251 unsigned int TofID::getSTRIP_MRPC_MAX()
00252 {
00253   return STRIP_MRPC_MAX;
00254 }

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