12 #ifndef ROOT_THnSparse_Internal
13 #define ROOT_THnSparse_Internal
30 class THnSparseArrayChunk:
public TObject {
33 THnSparseArrayChunk(
const THnSparseArrayChunk&);
34 THnSparseArrayChunk& operator=(
const THnSparseArrayChunk&);
37 THnSparseArrayChunk():
38 fCoordinateAllocationSize(-1), fSingleCoordinateSize(0), fCoordinatesSize(0), fCoordinates(0),
39 fContent(0), fSumw2(0) {}
41 THnSparseArrayChunk(Int_t coordsize,
bool errors, TArray* cont);
42 virtual ~THnSparseArrayChunk();
44 Int_t fCoordinateAllocationSize;
45 Int_t fSingleCoordinateSize;
46 Int_t fCoordinatesSize;
51 void AddBin(Int_t idx,
const Char_t* idxbuf);
52 void AddBinContent(Int_t idx, Double_t v = 1.) {
53 fContent->SetAt(v + fContent->GetAt(idx), idx);
55 fSumw2->SetAt(v * v+ fSumw2->GetAt(idx), idx);
58 Int_t GetEntries()
const {
return fCoordinatesSize / fSingleCoordinateSize; }
59 Bool_t Matches(Int_t idx,
const Char_t* idxbuf)
const {
63 return fSingleCoordinateSize <= 8 ||
64 !memcmp(fCoordinates + idx * fSingleCoordinateSize, idxbuf, fSingleCoordinateSize); }
66 ClassDef(THnSparseArrayChunk, 1);
68 #endif // ROOT_THnSparse_Internal