ATLAS Offline Software
MuonDetectorBuilderTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
5 
12 
13 
14 #include "Acts/ActsVersion.hpp"
15 #include "Acts/Geometry/CutoutCylinderVolumeBounds.hpp"
16 #include "Acts/Geometry/CylinderVolumeBounds.hpp"
17 #include "Acts/Geometry/TrapezoidVolumeBounds.hpp"
18 #include "Acts/Visualization/GeometryView3D.hpp"
19 #include "Acts/Detector/DetectorVolume.hpp"
20 #include "Acts/Detector/PortalGenerators.hpp"
21 #include "Acts/Navigation/DetectorVolumeFinders.hpp"
22 #include "Acts/Navigation/InternalNavigation.hpp"
23 #include "Acts/Navigation/NavigationDelegates.hpp"
24 #include "Acts/Navigation/NavigationState.hpp"
25 #include "Acts/Visualization/ObjVisualization3D.hpp"
26 #include "Acts/Detector/MultiWireStructureBuilder.hpp"
27 #include "Acts/Geometry/GeometryIdentifier.hpp"
28 
29 #include<climits>
30 
31 
32 
34 namespace ActsTrk {
35 
36  using volumePtr= std::shared_ptr<Acts::Experimental::DetectorVolume>;
37  using surfacePtr = std::shared_ptr<Acts::Surface>;
39 
40  MuonDetectorBuilderTool::MuonDetectorBuilderTool( const std::string& type, const std::string& name, const IInterface* parent ):
42  declareInterface<IDetectorVolumeBuilderTool>(this);
43  }
44 
47  ATH_CHECK(m_idHelperSvc.retrieve());
48  ATH_MSG_DEBUG("ACTS version is: v"<< Acts::VersionMajor << "." << Acts::VersionMinor << "." << Acts::VersionPatch << " [" << Acts::CommitHash << "]");
49 
50  return StatusCode::SUCCESS;
51  }
52 
53  Acts::Experimental::DetectorComponent MuonDetectorBuilderTool::construct(const Acts::GeometryContext& context) const{
54  ATH_MSG_DEBUG("Building Muon Detector Volume");
55  const MuonChamberSet chambers = m_detMgr->getAllChambers();
56  using ChamberIdKey = std::pair<Muon::MuonStationIndex::ChIndex, unsigned int>;
57  using EnvelopeIdentifierMap = std::map<ChamberIdKey, unsigned int>;
58  using ChamberIdentifierMap = std::map<unsigned int, unsigned int>;
59  EnvelopeIdentifierMap volIds{};
60  ChamberIdentifierMap chamberIds{};
61  const ActsGeometryContext* gctx = context.get<const ActsGeometryContext* >();
62  std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume > > detectorVolumeBoundingVolumes{};
63  detectorVolumeBoundingVolumes.reserve(chambers.size());
64  std::vector<surfacePtr> surfaces = {};
65  std::pair<std::vector<volumePtr>, std::vector<surfacePtr>> readoutElements;
66 
67  auto portalGenerator = Acts::Experimental::defaultPortalGenerator();
68 
69  for(const MuonGMR4::MuonChamber* chamber : chambers){
70  unsigned int volNumb = volIds[std::make_pair(chamber->chamberIndex(), chamber->stationPhi())];
71  if (!volNumb) volNumb = volIds.size();
72 
73  unsigned int chNumb = (++chamberIds[volNumb]);
74 
75  std::shared_ptr<Acts::TrapezoidVolumeBounds> bounds = chamber->bounds();
76  readoutElements = constructElements(*gctx, *chamber, std::make_pair(volNumb,chNumb));
77  volumePtr detectorVolume = Acts::Experimental::DetectorVolumeFactory::construct(
78  portalGenerator, gctx->context(), std::to_string(chamber->stationName())+"_"+std::to_string(chamber->stationEta())+"_"+std::to_string(chamber->stationPhi()), chamber->localToGlobalTrans(*gctx),
79  bounds, readoutElements.second, readoutElements.first, Acts::Experimental::tryAllSubVolumes(), Acts::Experimental::tryAllPortalsAndSurfaces());
80  detectorVolume->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(volNumb).setVolume(chNumb));
81  if(m_dumpVisual){
82  //If we want to view each volume independently
83  const MuonGMR4::MuonChamber::ReadoutSet readOut = chamber->readOutElements();
84 
85  Acts::ObjVisualization3D helper;
86  Acts::GeometryView3D::drawDetectorVolume(helper, *detectorVolume, gctx->context());
87  helper.write(m_idHelperSvc->toStringDetEl(readOut[0]->identify())+".obj");
88  helper.clear();
89  }
90  detectorVolumeBoundingVolumes.push_back(std::move(detectorVolume));
91  readoutElements.first.clear();
92  readoutElements.second.clear();
93  }
94  std::unique_ptr<Acts::CutoutCylinderVolumeBounds> msBounds = std::make_unique<Acts::CutoutCylinderVolumeBounds>(0, 4000, 145000, 220000, 3200);
95  volumePtr msDetectorVolume = Acts::Experimental::DetectorVolumeFactory::construct(
96  portalGenerator, gctx->context(), "Envelope",
97  Acts::Transform3::Identity(), std::move(msBounds), surfaces,
98  detectorVolumeBoundingVolumes, Acts::Experimental::tryAllSubVolumes(),
99  Acts::Experimental::tryAllPortalsAndSurfaces());
100  msDetectorVolume->assignGeometryId(Acts::GeometryIdentifier{}.setVolume(15));
101 
102  if (m_dumpVisual) {
103  ATH_MSG_VERBOSE("Writing detector.obj");
104  Acts::ObjVisualization3D helper;
105  Acts::GeometryView3D::drawDetectorVolume(helper, *msDetectorVolume, gctx->context());
106  helper.write("detector.obj");
107  helper.clear();
108 
109  }
110 
111  Acts::Experimental::DetectorComponent::PortalContainer portalContainer;
112  for (auto [ip, p] : Acts::enumerate(msDetectorVolume->portalPtrs())) {
113  portalContainer[ip] = p;
114  }
115 
116  return Acts::Experimental::DetectorComponent{
117  {msDetectorVolume},
118  portalContainer,
119  {{msDetectorVolume}, Acts::Experimental::tryRootVolumes()}};
120  }
121 
122 std::pair<std::vector<volumePtr>,std::vector<surfacePtr>> MuonDetectorBuilderTool::constructElements(const ActsGeometryContext& gctx, const MuonGMR4::MuonChamber& mChamber, std::pair<unsigned int, unsigned int> chId) const{
123 
124  std::vector<volumePtr> readoutDetectorVolumes = {};
125  std::vector<surfacePtr> readoutSurfaces = {};
126  std::pair<std::vector<volumePtr>, std::vector<surfacePtr>> pairElements;
127  Acts::GeometryIdentifier::Value surfId{1};
128  Acts::GeometryIdentifier::Value mdtId{1};
129 
130  MuonGMR4::MuonChamber::ReadoutSet readoutElements = mChamber.readOutElements();
131 
132  for(const MuonGMR4::MuonReadoutElement* ele : readoutElements){
133 
134  if(ele->detectorType() == DetectorType::Mdt){
135 
136  ATH_MSG_VERBOSE("Building MultiLayer for MDT Detector Volume");
137  const MuonGMR4::MdtReadoutElement* mdtReadoutEle = static_cast<const MuonGMR4::MdtReadoutElement*>(ele);
139  std::vector<surfacePtr> surfaces = {};
140 
141  //loop over the tubes to get the surfaces
142  for(unsigned int lay=1; lay<=mdtReadoutEle->numLayers(); ++lay){
143  for(unsigned int tube=1; tube<=mdtReadoutEle->numTubesInLay(); ++tube){
144  const IdentifierHash measHash{mdtReadoutEle->measurementHash(lay,tube)};
145  if (!mdtReadoutEle->isValid(measHash)) continue;
146  surfacePtr surface = mdtReadoutEle->surfacePtr(measHash);
147  surface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setBoundary(mdtId).setSensitive(++surfId));
148  surfaces.push_back(surface);
149 
150  }
151  }
152 
153  //Get the transformation to the chamber's frame
154  const Amg::Vector3D toChamber = mChamber.globalToLocalTrans(gctx)*mdtReadoutEle->center(gctx);
155 
156  const Amg::Vector3D boxCenter = toChamber;
157 
158  const Acts::Transform3 mdtTransform = mChamber.localToGlobalTrans(gctx) * Amg::Translation3D(boxCenter);
159 
160  Acts::Experimental::MultiWireStructureBuilder::Config mlCfg;
161 
162  mlCfg.name = "MDT_MultiLayer" + std::to_string(mdtReadoutEle->multilayer()) + "_" + std::to_string(mdtReadoutEle->stationName())+ "_"+std::to_string(mdtReadoutEle->stationEta())+"_"+std::to_string(mdtReadoutEle->stationPhi());
163  mlCfg.mlSurfaces = surfaces;
164  mlCfg.transform = mdtTransform;
165  std::unique_ptr<Acts::TrapezoidVolumeBounds> mdtBounds = std::make_unique<Acts::TrapezoidVolumeBounds>(parameters.shortHalfX, parameters.longHalfX, parameters.halfY, parameters.halfHeight);
166  mlCfg.mlBounds= mdtBounds->values();
167  mlCfg.mlBinning = {Acts::Experimental::ProtoBinning(Acts::binY, Acts::detail::AxisBoundaryType::Bound,
168  -mdtBounds->values()[1], mdtBounds->values()[1], std::lround(2*mdtBounds->values()[1]/parameters.tubePitch), 0u), Acts::Experimental::ProtoBinning(Acts::binZ, Acts::detail::AxisBoundaryType::Bound,
169  -mdtBounds->values()[2], mdtBounds->values()[2], std::lround(2*mdtBounds->values()[2]/parameters.tubePitch), 0u)};
170 
171  Acts::Experimental::MultiWireStructureBuilder mdtBuilder(mlCfg);
172  volumePtr mdtVolume = mdtBuilder.construct(gctx.context()).volumes[0];
173  mdtVolume->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setBoundary(mdtId++));
174 
175 
176  readoutDetectorVolumes.push_back(mdtVolume);
177 
178  }else if(ele->detectorType() == DetectorType::Rpc){
179 
180  ATH_MSG_VERBOSE("Building RPC plane surface");
181  const MuonGMR4::RpcReadoutElement* rpcReadoutEle = static_cast<const MuonGMR4::RpcReadoutElement*>(ele);
183  //loop over the layers to get the surfaces
184  for(const StripLayerPtr& layer : parameters.layers){
185  if (!layer) continue;
186  const IdentifierHash layerHash = layer->hash();
187  surfacePtr rpcSurface = rpcReadoutEle->surfacePtr(layerHash);
188  rpcSurface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setSensitive(++surfId));
189  readoutSurfaces.push_back(rpcSurface);
190  }
191 
192 
193  }else if(ele->detectorType() == DetectorType::Tgc){
194 
195  ATH_MSG_VERBOSE("Building TGC plane surface ");
196  const MuonGMR4::TgcReadoutElement* tgcReadoutEle = static_cast<const MuonGMR4::TgcReadoutElement*>(ele);
198  //loop over the layers to get the surfaces
199  for(const StripLayerPtr& layerPtr : parameters.sensorLayouts){
200  if (!layerPtr) continue;
201  const IdentifierHash layerHash = layerPtr->hash();
202  surfacePtr tgcSurface = tgcReadoutEle->surfacePtr(layerHash);
203  tgcSurface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setSensitive(++surfId));
204 
205  readoutSurfaces.push_back(tgcSurface);
206 
207  }
208 
209  }else if(ele->detectorType() == DetectorType::sTgc){
210 
211  ATH_MSG_VERBOSE("Building Stgc strip layers");
212  const MuonGMR4::sTgcReadoutElement* sTgcReadoutEle = static_cast<const MuonGMR4::sTgcReadoutElement*>(ele);
213  const MuonGMR4::sTgcReadoutElement::parameterBook& paramaters{sTgcReadoutEle->getParameters()};
214  //loop over the layers to get the surfaces
215  for(const MuonGMR4::StripLayer& layer : paramaters.stripLayers){
216  const IdentifierHash layerHash = layer.hash();
217  surfacePtr stgcSurface = sTgcReadoutEle->surfacePtr(layerHash);
218  stgcSurface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setSensitive(++surfId));
219 
220  readoutSurfaces.push_back(stgcSurface);
221  }
222  }else if(ele->detectorType() == DetectorType::Mm){
223  ATH_MSG_VERBOSE("Building Mmg layers");
224  const MuonGMR4::MmReadoutElement* mmReadoutEle = static_cast<const MuonGMR4::MmReadoutElement*>(ele);
226  //loop over the layers to get the surfaces
227  for(const StripLayerPtr& layer : parameters.layers){
228  const IdentifierHash layerHash = layer->hash();
229  surfacePtr mmSurface = mmReadoutEle->surfacePtr(layerHash);
230  mmSurface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setSensitive(++surfId));
231 
232  readoutSurfaces.push_back(mmSurface);
233  }
234 
235  }else{
236  ATH_MSG_VERBOSE("No detector type supported");
237 
238  }
239 
240  }
241 
242  pairElements = std::make_pair(readoutDetectorVolumes, readoutSurfaces);
243 
244 return pairElements;
245 
246 }
247 
248 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ActsTrk::MuonDetectorBuilderTool::construct
Acts::Experimental::DetectorComponent construct(const Acts::GeometryContext &context) const override final
Definition: MuonDetectorBuilderTool.cxx:53
GeoModel::TransientConstSharedPtr
The TransientConstSharedPtr allows non-const access if the pointer itself is non-const but in the con...
Definition: TransientConstSharedPtr.h:13
MuonGMR4::MmReadoutElement
Definition: MmReadoutElement.h:18
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
MuonGMR4::MdtReadoutElement::numTubesInLay
unsigned int numTubesInLay() const
Returns the number of tubes per layer.
MuonGMR4::MmReadoutElement::parameterBook
Set of parameters to describe a RPC chamber.
Definition: MmReadoutElement.h:23
Trk::binZ
@ binZ
Definition: BinningType.h:49
calibdata.chamber
chamber
Definition: calibdata.py:32
MuonGMR4::MdtReadoutElement::measurementHash
static IdentifierHash measurementHash(unsigned int layerNumber, unsigned int tubeNumber)
Transform the layer and tube number to the measurementHash.
ActsTrk::DetectorType::Tgc
@ Tgc
Resitive Plate Chambers.
MuonGMR4::MuonReadoutElement
The MuonReadoutElement is an abstract class representing the geometry representing the muon detector.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonReadoutElement.h:38
MuonGMR4::MuonChamber::ReadoutSet
std::vector< const MuonReadoutElement * > ReadoutSet
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonChamber.h:41
MuonGMR4::MuonChamber
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonChamber.h:39
ActsTrk::surfacePtr
std::shared_ptr< Acts::Surface > surfacePtr
Definition: MuonDetectorBuilderTool.cxx:37
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ActsTrk::DetectorType::sTgc
@ sTgc
Micromegas (NSW)
MuonGMR4::RpcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:14
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
MuonGMR4::RpcReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/RpcReadoutElement.cxx:30
MuonGMR4::RpcReadoutElement::parameterBook
Set of parameters to describe a RPC chamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:18
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:112
ActsTrk::MuonDetectorBuilderTool::MuonDetectorBuilderTool
MuonDetectorBuilderTool(const std::string &type, const std::string &name, const IInterface *parent)
Standard tool constructor.
Definition: MuonDetectorBuilderTool.cxx:40
MuonDetectorBuilderTool.h
ActsGeometryContext::context
Acts::GeometryContext context() const
Definition: ActsGeometryContext.h:46
MuonGMR4::MdtReadoutElement::multilayer
unsigned int multilayer() const
Returns the multi layer of the MdtReadoutElement.
sTgcReadoutElement.h
Trk::binY
@ binY
Definition: BinningType.h:48
ActsTrk::MuonDetectorBuilderTool::initialize
StatusCode initialize() override final
Definition: MuonDetectorBuilderTool.cxx:45
MuonGMR4::TgcReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/TgcReadoutElement.cxx:27
ActsTrk::DetectorType::Mm
@ Mm
Maybe not needed in the migration.
MuonGMR4::MuonChamber::readOutElements
const ReadoutSet & readOutElements() const
Returns the list of all associated readout elements.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonChamber.cxx:67
MuonGMR4::MdtReadoutElement::parameterBook
Set of parameters to describe a MDT chamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:20
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
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonGMR4::MuonDetectorManager::MuonChamberSet
std::set< const MuonChamber *, ChamberSorter > MuonChamberSet
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:103
MuonGMR4::sTgcReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/sTgcReadoutElement.cxx:26
MuonGMR4::MdtReadoutElement::numLayers
unsigned int numLayers() const
Returns the number of tube layer.
MuonGMR4::TgcReadoutElement::parameterBook
Set of parameters to describe a Tgc chamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/TgcReadoutElement.h:21
test_pyathena.parent
parent
Definition: test_pyathena.py:15
MuonChamber.h
MuonGMR4::MuonReadoutElement::center
Amg::Vector3D center(const ActsGeometryContext &ctx) const
Returns the detector center (Which is the same as the detector center of the first measurement layer)
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:28
MuonChamberSet
MuonGMR4::MuonDetectorManager::MuonChamberSet MuonChamberSet
Definition: MuonDetectorBuilderTool.cxx:33
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
MuonGMR4::MmReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MmReadoutElement.cxx:30
MuonGMR4::MdtReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:15
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ActsTrk::volumePtr
std::shared_ptr< Acts::Experimental::DetectorVolume > volumePtr
Definition: MuonDetectorBuilderTool.cxx:36
MuonGMR4::sTgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:19
RpcReadoutElement.h
ActsTrk::MuonDetectorBuilderTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetectorBuilderTool.h:29
MuonGMR4::MuonChamber::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &gctx) const
Returns the transformation of the MuonChamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonChamber.cxx:68
MuonGMR4::StripLayer
Definition: StripLayer.h:10
MuonGMR4::MuonReadoutElement::stationName
int stationName() const
Returns the stationName (BIS, BOS, etc) encoded into the integer.
ActsTrk::MuonDetectorBuilderTool::m_dumpVisual
Gaudi::Property< bool > m_dumpVisual
Definition: MuonDetectorBuilderTool.h:31
MuonGMR4::MuonDetectorManager::getAllChambers
MuonChamberSet getAllChambers() const
: Returns all MuonChambers associated with the readout geometry
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:150
MuonGMR4::MuonReadoutElement::surfacePtr
std::shared_ptr< Acts::Surface > surfacePtr(const IdentifierHash &hash) const
Returns the pointer associated to a certain wire / plane.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonReadoutElement.cxx:84
MdtReadoutElement.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
ActsTrk::DetectorType::Rpc
@ Rpc
Monitored Drift Tubes.
MuonGMR4::sTgcReadoutElement::parameterBook
Set of parameters to describe an sTGC chamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/sTgcReadoutElement.h:38
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MuonDetectorBuilderTool.cxx:34
MuonGMR4::MuonReadoutElement::stationEta
int stationEta() const
Returns the stationEta (positive A site, negative O site)
MuonGMR4::MdtReadoutElement::getParameters
const parameterBook & getParameters() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MdtReadoutElement.cxx:34
ActsTrk::MuonDetectorBuilderTool::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
Definition: MuonDetectorBuilderTool.h:28
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
Definition: IdentifierHash.h:38
ActsTrk::MuonDetectorBuilderTool::constructElements
std::pair< std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume > >, std::vector< std::shared_ptr< Acts::Surface > > > constructElements(const ActsGeometryContext &gctx, const MuonGMR4::MuonChamber &mChamber, std::pair< unsigned int, unsigned int > chId) const
Definition: MuonDetectorBuilderTool.cxx:122
MuonGMR4::MuonChamber::globalToLocalTrans
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &gctx) const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonChamber.cxx:71
TgcReadoutElement.h
MuonGMR4::MdtReadoutElement::isValid
bool isValid(const IdentifierHash &measHash) const
MuonGMR4::MuonReadoutElement::stationPhi
int stationPhi() const
Returns the stationPhi (1-8) -> sector (2*phi - (isSmall))
MuonGMR4::TgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/TgcReadoutElement.h:16
calibdata.tube
tube
Definition: calibdata.py:31
MmReadoutElement.h