Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Math::Vavilov Class Referenceabstract

Base class describing a Vavilov distribution.

The Vavilov distribution is defined in P.V. Vavilov: Ionization losses of high-energy heavy particles, Sov. Phys. JETP 5 (1957) 749 [Zh. Eksp. Teor. Fiz. 32 (1957) 920].

The probability density function of the Vavilov distribution as function of Landau's parameter is given by:

\[ p(\lambda_L; \kappa, \beta^2) = \frac{1}{2 \pi i}\int_{c-i\infty}^{c+i\infty} \phi(s) e^{\lambda_L s} ds\]

where \(\phi(s) = e^{C} e^{\psi(s)}\) with \( C = \kappa (1+\beta^2 \gamma )\) and \(\psi(s)= s \ln \kappa + (s+\beta^2 \kappa) \cdot \left ( \int \limits_{0}^{1} \frac{1 - e^{\frac{-st}{\kappa}}}{t} \,d t- \gamma \right ) - \kappa \, e^{\frac{-s}{\kappa}}\). \( \gamma = 0.5772156649\dots\) is Euler's constant.

For the class Vavilov, Pdf returns the Vavilov distribution as function of Landau's parameter \(\lambda_L = \lambda_V/\kappa - \ln \kappa\), which is the convention used in the CERNLIB routines, and in the tables by S.M. Seltzer and M.J. Berger: Energy loss stragglin of protons and mesons: Tabulation of the Vavilov distribution, pp 187-203 in: National Research Council (U.S.), Committee on Nuclear Science: Studies in penetration of charged particles in matter, Nat. Akad. Sci. Publication 1133, Nucl. Sci. Series Report No. 39, Washington (Nat. Akad. Sci.) 1964, 388 pp. Available from Google books

Therefore, for small values of \(\kappa < 0.01\), pdf approaches the Landau distribution.

For values \(\kappa > 10\), the Gauss approximation should be used with \(\mu\) and \(\sigma\) given by Vavilov::Mean(kappa, beta2) and sqrt(Vavilov::Variance(kappa, beta2).

The original Vavilov pdf is obtained by v.Pdf(lambdaV/kappa-log(kappa))/kappa.

Two subclasses are provided:

Both subclasses store coefficients needed to calculate \(p(\lambda; \kappa, \beta^2)\) for fixed values of \(\kappa\) and \(\beta^2\). Changing these values is computationally expensive.

VavilovFast is about 5 times faster for the calculation of the Pdf than VavilovAccurate; initialization takes about 100 times longer than calculation of the Pdf value. For the quantile calculation, VavilovFast is 30 times faster for the initialization, and 6 times faster for subsequent calculations. Initialization for Quantile takes 27 (11) times longer than subsequent calls for VavilovFast (VavilovAccurate).

Definition at line 120 of file Vavilov.h.

Public Member Functions

 Vavilov ()
 Default constructor.
 
virtual ~Vavilov ()
 Destructor.
 
virtual double Cdf (double x) const =0
 Evaluate the Vavilov cumulative probability density function.
 
virtual double Cdf (double x, double kappa, double beta2)=0
 Evaluate the Vavilov cumulative probability density function, and set kappa and beta2, if necessary.
 
virtual double Cdf_c (double x) const =0
 Evaluate the Vavilov complementary cumulative probability density function.
 
virtual double Cdf_c (double x, double kappa, double beta2)=0
 Evaluate the Vavilov complementary cumulative probability density function, and set kappa and beta2, if necessary.
 
virtual double GetBeta2 () const =0
 Return the current value of \(\beta^2\).
 
virtual double GetKappa () const =0
 Return the current value of \(\kappa\).
 
virtual double GetLambdaMax () const =0
 Return the maximum value of \(\lambda\) for which \(p(\lambda; \kappa, \beta^2)\) is nonzero in the current approximation.
 
virtual double GetLambdaMin () const =0
 Return the minimum value of \(\lambda\) for which \(p(\lambda; \kappa, \beta^2)\) is nonzero in the current approximation.
 
virtual double Kurtosis () const
 Return the theoretical kurtosis \(\gamma_2 = \frac{1/3 - \beta^2/4}{\kappa^3 \sigma^4}\).
 
virtual double Mean () const
 Return the theoretical mean \(\mu = \gamma-1- \ln \kappa - \beta^2\), where \(\gamma = 0.5772\dots\) is Euler's constant.
 
virtual double Mode () const
 Return the value of \(\lambda\) where the pdf is maximal.
 
virtual double Mode (double kappa, double beta2)
 Return the value of \(\lambda\) where the pdf is maximal function, and set kappa and beta2, if necessary.
 
virtual double Pdf (double x) const =0
 Evaluate the Vavilov probability density function.
 
virtual double Pdf (double x, double kappa, double beta2)=0
 Evaluate the Vavilov probability density function, and set kappa and beta2, if necessary.
 
virtual double Quantile (double z) const =0
 Evaluate the inverse of the Vavilov cumulative probability density function.
 
virtual double Quantile (double z, double kappa, double beta2)=0
 Evaluate the inverse of the Vavilov cumulative probability density function, and set kappa and beta2, if necessary.
 
virtual double Quantile_c (double z) const =0
 Evaluate the inverse of the complementary Vavilov cumulative probability density function.
 
virtual double Quantile_c (double z, double kappa, double beta2)=0
 Evaluate the inverse of the complementary Vavilov cumulative probability density function, and set kappa and beta2, if necessary.
 
virtual void SetKappaBeta2 (double kappa, double beta2)=0
 Change \(\kappa\) and \(\beta^2\) and recalculate coefficients if necessary.
 
virtual double Skewness () const
 Return the theoretical skewness \(\gamma_1 = \frac{1/2 - \beta^2/3}{\kappa^2 \sigma^3} \).
 
virtual double Variance () const
 Return the theoretical variance \(\sigma^2 = \frac{1 - \beta^2/2}{\kappa}\).
 

Static Public Member Functions

static double Kurtosis (double kappa, double beta2)
 Return the theoretical kurtosis \(\gamma_2 = \frac{1/3 - \beta^2/4}{\kappa^3 \sigma^4}\).
 
static double Mean (double kappa, double beta2)
 Return the theoretical Mean \(\mu = \gamma-1- \ln \kappa - \beta^2\).
 
static double Skewness (double kappa, double beta2)
 Return the theoretical skewness \(\gamma_1 = \frac{1/2 - \beta^2/3}{\kappa^2 \sigma^3} \).
 
static double Variance (double kappa, double beta2)
 Return the theoretical Variance \(\sigma^2 = \frac{1 - \beta^2/2}{\kappa}\).
 

#include <Math/Vavilov.h>

Inheritance diagram for ROOT::Math::Vavilov:
[legend]

Constructor & Destructor Documentation

◆ Vavilov()

ROOT::Math::Vavilov::Vavilov ( )

Default constructor.

Definition at line 46 of file Vavilov.cxx.

◆ ~Vavilov()

ROOT::Math::Vavilov::~Vavilov ( )
virtual

Destructor.

Definition at line 50 of file Vavilov.cxx.

Member Function Documentation

◆ Cdf() [1/2]

virtual double ROOT::Math::Vavilov::Cdf ( double  x) const
pure virtual

Evaluate the Vavilov cumulative probability density function.

Parameters
xThe Landau parameter \(x = \lambda_L\)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Cdf() [2/2]

virtual double ROOT::Math::Vavilov::Cdf ( double  x,
double  kappa,
double  beta2 
)
pure virtual

Evaluate the Vavilov cumulative probability density function, and set kappa and beta2, if necessary.

Parameters
xThe Landau parameter \(x = \lambda_L\)
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Cdf_c() [1/2]

virtual double ROOT::Math::Vavilov::Cdf_c ( double  x) const
pure virtual

Evaluate the Vavilov complementary cumulative probability density function.

Parameters
xThe Landau parameter \(x = \lambda_L\)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Cdf_c() [2/2]

virtual double ROOT::Math::Vavilov::Cdf_c ( double  x,
double  kappa,
double  beta2 
)
pure virtual

Evaluate the Vavilov complementary cumulative probability density function, and set kappa and beta2, if necessary.

Parameters
xThe Landau parameter \(x = \lambda_L\)
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ GetBeta2()

virtual double ROOT::Math::Vavilov::GetBeta2 ( ) const
pure virtual

Return the current value of \(\beta^2\).

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ GetKappa()

virtual double ROOT::Math::Vavilov::GetKappa ( ) const
pure virtual

Return the current value of \(\kappa\).

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ GetLambdaMax()

virtual double ROOT::Math::Vavilov::GetLambdaMax ( ) const
pure virtual

Return the maximum value of \(\lambda\) for which \(p(\lambda; \kappa, \beta^2)\) is nonzero in the current approximation.

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ GetLambdaMin()

virtual double ROOT::Math::Vavilov::GetLambdaMin ( ) const
pure virtual

Return the minimum value of \(\lambda\) for which \(p(\lambda; \kappa, \beta^2)\) is nonzero in the current approximation.

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Kurtosis() [1/2]

double ROOT::Math::Vavilov::Kurtosis ( ) const
virtual

Return the theoretical kurtosis \(\gamma_2 = \frac{1/3 - \beta^2/4}{\kappa^3 \sigma^4}\).

Definition at line 105 of file Vavilov.cxx.

◆ Kurtosis() [2/2]

double ROOT::Math::Vavilov::Kurtosis ( double  kappa,
double  beta2 
)
static

Return the theoretical kurtosis \(\gamma_2 = \frac{1/3 - \beta^2/4}{\kappa^3 \sigma^4}\).

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Definition at line 109 of file Vavilov.cxx.

◆ Mean() [1/2]

double ROOT::Math::Vavilov::Mean ( ) const
virtual

Return the theoretical mean \(\mu = \gamma-1- \ln \kappa - \beta^2\), where \(\gamma = 0.5772\dots\) is Euler's constant.

Definition at line 80 of file Vavilov.cxx.

◆ Mean() [2/2]

double ROOT::Math::Vavilov::Mean ( double  kappa,
double  beta2 
)
static

Return the theoretical Mean \(\mu = \gamma-1- \ln \kappa - \beta^2\).

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Definition at line 84 of file Vavilov.cxx.

◆ Mode() [1/2]

double ROOT::Math::Vavilov::Mode ( ) const
virtual

Return the value of \(\lambda\) where the pdf is maximal.

Reimplemented in ROOT::Math::VavilovAccurate.

Definition at line 56 of file Vavilov.cxx.

◆ Mode() [2/2]

double ROOT::Math::Vavilov::Mode ( double  kappa,
double  beta2 
)
virtual

Return the value of \(\lambda\) where the pdf is maximal function, and set kappa and beta2, if necessary.

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Reimplemented in ROOT::Math::VavilovAccurate.

Definition at line 75 of file Vavilov.cxx.

◆ Pdf() [1/2]

virtual double ROOT::Math::Vavilov::Pdf ( double  x) const
pure virtual

Evaluate the Vavilov probability density function.

Parameters
xThe Landau parameter \(x = \lambda_L\)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Pdf() [2/2]

virtual double ROOT::Math::Vavilov::Pdf ( double  x,
double  kappa,
double  beta2 
)
pure virtual

Evaluate the Vavilov probability density function, and set kappa and beta2, if necessary.

Parameters
xThe Landau parameter \(x = \lambda_L\)
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Quantile() [1/2]

virtual double ROOT::Math::Vavilov::Quantile ( double  z) const
pure virtual

Evaluate the inverse of the Vavilov cumulative probability density function.

Parameters
zThe argument \(z\), which must be in the range \(0 \le z \le 1\)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Quantile() [2/2]

virtual double ROOT::Math::Vavilov::Quantile ( double  z,
double  kappa,
double  beta2 
)
pure virtual

Evaluate the inverse of the Vavilov cumulative probability density function, and set kappa and beta2, if necessary.

Parameters
zThe argument \(z\), which must be in the range \(0 \le z \le 1\)
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Quantile_c() [1/2]

virtual double ROOT::Math::Vavilov::Quantile_c ( double  z) const
pure virtual

Evaluate the inverse of the complementary Vavilov cumulative probability density function.

Parameters
zThe argument \(z\), which must be in the range \(0 \le z \le 1\)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Quantile_c() [2/2]

virtual double ROOT::Math::Vavilov::Quantile_c ( double  z,
double  kappa,
double  beta2 
)
pure virtual

Evaluate the inverse of the complementary Vavilov cumulative probability density function, and set kappa and beta2, if necessary.

Parameters
zThe argument \(z\), which must be in the range \(0 \le z \le 1\)
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ SetKappaBeta2()

virtual void ROOT::Math::Vavilov::SetKappaBeta2 ( double  kappa,
double  beta2 
)
pure virtual

Change \(\kappa\) and \(\beta^2\) and recalculate coefficients if necessary.

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Implemented in ROOT::Math::VavilovAccurate, and ROOT::Math::VavilovFast.

◆ Skewness() [1/2]

double ROOT::Math::Vavilov::Skewness ( ) const
virtual

Return the theoretical skewness \(\gamma_1 = \frac{1/2 - \beta^2/3}{\kappa^2 \sigma^3} \).

Definition at line 96 of file Vavilov.cxx.

◆ Skewness() [2/2]

double ROOT::Math::Vavilov::Skewness ( double  kappa,
double  beta2 
)
static

Return the theoretical skewness \(\gamma_1 = \frac{1/2 - \beta^2/3}{\kappa^2 \sigma^3} \).

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Definition at line 100 of file Vavilov.cxx.

◆ Variance() [1/2]

double ROOT::Math::Vavilov::Variance ( ) const
virtual

Return the theoretical variance \(\sigma^2 = \frac{1 - \beta^2/2}{\kappa}\).

Definition at line 88 of file Vavilov.cxx.

◆ Variance() [2/2]

double ROOT::Math::Vavilov::Variance ( double  kappa,
double  beta2 
)
static

Return the theoretical Variance \(\sigma^2 = \frac{1 - \beta^2/2}{\kappa}\).

Parameters
kappaThe parameter \(\kappa\), which should be in the range \(0.01 \le \kappa \le 10 \)
beta2The parameter \(\beta^2\), which must be in the range \(0 \le \beta^2 \le 1 \)

Definition at line 92 of file Vavilov.cxx.


The documentation for this class was generated from the following files: