#include #include #include "TFile.h" double f1(double *, double *); double f2(double *, double *); double f_f1_f2(double *, double*); TF2 *f_func1 = new TF2("f_func1", f1, -4, 4, -4, 4, 1); TF2 *f_func2 = new TF2("f_func2", f2, -4, 4, -4, 4, 1); void GetHist_test() { TFile *file_out = new TFile("Get_Hist_test.root", "Recreate"); f_func1->SetParameter(0, 5); f_func1->Draw("surf2"); TH2D *h_func1 = (TH2D*)f_func1->GetHistogram(); h_func1->SetName("h_func1"); f_func2->SetParameter(0, 5); f_func2->Draw("surf2"); TH2D *h_func2 = (TH2D*)f_func2->GetHistogram(); h_func2->SetName("h_func2"); TF2 *f_func1_func2 = new TF2("f_func1_func2", f_f1_f2, -4, 4, -4, 4, 2); f_func1_func2->SetParameters(5, 5); f_func1_func2->Draw("surf2"); f_func1_func2->SetNpx(500); f_func1_func2->SetNpy(500); TH2D *h_func1_func2 = (TH2D*)f_func1_func2->GetHistogram(); h_func1->Write(); h_func2->Write(); h_func1_func2->Write(); } double f1(double *x, double *par) { return par[0]*sin(x[0]*x[1]); } double f2(double *x, double *par) { return par[0] + x[0]*x[0]*x[1]*x[1]; } double f_f1_f2(double *x, double *par) { f_func1->SetParameter(0, par[0]); f_func2->SetParameter(0, par[1]); return f_func1->Eval(x[0], x[1])/f_func2->Eval(x[0], x[1]); }