ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
MdtCsmIdHash Class Reference

Hash function for Mdt module Identifier to be used in MdtDigitContainer (IdentifiableContainer) More...

#include <MdtCsmIdHash.h>

Collaboration diagram for MdtCsmIdHash:

Public Types

typedef Identifier ID
 

Public Member Functions

 MdtCsmIdHash ()
 
virtual ~MdtCsmIdHash ()
 
int operator() (const ID &id) const
 Convert ID to int. More...
 
int max () const
 return maximum number of IDs More...
 
ID identifier (int i) const
 reverse conversion More...
 

Static Public Member Functions

static int offset ()
 return offset More...
 

Private Attributes

int m_size
 total number of IDs More...
 
std::map< Identifier, int > m_lookup
 lookup table More...
 
std::vector< IDm_int2id
 reverse lookup More...
 

Detailed Description

Hash function for Mdt module Identifier to be used in MdtDigitContainer (IdentifiableContainer)

Author
Hong Ma
Version
00-00-01 , Aug 28, 2002

Definition at line 17 of file MdtCsmIdHash.h.

Member Typedef Documentation

◆ ID

Definition at line 21 of file MdtCsmIdHash.h.

Constructor & Destructor Documentation

◆ MdtCsmIdHash()

MdtCsmIdHash::MdtCsmIdHash ( )

Definition at line 22 of file MdtCsmIdHash.cxx.

23 {
24  IMessageSvc* msgSvc;
25  ISvcLocator* svcLoc = Gaudi::svcLocator( );
26  assert(svcLoc);
27  StatusCode sc = svcLoc->service( "MessageSvc", msgSvc );
28  if (sc.isFailure()) std::cout << "Fail to locate Message Service" << std::endl;
29 
30  MsgStream log(msgSvc, "MuonDigitContainer" );
31 
32  log << MSG::DEBUG << " MdtCsmIdHash Constructor "<<endmsg;
33 
34  const MdtIdHelper* mdtHelper=nullptr;
35  StoreGateSvc* detStore=nullptr;
36  sc = svcLoc->service("DetectorStore", detStore);
37 
38  if (sc.isSuccess()) {
39  sc = detStore->retrieve( mdtHelper, "MDTIDHELPER" );
40  if (sc.isFailure())
41  log << MSG::ERROR << " Cannot retrieve MdtIdHelper " << endmsg;
42  } else
43  log << MSG::ERROR << " MdtIdHelper not found in DetectorStore " << endmsg;
44  //too bad, we bail out (PC)
45  if (!sc.isSuccess()) throw GaudiException("can not get MdtIdHelper",
46  "MdtCsmIdHash::MdtCsmIdHash()", sc);
47 
48 
49  unsigned int used = mdtHelper->module_hash_max();
50  IdContext context = mdtHelper->module_context();
51 
52  if( mdtHelper->stationNameIndex("BME") != -1 ) {
53  used = mdtHelper->detectorElement_hash_max();
54  context = mdtHelper->detectorElement_context();
55  }
56 
57  for(unsigned int hash=0; hash < used; ++hash){
58  Identifier id;
59  if (!mdtHelper->get_id(hash,id,&context)) {
60  m_lookup[id]=(int) hash;
61  m_int2id.push_back(id);
62  } else log << MSG::ERROR << "MDT hash constructor failed!" << endmsg;
63  }
64 
65  log << MSG::DEBUG << "Number of valid MDT Element IDs " << used << endmsg;
66  m_size = (int) used;
67 }

◆ ~MdtCsmIdHash()

virtual MdtCsmIdHash::~MdtCsmIdHash ( )
inlinevirtual

Definition at line 24 of file MdtCsmIdHash.h.

24 { };

Member Function Documentation

◆ identifier()

MdtCsmIdHash::ID MdtCsmIdHash::identifier ( int  i) const

reverse conversion

Definition at line 69 of file MdtCsmIdHash.cxx.

69  {
70 
71  if(index>=0 && index < m_size) {
72  return m_int2id[index] ;
73  }
74  // return blank id for invalid index
75  std::cout <<" MdtCsmIdHash::ERROR : identifier invalid ID "<<std::endl;
76  Identifier id;
77  return id;
78 
79 }

◆ max()

int MdtCsmIdHash::max ( ) const

return maximum number of IDs

Definition at line 93 of file MdtCsmIdHash.cxx.

93  {
94 
95 return m_size;
96 
97 }

◆ offset()

int MdtCsmIdHash::offset ( )
static

return offset

Definition at line 99 of file MdtCsmIdHash.cxx.

99  {
100 
101 return 0;
102 
103 }

◆ operator()()

int MdtCsmIdHash::operator() ( const ID id) const

Convert ID to int.

Definition at line 81 of file MdtCsmIdHash.cxx.

81  {
82 
83  std::map<ID,int>::const_iterator it = m_lookup.find(id);
84  if(it!=m_lookup.end()){
85  return (*it).second;
86  }
87 
88  // FIXME -1 for invalid ID?
89  return -1;
90 
91 }

Member Data Documentation

◆ m_int2id

std::vector<ID> MdtCsmIdHash::m_int2id
private

reverse lookup

Definition at line 49 of file MdtCsmIdHash.h.

◆ m_lookup

std::map<Identifier,int> MdtCsmIdHash::m_lookup
private

lookup table

Definition at line 45 of file MdtCsmIdHash.h.

◆ m_size

int MdtCsmIdHash::m_size
private

total number of IDs

Definition at line 41 of file MdtCsmIdHash.h.


The documentation for this class was generated from the following files:
used
MuonIdHelper::stationNameIndex
int stationNameIndex(const std::string &name) const
Definition: MuonIdHelper.cxx:846
MuonIdHelper::detectorElement_context
IdContext detectorElement_context() const
id for detector element
Definition: MuonIdHelper.cxx:740
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:69
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:423
MdtCsmIdHash::m_int2id
std::vector< ID > m_int2id
reverse lookup
Definition: MdtCsmIdHash.h:49
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
MuonIdHelper::module_hash_max
size_type module_hash_max() const
the maximum hash value
Definition: MuonIdHelper.cxx:752
DeMoScan.index
string index
Definition: DeMoScan.py:362
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
MuonIdHelper::module_context
IdContext module_context() const
id for module
Definition: MuonIdHelper.cxx:735
MdtCsmIdHash::m_lookup
std::map< Identifier, int > m_lookup
lookup table
Definition: MdtCsmIdHash.h:45
IdContext
class IdContext
Definition: IdContext.h:34