Back to home page

sPhenix code displayed by LXR

 
 

    


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