Definition der Fit-Funktion

Einige Funktionen sind vordefiniert in ROOT:

Fitten mit Benutzer definierten Funktionen

Für viele Fälle kann man auf weitere in ROOT eingebaute Funktionen zurückgreifen.

Und für den allgemeinen Fall kann man eigene C++-Funktionen definieren:


double BreitWig( double *x, double *par) 
{
  // Breit- Wigner function
  double mw = par[0], gw = par[1], spk=par[2], mw2, gw2, eb2;
  
  mw2 = mw*mw;
  gw2 = gw*gw;
  eb2 = x[0]*x[0];
  return( spk * gw2*mw2 / ( pow( eb2 - mw2, 2 ) + mw2 * gw2 ) );
  //  return( spk * gw2*mw2 / ( pow( eb2 - mw2, 2 ) + eb2*eb2/mw2 * gw2 ) );
}

void bwfit()
{
  const int np = 7;
  double xv[np] = { 88.396, 89.376, 90.234, 91.238, 92.068, 93.080, 93.912 };
  double *ex = 0;
  double yv[np] = {  6.943, 13.183, 25.724, 40.724, 27.031, 12.273, 6.980 };
  double ey[np] = {  0.087, 0.119, 0.178, 0.087, 0.159, 0.095, 0.064};

  TGraphErrors *tg = new TGraphErrors( 7, xv, yv, ex, ey );
  tg->Draw("AP");

  TF1 *bw = new TF1("bw",BreitWig, 70, 110, 3);
  // set parameters
  bw->SetParameters(80.,2. , 10.);
  // do the fit
  tg->Fit("bw");
  // retrieve fit function
  TF1 *f = bw;
}



GDuckeck 2018-04-10