23 declareInterface<Trk::IGeometryProcessor>(
this);
34 return process(*worldVolume, 0);
37 ATH_MSG_FATAL(
"No highest level TrackingVolume found. Stopping recursive parsing, abort job.");
38 return StatusCode::FAILURE;
44 std::stringstream displayBuffer;
45 for (
size_t il = 0; il < level; ++il) displayBuffer <<
" ";
51 ATH_MSG_FATAL(
"Failed to call processNode(const TrackingVolume&). Aborting.");
52 return StatusCode::FAILURE;
60 ATH_MSG_VERBOSE(displayBuffer.str() <<
"--> has " << layers.size() <<
" confined layers." );
61 for (
const auto & layIter : layers){
63 ATH_MSG_WARNING(
"Zero-pointer found in LayerArray - indicates problem !");
64 if ((layIter) &&
process(*layIter, level).isFailure()){
65 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on confined layers. Aborting.");
66 return StatusCode::FAILURE;
73 for (
auto & bSurface : bSurfaces){
74 if (bSurface->surfaceRepresentation().associatedLayer()){
77 const_cast<Trk::Layer&
>(
78 *bSurface->surfaceRepresentation().associatedLayer()),level)
80 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on boundary "
82 return StatusCode::FAILURE;
89 Trk::BinnedArray< Trk::TrackingVolume >* confinedVolumes = tvol.
confinedVolumes();
91 if (confinedVolumes) {
93 for (
const auto & volumesIter : volumes){
95 ATH_MSG_WARNING(
"Zero-pointer found in VolumeArray - indicates problem !");
96 if (volumesIter &&
process(*volumesIter, ++level).isFailure() ){
97 ATH_MSG_FATAL(
"Failed to call process(const TrackingVolume&) on confined volumes. Aborting.");
98 return StatusCode::FAILURE;
104 return StatusCode::SUCCESS;
111 std::stringstream displayBuffer;
112 for (
size_t il = 0; il < level; ++il) displayBuffer <<
" ";
117 ATH_MSG_FATAL(
"Failed to call processNode(const Layer&). Aborting.");
118 return StatusCode::FAILURE;
123 std::span<Trk::Surface * const > layerSurfaces = surfArray->
arrayObjects();
124 ATH_MSG_VERBOSE(displayBuffer.str() <<
" ---> has " << layerSurfaces.size() <<
" surfaces on the layer.");
126 auto laySurfIter = layerSurfaces.begin();
127 auto laySurfIterEnd = layerSurfaces.end();
129 for ( ; laySurfIter != laySurfIterEnd; ++laySurfIter) {
131 ATH_MSG_WARNING(
"Zero-pointer found in SurfaceArray - indicates problem !");
132 if ((*laySurfIter) &&
process(**laySurfIter, level).isFailure()){
133 ATH_MSG_FATAL(
"Failed to call process(const Surface&) on confined layer surfaces. Aborting.");
134 return StatusCode::FAILURE;
139 return StatusCode::SUCCESS;
149 return StatusCode::SUCCESS;
154 return StatusCode::SUCCESS;
158 return StatusCode::SUCCESS;
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
virtual std::span< T *const > arrayObjects()=0
Return all objects of the Array non-const we can still modify the T.
StatusCode processNode(const TrackingVolume &tvol, size_t level=0) const
Current implementation: write root visualization to file stream.
Base Class for a Detector Layer in the Tracking realm.
const SurfaceArray * surfaceArray() const
Return the entire SurfaceArray, returns nullptr if no SurfaceArray.
const LayerIndex & layerIndex() const
get the layerIndex
RecursiveGeometryProcessor(const std::string &, const std::string &, const IInterface *)
Constructor.
virtual StatusCode process(TrackingGeometry &tgeo) const
Processor Action to work on TrackingGeometry& tgeo.
virtual StatusCode processNode(const TrackingVolume &tvol, size_t level=0) const
Dedicated action for the different processors.
Abstract Base Class for tracking surfaces.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
const TrackingVolume * highestTrackingVolume() const
return the world
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.
std::vector< std::shared_ptr< BoundarySurface< TrackingVolume > > > & boundarySurfaces()
Method to return the BoundarySurfaces.
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
BinnedArray< Surface > SurfaceArray