9#ifndef TRKDETDESCRTOOLS_CYLINDERVOLUMECREATOR_H
10#define TRKDETDESCRTOOLS_CYLINDERVOLUMECREATOR_H
23#include "GaudiKernel/ToolHandle.h"
24#include "GaudiKernel/SystemOfUnits.h"
67 const std::vector<Layer*>& layers,
71 const std::string& volumeName =
"UndefinedVolume",
79 const std::vector<Layer*>& layers,
85 const std::string& volumeName =
"UndefinedVolume",
98 unsigned int materialLayers,
100 const std::string& volumeName =
"UndefinedVolume")
const override final;
112 const std::vector<double>& layerPositions,
113 bool cylinder =
true,
114 const std::string& volumeName =
"UndefinedVolume",
122 (
const std::vector<TrackingVolume*>& volumes,
124 const std::string& volumeName =
"UndefinedVolume",
125 bool buildBoundaryLayers =
false,
126 bool replaceBoundaryFace =
false)
const override final;
135 const std::vector<Layer*>& layers,
138 std::vector<CylinderLayer*>& cylLayers,
139 std::vector<DiscLayer*>& discLayers,
151 bool buildBoundaryLayers,
152 bool replaceBoundaryFace =
false)
const;
157 std::vector<Trk::TrackingVolume*>& vols)
const;
164 bool buildBoundaryLayers,
165 bool replaceBoundaryFace =
false)
const;
186 {
this,
"LayerArrayCreator",
"Trk::LayerArrayCreator/LayerArrayCreator"};
189 {
this,
"TrackingVolumeArrayCreator",
190 "Trk::TrackingVolumeArrayCreator/TrackingVolumeArrayCreator"};
193 {
this,
"TrackingVolumeHelper",
194 "Trk::TrackingVolumeHelper/TrackingVolumeHelper"};
197 {
this,
"PassiveLayerThickness", 1*Gaudi::Units::mm,
198 "thickness of passive layers"};
200 {
this,
"PassiveLayerBinsPhi", 1,
"bins in phi for the passive layer"};
202 {
this,
"PassiveLayerBinsRZ", 100,
"bins in r/z for the passive layer"};
Define macros for attributes used to control the static checker.
Class to describe a cylindrical detector layer for tracking, it inhertis from both,...
Bounds for a cylindrical Volume, the decomposeToSurfaces method creates a vector of up to 6 surfaces:
ToolHandle< ITrackingVolumeHelper > m_trackingVolumeHelper
CylinderLayer * createCylinderLayer(double z, double r, double halflength, double thickness, int binsPhi, int binsZ) const
Private method - helper method to save some code.
void glueTrackingVolumes(TrackingVolume &volumeOne, BoundarySurfaceFace faceOne, TrackingVolume &volumeTwo, BoundarySurfaceFace faceTwo, bool buildBoundaryLayers, bool replaceBoundaryFace=false) const
Private method - glue volume to the other – use trackingVolume helper.
void addFaceVolumes(TrackingVolume &tvol, Trk::BoundarySurfaceFace bsf, std::vector< Trk::TrackingVolume * > &vols) const
Private method - helper method not to duplicate code.
ToolHandle< ILayerArrayCreator > m_layerArrayCreator
< A Tool for coherent LayerArray creation
virtual TrackingVolume * createGapTrackingVolume(Material &matprop, double rMin, double rMax, double zMin, double zMax, unsigned int materialLayers, bool cylinder=true, const std::string &volumeName="UndefinedVolume") const override final
DiscLayer * createDiscLayer(double z, double rMin, double rMax, double thickness, int binsPhi, int binsR) const
Private method - helper method to save some code.
virtual TrackingVolume * createContainerTrackingVolume(const std::vector< TrackingVolume * > &volumes, const Material &matprop, const std::string &volumeName="UndefinedVolume", bool buildBoundaryLayers=false, bool replaceBoundaryFace=false) const override final
;
Gaudi::Property< int > m_passiveLayerRzBins
ToolHandle< ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
TrackingVolume helper.
StatusCode interGlueTrackingVolume(TrackingVolume &tVolume, bool rBinned, bool buildBoundaryLayers, bool replaceBoundaryFace=false) const
Private method - interglue all volumes contained by a TrackingVolume and set the outside glue volumes...
CylinderVolumeCreator(const std::string &, const std::string &, const IInterface *)
Constructor.
Gaudi::Property< double > m_passiveLayerThickness
virtual StatusCode initialize() override
AlgTool initialize method.
Gaudi::Property< int > m_passiveLayerPhiBins
virtual TrackingVolume * createTrackingVolume(const std::vector< Layer * > &layers, Material &matprop, VolumeBounds *volBounds=0, Amg::Transform3D *transform=0, const std::string &volumeName="UndefinedVolume", BinningType btype=arbitrary) const override final
;
StatusCode estimateAndCheckDimension(const std::vector< Layer * > &layers, Trk::CylinderVolumeBounds *&cylBounds, Amg::Transform3D *&translation, std::vector< CylinderLayer * > &cylLayers, std::vector< DiscLayer * > &discLayers, double &rMinClean, double &rMaxClean, double &zMinClean, double &zMaxClean, BinningType bType=arbitrary) const
Private method - it estimates the CylinderBounds and Translation of layers, if given,...
Class to describe a disc-like detector layer for tracking, it inhertis from both, Layer base class an...
Interface class ITrackingVolumeCreators It inherits from IAlgTool.
Base Class for a Detector Layer in the Tracking realm.
A common object to be contained by.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Pure Absract Base Class for Volume bounds.
Eigen::Affine3d Transform3D
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...
@ z
global position (cartesian)
BinningType
, BinningOption & BinningAccess