ATLAS Offline Software
Loading...
Searching...
No Matches
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
16using caloSampleSurfaceMap_t = std::map<CaloCell_ID::CaloSample, std::vector<std::shared_ptr<Acts::Surface> > >;
17using caloSampleDDEElementsMap_t = std::map<CaloCell_ID::CaloSample, std::vector<const CaloDetDescrElement*> >;
18using caloDimensionMap_t = std::map<std::string, double>;
19
20namespace 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.
76 std::vector<CaloCell_ID::CaloSample> m_caloDiscSampleList{CaloCell_ID::PreSamplerE, CaloCell_ID::EME1, CaloCell_ID::EME2,
77 CaloCell_ID::EME3, CaloCell_ID::HEC0, CaloCell_ID::HEC1, CaloCell_ID::HEC2, CaloCell_ID::HEC3, CaloCell_ID::TileGap3};
78
79 std::vector<CaloCell_ID::CaloSample> m_caloCylinderSampleList{CaloCell_ID::PreSamplerB, CaloCell_ID::EMB1, CaloCell_ID::EMB2,
80 CaloCell_ID::EMB3,CaloCell_ID::TileBar0, CaloCell_ID::TileBar1, CaloCell_ID::TileBar2,
81 CaloCell_ID::TileGap1, CaloCell_ID::TileGap2, CaloCell_ID::TileExt0, CaloCell_ID::TileExt1,
82 CaloCell_ID::TileExt2};
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
std::map< CaloCell_ID::CaloSample, std::vector< std::shared_ptr< Acts::Surface > > > caloSampleSurfaceMap_t
std::map< CaloCell_ID::CaloSample, std::vector< const CaloDetDescrElement * > > caloSampleDDEElementsMap_t
std::map< std::string, double > caloDimensionMap_t
Definition of CaloDetDescrManager.
Builds the Calo Blueprint Node.
void fillCaloDimensionsMap(caloDimensionMap_t &caloDimensionsMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
fillCaloDimensionsMap fills a map of calorimeter dimensions for each sampling layer.
Gaudi::Property< double > m_radiusTolerance
void generateCylinderSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
generateCylinderSurfaces generates cylindrical surfaces for each calo sampling.
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.
std::vector< CaloCell_ID::CaloSample > m_caloCylinderSampleList
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.
std::vector< CaloCell_ID::CaloSample > m_caloDiscSampleList
void fillMaps(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
fillMaps fills two maps.
std::shared_ptr< Acts::Experimental::BlueprintNode > buildBlueprintNode(const Acts::GeometryContext &gctx, std::shared_ptr< Acts::Experimental::BlueprintNode > &&childNode) override
Build the Itk Blueprint Node.
std::unique_ptr< CaloDetDescrManager > m_caloDetSecrMgr
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...