File indexing completed on 2025-08-06 08:17:29
0001 #ifndef CALOBASE_RAWTOWERGEOMV4_H
0002 #define CALOBASE_RAWTOWERGEOMV4_H
0003
0004 #include "RawTowerGeom.h"
0005
0006 #include "RawTowerDefs.h"
0007
0008 #include <TVector3.h>
0009
0010 #include <iostream>
0011 #include <limits>
0012
0013 class RawTowerGeomv4 : public RawTowerGeom
0014 {
0015 public:
0016 RawTowerGeomv4() {}
0017 RawTowerGeomv4(RawTowerDefs::keytype id);
0018 virtual ~RawTowerGeomv4() {}
0019
0020 void identify(std::ostream& os = std::cout) const override;
0021
0022 void set_id(RawTowerDefs::keytype key) override { _towerid = key; }
0023 RawTowerDefs::keytype get_id() const override { return _towerid; }
0024
0025 int get_bineta() const override { return RawTowerDefs::decode_index1(_towerid); }
0026 int get_binphi() const override { return RawTowerDefs::decode_index2(_towerid); }
0027 int get_column() const override { return RawTowerDefs::decode_index1(_towerid); }
0028 int get_row() const override { return RawTowerDefs::decode_index2(_towerid); }
0029
0030 void set_center_x(double x) override
0031 {
0032 _center_x = x;
0033 return;
0034 }
0035 void set_center_y(double y) override
0036 {
0037 _center_y = y;
0038 return;
0039 }
0040 void set_center_z(double z) override
0041 {
0042 _center_z = z;
0043 return;
0044 }
0045 void set_roty(double roty) override
0046 {
0047 _roty = roty;
0048 return;
0049 }
0050 void set_rotz(double rotz) override
0051 {
0052 _rotz = rotz;
0053 return;
0054 }
0055
0056 double get_center_x() const override { return _center_x; }
0057 double get_center_y() const override { return _center_y; }
0058 double get_center_z() const override { return _center_z; }
0059 double get_roty() const override { return _roty; }
0060 double get_rotz() const override { return _rotz; }
0061
0062 TVector3 get_final_position() const;
0063 double get_center_radius() const override;
0064 double get_eta() const override;
0065 double get_phi() const override;
0066 double get_theta() const override;
0067
0068 void set_tower_type(int tt) override { _tower_type = tt; }
0069 int get_tower_type() const override { return _tower_type; }
0070
0071 protected:
0072 RawTowerDefs::keytype _towerid = ~0;
0073
0074 double _center_x{std::numeric_limits<double>::signaling_NaN()};
0075 double _center_y{std::numeric_limits<double>::signaling_NaN()};
0076 double _center_z{std::numeric_limits<double>::signaling_NaN()};
0077 double _roty{std::numeric_limits<double>::signaling_NaN()};
0078 double _rotz{std::numeric_limits<double>::signaling_NaN()};
0079
0080 int _tower_type{-1};
0081
0082 ClassDefOverride(RawTowerGeomv4, 5)
0083 };
0084
0085 #endif