5#ifndef ACTSMUONDETECTOR_MUONBLUEPRINTNODEBUILDER_H
6#define ACTSMUONDETECTOR_MUONBLUEPRINTNODEBUILDER_H
10#include <GaudiKernel/MsgStream.h>
17#include "Acts/Utilities/BoundFactory.hpp"
18#include "Acts/Surfaces/PlanarBounds.hpp"
19#include "Acts/Surfaces/Surface.hpp"
29 class GeometryContext;
31 class StaticBlueprintNode;
47 using staticNodePtr = std::shared_ptr<Acts::Experimental::StaticBlueprintNode>;
78 using base_class::base_class;
83 std::shared_ptr<Acts::Experimental::BlueprintNode>
buildBlueprintNode(
const Acts::GeometryContext& gctx,
84 std::shared_ptr<Acts::Experimental::BlueprintNode>&& childNode)
override;
101 const Acts::GeometryIdentifier& chId,
102 Acts::VolumeBoundFactory& boundsFactory)
const
103 requires(std::is_same_v<T, MuonGMR4::Chamber> ||
104 std::is_same_v<T, MuonGMR4::SpectrometerSector>);
110 template <
typename ElementSet_t>
112 const std::unordered_map<unsigned int, ElementSet_t>& elementsPerStation)
const;
122 const std::vector<StIdx>& stationNames,
124 requires(std::is_same_v<T, MuonGMR4::Chamber> ||
125 std::is_same_v<T, MuonGMR4::SpectrometerSector>);
137 const std::string& name,
138 const Acts::GeometryIdentifier&
id,
139 Acts::VolumeBoundFactory& boundsFactory,
140 const std::vector<ChIdx>& passiveStationIds = {})
const;
Helper class to build a Blueprint node of the muon system.
BluePrintSurfPairs_t getSensitiveElements(const ActsTrk::GeometryContext &gctx, const T &element, const Acts::GeometryIdentifier &chId, Acts::VolumeBoundFactory &boundsFactory) const
Get the chamber's sensitive elements.
std::pair< DetIdx, LayIdx > DetLayIdx_t
Abrivation for the stations indices.
std::shared_ptr< Acts::Experimental::BlueprintNode > buildBlueprintNode(const Acts::GeometryContext &gctx, std::shared_ptr< Acts::Experimental::BlueprintNode > &&childNode) override
Build the Muon Blueprint Node.
MuonGMR4::MuonDetectorManager::MuonChamberSet MuonChamberSet
Abrivation of the container holding all chambers.
staticNodePtr buildMuonNode(const Acts::GeometryContext &gctx, const EnvelopeSet_t &elements, const std::string &name, const Acts::GeometryIdentifier &id, Acts::VolumeBoundFactory &boundsFactory, const std::vector< ChIdx > &passiveStationIds={}) const
Build subnodes for the muon system node.
bool isElementInTheStation(const T &element, const std::vector< StIdx > &stationNames, const EndcapSide side) const
Check if the chamber is in this node.
std::vector< surfacePtr > getPassiveMaterialSurfaces(const Acts::GeometryContext &gctx, const std::unordered_map< unsigned int, ElementSet_t > &elementsPerStation) const
Construct and return the surfaces for the passive material description (e.g cylinders for barrel/ dis...
std::unordered_map< StIdx, EnvelopeSet_t > EnvelopesPerStIdx_t
Muon::MuonStationIndex::DetectorRegionIndex DetIdx
Abrivatin for the detector region index.
std::shared_ptr< Acts::Surface > surfacePtr
Abrivation of the surface pointer.
Muon::MuonStationIndex::ChIndex ChIdx
Abrivation for the chamber index.
Gaudi::Property< bool > m_useSectors
Flag to control if we want to build the muon node from sectors or chambers.
std::variant< MuonChamberSet, MuonSectorSet > EnvelopeSet_t
Hide the flexibility to build the tracking geometry from sectors or chambers behind a variant.
MuonGMR4::MuonDetectorManager::MuonSectorSet MuonSectorSet
Abrivation of the container holding all ms sectors.
const MuonGMR4::MuonDetectorManager * m_detMgr
the Detector manager
std::shared_ptr< Acts::Experimental::StaticBlueprintNode > staticNodePtr
Abrivation of the blue print node pointer.
Muon::MuonStationIndex::LayerIndex LayIdx
Abrivation for the layer index.
std::pair< std::vector< staticNodePtr >, std::vector< surfacePtr > > BluePrintSurfPairs_t
Abrivate the vector pair of blue print nodes and associated active surfaces.
StatusCode initialize() override
Muon::MuonStationIndex::StIndex StIdx
Abrivation of the station index.
Chamber represent the volume enclosing a muon station.
std::vector< const Chamber * > MuonChamberSet
std::vector< const SpectrometerSector * > MuonSectorSet
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
This class is not to needed in AthSimulation.
The ReadoutGeomCnvAlg converts the Run4 Readout geometry build from the GeoModelXML into the legacy M...
StIndex
enum to classify the different station layers in the muon spectrometer
DetectorRegionIndex
enum to classify the different layers in the muon spectrometer
LayerIndex
enum to classify the different layers in the muon spectrometer
ChIndex
enum to classify the different chamber layers in the muon spectrometer