This was originally written for the materials plugin that has been merged into the material module

The material module allow to map material from a detailed full detector geometry onto the simplified Acts geometry. The material is mapped onto layers of the tracking geometry which are marked to carry support material. The marking is done during the geometry building process. The material can be mapped onto either, the inner, the outer boundary surface or the central (representing) Acts::Surface of the Acts::Layer. The Acts::Material is described on a two dimensional grid for each layer (Acts::BinnedSurfaceMaterial). The user defines the granularity of the grid during the geometry building process.


The DD4hep plugin offers the possibility to mark layers which should carry material and to determine the grid granularity, using the class Acts::ActsExtension.

Following the Acts philosophy the material mapping is agnostic to any file format and software used to create or store the material maps. The material should be stored in instances of the class Acts::MaterialTrack. This material track record represents a track starting from a certain position, in a certain direction, containing all material along this track. The material along the material track record is stored as a container of Acts::MaterialStep instances. Each material step contains the material and its thickness at a certain position.

The material mapping process can be split into two subprocesses:

  • Material assignment

  • Material averaging

Material assignment

During the material assignment process the decision onto which layer each material step will be assigned is done. To assign a Acts::MaterialTrack the function Acts::MaterialMapping::mapMaterial() should be used. This function extrapolates through the tracking detector, with the start position and direction given by the material track record and collects all layers marked to carry material. Then it loops through all material steps of the material track record and assigns the material of each step to the closest layer:


Fig. 24 Example of material assignment onto the inner boundary surface of the layers. The green points are assigned to the current inner layer, the red to the next inner layer.”

Material averaging

During the material mapping the user can decide to average the material whenever they prefer by using the function Acts::MaterialMapping::averageLayerMaterial(). In the end when all material track records have been mapped one should use the function Acts::MaterialMapping::finalizeLayerMaterial() in order to finalize the process.

The full material mapping process should be done in the framework of the user.

Possible workflow:

  • Create material map(s) of full detector geometry using Acts::MaterialTrack.

  • Read in material map(s) and go through all collected material track records. Use Acts::MaterialMapping::mapMaterial() for each material track record.

  • Use Acts::MaterialMapping::averageLayerMaterial() once per run.

  • In the end of the process use Acts::MaterialMapping::finalizeLayerMaterial() which assigns the final material to the layers.