• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

BCRooInterface.h

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  * interface allowing to run BAT on a problem/data defined in a
00020  * standard RooFit workspace format
00021  * --------------------------------------------------------- */
00022 
00023 class BCRooInterface : public BCModel
00024 {
00025 
00026    public:
00027 
00028       // Constructors and destructor
00029       BCRooInterface( );
00030 
00031       BCRooInterface( const char* name, bool fillChain = false );
00032 
00033       ~BCRooInterface();
00034 
00035       // Overloaded methods
00036       void DefineParameters();
00037       double LogAPrioriProbability(const std::vector<double> & parameters);
00038       double LogLikelihood(const std::vector<double> &parameters);
00039 
00040       // Other method of this class
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       //set the number of histogram bins for a specific parameter
00057       void SetNumBins(const char * parname, int nbins);
00058       //set the number of histogram bins for all parameters
00059       void SetNumBins(int nbins);
00060       //setup RooStats Markov Chain
00061       void SetupRooStatsMarkovChain();
00062       //overloaded function from BCIntegrate to fill RooStats Markov Chain with every accepted step
00063       void MCMCIterationInterface();
00064       //return the RooStats Markov Chain (empty if corresponding constructor option not set)
00065       RooStats::MarkovChain * GetRooStatsMarkovChain(){ return _roostatsMarkovChain;}
00066       RooArgSet* GetArgSetForMarkovChain(){return &_parametersForMarkovChainCurrent;}
00067       //RooArgSet GetArgSetForMarkovChainTest(){return _parametersForMarkovChain_test;}
00068 
00069 
00070    private:
00071 
00072       void AddToCurrentChainElement(double xij, int chainNum, int poiNum); //help function for construction of RooStats Markov Chain
00073       bool EqualsLastChainElement(int chainNum); //help function for construction of RooStats Markov Chain
00074       double GetWeightForChain(int chainNum); //help function for construction of RooStats Markov Chain
00075 
00076       RooAbsData* fData;        // data to test
00077       RooAbsPdf*  fModel;       // likelihood model describing the observables
00078       RooAbsReal*  fNll;         // pointer to negative log-likelihood function
00079       RooArgSet*  fObservables; // list of observables measured for each event
00080       RooArgList* fParams;      // list of parameters
00081       RooArgList* fParamsPOI;   // list of parameters of interest
00082       RooAbsPdf*  fPrior;       // function describing the prior probability of the parameters
00083       int _default_nbins;
00084 
00085       RooRealVar* priorhelpvar;
00086       bool _addeddummyprior;
00087 
00088       bool _fillChain;          //decides if a RooStats Markov Chain is constructed along the way
00089       bool fFirstComparison;    // checks if it is the first chain step (bookkeeping required for construction of the RooStats MarkovChain object)
00090       RooStats::MarkovChain * _roostatsMarkovChain;
00091       RooArgSet _parametersForMarkovChainPrevious; // parameters of interest in previous step (bookkeeping required for construction of the RooStats MarkovChain object)
00092       RooArgSet _parametersForMarkovChainCurrent; // parameters of interest in previous step (bookkeeping required for construction of the RooStats MarkovChain object)
00093 
00094       vector< vector<double> > fPreviousStep; // bookkeeping required for construction of the RooStats MarkovChain object
00095       vector< vector<double> > fCurrentStep; // bookkeeping required for construction of the RooStats MarkovChain object
00096       vector< double > fVecWeights; // keep track of weights if proposal step not accepted (bookkeeping required for construction of the RooStats MarkovChain object)
00097 
00098       //test stuff begin
00099       //RooRealVar* var1;
00100       //RooArgSet _parametersForMarkovChain_test;
00101       //RooArgList* fParamsTest;
00102       //long fIterationInterfacecount;
00103       //test stuff end
00104 
00105       list< pair<const char*,int> > _nbins_list;
00106 };
00107 
00108 #endif

Generated by  doxygen 1.7.1