Class Acts::CylinderVolumeBuilder

class CylinderVolumeBuilder : public Acts::ITrackingVolumeBuilder

A volume builder to be used for building a concentrical cylindrical volumes.

  • a) configured volume

  • b) wrapping around a cylindrical/disk layer config

All are optionally wrapped around a given volume which has to by a cylinder volume and which has to be center at z == 0

To receive the tracking volume it is possible to also hand over a triple of layers, which is a C++ tuple of three pointers to layer vectors (defined in the ITrackingVolumeBuilder). This functionality is needed for a possible translation of an geometry existing in another format. The first entry represents the layers of the negative endcap, the second the layers of the barrel and the third the layers of the positive endcap. If the one of these pointers is a nullptr no layers will be created for this volume

For the endcap region it is possible to check for a ring layout, in which case an attempt to split into individual ring volumes is done

Public Functions

CylinderVolumeBuilder(const Config &cvbConfig, std::unique_ptr<const Logger> logger = getDefaultLogger("CylinderVolumeBuilder", Logging::INFO))


  • cvbConfig[in] is the configuraiton struct to steer the builder

  • logger[in] logging instance

~CylinderVolumeBuilder() override


VolumeConfig analyzeContent(const GeometryContext &gctx, const LayerVector &lVector, const MutableTrackingVolumeVector &mtvVector) const

Analyze the config to gather needed dimension.

  • gctx[in] the geometry context for this building

  • lVector[in] is the vector of layers that are parsed

  • mtvVector[in] Vector of mutable tracking volumes to analyze


a VolumeConfig representing this layer

inline Config getConfiguration() const

Get configuration method.

Return the configuration object.


a copy of the config object

void setConfiguration(const Config &cvbConfig)

Set configuration method.


cvbConfig[in] is the new configuration to be set

void setLogger(std::unique_ptr<const Logger> newLogger)

set logging instance


newLogger[in] is the logging istance to be set

virtual MutableTrackingVolumePtr trackingVolume(const GeometryContext &gctx, TrackingVolumePtr existingVolume = nullptr, VolumeBoundsPtr externalBounds = nullptr) const override

CylinderVolumeBuilder main call method.

  • gctx[in] geometry context for which this cylinder volume is built

  • existingVolume[in] is an (optional) volume to be included

  • externalBounds[in] are (optional) external confinement constraints


a mutable pointer to a new TrackingVolume which includes the optionally provided exisitingVolume consistently for further processing

struct Config

Nested configuration struct for this CylinderVolumeBuilder.

Public Members

std::array<std::shared_ptr<const ISurfaceMaterial>, 6> boundaryMaterial{nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}

—————–&#8212; MB (outer [1]) ————&#8212; | MB [2] NEC MB [3] | B | MB [4] PEC MB [5] | —————–&#8212; MB (inner [0]) ————&#8212;

bool buildToRadiusZero = false

Build the volume to the beam line.

bool checkRingLayout = false

Check for endcap ring layout.

std::shared_ptr<const IConfinedTrackingVolumeBuilder> ctVolumeBuilder = nullptr

Builder to construct confined volumes within the volume.

std::shared_ptr<const ILayerBuilder> layerBuilder = nullptr

Builder to construct layers within the volume.

std::pair<double, double> layerEnvelopeR = {1. * UnitConstants::mm, 1. * UnitConstants::mm}

Additional envelope in R to create rMin, rMax.

double layerEnvelopeZ = 1. * UnitConstants::mm

the additional envelope in Z to create zMin, zMax

double ringTolerance = 0 * UnitConstants::mm

Tolerance for endcap ring association.

std::shared_ptr<const ITrackingVolumeHelper> trackingVolumeHelper = nullptr

The trackign volume helper for construction.

std::shared_ptr<const IVolumeMaterial> volumeMaterial = nullptr

The world material.

std::string volumeName = ""

The string based indenfication.

int volumeSignature = -1

Volume signature.