ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ActsTrk::MuonDetectorBuilderTool Class Reference

#include <MuonDetectorBuilderTool.h>

Inheritance diagram for ActsTrk::MuonDetectorBuilderTool:
Collaboration diagram for ActsTrk::MuonDetectorBuilderTool:

Public Member Functions

 MuonDetectorBuilderTool (const std::string &type, const std::string &name, const IInterface *parent)
 Standard tool constructor. More...
 
virtual ~MuonDetectorBuilderTool ()=default
 
StatusCode initialize () override final
 
Acts::Experimental::DetectorComponent construct (const Acts::GeometryContext &context) const override final
 

Private Member Functions

void processPassiveNodes (const ActsGeometryContext &gctx, const GeoChildNodeWithTrf &node, const std::string &name, std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &passiveVolumes, const GeoTrf::Transform3D &transform) const
 
void getChamberPassives (const ActsGeometryContext &gctx, const MuonGMR4::Chamber &chamber, std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &passiveVolumes) const
 
std::pair< std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume > >, std::vector< std::shared_ptr< Acts::Surface > > > constructElements (const ActsGeometryContext &gctx, const MuonGMR4::Chamber &mChamber, std::pair< unsigned int, unsigned int > chId) const
 

Private Attributes

const MuonGMR4::MuonDetectorManagerm_detMgr {nullptr}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
Gaudi::Property< bool > m_dumpDetector {this, "dumpDetector", false, "If set to true the entire MS system are dumped into a visualization file format, will take a long time with sensitives"}
 
Gaudi::Property< bool > m_dumpPassive {this, "dumpPassive", false, "If set to true the passive volumes are dumped into a visualization file format"}
 
Gaudi::Property< bool > m_dumpDetectorVolumes {this, "dumpDetectorVolumes", false, "If set to true the detector volumes are dumped into a visualization file format, will take a long time with sensitives"}
 
Gaudi::Property< bool > m_buildSensitives {this, "BuildSensitives", true, "If set to true all sensitive elements are built"}
 

Detailed Description

Definition at line 15 of file MuonDetectorBuilderTool.h.

Constructor & Destructor Documentation

◆ MuonDetectorBuilderTool()

ActsTrk::MuonDetectorBuilderTool::MuonDetectorBuilderTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Standard tool constructor.

Definition at line 61 of file MuonDetectorBuilderTool.cxx.

61  :
62  base_class(type, name, parent){}

◆ ~MuonDetectorBuilderTool()

virtual ActsTrk::MuonDetectorBuilderTool::~MuonDetectorBuilderTool ( )
virtualdefault

Member Function Documentation

◆ construct()

Acts::Experimental::DetectorComponent ActsTrk::MuonDetectorBuilderTool::construct ( const Acts::GeometryContext &  context) const
finaloverride

Definition at line 139 of file MuonDetectorBuilderTool.cxx.

139  {
140  ATH_MSG_DEBUG("Building Muon Detector Volume");
141  const MuonChamberSet chambers = m_detMgr->getAllChambers();
142  const ActsGeometryContext* gctx = context.get<const ActsGeometryContext* >();
143  std::vector< volumePtr > detectorVolumeBoundingVolumes{};
144  std::vector< volumePtr > detectorVolumePassiveVolumes{};
145 
146  detectorVolumeBoundingVolumes.reserve(chambers.size());
147  std::vector<surfacePtr> surfaces = {};
148  std::pair<std::vector<volumePtr>, std::vector<surfacePtr>> readoutElements;
149 
150  auto portalGenerator = Acts::Experimental::defaultPortalAndSubPortalGenerator();
151  unsigned int numChambers = chambers.size();
152 
153  for(const MuonGMR4::Chamber* chamber : chambers){
154  unsigned int num = 0;
155  //Gather the passives in each chamber
156  getChamberPassives(*gctx, *chamber, detectorVolumePassiveVolumes);
157  std::shared_ptr<Acts::TrapezoidVolumeBounds> bounds = chamber->bounds();
158  readoutElements = constructElements(*gctx, *chamber, std::make_pair(numChambers,num));
159  volumePtr detectorVolume = Acts::Experimental::DetectorVolumeFactory::construct(portalGenerator,
160  gctx->context(),
161  chamber->identString(),
162  chamber->localToGlobalTrans(*gctx),
163  bounds, readoutElements.second,
164  readoutElements.first,
165  Acts::Experimental::tryRootVolumes(),
166  Acts::Experimental::tryAllPortalsAndSurfaces());
167 
168  detectorVolume->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(numChambers--));
170  //If we want to view each volume independently
171  Acts::ObjVisualization3D helper;
172  Acts::GeometryView3D::drawDetectorVolume(helper, *detectorVolume, gctx->context());
173  helper.write(objFileName(chamber->identString()));
174  helper.clear();
175  }
176  detectorVolumeBoundingVolumes.push_back(std::move(detectorVolume));
177  readoutElements.first.clear();
178  readoutElements.second.clear();
179  }
180 
181  ATH_MSG_VERBOSE("Number of detector volumes: "<< detectorVolumeBoundingVolumes.size());
182  ATH_MSG_VERBOSE("Number of chamber passives volumes: "<< detectorVolumePassiveVolumes.size());
183  std::vector<GeoChildNodeWithTrf> childNodes = getChildrenWithRef(m_detMgr->getTreeTop(0), false);
184  std::set<std::string> skipNodes{"MuonBarrel", "NSW", "MuonEndcap_sideA", "MuonEndcap_sideC","TGCSystem"};
185  for (const GeoChildNodeWithTrf& node : childNodes){
186  //These are taken care of in the chambers
187  if(skipNodes.count(node.nodeName)) {
188  ATH_MSG_VERBOSE("Skipping volume "<<node.nodeName);
189  continue;
190  }
191  ATH_MSG_VERBOSE("Processing passive node "<<node.nodeName);
192  processPassiveNodes(*gctx, node, node.nodeName, detectorVolumePassiveVolumes, node.transform);
193  }
194  ATH_MSG_VERBOSE("Number of total passive volumes: "<< detectorVolumePassiveVolumes.size());
195 
196  if (m_dumpPassive){
197  ATH_MSG_VERBOSE("Writing passiveVolumes.obj");
198  Acts::ObjVisualization3D helper;
199  for (const auto& vol : detectorVolumePassiveVolumes){
200  Acts::GeometryView3D::drawDetectorVolume(helper, *vol, gctx->context());
201  }
202  helper.write(objFileName("passiveVolumes"));
203  helper.clear();
204  }
205 
206  //Add the passive volumes to the end of detectorVolumeBoundingVolumes
207  detectorVolumeBoundingVolumes.insert(detectorVolumeBoundingVolumes.end(), detectorVolumePassiveVolumes.begin(), detectorVolumePassiveVolumes.end());
208 
209  std::unique_ptr<Acts::CutoutCylinderVolumeBounds> msBounds = std::make_unique<Acts::CutoutCylinderVolumeBounds>(0, 4000, 14500, 22500, 3200);
210  volumePtr msDetectorVolume = Acts::Experimental::DetectorVolumeFactory::construct(
211  portalGenerator, gctx->context(), "Muon Spectrometer Envelope",
212  Acts::Transform3::Identity(), std::move(msBounds), surfaces,
213  detectorVolumeBoundingVolumes, Acts::Experimental::tryRootVolumes(),
214  Acts::Experimental::tryAllPortalsAndSurfaces());
215  msDetectorVolume->assignGeometryId(Acts::GeometryIdentifier{}.setVolume(15));
216 
217  if (m_dumpDetector) {
218  ATH_MSG_VERBOSE("Writing detector.obj");
219  Acts::ObjVisualization3D helper;
220  Acts::GeometryView3D::drawDetectorVolume(helper, *msDetectorVolume, gctx->context());
221  helper.write(objFileName("detector"));
222  helper.clear();
223  }
224 
225  Acts::Experimental::DetectorComponent::PortalContainer portalContainer;
226  for (auto [ip, p] : Acts::enumerate(msDetectorVolume->portalPtrs())) {
227  portalContainer[ip] = p;
228  }
229  detectorVolumeBoundingVolumes.push_back(msDetectorVolume);
230  return Acts::Experimental::DetectorComponent{
231  {detectorVolumeBoundingVolumes},
232  portalContainer,
233  {{msDetectorVolume}, Acts::Experimental::tryRootVolumes()}};
234  }

◆ constructElements()

std::pair< std::vector< volumePtr >, std::vector< surfacePtr > > ActsTrk::MuonDetectorBuilderTool::constructElements ( const ActsGeometryContext gctx,
const MuonGMR4::Chamber mChamber,
std::pair< unsigned int, unsigned int >  chId 
) const
private

Definition at line 237 of file MuonDetectorBuilderTool.cxx.

239  {
240 
241  std::vector<volumePtr> readoutDetectorVolumes{};
242  std::vector<surfacePtr> readoutSurfaces{};
243  if(!m_buildSensitives) return std::make_pair(readoutDetectorVolumes, readoutSurfaces);
244  Acts::GeometryIdentifier::Value surfId{1};
245  Acts::GeometryIdentifier::Value mdtId{1};
246 
247  const MuonGMR4::Chamber::ReadoutSet& readoutElements = mChamber.readoutEles();
248 
249  for(const MuonGMR4::MuonReadoutElement* ele : readoutElements){
250  switch (ele->detectorType()) {
251  case DetectorType::Mdt: {
252  ATH_MSG_VERBOSE("Building MultiLayer for MDT Detector Volume");
253  const auto* mdtReadoutEle = static_cast<const MuonGMR4::MdtReadoutElement*>(ele);
254  const MuonGMR4::MdtReadoutElement::parameterBook& parameters{mdtReadoutEle->getParameters()};
255  std::vector<surfacePtr> surfaces{};
256  //loop over the tubes to get the surfaces
257  for(unsigned int lay=1; lay<=mdtReadoutEle->numLayers(); ++lay){
258  for(unsigned int tube=1; tube<=mdtReadoutEle->numTubesInLay(); ++tube){
259  const IdentifierHash measHash{mdtReadoutEle->measurementHash(lay,tube)};
260  if (!mdtReadoutEle->isValid(measHash)) continue;
261  surfacePtr surface = mdtReadoutEle->surfacePtr(measHash);
262  surface->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setBoundary(mdtId).setSensitive(++surfId));
263  surfaces.push_back(surface);
264  }
265  }
266 
267  //Get the transformation to the chamber's frame
268  const Amg::Vector3D toChamber = mChamber.globalToLocalTrans(gctx)*mdtReadoutEle->center(gctx);
269  const Acts::Transform3 mdtTransform = mChamber.localToGlobalTrans(gctx) * Amg::getTranslate3D(toChamber);
270 
271  Acts::Experimental::MultiWireStructureBuilder::Config mlCfg{};
272  mlCfg.name = m_idHelperSvc->toStringDetEl(mdtReadoutEle->identify());
273  mlCfg.mlSurfaces = std::move(surfaces);
274  mlCfg.transform = mdtTransform;
275  auto mdtBounds = std::make_unique<Acts::TrapezoidVolumeBounds>(parameters.shortHalfX, parameters.longHalfX, parameters.halfY, parameters.halfHeight);
276  using BoundsV = Acts::TrapezoidVolumeBounds::BoundValues;
277  mlCfg.mlBounds= mdtBounds->values();
278  mlCfg.mlBinning = {Acts::Experimental::ProtoBinning(Acts::BinningValue::binY, Acts::AxisBoundaryType::Bound,
279  -mdtBounds->get(BoundsV::eHalfLengthXnegY),
280  mdtBounds->get(BoundsV::eHalfLengthXposY),
281  std::lround(2*mdtBounds->get(BoundsV::eHalfLengthXposY)/parameters.tubePitch), 0u),
282  Acts::Experimental::ProtoBinning(Acts::BinningValue::binZ, Acts::AxisBoundaryType::Bound,
283  -mdtBounds->get(BoundsV::eHalfLengthY),
284  mdtBounds->get(BoundsV::eHalfLengthY),
285  std::lround(2*mdtBounds->get(BoundsV::eHalfLengthY)/parameters.tubePitch), 0u)};
286 
287  Acts::Experimental::MultiWireStructureBuilder mdtBuilder(mlCfg);
288  volumePtr mdtVolume = mdtBuilder.construct(gctx.context()).volumes[0];
289  mdtVolume->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setBoundary(mdtId++));
290  readoutDetectorVolumes.push_back(mdtVolume);
291  break;
292  } case DetectorType::Rpc:
293  case DetectorType::Tgc:
294  case DetectorType::sTgc:
295  case DetectorType::Mm: {
296  ATH_MSG_VERBOSE("Building plane surfaces "<<m_idHelperSvc->toStringDetEl(ele->identify()));
297  std::vector<surfacePtr> detSurfaces = ele->getSurfaces();
298  for (surfacePtr& surf : detSurfaces) {
299  surf->assignGeometryId(Acts::GeometryIdentifier{}.setLayer(chId.first).setVolume(chId.second).setSensitive(++surfId));
300  readoutSurfaces.push_back(std::move(surf));
301  }
302  break;
303  } default:
304  THROW_EXCEPTION("Unknown detector type "<<ActsTrk::to_string(ele->detectorType()));
305  }
306  }
307 
308  return std::make_pair(std::move(readoutDetectorVolumes), std::move(readoutSurfaces));
309 
310  }

◆ getChamberPassives()

void ActsTrk::MuonDetectorBuilderTool::getChamberPassives ( const ActsGeometryContext gctx,
const MuonGMR4::Chamber chamber,
std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &  passiveVolumes 
) const
private

Definition at line 72 of file MuonDetectorBuilderTool.cxx.

74  {
75 
76  for(const MuonGMR4::MuonReadoutElement* ele : chamber.readoutEles()){
77  const GeoVFullPhysVol* readOutVol = ele->getMaterialGeom();
78  PVConstLink parentVolume = readOutVol->getParent();
79  const Amg::Transform3D stationTransform = parentVolume->getX();
80  //Loop through the parent, skipping the fullphysvol which are the readOutElements
81  const std::vector<GeoChildNodeWithTrf> children = getChildrenWithRef(parentVolume, false);
82  for(const GeoChildNodeWithTrf& childNode : children){
83  auto& childVol = *(childNode.volume);
84  if(typeid(childVol) == typeid(GeoFullPhysVol)){
85  continue;
86  }
87  ATH_MSG_VERBOSE("Processing " << childNode.nodeName);
88  const GeoShape* shape = childNode.volume->getLogVol()->getShape();
89  if(shape->typeID() == GeoSimplePolygonBrep::getClassTypeID() or
90  shape->typeID() == GeoShapeUnion::getClassTypeID() or
91  shape->typeID() == GeoShapeShift::getClassTypeID() or
92  shape->typeID() == GeoShapeSubtraction::getClassTypeID()){
93  //Skip these for now until https://github.com/acts-project/acts/pull/3713 is merged in
94  continue;
95  }
96  const GeoMaterial* geoMaterial = childNode.volume->getLogVol()->getMaterial();
97  const Acts::Material aMat = Acts::GeoModel::geoMaterialConverter(*geoMaterial);
98  std::shared_ptr<Acts::HomogeneousVolumeMaterial> material = std::make_shared<Acts::HomogeneousVolumeMaterial>(aMat);
99  volumePtr passiveVolume = Acts::GeoModel::convertDetectorVolume(gctx.context(), *shape, "PASSIVE_"+childNode.nodeName+std::to_string(passiveVolumes.size()), childNode.transform * stationTransform, {});
100  passiveVolume->assignVolumeMaterial(material);
101  passiveVolume->assignGeometryId(Acts::GeometryIdentifier{}.setVolume(30).setSensitive(passiveVolumes.size()));
102  passiveVolumes.push_back(passiveVolume);
103  }
104  }
105  }

◆ initialize()

StatusCode ActsTrk::MuonDetectorBuilderTool::initialize ( )
finaloverride

Definition at line 64 of file MuonDetectorBuilderTool.cxx.

64  {
66  ATH_CHECK(m_idHelperSvc.retrieve());
67  ATH_MSG_DEBUG("ACTS version is: v"<< Acts::VersionMajor << "." << Acts::VersionMinor << "." << Acts::VersionPatch << " [" << Acts::CommitHash << "]");
68 
69  return StatusCode::SUCCESS;
70  }

◆ processPassiveNodes()

void ActsTrk::MuonDetectorBuilderTool::processPassiveNodes ( const ActsGeometryContext gctx,
const GeoChildNodeWithTrf &  node,
const std::string &  name,
std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &  passiveVolumes,
const GeoTrf::Transform3D &  transform 
) const
private

Definition at line 107 of file MuonDetectorBuilderTool.cxx.

111  {
112  std::vector<GeoChildNodeWithTrf> children = getChildrenWithRef(node.volume, false);
113  for(const GeoChildNodeWithTrf& childNode : children){
114  ATH_MSG_DEBUG("Child transform " << GeoTrf::toString(childNode.transform) << " Parent transform " << GeoTrf::toString(transform));
115  ATH_MSG_DEBUG("Combined transform " << GeoTrf::toString(transform * childNode.transform));
116  ATH_MSG_DEBUG("Child name " << name+"/"+childNode.nodeName);
117  processPassiveNodes(gctx, childNode, name+"/"+childNode.nodeName, passiveVolumes, transform * childNode.transform);
118  }
119  if (!children.empty()) return;
120  ATH_MSG_VERBOSE("Drawing volume named "<<name);
121  const GeoShape* shape = node.volume->getLogVol()->getShape();
122  if(shape->typeID() == GeoSimplePolygonBrep::getClassTypeID() or
123  shape->typeID() == GeoShapeUnion::getClassTypeID() or
124  shape->typeID() == GeoShapeShift::getClassTypeID() or
125  shape->typeID() == GeoShapeSubtraction::getClassTypeID()){
126  //Skip these for now until https://github.com/acts-project/acts/pull/3713 is merged in
127  return;
128  }
129  const GeoMaterial* geoMaterial = node.volume->getLogVol()->getMaterial();
130  const Acts::Material aMat = Acts::GeoModel::geoMaterialConverter(*geoMaterial);
131  std::shared_ptr<Acts::HomogeneousVolumeMaterial> material = std::make_shared<Acts::HomogeneousVolumeMaterial>(aMat);
132  ATH_MSG_DEBUG("FINAL TRANSFORM " << GeoTrf::toString(transform));
133  volumePtr volume = Acts::GeoModel::convertDetectorVolume(gctx.context(), *shape, name + "_" + std::to_string(passiveVolumes.size()), transform, {});
134  volume->assignGeometryId(Acts::GeometryIdentifier{}.setVolume(30).setSensitive(passiveVolumes.size()));
135  volume->assignVolumeMaterial(material);
136  passiveVolumes.push_back(volume);
137  }

Member Data Documentation

◆ m_buildSensitives

Gaudi::Property<bool> ActsTrk::MuonDetectorBuilderTool::m_buildSensitives {this, "BuildSensitives", true, "If set to true all sensitive elements are built"}
private

Definition at line 49 of file MuonDetectorBuilderTool.h.

◆ m_detMgr

const MuonGMR4::MuonDetectorManager* ActsTrk::MuonDetectorBuilderTool::m_detMgr {nullptr}
private

Definition at line 40 of file MuonDetectorBuilderTool.h.

◆ m_dumpDetector

Gaudi::Property<bool> ActsTrk::MuonDetectorBuilderTool::m_dumpDetector {this, "dumpDetector", false, "If set to true the entire MS system are dumped into a visualization file format, will take a long time with sensitives"}
private

Definition at line 43 of file MuonDetectorBuilderTool.h.

◆ m_dumpDetectorVolumes

Gaudi::Property<bool> ActsTrk::MuonDetectorBuilderTool::m_dumpDetectorVolumes {this, "dumpDetectorVolumes", false, "If set to true the detector volumes are dumped into a visualization file format, will take a long time with sensitives"}
private

Definition at line 47 of file MuonDetectorBuilderTool.h.

◆ m_dumpPassive

Gaudi::Property<bool> ActsTrk::MuonDetectorBuilderTool::m_dumpPassive {this, "dumpPassive", false, "If set to true the passive volumes are dumped into a visualization file format"}
private

Definition at line 45 of file MuonDetectorBuilderTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> ActsTrk::MuonDetectorBuilderTool::m_idHelperSvc {this, "IdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 41 of file MuonDetectorBuilderTool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
Trk::binZ
@ binZ
Definition: BinningType.h:49
calibdata.chamber
chamber
Definition: calibdata.py:32
ActsTrk::MuonDetectorBuilderTool::processPassiveNodes
void processPassiveNodes(const ActsGeometryContext &gctx, const GeoChildNodeWithTrf &node, const std::string &name, std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &passiveVolumes, const GeoTrf::Transform3D &transform) const
Definition: MuonDetectorBuilderTool.cxx:107
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
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::Chamber &mChamber, std::pair< unsigned int, unsigned int > chId) const
Definition: MuonDetectorBuilderTool.cxx:237
ActsTrk::surfacePtr
std::shared_ptr< Acts::Surface > surfacePtr
Definition: MuonDetectorBuilderTool.cxx:58
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ActsTrk::DetectorType::sTgc
@ sTgc
Micromegas (NSW)
THROW_EXCEPTION
#define THROW_EXCEPTION(MSG)
Definition: MMReadoutElement.cxx:48
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
runBeamSpotCalibration.helper
helper
Definition: runBeamSpotCalibration.py:112
ActsGeometryContext::context
Acts::GeometryContext context() const
Definition: ActsGeometryContext.h:45
MuonGMR4::Chamber
Definition: Chamber.h:22
Trk::binY
@ binY
Definition: BinningType.h:48
ActsTrk::MuonDetectorBuilderTool::m_dumpPassive
Gaudi::Property< bool > m_dumpPassive
Definition: MuonDetectorBuilderTool.h:45
ActsTrk::MuonDetectorBuilderTool::getChamberPassives
void getChamberPassives(const ActsGeometryContext &gctx, const MuonGMR4::Chamber &chamber, std::vector< std::shared_ptr< Acts::Experimental::DetectorVolume >> &passiveVolumes) const
Definition: MuonDetectorBuilderTool.cxx:72
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ActsTrk::DetectorType::Mm
@ Mm
Maybe not needed in the migration.
MuonGMR4::MdtReadoutElement::parameterBook
Set of parameters to describe a MDT chamber.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:27
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
ActsTrk::MuonDetectorBuilderTool::m_buildSensitives
Gaudi::Property< bool > m_buildSensitives
Definition: MuonDetectorBuilderTool.h:49
MuonGMR4::Chamber::ReadoutSet
std::vector< const MuonReadoutElement * > ReadoutSet
Define the list of read out elements of the chamber.
Definition: Chamber.h:25
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
ActsTrk::volumePtr
std::shared_ptr< DetectorVolume > volumePtr
Definition: MuonDetectorBuilderTool.cxx:57
MuonGMR4::Chamber::localToGlobalTrans
const Amg::Transform3D & localToGlobalTrans(const ActsGeometryContext &gctx) const
Returns the transformation chamber frame -> global transformation.
Definition: Chamber.cxx:75
test_pyathena.parent
parent
Definition: test_pyathena.py:15
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:27
ActsTrk::objFileName
std::string objFileName(std::string str)
Definition: MuonDetectorBuilderTool.cxx:51
MuonChamberSet
MuonGMR4::MuonDetectorManager::MuonChamberSet MuonChamberSet
Definition: MuonDetectorBuilderTool.cxx:47
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
MuonGMR4::MuonDetectorManager::getTreeTop
PVConstLink getTreeTop(unsigned int i) const override final
Returns the i-th top node of the MuonSystem trees.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:133
ActsTrk::DetectorType::Mdt
@ Mdt
MuonSpectrometer.
MuonGMR4::Chamber::readoutEles
const ReadoutSet & readoutEles() const
Returns the list of contained readout elements.
Definition: Chamber.cxx:72
ActsTrk::MuonDetectorBuilderTool::m_dumpDetector
Gaudi::Property< bool > m_dumpDetector
Definition: MuonDetectorBuilderTool.h:43
MuonGMR4::MdtReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:22
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
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::MuonDetectorBuilderTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonDetectorBuilderTool.h:41
ActsTrk::MuonDetectorBuilderTool::m_dumpDetectorVolumes
Gaudi::Property< bool > m_dumpDetectorVolumes
Definition: MuonDetectorBuilderTool.h:47
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ActsTrk::DetectorType::Rpc
@ Rpc
Monitored Drift Tubes.
python.DecayParser.children
children
Definition: DecayParser.py:32
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
ActsTrk::MuonDetectorBuilderTool::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
Definition: MuonDetectorBuilderTool.h:40
MuonGMR4::Chamber::globalToLocalTrans
Amg::Transform3D globalToLocalTrans(const ActsGeometryContext &gctx) const
Returns the global -> local transformation.
Definition: Chamber.cxx:78
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
MuonGMR4::MuonDetectorManager::getAllChambers
MuonChamberSet getAllChambers() const
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:176
Material
@ Material
Definition: MaterialTypes.h:8
calibdata.tube
tube
Definition: calibdata.py:31
node
Definition: memory_hooks-stdcmalloc.h:74
Amg::getTranslate3D
Amg::Transform3D getTranslate3D(const double X, const double Y, const double Z)
: Returns a shift transformation along an arbitrary axis
Definition: GeoPrimitivesHelpers.h:289