CMS 3D CMS Logo

Public Member Functions | Public Attributes

TestProposal Class Reference

#include <TestProposal.h>

List of all members.

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_

Detailed Description

Definition at line 12 of file TestProposal.h.


Constructor & Destructor Documentation

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.

{}

Member Function Documentation

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);
   }
}

Member Data Documentation

ClassDef (TestProposal,1) private RooArgList TestProposal::alwaysStepMe_

Definition at line 33 of file TestProposal.h.

Referenced by Propose(), and TestProposal().