|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
   24         ATH_MSG_INFO(
"Request to reinitialize not satisfied - tags have not changed");
 
   38         ATH_MSG_ERROR(
" initialize_from_dict - cannot access MuonSpectrometer dictionary ");
 
   48         ATH_MSG_DEBUG(
"initLevelsFromDict - there are no CSC entries in the dictionary! ");
 
   56         ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'chamberLayer' field ");
 
   64         ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'wireLayer' field ");
 
   72         ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'cscMeasuresPhi' field ");
 
   80         ATH_MSG_ERROR(
"initLevelsFromDict - unable to find 'cscStrip' field ");
 
  105     ATH_MSG_DEBUG(
" CSC decode index and bit fields for each level: " << std::endl
 
  124     if (atlasDict->
get_label_value(
"subdet", 
"MuonSpectrometer", muonField)) {
 
  125         ATH_MSG_ERROR(
"Could not get value for label 'MuonSpectrometer' of field " 
  126                       << 
"'subdet' in dictionary " << atlasDict->
name());
 
  136     if (muon_range.
size() > 0) {
 
  137         ATH_MSG_INFO(
"MultiRange built successfully to Technology: " 
  138                      << 
"MultiRange size is " << muon_range.
size());
 
  146     detectorElement_region.
add(muonField);
 
  147     Range detectorElement_prefix;
 
  149     if (muon_detectorElement_range.
size() > 0) {
 
  150         ATH_MSG_INFO(
"MultiRange built successfully to detector element: " 
  151                      << 
"Multilayer MultiRange size is " << muon_detectorElement_range.
size());
 
  153         ATH_MSG_ERROR(
"Muon CSC detector element MultiRange is empty");
 
  159     csc_region.
add(muonField);
 
  162     if (muon_channel_range.
size() > 0) {
 
  163         ATH_MSG_INFO(
"MultiRange built successfully to cscStrip: " 
  164                      << 
"MultiRange size is " << muon_channel_range.
size());
 
  179     for (
int i = 0; 
i < (
int)muon_range.
size(); ++
i) {
 
  190     for (
int j = 0; j < (
int)muon_detectorElement_range.
size(); ++j) {
 
  191         const Range& 
range = muon_detectorElement_range[j];
 
  196                 ATH_MSG_DEBUG(
"detector element field size is " << (
int)
range.cardinality() << 
" field index = " << j);
 
  201     for (
int j = 0; j < (
int)muon_channel_range.
size(); ++j) {
 
  207                 ATH_MSG_DEBUG(
"channel field size is " << (
int)
range.cardinality() << 
" field index = " << j);
 
  222         ATH_MSG_ERROR(
"CSC MultiRange ID is empty for detector elements");
 
  244     ATH_MSG_INFO(
"Initializing CSC hash indices for finding neighbors ... ");
 
  258             ATH_MSG_ERROR(
"Failed to retrieve ExpandedIdentifier from Identifier " << 
id.get_compact());
 
  264             if (
range.match(expId)) {
 
  266                 if (not !phi_field.
empty()) {
 
  267                     ATH_MSG_ERROR(
"Range::field for phi at position " << 
i << 
" does not have a maximum");
 
  310     for (
unsigned int i = 0; 
i < hash_max; ++
i) {
 
  321     for (
unsigned int i = 0; 
i < hash_max; ++
i) {
 
  355         for (
const auto & expId : rit) {
 
  370             if (
range.match(expId)) {
 
  372                 if (not eta_field.
empty()) {
 
  394             if (
range.match(expId)) {
 
  396                 if (not eta_field.
empty()) {
 
  413             if (
range.match(expId)) {
 
  429             if (
range.match(expId)) {
 
  445             if (
range.match(expId)) {
 
  461             if (
range.match(expId)) {
 
  477             if (
range.match(expId)) {
 
  493             if (
range.match(expId)) {
 
  509             if (
range.match(expId)) {
 
  525             if (
range.match(expId)) {
 
  541             if (
range.match(expId)) {
 
  635                                int measuresPhi, 
int strip)
 const {
 
  668     } 
else if (
version == 
"CSC Cosmic") {
 
  698     } 
catch (
const std::out_of_range&) { 
isValid = 
false; }
 
  727                                   int strip, 
bool& 
isValid)
 const {
 
  732     } 
catch (
const std::out_of_range&) { 
isValid = 
false; }
 
  737                                   int measuresPhi, 
int strip)
 const {
 
  741                                   int measuresPhi, 
int strip, 
bool& 
isValid)
 const {
 
  758     } 
catch (
const std::out_of_range&) { 
isValid = 
false; }
 
  
bool validStation(int stationName, int technology) const
int stationNameIndex(const std::string &name) const
bool valid(const Identifier &id) const
Public validation of levels.
constexpr uint8_t stationPhi
station Phi 1 to 8
MultiRange build_multirange() const
Get MultiRange for full dictionary.
static constexpr unsigned int s_phiDim
8 phi stations
virtual int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
unsigned int moduleHashIdx(const Identifier &id) const
Scalar phi() const
phi method
int initialize_from_dictionary(const IdDictMgr &dict_mgr) override
Initialization from the identifier dictionary.
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
const std::string & version() const
Dictionary version.
std::string show_to_string(void) const
int muon_field_value() const
size_type m_MEASURESPHI_INDEX
IdContext channel_context() const
id for channel
Scalar eta() const
pseudorapidity method
const IdDictRegion & region(size_t i) const
Region at index i.
size_type detectorElement_hash_max() const
void add(const Range &range)
element_type get_minimum() const
Query the values.
IdDictFieldImplementation m_sta_impl
void idChannels(const Identifier &id, std::vector< Identifier > &vect) const
size_type m_CHAMBERLAYER_INDEX
void add(element_type value)
Append a value into a new field.
static int measuresPhiMax()
bool is_csc(const Identifier &id) const
void pack(int value, Identifier &id) const
element_type get_maximum() const
int stationName(const Identifier &id) const
const std::string & name() const
Dictionary name.
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
IdDictFieldImplementation m_phi_impl
static int measuresPhiMin()
static int chamberLayerMin()
int unpack(Identifier id) const
Identifier manipulation methods.
MultiRange m_full_channel_range
unsigned int m_stationShift
Minimal station index found.
@ u
Enums for curvilinear frames.
IdDictField * find_field(const std::string &name) const
int channel(const Identifier &id) const override
void reset(Identifier &id) const
static int stationEtaMax()
int wireLayer(const Identifier &id) const
bool isStNameInTech(const std::string &stationName) const override
The valid element checks converted the identifier to a stationName string in order to assess whether ...
const IdDictFieldImplementation & implementation(size_t i) const
IdDictGroup * find_group(const std::string &group_name) const
std::array< unsigned int, s_modHashDim > m_module_hashes
IdDictDictionary * find_dictionary(const std::string &name) const
Access dictionary by name.
Identifier parentID(const Identifier &id) const
get parent id from channel id
static int stationEtaMin()
Access to min and max of level ranges.
IdDictFieldImplementation m_str_impl
bool empty() const
If true, this field does not have any constraints, and may hold any value representable by element_ty...
bool validChannel(const Identifier &id, int stationName, int stationEta, int stationPhi, int chamberLayer, int wireLayer, int measuresPhi, int strip) const
int get_module_hash(const Identifier &id, IdentifierHash &hash_id) const override
static int wireLayerMax()
unsigned int m_stripMaxPhi
MultiRange m_full_detectorElement_range
int gasGap(const Identifier &id) const override
get the hashes
MultiRange m_full_module_range
int get_expanded_id(const Identifier &id, ExpandedIdentifier &exp_id, const IdContext *context) const
Create expanded id from compact id (return == 0 for OK)
const std::vector< IdDictRegion * > & regions()
IdDictFieldImplementation m_eta_impl
size_type m_WIRELAYER_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.
IdDictFieldImplementation m_lay_impl
int stationPhi(const Identifier &id) const
static int stationPhiMin()
int get_label_value(const std::string &field, const std::string &label, int &value) const
const std::string & stationNameString(const int &index) const
int sector(const Identifier &id) const
A MultiRange combines several Ranges.
Identifier channelID(int stationName, int stationEta, int stationPhi, int chamberLayer, int wireLayer, int measuresPhi, int strip) const
id_vec m_detectorElement_vec
unsigned int m_stripMaxEta
bool validElement(const Identifier &id) const
int stationEta(const Identifier &id) const
A Range describes the possible ranges for the field values of an ExpandedIdentifier.
IdDictFieldImplementation m_cla_impl
IdDictFieldImplementation m_mea_impl
size_type module_hash_max() const
the maximum hash value
Identifier elementID(int stationName, int stationEta, int stationPhi) const
virtual int init_detectorElement_hashes()
bool reinitialize(const IdDictMgr &dict_mgr)
Test whether an idhelper should be reinitialized based on the change of tags.
size_type m_TECHNOLOGY_INDEX
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
static int chamberLayerMax()
int strip(const Identifier &id) const
static constexpr unsigned int s_etaDim
This is the individual specification for the range of one ExpandedIdentifier IdentifierField.
void resetAndSet(const IdDictFieldImplementation &dict, const int new_val, Identifier &id) const
size_type m_DETECTORELEMENT_INDEX
static constexpr unsigned int s_mlDim
2 multi layer
IdDictFieldImplementation m_tec_impl
unsigned long long value_type
unsigned int detEleHashIdx(const Identifier &id) const
bool measuresPhi(const Identifier &id) const override
int init_channel_hashes()
constexpr uint8_t stationEta
1 to 3
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
static int wireLayerMin()
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
int get_detectorElement_hash(const Identifier &id, IdentifierHash &hash_id) const override
static int stationPhiMax()
int csc_field_value() const
int chamberLayer(const Identifier &id) const
int cscTechnology() const
Utility methods.
std::array< unsigned int, s_detHashDim > m_detectorElement_hashes
size_type m_CHANNEL_INDEX
const IdDictDictionary * m_dict