Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:16:23

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() {}
0012 
0013   ~TowerInfov2() override {}
0014 
0015   void Reset() override;
0016   void Clear(Option_t* = "") override;
0017   void set_time(short t) override { TowerInfov1::set_time(t * 1000); }
0018   short get_time() override { return TowerInfov1::get_time() / 1000; }
0019 
0020   void set_time_float(float t) override { TowerInfov1::set_time(t * 1000); }
0021   float get_time_float() override { return TowerInfov1::get_time() / 1000.; }
0022 
0023   void set_chi2(float chi2) override { _chi2 = chi2; }
0024   float get_chi2() override { return _chi2; }
0025   void set_pedestal(float pedestal) override { _pedestal = pedestal; }
0026   float get_pedestal() override { return _pedestal; }
0027 
0028   void set_isHot(bool isHot) override { set_status_bit(0, isHot); }
0029   bool get_isHot() const override { return get_status_bit(0); }
0030 
0031   void set_isBadTime(bool isBadTime) override { set_status_bit(1, isBadTime); }
0032   bool get_isBadTime() const override { return get_status_bit(1); }
0033 
0034   void set_isBadChi2(bool isBadChi2) override { set_status_bit(2, isBadChi2); }
0035   bool get_isBadChi2() const override { return get_status_bit(2); }
0036 
0037   void set_isNotInstr(bool isNotInstr) override { set_status_bit(3, isNotInstr); }
0038   bool get_isNotInstr() const override { return get_status_bit(3); }
0039 
0040   void set_isNoCalib(bool isNoCalib) override { set_status_bit(4, isNoCalib); }
0041   bool get_isNoCalib() const override { return get_status_bit(4); }
0042 
0043   void set_isZS(bool isZS) override { set_status_bit(5, isZS); }
0044   bool get_isZS() const override { return get_status_bit(5); }
0045 
0046   void set_isRecovered(bool isRecovered) override { set_status_bit(6, isRecovered); }
0047   bool get_isRecovered() const override { return get_status_bit(6); }
0048 
0049   void set_isSaturated(bool isSaturated) override { set_status_bit(7, isSaturated); }
0050   bool get_isSaturated() const override { return get_status_bit(7); }
0051 
0052   bool get_isGood() const override { return !(get_isHot() || get_isBadChi2() || get_isNoCalib()); }
0053 
0054   uint8_t get_status() const override { return _status; }
0055 
0056   void set_status(uint8_t status) override { _status = status; }
0057 
0058   void copy_tower(TowerInfo* tower) override;
0059 
0060  private:
0061   float _chi2 = 0;
0062   float _pedestal = 0;
0063   uint8_t _status = 0;
0064 
0065   void set_status_bit(int bit, bool value)
0066   {
0067     if (bit < 0 || bit > 7)
0068     {
0069       return;
0070     }
0071     _status &= ~((uint8_t) 1 << bit);
0072     _status |= (uint8_t) value << bit;
0073   }
0074 
0075   bool get_status_bit(int bit) const
0076   {
0077     if (bit < 0 || bit > 7)
0078     {
0079       return false;  // default behavior
0080     }
0081     return (_status & ((uint8_t) 1 << bit)) != 0;
0082   }
0083 
0084   ClassDefOverride(TowerInfov2, 1);
0085   // Inherit other methods and properties from TowerInfov1
0086 };
0087 
0088 #endif