ATLAS Offline Software
CaloBlueprintNodeBuilder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ACTSGEOMETRY_CALOBLUEPRINTNODEBUILDER_H
6 #define ACTSGEOMETRY_CALOBLUEPRINTNODEBUILDER_H
7 
10 
11 #include "Acts/Surfaces/CylinderSurface.hpp"
12 #include "Acts/Surfaces/Surface.hpp"
14 #include "CaloDetDescr/CaloDetDescrElement.h"
15 
16 using caloSampleSurfaceMap_t = std::map<CaloCell_ID::CaloSample, std::vector<std::shared_ptr<Acts::Surface> > >;
17 using caloSampleDDEElementsMap_t = std::map<CaloCell_ID::CaloSample, std::vector<const CaloDetDescrElement*> >;
18 using caloDimensionMap_t = std::map<std::string, double>;
19 
20 namespace ActsTrk {
21 
25  class CaloBlueprintNodeBuilder : public extends<AthAlgTool, IBlueprintNodeBuilder> {
26  public:
27  StatusCode initialize() override;
28  StatusCode finalize() override;
29  using base_class::base_class;
30 
34  std::shared_ptr<Acts::Experimental::BlueprintNode> buildBlueprintNode(const Acts::GeometryContext& gctx,
35  std::shared_ptr<Acts::Experimental::BlueprintNode>&& childNode) override;
36 
37  private:
38 
45  void fillMaps(caloSampleSurfaceMap_t& caloSampleSurfaceMap, caloSampleDDEElementsMap_t& caloSampleDDEElementsMap) const;
49  void fillCaloDimensionsMap(caloDimensionMap_t& caloDimensionsMap, caloSampleDDEElementsMap_t& caloSampleDDEElementsMap) const;
50 
56  void generateCylinderSurfaces(caloSampleSurfaceMap_t& caloSampleSurfaceMap, caloSampleDDEElementsMap_t& caloSampleDDEElementsMap) const;
57 
62  std::shared_ptr<Acts::CylinderSurface> generateCylinderSurface(const double& maxLArBRadius, const double& minLArBRadius, const double& lowZLarB, const double& highZLarB) const;
63 
69  void addCylindricalTrackingVolumeToCaloNode(Acts::Experimental::CylinderContainerBlueprintNode& containerNode, caloDimensionMap_t& caloDimensionMap, const std::string& volumeName,const std::vector<std::shared_ptr<Acts::Surface>>& surfaces) const;
70 
71  std::unique_ptr<CaloDetDescrManager> m_caloDetSecrMgr;
72 
73  //create lists from all possible calo samplings that tracks could hit
74  //The first list is for disc shaped samples and the second for cylindrical shaped samples
75  //Note that TileGap3 is the barrel, but is disk shaped.
78 
83 
84  Gaudi::Property<double> m_radiusTolerance { this
85  , "RadiusTolerance"
86  , 2.0
87  , "Tolerance for determining if a ring of cells in phi has changed the radius w.r.t to the previous ring in phi" };
88 
89  Gaudi::Property<double> m_zTolerance { this
90  , "ZTolerance"
91  , 2.0
92  , "Tolerance for determining if a ring of cells in phi has changed the z w.r.t to the previous ring in phi" };
93 
94  };
95 
96 }
97 #endif
CaloCell_ID_FCS::TileExt2
@ TileExt2
Definition: FastCaloSim_CaloCell_ID.h:39
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
CaloCell_ID_FCS::TileExt0
@ TileExt0
Definition: FastCaloSim_CaloCell_ID.h:37
CaloCell_ID_FCS::TileBar1
@ TileBar1
Definition: FastCaloSim_CaloCell_ID.h:32
ActsTrk::CaloBlueprintNodeBuilder::m_zTolerance
Gaudi::Property< double > m_zTolerance
Definition: CaloBlueprintNodeBuilder.h:89
ActsTrk::CaloBlueprintNodeBuilder::finalize
StatusCode finalize() override
Definition: CaloBlueprintNodeBuilder.cxx:76
ActsTrk::CaloBlueprintNodeBuilder::fillMaps
void fillMaps(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
fillMaps fills two maps.
Definition: CaloBlueprintNodeBuilder.cxx:81
ActsTrk::CaloBlueprintNodeBuilder::generateCylinderSurface
std::shared_ptr< Acts::CylinderSurface > generateCylinderSurface(const double &maxLArBRadius, const double &minLArBRadius, const double &lowZLarB, const double &highZLarB) const
generateCylinderSurface generates a cylindrical surface for a given set of parameters.
Definition: CaloBlueprintNodeBuilder.cxx:223
CaloCell_ID_FCS::HEC2
@ HEC2
Definition: FastCaloSim_CaloCell_ID.h:29
ActsTrk::CaloBlueprintNodeBuilder::addCylindricalTrackingVolumeToCaloNode
void addCylindricalTrackingVolumeToCaloNode(Acts::Experimental::CylinderContainerBlueprintNode &containerNode, caloDimensionMap_t &caloDimensionMap, const std::string &volumeName, const std::vector< std::shared_ptr< Acts::Surface >> &surfaces) const
addCylindricalTrackingVolumeToCaloNode adds a cylindrical tracking volume to the calo node.
Definition: CaloBlueprintNodeBuilder.cxx:330
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
CaloCell_ID.h
ActsTrk::CaloBlueprintNodeBuilder::fillCaloDimensionsMap
void fillCaloDimensionsMap(caloDimensionMap_t &caloDimensionsMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
fillCaloDimensionsMap fills a map of calorimeter dimensions for each sampling layer.
Definition: CaloBlueprintNodeBuilder.cxx:241
ActsTrk::CaloBlueprintNodeBuilder::m_caloDetSecrMgr
std::unique_ptr< CaloDetDescrManager > m_caloDetSecrMgr
Definition: CaloBlueprintNodeBuilder.h:71
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
ActsTrk::CaloBlueprintNodeBuilder::initialize
StatusCode initialize() override
Definition: CaloBlueprintNodeBuilder.cxx:23
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
ActsTrk::CaloBlueprintNodeBuilder::buildBlueprintNode
std::shared_ptr< Acts::Experimental::BlueprintNode > buildBlueprintNode(const Acts::GeometryContext &gctx, std::shared_ptr< Acts::Experimental::BlueprintNode > &&childNode) override
Build the Itk Blueprint Node.
Definition: CaloBlueprintNodeBuilder.cxx:32
ActsTrk::CaloBlueprintNodeBuilder::generateCylinderSurfaces
void generateCylinderSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
generateCylinderSurfaces generates cylindrical surfaces for each calo sampling.
Definition: CaloBlueprintNodeBuilder.cxx:128
CaloCell_ID_FCS::TileExt1
@ TileExt1
Definition: FastCaloSim_CaloCell_ID.h:38
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
caloSampleDDEElementsMap_t
std::map< CaloCell_ID::CaloSample, std::vector< const CaloDetDescrElement * > > caloSampleDDEElementsMap_t
Definition: CaloBlueprintNodeBuilder.h:17
IBlueprintNodeBuilder.h
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
caloSampleSurfaceMap_t
std::map< CaloCell_ID::CaloSample, std::vector< std::shared_ptr< Acts::Surface > > > caloSampleSurfaceMap_t
Definition: CaloBlueprintNodeBuilder.h:16
caloDimensionMap_t
std::map< std::string, double > caloDimensionMap_t
Definition: CaloBlueprintNodeBuilder.h:18
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
ActsTrk::CaloBlueprintNodeBuilder
Builds the Calo Blueprint Node.
Definition: CaloBlueprintNodeBuilder.h:25
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition: MdtCalibInput.h:31
CaloCell_ID_FCS::HEC3
@ HEC3
Definition: FastCaloSim_CaloCell_ID.h:30
ActsTrk::CaloBlueprintNodeBuilder::m_caloDiscSampleList
std::vector< CaloCell_ID::CaloSample > m_caloDiscSampleList
Definition: CaloBlueprintNodeBuilder.h:76
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
CaloCell_ID_FCS::TileBar2
@ TileBar2
Definition: FastCaloSim_CaloCell_ID.h:33
ActsTrk::CaloBlueprintNodeBuilder::m_radiusTolerance
Gaudi::Property< double > m_radiusTolerance
Definition: CaloBlueprintNodeBuilder.h:84
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
ActsTrk::CaloBlueprintNodeBuilder::m_caloCylinderSampleList
std::vector< CaloCell_ID::CaloSample > m_caloCylinderSampleList
Definition: CaloBlueprintNodeBuilder.h:79