Hi,
I try to create several TF1 from the same function. Below I attached
two examples. The example "FuncTest2" works as expected.
The example FuncTest creates only the first TF1 Object
correctly. All other TF1 created contain an fMethod pointer
pointig to NULL, and therefor cant be evaluated by root.
Any Ideas ?
Root Version 2.23 11 on SuSE Linux 6.2 (egcs)
//Double_t (*Fun)(Double_t*, Double_t*);
Double_t FitFunc(Double_t* x, Double_t* par){
Double_t xx =x[0];
Double_t value =
par[0]*TMath::Exp(-(xx-par[1])*(xx-par[1])/ (2 * par[2]* par[2]));
return value;
}
//Fun = FitFunc;
FuncTest2(){
TCanvas* MyCanvas = new
TCanvas("MyCanvas","MyCanvas",100,100,400,400);
TF1* Landau1 = new TF1("Landau1",FitFunc,0,53,3);
TF1* Landau2 = new TF1("Landau2",FitFunc,0,53,3);
Double_t Params[3] = {1,1,1};
Landau1->SetParameters(Params);
Landau2->SetParameters(Params);
MyCanvas->Divide(1,2);
MyCanvas->cd(1);
Landau1->Draw();
MyCanvas->cd(2);
Landau2->Draw();
}
FuncTest(){
//gROOT->LoadMacro("../DecayEnergy/FitFunc.C");
TCanvas* MyCanvas = new
TCanvas("MyCanvas","MyCanvas",100,100,400,400);
Char_t FuncName[255];
TF1* Landau[20];
for(Int_t i =0; i<3; i++){
sprintf(FuncName,"Landau%i",i);
Landau[i] = new TF1(FuncName,FitFunc,0,53,3);
for(Int_t j = 0; j< 3; j++){
Landau[i]->SetParameter(j,1);
//Landau[i]->Dump();
}
Landau[i]->Draw();
MyCanvas->Update();
getchar();
}
}
--
Norbert Danneberg
ETH Zurich - Institute for Particle Physics
Laboratory for Nuclear Physics Phone.: +41-1-633-2034
Hoenggerberg Fax.: +41-1-633-1067
CH-8093 Zurich
ETH Zurich - Institute for Particle Physics
Paul Scherrer Institute Phone.: +41-56-310-3284
CH-5232 Villigen PSI Fax.: +41-56-310-4362
email: Norbert.Danneberg@psi.ch
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:18 MET