ATLAS Offline Software
RpcReadoutGeomTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <GaudiKernel/SystemOfUnits.h>
10 
13 #include <GeoModelKernel/GeoFullPhysVol.h>
14 #include <GeoModelKernel/GeoPhysVol.h>
15 #include <GeoModelKernel/GeoTrd.h>
16 #include <GeoModelKernel/GeoBox.h>
17 
18 #include <GeoModelRead/ReadGeoModel.h>
21 
22 namespace {
23  constexpr double tolerance = 0.001 * Gaudi::Units::mm;
24 }
25 
26 using namespace CxxUtils;
27 using namespace ActsTrk;
28 
29 namespace MuonGMR4 {
30 
33 
36 struct gapVolume: public physVolWithTrans {
38  unsigned int gap,
39  unsigned int phi):
40  physVolWithTrans{std::move(physVol)},
41  gasGap{gap},
42  doubPhi{phi} {}
43  unsigned int gasGap{0};
44  unsigned int doubPhi{0};
45 
46 };
47 
48 inline bool layerSorter(const physVolWithTrans&a, const physVolWithTrans & b){
49  const Amg::Vector3D cA = a.transform.translation();
50  const Amg::Vector3D cB = b.transform.translation();
51  if (std::abs(cA.x() - cB.x()) > tolerance) return (cA.x() < cB.x());
52  return (cA.y() < cB.y());
53 }
54 
55 
56 RpcReadoutGeomTool::RpcReadoutGeomTool(const std::string& type,
57  const std::string& name,
58  const IInterface* parent)
59  : AthAlgTool{type, name, parent} {
60  declareInterface<IMuonReadoutGeomTool>(this);
61 
62 }
64  FactoryCache& factoryCache) {
65 
66  ATH_MSG_VERBOSE("Load dimensions of "<<m_idHelperSvc->toString(define.detElId)
67  <<std::endl<<std::endl<<m_geoUtilTool->dumpVolume(define.physVol));
68 
69  const GeoShape* shape = m_geoUtilTool->extractShape(define.physVol);
70  if (!shape) {
71  ATH_MSG_FATAL("Failed to deduce a valid shape for "<<m_idHelperSvc->toString(define.detElId));
72  return StatusCode::FAILURE;
73  }
74  ATH_MSG_DEBUG("Extracted shape "<<m_geoUtilTool->dumpShape(shape));
76  if (shape->typeID() != GeoBox::getClassTypeID()) {
77  ATH_MSG_FATAL(__FILE__<<":"<<__LINE__<<" expect shape to be a box but it's "<<m_geoUtilTool->dumpShape(shape));
78  return StatusCode::FAILURE;
79  }
80 
81  const GeoBox* box = static_cast<const GeoBox*>(shape);
82  define.halfThickness = box->getXHalfLength() * Gaudi::Units::mm;
83  define.halfLength = box->getZHalfLength() * Gaudi::Units::mm;
84  define.halfWidth = box->getYHalfLength() * Gaudi::Units::mm;
85 
95  std::vector<physVolWithTrans> stripLayers = m_geoUtilTool->findAllLeafNodesByName(define.physVol, "bottomStripLayer");
96  if (stripLayers.empty()) {
97  ATH_MSG_FATAL("The volume "<<m_idHelperSvc->toStringDetEl(define.detElId)<<" does not have any childern 'bottomStripLayer'"
98  <<std::endl<<m_geoUtilTool->dumpVolume(define.physVol));
99  return StatusCode::FAILURE;
100  }
101  std::vector<physVolWithTrans> allGasGaps = m_geoUtilTool->findAllLeafNodesByName(define.physVol, "RpcGasGap");
102  if (allGasGaps.empty()) {
103  ATH_MSG_FATAL("The volume "<<m_idHelperSvc->toStringDetEl(define.detElId)<<" does not have any childern 'RpcGasGap'"
104  <<std::endl<<m_geoUtilTool->dumpVolume(define.physVol));
105  return StatusCode::FAILURE;
106  }
108  std::stable_sort(allGasGaps.begin(), allGasGaps.end(), layerSorter);
109  std::stable_sort(stripLayers.begin(),stripLayers.end(), layerSorter);
113  for (physVolWithTrans& stripLayer : stripLayers){
115  const Amg::Vector3D stripTrans = stripLayer.transform.translation();
116  std::vector<physVolWithTrans>::iterator closestGap = std::min_element(allGasGaps.begin(), allGasGaps.end(),
117  [&stripTrans](const physVolWithTrans& a, const physVolWithTrans& b){
118  return std::abs(stripTrans.x() - a.transform.translation().x()) <
119  std::abs(stripTrans.x() - b.transform.translation().x());
120  });
121  stripLayer.transform.translation().x() = closestGap->transform.translation().x();
122  }
123 
126  Amg::Vector3D prevGap{stripLayers[0].transform.translation()};
127  unsigned int gasGap{1}, doubletPhi{0};
128 
129  unsigned int modulePhi = m_idHelperSvc->rpcIdHelper().doubletPhi(define.detElId);
130  std::vector<gapVolume> allGapsWithIdx{};
131  const bool isAside{m_idHelperSvc->stationEta(define.detElId) > 0};
132  for (physVolWithTrans& gapVol : stripLayers) {
133  Amg::Vector3D gCen = gapVol.transform.translation();
135  if (std::abs(gCen.x() - prevGap.x()) > tolerance) {
136  ++gasGap;
137  doubletPhi = 1;
138  } else ++doubletPhi;
139  ATH_MSG_DEBUG("Gas gap at "<<Amg::toString(gCen, 2)<<" is associated with gasGap: "<<gasGap<<", doubletPhi: "<<doubletPhi);
140  prevGap = std::move(gCen);
143  doubletPhi = std::max (doubletPhi, modulePhi);
144  allGapsWithIdx.emplace_back(std::move(gapVol), gasGap, doubletPhi);
145  }
147  define.nGasGaps = gasGap;
150  define.nPanelsInPhi = modulePhi == 2 ? 1 : doubletPhi;
151  FactoryCache::ParamBookTable::const_iterator parBookItr = factoryCache.parameterBook.find(define.chambDesign);
152  if (parBookItr == factoryCache.parameterBook.end()) {
153  ATH_MSG_FATAL("The chamber "<<define.chambDesign<<" is not part of the WRPC table");
154  return StatusCode::FAILURE;
155  }
156  const wRPCTable& paramBook{parBookItr->second};
157 
158  for (gapVolume& gapVol : allGapsWithIdx) {
159  const GeoShape* gapShape = m_geoUtilTool->extractShape(gapVol.volume);
160  if (gapShape->typeID() != GeoBox::getClassTypeID()) {
161  ATH_MSG_FATAL("Failed to extract a geo shape");
162  return StatusCode::FAILURE;
163  }
164  const GeoBox* gapBox = static_cast<const GeoBox*>(gapShape);
165  ATH_MSG_DEBUG("Gas gap dimensions "<<m_geoUtilTool->dumpShape(gapBox));
166  StripDesignPtr etaDesign = std::make_unique<StripDesign>();
168  const double firstStripPosEta = -gapBox->getZHalfLength() + paramBook.firstOffSetEta;
169  etaDesign->defineStripLayout(firstStripPosEta * Amg::Vector2D::UnitX(),
170  paramBook.stripPitchEta,
171  paramBook.stripWidthEta,
172  paramBook.numEtaStrips);
174  etaDesign->defineTrapezoid(gapBox->getYHalfLength(), gapBox->getYHalfLength(), gapBox->getZHalfLength());
175  gapVol.transform = gapVol.transform * Amg::getRotateY3D( (isAside ? -90. : 90.)* Gaudi::Units::degree);
176 
177  etaDesign = (*factoryCache.stripDesigns.emplace(etaDesign).first);
178  const IdentifierHash etaHash {RpcReadoutElement::createHash(0, gapVol.gasGap, gapVol.doubPhi, false)};
179  const unsigned int etaIdx = static_cast<unsigned int>(etaHash);
180  if (etaIdx >= define.layers.size()) {
181  define.layers.resize(etaIdx + 1);
182  }
183 
184  auto etaLayer = std::make_unique<StripLayer>(gapVol.transform, etaDesign, etaHash);
185  define.layers[etaIdx] = (*factoryCache.stripLayers.emplace(std::move(etaLayer)).first);
186 
187  ATH_MSG_VERBOSE("Added new eta gap at "<<(*define.layers[etaIdx]));
188  if (!define.etaDesign) define.etaDesign = etaDesign;
189 
190  if (!paramBook.numPhiStrips) {
191  ATH_MSG_VERBOSE("Rpc readout element without phi strips");
192  continue;
193  }
194  StripDesignPtr phiDesign = std::make_unique<StripDesign>();
195  const double firstStripPosPhi = -gapBox->getYHalfLength() + paramBook.firstOffSetPhi;
196  phiDesign->defineStripLayout(firstStripPosPhi * Amg::Vector2D::UnitX(),
197  paramBook.stripPitchPhi,
198  paramBook.stripWidthPhi,
199  paramBook.numPhiStrips);
200  phiDesign->defineTrapezoid(gapBox->getZHalfLength(), gapBox->getZHalfLength(), gapBox->getYHalfLength());
202  phiDesign = (*factoryCache.stripDesigns.emplace(phiDesign).first);
203 
204  const IdentifierHash phiHash {RpcReadoutElement::createHash(0, gapVol.gasGap, gapVol.doubPhi, true)};
205  const unsigned int phiIdx = static_cast<unsigned int>(phiHash);
206  if (phiIdx >= define.layers.size()) {
207  define.layers.resize(phiIdx + 1);
208  }
209  auto phiLayer = std::make_unique<StripLayer>(gapVol.transform * Amg::getRotateZ3D(90. * Gaudi::Units::deg),
210  phiDesign, phiHash);
211  define.layers[phiIdx] = (*factoryCache.stripLayers.emplace(std::move(phiLayer)).first);
212  ATH_MSG_VERBOSE("Added new phi gap at "<<(*define.layers[phiIdx]));
213  if (!define.phiDesign) define.phiDesign = phiDesign;
214  }
215  return StatusCode::SUCCESS;
216 }
218  GeoModelIO::ReadGeoModel* sqliteReader = m_geoDbTagSvc->getSqliteReader();
219  if (!sqliteReader) {
220  ATH_MSG_FATAL("Error, the tool works exclusively from sqlite geometry inputs");
221  return StatusCode::FAILURE;
222  }
223 
224  FactoryCache facCache{};
225  ATH_CHECK(readParameterBook(facCache));
226 
227  const RpcIdHelper& idHelper{m_idHelperSvc->rpcIdHelper()};
228  // Get the list of full phys volumes from SQLite, and create detector elements
229 
231  physNodeMap mapFPV = sqliteReader->getPublishedNodes<std::string, GeoFullPhysVol*>("Muon");
232 #ifndef SIMULATIONBASE
233  SurfaceBoundSetPtr<Acts::RectangleBounds> layerBounds = std::make_shared<SurfaceBoundSet<Acts::RectangleBounds>>();
234 #endif
235  for (auto& [key, pv] : mapFPV) {
242  std::vector<std::string> key_tokens = tokenize(key, "_");
243  if (key_tokens.size() < 7 ||
244  key_tokens[1].find("RPC") == std::string::npos) {
245  continue;
246  }
247  bool isValid{false};
249  const Identifier elementID = idHelper.padID(idHelper.stationNameIndex(key_tokens[0].substr(0, 3)),
250  atoi(key_tokens[2]),
251  atoi(key_tokens[3]),
252  atoi(key_tokens[4]),
253  atoi(key_tokens[6]),
254  atoi(key_tokens[5]),
255  isValid);
256  if (!isValid) {
257  ATH_MSG_FATAL("Failed to construct the station Identifier from "<<key);
258  return StatusCode::FAILURE;
259  }
260  defineArgs define{};
261  define.physVol = pv;
262  define.chambDesign = key_tokens[1];
263  define.alignTransform = m_geoUtilTool->findAlignableTransform(define.physVol);
264  define.detElId = elementID;
265  ATH_MSG_VERBOSE("Key "<<key<<" lead to Identifier "<<m_idHelperSvc->toStringDetEl(elementID));
266  ATH_CHECK(loadDimensions(define, facCache));
267 #ifndef SIMULATIONBASE
268  define.layerBounds = layerBounds;
269 #endif
270  std::unique_ptr<RpcReadoutElement> readoutEle = std::make_unique<RpcReadoutElement>(std::move(define));
271  ATH_CHECK(mgr.addRpcReadoutElement(std::move(readoutEle)));
272  }
273  return StatusCode::SUCCESS;
274 }
276  ServiceHandle<IRDBAccessSvc> accessSvc(m_geoDbTagSvc->getParamSvcName(), name());
277  ATH_CHECK(accessSvc.retrieve());
278  IRDBRecordset_ptr paramTable = accessSvc->getRecordsetPtr("WRPC", "");
279  if (paramTable->size() == 0) {
280  ATH_MSG_FATAL("Empty parameter book table found");
281  return StatusCode::FAILURE;
282  }
283  ATH_MSG_VERBOSE("Found the " << paramTable->nodeName() << " ["
284  << paramTable->tagName() << "] table with "
285  << paramTable->size() << " records");
286 
287  for (const IRDBRecord_ptr& record : *paramTable) {
288  const std::string chambType = record->getString("WRPC_TYPE");
289  wRPCTable& parBook = cache.parameterBook[record->getString("WRPC_TYPE")];
290  parBook.stripPitchEta = record->getDouble("etaStripPitch") * Gaudi::Units::cm;
291  parBook.stripPitchPhi = record->getDouble("phiStripPitch") * Gaudi::Units::cm;
292  const double stripDeadWidth = record->getDouble("stripDeadWidth") * Gaudi::Units::cm;
293  parBook.stripWidthEta = parBook.stripPitchEta - stripDeadWidth;
294  parBook.stripWidthPhi = parBook.stripPitchPhi - stripDeadWidth;
295  parBook.numEtaStrips = record->getInt("nEtaStrips");
296  parBook.numPhiStrips = record->getInt("nPhiStrips");
297  parBook.firstOffSetPhi = record->getDouble("phiStripOffSet") * Gaudi::Units::cm +
298  0.5 * parBook.stripPitchPhi;
299  parBook.firstOffSetEta = record->getDouble("etaStripOffSet") * Gaudi::Units::cm +
300  record->getDouble("TCKSSU") * Gaudi::Units::cm +
301  0.5 * parBook.stripPitchEta;
302 
303  ATH_MSG_VERBOSE("Extracted parameters for chamber "<<chambType
304  <<", num strips (eta/phi): "<<parBook.numEtaStrips<<"/"<<parBook.numPhiStrips
305  <<", strip pitch (eta/phi) "<<parBook.stripPitchEta<<"/"<<parBook.stripPitchPhi
306  <<", strip width (eta/phi): "<<parBook.stripWidthEta<<"/"<<parBook.stripWidthPhi
307  <<", strip offset (eta/phi): "<<parBook.firstOffSetEta<<"/"<<parBook.firstOffSetPhi
308  <<", etaStripOffSet: "<<(record->getDouble("etaStripOffSet") * Gaudi::Units::cm)
309  <<", phiStripOffSet: "<<(record->getDouble("phiStripOffSet") * Gaudi::Units::cm)
310  <<", TCKSSU: "<<(record->getDouble("TCKSSU")* Gaudi::Units::cm));
311  }
312  return StatusCode::SUCCESS;
313 }
314 } // namespace MuonGMR4
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
MuonGMR4::RpcReadoutGeomTool::loadDimensions
StatusCode loadDimensions(RpcReadoutElement::defineArgs &args, FactoryCache &factory)
Loads the chamber dimensions from GeoModel.
Definition: RpcReadoutGeomTool.cxx:63
GeoModel::TransientConstSharedPtr< StripDesign >
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
MuonGMR4::RpcReadoutElement::parameterBook::halfWidth
double halfWidth
Elongation within the sector
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:26
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonGMR4::RpcReadoutElement::defineArgs
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:43
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
MuonGMR4::RpcReadoutGeomTool::wRPCTable::stripWidthPhi
double stripWidthPhi
Phi strip width.
Definition: RpcReadoutGeomTool.h:45
MuonGMR4::MuonDetectorManager
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:61
CxxUtils::tokenize
std::vector< std::string > tokenize(const std::string &the_str, std::string_view delimiters)
Splits the string into smaller substrings.
Definition: Control/CxxUtils/Root/StringUtils.cxx:15
MuonGMR4::gapVolume::gapVolume
gapVolume(physVolWithTrans &&physVol, unsigned int gap, unsigned int phi)
Definition: RpcReadoutGeomTool.cxx:37
MuonGMR4::RpcReadoutElement::parameterBook::halfThickness
double halfThickness
Half thickness of the Rpc module.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:24
MuonGMR4::RpcReadoutGeomTool::readParameterBook
StatusCode readParameterBook(FactoryCache &cache)
Retrieves the auxillary tables from the database.
Definition: RpcReadoutGeomTool.cxx:275
MuonGMR4::RpcReadoutElement::parameterBook::layers
std::vector< StripLayerPtr > layers
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:33
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGMR4::RpcReadoutElement::parameterBook::nPanelsInPhi
int nPanelsInPhi
Each gas gap is usually subdivided into 2 phi panels which is actually the sector granularity of the ...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:32
MuonGMR4::RpcReadoutGeomTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: RpcReadoutGeomTool.h:29
MuonGMR4::RpcReadoutElement::parameterBook::etaDesign
StripDesignPtr etaDesign
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
isValid
bool isValid(const T &p)
Definition: AtlasPID.h:214
CaloSwCorrections.gap
def gap(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:212
RpcReadoutGeomTool.h
RpcIdHelper
Definition: RpcIdHelper.h:51
MuonGMR4::RpcReadoutGeomTool::FactoryCache::parameterBook
ParamBookTable parameterBook
Definition: RpcReadoutGeomTool.h:63
MuonGMR4::RpcReadoutGeomTool::FactoryCache::stripLayers
std::set< StripLayerPtr, StripLayerSorter > stripLayers
Definition: RpcReadoutGeomTool.h:62
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
IRDBAccessSvc.h
Definition of the abstract IRDBAccessSvc interface.
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
MuonGMR4
A muon chamber is a collection of readout elements belonging to the same station.
Definition: ChamberAssembleTool.h:16
EventPrimitivesToStringConverter.h
MuonGMR4::RpcReadoutElement::parameterBook::phiDesign
StripDesignPtr phiDesign
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:35
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGMR4::RpcReadoutElement::parameterBook::halfLength
double halfLength
RPC panel dimensions.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:22
MuonGMR4::RpcReadoutGeomTool::wRPCTable::numEtaStrips
unsigned int numEtaStrips
Number of eta strips.
Definition: RpcReadoutGeomTool.h:51
CxxUtils
Definition: aligned_vector.h:29
MuonDetectorManager.h
MuonGMR4::RpcReadoutGeomTool::wRPCTable::firstOffSetEta
double firstOffSetEta
Offset of the first eta strip.
Definition: RpcReadoutGeomTool.h:49
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonGMR4::layerSorter
bool layerSorter(const physVolWithTrans &a, const physVolWithTrans &b)
Definition: RpcReadoutGeomTool.cxx:48
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
MuonGMR4::RpcReadoutGeomTool::wRPCTable::stripPitchPhi
double stripPitchPhi
Phi strip pitch.
Definition: RpcReadoutGeomTool.h:41
tolerance
Definition: suep_shower.h:17
MuonGMR4::MuonReadoutElement::defineArgs::chambDesign
std::string chambDesign
chamber design name as it's occuring in the parameter book tables E.g. BMS5, RPC10,...
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:49
MuonGMR4::RpcReadoutGeomTool::wRPCTable::stripPitchEta
double stripPitchEta
Eta strip pitch.
Definition: RpcReadoutGeomTool.h:39
MuonGMR4::gapVolume
Helper struct to attribute the Identifier fields with the gas gap volumes.
Definition: RpcReadoutGeomTool.cxx:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
MuonGMR4::physVolWithTrans
IMuonGeoUtilityTool::physVolWithTrans physVolWithTrans
Definition: MdtReadoutGeomTool.cxx:25
Amg::getRotateY3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Definition: GeoPrimitivesHelpers.h:261
MuonGMR4::MuonChamber::defineArgs
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonChamber.h:42
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGMR4::RpcReadoutGeomTool::FactoryCache::stripDesigns
std::set< StripDesignPtr, StripDesignSorter > stripDesigns
Definition: RpcReadoutGeomTool.h:61
MuonGMR4::RpcReadoutGeomTool::m_geoDbTagSvc
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
Definition: RpcReadoutGeomTool.h:32
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
a
TList * a
Definition: liststreamerinfos.cxx:10
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
MuonGMR4::RpcReadoutGeomTool::FactoryCache
Definition: RpcReadoutGeomTool.h:56
GeoPrimitivesHelpers.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IRDBRecord_ptr
std::unique_ptr< IRDBRecord > IRDBRecord_ptr
Definition: IRDBRecordset.h:23
MuonGMR4::RpcReadoutGeomTool::buildReadOutElements
StatusCode buildReadOutElements(MuonDetectorManager &mgr) override final
Retrieves the GeoModel from the GeoModelSvc and append the ReadoutElements of the Given MuonDetectorT...
Definition: RpcReadoutGeomTool.cxx:217
python.changerun.pv
pv
Definition: changerun.py:81
MuonGMR4::RpcReadoutGeomTool::m_geoUtilTool
PublicToolHandle< IMuonGeoUtilityTool > m_geoUtilTool
Definition: RpcReadoutGeomTool.h:34
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
createCablingJSON.doubletPhi
int doubletPhi
Definition: createCablingJSON.py:11
MuonGMR4::MuonReadoutElement::defineArgs::detElId
Identifier detElId
ATLAS identifier.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:51
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
ActsTrk::SurfaceBoundSetPtr
std::shared_ptr< SurfaceBoundSet< BoundType > > SurfaceBoundSetPtr
Aberivation to create a new SurfaceBoundSetPtr.
Definition: SurfaceBoundSet.h:50
MuonGMR4::RpcReadoutGeomTool::wRPCTable::firstOffSetPhi
double firstOffSetPhi
Offset of the first phi strip.
Definition: RpcReadoutGeomTool.h:47
MuonGMR4::RpcReadoutElement::parameterBook::nGasGaps
unsigned int nGasGaps
The number of gas gaps (along the radial direction) in the RPC chamber (2 or 3)
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:29
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
AthAlgTool
Definition: AthAlgTool.h:26
MuonGMR4::IMuonReadoutGeomTool::physNodeMap
std::map< std::string, GeoFullPhysVol * > physNodeMap
Definition: IMuonReaoutGeomTool.h:25
MuonGMR4::MuonReadoutElement::defineArgs::physVol
GeoIntrusivePtr< GeoVFullPhysVol > physVol
Pointer to the underlying physical volume in GeoModel.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:45
python.SystemOfUnits.degree
tuple degree
Definition: SystemOfUnits.py:106
MuonGMR4::RpcReadoutGeomTool::wRPCTable::stripWidthEta
double stripWidthEta
Eta strip width.
Definition: RpcReadoutGeomTool.h:43
MuonGMR4::RpcReadoutGeomTool::wRPCTable::numPhiStrips
unsigned int numPhiStrips
Number of phi strips.
Definition: RpcReadoutGeomTool.h:53
MuonGMR4::defineArgs
MuonChamber::defineArgs defineArgs
Definition: ChamberAssembleTool.cxx:32
ServiceHandle< IRDBAccessSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
MuonGMR4::RpcReadoutGeomTool::wRPCTable
Struct to cache the relevant parameters of from the WRPC tables.
Definition: RpcReadoutGeomTool.h:37
MuonGMR4::RpcReadoutElement::createHash
static IdentifierHash createHash(const unsigned int strip, const unsigned int gasGap, const unsigned int doubPhi, const bool measPhi)
Constructs an Identifier hash from the Identifier fields controlled by this readout element