KaliVeda
Toolkit for HIC analysis
algebraic_fitting_function.cpp
1 #include "algebraic_fitting_function.h"
2 
4 
5 namespace KVImpactParameters {
6 
8 
10 
11  algebraic_fitting_function::algebraic_fitting_function(const algebraic_fitting_function& other)
12  : params(other.params)
13  {
14  }
15 
16 
23 
25 
26  algebraic_fitting_function::algebraic_fitting_function(double alph, double gam, double thet, double Xmi, double Xma)
27  {
28  double p[] = {thet, Xma, Xmi, alph, gam};
30  }
31 
32 
35 
37 
38  double algebraic_fitting_function::k_cb(double cb) const
39  {
40  if (params.alpha.value <= 0) return 0;
41  if (params.gamma.value <= 0) return 0;
42  if (cb < 0 || cb > 1) return 0;
43  double arg = 1. - TMath::Power(cb, params.alpha.value);
44  if (arg < 0) return 0;
45  return params.kmax.value * TMath::Power(arg, params.gamma.value) + params.k0.value;
46  }
47 
48 
56 
58 
60  {
61  params.theta.value = p[0];
62  params.Xmax.value = p[1];
63  params.k0.value = p[2] / p[0];
64  params.kmax.value = params.Xmax.value / params.theta.value - params.k0.value;
65  params.alpha.value = p[3];
66  params.gamma.value = p[4];
67  }
68 
69 
77 
79 
81  {
82  p[0] = params.theta.value;
83  p[1] = params.Xmax.value;
84  p[2] = params.theta.value * params.k0.value;
85  p[3] = params.alpha.value;
86  p[4] = params.gamma.value;
87  }
88 
89 
91 
93 
95  {
97  l.SetValue("Theta", params.theta.value);
98  l.SetValue("Xmax", params.Xmax.value);
99  l.SetValue("Xmin", params.theta.value * params.k0.value);
100  l.SetValue("Alpha", params.alpha.value);
101  l.SetValue("Gamma", params.gamma.value);
102  return l;
103  }
104 
105 
108 
110 
112  {
113  f.SetParNames("#theta", "X_{max}", "X_{min}", "#alpha", "#gamma");
114  }
115 
116 
120 
122 
124  {
125  f.SetParameter(0, params.theta.value = 0.5);
126  f.SetParLimits(0, 0.1, 100.);
127  double xmax = h->GetXaxis()->GetBinUpEdge(h->GetNbinsX());
128  double xmin = xmax / 7.;
129  f.SetParameter(1, params.Xmax.value = xmin * 2);
130  f.SetParLimits(1, xmin, xmax);
131  f.SetParameter(2, params.k0.value = 0);
132  f.SetParLimits(2, 0, xmin);
133  f.SetParameter(3, params.alpha.value = 1);
134  f.SetParLimits(3, 0.1, 5);
135  f.SetParameter(4, params.gamma.value = 1);
136  f.SetParLimits(4, 0.1, 10);
137  }
138 
139 
140 }
141 
#define f(i)
winID h TVirtualViewer3D TVirtualGLPainter p
float xmin
float xmax
templateClassImp(THaarMatrixT)
Algebraic relationship between mean value of observable and centrality.
KVNameValueList get_params() const
Fill list with names and values of parameters.
class KVImpactParameters::algebraic_fitting_function::bce_fit_results params
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
virtual Double_t GetBinUpEdge(Int_t bin) const
TAxis * GetXaxis()
virtual Int_t GetNbinsX() const
TH1 * h
Double_t Power(Double_t x, Double_t y)
TLine l