![]() |
ATLAS Offline Software
|
Builds the Calo Blueprint Node. More...
#include <CaloBlueprintNodeBuilder.h>
Public Types | |
| enum class | caloRegion { DiscNegativeZ , DiscPositiveZ , BarrelCylinder , nRegions } |
| using | DetElVec_t = std::vector<const CaloDetDescrElement*> |
| using | DetElementMap_t = std::array<DetElVec_t, CaloSampling::getNumberOfSamplings()> |
| Vector of Detector Elements per calorimeter layer. | |
| using | SurfaceMap_t |
| Vector of surfaces per calorimeter region. | |
Public Member Functions | |
| std::shared_ptr< Acts::BlueprintNode > | buildBlueprintNode (const Acts::GeometryContext &gctx, std::shared_ptr< Acts::BlueprintNode > &&childNode) override |
| virtual StatusCode | initialize () override final |
Private Member Functions | |
| DetElementMap_t | fillDetectorElements (const CaloDetDescrManager &detDecrMgr) const |
| Fill the detector elements per calorimeter layer and sort them in ascending r(z) for the barrel (endcap) layers. | |
| SurfaceMap_t | translateToSurfaces (const DetElementMap_t &detElements) const |
| Translate all detector elements to a Cylinder and Disc surfaces. | |
| std::shared_ptr< Acts::Surface > | createCylinderSurface (std::span< const CaloDetDescrElement *const > detElements) const |
| Create a cylinder surface from a list of Calo detector description elements. | |
| std::shared_ptr< Acts::Surface > | createDiscSurface (std::span< const CaloDetDescrElement *const > detElements) const |
| Create a disc surface from the passed calo description elements. | |
| std::unique_ptr< Acts::TrackingVolume > | envelopeVolume (const Acts::GeometryContext &tgContext, const SurfaceMap_t &surfacesPerRegion) const |
| Create the envelope volume of the Calo Tracking Geometry. | |
| std::vector< std::shared_ptr< Acts::Surface > > | fillLayer (const Acts::GeometryContext &tgContext, std::shared_ptr< Acts::Surface > &¢ralSurf) const |
| Fill the layer with extra surfaces. | |
Private Attributes | |
| Gaudi::Property< std::vector< std::uint32_t > > | m_surfaceDuplicates |
| Configure the insert of extra surfaces per each calorimeter layer. | |
| Gaudi::Property< double > | m_radiusTolerance |
| Gaudi::Property< double > | m_zTolerance |
Friends | |
| std::ostream & | operator<< (std::ostream &ostr, const caloRegion region) |
Builds the Calo Blueprint Node.
Definition at line 29 of file CaloBlueprintNodeBuilder.h.
| using ActsTrk::CaloBlueprintNodeBuilder::DetElementMap_t = std::array<DetElVec_t, CaloSampling::getNumberOfSamplings()> |
Vector of Detector Elements per calorimeter layer.
Definition at line 49 of file CaloBlueprintNodeBuilder.h.
| using ActsTrk::CaloBlueprintNodeBuilder::DetElVec_t = std::vector<const CaloDetDescrElement*> |
Definition at line 47 of file CaloBlueprintNodeBuilder.h.
Vector of surfaces per calorimeter region.
Definition at line 52 of file CaloBlueprintNodeBuilder.h.
|
strong |
| Enumerator | |
|---|---|
| DiscNegativeZ | |
| DiscPositiveZ | |
| BarrelCylinder | |
| nRegions | |
Definition at line 32 of file CaloBlueprintNodeBuilder.h.
|
override |
Build the list of detector elements
Convert the detector elements to surfaces
Bare pointer to put the surfaces that cannot be put into wrapping cylinders
Definition at line 220 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Create a cylinder surface from a list of Calo detector description elements.
The surface is constructed such that the radius is the radial midpoint of the passed elements, the thickness is capturing the minimal and maximal passed radius and the half length completley encloses the passed description elements.
| detElements | The list of detector elements from which the envelope surface shall be translated. |
Definition at line 138 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Create a disc surface from the passed calo description elements.
The disc is placed at the central z considering the longitudinal spread of the elements. The radius of the disc fully encapsulates the detector description elements and the assigned thickness represents the maximum and minimum z
| detElements | The list of detector elements from which the envelope surface shall be translated. |
Definition at line 162 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Create the envelope volume of the Calo Tracking Geometry.
The volume encapsulates all calorimeter surfaces taking the respective thickness into account. The inner radius is set to zero to make space for the ITk. The GeometryIdentifier is set to the central calo volume ID
| tgContext | The geometry context to align the particular surfaces and volumes |
| surfacesPerRegion | List of the constructed calorimeter surfaces |
Definition at line 302 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Fill the detector elements per calorimeter layer and sort them in ascending r(z) for the barrel (endcap) layers.
Remove duplicates from the list where r and z are within the precision tolerance
| detDescrMgr | The calorimeter detector description manager from which the detector elements are retrieved |
Barrel elements that are cylinders sort them by R
Endcap elements are discs and sort them first by Z
Remove duplicate elements
The detector elements from TileBar2 and TileGap2 produce each a cylinder which is exactly at the same R but overlaping with the other. Merge them into a single vector
Definition at line 90 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Fill the layer with extra surfaces.
Via the <insertExtraSuraces> property, it can be steered how many extra surfaces are inserted between the central surface and the virtual boundaries (defined by the extra thickness). E.g. a value of one inserts one surface in front and another one behind the central surface
| tgContext | The geometry context to access the surface transforms |
| centralSurf | The central surface to be duplicated |
Definition at line 330 of file CaloBlueprintNodeBuilder.cxx.
|
finaloverridevirtual |
Definition at line 81 of file CaloBlueprintNodeBuilder.cxx.
|
private |
Translate all detector elements to a Cylinder and Disc surfaces.
Per calorimeter layer the detector elements are combined to single or multiple surfaces and then sorted into the
| detElements | The calorimeter detector description elements split by their logical CaloSamplingID |
Definition at line 183 of file CaloBlueprintNodeBuilder.cxx.
|
friend |
Definition at line 36 of file CaloBlueprintNodeBuilder.h.
|
private |
Definition at line 109 of file CaloBlueprintNodeBuilder.h.
|
private |
Configure the insert of extra surfaces per each calorimeter layer.
Definition at line 106 of file CaloBlueprintNodeBuilder.h.
|
private |
Definition at line 114 of file CaloBlueprintNodeBuilder.h.