Class Acts::TGeoLayerBuilder

class Acts::TGeoLayerBuilder : public Acts::ILayerBuilder

This parses the gGeoManager and looks for a defined combination of volume with contained sensitive detector element.

The association is done by matching the names of the TGeoNode / TGeoVolume to the search string.

The parsing can be restricted to a given parse volume (in r and z), and given some splitting parameters the surfaces can be automatically be split into layers.

Public Functions

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

Constructor.

Parameters
  • config – is the configuration struct

  • logger – the local logging instance

~TGeoLayerBuilder() override

Destructor.

virtual const LayerVector centralLayers(const GeometryContext &gctx) const final

LayerBuilder interface method - returning the central layers.

Parameters

gctx – the geometry context for this build call

inline const std::vector<std::shared_ptr<const TGeoDetectorElement>> &detectorElements() const

Return the created detector elements.

inline Config getConfiguration() const

Get the configuration object.

inline virtual const std::string &identification() const final

Name identification.

virtual const LayerVector negativeLayers(const GeometryContext &gctx) const final

LayerBuilder interface method - returning the layers at negative side.

Parameters

gctx – the geometry context for this build call

virtual const LayerVector positiveLayers(const GeometryContext &gctx) const final

LayerBuilder interface method - returning the layers at negative side.

Parameters

gctx – the geometry context for this build call

void setConfiguration(const Config &config)

Set the configuration object.

Parameters

config – is the configuration struct

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

Set logging instance.

struct Config

nested configuration struct for steering of the layer builder

Public Members

bool autoSurfaceBinning = false

Automated binning & tolerances.

std::string configurationName = "undefined"

String based identification.

std::shared_ptr<const ITGeoDetectorElementSplitter> detectorElementSplitter = nullptr

Split TGeoElement if a splitter is provided.

std::shared_ptr<const ITGeoIdentifierProvider> identifierProvider = nullptr

Create an indentifier from TGeoNode.

std::array<std::vector<LayerConfig>, 3> layerConfigurations

Configuration is always | n | c | p |.

std::shared_ptr<const LayerCreator> layerCreator = nullptr

Layer creator.

std::array<double, 3> layerSplitToleranceR = {-1., -1., -1.}

Split tolerances in R.

std::array<double, 3> layerSplitToleranceZ = {-1., -1., -1.}

Split tolerances in Z.

std::shared_ptr<const ProtoLayerHelper> protoLayerHelper = nullptr

ProtoLayer helper.

Acts::SurfaceBinningMatcher surfaceBinMatcher

The surface binning matcher.

double unit = 1 * UnitConstants::cm

Unit conversion.

struct LayerConfig

Helper config structs for volume parsin.

Public Types

using RangeConfig = std::pair<BinningValue, std::pair<double, double>>
using SplitConfig = std::pair<BinningValue, double>

Public Functions

inline LayerConfig()

Public Members

std::tuple<int, BinningType> binning0 = {-1, equidistant}

Binning setup in l0: nbins (-1 -> automated), axis binning type.

std::tuple<int, BinningType> binning1 = {-1, equidistant}

Binning setup in l1: nbins (-1 -> automated), axis binning type.

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

The envelope to be built around the layer.

std::string localAxes = "XYZ"

The local axis definition of TGeo object to Acts::Surface.

std::vector<RangeConfig> parseRanges = {}

Parse ranges: parameter and ranges.

std::vector<std::string> sensorNames = {}

Identify the sensor(s) by name.

std::vector<SplitConfig> splitConfigs = {}

Layer splitting: parameter and tolerance.

std::string volumeName = ""

Identify the search volume by name.