29         fNbins(hist->GetNbins()), fIndex(-1) {
 
   40      THnSparseBinIter(
const THnSparseBinIter&) = 
delete; 
 
   41      THnSparseBinIter& 
operator=(
const THnSparseBinIter&) = 
delete; 
 
   50Int_t THnSparseBinIter::GetCoord(
Int_t dim)
 const 
   52   if (fCoord[0] == -1) {
 
   53      fHist->GetBinContent(fIndex, fCoord);
 
   63   if (!fHist) 
return -1;
 
   74      if (fIndex >= fHist->GetNbins()) {
 
   78      if (RespectsAxisRange()) {
 
   81   } 
while (RespectsAxisRange()
 
   83            && (fHaveSkippedBin = 
kTRUE ));
 
   86      if (fCoord[0] == -1) {
 
   87         fHist->GetBinContent(fIndex, 
coord);
 
  150   fNdimensions(dim), fCoordBufferSize(0), fBitOffsets(nullptr)
 
  155   for (
Int_t i = 0; i < dim; ++i) {
 
 
  181   if (&
other == 
this) 
return *
this;
 
 
  216      nbits -= (8 - shift);
 
 
  253      *
pbuf += 0xff & (val << shift);
 
  254      val = val >> (8 - shift);
 
 
  269ULong64_t THnSparseCoordCompression::GetHashFromCoords(const Int_t* coord) const
 
  271   // Bins are addressed in two different modes, depending
 
  272   // on whether the compact bin index fits into a Long64_t or not.
 
  273   // If it does, we can use it as a "perfect hash" for the TExMap.
 
  274   // If not we build a hash from the compact bin index, and use that
 
  275   // as the TExMap's hash.
 
  277   if (fCoordBufferSize <= 8) {
 
  278      // fits into a Long64_t
 
  280      for (Int_t i = 0; i < fNdimensions; ++i) {
 
  281         hash1 += coord[i] << fBitOffsets[i];
 
  286   // else: doesn't fit into a Long64_t:
 
  287   memset(coord, 0, fCoordBufferSize);
 
  288   for (Int_t i = 0; i < fNdimensions; ++i) {
 
  289      const Int_t offset = fBitOffsets[i] / 8;
 
  290      const Int_t shift = fBitOffsets[i] % 8;
 
  291      ULong64_t val = coord[i];
 
  293      Char_t* pbuf = fCoordBuffer + offset;
 
  294      *pbuf += 0xff & (val << shift);
 
  295      val = val >> (8 - shift);
 
  303   ULong64_t hash = 5381;
 
  304   Char_t* str = fCoordBuffer;
 
  305   while (str - fCoordBuffer < fCoordBufferSize) {
 
  393   fHash(0), fCoordBuffer(nullptr), fCurrentBin(nullptr)
 
 
  428      fCoordinateAllocationSize(-1), fSingleCoordinateSize(
coordsize), fCoordinatesSize(0),
 
  429      fCoordinates(nullptr), fContent(
cont),
 
 
  590   fChunkSize(1024), fFilledBins(0), fCompactCoord(nullptr)
 
 
  607   fChunkSize(
chunksize), fFilledBins(0), fCompactCoord(nullptr)
 
 
  627   v += 
chunk->fContent->GetAt(bin);
 
  628   return chunk->fContent->SetAt(
v, bin);
 
 
  749      if (
chunk && 
chunk->fContent->GetSize() > idx) {
 
  757         return chunk->fContent->GetAt(idx);
 
 
  775   if (
linidx < 0) 
return 0.;
 
 
  807   if (!allocate) 
return -1;
 
 
  873      Warning(
"GetSparseFractionMem", 
"Cannot determine type of elements!");
 
 
  917   if (!
chunk->fSumw2 ) {
 
  920         Error(
"SetBinError", 
"GetCalculateErrors() logic error!");
 
 
  934   if (!
chunk->fSumw2 ) {
 
  937         Error(
"SetBinError", 
"GetCalculateErrors() logic error!");
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
unsigned long long ULong64_t
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
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 offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
Binding & operator=(OUT(*fun)(void))
 
Iterator over THnBase bins (internal implementation).
 
Array of doubles (64 bits per element).
 
Abstract array base class.
 
virtual TClass * IsA() const
 
virtual Double_t GetAt(Int_t i) const =0
 
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
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.
 
All ROOT classes may have RTTI (run time type identification) support added.
 
TDataType * GetDataType() const
 
Int_t Size() const
Get size of basic typedef'ed type.
 
void Expand(Int_t newsize)
Expand the TExMap.
 
void Add(ULong64_t hash, Long64_t key, Long64_t value)
Add an (key,value) pair to the table. The key should be unique.
 
Long64_t GetValue(ULong64_t hash, Long64_t key)
Return the value belonging to specified key and hash value.
 
void Delete(Option_t *opt="") override
Delete all entries stored in the TExMap.
 
Multidimensional histogram base.
 
Double_t fEntries
Number of entries, spread over chunks.
 
Int_t GetNdimensions() const
 
void ResetBase(Option_t *option="")
Clear the histogram.
 
Bool_t GetCalculateErrors() const
 
Double_t fTsumw2
Total sum of weights squared; -1 if no errors are calculated.
 
TAxis * GetAxis(Int_t dim) const
 
Int_t fNdimensions
Number of dimensions.
 
THnSparseArrayChunk is used internally by THnSparse.
 
~THnSparseArrayChunk() override
Destructor.
 
TArrayD * fSumw2
Bin errors.
 
Int_t fCoordinatesSize
Size of the bin coordinate buffer.
 
Int_t fSingleCoordinateSize
Size of a single bin coordinate.
 
void Sumw2()
Turn on support of errors.
 
Char_t * fCoordinates
[fCoordinatesSize] compact bin coordinate buffer
 
TArray * fContent
Bin content.
 
void AddBin(Int_t idx, const Char_t *idxbuf)
Create a new bin in this chunk.
 
Int_t fCoordinateAllocationSize
! Size of the allocated coordinate buffer; -1 means none or fCoordinatesSize
 
THnSparseCompactBinCoord is a class used by THnSparse internally.
 
THnSparseCompactBinCoord(Int_t dim, const Int_t *nbins)
Initialize a THnSparseCompactBinCoord object with "dim" dimensions and "bins" holding the number of b...
 
ULong64_t GetHash() const
 
const Char_t * GetBuffer() const
 
~THnSparseCompactBinCoord()
destruct a THnSparseCompactBinCoord
 
THnSparseCompactBinCoord(const THnSparseCompactBinCoord &)=delete
 
void SetBuffer(const Char_t *buf)
 
void SetCoord(const Int_t *coord)
 
THnSparseCompactBinCoord & operator=(const THnSparseCompactBinCoord &)=delete
 
THnSparseCoordCompression is a class used by THnSparse internally.
 
Int_t GetNdimensions() const
 
Int_t GetNumBits(Int_t n) const
 
void SetCoordFromBuffer(const Char_t *buf_in, Int_t *coord_out) const
Given the compressed coordinate buffer buf_in, calculate ("decompact") the bin coordinates and return...
 
ULong64_t SetBufferFromCoord(const Int_t *coord_in, Char_t *buf_out) const
Given the cbin coordinates coord_in, calculate ("compact") the bin coordinates and return them in buf...
 
Int_t GetBufferSize() const
 
THnSparseCoordCompression & operator=(const THnSparseCoordCompression &other)
Set this to other if different.
 
ULong64_t GetHashFromBuffer(const Char_t *buf) const
Calculate hash from compact bin index.
 
THnSparseCoordCompression(Int_t dim, const Int_t *nbins)
Initialize a THnSparseCoordCompression object with "dim" dimensions and "bins" holding the number of ...
 
~THnSparseCoordCompression()
destruct a THnSparseCoordCompression
 
Efficient multidimensional histogram.
 
Double_t GetSparseFractionBins() const
Return the amount of filled bins over all bins.
 
Double_t GetSparseFractionMem() const
Return the amount of used memory over memory that would be used by a non-sparse n-dimensional histogr...
 
void Reset(Option_t *option="") override
Clear the histogram.
 
void AddBinError2(Long64_t bin, Double_t e2) override
Add "e" to error of bin with index "bin", enable errors if needed.
 
void SetBinContent(const Int_t *idx, Double_t v)
Forwards to THnBase::SetBinContent().
 
THnSparseArrayChunk * GetChunk(Int_t idx) const
 
THnSparseCompactBinCoord * fCompactCoord
! Compact coordinate
 
Int_t GetChunkSize() const
 
Double_t GetBinContent(const Int_t *idx) const
Forwards to THnBase::GetBinContent() overload.
 
Long64_t fFilledBins
Number of filled bins.
 
Long64_t GetBin(const Int_t *idx) const override
 
TObjArray fBinContent
Array of THnSparseArrayChunk.
 
THnSparseCompactBinCoord * GetCompactCoord() const
Return THnSparseCompactBinCoord object.
 
void InitStorage(Int_t *nbins, Int_t chunkSize) override
Initialize the storage of a histogram created via Init()
 
Double_t GetBinError2(Long64_t linidx) const override
Get square of the error of bin addressed by linidx as  If errors are not enabled (via Sumw2() or Calc...
 
THnSparse()
Construct an empty THnSparse.
 
THnSparseArrayChunk * AddChunk()
Create a new chunk of bin content.
 
virtual TArray * GenerateArray() const =0
 
void SetBinError2(Long64_t bin, Double_t e2) override
Set error of bin with index "bin" to "e", enable errors if needed.
 
void FillExMap()
We have been streamed; set up fBins.
 
~THnSparse() override
Destruct a THnSparse.
 
TExMap fBins
! Filled bins
 
TExMap fBinsContinued
! Filled bins for non-unique hashes, containing pairs of (bin index 0, bin index 1)
 
void AddBinContent(const Int_t *idx, Double_t v=1.)
Forwards to THnBase::AddBinContent().
 
void Reserve(Long64_t nbins) override
Initialize storage for nbins.
 
Int_t fChunkSize
Number of entries for each chunk.
 
void Sumw2() override
Enable calculation of errors.
 
Long64_t GetNbins() const override
 
ROOT::Internal::THnBaseBinIter * CreateIter(Bool_t respectAxisRange) const override
Create an iterator over all filled bins of a THnSparse.
 
Long64_t GetBinIndexForCurrentBin(Bool_t allocate)
Return the index for fCurrentBinIndex.
 
Int_t GetEntriesFast() const
 
TObject * Last() const override
Return the object in the last filled slot. Returns 0 if no entries.
 
Int_t GetEntries() const override
Return the number of objects in array (i.e.
 
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
 
void AddLast(TObject *obj) override
Add object in the next empty slot in the array.
 
virtual void Clear(Option_t *="")
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...