ndmspc v1.2.0-0.1.rc7
Loading...
Searching...
No Matches
NBinning.h
1#ifndef Ndmspc_NBinning_H
2#define Ndmspc_NBinning_H
3#include <TObject.h>
4#include <THnSparse.h>
5#include <TAxis.h>
6#include <cstddef>
7#include <vector>
8#include <map>
9#include "TObjArray.h"
10#include "NBinningDef.h"
11#include "NBinningPoint.h"
12
13namespace Ndmspc {
14
19enum class Binning {
20 kSingle = 0,
22 kUser = 2,
24};
25
30enum class AxisType {
31 kFixed = 0,
34};
35
45class NBinning : public TObject {
46 public:
50 NBinning();
51
56 NBinning(TObjArray * axes);
57
62 NBinning(std::vector<TAxis *> axes);
63
67 virtual ~NBinning();
68
72 void Initialize();
73
77 void Reset();
78
83 virtual void Print(Option_t * option = "") const;
84
89 void PrintContent(Option_t * option = "") const;
90
96 Long64_t FillAll(NBinningDef * def = nullptr);
97
103 std::vector<std::vector<int>> GetCoordsRange(std::vector<int> c) const;
104
110 std::vector<std::vector<int>> GetAxisRanges(std::vector<int> c) const;
111
120 bool GetAxisRange(size_t axisId, double & min, double & max, std::vector<int> c) const;
121
130 bool GetAxisRangeInBase(size_t axisId, int & min, int & max, std::vector<int> c) const;
131
136 TObjArray * GenerateListOfAxes();
137
144 std::vector<int> GetAxisBinning(size_t axisId, const std::vector<int> & c) const;
145
151 std::vector<int> GetAxisIndexes(AxisType type) const;
152
158 std::vector<int> GetAxisIndexesByNames(std::vector<std::string> axisNames) const;
159
165 std::vector<std::string> GetAxisNamesByType(AxisType type) const;
166
172 std::vector<std::string> GetAxisNamesByIndexes(std::vector<int> axisIds) const;
173
181 bool AddBinning(size_t id, std::vector<int> binning, size_t n = 1);
182
189 bool AddBinningVariable(size_t id, std::vector<int> mins);
190
197 bool AddBinningViaBinWidths(size_t id, std::vector<std::vector<int>> widths);
198
205 bool SetAxisType(size_t id, AxisType type);
206
211 THnSparse * GetMap() const { return fMap; }
212
217 THnSparse * GetContent() const { return fContent; }
218
223 std::vector<TAxis *> GetAxes() const { return fAxes; }
224
230 std::vector<TAxis *> GetAxesByType(AxisType type) const;
231
237 Binning GetBinningType(size_t i) const;
238
244 AxisType GetAxisType(size_t i) const;
245
251 char GetAxisTypeChar(size_t i) const;
252
258 NBinningDef * GetDefinition(const std::string & name = "");
259
264 std::map<std::string, NBinningDef *> GetDefinitions() const { return fDefinitions; }
265
270 std::vector<std::string> GetDefinitionNames() const { return fDefinitionNames; }
271
276 std::string GetCurrentDefinitionName() const { return fCurrentDefinitionName; }
277
282 void SetCurrentDefinitionName(const std::string & name);
283
290 void AddBinningDefinition(std::string name, std::map<std::string, std::vector<std::vector<int>>> binning,
291 bool forceDefault = false);
292
298
305 NBinningPoint * GetPoint(size_t id, const std::string binning = "");
306
311 void SetPoint(NBinningPoint * point) { fPoint = point; }
312
318 bool SetCfg(const json & cfg);
319
320 private:
321 THnSparse * fMap{nullptr};
322 THnSparse * fContent{nullptr};
323 std::vector<TAxis *> fAxes;
324 std::vector<Binning> fBinningTypes;
325 std::vector<AxisType> fAxisTypes;
326 std::string fCurrentDefinitionName{""};
327 std::map<std::string, NBinningDef *> fDefinitions;
328 std::vector<std::string> fDefinitionNames;
330
332 ClassDef(NBinning, 1);
334};
335} // namespace Ndmspc
336#endif
Defines binning mapping and content for NDMSPC histograms.
Definition NBinningDef.h:26
Represents a single point in multi-dimensional binning.
NBinning object for managing multi-dimensional binning and axis definitions.
Definition NBinning.h:45
NBinningDef * GetDefinition(const std::string &name="")
Get binning definition by name.
std::vector< std::string > GetAxisNamesByType(AxisType type) const
Get axis names by type.
Definition NBinning.cxx:988
std::vector< int > GetAxisIndexes(AxisType type) const
Get indexes of axes by type.
Definition NBinning.cxx:934
std::vector< std::string > GetAxisNamesByIndexes(std::vector< int > axisIds) const
Get axis names by indexes.
std::vector< AxisType > fAxisTypes
Axis types.
Definition NBinning.h:325
THnSparse * GetContent() const
Get the content histogram.
Definition NBinning.h:217
std::vector< TAxis * > fAxes
List of axes.
Definition NBinning.h:323
std::string GetCurrentDefinitionName() const
Get current definition name.
Definition NBinning.h:276
NBinningPoint * GetPoint()
Get the current binning point.
std::vector< int > GetAxisIndexesByNames(std::vector< std::string > axisNames) const
Get axis indexes by axis names.
Definition NBinning.cxx:970
bool GetAxisRange(size_t axisId, double &min, double &max, std::vector< int > c) const
Get axis range for a specific axis and coordinates.
Definition NBinning.cxx:809
std::vector< std::vector< int > > GetAxisRanges(std::vector< int > c) const
Get axis ranges for given coordinates.
Definition NBinning.cxx:721
void AddBinningDefinition(std::string name, std::map< std::string, std::vector< std::vector< int > > > binning, bool forceDefault=false)
Add a binning definition.
TObjArray * GenerateListOfAxes()
Generate a list of axes as TObjArray.
Definition NBinning.cxx:850
std::map< std::string, NBinningDef * > GetDefinitions() const
Get all binning definitions.
Definition NBinning.h:264
bool AddBinningVariable(size_t id, std::vector< int > mins)
Add variable binning for a specific axis.
Definition NBinning.cxx:593
NBinning()
Default constructor.
Definition NBinning.cxx:19
virtual void Print(Option_t *option="") const
Print binning information.
Definition NBinning.cxx:245
AxisType GetAxisType(size_t i) const
Get axis type for a specific axis.
Definition NBinning.cxx:909
void Initialize()
Initialize the binning object.
Definition NBinning.cxx:90
bool SetCfg(const json &cfg)
Set configuration from JSON.
std::vector< std::string > GetDefinitionNames() const
Get all definition names.
Definition NBinning.h:270
std::vector< std::string > fDefinitionNames
Binning definition names.
Definition NBinning.h:328
THnSparse * GetMap() const
Get the mapping histogram.
Definition NBinning.h:211
THnSparse * fContent
Content histogram.
Definition NBinning.h:322
std::string fCurrentDefinitionName
Current definition name.
Definition NBinning.h:326
std::map< std::string, NBinningDef * > fDefinitions
Binning definitions.
Definition NBinning.h:327
Binning GetBinningType(size_t i) const
Get binning type for a specific axis.
Definition NBinning.cxx:712
void PrintContent(Option_t *option="") const
Print binning content.
Definition NBinning.cxx:341
bool GetAxisRangeInBase(size_t axisId, int &min, int &max, std::vector< int > c) const
Get axis range in base for a specific axis and coordinates.
Definition NBinning.cxx:823
std::vector< int > GetAxisBinning(size_t axisId, const std::vector< int > &c) const
Get binning for a specific axis and coordinates.
Definition NBinning.cxx:761
virtual ~NBinning()
Destructor.
Definition NBinning.cxx:56
void SetPoint(NBinningPoint *point)
Set the current binning point.
Definition NBinning.h:311
NBinningPoint * fPoint
! Binning point object
Definition NBinning.h:329
char GetAxisTypeChar(size_t i) const
Get axis type as character for a specific axis.
Definition NBinning.cxx:920
void Reset()
Reset the binning object to initial state.
Definition NBinning.cxx:78
std::vector< std::vector< int > > GetCoordsRange(std::vector< int > c) const
Get coordinate ranges for given coordinates.
Definition NBinning.cxx:665
bool SetAxisType(size_t id, AxisType type)
Set axis type for a specific axis.
Definition NBinning.cxx:896
std::vector< TAxis * > GetAxesByType(AxisType type) const
Get axes by type.
Definition NBinning.cxx:952
void SetCurrentDefinitionName(const std::string &name)
Set current definition name.
THnSparse * fMap
Mapping histogram.
Definition NBinning.h:321
std::vector< Binning > fBinningTypes
Binning types.
Definition NBinning.h:324
bool AddBinning(size_t id, std::vector< int > binning, size_t n=1)
Add binning for a specific axis.
Definition NBinning.cxx:560
bool AddBinningViaBinWidths(size_t id, std::vector< std::vector< int > > widths)
Add binning via bin widths for a specific axis.
Definition NBinning.cxx:634
Long64_t FillAll(NBinningDef *def=nullptr)
Fill all bins according to definition.
Definition NBinning.cxx:416
std::vector< TAxis * > GetAxes() const
Get vector of axis pointers.
Definition NBinning.h:223
Global callback function for libwebsockets client events.
AxisType
Types of axis supported.
Definition NBinning.h:30
@ kFixed
fixed axis type
Definition NBinning.h:31
@ kVariable
variable axis type
Definition NBinning.h:32
Binning
Types of binning supported.
Definition NBinning.h:19
@ kUser
No rebin possible, but axis range is as single bin (User must set bin as needed)
Definition NBinning.h:22
@ kUndefined
Undefined binning type.
Definition NBinning.h:23
@ kMultiple
Rebin is possible.
Definition NBinning.h:21
@ kSingle
No rebin possible.
Definition NBinning.h:20