diff --git a/hist/hist/inc/HFitInterface.h b/hist/hist/inc/HFitInterface.h index c79831d092a8ddd06556964d51626e31c51ea65f..f917d0e4b84bdbe527cbff58547956be5620f1ff 100644 --- a/hist/hist/inc/HFitInterface.h +++ b/hist/hist/inc/HFitInterface.h @@ -85,7 +85,7 @@ namespace ROOT { deleting the data after the fit. User calling this function MUST NOT delete UnBinData after calling it. */ - int UnBinFit(ROOT::Fit::UnBinData * data, TF1 * f1 , Foption_t & option , const ROOT::Math::MinimizerOptions & moption); + TFitResultPtr UnBinFit(ROOT::Fit::UnBinData * data, TF1 * f1 , Foption_t & option , const ROOT::Math::MinimizerOptions & moption); /** fill the data vector from a TH1. Pass also the TF1 function which is diff --git a/hist/hist/inc/TGraph.h b/hist/hist/inc/TGraph.h index 59c84968c689be88feba035b823c286647732711..af28b7272d9e6b52a28ca1db01a4833734552aa4 100644 --- a/hist/hist/inc/TGraph.h +++ b/hist/hist/inc/TGraph.h @@ -48,6 +48,8 @@ class TCollection; class TF1; class TSpline; +#include "TFitResultPtr.h" + class TGraph : public TNamed, public TAttLine, public TAttFill, public TAttMarker { protected: @@ -114,8 +116,8 @@ public: virtual void Expand(Int_t newsize, Int_t step); virtual TObject *FindObject(const char *name) const; virtual TObject *FindObject(const TObject *obj) const; - virtual Int_t Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); // *MENU* - virtual Int_t Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); + virtual TFitResultPtr Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); // *MENU* + virtual TFitResultPtr Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); virtual void FitPanel(); // *MENU* Bool_t GetEditable() const; TF1 *GetFunction(const char *name) const; diff --git a/hist/hist/inc/TGraph2D.h b/hist/hist/inc/TGraph2D.h index 8e241ae1897639c70d90cd46626a0a4621277e65..a4ea835264bf2d3b9396c2c43b19557246df8dc1 100644 --- a/hist/hist/inc/TGraph2D.h +++ b/hist/hist/inc/TGraph2D.h @@ -45,6 +45,8 @@ class TH2D; class TView; class TDirectory; +#include "TFitResultPtr.h" + class TGraph2D : public TNamed, public TAttLine, public TAttFill, public TAttMarker { protected: @@ -97,8 +99,8 @@ public: void ExecuteEvent(Int_t event, Int_t px, Int_t py); virtual TObject *FindObject(const char *name) const; virtual TObject *FindObject(const TObject *obj) const; - virtual Int_t Fit(const char *formula ,Option_t *option="" ,Option_t *goption=""); // *MENU* - virtual Int_t Fit(TF2 *f2 ,Option_t *option="" ,Option_t *goption=""); // *MENU* + virtual TFitResultPtr Fit(const char *formula ,Option_t *option="" ,Option_t *goption=""); // *MENU* + virtual TFitResultPtr Fit(TF2 *f2 ,Option_t *option="" ,Option_t *goption=""); // *MENU* virtual void FitPanel(); // *MENU* TList *GetContourList(Double_t contour); TDirectory *GetDirectory() const {return fDirectory;} diff --git a/hist/hist/inc/THnSparse.h b/hist/hist/inc/THnSparse.h index 9dd2c2e48e5592a8a365a90de57851850a67133a..b0facdd7155fddc1dedd6b8dd84cc17dc22b99b7 100644 --- a/hist/hist/inc/THnSparse.h +++ b/hist/hist/inc/THnSparse.h @@ -59,6 +59,8 @@ class TH2D; class TH3D; class TF1; +#include "TFitResultPtr.h" + class THnSparseArrayChunk: public TObject { private: diff --git a/hist/hist/inc/TMultiGraph.h b/hist/hist/inc/TMultiGraph.h index fdf9c9b92c1f98ee63f040382c328669ed8f5aa0..6e84c7261997f3429843b8a1b092b86ae3b57e5b 100644 --- a/hist/hist/inc/TMultiGraph.h +++ b/hist/hist/inc/TMultiGraph.h @@ -32,6 +32,8 @@ class TAxis; class TBrowser; class TGraph; +#include "TFitResultPtr.h" + class TMultiGraph : public TNamed { protected: @@ -54,8 +56,8 @@ public: virtual void Browse(TBrowser *b); virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); virtual void Draw(Option_t *chopt=""); - virtual Int_t Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); - virtual Int_t Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t rxmin=0, Axis_t rxmax=0); + virtual TFitResultPtr Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); + virtual TFitResultPtr Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t rxmin=0, Axis_t rxmax=0); virtual void FitPanel(); // *MENU* virtual Option_t *GetGraphDrawOption(const TGraph *gr) const; virtual void LeastSquareLinearFit(Int_t ndata, Double_t &a0, Double_t &a1, Int_t &ifail, Double_t xmin, Double_t xmax); diff --git a/hist/hist/src/HFitImpl.cxx b/hist/hist/src/HFitImpl.cxx index 6939405b0495094f27a9c283beac5d075c0f1eea..1cd1d14933629b8d4424d56947c1158cd27cf132 100644 --- a/hist/hist/src/HFitImpl.cxx +++ b/hist/hist/src/HFitImpl.cxx @@ -594,7 +594,7 @@ void HFit::CheckGraphFitOptions(Foption_t & foption) { // implementation of unbin fit function (defined in HFitInterface) -int ROOT::Fit::UnBinFit(ROOT::Fit::UnBinData * fitdata, TF1 * fitfunc, Foption_t & fitOption , const ROOT::Math::MinimizerOptions & minOption) { +TFitResultPtr ROOT::Fit::UnBinFit(ROOT::Fit::UnBinData * fitdata, TF1 * fitfunc, Foption_t & fitOption , const ROOT::Math::MinimizerOptions & minOption) { // do unbin fit, ownership of fitdata is passed later to the TBackFitter class #ifdef DEBUG @@ -710,7 +710,19 @@ int ROOT::Fit::UnBinFit(ROOT::Fit::UnBinData * fitdata, TF1 * fitfunc, Foption_t if (fitOption.Verbose) bcfitter->PrintResults(2,0.); else if (!fitOption.Quiet) bcfitter->PrintResults(1,0.); - return iret; + if (fitOption.StoreResult) + { + TFitResult* fr = new TFitResult(fitResult); + TString name = "TFitResult-"; + name = name + "UnBinData-" + fitfunc->GetName(); + TString title = "TFitResult-"; + title += name; + fr->SetName(name); + fr->SetTitle(title); + return TFitResultPtr(fr); + } + else + return TFitResultPtr(iret); } diff --git a/hist/hist/src/TGraph.cxx b/hist/hist/src/TGraph.cxx index c7f8ea030b6ba6d0809a1f3bda597f359e0abae7..aa966514cf36a52ad25790764ccc9944daac876d 100644 --- a/hist/hist/src/TGraph.cxx +++ b/hist/hist/src/TGraph.cxx @@ -903,7 +903,7 @@ TObject *TGraph::FindObject(const TObject *obj) const //______________________________________________________________________________ -Int_t TGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t xmin, Axis_t xmax) +TFitResultPtr TGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t xmin, Axis_t xmax) { // Fit this graph with function with name fname. // @@ -929,7 +929,7 @@ Int_t TGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t xmin, //______________________________________________________________________________ -Int_t TGraph::Fit(TF1 *f1, Option_t *option, Option_t *goption, Axis_t rxmin, Axis_t rxmax) +TFitResultPtr TGraph::Fit(TF1 *f1, Option_t *option, Option_t *goption, Axis_t rxmin, Axis_t rxmax) { // Fit this graph with function f1. // diff --git a/hist/hist/src/TGraph2D.cxx b/hist/hist/src/TGraph2D.cxx index 68445c4aff2c863fccacc9afbf3b1b4d2572a667..4f784f3b062bd1529b409dadba34d07f34e54ffc 100644 --- a/hist/hist/src/TGraph2D.cxx +++ b/hist/hist/src/TGraph2D.cxx @@ -610,7 +610,7 @@ TObject *TGraph2D::FindObject(const TObject *obj) const //______________________________________________________________________________ -Int_t TGraph2D::Fit(const char *fname, Option_t *option, Option_t *) +TFitResultPtr TGraph2D::Fit(const char *fname, Option_t *option, Option_t *) { // Fits this graph with function with name fname // Predefined functions such as gaus, expo and poln are automatically @@ -634,7 +634,7 @@ Int_t TGraph2D::Fit(const char *fname, Option_t *option, Option_t *) //______________________________________________________________________________ -Int_t TGraph2D::Fit(TF2 *f2, Option_t *option, Option_t *) +TFitResultPtr TGraph2D::Fit(TF2 *f2, Option_t *option, Option_t *) { // Fits this 2D graph with function f2 // diff --git a/hist/hist/src/TMultiGraph.cxx b/hist/hist/src/TMultiGraph.cxx index c799a62c3f2e2e71a33b53e9c8dceed812636da0..ef156c7ff038635fb17b9ee51e42182ba29b1208 100644 --- a/hist/hist/src/TMultiGraph.cxx +++ b/hist/hist/src/TMultiGraph.cxx @@ -240,7 +240,7 @@ void TMultiGraph::Draw(Option_t *option) //______________________________________________________________________________ -Int_t TMultiGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t xmin, Axis_t xmax) +TFitResultPtr TMultiGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t xmin, Axis_t xmax) { // Fit this graph with function with name fname. // @@ -261,7 +261,7 @@ Int_t TMultiGraph::Fit(const char *fname, Option_t *option, Option_t *, Axis_t x //______________________________________________________________________________ -Int_t TMultiGraph::Fit(TF1 *f1, Option_t *option, Option_t *goption, Axis_t rxmin, Axis_t rxmax) +TFitResultPtr TMultiGraph::Fit(TF1 *f1, Option_t *option, Option_t *goption, Axis_t rxmin, Axis_t rxmax) { // Fit this multigraph with function f1. //