Logo ROOT   6.14/05
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 
28 namespace RooStats {
29 
30  class MarkovChain : public TNamed {
31 
32  public:
33  MarkovChain();
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_t nllValue, Double_t 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_t nllValue, Double_t 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_t 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_t Weight() const;
56  /// get the weight of entry at position i
57  virtual Double_t Weight(Int_t i) const;
58  /// get the NLL value of entry at position i
59  virtual Double_t NLL(Int_t i) const;
60  /// get the NLL value of the current (last indexed) entry
61  virtual Double_t NLL() const;
62 
63  /// get this MarkovChain as a RooDataSet whose entries contain the values
64  /// of whichVars. Call with whichVars = NULL (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 = NULL) 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 = NULL (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 = NULL) 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 = NULL) 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  virtual ~MarkovChain()
108  {
109  delete fParameters;
110  delete fDataEntry;
111  delete fChain;
112  }
113 
114  protected:
120 
122  };
123 }
124 
125 #endif
RooArgSet * fDataEntry
Definition: MarkovChain.h:116
RooArgSet * fParameters
Definition: MarkovChain.h:115
virtual Int_t Size() const
get the number of steps in the chain
Definition: MarkovChain.h:49
int Int_t
Definition: RtypesCore.h:41
virtual TObject * Clone(const char *newname=0) const
Make a clone of an object using the Streamer facility.
Definition: RooAbsArg.h:75
virtual const RooArgSet * Get() const
get the entry at the current position
Definition: MarkovChain.h:53
virtual RooDataHist * GetAsDataHist(RooArgSet *whichVars=NULL) const
get this MarkovChain as a RooDataHist whose entries contain the values of whichVars.
static const RooCmdArg & none()
Return reference to null argument.
Definition: RooCmdArg.cxx:50
RooDataSet is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:40
#define ClassDef(name, id)
Definition: Rtypes.h:320
virtual const RooArgSet * Get(Int_t i) const
get the entry at position i
Definition: MarkovChain.h:51
Efficient multidimensional histogram.
Definition: THnSparse.h:36
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
RooDataSet * fChain
Definition: MarkovChain.h:117
virtual void Add(RooArgSet &entry, Double_t nllValue, Double_t weight=1.0)
safely add an entry to the chain
virtual THnSparse * GetAsSparseHist(RooAbsCollection *whichVars=NULL) const
Get a clone of the markov chain on which this interval is based as a sparse histogram.
virtual void AddWithBurnIn(MarkovChain &otherChain, Int_t burnIn=0)
add another markov chain
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:36
virtual const RooDataSet * GetAsConstDataSet() const
Definition: MarkovChain.h:77
virtual void AddFast(RooArgSet &entry, Double_t nllValue, Double_t weight=1.0)
add an entry to the chain ONLY IF you have constructed with parameters or called SetParameters ...
virtual Double_t NLL() const
get the NLL value of the current (last indexed) entry
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:29
virtual const RooArgSet * get(Int_t index) const
Return RooArgSet with coordinates of event 'index'.
Stores the steps in a Markov Chain of points.
Definition: MarkovChain.h:30
Namespace for the RooStats classes.
Definition: Asimov.h:20
double Double_t
Definition: RtypesCore.h:55
virtual RooDataSet * GetAsDataSet(RooArgSet *whichVars=NULL) const
get this MarkovChain as a RooDataSet whose entries contain the values of whichVars.
virtual void SetParameters(RooArgSet &parameters)
set which of your parameters this chain should store
Definition: MarkovChain.cxx:77
virtual RooRealVar * GetWeightVar() const
get a clone of the weight variable
Definition: MarkovChain.h:104
virtual Double_t Weight() const
get the weight of the current (last indexed) entry
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects...
RooRealVar * fWeight
Definition: MarkovChain.h:119
virtual RooRealVar * GetNLLVar() const
get a clone of the NLL variable
Definition: MarkovChain.h:100
char name[80]
Definition: TGX11.cxx:109
virtual Int_t numEntries() const
Definition: RooAbsData.cxx:285
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition: RooCmdArg.h:27
virtual THnSparse * GetAsSparseHist(RooAbsCollection &whichVars) const
Definition: MarkovChain.h:96