// @(#)root/hist:$Id$
// Author: David Gonzalez Maline   12/11/09

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TFitResult.h"
#include "Math/WrappedMultiTF1.h"

#include <iostream>

/**
TFitResult extends the ROOT::Fit::Result class with a TNamed inheritance
providing easy possibility for I/O

 */

ClassImp(TFitResult);

TFitResult::TFitResult(const ROOT::Fit::FitResult& f) : 
   TNamed("TFitResult","TFitResult"),
   ROOT::Fit::FitResult(f) 
{
   // constructor from an IFitResult
   // copy the contained TF1 pointer function if it is 
   ROOT::Math::WrappedMultiTF1 * wfunc = dynamic_cast<ROOT::Math::WrappedMultiTF1 *>(ModelFunction() );
   if (wfunc)  wfunc->SetAndCopyFunction();
}


void TFitResult::Print(Option_t *option) const
{
   // print result of the fit, by default chi2, parameter values and errors
   // if option "V" is given print also error matrix and correlation

   TString opt(option);
   opt.ToUpper();
   bool doCovMat = opt.Contains("V");
   ROOT::Fit::FitResult::Print( std::cout, doCovMat);
}

TMatrixDSym TFitResult::GetCovarianceMatrix()  const
{
   // Return the covariance matrix from fit
   // The matrix is a symmetric matrix with a size N equal to
   // the total number of parameters considered in the fit including the fixed ones
   // The matrix row and columns corresponding to the fixed parameters will contain only zero's

   if (CovMatrixStatus() == 0) {
      Warning("GetCovarianceMatrix","covariance matrix is not available");
      return TMatrixDSym();
   }
   TMatrixDSym mat(NPar());
   ROOT::Fit::FitResult::GetCovarianceMatrix<TMatrixDSym>(mat);
   return mat;
}

TMatrixDSym TFitResult::GetCorrelationMatrix()  const
{
   // Return the correlation matrix from fit.
   // The matrix is a symmetric matrix with a size N equal to
   // the total number of parameters considered in the fit including the fixed ones
   // The matrix row and columns corresponding to the fixed parameters will contain only zero's
   if (CovMatrixStatus() == 0) {
      Warning("GetCorrelationMatrix","correlation matrix is not available");
      return TMatrixDSym();
   }
   TMatrixDSym mat(NPar());
   ROOT::Fit::FitResult::GetCorrelationMatrix<TMatrixDSym>(mat);
   return mat;
}


 TFitResult.cxx:1
 TFitResult.cxx:2
 TFitResult.cxx:3
 TFitResult.cxx:4
 TFitResult.cxx:5
 TFitResult.cxx:6
 TFitResult.cxx:7
 TFitResult.cxx:8
 TFitResult.cxx:9
 TFitResult.cxx:10
 TFitResult.cxx:11
 TFitResult.cxx:12
 TFitResult.cxx:13
 TFitResult.cxx:14
 TFitResult.cxx:15
 TFitResult.cxx:16
 TFitResult.cxx:17
 TFitResult.cxx:18
 TFitResult.cxx:19
 TFitResult.cxx:20
 TFitResult.cxx:21
 TFitResult.cxx:22
 TFitResult.cxx:23
 TFitResult.cxx:24
 TFitResult.cxx:25
 TFitResult.cxx:26
 TFitResult.cxx:27
 TFitResult.cxx:28
 TFitResult.cxx:29
 TFitResult.cxx:30
 TFitResult.cxx:31
 TFitResult.cxx:32
 TFitResult.cxx:33
 TFitResult.cxx:34
 TFitResult.cxx:35
 TFitResult.cxx:36
 TFitResult.cxx:37
 TFitResult.cxx:38
 TFitResult.cxx:39
 TFitResult.cxx:40
 TFitResult.cxx:41
 TFitResult.cxx:42
 TFitResult.cxx:43
 TFitResult.cxx:44
 TFitResult.cxx:45
 TFitResult.cxx:46
 TFitResult.cxx:47
 TFitResult.cxx:48
 TFitResult.cxx:49
 TFitResult.cxx:50
 TFitResult.cxx:51
 TFitResult.cxx:52
 TFitResult.cxx:53
 TFitResult.cxx:54
 TFitResult.cxx:55
 TFitResult.cxx:56
 TFitResult.cxx:57
 TFitResult.cxx:58
 TFitResult.cxx:59
 TFitResult.cxx:60
 TFitResult.cxx:61
 TFitResult.cxx:62
 TFitResult.cxx:63
 TFitResult.cxx:64
 TFitResult.cxx:65
 TFitResult.cxx:66
 TFitResult.cxx:67
 TFitResult.cxx:68
 TFitResult.cxx:69
 TFitResult.cxx:70
 TFitResult.cxx:71
 TFitResult.cxx:72
 TFitResult.cxx:73
 TFitResult.cxx:74
 TFitResult.cxx:75
 TFitResult.cxx:76
 TFitResult.cxx:77
 TFitResult.cxx:78