File DD4hepLayerBuilder.hpp

namespace Acts

Set the Geometry Context PLUGIN.

Set the Calibration Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.

Set the Mangetic Field Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.

Currently implemented for the two most common formats: rz and xyz.

class DD4hepLayerBuilder : public Acts::ILayerBuilder
#include <Acts/Plugins/DD4hep/DD4hepLayerBuilder.hpp>

build layers of one cylinder-endcap setup from DD4hep input

This class is an implementation of the Acts::ILayerBuilder, creating the central (layers of barrel), the negative and positive layers (layers of endcaps) of one hierarchy (e.g. PixelDetector, StripDetector,…) with input from DD4hep.

Public Functions

DD4hepLayerBuilder(const Acts::DD4hepLayerBuilder::Config &config, std::unique_ptr<const Logger> logger)

Constructor.

Parameters
  • config – is the configuration struct

  • logger – is the logging instance

~DD4hepLayerBuilder() override

Destructor.

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

LayerBuilder interface method.

Parameters

gctx – the geometry context for this build call

Returns

the layers at the central sector

inline Config getConfiguration() const

get the configuration object

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

Name identification.

Returns

the string based identification of this configuration

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

LayerBuilder interface method.

Parameters

gctx – the geometry context for this build call

Returns

the layers at negative side

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

LayerBuilder interface method.

Parameters

gctx – the geometry context for this build call

Returns

the layers at positive side

void setConfiguration(const Config &config)

set the configuration object

Parameters

config – is the configuration struct

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

set logging instance

Private Functions

Acts::Transform3 convertTransform(const TGeoMatrix *tGeoTrans) const
std::shared_ptr<const Acts::Surface> createSensitiveSurface(const dd4hep::DetElement &detElement, bool isDisc = false) const

Private helper function to create a sensitive surface from a given detector element.

Parameters
  • detElement – the DD4hep::DetElement of sensitive surface to be created

  • isDisc – in case the sensitive detector module should be translated as disc (e.g. for endcaps) this flag should be set to true

const LayerVector endcapLayers(const GeometryContext &gctx, const std::vector<dd4hep::DetElement> &dendcapLayers, const std::string &side) const

Private helper method to be called for endcap layers.

Parameters
  • gctx – the geometry context for this build call

  • dendcapLayers – Vector of detector elements for the endcap layers

  • side – Which endcap side it is

Returns

the layers for either endcap side

inline const Logger &logger() const

Private access to the logger.

void resolveSensitive(const dd4hep::DetElement &detElement, std::vector<std::shared_ptr<const Acts::Surface>> &surfaces) const

Private helper function collecting all sensitive detector elements of a layer.

Parameters
  • detElement – the DD4hep::DetElement of the layer

  • surfaces – the vector of surfaces which should be filled with the sensitive detector elements

Private Members

Config m_cfg

configruation object

std::unique_ptr<const Logger> m_logger

logging instance

struct Config
#include <Acts/Plugins/DD4hep/DD4hepLayerBuilder.hpp>

nested configuration struct for steering of the layer builder

Public Members

BinningType bTypePhi = equidistant

the binning type of the contained surfaces in phi (equidistant/arbitrary)

BinningType bTypeR = equidistant

the binning type of the contained surfaces in r (equidistant/arbitrary)

BinningType bTypeZ = equidistant

the binning type of the contained surfaces in z (equidistant/arbitrary)

std::vector<dd4hep::DetElement> centralLayers

the DD4hep::DetElements of the layers of the central volume (barrel)

Note

if the current volume has no layers this parameter will not be set

std::string configurationName = "undefined"

string based identification

double defaultThickness = UnitConstants::fm

In case no surfaces (to be contained by the layer) are handed over, the layer thickness will be set to this value.

Attention

The default thickness should be set thin enough that no touching or overlapping with the next layer can happen.

Note

Layers containing surfaces per default are not allowed to be attached to each other (navigation will bail at this point). However, to allow material layers (not containing surfaces) to be attached to each other, this default thickness is needed. In this way, the layer will be thin (with space to the next layer), but the material will have the’real’ thickness.

std::shared_ptr<const LayerCreator> layerCreator = nullptr

layer creator which is internally used to build layers

std::vector<dd4hep::DetElement> negativeLayers

the DD4hep::DetElements of the layers of the negative volume (negative endcap)

Note

if the current volume has no endcaps or no layers this parameter will not be set

std::vector<dd4hep::DetElement> positiveLayers

the DD4hep::DetElements of the layers of the positive volume (positive endcap)

Note

if the current volume has no endcaps or no layers this parameter will not be set

namespace dd4hep