54TNamed(
name, title), fNdimensions(dim), fAxes(dim), fBrowsables(dim),
 
   55fEntries(0), fTsumw(0), fTsumw2(-1.), fTsumwx(dim), fTsumwx2(dim),
 
   56fIntegral(0), fIntegralStatus(kNoInt)
 
 
   68                 const std::vector<std::vector<double>> &xbins)
 
   69   : 
TNamed(
name, title), fNdimensions(dim), fAxes(dim), fBrowsables(dim), fEntries(0), fTsumw(0), fTsumw2(-1.),
 
   70     fTsumwx(dim), fTsumwx2(dim), fIntegral(0), fIntegralStatus(kNoInt)
 
   73      Error(
"THnBase", 
"Mismatched number of dimensions %d with number of bin edge vectors %zu", 
fNdimensions,
 
   77      if (
Int_t(xbins[i].
size()) != (nbins[i] + 1)) {
 
   78         Error(
"THnBase", 
"Mismatched number of bins %d with number of bin edges %zu", nbins[i], xbins[i].
size());
 
 
   89   : 
TNamed(
other), fNdimensions(
other.fNdimensions), fAxes(fNdimensions), fBrowsables(fNdimensions),
 
   91     fTsumwx2(
other.fTsumwx2), fIntegral(
other.fIntegral), fIntegralStatus(
other.fIntegralStatus)
 
 
  131     fTsumwx2(
other.fTsumwx2), fIntegral(std::
move(
other.fIntegral)), fIntegralStatus(
other.fIntegralStatus)
 
  134   other.fAxes.SetOwner(
false);
 
 
  157   other.fAxes.SetOwner(
false);
 
 
  201      ::Error(
"THnBase::Init", 
"Input parameter `axes` is null, no axes were provided at initialization");
 
  205   const TAxis* axis = 
nullptr;
 
  210         ::Error(
"THnBase::Init", 
"Input parameter `axes` has a null element in the array, cannot create new axis");
 
  234      nbins[pos] = 
reqaxis->GetNbins();
 
 
  256      ::Error(
"THnBase::CreateHist", 
"Input parameter `axes` is null, no axes were provided at creation");
 
  259   const int ndim = axes->
GetSize();
 
  264      hist = 
new TH1D(
name, title, 1, 0., 1.);
 
  266      hist = 
new TH2D(
name, title, 1, 0., 1., 1, 0., 1.);
 
  268      hist = 
new TH3D(
name, title, 1, 0., 1., 1, 0., 1., 1, 0., 1.);
 
  270      Error(
"CreateHist", 
"Cannot create histogram %s with %d dimensions!", 
name, ndim);
 
  278         ::Error(
"THnBase::CreateHist", 
"Input parameter `axes` has a null element in the position %d of the array, cannot create new axis", 
d);
 
  287         if (
reqaxis->GetXbins()->GetSize()) {
 
  295         if (
reqaxis->GetXbins()->GetSize()) {
 
  308               hax[
d]->SetBinLabel(i,
lb->String().Data());
 
 
  327      ::Error(
"THnBase::CreateHnAny", 
"Input parameter `h` is null, no histogram was provided upon creation");
 
  331   int ndim = 
h->GetDimension();
 
  334      ::Error(
"THnBase::CreateHnAny", 
"Can only handle 1..3 dimensional histograms!");
 
  339   int nbins[3] = {0,0,0};
 
  342   const TAxis* axis[3] = { 
h->GetXaxis(), 
h->GetYaxis(), 
h->GetZaxis() };
 
  343   for (
int i = 0; i < ndim; ++i) {
 
  354   const char* 
cname( 
h->ClassName() );
 
  358#define R__THNBCASE(TAG)                                                \ 
  360s = new _NAME2_(THnSparse,TAG)(name, title, ndim, nbins,       \ 
  361minRange, maxRange, chunkSize); \ 
  363s = new _NAME2_(THn,TAG)(name, title, ndim, nbins,             \ 
  364minRange, maxRange);                  \ 
  379      ::Warning(
"THnSparse::CreateHnAny", 
"Unknown Type of Histogram");
 
  383   for (
int i = 0; i < ndim; ++i) {
 
  390      ::Warning(
"THnSparse::CreateHnAny", 
"Unknown Type of Histogram");
 
 
  408      ::Error(
"THnBase::CreateHnAny", 
"Input parameter `hn` is null, no histogram was provided upon creation");
 
  416         if (
hn->InheritsFrom(THnSparseD::Class())) 
bintype = 
'D';
 
  417         else if (
hn->InheritsFrom(THnSparseF::Class())) 
bintype = 
'F';
 
  418         else if (
hn->InheritsFrom(THnSparseL::Class())) 
bintype = 
'L';
 
  419         else if (
hn->InheritsFrom(THnSparseI::Class())) 
bintype = 
'I';
 
  420         else if (
hn->InheritsFrom(THnSparseS::Class())) 
bintype = 
'S';
 
  421         else if (
hn->InheritsFrom(THnSparseC::Class())) 
bintype = 
'C';
 
  423            hn->Error(
"CreateHnAny", 
"Type %s not implemented; please inform the ROOT team!",
 
  424                      hn->IsA()->GetName());
 
  434         else if (
hn->InheritsFrom(THnF::Class())) 
bintype = 
'F';
 
  435         else if (
hn->InheritsFrom(THnC::Class())) 
bintype = 
'C';
 
  436         else if (
hn->InheritsFrom(THnS::Class())) 
bintype = 
'S';
 
  437         else if (
hn->InheritsFrom(THnI::Class())) 
bintype = 
'I';
 
  438         else if (
hn->InheritsFrom(THnL::Class()) || 
hn->InheritsFrom(THnL64::Class())) 
bintype = 
'L';
 
  444      hn->Error(
"CreateHnAny", 
"Unhandled type %s, not deriving from THn nor THnSparse!",
 
  445                hn->IsA()->GetName());
 
  449      hn->Error(
"CreateHnAny", 
"Unhandled type %s, please inform the ROOT team!",
 
  450                hn->IsA()->GetName());
 
  455   ret->Init(
name, title, 
hn->GetListOfAxes(),
 
 
  470      ::Error(
"THnBase::Add", 
"Input parameter `hist` is null, no histogram was provided");
 
  475   for (
int i = 0; i < nbins; ++i) {
 
  478      if (!
value && !error) 
continue;
 
 
  610      title += 
" projection ";
 
  614      for (
Int_t d = ndim - 1; 
d >= 0; --
d) {
 
  652            hn->GetAxis(
d)->SetRange(0, 0);
 
  667   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
true )};
 
  669   while ((
myLinBin = iter->Next()) >= 0) {
 
  673         bins[
d] = iter->GetCoord(dim[
d]);
 
  718      if (!iter->HaveSkippedBin()) {
 
 
  758   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
  759   while ((i = iter->Next()) >= 0) {
 
 
  778      Warning(
"RebinnedAdd", 
"Different number of dimensions, cannot carry out operation on the histograms");
 
  798   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
h->CreateIter(
false)};
 
  801   while ((i = iter->Next(
coord)) >= 0) {
 
 
  897         Error(
"Merge", 
"Object named %s is not THnBase! Skipping it.",
 
 
  928   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
  930   while ((i = iter->Next(
coord)) >= 0) {
 
 
  969   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
  971   while ((i = iter->Next(
coord)) >= 0) {
 
 
 1022   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
 1024   while ((i = iter->Next(
coord)) >= 0) {
 
 1034            Warning(
"Divide(h)", 
"Histogram h has empty bins - division by zero! Setting bin to 0.");
 
 
 1071      Error(
"Divide",
"Coefficient of dividing histogram cannot be zero");
 
 1091   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
h1->CreateIter(
false)};
 
 1093   while ((i = iter->Next(
coord)) >= 0) {
 
 1103            Warning(
"Divide(h1, h2)", 
"Histogram h2 has empty bins - division by zero! Setting bin to 0.");
 
 
 1145      Warning(tag, 
"Different number of dimensions, cannot carry out operation on the histograms");
 
 1150         Warning(tag, 
"Different number of bins on axis %i, cannot carry out operation on the histograms", dim);
 
 
 1190         axisTitle.ReplaceAll(
"#semicolon", 10, 
";", 1);
 
 
 1243      for (
Int_t d = ndim - 1; 
d >= 0; --
d)
 
 1261               else edges[i] = 
newaxis->GetXmax();
 
 1278   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
 1279   while ((i = iter->Next(
coord)) >= 0) {
 
 1292      h->AddBinContent(
idxh, 
v);
 
 
 1337      Error(
"ComputeIntegral", 
"The histogram must have at least one bin.");
 
 1348   std::unique_ptr<ROOT::Internal::THnBaseBinIter> iter{
CreateIter(
false)};
 
 1349   while ((i = iter->Next(
coord)) >= 0) {
 
 1370      Error(
"ComputeIntegral", 
"Integral = 0, no hits in histogram bins (excluding over/underflow).");
 
 
 1419   if (
v == 0. && err == 0. && options && 
strchr(options, 
'0')) {
 
 1432      Printf(
"Bin at (%s) = %g (+/- %g)", 
coord.Data(), 
v, err);
 
 
 1454   if (options && (
strchr(options, 
'x') || 
strchr(options, 
'X'))) {
 
 1458         bin[dim] = 
from % nbins[dim];
 
 1469            if (bin[dim] >= nbins[dim] + 2) { 
 
 
 1510         Printf(
"    axis %d \"%s\": %d bins (%g..%g), %s bin sizes", dim,
 
 1512                (axis->
GetXbins() ? 
"variable" : 
"fixed"));
 
 1528      Printf(
"  coordinates stored in %d chunks of %d entries\n    %g of bins filled using %g of memory compared to an array",
 
 1530             hsparse->GetSparseFractionBins(), 
hsparse->GetSparseFractionMem());
 
 
 1596fHist(hist), fAxis(axis), fProj(nullptr)
 
 
 1622      fProj = fHist->Projection(fAxis);
 
 1624   fProj->Draw(
b ? 
b->GetDrawOption() : 
"");
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char cname
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
R__EXTERN TRandom * gRandom
 
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
 
class describing the range in the coordinates it supports multiple range in a coordinate.
 
virtual ~THnBaseBinIter()
Destruct a bin iterator.
 
TBrowser helper for THnBase.
 
~THnBaseBrowsable() override
Destruct a THnBaseBrowsable.
 
THnBaseBrowsable(THnBase *hist, Int_t axis)
Construct a THnBaseBrowsable.
 
void Browse(TBrowser *b) override
Browse an axis of a THnBase, i.e. draw its projection.
 
void Set(Int_t n) override
Set size of this array to n doubles.
 
Abstract array base class.
 
Class to manage histogram axis.
 
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
 
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
 
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
 
Int_t GetLast() const
Return last bin on the axis i.e.
 
virtual void SetRange(Int_t first=0, Int_t last=0)
Set the viewing range for the axis using bin numbers.
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
 
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
 
Int_t GetFirst() const
Return first bin on the axis i.e.
 
Using a TBrowser one can browse all ROOT objects.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
Collection abstract base class.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
static void RejectPoint(Bool_t reject=kTRUE)
Static function to set the global flag to reject points the fgRejectPoint global flag is tested by al...
 
Provides an indirection to the TFitResult class and with a semantics identical to a TFitResult pointe...
 
1-D histogram with a double per channel (see TH1 documentation)
 
TH1 is the base class of all histogram classes in ROOT.
 
virtual Double_t GetEffectiveEntries() const
Number of effective entries of the histogram.
 
virtual void Rebuild(Option_t *option="")
Using the current bin info, recompute the arrays for contents and errors.
 
virtual void AddBinContent(Int_t bin)
Increment bin content by 1.
 
virtual Double_t GetBinError(Int_t bin) const
Return value of error associated to bin number bin.
 
static Int_t FitOptionsMake(Option_t *option, Foption_t &Foption)
Decode string choptin and fill fitOption structure.
 
virtual void GetBinXYZ(Int_t binglobal, Int_t &binx, Int_t &biny, Int_t &binz) const
Return binx, biny, binz corresponding to the global bin number globalbin see TH1::GetBin function abo...
 
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 void SetBinError(Int_t bin, Double_t error)
Set the bin Error Note that this resets the bin eror option to be of Normal Type and for the non-empt...
 
virtual Double_t GetEntries() const
Return the current number of entries.
 
virtual void ResetStats()
Reset the statistics including the number of entries and replace with values calculated from bin cont...
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
virtual void SetEntries(Double_t n)
 
2-D histogram with a double per channel (see TH1 documentation)
 
3-D histogram with a double per channel (see TH1 documentation)
 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
 
Multidimensional histogram base.
 
virtual ROOT::Internal::THnBaseBinIter * CreateIter(Bool_t respectAxisRange) const =0
 
void SetEntries(Double_t entries)
 
virtual void SetFilledBins(Long64_t)
 
void Browse(TBrowser *b) override
Browse a THnSparse: create an entry (ROOT::THnSparseBrowsable) for each dimension.
 
virtual void InitStorage(Int_t *nbins, Int_t chunkSize)=0
 
Double_t GetBinError(const Int_t *idx) const
 
void SetBinError(const Int_t *idx, Double_t e)
 
Double_t fEntries
Number of entries, spread over chunks.
 
Double_t GetSumw2() const
 
Bool_t IsInRange(Int_t *coord) const
Check whether bin coord is in range, as defined by TAxis::SetRange().
 
TFitResultPtr Fit(TF1 *f1, Option_t *option="", Option_t *goption="")
Fit a THnSparse with function f.
 
void AddBinContent(const Int_t *x, Double_t v=1.)
 
void Scale(Double_t c)
Scale contents and errors of this histogram by c: this = this * c It does not modify the histogram's ...
 
virtual void SetBinError2(Long64_t bin, Double_t e2)=0
 
TH1 * CreateHist(const char *name, const char *title, const TObjArray *axes, Bool_t keepTargetAxis) const
Create an empty histogram with name and title with a given set of axes.
 
Bool_t PrintBin(Long64_t idx, Int_t *coord, Option_t *options) const
Print one bin.
 
Double_t GetSumwx(Int_t dim) const
 
Bool_t CheckConsistency(const THnBase *h, const char *tag) const
Consistency check on (some of) the parameters of two histograms (for operations).
 
Int_t GetNdimensions() const
 
~THnBase() override
Destruct a THnBase.
 
static THnBase * CreateHnAny(const char *name, const char *title, const TH1 *h1, Bool_t sparse, Int_t chunkSize=1024 *16)
Create a THn / THnSparse object from a histogram deriving from TH1.
 
TArrayD fTsumwx2
Total sum of weight*X*X for each dimension.
 
void ResetBase(Option_t *option="")
Clear the histogram.
 
virtual Long64_t GetNbins() const =0
 
THnBase * RebinBase(Int_t group) const
Combine the content of "group" neighboring bins into a new bin and return the resulting THnBase.
 
TClass * IsA() const override
 
TObjArray fAxes
Axes of the histogram.
 
void SetBinEdges(Int_t idim, const Double_t *bins)
Set the axis # of bins and bin limits on dimension idim.
 
Bool_t GetCalculateErrors() const
 
void AddInternal(const THnBase *h, Double_t c, Bool_t rebinned)
Add() implementation for both rebinned histograms and those with identical binning.
 
void SetTitle(const char *title) override
Change (i.e.
 
void PrintEntries(Long64_t from=0, Long64_t howmany=-1, Option_t *options=nullptr) const
Print "howmany" entries starting at "from".
 
enum THnBase::@83 fIntegralStatus
! status of integral
 
Double_t GetBinContent(const Int_t *idx) const
 
void Add(const THnBase *h, Double_t c=1.)
Add contents of h scaled by c to this histogram: this = this + c * h Note that if h has Sumw2 set,...
 
Double_t fTsumw2
Total sum of weights squared; -1 if no errors are calculated.
 
virtual void Reserve(Long64_t)
 
Double_t GetEntries() const
 
virtual Double_t GetBinError2(Long64_t linidx) const =0
 
virtual void Reset(Option_t *option="")=0
 
void SetBinContent(const Int_t *idx, Double_t v)
 
void Multiply(const THnBase *h)
Multiply this histogram by histogram h this = this * h Note that if h has Sumw2 set,...
 
void Divide(const THnBase *h)
Divide this histogram by h this = this/(h) Note that if h has Sumw2 set, Sumw2 is automatically calle...
 
void Print(Option_t *option="") const override
Print a THnBase.
 
Double_t GetSumwx2(Int_t dim) const
 
TObjArray fBrowsables
! Browser-helpers for each axis
 
TObject * ProjectionAny(Int_t ndim, const Int_t *dim, Bool_t wantNDim, Option_t *option="") const
Project all bins into a ndim-dimensional THn / THnSparse (whatever *this is) or if (ndim < 4 and !...
 
void GetRandom(Double_t *rand, Bool_t subBinRandom=kTRUE)
Generate an n-dimensional random tuple based on the histogrammed distribution.
 
TAxis * GetAxis(Int_t dim) const
 
THnBase * CloneEmpty(const char *name, const char *title, const TObjArray *axes, Bool_t keepTargetAxis) const
Create a new THnBase object that is of the same type as *this, but with dimensions and bins given by ...
 
Long64_t Merge(TCollection *list)
Merge this with a list of THnBase's.
 
Double_t fTsumw
Total sum of weights.
 
virtual Long64_t GetBin(const Int_t *idx) const =0
 
Double_t ComputeIntegral()
Compute integral (normalized cumulative sum of bins) w/o under/overflows The result is stored in fInt...
 
virtual void AddBinError2(Long64_t bin, Double_t e2)=0
 
void RebinnedAdd(const THnBase *h, Double_t c=1.)
Add contents of h scaled by c to this histogram: this = this + c * h Note that if h has Sumw2 set,...
 
Int_t fNdimensions
Number of dimensions.
 
void Init(const char *name, const char *title, const TObjArray *axes, Bool_t keepTargetAxis, Int_t chunkSize=1024 *16)
Initialize axes and name.
 
THnBase & operator=(const THnBase &other)
 
std::vector< Double_t > fIntegral
! vector with bin weight sums
 
TArrayD fTsumwx
Total sum of weight*X for each dimension.
 
Iterator over THnBase bins.
 
Efficient multidimensional histogram.
 
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.
 
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
 
virtual void SetNameTitle(const char *name, const char *title)
Set all the TNamed parameters (name and title).
 
Int_t GetEntriesFast() const
 
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
 
Bool_t IsEmpty() const override
 
Collectable string class.
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
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.
 
Double_t Rndm() override
Machine independent random number generator.
 
void ToLower()
Change string to lower-case.
 
TString & Insert(Ssiz_t pos, const char *s)
 
Ssiz_t First(char c) const
Find first occurrence of a character c.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
TString & Remove(Ssiz_t pos)
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
TFitResultPtr FitObject(TH1 *h1, TF1 *f1, Foption_t &option, const ROOT::Math::MinimizerOptions &moption, const char *goption, ROOT::Fit::DataRange &range)
fitting function for a TH1 (called from TH1::Fit)
 
Double_t Floor(Double_t x)
Rounds x downward, returning the largest integral value that is not greater than x.
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Int_t CeilNint(Double_t x)
Returns the nearest integer of TMath::Ceil(x).
 
Long64_t BinarySearch(Long64_t n, const T *array, T value)
Binary search in an array of n values to locate value.
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.