Re: "Unknown function" error message ...

Rene Brun (Rene.Brun@cern.ch)
Mon, 18 Jan 1999 09:47:32 +0100


David d'Enterria wrote:
>
> Hi everybody,
>
> I am fitting with different functions an histogram:
>
> h_en_cm_photon.Draw("e1")
> c1.SetLogy()
> h_en_cm_photon.Fit("expo","R","EI",60,120)
> TF1 *Au_fit_direct = new TF1(*(h_en_cm_photon.GetFunction("expo")))
> Au_fit_direct.SetName("Au_fit_direct")
> Au_fit_direct.SetRange(0,200);
> Au_fit_direct.Draw("e1same")
> TH1F *Au_direct = new TH1F(*(Au_fit_direct.GetHistogram()))
>
> TH1F *Au_direct_subs = new
> TH1F("Au_direct_subs","Au_direct_subs",h_en_cm_photon.GetNbinsX(),0,200)
>
> Au_direct_subs.Sumw2();
> Au_direct_subs.Add(h_en_cm_photon,Au_direct,1,-1);
> Au_direct_subs.Draw("e1")
> Au_direct_subs.Fit("expo","R","EI",30,50)
> TF1 *Au_fit_therm = new TF1(*(Au_direct_subs.GetFunction("expo")))
> Au_fit_therm.SetRange(0,200);
> Au_fit_therm.SetName("Au_fit_therm")
> Au_fit_therm.Draw("e1same")
> TH1F *Au_therm = new TH1F(*(Au_fit_therm.GetHistogram()))
> Au_therm.Draw("e1same")
>
> h_en_cm_photon.Draw("e1")
> Au_direct.Draw("e1same")
> Au_therm.Draw("e1same")
> h_en_cm_photon.Fit("Au_fit_direct + Au_fit_therm","R","",10,25)
>
> Everything works as expected but the last instruction gives:
> "Unknown function: Au_fit_direct + Au_fit_therm"
>
> When, alternatively, trying to define a new function from the existent
> ones via :
> TF1 *Au_fit_total = new TF1("Au_fit_direct + Au_fit_therm")
> I get "Error: illegal pointer to class object Au_fit_total" when trying
> to draw it (Au_fit_total.Draw())....
>
> Briefly, I don't get to know how to operate with functions created via
> histo.GetFunction() to create new functions or to use them to fit
> histograms .... and the Class Description for TFormula and TF1 (as well
> as the different examples in the web) don't give me an answer (as far as
> I know) ....
>
> So, where I'm wrong ?
>

Hi David,
This syntax is currently not supported by TF1.
For fitting additions of multiple functions, see an example at URL:
http://root.cern.ch/root/html/examples/backsig.C.html

Rene Brun