9#ifndef TRKDETDESCRTOOLS_TRACKINGVOLUMEHELPER_H
10#define TRKDETDESCRTOOLS_TRACKINGVOLUMEHELPER_H
12#ifndef TRKDETDESCR_TAKESMALLERBIGGER
13#define TRKDETDESCR_TAKESMALLERBIGGER
14#define takeSmaller(current, test) current = current < test ? current : test
15#define takeBigger(current, test) current = current > test ? current : test
16#define takeSmallerBigger(cSmallest, cBiggest, test) \
17 takeSmaller(cSmallest, test); \
18 takeBigger(cBiggest, test)
27#include "GaudiKernel/SystemOfUnits.h"
28#include "GaudiKernel/ToolHandle.h"
37class ILayerArrayCreator;
38class ITrackingVolumeArrayCreator;
41class CylinderVolumeBounds;
43class LayerMaterialProperties;
84 bool buildBoundaryLayer =
false)
const override;
98 const std::vector<TrackingVolume*>& secondVolumes,
100 bool buildBoundaryLayer =
false,
101 bool boundaryFaceExchange =
false)
const override;
118 const std::vector<TrackingVolume*>& secondVolumes,
120 bool buildBoundaryLayer =
false,
121 bool boundaryFaceExchange =
false)
const override;
138 std::shared_ptr<TrackingVolume> firstVol,
140 std::shared_ptr<TrackingVolume> secondVol,
142 const std::string& name)
const override;
206 static void fillGlueVolumes(
const std::vector<TrackingVolume*>& topLevelVolumes,
207 const std::vector<TrackingVolume*>& envelopeFaceVolumes,
209 std::vector<Trk::TrackingVolume*>& glueVols);
211 static void fillGlueVolumes(
const std::vector<std::shared_ptr<TrackingVolume>>& topLevelVolumes,
212 const std::vector<std::shared_ptr<TrackingVolume>>& envelopeFaceVolumes,
214 std::vector<Trk::TrackingVolume*>& glueVols);
225 PublicToolHandle<ILayerArrayCreator>
227 ToolHandle<ITrackingVolumeArrayCreator>
237 1. * Gaudi::Units::mm;
Define macros for attributes used to control the static checker.
Binned Array for avoiding map searches/.
Interface class ITrackingVolumeHelpers It inherits from IAlgTool.
Abstract Base Class for tracking surfaces.
void setOutsideTrackingVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol) const override
protected method to set outside Volume of a BoundarySurface: input:
void setOutsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, std::shared_ptr< BinnedArray< TrackingVolume > > outsidevolarray) const override
protected method to set outside VolumeArray of a BoundarySurface: input:
void glueTrackingVolumes(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace, bool buildBoundaryLayer=false) const override
Method to glue two Volumes together input:
ToolHandle< ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
Helper Tool to create TrackingVolume.
static constexpr double s_layerThickness
standard layer thickness
std::unique_ptr< Trk::TrackingVolume > glueTrackingVolumeArrays(std::shared_ptr< TrackingVolume > firstVol, BoundarySurfaceFace firstFace, std::shared_ptr< TrackingVolume > secondVol, BoundarySurfaceFace secondFace, const std::string &name) const override
Method to glue two VolumeArrays together (at navigation level)
Gaudi::Property< int > m_endcapLayerBinsR
material bins in R
void setInsideTrackingVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, std::shared_ptr< BinnedArray< TrackingVolume > > insidevolarray) const override
protected method to set inside VolumeArray of a BoundarySurface: input:
virtual ~TrackingVolumeHelper()
Destructor.
std::unique_ptr< Trk::LayerMaterialProperties > layerMaterialProperties(const Trk::Surface &sf) const
< helper method to construct barrel material
TrackingVolumeHelper(const std::string &, const std::string &, const IInterface *)
Constructor.
Gaudi::Property< int > m_barrelLayerBinsPhi
material bins in Phi
Gaudi::Property< int > m_endcapLayerBinsPhi
material bins in Phi
StatusCode initialize() override
AlgTool initialize method.
Gaudi::Property< int > m_barrelLayerBinsZ
material bins in Z
void setInsideTrackingVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol) const override
protected method to set inside Volume of a BoundarySurface: input:
PublicToolHandle< ILayerArrayCreator > m_layerArrayCreator
A Tool for coherent LayerArray creation.
static void fillGlueVolumes(const std::vector< TrackingVolume * > &topLevelVolumes, const std::vector< TrackingVolume * > &envelopeFaceVolumes, BoundarySurfaceFace glueFace, std::vector< Trk::TrackingVolume * > &glueVols)
Private method - it takes the full vector of given volumes to create the supervolume,...
TrackingVolumeManipulator()
constructor
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Ensure that the ATLAS eigen extensions are properly loaded.
BoundarySurfaceFace
Enum to describe the position of the BoundarySurface respectively to the frame orientatin of the volu...