#include #if !defined(__CINT__) || defined(G__DICTIONARY) #include "Minuit2/FunctionMinimum.h" #include "Minuit2/MnHesse.h" #include "Minuit2/MnUserParameterState.h" #include "Minuit2/MnPrint.h" #include "Minuit2/MnUserFcn.h" #include "Minuit2/MnMigrad.h" #include "Minuit2/MnMinos.h" #include "Minuit2/MnContours.h" #include "Minuit2/MnPlot.h" #include "Minuit2/ContoursError.h" #endif #include "NeutronMultiFcn.h" #include #include #include #include #include #include #include #include #include "TF1.h" #include "TH1D.h" using namespace ROOT::Minuit2; double nm(double *x, double* par) { double xx = *x; NeutronMulti nm(par[0],par[1],par[2],par[3]); return nm(xx); } int DemoNMSim(){ std::ifstream inpfile("F1.dat"); // TH1D* h1 = new TH1D("h1","h2",100,0,20); std::vector the_E; std::vector the_Y; std::vector the_Yer; int i=0; TCanvas C1; TFile *file = new TFile("myfile.root", "recreate"); TH1D* his = new TH1D("myhis","myhis",40,0,20); while(inpfile.good()) { i++; double en =0; double yi =0; double yerr =0; inpfile >> en >> yi >> yerr ; the_E.push_back(en); the_Y.push_back(yi); the_Yer.push_back(yerr); cout<GetXaxis(); for(unsigned int i=0; i!=the_E.size();i++){ double en = the_E[i]; int bin = xaxis->FindBin(en); his->SetBinContent(bin, the_Y[i]); his->SetBinError(bin,the_Yer[i]); } // his->Draw(); std::cout<<"***************"< par; par.push_back(ta1);par.push_back(ta2);par.push_back(tt1); par.push_back(tt2); cout<SetParameters(par[0],par[1],par[2],par[3]); f1->SetParameters(2.5,3.4412901,2.5307639,2.504341); C1.cd(); // myHist->GetYaxis()->SetRangeUser(1.,1e5); his->Draw("e"); f1->Draw("same"); file->cd(); C1.SaveAs("tt.root"); his->Write(); file->Close(); return 0; }