Class Acts::SurfaceMaterialMapper

class SurfaceMaterialMapper


This is the main feature tool to map material information from a 3D geometry onto the TrackingGeometry with its surface material description.

The process runs as such:

1) TrackingGeometry is parsed and for each Surface with ProtoSurfaceMaterial a local store is initialized the identification is done hereby through the Surface::GeometryIdentifier

2) A Cache is generated that is used to keep the filling thread local, the filling is protected with std::mutex

3) A number of N material tracks is read in, each track has : origin, direction, material steps < position, step length, x0, l0, a, z, rho >

for each track: surfaces along the origin/direction path are collected the closest material steps are assigned

4) Each ‘hit’ bin per event is counted and averaged at the end of the run

Public Types

using StraightLinePropagator = Propagator<StraightLineStepper, Navigator>

Public Functions

SurfaceMaterialMapper() = delete

Delete the Default constructor.

SurfaceMaterialMapper(const Config &cfg, StraightLinePropagator propagator, std::unique_ptr<const Logger> slogger = getDefaultLogger("SurfaceMaterialMapper", Logging::INFO))

Constructor with config object.

  • cfg – Configuration struct

  • propagator – The straight line propagator

  • slogger – The logger

State createState(const GeometryContext &gctx, const MagneticFieldContext &mctx, const TrackingGeometry &tGeometry) const

helper method that creates the cache for the mapping

This method takes a TrackingGeometry, finds all surfaces with material proxis and returns you a Cache object tO be used

  • gctx[in] The geometry context to use

  • mctx[in] The magnetic field context to use

  • tGeometry[in] The geometry which should be mapped

void finalizeMaps(State &mState) const

Method to finalize the maps.

It calls the final run averaging and then transforms the AccumulatedSurface material class to a surface material class type



void mapMaterialTrack(State &mState, RecordedMaterialTrack &mTrack) const

Process/map a single track.


the RecordedMaterialSlab of the track are assumed to be ordered from the starting position along the starting direction

  • mState – The current state map

  • mTrack – The material track to be mapped

struct Config

Nested Configuration struct for the material mapper.

Public Members

bool computeVariance = false

Compute the variance of each material slab (only if using an input map)

bool emptyBinCorrection = true

Correct for empty bins (recommended)

std::array<double, 2> etaRange = {{-6., 6.}}

Mapping range.

bool mapperDebugOutput = false

Mapping output to debug stream.

struct State

Nested State struct which is used for the mapping prococess.

Public Functions

inline State(const GeometryContext &gctx, const MagneticFieldContext &mctx)
  • gctx[in] The geometry context to use

  • mctx[in] The magnetic field context to use

Public Members

std::map<GeometryIdentifier, AccumulatedSurfaceMaterial> accumulatedMaterial

The accumulated material per geometry ID.

std::reference_wrapper<const GeometryContext> geoContext

Reference to the geometry context for the mapping.

std::map<GeometryIdentifier, std::shared_ptr<const ISurfaceMaterial>> inputSurfaceMaterial

The surface material of the input tracking geometry.

std::reference_wrapper<const MagneticFieldContext> magFieldContext

Reference to the magnetic field context.

std::map<GeometryIdentifier, std::unique_ptr<const ISurfaceMaterial>> surfaceMaterial

The created surface material from it.

std::map<GeometryIdentifier, std::shared_ptr<const IVolumeMaterial>> volumeMaterial

The volume material of the input tracking geometry.