June 2, 2024, Sunday, 153

KADD 2020 Laboratorium 12

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Kroki postępowania)
(Kroki postępowania)
Line 21: Line 21:
3. Tworzymy obiekt TMinuit, przykładowo:
3. Tworzymy obiekt TMinuit, przykładowo:
   TMinuit *gMinuit = new TMinuit(liczba_parametrow_fitu);
   TMinuit *gMinuit = new TMinuit(liczba_parametrow_fitu);
 +
 +
4. Musimy stworzyć funkcję, którą <code>MINUIT</code> będzie starał się zminimalizować manipulując naszymi parametrami. Musi ona mieć postac:
 +
void fcn(int &npar, double *gin, double &f, double *par, int iflag)
== Wynik ==
== Wynik ==

Revision as of 08:54, 18 May 2020

Zadanie

Dopasowanie funkcji za pomocą paietu MINUIT (5 pkt.)

Chcemy wykonać dopasowanie do danych doświadczalnych (wczytywanych z pliku) nie używając funkci Fit, tylko za pomocą pakietu MINUIT (dokumentacja), który daje nam zdecydowanie większą kontrolę nad procesem dopasowania funkcji.

Kroki postępowania

1. Ściągamy plik z danymi: example_data.root

2. Do naszych danych dopasujemy taką oto funkcję (nasz model opisujący dane doświadczalne):

double model(double x, double *par) 
{ 
 double mu    = par[3]; 
 double sigma = par[4]; 
 double norm  = 1./sqrt(2.*TMath::Pi())/sigma; 
 double G     = norm*exp(-0.5 *pow((x-mu)/sigma,2));  //unormowana funkcja Gaussa
 double BinWidth = hist->GetBinWidth(1); 
 return par[0] + par[1]*x + par[2] * BinWidth * G; 
}

3. Tworzymy obiekt TMinuit, przykładowo:

 TMinuit *gMinuit = new TMinuit(liczba_parametrow_fitu);

4. Musimy stworzyć funkcję, którą MINUIT będzie starał się zminimalizować manipulując naszymi parametrami. Musi ona mieć postac:

void fcn(int &npar, double *gin, double &f, double *par, int iflag)

Wynik

Przykłądowy histogram z dopasowaniem: Minuit1.png

Ostateczny output:

FCN=93.6468 FROM MINOS     STATUS=SUCCESSFUL    217 CALLS         364 TOTAL
                     EDM=3.79962e-17    STRATEGY= 1  ERROR MATRIX UNCERTAINTY   0.0 per cent
  EXT PARAMETER                  PARABOLIC         MINOS ERRORS        
  NO.   NAME      VALUE            ERROR      NEGATIVE      POSITIVE   
   1  p0           1.12163e+02   2.00576e+00  -2.00605e+00   2.00576e+00
   2  p1          -3.33062e+01   1.52150e+00  -1.52151e+00   1.52153e+00
   3  area         2.02070e+03   5.83151e+01  -5.82593e+01   5.83721e+01
   4  mean         1.00031e+00   1.70385e-03  -1.70425e-03   1.70425e-03
   5  width        5.34156e-02   1.50983e-03  -1.49782e-03   1.52309e-03
Info in <TCanvas::MakeDefCanvas>:  created default TCanvas with name c1