Warning, file /include/root/RooStats/PdfProposal.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOSTATS_PdfProposal
0013 #define ROOSTATS_PdfProposal
0014
0015 #include "Rtypes.h"
0016
0017 #include "RooStats/ProposalFunction.h"
0018
0019 #include "RooArgSet.h"
0020 #include "RooMsgService.h"
0021 #include "RooRealVar.h"
0022 #include "RooDataSet.h"
0023 #include "RooAbsPdf.h"
0024
0025 #include <map>
0026
0027
0028 namespace RooStats {
0029
0030 class PdfProposal : public ProposalFunction {
0031
0032 public:
0033 PdfProposal();
0034 PdfProposal(RooAbsPdf& pdf);
0035
0036
0037 void Propose(RooArgSet& xPrime, RooArgSet& x) override;
0038
0039
0040
0041
0042 bool IsSymmetric(RooArgSet& x1, RooArgSet& x2) override;
0043
0044
0045
0046 double GetProposalDensity(RooArgSet& x1, RooArgSet& x2) override;
0047
0048
0049 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
0050
0051
0052 virtual const RooAbsPdf* GetPdf() const { return fPdf; }
0053
0054
0055
0056
0057
0058
0059
0060
0061 virtual void AddMapping(RooRealVar& proposalParam, RooAbsReal& update);
0062
0063 virtual void Reset()
0064 {
0065 fCache.reset();
0066 fCachePosition = 0;
0067 fLastX.removeAll();
0068 }
0069
0070 virtual void printMappings()
0071 {
0072 std::map<RooRealVar*, RooAbsReal*>::iterator it;
0073 for (it = fMap.begin(); it != fMap.end(); it++)
0074 std::cout << it->first->GetName() << " => " << it->second->GetName() << std::endl;
0075 }
0076
0077
0078
0079 virtual void SetCacheSize(Int_t size)
0080 {
0081 if (size > 0) {
0082 fCacheSize = size;
0083 } else {
0084 coutE(Eval) << "Warning: Requested non-positive cache size: " << size << ". Cache size unchanged."
0085 << std::endl;
0086 }
0087 }
0088
0089
0090
0091 virtual void SetOwnsPdf(bool ownsPdf) { fOwnsPdf = ownsPdf; }
0092
0093
0094
0095
0096 ~PdfProposal() override
0097 {
0098 if (fOwnsPdf)
0099 delete fPdf;
0100 }
0101
0102 protected:
0103 RooAbsPdf *fPdf = nullptr;
0104 std::map<RooRealVar*, RooAbsReal*> fMap;
0105 std::map<RooRealVar*, RooAbsReal*>::iterator fIt;
0106 RooArgSet fLastX;
0107 Int_t fCacheSize = 1;
0108 Int_t fCachePosition = 0;
0109 std::unique_ptr<RooDataSet> fCache;
0110 RooArgSet fMaster;
0111 bool fOwnsPdf = false;
0112
0113
0114
0115 virtual bool Equals(RooArgSet& x1, RooArgSet& x2);
0116
0117
0118 ClassDefOverride(PdfProposal,2);
0119 };
0120 }
0121
0122 #endif