# Evaluation value from a function

I have a function eff = exp[c0+c1log(x)+c2(log(x))**2]

The input is like this :

x y ey

450 16770 515
1600 10924 634
2453 8538 1043
2904 6438 604
4083 4719 828
5691 2676 456
6124 2275 318
6575 2115 353

Now I fit this data using abobe function and get value of c0 , c1 , c2 .

Now I want to fix value of c0, c1 , c2 and want to get value of eff for a given x ?

Please tell me how to do it ?

regards

``````{
TF1 *eff = new TF1("eff",
"TMath::Exp([c0]) + [c1] / TMath::Log(x) + [c2] * TMath::Sq(TMath::Log(x))",
100., 10000.);
// eff->Print();
eff->SetNpx(1000);
eff->SetParameters(1., 1., 1.);
// eff->Draw();
Double_t x[]  = {  450.,  1600., 2453., 2904., 4083., 5691., 6124., 6575.};
Double_t y[]  = {16770., 10924., 8538., 6438., 4719., 2676., 2275., 2115.};
Double_t ey[] = {  515.,   634., 1043.,  604.,  828.,  456.,  318.,  353.};
UInt_t n = sizeof(x) / sizeof(Double_t);
TGraphErrors *g = new TGraphErrors(n, x, y, 0, ey);
g->SetTitle("Efficiency;x;eff");
g->Draw("A*");
eff->SetParameters(10., -1300., -380.); // set "reasonable" initial values
g->Fit(eff, "R"); // use the range specified in the function range
std::cout << "c0 = " << eff->GetParameter(0) << " +- " << eff->GetParError(0) << std::endl;
std::cout << "c1 = " << eff->GetParameter(1) << " +- " << eff->GetParError(1) << std::endl;
std::cout << "c2 = " << eff->GetParameter(2) << " +- " << eff->GetParError(2) << std::endl;
std::cout << "eff(1000.) = " << eff->Eval(1000.) << std::endl;
std::cout << "eff(5000.) = " << eff->Eval(5000.) << std::endl;
}
``````

Thank you very much .

Could you please tell me how do I can get errors of efficiency ? Here there is no way to evaluate errors ?

regards

I donâ€™t have any simple solution. Maybe @moneta knows some trick.

I have another problem . I fit the data points using the above functions . Now I want to fix c1 , c2 and keep c0 as free variable.

How do I can fit another set of data points using this function where c1 , c2 are fixed ?

Thanks
`eff->FixParameter(1, some_c1_value); eff->FixParameter(2, some_c2_value); g->Fit(eff, "R");`