ndmspc  v1.2.0-0.1.rc3
NBinningDef.h
1 #ifndef Ndmspc_NBinningDef_H
2 #define Ndmspc_NBinningDef_H
3 #include <string>
4 #include <vector>
5 #include <map>
6 #include <TObject.h>
7 #include <TAxis.h>
8 #include <THnSparse.h>
9 namespace Ndmspc {
10 
20 class NBinning;
21 
26 class NBinningDef : public TObject {
27  public:
34  NBinningDef(std::string name = "default", std::map<std::string, std::vector<std::vector<int>>> definition = {},
35  NBinning * binning = nullptr);
36 
40  virtual ~NBinningDef();
41 
46  virtual void Print(Option_t * option = "") const;
47 
52  std::map<std::string, std::vector<std::vector<int>>> GetDefinition() const { return fDefinition; }
53 
58  void SetDefinition(const std::map<std::string, std::vector<std::vector<int>>> & d) { fDefinition = d; }
59 
65  void SetAxisDefinition(std::string axisName, const std::vector<std::vector<int>> & d) { fDefinition[axisName] = d; }
66 
71  std::vector<int> GetVariableAxes() const { return fVariableAxes; }
72 
77  void AddVariableAxis(size_t axis) { fVariableAxes.push_back(axis); }
78 
82  void RefreshContentFromIds();
83 
87  void RefreshIdsFromContent();
88 
93  std::vector<Long64_t> GetIds() const { return fIds; }
94 
99  std::vector<Long64_t> & GetIds() { return fIds; }
100 
106  Long64_t GetId(size_t index) const;
107 
112  TObjArray * GetAxes() const { return fContent->GetListOfAxes(); }
113 
118  THnSparse * GetContent() const { return fContent; }
119 
124  NBinning * GetBinning() const { return fBinning; }
125 
126  private:
127  NBinning * fBinning{nullptr};
128  std::string fName;
129  std::map<std::string, std::vector<std::vector<int>>> fDefinition;
130  std::vector<int> fVariableAxes{};
131  std::vector<Long64_t> fIds{};
132  THnSparse * fContent{nullptr};
133 
135  ClassDef(NBinningDef, 1);
137 };
138 } // namespace Ndmspc
139 #endif
Defines binning mapping and content for NDMSPC histograms.
Definition: NBinningDef.h:26
std::vector< int > fVariableAxes
List of variable axes indices in the content histogram.
Definition: NBinningDef.h:130
THnSparse * GetContent() const
Get the template content histogram.
Definition: NBinningDef.h:118
void SetAxisDefinition(std::string axisName, const std::vector< std::vector< int >> &d)
Set axis definition for a specific axis.
Definition: NBinningDef.h:65
std::vector< Long64_t > & GetIds()
Get reference to list of bin IDs.
Definition: NBinningDef.h:99
std::map< std::string, std::vector< std::vector< int > > > GetDefinition() const
Get the binning mapping definition.
Definition: NBinningDef.h:52
std::vector< int > GetVariableAxes() const
Get list of variable axes indices.
Definition: NBinningDef.h:71
NBinning * fBinning
Pointer to the parent binning.
Definition: NBinningDef.h:127
void SetDefinition(const std::map< std::string, std::vector< std::vector< int >>> &d)
Set the binning mapping definition.
Definition: NBinningDef.h:58
virtual void Print(Option_t *option="") const
Print binning definition information.
virtual ~NBinningDef()
Destructor.
std::string fName
Name of the binning definition.
Definition: NBinningDef.h:128
NBinning * GetBinning() const
Get pointer to parent NBinning object.
Definition: NBinningDef.h:124
void AddVariableAxis(size_t axis)
Add a variable axis index.
Definition: NBinningDef.h:77
void RefreshIdsFromContent()
Refresh bin IDs from content histogram.
std::vector< Long64_t > fIds
List of IDs for the binning definition.
Definition: NBinningDef.h:131
TObjArray * GetAxes() const
Get list of axes from content histogram.
Definition: NBinningDef.h:112
std::map< std::string, std::vector< std::vector< int > > > fDefinition
Binning mapping definition.
Definition: NBinningDef.h:129
Long64_t GetId(size_t index) const
Get bin ID at specified index.
void RefreshContentFromIds()
Refresh content histogram from bin IDs.
std::vector< Long64_t > GetIds() const
Get list of bin IDs.
Definition: NBinningDef.h:93
NBinningDef(std::string name="default", std::map< std::string, std::vector< std::vector< int >>> definition={}, NBinning *binning=nullptr)
Constructor.
Definition: NBinningDef.cxx:14
THnSparse * fContent
Template histogram for the binning definition.
Definition: NBinningDef.h:132
NBinning object for managing multi-dimensional binning and axis definitions.
Definition: NBinning.h:45