ATLAS Offline Software
CaloTrackingGeometryBuilderImpl.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef CALORIMETER_CALOTRACKINGGEOMETRYBUILDERIMPL_H
6 #define CALORIMETER_CALOTRACKINGGEOMETRYBUILDERIMPL_H
7 
9 // Gaudi
11 #include "GaudiKernel/ServiceHandle.h"
12 #include "GaudiKernel/ToolHandle.h"
13 #include "GaudiKernel/SystemOfUnits.h"
14 // Trk
22 #include "TrkGeometry/Material.h"
24 // EnvelopeDefinitionService
26 // CaloDDM
28 // STL
29 #include <vector>
30 //
32 
33 namespace Trk {
34 class Layer;
35 class MagneticFieldProperties;
36 } // namespace Trk
37 
38 namespace Calo {
39 
51 
52  public:
55 
57  virtual StatusCode initialize() override;
58 
60  std::unique_ptr<Trk::TrackingGeometry> createTrackingGeometry(
61  Trk::TrackingVolume* innerVol, const CaloDetDescrManager* caloDDM) const;
62 
65  return Trk::Calo;
66  }
67 
68 
69  protected:
71  CaloTrackingGeometryBuilderImpl(const std::string&, const std::string&,
72  const IInterface*);
73 
75  PublicToolHandle<Trk::ITrackingVolumeArrayCreator> m_trackingVolumeArrayCreator{this, "TrackingVolumeArrayCreator", "Trk::TrackingVolumeArrayCreator/TrackingVolumeArrayCreator"};
77  PublicToolHandle<Trk::ITrackingVolumeHelper> m_trackingVolumeHelper{this, "TrackingVolumeHelper", "Trk::TrackingVolumeHelper/TrackingVolumeHelper"};
79  PublicToolHandle<Trk::ITrackingVolumeCreator> m_trackingVolumeCreator{this, "TrackingVolumeCreator", "Trk::CylinderVolumeCreator/TrackingVolumeCreator"};
81  PublicToolHandle<Trk::ICaloTrackingVolumeBuilder> m_lArVolumeBuilder{this, "LArVolumeBuilder", "LAr::LArVolumeBuilder/LArVolumeBuilder"};
83  PublicToolHandle<Trk::ICaloTrackingVolumeBuilder> m_tileVolumeBuilder{this, "TileVolumeBuilder", "Tile::TileVolumeBuilder/TileVolumeBuilder"};
84 
87  Trk::Material m_Ar{140.036, 856.32, 39.948, 18., 0.0014};
88  Trk::Material m_Al{88.93, 388.62, 26.98, 13., 0.0027};
89  Trk::Material m_Scint{424.35, 707.43, 11.16, 5.61, 0.001}; // from G4 definition
90  Trk::Material m_crackMaterial{424.35, 707.43, 11.16, 5.61, 0.001}; // Scintillator/Glue (G4 def.)
91 
92  DoubleProperty m_caloEnvelope{this, "GapLayerEnvelope", 25 * Gaudi::Units::mm};
93  // enclosing endcap/cylindervolume
94  ServiceHandle<IEnvelopeDefSvc> m_enclosingEnvelopeSvc{this, "EnvelopeDefinitionSvc", "AtlasGeometry_EnvelopeDefSvc"};
95 
96  DoubleProperty m_caloDefaultRadius{this, "CalorimeterRadius", 4250.};
97  DoubleProperty m_caloDefaultHalflengthZ{this, "CalorimeterHalflengthZ", 6500.};
98 
100  BooleanProperty m_indexStaticLayers{this, "IndexStaticLayers", true};
101 
102  BooleanProperty m_recordLayerIndexCaloSampleMap{this, "RecordLayerIndexCaloSampleMap", true};
103  StringProperty m_layerIndexCaloSampleMapName{this, "LayerIndexCaloSampleMapName", "LayerIndexCaloSampleMap"};
104 
105  BooleanProperty m_buildMBTS{this, "BuildMBTS", true};
106  // //!< MBTS like detectors
107  std::vector<double> m_mbtsRadiusGap;
108  std::vector<int> m_mbtsPhiSegments;
109  std::vector<double> m_mbtsPhiGap;
110  std::vector<double> m_mbtsPositionZ;
111  std::vector<double> m_mbtsStaggeringZ;
112 
113  StringProperty m_entryVolume{this, "EntryVolumeName", "Calo::Container::EntryVolume"};
114  StringProperty m_exitVolume{this, "ExitVolumeName", "Calo::Container"};
115 
119  Trk::LayerIndexSampleMap& licsMAp,
120  std::vector<CaloCell_ID::CaloSample> ccid, const Trk::TrackingVolume& vol,
121  int side = 1) const;
122 
124  std::pair<Trk::TrackingVolume*, Trk::TrackingVolume*> createBeamPipeVolumes(
125  const RZPairVector& bpCutouts, float, float, const std::string&,
126  float&) const;
127 
128 };
129 
130 } // namespace Calo
131 
132 #endif // CALORIMETER_CALOTRACKINGGEOMETRYBUILDERIMPL_H
133 
Calo::CaloTrackingGeometryBuilderImpl::m_caloEnvelope
DoubleProperty m_caloEnvelope
Envelope cover for Gap Layers.
Definition: CaloTrackingGeometryBuilderImpl.h:92
Calo::CaloTrackingGeometryBuilderImpl::m_mbtsPhiGap
std::vector< double > m_mbtsPhiGap
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:109
ICaloTrackingVolumeBuilder.h
IGeometryBuilderCond.h
Calo
Definition: CaloTrackingGeometryBuilder.h:15
GeometrySignature.h
IEnvelopeDefSvc.h
Calo::CaloTrackingGeometryBuilderImpl::m_caloDefaultRadius
DoubleProperty m_caloDefaultRadius
the radius if not built from GeoModel
Definition: CaloTrackingGeometryBuilderImpl.h:96
Calo::CaloTrackingGeometryBuilderImpl::m_caloDefaultHalflengthZ
DoubleProperty m_caloDefaultHalflengthZ
the halflength in z if not built from
Definition: CaloTrackingGeometryBuilderImpl.h:97
RZPairVector
std::vector< RZPair > RZPairVector
Definition: RZPair.h:18
Calo::CaloTrackingGeometryBuilderImpl::m_enclosingEnvelopeSvc
ServiceHandle< IEnvelopeDefSvc > m_enclosingEnvelopeSvc
Definition: CaloTrackingGeometryBuilderImpl.h:94
LayerIndexSampleMap.h
Calo::CaloTrackingGeometryBuilderImpl::initialize
virtual StatusCode initialize() override
AlgTool initailize method.
Definition: CaloTrackingGeometryBuilderImpl.cxx:47
Calo::CaloTrackingGeometryBuilderImpl::m_mbtsRadiusGap
std::vector< double > m_mbtsRadiusGap
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:107
Calo::CaloTrackingGeometryBuilderImpl::createTrackingGeometry
std::unique_ptr< Trk::TrackingGeometry > createTrackingGeometry(Trk::TrackingVolume *innerVol, const CaloDetDescrManager *caloDDM) const
TrackingGeometry Interface method.
Definition: CaloTrackingGeometryBuilderImpl.cxx:96
Calo::CaloTrackingGeometryBuilderImpl::m_Ar
Trk::Material m_Ar
Definition: CaloTrackingGeometryBuilderImpl.h:87
Calo::CaloTrackingGeometryBuilderImpl::m_mbtsStaggeringZ
std::vector< double > m_mbtsStaggeringZ
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:111
Calo::CaloTrackingGeometryBuilderImpl
Definition: CaloTrackingGeometryBuilderImpl.h:50
ITrackingVolumeArrayCreator.h
Trk::Calo
@ Calo
Definition: GeometrySignature.h:28
python.RingerConstants.Layer
Layer
Definition: RingerConstants.py:42
Calo::CaloTrackingGeometryBuilderImpl::m_trackingVolumeCreator
PublicToolHandle< Trk::ITrackingVolumeCreator > m_trackingVolumeCreator
Volume Builder for the Liquid Argon Calorimeter.
Definition: CaloTrackingGeometryBuilderImpl.h:79
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
CaloCell_ID.h
Trk::LayerIndexSampleMap
std::map< Trk::LayerIndex, int > LayerIndexSampleMap
Definition: LayerIndexSampleMap.h:29
TRT::Hit::side
@ side
Definition: HitInfo.h:83
Calo::CaloTrackingGeometryBuilderImpl::~CaloTrackingGeometryBuilderImpl
virtual ~CaloTrackingGeometryBuilderImpl()
Destructor.
Calo::CaloTrackingGeometryBuilderImpl::m_caloMaterial
Trk::Material m_caloMaterial
Definition: CaloTrackingGeometryBuilderImpl.h:86
Calo::CaloTrackingGeometryBuilderImpl::m_indexStaticLayers
BooleanProperty m_indexStaticLayers
forces robust indexing for layers
Definition: CaloTrackingGeometryBuilderImpl.h:100
Trk::GeometrySignature
GeometrySignature
Definition: GeometrySignature.h:24
Calo::CaloTrackingGeometryBuilderImpl::m_crackMaterial
Trk::Material m_crackMaterial
Definition: CaloTrackingGeometryBuilderImpl.h:90
Calo::CaloTrackingGeometryBuilderImpl::signature
Trk::GeometrySignature signature() const
The unique signature.
Definition: CaloTrackingGeometryBuilderImpl.h:64
Calo::CaloTrackingGeometryBuilderImpl::m_mbtsPositionZ
std::vector< double > m_mbtsPositionZ
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:110
Calo::CaloTrackingGeometryBuilderImpl::createBeamPipeVolumes
std::pair< Trk::TrackingVolume *, Trk::TrackingVolume * > createBeamPipeVolumes(const RZPairVector &bpCutouts, float, float, const std::string &, float &) const
method to build enclosed beam pipe volumes
Definition: CaloTrackingGeometryBuilderImpl.cxx:1478
Calo::CaloTrackingGeometryBuilderImpl::m_mbtsPhiSegments
std::vector< int > m_mbtsPhiSegments
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:108
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
ITrackingVolumeCreator.h
Calo::CaloTrackingGeometryBuilderImpl::registerInLayerIndexCaloSampleMap
void registerInLayerIndexCaloSampleMap(Trk::LayerIndexSampleMap &licsMAp, std::vector< CaloCell_ID::CaloSample > ccid, const Trk::TrackingVolume &vol, int side=1) const
method to establish a link between the LayerIndex and the CaloCell_ID in an associative container
Definition: CaloTrackingGeometryBuilderImpl.cxx:1419
Calo::CaloTrackingGeometryBuilderImpl::m_trackingVolumeArrayCreator
PublicToolHandle< Trk::ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
Helper Tool to create TrackingVolumes.
Definition: CaloTrackingGeometryBuilderImpl.h:75
Calo::CaloTrackingGeometryBuilderImpl::m_entryVolume
StringProperty m_entryVolume
name of the Calo entrance
Definition: CaloTrackingGeometryBuilderImpl.h:113
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Calo::CaloTrackingGeometryBuilderImpl::m_trackingVolumeHelper
PublicToolHandle< Trk::ITrackingVolumeHelper > m_trackingVolumeHelper
Second helper for volume creation.
Definition: CaloTrackingGeometryBuilderImpl.h:77
Calo::CaloTrackingGeometryBuilderImpl::m_buildMBTS
BooleanProperty m_buildMBTS
MBTS like detectors.
Definition: CaloTrackingGeometryBuilderImpl.h:105
Calo::CaloTrackingGeometryBuilderImpl::m_layerIndexCaloSampleMapName
StringProperty m_layerIndexCaloSampleMapName
name to record it
Definition: CaloTrackingGeometryBuilderImpl.h:103
Calo::CaloTrackingGeometryBuilderImpl::m_Scint
Trk::Material m_Scint
Definition: CaloTrackingGeometryBuilderImpl.h:89
Calo::CaloTrackingGeometryBuilderImpl::m_exitVolume
StringProperty m_exitVolume
name of the Calo container
Definition: CaloTrackingGeometryBuilderImpl.h:114
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
Calo::CaloTrackingGeometryBuilderImpl::m_Al
Trk::Material m_Al
Definition: CaloTrackingGeometryBuilderImpl.h:88
Calo::CaloTrackingGeometryBuilderImpl::m_recordLayerIndexCaloSampleMap
BooleanProperty m_recordLayerIndexCaloSampleMap
for deposition methods
Definition: CaloTrackingGeometryBuilderImpl.h:102
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
Calo::CaloTrackingGeometryBuilderImpl::CaloTrackingGeometryBuilderImpl
CaloTrackingGeometryBuilderImpl(const std::string &, const std::string &, const IInterface *)
Constructor.
Definition: CaloTrackingGeometryBuilderImpl.cxx:37
Calo::CaloTrackingGeometryBuilderImpl::m_lArVolumeBuilder
PublicToolHandle< Trk::ICaloTrackingVolumeBuilder > m_lArVolumeBuilder
Volume Builder for the Tile Calorimeter.
Definition: CaloTrackingGeometryBuilderImpl.h:81
TrackingGeometry.h
Trk::Material
Definition: Material.h:116
AthAlgTool
Definition: AthAlgTool.h:26
checker_macros.h
Define macros for attributes used to control the static checker.
Trk::TrackingVolume
Definition: TrackingVolume.h:121
Calo::CaloTrackingGeometryBuilderImpl::m_tileVolumeBuilder
PublicToolHandle< Trk::ICaloTrackingVolumeBuilder > m_tileVolumeBuilder
Material properties.
Definition: CaloTrackingGeometryBuilderImpl.h:83
Material.h
ServiceHandle< IEnvelopeDefSvc >
ITrackingVolumeHelper.h