CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
GenericFunctions
src
PtRelFcn.cc
Go to the documentation of this file.
1
// -*- C++ -*-
2
// $Id:
3
#include "
CLHEP/GenericFunctions/defs.h
"
4
#include "
CLHEP/GenericFunctions/PtRelFcn.hh
"
5
#include "
CLHEP/GenericFunctions/Variable.hh
"
6
#include <assert.h>
7
#include <cmath>
// for pow() and exp() and isfinite()
8
#include <float.h>
9
10
#if (defined __STRICT_ANSI__) || (defined _WIN32)
11
#ifndef M_PI
12
#define M_PI 3.14159265358979323846
13
#endif
// M_PI
14
#endif
// __STRICT_ANSI__
15
16
namespace
Genfun
{
17
FUNCTION_OBJECT_IMP
(PtRelFcn)
18
19
PtRelFcn
::
PtRelFcn
():
20
_p0("P0", 0, 0, 1),
21
_p1("P1", 0, 0, 2),
22
_p2("P2", 1, 0, 10),
23
_p3("P3", 0, 0, 10),
24
_p4("P4", 1.0, 0.1, 5.0),
25
_p5("P5", 0.0, 0, 50)
26
{}
27
28
PtRelFcn::~PtRelFcn
() {
29
}
30
31
PtRelFcn::PtRelFcn
(
const
PtRelFcn
& right):
32
AbsFunction
(right),
33
_p0(right._p0),
34
_p1(right._p1),
35
_p2(right._p2),
36
_p3(right._p3),
37
_p4(right._p4),
38
_p5(right._p5)
39
{
40
}
41
42
double
PtRelFcn::operator()
(
double
x)
const
{
43
44
double
p0 = _p0.
getValue
();
45
double
p1 = _p1.
getValue
();
46
double
p2 = _p2.
getValue
();
47
double
p3 = _p3.
getValue
();
48
double
p4 = _p4.
getValue
();
49
double
p5 = _p5.
getValue
();
50
51
//assert ((p0>=0.0) && (p0<=1.0));
52
if
(p0<0.0) p0=FLT_MIN;
53
if
(p0>1.0) p0=1.0-FLT_MIN;
54
55
if
(x<=0.0)
return
1.0E-10;
56
57
double
n = (1+p1)/p3;
58
double
a
= (1/p3)*std::pow(p2,-n);
59
60
double
norm = 1.0/(
a
*exp(_logGamma(n)));
61
static
const
double
s2 = sqrt(2.0);
62
double
retVal=
63
norm*p0*std::pow(x,p1)*exp(-p2*std::pow(x,p3)) +
64
(2.0/(1+_erf(p5/p4/s2))*(1.0-p0)/(sqrt(2*M_PI)*p4))*exp(-(x-p5)*(x-p5)/(2.0*p4*p4));
65
66
//if (!std::isfinite(retVal)) return 1.0E-10;
67
68
return
std::max(retVal,1.0E-10);
69
}
70
71
Parameter
&
PtRelFcn::P0
() {
72
return
_p0;
73
}
74
75
const
Parameter
&
PtRelFcn::P0
()
const
{
76
return
_p0;
77
}
78
79
Parameter
&
PtRelFcn::P1
() {
80
return
_p1;
81
}
82
83
const
Parameter
&
PtRelFcn::P1
()
const
{
84
return
_p1;
85
}
86
87
Parameter
&
PtRelFcn::P2
() {
88
return
_p2;
89
}
90
91
const
Parameter
&
PtRelFcn::P2
()
const
{
92
return
_p2;
93
}
94
95
Parameter
&
PtRelFcn::P3
() {
96
return
_p3;
97
}
98
99
const
Parameter
&
PtRelFcn::P3
()
const
{
100
return
_p3;
101
}
102
103
Parameter
&
PtRelFcn::P4
() {
104
return
_p4;
105
}
106
107
const
Parameter
&
PtRelFcn::P4
()
const
{
108
return
_p4;
109
}
110
111
Parameter
&
PtRelFcn::P5
() {
112
return
_p5;
113
}
114
115
const
Parameter
&
PtRelFcn::P5
()
const
{
116
return
_p5;
117
}
118
119
120
121
122
123
}
// namespace Genfun
FUNCTION_OBJECT_IMP
#define FUNCTION_OBJECT_IMP(classname)
Definition
CLHEP/GenericFunctions/AbsFunction.hh:156
PtRelFcn.hh
Variable.hh
defs.h
Genfun::AbsFunction
Definition
GenericFunctions/AbsFunction.hh:48
Genfun::Parameter
Definition
GenericFunctions/Parameter.hh:35
Genfun::Parameter::getValue
virtual double getValue() const
Definition
Parameter.cc:27
Genfun::PtRelFcn
Definition
GenericFunctions/PtRelFcn.hh:27
Genfun::PtRelFcn::P2
Parameter & P2()
Definition
PtRelFcn.cc:87
Genfun::PtRelFcn::P4
Parameter & P4()
Definition
PtRelFcn.cc:103
Genfun::PtRelFcn::operator()
virtual double operator()(double argument) const
Definition
PtRelFcn.cc:42
Genfun::PtRelFcn::P5
Parameter & P5()
Definition
PtRelFcn.cc:111
Genfun::PtRelFcn::~PtRelFcn
virtual ~PtRelFcn()
Definition
PtRelFcn.cc:28
Genfun::PtRelFcn::PtRelFcn
PtRelFcn()
Definition
PtRelFcn.cc:19
Genfun::PtRelFcn::P0
Parameter & P0()
Definition
PtRelFcn.cc:71
Genfun::PtRelFcn::P1
Parameter & P1()
Definition
PtRelFcn.cc:79
Genfun::PtRelFcn::P3
Parameter & P3()
Definition
PtRelFcn.cc:95
Genfun
Definition
CLHEP/GenericFunctions/Abs.hh:14
a
@ a
Definition
testCategories.cc:125
Generated by
1.12.0