ndmspc  v1.2.0-0.1.rc3
NGnThreadData.h
1 #ifndef Ndmspc_NHnSparseThreadData_H
2 #define Ndmspc_NHnSparseThreadData_H
3 // #include "NBinning.h"
4 // #include "NStorageTree.h"
5 #include "NGnTree.h"
6 #include "NThreadData.h"
7 
8 namespace Ndmspc {
9 
19 class NGnThreadData : public NThreadData {
20  public:
24  NGnThreadData();
25 
29  virtual ~NGnThreadData();
30 
42  bool Init(size_t id, NGnProcessFuncPtr func, NGnBeginFuncPtr beginFunc, NGnEndFuncPtr endFunc, NGnTree * ngnt,
43  NBinning * binningIn, NGnTree * input = nullptr, const std::string & filename = "",
44  const std::string & treename = "ngnt");
45 
50  void SetProcessFunc(NGnProcessFuncPtr func) { fProcessFunc = func; }
51 
59  bool InitStorage(NStorageTree * ts, const std::string & filename = "", const std::string & treename = "ngnt");
60 
65  NGnTree * GetHnSparseBase() const { return fHnSparseBase; }
66 
71  Long64_t GetNProcessed() const { return fNProcessed; }
72 
77  void SetNProcessed(Long64_t n) { fNProcessed = n; }
78 
83  void SetCfg(const json & cfg) { fCfg = cfg; }
84 
89  json GetCfg() const { return fCfg; }
90 
98  void SetResultsFilename(const std::string & filename) { fResultsFilename = filename; }
99 
104  const std::string & GetResultsFilename() const { return fResultsFilename; }
105 
110  bool IsPureCopy() const { return fIsPureCopy; }
111 
116  void SetIsPureCopy(bool val) { fIsPureCopy = val; }
117 
122  virtual void Process(const std::vector<int> & coords);
123 
124  void SetCurrentDefinitionName(const std::string & name);
125  void SyncCurrentDefinitionIds(const std::vector<Long64_t> & ids);
126 
127  void ExecuteBeginFunction();
128  void ExecuteEndFunction();
129 
133  void FlushDeferredDeletes();
134 
140  virtual Long64_t Merge(TCollection * list);
141 
142  private:
143  NGnProcessFuncPtr fProcessFunc{nullptr};
144  NGnBeginFuncPtr fBeginFunc{nullptr};
145  NGnEndFuncPtr fEndFunc{nullptr};
146  NGnTree * fHnSparseBase{nullptr};
147  Long64_t fNProcessed{0};
148  NBinning * fBiningSource{nullptr};
149  json fCfg{};
150  bool fIsPureCopy{false};
151  std::string fResultsFilename{};
152  std::vector<TObject *> fDeferredDeletes;
153 
155  ClassDef(NGnThreadData, 1);
157 };
158 } // namespace Ndmspc
159 #endif
NBinning object for managing multi-dimensional binning and axis definitions.
Definition: NBinning.h:45
Thread-local data object for NDMSPC processing.
Definition: NGnThreadData.h:19
void SetIsPureCopy(bool val)
Sets the pure copy status of the object.
NGnEndFuncPtr fEndFunc
Function pointer to the end function.
NGnBeginFuncPtr fBeginFunc
Function pointer to the begin function.
void SetNProcessed(Long64_t n)
Set number of processed entries.
Definition: NGnThreadData.h:77
json GetCfg() const
Get configuration JSON object.
Definition: NGnThreadData.h:89
bool IsPureCopy() const
Checks if the object is a pure copy.
std::string fResultsFilename
Shared-FS path to copy result to after Close(true) (TCP mode)
bool Init(size_t id, NGnProcessFuncPtr func, NGnBeginFuncPtr beginFunc, NGnEndFuncPtr endFunc, NGnTree *ngnt, NBinning *binningIn, NGnTree *input=nullptr, const std::string &filename="", const std::string &treename="ngnt")
Initialize thread data for processing.
NGnThreadData()
Constructor.
void SetResultsFilename(const std::string &filename)
Set the results filename for TCP mode (shared filesystem path).
Definition: NGnThreadData.h:98
NGnTree * GetHnSparseBase() const
Get pointer to base NGnTree object.
Definition: NGnThreadData.h:65
void SetProcessFunc(NGnProcessFuncPtr func)
Set the processing function pointer.
Definition: NGnThreadData.h:50
NBinning * fBiningSource
Pointer to the source binning (from the original NGnTree)
virtual void Process(const std::vector< int > &coords)
Process coordinates (virtual).
Long64_t GetNProcessed() const
Get number of processed entries.
Definition: NGnThreadData.h:71
bool InitStorage(NStorageTree *ts, const std::string &filename="", const std::string &treename="ngnt")
Initialize storage tree for thread data.
virtual Long64_t Merge(TCollection *list)
Merge thread data from a collection (virtual).
virtual ~NGnThreadData()
Destructor.
json fCfg
Configuration object.
void FlushDeferredDeletes()
Delete deferred ROOT objects, skipping TCanvas/TPad (leaked safely).
void SetCfg(const json &cfg)
Set configuration JSON object.
Definition: NGnThreadData.h:83
std::vector< TObject * > fDeferredDeletes
Objects deferred for single-threaded deletion.
NGnTree * fHnSparseBase
Pointer to the base class.
Long64_t fNProcessed
Number of processed entries.
const std::string & GetResultsFilename() const
Get the results filename for TCP mode.
bool fIsPureCopy
Flag indicating pure copy mode.
NGnProcessFuncPtr fProcessFunc
Function pointer to the processing function.
NDMSPC tree object for managing multi-dimensional data storage and processing.
Definition: NGnTree.h:75
NDMSPC storage tree object for managing ROOT TTree-based data storage.
Definition: NStorageTree.h:22
Thread-local data object for NDMSPC processing.
Definition: NThreadData.h:21