ATLAS Offline Software
Loading...
Searching...
No Matches
MuonDetectorManager.cxx File Reference

Go to the source code of this file.

Namespaces

namespace  MuonGMR4
 The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy MuonReadoutGeometry.

Macros

#define WRITE_SETTER(ELE_TYPE, SETTER, STORAGE_VEC)
#define ADD_DETECTOR(ELE_TYPE, STORAGE_VEC)
#define WRITE_ALLGETTER(TYPE)

Typedefs

using MuonGMR4::MuonSectorSet = MuonDetectorManager::MuonSectorSet
using MuonGMR4::MuonChamberSet = MuonDetectorManager::MuonChamberSet

Functions

 MuonGMR4::ADD_DETECTOR (MdtReadoutElement, m_mdtEles)
 MuonGMR4::ADD_DETECTOR (TgcReadoutElement, m_tgcEles)
 MuonGMR4::ADD_DETECTOR (RpcReadoutElement, m_rpcEles)
 MuonGMR4::ADD_DETECTOR (MmReadoutElement, m_mmEles)
 MuonGMR4::ADD_DETECTOR (sTgcReadoutElement, m_sTgcEles)

Macro Definition Documentation

◆ ADD_DETECTOR

#define ADD_DETECTOR ( ELE_TYPE,
STORAGE_VEC )
Value:
WRITE_SETTER(ELE_TYPE, add##ELE_TYPE, STORAGE_VEC) \
\
std::vector<const ELE_TYPE*> MuonDetectorManager::getAll##ELE_TYPE##s() const { \
std::vector<const ELE_TYPE*> allElements{}; \
insert(STORAGE_VEC, allElements); \
return allElements; \
} \
\
std::vector<ELE_TYPE*> MuonDetectorManager::getAll##ELE_TYPE##s() { \
std::vector<ELE_TYPE*> allElements{}; \
insert(STORAGE_VEC, allElements); \
return allElements; \
}
#define WRITE_SETTER(ELE_TYPE, SETTER, STORAGE_VEC)
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

Definition at line 75 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx.

75#define ADD_DETECTOR(ELE_TYPE, STORAGE_VEC) \
76 WRITE_SETTER(ELE_TYPE, add##ELE_TYPE, STORAGE_VEC) \
77 \
78 std::vector<const ELE_TYPE*> MuonDetectorManager::getAll##ELE_TYPE##s() const { \
79 std::vector<const ELE_TYPE*> allElements{}; \
80 insert(STORAGE_VEC, allElements); \
81 return allElements; \
82 } \
83 \
84 std::vector<ELE_TYPE*> MuonDetectorManager::getAll##ELE_TYPE##s() { \
85 std::vector<ELE_TYPE*> allElements{}; \
86 insert(STORAGE_VEC, allElements); \
87 return allElements; \
88 }

◆ WRITE_ALLGETTER

#define WRITE_ALLGETTER ( TYPE)
Value:
std::vector<TYPE MuonReadoutElement*> MuonDetectorManager::getAllReadoutElements() TYPE { \
std::vector<TYPE MuonReadoutElement*> allEles{}; \
insert(getAllMdtReadoutElements(), allEles); \
insert(getAllRpcReadoutElements(), allEles); \
insert(getAllTgcReadoutElements(), allEles); \
insert(getAllMmReadoutElements(), allEles); \
insert(getAllsTgcReadoutElements(), allEles); \
return allEles; \
} \
TYPE MuonReadoutElement* MuonDetectorManager::getReadoutElement(const Identifier& id) TYPE { \
switch(m_idHelperSvc->technologyIndex(id)) { \
case MDT: \
return getMdtReadoutElement(id); \
case RPC: \
return getRpcReadoutElement(id); \
case TGC: \
return getTgcReadoutElement(id); \
case STGC: \
return getsTgcReadoutElement(id); \
case MM: \
return getMmReadoutElement(id); \
default: \
ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" Not a muon detector element " \
<<m_idHelperSvc->toString(id)); \
} \
return nullptr; \
}
@ STGC
Definition RegSelEnums.h:39
@ MM
Definition RegSelEnums.h:38
@ RPC
Definition RegSelEnums.h:32
@ TGC
Definition RegSelEnums.h:33
@ MDT
Definition RegSelEnums.h:31
#define TYPE(CODE, TYP, IOTYP)
TechnologyIndex
enum to classify the different layers in the muon spectrometer

Definition at line 89 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx.

89#define WRITE_ALLGETTER(TYPE) \
90 std::vector<TYPE MuonReadoutElement*> MuonDetectorManager::getAllReadoutElements() TYPE { \
91 std::vector<TYPE MuonReadoutElement*> allEles{}; \
92 insert(getAllMdtReadoutElements(), allEles); \
93 insert(getAllRpcReadoutElements(), allEles); \
94 insert(getAllTgcReadoutElements(), allEles); \
95 insert(getAllMmReadoutElements(), allEles); \
96 insert(getAllsTgcReadoutElements(), allEles); \
97 return allEles; \
98 } \
99 TYPE MuonReadoutElement* MuonDetectorManager::getReadoutElement(const Identifier& id) TYPE { \
100 switch(m_idHelperSvc->technologyIndex(id)) { \
101 using enum Muon::MuonStationIndex::TechnologyIndex; \
102 case MDT: \
103 return getMdtReadoutElement(id); \
104 case RPC: \
105 return getRpcReadoutElement(id); \
106 case TGC: \
107 return getTgcReadoutElement(id); \
108 case STGC: \
109 return getsTgcReadoutElement(id); \
110 case MM: \
111 return getMmReadoutElement(id); \
112 default: \
113 ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" Not a muon detector element " \
114 <<m_idHelperSvc->toString(id)); \
115 } \
116 return nullptr; \
117 }

◆ WRITE_SETTER

#define WRITE_SETTER ( ELE_TYPE,
SETTER,
STORAGE_VEC )
Value:
StatusCode MuonDetectorManager::SETTER(ElementPtr_t<ELE_TYPE> element) { \
if (!element) { \
ATH_MSG_FATAL(__func__ << " -- nullptr is given."); \
return StatusCode::FAILURE; \
} \
ATH_CHECK(element->initElement()); \
element->releaseUnAlignedTrfs(); \
size_t idx = static_cast<size_t>(element->identHash()); \
if (idx >= STORAGE_VEC.size()) { \
STORAGE_VEC.resize(idx + 1); \
} \
std::unique_ptr<ELE_TYPE>& new_element = STORAGE_VEC[idx]; \
if (new_element) { \
ATH_MSG_FATAL("The detector element " \
<< m_idHelperSvc->toStringDetEl(element->identify()) \
<< " has already been added before " \
<<m_idHelperSvc->toStringDetEl(new_element->identify())); \
return StatusCode::FAILURE; \
} \
linkElements(STORAGE_VEC, element.get()); \
new_element = std::move(element); \
return StatusCode::SUCCESS; \
}

Definition at line 51 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx.

51#define WRITE_SETTER(ELE_TYPE, SETTER, STORAGE_VEC) \
52 StatusCode MuonDetectorManager::SETTER(ElementPtr_t<ELE_TYPE> element) { \
53 if (!element) { \
54 ATH_MSG_FATAL(__func__ << " -- nullptr is given."); \
55 return StatusCode::FAILURE; \
56 } \
57 ATH_CHECK(element->initElement()); \
58 element->releaseUnAlignedTrfs(); \
59 size_t idx = static_cast<size_t>(element->identHash()); \
60 if (idx >= STORAGE_VEC.size()) { \
61 STORAGE_VEC.resize(idx + 1); \
62 } \
63 std::unique_ptr<ELE_TYPE>& new_element = STORAGE_VEC[idx]; \
64 if (new_element) { \
65 ATH_MSG_FATAL("The detector element " \
66 << m_idHelperSvc->toStringDetEl(element->identify()) \
67 << " has already been added before " \
68 <<m_idHelperSvc->toStringDetEl(new_element->identify())); \
69 return StatusCode::FAILURE; \
70 } \
71 linkElements(STORAGE_VEC, element.get()); \
72 new_element = std::move(element); \
73 return StatusCode::SUCCESS; \
74 }