#include "TROOT.h" #include "TH1.h" #include "TMath.h" #include "TF1.h" #include "TFile.h" #include "TLegend.h" #include "TCanvas.h" #include Double_t fitf(Double_t *v, Double_t *par) { Double_t arg = 0; if (par[2] != 0) arg = (v[0] - par[1])/par[2]; Double_t fitval = par[0]*TMath::Exp(-0.5*arg*arg); return fitval; } void fitExample() { TFile *f = new TFile("PtMC.root","READ"); TList *list = dynamic_cast (f->Get("cOutput")); if (!list) { printf("Error retrieving cOutput \n"); return; } TH1F *fHistMassK0 = dynamic_cast( list->FindObject("fHistMassK0On") ); if (!fHistMassK0) { printf("Error retrieving fHistMassK0On \n"); return; } //create a function with 3 parameters in the range [-3,3] TF1 *func = new TF1("fit",fitf,-3,3,3); func->SetParameters(5000,fHistMassK0->GetMean(),fHistMassK0->GetRMS()); func->SetParNames("Constant","Mean_value","Sigma"); func->SetRange(0.485,0.515); fHistMassK0->Fit("fit","R"); fHistMassK0->Draw(); }