ndmspc  0.20250128.0
Axis.h
1 #ifndef NdmspcAxis_H
2 #define NdmspcAxis_H
3 #include <TObject.h>
4 #include <TAxis.h>
5 #include <vector>
6 
7 namespace Ndmspc {
8 
15 
16 class Axis : public TObject {
17  public:
18  Axis(TAxis * base = nullptr, int rebin = 1, int rebinShift = 0, int min = 1, int max = -1);
19  virtual ~Axis();
20 
21  virtual void Print(Option_t * option = "", int spaces = 0) const;
22  void SetBaseAxis(TAxis * base) { fBaseAxis = base; }
23  TAxis * SetBaseAxis() const { return fBaseAxis; }
24 
25  void SetRebin(int rebin) { fRebin = rebin; }
26  void SetRebinShift(int rebinShift) { fRebinStart = rebinShift + 1; }
27  void SetBinMin(int min) { fBinMin = min; }
28  void SetBinMax(int max) { fBinMax = max; }
29  void SetRange(int min, int max) { fBinMin = min, fBinMax = max; }
30  // void SetNBins(int nBins) { fNBins = nBins; }
31 
32  int GetRebin() const { return fRebin; }
33  int GetRebinStart() const { return fRebinStart; }
34  int GetRebinShift() const { return fRebinStart - 1; }
35  int GetBinMin() const { return fBinMin; }
36  int GetBinMax() const { return fBinMax; }
37  int GetBinMinBase() const;
38  int GetBinMaxBase() const;
39  int GetNBins() const { return fNBins; }
40 
41  void AddChild(Axis * axis) { fChildren.push_back(axis); }
42  Axis * AddChild(int rebin /*= 1*/, int rebinShift /*= 0*/, int min /*= 1*/, int max /*= -1*/, Option_t * option = "");
43  Axis * GetChild(int i) { return fChildren[i]; }
44 
45  Axis * AddRange(int rebin, int nBins = -1);
46 
47  void FillAxis(TAxis * axis);
48 
49  bool IsRangeValid();
50 
51  private:
52  TAxis * fBaseAxis{nullptr}; // base axis
53  int fNBins{0}; // total number of bins
54  int fRebin{1}; // rebin factor
55  int fRebinStart{1}; // rebin start
56  int fBinMin{1}; // range minimum
57  int fBinMax{-1}; // range maximum
58  std::vector<Axis *> fChildren; // list of children axis
60  ClassDef(Axis, 1);
62 };
63 } // namespace Ndmspc
64 #endif
Axis object.
Definition: Axis.h:16