ATLAS Offline Software
Loading...
Searching...
No Matches
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.
int max () const
 return maximum number of IDs
ID identifier (int i) const
 reverse conversion

Static Public Member Functions

static int offset ()
 return offset

Private Attributes

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

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 18 of file MdtCsmIdHash.h.

Member Typedef Documentation

◆ ID

Definition at line 22 of file MdtCsmIdHash.h.

Constructor & Destructor Documentation

◆ MdtCsmIdHash()

MdtCsmIdHash::MdtCsmIdHash ( )

Definition at line 26 of file MdtCsmIdHash.cxx.

27{
28 const MdtIdHelper* mdtHelper=nullptr;
29 SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore")};
30
31 StatusCode sc = detStore->retrieve( mdtHelper, "MDTIDHELPER" );
32 if (sc.isFailure()) {
33 throw GaudiException("can not get MdtIdHelper",
34 "MdtCsmIdHash::MdtCsmIdHash()", sc);
35 }
36
37 unsigned int used = mdtHelper->module_hash_max();
38 IdContext context = mdtHelper->module_context();
39
40 if( mdtHelper->stationNameIndex("BME") != -1 ) {
41 used = mdtHelper->detectorElement_hash_max();
42 context = mdtHelper->detectorElement_context();
43 }
44
45 for(unsigned int hash=0; hash < used; ++hash){
46 Identifier id;
47 if (!mdtHelper->get_id(hash,id,&context)) {
48 m_lookup[id]=(int) hash;
49 m_int2id.push_back(id);
50 } else {
51 REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "MdtCscIdHash") <<
52 "MDT hash constructor failed!" << endmsg;
53 }
54 }
55
56 m_size = (int) used;
57}
#define endmsg
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
static Double_t sc
std::map< Identifier, int > m_lookup
lookup table
int m_size
total number of IDs
std::vector< ID > m_int2id
reverse lookup
int stationNameIndex(const std::string &name) const
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)
size_type module_hash_max() const
the maximum hash value
IdContext module_context() const
id for module
IdContext detectorElement_context() const
id for detector element
size_type detectorElement_hash_max() const
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ ~MdtCsmIdHash()

virtual MdtCsmIdHash::~MdtCsmIdHash ( )
inlinevirtual

Definition at line 25 of file MdtCsmIdHash.h.

25{ };

Member Function Documentation

◆ identifier()

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

reverse conversion

Definition at line 59 of file MdtCsmIdHash.cxx.

59 {
60
61 if(index>=0 && index < m_size) {
62 return m_int2id[index] ;
63 }
64 // return blank id for invalid index
65 std::cout <<" MdtCsmIdHash::ERROR : identifier invalid ID "<<std::endl;
66 Identifier id;
67 return id;
68
69}
str index
Definition DeMoScan.py:362

◆ max()

int MdtCsmIdHash::max ( ) const

return maximum number of IDs

Definition at line 83 of file MdtCsmIdHash.cxx.

83 {
84
85return m_size;
86
87}

◆ offset()

int MdtCsmIdHash::offset ( )
static

return offset

Definition at line 89 of file MdtCsmIdHash.cxx.

89 {
90
91return 0;
92
93}

◆ operator()()

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

Convert ID to int.

Definition at line 71 of file MdtCsmIdHash.cxx.

71 {
72
73 std::map<ID,int>::const_iterator it = m_lookup.find(id);
74 if(it!=m_lookup.end()){
75 return (*it).second;
76 }
77
78 // FIXME -1 for invalid ID?
79 return -1;
80
81}

Member Data Documentation

◆ m_int2id

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

reverse lookup

Definition at line 50 of file MdtCsmIdHash.h.

◆ m_lookup

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

lookup table

Definition at line 46 of file MdtCsmIdHash.h.

◆ m_size

int MdtCsmIdHash::m_size
private

total number of IDs

Definition at line 42 of file MdtCsmIdHash.h.


The documentation for this class was generated from the following files: