/usr/include/root/THnSparse_Internal.h is in libroot-hist-dev 5.34.30-0ubuntu8.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | // @(#)root/hist:$Id$
// Author: Axel Naumann (2007-09-11)
/*************************************************************************
* Copyright (C) 1995-2012, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_THnSparse_Internal
#define ROOT_THnSparse_Internal
/*************************************************************************
* Non-API classes for THnSparse. *
* I.e. interesting to look at if you want to know how it works, but *
* don't use directly. *
* Implementation in THnSparse.cxx. *
*************************************************************************/
#ifndef ROOT_TArrayD
#include "TArrayD.h"
#endif
class TBrowser;
class TH1;
class THnSparse;
class THnSparseArrayChunk: public TObject {
private:
THnSparseArrayChunk(const THnSparseArrayChunk&); // Not implemented
THnSparseArrayChunk& operator=(const THnSparseArrayChunk&); // Not implemented
public:
THnSparseArrayChunk():
fCoordinateAllocationSize(-1), fSingleCoordinateSize(0), fCoordinatesSize(0), fCoordinates(0),
fContent(0), fSumw2(0) {}
THnSparseArrayChunk(Int_t coordsize, bool errors, TArray* cont);
virtual ~THnSparseArrayChunk();
Int_t fCoordinateAllocationSize; //! size of the allocated coordinate buffer; -1 means none or fCoordinatesSize
Int_t fSingleCoordinateSize; // size of a single bin coordinate
Int_t fCoordinatesSize; // size of the bin coordinate buffer
Char_t *fCoordinates; //[fCoordinatesSize] compact bin coordinate buffer
TArray *fContent; // bin content
TArrayD *fSumw2; // bin errors
void AddBin(Int_t idx, const Char_t* idxbuf);
void AddBinContent(Int_t idx, Double_t v = 1.) {
fContent->SetAt(v + fContent->GetAt(idx), idx);
if (fSumw2)
fSumw2->SetAt(v * v+ fSumw2->GetAt(idx), idx);
}
void Sumw2();
Int_t GetEntries() const { return fCoordinatesSize / fSingleCoordinateSize; }
Bool_t Matches(Int_t idx, const Char_t* idxbuf) const {
// Check whether bin at idx batches idxbuf.
// If we don't store indexes we trust the caller that it does match,
// see comment in THnSparseCompactBinCoord::GetHash().
return fSingleCoordinateSize <= 8 ||
!memcmp(fCoordinates + idx * fSingleCoordinateSize, idxbuf, fSingleCoordinateSize); }
ClassDef(THnSparseArrayChunk, 1); // chunks of linearized bins
};
#endif // ROOT_THnSparse_Internal
|