Logo ROOT  
Reference Guide
THnSparse_Internal.h
Go to the documentation of this file.
1// @(#)root/hist:$Id$
2// Author: Axel Naumann (2007-09-11)
3
4/*************************************************************************
5 * Copyright (C) 1995-2012, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_THnSparse_Internal
13#define ROOT_THnSparse_Internal
14
15/*************************************************************************
16 * Non-API classes for THnSparse. *
17 * I.e. interesting to look at if you want to know how it works, but *
18 * don't use directly. *
19 * Implementation in THnSparse.cxx. *
20 *************************************************************************/
21
22#include "TArrayD.h"
23
24#include "TObject.h"
25
26class TBrowser;
27class TH1;
28class THnSparse;
29
31 private:
32
33 THnSparseArrayChunk(const THnSparseArrayChunk&); // Not implemented
35
36 public:
39 fContent(0), fSumw2(0) {}
40
41 THnSparseArrayChunk(Int_t coordsize, bool errors, TArray* cont);
42 virtual ~THnSparseArrayChunk();
43
44 Int_t fCoordinateAllocationSize; ///<! Size of the allocated coordinate buffer; -1 means none or fCoordinatesSize
45 Int_t fSingleCoordinateSize; ///< Size of a single bin coordinate
46 Int_t fCoordinatesSize; ///< Size of the bin coordinate buffer
47 Char_t *fCoordinates; ///<[fCoordinatesSize] compact bin coordinate buffer
48 TArray *fContent; ///< Bin content
49 TArrayD *fSumw2; ///< Bin errors
50
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);
54 if (fSumw2)
55 fSumw2->SetAt(v * v+ fSumw2->GetAt(idx), idx);
56 }
57 void Sumw2();
59
60 /// Check whether bin at idx batches idxbuf.
61 /// If we don't store indexes we trust the caller that it does match,
62 /// see comment in THnSparseCompactBinCoord::GetHash().
63 Bool_t Matches(Int_t idx, const Char_t* idxbuf) const {
64 return fSingleCoordinateSize <= 8 ||
66
67 ClassDef(THnSparseArrayChunk, 1); // chunks of linearized bins
68};
69#endif // ROOT_THnSparse_Internal
70
int Int_t
Definition: RtypesCore.h:45
char Char_t
Definition: RtypesCore.h:33
bool Bool_t
Definition: RtypesCore.h:63
double Double_t
Definition: RtypesCore.h:59
#define ClassDef(name, id)
Definition: Rtypes.h:325
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
void SetAt(Double_t v, Int_t i)
Definition: TArrayD.h:51
Double_t GetAt(Int_t i) const
Definition: TArrayD.h:45
Abstract array base class.
Definition: TArray.h:31
virtual void SetAt(Double_t v, Int_t i)=0
virtual Double_t GetAt(Int_t i) const =0
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
TH1 is the base class of all histogram classes in ROOT.
Definition: TH1.h:58
THnSparseArrayChunk is used internally by THnSparse.
Bool_t Matches(Int_t idx, const Char_t *idxbuf) const
Check whether bin at idx batches idxbuf.
TArrayD * fSumw2
Bin errors.
virtual ~THnSparseArrayChunk()
Destructor.
Definition: THnSparse.cxx:440
Int_t fCoordinatesSize
Size of the bin coordinate buffer.
THnSparseArrayChunk(const THnSparseArrayChunk &)
Int_t fSingleCoordinateSize
Size of a single bin coordinate.
THnSparseArrayChunk & operator=(const THnSparseArrayChunk &)
void AddBinContent(Int_t idx, Double_t v=1.)
void Sumw2()
Turn on support of errors.
Definition: THnSparse.cxx:480
Char_t * fCoordinates
[fCoordinatesSize] compact bin coordinate buffer
TArray * fContent
Bin content.
Int_t GetEntries() const
void AddBin(Int_t idx, const Char_t *idxbuf)
Create a new bin in this chunk.
Definition: THnSparse.cxx:450
Int_t fCoordinateAllocationSize
! Size of the allocated coordinate buffer; -1 means none or fCoordinatesSize
Efficient multidimensional histogram.
Definition: THnSparse.h:36
Mother of all ROOT objects.
Definition: TObject.h:37