11#include "Minuit2/FCNBase.h"
12#include "Minuit2/FunctionMinimum.h"
13#include "Minuit2/MnUserParameterState.h"
14#include "Minuit2/MnPrint.h"
15#include "Minuit2/MnMigrad.h"
16#include "Minuit2/MnSimplex.h"
17#include "Minuit2/MnHesse.h"
18#include "Minuit2/MnMinos.h"
19#include "Minuit2/MnContours.h"
20#include "Minuit2/MnPlot.h"
30 void SetTemplate(TH1D *h,
double SF = 1,
bool fix =
false);
31 void SetTemplate(TH1D *h,
double SF,
double min,
double max);
33 void SetRelation(std::function<
double(
const std::vector<double> &,
const std::vector<double> &)>,
34 std::function<
double(
const std::vector<double> &,
const std::vector<double> &,
const std::vector<double> &)>);
36 double GetSF(uint64_t i);
46 void SetRelation(std::function<
double(
const std::vector<double> &,
const std::vector<double> &)>,
47 std::function<
double(
const std::vector<double> &,
const std::vector<double> &,
const std::vector<double> &)>);
48 double operator()(
const std::vector<double> &)
const override;
50 double Up()
const {
return 1.0; }
53 std::function<double(
const std::vector<double> &,
const std::vector<double> &)>
contentfunction;
54 std::function<double(
const std::vector<double> &,
const std::vector<double> &,
const std::vector<double> &)>
errorfunction;
62 std::vector<double>
sf;
71 std::function<double(
const std::vector<double> &,
const std::vector<double> &)>
contentfunction;
72 std::function<double(
const std::vector<double> &,
const std::vector<double> &,
const std::vector<double> &)>
errorfunction;
75 std::vector<TH1D *>
vh;
double operator()(const std::vector< double > &) const override
void SetRelation(std::function< double(const std::vector< double > &, const std::vector< double > &)>, std::function< double(const std::vector< double > &, const std::vector< double > &, const std::vector< double > &)>)
std::vector< TH1D * > h_template
std::function< double(const std::vector< double > &, const std::vector< double > &, const std::vector< double > &)> errorfunction
std::function< double(const std::vector< double > &, const std::vector< double > &)> contentfunction
Fit the contributions use template histograms to a target histogram.
TemplateFitter(std::shared_ptr< MSGTool > MSG)
double GetSF(uint64_t i)
Get the scale factors for ith template.
double GetChi2()
Get the fit .
std::vector< double > sfmin
void SetFitRange(int min, int max)
Set the fit range.
void Clear()
Clear this tool.
double GetSFError(uint64_t i)
Get the uncertainty of the scale factors for ith template.
void SetTarget(TH1D *h)
Set the target histogram.
void SetTemplate(TH1D *h, double SF=1, bool fix=false)
Set the template histogram.
std::vector< bool > isfixed
std::function< double(const std::vector< double > &, const std::vector< double > &, const std::vector< double > &)> errorfunction
std::function< double(const std::vector< double > &, const std::vector< double > &)> contentfunction
std::vector< double > sferr
void SetRelation(std::function< double(const std::vector< double > &, const std::vector< double > &)>, std::function< double(const std::vector< double > &, const std::vector< double > &, const std::vector< double > &)>)
Set the relation between the target histogram and the template histograms. if not called,...
std::vector< double > sfmax