Build the Itk Blueprint Node.
48 {
49
50
51 std::map<caloRegion, caloSampleSurfaceMap_t> caloRegionSampleSurfaceMap;
52 std::map<caloRegion, caloSampleDDEElementsMap_t> caloRegionSampleDDEElementsMap;
53
54 fillMaps(caloRegionSampleSurfaceMap, caloRegionSampleDDEElementsMap);
55
57
63
64 ATH_MSG_DEBUG(
"Have generated calorimeter cylindrical surfaces");
65
66
67
68
69
70
71 std::shared_ptr<StaticBlueprintNode> itkCaloNode{};
72 {
73 auto envelope = std::make_unique<TrackingVolume>(Amg::Transform3D::Identity(),
74 std::make_shared<CylinderVolumeBounds>(0., 100.0, 100.0),"ITkCalo");
75 envelope->assignGeometryId(Acts::GeometryIdentifier{}.withVolume(
s_caloEnvelopeID));
76 itkCaloNode = std::make_shared<StaticBlueprintNode>(std::move(envelope));
77 }
78 if (childNode) {
79 itkCaloNode->addChild(std::move(childNode));
80 }
81
83
84 auto caloNode = std::make_shared<CylinderContainerBlueprintNode>("CaloNode", AxisDirection::AxisZ);
85 CylinderContainerBlueprintNode& caloBarrelCylinderNode = caloNode->addCylinderContainer("CaloBarrelSymmetricZZeroCylinders", AxisDirection::AxisR);
86 caloBarrelCylinderNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
87 caloBarrelCylinderNode.setResizeStrategy(ResizeStrategy::Gap);
88
90
91
95 }
96
97
98
99 CylinderContainerBlueprintNode& caloBarrelCylinderNegativeZNode = caloNode->addCylinderContainer("CaloBarrelNegativeZAsymmetricCylinders", AxisDirection::AxisR);
100 caloBarrelCylinderNegativeZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
101 caloBarrelCylinderNegativeZNode.setResizeStrategy(ResizeStrategy::Gap);
102
103
104 CylinderContainerBlueprintNode& caloBarrelCylinderPositiveZNode = caloNode->addCylinderContainer("CaloBarrelPositiveZAsymmetricCylinders", AxisDirection::AxisR);
105 caloBarrelCylinderPositiveZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
106 caloBarrelCylinderPositiveZNode.setResizeStrategy(ResizeStrategy::Gap);
107
110
111
112 if (sampleIndex < 2){
115 }
116 else{
117
118
119
120 itkCaloNode->addLayer(sampleName+"NegZ" + "_Layer", [&](auto& layer) {
122 layer.setEnvelope(Acts::ExtentEnvelope{{
123 .z = {0.1_mm, 0.1_mm},
124 .r = {2_mm, 2_mm},
125 }});
126 });
127 itkCaloNode->addLayer(sampleName+"PosZ" + "_Layer", [&](auto& layer) {
129 layer.setEnvelope(Acts::ExtentEnvelope{{
130 .z = {0.1_mm, 0.1_mm},
131 .r = {2_mm, 2_mm},
132 }});
133 });
134 }
135 }
136
137
138 CylinderContainerBlueprintNode& caloEndCapDiscNegativeZNode = caloNode->addCylinderContainer("CaloEndCapDiscNegativeZ", AxisDirection::AxisZ);
139 caloEndCapDiscNegativeZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
140 caloEndCapDiscNegativeZNode.setResizeStrategy(ResizeStrategy::Gap);
141
142 CylinderContainerBlueprintNode& caloEndCapDiscPositiveZNode = caloNode->addCylinderContainer("CaloEndCapDiscPositiveZ", AxisDirection::AxisZ);
143 caloEndCapDiscPositiveZNode.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
144 caloEndCapDiscPositiveZNode.setResizeStrategy(ResizeStrategy::Gap);
145
150 }
151
152 ATH_MSG_DEBUG(
"Have added all Barrel layers to caloBarrelCylinderNode");
153
154
155 itkCaloNode->addChild(caloNode);
156
157
158 return itkCaloNode;
159}
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 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.
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::vector< std::pair< std::string, CaloCell_ID::CaloSample > > m_caloCylinderSymmetricSampleList
CaloCell_ID::CaloSample getSampleEnum(const std::string &sampleName) const
void generateDiscSurfaces(caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
constexpr std::size_t s_caloEnvelopeID
Volume Ids ofthe Calorimeter.
mapped_type at(key_type key) const
Look up an element in the map.