File indexing completed on 2025-08-06 08:18:54
0001
0002
0003 #ifndef G4DETECTORS_PHG4BLOCKGEOMV1_H
0004 #define G4DETECTORS_PHG4BLOCKGEOMV1_H
0005
0006 #include "PHG4BlockGeom.h"
0007
0008 #include <iostream> // for cout, ostream
0009
0010 class PHG4BlockGeomv1 : public PHG4BlockGeom
0011 {
0012 public:
0013 PHG4BlockGeomv1();
0014 PHG4BlockGeomv1(const int layer,
0015 const double sizex, const double sizey, const double sizez,
0016 const double centerx, const double centery, const double centerz,
0017 const double zrot);
0018
0019 ~PHG4BlockGeomv1() override = default;
0020
0021
0022 void identify(std::ostream &os = std::cout) const override;
0023
0024 int get_layer() const override { return _layer; }
0025 double get_width() const override { return _size[0]; }
0026 double get_thickness() const override { return _size[1]; }
0027 double get_length() const override { return _size[2]; }
0028 double get_center_x() const override { return _center[0]; }
0029 double get_center_y() const override { return _center[1]; }
0030 double get_center_z() const override { return _center[2]; }
0031 double get_z_rot() const override { return _rotation_z; }
0032
0033 double get_size_x() const override { return _size[0]; }
0034 double get_size_y() const override { return _size[1]; }
0035 double get_size_z() const override { return _size[2]; }
0036
0037 double get_rot_matrix(const int i, const int j) const override { return _rot_matrix[i][j]; }
0038
0039 void set_layer(const int i) override { _layer = i; }
0040
0041
0042 void set_size(const double sizex, const double sizey, const double sizez) override;
0043
0044 void set_z_rot(const double zrot) override
0045 {
0046 _build_rot_matrix();
0047 _rotation_z = zrot;
0048 }
0049
0050 void convert_local_to_global(double, double, double,
0051 double &, double &, double &) const override;
0052
0053
0054 void set_center(const double centerx, const double centery, const double centerz);
0055 void convert_global_x_to_local(double, double, double,
0056 double &, double &, double &) const;
0057
0058 protected:
0059 int _layer;
0060 double _size[3]{};
0061 double _center[3]{};
0062 double _rotation_z;
0063
0064 void _build_rot_matrix();
0065 double _rot_matrix[3][3]{};
0066
0067 ClassDefOverride(PHG4BlockGeomv1, 1)
0068 };
0069
0070 #endif