Logo ROOT  
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
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
31namespace RooStats {
32
33/** \class CombinedCalculator
34 \ingroup Roostats
35
36CombinedCalculator is an interface class for a tools which can produce both RooStats
37HypoTestResults and ConfIntervals. The interface currently assumes that any such
38calculator 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
46The interface allows one to pass the model, data, and parameters via a workspace
47and then specify them with names. The interface also allows one to pass the model,
48data, and parameters without a workspace (which is created internally).
49
50After configuring the calculator, one only needs to ask GetHypoTest() (which will
51return a HypoTestResult pointer) or GetInterval() (which will return an ConfInterval pointer).
52
53The concrete implementations of this interface should deal with the details of how
54the nuisance parameters are dealt with (eg. integration vs. profiling) and which test-statistic is used (perhaps this should be added to the interface).
55
56The motivation for this interface is that we hope to be able to specify the problem
57in 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 {
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();
123 if (model.GetParametersOfInterest()) SetParameters(*model.GetParametersOfInterest());
124 if (model.GetSnapshot()) SetNullParameters(*model.GetSnapshot());
125 if (model.GetNuisanceParameters()) SetNuisanceParameters(*model.GetNuisanceParameters());
126 if (model.GetConditionalObservables()) SetConditionalObservables(*model.GetConditionalObservables());
127 if (model.GetGlobalObservables()) SetGlobalObservables(*model.GetGlobalObservables());
128 }
129
130 virtual void SetNullModel( const ModelConfig &) { // to be understood what to do
131 }
132 virtual void SetAlternateModel(const ModelConfig &) { // to be understood what to do
133 }
134
135 /* specific setting - keep for convenience- some of them could be removed */
136
137 /// Set the Pdf
138 virtual void SetPdf(RooAbsPdf& pdf) { fPdf = &pdf; }
139
140 /// specify the parameters of interest in the interval
141 virtual void SetParameters(const RooArgSet& set) { fPOI.removeAll(); fPOI.add(set); }
142
143 /// specify the nuisance parameters (eg. the rest of the parameters)
145
146 /// set parameter values for the null if using a common PDF
148
149 /// set parameter values for the alternate if using a common PDF
151
152 /// set conditional observables needed for computing the NLL
154
155 /// set global observables needed for computing the NLL
157
158
159 protected:
160
161 RooAbsPdf * GetPdf() const { return fPdf; }
162 RooAbsData * GetData() const { return fData; }
163
164 Double_t fSize; // size of the test (eg. specified rate of Type I error)
165
168 RooArgSet fPOI; // RooArgSet specifying parameters of interest for interval
169 RooArgSet fNullParams; // RooArgSet specifying null parameters for hypothesis test
170 RooArgSet fAlternateParams; // RooArgSet specifying alternate parameters for hypothesis test // Is it used ????
171 RooArgSet fNuisParams;// RooArgSet specifying nuisance parameters for interval
172 RooArgSet fConditionalObs; // RooArgSet specifying the conditional observables
173 RooArgSet fGlobalObs; // RooArgSet specifying the global observables
174
175
176 ClassDef(CombinedCalculator,2) // A base class that is for tools that can be both HypoTestCalculators and IntervalCalculators
177
178 };
179}
180
181
182#endif
double Double_t
Definition: RtypesCore.h:57
#define ClassDef(name, id)
Definition: Rtypes.h:322
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition: RooAbsData.h:44
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
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:88
CombinedCalculator is an interface class for a tools which can produce both RooStats HypoTestResults ...
virtual void SetNullParameters(const RooArgSet &set)
set parameter values for the null if using a common PDF
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)
CombinedCalculator(RooAbsData &data, const ModelConfig &model, Double_t size=0.05)
constructor from data and model configuration
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)
virtual void SetModel(const ModelConfig &model)
set the model (in this case can set only the parameters for the null hypothesis)
virtual void SetConfidenceLevel(Double_t cl)
set the confidence level for the interval (eg. 0.95 for a 95% Confidence Interval)
virtual void SetGlobalObservables(const RooArgSet &set)
set global observables needed for computing the NLL
virtual void SetAlternateModel(const ModelConfig &)
virtual void SetData(RooAbsData &data)
Set the DataSet, add to the the workspace if not already there.
virtual void SetParameters(const RooArgSet &set)
specify the parameters of interest in the interval
virtual HypoTestResult * GetHypoTest() const =0
main interface to get a HypoTestResult, pure virtual
virtual void SetPdf(RooAbsPdf &pdf)
Set the Pdf.
virtual void SetAlternateParameters(const RooArgSet &set)
set parameter values for the alternate if using a common PDF
virtual ConfInterval * GetInterval() const =0
Main interface to get a ConfInterval, pure virtual.
virtual ~CombinedCalculator()
destructor.
virtual void SetConditionalObservables(const RooArgSet &set)
set conditional observables needed for computing the NLL
virtual void SetNuisanceParameters(const RooArgSet &set)
specify the nuisance parameters (eg. the rest of the parameters)
virtual Double_t Size() const
Get the size of the test (eg. rate of Type I error)
virtual void SetNullModel(const ModelConfig &)
virtual Double_t ConfidenceLevel() const
Get the Confidence level for the test.
ConfInterval is an interface class for a generic interval in the RooStats framework.
Definition: ConfInterval.h:35
HypoTestCalculator is an interface class for a tools which produce RooStats HypoTestResults.
HypoTestResult is a base class for results from hypothesis tests.
IntervalCalculator is an interface class for a tools which produce RooStats ConfIntervals.
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
Definition: ModelConfig.h:30
Namespace for the RooStats classes.
Definition: Asimov.h:19