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);
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);
TGraphAsymmErrors * CreateGraph(Option_t *opt="") const
Create the graph used be painted (for dim=1 TEfficiency) The return object is managed by the caller...
Double_t * GetEXlow() const
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 ...
virtual const char * GetName() const
Returns name of object.
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.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
virtual Double_t GetBinCenter(Int_t bin) const
return bin center for 1D historam Better to use h1.GetXaxis().GetBinCenter(bin)
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
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 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 Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
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)
const Double_t * GetArray() const
Bool_t TestBit(UInt_t f) const
virtual void SetBins(Int_t nx, Double_t xmin, Double_t xmax)
Redefine x axis parameters.
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 Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
double beta_pdf(double x, double a, double b)
Probability density function of the beta distribution.
TAxis * GetYaxis() const
Get y axis of the graph.
Double_t GetBetaBeta(Int_t bin=-1) const
virtual Int_t GetNbinsZ() const
const TEfficiency operator+(const TEfficiency &lhs, const TEfficiency &rhs)
Addition operator.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
const Double_t kDefBetaBeta
static Bool_t AddDirectoryStatus()
static function: cannot be inlined on Windows/NT
void FillGraph(TGraphAsymmErrors *graph, Option_t *opt) const
Fill the graph to be painted with information from TEfficiency Internal metyhod called by TEfficiency...
void ToLower()
Change string to lower-case.
void Copy(TAttMarker &attmarker) const
Copy this marker attributes to a new TAttMarker.
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. ...
~TEfficiency()
default destructor
virtual Double_t GetBinLowEdge(Int_t bin) const
return bin lower edge for 1D historam Better to use h1.GetXaxis().GetBinLowEdge(bin) ...
EStatOption fStatisticOption
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)
TRObject operator()(const T1 &t1) const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void GetStats(Double_t *stats) const
fill the array stats from the contents of this histogram The array stats must be correctly dimensione...
virtual void Reset(Option_t *option="")
Reset this histogram: contents, errors, etc.
double beta(double x, double y)
Calculates the beta function.
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
Double_t GetWeight() const
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.
TH1 * GetCopyPassedHisto() const
Returns a cloned version of fPassedHistogram.
virtual Int_t GetDimension() const
static struct mg_connection * fc(struct mg_context *ctx)
TGraph with assymetric error bars.
EStatOption GetStatisticOption() const
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Double_t GetEfficiency(Int_t bin) const
Returns the efficiency in the given global bin.
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.
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.
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.
The TNamed class is the base class for all named ROOT classes.
TH1 * fPassedHistogram
temporary histogram for painting
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
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
Ssiz_t First(char c) const
Find first occurrence of a character c.
Bool_t UsesBayesianStat() const
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()
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.
TH1 * GetCopyTotalHisto() const
Returns a cloned version of fTotalHistogram.
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)
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 TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
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.
const char * GetTitle() const
Returns title of object.
Service class for 2-Dim histogram classes.
Class to manage histogram axis.
void SetBetaAlpha(Double_t alpha)
Sets the shape parameter α.
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 Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
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 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.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
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
void FillHistogram(TH2 *h2) const
Fill the 2d histogram to be painted with information from TEfficiency 2D Internal metyhod called by T...
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
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.
Int_t FindFixBin(Double_t x, Double_t y=0, Double_t z=0) const
Returns the global bin number containing the given values.
TAxis * GetXaxis() const
Get x axis of the graph.
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.
Double_t At(Int_t i) const
static unsigned int total
void SetUseWeightedEvents()
virtual Bool_t IsEmpty() const
virtual Double_t GetBinWidth(Int_t bin) const
return bin width for 1D historam Better to use h1.GetXaxis().GetBinWidth(bin)
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.
TH1F * GetHistogram() const
Returns a pointer to the histogram used to draw the axis Takes into account the two following cases...
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 GetEfficiencyErrorUp(Int_t bin) const
Returns the upper error on the efficiency in the given global bin.
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Compute distance from point px,py to a graph.
Double_t GetConfidenceLevel() const
double func(double *x, double *p)
Double_t GetBetaAlpha(Int_t bin=-1) const
virtual double FValMinimum() const
Return function value at current estimate of the minimum.
TEfficiency & operator=(const TEfficiency &rhs)
Assignment operator.
Int_t Fit(TF1 *f1, Option_t *opt="")
Fits the efficiency using the TBinomialEfficiencyFitter class.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void SetBetaBeta(Double_t beta)
Sets the shape parameter β.
virtual Double_t GetEntries() const
return the current number of entries
Long64_t Merge(TCollection *list)
Merges the TEfficiency objects in the given list to the given TEfficiency object using the operator+=...
Bool_t IsVariableBinSize() 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), errors are also recalculated.
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 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.
virtual double XMinimum() const
Return current estimate of the position of the minimum.
Mother of all ROOT objects.
virtual Int_t FindFixBin(Double_t x) const
Find bin number corresponding to abscissa x.
Double_t GetEfficiencyErrorLow(Int_t bin) const
Returns the lower error on the efficiency in the given global bin.
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: ...
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.
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 void Add(TObject *obj)
Double_t * GetEYlow() const
Double_t * GetEYhigh() const
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.
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.
TObject * Clone(const char *newname=0) const
Make a complete copy of the underlying object.
const Double_t kDefConfLevel
std::vector< std::pair< Double_t, Double_t > > fBeta_bin_params
Int_t GetDimension() const
returns the dimension of the current TEfficiency object
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.
virtual Int_t GetNbinsX() const
Double_t * GetEXhigh() const
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual const char * GetName() const
Returns name of object.
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)
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
TEfficiency()
default constructor
const TArrayD * GetXbins() const
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.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
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.
virtual Int_t GetNbinsY() const
virtual const char * GetTitle() const
Returns title of object.
void Copy(TAttFill &attfill) const
Copy this fill attributes to a new TAttFill.
double beta_quantile(double x, double a, double b)
Inverse ( ) of the cumulative distribution function of the upper tail of the beta distribution (beta_...
const char * Data() const
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.