5#ifndef ACTSGEOMETRY_CALOBLUEPRINTNODEBUILDER_H
6#define ACTSGEOMETRY_CALOBLUEPRINTNODEBUILDER_H
11#include "Acts/Surfaces/CylinderSurface.hpp"
12#include "Acts/Surfaces/DiscSurface.hpp"
13#include "Acts/Surfaces/Surface.hpp"
15#include "CaloDetDescr/CaloDetDescrElement.h"
22using caloSampleSurfaceMap_t = std::map<std::pair<std::string, CaloCell_ID::CaloSample>, std::vector<std::shared_ptr<Acts::Surface> > >;
37 using base_class::base_class;
42 std::shared_ptr<Acts::BlueprintNode>
buildBlueprintNode(
const Acts::GeometryContext& gctx,
43 std::shared_ptr<Acts::BlueprintNode>&& childNode)
override;
53 void fillMaps(std::map<caloRegion, caloSampleSurfaceMap_t>& caloRegionSampleSurfaceMap,
54 std::map<caloRegion, caloSampleDDEElementsMap_t>& caloRegionSampleDDEElementsMap, std::map<std::string, double>& caloDimensions)
const;
67 std::shared_ptr<Acts::CylinderSurface>
generateCylinderSurface(
const double& maxLArBRadius,
const double& minLArBRadius,
const double& lowZLarB,
const double& highZLarB,
bool asymmetricZ)
const;
74 void addCylindricalTrackingVolumeToCaloNode(Acts::CylinderContainerBlueprintNode& containerNode,
const std::string& volumeName,
const std::vector<std::shared_ptr<Acts::Surface>>& surfaces,
int layerIndex,
const bool& isDisc)
const;
78 std::shared_ptr<Acts::DiscSurface>
generateDiscSurface(
const double&
z,
const double& maxLArBRadius,
const double& minLArBRadius)
const;
86 {
"PreSamplerE", CaloCell_ID::PreSamplerE},
87 {
"EME1",CaloCell_ID::EME1},
88 {
"EME2",CaloCell_ID::EME2},
89 {
"EME3",CaloCell_ID::EME3},
90 {
"HEC0",CaloCell_ID::HEC0},
91 {
"HEC1",CaloCell_ID::HEC1},
92 {
"HEC2",CaloCell_ID::HEC2},
93 {
"HEC3",CaloCell_ID::HEC3},
94 {
"TileGap3",CaloCell_ID::TileGap3},
95 {
"FCAL0",CaloCell_ID::FCAL0},
96 {
"FCAL1",CaloCell_ID::FCAL1},
97 {
"FCAL2",CaloCell_ID::FCAL2}};
100 {
"PreSamplerB", CaloCell_ID::PreSamplerB},
101 {
"EMB1", CaloCell_ID::EMB1},
102 {
"EMB2", CaloCell_ID::EMB2},
103 {
"EMB3", CaloCell_ID::EMB3},
104 {
"TileBar0", CaloCell_ID::TileBar0},
105 {
"TileBar1", CaloCell_ID::TileBar1},
106 {
"TileBar2", CaloCell_ID::TileBar2}};
109 {
"TileGap1", CaloCell_ID::TileGap1},
110 {
"TileGap2", CaloCell_ID::TileGap2},
111 {
"TileExt0", CaloCell_ID::TileExt0},
112 {
"TileExt1", CaloCell_ID::TileExt1},
113 {
"TileExt2", CaloCell_ID::TileExt2}};
118 ,
"Tolerance for determining if a ring of cells in phi has changed the radius w.r.t to the previous ring in phi" };
123 ,
"Tolerance for determining if a ring of cells in phi has changed the z w.r.t to the previous ring in phi" };
127 std::string sampleName =
"";
129 if (currentSample == sample) {
134 if (sampleName ==
"") {
136 if (currentSample == sample) {
142 if (sampleName ==
"") {
144 if (currentSample == sample) {
156 if (sampleName == name) {
161 if (sampleEnum == CaloCell_ID::Unknown) {
163 if (sampleName == name) {
169 if (sampleEnum == CaloCell_ID::Unknown) {
171 if (sampleName == name) {
std::map< std::string, double > caloDimensionMap_t
std::map< std::pair< std::string, CaloCell_ID::CaloSample >, std::vector< std::shared_ptr< Acts::Surface > > > caloSampleSurfaceMap_t
std::map< std::pair< std::string, CaloCell_ID::CaloSample >, std::vector< const CaloDetDescrElement * > > caloSampleDDEElementsMap_t
Definition of CaloDetDescrManager.
Builds the Calo Blueprint Node.
void addCylindricalTrackingVolumeToCaloNode(Acts::CylinderContainerBlueprintNode &containerNode, const std::string &volumeName, const std::vector< std::shared_ptr< Acts::Surface > > &surfaces, int layerIndex, const bool &isDisc) const
addCylindricalTrackingVolumeToCaloNode adds a cylindrical tracking volume to the calo node.
void fillMaps(std::map< caloRegion, caloSampleSurfaceMap_t > &caloRegionSampleSurfaceMap, std::map< caloRegion, caloSampleDDEElementsMap_t > &caloRegionSampleDDEElementsMap, std::map< std::string, double > &caloDimensions) const
fillMaps fills two maps.
std::vector< std::pair< std::string, CaloCell_ID::CaloSample > > m_caloDiscSampleList
std::string getSampleName(CaloCell_ID::CaloSample currentSample) const
Gaudi::Property< double > m_radiusTolerance
std::shared_ptr< Acts::CylinderSurface > generateCylinderSurface(const double &maxLArBRadius, const double &minLArBRadius, const double &lowZLarB, const double &highZLarB, bool asymmetricZ) const
generateCylinderSurface generates a cylindrical surface for a given set of parameters.
StatusCode initialize() override
std::shared_ptr< Acts::DiscSurface > generateDiscSurface(const double &z, const double &maxLArBRadius, const double &minLArBRadius) const
std::vector< std::pair< std::string, CaloCell_ID::CaloSample > > m_caloCylinderAsymmetricSampleList
void generateCylinderSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap, bool asymmetricZ) const
generateCylinderSurfaces generates cylindrical surfaces for each calo sampling.
std::shared_ptr< Acts::BlueprintNode > buildBlueprintNode(const Acts::GeometryContext &gctx, std::shared_ptr< Acts::BlueprintNode > &&childNode) override
Build the Itk Blueprint Node.
std::vector< std::pair< std::string, CaloCell_ID::CaloSample > > m_caloCylinderSymmetricSampleList
StatusCode finalize() override
Gaudi::Property< double > m_zTolerance
std::unique_ptr< CaloDetDescrManager > m_caloDetSecrMgr
CaloCell_ID::CaloSample getSampleEnum(const std::string &sampleName) const
void generateDiscSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
CaloSampling::CaloSample CaloSample
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...