34 double z1 =
double((x[0]-par[1])/par[2]);
35 double z2 =
double((x[1]-par[3])/par[4]);
36 return par[0]*
exp(-0.5*(z1*z1+z2*z2));
64 for (
int ix = 1; ix <= nbinX1; ++ix) {
66 for (
int iy = 1; iy <= nbinY1; ++iy) {
75 for (
int ix = 1; ix <= nbinX2; ++ix) {
77 for (
int iy = 1; iy <= nbinY2; ++iy) {
92 const double mx1 = p[1];
93 const double my1 = p[3];
94 const double sx1 = p[2];
95 const double sy1 = p[4];
96 const double mx2 = p[6];
97 const double my2 = p[8];
98 const double sx2 = p[7];
99 const double sy2 = p[9];
101 const double w1 = 0.5;
104 for (
int i = 0; i <
n; ++i) {
108 double r = rndm.
Rndm(1);
142 h1 =
new TH2D(
"h1",
"core",nbx1,xlow1,xup1,nby1,ylow1,yup1);
143 h2 =
new TH2D(
"h2",
"tails",nbx2,xlow2,xup2,nby2,ylow2,yup2);
145 double iniParams[10] = { 100, 6., 2., 7., 3, 100, 12., 3., 11., 2. };
157 double dx1 = (xup1-xlow1)/
double(nbx1);
158 double dy1 = (yup1-ylow1)/
double(nby1);
159 double dx2 = (xup2-xlow2)/
double(nbx2);
160 double dy2 = (yup2-ylow2)/
double(nby2);
163 h2->
Scale( (
double(n1) * dx1 * dy1 ) / (
double(n2) * dx2 * dy2 ) );
166 if (option > 10) global =
true;
169 std::cout <<
"Do global fit" << std::endl;
176 for (
int i = 0; i < 10; ++i) {
192 double minParams[10];
193 double parErrors[10];
194 for (
int i = 0; i < 10; ++i) {
198 double chi2, edm, errdef;
200 minuit->
GetStats(chi2,edm,errdef,nvpar,nparx);
219 TCanvas *
c1 =
new TCanvas(
"c1",
"Two HIstogram Fit example",100,10,900,800);
226 func->
SetRange(xlow1,ylow1,xup1,yup1);
232 func->
SetRange(xlow2,ylow2,xup2,yup2);
238 func->
Draw(
"surf1 same");
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
TList * GetListOfFunctions() const
virtual void SetParameters(const Double_t *params)
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
Random number generator class based on M.
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
virtual Int_t SetParameter(Int_t ipar, const char *parname, Double_t value, Double_t verr, Double_t vlow, Double_t vhigh)=0
virtual const char * GetParName(Int_t ipar) const
R__EXTERN TStyle * gStyle
static void SetDefaultFitter(const char *name="")
static: set name of default fitter
TVirtualPad * cd(Int_t subpadnumber=0)
Set current canvas & pad.
virtual Double_t GetParameter(Int_t ipar) const =0
virtual void SetFCN(void *fcn)
To set the address of the minimization objective function.
void SetStatY(Float_t y=0)
virtual Int_t GetNbinsX() const
double gauss2D(double *x, double *par)
virtual Double_t Rndm(Int_t i=0)
Machine independent random number generator.
virtual Double_t GetParError(Int_t ipar) const =0
virtual TF1 * DrawCopy(Option_t *option="") const
Draw a copy of this function with its current attributes-*.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual void SetChisquare(Double_t chi2)
int fit2dHist(int option=1)
Class to manage histogram axis.
virtual void Draw(Option_t *option="")
Draw this histogram with options.
void SetOptFit(Int_t fit=1)
The type of information about fit parameters printed in the histogram statistics box can be selected ...
void FillHisto(TH2D *h, int n, double *p)
virtual Int_t ExecuteCommand(const char *command, Double_t *args, Int_t nargs)=0
A 2-Dim function with parameters.
virtual Int_t GetStats(Double_t &amin, Double_t &edm, Double_t &errdef, Int_t &nvpar, Int_t &nparx) const =0
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
double func(double *x, double *p)
Abstract Base Class for Fitting.
virtual Double_t GetParameter(Int_t ipar) const
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
virtual Int_t GetNbinsY() const
static TVirtualFitter * Fitter(TObject *obj, Int_t maxpar=25)
Static function returning a pointer to the current fitter.
virtual void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0)
Automatic pad generation by division.
virtual void Add(TObject *obj)
virtual void SetParErrors(const Double_t *errors)
Set errors for all active parameters when calling this function, the array errors must have at least ...
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
virtual void SetNDF(Int_t ndf)
Set the number of degrees of freedom ndf should be the number of points used in a fit - the number of...
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
Int_t Fill(Double_t)
Invalid Fill method.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
void myFcn(Int_t &, Double_t *, Double_t &fval, Double_t *p, Int_t)
2-D histogram with a double per channel (see TH1 documentation)}
double my2Dfunc(double *x, double *par)