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 – 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¶
-
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>¶