ROOT   Reference Guide
Searching...
No Matches
PdfProposal.h
Go to the documentation of this file.
1// @(#)root/roostats:$Id$
2// Authors: Kevin Belasco 17/06/2009
3// Authors: Kyle Cranmer 17/06/2009
4/*************************************************************************
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. * 9 * For the list of contributors see$ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOSTATS_PdfProposal
13#define ROOSTATS_PdfProposal
14
15#include "Rtypes.h"
16
18
19#include "RooArgSet.h"
20#include "RooMsgService.h"
21#include "RooRealVar.h"
22#include "RooDataSet.h"
23#include "RooAbsPdf.h"
24
25#include <map>
26
27
28namespace RooStats {
29
31
32 public:
35
36 /// Populate xPrime with a new proposed point
37 virtual void Propose(RooArgSet& xPrime, RooArgSet& x);
38
39 /// Determine whether or not the proposal density is symmetric for
40 /// points x1 and x2 - that is, whether the probabilty of reaching x2
41 /// from x1 is equal to the probability of reaching x1 from x2
43
44 /// Return the probability of proposing the point x1 given the starting
45 /// point x2
47
48 /// Set the PDF to be the proposal density function
49 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
50
51 /// Get the PDF is the proposal density function
52 virtual const RooAbsPdf* GetPdf() const { return fPdf; }
53
54 /// specify a mapping between a parameter of the proposal function and
55 /// a parameter of interest. this mapping is used to set the value of
56 /// proposalParam equal to the value of update to determine the
57 /// proposal function.
58 /// proposalParam is a parameter of the proposal function that must
59 /// be set to the value of update (from the current point) in order to
60 /// propose a new point.
61 virtual void AddMapping(RooRealVar& proposalParam, RooAbsReal& update);
62
63 virtual void Reset()
64 {
65 delete fCache;
66 fCache = NULL;
69 }
70
71 virtual void printMappings()
72 {
73 std::map<RooRealVar*, RooAbsReal*>::iterator it;
74 for (it = fMap.begin(); it != fMap.end(); it++)
75 std::cout << it->first->GetName() << " => " << it->second->GetName() << std::endl;
76 }
77
78 /// Set how many points to generate each time we propose from a new point
79 /// Default (and minimum) is 1
80 virtual void SetCacheSize(Int_t size)
81 {
82 if (size > 0)
83 fCacheSize = size;
84 else
85 coutE(Eval) << "Warning: Requested non-positive cache size: " <<
86 size << ". Cache size unchanged." << std::endl;
87 }
88
89 /// set whether we own the PDF that serves as the proposal density function
90 /// By default, when constructed, PdfProposal does NOT own the PDF.
91 virtual void SetOwnsPdf(Bool_t ownsPdf) { fOwnsPdf = ownsPdf; }
92
93 //virtual void SetIsAlwaysSymmetric(Bool_t isAlwaysSymmetric)
94 //{ fIsAlwaysSymmetric = isAlwaysSymmetric; }
95
96 virtual ~PdfProposal()
97 {
98 delete fCache;
99 if (fOwnsPdf)
100 delete fPdf;
101 }
102
103 protected:
104 RooAbsPdf* fPdf; /// the proposal density function
105 std::map<RooRealVar*, RooAbsReal*> fMap; /// map of values in pdf to update
106 std::map<RooRealVar*, RooAbsReal*>::iterator fIt; /// pdf iterator
107 RooArgSet fLastX; /// the last point we were at
108 Int_t fCacheSize; /// how many points to generate each time
109 Int_t fCachePosition; /// our position in the cached proposal data set
110 RooDataSet* fCache; /// the cached proposal data set
111 RooArgSet fMaster; /// pointers to master variables needed for updates
112 Bool_t fOwnsPdf; /// whether we own the proposal density function
113 //Bool_t fIsAlwaysSymmetric; // does Q(x1 | x2) == Q(x2 | x1) for all x1, x2
114
115 /// determine whether these two RooArgSets represent the same point
116 virtual Bool_t Equals(RooArgSet& x1, RooArgSet& x2);
117
118 /// Interface for tools setting limits (producing confidence intervals)
120 };
121}
122
123#endif
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
static const double x2[5]
static const double x1[5]
#define coutE(a)
double Double_t
Definition RtypesCore.h:59
#define ClassDef(name, id)
Definition Rtypes.h:325
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:61
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:29
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:33
RooRealVar represents a variable that can be changed from the outside.
Definition RooRealVar.h:39
PdfProposal is a concrete implementation of the ProposalFunction interface.
Definition PdfProposal.h:30
std::map< RooRealVar *, RooAbsReal * >::iterator fIt
map of values in pdf to update
virtual Bool_t IsSymmetric(RooArgSet &x1, RooArgSet &x2)
Determine whether or not the proposal density is symmetric for points x1 and x2 - that is,...
RooArgSet fMaster
the cached proposal data set
virtual void AddMapping(RooRealVar &proposalParam, RooAbsReal &update)
specify a mapping between a parameter of the proposal function and a parameter of interest.
virtual Double_t GetProposalDensity(RooArgSet &x1, RooArgSet &x2)
Return the probability of proposing the point x1 given the starting point x2.
virtual void SetCacheSize(Int_t size)
Set how many points to generate each time we propose from a new point Default (and minimum) is 1.
Definition PdfProposal.h:80
virtual const RooAbsPdf * GetPdf() const
Get the PDF is the proposal density function.
Definition PdfProposal.h:52
virtual Bool_t Equals(RooArgSet &x1, RooArgSet &x2)
whether we own the proposal density function
RooDataSet * fCache
our position in the cached proposal data set
RooArgSet fLastX
pdf iterator
Bool_t fOwnsPdf
pointers to master variables needed for updates
Int_t fCacheSize
the last point we were at
virtual void SetPdf(RooAbsPdf &pdf)
Set the PDF to be the proposal density function.
Definition PdfProposal.h:49
virtual void Reset()
Definition PdfProposal.h:63
Int_t fCachePosition
how many points to generate each time
std::map< RooRealVar *, RooAbsReal * > fMap
the proposal density function
virtual void printMappings()
Definition PdfProposal.h:71
virtual void SetOwnsPdf(Bool_t ownsPdf)
set whether we own the PDF that serves as the proposal density function By default,...
Definition PdfProposal.h:91
virtual void Propose(RooArgSet &xPrime, RooArgSet &x)
Populate xPrime with a new proposed point.
PdfProposal()
By default, PdfProposal does NOT own the PDF that serves as the proposal density function.
ProposalFunction is an interface for all proposal functions that would be used with a Markov Chain Mo...
Double_t x[n]
Definition legend1.C:17
Namespace for the RooStats classes.
Definition Asimov.h:19