![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
15 ATH_MSG_INFO(
"Request to reinitialize not satisfied - tags have not changed");
29 ATH_MSG_ERROR(
" initialize_from_dict - cannot access MuonSpectrometer dictionary ");
40 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'doubletR' field ");
48 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'doubletZ' field ");
56 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'doubletPhi' field ");
64 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'rpcGasGap' field ");
72 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'rpcMeasuresPhi' field ");
80 ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'rpcStrip' field ");
107 ATH_MSG_DEBUG(
" RPC decode index and bit fields for each level: " << std::endl
127 if (atlasDict->
get_label_value(
"subdet",
"MuonSpectrometer", muonField)) {
128 ATH_MSG_ERROR(
"Could not get value for label 'MuonSpectrometer' of field 'subdet' in dictionary " << atlasDict->
m_name);
138 if (muon_range.
size() > 0) {
139 ATH_MSG_INFO(
"MultiRange built successfully to doubletR: "
140 <<
"MultiRange size is " << muon_range.
size());
148 detectorElement_region.
add(muonField);
149 Range detectorElement_prefix;
151 if (muon_detectorElement_range.
size() > 0) {
152 ATH_MSG_INFO(
"MultiRange built successfully to detectorElement: "
153 <<
"DetectorElement MultiRange size is " << muon_detectorElement_range.
size());
155 ATH_MSG_ERROR(
"Muon RPC ReadoutElement MultiRange is empty");
161 rpc_region.
add(muonField);
165 if (muon_channel_range.
size() > 0) {
166 ATH_MSG_INFO(
"MultiRange built successfully to rpcStrip: "
167 <<
"MultiRange size is " << muon_channel_range.
size());
178 for (
int i = 0;
i < (
int)muon_range.
size(); ++
i) {
189 for (
int j = 0; j < (
int)muon_detectorElement_range.
size(); ++j) {
190 const Range&
range = muon_detectorElement_range[j];
195 ATH_MSG_DEBUG(
"detectorElement field size is " << (
int)
range.cardinality() <<
" field index = " << j);
200 for (
int j = 0; j < (
int)muon_channel_range.
size(); ++j) {
206 ATH_MSG_DEBUG(
"channel field size is " << (
int)
range.cardinality() <<
" field index = " << j);
221 ATH_MSG_ERROR(
"MDT MultiRange ID is empty for detector elements");
240 ATH_MSG_INFO(
"Initializing RPC hash indices for finding neighbors ... ");
250 if (
range.match(expId)) {
264 ATH_MSG_ERROR(
"No maximum number of RPC gas gaps was retrieved");
275 for (
unsigned int i = 0;
i < hash_max; ++
i) {
281 for (
unsigned int i = 0;
i < hash_max; ++
i) {
294 hash_id = itr->second;
313 hash_id = itr->second;
341 if (
range.match(expId)) {
365 if (
range.match(expId)) {
384 if (
range.match(expId)) {
400 if (
range.match(expId)) {
416 if (
range.match(expId)) {
432 if (
range.match(expId)) {
448 if (
range.match(expId)) {
464 if (
range.match(expId)) {
480 if (
range.match(expId)) {
496 if (
range.match(expId)) {
512 if (
range.match(expId)) {
528 if (
range.match(expId)) {
544 if (
range.match(expId)) {
560 if (
range.match(expId)) {
576 if (
range.match(expId)) {
592 if (
range.match(expId)) {
771 unsigned int nids = 0;
772 std::set<Identifier>
ids;
782 if (!
ids.insert(doubletZ_id).second)
784 <<
"Please check the dictionary for possible duplication for " <<
id);
785 }
else if (!
ids.insert(
id).second) {
787 <<
" Error: duplicated id for detector element id. nid " << (
int)nids
788 <<
" doubletPhi ID " <<
id);
819 }
catch (
const std::out_of_range&) {
isValid =
false; }
841 }
catch (
const std::out_of_range&) {
isValid =
false; }
848 int measuresPhi)
const {
864 int measuresPhi,
bool&
isValid)
const {
869 }
catch (
const std::out_of_range&) {
isValid =
false; }
890 }
catch (
const std::out_of_range&) {
isValid =
false; }
916 }
catch (
const std::out_of_range&) {
isValid =
false; }
936 }
catch (
const std::out_of_range&) {
isValid =
false; }
941 int measuresPhi,
int strip)
const {
958 int measuresPhi,
int strip,
bool&
isValid)
const {
964 }
catch (
const std::out_of_range&) {
isValid =
false; }
993 }
catch (
const std::out_of_range&) {
isValid =
false; }
1039 }
catch (
const std::out_of_range&) {
isValid =
false; }
1055 }
catch (
const std::out_of_range&) {
isValid =
false; }
1149 if (std::abs(
eta) != 4 && dZ != 3) {
1154 return (dZ == 3 && dP == 2) ||
1155 (std::abs(
eta) == 4 && dZ !=1 && dR != 2 && dP == 2);
IdDictFieldImplementation m_mea_impl
IDENTIFIER_TYPE value_type
bool validStation(int stationName, int technology) const
int stationNameIndex(const std::string &name) const
IdContext detectorElement_context() const
id for detector element
Identifier parentID(const Identifier &id) const
constexpr uint8_t stationPhi
station Phi 1 to 8
MultiRange build_multirange() const
Get MultiRange for full dictionary.
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
bool is_rpc(const Identifier &id) const
Scalar phi() const
phi method
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const override
Create compact id from hash id (return == 0 for OK)
int technologyIndex(const std::string &name) const
std::string show_to_string(void) const
int muon_field_value() const
Identifier elementID(int stationName, int stationEta, int stationPhi, int doubletR) const
Scalar eta() const
pseudorapidity method
bool validChannel(const Identifier &id, int stationName, int stationEta, int stationPhi, int doubletR, int doubletZ, int doubletPhi, int gasGap, int measuresPhi, int strip) const
int doubletZ(const Identifier &id) const
size_type detectorElement_hash_max() const
void add(const Range &range)
IdDictFieldImplementation m_dbr_impl
size_type m_detectorElement_hash_max
IdDictFieldImplementation m_sta_impl
static int stationPhiMin()
void add(element_type value)
int rpc_field_value() const
bool measuresPhi(const Identifier &id) const override
void pack(int value, Identifier &id) const
bool isExtraDetElId(const Identifier &id) const
static int doubletPhiMax()
IdDictFieldImplementation m_dbp_impl
Identifier padID(const Identifier &elementID, int doubletZ, int doubletPhi) const
int stationName(const Identifier &id) const
#define ATH_MSG_VERBOSE(x)
Identifier channelID(int stationName, int stationEta, int stationPhi, int doubletR, int doubletZ, int doubletPhi, int gasGap, int measuresPhi, int strip) const
IdDictFieldImplementation m_phi_impl
IdDictFieldImplementation m_gap_impl
int unpack(Identifier id) const
Identifier manipulation methods.
MultiRange m_full_channel_range
IdDictField * find_field(const std::string &name) const
static int doubletPhiMin()
int gasGap(const Identifier &id) const override
get the hashes
void reset(Identifier &id) const
static int stationPhiMax()
virtual int get_detectorElement_hash(const Identifier &id, IdentifierHash &hash_id) const override
IdDictGroup * find_group(const std::string &group_name) const
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
size_type m_DOUBLETR_INDEX
size_type m_MEASURESPHI_INDEX
int doubletR(const Identifier &id) const
std::unordered_map< Identifier, unsigned int > m_detectorElement_hashes
std::unordered_map< Identifier, unsigned int > m_module_hashes
static int measuresPhiMin()
std::vector< IdDictRegion * > m_regions
Identifier panelID(const Identifier &padID, int gasGap, int measuresPhi) const
MultiRange m_full_detectorElement_range
int strip(const Identifier &id) const
MultiRange m_full_module_range
IdDictFieldImplementation m_dbz_impl
int get_expanded_id(const Identifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
Create expanded id from compact id (return == 0 for OK)
static int measuresPhiMax()
const std::vector< IdDictRegion * > & regions()
IdDictFieldImplementation m_eta_impl
element_type get_minimum() const
void idChannels(const Identifier &id, std::vector< Identifier > &vect) const
size_type m_DOUBLETPHI_INDEX
IdDictFieldImplementation m_muon_impl
int register_dict_tag(const IdDictMgr &dict_mgr, const std::string &dict_name)
Register the file and tag names for a particular IdDict dictionary.
int stationPhi(const Identifier &id) const
int channel(const Identifier &id) const override
int get_label_value(const std::string &field, const std::string &label, int &value) const
const std::string & stationNameString(const int &index) const
std::string print_to_string(Identifier id, const IdContext *context=0) const
or provide the printout in string form
A MultiRange combines several Ranges.
id_vec m_detectorElement_vec
Identifier gapID(const Identifier &padID, int gasGap) const
bool valid(const Identifier &id) const
static int stationEtaMax()
int stationEta(const Identifier &id) const
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
virtual int init_detectorElement_hashes() override
size_type module_hash_max() const
the maximum hash value
element_type get_maximum() const
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
size_type m_TECHNOLOGY_INDEX
bool validElement(const Identifier &id) const
void resetAndSet(const IdDictFieldImplementation &dict, const int new_val, Identifier &id) const
size_type m_DETECTORELEMENT_INDEX
Identifier doubletZID(const Identifier &id) const
IdDictFieldImplementation m_tec_impl
This is the individual specification for the range of one ExpandedIdentifier field.
constexpr uint8_t stationEta
1 to 3
IdDictFieldImplementation m_str_impl
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
static int stationEtaMin()
std::vector< IdDictFieldImplementation > m_implementation
size_type m_DOUBLETZ_INDEX
bool validPad(const Identifier &id) const
int rpcTechnology() const
Utility methods.
int doubletPhi(const Identifier &id) const
virtual int get_module_hash(const Identifier &id, IdentifierHash &hash_id) const override
bool isStNameInTech(const std::string &stationName) const override
The valid element checks converted the identifier to a stationName string in order to assess whether ...
size_type m_CHANNEL_INDEX
const IdDictDictionary * m_dict