Logo ROOT  
Reference Guide
MarkovChain.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/*************************************************************************
5 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOSTATS_MarkovChain
13#define ROOSTATS_MarkovChain
14
15#include "Rtypes.h"
16
17#include "TNamed.h"
18
19#include "RooRealVar.h"
20#include "RooDataSet.h"
21#include "RooDataHist.h"
22#include "THnSparse.h"
23//#include "RooArgSet.h"
24//#include "RooMsgService.h"
25//#include "RooRealVar.h"
26
27
28namespace RooStats {
29
30 class MarkovChain : public TNamed {
31
32 public:
34 MarkovChain(RooArgSet& parameters);
35 MarkovChain(const char* name, const char* title, RooArgSet& parameters);
36
37 /// safely add an entry to the chain
38 virtual void Add(RooArgSet& entry, double nllValue, double weight = 1.0);
39 /// add an entry to the chain ONLY IF you have constructed with parameters
40 /// or called SetParameters
41 virtual void AddFast(RooArgSet& entry, double nllValue, double weight = 1.0);
42 /// add another markov chain
43 virtual void AddWithBurnIn(MarkovChain& otherChain, Int_t burnIn = 0);
44 /// add another markov chain
45 virtual void Add(MarkovChain& otherChain, double discardEntries = 0.0);
46 /// set which of your parameters this chain should store
47 virtual void SetParameters(RooArgSet& parameters);
48 /// get the number of steps in the chain
49 virtual Int_t Size() const { return fChain ? fChain->numEntries() : 0; }
50 /// get the entry at position i
51 virtual const RooArgSet* Get(Int_t i) const { return fChain->get(i); }
52 /// get the entry at the current position
53 virtual const RooArgSet* Get() const { return fChain->get(); }
54 /// get the weight of the current (last indexed) entry
55 virtual double Weight() const;
56 /// get the weight of entry at position i
57 virtual double Weight(Int_t i) const;
58 /// get the NLL value of entry at position i
59 virtual double NLL(Int_t i) const;
60 /// get the NLL value of the current (last indexed) entry
61 virtual double NLL() const;
62
63 /// get this MarkovChain as a RooDataSet whose entries contain the values
64 /// of whichVars. Call with whichVars = nullptr (default) to get values of
65 /// all variables (including NLL value and weight);
66 /// Note: caller owns the returned data set
67 virtual RooDataSet* GetAsDataSet(RooArgSet* whichVars = nullptr) const;
68
69 /// Get a clone of the markov chain on which this interval is based
70 /// as a RooDataSet. You own the returned RooDataSet*
71 virtual RooDataSet* GetAsDataSet(const RooCmdArg& arg1,
72 const RooCmdArg& arg2=RooCmdArg::none(), const RooCmdArg& arg3=RooCmdArg::none(),
73 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),
74 const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(),
75 const RooCmdArg& arg8=RooCmdArg::none() ) const;
76
77 virtual const RooDataSet* GetAsConstDataSet() const { return fChain; }
78
79 /// get this MarkovChain as a RooDataHist whose entries contain the values
80 /// of whichVars. Call with whichVars = nullptr (default) to get values of
81 /// all variables (including NLL value and weight);
82 /// Note: caller owns the returned data hist
83 virtual RooDataHist* GetAsDataHist(RooArgSet* whichVars = nullptr) const;
84
85 /// Get a clone of the markov chain on which this interval is based
86 /// as a RooDataHist. You own the returned RooDataHist*
87 virtual RooDataHist* GetAsDataHist(const RooCmdArg & arg1,
88 const RooCmdArg& arg2=RooCmdArg::none(), const RooCmdArg& arg3=RooCmdArg::none(),
89 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),
90 const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(),
91 const RooCmdArg& arg8=RooCmdArg::none() ) const;
92
93 /// Get a clone of the markov chain on which this interval is based
94 /// as a sparse histogram. You own the returned THnSparse*
95 virtual THnSparse* GetAsSparseHist(RooAbsCollection* whichVars = nullptr) const;
96 virtual THnSparse* GetAsSparseHist(RooAbsCollection& whichVars) const
97 { return GetAsSparseHist(&whichVars); }
98
99 /// get a clone of the NLL variable
100 virtual RooRealVar* GetNLLVar() const
101 { return (RooRealVar*)fNLL->Clone(); }
102
103 /// get a clone of the weight variable
104 virtual RooRealVar* GetWeightVar() const
105 { return (RooRealVar*)fWeight->Clone(); }
106
107 ~MarkovChain() override
108 {
109 delete fParameters;
110 delete fDataEntry;
111 delete fChain;
112 }
113
114 protected:
120
122 };
123}
124
125#endif
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
char name[80]
Definition: TGX11.cxx:110
TObject * Clone(const char *newname=0) const override
Make a clone of an object using the Streamer facility.
Definition: RooAbsArg.h:84
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
virtual Int_t numEntries() const
Return number of entries in dataset, i.e., count unweighted entries.
Definition: RooAbsData.cxx:379
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:57
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition: RooCmdArg.h:26
static const RooCmdArg & none()
Return reference to null argument.
Definition: RooCmdArg.cxx:51
The RooDataHist is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:45
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:55
const RooArgSet * get(Int_t index) const override
Return RooArgSet with coordinates of event 'index'.
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:40
Stores the steps in a Markov Chain of points.
Definition: MarkovChain.h:30
virtual RooDataHist * GetAsDataHist(RooArgSet *whichVars=nullptr) const
get this MarkovChain as a RooDataHist whose entries contain the values of whichVars.
RooRealVar * fWeight
Definition: MarkovChain.h:119
virtual RooRealVar * GetWeightVar() const
get a clone of the weight variable
Definition: MarkovChain.h:104
virtual THnSparse * GetAsSparseHist(RooAbsCollection &whichVars) const
Definition: MarkovChain.h:96
virtual void AddFast(RooArgSet &entry, double nllValue, double weight=1.0)
add an entry to the chain ONLY IF you have constructed with parameters or called SetParameters
virtual double NLL() const
get the NLL value of the current (last indexed) entry
virtual void AddWithBurnIn(MarkovChain &otherChain, Int_t burnIn=0)
add another markov chain
RooArgSet * fDataEntry
Definition: MarkovChain.h:116
virtual void Add(RooArgSet &entry, double nllValue, double weight=1.0)
safely add an entry to the chain
RooArgSet * fParameters
Definition: MarkovChain.h:115
virtual THnSparse * GetAsSparseHist(RooAbsCollection *whichVars=nullptr) const
Get a clone of the markov chain on which this interval is based as a sparse histogram.
virtual const RooArgSet * Get() const
get the entry at the current position
Definition: MarkovChain.h:53
RooDataSet * fChain
Definition: MarkovChain.h:117
virtual void SetParameters(RooArgSet &parameters)
set which of your parameters this chain should store
Definition: MarkovChain.cxx:77
virtual RooRealVar * GetNLLVar() const
get a clone of the NLL variable
Definition: MarkovChain.h:100
~MarkovChain() override
Definition: MarkovChain.h:107
virtual const RooArgSet * Get(Int_t i) const
get the entry at position i
Definition: MarkovChain.h:51
virtual double Weight() const
get the weight of the current (last indexed) entry
virtual RooDataSet * GetAsDataSet(RooArgSet *whichVars=nullptr) const
get this MarkovChain as a RooDataSet whose entries contain the values of whichVars.
virtual const RooDataSet * GetAsConstDataSet() const
Definition: MarkovChain.h:77
virtual Int_t Size() const
get the number of steps in the chain
Definition: MarkovChain.h:49
Efficient multidimensional histogram.
Definition: THnSparse.h:36
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
Namespace for the RooStats classes.
Definition: Asimov.h:19