Back to home page

sPhenix code displayed by LXR

 
 

    


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;  // complement = 0xFFFFF... independent of integer type (32/64/... bits)
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 /* CALOBASE_RawTowerGeomv4_H */