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;
82 bool buildBoundaryLayer =
false)
const override;
96 const std::vector<TrackingVolume*>& secondVolumes,
98 bool buildBoundaryLayer =
false,
99 bool boundaryFaceExchange =
false)
const override;
116 const std::vector<TrackingVolume*>& secondVolumes,
118 bool buildBoundaryLayer =
false,
119 bool boundaryFaceExchange =
false)
const override;
136 std::shared_ptr<TrackingVolume> firstVol,
138 std::shared_ptr<TrackingVolume> secondVol,
140 const std::string& name)
const override;
204 static void fillGlueVolumes(
const std::vector<TrackingVolume*>& topLevelVolumes,
205 const std::vector<TrackingVolume*>& envelopeFaceVolumes,
207 std::vector<Trk::TrackingVolume*>& glueVols);
209 static void fillGlueVolumes(
const std::vector<std::shared_ptr<TrackingVolume>>& topLevelVolumes,
210 const std::vector<std::shared_ptr<TrackingVolume>>& envelopeFaceVolumes,
212 std::vector<Trk::TrackingVolume*>& glueVols);
223 PublicToolHandle<ILayerArrayCreator>
225 ToolHandle<ITrackingVolumeArrayCreator>
235 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:
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...