#include #include #include #include #include #include "TCanvas.h" #include "TF1.h" #include "TH1.h" #include "TFile.h" #include "TMinuit.h" #include "TEllipse.h" double myfun1(double* x, double* par){ double X =x[0]; return par[0]*TMath::Exp((-pow((X-par[1]),3)/pow(par[2],2))-(par[3]*(X-par[1])/par[2]));// } double firstexpo(double* x, double* par){ double X =x[0]; // return TMath::Exp(par[0]+(par[1]*X)); return (par[1]*X)+par[0]; } double lastexpo(double* x, double* par){ double X =x[0]; // return TMath::Exp(par[0]+(par[1]*X)); return (par[1]*X)+par[0]; } double myfun(double* x, double* par){ double X =x[0]; return (TMath::Sqrt((par[0]*par[0])-((X - par[1])*(X - par[1]))/((1-par[2])*(1-par[2])))); } double Ellip(double* x, double* par){ double X =x[0]; return (par[0]*TMath::Sqrt(1-((X - par[1])*(X - par[1]))/(par[2]*par[2]))); } double totalfun(double* x, double* par){ double X =x[0]; return firstexpo(x,par)+ myfun(x,&par[2])+ lastexpo(x,&par[5]); } void FitSKAN(){ for(int i = 1; i<16; i+=2) { cout<< "value if the loop ::::::: "<Get("Graph0"); //TF1 *fHisto = (TCanvas*)fin->Get("Graph0"); TGraph *fHis = (TGraph*)file->FindObjectAny("GRAPH1"); TF1 *func1 =new TF1("func1",firstexpo, 60, 80, 2); func1->SetParameters(-11,2); // func1->SetParLimits(0,-265,-200); // func1->SetParLimits(1,-2.6,-2.4); TF1 *func2 =new TF1("func2",lastexpo, 89, 100, 2); func2->SetParameters(150,-2.5); // func2->SetParLimits(0,1000,600); // func2->SetParLimits(1,-2.6,-2.4); TF1 *func =new TF1("func",myfun, 79.8,89.5,3); func->SetParameters(7350,2,0.8); func->SetParLimits(0,1,73600); func->SetParLimits(1,1,201); func->SetParLimits(2,0.8,1); bw->SetParLimits(5,0.2,2); c1->cd(); // curve->Draw(); fHis->Draw("AP"); fHis->Fit(func1,"R+"); fHis->Fit(func2,"R+"); fHis->Fit(func,"R+"); TF1 *total = new TF1("total",totalfun,60,100,7); Double_t par[7]; func1->GetParameters(&par[0]); func->GetParameters(&par[2]); func2->GetParameters(&par[5]); total->SetParameters(par); fHis->Fit(total,"R+"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// Double_t ax[201],ay[201], xpar[201], ypar[201]; Int_t n; double center; n=fHis->GetN(); cout<GetPoint(i,ax[i],ay[i]); if(ay[i] > 1000 ) { fHis->GetPoint(i,xpar[i],ypar[i]); ypar[i] = ay[i]; cout<