#include "TMinuit.h" #include "events.h" #include #include #include #include #include #include "TRandom.h" #include Float_t x[100],y[100],errory[100]; //______________________________________________________________________________ Double_t func(float x,Double_t *par) { Double_t value=par[0] * exp( -x/par[1]); return value; } //______________________________________________________________________________ void fcn(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag) { const Int_t nbins = 100; Int_t i; //calculate chisquare Double_t chisq = 0; Double_t delta; for (i=0;iSetBinContent(i+1, exp(-i)); ExpFall->SetBinError( i+1, 0.01); x[i] = i; y[i] = exp(-i); errory[i] = 0.01; } ExpFall->Draw(); // TMinuit *gMinuit = new TMinuit(2); //initialize TMinuit with a maximum of 2 params // gMinuit->SetFCN(fcn); // // Double_t arglist[10]; // Int_t ierflg = 0; // // arglist[0] = 1; // gMinuit->mnexcm("SET ERR", arglist ,1,ierflg); // // // Set starting values and step sizes for parameters // static Double_t vstart[2] = {3, 2}; // static Double_t step[2] = {0.001, 0.001}; // gMinuit->mnparm(0, "norm", vstart[0], step[0], 0, 2,ierflg); // gMinuit->mnparm(1, "decay", vstart[1], step[1], 0, 2,ierflg); // // // Now ready for minimization step // arglist[0] = 1000; // arglist[1] = 1.; // gMinuit->mnexcm("MIGRAD", arglist ,2,ierflg); // // // Print results // Double_t amin,edm,errdef; // Int_t nvpar,nparx,icstat; // gMinuit->mnstat(amin,edm,errdef,nvpar,nparx,icstat); }