Logo ROOT   6.10/09
Reference Guide
CombinedCalculator.h
Go to the documentation of this file.
1 // @(#)root/roostats:$Id$
2 // Author: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
3 /*************************************************************************
4  * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
5  * All rights reserved. *
6  * *
7  * For the licensing terms see $ROOTSYS/LICENSE. *
8  * For the list of contributors see $ROOTSYS/README/CREDITS. *
9  *************************************************************************/
10 
11 #ifndef ROOSTATS_CombinedCalculator
12 #define ROOSTATS_CombinedCalculator
13 
14 
16 
18 
19 #include "RooStats/ModelConfig.h"
20 
21 #include "RooAbsPdf.h"
22 
23 #include "RooAbsData.h"
24 
25 #include "RooArgSet.h"
26 
27 // #ifndef ROO_WORKSPACE
28 // #include "RooWorkspace.h"
29 // #endif
30 
31 namespace RooStats {
32 
33 /** \class CombinedCalculator
34  \ingroup Roostats
35 
36 CombinedCalculator is an interface class for a tools which can produce both RooStats
37 HypoTestResults and ConfIntervals. The interface currently assumes that any such
38 calculator can be configured by specifying:
39 
40  - a model common model (eg. a family of specific models which includes both the null and alternate),
41  - a data set,
42  - a set of parameters of which specify the null (including values and const/non-const status),
43  - a set of parameters of which specify the alternate (including values and const/non-const status),
44  - a set of parameters of nuisance parameters (including values and const/non-const status).
45 
46 The interface allows one to pass the model, data, and parameters via a workspace
47 and then specify them with names. The interface also allows one to pass the model,
48 data, and parameters without a workspace (which is created internally).
49 
50 After configuring the calculator, one only needs to ask GetHypoTest() (which will
51 return a HypoTestResult pointer) or GetInterval() (which will return an ConfInterval pointer).
52 
53 The concrete implementations of this interface should deal with the details of how
54 the nuisance parameters are dealt with (eg. integration vs. profiling) and which test-statistic is used (perhaps this should be added to the interface).
55 
56 The motivation for this interface is that we hope to be able to specify the problem
57 in a common way for several concrete calculators.
58 
59 */
60 
61 
63 
64  public:
65 
67  fSize(0.),
68  fPdf(0),
69  fData(0)
70  {}
71 
72  CombinedCalculator(RooAbsData& data, RooAbsPdf& pdf, const RooArgSet& paramsOfInterest,
73  Double_t size = 0.05, const RooArgSet* nullParams = 0, const RooArgSet* altParams = 0, const RooArgSet* nuisParams = 0) :
74 
75  fPdf(&pdf),
76  fData(&data),
77  fPOI(paramsOfInterest)
78  {
79  if (nullParams) fNullParams.add(*nullParams);
80  if (altParams) fAlternateParams.add(*altParams);
81  if (nuisParams) fNuisParams.add(*nuisParams);
82  SetTestSize(size);
83  }
84 
85  /// constructor from data and model configuration
87  Double_t size = 0.05) :
88  fPdf(0),
89  fData(&data)
90  {
91  SetModel(model);
92  SetTestSize(size);
93  }
94 
95 
96  /// destructor.
97  virtual ~CombinedCalculator() { }
98 
99 
100 
101  /// Main interface to get a ConfInterval, pure virtual
102  virtual ConfInterval* GetInterval() const = 0;
103  /// main interface to get a HypoTestResult, pure virtual
104  virtual HypoTestResult* GetHypoTest() const = 0;
105 
106  /// set the size of the test (rate of Type I error) ( Eg. 0.05 for a 95% Confidence Interval)
107  virtual void SetTestSize(Double_t size) {fSize = size;}
108  /// set the confidence level for the interval (eg. 0.95 for a 95% Confidence Interval)
109  virtual void SetConfidenceLevel(Double_t cl) {fSize = 1.-cl;}
110  /// Get the size of the test (eg. rate of Type I error)
111  virtual Double_t Size() const {return fSize;}
112  /// Get the Confidence level for the test
113  virtual Double_t ConfidenceLevel() const {return 1.-fSize;}
114 
115  /// Set the DataSet, add to the the workspace if not already there
116  virtual void SetData(RooAbsData & data) {
117  fData = &data;
118  }
119 
120  /// set the model (in this case can set only the parameters for the null hypothesis)
121  virtual void SetModel(const ModelConfig & model) {
122  fPdf = model.GetPdf();
124  if (model.GetSnapshot()) SetNullParameters(*model.GetSnapshot());
127  }
128 
129  virtual void SetNullModel( const ModelConfig &) { // to be understood what to do
130  }
131  virtual void SetAlternateModel(const ModelConfig &) { // to be understood what to do
132  }
133 
134  /* specific setting - keep for convenience- some of them could be removed */
135 
136  /// Set the Pdf
137  virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
138 
139  /// specify the parameters of interest in the interval
140  virtual void SetParameters(const RooArgSet& set) { fPOI.removeAll(); fPOI.add(set); }
141 
142  /// specify the nuisance parameters (eg. the rest of the parameters)
144 
145  /// set parameter values for the null if using a common PDF
146  virtual void SetNullParameters(const RooArgSet& set) {fNullParams.removeAll(); fNullParams.add(set);}
147 
148  /// set parameter values for the alternate if using a common PDF
150 
151  /// set conditional observables needed for computing the NLL
153 
154 
155  protected:
156 
157  RooAbsPdf * GetPdf() const { return fPdf; }
158  RooAbsData * GetData() const { return fData; }
159 
160  Double_t fSize; // size of the test (eg. specified rate of Type I error)
161 
164  RooArgSet fPOI; // RooArgSet specifying parameters of interest for interval
165  RooArgSet fNullParams; // RooArgSet specifying null parameters for hypothesis test
166  RooArgSet fAlternateParams; // RooArgSet specifying alternate parameters for hypothesis test // Is it used ????
167  RooArgSet fNuisParams;// RooArgSet specifying nuisance parameters for interval
168  RooArgSet fConditionalObs; // RooArgSet specifying the conditional observables
169 
170 
171  ClassDef(CombinedCalculator,1) // A base class that is for tools that can be both HypoTestCalculators and IntervalCalculators
172 
173  };
174 }
175 
176 
177 #endif
virtual ~CombinedCalculator()
destructor.
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
Definition: ModelConfig.h:30
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
Definition: RooArgSet.h:86
IntervalCalculator is an interface class for a tools which produce RooStats ConfIntervals.
virtual void SetTestSize(Double_t size)
set the size of the test (rate of Type I error) ( Eg. 0.05 for a 95% Confidence Interval) ...
HypoTestResult is a base class for results from hypothesis tests.
virtual void SetNullModel(const ModelConfig &)
virtual void SetAlternateModel(const ModelConfig &)
virtual void SetModel(const ModelConfig &model)
set the model (in this case can set only the parameters for the null hypothesis)
virtual HypoTestResult * GetHypoTest() const =0
main interface to get a HypoTestResult, pure virtual
virtual ConfInterval * GetInterval() const =0
Main interface to get a ConfInterval, pure virtual.
virtual void SetAlternateParameters(const RooArgSet &set)
set parameter values for the alternate if using a common PDF
#define ClassDef(name, id)
Definition: Rtypes.h:297
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
virtual void SetPdf(RooAbsPdf &pdf)
Set the Pdf.
virtual void SetData(RooAbsData &data)
Set the DataSet, add to the the workspace if not already there.
virtual void SetNuisanceParameters(const RooArgSet &set)
specify the nuisance parameters (eg. the rest of the parameters)
HypoTestCalculator is an interface class for a tools which produce RooStats HypoTestResults.
virtual void SetConditionalObservables(const RooArgSet &set)
set conditional observables needed for computing the NLL
const RooArgSet * GetConditionalObservables() const
get RooArgSet for conditional observables (return NULL if not existing)
Definition: ModelConfig.h:240
virtual void SetParameters(const RooArgSet &set)
specify the parameters of interest in the interval
virtual Double_t Size() const
Get the size of the test (eg. rate of Type I error)
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition: RooAbsData.h:37
CombinedCalculator is an interface class for a tools which can produce both RooStats HypoTestResults ...
CombinedCalculator(RooAbsData &data, RooAbsPdf &pdf, const RooArgSet &paramsOfInterest, Double_t size=0.05, const RooArgSet *nullParams=0, const RooArgSet *altParams=0, const RooArgSet *nuisParams=0)
ConfInterval is an interface class for a generic interval in the RooStats framework.
Definition: ConfInterval.h:35
Namespace for the RooStats classes.
Definition: Asimov.h:20
RooAbsPdf * GetPdf() const
get model PDF (return NULL if pdf has not been specified or does not exist)
Definition: ModelConfig.h:222
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return NULL if not existing)
Definition: ModelConfig.h:225
double Double_t
Definition: RtypesCore.h:55
virtual void SetNullParameters(const RooArgSet &set)
set parameter values for the null if using a common PDF
CombinedCalculator(RooAbsData &data, const ModelConfig &model, Double_t size=0.05)
constructor from data and model configuration
virtual void SetConfidenceLevel(Double_t cl)
set the confidence level for the interval (eg. 0.95 for a 95% Confidence Interval) ...
virtual Double_t ConfidenceLevel() const
Get the Confidence level for the test.
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
Definition: RooAbsPdf.h:41
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return NULL if not existing)
Definition: ModelConfig.h:228
const RooArgSet * GetSnapshot() const
get RooArgSet for parameters for a particular hypothesis (return NULL if not existing) ...