23 declareInterface<Trk::IGeometryProcessor>(
this);
35 return StatusCode::SUCCESS;
42 return StatusCode::SUCCESS;
53 return process(*worldVolume, 0);
56 ATH_MSG_FATAL(
"No highest level TrackingVolume found. Stopping recursive parsing, abort job.");
57 return StatusCode::FAILURE;
63 std::stringstream displayBuffer;
64 for (
size_t il = 0; il < level; ++il) displayBuffer <<
" ";
70 ATH_MSG_FATAL(
"Failed to call processNode(const TrackingVolume&). Aborting.");
71 return StatusCode::FAILURE;
79 ATH_MSG_VERBOSE(displayBuffer.str() <<
"--> has " << layers.size() <<
" confined layers." );
80 for (
const auto & layIter : layers){
82 ATH_MSG_WARNING(
"Zero-pointer found in LayerArray - indicates problem !");
83 if ((layIter) &&
process(*layIter, level).isFailure()){
84 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on confined layers. Aborting.");
85 return StatusCode::FAILURE;
92 for (
auto & bSurface : bSurfaces){
93 if (bSurface->surfaceRepresentation().associatedLayer()){
97 *bSurface->surfaceRepresentation().associatedLayer()),level)
99 ATH_MSG_FATAL(
"Failed to call process(const Layer&) on boundary "
101 return StatusCode::FAILURE;
110 if (confinedVolumes) {
112 for (
const auto & volumesIter : volumes){
114 ATH_MSG_WARNING(
"Zero-pointer found in VolumeArray - indicates problem !");
115 if (volumesIter &&
process(*volumesIter, ++level).isFailure() ){
116 ATH_MSG_FATAL(
"Failed to call process(const TrackingVolume&) on confined volumes. Aborting.");
117 return StatusCode::FAILURE;
123 return StatusCode::SUCCESS;
130 std::stringstream displayBuffer;
131 for (
size_t il = 0; il < level; ++il) displayBuffer <<
" ";
136 ATH_MSG_FATAL(
"Failed to call processNode(const Layer&). Aborting.");
137 return StatusCode::FAILURE;
142 std::span<Trk::Surface * const > layerSurfaces = surfArray->
arrayObjects();
143 ATH_MSG_VERBOSE(displayBuffer.str() <<
" ---> has " << layerSurfaces.size() <<
" surfaces on the layer.");
145 auto laySurfIter = layerSurfaces.begin();
146 auto laySurfIterEnd = layerSurfaces.end();
148 for ( ; laySurfIter != laySurfIterEnd; ++laySurfIter) {
150 ATH_MSG_WARNING(
"Zero-pointer found in SurfaceArray - indicates problem !");
151 if ((*laySurfIter) &&
process(**laySurfIter, level).isFailure()){
152 ATH_MSG_FATAL(
"Failed to call process(const Surface&) on confined layer surfaces. Aborting.");
153 return StatusCode::FAILURE;
158 return StatusCode::SUCCESS;
168 return StatusCode::SUCCESS;
173 return StatusCode::SUCCESS;
177 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.
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.
StatusCode initialize()
AlgTool initialize method.
virtual ~RecursiveGeometryProcessor()
Destructor.
StatusCode finalize()
AlgTool finalize method.
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