Double_t shift_Poiss(Double_t *x, Double_t *par) { Double_t var = x[0]/par[2] - par[1]; return par[0] * TMath::Exp(var * TMath::Log(par[3])-par[3])/TMath::Gamma(var+1.0); } void test_fit_0() { TFile *f = new TFile("Test_Fit.root", "READ"); TCanvas *c1 = new TCanvas("c1","Multiplicity distribution"); TH1F *h1f_ntrk_S = (TH1F*)f->Get("h1f_ntrk_S"); // Creates a ROOT function TF1 to fit TF1 *fit1 = new TF1("fit1",shift_Poiss,6,60,4); // Sets initial values, limits and parameter names fit1->SetParameters(300000,0,1.5,5); fit1->SetParLimits(0,1,100000000); fit1->SetParLimits(1,0,100); fit1->SetParLimits(2,0.1,100); fit1->SetParLimits(3,1,100); fit1->SetParNames("Ampl","Shift","Scale","Mean"); // Fit histogram in range defined by function h1f_ntrk_S->Fit("fit1","r"); }