ATLAS Offline Software
MdtCsmIdHash.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "GaudiKernel/Bootstrap.h"
6 #include "GaudiKernel/GaudiException.h"
7 #include "GaudiKernel/StatusCode.h"
10 
11 #include "MuonRDO/MdtCsmIdHash.h"
12 
13 #include <cassert>
14 #include <iostream>
15 
16 // This class converts a Mdt Identifier into a integer, according to its
17 // fields
18 
19 
20 // default contructor
22 {
23  const MdtIdHelper* mdtHelper=nullptr;
24  SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore")};
25 
26  StatusCode sc = detStore->retrieve( mdtHelper, "MDTIDHELPER" );
27  if (sc.isFailure()) {
28  throw GaudiException("can not get MdtIdHelper",
29  "MdtCsmIdHash::MdtCsmIdHash()", sc);
30  }
31 
32  unsigned int used = mdtHelper->module_hash_max();
33  IdContext context = mdtHelper->module_context();
34 
35  if( mdtHelper->stationNameIndex("BME") != -1 ) {
36  used = mdtHelper->detectorElement_hash_max();
37  context = mdtHelper->detectorElement_context();
38  }
39 
40  for(unsigned int hash=0; hash < used; ++hash){
41  Identifier id;
42  if (!mdtHelper->get_id(hash,id,&context)) {
43  m_lookup[id]=(int) hash;
44  m_int2id.push_back(id);
45  } else {
46  REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "MdtCscIdHash") <<
47  "MDT hash constructor failed!" << endmsg;
48  }
49  }
50 
51  m_size = (int) used;
52 }
53 
55 
56  if(index>=0 && index < m_size) {
57  return m_int2id[index] ;
58  }
59  // return blank id for invalid index
60  std::cout <<" MdtCsmIdHash::ERROR : identifier invalid ID "<<std::endl;
61  Identifier id;
62  return id;
63 
64 }
65 
66 int MdtCsmIdHash::operator() (const ID& id) const {
67 
68  std::map<ID,int>::const_iterator it = m_lookup.find(id);
69  if(it!=m_lookup.end()){
70  return (*it).second;
71  }
72 
73  // FIXME -1 for invalid ID?
74  return -1;
75 
76 }
77 
78 int MdtCsmIdHash::max() const {
79 
80 return m_size;
81 
82 }
83 
85 
86 return 0;
87 
88 }
used
MuonIdHelper::stationNameIndex
int stationNameIndex(const std::string &name) const
Definition: MuonIdHelper.cxx:842
MuonIdHelper::detectorElement_context
IdContext detectorElement_context() const
id for detector element
Definition: MuonIdHelper.cxx:736
MdtCsmIdHash::MdtCsmIdHash
MdtCsmIdHash()
Definition: MdtCsmIdHash.cxx:21
MuonIdHelper::get_id
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)
Definition: MuonIdHelper.cxx:70
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
index
Definition: index.py:1
MuonIdHelper::detectorElement_hash_max
size_type detectorElement_hash_max() const
Definition: MuonIdHelper.h:186
MdtCsmIdHash::m_size
int m_size
total number of IDs
Definition: MdtCsmIdHash.h:41
skel.it
it
Definition: skel.GENtoEVGEN.py:396
MdtCsmIdHash::m_int2id
std::vector< ID > m_int2id
reverse lookup
Definition: MdtCsmIdHash.h:49
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MdtCsmIdHash.h
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:23
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MdtIdHelper
Definition: MdtIdHelper.h:61
MdtCsmIdHash::max
int max() const
return maximum number of IDs
Definition: MdtCsmIdHash.cxx:78
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:345
MdtCsmIdHash::offset
static int offset()
return offset
Definition: MdtCsmIdHash.cxx:84
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
errorcheck.h
Helpers for checking error return status codes and reporting errors.
MuonIdHelper::module_hash_max
size_type module_hash_max() const
the maximum hash value
Definition: MuonIdHelper.cxx:748
DeMoScan.index
string index
Definition: DeMoScan.py:364
MdtCsmIdHash::operator()
int operator()(const ID &id) const
Convert ID to int.
Definition: MdtCsmIdHash.cxx:66
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
MuonIdHelper::module_context
IdContext module_context() const
id for module
Definition: MuonIdHelper.cxx:731
MdtCsmIdHash::m_lookup
std::map< Identifier, int > m_lookup
lookup table
Definition: MdtCsmIdHash.h:45
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
StoreGateSvc.h
MdtCsmIdHash::identifier
ID identifier(int i) const
reverse conversion
Definition: MdtCsmIdHash.cxx:54
Identifier
Definition: IdentifierFieldParser.cxx:14