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