ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ActsTrk::CaloBlueprintNodeBuilder Class Reference

Builds the Calo Blueprint Node. More...

#include <CaloBlueprintNodeBuilder.h>

Inheritance diagram for ActsTrk::CaloBlueprintNodeBuilder:
Collaboration diagram for ActsTrk::CaloBlueprintNodeBuilder:

Public Member Functions

StatusCode initialize () override
 
StatusCode finalize () override
 
std::shared_ptr< Acts::Experimental::BlueprintNode > buildBlueprintNode (const Acts::GeometryContext &gctx, std::shared_ptr< Acts::Experimental::BlueprintNode > &&childNode) override
 Build the Itk Blueprint Node. More...
 

Private Member Functions

void fillMaps (caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
 fillMaps fills two maps. More...
 
void fillCaloDimensionsMap (caloDimensionMap_t &caloDimensionsMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
 fillCaloDimensionsMap fills a map of calorimeter dimensions for each sampling layer. More...
 
void generateCylinderSurfaces (caloSampleSurfaceMap_t &caloSampleSurfaceMap, caloSampleDDEElementsMap_t &caloSampleDDEElementsMap) const
 generateCylinderSurfaces generates cylindrical surfaces for each calo sampling. More...
 
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. More...
 
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. More...
 

Private Attributes

std::unique_ptr< CaloDetDescrManagerm_caloDetSecrMgr
 
std::vector< CaloCell_ID::CaloSamplem_caloDiscSampleList
 
std::vector< CaloCell_ID::CaloSamplem_caloCylinderSampleList
 
Gaudi::Property< double > m_radiusTolerance
 
Gaudi::Property< double > m_zTolerance
 

Detailed Description

Builds the Calo Blueprint Node.

Definition at line 25 of file CaloBlueprintNodeBuilder.h.

Member Function Documentation

◆ addCylindricalTrackingVolumeToCaloNode()

void ActsTrk::CaloBlueprintNodeBuilder::addCylindricalTrackingVolumeToCaloNode ( Acts::Experimental::CylinderContainerBlueprintNode &  containerNode,
caloDimensionMap_t caloDimensionMap,
const std::string &  volumeName,
const std::vector< std::shared_ptr< Acts::Surface >> &  surfaces 
) const
private

addCylindricalTrackingVolumeToCaloNode adds a cylindrical tracking volume to the calo node.

It takes as input the container node, the calo dimensions map, the name of the volume and the vector of surfaces to be added to the volume. It creates a new CylinderContainerBlueprintNode in the container node, then creates a new Acts::TrackingVolume with the appropriate dimensions. Finally it adds the Acts::CylinderSurface to that Acts::TrackingVolume, then adds the tracking volume to the container node.

Definition at line 330 of file CaloBlueprintNodeBuilder.cxx.

330  {
331 
332  CylinderContainerBlueprintNode& cylinder = containerNode.addCylinderContainer(volumeName, AxisDirection::AxisZ);
333 
334  ATH_MSG_DEBUG("Creating TrackingVolume for " << volumeName << " with minR, maxR and halfLengthZ of " << caloDimensionMap[volumeName+"MinR"] << ", " << caloDimensionMap[volumeName+"MaxR"] << " and " << caloDimensionMap[volumeName+"HalfLengthZ"]);
335 
336  auto trackingVolume = std::make_unique<TrackingVolume>(
337  Transform3::Identity(),
338  std::make_shared<CylinderVolumeBounds>(caloDimensionMap[volumeName+"MinR"], caloDimensionMap[volumeName+"MaxR"], caloDimensionMap[volumeName+"HalfLengthZ"]),
339  volumeName);
340 
341  for (auto surface : surfaces) trackingVolume->addSurface(std::move(surface));
342 
343 
344  cylinder.addStaticVolume(std::move(trackingVolume));
345 
346 }

◆ buildBlueprintNode()

std::shared_ptr< BlueprintNode > ActsTrk::CaloBlueprintNodeBuilder::buildBlueprintNode ( const Acts::GeometryContext &  gctx,
std::shared_ptr< Acts::Experimental::BlueprintNode > &&  childNode 
)
override

Build the Itk Blueprint Node.

Parameters
gctxGeometry context
childThe child node which is added to the itk node.

Definition at line 32 of file CaloBlueprintNodeBuilder.cxx.

33  {
34 
35  caloSampleSurfaceMap_t caloSampleSurfaceMap;
36  caloSampleDDEElementsMap_t caloSampleDDEElementsMap;
37  fillMaps(caloSampleSurfaceMap, caloSampleDDEElementsMap);
38 
39  ATH_MSG_DEBUG("Have filled first two maps");
40 
41  caloDimensionMap_t caloDimensionMap;
42  fillCaloDimensionsMap(caloDimensionMap, caloSampleDDEElementsMap);
43 
44  ATH_MSG_DEBUG("Have filled calo dimensions map");
45 
46  generateCylinderSurfaces(caloSampleSurfaceMap, caloSampleDDEElementsMap);
47 
48  ATH_MSG_DEBUG("Have generated calorimeter cylindrical surfaces");
49 
50  //The calo node is a container node that will hold the calo layers
51  auto caloNode = std::make_shared<CylinderContainerBlueprintNode>("CaloNode", AxisDirection::AxisR);
52  if (childNode) caloNode->addChild(std::move(childNode));
53 
54  ATH_MSG_DEBUG("Top level calorimeter node created");
55 
56  CylinderContainerBlueprintNode& EMBarrelCylinder = caloNode->addCylinderContainer("EMBarrel", AxisDirection::AxisR);
57  // Use Gap attachment strategy to fill gaps between layers
58  EMBarrelCylinder.setAttachmentStrategy(VolumeAttachmentStrategy::Gap);
59 
60  ATH_MSG_DEBUG("EM Barrel container node created");
61 
62  //Add all cylindrical layers that are symmetric about zero in Z.
63  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "PreSamplerB", caloSampleSurfaceMap[CaloCell_ID::PreSamplerB]);
64  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "EMB1", caloSampleSurfaceMap[CaloCell_ID::EMB1]);
65  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "EMB2", caloSampleSurfaceMap[CaloCell_ID::EMB2]);
66  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "EMB3", caloSampleSurfaceMap[CaloCell_ID::EMB3]);
67  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "TileBar0", caloSampleSurfaceMap[CaloCell_ID::TileBar0]);
68  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "TileBar1", caloSampleSurfaceMap[CaloCell_ID::TileBar1]);
69  addCylindricalTrackingVolumeToCaloNode(EMBarrelCylinder, caloDimensionMap, "TileBar2", caloSampleSurfaceMap[CaloCell_ID::TileBar2]);
70 
71  ATH_MSG_DEBUG("Have added all Barrel layers to EMBarrelCylinder node");
72 
73  return caloNode;
74 }

◆ fillCaloDimensionsMap()

void ActsTrk::CaloBlueprintNodeBuilder::fillCaloDimensionsMap ( caloDimensionMap_t caloDimensionsMap,
caloSampleDDEElementsMap_t caloSampleDDEElementsMap 
) const
private

fillCaloDimensionsMap fills a map of calorimeter dimensions for each sampling layer.

The map contains minR, maxR, minZ, maxZ and halfLengthZ for each sampling layer.

Definition at line 241 of file CaloBlueprintNodeBuilder.cxx.

241  {
242 
243  //initialise parameters we will use to find the dimensions of the calorimeter
244  double minR = 99999999999999;
245  double maxR = 0.0;
246  double minZ = 99999999999999;
247  double maxZ = -99999999999999;
248 
249  //define functions we will use
250  auto checkMinR = [&minR](const CaloDetDescrElement* theDDE){double r = theDDE->r();if (r < minR) minR = r;};
251  auto checkMaxR = [&maxR](const CaloDetDescrElement* theDDE){double r = theDDE->r();if (r > maxR) maxR = r;};
252  auto checkMinMaxZ = [&minZ,&maxZ](const CaloDetDescrElement* theDDE){double z = theDDE->z();if (z > maxZ) maxZ = z;if (z < minZ) minZ = z;};
253  auto calcHalfLengthZ = [&minZ, &maxZ](){return (maxZ - minZ) / 2.0;};
254 
255  //function to use the above to get minR, maxR and halfLengthZ
256  auto getMinRMaxRHalfLengthZ = [&minR, &maxR, &minZ, &maxZ, &caloSampleDDEElementsMap, &checkMinR, &checkMaxR, &checkMinMaxZ, &calcHalfLengthZ](CaloCell_ID::CaloSample currentSample) {
257 
258  minR = 99999999999999;
259  maxR = 0.0;
260  minZ = 99999999999999;
261  maxZ = -99999999999999;
262 
263  for (const CaloDetDescrElement* theDDE : caloSampleDDEElementsMap[currentSample]) {
264  checkMinR(theDDE);
265  checkMaxR(theDDE);
266  checkMinMaxZ(theDDE);
267  }
268 
269  return calcHalfLengthZ();
270  };
271 
272  //find minR from PreSamplerB
273  for (const CaloDetDescrElement* theDDE : caloSampleDDEElementsMap[CaloCell_ID::PreSamplerB]) checkMinR(theDDE);
274 
275  //find maxR from TileBar2, TileGap2 and Tile Ext2
276  std::vector<const CaloDetDescrElement*> DDE_TileBar2 = caloSampleDDEElementsMap[CaloCell_ID::TileBar2];
277  std::vector<const CaloDetDescrElement*> DDE_TileGap2 = caloSampleDDEElementsMap[CaloCell_ID::TileGap2];
278  std::vector<const CaloDetDescrElement*> DDE_TileExt2 = caloSampleDDEElementsMap[CaloCell_ID::TileExt2];
279 
280  for (auto currentSample : {CaloCell_ID::TileBar2, CaloCell_ID::TileGap2, CaloCell_ID::TileExt2}) {
281  for (const CaloDetDescrElement* theDDE : caloSampleDDEElementsMap[currentSample]) checkMaxR(theDDE);
282  }
283 
284  ATH_MSG_DEBUG("Min R in PreSamplerB is " << minR);
285  ATH_MSG_DEBUG("Max R in TileBar2, TileGap2 and TileExt2 is " << maxR);
286 
287  caloDimensionsMap["CaloMinR"] = minR;
288  caloDimensionsMap["CaloMaxR"] = maxR;
289 
290  //find minZ and maxZ from all barrel samplings
292  for (const CaloDetDescrElement* theDDE : caloSampleDDEElementsMap[currentSample]) checkMinMaxZ(theDDE);
293  }
294 
295  caloDimensionsMap["CaloMinZ"] = minZ;
296  caloDimensionsMap["CaloMaxZ"] = maxZ;
297 
298  double halfLengthZ = calcHalfLengthZ();
299  ATH_MSG_DEBUG("Half length in Z for entire barrel is " << halfLengthZ);
300  caloDimensionsMap["CaloHalfLengthZ"] = halfLengthZ;
301 
302  auto putMinRMaxRHalfLengthZInMap = [&caloDimensionsMap,&minR,&maxR,&halfLengthZ](const std::string& sampleString){
303  //PresamplerB, TileBar0/2, TileGap1/2, TileExt0/1/2 return the same radial value for all DDE, so need to make a small offset because a zero thickness
304  //cylinder is not allowed by Acts volumes etc.
305  float smallOffset = 0.1;
306  if (std::fabs((maxR - minR)) < smallOffset) maxR = minR + smallOffset;
307  caloDimensionsMap[sampleString + "MinR"] = minR;
308  caloDimensionsMap[sampleString + "MaxR"] = maxR;
309  caloDimensionsMap[sampleString + "HalfLengthZ"] = halfLengthZ;
310  };
311 
312  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::PreSamplerB);
313  putMinRMaxRHalfLengthZInMap("PreSamplerB");
314  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::EMB1);
315  putMinRMaxRHalfLengthZInMap("EMB1");
316  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::EMB2);
317  putMinRMaxRHalfLengthZInMap("EMB2");
318  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::EMB3);
319  putMinRMaxRHalfLengthZInMap("EMB3");
320  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::TileBar0);
321  putMinRMaxRHalfLengthZInMap("TileBar0");
322  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::TileBar1);
323  putMinRMaxRHalfLengthZInMap("TileBar1");
324  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::TileBar2);
325  putMinRMaxRHalfLengthZInMap("TileBar2");
326  halfLengthZ = getMinRMaxRHalfLengthZ(CaloCell_ID::TileGap1);
327 
328 }

◆ fillMaps()

void ActsTrk::CaloBlueprintNodeBuilder::fillMaps ( caloSampleSurfaceMap_t caloSampleSurfaceMap,
caloSampleDDEElementsMap_t caloSampleDDEElementsMap 
) const
private

fillMaps fills two maps.

The first maps each calo sampling to a vector of surfaces (initially empty) The second maps each calo sampling to a vector of CaloDetDescrElements The second map is filled by looping over all DDE in the CaloDetDescrManager and adding each DDE to the vector corresponding to its sampling in the map

Definition at line 81 of file CaloBlueprintNodeBuilder.cxx.

81  {
82 
83 
84  //loop over all possible calo sampling layers
85  //and create empty vectors of surfaces in the map
86 
87  //Create map between each calorimeter sampling and a vector of
88  //cylinder surfaces. We can have N cylinders in a given sampling,
89  //and the value of N is determined by how often the average radius
90  //calculated for a given phi ring, at fixed Z, changes by more than
91  //a tolerance value
92 
93  //Use the same loop to create map bwteeen sampling and vectors of DDE
94  for (auto currentSample : m_caloCylinderSampleList) {
95  caloSampleSurfaceMap[currentSample] = std::vector<std::shared_ptr<Surface> >();
96  caloSampleDDEElementsMap[currentSample] = std::vector<const CaloDetDescrElement*>();
97  }
98 
99  for (auto currentSample : m_caloDiscSampleList) {
100  caloSampleSurfaceMap[currentSample] = std::vector<std::shared_ptr<Surface> >();
101  caloSampleDDEElementsMap[currentSample] = std::vector<const CaloDetDescrElement*>();
102  }
103 
104  //for each calo sampling collect all the DDE in a vector
105  for (const CaloDetDescrElement* theDDE : m_caloDetSecrMgr->element_range()){
106  if (!theDDE){
107  ATH_MSG_ERROR("Null pointer to CaloDetDescrElement");
108  continue;
109  }
110  CaloCell_ID::CaloSample currentSample=theDDE->getSampling();
111  caloSampleDDEElementsMap[currentSample].push_back(theDDE);
112  }
113 
114  auto sortAllLayersInZ = [&caloSampleDDEElementsMap](const std::vector<CaloCell_ID::CaloSample>& caloSampleList) {
115  for (auto currentSample : caloSampleList) {
116  std::vector<const CaloDetDescrElement*> currentElements = caloSampleDDEElementsMap[currentSample];
117  std::sort(currentElements.begin(), currentElements.end(), [](const CaloDetDescrElement* a, const CaloDetDescrElement* b) {return a->z() < b->z();});
118  caloSampleDDEElementsMap[currentSample] = std::move(currentElements);
119  }
120  };
121 
122  //Sort the DDE, by Z, in all possible layers
123  sortAllLayersInZ(m_caloCylinderSampleList);
124  sortAllLayersInZ(m_caloDiscSampleList);
125 
126 }

◆ finalize()

StatusCode ActsTrk::CaloBlueprintNodeBuilder::finalize ( )
override

Definition at line 76 of file CaloBlueprintNodeBuilder.cxx.

76  {
77  ATH_MSG_DEBUG("Finalizing CaloBlueprintNodeBuilder");
78  return StatusCode::SUCCESS;
79 }

◆ generateCylinderSurface()

std::shared_ptr< CylinderSurface > ActsTrk::CaloBlueprintNodeBuilder::generateCylinderSurface ( const double &  maxLArBRadius,
const double &  minLArBRadius,
const double &  lowZLarB,
const double &  highZLarB 
) const
private

generateCylinderSurface generates a cylindrical surface for a given set of parameters.

To do this it calculates the radius and length of the cylinder, then shifts it in Z to the midpoint of the Z values used to build it. It then creates the Acts::CylinderSurface and returns it via a shared pointer.

Definition at line 223 of file CaloBlueprintNodeBuilder.cxx.

223  {
224 
225  //Characterise the dimensions of the cylinder
226  double LArBRadius = (maxLArBRadius + minLArBRadius) / 2.0;
227  double LArBLength = std::abs(highZLarB - lowZLarB);
228 
229  ATH_MSG_DEBUG("Cylinder radius and length are " << LArBRadius << " and " << LArBLength);
230 
231  //Now we need to transform the local cylinder centred on 0,0,0 into the global
232  //atlas coordinate system. To do this we shift the cylinder in Z away from zero
233  //to the midpoint in the Z coordinates used to build the cylinder.
234  auto transform = Transform3(Translation3(0.0,0.0,lowZLarB + (lowZLarB + highZLarB) / 2.0));
235  auto surface = Surface::makeShared<CylinderSurface>(transform,LArBRadius, LArBLength);
236 
237  return surface;
238 
239 }

◆ generateCylinderSurfaces()

void ActsTrk::CaloBlueprintNodeBuilder::generateCylinderSurfaces ( caloSampleSurfaceMap_t caloSampleSurfaceMap,
caloSampleDDEElementsMap_t caloSampleDDEElementsMap 
) const
private

generateCylinderSurfaces generates cylindrical surfaces for each calo sampling.

It does this for cylindrical layers by scanning in Z, for each Z finding the average radius of the cells in a phi ring If the average radius changes by more than a tolerance value (m_radiusTolerance), a new cylinder surface is created. The surfaces are added to the relevant vector of surfaces in the caloSampleSurfaceMap.

Definition at line 128 of file CaloBlueprintNodeBuilder.cxx.

128  {
129 
130  for (auto currentSample : m_caloCylinderSampleList) {
131 
132  std::vector<const CaloDetDescrElement*> currentElements = caloSampleDDEElementsMap[currentSample];
133 
134  double maxLArBRadius = 0.0, minLArBRadius = 999999.0;
135  double lowZLarB = 0.0, highZLarB = 0.0;
136 
137  //loop over cells runs from -z to +z in a given sampling layer
138  //There are many cells with the same z value, but different phi values
139  //We will find the average radius of the cells in a given phi ring
140  double totalRadiusFixedPhi = 0.0;
141  bool firstCellInPhiRing = true;
142  unsigned int phiCounter = 0;
143 
144  //Then we will also track changes in radius as we move in Z from
145  //each ring of cells in phi to the next ring of cells in phi
146  bool firstPhiRing = true;
147  double initialRadius = 0.0;
148  double initialZ = -999999.0;
149 
150  for (const CaloDetDescrElement* theDDE : currentElements){
151 
152  double z = theDDE->z();
153  double radius = theDDE->r();
154 
155  ATH_MSG_DEBUG(" Calo Sampling is " << currentSample);
156 
157  if (firstCellInPhiRing) {
158  ATH_MSG_DEBUG("First Cell in phi ring " << currentSample << " has z = " << z << " and r = " << radius);
159  initialZ = z;
160  firstCellInPhiRing = false;
161  }
162 
163  if (firstPhiRing) {
164  ATH_MSG_DEBUG("First Cell in layer " << currentSample << " has z = " << z << " and r = " << radius);
165  initialRadius = theDDE->r();
166  firstPhiRing = false;
167  lowZLarB = z;
168  }
169 
170  ATH_MSG_DEBUG("Z and initialZ are " << z << " and " << initialZ);
171 
172  //if z has not changed then we add the radius to the summed radius for this phi ring
173  //and increment the counter of cells in this phi ring
174  if (std::abs(z - initialZ) < 0.0001) {
175  ATH_MSG_DEBUG("phiCounter is " << phiCounter << " and radius is " << radius << " and totalRadiusFixedPhi is " << totalRadiusFixedPhi << " and hash is " << theDDE->calo_hash());
176  totalRadiusFixedPhi += radius;
177  phiCounter++;
178  continue;
179  }
180  else {
181  firstCellInPhiRing = true;
182  if (phiCounter > 0) {
183  double cellRingRadius = totalRadiusFixedPhi / phiCounter;
184  totalRadiusFixedPhi = 0.0;
185  phiCounter = 0;
186 
187  if (cellRingRadius > maxLArBRadius) maxLArBRadius = radius;
188  if (cellRingRadius < minLArBRadius) minLArBRadius = radius;
189 
190  //if radius changes by more than tolerance, then we will create a cylinder
191  //with the average cell radius and length from neg to pos z
192  highZLarB = z;
193  ATH_MSG_DEBUG("Values of cellRingRadius, initialRadius, highZLarB and lowZLarB are " << cellRingRadius << ", " << initialRadius << ", " << highZLarB << " and " << lowZLarB);
194  if (std::abs(cellRingRadius - initialRadius) > m_radiusTolerance && highZLarB - lowZLarB > 0.0) {
195  ATH_MSG_DEBUG("CYLINDER: Create cylinder for layer " << currentSample);
196  ATH_MSG_DEBUG("CYLINDER: Create Cylinder: Min and Max LAr B radius are " << minLArBRadius << " " << maxLArBRadius);
197  ATH_MSG_DEBUG("CYLINDER: Create Cylinder: Min and Max LAr B z are " << lowZLarB << " " << highZLarB);
198 
199  caloSampleSurfaceMap[currentSample].push_back(generateCylinderSurface(maxLArBRadius, minLArBRadius, lowZLarB, highZLarB));
200 
201  //reset the dimensions of the cylinder to the initial conditions, in
202  //preparation for the next cylinder
203  firstPhiRing = true;
204  minLArBRadius = 999999.0;
205  maxLArBRadius = 0.0;
206  lowZLarB = 0.0;
207  highZLarB = 0.0;
208  }//if radius changes by more than tolerance
209  }//if at least one cell in phi (should always be the case!)
210  else ATH_MSG_ERROR("phiCounter is zero!");
211  }//if z has changed
212  }//loop over calorimeter DDE
213 
214  if (0 == caloSampleSurfaceMap[currentSample].size()){
215  ATH_MSG_DEBUG("CYLINDER: Zero size Vector: Create cylinder for layer " << currentSample);
216  ATH_MSG_DEBUG("CYLINDER: Create Cylinder: Min and Max LAr B radius are " << minLArBRadius << " " << maxLArBRadius);
217  ATH_MSG_DEBUG("CYLINDER: Create Cylinder: Min and Max LAr B z are " << lowZLarB << " " << highZLarB);
218  caloSampleSurfaceMap[currentSample].push_back(generateCylinderSurface(maxLArBRadius, minLArBRadius, lowZLarB, highZLarB));
219  }
220  }
221 }

◆ initialize()

StatusCode ActsTrk::CaloBlueprintNodeBuilder::initialize ( )
override

Definition at line 23 of file CaloBlueprintNodeBuilder.cxx.

23  {
24  ATH_MSG_DEBUG("Initializing CaloBlueprintNodeBuilder");
25 
28 
29  return StatusCode::SUCCESS;
30 }

Member Data Documentation

◆ m_caloCylinderSampleList

std::vector<CaloCell_ID::CaloSample> ActsTrk::CaloBlueprintNodeBuilder::m_caloCylinderSampleList
private

◆ m_caloDetSecrMgr

std::unique_ptr<CaloDetDescrManager> ActsTrk::CaloBlueprintNodeBuilder::m_caloDetSecrMgr
private

Definition at line 71 of file CaloBlueprintNodeBuilder.h.

◆ m_caloDiscSampleList

std::vector<CaloCell_ID::CaloSample> ActsTrk::CaloBlueprintNodeBuilder::m_caloDiscSampleList
private

◆ m_radiusTolerance

Gaudi::Property<double> ActsTrk::CaloBlueprintNodeBuilder::m_radiusTolerance
private
Initial value:
{ this
, "RadiusTolerance"
, 2.0
, "Tolerance for determining if a ring of cells in phi has changed the radius w.r.t to the previous ring in phi" }

Definition at line 84 of file CaloBlueprintNodeBuilder.h.

◆ m_zTolerance

Gaudi::Property<double> ActsTrk::CaloBlueprintNodeBuilder::m_zTolerance
private
Initial value:
{ this
, "ZTolerance"
, 2.0
, "Tolerance for determining if a ring of cells in phi has changed the z w.r.t to the previous ring in phi" }

Definition at line 89 of file CaloBlueprintNodeBuilder.h.


The documentation for this class was generated from the following files:
beamspotman.r
def r
Definition: beamspotman.py:672
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
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
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
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
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
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
z
#define z
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
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
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
caloSampleDDEElementsMap_t
std::map< CaloCell_ID::CaloSample, std::vector< const CaloDetDescrElement * > > caloSampleDDEElementsMap_t
Definition: CaloBlueprintNodeBuilder.h:17
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
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
a
TList * a
Definition: liststreamerinfos.cxx:10
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
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
buildCaloDetDescrNoAlign
std::unique_ptr< CaloDetDescrManager > buildCaloDetDescrNoAlign(ISvcLocator *svcLocator, IMessageSvc *msgSvc)
Definition: CaloDetDescrBuilder.cxx:791
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