ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonPhaseII
Event
xAOD
xAODMuonPrepData
xAODMuonPrepData
versions
AccessorMacros.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
#ifndef XAODMUONPREPDATA_ACCESSOR_MACROS_H
5
#define XAODMUONPREPDATA_ACCESSOR_MACROS_H
6
#include "GeoModelKernel/throwExcept.h"
10
#define IMPLEMENT_SETTER_GETTER( CLASS_NAME, DTYPE, GETTER, SETTER) \
11
DTYPE CLASS_NAME::GETTER() const { \
12
static const SG::AuxElement::Accessor<DTYPE> acc{preFixStr + #GETTER}; \
13
return acc(*this); \
14
} \
15
\
16
void CLASS_NAME::SETTER(DTYPE value) { \
17
static const SG::AuxElement::Accessor<DTYPE> acc{preFixStr + #GETTER}; \
18
acc(*this) = value; \
19
}
20
24
#define IMPLEMENT_SETTER_GETTER_WITH_CAST( CLASS_NAME, STORE_DTYPE, CAST_DTYPE, GETTER, SETTER) \
25
CAST_DTYPE CLASS_NAME::GETTER() const { \
26
static const SG::AuxElement::Accessor<STORE_DTYPE> acc{preFixStr + #GETTER}; \
27
return static_cast<CAST_DTYPE>(acc(*this)); \
28
} \
29
\
30
void CLASS_NAME::SETTER(CAST_DTYPE value) { \
31
static const SG::AuxElement::Accessor<STORE_DTYPE> acc{preFixStr + #GETTER}; \
32
acc(*this) = static_cast<STORE_DTYPE>(value); \
33
}
34
37
#define IMPLEMENT_VECTOR_SETTER_GETTER(CLASS_NAME, DTYPE, GETTER, SETTER) \
38
const std::vector<DTYPE>& CLASS_NAME::GETTER() const { \
39
static const SG::AuxElement::Accessor<std::vector<DTYPE>> acc{preFixStr + #GETTER}; \
40
return acc(*this); \
41
} \
42
\
43
void CLASS_NAME::SETTER(const std::vector<DTYPE>& value) { \
44
static const SG::AuxElement::Accessor<std::vector<DTYPE>> acc{preFixStr + #GETTER}; \
45
acc(*this) = value; \
46
}
47
55
#define IMPLEMENT_READOUTELEMENT(CLASS_NAME, CACHED_VALUE, READOUT_ELEMENT_TYPE) \
56
void CLASS_NAME::setReadoutElement(const MuonGMR4::READOUT_ELEMENT_TYPE* readoutEle) { \
57
CACHED_VALUE.set(readoutEle); \
58
} \
59
\
60
const MuonGMR4::READOUT_ELEMENT_TYPE* CLASS_NAME::readoutElement() const { \
61
if (!CACHED_VALUE.isValid()) { \
62
SmartIF<StoreGateSvc> service{Gaudi::svcLocator()->service("DetectorStore")}; \
63
const MuonGMR4::MuonDetectorManager* detMgr{}; \
64
if (!service || !service->retrieve(detMgr).isSuccess()){ \
65
THROW_EXCEPTION("Failed to retrieve the Run4 muon detector manager. "<< \
66
"Please schedule the MuonGeometry in your job"); \
67
} \
68
const IdentifierHash hash{identifierHash()}; \
69
const MuonGMR4::READOUT_ELEMENT_TYPE* re = detMgr->get##READOUT_ELEMENT_TYPE(hash); \
70
if (!re) { \
71
THROW_EXCEPTION(#READOUT_ELEMENT_TYPE<<" does not exist for hash "<<hash); \
72
} \
73
CACHED_VALUE.set(re); \
74
} \
75
return static_cast<const MuonGMR4::READOUT_ELEMENT_TYPE*>(*CACHED_VALUE.ptr()); \
76
}
77
82
#define PRD_AUXVARIABLE(VAR) \
83
do { \
84
static const std::string varName =preFixStr+#VAR; \
85
static const auxid_t auxid = getAuxID(varName, VAR); \
86
regAuxVar(auxid, varName, VAR); \
87
} while (false);
88
89
#endif
Generated on
for ATLAS Offline Software by
1.17.0