28 "If LayerMaterialMapKey is not set, then fall back to retrieving this from the detector store.");
39 return StatusCode::SUCCESS;
49 layerMaterialMap = *layerMaterialMapH;
63 if (
process(*worldVolume, *layerMaterialMap, 0).isFailure() ) {
64 ATH_MSG_FATAL(
"Could not load material maps for provided TrackingGeometry, abort job.");
65 return StatusCode::FAILURE;
72 int layCount = bLayerIter.second;
76 StatusCode
sc(
process(*lay, *layerMaterialMap, 0) );
79 ATH_MSG_DEBUG(
"---[B] Boundary layer with " << layCount <<
" references : successfully loaded material map for layer " << layIndex );
83 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on layer. Aborting.");
84 return StatusCode::FAILURE;
89 return StatusCode::SUCCESS;
92 ATH_MSG_FATAL(
"No highest level TrackingVolume found. Stopping recursive parsing, abort job.");
93 return StatusCode::FAILURE;
104 layerMaterialMap = *layerMaterialMapH;
111 return StatusCode::SUCCESS;
119 std::stringstream displayBuffer;
120 for (
size_t il = 0; il < level; ++il) displayBuffer <<
" ";
130 std::span<Trk::Layer * const> layers = layerArray->
arrayObjects();
131 ATH_MSG_VERBOSE(displayBuffer.str() <<
"--> has " << layers.size() <<
" confined layers." );
132 for (
const auto & layIter : layers ){
134 ATH_MSG_WARNING(
"Zero-pointer found in LayerArray - indicates problem !");
137 int layIndex = layIter->layerIndex().value();
139 StatusCode
sc =
process(*layIter, layerMaterialMap, level);
141 ATH_MSG_DEBUG(displayBuffer.str() <<
"---[M] Material layer: successfully loaded material map for layer " << layIndex );
142 else if (
sc.isRecoverable())
143 ATH_MSG_WARNING(
"Failed to call process(const Layer&) on layers - but recoverable.");
145 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on layer. Aborting.");
146 return StatusCode::FAILURE;
149 ATH_MSG_DEBUG(displayBuffer.str() <<
"---[o] Navigation layer: skipping.");
157 if (confinedVolumes) {
158 std::span<Trk::TrackingVolume * const> volumes = confinedVolumes->
arrayObjects();
159 std::span<Trk::TrackingVolume * const>::iterator volumesIter = volumes.begin();
160 for (; volumesIter != volumes.end(); ++volumesIter){
162 ATH_MSG_WARNING(
"Zero-pointer found in VolumeArray - indicates problem !");
163 if ((*volumesIter) &&
process(**volumesIter, layerMaterialMap, ++level).isFailure() ){
164 ATH_MSG_FATAL(
"Failed to call process(const TrackingVolume&) on confined volumes. Aborting.");
165 return StatusCode::FAILURE;
171 return StatusCode::SUCCESS;
182 layerMaterialMap = *layerMaterialMapH;
188 return StatusCode::SUCCESS;
198 return StatusCode::SUCCESS;
204 std::stringstream displayBuffer;
205 for (
size_t il = 0; il < level; ++il)
206 displayBuffer <<
" ";
209 auto lmIter = layerMaterialMap.find(lIndex);
210 if (lmIter != layerMaterialMap.end()) {
212 <<
"---[+] found material for Layer with Index: "
216 <<
"---[!] the Layer is not owned by the "
217 "TrackingGeometry, could indicate problem.");
220 <<
"---[+] the Layer is owned by the TrackingGeometry.");
225 <<
"---[!] could not find material for Layer with Index: "
227 return StatusCode::RECOVERABLE;
229 return StatusCode::SUCCESS;
234 return StatusCode::SUCCESS;
241 if (msgLvl (MSG::VERBOSE)) {
243 if (!flag.test_and_set()) {
244 ATH_MSG_VERBOSE(
"Listing the layer indeces found in the loaded LayerMaterialMap");
245 for (
const auto & lmIter : layerMaterialMap ){
246 ATH_MSG_VERBOSE(
" -> Found map for layer with index " << lmIter.first);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
Define macros for attributes used to control the static checker.
#define ATLAS_THREAD_SAFE
Binned Array for avoiding map searches/.
virtual std::span< T *const > arrayObjects()=0
Return all objects of the Array non-const we can still modify the T.
LayerIndex for the identification of layers in a simplified detector geometry of Cylinders and Discs.
int value() const
layerIndex expressed in an integer
This class extends the DataVector<Trk::LayerMaterialProperties> by an elementTable;.
void dumpMaterialMap(const LayerMaterialMap &layerMaterialMap) const
virtual StatusCode initialize() override
virtual StatusCode process(TrackingGeometry &tgeo) const override
Processor Action to work on TrackingGeometry& tgeo.
SG::ReadCondHandleKey< LayerMaterialMap > m_layerMaterialMapKey
std::string m_layerMaterialMapName
virtual ~LayerMaterialProvider()
Destructor.
LayerMaterialProvider(const std::string &, const std::string &, const IInterface *)
Constructor.
Base Class for a Detector Layer in the Tracking realm.
void assignMaterialProperties(const LayerMaterialProperties &, double scale=1.0)
assignMaterialPropeties
virtual const Surface & surfaceRepresentation() const =0
Transforms the layer into a Surface representation for extrapolation.
const LayerMaterialProperties * layerMaterialProperties() const
getting the LayerMaterialProperties including full/pre/post update
const LayerIndex & layerIndex() const
get the layerIndex
Abstract Base Class for tracking surfaces.
bool isFree() const
Returns 'true' if this surface is 'free', i.e.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
const std::map< Layer *, int > & boundaryLayers()
Return the unique BoundarySurfaces with MaterialInformation.
const TrackingVolume * highestTrackingVolume() const
return the world
size_t numBoundaryLayers() const
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
const LayerArray * confinedLayers() const
Return the subLayer array.
const TrackingVolumeArray * confinedVolumes() const
Return the subLayer array.
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
const std::string process
BinnedArray< Layer > LayerArray
simply for the eye