BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TofID.cxx
Go to the documentation of this file.
1#include "Identifier/TofID.h"
2#include <assert.h>
3#include <iostream>
4
5TofID::TofID( void ) {}
6
7TofID::~TofID( void ) {}
8
9//----------------------------------------------------------------------------
10bool TofID::values_ok( const unsigned int barrel_ec, const unsigned int layer,
11 const unsigned int phi_module, const unsigned int end ) {
12 if ( barrel_ec > BARREL_EC_MAX ) return false;
13 if ( BARREL_EC_MIN == barrel_ec || BARREL_EC_MIN == barrel_ec )
14 {
15 if ( layer > LAYER_ENDCAP_MAX ) return false;
16 }
17 else
18 {
19 if ( layer > LAYER_BARREL_MAX ) return false;
20 }
21 if ( end > 1 ) return false;
22
23 return true;
24}
25
26//-----------------------------------------------------------------------------
27bool TofID::values_ok( const unsigned int barrel_ec, const unsigned int endcap,
28 const unsigned int module, const unsigned int strip,
29 const unsigned int end ) {
30 if ( barrel_ec != BARREL_EC_MRPC ) return false;
31 if ( endcap > ENDCAP_MRPC_MAX ) return false;
32 if ( module > MODULE_MRPC_MAX ) return false;
33 if ( strip > STRIP_MRPC_MAX ) return false;
34 if ( end > 1 ) return false;
35
36 return true;
37}
38
39//----------------------------------------------------------------------------
40bool TofID::is_barrel( const Identifier& id ) {
41 unsigned int pos = ( id.get_value() & TofID::BARREL_EC_MASK ) >> TofID::BARREL_EC_INDEX;
42 return ( pos == BARREL_EC_MAX || pos == BARREL_EC_MIN || pos == BARREL_EC_MRPC ) ? false
43 : true;
44}
45
46bool TofID::is_barrel( const unsigned int barrel_ec ) {
47 return ( barrel_ec == BARREL_EC_MAX || barrel_ec == BARREL_EC_MIN ||
48 barrel_ec == BARREL_EC_MRPC )
49 ? false
50 : true;
51}
52
53//----------------------------------------------------------------------------
54int TofID::barrel_ec( const Identifier& id ) {
55 return ( ( id.get_value() & TofID::BARREL_EC_MASK ) >> TofID::BARREL_EC_INDEX );
56}
57
58//----------------------------------------------------------------------------
59int TofID::layer( const Identifier& id ) {
60 if ( ( TofID::is_mrpc( id ) ) ) { return -999; }
61 return ( ( id.get_value() & TofID::LAYER_MASK ) >> TofID::LAYER_INDEX );
62}
63
64//----------------------------------------------------------------------------
65int TofID::phi_module( const Identifier& id ) {
66 if ( ( TofID::is_mrpc( id ) ) ) { return -999; }
67 return ( ( id.get_value() & TofID::PHI_MASK ) >> TofID::PHI_INDEX );
68}
69
70//----------------------------------------------------------------------------
71int TofID::end( const Identifier& id ) {
72 return ( ( id.get_value() & TofID::END_MASK ) >> TofID::END_INDEX );
73}
74
75//----------------------------------------------------------------------------
76int TofID::layer_max( const Identifier& id ) {
77 if ( is_barrel( id ) ) { return LAYER_BARREL_MAX; }
78 else { return LAYER_ENDCAP_MAX; }
79}
80
81//----------------------------------------------------------------------------
83 if ( is_barrel( id ) ) { return PHI_BARREL_MAX; }
84 else { return PHI_ENDCAP_MAX; }
85}
86
87//----------------------------------------------------------------------------
88bool TofID::is_scin( const Identifier& id ) {
89 unsigned int pos = ( id.get_value() & TofID::BARREL_EC_MASK ) >> TofID::BARREL_EC_INDEX;
90 return ( pos == BARREL_EC_MRPC ) ? false : true;
91}
92
93bool TofID::is_scin( const unsigned int barrel_ec ) {
94 return ( barrel_ec < BARREL_EC_MRPC ) ? true : false;
95}
96
97//----------------------------------------------------------------------------
98bool TofID::is_mrpc( const Identifier& id ) {
99 unsigned int pos = ( id.get_value() & TofID::BARREL_EC_MASK ) >> TofID::BARREL_EC_INDEX;
100 return ( pos == BARREL_EC_MRPC ) ? true : false;
101}
102
103bool TofID::is_mrpc( const unsigned int barrel_ec ) {
104 return ( barrel_ec == BARREL_EC_MRPC ) ? true : false;
105}
106
107//----------------------------------------------------------------------------
108int TofID::endcap( const Identifier& id ) {
109 if ( ( TofID::is_scin( id ) ) ) { return -999; }
110 return ( ( id.get_value() & TofID::ENDCAP_MASK ) >> TofID::ENDCAP_INDEX );
111}
112
113//----------------------------------------------------------------------------
114int TofID::module( const Identifier& id ) {
115 if ( ( TofID::is_scin( id ) ) ) { return -999; }
116 return ( ( id.get_value() & TofID::MODULE_MASK ) >> TofID::MODULE_INDEX );
117}
118
119//----------------------------------------------------------------------------
120int TofID::strip( const Identifier& id ) {
121 if ( ( TofID::is_scin( id ) ) ) { return -999; }
122 return ( ( id.get_value() & TofID::STRIP_MASK ) >> TofID::STRIP_INDEX );
123}
124
125//----------------------------------------------------------------------------
127 assert( values_ok( barrel_ec, layer, phi_module, end ) );
128 unsigned int value = ( BesDetectorID::TOF_ID << TOF_INDEX ) |
129 ( barrel_ec << BARREL_EC_INDEX ) | ( layer << LAYER_INDEX ) |
130 ( phi_module << PHI_INDEX ) | ( end << END_INDEX );
131 return Identifier( value );
132}
133
134Identifier TofID::cell_id( int value ) { return Identifier( value ); }
135
136//----------------------------------------------------------------------------
138 assert( values_ok( barrel_ec, endcap, module, strip, end ) );
139 unsigned int value = ( BesDetectorID::TOF_ID << TOF_INDEX ) |
140 ( barrel_ec << BARREL_EC_INDEX ) | ( endcap << ENDCAP_INDEX ) |
141 ( module << MODULE_INDEX ) | ( strip << STRIP_INDEX ) |
142 ( end << END_INDEX );
143 return Identifier( value );
144}
145
146//----------------------------------------------------------------------------
147unsigned int TofID::getIntID( int barrel_ec, int layer, int phi_module, int end ) {
148 unsigned int value = ( BesDetectorID::TOF_ID << TOF_INDEX ) |
149 ( barrel_ec << BARREL_EC_INDEX ) | ( layer << LAYER_INDEX ) |
150 ( phi_module << PHI_INDEX ) | ( end << END_INDEX );
151 return value;
152}
153
154//----------------------------------------------------------------------------
155unsigned int TofID::getIntID( int barrel_ec, int endcap, int module, int strip, int end ) {
156 unsigned int value = ( BesDetectorID::TOF_ID << TOF_INDEX ) |
157 ( barrel_ec << BARREL_EC_INDEX ) | ( endcap << ENDCAP_INDEX ) |
158 ( module << MODULE_INDEX ) | ( strip << STRIP_INDEX ) |
159 ( end << END_INDEX );
160 return value;
161}
162
163unsigned int TofID::getLAYER_BARREL_MAX() { return LAYER_BARREL_MAX; }
164
165unsigned int TofID::getLAYER_ENDCAP_MAX() { return LAYER_ENDCAP_MAX; }
166
167unsigned int TofID::getPHI_BARREL_MAX() { return PHI_BARREL_MAX; }
168
169unsigned int TofID::getPHI_ENDCAP_MAX() { return PHI_ENDCAP_MAX; }
170unsigned int TofID::getBARREL_EC_MAX() { return BARREL_EC_MAX; }
171
172unsigned int TofID::getBARREL_EC_MIN() { return BARREL_EC_MIN; }
173
174unsigned int TofID::getBARREL_EC_MRPC() { return BARREL_EC_MRPC; }
175
176unsigned int TofID::getENDCAP_MRPC_MAX() { return ENDCAP_MRPC_MAX; }
177
178unsigned int TofID::getMODULE_MRPC_MAX() { return MODULE_MRPC_MAX; }
179
180unsigned int TofID::getSTRIP_MRPC_MAX() { return STRIP_MRPC_MAX; }
static int endcap(const Identifier &id)
Definition TofID.cxx:108
static int strip(const Identifier &id)
Definition TofID.cxx:120
static Identifier cell_id(int barrel_ec, int layer, int phi_module, int end)
For a single crystal.
Definition TofID.cxx:126
static value_type getENDCAP_MRPC_MAX()
Definition TofID.cxx:176
static bool is_scin(const Identifier &id)
Definition TofID.cxx:88
~TofID()
destructor
Definition TofID.cxx:7
static value_type getMODULE_MRPC_MAX()
Definition TofID.cxx:178
static bool values_ok(const unsigned int barrel_ec, const unsigned int layer, const unsigned int phi_module, const unsigned int end)
Definition TofID.cxx:10
static int end(const Identifier &id)
Definition TofID.cxx:71
static value_type getPHI_BARREL_MAX()
Definition TofID.cxx:167
static value_type getPHI_ENDCAP_MAX()
Definition TofID.cxx:169
static value_type getSTRIP_MRPC_MAX()
Definition TofID.cxx:180
static value_type getBARREL_EC_MIN()
Definition TofID.cxx:172
static value_type getBARREL_EC_MAX()
Definition TofID.cxx:170
static bool is_barrel(const Identifier &id)
Test for barrel.
Definition TofID.cxx:40
TofID()
constructor
Definition TofID.cxx:5
static bool is_mrpc(const Identifier &id)
Definition TofID.cxx:98
static int phi_module(const Identifier &id)
Definition TofID.cxx:65
static int barrel_ec(const Identifier &id)
Values of different levels (failure returns 0).
Definition TofID.cxx:54
int phi_module_max(const Identifier &id)
Max/Min values for each field (error returns -999).
Definition TofID.cxx:82
static value_type getLAYER_ENDCAP_MAX()
Definition TofID.cxx:165
static value_type getBARREL_EC_MRPC()
Definition TofID.cxx:174
static value_type getIntID(int barrel_ec, int layer, int phi_module, int end)
Definition TofID.cxx:147
static int layer(const Identifier &id)
Definition TofID.cxx:59
int layer_max(const Identifier &id)
Definition TofID.cxx:76
static int module(const Identifier &id)
Definition TofID.cxx:114
static value_type getLAYER_BARREL_MAX()
Definition TofID.cxx:163