void distrib(){ #define M_PI 3.14159265358979323846 Double_t fPLP(Double_t *M, Double_t *par) { if (M[0] < par[0]) { cout << "n1" << endl; return 0; cout << "N1" << endl; } else if ((M[0] >= par[0]) && (M[0] < par[0] + par[5])) { if (M[0] <= par[1]) { cout << "t0" << endl; return ((1-par[6])*pow(M[0],-par[2]) + par[6]*(1/(par[4]*sqrt(2*M_PI)) * exp(-pow((M[0] - par[3]),2)/(2*par[4]*par[4]))) ) * pow(exp(par[5]/(M[0] - par[0]) + par[5]/(M[0] - par[0] - par[5])) + 1,-1); cout << "T0" << endl; } else { cout << "t1" << endl; return par[6]*(1/(par[4]*sqrt(2*M_PI)) * exp(-pow((M[0] - par[3]),2)/(2*par[4]*par[4]))) * pow(exp(par[5]/(M[0] - par[0]) + par[5]/(M[0] - par[0] - par[5])) + 1,-1); cout << "T1" << endl; } } else if (M[0] >= par[0] + par[5]) { if (M[0] <= par[1]) { cout << "t2" << endl; return (1-par[6])*pow(M[0],-par[2]) + par[6]*(1/(par[4]*sqrt(2*M_PI)) * exp(-pow((M[0] - par[3]),2)/(2*par[4]*par[4]))); cout << "T2" << endl; } else { cout << "t3" << endl; return par[6]*(1/(par[4]*sqrt(2*M_PI)) * exp(-pow((M[0] - par[3]),2)/(2*par[4]*par[4]))); cout << "T3" << endl; } } } //.L fPLP.C+ TF1 *fp = new TF1("fct plp",fPLP,5,95,7); fp->SetParNames("Mmin","Mmax","Alpha","Mu","Sigma","DeltaM","LambdaP"); fp->SetParameters(5,95,2.62,33.5,5.09,4.88,0.08); int it = 0; TH1D *hg = new TH1D("hg","hg",200,5,95); gRandom->SetSeed(); // initialise sur l'horloge (#include ) for(int i=1;i<=1000000;i++) //tirages { cout << it << endl; double x = fp->GetRandom(5,95); // mon fit fplp it = it + 1; cout << it << endl; hg->Fill(x); } double J = hg->Integral(); hg->Scale(1/J); hg->SetLineColor(kGreen); TCanvas *c1 = new TCanvas("c1", "c1", 1500, 1000); c1->SetGrid(); fp->Draw(); hg->Draw("same"); /* double I = h_bbh_det->Integral(); h_bbh_det->Scale(1/I); TF1 *g4 = new TF1("g4" , "pol6" , 0 , 3.15); g4->SetLineColor(kGreen); g4->SetLineWidth(2); h_bbh_det ->Fit("g4" , "R"); TH1D *hR = new TH1D("hR","hR",100,0,3.15); gRandom->SetSeed(); // initialise sur l'horloge (#include ) for(int i=1;i<=1000000;i++) //tirages { double x= g4->GetRandom(0,3.15); // mon fit g4 hR->Fill(x); } double J = hR->Integral(); hR->Scale(1/J); hR->SetLineColor(kGreen); */ }