|
ATLAS Offline Software
|
#include <CylinderVolumeCreator.h>
|
| CylinderVolumeCreator (const std::string &, const std::string &, const IInterface *) |
| Constructor. More...
|
|
| ~CylinderVolumeCreator () |
| Destructor. More...
|
|
virtual StatusCode | initialize () override |
| AlgTool initialize method. More...
|
|
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 |
|
virtual TrackingVolume * | createTrackingVolume (const std::vector< Layer * > &layers, Material &matprop, double loc1Min, double loc1Max, double loc2Min, double loc2Max, const std::string &volumeName="UndefinedVolume", BinningType btype=arbitrary) const override final |
|
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 |
|
virtual TrackingVolume * | createGapTrackingVolume (Material &matprop, double rMin, double rMax, double zMin, double zMax, const std::vector< double > &layerPositions, bool cylinder=true, const std::string &volumeName="UndefinedVolume", BinningType btype=arbitrary) const override final |
|
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 |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
| DeclareInterfaceID (ITrackingVolumeCreator, 1, 0) |
| Creates the InterfaceID and interfaceID() method. More...
|
|
|
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, these are checked against the layer positions/dimensions. More...
|
|
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 in the descriptor. More...
|
|
void | addFaceVolumes (TrackingVolume &tvol, Trk::BoundarySurfaceFace bsf, std::vector< Trk::TrackingVolume * > &vols) const |
| Private method - helper method not to duplicate code. More...
|
|
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. More...
|
|
CylinderLayer * | createCylinderLayer (double z, double r, double halflength, double thickness, int binsPhi, int binsZ) const |
| Private method - helper method to save some code. More...
|
|
DiscLayer * | createDiscLayer (double z, double rMin, double rMax, double thickness, int binsPhi, int binsR) const |
| Private method - helper method to save some code. More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
◆ StoreGateSvc_t
◆ CylinderVolumeCreator()
Trk::CylinderVolumeCreator::CylinderVolumeCreator |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~CylinderVolumeCreator()
Trk::CylinderVolumeCreator::~CylinderVolumeCreator |
( |
| ) |
|
|
default |
◆ addFaceVolumes()
Private method - helper method not to duplicate code.
Definition at line 714 of file CylinderVolumeCreator.cxx.
725 std::vector<Trk::TrackingVolume*>::const_iterator volIter = gvDescriptor.
glueVolumes(glueFace).begin();
726 std::vector<Trk::TrackingVolume*>::const_iterator volEnd = gvDescriptor.
glueVolumes(glueFace).end();
727 for ( ; volIter != volEnd; ++volIter){
728 ATH_MSG_VERBOSE(
" -> adding volumes : " << (*volIter)->volumeName() );
729 vols.push_back(*volIter);
732 ATH_MSG_VERBOSE( vols.size() <<
" navigation volumes registered as glue volumes." );
736 vols.push_back(&tvol);
◆ createContainerTrackingVolume()
Trk::TrackingVolume * Trk::CylinderVolumeCreator::createContainerTrackingVolume |
( |
const std::vector< TrackingVolume * > & |
volumes, |
|
|
const Material & |
matprop, |
|
|
const std::string & |
volumeName = "UndefinedVolume" , |
|
|
bool |
buildBoundaryLayers = false , |
|
|
bool |
replaceBoundaryFace = false |
|
) |
| const |
|
finaloverridevirtual |
;
Implements Trk::ITrackingVolumeCreator.
Definition at line 344 of file CylinderVolumeCreator.cxx.
352 if (volumes.size() <= (
unsigned int)1) {
353 ATH_MSG_WARNING(
"None (only one) TrackingVolume given to create container "
354 "volume (min required: 2) - returning 0 ");
360 << volumeName <<
"' with " << volumes.size()
364 auto firstVolume = volumes.begin();
365 auto lastVolume = volumes.end();
367 for (
unsigned int ivol = 0; firstVolume != lastVolume;
368 ++firstVolume, ++ivol) {
370 << ivol <<
") is : " << (*firstVolume)->volumeName());
372 " at position : " <<
Amg::toString((*firstVolume)->center()));
377 firstVolume = volumes.begin();
380 if (firstVolume == lastVolume) {
381 ATH_MSG_WARNING(
"Only one TrackingVolume given to create Top level volume "
382 "(min required: 2) - returning 0 ");
389 &((*firstVolume)->volumeBounds()));
392 &((*lastVolume)->volumeBounds()));
394 if (!firstVolumeBounds || !lastVolumeBounds) {
396 "Trk::CylinderVolumeBounds (required) - returning 0 ");
401 bool rCase = fabs(firstVolumeBounds->
innerRadius() -
410 zMin = (*firstVolume)->center().z() - firstVolumeBounds->
halflengthZ();
411 zMax = (*firstVolume)->center().z() + firstVolumeBounds->
halflengthZ();
415 zMin = (*firstVolume)->center().z() - firstVolumeBounds->
halflengthZ();
416 zMax = (*lastVolume)->center().z() + lastVolumeBounds->
halflengthZ();
422 double zPos = 0.5 * (zMin + zMax);
426 if (topVolumeTransform)
432 :
new Trk::CylinderVolumeBounds(rMax, 0.5 * fabs(zMax - zMin));
439 "Creation of TrackingVolume array did not succeed - returning 0 ");
440 delete topVolumeTransform;
441 delete topVolumeBounds;
456 *topVolume, rCase, buildBoundaryLayers, replaceBoundaryFace)
459 "Problem with inter-glueing of TrackingVolumes (needed) - returning 0 ");
465 "[ end ] return newly created container : " << topVolume->
volumeName());
◆ createCylinderLayer()
Trk::CylinderLayer * Trk::CylinderVolumeCreator::createCylinderLayer |
( |
double |
z, |
|
|
double |
r, |
|
|
double |
halflength, |
|
|
double |
thickness, |
|
|
int |
binsPhi, |
|
|
int |
binsZ |
|
) |
| const |
|
private |
Private method - helper method to save some code.
Definition at line 812 of file CylinderVolumeCreator.cxx.
819 ATH_MSG_VERBOSE(
"Creating a CylinderLayer at position " <<
z <<
" and radius " <<
r );
823 std::unique_ptr<Amg::Transform3D>
transform =
824 (fabs(
z) > 0.1) ? std::make_unique<Amg::Transform3D>() : nullptr;
836 <<
binsZ <<
" bins in Z. ");
841 layerBinUtilityRPhiZ += layerBinUtility;
846 << binsPhi <<
" / " <<
binsZ <<
" bins in R*phi / Z. ");
856 new Trk::CylinderLayer(cylinderBounds,
861 delete cylinderMaterial;
863 return cylinderLayer;
◆ createDiscLayer()
Trk::DiscLayer * Trk::CylinderVolumeCreator::createDiscLayer |
( |
double |
z, |
|
|
double |
rMin, |
|
|
double |
rMax, |
|
|
double |
thickness, |
|
|
int |
binsPhi, |
|
|
int |
binsR |
|
) |
| const |
|
private |
Private method - helper method to save some code.
Definition at line 867 of file CylinderVolumeCreator.cxx.
875 ATH_MSG_VERBOSE(
"Creating a DiscLayer at position " <<
z <<
" and rMin/rMax " << rMin <<
" / " << rMax);
878 std::unique_ptr<Amg::Transform3D>
transform =
879 fabs(
z) > 0.1 ? std::make_unique<Amg::Transform3D>() : nullptr;
888 << binsR <<
" bins in R. ");
893 << binsPhi <<
" / " << binsR <<
" bins in phi / R. ");
◆ createGapTrackingVolume() [1/2]
Trk::TrackingVolume * Trk::CylinderVolumeCreator::createGapTrackingVolume |
( |
Trk::Material & |
matprop, |
|
|
double |
rMin, |
|
|
double |
rMax, |
|
|
double |
zMin, |
|
|
double |
zMax, |
|
|
const std::vector< double > & |
layerPositions, |
|
|
bool |
cylinder = true , |
|
|
const std::string & |
volumeName = "UndefinedVolume" , |
|
|
BinningType |
btype = arbitrary |
|
) |
| const |
|
finaloverridevirtual |
ITrackingVolumeCreator::createGaoTrackingVolume(Material&,,std::vector<double>&,int,bool,const std::string&) const;
Implements Trk::ITrackingVolumeCreator.
Definition at line 287 of file CylinderVolumeCreator.cxx.
301 << volumeName <<
"' with (rMin/rMax/zMin/Max) = ");
302 ATH_MSG_VERBOSE(
'\t' << rMin <<
" / " << rMax <<
" / " << zMin <<
" / "
306 std::vector<Trk::Layer*>
layers;
307 layers.reserve(layerPositions.size());
309 std::vector<double>::const_iterator layerPropIter = layerPositions.begin();
310 std::vector<double>::const_iterator layerPropEnd = layerPositions.end();
311 for (; layerPropIter != layerPropEnd; ++layerPropIter) {
315 double zMinLayer = zMin;
316 double zMaxLayer = zMax;
320 fabs(0.5 * (zMaxLayer - zMinLayer)),
327 double rMinLayer = rMin;
328 double rMaxLayer = rMax;
340 layers, matprop, rMin, rMax, zMin, zMax, volumeName, btype);
◆ createGapTrackingVolume() [2/2]
Trk::TrackingVolume * Trk::CylinderVolumeCreator::createGapTrackingVolume |
( |
Trk::Material & |
matprop, |
|
|
double |
rMin, |
|
|
double |
rMax, |
|
|
double |
zMin, |
|
|
double |
zMax, |
|
|
unsigned int |
materialLayers, |
|
|
bool |
cylinder = true , |
|
|
const std::string & |
volumeName = "UndefinedVolume" |
|
) |
| const |
|
finaloverridevirtual |
◆ createTrackingVolume() [1/2]
;
Implements Trk::ITrackingVolumeCreator.
Definition at line 196 of file CylinderVolumeCreator.cxx.
211 ATH_MSG_VERBOSE(
"Create cylindrical TrackingVolume '" << volumeName <<
"'.");
213 << rMin <<
" / " << rMax <<
" / " << zMin <<
" / " << zMax);
216 if (zMin > zMax || rMin > rMax) {
218 << ((zMin > zMax) ?
" zMin > zMax (" :
" rMin > rMax (")
219 << ((zMin > zMax) ? zMin : rMin) <<
" > "
220 << ((zMin > zMax) ? zMax : rMax) <<
" ) - return 0");
225 double halflengthZ = 0.5 * (zMax - zMin);
226 double zPosition = 0.5 * (zMin + zMax);
227 zPosition = fabs(zPosition) < 0.1 ? 0. : zPosition;
231 :
new Trk::CylinderVolumeBounds(rMax, halflengthZ);
◆ createTrackingVolume() [2/2]
;
Implements Trk::ITrackingVolumeCreator.
Definition at line 94 of file CylinderVolumeCreator.cxx.
116 if (!cylinderBounds){
117 ATH_MSG_WARNING(
"[!] Problem: given bounds were not cylindrical - return 0" );
121 std::vector<Trk::CylinderLayer*> cylLayers;
122 cylLayers.reserve(
layers.size());
123 std::vector<Trk::DiscLayer*> discLayers;
124 discLayers.reserve(
layers.size());
127 double rMinRaw{0.}, rMaxRaw{0.}, zMinRaw{0.}, zMaxRaw{0.};
137 btype).isFailure()) {
138 ATH_MSG_WARNING(
"[!] Problem with given dimensions - return 0 and delete provided objects" );
140 delete cylinderBounds;
146 ( cylinderBounds ? -cylinderBounds->
halflengthZ() : 0. );
148 ( cylinderBounds ? cylinderBounds->
halflengthZ() : 0. );
161 if (!cylinderBounds) {
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ DeclareInterfaceID()
Creates the InterfaceID and interfaceID() method.
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ estimateAndCheckDimension()
Private method - it estimates the CylinderBounds and Translation of layers, if given, these are checked against the layer positions/dimensions.
private helper method to estimate and check the dimensions of a tracking volume
Definition at line 472 of file CylinderVolumeCreator.cxx.
488 return StatusCode::FAILURE;
493 if (cylinderVolumeBounds)
ATH_MSG_VERBOSE(
"Cylinder volume bounds are given." );
496 double layerRmin = 10e10;
497 double layerRmax = 0.;
498 double layerZmin = 10e10;
499 double layerZmax = -10e10;
508 for (
auto *
const layerIter :
layers) {
511 double currentRmin = 0.;
512 double currentRmax = 0.;
513 double currentZmin = 0.;
514 double currentZmax = 0.;
524 double currentR = cylBounds->
r();
525 double centerZ = (layerIter->surfaceRepresentation()).center().z();
528 currentRmin = currentR; currentRmax = currentR;
530 currentRmin = currentR-(0.5*(layerIter)->thickness());
531 currentRmax = currentR+(0.5*(layerIter)->thickness());
538 dynamic_cast<const Trk::DiscBounds*
>(&(layerIter->surfaceRepresentation()).bounds());
543 double centerZ = (layerIter->surfaceRepresentation()).center().z();
544 currentRmin = discBounds->
rMin();
545 currentRmax = discBounds->
rMax();
547 currentZmin = centerZ; currentZmax = centerZ;
549 currentZmin = centerZ - (0.5*(layerIter)->thickness());
550 currentZmax = centerZ + (0.5*(layerIter)->thickness());
554 rMinClean =
std::min(rMinClean, currentRmin);
555 rMaxClean =
std::max(rMaxClean, currentRmax);
556 zMinClean =
std::min(zMinClean, currentZmin);
557 zMaxClean =
std::max(zMaxClean, currentZmax);
560 layerRmin =
std::min(layerRmin,currentRmin);
561 layerRmax =
std::max(layerRmax, currentRmax);
562 layerZmin =
std::min(layerZmin,currentZmin);
563 layerZmax =
std::max(layerZmax, currentZmax);
569 double rStepHalf = 0.5*(layerRmax-layerRmin)/(
layers.size()-1);
570 layerRmin -= rStepHalf;
571 layerRmax += rStepHalf;
573 double zStepHalf = 0.5*(layerZmax-layerZmin)/(
layers.size()-1);
574 layerZmin -= zStepHalf;
575 layerZmax += zStepHalf;
579 ATH_MSG_VERBOSE(
"Estimate/check CylinderVolumeBounds from/w.r.t. enclosed layers + envelope covers" );
581 double zEstFromLayerEnv = 0.5*((layerZmax)+(layerZmin));
582 double halflengthFromLayer = 0.5*fabs((layerZmax)-(layerZmin));
584 bool concentric = (zEstFromLayerEnv*zEstFromLayerEnv < 0.001);
587 if (!cylinderVolumeBounds && !
transform) {
594 }
else if (cylinderVolumeBounds && !
transform &&!concentric){
598 else if (
transform && !cylinderVolumeBounds) {
600 double halflengthFromLayer = 0.5*fabs((layerZmax)-(layerZmin));
603 halflengthFromLayer);
607 << layerRmin <<
" / " << layerRmax <<
" / " << layerZmin <<
" / " << layerZmax );
609 ATH_MSG_VERBOSE(
" -> while created bounds are (rMin/rMax/zMin/zMax) = "
610 << cylinderVolumeBounds->innerRadius() <<
" / " << cylinderVolumeBounds->outerRadius() <<
" / "
611 << zFromTransform-cylinderVolumeBounds->halflengthZ() <<
" / " << zFromTransform+cylinderVolumeBounds->halflengthZ() );
615 if (cylinderVolumeBounds) {
617 if (zFromTransform-cylinderVolumeBounds->halflengthZ() <= layerZmin &&
618 zFromTransform+cylinderVolumeBounds->halflengthZ() >= layerZmax &&
619 cylinderVolumeBounds->innerRadius() <= layerRmin &&
620 cylinderVolumeBounds->outerRadius() >= layerRmax)
621 return StatusCode::SUCCESS;
623 ATH_MSG_WARNING(
"Provided layers are not contained by volume ! Bailing out. " );
624 return StatusCode::FAILURE;
630 return StatusCode::SUCCESS;
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ glueTrackingVolumes()
Private method - glue volume to the other – use trackingVolume helper.
private helper method to fill the glue volumes (or the volume itself in)
Definition at line 742 of file CylinderVolumeCreator.cxx.
754 ATH_MSG_VERBOSE(
"Glue method called with " << (replaceBoundaryFace ?
"joint boundaries." :
"individual boundaries." ) );
756 size_t volOneGlueVols = gvDescriptorOne.
glueVolumes(faceOne).size();
758 << volOneGlueVols <<
" @ " << faceOne );
759 size_t volTwoGlueVols = gvDescriptorTwo.
glueVolumes(faceTwo).size();
761 << volTwoGlueVols <<
" @ " << faceTwo );
764 TrackingVolume* glueVolOne = volOneGlueVols ?
765 gvDescriptorOne.
glueVolumes(faceOne)[0] : &tvolOne;
767 TrackingVolume* glueVolTwo = volTwoGlueVols ?
768 gvDescriptorTwo.
glueVolumes(faceTwo)[0] : &tvolTwo;
772 if ( volOneGlueVols <= 1 && volTwoGlueVols <= 1) {
774 ATH_MSG_VERBOSE(
" glue : one[ "<< glueVolOne->volumeName() <<
" @ " << faceOne
775 <<
" ]-to-one[ "<< glueVolTwo->volumeName() <<
" @ " << faceTwo <<
" ]" );
780 createBoundaryLayers);
781 }
else if (volOneGlueVols <= 1) {
782 ATH_MSG_VERBOSE(
" glue : one[ "<< glueVolOne->volumeName() <<
" @ " << faceOne
783 <<
" ]-to-many[ "<< tvolTwo.
volumeName() <<
" @ " << faceTwo <<
" ]" );
788 createBoundaryLayers,
789 replaceBoundaryFace);
790 }
else if (volTwoGlueVols <= 1 ) {
792 <<
" ]-to-one[ "<< glueVolTwo->volumeName() <<
" @ " << faceTwo <<
" ]" );
797 createBoundaryLayers,
798 replaceBoundaryFace);
802 <<
" ]-to-many[ "<< tvolTwo.
volumeName() <<
" @ " << faceTwo <<
" ]" );
807 createBoundaryLayers,
808 replaceBoundaryFace);
◆ initialize()
StatusCode Trk::CylinderVolumeCreator::initialize |
( |
| ) |
|
|
overridevirtual |
AlgTool initialize method.
Definition at line 59 of file CylinderVolumeCreator.cxx.
66 return StatusCode::FAILURE;
75 return StatusCode::FAILURE;
84 return StatusCode::FAILURE;
90 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ interGlueTrackingVolume()
StatusCode Trk::CylinderVolumeCreator::interGlueTrackingVolume |
( |
Trk::TrackingVolume & |
tVolume, |
|
|
bool |
rBinned, |
|
|
bool |
buildBoundaryLayers, |
|
|
bool |
replaceBoundaryFace = false |
|
) |
| const |
|
private |
Private method - interglue all volumes contained by a TrackingVolume and set the outside glue volumes in the descriptor.
Definition at line 634 of file CylinderVolumeCreator.cxx.
649 auto tVolIter = volumes.begin();
650 auto tVolFirst = volumes.begin();
651 auto tVolLast = volumes.end(); --tVolLast;
652 auto tVolEnd = volumes.end();
655 std::vector<Trk::TrackingVolume*> glueVolumesInnerTube;
656 std::vector<Trk::TrackingVolume*> glueVolumesOuterTube;
657 std::vector<Trk::TrackingVolume*> glueVolumesNegativeFace;
658 std::vector<Trk::TrackingVolume*> glueVolumesPositiveFace;
663 for ( ; tVolIter != tVolEnd; ) {
665 ATH_MSG_VERBOSE(
"r-binning: Processing volume '" << (*tVolIter)->volumeName() <<
"'.");
667 if (tVolIter == tVolFirst)
672 if (tVolIter == tVolLast) {
684 for ( ; tVolIter != tVolEnd; ) {
686 ATH_MSG_VERBOSE(
"z-binning: Processing volume '" << (*tVolIter)->volumeName() <<
"'.");
687 if (tVolIter == tVolFirst)
691 if (tVolIter == tVolLast) {
709 return StatusCode::SUCCESS;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_detStore
◆ m_evtStore
◆ m_layerArrayCreator
◆ m_passiveLayerPhiBins
int Trk::CylinderVolumeCreator::m_passiveLayerPhiBins |
|
private |
◆ m_passiveLayerRzBins
int Trk::CylinderVolumeCreator::m_passiveLayerRzBins |
|
private |
◆ m_passiveLayerThickness
double Trk::CylinderVolumeCreator::m_passiveLayerThickness |
|
private |
◆ m_trackingVolumeArrayCreator
◆ m_trackingVolumeHelper
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
GlueVolumesDescriptor & glueVolumesDescriptor()
void addFaceVolumes(TrackingVolume &tvol, Trk::BoundarySurfaceFace bsf, std::vector< Trk::TrackingVolume * > &vols) const
Private method - helper method not to duplicate code.
DiscLayer * createDiscLayer(double z, double rMin, double rMax, double thickness, int binsPhi, int binsR) const
Private method - helper method to save some code.
CylinderLayer * createCylinderLayer(double z, double r, double halflength, double thickness, int binsPhi, int binsZ) const
Private method - helper method to save some code.
@ z
global position (cartesian)
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
int m_passiveLayerPhiBins
bins in phi for the passive layer
#define ATH_MSG_VERBOSE(x)
ToolHandle< ITrackingVolumeArrayCreator > m_trackingVolumeArrayCreator
TrackingVolume helper.
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,...
double rMax() const
This method returns outer radius.
virtual void setOwner(IDataHandleHolder *o)=0
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.
double rMin() const
This method returns inner radius.
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
void registerGlueVolumes(BoundarySurfaceFace, std::vector< TrackingVolume * > &)
register the volumes
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
double halflengthZ() const
This method returns the halflengthZ.
const Amg::Vector3D & center() const
returns the center of the volume
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Ensure that the ATLAS eigen extensions are properly loaded.
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.
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
const std::vector< TrackingVolume * > & glueVolumes(BoundarySurfaceFace)
retrieve them again
double outerRadius() const
This method returns the outer radius.
virtual BinnedArraySpan< T *const > arrayObjects()=0
Return all objects of the Array non-const we can still modify the T.
ToolHandle< ITrackingVolumeHelper > m_trackingVolumeHelper
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
ToolHandle< ILayerArrayCreator > m_layerArrayCreator
< A Tool for coherent LayerArray creation
#define ATH_MSG_WARNING(x)
double innerRadius() const
This method returns the inner radius.
const TrackingVolumeArray * confinedVolumes() const
Return the subLayer array.
Eigen::Translation< double, 3 > Translation3D
const VolumeBounds & volumeBounds() const
returns the volumeBounds()
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
double m_passiveLayerThickness
thickness of passive layers
int m_passiveLayerRzBins
bins in r/z for the passive layer
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
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...
double halflengthZ() const
This method returns the halflengthZ.
virtual double r() const override final
This method returns the radius.