Logo ROOT  
Reference Guide
HypoTestResult.h
Go to the documentation of this file.
1// @(#)root/roostats:$Id$
2// Author: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke, Sven Kreiss
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#ifndef ROOSTATS_HypoTestResult
11#define ROOSTATS_HypoTestResult
12
15
16#include "TNamed.h"
17
18#include <memory>
19
20namespace RooStats {
21
22 class HypoTestResult : public TNamed {
23
24 public:
25
26 /// default constructor
27 explicit HypoTestResult(const char* name = 0);
28
29 /// copy constructor
30 HypoTestResult(const HypoTestResult& other);
31
32 /// constructor from name, null and alternate p values
33 HypoTestResult(const char* name, Double_t nullp, Double_t altp);
34
35 /// destructor
36 virtual ~HypoTestResult();
37
38 /// assignment operator
40
41 /// add values from another HypoTestResult
42 virtual void Append(const HypoTestResult *other);
43
44 /// Return p-value for null hypothesis
45 virtual Double_t NullPValue() const { return fNullPValue; }
46
47 /// Return p-value for alternate hypothesis
48 virtual Double_t AlternatePValue() const { return fAlternatePValue; }
49
50 /// Convert NullPValue into a "confidence level"
51 virtual Double_t CLb() const { return !fBackgroundIsAlt ? NullPValue() : AlternatePValue(); }
52
53 /// Convert AlternatePValue into a "confidence level"
54 virtual Double_t CLsplusb() const { return !fBackgroundIsAlt ? AlternatePValue() : NullPValue(); }
55
56 /// \f$CL_{s}\f$ is simply \f$CL_{s+b}/CL_{b}\f$ (not a method, but a quantity)
57 virtual Double_t CLs() const {
58 double thisCLb = CLb();
59 if (thisCLb == 0) {
60 std::cout << "Error: Cannot compute CLs because CLb = 0. Returning CLs = -1\n";
61 return -1;
62 }
63 double thisCLsb = CLsplusb();
64 return thisCLsb / thisCLb;
65 }
66
67 /// familiar name for the Null p-value in terms of 1-sided Gaussian significance
69
74 RooDataSet* GetFitInfo() const { return fFitInfo.get(); }
77 Bool_t HasTestStatisticData(void) const;
78
83 void SetFitInfo(RooDataSet* d) { fFitInfo.reset(d); }
84 void SetTestStatisticData(const Double_t tsd);
85 void SetAllTestStatisticsData(const RooArgList* tsd);
86
89
92
93 /// The error on the "confidence level" of the null hypothesis
94 Double_t CLbError() const;
95
96 /// The error on the "confidence level" of the alternative hypothesis
97 Double_t CLsplusbError() const;
98
99 /// The error on the ratio \f$CL_{s+b}/CL_{b}\f$
100 Double_t CLsError() const;
101
102 /// The error on the Null p-value
104
105 /// The error on the significance, computed from NullPValueError via error propagation
107
108
109 void Print(const Option_t* = "") const;
110
111 private:
112 void UpdatePValue(const SamplingDistribution* distr, Double_t &pvalue, Double_t &perror, Bool_t pIsRightTail);
113
114
115 protected:
116
117 mutable Double_t fNullPValue; // p-value for the null hypothesis (small number means disfavoured)
118 mutable Double_t fAlternatePValue; // p-value for the alternate hypothesis (small number means disfavoured)
119 mutable Double_t fNullPValueError; // error of p-value for the null hypothesis (small number means disfavoured)
120 mutable Double_t fAlternatePValueError; // error of p-value for the alternate hypothesis (small number means disfavoured)
121 Double_t fTestStatisticData; // result of the test statistic evaluated on data
122 const RooArgList* fAllTestStatisticsData; // for the case of multiple test statistics, holds all the results
127 std::unique_ptr<RooDataSet> fFitInfo;
130
131 ClassDef(HypoTestResult,4) // Base class to represent results of a hypothesis test
132
133 };
134}
135
136
137#endif
#define d(i)
Definition: RSha256.hxx:102
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassDef(name, id)
Definition: Rtypes.h:325
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgList.h:22
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:36
HypoTestResult is a base class for results from hypothesis tests.
void SetBackgroundAsAlt(Bool_t l=kTRUE)
RooDataSet * fAltDetailedOutput
void SetAltDetailedOutput(RooDataSet *d)
RooDataSet * GetFitInfo() const
HypoTestResult & operator=(const HypoTestResult &other)
assignment operator
void SetNullDetailedOutput(RooDataSet *d)
virtual ~HypoTestResult()
destructor
HypoTestResult(const char *name=0)
default constructor
Double_t CLbError() const
The error on the "confidence level" of the null hypothesis.
void SetAllTestStatisticsData(const RooArgList *tsd)
Double_t NullPValueError() const
The error on the Null p-value.
Bool_t GetPValueIsRightTail(void) const
Double_t GetTestStatisticData(void) const
virtual void Append(const HypoTestResult *other)
add values from another HypoTestResult
virtual Double_t CLb() const
Convert NullPValue into a "confidence level".
virtual Double_t CLsplusb() const
Convert AlternatePValue into a "confidence level".
virtual Double_t Significance() const
familiar name for the Null p-value in terms of 1-sided Gaussian significance
void SetPValueIsRightTail(Bool_t pr)
SamplingDistribution * GetNullDistribution(void) const
RooDataSet * fNullDetailedOutput
SamplingDistribution * fAltDistr
virtual Double_t AlternatePValue() const
Return p-value for alternate hypothesis.
RooDataSet * GetNullDetailedOutput(void) const
virtual Double_t NullPValue() const
Return p-value for null hypothesis.
void SetTestStatisticData(const Double_t tsd)
void SetNullDistribution(SamplingDistribution *null)
Double_t CLsplusbError() const
The error on the "confidence level" of the alternative hypothesis.
SamplingDistribution * GetAltDistribution(void) const
virtual Double_t CLs() const
is simply (not a method, but a quantity)
Bool_t GetBackGroundIsAlt(void) const
void SetFitInfo(RooDataSet *d)
void SetAltDistribution(SamplingDistribution *alt)
const RooArgList * fAllTestStatisticsData
const RooArgList * GetAllTestStatisticsData(void) const
void UpdatePValue(const SamplingDistribution *distr, Double_t &pvalue, Double_t &perror, Bool_t pIsRightTail)
updates the pvalue if sufficient data is available
Bool_t HasTestStatisticData(void) const
Double_t SignificanceError() const
The error on the significance, computed from NullPValueError via error propagation.
RooDataSet * GetAltDetailedOutput(void) const
std::unique_ptr< RooDataSet > fFitInfo
Double_t CLsError() const
The error on the ratio .
void Print(const Option_t *="") const
Print out some information about the results Note: use Alt/Null labels for the hypotheses here as the...
SamplingDistribution * fNullDistr
This class simply holds a sampling distribution of some test statistic.
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
static const std::string name("name")
Namespace for the RooStats classes.
Definition: Asimov.h:19
Double_t PValueToSignificance(Double_t pvalue)
returns one-sided significance corresponding to a p-value
Definition: RooStatsUtils.h:51
auto * l
Definition: textangle.C:4