5#ifndef INDETTRACKINGGEOMETRY_ROBUSTTRACKINGGEOMETRYBUILDERIMPL_H
6#define INDETTRACKINGGEOMETRY_ROBUSTTRACKINGGEOMETRYBUILDERIMPL_H
21#include "GaudiKernel/ServiceHandle.h"
22#include "GaudiKernel/SystemOfUnits.h"
23#include "GaudiKernel/ToolHandle.h"
41#ifndef TRKDETDESCR_TAKESMALLERBIGGER
42#define TRKDETDESCR_TAKESMALLERBIGGER
43#define takeSmaller(current, test) current = current < test ? current : test
44#define takeBigger(current, test) current = current > test ? current : test
45#define takeSmallerBigger(cSmallest, cBiggest, test) \
46 takeSamller(cSmallest, cBiggest, test); \
47 takeBigger(cSmallest, cBiggest, test)
86 template <ToolType type,
typename LayerBuilders,
typename PipeBuilder>
88 const LayerBuilders& layerHandles,
const PipeBuilder& pipeHandle,
89 const EventContext* ctx =
nullptr,
95 const std::vector<Trk::Layer*>& negLayers,
96 const std::vector<Trk::Layer*>& centralLayers,
97 const std::vector<Trk::Layer*>& posLayers,
double rMin,
double rMax,
98 double zMin,
double zPosCentral,
99 const std::string& baseName =
"UndefinedVolume",
int colorCode = 21,
105 const std::vector<Trk::TrackingVolume*>& negVolumes,
106 const std::vector<Trk::TrackingVolume*>& centralVolumes,
107 const std::vector<Trk::TrackingVolume*>& posVolumes,
108 const std::string& baseName =
"UndefinedVolume")
const;
117 this,
"TrackingVolumeCreator",
118 "Trk::CylinderVolumeCreator/"
119 "CylinderVolumeCreator"};
123 this,
"LayerArrayCreator",
124 "Trk::LayerArrayCreator/LayerArrayCreator"};
129 this,
"LayerBinningType", {}};
131 this,
"ColorCodes", {}};
135 this,
"EnvelopeDefinitionSvc",
136 "AtlasEnvelopeDefSvc"};
140 "VolumeEnclosureCylinderRadii",
144 "VolumeEnclosureDiscPositions",
148 this,
"EnvelopeCover", 2 * Gaudi::Units::mm};
152 this,
"ReplaceAllJointBoundaries",
157 this,
"OutwardsFraction",
162 this,
"IndexStaticLayers",
true};
168 this,
"ExitVolumeName",
169 "InDet::Containers::InnerDetector"};
Cached unique_ptr with atomic update.
Define macros for attributes used to control the static checker.
#define ATLAS_NOT_THREAD_SAFE
getNoisyStrip() Find noisy strips from hitmaps and write out into xml/db formats
Cached pointer with atomic update.
virtual ~RobustTrackingGeometryBuilderImpl()=default
Destructor.
RobustTrackingGeometryBuilderImpl(const std::string &, const std::string &, const IInterface *)
Constructor.
PublicToolHandle< Trk::ITrackingVolumeCreator > m_trackingVolumeCreator
Helper Tool to create TrackingVolumes.
IntegerArrayProperty m_layerBinningType
binning type for the provided layers
CxxUtils::CachedUniquePtrT< Trk::Material > m_materialProperties
overal material properties of the ID
DoubleProperty m_layerEnvelopeCover
innermost - outermost
DoubleProperty m_outwardsFraction
defines how much you orient yourself in an outwards way (see above)
IntegerArrayProperty m_colorCodesConfig
Color codes.
StringProperty m_namespace
identificaton namespace
DoubleArrayProperty m_enclosingDiscPositionZ
the disc position inside the enclosing volume
std::unique_ptr< Trk::TrackingGeometry > trackingGeometryImpl(const LayerBuilders &layerHandles, const PipeBuilder &pipeHandle, const EventContext *ctx=nullptr, SG::WriteCondHandle< Trk::TrackingGeometry > *whandle=nullptr) const
ServiceHandle< IEnvelopeDefSvc > m_enclosingEnvelopeSvc
the service to provide the ID envelope size
PublicToolHandle< Trk::ILayerArrayCreator > m_layerArrayCreator
Helper Tool to create BinnedArrays.
BooleanProperty m_indexStaticLayers
forces robust indexing for layers
BooleanProperty m_replaceJointBoundaries
run with replacement of all joint boundaries
Trk::TrackingVolume * packVolumeTriple(const std::vector< Trk::Layer * > &negLayers, const std::vector< Trk::Layer * > ¢ralLayers, const std::vector< Trk::Layer * > &posLayers, double rMin, double rMax, double zMin, double zPosCentral, const std::string &baseName="UndefinedVolume", int colorCode=21, Trk::BinningType bintype=Trk::arbitrary) const
Private method, creates and packs a triple containing of NegEndcap-Barrel-PosEndcap layers.
BooleanProperty m_isITk
changes volume boundary calculation for ITk layouts
BooleanProperty m_buildBoundaryLayers
create boundary layers
StringProperty m_exitVolume
the final ID container
DoubleArrayProperty m_enclosingCylinderRadius
the cylinder layer inside the enclosing volume
The only way to change BoundarySurfaces etc from Tracking Volumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
BinningType
, BinningOption & BinningAccess