9#ifndef MUONTRACKINGGEOMETRY_MUONTRACKINGGEOMETRYBUILDERIMPL_H
10#define MUONTRACKINGGEOMETRY_MUONTRACKINGGEOMETRYBUILDERIMPL_H
22#include "GaudiKernel/ToolHandle.h"
99 std::vector<std::vector<std::vector<std::pair<int, float>>>>>
116 double zTol,
double phiTol,
123 bool hasStations)
const;
127 bool hasStations)
const;
131 bool hasStations)
const;
134 std::vector<Trk::DetachedTrackingVolume*>
136 std::vector<Trk::DetachedTrackingVolume*>&,
155 this,
"TrackingVolumeArrayCreator",
156 "Trk::TrackingVolumeArrayCreator/"
157 "TrackingVolumeArrayCreator"};
164 this,
"TrackingVolumeHelper",
165 "Trk::TrackingVolumeHelper/TrackingVolumeHelper"};
170 this,
"EnvelopeDefinitionSvc",
"AtlasEnvelopeDefSvc",
176 Gaudi::Property<bool>
m_muonInert{
this,
"BuildInertMaterial",
true};
186 Gaudi::Property<double>
m_barrelZ{
this,
"BarrelZ", 6785.};
202 this,
"EtaInnerEndcapPartitions", 3};
204 this,
"EtaOuterEndcapPartitions", 3};
208 Gaudi::Property<bool>
m_static3d{
this,
"StaticPartition3D",
true};
221 "MuonSpectrometerEntrance"};
223 this,
"ExitVolumeName",
"All::Container::CompleteDetector"};
std::vector< RZPair > RZPairVector
Gaudi::Property< bool > m_removeBlended
Gaudi::Property< int > m_colorCode
std::vector< TrackingVolumePtr > TrackingVolumeVec
Gaudi::Property< bool > m_static3d
static constexpr double m_ectZ
minimal extent in z of the ECT
VolumeSpanArray findVolumesSpan(const DetachedVolVec &objs, double zTol, double phiTol, const LocalVariablesContainer &aLVC) const
Private method to filter detached volumes in z span.
Gaudi::Property< std::string > m_exitVolume
Gaudi::Property< bool > m_adjustStatic
static constexpr double m_outerWheel
minimal extend in z of the outer wheel (EO)
virtual StatusCode initialize() override
AlgTool initailize method.
std::vector< DetachedVolPtr > DetachedVolVec
Gaudi::Property< int > m_phiPartition
std::pair< Trk::DetachedTrackingVolume *, VolumeSpanPtr > DetachedVolSpanPair
bool enclosed(const Trk::Volume &volume, const Trk::VolumeSpan &span, LocalVariablesContainer &aLVC) const
Private method to check if constituent enclosed.
Gaudi::Property< double > m_outerEndcapZ
static Trk::GeometrySignature signature()
The unique signature.
static constexpr double m_outerShieldRadius
Gaudi::Property< std::string > m_entryVolume
void getHParts(LocalVariablesContainer &aLVC) const
Private method to retrieve h partition.
static void getShieldParts(LocalVariablesContainer &aLVC)
Private method to retrieve shield partition.
static constexpr double m_innerShieldRadius
std::unique_ptr< Trk::DetachedTrackingVolume > DetachedVolPtr
TrackingGeometry Interface method.
Gaudi::Property< bool > m_loadMSentry
Gaudi::Property< bool > m_muonActive
Gaudi::Property< double > m_barrelZ
maximal extend in z of the inner part of muon endcap
Gaudi::Property< bool > m_muonSimple
TrackingVolumePtr processVolume(const Trk::Volume &, int, int, const std::string &, LocalVariablesContainer &aLVC, bool hasStations) const
Private methods to define subvolumes and fill them with detached volumes.
static constexpr double m_bigWheel
maximal extend in z of the big wheel
ServiceHandle< IEnvelopeDefSvc > m_enclosingEnvelopeSvc
service to provide input volume size
std::unique_ptr< Trk::TrackingGeometry > trackingGeometryImpl(DetachedVolVec &&stations, DetachedVolVec &&inertObjs, Trk::TrackingVolume *tvol) const
virtual ~MuonTrackingGeometryBuilderImpl()=default
Destructor.
Gaudi::Property< double > m_alignTolerance
MuonTrackingGeometryBuilderImpl(const std::string &, const std::string &, const IInterface *)
Gaudi::Property< int > m_outerEndcapEtaPartition
Gaudi::Property< double > m_outerBarrelRadius
maximal extend in z of the muon barrel
ToolHandle< Trk::ITrackingVolumeHelper > m_trackingVolumeHelper
Helper Tool to create TrackingVolumes.
Gaudi::Property< int > m_innerEndcapEtaPartition
std::array< std::vector< DetachedVolSpanPair >, 9 > VolumeSpanArray
Gaudi::Property< int > m_barrelEtaPartition
Gaudi::Property< bool > m_blendInertMaterial
void blendMaterial(LocalVariablesContainer &aLVC) const
Private method to blend the inert material.
Gaudi::Property< double > m_innerEndcapZ
maximal extend in z of the outer part of muon endcap
std::vector< Trk::DetachedTrackingVolume * > getDetachedObjects(const Trk::Volume &trkVol, std::vector< Trk::DetachedTrackingVolume * > &, LocalVariablesContainer &aLVC, int mode=0) const
Private method to find detached volumes.
void getZParts(LocalVariablesContainer &aLVC) const
Private method to retrieve z partition.
std::unique_ptr< Trk::TrackingVolume > TrackingVolumePtr
Gaudi::Property< double > m_innerBarrelRadius
< minimal extend in radial dimension of the muon barrel
Gaudi::Property< int > m_activeAdjustLevel
ToolHandle< Trk::ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
Helper Tool to create TrackingVolume Arrays.
Trk::VolumeConverter m_volumeConverter
Volume helper to find geometrical span of enclosed volumes.
std::shared_ptr< Trk::TrackingVolume > SharedTrackingVolume
std::shared_ptr< const Trk::VolumeSpan > VolumeSpanPtr
TrackingVolumePtr processShield(const Trk::Volume &, int, const std::string &, LocalVariablesContainer &aLVC, bool hasStations) const
static constexpr double m_diskShieldZ
static constexpr double m_beamPipeRadius
Gaudi::Property< bool > m_muonInert
void getPhiParts(int, LocalVariablesContainer &aLVC) const
Private method to retrieve phi partition.
Gaudi::Property< int > m_inertAdjustLevel
Base Class for a navigation object (active/passive) in the Tracking realm.
Interface class ITrackingVolumeBuilders It inherits from IAlgTool.
A common object to be contained by.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Pure Absract Base Class for Volume bounds.
A Simple Helper Class that collects methods for material simplification.
Base class for all volumes inside the tracking realm, it defines the interface for inherited Volume c...
Eigen::Matrix< double, 3, 1 > Vector3D
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Ensure that the ATLAS eigen extensions are properly loaded.
std::pair< std::shared_ptr< TrackingVolume >, Amg::Vector3D > TrackingVolumeOrderPosition
Private struct to contain local variables we dont want to be global in this class.
LocalVariablesContainer()=default
RZPairVector m_msCutoutsOut
double m_outerBarrelRadius
std::vector< int > m_zPartitionsType
std::map< Trk::DetachedTrackingVolume *, std::vector< Trk::TrackingVolume * > > m_blendMap
std::vector< std::vector< std::pair< int, float > > > m_shieldHPart
Trk::Material m_muonMaterial
the (empty) material
std::vector< float > m_adjustedPhi
std::vector< std::vector< std::vector< std::vector< std::pair< int, float > > > > > m_hPartitions
VolumeSpanArray m_stationSpan
std::vector< int > m_adjustedPhiType
std::vector< double > m_shieldZPart
std::vector< double > m_zPartitions
VolumeSpanArray m_inertSpan
double m_innerBarrelRadius
RZPairVector m_msCutoutsIn