1#ifndef ROOT_TEfficiency_cxx 
    2#define ROOT_TEfficiency_cxx 
  701fPassedHistogram(nullptr),
 
  702fTotalHistogram(nullptr),
 
 
  757         Info(
"TEfficiency",
"given histograms are filled with weights");
 
  762      Error(
"TEfficiency(const TH1&,const TH1&)",
"histograms are not consistent -> results are useless");
 
  763      Warning(
"TEfficiency(const TH1&,const TH1&)",
"using two empty TH1D('h1','h1',10,0,10)");
 
 
  985      fTotalHistogram = 
new TH3D(
"total",
"total",
nbinsx,xlow,xup,
nbinsy,ylow,yup,
nbinsz,
zlow,
zup);
 
  986      fPassedHistogram = 
new TH3D(
"passed",
"passed",
nbinsx,xlow,xup,
nbinsy,ylow,yup,
nbinsz,
zlow,
zup);
 
 
 1025fPaintGraph(nullptr),
 
 1026fPaintHisto(nullptr),
 
 
 1060   fBeta_alpha(
rEff.fBeta_alpha),
 
 1061   fBeta_beta(
rEff.fBeta_beta),
 
 1062   fBeta_bin_params(
rEff.fBeta_bin_params),
 
 1063   fConfLevel(
rEff.fConfLevel),
 
 1064   fDirectory(nullptr),
 
 1065   fFunctions(nullptr),
 
 1066   fPaintGraph(nullptr),
 
 1067   fPaintHisto(nullptr),
 
 1068   fWeight(
rEff.fWeight)
 
 1071   rEff.TObject::Copy(*
this);
 
 1084   title += 
rEff.GetTitle();
 
 1092   rEff.TAttLine::Copy(*
this);
 
 1093   rEff.TAttFill::Copy(*
this);
 
 1094   rEff.TAttMarker::Copy(*
this);
 
 
 1159      return ((
mode + delta) > 1) ? 1.0 : (
mode + delta);
 
 1161      return ((
mode - delta) < 0) ? 0.0 : (
mode - delta);
 
 
 1178      ::Error(
"FeldmanCousins",
"Error running FC method - return 0 or 1");
 
 
 1209   double alpha = 1.-level;
 
 
 1233   const double alpha = 1. - level;
 
 1236   const double tol = 1
e-9; 
 
 
 1355      if((
a > 0) && (
b > 0))
 
 1358         gROOT->Error(
"TEfficiency::BayesianCentral",
"Invalid input parameters - return 1");
 
 1363      if((
a > 0) && (
b > 0))
 
 1366         gROOT->Error(
"TEfficiency::BayesianCentral",
"Invalid input parameters - return 0");
 
 
 1410   if (
a <= 0 || 
b <= 0) {
 
 1412      gROOT->Error(
"TEfficiency::BayesianShortest",
"Invalid input parameters - return [0,1]");
 
 1431   if ( 
a==
b && 
a<=1.0) {
 
 1445   bool ret = 
minim.Minimize(100, 1.E-10,1.E-10);
 
 1447      gROOT->Error(
"TEfficiency::BayesianShortes",
"Error finding the shortest interval");
 
 
 1464   if (
a <= 0 || 
b <= 0 ) {
 
 1465      gROOT->Error(
"TEfficiency::BayesianMean",
"Invalid input parameters - return 0");
 
 
 1487   if (
a <= 0 || 
b <= 0 ) {
 
 1488      gROOT->Error(
"TEfficiency::BayesianMode",
"Invalid input parameters - return 0");
 
 1491   if ( 
a <= 1 || 
b <= 1) {
 
 1492      if ( 
a < 
b) 
return 0;
 
 1493      if ( 
a > 
b) 
return 1;
 
 1494      if (
a == 
b) 
return 0.5; 
 
 
 1554      if(
ax1->GetNbins() != 
ax2->GetNbins()) {
 
 1555         gROOT->Info(
"TEfficiency::CheckBinning",
"Histograms are not consistent: they have different number of bins");
 
 1559      for(
Int_t i = 1; i <= 
ax1->GetNbins() + 1; ++i)
 
 1561            gROOT->Info(
"TEfficiency::CheckBinning",
"Histograms are not consistent: they have different bin edges");
 
 
 1582   if(
pass.GetDimension() != 
total.GetDimension()) {
 
 1583      gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects have different dimensions");
 
 1588      gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects have different binning");
 
 1593      gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects do not have consistent bin contents");
 
 
 1622   switch(
pass.GetDimension()) {
 
 1623      case 1: nbins = 
nbinsx + 2; 
break;
 
 1629   for(
Int_t i = 0; i < nbins; ++i) {
 
 1630      if(
pass.GetBinContent(i) > 
total.GetBinContent(i)) {
 
 1631         gROOT->Info(
"TEfficiency::CheckEntries",
"Histograms are not consistent: passed bin content > total bin content");
 
 
 1644   if (
pass.GetSumw2N() == 0 && 
total.GetSumw2N() == 0) 
return false;
 
 
 1674      Error(
"CreatePaintingGraph",
"Call this function only for dimension == 1");
 
 
 1693      Error(
"CreatePaintingGraph",
"Call this function only for dimension == 2");
 
 
 1723   double * px = graph->
GetX();
 
 1724   double * py = graph->
GetY();
 
 1725   double * pz = graph->
GetZ();
 
 
 1827   double * px = graph->
GetX();
 
 1828   double * py = graph->
GetY();
 
 1843      if (
j >= graph->
GetN() ) {
 
 
 1899      Error(
"CreatePaintingistogram",
"Call this function only for dimension == 2");
 
 1907   TH2 * hist = 
nullptr;
 
 1909   if (
xaxis->IsVariableBinSize() && 
yaxis->IsVariableBinSize() )
 
 1912   else if (
xaxis->IsVariableBinSize() && ! 
yaxis->IsVariableBinSize() )
 
 1915   else if (!
xaxis->IsVariableBinSize() &&  
yaxis->IsVariableBinSize() )
 
 
 2022   Double_t alpha = (1.0 - level) / 2;
 
 
 2133   for (
int i = 0; i < 
n ; ++i) {
 
 2135         ::Error(
"TEfficiency::Combine",
"total events = %i < passed events %i",
total[i],
pass[i]);
 
 2136         ::Info(
"TEfficiency::Combine",
"stop combining");
 
 2151      ::Info(
"TEfficiency::Combine",
"stop combining");
 
 2155   double a = 
ktot + alpha;
 
 2158   double mean = 
a/(
a+
b);
 
 
 2240      level = atof( opt(pos,opt.
Length() ).
Data() );
 
 2241      if((level <= 0) || (level >= 1))
 
 2249      for(
Int_t k = 0; k < 
n; ++k) {
 
 2253            gROOT->Error(
"TEfficiency::Combine",
"invalid custom weight found w = %.2lf",
w[k]);
 
 2254            gROOT->Info(
"TEfficiency::Combine",
"stop combining");
 
 2263   while((obj = next())) {
 
 2267         if(
pEff->GetDimension() > 1)
 
 2269         if(!level) level = 
pEff->GetConfidenceLevel();
 
 2271         if(alpha<1) alpha = 
pEff->GetBetaAlpha();
 
 2272         if(beta<1) beta = 
pEff->GetBetaBeta();
 
 2276            if(alpha != 
pEff->GetBetaAlpha())
 
 2278            if(beta != 
pEff->GetBetaBeta())
 
 2280            if(!
pEff->UsesBayesianStat())
 
 2305      gROOT->Error(
"TEfficiency::Combine",
"no TEfficiency objects in given list");
 
 2306      gROOT->Info(
"TEfficiency::Combine",
"stop combining");
 
 2312      gROOT->Error(
"TEfficiency::Combine",
"number of weights n=%i differs from number of TEfficiency objects k=%i which should be combined",
n,(
Int_t)
vTotal.size());
 
 2313      gROOT->Info(
"TEfficiency::Combine",
"stop combining");
 
 2321         gROOT->Warning(
"TEfficiency::Combine",
"histograms have not the same binning -> results may be useless");
 
 2327      gROOT->Info(
"TEfficiency::Combine",
"combining %i TEfficiency objects",(
Int_t)
vTotal.size());
 
 2329         gROOT->Info(
"TEfficiency::Combine",
"using custom weights");
 
 2331         gROOT->Info(
"TEfficiency::Combine",
"using the following prior probability for the efficiency: P(e) ~ Beta(e,%.3lf,%.3lf)",alpha,beta);
 
 2334         gROOT->Info(
"TEfficiency::Combine",
"using individual priors of each TEfficiency object");
 
 2335      gROOT->Info(
"TEfficiency::Combine",
"confidence level = %.2lf",level);
 
 2349   std::vector<Int_t> 
pass(num);
 
 2350   std::vector<Int_t> 
total(num);
 
 2357      x[i-1] = 
vTotal.at(0)->GetBinCenter(i);
 
 2358      xlow[i-1] = 
x[i-1] - 
vTotal.at(0)->GetBinLowEdge(i);
 
 2359      xhigh[i-1] = 
vTotal.at(0)->GetBinWidth(i) - xlow[i-1];
 
 2369      if(eff[i-1] == -1) {
 
 2370         gROOT->Error(
"TEfficiency::Combine",
"error occurred during combining");
 
 2371         gROOT->Info(
"TEfficiency::Combine",
"stop combining");
 
 2374      efflow[i-1]= eff[i-1] - low;
 
 
 2566   if(
option.Contains(
"+")) {
 
 2567      option.ReplaceAll(
"+",
"");
 
 2576   if (!
option.Contains(
"N")) { 
 
 2583         while((obj = next())) {
 
 
 2756         if (
tw2 <= 0) 
return 0;
 
 2777            Warning(
"GetEfficiencyErrorLow",
"frequentist confidence intervals for weights are only supported by the normal approximation");
 
 2778            Info(
"GetEfficiencyErrorLow",
"setting statistic option to kFNormal");
 
 2789         return (eff - delta < 0) ? eff : delta;
 
 
 2836         if (
tw2 <= 0) 
return 0;
 
 2857            Warning(
"GetEfficiencyErrorUp",
"frequentist confidence intervals for weights are only supported by the normal approximation");
 
 2858            Info(
"GetEfficiencyErrorUp",
"setting statistic option to kFNormal");
 
 2868         return (eff + delta > 1) ? 1.-eff : delta;
 
 
 2921   if(!
pList->IsEmpty()) {
 
 2925      while((obj = next())) {
 
 
 2965      return ((average + delta) > 1) ? 1.0 : (average + delta);
 
 2967      return ((average - delta) < 0) ? 0.0 : (average - delta);
 
 
 2992      Fatal(
"operator+=",
"Adding to a non consistent TEfficiency object which has not a total or a passed histogram ");
 
 2996   if (
rhs.fTotalHistogram == 
nullptr && 
rhs.fPassedHistogram == 
nullptr ) {
 
 2997      Warning(
"operator+=",
"no operation: adding an empty object");
 
 3000   else  if (
rhs.fTotalHistogram == 
nullptr  || 
rhs.fPassedHistogram == 
nullptr ) {
 
 3001      Fatal(
"operator+=",
"Adding a non consistent TEfficiency object which has not a total or a passed histogram ");
 
 
 3059      rhs.TAttLine::Copy(*
this);
 
 3060      rhs.TAttFill::Copy(*
this);
 
 3061      rhs.TAttMarker::Copy(*
this);
 
 
 3114         while ((obj = next())) {
 
 3117               ((
TF1 *)obj)->Paint(
"sameC");
 
 3126      if (
option.Contains(
"GRAPH")) {
 
 3127         option.ReplaceAll(
"GRAPH",
"");
 
 3153   Warning(
"Paint",
"Painting 3D efficiency is not implemented");
 
 
 3214      out << 
sxaxis << 
".data()";
 
 3221         out << 
syaxis << 
".data()";
 
 3229         out << 
szaxis << 
".data()";
 
 3238   out << 
"   " << 
name << 
"->SetConfidenceLevel(" << 
fConfLevel << 
");\n";
 
 3241   out << 
"   " << 
name << 
"->SetWeight(" << 
fWeight << 
");\n";
 
 3242   out << 
"   " << 
name << 
"->SetStatisticOption(static_cast<TEfficiency::EStatOption>(" << 
fStatisticOption << 
"));\n";
 
 3246      out << 
"   " << 
name << 
"->SetUseWeightedEvents();\n";
 
 3250      out << 
"   " << 
name << 
"->SetBetaBinParameters(" << i << 
"," << 
fBeta_bin_params.at(i).first << 
"," 
 3262   for (
Int_t i = 0; i < nbins; ++i) {
 
 
 3292      Warning(
"SetBetaAlpha(Double_t)",
"invalid shape parameter %.2lf",alpha);
 
 
 3310      Warning(
"SetBetaBeta(Double_t)",
"invalid shape parameter %.2lf",beta);
 
 
 3350      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3354      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3370      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3374      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3390      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3394      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3410      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3414      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3431      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3435      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3452      Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
 
 3456      Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
 
 
 3471   if((level > 0) && (level < 1))
 
 3474      Warning(
"SetConfidenceLevel(Double_t)",
"invalid confidence level %.2lf",level);
 
 
 3531      Error(
"SetPassedEvents(Int_t,Double_t)",
"total number of events (%.1lf) in bin %i is less than given number of passed events %.1lf",
fTotalHistogram->
GetBinContent(bin),bin,events);
 
 
 3725      Error(
"SetTotalEvents(Int_t,Double_t)",
"passed number of events (%.1lf) in bin %i is bigger than given number of total events %.1lf",
fPassedHistogram->
GetBinContent(bin),bin,events);
 
 
 3786       gROOT->Info(
"TEfficiency::SetUseWeightedEvents",
"Handle weighted events for computing efficiency");
 
 
 3806      Warning(
"SetWeight",
"invalid weight %.2lf",weight);
 
 
 3840                                                              * (1 - average) + kappa * kappa / 4);
 
 3842      return ((
mode + delta) > 1) ? 1.0 : (
mode + delta);
 
 3844      return ((
mode - delta) < 0) ? 0.0 : (
mode - delta);
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
const TEfficiency operator+(const TEfficiency &lhs, const TEfficiency &rhs)
Addition operator.
 
const Double_t kDefBetaAlpha
 
const Double_t kDefWeight
 
const Double_t kDefBetaBeta
 
const TEfficiency::EStatOption kDefStatOpt
 
const Double_t kDefConfLevel
 
static unsigned int total
 
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 result
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
 
Option_t Option_t TPoint TPoint const char mode
 
User class for performing function minimization.
 
Template class to wrap any C++ callable object which takes one argument i.e.
 
Fill Area Attributes class.
 
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
 
virtual void SaveFillAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001)
Save fill attributes as C++ statement(s) on output stream out.
 
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
 
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
virtual void SaveMarkerAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t sizdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
 
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
 
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
 
Class to manage histogram axis.
 
virtual void SetBinLabel(Int_t bin, const char *label)
Set label for bin.
 
const char * GetTitle() const override
Returns title of object.
 
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
 
const TArrayD * GetXbins() const
 
const char * GetBinLabel(Int_t bin) const
Return label for bin.
 
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
 
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
 
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
 
THashList * GetLabels() const
 
Binomial fitter for the division of two histograms.
 
TFitResultPtr Fit(TF1 *f1, Option_t *option="")
Carry out the fit of the given function to the given histograms.
 
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
 
Collection abstract base class.
 
TDirectory::TContext keeps track and restore the current directory.
 
Describe directory structure in memory.
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
 
Class to handle efficiency histograms.
 
void FillGraph2D(TGraph2DAsymmErrors *graph, Option_t *opt) const
Fill the graph to be painted with information from TEfficiency Internal method called by TEfficiency:...
 
void Draw(Option_t *opt="") override
Draws the current TEfficiency object.
 
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
 
static Bool_t FeldmanCousinsInterval(Double_t total, Double_t passed, Double_t level, Double_t &lower, Double_t &upper)
Calculates the interval boundaries using the frequentist methods of Feldman-Cousins.
 
static Double_t BetaMode(Double_t alpha, Double_t beta)
Compute the mode of the beta distribution.
 
TH2 * CreateHistogram(Option_t *opt="") const
Create the histogram used to be painted (for dim=2 TEfficiency) The return object is managed by the c...
 
static Bool_t BetaShortestInterval(Double_t level, Double_t alpha, Double_t beta, Double_t &lower, Double_t &upper)
Calculates the boundaries for a shortest confidence interval for a Beta distribution.
 
static Bool_t CheckWeights(const TH1 &pass, const TH1 &total)
Check if both histogram are weighted.
 
static Double_t BetaMean(Double_t alpha, Double_t beta)
Compute the mean (average) of the beta distribution.
 
TEfficiency()
Default constructor.
 
Double_t GetBetaAlpha(Int_t bin=-1) const
 
void FillWeighted(Bool_t bPassed, Double_t weight, Double_t x, Double_t y=0, Double_t z=0)
This function is used for filling the two histograms with a weight.
 
~TEfficiency() override
default destructor
 
TList * GetListOfFunctions()
 
static Double_t Bayesian(Double_t total, Double_t passed, Double_t level, Double_t alpha, Double_t beta, Bool_t bUpper, Bool_t bShortest=false)
Calculates the boundaries for a Bayesian confidence interval (shortest or central interval depending ...
 
static Double_t AgrestiCoull(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries for the frequentist Agresti-Coull interval.
 
Long64_t Merge(TCollection *list)
Merges the TEfficiency objects in the given list to the given TEfficiency object using the operator+=...
 
std::vector< std::pair< Double_t, Double_t > > fBeta_bin_params
Parameter for prior beta distribution different bin by bin (default vector is empty)
 
static Double_t FeldmanCousins(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries for the frequentist Feldman-Cousins interval.
 
EStatOption fStatisticOption
Defines how the confidence intervals are determined.
 
void SetStatisticOption(EStatOption option)
Sets the statistic option which affects the calculation of the confidence interval.
 
void Paint(Option_t *opt) override
Paints this TEfficiency object.
 
void SetWeight(Double_t weight)
Sets the global weight for this TEfficiency object.
 
TH1 * fTotalHistogram
Histogram for total number of events.
 
Int_t GetDimension() const
returns the dimension of the current TEfficiency object
 
TGraph2DAsymmErrors * fPaintGraph2D
! Temporary graph for painting
 
TEfficiency & operator+=(const TEfficiency &rhs)
Adds the histograms of another TEfficiency object to current histograms.
 
Bool_t SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Set the bins for the underlined passed and total histograms If the class have been already filled the...
 
void Build(const char *name, const char *title)
Building standard data structure of a TEfficiency object.
 
TH1 * GetCopyPassedHisto() const
Returns a cloned version of fPassedHistogram.
 
Double_t GetEfficiencyErrorUp(Int_t bin) const
Returns the upper error on the efficiency in the given global bin.
 
Double_t fBeta_alpha
Global parameter for prior beta distribution (default = 1)
 
void SavePrimitive(std::ostream &out, Option_t *opt="") override
Save primitive as a C++ statement(s) on output stream out.
 
void SetBetaBeta(Double_t beta)
Sets the shape parameter β.
 
static Bool_t CheckBinning(const TH1 &pass, const TH1 &total)
Checks binning for each axis.
 
void SetName(const char *name) override
Sets the name.
 
TGraph2DAsymmErrors * CreateGraph2D(Option_t *opt="") const
Create the graph used be painted (for dim=1 TEfficiency) The return object is managed by the caller.
 
Bool_t SetPassedEvents(Int_t bin, Double_t events)
Sets the number of passed events in the given global bin.
 
static Double_t BetaCentralInterval(Double_t level, Double_t alpha, Double_t beta, Bool_t bUpper)
Calculates the boundaries for a central confidence interval for a Beta distribution.
 
Int_t GetGlobalBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Returns the global bin number which can be used as argument for the following functions:
 
TH1 * fPassedHistogram
Histogram for events which passed certain criteria.
 
static Double_t MidPInterval(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries using the mid-P binomial interval (Lancaster method) from B.
 
void SetBetaAlpha(Double_t alpha)
Sets the shape parameter α.
 
@ kIsBayesian
Bayesian statistics are used.
 
@ kUseWeights
Use weights.
 
@ kPosteriorMode
Use posterior mean for best estimate (Bayesian statistics)
 
@ kUseBinPrior
Use a different prior for each bin.
 
@ kShortestInterval
Use shortest interval.
 
static Bool_t CheckEntries(const TH1 &pass, const TH1 &total, Option_t *opt="")
Checks whether bin contents are compatible with binomial statistics.
 
static Double_t Normal(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Returns the confidence limits for the efficiency supposing that the efficiency follows a normal distr...
 
Double_t fWeight
Weight for all events (default = 1)
 
Bool_t SetPassedHistogram(const TH1 &rPassed, Option_t *opt)
Sets the histogram containing the passed events.
 
Double_t GetBetaBeta(Int_t bin=-1) const
 
Double_t(* fBoundary)(Double_t, Double_t, Double_t, Bool_t)
! Pointer to a method calculating the boundaries of confidence intervals
 
void FillGraph(TGraphAsymmErrors *graph, Option_t *opt) const
Fill the graph to be painted with information from TEfficiency Internal method called by TEfficiency:...
 
static Double_t Combine(Double_t &up, Double_t &low, Int_t n, const Int_t *pass, const Int_t *total, Double_t alpha, Double_t beta, Double_t level=0.683, const Double_t *w=nullptr, Option_t *opt="")
 
void FillHistogram(TH2 *h2) const
Fill the 2d histogram to be painted with information from TEfficiency 2D Internal method called by TE...
 
Int_t FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const
Returns the global bin number containing the given values.
 
TDirectory * fDirectory
! Pointer to directory holding this TEfficiency object
 
void SetUseWeightedEvents(Bool_t on=kTRUE)
 
static Double_t Wilson(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries for the frequentist Wilson interval.
 
TEfficiency & operator=(const TEfficiency &rhs)
Assignment operator.
 
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a graph.
 
Double_t fConfLevel
Confidence level (default = 0.683, 1 sigma)
 
Double_t fBeta_beta
Global parameter for prior beta distribution (default = 1)
 
Double_t GetEfficiency(Int_t bin) const
Returns the efficiency in the given global bin.
 
Bool_t SetTotalHistogram(const TH1 &rTotal, Option_t *opt)
Sets the histogram containing all events.
 
void Fill(Bool_t bPassed, Double_t x, Double_t y=0, Double_t z=0)
This function is used for filling the two histograms.
 
void SetDirectory(TDirectory *dir)
Sets the directory holding this TEfficiency object.
 
TGraphAsymmErrors * fPaintGraph
! Temporary graph for painting
 
TGraphAsymmErrors * CreateGraph(Option_t *opt="") const
Create the graph used be painted (for dim=1 TEfficiency) The return object is managed by the caller.
 
TList * fFunctions
->Pointer to list of functions
 
Bool_t SetTotalEvents(Int_t bin, Double_t events)
Sets the number of total events in the given global bin.
 
void SetBetaBinParameters(Int_t bin, Double_t alpha, Double_t beta)
Sets different shape parameter α and β for the prior distribution for each bin.
 
static Bool_t CheckConsistency(const TH1 &pass, const TH1 &total, Option_t *opt="")
Checks the consistence of the given histograms.
 
TH1 * GetCopyTotalHisto() const
Returns a cloned version of fTotalHistogram.
 
static Double_t ClopperPearson(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries for the frequentist Clopper-Pearson interval.
 
void SetConfidenceLevel(Double_t level)
Sets the confidence level (0 < level < 1) The default value is 1-sigma :~ 0.683.
 
Double_t GetEfficiencyErrorLow(Int_t bin) const
Returns the lower error on the efficiency in the given global bin.
 
EStatOption
Enumeration type for different statistic options for calculating confidence intervals kF* ....
 
@ kBJeffrey
Jeffrey interval (Prior ~ Beta(0.5,0.5)
 
@ kFWilson
Wilson interval.
 
@ kFAC
Agresti-Coull interval.
 
@ kMidP
Mid-P Lancaster interval.
 
@ kBUniform
Prior ~ Uniform = Beta(1,1)
 
@ kFFC
Feldman-Cousins interval.
 
@ kBBayesian
User specified Prior ~ Beta(fBeta_alpha,fBeta_beta)
 
@ kFNormal
Normal approximation.
 
@ kFCP
Clopper-Pearson interval (recommended by PDG)
 
void SetTitle(const char *title) override
Sets the title.
 
TFitResultPtr Fit(TF1 *f1, Option_t *opt="")
Fits the efficiency using the TBinomialEfficiencyFitter class.
 
void RecursiveRemove(TObject *obj) override
Recursively remove object from the list of functions.
 
TH2 * fPaintHisto
! Temporary histogram for painting
 
void Copy(TObject &f1) const override
Copy this F1 to a new F1.
 
TClass * IsA() const override
 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
 
Graph 2D class with errors.
 
Double_t * GetEYlow() const override
 
virtual void SetPointError(Int_t i, Double_t exl, Double_t exh, Double_t eyl, Double_t eyh, Double_t ezl, Double_t ezh)
Set ex, ey and ez values for point number i.
 
Double_t * GetEYhigh() const override
 
Double_t * GetEZhigh() const override
 
Double_t * GetEXhigh() const override
 
Double_t * GetEZlow() const override
 
void Set(Int_t n) override
Set number of points in the 2D graph.
 
void SetPoint(Int_t i, Double_t x, Double_t y, Double_t z) override
Set x, y and z values for point number i.
 
Double_t * GetEXlow() const override
 
TH2D * GetHistogram(Option_t *option="")
By default returns a pointer to the Delaunay histogram.
 
TAxis * GetZaxis() const
Get z axis of the graph.
 
void SetName(const char *name) override
Changes the name of this 2D graph.
 
void SetTitle(const char *title="") override
Sets the 2D graph title.
 
TAxis * GetYaxis() const
Get y axis of the graph.
 
void Paint(Option_t *option="") override
Paints this 2D graph with its current attributes.
 
TAxis * GetXaxis() const
Get x axis of the graph.
 
TGraph with asymmetric error bars.
 
Double_t * GetEXlow() const override
 
virtual void SetPointError(Double_t exl, Double_t exh, Double_t eyl, Double_t eyh)
Set ex and ey values for point pointed by the mouse.
 
Double_t * GetEYhigh() const override
 
Double_t * GetEXhigh() const override
 
Double_t * GetEYlow() const override
 
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
 
void Paint(Option_t *chopt="") override
Draw this graph with its current attributes.
 
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
 
void SetName(const char *name="") override
Set graph name.
 
TAxis * GetXaxis() const
Get x axis of the graph.
 
virtual void PaintStats(TF1 *fit)
Draw the stats.
 
TAxis * GetYaxis() const
Get y axis of the graph.
 
virtual TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases.
 
void SetTitle(const char *title="") override
Change (i.e.
 
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a graph.
 
virtual void Set(Int_t n)
Set number of points in the graph Existing coordinates are preserved New coordinates above fNpoints a...
 
1-D histogram with a double per channel (see TH1 documentation)
 
1-D histogram with a float per channel (see TH1 documentation)
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
 
virtual void SetNormFactor(Double_t factor=1)
 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
 
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Compute distance from point px,py to a line.
 
void SetTitle(const char *title) override
Change/set the title.
 
virtual Int_t GetNbinsY() const
 
virtual Int_t GetNbinsZ() const
 
virtual Int_t GetDimension() const
 
@ kIsAverage
Bin contents are average (used by Add)
 
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
 
virtual Int_t GetNcells() const
 
virtual Int_t GetBin(Int_t binx, Int_t biny=0, Int_t binz=0) const
Return Global bin number corresponding to binx,y,z.
 
virtual Int_t GetNbinsX() const
 
virtual Bool_t Add(TF1 *h1, Double_t c1=1, Option_t *option="")
Performs the operation: this = this + c1*f1 if errors are defined (see TH1::Sumw2),...
 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
 
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
 
virtual Double_t GetBinLowEdge(Int_t bin) const
Return bin lower edge for 1D histogram.
 
virtual Double_t GetEntries() const
Return the current number of entries.
 
void SetName(const char *name) override
Change the name of this histogram.
 
void Paint(Option_t *option="") override
Control routine to paint any kind of histograms.
 
@ kNstat
Size of statistics data (up to TProfile3D)
 
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute action corresponding to one event.
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
virtual TArrayD * GetSumw2()
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width for 1D histogram.
 
virtual Int_t GetSumw2N() const
 
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
 
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
 
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
 
static void SavePrimitiveFunctions(std::ostream &out, const char *varname, TList *lst)
Save list of functions Also can be used by TGraph classes.
 
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
 
2-D histogram with a double per channel (see TH1 documentation)
 
2-D histogram with a float per channel (see TH1 documentation)
 
Service class for 2-D histogram classes.
 
void SetBinContent(Int_t bin, Double_t content) override
Set bin content.
 
3-D histogram with a double per channel (see TH1 documentation)
 
The 3-D histogram classes derived from the 1-D histogram classes.
 
void RecursiveRemove(TObject *obj) override
Remove object from this collection and recursively remove the object from all other objects (and coll...
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
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.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
static TString SavePrimitiveVector(std::ostream &out, const char *prefix, Int_t len, Double_t *arr, Bool_t empty_line=kFALSE)
Save array in the output stream "out" as vector.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
static void SavePrimitiveDraw(std::ostream &out, const char *variable_name, Option_t *option=nullptr)
Save invocation of primitive Draw() method Skipped if option contains "nodraw" string.
 
@ kInvalidObject
if object ctor succeeded but object should not be used
 
void ToLower()
Change string to lower-case.
 
TString & ReplaceSpecialCppChars()
Find special characters which are typically used in printf() calls and replace them by appropriate es...
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
double beta_pdf(double x, double a, double b)
Probability density function of the beta distribution.
 
double beta_cdf(double x, double a, double b)
Cumulative distribution function of the beta distribution Upper tail of the integral of the beta_pdf.
 
double beta_cdf_c(double x, double a, double b)
Complement of the cumulative distribution function of the beta distribution.
 
double normal_quantile(double z, double sigma)
Inverse ( ) of the cumulative distribution function of the lower tail of the normal (Gaussian) distri...
 
double normal_quantile_c(double z, double sigma)
Inverse ( ) of the cumulative distribution function of the upper tail of the normal (Gaussian) distri...
 
double beta_quantile_c(double x, double a, double b)
Inverse ( ) of the cumulative distribution function of the lower tail of the beta distribution (beta_...
 
double beta_quantile(double x, double a, double b)
Inverse ( ) of the cumulative distribution function of the upper tail of the beta distribution (beta_...
 
R__ALWAYS_INLINE bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.
 
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Comparing floating points.
 
Beta_interval_length(Double_t level, Double_t alpha, Double_t beta)
 
Double_t operator()(double lower) const