00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_FIT_RESULT
00017 #define ROO_FIT_RESULT
00018
00019 #include "Riosfwd.h"
00020 #include "RooAbsArg.h"
00021 #include "RooPrintable.h"
00022 #include "RooDirItem.h"
00023 #include "RooArgList.h"
00024
00025 #include "RVersion.h"
00026 #include "TMatrixFfwd.h"
00027 #include "TMatrixDSym.h"
00028 #include "TRootIOCtor.h"
00029
00030 class RooArgSet ;
00031 class RooAbsPdf ;
00032 class RooPlot;
00033 class TObject ;
00034 class TH2 ;
00035 typedef RooArgSet* pRooArgSet ;
00036
00037 class RooFitResult : public TNamed, public RooPrintable, public RooDirItem {
00038 public:
00039
00040
00041 RooFitResult(const char* name=0, const char* title=0) ;
00042 RooFitResult(const RooFitResult& other) ;
00043 virtual TObject* Clone(const char* newname = 0) const {
00044 RooFitResult* r = new RooFitResult(*this) ;
00045 if (newname && *newname) r->SetName(newname) ;
00046 return r ;
00047 }
00048 virtual TObject* clone() const { return new RooFitResult(*this); }
00049 virtual ~RooFitResult() ;
00050
00051 static RooFitResult* lastMinuitFit(const RooArgList& varList=RooArgList()) ;
00052
00053
00054 virtual void printValue(ostream& os) const ;
00055 virtual void printName(ostream& os) const ;
00056 virtual void printTitle(ostream& os) const ;
00057 virtual void printClassName(ostream& os) const ;
00058 virtual void printArgs(ostream& os) const ;
00059 void printMultiline(ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const ;
00060
00061 inline virtual void Print(Option_t *options= 0) const {
00062
00063 printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
00064 }
00065
00066 virtual Int_t defaultPrintContents(Option_t* opt) const ;
00067 virtual StyleOption defaultPrintStyle(Option_t* opt) const ;
00068
00069 RooAbsPdf* createHessePdf(const RooArgSet& params) const ;
00070
00071
00072 inline Int_t status() const {
00073
00074 return _status ;
00075 }
00076 inline Int_t covQual() const {
00077
00078 return _covQual ;
00079 }
00080 inline Int_t numInvalidNLL() const {
00081
00082 return _numBadNLL ;
00083 }
00084 inline Double_t edm() const {
00085
00086 return _edm ;
00087 }
00088 inline Double_t minNll() const {
00089
00090 return _minNLL ;
00091 }
00092 inline const RooArgList& constPars() const {
00093
00094 return *_constPars ;
00095 }
00096 inline const RooArgList& floatParsInit() const {
00097
00098 return *_initPars ;
00099 }
00100 inline const RooArgList& floatParsFinal() const {
00101
00102 return *_finalPars ;
00103 }
00104
00105 TH2* correlationHist(const char* name = "correlation_matrix") const ;
00106
00107 Double_t correlation(const RooAbsArg& par1, const RooAbsArg& par2) const {
00108
00109 return correlation(par1.GetName(),par2.GetName()) ;
00110 }
00111 const RooArgList* correlation(const RooAbsArg& par) const {
00112
00113 return correlation(par.GetName()) ;
00114 }
00115
00116 Double_t correlation(const char* parname1, const char* parname2) const ;
00117 const RooArgList* correlation(const char* parname) const ;
00118
00119
00120 const TMatrixDSym& covarianceMatrix() const ;
00121 TMatrixDSym reducedCovarianceMatrix(const RooArgList& params) const ;
00122 const TMatrixDSym& correlationMatrix() const ;
00123
00124
00125
00126 Double_t globalCorr(const RooAbsArg& par) { return globalCorr(par.GetName()) ; }
00127 Double_t globalCorr(const char* parname) ;
00128 const RooArgList* globalCorr() ;
00129
00130
00131
00132 inline RooPlot *plotOn(RooPlot *frame, const RooAbsArg &par1, const RooAbsArg &par2,
00133 const char *options= "ME") const {
00134
00135 return plotOn(frame,par1.GetName(),par2.GetName(),options);
00136 }
00137 RooPlot *plotOn(RooPlot *plot, const char *parName1, const char *parName2,
00138 const char *options= "ME") const;
00139
00140
00141 const RooArgList& randomizePars() const;
00142
00143 Bool_t isIdentical(const RooFitResult& other, Double_t tol=5e-5, Double_t tolCorr=1e-4, Bool_t verbose=kTRUE) const ;
00144
00145 void SetName(const char *name) ;
00146 void SetNameTitle(const char *name, const char* title) ;
00147
00148 protected:
00149
00150 friend class RooMinuit ;
00151 friend class RooMinimizer ;
00152 friend class RooNag ;
00153 void setCovarianceMatrix(TMatrixDSym& V) ;
00154 void setConstParList(const RooArgList& list) ;
00155 void setInitParList(const RooArgList& list) ;
00156 void setFinalParList(const RooArgList& list) ;
00157 inline void setMinNLL(Double_t val) { _minNLL = val ; }
00158 inline void setEDM(Double_t val) { _edm = val ; }
00159 inline void setStatus(Int_t val) { _status = val ; }
00160 inline void setCovQual(Int_t val) { _covQual = val ; }
00161 inline void setNumInvalidNLL(Int_t val) { _numBadNLL=val ; }
00162 void fillCorrMatrix() ;
00163 void fillCorrMatrix(const std::vector<double>& globalCC, const TMatrixDSym& corrs, const TMatrixDSym& covs) ;
00164 void fillLegacyCorrMatrix() const ;
00165
00166 Double_t correlation(Int_t row, Int_t col) const;
00167 Double_t covariance(Int_t row, Int_t col) const;
00168
00169 Int_t _status ;
00170 Int_t _covQual ;
00171 Int_t _numBadNLL ;
00172 Double_t _minNLL ;
00173 Double_t _edm ;
00174 RooArgList* _constPars ;
00175 RooArgList* _initPars ;
00176 RooArgList* _finalPars ;
00177
00178 mutable RooArgList* _globalCorr ;
00179 mutable TList _corrMatrix ;
00180
00181 mutable RooArgList *_randomPars;
00182 mutable TMatrixF* _Lt;
00183
00184 TMatrixDSym* _CM ;
00185 TMatrixDSym* _VM ;
00186 TVectorD* _GC ;
00187
00188 ClassDef(RooFitResult,4)
00189 };
00190
00191 #endif