62   fInterpolateLowerLimit(true),
 
   63   fInterpolateUpperLimit(true),
 
   64   fFittedLowerLimit(false),
 
   65   fFittedUpperLimit(false),
 
   66   fInterpolOption(kLinear),
 
   69   fCLsCleanupThreshold(0.005)
 
   83   fUseCLs(other.fUseCLs),
 
   84   fIsTwoSided(other.fIsTwoSided),
 
   85   fInterpolateLowerLimit(other.fInterpolateLowerLimit),
 
   86   fInterpolateUpperLimit(other.fInterpolateUpperLimit),
 
   87   fFittedLowerLimit(other.fFittedLowerLimit),
 
   88   fFittedUpperLimit(other.fFittedUpperLimit),
 
   89   fInterpolOption(other.fInterpolOption),
 
   90   fLowerLimitError(other.fLowerLimitError),
 
   91   fUpperLimitError(other.fUpperLimitError),
 
   92   fCLsCleanupThreshold(other.fCLsCleanupThreshold)
 
   99   for (
int i = 0; i < nOther; ++i)
 
  135  for (
int i=0; i < nOther; ++i) {
 
  158   fInterpolateLowerLimit(true),
 
  159   fInterpolateUpperLimit(true),
 
  160   fFittedLowerLimit(false),
 
  161   fFittedUpperLimit(false),
 
  162   fInterpolOption(kLinear),
 
  163   fLowerLimitError(-1),
 
  164   fUpperLimitError(-1),
 
  165   fCLsCleanupThreshold(0.005)
 
  215  bool resultIsAsymptotic(
false);
 
  219    if ( !
r->GetNullDistribution() && !
r->GetAltDistribution() ) {
 
  220      resultIsAsymptotic = 
true;
 
  224  int nPointsRemoved(0);
 
  226  double CLsobsprev(1.0);
 
  229    const double x = *itr;
 
  239       coutE(
Eval) << 
"HypoTestInverterResult::ExclusionCleanup - invalid size of sampling distribution" << std::endl;
 
  246    if (resultIsAsymptotic) {
 
  248      double dsig = 2.*maxSigma / (values.size() -1) ;
 
  261      double * z = 
const_cast<double *
>( &values[0] ); 
 
  267    const double CLsobs = 
CLs(i);
 
  271    bool removeThisPoint(
false);
 
  274    if (resultIsAsymptotic && i>=1 && CLsobs>CLsobsprev) {
 
  275      removeThisPoint = 
true;
 
  276    } 
else if (CLsobs >= 0.) {
 
  281    removeThisPoint |= i>=1 && CLsobs >= 0.9999;
 
  287    removeThisPoint |= CLsobs < 0.;
 
  290    if (removeThisPoint) {
 
  306  return nPointsRemoved;
 
  324   if (nOther == 0) 
return true;
 
  332   coutI(
Eval) << 
"HypoTestInverterResult::Add - merging result from " << otherResult.
GetName()
 
  333                                << 
" in " << 
GetName() << std::endl;
 
  338   if (addExpPValues || mergeExpPValues)
 
  339      coutI(
Eval) << 
"HypoTestInverterResult::Add - merging also the expected p-values from pseudo-data" << std::endl;
 
  346      for (
int i = 0; i < nOther; ++i)
 
  353      for (
int i = 0; i < nOther; ++i) {
 
  354         double otherVal = otherResult.
fXValues[i];
 
  356         if (otherHTR == 0) 
continue;
 
  357         bool sameXFound = 
false;
 
  358         for (
int j = 0; j < nThis; ++j) {
 
  365               thisHTR->
Append(otherHTR);
 
  367               if (mergeExpPValues) {
 
  372                  if (thisNToys != otherNToys )
 
  373                     coutW(
Eval) << 
"HypoTestInverterResult::Add expected p values have been generated with different toys " << thisNToys << 
" , " << otherNToys << std::endl;
 
  392      coutI(
Eval) << 
"HypoTestInverterResult::Add  - new number of points is " << 
fXValues.size()
 
  395      coutI(
Eval) << 
"HypoTestInverterResult::Add  - new toys/point is " 
  417      if (!
r) 
return false;
 
  454      return result->CLsplusb();  
 
  469        return result->CLsError();
 
  471        return result->CLsplusbError();
 
  496    return result->CLsplusb();
 
  520    return result->CLbError();
 
  532    return result->CLsplusbError();
 
  544    return result->CLsError();
 
  567  const double tol = 1.E-12;
 
  586   std::cout << 
"using graph for search " << lowSearch << 
" min " << axmin << 
" max " << axmax << std::endl;
 
  591   const double * 
y = 
graph.GetY();
 
  594      ooccoutE(
this,
Eval) << 
"HypoTestInverterResult::GetGraphX - need at least 2 points for interpolation (n=" << 
n << 
")\n";
 
  595      return (
n>0) ?  
y[0] : 0;
 
  612      return (lowSearch) ? varmax : varmin;
 
  615      return (lowSearch) ? varmin : varmax;
 
  622   if (axmin >= axmax ) {
 
  625      std::cout << 
"No range given - check if extrapolation is needed " << std::endl;
 
  631      double yfirst = 
graph.GetY()[0];
 
  632      double ylast = 
graph.GetY()[
n-1];
 
  638      if ( (
ymax < y0 && !lowSearch) || ( yfirst > y0 && lowSearch) ) {
 
  642      if ( (
ymax < y0 && lowSearch) || ( ylast > y0 && !lowSearch) ) {
 
  647   auto func = [&](
double x) {
 
  657             << 
" , " << 
graph.Eval(
xmax) << 
" target " << y0 << std::endl;
 
  660   bool ret = brf.
Solve(100, 1.E-16, 1.E-6);
 
  662      ooccoutE(
this,
Eval) << 
"HypoTestInverterResult - interpolation failed for interval [" << 
xmin << 
"," << 
xmax 
  664                          << 
" target=" << y0 << 
" return inf" << std::endl
 
  665                          << 
"One may try to clean up invalid points using HypoTestInverterResult::ExclusionCleanup()." << std::endl;
 
  668   double limit =  brf.
Root();
 
  671   if (lowSearch) std::cout << 
"lower limit search : ";
 
  672   else std::cout << 
"Upper limit search :  ";
 
  673   std::cout << 
"interpolation done between " << 
xmin << 
"  and " << 
xmax 
  674             << 
"\n Found limit using RootFinder is " << limit << std::endl;
 
  676   TString fname = 
"graph_upper.root";
 
  677   if (lowSearch) fname = 
"graph_lower.root";
 
  680      graph.Write(
"graph");
 
  686   if (axmin >= axmax) {
 
  689   std::cout << 
"do new interpolation dividing from " << 
index << 
"  and " << 
y[
index] << std::endl;
 
  692      if (lowSearch && 
index >= 1 && (
y[0] - y0) * ( 
y[
index]- y0) < 0) {
 
  696      else if (!lowSearch && 
index < 
n-2 && (
y[
n-1] - y0) * ( 
y[
index+1]- y0) < 0) {
 
  725      double val =  (lowSearch) ? 
xmin : 
xmax;
 
  726      coutW(
Eval) << 
"HypoTestInverterResult::FindInterpolatedLimit" 
  727                         << 
" - not enough points to get the inverted interval - return " 
  736   std::vector<unsigned int> 
index(
n );
 
  740   for (
int i = 0; i < 
n; ++i)
 
  752      double * itrmax = std::max_element(
graph.GetY() , 
graph.GetY() +
n);
 
  753      double ymax = *itrmax;
 
  754      int iymax = itrmax - 
graph.GetY();
 
  755      double xwithymax = 
graph.GetX()[iymax];
 
  758      std::cout << 
" max of y " << iymax << 
"  " << xwithymax << 
"  " << 
ymax << 
" target is " << 
target << std::endl;
 
  790         if (iymax <= (
n-1)/2 ) {
 
  801      std::cout << 
" found xmin, xmax  = " << 
xmin << 
"  " << 
xmax << 
" for search " << lowSearch << std::endl;
 
  812         if (upI < 1) 
return xmin;
 
  818         if (lowI >= 
n-1) 
return xmax;
 
  826   std::cout << 
"finding " << lowSearch << 
" limit between " << 
xmin << 
"  " << 
xmax << endl;
 
  836   TString limitType = (lowSearch) ? 
"lower" : 
"upper";
 
  837   ooccoutD(
this,
Eval) << 
"HypoTestInverterResult::FindInterpolateLimit " 
  838      << 
"the computed " << limitType << 
" limit is " << limit << 
" +/- " << error << std::endl;
 
  841   std::cout << 
"Found limit is " << limit << 
" +/- " << error << std::endl;
 
  889  int closestIndex = -1;
 
  891     double smallestError = 2; 
 
  892     double bestValue = 2;
 
  901        if ( dist < bestValue) {
 
  906     if (bestIndex >=0) 
return bestIndex;
 
  914  std::vector<unsigned int> indx(
n);
 
  916  std::vector<double> xsorted( 
n);
 
  917  for (
int i = 0; i < 
n; ++i) xsorted[i] = 
fXValues[indx[i] ];
 
  921  std::cout << 
"finding closest point to " << xtarget << 
" is " << index1 << 
"  " << indx[index1] << std::endl;
 
  925  if (index1 < 0) 
return indx[0];
 
  926  if (index1 >= 
n-1) 
return indx[
n-1];
 
  927  int index2 = index1 +1;
 
  978     coutW(
Eval) << 
"HypoTestInverterResult::CalculateEstimateError" 
  979                        << 
"Empty result \n";
 
  984     coutW(
Eval) << 
"HypoTestInverterResult::CalculateEstimateError" 
  985                        << 
" only  points - return its error\n";
 
  995  std::cout << 
"calculate estimate error " << 
type << 
" between " << 
xmin << 
" and " << 
xmax << std::endl;
 
 1000  std::vector<unsigned int> indx(
fXValues.size());
 
 1016  if (
graph.GetN() < 2) {
 
 1017     if (
np >= 2) 
coutW(
Eval) << 
"HypoTestInverterResult::CalculateEstimatedError - no valid points - cannot estimate  the " << 
type << 
" limit error " << std::endl;
 
 1028  TF1 fct(
"fct", 
"exp([0] * (x - [2] ) + [1] * (x-[2])**2)", minX, maxX);
 
 1029  double scale = maxX-minX;
 
 1048  std::cout << 
"fitting for limit " << 
type << 
"between " << minX << 
" , " << maxX << 
" points considered " << 
graph.GetN() <<  std::endl;
 
 1049  int fitstat = 
graph.Fit(&fct,
" EX0");
 
 1050  graph.SetMarkerStyle(20);
 
 1056  int fitstat = 
graph.Fit(&fct,
"Q EX0");
 
 1060  double theError = 0;
 
 1069     coutW(
Eval) << 
"HypoTestInverterResult::CalculateEstimatedError - cannot estimate  the " << 
type << 
" limit error " << std::endl;
 
 1111   if (!firstResult) 
return 0;
 
 1121   return !
result->GetBackGroundIsAlt() ? 
result->GetAltDistribution() : 
result->GetNullDistribution();
 
 1129   if (index < 0 || index >=  
ArraySize() ) 
return 0;
 
 1135   static bool useFirstB = 
false;
 
 1137   int bIndex = (useFirstB) ? 0 : 
index;
 
 1144   if (bDistribution && sbDistribution) {
 
 1154      std::vector<double> values(bDistribution->
GetSize());
 
 1155      for (
int i = 0; i < bDistribution->
GetSize(); ++i) {
 
 1167   const double dsig = 2* smax/ (npoints-1) ;
 
 1168   std::vector<double> values(npoints);
 
 1169   for (
int i = 0; i < npoints; ++i) {
 
 1170      double nsig = -smax + dsig*i;
 
 1172      if (pval < 0) { 
return 0;}
 
 1175   return new SamplingDistribution(
"Asymptotic expected values",
"Asymptotic expected values",values);
 
 1185      coutE(
Eval) << 
"HypoTestInverterResult::GetLimitDistribution" 
 1186                         << 
" not  enough points -  return 0 " << std::endl;
 
 1190   ooccoutD(
this,
Eval) << 
"HypoTestInverterResult - computing  limit distribution...." << std::endl;
 
 1195   std::vector<SamplingDistribution*> distVec( npoints );
 
 1197   for (
unsigned int i = 0; i < distVec.size(); ++i) {
 
 1202         distVec[i]->InverseCDF(0);
 
 1203         sum += distVec[i]->GetSize();
 
 1209      ooccoutW(
this,
InputArguments) << 
"HypoTestInverterResult - set a minimum size of 10 for limit distribution" <<   std::endl;
 
 1217  std::vector< std::vector<double>  > quantVec(npoints );
 
 1218  for (
int i = 0; i <  npoints; ++i) {
 
 1220     if (!distVec[i]) 
continue;
 
 1223     std::vector<double> pvalues = distVec[i]->GetSamplingDistribution();
 
 1224     delete distVec[i];  distVec[i] = 0;
 
 1225     std::sort(pvalues.begin(), pvalues.end());
 
 1230     quantVec[i] = std::vector<double>(
size);
 
 1231     for (
int ibin = 0; ibin < 
size; ++ibin) {
 
 1233        p[0] = std::min( (ibin+1) * 1./
double(
size), 1.0);
 
 1236        (quantVec[i])[ibin] = 
q[0];
 
 1242  std::vector<unsigned int> 
index( npoints );
 
 1249  std::vector<double> limits(
size);
 
 1251  for (
int j = 0; j < 
size; ++j ) {
 
 1254     for (
int k = 0; k < npoints ; ++k) {
 
 1317   if (nEntries <= 0)  
return (lower) ? 1 : 0;  
 
 1321   if (!
r->GetNullDistribution() && !
r->GetAltDistribution() ) {
 
 1325      if (!limitDist) 
return 0;
 
 1327      if (values.size() <= 1) 
return 0;
 
 1344   if (
option.Contains(
"P")) {
 
 1349      std::vector<unsigned int> 
index(nEntries);
 
 1352      for (
int j=0; j<nEntries; ++j) {
 
 1356            ooccoutI(
this,
Eval) << 
"HypoTestInverterResult - cannot compute expected p value distribution for point, x = " 
 1357                                << 
GetXValue(i)  << 
" skip it " << std::endl;
 
 1361         double * 
x = 
const_cast<double *
>(&values[0]); 
 
 1367         ooccoutE(
this,
Eval) << 
"HypoTestInverterResult - cannot compute limits , not enough points, n =  " << 
g.GetN() << std::endl;
 
 1378   if (!limitDist) 
return 0;
 
 1380   double * 
x = 
const_cast<double *
>(&values[0]); 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint const char mode
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
Class for finding the root of a one dimensional function using the Brent algorithm.
 
bool SetFunction(const ROOT::Math::IGenFunction &f, double xlow, double xup) override
Sets the function for the rest of the algorithms.
 
bool Solve(int maxIter=100, double absTol=1E-8, double relTol=1E-10) override
Returns the X value corresponding to the function value fy for (xmin<x<xmax).
 
double Root() const override
Returns root value.
 
void SetNpx(int npx)
Set the number of point used to bracket root using a grid.
 
Functor1D class for one-dimensional functions.
 
virtual void removeAll()
Remove all arguments from our set, deleting them if we own them.
 
RooAbsArg * first() const
 
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
 
virtual double getMax(const char *name=nullptr) const
Get maximum of currently defined range.
 
virtual double getMin(const char *name=nullptr) const
Get minimum of currently defined range.
 
RooRealVar represents a variable that can be changed from the outside.
 
TObject * clone(const char *newname) const override
 
static double GetExpectedPValues(double pnull, double palt, double nsigma, bool usecls, bool oneSided=true)
function given the null and the alt p value - return the expected one given the N - sigma value
 
HypoTestInverterResult class holds the array of hypothesis test results and compute a confidence inte...
 
bool fInterpolateUpperLimit
 
double GetYValue(int index) const
function to return the value of the confidence level for the i^th entry in the results
 
double LowerLimitEstimatedError()
rough estimation of the error on the computed bound of the confidence interval Estimate of lower limi...
 
double FindInterpolatedLimit(double target, bool lowSearch=false, double xmin=1, double xmax=0.0)
interpolate to find a limit value Use a linear or a spline interpolation depending on the interpolati...
 
double UpperLimitEstimatedError()
Estimate of lower limit error function evaluates only a rough error on the lower limit.
 
SamplingDistribution * GetSignalAndBackgroundTestStatDist(int index) const
get the signal and background test statistic distribution
 
double fCLsCleanupThreshold
 
HypoTestResult * GetResult(int index) const
return a pointer to the i^th result object
 
HypoTestInverterResult & operator=(const HypoTestInverterResult &other)
operator =
 
InterpolOption_t fInterpolOption
interpolation option (linear or spline)
 
int ArraySize() const
number of entries in the results array
 
bool fInterpolateLowerLimit
 
std::vector< double > fXValues
 
double CLsplusbError(int index) const
return the observed CLsplusb value for the i-th entry
 
double CLsError(int index) const
return the observed CLb value for the i-th entry
 
double GetGraphX(const TGraph &g, double y0, bool lowSearch, double &xmin, double &xmax) const
return the X value of the given graph for the target value y0 the graph is evaluated using linear int...
 
double CLbError(int index) const
return the observed CLb value for the i-th entry
 
double GetExpectedUpperLimit(double nsig=0, const char *opt="") const
get Limit value corresponding at the desired nsigma level (0) is median -1 sigma is 1 sigma
 
HypoTestInverterResult(const char *name=nullptr)
default constructor
 
double GetXValue(int index) const
function to return the value of the parameter of interest for the i^th entry in the results
 
double UpperLimit() override
return the interval upper limit
 
bool Add(const HypoTestInverterResult &otherResult)
merge with the content of another HypoTestInverterResult object
 
int FindClosestPointIndex(double target, int mode=0, double xtarget=0)
 
TList fExpPValues
list of expected sampling distribution for each point
 
double GetExpectedLowerLimit(double nsig=0, const char *opt="") const
get Limit value corresponding at the desired nsigma level (0) is median -1 sigma is 1 sigma
 
bool fIsTwoSided
two sided scan (look for lower/upper limit)
 
double CalculateEstimatedError(double target, bool lower=true, double xmin=1, double xmax=0.0)
Return an error estimate on the upper(lower) limit.
 
static int fgAsymptoticNumPoints
number of points used to build expected p-values
 
static double fgAsymptoticMaxSigma
max sigma value used to scan asymptotic expected p values
 
int ExclusionCleanup()
remove points that appear to have failed.
 
double LowerLimit() override
lower and upper bound of the confidence interval (to get upper/lower limits, multiply the size( = 1-c...
 
double CLs(int index) const
return the observed CLb value for the i-th entry
 
int FindIndex(double xvalue) const
find the index corresponding at the poi value xvalue If no points is found return -1 Note that a tole...
 
double GetYError(int index) const
function to return the estimated error on the value of the confidence level for the i^th entry in the...
 
double CLb(int index) const
return the observed CLb value for the i-th entry
 
TList fYObjects
list of HypoTestResult for each point
 
double GetExpectedLimit(double nsig, bool lower, const char *opt="") const
get expected limit (lower/upper) depending on the flag for asymptotic is a special case (the distribu...
 
SamplingDistribution * GetExpectedPValueDist(int index) const
return expected distribution of p-values (Cls or Clsplusb)
 
double CLsplusb(int index) const
return the observed CLsplusb value for the i-th entry
 
SamplingDistribution * GetLimitDistribution(bool lower) const
get the limit distribution (lower/upper depending on the flag) by interpolating the expected p values...
 
SamplingDistribution * GetNullTestStatDist(int index) const
same in terms of alt and null
 
SamplingDistribution * GetBackgroundTestStatDist(int index) const
get the background test statistic distribution
 
~HypoTestInverterResult() override
destructor
 
HypoTestResult is a base class for results from hypothesis tests.
 
virtual double CLsplusb() const
Convert AlternatePValue into a "confidence level".
 
virtual void Append(const HypoTestResult *other)
add values from another HypoTestResult
 
void SetBackgroundAsAlt(bool l=true)
 
void SetNullDistribution(SamplingDistribution *null)
 
bool GetBackGroundIsAlt(void) const
 
void SetTestStatisticData(const double tsd)
 
void SetAltDistribution(SamplingDistribution *alt)
 
void SetPValueIsRightTail(bool pr)
 
SamplingDistribution * GetNullDistribution(void) const
 
virtual double CLs() const
is simply  (not a method, but a quantity)
 
SamplingDistribution * GetAltDistribution(void) const
 
This class simply holds a sampling distribution of some test statistic.
 
Int_t GetSize() const
size of samples
 
const std::vector< double > & GetSamplingDistribution() const
Get test statistics values.
 
SimpleInterval is a concrete implementation of the ConfInterval interface.
 
double fUpperLimit
upper interval limit
 
RooArgSet fParameters
set containing the parameter of interest
 
double ConfidenceLevel() const override
return the confidence interval
 
double fLowerLimit
lower interval limit
 
double fConfidenceLevel
confidence level
 
SimpleInterval & operator=(const SimpleInterval &other)
default constructor
 
virtual void RemoveAll(TCollection *col)
Remove all objects in collection col from this collection.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
virtual Double_t Derivative(Double_t x, Double_t *params=nullptr, Double_t epsilon=0.001) const
Returns the first derivative of the function at point x, computed by Richardson's extrapolation metho...
 
virtual void SetParLimits(Int_t ipar, Double_t parmin, Double_t parmax)
Set lower and upper limits for parameter ipar.
 
virtual void SetParameters(const Double_t *params)
 
virtual void FixParameter(Int_t ipar, Double_t value)
Fix the value of a parameter for a fit operation The specified value will be used in the fit and the ...
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
A TGraphErrors is a TGraph with error bars.
 
A TGraph is an object made of two arrays X and Y with npoints each.
 
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
 
void Add(TObject *obj) override
 
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
 
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
 
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
 
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
 
const char * GetName() const override
Returns name of object.
 
virtual TObject * Clone(const char *newname="") const
Make a clone of an object using the Streamer facility.
 
virtual TObject * RemoveAt(Int_t idx)
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
double normal_cdf(double x, double sigma=1, double x0=0)
Cumulative distribution function of the normal (Gaussian) distribution (lower tail).
 
The namespace RooFit contains mostly switches that change the behaviour of functions of PDFs (or othe...
 
Namespace for the RooStats classes.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
void SortItr(Iterator first, Iterator last, IndexIterator index, Bool_t down=kTRUE)
Sort the n1 elements of the Short_t array defined by its iterators.
 
Double_t QuietNaN()
Returns a quiet NaN as defined by IEEE 754.
 
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
 
T MinElement(Long64_t n, const T *a)
Returns minimum of array a of length n.
 
void Quantiles(Int_t n, Int_t nprob, Double_t *x, Double_t *quantiles, Double_t *prob, Bool_t isSorted=kTRUE, Int_t *index=nullptr, Int_t type=7)
Computes sample quantiles, corresponding to the given probabilities.
 
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Comparing floating points.
 
Bool_t AreEqualAbs(Double_t af, Double_t bf, Double_t epsilon)
Comparing floating points.
 
T MaxElement(Long64_t n, const T *a)
Returns maximum of array a of length n.
 
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
 
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
 
static uint64_t sum(uint64_t i)