Its stupid mistake of mine i wrote Double_t instead of Double_t* have to sleep more:)
and as far as there was not error message or something i was thinking whats going on here there is one more problem i have which i’ll post here because its similar:
Double_t* f1(Double_t* x, Double_t* par)
{
return x[0];
}
Double_t* f2(Double_t* x, Double_t* par)
{
return x[0] + x[1];
}
Double_t* f3(Double_t* x, Double_t* par)
{
return x[0] + x[1] + x[2];
}
void
write()
{
TFile f("func.root", "recreate");
TF1* user_f1 = new TF1("user_f1", f1, -1, 1, 0);
TF2* user_f2 = new TF2("user_f2", f2, -1, 1, -1, 1, 0);
TF3* user_f3 = new TF3("user_f3", f3, -1, 1, -1, 1, -1, 1, 0);
TF1* form_f1 = new TF1("form_f1", "x", -1, 1);
TF2* form_f2 = new TF2("form_f2", "x + y", -1, 1, -1, 1);
TF3* form_f3 = new TF3("form_f3", "x + y + z", -1, 1, -1, 1, -1, 1);
cout << user_f1->Eval(-1) << ' '
<< user_f1->Eval(0) << ' '
<< user_f1->Eval(1) << endl
<< user_f2->Eval(0, -1) << ' '
<< user_f2->Eval(0, 0) << ' '
<< user_f2->Eval(0, 11) << endl
<< user_f3->Eval(0, 0, -1) << ' '
<< user_f3->Eval(0, 0, 0) << ' '
<< user_f3->Eval(0, 0, 11) << endl
<< form_f1->Eval(-1) << ' '
<< form_f1->Eval(0) << ' '
<< form_f1->Eval(1) << endl
<< form_f2->Eval(0, -1) << ' '
<< form_f2->Eval(0, 0) << ' '
<< form_f2->Eval(0, 11) << endl
<< form_f3->Eval(0, 0, -1) << ' '
<< form_f3->Eval(0, 0, 0) << ' '
<< form_f3->Eval(0, 0, 11) << endl;
user_f1->Write();
user_f2->Write();
user_f3->Write();
form_f1->Write();
form_f2->Write();
form_f3->Write();
f.Close();
}
void
read()
{
TFile f("func.root", "read");
TF1* user_f1 = (TF1*)f.Get("user_f1");
TF2* user_f2 = (TF2*)f.Get("user_f2");
TF3* user_f3 = (TF3*)f.Get("user_f3");
TF1* form_f1 = (TF1*)f.Get("form_f1");
TF2* form_f2 = (TF2*)f.Get("form_f2");
TF3* form_f3 = (TF3*)f.Get("form_f3");
cout << user_f1->Eval(-1) << ' '
<< user_f1->Eval(0) << ' '
<< user_f1->Eval(1) << endl
<< user_f2->Eval(0, -1) << ' '
<< user_f2->Eval(0, 0) << ' '
<< user_f2->Eval(0, 11) << endl
<< user_f3->Eval(0, 0, -1) << ' '
<< user_f3->Eval(0, 0, 0) << ' '
<< user_f3->Eval(0, 0, 11) << endl
<< form_f1->Eval(-1) << ' '
<< form_f1->Eval(0) << ' '
<< form_f1->Eval(1) << endl
<< form_f2->Eval(0, -1) << ' '
<< form_f2->Eval(0, 0) << ' '
<< form_f2->Eval(0, 11) << endl
<< form_f3->Eval(0, 0, -1) << ' '
<< form_f3->Eval(0, 0, 0) << ' '
<< form_f3->Eval(0, 0, 11) << endl;
}
and the output is:
root [32] write()
-1 0 1
-1 0 11
-1 0 11
-1 0 1
-1 0 11
-1 0 11
root [33] read()
-1 2.08167e-17 1
-1 -2.78785e-17 0
1130.79 1130.79 1130.79
-1 0 1
-1 0 11
-1 0 11
whats wrong?