File indexing completed on 2025-08-06 08:17:29
0001 #ifndef CALOBASE_RAWTOWERGEOMV1_H
0002 #define CALOBASE_RAWTOWERGEOMV1_H
0003
0004 #include "RawTowerGeom.h"
0005
0006 #include "RawTowerDefs.h"
0007
0008 #include <iostream>
0009 #include <limits>
0010
0011 class RawTowerGeomv1 : public RawTowerGeom
0012 {
0013 public:
0014 RawTowerGeomv1() {}
0015 RawTowerGeomv1(RawTowerDefs::keytype id);
0016 ~RawTowerGeomv1() override {}
0017
0018 void identify(std::ostream& os = std::cout) const override;
0019
0020 void set_id(RawTowerDefs::keytype key) override { _towerid = key; }
0021 RawTowerDefs::keytype get_id() const override { return _towerid; }
0022
0023 int get_bineta() const override { return RawTowerDefs::decode_index1(_towerid); }
0024 int get_binphi() const override { return RawTowerDefs::decode_index2(_towerid); }
0025 int get_column() const override { return RawTowerDefs::decode_index1(_towerid); }
0026 int get_row() const override { return RawTowerDefs::decode_index2(_towerid); }
0027
0028 void set_center_x(double x) override
0029 {
0030 _center_x = x;
0031 return;
0032 }
0033 void set_center_y(double y) override
0034 {
0035 _center_y = y;
0036 return;
0037 }
0038 void set_center_z(double z) override
0039 {
0040 _center_z = z;
0041 return;
0042 }
0043
0044 double get_center_x() const override { return _center_x; }
0045 double get_center_y() const override { return _center_y; }
0046 double get_center_z() const override { return _center_z; }
0047
0048 double get_center_radius() const override;
0049 double get_eta() const override;
0050 double get_phi() const override;
0051 double get_theta() const override;
0052
0053 protected:
0054 RawTowerDefs::keytype _towerid{std::numeric_limits<RawTowerDefs::keytype>::max()};
0055
0056 double _center_x{std::numeric_limits<double>::signaling_NaN()};
0057 double _center_y{std::numeric_limits<double>::signaling_NaN()};
0058 double _center_z{std::numeric_limits<double>::signaling_NaN()};
0059 ClassDefOverride(RawTowerGeomv1, 4)
0060 };
0061
0062 #endif