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

Go to the documentation of this file.
00001 #include "Identifier/EmcID.h"
00002 #include <assert.h>
00003 
00004 EmcID::EmcID(void) {
00005 }
00006 
00007 EmcID::~EmcID(void) {
00008 }
00009 
00010 //----------------------------------------------------------------------------
00011 bool EmcID::values_ok (const unsigned int barrel_ec,
00012                        const unsigned int theta_module,
00013                        const unsigned int phi_module
00014                        ) {
00015    // Check values
00016    // unsigned int >= 0, this is definitely true.
00017    // Omit the compare with MIN(0) to avoid warnings in compile.
00018    if (barrel_ec  > BARREL_EC_MAX ) return false;
00019    
00020    if ( barrel_ec == BARREL ) {
00021       if ( phi_module    > PHI_BARREL_MAX )     return false;
00022       if ( theta_module  > THETA_BARREL_MAX )   return false;
00023    }
00024    else {  // for endcap
00025       if ( theta_module  > THETA_ENDCAP_MAX  )  return false; 
00026       if ( phi_module    > getPHI_ENDCAP_MAX(theta_module)  )  return false;
00027    }
00028    return true;
00029 }
00030 
00031 //----------------------------------------------------------------------------
00032 bool  EmcID::is_barrel (const Identifier& id) {
00033    unsigned int pos = (id.get_value() & EmcID::BARREL_EC_MASK) >>  EmcID::BARREL_EC_INDEX;
00034    return (pos == BARREL) ? true : false ;
00035 }
00036 
00037 //----------------------------------------------------------------------------
00038 unsigned int EmcID::barrel_ec (const Identifier& id) {
00039    return ((id.get_value() & EmcID::BARREL_EC_MASK) >>  EmcID::BARREL_EC_INDEX);  
00040 }
00041 
00042 //----------------------------------------------------------------------------
00043 unsigned int EmcID::theta_module (const Identifier& id) {
00044   return (id.get_value() & EmcID::THETA_MASK) >>  EmcID::THETA_INDEX;  
00045 }
00046 
00047 //----------------------------------------------------------------------------
00048 unsigned int EmcID::phi_module (const Identifier& id) {
00049   return (id.get_value() & EmcID::PHI_MASK) >>  EmcID::PHI_INDEX;  
00050 }
00051 
00052 //----------------------------------------------------------------------------
00053 unsigned int EmcID::theta_module_max  (const Identifier& id) {
00054    if (is_barrel(id)) {
00055       return THETA_BARREL_MAX;
00056    } else {
00057       return THETA_ENDCAP_MAX;
00058    }  
00059 }
00060 
00061 //----------------------------------------------------------------------------
00062 unsigned int EmcID::phi_module_max    (const Identifier& id) {
00063    if (is_barrel(id)) {
00064       return PHI_BARREL_MAX;
00065    } else {
00066       return getPHI_ENDCAP_MAX(theta_module(id));
00067    } 
00068 }
00069 
00070 //----------------------------------------------------------------------------
00071 Identifier EmcID::crystal_id (const unsigned int barrel_ec,
00072                               const unsigned int theta_module,   
00073                               const unsigned int phi_module 
00074                               ) {
00075    assert ( values_ok(barrel_ec, theta_module, phi_module) );
00076    unsigned int value = (EMC_ID << EMC_INDEX) | (barrel_ec << BARREL_EC_INDEX)|
00077      (theta_module << THETA_INDEX) | (phi_module << PHI_INDEX);
00078    return Identifier(value); 
00079 }
00080 
00081 unsigned int EmcID::getIntID (const unsigned int barrel_ec,
00082                             const unsigned int theta_module,
00083                             const unsigned int phi_module
00084                             ) {
00085    assert ( values_ok(barrel_ec, theta_module, phi_module) ); 
00086    unsigned int value = (EMC_ID << EMC_INDEX) | (barrel_ec << BARREL_EC_INDEX)|
00087                       (theta_module << THETA_INDEX) | (phi_module << PHI_INDEX);
00088    return value;
00089 }
00090  
00091 unsigned int EmcID::getTHETA_BARREL_MAX()
00092 {
00093    return THETA_BARREL_MAX;   
00094 }
00095 unsigned int EmcID::getTHETA_BARREL_MIN()
00096 {
00097    return THETA_BARREL_MIN;
00098 }
00099 unsigned int EmcID::getTHETA_ENDCAP_MAX()
00100 {
00101    return THETA_ENDCAP_MAX;
00102 }
00103 unsigned int EmcID::getTHETA_ENDCAP_MIN()
00104 {
00105    return THETA_ENDCAP_MIN;
00106 }
00107 unsigned int EmcID::getPHI_BARREL_MAX()
00108 {
00109    return PHI_BARREL_MAX;
00110 }
00111 unsigned int EmcID::getPHI_BARREL_MIN()
00112 {
00113    return PHI_BARREL_MIN;
00114 }
00115 unsigned int EmcID::getPHI_ENDCAP_MAX(const unsigned int theta)
00116 {
00117    if(theta==0 || theta==1) { 
00118       return PHI_ENDCAP_MAX1; 
00119    }
00120    if(theta==2 || theta==3) {
00121       return PHI_ENDCAP_MAX2;
00122    }
00123    if(theta==4 || theta==5) {
00124       return PHI_ENDCAP_MAX3;
00125    }
00126    return 0; //no available number
00127 }
00128 unsigned int EmcID::getPHI_ENDCAP_MIN()
00129 {
00130    return PHI_ENDCAP_MIN;
00131 }
00132 unsigned int EmcID::getBARREL_EC_MAX()
00133 {
00134    return BARREL_EC_MAX;
00135 }
00136 unsigned int EmcID::getBARREL_EC_MIN()
00137 {
00138    return BARREL_EC_MIN;
00139 }
00140 
00141 unsigned int EmcID::getENDCAP_EAST()
00142 {
00143    return ENDCAP_EAST;
00144 }
00145 
00146 unsigned int EmcID::getBARREL()
00147 {
00148    return BARREL;
00149 }
00150 
00151 unsigned int EmcID::getENDCAP_WEST()
00152 {
00153       return ENDCAP_WEST;
00154 }

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