12#include "Minuit2/FCNBase.h"
13#include "Minuit2/FCNGradientBase.h"
14#include "Minuit2/FunctionMinimum.h"
15#include "Minuit2/MnUserParameterState.h"
16#include "Minuit2/MnMigrad.h"
17#include "Minuit2/MnSimplex.h"
18#include "Minuit2/MnHesse.h"
19#include "Minuit2/MnMinos.h"
32 Chi2Fitter(std::shared_ptr<MSGTool>, uint64_t, TH1D *, TH2D *_cov_ =
nullptr);
33 Chi2Fitter(std::shared_ptr<MSGTool>, uint64_t);
34 void SetModel(
const std::vector<double> &, TH1D *, TH2D *
cov =
nullptr);
35 void SetModel(
const std::vector<double> &,
double);
40 double Value(uint64_t);
41 double Error(uint64_t);
44 const TMatrixD &
Cov() {
return cov; }
51 Chi2FitterFCN(
int _dim_, std::vector<std::vector<double>> *_vv_, std::vector<double> *_vc_) :
vc(_vc_),
vv(_vv_),
dim(_dim_) {}
53 double operator()(
const std::vector<double> &)
const override;
55 std::vector<double>
Gradient(
const std::vector<double> &)
const override;
57 double Up()
const {
return 1.0; }
62 double QuadraticChi2(
const std::vector<double> &,
const std::vector<double> &)
const;
63 std::vector<double>
GradientQuadraticChi2(
const std::vector<double> &,
const std::vector<double> &)
const;
64 std::vector<double> *
vc;
65 std::vector<std::vector<double>> *
vv;
76 std::vector<std::vector<double>>
vvalue;
fcn function to calculate the
double operator()(const std::vector< double > &) const override
Chi2FitterFCN(int _dim_, std::vector< std::vector< double > > *_vv_, std::vector< double > *_vc_)
bool CheckGradient() const override
double QuadraticChi2(const std::vector< double > &, const std::vector< double > &) const
std::vector< double > * vc
std::vector< std::vector< double > > * vv
std::vector< double > Gradient(const std::vector< double > &) const override
std::vector< double > GradientQuadraticChi2(const std::vector< double > &, const std::vector< double > &) const
fit the parameters of a shape function.
std::vector< double > vvaluemax
void SetModel(const std::vector< double > &, TH1D *, TH2D *cov=nullptr)
Set the model with a set of parameter.
std::vector< double > vvaluemin
double GetChi2(uint64_t)
Get the of ith model.
std::vector< double > value
double FitChi2()
Get the of the fitting procedure.
void Fit(FitMethod fm=FitMethod::Eigen)
Start to fit.
std::vector< double > vchi2
void SetRange(int min, int max)
Set the range of calculation of of the target histogram.
@ Eigen
use matrix calculation to get the fitted value, Eigen library is used.
@ Minuit
use minuit library to fit the value.
double Error(uint64_t)
Get the fit error of ith parameter.
std::vector< std::vector< double > > vvalue
const std::vector< double > & Value()
double OffSet()
The offset parameter of the fitted function.