public:
TF1 TF1(char* name, char* formula, Float_t xmin = 0, Float_t xmax = 1)
TF1 TF1(char* name, void* fcn, Float_t xmin = 0, Float_t xmax = 1, Int_t npar = 0)
TF1 TF1(char* name, Double_t (*)(Double_t*, Double_t*) fcn, Float_t xmin = 0, Float_t xmax = 1, Int_t npar = 0)
TF1 TF1()
TF1 TF1(TF1& f1)
virtual void ~TF1()
virtual void Browse(TBrowser* b)
TClass* Class()
virtual void Copy(TObject& f1)
virtual Double_t Derivative(Double_t x, Double_t* params = 0, Float_t epsilon = 0)
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
virtual void Draw(Option_t* option)
virtual void DrawCopy(Option_t* option)
virtual void DrawF1(char* formula, Float_t xmin, Float_t xmax, Option_t* option)
virtual void DrawPanel()
virtual Double_t Eval(Double_t x, Double_t y = 0, Double_t z = 0)
virtual Double_t EvalPar(Double_t* x, Double_t* params = 0)
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Double_t GetChisquare()
TH1F* GetHistogram()
TMethodCall* GetMethodCall()
Int_t GetNpx()
Int_t GetNumberFitPoints()
TObject* GetParent()
Double_t GetParError(Int_t ipar)
virtual void GetParLimits(Int_t ipar, Double_t& parmin, Double_t& parmax)
virtual Double_t GetRandom()
virtual void GetRange(Float_t& xmin, Float_t& ymin, Float_t& zmin, Float_t& xmax, Float_t& ymax, Float_t& zmax)
virtual void GetRange(Float_t& xmin, Float_t& ymin, Float_t& xmax, Float_t& ymax)
virtual void GetRange(Float_t& xmin, Float_t& xmax)
virtual Double_t GetSave(Double_t* x)
Float_t GetXmax()
Float_t GetXmin()
virtual void InitArgs(Double_t* x, Double_t* params)
virtual Double_t Integral(Float_t a, Float_t b, Double_t* params = 0, Float_t epsilon = 0.000001)
virtual TClass* IsA()
virtual Int_t LocateBinary(Double_t value, Double_t* array, Int_t nbins)
virtual void Paint(Option_t* option)
virtual void Print(Option_t* option)
virtual void Save(Float_t xmin, Float_t xmax)
virtual void SavePrimitive(ofstream& out, Option_t* option)
virtual void SetChisquare(Double_t chi2)
virtual void SetMaximum(Float_t maximum = -1111)
virtual void SetMinimum(Float_t minimum = -1111)
virtual void SetNpx(Int_t npx = 100)
virtual void SetNumberFitPoints(Int_t npfits)
virtual void SetParent(TObject* p = 0)
virtual void SetParError(Int_t ipar, Double_t error)
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
virtual void SetRange(Float_t xmin, Float_t ymin, Float_t zmin, Float_t xmax, Float_t ymax, Float_t zmax)
virtual void SetRange(Float_t xmin, Float_t ymin, Float_t xmax, Float_t ymax)
virtual void SetRange(Float_t xmin, Float_t xmax)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
Data Members
protected:
Float_t fXmin Lower bounds for the range
Float_t fXmax Upper bounds for the range
Int_t fNpx Number of points used for the graphical representation
Int_t fType (=0 for standard functions, 1 if pointer to function)
Int_t fNpfits Number of points used in the fit
Int_t fNsave Number of points used to fill array fSave
Double_t fChisquare Function fit chisquare
Double_t* fIntegral Integral of function binned on fNpx bins
Double_t* fParErrors Array of errors of the fNpar parameters
Double_t* fParMin Array of lower limits of the fNpar parameters
Double_t* fParMax Array of upper limits of the fNpar parameters
Double_t* fSave Array of fNsave function values
TObject* fParent Parent object hooking this function (if one)
TH1F* fHistogram Pointer to histogram used for visualisation
Float_t fMaximum Maximum value for plotting
Float_t fMinimum Minimum value for plotting
TMethodCall* fMethodCall Pointer to MethodCall in case of interpreted function
Double_t (*)(Double_t*, Double_t*)* fFunction Pointer to function
a TF1 object is a 1-Dim function defined between a lower and upper limit.
The function may be a simple function (see TFormula) or a precompiled
user function.
The function may have associated parameters.
TF1 graphics function is via the TH1/TGraph drawing functions.
The following types of functions can be created:
A- Expression using variable x and no parameters
B- Expression using variable x with parameters
C- A general C function with parameters
Example of a function of type A
TF1 *f1 = new TF1("f1","sin(x)/x",0,10);
f1->Draw();
/*
*/
Example of a function of type B
TF1 *f1 = new TF1("f1","[0]x*sin([1]*x",-3,3);
This creates a function of variable x with 2 parameters.
The parameters must be initialized via:
f1->SetParameter(0,value_first_parameter);
f1->SetParameter(1,value_second_parameter);
Parameters may be given a name:
f1->SetParName(0,"Constant");
Example of function of type C
Consider the macro myfunc.C below
-------------macro myfunc.C-----------------------------
Double_t myfunction(Double_t *x, Double_t *par)
{
Float_t xx =x[0];
Double_t f = TMath::Abs(par[0]*sin(par[1]*xx)/xx);
return f;
}
void myfunc()
{
TF1 *f1 = new TF1("myfunc",myfunction,0,10,2);
f1->SetParameters(2,1);
f1->SetParNames("constant","coefficient");
f1->Draw();
}
void myfit()
{
TH1F *h1=new TH1F("h1","test",100,0,10);
h1->FillRandom("myfunc",20000);
TF1 *f1=gROOT->GetFunction("myfunc");
f1->SetParameters(800,1);
h1.Fit("myfunc");
}
--------end of macro myfunc.C---------------------------------
In an interactive session you can do:
Root > .L myfunc.C
Root > myfunc();
Root > myfit();
*-*-*-*-*-*-*-*-*-*-*F1 default constructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* ======================
*-*-*-*-*-*-*F1 constructor using a formula definition*-*-*-*-*-*-*-*-*-*-* *-* ========================================= *-* *-* See TFormula constructor for explanation of the formula syntax. *-* *-* Creates a function of type A or B between xmin and xmax *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*F1 constructor using pointer to an interpreted function*-*-*-* *-* ======================================================= *-* *-* See TFormula constructor for explanation of the formula syntax. *-* *-* Creates a function of type C between xmin and xmax. *-* 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 CINT. *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*F1 constructor using a pointer to real function*-*-*-*-*-*-*-* *-* =============================================== *-* *-* npar is the number of free parameters used by the function *-* *-* This constructor creates a function of type C when invoked *-* with the normal C++ compiler. *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*-*F1 default destructor*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* =====================
*-*-*-*-*-*-*-*-*-*-*Copy this F1 to a new F1*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* ========================
*-*-*-*-*-*-*-*-*Return derivative of function at point x*-*-*-*-*-*-*-*
The derivative is computed by computing the value of the function
at point x-epsilon and point x+epsilon.
if params is NULL, use the current values of parameters
*-*-*-*-*-*-*-*-*-*-*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. *-* *-* Algorithm: *-* *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*-*Draw this function with its current attributes*-*-*-*-* *-* ============================================== *-* *-* Possible option values are: *-* "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. *-* *-* 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. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*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: *-* "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. *-* *-* Note that the default value is "L". Therefore to draw on top *-* of an existing picture, specify option "LSAME" *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*Draw formula between xmin and xmax*-*-*-*-*-*-*-*-*-*-*-* *-* ================================== *-*
*-*-*-*-*-*-*Display a panel with all function drawing options*-*-*-*-*-* *-* ================================================= *-* *-* See class TDrawPanelHist for example
*-*-*-*-*-*-*-*-*-*-*Evaluate this formula*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* ===================== *-* *-* 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 *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*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-dimemsional 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 responsability 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 everytime these addresses change.
*-*-*-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-* *-* ========================================= *-* This member function is called when a F1 is clicked with the locator *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*Return limits for parameter ipar*-*-*-* *-* ================================
*-*-*-*-*-*Return a random number following this function shape*-*-*-*-*-*-* *-* ==================================================== *-* *-* The distribution contained in the function fname (TF1) is integrated *-* over the channel contents. *-* It is normalized to 1. *-* Getting one random number implies: *-* - Generating a random number between 0 and 1 (say r1) *-* - Look in which bin in the normalized integral r1 corresponds to *-* - make a linear interpolation in the returned bin *-* *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*-*Return range of a 1-D function*-*-*-*-*-*-*-*-*-*-*-* *-* ==============================
*-*-*-*-*-*-*-*-*-*-*Return range of a 2-D function*-*-*-*-*-*-*-*-*-*-*-*-* *-* ==============================
*-*-*-*-*-*-*-*-*-*-*Return range of function*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* ========================
Get value corresponding to X in array of fSave values
*-*-*-*-*-*-*-*-*-*-*Initialize parameters addresses*-*-*-*-*-*-*-*-*-*-*-* *-* ===============================
*-*-*-*-*-*-*-*-*Return Integral of function between a and b*-*-*-*-*-*-*-* based on original CERNLIB routine DGAUSS by Sigfried Kolbig converted to C++ by Rene Brun /*
This function computes, to an attempted specified accuracy, the value of the integral
![]()
Usage:
In any arithmetic expression, this function has the approximate value of the integral I.
Method:
For any interval [a,b] we define
and
to be the
8-point and 16-point Gaussian quadrature approximations to
and define
Then,
where, starting with
and finishing with
,
the subdivision points
are given by
with
equal to the first member of the sequence
for which
.
If, at any stage in the process of subdivision, the ratio
is so small that 1+0.005q is indistinguishable from 1 to machine accuracy, an error exit occurs with the function value set equal to zero.
Accuracy:
Unless there is severe cancellation of positive and negative values of f(x) over the interval [A,B], the argument EPS may be considered as specifying a bound on the relative error of I in the case |I|>1, and a bound on the absolute error in the case |I|<1. More precisely, if k is the number of sub-intervals contributing to the approximation (see Method), and if
then the relation
will nearly always be true, provided the routine terminates without printing an error message. For functions f having no singularities in the closed interval [A,B] the accuracy will usually be much higher than this.
Error handling:
The requested accuracy cannot be obtained (see Method). The function value is set equal to zero.
Notes:
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.
*-*-*-*-*-*-*Binary search in an array of nbins to locate value*-*-*-*-*-*-* *-* ================================================== *-* array is supposed to be sorted prior to this call. *-* If match is found, function returns position of element. *-* If no match found, function gives nearest element smaller than value. *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-*-*-*-*-*-*-*-*-*-*Paint this function with its current attributes*-*-*-*-* *-* ===============================================
*-*-*-*-*-*-*-*-*-*-*Dump this function with its attributes*-*-*-*-*-*-*-*-*-* *-* ==================================
Save values of function in array fSave
Save primitive as a C++ statement(s) on output stream out
*-*-*-*-*-*-*-*Set the number of points used to draw the function*-*-*-*-*-* *-* ==================================================
*-*-*-*-*-*Set limits for parameter ipar*-*-*-*
*-* =============================
The specified limits will be used in a fit operation
when the option "B" is specified (Bounds).
*-*-*-*-*-*Initialize the upper and lower bounds to draw the function*-*-*-*
*-* ==========================================================
The function range is also used in an histogram fit operation
when the option "R" is specified.
*-*-*-*-*-*-*-*-*Stream a class object*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* *-* =========================================
Double_t GetChisquare()
TH1F* GetHistogram()
Int_t GetNpx()
TMethodCall* GetMethodCall()
Int_t GetNumberFitPoints()
TObject* GetParent()
Double_t GetParError(Int_t ipar)
Float_t GetXmin()
Float_t GetXmax()
void SetChisquare(Double_t chi2)
void SetMaximum(Float_t maximum = -1111)
void SetMinimum(Float_t minimum = -1111)
void SetNumberFitPoints(Int_t npfits)
void SetParError(Int_t ipar, Double_t error)
void SetParent(TObject* p = 0)
void SetRange(Float_t xmin, Float_t ymin, Float_t xmax, Float_t ymax)
void SetRange(Float_t xmin, Float_t ymin, Float_t zmin, Float_t xmax, Float_t ymax, Float_t zmax)
TClass* Class()
TClass* IsA()
void ShowMembers(TMemberInspector& insp, char* parent)