File BetheHeitlerApprox.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

namespace Experimental

Functions

AtlasBetheHeitlerApprox<6, 5> makeDefaultBetheHeitlerApprox()

Creates a AtlasBetheHeitlerApprox object based on an ATLAS configuration, that are stored as static data in the source code.

This may not be an optimal configuration, but should allow to run the GSF without the need to load files

template<int NComponents, int PolyDegree>
class AtlasBetheHeitlerApprox
#include <Acts/TrackFitting/BetheHeitlerApprox.hpp>

This class approximates the Bethe-Heitler distribution as a gaussian mixture.

To enable an approximation for continuous input variables, the weights, means and variances are internally parametrized as a Nth order polynomial.

Public Types

using Data = std::array<PolyData, NComponents>

Public Functions

inline constexpr AtlasBetheHeitlerApprox(const Data &low_data, const Data &high_data, bool low_transform, bool high_transform)

Construct the Bethe-Heitler approximation description.

Additional to the coefficients of the polynomials, the information whether these values need to be transformed beforehand must be given (see ATLAS code).

Parameters
  • low_data – data for the lower x/x0 range

  • high_data – data for the higher x/x0 range

  • low_transform – wether the low data need to be transformed

  • high_transform – wether the high data need to be transformed

inline auto mixture(ActsScalar x) const

Generates the mixture from the polynomials and reweights them, so that the sum of all weights is 1.

Parameters

x – pathlength in terms of the radiation length

inline constexpr auto numComponents() const

Returns the number of components the returned mixture will have.

inline constexpr bool validXOverX0(ActsScalar x) const

Checks if an input is valid for the parameterization.

Parameters

x – pathlength in terms of the radiation length

Public Static Functions

static inline auto loadFromFiles(const std::string &low_parameters_path, const std::string &high_parameters_path)

Loads a parameterization from a file according to the Atlas file description.

Parameters
  • low_parameters_path – Path to the foo.par file that stores the parameterization for low x/x0

  • high_parameters_path – Path to the foo.par file that stores the parameterization for high x/x0

Public Static Attributes

static constexpr double higherLimit = 0.20
static constexpr double lowerLimit = 0.10
static constexpr double noChangeLimit = 0.0001
static constexpr double singleGaussianLimit = 0.002

Private Members

Data m_high_data
bool m_high_transform
Data m_low_data
bool m_low_transform
struct PolyData
#include <Acts/TrackFitting/BetheHeitlerApprox.hpp>

Public Members

std::array<ActsScalar, PolyDegree + 1> meanCoeffs
std::array<ActsScalar, PolyDegree + 1> varCoeffs
std::array<ActsScalar, PolyDegree + 1> weightCoeffs
struct BetheHeitlerApproxSingleCmp
#include <Acts/TrackFitting/BetheHeitlerApprox.hpp>

This class approximates the Bethe-Heitler with only one component.

This is mainly inside AtlasBetheHeitlerApprox, but can also be used as the only component approximation (then probably for debugging)

Public Functions

inline constexpr auto numComponents() const

Returns the number of components the returned mixture will have.

inline constexpr bool validXOverX0(ActsScalar x) const

Checks if an input is valid for the parameterization.

The threshold for x/x0 is 0.002 and orientates on the values used in ATLAS

Public Static Functions

static inline auto mixture(const ActsScalar x)

Returns array with length 1 containing a 1-component-representation of the Bethe-Heitler-Distribution.

Parameters

x – pathlength in terms of the radiation length