File MaterialInteractor.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.

Typedefs

using RecordedMaterial = MaterialInteractor::Result

Using some short hands for Recorded Material.

using RecordedMaterialTrack = std::pair<std::pair<Acts::Vector3, Acts::Vector3>, RecordedMaterial>

And recorded material track.

  • this is start: position, start momentum and the Recorded material

struct MaterialInteraction
#include <Acts/Propagator/MaterialInteractor.hpp>

The Material interaction struct It records the surface and the passed material This is only nessecary recorded when configured.

Public Members

double deltaP = 0.0

The momentum change due to the interaction.

Vector3 direction = Vector3(0., 0., 0)

The particle direction at the interaction.

MaterialSlab materialSlab

The effective, passed material properties including the path correction.

double pathCorrection = 1.

The path correction factor due to non-zero incidence on the surface.

Vector3 position = Vector3(0., 0., 0)

The particle position at the interaction.

double sigmaPhi2 = 0.0

Expected phi variance due to the interactions.

double sigmaQoP2 = 0.0

Expected q/p variance due to the interactions.

double sigmaTheta2 = 0.0

Expected theta variance due to the interactions.

const Surface *surface = nullptr

The surface where the interaction occured.

double time = 0.0

The particle time at the interaction.

bool updatedVolumeStep = false

Update the volume step to implment the proper step size.

const TrackingVolume *volume = nullptr

The volume where the interaction occured.

struct MaterialInteractor
#include <Acts/Propagator/MaterialInteractor.hpp>

Material interactor propagator action.

Apply material interactions at a surface and update the track state.

Public Types

using result_type = Result

Public Functions

template<typename propagator_state_t, typename stepper_t>
inline void operator()(propagator_state_t &state, const stepper_t &stepper, result_type &result) const

Interaction with detector material for the ActionList of the Propagator.

It checks if the state has a current surface, in which case the action is performed: the covariance is transported to the position, multiple scattering and energy loss is applied according to the configuration.

Template Parameters
  • propagator_state_t – is the type of Propagagor state

  • stepper_t – Type of the stepper of the propagation

Parameters
  • state – is the mutable propagator state object

  • stepper – The stepper in use

  • result – is the mutable result state object

template<typename propagator_state_t>
inline void operator()(propagator_state_t&) const

Material interaction has no pure observer.

Public Members

bool energyLoss = true

Whether to consider energy loss.

bool multipleScattering = true

Whether to consider multiple scattering.

bool recordInteractions = false

Whether to record all material interactions.

Private Functions

inline void recordResult(const detail::PointwiseMaterialInteraction &d, result_type &result) const

This function records the material effect.

Parameters
  • d[in] Data cache container

  • result[inout] Result storage

inline void recordResult(const detail::VolumeMaterialInteraction &d, result_type &result) const

This function records the material effect.

Parameters
  • d[in] Data cache container

  • result[inout] Result storage

template<typename propagator_state_t, typename stepper_t>
inline void UpdateResult(propagator_state_t &state, const stepper_t &stepper, result_type &result) const

This function update the previous material step.

Parameters
  • state[inout] The state object

  • stepper[in] The stepper instance

  • result[inout] Result storage

struct Result
#include <Acts/Propagator/MaterialInteractor.hpp>

Simple result struct to be returned It mainly acts as an internal state which is created for every propagation/extrapolation step.

Public Members

double materialInL0 = 0.

The accumulated materialInL0.

std::vector<MaterialInteraction> materialInteractions

This one is only filled when recordInteractions is switched on.

double materialInX0 = 0.