Class Acts::Experimental::AtlasBetheHeitlerApprox
-
template<int NComponents, int PolyDegree>
class AtlasBetheHeitlerApprox 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 – whether the low data need to be transformed
high_transform – whether 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
-
struct PolyData
Public Members
-
std::array<ActsScalar, PolyDegree + 1> meanCoeffs
-
std::array<ActsScalar, PolyDegree + 1> varCoeffs
-
std::array<ActsScalar, PolyDegree + 1> weightCoeffs
-
std::array<ActsScalar, PolyDegree + 1> meanCoeffs
-
using Data = std::array<PolyData, NComponents>