Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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(λL;κ,β2)=12πicic+iϕ(s)eλLsds

where ϕ(s)=eCeψ(s) with C=κ(1+β2γ) and ψ(s)=slnκ+(s+β2κ)(011estκtdtγ)κesκ. γ=0.5772156649 is Euler's constant.

For the class Vavilov, Pdf returns the Vavilov distribution as function of Landau's parameter λL=λV/κlnκ, 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 κ<0.01, pdf approaches the Landau distribution.

For values κ>10, the Gauss approximation should be used with μ and σ 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(λ;κ,β2) for fixed values of κ and β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 β2.
 
virtual double GetKappa () const =0
 Return the current value of κ.
 
virtual double GetLambdaMax () const =0
 Return the maximum value of λ for which p(λ;κ,β2) is nonzero in the current approximation.
 
virtual double GetLambdaMin () const =0
 Return the minimum value of λ for which p(λ;κ,β2) is nonzero in the current approximation.
 
virtual double Kurtosis () const
 Return the theoretical kurtosis γ2=1/3β2/4κ3σ4.
 
virtual double Mean () const
 Return the theoretical mean μ=γ1lnκβ2, where γ=0.5772 is Euler's constant.
 
virtual double Mode () const
 Return the value of λ where the pdf is maximal.
 
virtual double Mode (double kappa, double beta2)
 Return the value of λ 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 κ and β2 and recalculate coefficients if necessary.
 
virtual double Skewness () const
 Return the theoretical skewness γ1=1/2β2/3κ2σ3.
 
virtual double Variance () const
 Return the theoretical variance σ2=1β2/2κ.
 

Static Public Member Functions

static double Kurtosis (double kappa, double beta2)
 Return the theoretical kurtosis γ2=1/3β2/4κ3σ4.
 
static double Mean (double kappa, double beta2)
 Return the theoretical Mean μ=γ1lnκβ2.
 
static double Skewness (double kappa, double beta2)
 Return the theoretical skewness γ1=1/2β2/3κ2σ3.
 
static double Variance (double kappa, double beta2)
 Return the theoretical Variance σ2=1β2/2κ.
 

#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=λ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=λL
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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=λ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=λL
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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

◆ GetBeta2()

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

Return the current value of β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 κ.

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

◆ GetLambdaMax()

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

Return the maximum value of λ for which p(λ;κ,β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 λ for which p(λ;κ,β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 γ2=1/3β2/4κ3σ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 γ2=1/3β2/4κ3σ4.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

Definition at line 109 of file Vavilov.cxx.

◆ Mean() [1/2]

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

Return the theoretical mean μ=γ1lnκβ2, where γ=0.5772 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 μ=γ1lnκβ2.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

Definition at line 84 of file Vavilov.cxx.

◆ Mode() [1/2]

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

Return the value of λ 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 λ where the pdf is maximal function, and set kappa and beta2, if necessary.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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=λ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=λL
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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 0z1

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 0z1
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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 0z1

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 0z1
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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

◆ SetKappaBeta2()

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

Change κ and β2 and recalculate coefficients if necessary.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

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

◆ Skewness() [1/2]

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

Return the theoretical skewness γ1=1/2β2/3κ2σ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 γ1=1/2β2/3κ2σ3.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

Definition at line 100 of file Vavilov.cxx.

◆ Variance() [1/2]

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

Return the theoretical variance σ2=1β2/2κ.

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 σ2=1β2/2κ.

Parameters
kappaThe parameter κ, which should be in the range 0.01κ10
beta2The parameter β2, which must be in the range 0β21

Definition at line 92 of file Vavilov.cxx.


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