00001 // @(#)root/roostats:$Id: MCMCIntervalPlot.h 34109 2010-06-24 15:00:16Z moneta $ 00002 // Authors: Kevin Belasco 17/06/2009 00003 // Authors: Kyle Cranmer 17/06/2009 00004 /************************************************************************* 00005 * Project: RooStats * 00006 * Package: RooFit/RooStats * 00007 ************************************************************************* 00008 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. * 00009 * All rights reserved. * 00010 * * 00011 * For the licensing terms see $ROOTSYS/LICENSE. * 00012 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00013 *************************************************************************/ 00014 00015 #ifndef ROOSTATS_MCMCIntervalPlot 00016 #define ROOSTATS_MCMCIntervalPlot 00017 00018 #ifndef ROO_PRINTABLE 00019 #include "RooPrintable.h" 00020 #endif 00021 #ifndef ROO_ARG_SET 00022 #include "RooArgSet.h" 00023 #endif 00024 #ifndef ROOT_TNamed 00025 #include "TNamed.h" 00026 #endif 00027 #ifndef ROOT_TH1 00028 #include "TH1.h" 00029 #endif 00030 #ifndef RooStats_MCMCInterval 00031 #include "RooStats/MCMCInterval.h" 00032 #endif 00033 #ifndef ROO_KEYS_PDF 00034 #include "RooNDKeysPdf.h" 00035 #endif 00036 #ifndef ROO_PRODUCT 00037 #include "RooProduct.h" 00038 #endif 00039 00040 namespace RooStats { 00041 00042 class MCMCIntervalPlot : public TNamed, public RooPrintable { 00043 00044 public: 00045 MCMCIntervalPlot(); 00046 MCMCIntervalPlot(MCMCInterval& interval); 00047 00048 // Destructor of SamplingDistribution 00049 virtual ~MCMCIntervalPlot(); 00050 00051 void SetMCMCInterval(MCMCInterval& interval); 00052 void SetLineColor(Color_t color) {fLineColor = color;} 00053 void SetLineWidth(Int_t width) {fLineWidth = width;} 00054 void SetShadeColor(Color_t color) {fShadeColor = color;} 00055 void SetShowBurnIn(Bool_t showBurnIn) { fShowBurnIn = showBurnIn; } 00056 00057 void Draw(const Option_t* options = NULL); 00058 00059 void DrawChainScatter(RooRealVar& xVar, RooRealVar& yVar); 00060 void DrawParameterVsTime(RooRealVar& param); 00061 void DrawNLLVsTime(); 00062 void DrawNLLHist(const Option_t* options = NULL); 00063 void DrawWeightHist(const Option_t* options = NULL); 00064 00065 private: 00066 00067 MCMCInterval *fInterval; 00068 RooArgSet *fParameters; 00069 TH1* fPosteriorHist; 00070 RooNDKeysPdf* fPosteriorKeysPdf; 00071 RooProduct* fPosteriorKeysProduct; 00072 TH1* fNLLHist; 00073 TH1* fWeightHist; 00074 TH1* fPosteriorHistHistCopy; 00075 TH1* fPosteriorHistTFCopy; 00076 Int_t fDimension; 00077 Color_t fLineColor; 00078 Color_t fShadeColor; 00079 Int_t fLineWidth; 00080 Bool_t fShowBurnIn; 00081 TGraph* fWalk; 00082 TGraph* fBurnIn; 00083 TGraph* fFirst; 00084 TGraph* fParamGraph; 00085 TGraph* fNLLGraph; 00086 00087 protected: 00088 void DrawPosterior(const Option_t* options = NULL); 00089 void* DrawPosteriorHist(const Option_t* options = NULL, 00090 const char* title = NULL, Bool_t scale = kTRUE); 00091 void* DrawPosteriorKeysPdf(const Option_t* options = NULL); 00092 void* DrawPosteriorKeysProduct(const Option_t* options = NULL); 00093 00094 void DrawInterval(const Option_t* options = NULL); 00095 void DrawShortestInterval(const Option_t* options = NULL); 00096 void DrawHistInterval(const Option_t* options = NULL); 00097 void DrawKeysPdfInterval(const Option_t* options = NULL); 00098 void DrawTailFractionInterval(const Option_t* options = NULL); 00099 00100 ClassDef(MCMCIntervalPlot,1) // Class containing the results of the MCMCCalculator 00101 }; 00102 } 00103 00104 #endif