|
ROOT
Reference Guide |
|
Go to the documentation of this file.
24 #include "RConfigure.h"
57 for (
int i = 0; i < npar; ++i) {
69 if (&rhs ==
this)
return *
this;
125 void SetParNames(
const char *name0 =
"p0",
const char *name1 =
"p1",
const char *name2 =
"p2",
126 const char *name3 =
"p3",
const char *name4 =
"p4",
const char *name5 =
"p5",
127 const char *name6 =
"p6",
const char *name7 =
"p7",
const char *name8 =
"p8",
128 const char *name9 =
"p9",
const char *name10 =
"p10");
155 static void Build(
TF1 *
f, Func *func);
164 template<
typename F,
typename T>
169 template<
typename F,
typename T>
174 template<
typename F,
typename T>
179 template<
typename F,
typename T>
186 template<
typename T,
typename F>
192 template<
typename T,
typename F>
193 auto GetTheRightOp(
T(
F::*opPtr)(
const T *,
const double *)
const) -> decltype(opPtr)
198 template<
typename T,
typename F>
204 template<
typename T,
typename F>
285 TString &formula,
int termStart,
int termEnd,
339 fType = std::is_same<T, double>::value ? TF1::EFType::kTemplScalar : TF1::EFType::kTemplVec;
370 template <
typename Func>
379 template <
typename Func>
395 template <
class PtrObj,
typename MemFn>
401 template <
class PtrObj,
typename MemFn>
616 template <
class PtrObj,
typename MemFn>
618 template <
typename Func>
652 if (
fFormula)
fFormula->
SetParameters(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
653 else fParams->
SetParameters(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
657 virtual void SetParNames(
const char *name0 =
"p0",
const char *name1 =
"p1",
const char *name2 =
"p2",
658 const char *name3 =
"p3",
const char *name4 =
"p4",
const char *name5 =
"p5",
659 const char *name6 =
"p6",
const char *name7 =
"p7",
const char *name8 =
"p8",
660 const char *name9 =
"p9",
const char *name10 =
"p10");
672 virtual void SetTitle(
const char *title =
"");
678 Warning(
"SetVectorized",
"Can only set vectorized flag on formula-based TF1");
709 #ifdef R__HAS_VECCORE
723 f->fType = std::is_same<Fnc_t, double>::value? TF1::EFType::kTemplScalar : TF1::EFType::kTemplVec;
732 f->fType = std::is_same<Fnc_t, double>::value? TF1::EFType::kTemplScalar : TF1::EFType::kTemplVec;
743 f->fType = TF1::EFType::kFormula;
744 f->fFormula =
new TFormula(
"tf1lambda", formula,
f->fNdim,
f->fNpar,
false);
745 TString formulaExpression(formula);
771 if (
fType == EFType::kTemplVec ||
fType == EFType::kTemplScalar) {
773 }
else if (
fType == EFType::kFormula) {
796 assert(
fType == EFType::kTemplScalar ||
fType == EFType::kTemplVec);
806 #ifdef R__HAS_VECCORE
810 assert(
fType == EFType::kTemplVec);
811 std::vector<ROOT::Double_v>
d(
fNdim);
814 for(
auto i=0; i<
fNdim; i++) {
819 res = ((TF1FunctorPointerImpl<ROOT::Double_v> *)
fFunctor)->fImpl(
d.data(), params);
824 return vecCore::Get<ROOT::Double_v>(res, 0);
837 template <
typename Func>
841 fType = EFType::kPtrScalarFreeFcn;
844 template <
class PtrObj,
typename MemFn>
848 fType = EFType::kPtrScalarFreeFcn;
855 if (
fType == EFType::kTemplVec ||
fType == EFType::kTemplScalar) {
856 return GradientParTempl<T>(ipar,
x, eps);
858 return GradientParTempl<Double_t>(ipar, (
const Double_t *)
x, eps);
867 if (eps < 1e-10 || eps > 1) {
868 Warning(
"Derivative",
"parameter esp=%g out of allowed range[1e-10,1], reset to 0.01", eps);
876 std::vector<Double_t> parametersCopy(parameters, parameters +
GetNpar());
877 parameters = parametersCopy.data();
880 T f1, f2, g1, g2, d0, d2;
883 if (al * bl != 0 && al >= bl) {
897 parameters[ipar] = par0 +
h;
899 parameters[ipar] = par0 -
h;
901 parameters[ipar] = par0 +
h / 2;
903 parameters[ipar] = par0 -
h / 2;
911 T grad = h2 * (4 * d2 - d0) / 3.;
914 parameters[ipar] = par0;
922 if (
fType == EFType::kTemplVec ||
fType == EFType::kTemplScalar) {
923 GradientParTempl<T>(
x, grad, eps);
931 if (eps < 1e-10 || eps > 1) {
932 Warning(
"Derivative",
"parameter esp=%g out of allowed range[1e-10,1], reset to 0.01", eps);
937 grad[ipar] = GradientParTempl<T>(ipar,
x, eps);
ROOT::Math::ParamFunctorTempl< T > fImpl
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,...
TF1(const char *name, Func f, Double_t xmin, Double_t xmax, Int_t npar, Int_t ndim=1, EAddToList addToGlobList=EAddToList::kDefault)
virtual TH1 * GetHistogram() const
Return a pointer to the histogram used to visualise the function.
virtual void DrawF1(Double_t xmin, Double_t xmax, Option_t *option="")
Draw function between xmin and xmax.
Class to manage histogram axis.
static TF1 * GetCurrent()
Static function returning the current function being processed.
static std::atomic< Bool_t > fgAbsValue
void SetParName(Int_t iparam, const char *name)
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)
Using a TBrowser one can browse all ROOT objects.
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)
static void RejectPoint(Bool_t reject=kTRUE)
Static function to set the global flag to reject points the fgRejectPoint global flag is tested by al...
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Redefines TObject::GetObjectInfo.
std::vector< Double_t > fSave
TH1 * fHistogram
Parent object hooking this function (if one)
virtual const Double_t * GetParErrors() const
void SetParameters(const Double_t *params)
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.
Double_t GetParameter(const char *name) const
TF1FunctorPointerImpl(const std::function< T(const T *f, const Double_t *param)> &func)
virtual Double_t Variance(Double_t a, Double_t b, const Double_t *params=0, Double_t epsilon=0.000001)
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).
Bool_t fNormalized
Pointer to MethodCall in case of interpreted function.
virtual void SetNpx(Int_t npx=100)
Set the number of points used to draw the function.
const std::vector< double > & ParamsVec() const
virtual Double_t GetMaximumStored() const
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
virtual Double_t * GetParameters() const
virtual void SetParameters(Double_t p0, Double_t p1, Double_t p2=0, Double_t p3=0, Double_t p4=0, Double_t p5=0, Double_t p6=0, Double_t p7=0, Double_t p8=0, Double_t p9=0, Double_t p10=0)
T EvalParTempl(const T *data, const Double_t *params=0)
Eval for vectorized functions.
virtual void SetParameter(const TString &name, Double_t value)
TObject * GetParent() const
virtual Int_t GetNdim() const
virtual TH1 * CreateHistogram()
virtual Int_t GetNpar() const
virtual void SetParNames(const char *name0="p0", const char *name1="p1", const char *name2="p2", const char *name3="p3", const char *name4="p4", const char *name5="p5", const char *name6="p6", const char *name7="p7", const char *name8="p8", const char *name9="p9", const char *name10="p10")
Set up to 10 parameter names.
virtual void SetMaximum(Double_t maximum=-1111)
Set the maximum value along Y for this function In case the function is already drawn,...
const Double_t * GetParameters() const
virtual ~TF1()
TF1 default destructor.
virtual Double_t GetProb() const
Return the fit probability.
virtual Double_t Derivative3(Double_t x, Double_t *params=0, Double_t epsilon=0.001) const
Returns the third derivative of the function at point x, computed by Richardson's extrapolation metho...
virtual Double_t Moment(Double_t n, Double_t a, Double_t b, const Double_t *params=0, Double_t epsilon=0.000001)
Return nth moment of function between a and b.
std::vector< Double_t > fIntegral
static void SetCurrent(TF1 *f1)
Static function setting the current function.
virtual Int_t GetNumberFitPoints() const
virtual Double_t GetXmax() const
virtual const TFormula * GetFormula() const
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a function.
const char * GetParName(Int_t iparam) const
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.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
virtual void AddParameter(const TString &name, Double_t value)
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 SetParErrors(const Double_t *errors)
Set errors for all active parameters when calling this function, the array errors must have at least ...
TF1Parameters(const TF1Parameters &rhs)
virtual Bool_t IsInside(const Double_t *x) const
return kTRUE if the point is inside the function range
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.
TMethodCall * fMethodCall
Pointer to histogram used for visualisation.
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 TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
virtual void SetMinimum(Double_t minimum=-1111)
Set the minimum value along Y for this function In case the function is already drawn,...
static Double_t DerivativeError()
Static function returning the error of the last call to the of Derivative's functions.
TF1Parameters(Int_t npar)
virtual void Paint(Option_t *option="")
Paint this function with its current attributes.
Bool_t ComputeCdfTable(Option_t *opt)
Compute the cumulative function at fNpx points between fXmin and fXmax.
TF1Parameters & operator=(const TF1Parameters &rhs)
virtual Double_t operator()(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
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 absolut...
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.
virtual void GetParLimits(Int_t ipar, Double_t &parmin, Double_t &parmax) const
Return limits for parameter ipar.
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...
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)
Ssiz_t Last(char c) const
Find last occurrence of a character c.
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
virtual Int_t GetNumber() const
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
virtual Double_t GetRandom(TRandom *rng=nullptr, Option_t *opt=nullptr)
Return a random number following this function shape.
virtual void SetParameter(Int_t param, Double_t value)
virtual void SetParameters(const Double_t *params)
virtual Double_t GradientPar(Int_t ipar, const Double_t *x, Double_t eps=0.01)
Compute the gradient (derivative) wrt a parameter ipar.
TFormula * fFormula
Functor object to wrap any C++ callable object.
virtual Double_t IntegralFast(Int_t num, Double_t *x, Double_t *w, Double_t a, Double_t b, Double_t *params=0, Double_t epsilon=1e-12)
Gauss-Legendre integral, see CalcGaussLegendreSamplingPoints.
virtual void SetFitResult(const ROOT::Fit::FitResult &result, const Int_t *indpar=0)
Set the result from the fit parameter values, errors, chi2, etc...
virtual Bool_t IsValid() const
Return kTRUE if the function is valid.
Double_t GetParameter(Int_t iparam) const
virtual Int_t GetParNumber(const char *name) const
Int_t GetParNumber(const char *name) const
Returns the parameter number given a name not very efficient but list of parameters is typically smal...
virtual void SetParError(Int_t ipar, Double_t error)
Set error for parameter number ipar.
TAxis * GetYaxis() const
Get y axis of the function.
std::vector< Double_t > fAlpha
Integral of function binned on fNpx bins.
virtual TString GetExpFormula(Option_t *option="") const
virtual ~TF1FunctorPointer()
This is the base class for the ROOT Random number generators.
static void Build(TF1 *f, Func func)
static void InitStandardFunctions()
Create the basic function objects.
void SetFunction(PtrObj &p, MemFn memFn)
TMethodCall * GetMethodCall() const
virtual TObject * DrawDerivative(Option_t *option="al")
Draw derivative of this function.
virtual void Update()
Called by functions such as SetRange, SetNpx, SetParameters to force the deletion of the associated h...
virtual void SetNormalized(Bool_t flag)
TAxis * GetXaxis() const
Get x axis of the function.
virtual void InitArgs(const Double_t *x, const Double_t *params)
Initialize parameters addresses.
The TNamed class is the base class for all named ROOT classes.
virtual Double_t Derivative2(Double_t x, Double_t *params=0, Double_t epsilon=0.001) const
Returns the second derivative of the function at point x, computed by Richardson's extrapolation meth...
virtual const char * GetParName(Int_t ipar) const
virtual Int_t GetNpx() const
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
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)
virtual TF1FunctorPointer * Clone() const =0
virtual Double_t CentralMoment(Double_t n, Double_t a, Double_t b, const Double_t *params=0, 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)
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 w...
virtual void Browse(TBrowser *b)
Browse.
class containg the result of the fit and all the related information (fitted parameter values,...
virtual void SetChisquare(Double_t chi2)
virtual void Copy(TObject &f1) const
Copy this F1 to a new F1.
static Bool_t fgRejectPoint
static void Build(TF1 *f, const char *formula)
virtual Bool_t IsEvalNormalized() const
TF1FunctorPointer * fFunctor
TF1(const char *name, Func f, Double_t xmin, Double_t xmax, Int_t npar, const char *, EAddToList addToGlobList=EAddToList::kDefault)
TAxis * GetZaxis() const
Get z axis of the function. (In case this object is a TF2 or TF3)
virtual const TObject * GetLinearPart(Int_t i) const
Double_t SignalingNaN()
Returns a signaling NaN as defined by IEEE 754](http://en.wikipedia.org/wiki/NaN#Signaling_NaN)
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
std::vector< Double_t > fParErrors
virtual void SetNumberFitPoints(Int_t npfits)
virtual TF1FunctorPointer * Clone() const
std::vector< Double_t > fBeta
Array alpha. for each bin in x the deconvolution r of fIntegral.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
virtual Double_t GetSave(const Double_t *x)
Get value corresponding to X in array of fSave values.
virtual Double_t EvalPar(const Double_t *x, const Double_t *params=0)
Evaluate function with given coordinates and parameters.
bool CheckIndex(Int_t i) const
void SetParNames(const char *name0="p0", const char *name1="p1", const char *name2="p2", const char *name3="p3", const char *name4="p4", const char *name5="p5", const char *name6="p6", const char *name7="p7", const char *name8="p8", const char *name9="p9", const char *name10="p10")
Set parameter names.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
std::vector< Double_t > fParMin
std::vector< std::string > fParNames
virtual Double_t GetMinimumStored() const
virtual Bool_t AddToGlobalList(Bool_t on=kTRUE)
Add to global list of functions (gROOT->GetListOfFunctions() ) return previous status (true if the fu...
virtual Double_t Mean(Double_t a, Double_t b, const Double_t *params=0, Double_t epsilon=0.000001)
virtual void SetSavedPoint(Int_t point, Double_t value)
Restore value of function saved at point.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
virtual void SetTitle(const char *title="")
Set function title if title has the form "fffffff;xxxx;yyyy", it is assumed that the function title i...
virtual TF1 * DrawCopy(Option_t *option="") const
Draw a copy of this function with its current attributes.
TF1()
TF1 default constructor.
static Bool_t RejectedPoint()
See TF1::RejectPoint above.
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 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.
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
TF1FunctorPointerImpl(const ROOT::Math::ParamFunctorTempl< T > &func)
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.
Mother of all ROOT objects.
static std::atomic< Bool_t > fgAddToGlobList
#define ClassDef(name, id)
static void AbsValue(Bool_t reject=kTRUE)
Static function: set the fgAbsValue flag.
TH1 is the base class of all histogramm classes in ROOT.
virtual Double_t Derivative(Double_t x, Double_t *params=0, Double_t epsilon=0.001) const
Returns the first derivative of the function at point x, computed by Richardson's extrapolation metho...
TObject * fParent
Array gamma.
virtual void SetParName(Int_t ipar, const char *name)
Set name of parameter number ipar.
auto GetTheRightOp(T(F::*opPtr)(const T *, const double *)) -> decltype(opPtr)
TF1 & operator=(const TF1 &rhs)
Operator =.
virtual Int_t GetNDF() const
Return the number of degrees of freedom in the fit the fNDF parameter has been previously computed du...
ParamFunctorTempl< double > ParamFunctor
std::vector< Double_t > fParameters
void DoInitialize(EAddToList addToGlobList)
Common initialization of the TF1.
static Bool_t DefaultAddToGlobalList(Bool_t on=kTRUE)
Static method to add/avoid to add automatically functions to the global list (gROOT->GetListOfFunctio...
TF1AbsComposition * fComposition_ptr
Pointer to composition (NSUM or CONV)
std::vector< Double_t > fGamma
Array beta. is approximated by x = alpha +beta*r *gamma*r**2.
virtual Int_t GetNumberFreeParameters() const
Return the number of free parameters.
virtual Double_t GetVariable(const TString &name)
Method or function calling interface.
Fill Area Attributes class.
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set limits for parameter ipar.
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 GetParameter(const TString &name) const
virtual void SetParent(TObject *p=0)
Internal class used by TF1 for defining template specialization for different TF1 constructors.
void IntegrateForNormalization()
int TermCoeffLength(TString &term)
virtual Int_t GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum)
Compute Quantiles for density distribution of this function.
virtual TObject * DrawIntegral(Option_t *option="al")
Draw integral of this function.
void SetParameter(const char *name, Double_t value)
Param Functor class for Multidimensional functions.
virtual ~TF1FunctorPointerImpl()
virtual Double_t GetParameter(Int_t ipar) const
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.
virtual void GetParameters(Double_t *params)
std::unique_ptr< TF1AbsComposition > fComposition
virtual void SetVectorized(Bool_t vectorized)
Double_t GetChisquare() const
virtual void FixParameter(Int_t ipar, Double_t value)
Fix the value of a parameter The specified value will be used in a fit operation.
void SetParameter(Int_t iparam, Double_t value)
virtual Bool_t IsLinear() const
Namespace for new Math classes and functions.
virtual Double_t IntegralError(Double_t a, Double_t b, const Double_t *params=0, const Double_t *covmat=0, Double_t epsilon=1.E-2)
Return Error on Integral of a parametric function between a and b due to the parameter uncertainties ...
virtual void Print(Option_t *option="") const
Print TNamed name and title.
T GradientParTempl(Int_t ipar, const T *x, Double_t eps=0.01)
virtual TFormula * GetFormula()
std::vector< Double_t > fParMax
virtual Double_t GetXmin() const
virtual void ReleaseParameter(Int_t ipar)
Release parameter number ipar If used in a fit, the parameter can vary freely.