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(CONSTNESS)

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 77 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx.

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

◆ WRITE_ALLGETTER

#define WRITE_ALLGETTER ( CONSTNESS)

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

91#define WRITE_ALLGETTER(CONSTNESS) \
92 std::vector<CONSTNESS MuonReadoutElement*> \
93 MuonDetectorManager::getAllReadoutElements(const ActsTrk::DetectorType type) CONSTNESS { \
94 std::vector<CONSTNESS MuonReadoutElement*> allEles{}; \
95 using enum ActsTrk::DetectorType; \
96 if (type == UnDefined || type == Mdt) { \
97 insert(getAllMdtReadoutElements(), allEles); \
98 } \
99 if (type == UnDefined || type == Rpc) { \
100 insert(getAllRpcReadoutElements(), allEles); \
101 } \
102 if (type == UnDefined || type == Tgc) { \
103 insert(getAllTgcReadoutElements(), allEles); \
104 } \
105 if (type == UnDefined || type == Mm) { \
106 insert(getAllMmReadoutElements(), allEles); \
107 } \
108 if (type == UnDefined || type == sTgc) { \
109 insert(getAllsTgcReadoutElements(), allEles); \
110 } \
111 return allEles; \
112 } \
113 \
114 CONSTNESS MuonReadoutElement* \
115 MuonDetectorManager::getReadoutElement(const Identifier& id) CONSTNESS { \
116 switch(m_idHelperSvc->technologyIndex(id)) { \
117 using enum Muon::MuonStationIndex::TechnologyIndex; \
118 case MDT: \
119 return getMdtReadoutElement(id); \
120 case RPC: \
121 return getRpcReadoutElement(id); \
122 case TGC: \
123 return getTgcReadoutElement(id); \
124 case STGC: \
125 return getsTgcReadoutElement(id); \
126 case MM: \
127 return getMmReadoutElement(id); \
128 default: \
129 ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" Not a muon detector element " \
130 <<m_idHelperSvc->toString(id)); \
131 } \
132 return nullptr; \
133 }

◆ 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 53 of file MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx.

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