File indexing completed on 2025-12-16 09:19:47
0001 #ifndef TOWERINFOV2_H
0002 #define TOWERINFOV2_H
0003
0004 #include "TowerInfov1.h"
0005
0006 #include <cstdint>
0007
0008 class TowerInfov2 : public TowerInfov1
0009 {
0010 public:
0011 TowerInfov2() = default;
0012
0013 ~TowerInfov2() override = default;
0014
0015 void Reset() override;
0016 void Clear(Option_t* = "") override;
0017
0018
0019 void set_chi2(float chi2) override { _chi2 = chi2; }
0020 float get_chi2() override { return _chi2; }
0021 void set_pedestal(float pedestal) override { _pedestal = pedestal; }
0022 float get_pedestal() override { return _pedestal; }
0023
0024 void set_isHot(bool isHot) override { set_status_bit(0, isHot); }
0025 bool get_isHot() const override { return get_status_bit(0); }
0026
0027 void set_isBadTime(bool isBadTime) override { set_status_bit(1, isBadTime); }
0028 bool get_isBadTime() const override { return get_status_bit(1); }
0029
0030 void set_isBadChi2(bool isBadChi2) override { set_status_bit(2, isBadChi2); }
0031 bool get_isBadChi2() const override { return get_status_bit(2); }
0032
0033 void set_isNotInstr(bool isNotInstr) override { set_status_bit(3, isNotInstr); }
0034 bool get_isNotInstr() const override { return get_status_bit(3); }
0035
0036 void set_isNoCalib(bool isNoCalib) override { set_status_bit(4, isNoCalib); }
0037 bool get_isNoCalib() const override { return get_status_bit(4); }
0038
0039 void set_isZS(bool isZS) override { set_status_bit(5, isZS); }
0040 bool get_isZS() const override { return get_status_bit(5); }
0041
0042 void set_isRecovered(bool isRecovered) override { set_status_bit(6, isRecovered); }
0043 bool get_isRecovered() const override { return get_status_bit(6); }
0044
0045 void set_isSaturated(bool isSaturated) override { set_status_bit(7, isSaturated); }
0046 bool get_isSaturated() const override { return get_status_bit(7); }
0047
0048 bool get_isGood() const override { return !(get_isHot() || get_isBadChi2() || get_isNoCalib()); }
0049
0050 uint8_t get_status() const override { return _status; }
0051
0052 void set_status(uint8_t status) override { _status = status; }
0053
0054 void copy_tower(TowerInfo* tower) override;
0055
0056 private:
0057 float _chi2 = 0;
0058 float _pedestal = 0;
0059 uint8_t _status = 0;
0060
0061 void set_status_bit(int bit, bool value)
0062 {
0063 if (bit < 0 || bit > 7)
0064 {
0065 return;
0066 }
0067 _status &= ~((uint8_t) 1 << bit);
0068 _status |= (uint8_t) value << bit;
0069 }
0070
0071 bool get_status_bit(int bit) const
0072 {
0073 if (bit < 0 || bit > 7)
0074 {
0075 return false;
0076 }
0077 return (_status & ((uint8_t) 1 << bit)) != 0;
0078 }
0079
0080 ClassDefOverride(TowerInfov2, 1);
0081
0082 };
0083
0084 #endif