Hi, It is currently not possible to 'combine' custom function using the TFormula parser. I.e. in your example: TF1 *f3 = new TF1("f3",f1*f2,xminFunc3,xmaxFunc3,NparsFunc1+NparsFunc2); will not work. Also TF1 *f3 = new TF1("f3",Func1*Func2,xminFunc3,xmaxFunc3,NparsFunc1+NparsFunc2); is illegal C++. You need to do: Double_t Func3(Double_t *x,Double_t *pars) { ... Func1(...,&par[0] ... Func2(...,...&par[NparsFunc1]) } and TF1 *f3 = new TF1("f3",Func3,xminFunc3,xmaxFunc3,NparsFunc1+NparsFunc2); Cheers, Philippe. -----Original Message----- From: owner-about-root@listserv.fnal.gov [mailto:owner-about-root@listserv.fnal.gov]On Behalf Of Stilianos Kesisoglou Sent: Tuesday, February 24, 2004 2:59 AM To: roottalk@root.cern.ch; about-root@fnal.gov Subject: combining custom functions Hi, Is it possible to use custom made functions on ROOT the same way that we use the canned ones? For example: a) I define first : Double_t Func1(Double_t *x,Double_t *pars) { <my function here> } Double_t Func2(Double_t *x,Double_t *pars) { <my function here> } b) then load the functions: .L Func1.C .L Func2.C c) and then I do: TF1 *f1 = new TF1("f1",Func1,xminFunc1,xmaxFunc1,NparsFunc1); TF1 *f2 = new TF1("f2",Func2,xminFunc2,xmaxFunc2,NparsFunc2); f1->Draw(); or f2->Draw(); The above works well. But when I try to do: TF1 *f1 = new TF1("f1",Func1,xminFunc1,xmaxFunc1,NparsFunc1); TF1 *f2 = new TF1("f2",Func2,xminFunc2,xmaxFunc2,NparsFunc2); TF1 *f3 = new TF1("f3",f1*f2,xminFunc3,xmaxFunc3,NparsFunc1+NparsFunc2); f3->Draw(); It fails with a message that the function f3 could not be compiled. Is it possible to make the above code to work. I would like to be able to load a set of functions and then decide on the fly what is the combination I want. I would really like to avoid definning a third function. Also is it possible to make the f3 directly i.e: TF1 *f3 = new TF1("f3",Func1*Func2,xminFunc3,xmaxFunc3,NparsFunc1+NparsFunc2); or something like that avoiding the definition of f1 and f2? Thanks! Stelios.
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET