Hi Petar, The definition of a new function using predefined functions work only in the case where the already defined function is defined with the string method (not a CINT interpreted function or a compiled function). If you look at the tutorial nr 16 at URL: http://root.cern.ch/root/html/examples/backsig.C.html you will see an example where you can combine functions in a very simple way. Rene Brun Petar Maksimovic wrote: > > Hi Rooters, > > I would like to be able to combine TF1 objects into compound > functions, just like one can do with the TFormula objects. > Let me remind of you of an example that was bandied about > this list a few months ago: > > Rene Brun wrote: > > Hi Thierry, > > I have no problems executing your macro. I have made slight changes > > to show two functions on the same graph. > > A similar example is given in tutorials/fillrandom.C > > I assume you run with 2.00/13 or 2.20. > > > > Rene Brun > > > > { > > gROOT->Reset(); > > TFormula *pomeron = new > > TFormula("pomeron","[0]*pow((x-0.939*0.939)/1.878,[1])"); > > TFormula *f = new > > TFormula("f","([2]*pow((x-0.939*0.939)/1.878,[3]))"); > > TF1 *total = new TF1("total","pomeron + f",1,20); > > total->SetParameters(1,2,1.5,2.4); > > total->Draw(); > > TF1 *one = new TF1("one","pomeron",1,20); > > one->SetParameters(1,2,1.5); > > one->Draw("same"); > > } > > What I have in mind is to be able to use TF1's associated with > user-defined functions (a.k.a. "type C"). Since the above example works, > and TF1 *is a* TFormula, I would naively expect that the following > example should work as well: > > -------------8<-------------------------------------------- > Double_t internalFunA(Double_t *x, Double_t *par) > { > return x[0]*0.1 + 5.0; > } > > Double_t internalFunB(Double_t *x, Double_t *par) > { > return x[0]*x[0]*77; > } > > void test(void) > { > TF1 myFuncA("myA", internalFunA, 0.0, 0.4, 1); // myA is a TFormula > TF1 myFuncB("myB", internalFunB, 0.0, 0.4, 1); // myB is a TFormula > TF1 myFuncAB("myAB", "myA + myB", 0.0, 0.4 ); // this doesn't work > } > -------------8<-------------------------------------------- > > However it fails when trying to construct myFuncAB: > > *ERROR 26 : > Unknown name : "myA" > > Am I doing something wrong here? > > To summarize: > - it would be really nice to be able to do something like this (so > that one can build very complex fits by building functions from > smaller -- but also non-trivial -- functions) > > - if TF1 is a TFormula, I would expect this to work > > I might be missing something, and perhaps the above behavior is > expected. If that's so, please let me know how one can get > around it... > > Thanks a lot! > > Petar
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:30 MET