1 #ifndef __BCENGINEMCMC__H
2 #define __BCENGINEMCMC__H
26 #include "BCParameterSet.h"
187 std::vector<double>
MCMCGetx(
unsigned ichain);
193 double MCMCGetx(
unsigned ichain,
unsigned ipar)
const;
477 void SetParameterRange(
unsigned int index,
double parmin,
double parmax);
501 void SetMarkovChainInitialPosition(
const std::vector<double> & position)
502 { fXmetro0 = position; }
506 void SetMarkovChainStepSize(
double stepsize)
507 { fMarkovChainStepSize = stepsize; }
511 void SetMarkovChainNIterations(
int niterations)
512 { fMarkovChainNIterations = niterations;
513 fMarkovChainAutoN =
false; }
517 void SetMarkovChainAutoN(
bool flag)
518 { fMarkovChainAutoN = flag; }
536 virtual int AddParameter(
const char * name,
double min,
double max,
const char * latexname =
"");
604 virtual double LogEval(
const std::vector<double> & parameters);
672 typedef bool (
BCEngineMCMC::*MCMCPointerToGetProposalPoint) (
int chain, std::vector<double> xnew, std::vector<double> xold)
const;
676 MCMCPointerToGetProposalPoint fMCMCPointerToGetProposalPoint;
681 struct MCMCThreadLocalStorage
686 std::vector<double> xLocal;
697 MCMCThreadLocalStorage(
const unsigned & dim);
699 MCMCThreadLocalStorage(
const MCMCThreadLocalStorage & other);
701 MCMCThreadLocalStorage &
operator = (
const MCMCThreadLocalStorage & other);
703 virtual ~MCMCThreadLocalStorage();
709 std::vector<MCMCThreadLocalStorage> fMCMCThreadLocalStorage;
714 void SyncThreadStorage();
916 std::vector<TH2D *> fMCMCH2Marginalized;
void MCMCSetValuesDetail()
const BCParameterSet & GetParameters() const
void MCMCSetWriteChainToFile(bool flag)
std::vector< double > MCMCGetMaximumPoint(unsigned i) const
int SetMarginalized(unsigned index, TH1D *h)
virtual void ResetResults()
std::vector< double > fMCMCBestFitParameters
void ClearParameters(bool hard=false)
void MCMCSetRValueCriterion(double r)
int fMCMCFlagInitialPosition
void MCMCSetTrialFunctionScaleFactor(std::vector< double > scale)
void MCMCSetFlagPreRun(bool flag)
void MCMCSetRandomSeed(unsigned seed)
void MCMCSetNLag(unsigned n)
virtual void MCMCTrialFunction(unsigned ichain, std::vector< double > &x)
unsigned MCMCGetNIterationsMax() const
BCH2D * MCMCGetH2Marginalized(unsigned i, unsigned j)
int MCMCMetropolisPreRun()
virtual void MCMCUserIterationInterface()
double MCMCGetRValueParameters(unsigned i)
void MCMCResetRunStatistics()
const std::vector< double > & MCMCGetx() const
void MCMCInitializeMarkovChains()
std::vector< double > fMCMCx
std::vector< double > fMCMCInitialPosition
void MCMCSetNIterationsPreRunMin(unsigned n)
unsigned fMCMCNIterationsUpdate
unsigned MCMCGetNIterationsRun() const
unsigned MCMCGetCurrentChain() const
void MCMCSetRValueStrict(bool strict=true)
std::vector< unsigned > fMCMCNIterations
unsigned int GetNFreeParameters()
void MCMCInChainCheckMaximum()
A class for handling 2D distributions.
void MCMCSetNIterationsUpdateMax(unsigned n)
std::vector< double > fMCMCprobMean
void WriteMarkovChain(bool flag)
std::vector< int > MCMCGetNTrialsTrue() const
const std::vector< double > & GetBestFitParametersMarginalized() const
const std::vector< double > & MCMCGetMaximumPoints() const
int MCMCGetFlagInitialPosition() const
bool MCMCGetFlagRun() const
double MCMCGetRValueParametersCriterion() const
virtual double LogEval(const std::vector< double > ¶meters)
void MCMCSetInitialPositions(const std::vector< double > &x0s)
unsigned MCMCGetNLag() const
void MCMCInChainTestConvergenceAllChains()
unsigned MCMCGetNIterationsConvergenceGlobal() const
const std::vector< unsigned > & MCMCGetNIterations() const
unsigned MCMCGetNChains() const
std::vector< double > fMCMCprobVar
double fMCMCEfficiencyMax
void MCMCSetFlagOrderParameters(bool flag)
void MCMCSetFlagFillHistograms(bool flag)
void MCMCSetFlagInitialPosition(int flag)
double fMCMCEfficiencyMin
unsigned fMCMCNIterationsPreRunMin
BCEngineMCMC & operator=(const BCEngineMCMC &engineMCMC)
void MCMCSetMaximumEfficiency(double efficiency)
int fMCMCNIterationsConvergenceGlobal
void MCMCInitializeMarkovChainTrees()
const std::vector< double > & MCMCGetprobMean() const
void Copy(const BCEngineMCMC &enginemcmc)
void SetNbins(unsigned int nbins)
bool fMCMCFlagWritePreRunToFile
void MCMCSetMinimumEfficiency(double efficiency)
unsigned fMCMCNIterationsRun
A class representing a parameter of a model.
virtual double MCMCTrialFunctionSingle(unsigned ichain, unsigned ipar)
std::vector< double > fMCMCxMean
unsigned fMCMCNIterationsUpdateMax
std::vector< double > fMarginalModes
bool fMCMCRValueUseStrict
An engine class for Markov Chain Monte Carlo.
bool MCMCGetProposalPointMetropolis(unsigned chain, std::vector< double > &x)
unsigned int GetNFixedParameters()
std::vector< double > fMCMCEfficiencies
void MCMCInChainFillHistograms()
TTree * MCMCGetMarkovChainTree(unsigned i)
unsigned int GetNParameters() const
const std::vector< double > & MCMCGetLogProbx() const
unsigned fMCMCNIterationsMax
unsigned MCMCGetCurrentIteration() const
const std::vector< double > & MCMCGetVariance() const
bool fMCMCFlagConvergenceGlobal
virtual int AddParameter(const char *name, double min, double max, const char *latexname="")
std::vector< double > fMCMCxVar
bool MCMCGetFlagConvergenceGlobal() const
BCH1D * MCMCGetH1Marginalized(unsigned i)
void MCMCSetNChains(unsigned n)
A class for handling 1D distributions.
virtual void MCMCCurrentPointInterface(std::vector< double > &, int, bool)
BCParameterSet fParameters
void MCMCSetValuesQuick()
bool fMCMCFlagWriteChainToFile
void MCMCSetNIterationsMax(unsigned n)
void MCMCSetMarkovChainTrees(const std::vector< TTree * > &trees)
void MCMCSetNIterationsUpdate(unsigned n)
int fMCMCCurrentIteration
std::vector< double > fMCMCTrialFunctionScaleFactorStart
std::vector< int > fMCMCNTrialsTrue
std::vector< TTree * > fMCMCTrees
virtual void MCMCIterationInterface()
double MCMCGetRValueCriterion() const
void MCMCSetValuesDefault()
void MCMCSetNIterationsRun(unsigned n)
std::vector< double > fMCMCprobMax
bool MCMCGetRValueStrict() const
const std::vector< double > & MCMCGetMaximumLogProb() const
double fMCMCRValueParametersCriterion
BCParameter * Get(unsigned index) const
std::vector< double > fMCMCxMax
unsigned MCMCGetNIterationsUpdateMax() const
const std::vector< double > & MCMCGetTrialFunctionScaleFactor() const
bool fMCMCFlagOrderParameters
std::vector< double > fMCMCRValueParameters
void MCMCSetWritePreRunToFile(bool flag)
BCParameter * GetParameter(int index) const
unsigned MCMCGetNIterationsPreRunMin() const
void MCMCInChainUpdateStatistics()
BCParameter * GetParameter(const char *name) const
void MCMCInChainWriteChains()
int MCMCGetNTrials() const
void MCMCSetRValueParametersCriterion(double r)
double fMCMCRValueCriterion
unsigned MCMCGetNIterationsUpdate() const
std::vector< TH1D * > fMCMCH1Marginalized
std::vector< double > fMCMCTrialFunctionScaleFactor
void MCMCSetPrecision(BCEngineMCMC::Precision precision)
std::vector< double > fMCMCprob
bool MCMCGetNewPointMetropolis(unsigned chain=0)
double MCMCGetRValue() const