In the code given below, I have two functions fnc1, which is a parameter dependent function, and fnc2, which is independent of any parameters. A third function fnc12 uses this two function to do some mathematical operation. The problem is that: I want the form of function fnc2 to be retained in memory since it is parameter independent so that I need not call it again and again for different parameters of fnc1.
///////////////////code
#include <iostream>
#include "TROOT.h"
#include "TSystem.h"
#include "TMath.h"
#include "TF1.h"
using namespace std;
TF1 *f1, *f2, *f3, *fn23;
Double_t fnc1(Double_t *x,Double_t *par){
return par[0]*x[0];
}
Double_t fnc2(Double_t *x,Double_t *par){
Double_t pp=4*pow(x[0],3);
return pp;
}
Double_t fnc3(Double_t *x,Double_t *par){
Double_t pp=f2->Derivative(x[0]);
return pp;
}
Double_t fnc12(Double_t *x,Double_t *par){
return f1->Eval(x[0]) * f2->Derivative(x[0]);
}
void t3(){
f1 = new TF1 ("fn2",fnc1,0,10,2);
f2 = new TF1 ("fn2",fnc2,0,10,0);
fn12 = new TF1("fn12", fnc12, 0, 10., 0.);
string sss;
sss = f2->GetExpFormula( "p" );//not working
cout<<"sss = "<<sss<<endl;
for(int i=0;i<10;i++){
f1->SetParameters(i*1.,0);
Double_t result=fn12->Integral(0,1);
cout<<"i = "<<i<<" result = "<<result<<endl;
}
}
//////////////////
Thanks in advance