ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::PolynomialBetheHeitlerApprox Class Reference

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

#include <Acts/TrackFitting/BetheHeitlerApprox.hpp>

Inheritance diagram for Acts::PolynomialBetheHeitlerApprox:
[legend]
Collaboration diagram for Acts::PolynomialBetheHeitlerApprox:
[legend]

Classes

struct  PolyData
 Polynomial coefficient sets for a Gaussian mixture component. More...
struct  RangeData
 Single x/x0 range with its data and transformation flag. More...

Public Types

using Data = std::vector<PolyData>
 Type alias for array of polynomial data for all components.
Public Types inherited from Acts::BetheHeitlerApprox
using Component = detail::GaussianComponent
 Type alias for Gaussian mixture component.

Public Member Functions

 PolynomialBetheHeitlerApprox (const Data &lowData, const Data &highData, bool lowTransform, bool highTransform, double lowLimit, double highLimit, bool clampToRange, double noChangeLimit, double singleGaussianLimit)
 Construct the Bethe-Heitler approximation description with two parameterizations, one for lower ranges, one for higher ranges.
 PolynomialBetheHeitlerApprox (std::vector< RangeData > ranges, bool clampToRange, double noChangeLimit, double singleGaussianLimit)
 Construct the Bethe-Heitler approximation description with N ranges.
std::size_t maxComponents () const override
 Returns the number of components the returned mixture will have.
std::span< Componentmixture (double xOverX0, const std::span< Component > mixture) const override
 Generates the mixture from the polynomials and reweights them, so that the sum of all weights is 1.
bool validXOverX0 (const double xOverX0) const override
 Checks if an input is valid for the parameterization.

Detailed Description

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.

Constructor & Destructor Documentation

◆ PolynomialBetheHeitlerApprox() [1/2]

Acts::PolynomialBetheHeitlerApprox::PolynomialBetheHeitlerApprox ( std::vector< RangeData > ranges,
bool clampToRange,
double noChangeLimit,
double singleGaussianLimit )

Construct the Bethe-Heitler approximation description with N ranges.

Each range has its own data and transformation flag. The ranges will be sorted by minimum value and validated for non-overlapping.

Parameters
rangesVector of range data
clampToRangewhether to clamp the input x/x0 to the allowed range
noChangeLimitlimit below which no change is applied
singleGaussianLimitlimit below which a single Gaussian is used

◆ PolynomialBetheHeitlerApprox() [2/2]

Acts::PolynomialBetheHeitlerApprox::PolynomialBetheHeitlerApprox ( const Data & lowData,
const Data & highData,
bool lowTransform,
bool highTransform,
double lowLimit,
double highLimit,
bool clampToRange,
double noChangeLimit,
double singleGaussianLimit )

Construct the Bethe-Heitler approximation description with two parameterizations, one for lower ranges, one for higher ranges.

Is it assumed that the lower limit of the high-x/x0 data is equal to the upper limit of the low-x/x0 data.

Parameters
lowDatadata for the lower x/x0 range
highDatadata for the higher x/x0 range
lowTransformwhether the low data need to be transformed
highTransformwhether the high data need to be transformed
lowLimitthe upper limit for the low data
highLimitthe upper limit for the high data
clampToRangewhether to clamp the input x/x0 to the allowed range
noChangeLimitlimit below which no change is applied
singleGaussianLimitlimit below which a single Gaussian is used
Deprecated
Use constructor taking std::vector<RangeData> instead

Member Function Documentation

◆ maxComponents()

std::size_t Acts::PolynomialBetheHeitlerApprox::maxComponents ( ) const
overridevirtual

Returns the number of components the returned mixture will have.

Returns
Number of components in the mixture

Implements Acts::BetheHeitlerApprox.

◆ mixture()

std::span< Component > Acts::PolynomialBetheHeitlerApprox::mixture ( double xOverX0,
const std::span< Component > mixture ) const
overridevirtual

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

Parameters
xOverX0pathlength in terms of the radiation length
mixturepreallocated array to store the result
Returns
the potentially modified input span containing the mixture

Implements Acts::BetheHeitlerApprox.

◆ validXOverX0()

bool Acts::PolynomialBetheHeitlerApprox::validXOverX0 ( const double xOverX0) const
overridevirtual

Checks if an input is valid for the parameterization.

Parameters
xOverX0pathlength in terms of the radiation length
Returns
True if x/x0 is within valid range for this parameterization

Implements Acts::BetheHeitlerApprox.