Hi, I found that the TF3 class constructor TF3::TF3(const char* name, const char* formula, Double_t xmin = 0, Double_t xmax = 1, Double_t ymin = 0, Double_t ymax = 1, Double_t zmin = 0, Double_t zmax = 1) doesn't work in root-3.05.07: <root-session> root [0] f3 = new TF3("f3", "x + y + z") Error in <TF1::TF1>: function: f3/x + y + z has 3 parameters instead of 1 (class TF3*)0x88f7a18 root [1] f3_2 = new TF3("f3_2", "x + y") Error in <TF1::TF1>: function: f3_2/x + y has 2 parameters instead of 1 Error in <TF3::TF3>: function: f3_2/x + y has 2 parameters instead of 3 (class TF3*)0x88fc040root [2] f3_1 = new TF3("f3_1", "x") Error in <TF3::TF3>: function: f3_1/x has 1 parameters instead of 3 (class TF3*)0x88ee978root [3] f3_0 = new TF3("f3_0", "1") Error in <TF3::TF3>: function: f3_0/1 has 1 parameters instead of 3 (class TF3*)0x88fc6a0 </root-session> There is a note in the file http://root.cern.ch/root/html/examples/V3.05.txt.html possible related to the problem 2003-07-08 08:56 brun * hist/src/: TF1.cxx, TF2.cxx, TF3.cxx: Add protections in the constructors with a formula in case the dimension of the formula does not match the class. The object is declared Zombie. I think TF1 design conflicts with the TF1 <- TF2 <- TF3 inheritance sequence. TF1 depends on relation between xmin and xmax: <file name="hist/src/TF1.cxx"> // ... // line 156 TF1::TF1(const char *name,const char *formula, Double_t xmin, Double_t xmax) :TFormula(name,formula), TAttLine(), TAttFill(), TAttMarker() // ... // line 171 if (xmin < xmax ) { fXmin = xmin; fXmax = xmax; } else { fXmin = xmax; //when called from TF2,TF3 fXmax = xmin; } // ... </file> First xmin <-> xmax exchange: <file name="hist/src/TF2.cxx"> // ... // line 52 TF2::TF2(const char *name,const char *formula, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax) :TF1(name,formula,xmax,xmin) // ... </file> Second swap xmin and xmax: <file name="hist/src/TF3.cxx"> // ... // line 38 TF3::TF3(const char *name,const char *formula, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax) :TF2(name,formula,xmax,xmin,ymin,ymax) // ... </file> Now xmin < xmax again. The TF1 constructor emits a warning message because it arguments look like in 1D case. Maksim Nikulin
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:14 MET