1 #ifndef ROOT_TEfficiency_cxx
2 #define ROOT_TEfficiency_cxx
13 #include "TDirectory.h"
623 fPassedHistogram =
new TH1F(
"h_passed",
"passed",10,0,10);
624 fTotalHistogram =
new TH1F(
"h_total",
"total",10,0,10);
671 Info(
"TEfficiency",
"given histograms are filled with weights");
676 Error(
"TEfficiency(const TH1&,const TH1&)",
"histograms are not consistent -> results are useless");
677 Warning(
"TEfficiency(const TH1&,const TH1&)",
"using two empty TH1D('h1','h1',10,0,10)");
887 fTotalHistogram =
new TH3D(
"total",
"total",nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup);
888 fPassedHistogram =
new TH3D(
"passed",
"passed",nbinsx,xlow,xup,nbinsy,ylow,yup,nbinsz,zlow,zup);
959 fBeta_alpha(rEff.fBeta_alpha),
960 fBeta_beta(rEff.fBeta_beta),
961 fBeta_bin_params(rEff.fBeta_bin_params),
962 fConfLevel(rEff.fConfLevel),
967 fWeight(rEff.fWeight)
990 rEff.TAttLine::Copy(*
this);
991 rEff.TAttFill::Copy(*
this);
992 rEff.TAttMarker::Copy(*
this);
1053 Double_t mode = (passed + 0.5 * kappa * kappa) / (total + kappa * kappa);
1054 Double_t delta = kappa *
std::sqrt(mode * (1 - mode) / (total + kappa * kappa));
1057 return ((mode + delta) > 1) ? 1.0 : (mode + delta);
1059 return ((mode - delta) < 0) ? 0.0 : (mode - delta);
1076 ::Error(
"FeldmanCousins",
"Error running FC method - return 0 or 1");
1078 return (bUpper) ? upper :
lower;
1107 double alpha = 1.-level;
1130 const double alpha = 1. - level;
1131 const bool equal_tailed =
true;
1132 const double alpha_min = equal_tailed ? alpha/2 : alpha;
1133 const double tol = 1e-9;
1143 if ( passed > 0 && passed < 1) {
1146 p = (p1 - p0) * passed + p0;
1151 p = (pmin + pmax)/2;
1159 double vmin = (bUpper) ? alpha_min : 1.- alpha_min;
1231 return (bUpper) ? upper :
lower;
1249 if((a > 0) && (b > 0))
1252 gROOT->Error(
"TEfficiency::BayesianCentral",
"Invalid input parameters - return 1");
1257 if((a > 0) && (b > 0))
1260 gROOT->Error(
"TEfficiency::BayesianCentral",
"Invalid input parameters - return 0");
1266 struct Beta_interval_length {
1268 fCL(level), fAlpha(alpha), fBeta(beta)
1304 if (a <= 0 || b <= 0) {
1305 lower = 0; upper = 1;
1306 gROOT->Error(
"TEfficiency::BayesianShortest",
"Invalid input parameters - return [0,1]");
1325 if ( a==b && a<=1.0) {
1333 Beta_interval_length intervalLength(level,a,b);
1337 minim.
SetFunction(func, 0, intervalLength.LowerMax() );
1339 bool ret = minim.
Minimize(100, 1.
E-10,1.
E-10);
1341 gROOT->Error(
"TEfficiency::BayesianShortes",
"Error finding the shortest interval");
1358 if (a <= 0 || b <= 0 ) {
1359 gROOT->Error(
"TEfficiency::BayesianMean",
"Invalid input parameters - return 0");
1381 if (a <= 0 || b <= 0 ) {
1382 gROOT->Error(
"TEfficiency::BayesianMode",
"Invalid input parameters - return 0");
1385 if ( a <= 1 || b <= 1) {
1386 if ( a < b)
return 0;
1387 if ( a > b)
return 1;
1388 if (a == b)
return 0.5;
1392 Double_t mode = (a - 1.0) / (a + b -2.0);
1428 const TAxis* ax1 = 0;
1429 const TAxis* ax2 = 0;
1449 gROOT->Info(
"TEfficiency::CheckBinning",
"Histograms are not consistent: they have different number of bins");
1455 gROOT->Info(
"TEfficiency::CheckBinning",
"Histograms are not consistent: they have different bin edges");
1460 gROOT->Info(
"TEfficiency::CheckBinning",
"Histograms are not consistent: they have different axis max value");
1484 gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects have different dimensions");
1489 gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects have different binning");
1494 gROOT->Error(
"TEfficiency::CheckConsistency",
"passed TEfficiency objects do not have consistent bin contents");
1529 if((
TMath::Abs(statpass[0]-statpass[1]) > 1e-5) ||
1530 (
TMath::Abs(stattotal[0]-stattotal[1]) > 1e-5)) {
1531 gROOT->Info(
"TEfficiency::CheckEntries",
"Histograms are filled with weights");
1544 case 1: nbins = nbinsx + 2;
break;
1545 case 2: nbins = (nbinsx + 2) * (nbinsy + 2);
break;
1546 case 3: nbins = (nbinsx + 2) * (nbinsy + 2) * (nbinsz + 2);
break;
1552 gROOT->Info(
"TEfficiency::CheckEntries",
"Histograms are not consistent: passed bin content > total bin content");
1567 Error(
"CreatePaintingGraph",
"Call this function only for dimension == 1");
1590 Bool_t plot0Bins =
false;
1591 if (option.
Contains(
"e0") ) plot0Bins =
true;
1600 double * px = graph->
GetX();
1601 double * py = graph->
GetY();
1607 for (
Int_t i = 0; i < npoints; ++i) {
1616 if (j >= graph->
GetN() ) {
1636 if (oldTitle != newTitle ) {
1664 Error(
"CreatePaintingistogram",
"Call this function only for dimension == 2");
1713 for(
Int_t i = 0; i < nbinsx + 2; ++i) {
1714 for(
Int_t j = 0; j < nbinsy + 2; ++j) {
1775 Double_t alpha = (1.0 - level) / 2;
1882 for (
int i = 0; i <
n ; ++i) {
1883 if(pass[i] > total[i]) {
1884 ::Error(
"TEfficiency::Combine",
"total events = %i < passed events %i",total[i],pass[i]);
1885 ::Info(
"TEfficiency::Combine",
"stop combining");
1889 ntot += w[i] * total[i];
1890 ktot += w[i] * pass[i];
1895 double norm = sumw/sumw2;
1899 ::Error(
"TEfficiency::Combine",
"total = %f < passed %f",ntot,ktot);
1900 ::Info(
"TEfficiency::Combine",
"stop combining");
1904 double a = ktot + alpha;
1905 double b = ntot - ktot +
beta;
1907 double mean = a/(a+b);
1913 if (shortestInterval)
1920 if (option.
Contains(
"mode"))
return mode;
1971 std::vector<TH1*> vTotal; vTotal.reserve(n);
1972 std::vector<TH1*> vPassed; vPassed.reserve(n);
1973 std::vector<Double_t> vWeights; vWeights.reserve(n);
1989 level = atof( opt(pos,opt.
Length() ).
Data() );
1990 if((level <= 0) || (level >= 1))
1998 for(
Int_t k = 0; k <
n; ++k) {
2000 vWeights.push_back(w[k]);
2002 gROOT->Error(
"TEfficiency::Combine",
"invalid custom weight found w = %.2lf",w[k]);
2003 gROOT->Info(
"TEfficiency::Combine",
"stop combining");
2012 while((obj =
next())) {
2038 vWeights.push_back(pEff->
fWeight);
2053 if(vTotal.empty()) {
2054 gROOT->Error(
"TEfficiency::Combine",
"no TEfficiency objects in given list");
2055 gROOT->Info(
"TEfficiency::Combine",
"stop combining");
2060 if(bWeights && (n != (
Int_t)vTotal.size())) {
2061 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());
2062 gROOT->Info(
"TEfficiency::Combine",
"stop combining");
2066 Int_t nbins_max = vTotal.at(0)->GetNbinsX();
2068 for(
UInt_t i=0; i<vTotal.size(); ++i) {
2070 gROOT->Warning(
"TEfficiency::Combine",
"histograms have not the same binning -> results may be useless");
2071 if(vTotal.at(i)->GetNbinsX() < nbins_max) nbins_max = vTotal.at(i)->GetNbinsX();
2076 gROOT->Info(
"TEfficiency::Combine",
"combining %i TEfficiency objects",(
Int_t)vTotal.size());
2078 gROOT->Info(
"TEfficiency::Combine",
"using custom weights");
2080 gROOT->Info(
"TEfficiency::Combine",
"using the following prior probability for the efficiency: P(e) ~ Beta(e,%.3lf,%.3lf)",alpha,beta);
2083 gROOT->Info(
"TEfficiency::Combine",
"using individual priors of each TEfficiency object");
2084 gROOT->Info(
"TEfficiency::Combine",
"confidence level = %.2lf",level);
2088 std::vector<Double_t>
x(nbins_max);
2089 std::vector<Double_t> xlow(nbins_max);
2090 std::vector<Double_t> xhigh(nbins_max);
2091 std::vector<Double_t> eff(nbins_max);
2092 std::vector<Double_t> efflow(nbins_max);
2093 std::vector<Double_t> effhigh(nbins_max);
2097 Int_t num = vTotal.size();
2098 std::vector<Int_t> pass(num);
2099 std::vector<Int_t>
total(num);
2104 for(
Int_t i=1; i <= nbins_max; ++i) {
2106 x[i-1] = vTotal.at(0)->GetBinCenter(i);
2107 xlow[i-1] = x[i-1] - vTotal.at(0)->GetBinLowEdge(i);
2108 xhigh[i-1] = vTotal.at(0)->GetBinWidth(i) - xlow[i-1];
2110 for(
Int_t j = 0; j < num; ++j) {
2111 pass[j] = (
Int_t)(vPassed.at(j)->GetBinContent(i) + 0.5);
2112 total[j] = (
Int_t)(vTotal.at(j)->GetBinContent(i) + 0.5);
2116 eff[i-1] =
Combine(up,low,num,&pass[0],&total[0],alpha,beta,level,&vWeights[0],opt.
Data());
2118 if(eff[i-1] == -1) {
2119 gROOT->Error(
"TEfficiency::Combine",
"error occured during combining");
2120 gROOT->Info(
"TEfficiency::Combine",
"stop combining");
2123 efflow[i-1]= eff[i-1] - low;
2124 effhigh[i-1]= up - eff[i-1];
2167 if (option.
IsNull() ) option =
"ap";
2173 if (!option.
Contains(
"a") ) option +=
"a";
2177 if (!option.
Contains(
"p") ) option +=
"p";
2248 Info(
"FillWeighted",
"call SetUseWeightedEvents() manually to ensure correct storage of sum of weights squared");
2308 Bool_t bDeleteOld =
true;
2319 TF1* pFunc =
new TF1(*f1);
2324 while((obj =
next())) {
2446 if (tw2 <= 0 )
return pw/tw;
2449 double norm = tw/tw2;
2450 aa = pw * norm + alpha;
2451 bb = (tw - pw) * norm + beta;
2455 aa = passed + alpha;
2456 bb = total - passed +
beta;
2466 return (total)? ((
Double_t)passed)/total : 0;
2499 if (tw2 <= 0)
return 0;
2504 Double_t bb = (tw - pw) * norm + beta;
2520 Warning(
"GetEfficiencyErrorLow",
"frequentist confidence intervals for weights are only supported by the normal approximation");
2521 Info(
"GetEfficiencyErrorLow",
"setting statistic option to kFNormal");
2525 Double_t variance = ( pw2 * (1. - 2 * eff) + tw2 * eff *eff ) / ( tw * tw) ;
2532 return (eff - delta < 0) ? eff : delta;
2579 if (tw2 <= 0)
return 0;
2584 Double_t bb = (tw - pw) * norm + beta;
2600 Warning(
"GetEfficiencyErrorUp",
"frequentist confidence intervals for weights are only supported by the normal approximation");
2601 Info(
"GetEfficiencyErrorUp",
"setting statistic option to kFNormal");
2605 Double_t variance = ( pw2 * (1. - 2 * eff) + tw2 * eff *eff ) / ( tw * tw) ;
2611 return (eff + delta > 1) ? 1.-eff : delta;
2668 while((obj =
next())) {
2702 if (total == 0)
return (bUpper) ? 1 : 0;
2708 return ((average + delta) > 1) ? 1.0 : (average + delta);
2710 return ((average - delta) < 0) ? 0.0 : (average - delta);
2735 Fatal(
"operator+=",
"Adding to a non consistent TEfficiency object which has not a total or a passed histogram ");
2740 Warning(
"operator+=",
"no operation: adding an empty object");
2744 Fatal(
"operator+=",
"Adding a non consistent TEfficiency object which has not a total or a passed histogram ");
2800 rhs.TAttLine::Copy(*
this);
2801 rhs.TAttFill::Copy(*
this);
2802 rhs.TAttMarker::Copy(*
this);
2854 while((obj =
next())) {
2857 ((
TF1*)obj)->Paint(
"sameC");
2877 Warning(
"Paint",
"Painting 3D efficiency is not implemented");
2891 static Int_t naxis = 0;
2892 TString sxaxis=
"xAxis",syaxis=
"yAxis",szaxis=
"zAxis";
2915 out << indent <<
"Double_t " << sxaxis <<
"["
2918 if (i != 0) out <<
", ";
2921 out <<
"}; " << std::endl;
2924 out << indent <<
"Double_t " << syaxis <<
"["
2927 if (i != 0) out <<
", ";
2930 out <<
"}; " << std::endl;
2934 out << indent <<
"Double_t " << szaxis <<
"["
2937 if (i != 0) out <<
", ";
2940 out <<
"}; " << std::endl;
2945 static Int_t eff_count = 0;
2948 eff_name += eff_count;
2950 const char*
name = eff_name.
Data();
2953 const char quote =
'"';
2954 out << indent << std::endl;
2956 <<
"(" << quote <<
GetName() << quote <<
"," << quote
2984 out <<
");" << std::endl;
2985 out << indent << std::endl;
2988 out << indent << name <<
"->SetConfidenceLevel(" <<
fConfLevel <<
");"
2990 out << indent << name <<
"->SetBetaAlpha(" <<
fBeta_alpha <<
");"
2992 out << indent << name <<
"->SetBetaBeta(" <<
fBeta_beta <<
");" << std::endl;
2993 out << indent << name <<
"->SetWeight(" <<
fWeight <<
");" << std::endl;
2994 out << indent << name <<
"->SetStatisticOption(" <<
fStatisticOption <<
");"
2999 out << indent << name <<
"->SetUseWeightedEvents();" << std::endl;
3004 out << indent << name <<
"->SetBetaBinParameters(" << i <<
"," <<
fBeta_bin_params.at(i).first
3017 out << indent << name <<
"->SetTotalEvents(" << i <<
"," <<
3019 out << indent << name <<
"->SetPassedEvents(" << i <<
"," <<
3026 while((obj =
next())) {
3029 out << indent << name <<
"->GetListOfFunctions()->Add("
3030 << obj->
GetName() <<
");" << std::endl;
3043 out<< indent << name<<
"->Draw(" << quote << opt << quote <<
");"
3062 Warning(
"SetBetaAlpha(Double_t)",
"invalid shape parameter %.2lf",alpha);
3080 Warning(
"SetBetaBeta(Double_t)",
"invalid shape parameter %.2lf",beta);
3120 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3124 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3140 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3144 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3160 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3164 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3180 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3184 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3201 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3205 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3222 Error(
"SetBins",
"Using wrong SetBins function for a %d-d histogram",
GetDimension());
3226 Warning(
"SetBins",
"Histogram entries will be lost after SetBins");
3241 if((level > 0) && (level < 1))
3244 Warning(
"SetConfidenceLevel(Double_t)",
"invalid confidence level %.2lf",level);
3281 TString name_passed = name + TString(
"_passed");
3296 if(events <= fTotalHistogram->GetBinContent(bin)) {
3301 Error(
"SetPassedEvents(Int_t,Int_t)",
"total number of events (%.1lf) in bin %i is less than given number of passed events %i",
fTotalHistogram->
GetBinContent(bin),bin,events);
3350 if(
TMath::Abs(statpass[0]-statpass[1]) > 1e-5)
3463 title_passed.
Insert(pos,
" (passed)");
3464 title_total.
Insert(pos,
" (total)");
3467 title_passed.
Append(
" (passed)");
3468 title_total.
Append(
" (total)");
3496 Error(
"SetTotalEvents(Int_t,Int_t)",
"passed number of events (%.1lf) in bin %i is bigger than given number of total events %i",
fPassedHistogram->
GetBinContent(bin),bin,events);
3545 if(
TMath::Abs(stattotal[0]-stattotal[1]) > 1e-5)
3573 Warning(
"SetWeight",
"invalid weight %.2lf",weight);
3601 if (total == 0)
return (bUpper) ? 1 : 0;
3605 Double_t mode = (passed + 0.5 * kappa * kappa) / (total + kappa * kappa);
3607 * (1 - average) + kappa * kappa / 4);
3609 return ((mode + delta) > 1) ? 1.0 : (mode + delta);
3611 return ((mode - delta) < 0) ? 0.0 : (mode - delta);
double normal_quantile(double z, double sigma)
Inverse ( ) of the cumulative distribution function of the lower tail of the normal (Gaussian) distri...
void SetConfidenceLevel(Double_t level)
Sets the confidence level (0 < level < 1) The default value is 1-sigma :~ 0.683.
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 ...
Double_t At(Int_t i) const
virtual const char * GetTitle() const
Returns title of object.
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
virtual void Paint(Option_t *option="")
Control routine to paint any kind of histograms.
static Bool_t CheckEntries(const TH1 &pass, const TH1 &total, Option_t *opt="")
Checks whether bin contents are compatible with binomial statistics.
void FillGraph(TGraphAsymmErrors *graph, Option_t *opt) const
Fill the graph to be painted with information from TEfficiency Internal metyhod called by TEfficiency...
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Double_t GetEfficiency(Int_t bin) const
Returns the efficiency in the given global bin.
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
void Build(const char *name, const char *title)
Building standard data structure of a TEfficiency object.
Class to handle efficiency histograms.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
Double_t * GetEYlow() const
virtual void SetDirectory(TDirectory *dir)
By default when an histogram is created, it is added to the list of histogram objects in the current ...
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.
virtual void GetStats(Double_t *stats) const
fill the array stats from the contents of this histogram The array stats must be correctly dimensione...
Int_t GetDimension() const
returns the dimension of the current TEfficiency object
double normal_quantile_c(double z, double sigma)
Inverse ( ) of the cumulative distribution function of the upper tail of the normal (Gaussian) distri...
Binomial fitter for the division of two histograms.
TString & ReplaceAll(const TString &s1, const TString &s2)
virtual Int_t GetDimension() const
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
EStatOption GetStatisticOption() const
static Bool_t CheckBinning(const TH1 &pass, const TH1 &total)
Checks binning for each axis.
virtual void SetName(const char *name)
Change (i.e.
TEfficiency & operator+=(const TEfficiency &rhs)
Adds the histograms of another TEfficiency object to current histograms.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
double beta_pdf(double x, double a, double b)
Probability density function of the beta distribution.
void Copy(TAttLine &attline) const
Copy this line attributes to a new TAttLine.
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
const TEfficiency operator+(const TEfficiency &lhs, const TEfficiency &rhs)
Addition operator.
Double_t * GetEXlow() const
const Double_t kDefBetaBeta
static Bool_t AddDirectoryStatus()
static function: cannot be inlined on Windows/NT
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
void ToLower()
Change string to lower-case.
TH1 * GetCopyPassedHisto() const
Returns a cloned version of fPassedHistogram.
virtual void SetTitle(const char *title="")
Set graph title.
void SetBetaBinParameters(Int_t bin, Double_t alpha, Double_t beta)
Sets different shape parameter α and β for the prior distribution for each bin.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
virtual Int_t GetNbinsX() const
~TEfficiency()
default destructor
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: ...
EStatOption fStatisticOption
virtual Double_t GetEntries() const
return the current number of entries
Bool_t SetPassedEvents(Int_t bin, Int_t events)
Sets the number of passed events in the given global bin.
TString & Insert(Ssiz_t pos, const char *s)
Double_t(* fBoundary)(Double_t, Double_t, Double_t, Bool_t)
TGraphAsymmErrors * CreateGraph(Option_t *opt="") const
Create the graph used be painted (for dim=1 TEfficiency) The return object is managed by the caller...
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
double beta(double x, double y)
Calculates the beta function.
Bool_t IsVariableBinSize() const
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
Template class to wrap any C++ callable object which takes one argument i.e.
virtual Double_t GetBinWidth(Int_t bin) const
return bin width for 1D historam Better to use h1.GetXaxis().GetBinWidth(bin)
const char * Data() const
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
static struct mg_connection * fc(struct mg_context *ctx)
TGraph with assymetric error bars.
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=0, Option_t *opt="")
Calculates the combined efficiency and its uncertainties.
Fill Area Attributes class.
virtual void Paint(Option_t *chopt="")
Draw this graph with its current attributes.
virtual Double_t GetBinLowEdge(Int_t bin) const
return bin lower edge for 1D historam Better to use h1.GetXaxis().GetBinLowEdge(bin) ...
TGraphAsymmErrors * fPaintGraph
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.
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.
The TNamed class is the base class for all named ROOT classes.
virtual Bool_t IsEmpty() const
TH1 * fPassedHistogram
temporary histogram for painting
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
Bool_t UsesBayesianStat() 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.
TH2 * fPaintHisto
temporary graph for painting
TList * GetListOfFunctions()
TString & Append(const char *cs)
std::vector< std::vector< double > > Data
TList * fFunctions
pointer to directory holding this TEfficiency object
Double_t GetEfficiencyErrorUp(Int_t bin) const
Returns the upper error on the efficiency in the given global bin.
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 TArrayD * GetSumw2()
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Bool_t SetPassedHistogram(const TH1 &rPassed, Option_t *opt)
Sets the histogram containing the passed events.
void SetTitle(const char *title)
Sets the title.
User class for performing function minimization.
static Double_t BetaMean(Double_t alpha, Double_t beta)
Compute the mean (average) 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...
The 3-D histogram classes derived from the 1-D histogram classes.
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...
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...
Double_t fConfLevel
pointer to a method calculating the boundaries of confidence intervals
void SetStatisticOption(EStatOption option)
Sets the statistic option which affects the calculation of the confidence interval.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
Bool_t SetTotalEvents(Int_t bin, Int_t events)
Sets the number of total events in the given global bin.
Bool_t AreEqualRel(Double_t af, Double_t bf, Double_t relPrec)
Int_t FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const
Returns the global bin number containing the given values.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a line.
void SetWeight(Double_t weight)
Sets the global weight for this TEfficiency object.
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute action corresponding to one event.
virtual Double_t GetBinCenter(Int_t bin) const
return bin center for 1D historam Better to use h1.GetXaxis().GetBinCenter(bin)
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.
TAxis * GetXaxis() const
Get x axis of the graph.
Service class for 2-Dim histogram classes.
Class to manage histogram axis.
void SetBetaAlpha(Double_t alpha)
Sets the shape parameter α.
Double_t GetWeight() const
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual TObject * Remove(TObject *obj)
Remove object from the list.
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...
void SetFunction(const ROOT::Math::IGenFunction &f, double xlow, double xup)
Sets function to be minimized.
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...
Collection abstract base class.
virtual double XMinimum() const
Return current estimate of the position of the minimum.
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.
Double_t GetBetaAlpha(Int_t bin=-1) const
Bool_t TestBit(UInt_t f) const
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a graph.
const Double_t kDefWeight
virtual Int_t GetNbinsZ() const
virtual const char * GetName() const
Returns name of object.
const char * GetTitle() const
Returns title of object.
static double p1(double t, double a, double b)
static void indent(ostringstream &buf, int indent_level)
void SavePrimitive(std::ostream &out, Option_t *opt="")
Have histograms fixed bins along each axis?
const Double_t kDefBetaAlpha
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...
const Double_t * GetArray() const
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_...
virtual void SetName(const char *name)
Change the name of this histogram.
static unsigned int total
void SetUseWeightedEvents()
TRObject operator()(const T1 &t1) const
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
const TEfficiency::EStatOption kDefStatOpt
void SetDirectory(TDirectory *dir)
Sets the directory holding this TEfficiency object.
virtual const char * GetName() const
Returns name of object.
Bool_t SetTotalHistogram(const TH1 &rTotal, Option_t *opt)
Sets the histogram containing all events.
virtual void PaintStats(TF1 *fit)
Draw the stats.
Describe directory structure in memory.
Double_t * GetEYhigh() const
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a graph.
double func(double *x, double *p)
TEfficiency & operator=(const TEfficiency &rhs)
Assignment operator.
Int_t Fit(TF1 *f1, Option_t *opt="")
Fits the efficiency using the TBinomialEfficiencyFitter class.
void SetBetaBeta(Double_t beta)
Sets the shape parameter β.
Long64_t Merge(TCollection *list)
Merges the TEfficiency objects in the given list to the given TEfficiency object using the operator+=...
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), errors are also recalculated.
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.
double beta_cdf_c(double x, double a, double b)
Complement of the cumulative distribution function of the beta distribution.
Mother of all ROOT objects.
TAxis * GetYaxis() const
Get y axis of the graph.
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
virtual Int_t GetNbinsY() const
void SetName(const char *name)
Sets the name.
TFitResultPtr Fit(TF1 *f1, Option_t *option="")
Carry out the fit of the given function to the given histograms.
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
Set x and y values for point number i.
virtual double FValMinimum() const
Return function value at current estimate of the minimum.
Double_t GetBetaBeta(Int_t bin=-1) const
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.
void Draw(Option_t *opt="")
Draws the current TEfficiency object.
void Paint(Option_t *opt)
Paints this TEfficiency object.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
virtual void Add(TObject *obj)
void SetNpx(int npx)
Set the number of point used to bracket root using a grid.
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.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) 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.
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
const Double_t kDefConfLevel
Double_t GetEfficiencyErrorLow(Int_t bin) const
Returns the lower error on the efficiency in the given global bin.
std::vector< std::pair< Double_t, Double_t > > fBeta_bin_params
const TArrayD * GetXbins() const
virtual void SetTitle(const char *title)
Change (i.e.
virtual bool Minimize(int maxIter, double absTol=1.E-8, double relTol=1.E-10)
Find minimum position iterating until convergence specified by the absolute and relative tolerance or...
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content.
Double_t GetConfidenceLevel() const
void FillHistogram(TH2 *h2) const
Fill the 2d histogram to be painted with information from TEfficiency 2D Internal metyhod called by T...
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void Set(Int_t n)
Set number of points in the graph Existing coordinates are preserved New coordinates above fNpoints a...
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
double norm(double *x, double *p)
virtual void SetNormFactor(Double_t factor=1)
Double_t * GetEXhigh() const
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
TH1 * GetCopyTotalHisto() const
Returns a cloned version of fTotalHistogram.
Ssiz_t First(char c) const
Find first occurrence of a character c.
static Double_t BetaMode(Double_t alpha, Double_t beta)
Compute the mode of the beta distribution.
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.
static Double_t Wilson(Double_t total, Double_t passed, Double_t level, Bool_t bUpper)
Calculates the boundaries for the frequentist Wilson interval.
static Bool_t CheckConsistency(const TH1 &pass, const TH1 &total, Option_t *opt="")
Checks the consistence of the given histograms.
double beta_quantile(double x, double a, double b)
Inverse ( ) of the cumulative distribution function of the upper tail of the beta distribution (beta_...
void Calculate(const double X, const double n)
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
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.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.