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