| KADD 2021 Laboratorium 12 zdalneFrom Łukasz Graczykowski(Difference between revisions) Lgraczyk  (Talk | contribs) (Created page with "== Zadanie == '''Dopasowanie funkcji za pomocą paietu <code>MINUIT</code>''' (5 pkt.) Chcemy wykonać dopasowanie do danych doświadczalnych (wczytywanych z pliku) '''nie''' u...") Latest revision as of 06:13, 20 May 2021ZadanieDopasowanie funkcji za pomocą paietu  Chcemy wykonać dopasowanie do danych doświadczalnych (wczytywanych z pliku) nie używając funkci  Kroki postępowania1. Ściągamy plik z danymi: example_data.root i wczytujemy go w funkcji głównej makra.  TFile *ifile = new TFile("file.root");
 TH1D *hist = (TH1D*)ifile->Get("hist");
2. Do naszych danych dopasujemy taką oto funkcję zdefiniowaną jako funkcja globalna (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. W funkcji głównej makra tworzymy obiekt TMinuit, przykładowo: TMinuit *gMinuit = new TMinuit(liczba_parametrow_fitu); //liczba parametrów wynika z definicji funkcji teoretycznej 4. Musimy stworzyć funkcję globalną (definiujemy ją przed funkcją główną), którą  void fcn(int &npar, double *gin, double &f, double *par, int iflag) Uwaga 1! Nie przerażamy się parametrami (to są automatyczne parametry, które muszą być i które potrzebuje  5. W funkcji głównej, mówimy naszemu obiektowi  gMinuit->SetFCN(fcn); 6. Następnie ustawiamy parametry funkcji, np.: gMinuit->DefineParameter(0, "p0", 100., 1., 0., 200.); 7. Główna część, gdzie dokonuje się zadania to wykonanie dwóch komend:  gMinuit->Command("MIGRAD");        
 gMinuit->Command("MINOS");
 8. Za pomocą: gMinuit->GetParameter(...) wyciągamy otrzymane parametry dopasowania, tworzymy funkcję  WynikPrzykłądowy histogram z dopasowaniem:
 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
 | 

