21#include "GeoModelKernel/GeoTube.h"
32 return StatusCode::SUCCESS;
37 auto beamPipe = std::make_unique<std::vector<Trk::CylinderLayer*> >();
41 beamPipeTransform.setIdentity();
50 beamPipeTopVolume =
m_beamPipeMgr->getTreeTop(0)->getChildVol(0)->getChildVol(0);
54 beamPipeTopVolume->getX().translation().y(),
55 beamPipeTopVolume->getX().translation().z());
56 const GeoLogVol* beamPipeLogVolume = beamPipeTopVolume->getLogVol();
57 const GeoTube* beamPipeTube =
nullptr;
58 if (beamPipeLogVolume) {
61 beamPipeTube =
dynamic_cast<const GeoTube*
>(beamPipeLogVolume->getShape());
63 for(
unsigned int i=0;i<beamPipeTopVolume->getNChildVols();i++) {
64 if(beamPipeTopVolume->getNameOfChildVol(i)==
"SectionC03"){
65 PVConstLink childTopVolume = beamPipeTopVolume->getChildVol(i);
66 const GeoLogVol* childLogVolume = childTopVolume->getLogVol();
67 const GeoTube* childTube =
nullptr;
69 childTube =
dynamic_cast<const GeoTube*
>(childLogVolume->getShape());
71 beamPipeRadius = 0.5 * (childTube->getRMax()+childTube->getRMin());
79 ATH_MSG_VERBOSE(
"BeamPipe constructed from Database: translation (yes) - radius "<< ( beamPipeTube ?
"(yes)" :
"(no)") <<
" - r = " << beamPipeRadius );
85 << beamPipeTransform.translation().x() <<
", "
86 << beamPipeTransform.translation().y() <<
","
87 << beamPipeTransform.translation().y());
89 auto beamPipeBounds = std::make_shared<Trk::CylinderBounds>(beamPipeRadius,
m_beamPipeHalflength);
90 ATH_MSG_VERBOSE(
"BeamPipe bounds constructed as : " << (*beamPipeBounds) );
106 beamPipeLayerMaterial,
114 beamPipeLayerMaterial,
117 beamPipe->push_back(pThisCylinderLayer);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
const ServiceHandle< StoreGateSvc > & detStore() const
StringProperty m_beamPipeMgrName
the name of the beam pipe manager to be configured
UnsignedIntegerProperty m_beamPipeBinsZ
number of bins in the beam pipe
DoubleProperty m_beamPipeThickness
thickness of the beam pipe
DoubleProperty m_beamPipeZ
averageZ of the beam pipe
DoubleProperty m_beamPipeHalflength
halflength of the beampipe
DoubleProperty m_beamPipeA
averageA of the beam pipe
DoubleProperty m_beamPipeRadius
radius of the beam pipe
DoubleProperty m_beamPipeOffsetY
beam pipe offset in y
double m_beamPipeL0
X0 of the beam pipe.
std::unique_ptr< const std::vector< Trk::CylinderLayer * > > cylindricalLayersImpl() const
DoubleProperty m_beamPipeRho
averageRho of the beam pipe
const BeamPipeDetectorManager * m_beamPipeMgr
the beam pipe manager
virtual StatusCode initialize() override
AlgTool initialize method.
DoubleProperty m_beamPipeOffsetX
beam pipe offset in x
BooleanProperty m_beamPipeFromDb
steer beam pipe parameters from DataBase
DoubleProperty m_beamPipeX0
X0 of the beam pipe.
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
It extends the LayerMaterialProperties base class.
Class to describe a cylindrical detector layer for tracking, it inhertis from both,...
It extends the LayerMaterialProperties base class.
Material with information about thickness of material.
Eigen::Affine3d Transform3D
Eigen::Translation< double, 3 > Translation3D