CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

LogisticFunction.cc
Go to the documentation of this file.
1// -*- C++ -*-
2// $Id:
5#include <assert.h>
6#define MAXRANGE 1000
7
8namespace Genfun {
9FUNCTION_OBJECT_IMP(LogisticFunction)
10
12 _x0("X0", 0.0,0.0,1.0),
13 _a("A",2.0,1.0, 4.0)
14{}
15
17}
18
20AbsFunction(right),
21_x0(right._x0),
22_a(right._a)
23{
24}
25
26double LogisticFunction::operator() (double x) const {
27 int i = (int) (x+0.5), &back = i, end=back+1;
28
29 if (i<0 || i>MAXRANGE) {
30 return 0;
31 }
32 else {
33 // Is the vector of values stale?
34 if (__a!=_a.getValue() || __x0!=_x0.getValue()) {
35
36 // Empty the vector
37 fx.erase(fx.begin(),fx.end());
38
39 // And update the cache.
40 __a = _a.getValue();
41 __x0 = _x0.getValue();
42
43 }
44
45
46 if (fx.empty()) fx.push_back(__x0);
47
48 while (fx.size()<size_t(end)) {
49 double v = fx.back();
50 fx.push_back(__a*v*(1.0-v));
51 }
52
53 return fx[i];
54 }
55
56
57}
58
60 return _x0;
61}
62
64 return _a;
65}
66
68 return _x0;
69}
70
72 return _a;
73}
74
75
76} // namespace Genfun
#define FUNCTION_OBJECT_IMP(classname)
#define MAXRANGE
virtual double operator()(double argument) const
virtual double getValue() const
Definition: Parameter.cc:27