Logo ROOT  
Reference Guide
PointSetInterval.cxx
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/*****************************************************************************
12 * Project: RooStats
13 * Package: RooFit/RooStats
14 * @(#)root/roofit/roostats:$Id$
15 * Original Author: Kyle Cranmer
16 * Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
17 *
18 *****************************************************************************/
19
20
21/** \class RooStats::PointSetInterval
22 \ingroup Roostats
23
24PointSetInterval is a concrete implementation of the ConfInterval interface.
25It implements simple general purpose interval of arbitrary dimensions and shape.
26It does not assume the interval is connected.
27It uses either a RooDataSet (eg. a list of parameter points in the interval) or
28a RooDataHist (eg. a Histogram-like object for small regions of the parameter space) to
29store the interval.
30
31*/
32
33
35
36#include "RooRealVar.h"
37#include "RooDataSet.h"
38#include "RooDataHist.h"
39
40using namespace std;
41
43
44using namespace RooStats;
45
46
47////////////////////////////////////////////////////////////////////////////////
48/// Default constructor
49
50PointSetInterval::PointSetInterval(const char* name) :
51 ConfInterval(name), fConfidenceLevel(0.95), fParameterPointsInInterval(0)
52{
53}
54
55////////////////////////////////////////////////////////////////////////////////
56/// Alternate constructor passing the dataset
57
59 ConfInterval(name), fConfidenceLevel(0.95), fParameterPointsInInterval(&data)
60{
61}
62
63
64
65////////////////////////////////////////////////////////////////////////////////
66/// Destructor
67
69{
70}
71
72
73////////////////////////////////////////////////////////////////////////////////
74/// Method to determine if a parameter point is in the interval
75
77{
79 RooDataHist* hist = dynamic_cast<RooDataHist*>( fParameterPointsInInterval );
80
81 if( !this->CheckParameters(parameterPoint) ){
82 // std::cout << "problem with parameters" << std::endl;
83 return false;
84 }
85
86 if( hist ) {
87 if ( hist->weight( parameterPoint , 0 ) > 0 ) // positive value indicates point is in interval
88 return true;
89 else
90 return false;
91 }
92 else if( tree ){
93 const RooArgSet* thisPoint = 0;
94 // need to check if the parameter point is the same as any point in tree.
95 for(Int_t i = 0; i<tree->numEntries(); ++i){
96 // This method is not complete
97 thisPoint = tree->get(i);
98 bool samePoint = true;
99 TIter it = parameterPoint.createIterator();
100 RooRealVar *myarg;
101 while ( samePoint && (myarg = (RooRealVar *)it.Next())) {
102 if(myarg->getVal() != thisPoint->getRealValue(myarg->GetName()))
103 samePoint = false;
104 }
105 if(samePoint)
106 return true;
107
108 // delete thisPoint;
109 }
110 return false; // didn't find a good point
111 }
112 else {
113 std::cout << "dataset is not initialized properly" << std::endl;
114 }
115
116 return true;
117
118}
119
120////////////////////////////////////////////////////////////////////////////////
121/// returns list of parameters
122
124{
125 return new RooArgSet(*(fParameterPointsInInterval->get()) );
126}
127
128////////////////////////////////////////////////////////////////////////////////
129
131{
132 if (parameterPoint.getSize() != fParameterPointsInInterval->get()->getSize() ) {
133 std::cout << "PointSetInterval: argument size is wrong, parameters don't match: arg=" << parameterPoint
134 << " interval=" << (*fParameterPointsInInterval->get()) << std::endl;
135 return false;
136 }
137 if ( ! parameterPoint.equals( *(fParameterPointsInInterval->get() ) ) ) {
138 std::cout << "PointSetInterval: size is ok, but parameters don't match" << std::endl;
139 return false;
140 }
141 return true;
142}
143
144
145////////////////////////////////////////////////////////////////////////////////
146
148{
150 Double_t low = 0, high = 0;
151 if( tree ){
152 tree->getRange(param, low, high);
153 return high;
154 }
155 return param.getMax();
156}
157
158////////////////////////////////////////////////////////////////////////////////
159
161{
163 Double_t low = 0, high = 0;
164 if( tree ){
165 tree->getRange(param, low, high);
166 return low;
167 }
168 return param.getMin();
169}
int Int_t
Definition: RtypesCore.h:43
bool Bool_t
Definition: RtypesCore.h:61
double Double_t
Definition: RtypesCore.h:57
#define ClassImp(name)
Definition: Rtypes.h:361
char name[80]
Definition: TGX11.cxx:109
Int_t getSize() const
Double_t getRealValue(const char *name, Double_t defVal=0, Bool_t verbose=kFALSE) const
Get value of a RooAbsReal stored in set with given name.
Bool_t equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically-named contents.
TIterator * createIterator(Bool_t dir=kIterForward) const
TIterator-style iteration over contained elements.
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition: RooAbsData.h:44
virtual const RooArgSet * get() const
Definition: RooAbsData.h:87
virtual Double_t getMax(const char *name=0) const
Get maximum of currently defined range.
virtual Double_t getMin(const char *name=0) const
Get miniminum of currently defined range.
Double_t getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
Definition: RooAbsReal.h:90
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
The RooDataHist is a container class to hold N-dimensional binned data.
Definition: RooDataHist.h:40
virtual Double_t weight() const
Definition: RooDataHist.h:106
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:33
RooRealVar represents a variable that can be changed from the outside.
Definition: RooRealVar.h:35
ConfInterval is an interface class for a generic interval in the RooStats framework.
Definition: ConfInterval.h:35
PointSetInterval is a concrete implementation of the ConfInterval interface.
Bool_t CheckParameters(const RooArgSet &) const
return a cloned list with the parameter of interest
PointSetInterval(const char *name=0)
default constructors
Double_t UpperLimit(RooRealVar &param)
return upper limit on a given parameter
Double_t LowerLimit(RooRealVar &param)
return lower limit on a given parameter
virtual Bool_t IsInInterval(const RooArgSet &) const
check if parameter is in the interval
virtual ~PointSetInterval()
destructor
virtual RooArgSet * GetParameters() const
Method to return lower limit on a given parameter Double_t LowerLimit(RooRealVar& param) ; // could p...
RooAbsData * fParameterPointsInInterval
confidence level
TObject * Next()
Definition: TCollection.h:249
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
Namespace for the RooStats classes.
Definition: Asimov.h:19
Definition: tree.py:1