Fitten mit MINUIT

Das direkte Fitten mit ROOT ist beschränkt auf Wenn das nicht reicht muss man innerhalb von ROOT MINUIT direkt aufrufen:



   //   initialize TMinuit 
   TMinuit *gMinuit = new TMinuit(npar);  
   // Tell Minuit the function 
   gMinuit->SetFCN(fcn);
   // Start Werte fuer Minuit
   gMinuit->mnparm(0, "a", 1.3, 0.1, 0.1, 5., ierflg);
   // minimization
   gMinuit->mnexcm("MIGRAD", arglist ,2,ierflg);


In der Funktion fcn muss man dann selbst \ensuremath{\displaystyle \ensuremath{\chi^2}} oder \ensuremath{\displaystyle {\cal{L}}} berechnen, wobei fcn folgende Argumente bekommt:
void fcn(Int_t &npar,Double_t *gin,Double_t &f,
    Double_t *par,Int_t iflag)

Wichtig sind

Die Syntax zur Minuit Verwendung ist ein bisschen speziell, weder C noch C++ sondern an FORTRAN angelehnt. Minuit in FORTRAN geschrieben, ROOT Implementation ist direkte f2c Übersetzung.



GDuckeck 2018-04-10