Logo ROOT   6.08/07
Reference Guide
VavilovAccurateCdf.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 VavilovAccurateCdf
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_VavilovAccurateCdf
32 #define ROOT_Math_VavilovAccurateCdf
33 
34 
35 #include "Math/IParamFunction.h"
36 #include "Math/VavilovAccurate.h"
37 
38 #include <memory>
39 
40 namespace ROOT {
41 namespace Math {
42 
43 //____________________________________________________________________________
44 /**
45  Class describing the Vavilov cdf.
46 
47  The probability density function of the Vavilov distribution
48  is given by:
49  \f[ p(\lambda; \kappa, \beta^2) =
50  \frac{1}{2 \pi i}\int_{c-i\infty}^{c+i\infty} \phi(s) e^{\lambda s} ds\f]
51  where \f$\phi(s) = e^{C} e^{\psi(s)}\f$
52  with \f$ C = \kappa (1+\beta^2 \gamma )\f$
53  and \f[\psi(s) = s \ln \kappa + (s+\beta^2 \kappa)
54  \cdot \left ( \int \limits_{0}^{1}
55  \frac{1 - e^{\frac{-st}{\kappa}}}{t} \, dt - \gamma \right )
56  - \kappa \, e^{\frac{-s}{\kappa}}\f].
57  \f$ \gamma = 0.5772156649\dots\f$ is Euler's constant.
58 
59  The parameters are:
60  - 0: Norm: Normalization constant
61  - 1: x0: Location parameter
62  - 2: xi: Width parameter
63  - 3: kappa: Parameter \f$\kappa\f$ of the Vavilov distribution
64  - 4: beta2: Parameter \f$\beta^2\f$ of the Vavilov distribution
65 
66  Benno List, June 2010
67 
68 
69  @ingroup StatFunc
70  */
71 
72 
74  public:
75 
76  /**
77  Default constructor
78  */
80 
81  /**
82  Constructor with parameter values
83  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
84  */
85  VavilovAccurateCdf(const double *p);
86 
87  /**
88  Destructor
89  */
90  virtual ~VavilovAccurateCdf ();
91 
92  /**
93  Access the parameter values
94  */
95  virtual const double * Parameters() const;
96 
97  /**
98  Set the parameter values
99  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
100 
101  */
102  virtual void SetParameters(const double * p );
103 
104  /**
105  Return the number of Parameters
106  */
107  virtual unsigned int NPar() const;
108 
109  /**
110  Return the name of the i-th parameter (starting from zero)
111  Overwrite if want to avoid the default name ("Par_0, Par_1, ...")
112  */
113  virtual std::string ParameterName(unsigned int i) const;
114 
115  /**
116  Evaluate the function
117 
118  @param x The Landau parameter \f$x = \lambda_L\f$
119 
120  */
121  virtual double DoEval(double x) const;
122 
123  /**
124  Evaluate the function, using parameters p
125 
126  @param x The Landau parameter \f$x = \lambda_L\f$
127  @param p vector of doubles containing the parameter values (Norm, x0, xi, kappa, beta2).
128  */
129  virtual double DoEvalPar(double x, const double * p) const;
130 
131  /**
132  Return a clone of the object
133  */
134  virtual IBaseFunctionOneDim * Clone() const;
135 
136  private:
137  double fP[5];
138 
139 };
140 
141 
142 } // namespace Math
143 } // namespace ROOT
144 
145 #endif /* ROOT_Math_VavilovAccurateCdf */
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
Definition: IFunction.h:133
This namespace contains pre-defined functions to be used in conjuction with TExecutor::Map and TExecu...
Definition: StringConv.hxx:21
virtual double DoEval(double x) const
Evaluate the function.
virtual const double * Parameters() const
Access the parameter values.
virtual ~VavilovAccurateCdf()
Destructor.
Double_t x[n]
Definition: legend1.C:17
virtual unsigned int NPar() const
Return the number of Parameters.
virtual double DoEvalPar(double x, const double *p) const
Evaluate the function, using parameters p.
virtual void SetParameters(const double *p)
Set the parameter values.
virtual std::string ParameterName(unsigned int i) const
Return the name of the i-th parameter (starting from zero) Overwrite if want to avoid the default nam...
Class describing the Vavilov cdf.
VavilovAccurateCdf()
Default constructor.
Specialized IParamFunction interface (abstract class) for one-dimensional parametric functions It is ...
Namespace for new Math classes and functions.
virtual IBaseFunctionOneDim * Clone() const
Return a clone of the object.