1 #ifndef Ndmspc_NBinning_H
2 #define Ndmspc_NBinning_H
10 #include "NBinningDef.h"
11 #include "NBinningPoint.h"
83 virtual void Print(Option_t * option =
"")
const;
103 std::vector<std::vector<int>>
GetCoordsRange(std::vector<int> c)
const;
110 std::vector<std::vector<int>>
GetAxisRanges(std::vector<int> c)
const;
120 bool GetAxisRange(
size_t axisId,
double & min,
double & max, std::vector<int> c)
const;
130 bool GetAxisRangeInBase(
size_t axisId,
int & min,
int & max, std::vector<int> c)
const;
144 std::vector<int>
GetAxisBinning(
size_t axisId,
const std::vector<int> & c)
const;
181 bool AddBinning(
size_t id, std::vector<int> binning,
size_t n = 1);
290 void AddBinningDefinition(std::string name, std::map<std::string, std::vector<std::vector<int>>> binning,
291 bool forceDefault =
false);
318 bool SetCfg(
const json & cfg);
Defines binning mapping and content for NDMSPC histograms.
Represents a single point in multi-dimensional binning.
NBinning object for managing multi-dimensional binning and axis definitions.
NBinningDef * GetDefinition(const std::string &name="")
Get binning definition by name.
std::vector< std::string > GetDefinitionNames() const
Get all definition names.
std::vector< std::string > GetAxisNamesByType(AxisType type) const
Get axis names by type.
std::vector< int > GetAxisIndexes(AxisType type) const
Get indexes of axes by type.
std::vector< std::string > GetAxisNamesByIndexes(std::vector< int > axisIds) const
Get axis names by indexes.
std::vector< AxisType > fAxisTypes
Axis types.
std::vector< TAxis * > fAxes
List of axes.
std::string GetCurrentDefinitionName() const
Get current definition name.
NBinningPoint * GetPoint()
Get the current binning point.
std::vector< int > GetAxisIndexesByNames(std::vector< std::string > axisNames) const
Get axis indexes by axis names.
bool GetAxisRange(size_t axisId, double &min, double &max, std::vector< int > c) const
Get axis range for a specific axis and coordinates.
std::vector< std::vector< int > > GetAxisRanges(std::vector< int > c) const
Get axis ranges for given coordinates.
TObjArray * GenerateListOfAxes()
Generate a list of axes as TObjArray.
bool AddBinningVariable(size_t id, std::vector< int > mins)
Add variable binning for a specific axis.
NBinning()
Default constructor.
virtual void Print(Option_t *option="") const
Print binning information.
AxisType GetAxisType(size_t i) const
Get axis type for a specific axis.
bool AddBinningViaBinWidths(size_t id, std::vector< std::vector< int >> widths)
Add binning via bin widths for a specific axis.
void Initialize()
Initialize the binning object.
std::vector< TAxis * > GetAxes() const
Get vector of axis pointers.
bool SetCfg(const json &cfg)
Set configuration from JSON.
std::vector< std::string > fDefinitionNames
Binning definition names.
THnSparse * fContent
Content histogram.
void AddBinningDefinition(std::string name, std::map< std::string, std::vector< std::vector< int >>> binning, bool forceDefault=false)
Add a binning definition.
std::string fCurrentDefinitionName
Current definition name.
std::map< std::string, NBinningDef * > fDefinitions
Binning definitions.
Binning GetBinningType(size_t i) const
Get binning type for a specific axis.
void PrintContent(Option_t *option="") const
Print binning content.
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.
std::vector< int > GetAxisBinning(size_t axisId, const std::vector< int > &c) const
Get binning for a specific axis and coordinates.
virtual ~NBinning()
Destructor.
THnSparse * GetMap() const
Get the mapping histogram.
std::map< std::string, NBinningDef * > GetDefinitions() const
Get all binning definitions.
THnSparse * GetContent() const
Get the content histogram.
void SetPoint(NBinningPoint *point)
Set the current binning point.
NBinningPoint * fPoint
! Binning point object
char GetAxisTypeChar(size_t i) const
Get axis type as character for a specific axis.
void Reset()
Reset the binning object to initial state.
std::vector< std::vector< int > > GetCoordsRange(std::vector< int > c) const
Get coordinate ranges for given coordinates.
bool SetAxisType(size_t id, AxisType type)
Set axis type for a specific axis.
std::vector< TAxis * > GetAxesByType(AxisType type) const
Get axes by type.
void SetCurrentDefinitionName(const std::string &name)
Set current definition name.
THnSparse * fMap
Mapping histogram.
std::vector< Binning > fBinningTypes
Binning types.
bool AddBinning(size_t id, std::vector< int > binning, size_t n=1)
Add binning for a specific axis.
Long64_t FillAll(NBinningDef *def=nullptr)
Fill all bins according to definition.