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

Generated by  doxygen 1.7.1