12 #ifndef RooStats_ProposalHelper
13 #define RooStats_ProposalHelper
28 class ProposalHelper :
public TObject {
34 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
36 virtual void SetClues(RooDataSet& clues) { fClues = &clues; }
39 virtual ProposalFunction* GetProposalFunction();
41 virtual void SetCacheSize(Int_t size)
46 coutE(Eval) <<
"Warning: Requested non-positive cache size: " <<
47 size <<
". Cache size unchanged." << std::endl;
50 virtual void SetUpdateProposalParameters(Bool_t updateParams)
51 { fUseUpdates = updateParams; }
53 virtual void SetVariables(RooArgList& vars)
56 virtual void SetVariables(
const RooArgList& vars)
57 { fVars =
new RooArgList(vars); fOwnsVars = kTRUE; }
61 virtual void SetUniformFraction(Double_t uniFrac) { fUniFrac = uniFrac; }
65 virtual void SetCluesFraction(Double_t cluesFrac) { fCluesFrac = cluesFrac; }
68 virtual void SetCovMatrix(
const TMatrixDSym& covMatrix)
69 { fCovMatrix =
new TMatrixDSym(covMatrix); }
74 virtual void SetWidthRangeDivisor(Double_t divisor)
75 {
if (divisor > 0.) fSigmaRangeDivisor = divisor; }
80 virtual void SetCluesOptions(
const Option_t* options)
81 {
if (options != NULL) fCluesOptions = options; }
83 virtual void SetVariables(RooArgSet& vars)
85 RooArgList* argList =
new RooArgList(vars);
86 SetVariables(*argList);
90 virtual ~ProposalHelper()
92 if (fOwnsPdfProp)
delete fPdfProp;
93 if (fOwnsPdf)
delete fPdf;
94 if (fOwnsCluesPdf)
delete fCluesPdf;
95 if (fOwnsVars)
delete fVars;
102 RooAbsPdf* fCluesPdf;
103 RooAbsPdf* fUniformPdf;
105 TMatrixDSym* fCovMatrix;
106 PdfProposal* fPdfProp;
109 Double_t fSigmaRangeDivisor;
115 Bool_t fOwnsCluesPdf;
118 const Option_t* fCluesOptions;
121 void CreateCluesPdf();
122 void CreateUniformPdf();
123 void CreateCovMatrix(RooArgList& xVec);
125 ClassDef(ProposalHelper,1)