Go to the documentation of this file.00001 #ifndef __BCROOINTERFACE__H
00002 #define __BCROOINTERFACE__H
00003
00004 #include "BCModel.h"
00005 #include <RooStats/MarkovChain.h>
00006 #include <RooRealVar.h>
00007 #include <list>
00008 #include <utility>
00009
00010
00011 class RooAbsReal;
00012 class RooAbsData;
00013 class RooAbsPdf;
00014 class RooArgSet;
00015 class RooArgList;
00016
00017
00018
00019
00020
00021
00022 class BCRooInterface : public BCModel
00023 {
00024
00025 public:
00026
00027
00028 BCRooInterface( );
00029
00030 BCRooInterface( const char* name, bool fillChain = false );
00031
00032 ~BCRooInterface();
00033
00034
00035 void DefineParameters();
00036 double LogAPrioriProbability(std::vector <double> parameters);
00037 double LogLikelihood(std::vector <double> parameters);
00038
00039
00040 void Initialize( RooAbsData& data,
00041 RooAbsPdf& model,
00042 RooAbsPdf& prior,
00043 const RooArgSet* params,
00044 const RooArgSet& listPOI );
00045
00046 void Initialize( const char* rootFile,
00047 const char* wsName = "batWS",
00048 const char* dataName = "data",
00049 const char* modelName = "model",
00050 const char* priorName = "priorPOI",
00051 const char* priorNuisanceName= "priorNuisance",
00052 const char* paramsName = "parameters",
00053 const char* listPOIName = "POI" );
00054
00055
00056 void SetNumBins(const char * parname, int nbins);
00057
00058 void SetNumBins(int nbins);
00059
00060 void SetupRooStatsMarkovChain();
00061
00062 void MCMCIterationInterface();
00063
00064 RooStats::MarkovChain * GetRooStatsMarkovChain(){ return _roostatsMarkovChain;}
00065 RooArgSet* GetArgSetForMarkovChain(){return &_parametersForMarkovChainCurrent;}
00066
00067
00068
00069 private:
00070
00071 void AddToCurrentChainElement(double xij, int chainNum, int poiNum);
00072 bool EqualsLastChainElement(int chainNum);
00073 double GetWeightForChain(int chainNum);
00074
00075 RooAbsData* fData;
00076 RooAbsPdf* fModel;
00077 RooAbsReal* fNll;
00078 RooArgSet* fObservables;
00079 RooArgList* fParams;
00080 RooArgList* fParamsPOI;
00081 RooAbsPdf* fPrior;
00082 int _default_nbins;
00083
00084 RooRealVar* priorhelpvar;
00085 bool _addeddummyprior;
00086
00087 bool _fillChain;
00088 bool fFirstComparison;
00089 RooStats::MarkovChain * _roostatsMarkovChain;
00090 RooArgSet _parametersForMarkovChainPrevious;
00091 RooArgSet _parametersForMarkovChainCurrent;
00092
00093 vector< vector<double> > fPreviousStep;
00094 vector< vector<double> > fCurrentStep;
00095 vector< double > fVecWeights;
00096
00097
00098
00099
00100
00101
00102
00103
00104 list< pair<const char*,int> > _nbins_list;
00105 };
00106
00107 #endif