73   template <
class FitObject>
 
   76   template <
class FitObject>
 
   79   template <
class FitObject>
 
 
   89      Error(
"Fit", 
"function may not be null pointer");
 
   93      Error(
"Fit", 
"function is zombie");
 
   99      Error(
"Fit", 
"function %s has illegal number of parameters = %d", 
f1->
GetName(), 
npar);
 
  105      Error(
"Fit",
"function %s dimension, %d, is greater than fit object dimension, %d",
 
  110      Error(
"Fit",
"function %s dimension, %d, is smaller than fit object dimension -1, %d",
 
 
  132template<
class FitObject>
 
  151      if (
fitOption.Integral) 
Info(
"Fit",
"Ignore Integral option. Model function dimension is less than the data object dimension");
 
  152      if (
fitOption.Like) 
Info(
"Fit",
"Ignore Likelihood option. Model function dimension is less than the data object dimension");
 
  168   std::shared_ptr<ROOT::Fit::Fitter> fitter(
new ROOT::Fit::Fitter(std::static_pointer_cast<ROOT::Fit::FitResult>(
tfr) ) );
 
  210      Warning(
"Fit",
"Fit data is empty ");
 
  216   for (
unsigned int i = 0; i < 
fitdata->Size(); ++i) {
 
  262   for (
int i = 0; i < 
npar; ++i) {
 
  286         double step = 0.1 * (
pup - 
plow);
 
  320         std::string 
type = 
"Robust";
 
  348   printf(
"do now  fit...\n");
 
  367      bool weight = ((
fitOption.Like & 2) == 2);
 
  379      Warning(
"Fit",
"Abnormal termination of minimization.");
 
  411         if (fitter->GetMinimizer() && fitConfig.
MinimizerType() == 
"Minuit" &&
 
  413            fitter->GetMinimizer()->PrintResults(); 
 
  418            fitResult.
Print(std::cout);
 
  454         tfr->SetTitle(title);
 
 
  469   if (
range.Size(0) == 0) {
 
  480      if (
range.Size(1) == 0) {
 
  491      if (
range.Size(2) == 0) {
 
  498         range.AddRange(2,zmin,zmax);
 
  502   std::cout << 
"xmin,xmax" << 
xmin << 
"  " << 
xmax << std::endl;
 
 
  521   else if (
range.Size(0) == 0) {
 
  523      double xmin = std::numeric_limits<double>::infinity();
 
  524      double xmax = -std::numeric_limits<double>::infinity();
 
  527      while (  (
g = (
TGraph*) next() ) ) {
 
  528         double x1 = 0, 
x2 = 0, 
y1 = 0, 
y2 = 0;
 
 
  543   if (
range.Size(0) == 0)  {
 
  544      double xmin = 
gr->GetXmin();
 
  545      double xmax = 
gr->GetXmax();
 
  548   if (
range.Size(1) == 0)  {
 
  549      double ymin = 
gr->GetYmin();
 
  550      double ymax = 
gr->GetYmax();
 
 
  561   for ( 
int i = 0; i < ndim; ++i ) {
 
  562      if ( 
range.Size(i) == 0 ) {
 
 
  569template<
class FitObject>
 
  575   std::cout <<
"draw and store fit function " << 
f1->
GetName() << std::endl;
 
  583   if (
range.Size(2) ) 
range.GetRange(2,zmin,zmax);
 
  587   std::cout <<
"draw and store fit function " << 
f1->
GetName()
 
  588             << 
" Range in x = [ " << 
xmin << 
" , " << 
xmax << 
" ]" << std::endl;
 
  592   if (funcList == 
nullptr){
 
  593      Error(
"StoreAndDrawFitFunction",
"Function list has not been created - cannot store the fitted function");
 
  605      while ((obj = next())) {
 
  637      fnew1->AddToGlobalList(
false);
 
  638   } 
else if (ndim < 3) {
 
  653      fnew2->AddToGlobalList(
false);
 
  669      fnew3->AddToGlobalList(
false);
 
  676      if (!
gPad || (
gPad && 
gPad->GetListOfPrimitives()->FindObject(
h1) == 
nullptr ) )
 
 
  692   if (
option == 
nullptr) 
return;
 
  699   if (
type == EFitObjectType::kHistogram) {
 
  752            Warning(
"Fit",
"Cannot use P or X option in combination of L. Ignore the chi2 option and perform a likelihood fit");
 
  756   else if (
type == EFitObjectType::kGraph) {
 
  764         int start = opt.
Index(
"H=0.");
 
  771         h = atof(num.
Data());
 
  785         Warning(
"FitOptionsMake",
"Cannot use User (U) fit option when running in multi-thread mode. The option is ignored");
 
 
  809      Info(
"CheckGraphFitOptions",
"L (Log Likelihood fit) is an invalid option when fitting a graph. It is ignored");
 
  813      Info(
"CheckGraphFitOptions",
"I (use function integral) is an invalid option when fitting a graph. It is ignored");
 
 
  825   std::shared_ptr<ROOT::Fit::UnBinData> 
fitdata(
data);
 
  829   for (
unsigned int i = 0; i < 
fitdata->Size(); ++i) {
 
  834      Warning(
"Fit",
"Fit data is empty ");
 
  845   unsigned int dim = 
fitdata->NDim();
 
  860   for (
int i = 0; i < 
npar; ++i) {
 
  879      double err = 
fitfunc->GetParError(i);
 
  883         double step = 0.1 * (
pup - 
plow);
 
  918      Warning(
"UnBinFit",
"Abnormal termination of minimization.");
 
  962      tfr->SetTitle(title);
 
 
  977      Warning(
"HFit::FitObject",
"A weighted likelihood fit is requested but histogram is not weighted - do a standard Likelihood fit");
 
 
 1035template<
class FitObject>
 
 1050   if (
data.Size() == 0 ) {
 
 1051      Warning(
"Chisquare",
"data set is empty - return -1");
 
 
const Bool_t kIterBackward
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
Option_t Option_t TPoint TPoint const char y1
 
R__EXTERN TVirtualMutex * gROOTMutex
 
R__EXTERN TVirtualMutex * gGlobalMutex
 
#define R__LOCKGUARD(mutex)
 
Class describing the binned data sets : vectors of x coordinates, y values and optionally error on y ...
 
class describing the range in the coordinates it supports multiple range in a coordinate.
 
Class describing the configuration of the fit, options and parameter settings using the ROOT::Fit::Pa...
 
void SetMinimizer(const char *type, const char *algo=nullptr)
set minimizer type
 
void SetMinosErrors(bool on=true)
set Minos errors computation to be performed after fitting
 
void SetNormErrors(bool on=true)
set the option to normalize the error on the result according to chi2/ndf
 
bool NormalizeErrors() const
flag to check if resulting errors are be normalized according to chi2/ndf
 
void SetMinimizerOptions(const ROOT::Math::MinimizerOptions &minopt)
set all the minimizer options using class MinimizerOptions
 
void SetWeightCorrection(bool on=true)
apply the weight correction for error matrix computation
 
void SetParabErrors(bool on=true)
set parabolic errors
 
const std::string & MinimizerType() const
return type of minimizer package
 
const ParameterSettings & ParSettings(unsigned int i) const
get the parameter settings for the i-th parameter (const method)
 
ROOT::Math::MinimizerOptions & MinimizerOptions()
access to the minimizer control parameter (non const method)
 
class containing the result of the fit and all the related information (fitted parameter values,...
 
bool IsEmpty() const
True if a fit result does not exist (even invalid) with parameter values.
 
const std::vector< double > & Errors() const
parameter errors (return st::vector)
 
const std::vector< double > & Parameters() const
parameter values (return std::vector)
 
unsigned int Ndf() const
Number of degree of freedom.
 
double Chi2() const
Return the Chi2 value after fitting In case of unbinned fits (or not defined one, see the documentati...
 
void Print(std::ostream &os, bool covmat=false) const
print the result and optionally covariance matrix and correlations
 
void PrintCovMatrix(std::ostream &os) const
print error matrix and correlations
 
int Status() const
minimizer status code
 
Fitter class, entry point for performing all type of fits.
 
Class, describing value, limits and step size of the parameters Provides functionality also to set/re...
 
Class describing the un-binned data sets (just x coordinates values) of any dimensions.
 
void SetPrintLevel(int level)
set print level
 
void SetTolerance(double tol)
set the tolerance
 
Class to Wrap a ROOT Function class (like TF1) in a IParamMultiFunction interface of multi-dimensions...
 
Class to manage histogram axis.
 
Backward compatible implementation of TVirtualFitter.
 
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
 
virtual Int_t GetNumber() const
 
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...
 
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
 
virtual void SetChisquare(Double_t chi2)
 
virtual Int_t GetNpar() const
 
virtual void SetParErrors(const Double_t *errors)
Set errors for all active parameters when calling this function, the array errors must have at least ...
 
virtual Double_t * GetParameters() const
 
void Copy(TObject &f1) const override
Copy this F1 to a new F1.
 
virtual void SetNumberFitPoints(Int_t npfits)
 
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
 
virtual Bool_t IsLinear() const
 
virtual void SetParameters(const Double_t *params)
 
TClass * IsA() const override
 
virtual Int_t GetNdim() const
 
A 2-Dim function with parameters.
 
A 3-Dim function with parameters.
 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
 
Extends the ROOT::Fit::Result class with a TNamed inheritance providing easy possibility for I/O.
 
Graphics object made of three arrays X, Y and Z with the same number of points each.
 
A TGraph is an object made of two arrays X and Y with npoints each.
 
virtual TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases.
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual Int_t GetDimension() const
 
void Draw(Option_t *option="") override
Draw this histogram with options.
 
TList * GetListOfFunctions() const
 
virtual Int_t GetSumw2N() const
 
Multidimensional histogram base.
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
A TMultiGraph is a collection of TGraph (or derived) objects.
 
TList * GetListOfGraphs() const
 
TH1F * GetHistogram()
Returns a pointer to the histogram used to draw the axis.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
R__ALWAYS_INLINE Bool_t IsZombie() const
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
void ToUpper()
Change string to upper case.
 
TString & Remove(Ssiz_t pos)
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
Abstract Base Class for Fitting.
 
void(* FCNFunc_t)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
 
static TVirtualFitter * GetFitter()
static: return the current Fitter
 
static void SetFitter(TVirtualFitter *fitter, Int_t maxpar=25)
Static function to set an alternative fitter.
 
void GetDrawingRange(TH1 *h1, ROOT::Fit::DataRange &range)
 
void GetFunctionRange(const TF1 &f1, ROOT::Fit::DataRange &range)
 
int CheckFitFunction(const TF1 *f1, int hdim)
 
TFitResultPtr Fit(FitObject *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
 
double ComputeChi2(const FitObject &h1, TF1 &f1, bool useRange, ROOT::Fit::EChisquareType type)
 
void FitOptionsMake(const char *option, Foption_t &fitOption)
 
void CheckGraphFitOptions(Foption_t &fitOption)
 
void StoreAndDrawFitFunction(FitObject *h1, TF1 *f1, const ROOT::Fit::DataRange &range, bool, bool, const char *goption)
 
int GetDimension(const TH1 *h1)
 
TFitResultPtr FitObject(TH1 *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
fitting function for a TH1 (called from TH1::Fit)
 
double Chisquare(const TH1 &h1, TF1 &f1, bool useRange, EChisquareType type)
compute the chi2 value for an histogram given a function (see TH1::Chisquare for the documentation)
 
void FitOptionsMake(EFitObjectType type, const char *option, Foption_t &fitOption)
Decode list of options into fitOption.
 
void Init2DGaus(const ROOT::Fit::BinData &data, TF1 *f1)
compute initial parameter for 2D gaussian function given the fit data Set the sigma limits for zero t...
 
TFitResultPtr UnBinFit(ROOT::Fit::UnBinData *data, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption)
fit an unbin data set (from tree or from histogram buffer) using a TF1 pointer and fit options.
 
void FillData(BinData &dv, const TH1 *hist, TF1 *func=nullptr)
fill the data vector from a TH1.
 
void InitExpo(const ROOT::Fit::BinData &data, TF1 *f1)
compute initial parameter for an exponential function given the fit data Set the constant and slope a...
 
void InitGaus(const ROOT::Fit::BinData &data, TF1 *f1)
compute initial parameter for gaussian function given the fit data Set the sigma limits for zero top ...
 
std::string ToString(const T &val)
Utility function for conversion to strings.
 
Bool_t IsImplicitMTEnabled()
Returns true if the implicit multi-threading in ROOT is enabled.
 
Int_t Finite(Double_t x)
Check if it is finite with a mask in order to be consistent in presence of fast math.
 
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Returns x raised to the power y.
 
DataOptions : simple structure holding the options on how the data are filled.
 
bool fErrors1
use all errors equal to 1, i.e. fit without errors (default is false)
 
bool fNormBinVolume
normalize data by a normalized the bin volume (bin volume divided by a reference value)
 
bool fUseRange
use the function range when creating the fit data (default is false)
 
bool fUseEmpty
use empty bins (default is false) with a fixed error of 1
 
bool fIntegral
use integral of bin content instead of bin center (default is false)
 
bool fExpErrors
use expected errors from the function and not from the data
 
bool fBinVolume
normalize data by the bin volume (it is used in the Poisson likelihood fits)
 
bool fCoordErrors
use errors on the x coordinates when available (default is true)