87 template<
class HypoTestType>
88 struct HypoTestWrapper {
90 static void SetToys(HypoTestType *
h,
int toyNull,
int toyAlt) { h->SetToys(toyNull,toyAlt); }
129 if (!modelSB || ! modelB)
131 assert(modelSB && modelB);
134 <<
"\t\t using as S+B (null) model : " 136 <<
"\t\t using as B (alternate) model : " 137 << modelB->
GetName() <<
"\n" << std::endl;
142 if (!bPdf || !bObs) {
153 if (!poiB || !poiB->
find(scanVariable.
GetName()) ||
156 << scanVariable.
GetName() <<
" not equal to zero " 157 <<
" user must check input model configurations " << endl;
158 if (poiB)
delete poiB;
176 fCalcType(kUndefined),
177 fNBins(0), fXmin(1), fXmax(1),
394 if (
this == &rhs)
return *
this;
459 TString results_name =
"result_";
462 TString title =
"HypoTestInverter Result For ";
493 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::GetInterval - return an already existing interval " << std::endl;
498 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::GetInterval - run a fixed scan" << std::endl;
501 oocoutE((
TObject*)0,
Eval) <<
"HypoTestInverter::GetInterval - error running a fixed scan " << std::endl;
504 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::GetInterval - run an automatic scan" << std::endl;
505 double limit(0),err(0);
508 oocoutE((
TObject*)0,
Eval) <<
"HypoTestInverter::GetInterval - error running an auto scan " << std::endl;
562 while (clsMidErr >=
fgCLAccuracy && (clsTarget == -1 ||
fabs(clsMid-clsTarget) < 3*clsMidErr) ) {
563 std::unique_ptr<HypoTestResult> more(hc.
GetHypoTest());
568 hcResult->
Append(more.get());
571 if (
fVerbose) std::cout << (
fUseCLs ?
"\tCLs = " :
"\tCLsplusb = ") << clsMid <<
" +/- " << clsMidErr << std::endl;
578 "\tCLs = " << hcResult->
CLs() <<
" +/- " << hcResult->
CLsError() <<
"\n" <<
579 "\tCLb = " << hcResult->
CLb() <<
" +/- " << hcResult->
CLbError() <<
"\n" <<
616 if ( nBins==1 && xMin!=xMax ) {
619 if ( xMin==xMax && nBins>1 ) {
625 << xMin <<
") smaller that xMax (" << xMax <<
")\n";
629 if (xMin < fScannedVariable->getMin()) {
632 << xMin << std::endl;
637 << xMax << std::endl;
641 for (
int i=0; i<nBins; i++) {
645 thisX =
exp(
log(xMin) + i*(
log(xMax)-
log(xMin))/(nBins-1) );
647 thisX = xMin + i*(xMax-xMin)/(nBins-1);
653 if ( status==
false ) {
654 std::cout <<
"\t\tLoop interrupted because of failed status\n";
671 if ( rVal < fScannedVariable->getMin() ) {
674 <<
" on the scanned variable rather than " << rVal<<
"\n";
682 <<
" on the scanned variable rather than " << rVal<<
"\n";
697 const_cast<ModelConfig*
>(sbModel)->SetSnapshot(poi);
718 else lastXtested = -999;
723 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::RunOnePoint - Merge with previous result for " 727 prevResult->
Append(result);
732 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::RunOnePoint - replace previous empty result\n";
769 if ((hint != 0) && (*hint > r->
getMin())) {
770 r->
setMax(std::min<double>(3.0 * (*hint), r->
getMax()));
771 r->
setMin(std::max<double>(0.3 * (*hint), r->
getMin()));
773 <<
" search in interval " << r->
getMin() <<
" , " << r->
getMax() << std::endl;
780 typedef std::pair<double,double> CLs_t;
781 double clsTarget =
fSize;
782 CLs_t clsMin(1,0), clsMax(0,0), clsMid(0,0);
784 limit = 0.5*(rMax + rMin);
785 limitErr = 0.5*(rMax - rMin);
788 TF1 expoFit(
"expoFit",
"[0]*exp([1]*(x-[2]))", rMin, rMax);
814 if (
fVerbose > 0) std::cout <<
"Search for upper limit to the limit" << std::endl;
815 for (
int tries = 0; tries < 6; ++tries) {
818 oocoutE((
TObject*)0,
Eval) <<
"HypoTestInverter::RunLimit - Hypotest failed" << std::endl;
822 if (clsMax.first == 0 || clsMax.first + 3 *
fabs(clsMax.second) < clsTarget )
break;
826 <<
" = " << rMax <<
" still get " 827 << (
fUseCLs ?
"CLs" :
"CLsplusb") <<
" = " << clsMax.first << std::endl;
832 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::RunLimit - Search for lower limit to the limit" << std::endl;
842 if (clsMin.first != 1 && clsMin.first - 3 *
fabs(clsMin.second) < clsTarget) {
848 for (
int tries = 0; tries < 6; ++tries) {
851 if (clsMin.first == 1 || clsMin.first - 3 *
fabs(clsMin.second) > clsTarget)
break;
855 <<
" = " << rMin <<
" still get " << (
fUseCLs ?
"CLs" :
"CLsplusb")
856 <<
" = " << clsMin.first << std::endl;
864 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::RunLimit - Now doing proper bracketing & bisection" << std::endl;
869 oocoutW((
TObject*)0,
Eval) <<
"HypoTestInverter::RunLimit - maximum number of toys reached " << std::endl;
875 limit = 0.5*(rMin+rMax); limitErr = 0.5*(rMax-rMin);
876 if (
fgAlgo ==
"logSecant" && clsMax.first != 0) {
877 double logMin =
log(clsMin.first), logMax =
log(clsMax.first), logTarget =
log(clsTarget);
878 limit = rMin + (rMax-rMin) * (logTarget - logMin)/(logMax - logMin);
879 if (clsMax.second != 0 && clsMin.second != 0) {
880 limitErr = hypot((logTarget-logMax) * (clsMin.second/clsMin.first), (logTarget-logMin) * (clsMax.second/clsMax.first));
881 limitErr *= (rMax-rMin)/((logMax-logMin)*(logMax-logMin));
887 if (limitErr < std::max(absAccuracy, relAccuracy * limit)) {
889 oocoutI((
TObject*)0,
Eval) <<
"HypoTestInverter::RunLimit - reached accuracy " << limitErr
890 <<
" below " << std::max(absAccuracy, relAccuracy * limit) << std::endl;
897 if (!
RunOnePoint(limit,
true, clsTarget) )
return false;
900 if (clsMid.second == -1) {
901 std::cerr <<
"Hypotest failed" << std::endl;
906 if (
fabs(clsMid.first-clsTarget) >= 2*clsMid.second) {
907 if ((clsMid.first>clsTarget) == (clsMax.first>clsTarget)) {
908 rMax = limit; clsMax = clsMid;
910 rMin = limit; clsMin = clsMid;
913 if (
fVerbose > 0) std::cout <<
"Trying to move the interval edges closer" << std::endl;
914 double rMinBound = rMin, rMaxBound = rMax;
916 while (clsMin.second == 0 ||
fabs(rMin-limit) > std::max(absAccuracy, relAccuracy * limit)) {
917 rMin = 0.5*(rMin+limit);
918 if (!
RunOnePoint(rMin,
true, clsTarget) )
return false;
921 if (
fabs(clsMin.first-clsTarget) <= 2*clsMin.second)
break;
924 while (clsMax.second == 0 ||
fabs(rMax-limit) > std::max(absAccuracy, relAccuracy * limit)) {
925 rMax = 0.5*(rMax+limit);
927 if (!
RunOnePoint(rMax,
true,clsTarget) )
return false;
929 if (
fabs(clsMax.first-clsTarget) <= 2*clsMax.second)
break;
932 expoFit.
SetRange(rMinBound,rMaxBound);
940 std::cout <<
"Limit: " << r->
GetName() <<
" < " << limit <<
" +/- " << limitErr <<
" [" << rMin <<
", " << rMax <<
"]\n";
946 double rMinBound, rMaxBound; expoFit.
GetRange(rMinBound, rMaxBound);
947 limitErr = std::max(
fabs(rMinBound-limit),
fabs(rMaxBound-limit));
954 for (
int j = 0; j <
fLimitPlot->GetN(); ++j) {
957 for (
int i = 0, imax = 8; i <= imax; ++i, ++npoints) {
967 if (limitErr < std::max(absAccuracy, relAccuracy * limit))
break;
972 if (!
RunOnePoint(rTry,
true,clsTarget) )
return false;
985 for (
int j = 0; j <
fLimitPlot->GetN(); ++j) {
991 fLimitPlot->GetYaxis()->SetRangeUser(0.5*clsTarget, 1.5*clsTarget);
993 expoFit.
Draw(
"SAME");
1004 <<
"\tLimit: " << r->
GetName() <<
" < " << limit <<
" +/- " << limitErr <<
" @ " << (1-
fSize) * 100 <<
"% CL\n";
1035 TList * clsDist = 0;
1036 TList * clsbDist = 0;
1062 TList * clsDist = 0;
1063 TList * clsbDist = 0;
1091 if (!bModel || ! sbModel)
return 0;
1099 <<
" assume is for POI = 0" << std::endl;
1104 paramPoint = *poibkg;
1108 if (!toymcSampler) {
1113 if (dynamic_cast<RooStats::AsymptoticCalculator*>(
fCalculator0) ) {
1127 bool storePValues = clsDist || clsbDist || clbDist;
1128 if (
fNBins <=0 && storePValues) {
1129 oocoutW((
TObject*)0,
InputArguments) <<
"HypoTestInverter::RebuildDistribution - cannot return p values distribution with the auto scan" << std::endl;
1130 storePValues =
false;
1143 if (nToys <= 0) nToys = 100;
1145 std::vector<std::vector<double> > CLs_values(nPoints);
1146 std::vector<std::vector<double> > CLsb_values(nPoints);
1147 std::vector<std::vector<double> > CLb_values(nPoints);
1150 for (
int i = 0; i < nPoints; ++i) {
1151 CLs_values[i].reserve(nToys);
1152 CLb_values[i].reserve(nToys);
1153 CLsb_values[i].reserve(nToys);
1157 std::vector<double> limit_values; limit_values.reserve(nToys);
1160 << nToys << std::endl;
1170 assert(bModel->
GetPdf() );
1176 TFile * fileOut =
TFile::Open(outputfile,
"RECREATE");
1179 <<
" - the resulting limits will not be stored" << std::endl;
1182 TH1D * hL =
new TH1D(
"lowerLimitDist",
"Rebuilt lower limit distribution",100,1.,0.);
1183 TH1D * hU =
new TH1D(
"upperLimitDist",
"Rebuilt upper limit distribution",100,1.,0.);
1184 TH1D * hN =
new TH1D(
"nObs",
"Observed events",100,1.,0.);
1187 std::vector<TH1*> hCLb;
1188 std::vector<TH1*> hCLsb;
1189 std::vector<TH1*> hCLs;
1191 for (
int i = 0; i < nPoints; ++i) {
1192 hCLb.push_back(
new TH1D(
TString::Format(
"CLbDist_bin%d",i),
"CLb distribution",100,1.,0.));
1193 hCLs.push_back(
new TH1D(
TString::Format(
"ClsDist_bin%d",i),
"CLs distribution",100,1.,0.));
1194 hCLsb.push_back(
new TH1D(
TString::Format(
"CLsbDist_bin%d",i),
"CLs+b distribution",100,1.,0.));
1200 for (
int itoy = 0; itoy < nToys; ++itoy) {
1202 oocoutP((
TObject*)0,
Eval) <<
"\nHypoTestInverter - RebuildDistributions - running toy # " << itoy <<
" / " 1203 << nToys << std::endl;
1206 printf(
"\n\nshnapshot of s+b model \n");
1210 if (itoy> 0) *allParams = saveParams;
1226 for (
int i = 0; i < genObs.getSize(); ++i) {
1228 if (x) nObs += x->
getVal();
1243 if (r == 0)
continue;
1246 limit_values.push_back( value );
1251 std::cout <<
"The computed upper limit for toy #" << itoy <<
" is " << value << std::endl;
1254 if (itoy%10 == 0 || itoy == nToys-1) {
1260 if (!storePValues)
continue;
1270 for (
int ipoint = 0; ipoint < nPoints; ++ipoint) {
1273 CLs_values[ipoint].push_back( hr->
CLs() );
1274 CLsb_values[ipoint].push_back( hr->
CLsplusb() );
1275 CLb_values[ipoint].push_back( hr->
CLb() );
1276 hCLs[ipoint]->Fill( hr->
CLs() );
1277 hCLb[ipoint]->Fill( hr->
CLb() );
1278 hCLsb[ipoint]->Fill( hr->
CLsplusb() );
1286 if (itoy%10 == 0 || itoy == nToys-1) {
1287 for (
int ipoint = 0; ipoint < nPoints; ++ipoint) {
1301 if (clsDist) clsDist->
SetOwner(
true);
1302 if (clbDist) clbDist->
SetOwner(
true);
1303 if (clsbDist) clsbDist->
SetOwner(
true);
1307 for (
int ipoint = 0; ipoint < nPoints; ++ipoint) {
1330 for (
int i = 0; i < nPoints && storePValues; ++i) {
1337 const char * disName = (isUpper) ?
"upperLimit_dist" :
"lowerLimit_dist";
virtual Double_t sumEntries() const =0
virtual ~HypoTestInverter()
destructor (delete the HypoTestInverterResult)
void CreateResults() const
create a new HypoTestInverterResult to hold all computed results
virtual Double_t getMin(const char *name=0) const
RooArgSet * getVariables(Bool_t stripDisconnected=kTRUE) const
Return RooArgSet with all variables (tree leaf nodes of expresssion tree)
virtual const char * GetName() const
Returns name of object.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
bool RunOnePoint(double thisX, bool adaptive=false, double clTarget=-1) const
run only one point at the given POI value
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
void SetBackgroundAsAlt(Bool_t l=kTRUE)
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
ModelConfig is a simple class that holds configuration information specifying how a model should be u...
static double fgRelAccuracy
const ModelConfig * GetAlternateModel(void) const
const RooArgSet * GetObservables() const
get RooArgSet for observables (return NULL if not existing)
virtual Double_t getMax(const char *name=0) const
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...
HypoTestInverter class for performing an hypothesis test inversion by scanning the hypothesis test re...
IntervalCalculator is an interface class for a tools which produce RooStats ConfIntervals.
virtual void SetParametersForTestStat(const RooArgSet &nullpoi)
HypoTestResult * Eval(HypoTestCalculatorGeneric &hc, bool adaptive, double clsTarget) const
Run the Hypothesis test at a previous configured point (internal function called by RunOnePoint) ...
virtual const RooArgSet * get() const
virtual Double_t CLb() const
Convert NullPValue into a "confidence level".
virtual TestStatistic * GetTestStatistic() const =0
virtual void SetGlobalObservables(const RooArgSet &o)
RooAbsCollection * selectCommon(const RooAbsCollection &refColl) const
Create a subset of the current collection, consisting only of those elements that are contained as we...
bool RunFixedScan(int nBins, double xMin, double xMax, bool scanLog=false) const
Run a Fixed scan in npoints between min and max.
Double_t getVal(const RooArgSet *set=0) const
std::unique_ptr< TGraphErrors > fLimitPlot
TestStatSampler is an interface class for a tools which produce RooStats SamplingDistributions.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
double GetXValue(int index) const
function to return the value of the parameter of interest for the i^th entry in the results ...
HypoTestResult is a base class for results from hypothesis tests.
virtual void SetRange(Double_t xmin, Double_t xmax)
Initialize the upper and lower bounds to draw the function.
virtual TLine * DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Draw this line with new coordinates.
overwrite existing object with same name
SamplingDistribution * GetUpperLimitDistribution(bool rebuild=false, int nToys=100)
get the distribution of lower limit if rebuild = false (default) it will re-use the results of the sc...
virtual void SetNEventsPerToy(const Int_t nevents)
HypoTestResult * GetResult(int index) const
return a pointer to the i^th result object
static void CheckInputModels(const HypoTestCalculatorGeneric &hc, const RooRealVar &scanVar)
check the model given the given hypotestcalculator
static unsigned int fgNToys
SamplingDistribution * GetAltDistribution(void) const
virtual void Draw(Option_t *option="")
Draw this function with its current attributes.
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
virtual Double_t GetParError(Int_t ipar) const
Return value of parameter number ipar.
Double_t CLbError() const
The error on the "confidence level" of the null hypothesis.
HypoTestInverterResult * fResults
void setMax(const char *name, Double_t value)
Set maximum of name range to given value.
virtual void SetBuffer(Int_t buffersize, Option_t *option="")
Set the maximum number of entries to be kept in the buffer.
HypoTestInverter & operator=(const HypoTestInverter &rhs)
assignment operator NOTE: this class does not copy the contained result and the HypoTestCalculator, but only the pointers It requires the original HTI to be alive
virtual void SetTestStatistic(TestStatistic *testStatistic)=0
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=1, Int_t netopt=0)
Create / open a file.
Common base class for the Hypothesis Test Calculators.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
Double_t CLsError() const
The error on the ratio .
Bool_t GetPValueIsRightTail(void) const
SamplingDistribution * GetLowerLimitDistribution() const
get expected lower limit distributions implemented using interpolation The size for the sampling dist...
ECalculatorType fCalcType
void UseCLs(bool on=true)
flag to switch between using CLsb (default) or CLs as confidence level
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself.
Double_t LowerLimit()
lower and upper bound of the confidence interval (to get upper/lower limits, multiply the size( = 1-c...
static void SetCloseProof(Bool_t flag)
set flag to close proof for every new run
virtual void SetData(RooAbsData &data)
HypoTestInverter()
default constructor (doesn't do anything)
RooRealVar represents a fundamental (non-derived) real valued object.
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
virtual void setVal(Double_t value)
Set value of variable to 'value'.
virtual void SetLineColor(Color_t lcolor)
Set the line color.
virtual HypoTestResult * GetHypoTest() const
inherited methods from HypoTestCalculator interface
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
double GetLastYError() const
RooAbsCollection * snapshot(Bool_t deepCopy=kTRUE) const
Take a snap shot of current collection contents: An owning collection is returned containing clones o...
TestStatistic * GetTestStatistic() const
return the test statistic which is or will be used by the class
TGraphErrors * MakePlot(Option_t *opt="")
return a TGraphErrors with the obtained observed p-values resultinf from the scan By default (Option ...
RooAbsArg * first() const
void setMin(const char *name, Double_t value)
Set minimum of name range to given value.
virtual Double_t NullPValue() const
Return p-value for null hypothesis.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Double_t GetTestStatisticData(void) const
int fTotalToysRun
plot of limits
void PrintListContent(const RooArgList &l, std::ostream &os=std::cout)
virtual void FixParameter(Int_t ipar, Double_t value)
Fix the value of a parameter The specified value will be used in a fit operation. ...
TList fExpPValues
list of HypoTestResult for each point
Int_t GetSize() const
size of samples
RooRealVar * fScannedVariable
pointer to the generic hypotest calculator used
SamplingDistribution * GetNullDistribution(void) const
HypoTestCalculatorGeneric * fCalculator0
SamplingDistribution * GetUpperLimitDistribution() const
get expected upper limit distributions implemented using interpolation
RooAbsData is the common abstract base class for binned and unbinned datasets.
ProfileLikelihoodTestStat is an implementation of the TestStatistic interface that calculates the pro...
ToyMCSampler is an implementation of the TestStatSampler interface.
static double fgCLAccuracy
1-D histogram with a double per channel (see TH1 documentation)}
void SetTestStatisticData(const Double_t tsd)
This class simply holds a sampling distribution of some test statistic.
virtual void Append(const HypoTestResult *other)
add values from another HypoTestResult
Bool_t canBeExtended() const
Same purpose as HybridCalculatorOriginal, but different implementation.
constexpr Double_t E()
Base of natural log: .
virtual Double_t CLs() const
is simply (not a method, but a quantity)
virtual Double_t AlternatePValue() const
Return p-value for alternate hypothesis.
virtual Double_t ConfidenceLevel() const
Get the Confidence level for the test.
virtual Double_t CLsplusb() const
Convert AlternatePValue into a "confidence level".
Namespace for the RooStats classes.
RooAbsPdf * GetPdf() const
get model PDF (return NULL if pdf has not been specified or does not exist)
const RooArgSet * GetParametersOfInterest() const
get RooArgSet containing the parameter of interest (return NULL if not existing)
static Double_t uniform(TRandom *generator=randomGenerator())
Return a number uniformly distributed from (0,1)
RooAbsArg * find(const char *name) const
Find object with given name in list.
HypoTestInverterResult class holds the array of hypothesis test results and compute a confidence inte...
virtual HypoTestInverterResult * GetInterval() const
Run a fixed scan or the automatic scan depending on the configuration Return if needed a copy of the ...
virtual void SetObservables(const RooArgSet &o)
Class to plot an HypoTestInverterResult, result of the HypoTestInverter calculator.
RooArgSet * getParameters(const RooAbsData *data, Bool_t stripDisconnected=kTRUE) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
double GetLastYValue() const
virtual void SetPdf(RooAbsPdf &pdf)
Double_t CLsplusbError() const
The error on the "confidence level" of the alternative hypothesis.
virtual RooAbsData * GenerateToyData(RooArgSet ¶mPoint, RooAbsPdf &pdf) const
const ModelConfig * GetNullModel(void) const
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
bool SetTestStatistic(TestStatistic &stat)
set the test statistic to use
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
Mother of all ROOT objects.
static double fgAbsAccuracy
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
const RooArgSet * GetGlobalObservables() const
get RooArgSet for global observables (return NULL if not existing)
virtual void Add(TObject *obj)
double fLowerLimitError
interpolation option (linear or spline)
virtual Double_t GetParameter(Int_t ipar) const
const RooArgSet * GetNuisanceParameters() const
get RooArgSet containing the nuisance parameters (return NULL if not existing)
virtual void GetRange(Double_t *xmin, Double_t *xmax) const
Return range of a generic N-D function.
std::unique_ptr< HypoTestCalculatorGeneric > fHC
Does a frequentist hypothesis test.
A TGraphErrors is a TGraph with error bars.
static std::string fgAlgo
THist< 1, double, THistStatContent, THistStatUncertainty > TH1D
void Clear()
delete contained result and graph
static RooRealVar * GetVariableToScan(const HypoTestCalculatorGeneric &hc)
get the variable to scan try first with null model if not go to alternate model
Py_ssize_t ArraySize(const std::string &name)
Extract size from an array type, if available.
virtual void SetParameter(Int_t param, Double_t value)
bool RunLimit(double &limit, double &limitErr, double absTol=0, double relTol=0, const double *hint=0) const
run an automatic scan until the desired accuracy is reached Start by default from the full interval (...
const RooArgSet * GetSnapshot() const
get RooArgSet for parameters for a particular hypothesis (return NULL if not existing) ...
SamplingDistribution * RebuildDistributions(bool isUpper=true, int nToys=100, TList *clsDist=0, TList *clsbDist=0, TList *clbDist=0, const char *outputfile="HypoTestInverterRebuiltDist.root")
rebuild the sampling distributions by generating some toys and find for each of them a new upper limi...
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetNuisanceParameters(const RooArgSet &np)
virtual void SetData(RooAbsData &)
Set the DataSet ( add to the the workspace if not already there ?)
static void CloseProof(Option_t *option="s")
close all proof connections
TestStatistic is an interface class to provide a facility for construction test statistics distributi...
int ArraySize() const
number of entries in the results array
SamplingDistribution * GetLowerLimitDistribution(bool rebuild=false, int nToys=100)
get the distribution of lower limit if rebuild = false (default) it will re-use the results of the sc...
Hypothesis Test Calculator based on the asymptotic formulae for the profile likelihood ratio...
virtual void SetConfidenceLevel(Double_t cl)
set the confidence level for the interval (eg. 0.95 for a 95% Confidence Interval) ...
TestStatSampler * GetTestStatSampler(void) const
virtual Int_t numEntries() const
void setError(Double_t value)
std::vector< double > fXValues
number of points used to build expected p-values