Logo ROOT  
Reference Guide
VavilovAccurateQuantile.h
Go to the documentation of this file.
1 // @(#)root/mathmore:$Id$
2 // Authors: B. List 29.4.2010
3 
4  /**********************************************************************
5  * *
6  * Copyright (c) 2004 ROOT Foundation, CERN/PH-SFT *
7  * *
8  * This library is free software; you can redistribute it and/or *
9  * modify it under the terms of the GNU General Public License *
10  * as published by the Free Software Foundation; either version 2 *
11  * of the License, or (at your option) any later version. *
12  * *
13  * This library is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16  * General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this library (see file COPYING); if not, write *
20  * to the Free Software Foundation, Inc., 59 Temple Place, Suite *
21  * 330, Boston, MA 02111-1307 USA, or contact the author. *
22  * *
23  **********************************************************************/
24 
25 // Header file for class VavilovAccurateQuantile
26 //
27 // Created by: blist at Thu Apr 29 11:19:00 2010
28 //
29 // Last update: Thu Apr 29 11:19:00 2010
30 //
31 #ifndef ROOT_Math_VavilovAccurateQuantile
32 #define ROOT_Math_VavilovAccurateQuantile
33 
34 #include "Math/IParamFunction.h"
35 #include "Math/VavilovAccurate.h"
36 
37 #include <string>
38 
39 namespace ROOT {
40 namespace Math {
41 
42 //____________________________________________________________________________
43 /**
44  Class describing the Vavilov quantile function.
45 
46  The probability density function of the Vavilov distribution
47  is given by:
48  \f[ p(\lambda; \kappa, \beta^2) =
49  \frac{1}{2 \pi i}\int_{c-i\infty}^{c+i\infty} \phi(s) e^{\lambda s} ds\f]
50  where \f$\phi(s) = e^{C} e^{\psi(s)}\f$
51  with \f$ C = \kappa (1+\beta^2 \gamma )\f$
52  and \f[\psi(s) = s \ln \kappa + (s+\beta^2 \kappa)
53  \cdot \left ( \int \limits_{0}^{1}
54  \frac{1 - e^{\frac{-st}{\kappa}}}{t} \, dt- \gamma \right )
55  - \kappa \, e^{\frac{-s}{\kappa}}\f].
56  \f$ \gamma = 0.5772156649\dots\f$ is Euler's constant.
57 
58  The parameters are:
59  - 0: Norm: Normalization constant
60  - 1: x0: Location parameter
61  - 2: xi: Width parameter
62  - 3: kappa: Parameter \f$\kappa\f$ of the Vavilov distribution
63  - 4: beta2: Parameter \f$\beta^2\f$ of the Vavilov distribution
64 
65  Benno List, June 2010
66 
67 
68  @ingroup StatFunc
69  */
70 
71 
72 class VavilovAccurateQuantile: public IParametricFunctionOneDim {
73  public:
74 
75  /**
76  Default constructor
77  */
79 
80  /**
81  Constructor with parameter values
82  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
83  */
84  VavilovAccurateQuantile(const double *p);
85 
86  /**
87  Destructor
88  */
89  virtual ~VavilovAccurateQuantile ();
90 
91  /**
92  Access the parameter values
93  */
94  virtual const double * Parameters() const;
95 
96  /**
97  Set the parameter values
98  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
99 
100  */
101  virtual void SetParameters(const double * p );
102 
103  /**
104  Return the number of Parameters
105  */
106  virtual unsigned int NPar() const;
107 
108  /**
109  Return the name of the i-th parameter (starting from zero)
110  */
111  virtual std::string ParameterName(unsigned int i) const;
112 
113  /**
114  Evaluate the function
115 
116  @param x The Quantile \f$z\f$ , \f$0 \le z \le 1\f$
117  */
118  virtual double DoEval(double x) const;
119 
120  /**
121  Evaluate the function, using parameters p
122 
123  @param x The Quantile \f$z\f$, \f$0 \le z \le 1\f$
124  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
125  */
126  virtual double DoEvalPar(double x, const double * p) const;
127 
128  /**
129  Return a clone of the object
130  */
131  virtual IBaseFunctionOneDim * Clone() const;
132 
133  private:
134  double fP[5];
135 
136 };
137 
138 
139 } // namespace Math
140 } // namespace ROOT
141 
142 #endif /* ROOT_Math_VavilovAccurateQuantile */
ROOT::Math::VavilovAccurateQuantile::VavilovAccurateQuantile
VavilovAccurateQuantile()
Default constructor.
Definition: VavilovAccurateQuantile.cxx:78
ROOT::Math::VavilovAccurateQuantile::DoEval
virtual double DoEval(double x) const
Evaluate the function.
Definition: VavilovAccurateQuantile.cxx:127
ROOT::Math::VavilovAccurateQuantile::fP
double fP[5]
Definition: VavilovAccurateQuantile.h:191
x
Double_t x[n]
Definition: legend1.C:17
ROOT::Math::VavilovAccurateQuantile::DoEvalPar
virtual double DoEvalPar(double x, const double *p) const
Evaluate the function, using parameters p.
Definition: VavilovAccurateQuantile.cxx:132
ROOT::Math::VavilovAccurateQuantile::~VavilovAccurateQuantile
virtual ~VavilovAccurateQuantile()
Destructor.
Definition: VavilovAccurateQuantile.cxx:99
IParamFunction.h
ROOT::Math::VavilovAccurateQuantile::Parameters
virtual const double * Parameters() const
Access the parameter values.
Definition: VavilovAccurateQuantile.cxx:102
ROOT::Math::VavilovAccurateQuantile::Clone
virtual IBaseFunctionOneDim * Clone() const
Return a clone of the object.
Definition: VavilovAccurateQuantile.cxx:139
ROOT::Math::IBaseFunctionOneDim
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
Definition: IFunction.h:135
ROOT::Math::VavilovAccurateQuantile::SetParameters
virtual void SetParameters(const double *p)
Set the parameter values.
Definition: VavilovAccurateQuantile.cxx:106
VavilovAccurate.h
ROOT::Math::VavilovAccurateQuantile::NPar
virtual unsigned int NPar() const
Return the number of Parameters.
Definition: VavilovAccurateQuantile.cxx:112
ROOT
VSD Structures.
Definition: StringConv.hxx:21
ROOT::Math::VavilovAccurateQuantile::ParameterName
virtual std::string ParameterName(unsigned int i) const
Return the name of the i-th parameter (starting from zero)
Definition: VavilovAccurateQuantile.cxx:116
Math