Regressor function object for JPoint4D fit using JSimplex minimiser.
More...
#include <JPoint4DRegressor.hh>
|
| JRegressor (const bool __prefit) |
| Constructor. More...
|
|
| JRegressor (TH2D *hPDF2D, bool __prefit) |
| Constructor for a 2D histogram as PDF
More...
|
|
template<class JHit_t > |
double | operator() (const JPoint4D &vertex, const JHit_t &hit) const |
|
double | evaluatePrefit (const double t_res, const double cosT, const double cosT_th) const |
|
double | evaluateFit (const double t_res, const double D) const |
|
result_type | operator() (const JPoint4D &value, T __begin, T __end) |
| Global fit. More...
|
|
result_type | operator() (const JPoint4D &value, T1 __begin1, T1 __end1, T2 __begin2, T2 __end2) |
| Global fit. More...
|
|
double | operator() (const JFunction_t &fit, T __begin, T __end) |
| Multi-dimensional fit. More...
|
|
double | operator() (const JFunction_t &fit, T __begin, T __end, const JPoint4D &step) |
| 1D fit. More...
|
|
|
double | evaluate (const JFunction_t &fit, T __begin, T __end) const |
| Evaluate chi2 for given data set. More...
|
|
template<>
struct JFIT::JRegressor< JPoint4D, JSimplex >
Regressor function object for JPoint4D fit using JSimplex minimiser.
Definition at line 47 of file JPoint4DRegressor.hh.
◆ minimiser_type
◆ regressor_type
◆ result_type
◆ JRegressor() [1/2]
◆ JRegressor() [2/2]
◆ operator()() [1/5]
Definition at line 82 of file JPoint4DRegressor.hh.
90 const double t_res = hit.getT() - vertex.
getT(hit_pos);
92 const double cosT = photonDir.
getDot(hit.getDirection());
◆ evaluatePrefit()
Definition at line 111 of file JPoint4DRegressor.hh.
118 }
else if(cosT > cosT_th){
121 p_T =
p_max * cosT/cosT_th;
124 double lik = 1 / (sqrt(
a*
a + t_res*t_res) + p_T);
125 double u = -log(lik);
◆ evaluateFit()
Definition at line 131 of file JPoint4DRegressor.hh.
134 int x_bin =
hpdf2d[0]->GetXaxis()->FindBin(t_res);
135 int y_bin =
hpdf2d[0]->GetYaxis()->FindBin(D);
137 int nbinsX =
hpdf2d[0]->GetXaxis()->GetNbins();
138 int nbinsY =
hpdf2d[0]->GetYaxis()->GetNbins();
142 if(x_bin > 1 && x_bin < nbinsX){
143 if(y_bin > 1 && y_bin < nbinsY){
144 lik =
hpdf2d[0]->Interpolate(t_res, D);
152 double u = -log(lik);
◆ operator()() [2/5]
Global fit.
- Parameters
-
value | start value |
__begin | begin of data set |
__end | end of data set |
- Returns
- chi2
Definition at line 92 of file JRegressor.hh.
94 static_cast<minimiser_type&>(*this).value =
value;
96 return static_cast<minimiser_type&>(*
this)(static_cast<regressor_type&>(*
this), __begin, __end);
◆ operator()() [3/5]
Global fit.
- Parameters
-
value | start value |
__begin1 | begin of first data set |
__end1 | end of first data set |
__begin2 | begin of second data set |
__end2 | end of second data set |
- Returns
- chi2
Definition at line 111 of file JRegressor.hh.
115 static_cast<minimiser_type&>(*this).value =
value;
117 return static_cast<minimiser_type&>(*
this)(static_cast<regressor_type&>(*
this), __begin1, __end1, __begin2, __end2);
◆ operator()() [4/5]
Multi-dimensional fit.
The given fit function should return the equivalent of chi2 for the current value of the given model and a given data point.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
- Returns
- chi2
Definition at line 71 of file JSimplex.hh.
76 double chi2_old =
evaluate(fit, __begin, __end);
78 const int N =
step.size();
88 DEBUG(
"old: " <<
FIXED(12,5) << chi2_old << endl);
90 const JModel_t p0(
value);
92 for (
int i = 0; i != N; ++i) {
96 chi2[i] = (*this)(fit, __begin, __end,
step[i]);
101 JModel_t wall =
value - p0;
103 const double chi2_new = (*this)(fit, __begin, __end, wall);
105 DEBUG(
"new: " <<
FIXED(12,5) << chi2_new << endl);
108 if (fabs(chi2_old - chi2_new) <
EPSILON*fabs(chi2_old)) {
118 const double fe =
evaluate(fit, __begin, __end);
123 for (
int i = N-1; i != 0; --i) {
124 chi2[i] = chi2[i-1] - chi2[i];
127 chi2[0] = chi2_old - chi2[0];
132 for (
int i = 0; i != N; ++i) {
138 const double fn = chi2_new;
139 const double f0 = chi2_old;
140 const double ff = f0 - fn - df;
144 if (fe < f0 && 2.0*(f0 - 2.0*fn + fe)*ff*ff < (f0-fe)*(f0-fe)*df) {
146 for (
int i = 0; i != N - 1; ++i) {
◆ operator()() [5/5]
1D fit.
The given fit function should return the equivalent of chi2 for the current value of the given model and a given data point.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
step | step direction |
Definition at line 173 of file JSimplex.hh.
181 double chi2_old =
evaluate(fit, __begin, __end);
187 const double chi2_new =
evaluate(fit, __begin, __end);
189 DEBUG(
"step: " << setw(3) << i <<
' ' <<
FIXED(12,5) << chi2_old <<
' ' <<
FIXED(12,5) << chi2_new <<
' ' <<
FIXED(5,2) << lambda << endl);
191 if (fabs(chi2_old - chi2_new) <
EPSILON*fabs(chi2_old)) {
193 if (chi2_new > chi2_old) {
205 if (chi2_new < chi2_old) {
219 lambda = factor * lambda;
◆ evaluate()
Evaluate chi2 for given data set.
- Parameters
-
fit | fit function |
__begin | begin of data |
__end | end of data |
Definition at line 242 of file JSimplex.hh.
246 for (T hit = __begin; hit != __end; ++hit) {
247 chi2 += fit(
value, *hit);
◆ d_ref
◆ p_max
◆ NUMBER_OF_PDFS
◆ hpdf2d
◆ estimator
◆ prefit
◆ MAXIMUM_ITERATIONS
maximal number of iterations
maximal number of iterations.
Definition at line 226 of file JSimplex.hh.
◆ EPSILON
maximal distance to minimum
maximal distance to minimum.
Definition at line 227 of file JSimplex.hh.
◆ value
◆ step
◆ numberOfIterations
◆ debug
debug level (default is off).
Definition at line 45 of file JMessage.hh.
The documentation for this struct was generated from the following file: