1-Dim function class
First, TF1 instance can be initialized with user-defined Python functions. Given a generic Python callable, the following can performed: Second, after performing the initialisation with a Python functor, the TF1 instance can be evaluated using the Pythonized TF1.EvalPar function. The pythonization allows passing in 1D(single set of x variables) or 2D(a dataset) NumPy arrays. The following example shows how we can create a TF1 instance with a Python function and evaluate it on a dataset: The below example defines a TF1 instance using the ROOT constructor, and sets its parameters using the Pythonized TF1.SetParameters function (i.e. without evaluating).
Python interface
A TF1 object is a 1-Dim function defined between a lower and upper limit. The function may be a simple function based on a TFormula expression or a precompiled user function. The function may have associated parameters. TF1 graphics function is via the TH1 and TGraph drawing functions.
The following types of functions can be created:
Example a:
This creates a function of variable x with 2 parameters. The parameters must be initialized via:
Parameters may be given a name:
Example b:
gaus(0)
is a substitute for [0]*exp(-0.5*((x-[1])/[2])**2)
and (0)
means start numbering parameters at 0
. expo(3)
is a substitute for exp([3]+[4]*x)
.
Example on how using lambda to define a sum of two functions. Note that is necessary to provide the number of parameters
Consider the macro myfunc.C below:
In an interactive session you can do:
TF1 objects can reference other TF1 objects of type A or B defined above. This excludes CLing or compiled functions. However, there is a restriction. A function cannot reference a basic function if the basic function is a polynomial polN.
Example:
A TF1 can be created from any C++ class implementing the operator()(double *x, double *p). The advantage of the function object is that he can have a state and reference therefore what-ever other object. In this way the user can customize his function.
Example:
From C++11 we can use both std::function or even better lambda functions to create the TF1. As above the lambda must have the right signature but can capture whatever we want. For example we can make a TF1 from the TGraph::Eval function as shown below where we use as function parameter the graph normalization.
A TF1 can be created in this case from any member function of a class which has the signature of (double * , double *) and returning a double.
Example:
See also the tutorial math/exampleFunctor.C for a running example.
Classes | |
struct | TF1FunctorPointer |
struct | TF1FunctorPointerImpl |
Public Types | |
enum class | EAddToList { kDefault , kAdd , kNo } |
Add to list behavior. More... | |
enum | EStatusBits { kNotGlobal = (1ULL << ( 10 )) , kNotDraw = (1ULL << ( 9 )) } |
Public Types inherited from TObject | |
enum | { kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 , kBitMask = 0x00ffffff } |
enum | { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) } |
enum | EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) } |
enum | EStatusBits { kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) , kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 )) } |
Public Member Functions | |
TF1 () | |
TF1 default constructor. | |
TF1 (const char *name, const char *formula, Double_t xmin, Double_t xmax, Option_t *option) | |
Same constructor as above (for TFormula based function) but passing an option strings available options VEC - vectorize the formula expressions (not possible for lambda based expressions) NL - function is not stores in the global list of functions GL - function will be always stored in the global list of functions , independently of the global setting of TF1::DefaultAddToGlobalList. | |
TF1 (const char *name, const char *formula, Double_t xmin=0, Double_t xmax=1, EAddToList addToGlobList=EAddToList::kDefault, bool vectorize=false) | |
TF1 constructor using a formula definition. | |
template<class PtrObj , typename MemFn > | |
TF1 (const char *name, const PtrObj &p, MemFn memFn, Double_t xmin, Double_t xmax, Int_t npar, const char *, const char *, EAddToList addToGlobList=EAddToList::kDefault) | |
template<class PtrObj , typename MemFn > | |
TF1 (const char *name, const PtrObj &p, MemFn memFn, Double_t xmin, Double_t xmax, Int_t npar, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
TF1 (const char *name, Double_t xmin, Double_t xmax, Int_t npar, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
F1 constructor using name of an interpreted function. | |
TF1 (const char *name, Double_t(*fcn)(const Double_t *, const Double_t *), Double_t xmin=0, Double_t xmax=1, Int_t npar=0, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
Constructor using a pointer to (const) real function. | |
TF1 (const char *name, Double_t(*fcn)(Double_t *, Double_t *), Double_t xmin=0, Double_t xmax=1, Int_t npar=0, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
Constructor using a pointer to a real function. | |
template<typename Func > | |
TF1 (const char *name, Func f, Double_t xmin, Double_t xmax, Int_t npar, const char *, EAddToList addToGlobList=EAddToList::kDefault) | |
template<typename Func > | |
TF1 (const char *name, Func f, Double_t xmin, Double_t xmax, Int_t npar, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
TF1 (const char *name, ROOT::Math::ParamFunctor f, Double_t xmin=0, Double_t xmax=1, Int_t npar=0, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
Constructor using the Functor class. | |
template<class T > | |
TF1 (const char *name, std::function< T(const T *data, const Double_t *param)> &fcn, Double_t xmin=0, Double_t xmax=1, Int_t npar=0, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
template<class T > | |
TF1 (const char *name, T(*fcn)(const T *, const Double_t *), Double_t xmin=0, Double_t xmax=1, Int_t npar=0, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault) | |
Constructor using a pointer to function. | |
TF1 (const TF1 &f1) | |
~TF1 () override | |
TF1 default destructor. | |
virtual void | AddParameter (const TString &name, Double_t value) |
virtual Bool_t | AddToGlobalList (Bool_t on=kTRUE) |
Add to global list of functions (gROOT->GetListOfFunctions() ) return previous status (true if the function was already in the list false if not) | |
void | Browse (TBrowser *b) override |
Browse. | |
virtual Double_t | CentralMoment (Double_t n, Double_t a, Double_t b, const Double_t *params=nullptr, Double_t epsilon=0.000001) |
Return nth central moment of function between a and b (i.e the n-th moment around the mean value) | |
TObject * | Clone (const char *newname=nullptr) const override |
Make a complete copy of the underlying object. | |
void | Copy (TObject &f1) const override |
Copy this F1 to a new F1. | |
virtual TH1 * | CreateHistogram () |
virtual Double_t | Derivative (Double_t x, Double_t *params=nullptr, Double_t epsilon=0.001) const |
Returns the first derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas. | |
virtual Double_t | Derivative2 (Double_t x, Double_t *params=nullptr, Double_t epsilon=0.001) const |
Returns the second derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas. | |
virtual Double_t | Derivative3 (Double_t x, Double_t *params=nullptr, Double_t epsilon=0.001) const |
Returns the third derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas. | |
Int_t | DistancetoPrimitive (Int_t px, Int_t py) override |
Compute distance from point px,py to a function. | |
void | Draw (Option_t *option="") override |
Draw this function with its current attributes. | |
virtual TF1 * | DrawCopy (Option_t *option="") const |
Draw a copy of this function with its current attributes. | |
virtual TObject * | DrawDerivative (Option_t *option="al") |
Draw derivative of this function. | |
virtual void | DrawF1 (Double_t xmin, Double_t xmax, Option_t *option="") |
Draw function between xmin and xmax. | |
virtual TObject * | DrawIntegral (Option_t *option="al") |
Draw integral of this function. | |
virtual Double_t | Eval (Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const |
Evaluate this function. | |
virtual Double_t | EvalPar (const Double_t *x, const Double_t *params=nullptr) |
Evaluate function with given coordinates and parameters. | |
template<class T > | |
T | EvalPar (const T *x, const Double_t *params=nullptr) |
EvalPar for vectorized. | |
void | ExecuteEvent (Int_t event, Int_t px, Int_t py) override |
Execute action corresponding to one event. | |
virtual void | FixParameter (Int_t ipar, Double_t value) |
Fix the value of a parameter for a fit operation The specified value will be used in the fit and the parameter will be constant (nor varying) during fitting Note that when using pre-defined functions (e.g gaus), one needs to use the fit option 'B' to have the fix of the paramter effective. | |
Double_t | GetChisquare () const |
Return the Chisquare after fitting. See ROOT::Fit::FitResult::Chi2() | |
virtual TString | GetExpFormula (Option_t *option="") const |
virtual TFormula * | GetFormula () |
virtual const TFormula * | GetFormula () const |
virtual TH1 * | GetHistogram () const |
Return a pointer to the histogram used to visualise the function Note that this histogram is managed by the function and in same case it is automatically deleted when some TF1 functions are called such as TF1::SetParameters, TF1::SetNpx, TF1::SetRange It is then reccomended either to clone the return object or calling again teh GetHistogram function whenever is needed. | |
virtual const TObject * | GetLinearPart (Int_t i) const |
virtual Double_t | GetMaximum (Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const |
Returns the maximum value of the function. | |
virtual Double_t | GetMaximumStored () const |
virtual Double_t | GetMaximumX (Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const |
Returns the X value corresponding to the maximum value of the function. | |
TMethodCall * | GetMethodCall () const |
virtual Double_t | GetMinimum (Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const |
Returns the minimum value of the function on the (xmin, xmax) interval. | |
virtual Double_t | GetMinimumStored () const |
virtual Double_t | GetMinimumX (Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const |
Returns the X value corresponding to the minimum value of the function on the (xmin, xmax) interval. | |
virtual Int_t | GetNDF () const |
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed during a fit. | |
virtual Int_t | GetNdim () const |
virtual Int_t | GetNpar () const |
virtual Int_t | GetNpx () const |
virtual Int_t | GetNumber () const |
virtual Int_t | GetNumberFitPoints () const |
virtual Int_t | GetNumberFreeParameters () const |
Return the number of free parameters. | |
char * | GetObjectInfo (Int_t px, Int_t py) const override |
Redefines TObject::GetObjectInfo. | |
virtual Double_t | GetParameter (const TString &name) const |
virtual Double_t | GetParameter (Int_t ipar) const |
virtual Double_t * | GetParameters () const |
virtual void | GetParameters (Double_t *params) |
TObject * | GetParent () const |
virtual Double_t | GetParError (Int_t ipar) const |
Return value of parameter number ipar. | |
virtual const Double_t * | GetParErrors () const |
virtual void | GetParLimits (Int_t ipar, Double_t &parmin, Double_t &parmax) const |
Return limits for parameter ipar. | |
virtual const char * | GetParName (Int_t ipar) const |
virtual Int_t | GetParNumber (const char *name) const |
virtual Double_t | GetProb () const |
Return the fit probability. | |
virtual Int_t | GetQuantiles (Int_t n, Double_t *xp, const Double_t *p) |
Compute Quantiles for density distribution of this function. | |
virtual Double_t | GetRandom (Double_t xmin, Double_t xmax, TRandom *rng=nullptr, Option_t *opt=nullptr) |
Return a random number following this function shape in [xmin,xmax]. | |
virtual Double_t | GetRandom (TRandom *rng=nullptr, Option_t *opt=nullptr) |
Return a random number following this function shape. | |
virtual void | GetRange (Double_t &xmin, Double_t &xmax) const |
Return range of a 1-D function. | |
virtual void | GetRange (Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) const |
Return range of a 2-D function. | |
virtual void | GetRange (Double_t &xmin, Double_t &ymin, Double_t &zmin, Double_t &xmax, Double_t &ymax, Double_t &zmax) const |
Return range of function. | |
virtual Double_t | GetSave (const Double_t *x) |
Get value corresponding to X in array of fSave values. | |
virtual Double_t | GetVariable (const TString &name) |
virtual Double_t | GetX (Double_t y, Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const |
Returns the X value corresponding to the function value fy for (xmin<x<xmax). | |
TAxis * | GetXaxis () const |
Get x axis of the function. | |
virtual Double_t | GetXmax () const |
virtual Double_t | GetXmin () const |
TAxis * | GetYaxis () const |
Get y axis of the function. | |
TAxis * | GetZaxis () const |
Get z axis of the function. (In case this object is a TF2 or TF3) | |
virtual void | GradientPar (const Double_t *x, Double_t *grad, Double_t eps=0.01) |
Compute the gradient wrt parameters If the TF1 object is based on a formula expression (TFormula) and TFormula::GenerateGradientPar() has been successfully called automatic differentiation using CLAD is used instead of the default numerical differentiation. | |
template<class T > | |
void | GradientPar (const T *x, T *grad, Double_t eps=0.01) |
virtual Double_t | GradientPar (Int_t ipar, const Double_t *x, Double_t eps=0.01) |
Compute the gradient (derivative) wrt a parameter ipar. | |
template<class T > | |
T | GradientPar (Int_t ipar, const T *x, Double_t eps=0.01) |
template<class T > | |
void | GradientParTempl (const T *x, T *grad, Double_t eps=0.01) |
template<class T > | |
T | GradientParTempl (Int_t ipar, const T *x, Double_t eps=0.01) |
Bool_t | HasSave () const |
Return true if function has data in fSave buffer. | |
virtual void | InitArgs (const Double_t *x, const Double_t *params) |
Initialize parameters addresses. | |
virtual Double_t | Integral (Double_t a, Double_t b, Double_t epsrel=1.e-12) |
IntegralOneDim or analytical integral. | |
virtual Double_t | IntegralError (Double_t a, Double_t b, const Double_t *params=nullptr, const Double_t *covmat=nullptr, Double_t epsilon=1.E-2) |
Return Error on Integral of a parametric function between a and b due to the parameter uncertainties and their covariance matrix from the fit. | |
virtual Double_t | IntegralError (Int_t n, const Double_t *a, const Double_t *b, const Double_t *params=nullptr, const Double_t *covmat=nullptr, Double_t epsilon=1.E-2) |
Return Error on Integral of a parametric function with dimension larger than one between a[] and b[] due to the parameters uncertainties. | |
virtual Double_t | IntegralFast (Int_t num, Double_t *x, Double_t *w, Double_t a, Double_t b, Double_t *params=nullptr, Double_t epsilon=1e-12) |
Gauss-Legendre integral, see CalcGaussLegendreSamplingPoints. | |
virtual Double_t | IntegralMultiple (Int_t n, const Double_t *a, const Double_t *b, Double_t epsrel, Double_t &relerr) |
See more general prototype below. | |
virtual Double_t | IntegralMultiple (Int_t n, const Double_t *a, const Double_t *b, Int_t maxpts, Double_t epsrel, Double_t epsabs, Double_t &relerr, Int_t &nfnevl, Int_t &ifail) |
This function computes, to an attempted specified accuracy, the value of the integral. | |
virtual Double_t | IntegralMultiple (Int_t n, const Double_t *a, const Double_t *b, Int_t, Int_t maxpts, Double_t epsrel, Double_t &relerr, Int_t &nfnevl, Int_t &ifail) |
virtual Double_t | IntegralOneDim (Double_t a, Double_t b, Double_t epsrel, Double_t epsabs, Double_t &err) |
Return Integral of function between a and b using the given parameter values and relative and absolute tolerance. | |
TClass * | IsA () const override |
virtual Bool_t | IsEvalNormalized () const |
virtual Bool_t | IsInside (const Double_t *x) const |
return kTRUE if the point is inside the function range | |
virtual Bool_t | IsLinear () const |
virtual Bool_t | IsValid () const |
Return kTRUE if the function is valid. | |
bool | IsVectorized () |
virtual Double_t | Mean (Double_t a, Double_t b, const Double_t *params=nullptr, Double_t epsilon=0.000001) |
virtual Double_t | Moment (Double_t n, Double_t a, Double_t b, const Double_t *params=nullptr, Double_t epsilon=0.000001) |
Return nth moment of function between a and b. | |
template<class T > | |
T | operator() (const T *x, const Double_t *params=nullptr) |
virtual Double_t | operator() (Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const |
TF1 & | operator= (const TF1 &rhs) |
Operator =. | |
void | Paint (Option_t *option="") override |
Paint this function with its current attributes. | |
void | Print (Option_t *option="") const override |
This method must be overridden when a class wants to print itself. | |
virtual void | ReleaseParameter (Int_t ipar) |
Release parameter number ipar during a fit operation. | |
virtual void | Save (Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax, Double_t zmin, Double_t zmax) |
Save values of function in array fSave. | |
void | SavePrimitive (std::ostream &out, Option_t *option="") override |
Save primitive as a C++ statement(s) on output stream out. | |
virtual void | SetChisquare (Double_t chi2) |
virtual void | SetFitResult (const ROOT::Fit::FitResult &result, const Int_t *indpar=nullptr) |
Set the result from the fit parameter values, errors, chi2, etc... Optionally a pointer to a vector (with size fNpar) of the parameter indices in the FitResult can be passed This is useful in the case of a combined fit with different functions, and the FitResult contains the global result By default it is assume that indpar = {0,1,2,....,fNpar-1}. | |
template<typename Func > | |
void | SetFunction (Func f) |
template<class PtrObj , typename MemFn > | |
void | SetFunction (PtrObj &p, MemFn memFn) |
virtual void | SetMaximum (Double_t maximum=-1111) |
Set the maximum value along Y for this function In case the function is already drawn, set also the maximum in the helper histogram. | |
virtual void | SetMinimum (Double_t minimum=-1111) |
Set the minimum value along Y for this function In case the function is already drawn, set also the minimum in the helper histogram. | |
virtual void | SetNDF (Int_t ndf) |
Set the number of degrees of freedom ndf should be the number of points used in a fit - the number of free parameters. | |
void | SetNdim (Int_t ndim) |
virtual void | SetNormalized (Bool_t flag) |
virtual void | SetNpx (Int_t npx=100) |
Set the number of points used to draw the function. | |
virtual void | SetNumberFitPoints (Int_t npfits) |
virtual void | SetParameter (const TString &name, Double_t value) |
virtual void | SetParameter (Int_t param, Double_t value) |
virtual void | SetParameters (const Double_t *params) |
virtual void | SetParameters (double p0, double p1=TMath::QuietNaN(), double p2=TMath::QuietNaN(), double p3=TMath::QuietNaN(), double p4=TMath::QuietNaN(), double p5=TMath::QuietNaN(), double p6=TMath::QuietNaN(), double p7=TMath::QuietNaN(), double p8=TMath::QuietNaN(), double p9=TMath::QuietNaN(), double p10=TMath::QuietNaN()) |
Set parameter values. | |
virtual void | SetParent (TObject *p=nullptr) |
virtual void | SetParError (Int_t ipar, Double_t error) |
Set error for parameter number ipar. | |
virtual void | SetParErrors (const Double_t *errors) |
Set errors for all active parameters when calling this function, the array errors must have at least fNpar values. | |
virtual void | SetParLimits (Int_t ipar, Double_t parmin, Double_t parmax) |
Set lower and upper limits for parameter ipar. | |
virtual void | SetParName (Int_t ipar, const char *name) |
Set name of parameter number ipar. | |
virtual void | SetParNames (const char *name0="", const char *name1="", const char *name2="", const char *name3="", const char *name4="", const char *name5="", const char *name6="", const char *name7="", const char *name8="", const char *name9="", const char *name10="") |
Set up to 10 parameter names. | |
virtual void | SetRange (Double_t xmin, Double_t xmax) |
Initialize the upper and lower bounds to draw the function. | |
virtual void | SetRange (Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) |
virtual void | SetRange (Double_t xmin, Double_t ymin, Double_t zmin, Double_t xmax, Double_t ymax, Double_t zmax) |
virtual void | SetSavedPoint (Int_t point, Double_t value) |
Restore value of function saved at point. | |
void | SetTitle (const char *title="") override |
Set function title if title has the form "fffffff;xxxx;yyyy", it is assumed that the function title is "fffffff" and "xxxx" and "yyyy" are the titles for the X and Y axis respectively. | |
virtual void | SetVectorized (Bool_t vectorized) |
void | Streamer (TBuffer &) override |
Stream a class object. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
virtual void | Update () |
Called by functions such as SetRange, SetNpx, SetParameters to force the deletion of the associated histogram or Integral. | |
virtual Double_t | Variance (Double_t a, Double_t b, const Double_t *params=nullptr, Double_t epsilon=0.000001) |
Public Member Functions inherited from TNamed | |
TNamed () | |
TNamed (const char *name, const char *title) | |
TNamed (const TNamed &named) | |
TNamed copy ctor. | |
TNamed (const TString &name, const TString &title) | |
virtual | ~TNamed () |
TNamed destructor. | |
void | Clear (Option_t *option="") override |
Set name and title to empty strings (""). | |
TObject * | Clone (const char *newname="") const override |
Make a clone of an object using the Streamer facility. | |
Int_t | Compare (const TObject *obj) const override |
Compare two TNamed objects. | |
void | Copy (TObject &named) const override |
Copy this to obj. | |
virtual void | FillBuffer (char *&buffer) |
Encode TNamed into output buffer. | |
const char * | GetName () const override |
Returns name of object. | |
const char * | GetTitle () const override |
Returns title of object. | |
ULong_t | Hash () const override |
Return hash value for this object. | |
TClass * | IsA () const override |
Bool_t | IsSortable () const override |
void | ls (Option_t *option="") const override |
List TNamed name and title. | |
TNamed & | operator= (const TNamed &rhs) |
TNamed assignment operator. | |
void | Print (Option_t *option="") const override |
Print TNamed name and title. | |
virtual void | SetName (const char *name) |
Set the name of the TNamed. | |
virtual void | SetNameTitle (const char *name, const char *title) |
Set all the TNamed parameters (name and title). | |
virtual Int_t | Sizeof () const |
Return size of the TNamed part of the TObject. | |
void | Streamer (TBuffer &) override |
Stream an object of class TObject. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Public Member Functions inherited from TObject | |
TObject () | |
TObject constructor. | |
TObject (const TObject &object) | |
TObject copy ctor. | |
virtual | ~TObject () |
TObject destructor. | |
void | AbstractMethod (const char *method) const |
Use this method to implement an "abstract" method that you don't want to leave purely abstract. | |
virtual void | AppendPad (Option_t *option="") |
Append graphics object to current pad. | |
ULong_t | CheckedHash () |
Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object. | |
virtual const char * | ClassName () const |
Returns name of class to which the object belongs. | |
virtual void | Delete (Option_t *option="") |
Delete this object. | |
virtual void | DrawClass () const |
Draw class inheritance tree of the class to which this object belongs. | |
virtual TObject * | DrawClone (Option_t *option="") const |
Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1) . | |
virtual void | Dump () const |
Dump contents of object on stdout. | |
virtual void | Error (const char *method, const char *msgfmt,...) const |
Issue error message. | |
virtual void | Execute (const char *method, const char *params, Int_t *error=nullptr) |
Execute method on this object with the given parameter string, e.g. | |
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr) |
Execute method on this object with parameters stored in the TObjArray. | |
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
Issue fatal error message. | |
virtual TObject * | FindObject (const char *name) const |
Must be redefined in derived classes. | |
virtual TObject * | FindObject (const TObject *obj) const |
Must be redefined in derived classes. | |
virtual Option_t * | GetDrawOption () const |
Get option used by the graphics system to draw this object. | |
virtual const char * | GetIconName () const |
Returns mime type name of object. | |
virtual Option_t * | GetOption () const |
virtual UInt_t | GetUniqueID () const |
Return the unique object id. | |
virtual Bool_t | HandleTimer (TTimer *timer) |
Execute action in response of a timer timing out. | |
Bool_t | HasInconsistentHash () const |
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e. | |
virtual void | Info (const char *method, const char *msgfmt,...) const |
Issue info message. | |
virtual Bool_t | InheritsFrom (const char *classname) const |
Returns kTRUE if object inherits from class "classname". | |
virtual Bool_t | InheritsFrom (const TClass *cl) const |
Returns kTRUE if object inherits from TClass cl. | |
virtual void | Inspect () const |
Dump contents of this object in a graphics canvas. | |
void | InvertBit (UInt_t f) |
Bool_t | IsDestructed () const |
IsDestructed. | |
virtual Bool_t | IsEqual (const TObject *obj) const |
Default equal comparison (objects are equal if they have the same address in memory). | |
virtual Bool_t | IsFolder () const |
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). | |
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
R__ALWAYS_INLINE Bool_t | IsZombie () const |
void | MayNotUse (const char *method) const |
Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). | |
virtual Bool_t | Notify () |
This method must be overridden to handle object notification (the base implementation is no-op). | |
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
Use this method to declare a method obsolete. | |
void | operator delete (void *ptr) |
Operator delete. | |
void | operator delete (void *ptr, void *vp) |
Only called by placement new when throwing an exception. | |
void | operator delete[] (void *ptr) |
Operator delete []. | |
void | operator delete[] (void *ptr, void *vp) |
Only called by placement new[] when throwing an exception. | |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (const TObject &rhs) |
TObject assignment operator. | |
virtual void | Pop () |
Pop on object drawn in a pad to the top of the display list. | |
virtual Int_t | Read (const char *name) |
Read contents of object with specified name from the current directory. | |
virtual void | RecursiveRemove (TObject *obj) |
Recursively remove this object from a list. | |
void | ResetBit (UInt_t f) |
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
Save this object in the file specified by filename. | |
void | SetBit (UInt_t f) |
void | SetBit (UInt_t f, Bool_t set) |
Set or unset the user status bits as specified in f. | |
virtual void | SetDrawOption (Option_t *option="") |
Set drawing option for object. | |
virtual void | SetUniqueID (UInt_t uid) |
Set the unique object id. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
virtual void | SysError (const char *method, const char *msgfmt,...) const |
Issue system error message. | |
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
Int_t | TestBits (UInt_t f) const |
virtual void | UseCurrentStyle () |
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. | |
virtual void | Warning (const char *method, const char *msgfmt,...) const |
Issue warning message. | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
Write this object to the current directory. | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const |
Write this object to the current directory. | |
Public Member Functions inherited from TAttLine | |
TAttLine () | |
AttLine default constructor. | |
TAttLine (Color_t lcolor, Style_t lstyle, Width_t lwidth) | |
AttLine normal constructor. | |
virtual | ~TAttLine () |
AttLine destructor. | |
void | Copy (TAttLine &attline) const |
Copy this line attributes to a new TAttLine. | |
Int_t | DistancetoLine (Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2) |
Compute distance from point px,py to a line. | |
virtual Color_t | GetLineColor () const |
Return the line color. | |
virtual Style_t | GetLineStyle () const |
Return the line style. | |
virtual Width_t | GetLineWidth () const |
Return the line width. | |
virtual void | Modify () |
Change current line attributes if necessary. | |
virtual void | ResetAttLine (Option_t *option="") |
Reset this line attributes to default values. | |
virtual void | SaveLineAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1) |
Save line attributes as C++ statement(s) on output stream out. | |
virtual void | SetLineAttributes () |
Invoke the DialogCanvas Line attributes. | |
virtual void | SetLineColor (Color_t lcolor) |
Set the line color. | |
virtual void | SetLineColorAlpha (Color_t lcolor, Float_t lalpha) |
Set a transparent line color. | |
virtual void | SetLineStyle (Style_t lstyle) |
Set the line style. | |
virtual void | SetLineWidth (Width_t lwidth) |
Set the line width. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Public Member Functions inherited from TAttFill | |
TAttFill () | |
AttFill default constructor. | |
TAttFill (Color_t fcolor, Style_t fstyle) | |
AttFill normal constructor. | |
virtual | ~TAttFill () |
AttFill destructor. | |
void | Copy (TAttFill &attfill) const |
Copy this fill attributes to a new TAttFill. | |
virtual Color_t | GetFillColor () const |
Return the fill area color. | |
virtual Style_t | GetFillStyle () const |
Return the fill area style. | |
virtual Bool_t | IsTransparent () const |
virtual void | Modify () |
Change current fill area attributes if necessary. | |
virtual void | ResetAttFill (Option_t *option="") |
Reset this fill attributes to default values. | |
virtual void | SaveFillAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001) |
Save fill attributes as C++ statement(s) on output stream out. | |
virtual void | SetFillAttributes () |
Invoke the DialogCanvas Fill attributes. | |
virtual void | SetFillColor (Color_t fcolor) |
Set the fill area color. | |
virtual void | SetFillColorAlpha (Color_t fcolor, Float_t falpha) |
Set a transparent fill color. | |
virtual void | SetFillStyle (Style_t fstyle) |
Set the fill area style. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Public Member Functions inherited from TAttMarker | |
TAttMarker () | |
TAttMarker default constructor. | |
TAttMarker (Color_t color, Style_t style, Size_t msize) | |
TAttMarker normal constructor. | |
virtual | ~TAttMarker () |
TAttMarker destructor. | |
void | Copy (TAttMarker &attmarker) const |
Copy this marker attributes to a new TAttMarker. | |
virtual Color_t | GetMarkerColor () const |
Return the marker color. | |
virtual Size_t | GetMarkerSize () const |
Return the marker size. | |
virtual Style_t | GetMarkerStyle () const |
Return the marker style. | |
virtual void | Modify () |
Change current marker attributes if necessary. | |
virtual void | ResetAttMarker (Option_t *toption="") |
Reset this marker attributes to the default values. | |
virtual void | SaveMarkerAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1) |
Save line attributes as C++ statement(s) on output stream out. | |
virtual void | SetMarkerAttributes () |
Invoke the DialogCanvas Marker attributes. | |
virtual void | SetMarkerColor (Color_t mcolor=1) |
Set the marker color. | |
virtual void | SetMarkerColorAlpha (Color_t mcolor, Float_t malpha) |
Set a transparent marker color. | |
virtual void | SetMarkerSize (Size_t msize=1) |
Set the marker size. | |
virtual void | SetMarkerStyle (Style_t mstyle=1) |
Set the marker style. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Static Public Member Functions | |
static void | AbsValue (Bool_t reject=kTRUE) |
Static function: set the fgAbsValue flag. | |
static void | CalcGaussLegendreSamplingPoints (Int_t num, Double_t *x, Double_t *w, Double_t eps=3.0e-11) |
Type safe interface (static method) The number of sampling points are taken from the TGraph. | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Bool_t | DefaultAddToGlobalList (Bool_t on=kTRUE) |
Static method to add/avoid to add automatically functions to the global list (gROOT->GetListOfFunctions() ) After having called this static method, all the functions created afterwards will follow the desired behaviour. | |
static Double_t | DerivativeError () |
Static function returning the error of the last call to the of Derivative's functions. | |
static TF1 * | GetCurrent () |
Static function returning the current function being processed. | |
static void | InitStandardFunctions () |
Create the basic function objects. | |
static Bool_t | RejectedPoint () |
See TF1::RejectPoint above. | |
static void | RejectPoint (Bool_t reject=kTRUE) |
Static function to set the global flag to reject points the fgRejectPoint global flag is tested by all fit functions if TRUE the point is not included in the fit. | |
static void | SetCurrent (TF1 *f1) |
Static function setting the current function. | |
Static Public Member Functions inherited from TNamed | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Longptr_t | GetDtorOnly () |
Return destructor only flag. | |
static Bool_t | GetObjectStat () |
Get status of object stat flag. | |
static void | SetDtorOnly (void *obj) |
Set destructor only flag. | |
static void | SetObjectStat (Bool_t stat) |
Turn on/off tracking of objects in the TObjectTable. | |
Static Public Member Functions inherited from TAttLine | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TAttFill | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TAttMarker | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Width_t | GetMarkerLineWidth (Style_t style) |
Internal helper function that returns the line width of the given marker style (0 = filled marker) | |
static Style_t | GetMarkerStyleBase (Style_t style) |
Internal helper function that returns the corresponding marker style with line width 1 for the given style. | |
Protected Types | |
enum | EFType { kFormula = 0 , kPtrScalarFreeFcn , kInterpreted , kTemplVec , kTemplScalar , kCompositionFcn } |
Protected Types inherited from TObject | |
enum | { kOnlyPrepStep = (1ULL << ( 3 )) } |
Protected Member Functions | |
TF1 (EFType functionType, const char *name, Double_t xmin, Double_t xmax, Int_t npar, Int_t ndim, EAddToList addToGlobList, TF1Parameters *params=nullptr, TF1FunctorPointer *functor=nullptr) | |
General constructor for TF1. Most of the other constructors delegate on it. | |
Bool_t | ComputeCdfTable (Option_t *opt) |
Compute the cumulative function at fNpx points between fXmin and fXmax. | |
virtual TH1 * | DoCreateHistogram (Double_t xmin, Double_t xmax, Bool_t recreate=kFALSE) |
Create histogram with bin content equal to function value computed at the bin center This histogram will be used to paint the function A re-creation is forced and a new histogram is done if recreate=true. | |
void | DoInitialize (EAddToList addToGlobList) |
Common initialization of the TF1. | |
virtual Double_t | GetMinMaxNDim (Double_t *x, Bool_t findmax, Double_t epsilon=0, Int_t maxiter=0) const |
Find the minimum of a function of whatever dimension. | |
virtual void | GetRange (Double_t *xmin, Double_t *xmax) const |
Return range of a generic N-D function. | |
void | IntegrateForNormalization () |
Protected Member Functions inherited from TObject | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
Interface to ErrorHandler (protected). | |
void | MakeZombie () |
Protected Attributes | |
std::vector< Double_t > | fAlpha |
! Array alpha. for each bin in x the deconvolution r of fIntegral | |
std::vector< Double_t > | fBeta |
! Array beta. is approximated by x = alpha +beta*r *gamma*r**2 | |
Double_t | fChisquare {} |
Function fit chisquare. | |
std::unique_ptr< TF1AbsComposition > | fComposition |
Pointer to composition (NSUM or CONV) | |
std::unique_ptr< TFormula > | fFormula |
Pointer to TFormula in case when user define formula. | |
std::unique_ptr< TF1FunctorPointer > | fFunctor |
! Functor object to wrap any C++ callable object | |
std::vector< Double_t > | fGamma |
! Array gamma. | |
TH1 * | fHistogram {nullptr} |
! Pointer to histogram used for visualisation | |
std::vector< Double_t > | fIntegral |
! Integral of function binned on fNpx bins | |
Double_t | fMaximum {-1111} |
Maximum value for plotting. | |
std::unique_ptr< TMethodCall > | fMethodCall |
! Pointer to MethodCall in case of interpreted function | |
Double_t | fMinimum {-1111} |
Minimum value for plotting. | |
Int_t | fNDF {} |
Number of degrees of freedom in the fit. | |
Int_t | fNdim {} |
Function dimension. | |
Bool_t | fNormalized {false} |
Normalization option (false by default) | |
Double_t | fNormIntegral {} |
Integral of the function before being normalized. | |
Int_t | fNpar {} |
Number of parameters. | |
Int_t | fNpfits {} |
Number of points used in the fit. | |
Int_t | fNpx {100} |
Number of points used for the graphical representation. | |
std::unique_ptr< TF1Parameters > | fParams |
Pointer to Function parameters object (exists only for not-formula functions) | |
TObject * | fParent {nullptr} |
! Parent object hooking this function (if one) | |
std::vector< Double_t > | fParErrors |
Array of errors of the fNpar parameters. | |
std::vector< Double_t > | fParMax |
Array of upper limits of the fNpar parameters. | |
std::vector< Double_t > | fParMin |
Array of lower limits of the fNpar parameters. | |
std::vector< Double_t > | fSave |
Array of fNsave function values. | |
EFType | fType {EFType::kTemplScalar} |
Double_t | fXmax {-1111} |
Upper bounds for the range. | |
Double_t | fXmin {-1111} |
Lower bounds for the range. | |
Protected Attributes inherited from TNamed | |
TString | fName |
TString | fTitle |
Protected Attributes inherited from TAttLine | |
Color_t | fLineColor |
Line color. | |
Style_t | fLineStyle |
Line style. | |
Width_t | fLineWidth |
Line width. | |
Protected Attributes inherited from TAttFill | |
Color_t | fFillColor |
Fill area color. | |
Style_t | fFillStyle |
Fill area style. | |
Protected Attributes inherited from TAttMarker | |
Color_t | fMarkerColor |
Marker color. | |
Size_t | fMarkerSize |
Marker size. | |
Style_t | fMarkerStyle |
Marker style. | |
Static Protected Attributes | |
static std::atomic< Bool_t > | fgAbsValue |
static std::atomic< Bool_t > | fgAddToGlobList |
static TF1 * | fgCurrent = nullptr |
static Bool_t | fgRejectPoint = kFALSE |
Private Member Functions | |
void | DefineNSUMTerm (TObjArray *newFuncs, TObjArray *coeffNames, TString &fullFormula, TString &formula, int termStart, int termEnd, Double_t xmin, Double_t xmax) |
Helper functions for NSUM parsing. | |
template<class T > | |
T | EvalParTempl (const T *data, const Double_t *params=nullptr) |
Eval for vectorized functions. | |
int | TermCoeffLength (TString &term) |
Friends | |
template<class Func > | |
struct | ROOT::Internal::TF1Builder |
#include <TF1.h>
|
strong |
|
protected |
enum TF1::EStatusBits |
|
inlineprotected |
TF1::TF1 | ( | const char * | name, |
const char * | formula, | ||
Double_t | xmin = 0 , |
||
Double_t | xmax = 1 , |
||
EAddToList | addToGlobList = EAddToList::kDefault , |
||
bool | vectorize = false |
||
) |
TF1 constructor using a formula definition.
See TFormula constructor for explanation of the formula syntax.
See tutorials: fillrandom, first, fit1, formula1, multifit for real examples.
Creates a function of type A or B between xmin and xmax
if formula has the form "fffffff;xxxx;yyyy", it is assumed that the formula string is "fffffff" and "xxxx" and "yyyy" are the titles for the X and Y axis respectively.
Same constructor as above (for TFormula based function) but passing an option strings available options VEC - vectorize the formula expressions (not possible for lambda based expressions) NL - function is not stores in the global list of functions GL - function will be always stored in the global list of functions , independently of the global setting of TF1::DefaultAddToGlobalList.
TF1::TF1 | ( | const char * | name, |
Double_t | xmin, | ||
Double_t | xmax, | ||
Int_t | npar, | ||
Int_t | ndim = 1 , |
||
EAddToList | addToGlobList = EAddToList::kDefault |
||
) |
F1 constructor using name of an interpreted function.
Creates a function of type C between xmin and xmax. name is the name of an interpreted C++ function. The function is defined with npar parameters fcn must be a function of type:
Double_t fcn(Double_t *x, Double_t *params)
This constructor is called for functions of type C by the C++ interpreter.
TF1::TF1 | ( | const char * | name, |
Double_t(*)(Double_t *, Double_t *) | fcn, | ||
Double_t | xmin = 0 , |
||
Double_t | xmax = 1 , |
||
Int_t | npar = 0 , |
||
Int_t | ndim = 1 , |
||
EAddToList | addToGlobList = EAddToList::kDefault |
||
) |
Constructor using a pointer to a real function.
[in] | name | object name |
[in] | fcn | pointer to function |
[in] | xmin,xmax | x axis limits |
[in] | npar | is the number of free parameters used by the function |
[in] | ndim | number of dimensions |
[in] | addToGlobList | boolean marking if it should be added to global list |
This constructor creates a function of type C when invoked with the normal C++ compiler.
see test program test/stress.cxx (function stress1) for an example. note the interface with an intermediate pointer.
TF1::TF1 | ( | const char * | name, |
Double_t(*)(const Double_t *, const Double_t *) | fcn, | ||
Double_t | xmin = 0 , |
||
Double_t | xmax = 1 , |
||
Int_t | npar = 0 , |
||
Int_t | ndim = 1 , |
||
EAddToList | addToGlobList = EAddToList::kDefault |
||
) |
Constructor using a pointer to (const) real function.
[in] | name | object name |
[in] | fcn | pointer to function |
[in] | xmin,xmax | x axis limits |
[in] | npar | is the number of free parameters used by the function |
[in] | ndim | number of dimensions |
[in] | addToGlobList | boolean marking if it should be added to global list |
This constructor creates a function of type C when invoked with the normal C++ compiler.
see test program test/stress.cxx (function stress1) for an example. note the interface with an intermediate pointer.
|
inline |
|
inline |
Constructor using a pointer to function.
[in] | name | object name |
[in] | fcn | pointer to function |
[in] | xmin,xmax | x axis limits |
[in] | npar | is the number of free parameters used by the function |
[in] | ndim | number of dimensions |
[in] | addToGlobList | boolean marking if it should be added to global list |
This constructor creates a function of type C when invoked with the normal C++ compiler.
TF1::TF1 | ( | const char * | name, |
ROOT::Math::ParamFunctor | f, | ||
Double_t | xmin = 0 , |
||
Double_t | xmax = 1 , |
||
Int_t | npar = 0 , |
||
Int_t | ndim = 1 , |
||
EAddToList | addToGlobList = EAddToList::kDefault |
||
) |
Constructor using the Functor class.
[in] | name | object name |
f | parameterized functor | |
xmin | and | |
xmax | define the plotting range of the function | |
[in] | npar | is the number of free parameters used by the function |
[in] | ndim | number of dimensions |
[in] | addToGlobList | boolean marking if it should be added to global list |
This constructor can be used only in compiled code
WARNING! A function created with this constructor cannot be Cloned.
|
inline |
|
inline |
|
inline |
|
inline |
Static function: set the fgAbsValue flag.
By default TF1::Integral uses the original function value to compute the integral However, TF1::Moment, CentralMoment require to compute the integral using the absolute value of the function.
|
overridevirtual |
|
static |
Type safe interface (static method) The number of sampling points are taken from the TGraph.
Type: unsafe but fast interface filling the arrays x and w (static method)
Given the number of sampling points this routine fills the arrays x and w of length num, containing the abscissa and weight of the Gauss-Legendre n-point quadrature formula.
Gauss-Legendre:
\[ W(x)=1 -1<x<1 \\ (j+1)P_{j+1} = (2j+1)xP_j-jP_{j-1} \]
num is the number of sampling points (>0) x and w are arrays of size num eps is the relative precision
If num<=0 or eps<=0 no action is done.
Reference: Numerical Recipes in C, Second Edition
|
virtual |
Return nth central moment of function between a and b (i.e the n-th moment around the mean value)
See TF1::Integral() for parameter definitions
|
static |
|
inlinestaticconstexpr |
|
overridevirtual |
|
overridevirtual |
|
inlinevirtual |
|
inlinestatic |
Static method to add/avoid to add automatically functions to the global list (gROOT->GetListOfFunctions() ) After having called this static method, all the functions created afterwards will follow the desired behaviour.
By default the functions are added automatically It returns the previous status (true if the functions are added automatically)
|
virtual |
Returns the first derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas.
\[ D(h) = \frac{f(x+h) - f(x-h)}{2h} \]
the final estimate
\[ D = \frac{4D(h/2) - D(h)}{3} \]
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
if the argument params is null, the current function parameters are used, otherwise the parameters in params are used.
the argument eps may be specified to control the step size (precision). the step size is taken as eps*(xmax-xmin). the default value (0.001) should be good enough for the vast majority of functions. Give a smaller value if your function has many changes of the second derivative in the function range.
Getting the error via TF1::DerivativeError: (total error = roundoff error + interpolation error) the estimate of the roundoff error is taken as follows:
\[ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}}, \]
where k is the double precision, ai are coefficients used in central difference formulas interpolation error is decreased by making the step size h smaller.
|
virtual |
Returns the second derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas.
\[ D(h) = \frac{f(x+h) - 2f(x) + f(x-h)}{h^{2}} \]
the final estimate
\[ D = \frac{4D(h/2) - D(h)}{3} \]
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
if the argument params is null, the current function parameters are used, otherwise the parameters in params are used.
the argument eps may be specified to control the step size (precision). the step size is taken as eps*(xmax-xmin). the default value (0.001) should be good enough for the vast majority of functions. Give a smaller value if your function has many changes of the second derivative in the function range.
Getting the error via TF1::DerivativeError: (total error = roundoff error + interpolation error) the estimate of the roundoff error is taken as follows:
\[ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}}, \]
where k is the double precision, ai are coefficients used in central difference formulas interpolation error is decreased by making the step size h smaller.
|
virtual |
Returns the third derivative of the function at point x, computed by Richardson's extrapolation method (use 2 derivative estimates to compute a third, more accurate estimation) first, derivatives with steps h and h/2 are computed by central difference formulas.
\[ D(h) = \frac{f(x+2h) - 2f(x+h) + 2f(x-h) - f(x-2h)}{2h^{3}} \]
the final estimate
\[ D = \frac{4D(h/2) - D(h)}{3} \]
"Numerical Methods for Scientists and Engineers", H.M.Antia, 2nd edition"
if the argument params is null, the current function parameters are used, otherwise the parameters in params are used.
the argument eps may be specified to control the step size (precision). the step size is taken as eps*(xmax-xmin). the default value (0.001) should be good enough for the vast majority of functions. Give a smaller value if your function has many changes of the second derivative in the function range.
Getting the error via TF1::DerivativeError: (total error = roundoff error + interpolation error) the estimate of the roundoff error is taken as follows:
\[ err = k\sqrt{f(x)^{2} + x^{2}deriv^{2}}\sqrt{\sum ai^{2}}, \]
where k is the double precision, ai are coefficients used in central difference formulas interpolation error is decreased by making the step size h smaller.
|
static |
Compute distance from point px,py to a function.
Compute the closest distance of approach from point px,py to this function. The distance is computed in pixels units.
Note that px is called with a negative value when the TF1 is in TGraph or TH1 list of functions. In this case there is no point looking at the histogram axis.
Reimplemented from TObject.
|
protected |
|
overridevirtual |
Draw this function with its current attributes.
Possible option values are:
option | description |
---|---|
"SAME" | superimpose on top of existing picture |
"L" | connect all computed points with a straight line |
"C" | connect all computed points with a smooth curve |
"FC" | draw a fill area below a smooth curve |
Note that the default value is "L". Therefore to draw on top of an existing picture, specify option "LSAME"
NB. You must use DrawCopy if you want to draw several times the same function in the current canvas.
Reimplemented from TObject.
Draw a copy of this function with its current attributes.
This function MUST be used instead of Draw when you want to draw the same function with different parameters settings in the same canvas.
Possible option values are:
option | description |
---|---|
"SAME" | superimpose on top of existing picture |
"L" | connect all computed points with a straight line |
"C" | connect all computed points with a smooth curve |
"FC" | draw a fill area below a smooth curve |
Note that the default value is "L". Therefore to draw on top of an existing picture, specify option "LSAME"
Draw derivative of this function.
An intermediate TGraph object is built and drawn with option. The function returns a pointer to the TGraph object. Do:
TGraph *g = (TGraph*)myfunc.DrawDerivative(option);
The resulting graph will be drawn into the current pad. If this function is used via the context menu, it recommended to create a new canvas/pad before invoking this function.
Draw integral of this function.
An intermediate TGraph object is built and drawn with option. The function returns a pointer to the TGraph object. Do:
TGraph *g = (TGraph*)myfunc.DrawIntegral(option);
The resulting graph will be drawn into the current pad. If this function is used via the context menu, it recommended to create a new canvas/pad before invoking this function.
Evaluate this function.
Computes the value of this function (general case for a 3-d function) at point x,y,z. For a 1-d function give y=0 and z=0 The current value of variables x,y,z is passed through x, y and z. The parameters used will be the ones in the array params if params is given otherwise parameters will be taken from the stored data members fParams
Reimplemented in TF12.
Evaluate function with given coordinates and parameters.
Compute the value of this function at point defined by array x and current values of parameters in array params. If argument params is omitted or equal 0, the internal values of parameters (array fParams) will be used instead. For a 1-D function only x[0] must be given. In case of a multi-dimensional function, the arrays x must be filled with the corresponding number of dimensions.
WARNING. In case of an interpreted function (fType=2), it is the user's responsibility to initialize the parameters via InitArgs before calling this function. InitArgs should be called at least once to specify the addresses of the arguments x and params. InitArgs should be called every time these addresses change.
Reimplemented in TF12.
T TF1::EvalPar | ( | const T * | x, |
const Double_t * | params = nullptr |
||
) |
|
inlineprivate |
Fix the value of a parameter for a fit operation The specified value will be used in the fit and the parameter will be constant (nor varying) during fitting Note that when using pre-defined functions (e.g gaus), one needs to use the fit option 'B' to have the fix of the paramter effective.
See TH1::Fit(TF1*, Option_t *, Option_t *, Double_t, Double_t) for the fitting documentation and the fitting options.
|
inline |
Return the Chisquare after fitting. See ROOT::Fit::FitResult::Chi2()
|
static |
|
inlinevirtual |
|
virtual |
Return a pointer to the histogram used to visualise the function Note that this histogram is managed by the function and in same case it is automatically deleted when some TF1 functions are called such as TF1::SetParameters, TF1::SetNpx, TF1::SetRange It is then reccomended either to clone the return object or calling again teh GetHistogram function whenever is needed.
|
virtual |
Returns the maximum value of the function.
Method: First, the grid search is used to bracket the maximum with the step size = (xmax-xmin)/fNpx. This way, the step size can be controlled via the SetNpx() function. If the function is unimodal or if its extrema are far apart, setting the fNpx to a small value speeds the algorithm up many times. Then, Brent's method is applied on the bracketed interval epsilon (default = 1.E-10) controls the relative accuracy (if |x| > 1 ) and absolute (if |x| < 1) and maxiter (default = 100) controls the maximum number of iteration of the Brent algorithm If the flag logx is set the grid search is done in log step size This is done automatically if the log scale is set in the current Pad
NOTE: see also TF1::GetMaximumX and TF1::GetX
Reimplemented in TF2.
|
inlinevirtual |
|
virtual |
Returns the X value corresponding to the maximum value of the function.
Method: First, the grid search is used to bracket the maximum with the step size = (xmax-xmin)/fNpx. This way, the step size can be controlled via the SetNpx() function. If the function is unimodal or if its extrema are far apart, setting the fNpx to a small value speeds the algorithm up many times. Then, Brent's method is applied on the bracketed interval epsilon (default = 1.E-10) controls the relative accuracy (if |x| > 1 ) and absolute (if |x| < 1) and maxiter (default = 100) controls the maximum number of iteration of the Brent algorithm If the flag logx is set the grid search is done in log step size This is done automatically if the log scale is set in the current Pad
NOTE: see also TF1::GetX
|
inline |
|
virtual |
Returns the minimum value of the function on the (xmin, xmax) interval.
Method: First, the grid search is used to bracket the maximum with the step size = (xmax-xmin)/fNpx. This way, the step size can be controlled via the SetNpx() function. If the function is unimodal or if its extrema are far apart, setting the fNpx to a small value speeds the algorithm up many times. Then, Brent's method is applied on the bracketed interval epsilon (default = 1.E-10) controls the relative accuracy (if |x| > 1 ) and absolute (if |x| < 1) and maxiter (default = 100) controls the maximum number of iteration of the Brent algorithm If the flag logx is set the grid search is done in log step size This is done automatically if the log scale is set in the current Pad
NOTE: see also TF1::GetMaximumX and TF1::GetX
Reimplemented in TF2.
|
inlinevirtual |
|
virtual |
Returns the X value corresponding to the minimum value of the function on the (xmin, xmax) interval.
Method: First, the grid search is used to bracket the maximum with the step size = (xmax-xmin)/fNpx. This way, the step size can be controlled via the SetNpx() function. If the function is unimodal or if its extrema are far apart, setting the fNpx to a small value speeds the algorithm up many times. Then, Brent's method is applied on the bracketed interval epsilon (default = 1.E-10) controls the relative accuracy (if |x| > 1 ) and absolute (if |x| < 1) and maxiter (default = 100) controls the maximum number of iteration of the Brent algorithm If the flag logx is set the grid search is done in log step size This is done automatically if the log scale is set in the current Pad
NOTE: see also TF1::GetX
|
protectedvirtual |
Find the minimum of a function of whatever dimension.
While GetMinimum works only for 1D function , GetMinimumNDim works for all dimensions since it uses the minimizer interface vector x at beginning will contained the initial point, on exit will contain the result
|
virtual |
|
virtual |
Redefines TObject::GetObjectInfo.
Displays the function info (x, function value) corresponding to cursor position px,py
Reimplemented from TObject.
Reimplemented in TF2.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Compute Quantiles for density distribution of this function.
Quantile x_p of a probability distribution Function F is defined as
\[ F(x_{p}) = \int_{xmin}^{x_{p}} f dx = p with 0 <= p <= 1. \]
For instance the median \( x_{\frac{1}{2}} \) of a distribution is defined as that value of the random variable for which the distribution function equals 0.5:
\[ F(x_{\frac{1}{2}}) = \prod(x < x_{\frac{1}{2}}) = \frac{1}{2} \]
[in] | n | maximum size of array xp and size of array p |
[out] | xp | array filled with n quantiles evaluated at p. Memory has to be preallocated by caller. |
[in] | p | array of cumulative probabilities where quantiles should be evaluated. It is assumed to contain at least n values. |
Getting quantiles from two histograms and storing results in a TGraph, a so-called QQ-plot
TGraph *gr = new TGraph(nprob); f1->GetQuantiles(nprob,gr->GetX(),p); f2->GetQuantiles(nprob,gr->GetY(),p); gr->Draw("alp");
|
virtual |
Return a random number following this function shape in [xmin,xmax].
The distribution contained in the function fname (TF1) is integrated over the channel contents. It is normalized to 1. For each bin the integral is approximated by a parabola. The parabola coefficients are stored as non persistent data members Getting one random number implies:
The parabolic approximation is very good as soon as the number of bins is greater than 50.
xmin | minimum value for generated random numbers |
xmax | maximum value for generated random numbers |
rng | (optional) random number generator pointer |
option | (optional) : LOG or LIN to force the usage of a log or linear scale for computing the cumulative integral table |
IMPORTANT NOTE
The integral of the function is computed at fNpx points. If the function has sharp peaks, you should increase the number of points (SetNpx) such that the peak is correctly tabulated at several points.
Reimplemented in TF2.
Return a random number following this function shape.
rng | Random number generator. By default (or when passing a nullptr) the global gRandom is used |
option | Option string which controls the binning used to compute the integral. Default mode is automatic depending of xmax, xmin and Npx (function points). Possible values are:
|
The distribution contained in the function fname (TF1) is integrated over the channel contents. It is normalized to 1. For each bin the integral is approximated by a parabola. The parabola coefficients are stored as non persistent data members Getting one random number implies:
The user can provide as optional parameter a Random number generator. By default gRandom is used
If the ratio fXmax/fXmin > fNpx the integral is tabulated in log scale in x A log scale for the intergral is also always used if a user specifies the "LOG" option Instead if a user requestes a "LIN" option the integral binning is never done in log scale whatever the fXmax/fXmin ratio is
Note that the parabolic approximation is very good as soon as the number of bins is greater than 50.
Reimplemented in TF2.
|
virtual |
Returns the X value corresponding to the function value fy for (xmin<x<xmax).
in other words it can find the roots of the function when fy=0 and successive calls by changing the next call to [xmin+eps,xmax] where xmin is the previous root.
Method: First, the grid search is used to bracket the maximum with the step size = (xmax-xmin)/fNpx. This way, the step size can be controlled via the SetNpx() function. If the function is unimodal or if its extrema are far apart, setting the fNpx to a small value speeds the algorithm up many times. Then, Brent's method is applied on the bracketed interval epsilon (default = 1.E-10) controls the relative accuracy (if |x| > 1 ) and absolute (if |x| < 1) and maxiter (default = 100) controls the maximum number of iteration of the Brent algorithm If the flag logx is set the grid search is done in log step size This is done automatically if the log scale is set in the current Pad
NOTE: see also TF1::GetMaximumX, TF1::GetMinimumX
TAxis * TF1::GetXaxis | ( | ) | const |
TAxis * TF1::GetYaxis | ( | ) | const |
TAxis * TF1::GetZaxis | ( | ) | const |
Compute the gradient wrt parameters If the TF1 object is based on a formula expression (TFormula) and TFormula::GenerateGradientPar() has been successfully called automatic differentiation using CLAD is used instead of the default numerical differentiation.
x | point, were the gradient is computed |
grad | used to return the computed gradient, assumed to be of at least fNpar size |
eps | if the errors of parameters have been computed, the step used in numerical differentiation is eps*parameter_error. |
if the errors have not been computed, step=eps is used default value of eps = 0.01 Method is the same as in Derivative() function
If a parameter is fixed, the gradient on this parameter = 0
|
inline |
Compute the gradient (derivative) wrt a parameter ipar.
ipar | index of parameter for which the derivative is computed |
x | point, where the derivative is computed |
eps | - if the errors of parameters have been computed, the step used in numerical differentiation is eps*parameter_error. |
if the errors have not been computed, step=eps is used default value of eps = 0.01 Method is the same as in Derivative() function
If a parameter is fixed, the gradient on this parameter = 0
|
inline |
|
inline |
|
static |
|
virtual |
Return Error on Integral of a parametric function between a and b due to the parameter uncertainties and their covariance matrix from the fit.
In addition to the integral limits, this method takes as input a pointer to the fitted parameter values and a pointer the covariance matrix from the fit. These pointers should be retrieved from the previously performed fit using the TFitResult class. Note that to get the TFitResult, te fit should be done using the fit option S
. Example:
IMPORTANT NOTE1:
A null pointer to the parameter values vector and to the covariance matrix can be passed. In this case, when the parameter values pointer is null, the parameter values stored in this TF1 function object are used in the integral error computation. When the poassed pointer to the covariance matrix is null, a covariance matrix from the last fit is retrieved from a global fitter instance when it exists. Note that the global fitter instance esists only when ROOT is not running with multi-threading enabled (ROOT::IsImplicitMTEnabled() == True). When the ovariance matrix from the last fit cannot be retrieved, an error message is printed and a zero value is returned.
IMPORTANT NOTE2:
When no covariance matrix is passed and in the meantime a fit is done using another function, the routine will signal an error and it will return zero only when the number of fit parameter is different than the values stored in TF1 (TF1::GetNpar() ). In the case that npar is the same, an incorrect result is returned.
IMPORTANT NOTE3:
The user must pass a pointer to the elements of the full covariance matrix dimensioned with the right size (npar*npar), where npar is the total number of parameters (TF1::GetNpar()), including also the fixed parameters. The covariance matrix must be retrieved from the TFitResult class as shown above and not from TVirtualFitter::GetCovarianceMatrix() function.
|
virtual |
Return Error on Integral of a parametric function with dimension larger than one between a[] and b[] due to the parameters uncertainties.
For a TF1 with dimension larger than 1 (for example a TF2 or TF3) TF1::IntegralMultiple is used for the integral calculation
In addition to the integral limits, this method takes as input a pointer to the fitted parameter values and a pointer the covariance matrix from the fit. These pointers should be retrieved from the previously performed fit using the TFitResult class. Note that to get the TFitResult, te fit should be done using the fit option S
. Example:
IMPORTANT NOTE1:
A null pointer to the parameter values vector and to the covariance matrix can be passed. In this case, when the parameter values pointer is null, the parameter values stored in this TF1 function object are used in the integral error computation. When the poassed pointer to the covariance matrix is null, a covariance matrix from the last fit is retrieved from a global fitter instance when it exists. Note that the global fitter instance esists only when ROOT is not running with multi-threading enabled (ROOT::IsImplicitMTEnabled() == True). When the ovariance matrix from the last fit cannot be retrieved, an error message is printed and a zero value is returned.
IMPORTANT NOTE2:
When no covariance matrix is passed and in the meantime a fit is done using another function, the routine will signal an error and it will return zero only when the number of fit parameter is different than the values stored in TF1 (TF1::GetNpar() ). In the case that npar is the same, an incorrect result is returned.
IMPORTANT NOTE3:
The user must pass a pointer to the elements of the full covariance matrix dimensioned with the right size (npar*npar), where npar is the total number of parameters (TF1::GetNpar()), including also the fixed parameters. The covariance matrix must be retrieved from the TFitResult class as shown above and not from TVirtualFitter::GetCovarianceMatrix() function.
|
virtual |
This function computes, to an attempted specified accuracy, the value of the integral.
[in] | n | Number of dimensions [2,15] |
[in] | a,b | One-dimensional arrays of length >= N . On entry A[i], and B[i], contain the lower and upper limits of integration, respectively. |
[in] | maxpts | Maximum number of function evaluations to be allowed. maxpts >= 2^n +2*n*(n+1) +1 if maxpts<minpts, maxpts is set to 10*minpts |
[in] | epsrel | Specified relative accuracy. |
[in] | epsabs | Specified absolute accuracy. The integration algorithm will attempt to reach either the relative or the absolute accuracy. In case the maximum function called is reached the algorithm will stop earlier without having reached the desired accuracy |
[out] | relerr | Contains, on exit, an estimation of the relative accuracy of the result. |
[out] | nfnevl | number of function evaluations performed. |
[out] | ifail | 0 Normal exit. At least minpts and at most maxpts calls to the function were performed. 1 maxpts is too small for the specified accuracy eps. The result and relerr contain the values obtainable for the specified value of maxpts. 3 n<2 or n>15 |
Method:
The default method used is the Genz-Mallik adaptive multidimensional algorithm using the class ROOT::Math::AdaptiveIntegratorMultiDim (see the reference documentation of the class)
Other methods can be used by setting ROOT::Math::IntegratorMultiDimOptions::SetDefaultIntegrator() to different integrators. Other possible integrators are MC integrators based on the ROOT::Math::GSLMCIntegrator class Possible methods are : Vegas, Miser or Plain IN case of MC integration the accuracy is determined by the number of function calls, one should be careful not to use a too large value of maxpts
|
virtual |
Return Integral of function between a and b using the given parameter values and relative and absolute tolerance.
The default integrator defined in ROOT::Math::IntegratorOneDimOptions::DefaultIntegrator() is used If ROOT contains the MathMore library the default integrator is set to be the adaptive ROOT::Math::GSLIntegrator (based on QUADPACK) or otherwise the ROOT::Math::GaussIntegrator is used See the reference documentation of these classes for more information about the integration algorithms To change integration algorithm just do : ROOT::Math::IntegratorOneDimOptions::SetDefaultIntegrator(IntegratorName); Valid integrator names are:
In order to use the GSL integrators one needs to have the MathMore library installed
Note 1:
Values of the function f(x) at the interval end-points A and B are not required. The subprogram may therefore be used when these values are undefined.
Note 2:
Instead of TF1::Integral, you may want to use the combination of TF1::CalcGaussLegendreSamplingPoints and TF1::IntegralFast. See an example with the following script:
This example produces the following results:
|
protected |
|
inlineoverridevirtual |
|
virtual |
|
virtual |
Return nth moment of function between a and b.
See TF1::Integral() for parameter definitions
|
inline |
|
overridevirtual |
Paint this function with its current attributes.
The function is going to be converted in an histogram and the corresponding histogram is painted. The painted histogram can be retrieved calling afterwards the method TF1::GetHistogram()
Reimplemented from TObject.
|
overridevirtual |
|
static |
See TF1::RejectPoint above.
|
virtual |
|
overridevirtual |
|
static |
|
virtual |
Set the result from the fit parameter values, errors, chi2, etc... Optionally a pointer to a vector (with size fNpar) of the parameter indices in the FitResult can be passed This is useful in the case of a combined fit with different functions, and the FitResult contains the global result By default it is assume that indpar = {0,1,2,....,fNpar-1}.
void TF1::SetFunction | ( | PtrObj & | p, |
MemFn | memFn | ||
) |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Set the number of points used to draw the function.
The default number of points along x is 100 for 1-d functions and 30 for 2-d/3-d functions You can increase this value to get a better resolution when drawing pictures with sharp peaks or to get a better result when using TF1::GetRandom the minimum number of points is 4, the maximum is 10000000 for 1-d and 10000 for 2-d/3-d functions
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Set lower and upper limits for parameter ipar.
The specified limits will be used in a fit operation. Note that when this function is a pre-defined function (e.g. gaus) one needs to use the fit option "B" to have the limits used in the fit. See TH1::Fit(TF1*, Option_t *, Option_t *, Double_t, Double_t) for the fitting documentation and the fitting options
To fix a parameter, use TF1::FixParameter
|
virtual |
|
virtual |
|
overridevirtual |
|
inlinevirtual |
|
overridevirtual |
|
inline |
|
virtual |
|
friend |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |