ndh 0.0.7
Loading...
Searching...
No Matches
HnSparse.hh
1#ifndef HnSparse_H
2#define HnSparse_H
3
4#include <TObject.h>
5#include <TSystem.h>
6#include <TTree.h>
7#include <THnSparse.h>
8
9namespace NDH {
10
17
18class HnSparse : public THnSparse {
19
20protected:
21 HnSparse();
22 HnSparse(const char * name, const char * title, Int_t dim, const Int_t * nbins, const Double_t * xmin = 0,
23 const Double_t * xmax = 0, Int_t chunksize = 1024 * 16);
24
25public:
26 Bool_t Import(std::vector<Int_t> r, TString filename, TString objname, TString cacheDir = gSystem->HomeDirectory());
27
29 void SetOutputFileName(const char * fn) { fOutputFileName = fn; }
31 TString GetOutputFileName() const { return fOutputFileName; }
32
33 void ReserveBins(Long64_t nBins);
34
35protected:
36 bool RecursiveLoop(THnSparse * s, Int_t level, Int_t * coord, Int_t * dims, std::vector<Int_t> & r);
37
38private:
39 TTree * fTree{nullptr};
40 TString fOutputFileName{"ndh.root"};
41
43 ClassDef(HnSparse, 1);
45};
46
47//______________________________________________________________________________
78template <class CONT>
79class HnSparseT : public HnSparse {
80public:
83 HnSparseT(const char * name, const char * title, Int_t dim, const Int_t * nbins, const Double_t * xmin = 0,
84 const Double_t * xmax = 0, Int_t chunksize = 1024 * 16)
85 : HnSparse(name, title, dim, nbins, xmin, xmax, chunksize)
86 {
90 }
91
93 TArray * GenerateArray() const { return new CONT(GetChunkSize()); }
94
95private:
97 ClassDef(HnSparseT, 1); // Sparse n-dimensional histogram with templated content
99};
100
101typedef HnSparseT<TArrayD> HnSparseD;
102typedef HnSparseT<TArrayF> HnSparseF;
103typedef HnSparseT<TArrayL> HnSparseL;
104typedef HnSparseT<TArrayI> HnSparseI;
105typedef HnSparseT<TArrayS> HnSparseS;
106typedef HnSparseT<TArrayC> HnSparseC;
107
108} // namespace NDH
109
110#endif /* HNSPARSE_H */
HnSparseT()
Default constructor.
Definition HnSparse.hh:82
TArray * GenerateArray() const
Generate array for container.
Definition HnSparse.hh:93
HnSparseT(const char *name, const char *title, Int_t dim, const Int_t *nbins, const Double_t *xmin=0, const Double_t *xmax=0, Int_t chunksize=1024 *16)
Definition HnSparse.hh:83
HnSparse object.
Definition HnSparse.hh:18
void SetOutputFileName(const char *fn)
Setting output file name.
Definition HnSparse.hh:29
bool RecursiveLoop(THnSparse *s, Int_t level, Int_t *coord, Int_t *dims, std::vector< Int_t > &r)
Definition HnSparse.cc:103
TString GetOutputFileName() const
Returns output filename.
Definition HnSparse.hh:31
void ReserveBins(Long64_t nBins)
Definition HnSparse.cc:143
TString fOutputFileName
Output filename.
Definition HnSparse.hh:40
TTree * fTree
Container.
Definition HnSparse.hh:39
Bool_t Import(std::vector< Int_t > r, TString filename, TString objname, TString cacheDir=gSystem->HomeDirectory())
Definition HnSparse.cc:32