![]() |
![]() |
#include <TestProposal.h>
Public Member Functions | |
virtual Double_t | GetProposalDensity (RooArgSet &x1, RooArgSet &x2) |
virtual Bool_t | IsSymmetric (RooArgSet &x1, RooArgSet &x2) |
virtual void | Propose (RooArgSet &xPrime, RooArgSet &x) |
TestProposal () | |
TestProposal (double divisor, const RooRealVar *alwaysStepMe=0) | |
TestProposal (double divisor, const RooArgList &alwaysStepMe) | |
virtual | ~TestProposal () |
Public Attributes | |
ClassDef(TestProposal, 1) private RooArgList | alwaysStepMe_ |
Definition at line 12 of file TestProposal.h.
TestProposal::TestProposal | ( | ) | [inline] |
Definition at line 15 of file TestProposal.h.
: RooStats::ProposalFunction() {}
TestProposal::TestProposal | ( | double | divisor, |
const RooRealVar * | alwaysStepMe = 0 |
||
) |
Definition at line 9 of file TestProposal.cc.
References alwaysStepMe_.
: RooStats::ProposalFunction(), divisor_(1./divisor), poiDivisor_(divisor_) { alwaysStepMe_.add(*alwaysStepMe); }
TestProposal::TestProposal | ( | double | divisor, |
const RooArgList & | alwaysStepMe | ||
) |
Definition at line 17 of file TestProposal.cc.
References mathSSE::sqrt().
: RooStats::ProposalFunction(), divisor_(1./divisor), poiDivisor_(divisor_), alwaysStepMe_(alwaysStepMe) { if (alwaysStepMe.getSize() > 1) poiDivisor_ /= sqrt(double(alwaysStepMe.getSize())); }
virtual TestProposal::~TestProposal | ( | ) | [inline, virtual] |
Definition at line 31 of file TestProposal.h.
{}
Double_t TestProposal::GetProposalDensity | ( | RooArgSet & | x1, |
RooArgSet & | x2 | ||
) | [virtual] |
Definition at line 62 of file TestProposal.cc.
{ return 1.0; // should not be needed }
Bool_t TestProposal::IsSymmetric | ( | RooArgSet & | x1, |
RooArgSet & | x2 | ||
) | [virtual] |
Definition at line 56 of file TestProposal.cc.
{ return true; }
void TestProposal::Propose | ( | RooArgSet & | xPrime, |
RooArgSet & | x | ||
) | [virtual] |
Definition at line 28 of file TestProposal.cc.
References alwaysStepMe_, i, j, max(), min, n, and NULL.
{ RooStats::SetParameters(&x, &xPrime); RooLinkedListIter it(xPrime.iterator()); RooRealVar* var; int n = xPrime.getSize(), j = floor(RooRandom::uniform()*n); for (int i = 0; (var = (RooRealVar*)it.Next()) != NULL; ++i) { if (i == j) { if (alwaysStepMe_.contains(*var)) break; // don't step twice double val = var->getVal(), max = var->getMax(), min = var->getMin(), len = max - min; val += RooRandom::gaussian() * len * divisor_; while (val > max) val -= len; while (val < min) val += len; var->setVal(val); break; } } it = alwaysStepMe_.iterator(); for (RooRealVar *poi = (RooRealVar*)it.Next(); poi != NULL; poi = (RooRealVar*)it.Next()) { RooRealVar *var = (RooRealVar*) xPrime.find(poi->GetName()); double val = var->getVal(), max = var->getMax(), min = var->getMin(), len = max - min; val += RooRandom::gaussian() * len * poiDivisor_; while (val > max) val -= len; while (val < min) val += len; var->setVal(val); } }
ClassDef (TestProposal,1) private RooArgList TestProposal::alwaysStepMe_ |
Definition at line 33 of file TestProposal.h.
Referenced by Propose(), and TestProposal().