![]() |
ATLAS Offline Software
|
Helper class to build a Blueprint node of the muon system. More...
#include <MuonBlueprintNodeBuilder.h>
Public Types | |
| enum class | EndcapSide : std::uint8_t { A , C , Both } |
| using | blueprintNodePtr = std::shared_ptr<Acts::Experimental::BlueprintNode> |
| Abrivation of the blueprint node ptr base class. | |
| using | staticNodePtr = std::shared_ptr<Acts::Experimental::StaticBlueprintNode> |
| Abrivation of the blue print node pointer. | |
| using | materialNodePtr = std::shared_ptr<Acts::Experimental::MaterialDesignatorBlueprintNode> |
| Abrivation of the material node pointer. | |
| using | surfacePtr = std::shared_ptr<Acts::Surface> |
| Abrivation of the surface pointer. | |
| using | BluePrintSurfPairs_t = std::pair<std::vector<blueprintNodePtr>, std::vector<surfacePtr>> |
| Abrivate the vector pair of blue print nodes and associated active surfaces. | |
| using | MuonChamberSet = MuonGMR4::MuonDetectorManager::MuonChamberSet |
| Abrivation of the container holding all chambers. | |
| using | MuonSectorSet = MuonGMR4::MuonDetectorManager::MuonSectorSet |
| Abrivation of the container holding all ms sectors. | |
| using | StIdx = Muon::MuonStationIndex::StIndex |
| Abrivation of the station index. | |
| using | DetIdx = Muon::MuonStationIndex::DetectorRegionIndex |
| Abrivatin for the detector region index. | |
| using | LayIdx = Muon::MuonStationIndex::LayerIndex |
| Abrivation for the layer index. | |
| using | ChIdx = Muon::MuonStationIndex::ChIndex |
| Abrivation for the chamber index. | |
| using | DetLayIdx_t = std::pair<DetIdx, LayIdx> |
| Abrivation for the stations indices. | |
| using | EnvelopeSet_t = std::variant<MuonChamberSet, MuonSectorSet> |
| Hide the flexibility to build the tracking geometry from sectors or chambers behind a variant. | |
| using | EnvelopesPerStIdx_t = std::unordered_map<StIdx, EnvelopeSet_t> |
Public Member Functions | |
| StatusCode | initialize () override |
| std::shared_ptr< Acts::Experimental::BlueprintNode > | buildBlueprintNode (const Acts::GeometryContext &gctx, std::shared_ptr< Acts::Experimental::BlueprintNode > &&childNode) override |
| Build the Muon Blueprint Node. | |
| template<typename ElementSet_t> | |
| std::vector< std::shared_ptr< Acts::Surface > > | getPassiveMaterialSurfaces (const Acts::GeometryContext &gctx, const std::unordered_map< unsigned int, ElementSet_t > &elementsPerStation) const |
Private Member Functions | |
| std::shared_ptr< Acts::ISurfaceMaterial > | preparePassiveMaterial (const Acts::SurfaceBounds &bounds, const std::size_t nBins1, const std::size_t nBins2) const |
| Prepare a binned material which is associated to the surface. | |
| std::pair< std::size_t, std::size_t > | getMaterialBins (const Muon::MuonStationIndex::ChIndex chIdx) const |
| template<typename T> requires (std::is_same_v<T, MuonGMR4::Chamber> || std::is_same_v<T, MuonGMR4::SpectrometerSector>) | |
| BluePrintSurfPairs_t | getSensitiveElements (const ActsTrk::GeometryContext &gctx, const T &element, const Acts::GeometryIdentifier &chId, Acts::VolumeBoundFactory &boundsFactory) const |
| Get the chamber's sensitive elements. | |
| template<typename ElementSet_t> | |
| 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/ discs for endcaps). | |
| template<typename T> requires (std::is_same_v<T, MuonGMR4::Chamber> || std::is_same_v<T, MuonGMR4::SpectrometerSector>) | |
| std::shared_ptr< const Acts::ISurfaceMaterial > | getActiveMaterial (const T &element) const |
| Get the active material for a given element representing the chamber/sector. | |
| template<typename T> requires (std::is_same_v<T, MuonGMR4::Chamber> || std::is_same_v<T, MuonGMR4::SpectrometerSector>) | |
| bool | isElementInTheStation (const T &element, const std::vector< StIdx > &stationNames, const EndcapSide side) const |
| Check if the chamber is in this node. | |
| 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. | |
| std::variant< staticNodePtr, materialNodePtr > | buildChamberNode (const blueprintNodePtr &chamberNode) const |
| Build a static or a material node for a chamber that corresponds to a single blueprint node (e.g for a single MDT multilayer). | |
| template<typename T> | |
| std::variant< staticNodePtr, materialNodePtr > | buildChamberNode (const T &element, std::unique_ptr< Acts::TrackingVolume > &vol, const std::vector< blueprintNodePtr > &innerStructure) const |
| Build a static or a material node for a chamber that corresponds to a single blueprint node (e.g for a single MDT multilayer). | |
| bool | isBIS78 (const MuonGMR4::MuonReadoutElement *element) const |
| Helper function determining whether a readout element is BIS78. | |
Private Attributes | |
| const MuonGMR4::MuonDetectorManager * | m_detMgr {nullptr} |
| the Detector manager | |
| Gaudi::Property< bool > | m_useSectors {this, "UseSectors", false} |
| Flag to control if we want to build the muon node from sectors or chambers. | |
| Gaudi::Property< bool > | m_alignableVolumes {this, "AlignableVolumes", true} |
| Flag to control if the volumes should be alignable or not. | |
| Gaudi::Property< bool > | m_assignActiveMaterial {this, "AssignActiveMaterial", false} |
| Flag to assign active material on the chambers. | |
| Gaudi::Property< bool > | m_buildPassiveVolumes {this, "BuildPassiveVolumes", true} |
| Flag to construct the passive material surfaces. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsBI {this, "nPhiBinsBI", 16} |
| Number of bins in phi direction on the BI cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nZBinsBI {this, "nZBinsBI", 12} |
| Number of bins in Z direction on the BI cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsBM {this, "nPhiBinsBM", 16} |
| Number of bins in phi direction on the BM cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nZBinsBM {this, "nZBinsBM", 12} |
| Number of bins in Z direction on the BM cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsBO {this, "nPhiBinsBO", 16} |
| Number of bins in phi direction on the BM cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nZBinsBO {this, "nZBinsBO", 12} |
| Number of bins in Z direction on the BM cylinder surface. | |
| Gaudi::Property< std::size_t > | m_nRBinsEI1 {this, "nRBinsEIbNSW", 4} |
| Number of bins in R direction on the disc before the NSW. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsEI1 {this, "nPhiBinsEIbNSW", 16} |
| Number of bins in phi direction on the disc before the NSW. | |
| Gaudi::Property< std::size_t > | m_nRBinsEI2 {this, "nRBinsEIaNSW", 4} |
| Number of bins in R direction on the disc after the NSW. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsEI2 {this, "nPhiBinsEIaNSW", 16} |
| Number of bins in phi direction on the disc after the NSW. | |
| Gaudi::Property< std::size_t > | m_nRBinsEM1 {this, "nRBinsEMbBW", 16} |
| Number of bins in R direction on the disc before the middle big wheel. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsEM1 {this, "nPhiBinsEMbBW", 16} |
| Number of bins in phi direction on the disc before the middle big wheel. | |
| Gaudi::Property< std::size_t > | m_nRBinsEM2 {this, "nRBinsEMaBW", 5} |
| Number of bins in R direction on the disc after the middle big wheel. | |
| Gaudi::Property< std::size_t > | m_nPhiBinsEM2 {this, "nPhiBinsEMaBW", 16} |
| Number of bins in phi direction on the disc after the NSW. | |
Helper class to build a Blueprint node of the muon system.
It builds the whole muon system for PhaseII adding it to the Blueprint as a node.
Definition at line 42 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::blueprintNodePtr = std::shared_ptr<Acts::Experimental::BlueprintNode> |
Abrivation of the blueprint node ptr base class.
Definition at line 45 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::BluePrintSurfPairs_t = std::pair<std::vector<blueprintNodePtr>, std::vector<surfacePtr>> |
Abrivate the vector pair of blue print nodes and associated active surfaces.
Definition at line 53 of file MuonBlueprintNodeBuilder.h.
Abrivation for the chamber index.
Definition at line 65 of file MuonBlueprintNodeBuilder.h.
Abrivatin for the detector region index.
Definition at line 61 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::DetLayIdx_t = std::pair<DetIdx, LayIdx> |
Abrivation for the stations indices.
Definition at line 67 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::EnvelopeSet_t = std::variant<MuonChamberSet, MuonSectorSet> |
Hide the flexibility to build the tracking geometry from sectors or chambers behind a variant.
Definition at line 70 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::EnvelopesPerStIdx_t = std::unordered_map<StIdx, EnvelopeSet_t> |
Definition at line 72 of file MuonBlueprintNodeBuilder.h.
Abrivation for the layer index.
Definition at line 63 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::materialNodePtr = std::shared_ptr<Acts::Experimental::MaterialDesignatorBlueprintNode> |
Abrivation of the material node pointer.
Definition at line 49 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::MuonChamberSet = MuonGMR4::MuonDetectorManager::MuonChamberSet |
Abrivation of the container holding all chambers.
Definition at line 55 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::MuonSectorSet = MuonGMR4::MuonDetectorManager::MuonSectorSet |
Abrivation of the container holding all ms sectors.
Definition at line 57 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::staticNodePtr = std::shared_ptr<Acts::Experimental::StaticBlueprintNode> |
Abrivation of the blue print node pointer.
Definition at line 47 of file MuonBlueprintNodeBuilder.h.
Abrivation of the station index.
Definition at line 59 of file MuonBlueprintNodeBuilder.h.
| using ActsTrk::MuonBlueprintNodeBuilder::surfacePtr = std::shared_ptr<Acts::Surface> |
Abrivation of the surface pointer.
Definition at line 51 of file MuonBlueprintNodeBuilder.h.
|
strong |
| Enumerator | |
|---|---|
| A | |
| C | |
| Both | |
Definition at line 74 of file MuonBlueprintNodeBuilder.h.
|
override |
Build the Muon Blueprint Node.
| gctx | Geometry context |
| childNode | The blueprint node as child of this node (for Muon System it should be Calo or Itk). |
Definition at line 103 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Build a static or a material node for a chamber that corresponds to a single blueprint node (e.g for a single MDT multilayer).
| chamberNode | The blueprint node out of which the variant node will be built |
Definition at line 296 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Build a static or a material node for a chamber that corresponds to a single blueprint node (e.g for a single MDT multilayer).
| innerStructure | The inner structure of the chamber that corresponds to the children nodes |
| element | The element representing the chamber/sector for which the node is built |
| vol | The tracking volume associated to the chamber/sector |
Definition at line 307 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Build subnodes for the muon system node.
| gctx | The geometry context |
| elements | The name of the stations to include |
| side | The side (A, C or Both) |
| id | The geometry identifier of this node |
| boundsFactory | The factory for volume bounds |
| passiveStationIds | The ids with the chamber indices we want to put passive material surfaces on |
Definition at line 174 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Get the active material for a given element representing the chamber/sector.
| element | The element for which to get the active material |
Definition at line 612 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Definition at line 677 of file MuonBlueprintNodeBuilder.cxx.
| std::vector< std::shared_ptr< Acts::Surface > > ActsTrk::MuonBlueprintNodeBuilder::getPassiveMaterialSurfaces | ( | const Acts::GeometryContext & | gctx, |
| const std::unordered_map< unsigned int, ElementSet_t > & | elementsPerStation ) const |
Definition at line 472 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Construct and return the surfaces for the passive material description (e.g cylinders for barrel/ discs for endcaps).
| gctx | The geometry context |
| elementsPerStation | The elements (chambers or sectors) grouped per station to which we want to assign passive material This function uses the elements of the station to construct the surfaces and define their bounds |
|
private |
Get the chamber's sensitive elements.
| gctx | Geometry context |
| element | The element for which to get the sensitive elements (chamber or sector) |
| chId | The geometry identifier of the chamber |
| boundsFactory | The factory for volume bounds This function constructs and returns the sensitive elements (volumes and surfaces) of the sector. |
Definition at line 331 of file MuonBlueprintNodeBuilder.cxx.
|
override |
Definition at line 97 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Helper function determining whether a readout element is BIS78.
Definition at line 464 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Check if the chamber is in this node.
| element | The element to check (chamber or sector) |
| stationNames | The names of the stations to check against |
| side | The side of the endcap (A, C or Both) This function checks if the chamber is part of the configured chambers in this node. It is used to filter out chambers that are not part of this muon node. |
Definition at line 631 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Prepare a binned material which is associated to the surface.
| type | The surface type on which the material is mapped (Plane, Disc, Cylinder) |
| nBins1 | Number of bins in the local0 direction |
| nBins2 | Number of bins in the complementary direction |
Definition at line 645 of file MuonBlueprintNodeBuilder.cxx.
|
private |
Flag to control if the volumes should be alignable or not.
Definition at line 94 of file MuonBlueprintNodeBuilder.h.
|
private |
Flag to assign active material on the chambers.
Definition at line 96 of file MuonBlueprintNodeBuilder.h.
|
private |
Flag to construct the passive material surfaces.
Definition at line 98 of file MuonBlueprintNodeBuilder.h.
|
private |
|
private |
Number of bins in phi direction on the BI cylinder surface.
Definition at line 100 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the BM cylinder surface.
Definition at line 104 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the BM cylinder surface.
Definition at line 108 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the disc before the NSW.
Definition at line 114 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the disc after the NSW.
Definition at line 118 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the disc before the middle big wheel.
Definition at line 123 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in phi direction on the disc after the NSW.
Definition at line 127 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in R direction on the disc before the NSW.
Definition at line 112 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in R direction on the disc after the NSW.
Definition at line 116 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in R direction on the disc before the middle big wheel.
Definition at line 121 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in R direction on the disc after the middle big wheel.
Definition at line 125 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in Z direction on the BI cylinder surface.
Definition at line 102 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in Z direction on the BM cylinder surface.
Definition at line 106 of file MuonBlueprintNodeBuilder.h.
|
private |
Number of bins in Z direction on the BM cylinder surface.
Definition at line 110 of file MuonBlueprintNodeBuilder.h.
|
private |
Flag to control if we want to build the muon node from sectors or chambers.
Definition at line 92 of file MuonBlueprintNodeBuilder.h.