56using std::ostream, std::string, std::pair, std::vector, std::setw;
 
   78     _status(
other._status),
 
   79     _covQual(
other._covQual),
 
   80     _numBadNLL(
other._numBadNLL),
 
   81     _minNLL(
other._minNLL),
 
   86     _statusHistory(
other._statusHistory)
 
   94  if (
other._randomPars) {
 
 
  141      rrv->deleteSharedProperties() ;
 
 
  158      rrv->deleteSharedProperties() ;
 
 
  176      rrv->deleteSharedProperties() ;
 
 
  188    coutE(InputArguments) << 
"RooFitResult::statusCodeHistory(" << 
GetName()
 
  189           << 
" ERROR request for status history slot " 
 
  202    coutE(InputArguments) << 
"RooFitResult::statusLabelHistory(" << 
GetName()
 
  203           << 
" ERROR request for status history slot " 
 
  237               const char *options)
 const 
  241  if(
nullptr == 
par1) {
 
  242    coutE(InputArguments) << 
"RooFitResult::correlationPlot: parameter not floated in fit: " << 
parName1 << std::endl;
 
  246  if(
nullptr == 
par2) {
 
  247    coutE(InputArguments) << 
"RooFitResult::correlationPlot: parameter not floated in fit: " << 
parName2 << std::endl;
 
  256  double x1= 
par1->getVal();
 
  257  double x2= 
par2->getVal();
 
  258  double s1= 
par1->getError();
 
  259  double s2= 
par2->getError();
 
  286    box->SetFillStyle(0);
 
 
  349   double tmp= L(k,
iPar);
 
  378    par->setVal(par->getVal() + 
g(
index++));
 
 
  393    coutE(InputArguments) << 
"RooFitResult::correlation(" << 
GetName() << 
") parameter " << 
parname1 << 
" is not a floating fit parameter" << std::endl ;
 
  397    coutE(InputArguments) << 
"RooFitResult::correlation(" << 
GetName() << 
") parameter " << 
parname2 << 
" is not a floating fit parameter" << std::endl ;
 
 
  417    coutE(InputArguments) << 
"RooFitResult::correlation: variable " << 
parname << 
" not a floating parameter in fit" << std::endl ;
 
 
  436    coutE(InputArguments) << 
"RooFitResult::globalCorr: variable " << 
parname << 
" not a floating parameter in fit" << std::endl ;
 
 
  468  return (*
_CM)(row,col) ;
 
 
  477  return (*
_VM)(row,col) ;
 
 
  491     << 
indent << 
"  RooFitResult: minimized FCN value: " << 
_minNLL << 
", estimated distance to minimum: " << 
_edm << std::endl
 
  492     << 
indent << 
"                covariance matrix quality: " ;
 
  494  case -1 : os << 
"Unknown, matrix was externally provided" ; 
break ;
 
  495  case 0  : os << 
"Not calculated at all" ; 
break ;
 
  496  case 1  : os << 
"Approximation only, not accurate" ; 
break ;
 
  497  case 2  : os << 
"Full matrix, but forced positive-definite" ; 
break ;
 
  498  case 3  : os << 
"Full, accurate covariance matrix" ; 
break ;
 
  501  os << 
indent << 
"                Status : " ;
 
  503    os << iter->first << 
"=" << iter->second << 
" " ;
 
  505  os << std::endl << std::endl;
 
  509      os << 
indent << 
"    Constant Parameter    Value     " << std::endl
 
  510    << 
indent << 
"  --------------------  ------------" << std::endl ;
 
  535      os << 
indent << 
"    Floating Parameter  InitialValue    FinalValue (+HiError,-LoError)    GblCorr." << std::endl
 
  536    << 
indent << 
"  --------------------  ------------  ----------------------------------  --------" << std::endl ;
 
  538      os << 
indent << 
"    Floating Parameter  InitialValue    FinalValue +/-  Error     GblCorr." << std::endl
 
  539    << 
indent << 
"  --------------------  ------------  --------------------------  --------" << std::endl ;
 
  552   os << (
doAsymErr?
"        ":
"") << 
" +/- " << setw(9)  << 
Form(
"%9.2e",err) ;
 
  565    os << 
indent << 
"    Floating Parameter    FinalValue +/-  Error   " << std::endl
 
  566       << 
indent << 
"  --------------------  --------------------------" << std::endl ;
 
  572    << 
" +/- " << setw(9)  << 
Form(
"%9.2e",err)
 
 
  589    coutI(Minimization) << 
"RooFitResult::fillCorrMatrix: number of floating parameters is zero, correlation matrix not filled" << std::endl ;
 
  594    coutE(Minimization) << 
"RooFitResult::fillCorrMatrix: ERROR: list of initial parameters must be filled first" << std::endl ;
 
 
  634    gcName.Append(arg->GetName()) ;
 
  637    gcTitle.Append(
" Global Correlation") ;
 
  642    name.Append(arg->GetName()) ;
 
  649      cName.Append(arg->GetName()) ;
 
  654      cTitle.Append(arg->GetName()) ;
 
  671    for (
unsigned int it = 0; it < 
corrMatrixCol.size() ; ++it) {
 
  673      double value = (*_CM)(i,it) ;
 
  675      (*_CM)(i,it) = 
value;
 
 
  711  std::cout << 
"RooFitResult::isIdentical: " << 
msgHead << 
" " << 
tv->GetName() << 
" differs in value:\t" 
  712      << 
tv->getVal() << 
" vs.\t" << 
ov->getVal()
 
  713      << 
"\t(" << (
tv->getVal()-
ov->getVal())/
ov->getVal() << 
")" << std::endl;
 
  718  std::cout << 
"RooFitResult::isIdentical: " << 
msgHead << 
" " << 
tv->GetName() << 
" differs in error:\t" 
  719      << 
tv->getError() << 
" vs.\t" << 
ov->getError()
 
  720      << 
"\t(" << (
tv->getError()-
ov->getError())/
ov->getError() << 
")" << std::endl;
 
  737    return right != 0. ? std::abs((left - right)/right) >= 
tolerance : std::abs(left) >= 
tolerance;
 
  748        if(verbose) std::cout << 
"RooFitResult::isIdentical: cannot find " << prefix << 
" " << 
tv->GetName() << 
" in reference" << std::endl ;
 
  773    if(verbose) std::cout << 
"RooFitResult::isIdentical: minimized value of -log(L) is different " << 
_minNLL << 
" vs. " << 
other._minNLL << std::endl;
 
 
  800    return std::abs(left - right) >= 
tolCorr;
 
  807    other.fillLegacyCorrMatrix() ;
 
  813        if(verbose) std::cout << 
"RooFitResult::isIdentical: cannot find global correlation coefficient " << 
tv->GetName() << 
" in reference" << std::endl ;
 
  825      for (std::size_t i=0 ; i<row->
size() ; i++) {
 
  829          if(verbose) std::cout << 
"RooFitResult::isIdentical: cannot find correlation coefficient " << 
tv->GetName() << 
" in reference" << std::endl ;
 
 
  853         oocoutE(
nullptr, InputArguments) << 
"RooFitResult::lastMinuitFit: ERROR: variable '" << arg->GetName()
 
  854                                               << 
"' is not of type RooRealVar" << std::endl;
 
  867      if (arg->isConstant()) {
 
  881   r->fillPrefitCorrMatrix();
 
 
  929  for (
Int_t i = 0 ; i<
n ; i++) {
 
  931      hh->Fill(i+0.5,
n-
j-0.5,(*
_CM)(i,
j)) ;
 
 
  972      coutW(InputArguments) << 
"RooFitResult::reducedCovarianceMatrix(" << 
GetName() << 
") WARNING input variable " 
  973             << arg->GetName() << 
" was not a floating parameters in fit result and is ignored" << std::endl ;
 
  980   for (std::size_t i=0 ; i<
params2.size() ; i++) {
 
  986   for (
int i = 0; i < 
Vred.GetNrows(); ++i) {
 
  987      for (
int j = 0; 
j < 
Vred.GetNcols(); ++
j) {
 
 
 1012  if (V.GetNcols()==
int(params.
size())) {
 
 1016  double det = V.Determinant() ;
 
 1019    coutE(Eval) << 
"RooFitResult::conditionalCovarianceMatrix(" << 
GetName() << 
") ERROR: covariance matrix is not positive definite (|V|=" 
 1020      << 
det << 
") cannot reduce it" << std::endl ;
 
 1021    throw string(
"RooFitResult::conditionalCovarianceMatrix() ERROR, input covariance matrix is not positive definite") ;
 
 1030      coutW(InputArguments) << 
"RooFitResult::conditionalCovarianceMatrix(" << 
GetName() << 
") WARNING input variable " 
 1031             << arg->GetName() << 
" was not a floating parameters in fit result and is ignored" << std::endl ;
 
 1038    if (
params2.find(arg->GetName())) {
 
 1071  for (
int i=0 ; i<
Vred.GetNcols() ; i++) {
 
 1072    for (
int j=i ; 
j<
Vred.GetNcols() ; 
j++) {
 
 1073      Vred(i,
j) = (S22bar(i,
j) + S22bar(
j,i))/2 ;
 
 
 1100  double det = V.Determinant() ;
 
 1103    coutE(Eval) << 
"RooFitResult::createHessePdf(" << 
GetName() << 
") ERROR: covariance matrix is not positive definite (|V|=" 
 1104      << 
det << 
") cannot construct p.d.f" << std::endl ;
 
 1114      coutW(InputArguments) << 
"RooFitResult::createHessePdf(" << 
GetName() << 
") WARNING input variable " 
 1115             << arg->GetName() << 
" was not a floating parameters in fit result and is ignored" << std::endl ;
 
 1122    if (
params2.find(arg->GetName())) {
 
 1143    mvg->addOwnedComponents(mu) ;
 
 1186  for (
int i=0 ; i<
Vred.GetNcols() ; i++) {
 
 1187    for (
int j=i ; 
j<
Vred.GetNcols() ; 
j++) {
 
 1188      Vred(i,
j) = (S22bar(i,
j) + S22bar(
j,i))/2 ;
 
 1197  ret->addOwnedComponents(mu1) ;
 
 
 1285  if (!opt || 
strlen(opt)==0) {
 
 
 1297  if (
R__b.IsReading()) {
 
 1328      for (
unsigned int i = 0; i < (
unsigned int)
_CM->
GetNcols() ; ++i) {
 
 1332   (*_GC)(i) = 
gcVal.getVal() ;
 
 1336   for (
unsigned int it = 0; it < (
unsigned int)
_CM->
GetNcols() ; ++it) {
 
 1339     (*_CM)(it,i) = 
value ;
 
 1340     (*_CM)(i,it) = 
value;
 
 1342     (*_VM)(i,it) = (*
_VM)(it,i) ;
 
 
static void indent(ostringstream &buf, int indent_level)
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
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 r
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
TMatrixTSym< Double_t > TMatrixDSym
 
TMatrixT< Float_t > TMatrix
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
TVectorT< Double_t > TVectorD
 
Common abstract base class for objects that represent a value and a "shape" in RooFit.
 
static void ioStreamerPass2Finalize()
Method called by workspace container to finalize schema evolution issues that cannot be handled in a ...
 
TObject * Clone(const char *newname=nullptr) const override
Make a clone of an object using the Streamer facility.
 
RooAbsCollection * snapshot(bool deepCopy=true) const
Take a snap shot of current collection contents.
 
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
 
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
 
void assign(const RooAbsCollection &other) const
Sets the value, cache and constant attribute of any argument in our set that also appears in the othe...
 
Storage_t::size_type size() const
 
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
 
RooAbsArg * find(const char *name) const
Find object with given name in list.
 
Abstract interface for all probability density functions.
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
RooArgList is a container object that can hold multiple RooAbsArg objects.
 
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
Utility base class for RooFit objects that are to be attached to ROOT directories.
 
virtual void Streamer(TBuffer &)
 
void removeFromDir(TObject *obj)
Remove object from directory it was added to.
 
TDirectory * _dir
! Associated directory
 
void appendToDir(TObject *obj, bool forceMemoryResident=false)
Append object to directory.
 
Two-dimensional ellipse that can be used to represent an error contour.
 
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
 
TMatrixDSym conditionalCovarianceMatrix(const RooArgList ¶ms) const
Return a reduced covariance matrix, which is calculated as.
 
double correlation(const RooAbsArg &par1, const RooAbsArg &par2) const
Return correlation between par1 and par2.
 
~RooFitResult() override
Destructor.
 
TList _corrMatrix
! Correlation matrix (list of RooArgLists)
 
std::vector< std::pair< std::string, int > > _statusHistory
History of status codes.
 
const TMatrixDSym & covarianceMatrix() const
Return covariance matrix.
 
TMatrixDSym * _CM
Correlation matrix.
 
bool isIdentical(const RooFitResult &other, double tol=1e-6, double tolCorr=1e-4, bool verbose=true) const
Return true if this fit result is identical to other within tolerances.
 
void setConstParList(const RooArgList &list)
Fill the list of constant parameters.
 
Int_t statusCodeHistory(UInt_t icycle) const
 
void fillCorrMatrix(const std::vector< double > &globalCC, const TMatrixDSym &corrs, const TMatrixDSym &covs)
Function called by RooMinimizer.
 
double _minNLL
NLL at minimum.
 
Int_t _numBadNLL
Number calls with bad (zero,negative) likelihood.
 
TMatrixDSym * _VM
Covariance matrix.
 
void SetNameTitle(const char *name, const char *title) override
Change name and title of RooFitResult object.
 
Int_t defaultPrintContents(Option_t *opt) const override
Configure default contents to be printed.
 
void printClassName(std::ostream &os) const override
Print class name of fit result.
 
RooArgList * _initPars
List of floating parameters with initial values.
 
TClass * IsA() const override
 
RooFitResult(const char *name=nullptr, const char *title=nullptr)
Constructor with name and title.
 
TMatrixDSym reducedCovarianceMatrix(const RooArgList ¶ms) const
Return a reduced covariance matrix (Note that Vred is a simple sub-matrix of V, row/columns are order...
 
Int_t _covQual
MINUIT quality code of covariance matrix.
 
void fillPrefitCorrMatrix()
 
RooArgList * _constPars
List of constant parameters.
 
RooArgList * _globalCorr
! List of global correlation coefficients
 
const RooArgList & randomizePars() const
Generate random perturbations of the final parameters using the covariance matrix.
 
const RooArgList * globalCorr()
Return the list of all global correlations.
 
static RooFitResult * prefitResult(const RooArgList ¶mList)
Import the results of the last fit performed by gMinuit, interpreting the fit parameters as the given...
 
void setCovarianceMatrix(TMatrixDSym &V)
Store externally provided correlation matrix in this RooFitResult ;.
 
RooArgList * _finalPars
List of floating parameters with final values.
 
const RooArgList & constPars() const
Return list of constant parameters.
 
Int_t _status
MINUIT status code.
 
bool isIdenticalNoCov(const RooFitResult &other, double tol=1e-6, double tolErr=1e-3, bool verbose=true) const
Return true if this fit result is identical to other within tolerances, ignoring the correlation matr...
 
void SetName(const char *name) override
Change name of RooFitResult object.
 
const char * statusLabelHistory(UInt_t icycle) const
 
void printValue(std::ostream &os) const override
Print the value of the fit result, i.e.g the status, minimized FCN, edm and covariance quality code.
 
void printTitle(std::ostream &os) const override
Print title of fit result.
 
TH2 * correlationHist(const char *name="correlation_matrix") const
Return TH2D of correlation matrix.
 
void fillLegacyCorrMatrix() const
Sanity check.
 
void setInitParList(const RooArgList &list)
Fill the list of initial values of the floating parameters.
 
RooPlot * plotOn(RooPlot *frame, const RooAbsArg &par1, const RooAbsArg &par2, const char *options="ME") const
Add objects to a 2D plot.
 
void Streamer(TBuffer &) override
Stream an object of class RooFitResult.
 
StyleOption defaultPrintStyle(Option_t *opt) const override
Configure mapping of Print() arguments to RooPrintable print styles.
 
double covariance(Int_t row, Int_t col) const
Return the covariance matrix element addressed with numeric indices.
 
TMatrixF * _Lt
! triangular matrix used for generate random perturbations
 
const RooArgList & floatParsFinal() const
Return list of floating parameters after fit.
 
RooArgList * _randomPars
! List of floating parameters with most recent random perturbation applied
 
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print fit result to stream 'os'.
 
TVectorD * _GC
Global correlation coefficients.
 
RooAbsPdf * createHessePdf(const RooArgSet ¶ms) const
Return a p.d.f that represents the fit result as a multi-variate probability densisty function on the...
 
double _edm
Estimated distance to minimum.
 
void setFinalParList(const RooArgList &list)
Fill the list of final values of the floating parameters.
 
void printArgs(std::ostream &os) const override
Print arguments of fit result, i.e. the parameters of the fit.
 
void printName(std::ostream &os) const override
Print name of fit result.
 
const TMatrixDSym & correlationMatrix() const
Return correlation matrix ;.
 
Multivariate Gaussian p.d.f.
 
static void blockDecompose(const TMatrixD &input, const std::vector< int > &map1, const std::vector< int > &map2, TMatrixDSym &S11, TMatrixD &S12, TMatrixD &S21, TMatrixDSym &S22)
Block decomposition of covI according to given maps of observables.
 
Plot frame and a container for graphics objects within that frame.
 
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
 
void addPlotable(RooPlotable *plotable, Option_t *drawOptions="", bool invisible=false, bool refreshNorm=false)
Add the specified plotable object to our plot.
 
A 'mix-in' base class that define the standard RooFit plotting and printing methods.
 
virtual StyleOption defaultPrintStyle(Option_t *opt) const
 
virtual void Streamer(TBuffer &)
 
virtual void printValue(std::ostream &os) const
Interface to print value of object.
 
static double gaussian(TRandom *generator=randomGenerator())
Return a Gaussian random variable with mean 0 and variance 1.
 
Variable that can be changed from the outside.
 
bool hasAsymError(bool allowZero=true) const
 
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
 
Buffer base class used for serializing objects.
 
virtual void RemoveAll(TCollection *col)
Remove all objects in collection col from this collection.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
virtual TList * GetList() const
 
2-D histogram with a double per channel (see TH1 documentation)
 
Service class for 2-D histogram classes.
 
Use the TLine constructor to create a simple line.
 
void Streamer(TBuffer &) override
Stream all objects in the collection to or from the I/O buffer.
 
void Add(TObject *obj) override
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
void Streamer(TBuffer &) override
Stream an object of class TObject.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
 
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
void ToUpper()
Change string to upper case.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)