29 class TF2 :
public TF1 {
39 TF2(
const char *name,
const char *formula, Double_t xmin=0, Double_t xmax=1, Double_t ymin=0, Double_t ymax=1, Option_t * opt =
nullptr);
41 TF2(
const char *name, Double_t (*fcn)(Double_t *, Double_t *), Double_t xmin=0, Double_t xmax=1, Double_t ymin=0, Double_t ymax=1, Int_t npar=0,Int_t ndim = 2);
42 TF2(
const char *name, Double_t (*fcn)(
const Double_t *,
const Double_t *), Double_t xmin=0, Double_t xmax=1, Double_t ymin=0, Double_t ymax=1, Int_t npar=0, Int_t ndim = 2);
47 TF2(
const char *name, ROOT::Math::ParamFunctor f, Double_t xmin = 0, Double_t xmax = 1, Double_t ymin = 0, Double_t ymax = 1, Int_t npar = 0, Int_t ndim = 2);
52 template <
class PtrObj,
typename MemFn>
53 TF2(
const char *name,
const PtrObj& p, MemFn memFn, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Int_t npar, Int_t ndim = 2) :
54 TF1(name,p,memFn,xmin,xmax,npar,ndim),
55 fYmin(ymin), fYmax(ymax), fNpy(30), fContour(0)
60 template <
class PtrObj,
typename MemFn>
61 TF2(
const char *name,
const PtrObj& p, MemFn memFn, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Int_t npar,
const char * ,
const char *) :
62 TF1(name,p,memFn,xmin,xmax,npar,2),
63 fYmin(ymin), fYmax(ymax), fNpy(30), fContour(0)
70 template <
typename Func>
71 TF2(
const char *name, Func f, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Int_t npar,Int_t ndim = 2) :
72 TF1(name,f,xmin,xmax,npar,ndim),
73 fYmin(ymin), fYmax(ymax), fNpy(30), fContour(0)
78 template <
typename Func>
79 TF2(
const char *name, Func f, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Int_t npar,
const char *) :
80 TF1(name,f,xmin,xmax,npar,2),
81 fYmin(ymin), fYmax(ymax), fNpy(30), fContour(0)
88 TF2 &operator=(
const TF2& rhs);
90 virtual void Copy(TObject &f2)
const;
91 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
92 virtual void Draw(Option_t *option=
"");
93 virtual TF1 *DrawCopy(Option_t *option=
"")
const;
94 virtual TObject *DrawDerivative(Option_t * =
"al") {
return 0;}
95 virtual TObject *DrawIntegral(Option_t * =
"al") {
return 0;}
97 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
98 virtual Int_t GetContour(Double_t *levels=0);
99 virtual Double_t GetContourLevel(Int_t level)
const;
100 Int_t GetNpy()
const {
return fNpy;}
101 virtual char *GetObjectInfo(Int_t px, Int_t py)
const;
102 Double_t GetRandom();
103 Double_t GetRandom(Double_t xmin, Double_t xmax);
104 virtual void GetRandom2(Double_t &xrandom, Double_t &yrandom);
106 virtual void GetRange(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax)
const;
107 virtual void GetRange(Double_t &xmin, Double_t &ymin, Double_t &zmin, Double_t &xmax, Double_t &ymax, Double_t &zmax)
const;
108 virtual Double_t GetSave(
const Double_t *x);
109 virtual Double_t GetMinimumXY(Double_t &x, Double_t &y)
const;
110 virtual Double_t GetMaximumXY(Double_t &x, Double_t &y)
const;
111 using TF1::GetMinimum;
112 using TF1::GetMaximum;
113 virtual Double_t GetMinimum(Double_t *x )
const;
114 virtual Double_t GetMaximum(Double_t *x )
const;
115 virtual Double_t GetYmin()
const {
return fYmin;}
116 virtual Double_t GetYmax()
const {
return fYmax;}
118 virtual Double_t Integral(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsrel=1.e-6);
119 virtual Bool_t IsInside(
const Double_t *x)
const;
120 virtual TH1 *CreateHistogram();
121 virtual void Paint(Option_t *option=
"");
122 virtual void Save(Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax);
123 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
124 virtual void SetNpy(Int_t npy=100);
125 virtual void SetContour(Int_t nlevels=20,
const Double_t *levels=0);
126 virtual void SetContourLevel(Int_t level, Double_t value);
127 virtual void SetRange(Double_t xmin, Double_t xmax);
128 virtual void SetRange(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax);
129 virtual void SetRange(Double_t xmin, Double_t ymin, Double_t zmin, Double_t xmax, Double_t ymax, Double_t zmax);
132 virtual Double_t Moment2(Double_t nx, Double_t ax, Double_t bx, Double_t ny, Double_t ay, Double_t by, Double_t epsilon=0.000001);
133 virtual Double_t CentralMoment2(Double_t nx, Double_t ax, Double_t bx, Double_t ny, Double_t ay, Double_t by, Double_t epsilon=0.000001);
135 virtual Double_t Mean2X(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsilon=0.000001) {
return Moment2(1,ax,bx,0,ay,by,epsilon);}
136 virtual Double_t Mean2Y(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsilon=0.000001) {
return Moment2(0,ax,bx,1,ay,by,epsilon);}
138 virtual Double_t Variance2X(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsilon=0.000001) {
return CentralMoment2(2,ax,bx,0,ay,by,epsilon);}
139 virtual Double_t Variance2Y(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsilon=0.000001) {
return CentralMoment2(0,ax,bx,2,ay,by,epsilon);}
141 virtual Double_t Covariance2XY(Double_t ax, Double_t bx, Double_t ay, Double_t by, Double_t epsilon=0.000001) {
return CentralMoment2(1,ax,bx,1,ay,by,epsilon);}
145 virtual Double_t FindMinMax(Double_t* x,
bool findmax)
const;
150 inline void TF2::SetRange(Double_t xmin, Double_t xmax)
151 { TF1::SetRange(xmin, xmax); }
152 inline void TF2::SetRange(Double_t xmin, Double_t ymin, Double_t, Double_t xmax, Double_t ymax, Double_t)
153 { SetRange(xmin, ymin, xmax, ymax); }