#include "TH1F.h" // συνάρτηση 6 παραμέτρων (2 gaussians) Double_t f ( Double_t * xxx , Double_t * ppp ) { double x = xxx[0]; double c1 = ppp[0]; double m1 = ppp[1]; double s1 = ppp[2]; double c2 = ppp[3]; double m2 = ppp[4]; double s2 = ppp[5]; return c1 * TMath::Gaus(x,m1,s1) + c2 * TMath::Gaus(x,m2,s2) ; } void fit03() { TF1 * f1 = new TF1( "f1" , f , 0 , 20 , 6) ; TH1F * h = new TH1F( "myhist", "gaussian distribution" , 100 , 0 , 20 ); for ( int i=0 ; i<10000 ; i++ ) { double x = gRandom->Gaus(10,2); h->Fill(x); } for ( int i=0 ; i<500 ; i++ ) { double x = gRandom->Gaus(14,0.5); h->Fill(x); } f1->SetParameter(0, 400); f1->SetParameter(1, 10); f1->SetParameter(2, 1); f1->SetParameter(3, 100); f1->SetParameter(4, 14); f1->SetParameter(5, 1); f1->SetParLimits(0 , 200 , 600); f1->SetParLimits(1 , 6 , 12); f1->SetParLimits(2 , 0.1 , 10); f1->SetParLimits(3 , 10 , 600); f1->SetParLimits(4 , 12 , 16); f1->SetParLimits(5 , 0.1 , 10); f1->SetParNames("C_1" , "#mu_1" , "#sigma_1", "C_2" , "#mu_2" , "#sigma_2"); gStyle->SetOptFit(111111); h->Fit("f1"); }