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)