RooStats::MetropolisHastings

(RooStats - Root 5.34.00)

This is an example for the MetropolisHasting class.
The input pdf should be a C++ function.

For example, a gaussian.

double myf(const double xx) {
return exp(-0.5
pow(xx[0], 2.));
}

I’m testing this code

void metropolis() {
RooStats::MetropolisHastings *mcgenerator=new RooStats::MetropolisHastings();
ROOT::Math::Functor *myf_functor=new ROOT::Math::Functor(&myf, 1.);
RooArgList *myf_list=new RooArgList();
RooRealVar *myf_var=new RooRealVar("", “”, 2, 0, 10);
myf_list->add(*myf_var);
RooFunctorBinding *myf_roofunctor=new RooFunctorBinding("", “”, *myf_functor, *myf_list);
mcgenerator->SetFunction(*myf_roofunctor);
mcgenerator->SetType(RooStats::MetropolisHastings::kRegular);
mcgenerator->SetSign(RooStats::MetropolisHastings::kPositive);
RooStats::UniformProposal *mcgenerator_proposal=new RooStats::UniformProposal();
mcgenerator->SetProposalFunction(*mcgenerator_proposal);
mcgenerator->SetNumBurnInSteps(10);
mcgenerator->SetNumIters(100000);
mcgenerator->SetParameters(*myf_list);
mcgenerator->ConstructChain();
}

It works!

Thanks
YAWN