Build the Itk Blueprint Node.
50 {
51
52
53 std::map<caloRegion, caloSampleSurfaceMap_t> caloRegionSampleSurfaceMap;
54 std::map<caloRegion, caloSampleDDEElementsMap_t> caloRegionSampleDDEElementsMap;
55
56 fillMaps(caloRegionSampleSurfaceMap, caloRegionSampleDDEElementsMap);
57
59
60
61
64
66
70
71 ATH_MSG_DEBUG(
"Have generated calorimeter cylindrical surfaces");
72
73
74
75
76
77
78 auto itkCaloNode = std::make_shared<StaticBlueprintNode>(
79 std::make_unique<TrackingVolume>(Transform3::Identity(),
80 std::make_shared<CylinderVolumeBounds>(0.,
81 caloDimensionMap["CaloMaxR"] + 2.0,
82 caloDimensionMap["CaloHalfLengthZ"] + 2.0),"ITkCalo"));
83
84 if (childNode) itkCaloNode->addChild(std::move(childNode));
85
87
88 auto caloNode = std::make_shared<CylinderContainerBlueprintNode>("CaloNode", AxisDirection::AxisZ);
89 CylinderContainerBlueprintNode& caloBarrelCylinderNode = caloNode->addCylinderContainer("CaloBarrelCylinders", AxisDirection::AxisR);
90 caloBarrelCylinderNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
91 caloBarrelCylinderNode.setResizeStrategy(ResizeStrategy::Gap);
92
94
95
96 std::vector<std::string> caloBarrelCylindricalLayerNames = {"PreSamplerB", "EMB1", "EMB2", "EMB3", "TileBar0", "TileBar1", "TileBar2"};
97 for (unsigned int sampleIndex = 0; sampleIndex < caloBarrelCylindricalLayerNames.size(); ++sampleIndex) {
98 auto&
sampleName = caloBarrelCylindricalLayerNames.at(sampleIndex);
100 }
101
102 CylinderContainerBlueprintNode& caloEndCapDiscNegativeZNode = caloNode->addCylinderContainer("CaloEndCapDiscNegativeZ", AxisDirection::AxisZ);
103 caloEndCapDiscNegativeZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
104 caloEndCapDiscNegativeZNode.setResizeStrategy(ResizeStrategy::Gap);
105
106 CylinderContainerBlueprintNode& caloEndCapDiscPositiveZNode = caloNode->addCylinderContainer("CaloEndCapDiscPositiveZ", AxisDirection::AxisZ);
107 caloEndCapDiscPositiveZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
108 caloEndCapDiscPositiveZNode.setResizeStrategy(ResizeStrategy::Gap);
109
114 }
115
116 ATH_MSG_DEBUG(
"Have added all Barrel layers to caloBarrelCylinderNode");
117
118
119 itkCaloNode->addChild(caloNode);
120
121
122 return itkCaloNode;
123}
std::map< std::string, double > caloDimensionMap_t
void fillMaps(std::map< caloRegion, caloSampleSurfaceMap_t > &caloRegionSampleSurfaceMap, std::map< caloRegion, caloSampleDDEElementsMap_t > &caloRegionSampleDDEElementsMap) const
fillMaps fills two maps.
std::vector< std::pair< std::string, CaloCell_ID::CaloSample > > m_caloDiscSampleList
void fillCaloDimensionsMap(caloDimensionMap_t &caloDimensionsMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
fillCaloDimensionsMap fills a map of calorimeter dimensions for each sampling layer.
void generateCylinderSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
generateCylinderSurfaces generates cylindrical surfaces for each calo sampling.
void addCylindricalTrackingVolumeToCaloNode(Acts::Experimental::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.
CaloCell_ID::CaloSample getSampleEnum(const std::string &sampleName) const
void generateDiscSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
mapped_type at(key_type key) const
Look up an element in the map.