File indexing completed on 2025-08-06 08:18:57
0001
0002
0003 #ifndef G4DETECTORS_PHG4CYLINDERGEOMV4_H
0004 #define G4DETECTORS_PHG4CYLINDERGEOMV4_H
0005
0006 #include "PHG4CylinderGeom.h"
0007
0008 #include <iostream> // for cout, ostream
0009
0010 class PHG4CylinderGeomv4 : public PHG4CylinderGeom
0011 {
0012 public:
0013 PHG4CylinderGeomv4() = default;
0014 PHG4CylinderGeomv4(const int lnsensors,
0015 const int lnz,
0016 const int nspc,
0017 int nsc,
0018 const int nstag,
0019 const double lr,
0020 const double rs,
0021 const double szs,
0022 const double sps,
0023 const double sxo,
0024 double syo,
0025 const double szsp,
0026 const double sys,
0027 const double tck,
0028 const double st)
0029 : N_sensors_in_layer(lnsensors)
0030 , layer(-1)
0031 , layer_radius(lr)
0032 , radius_stagger(rs)
0033 , layer_NZ(lnz)
0034 , segment_z_step(szs)
0035 , segment_phi_step(sps)
0036 , sensor_x_offset(sxo)
0037 , sensor_y_offset(syo)
0038 , N_strip_columns(nsc)
0039 , N_strips_per_column(nspc)
0040 , N_staggers(nstag)
0041 , strip_z_spacing(szsp)
0042 , strip_y_spacing(sys)
0043 , thickness(tck)
0044 , strip_tilt(st)
0045 {
0046 }
0047
0048 ~PHG4CylinderGeomv4() override {}
0049
0050
0051 void identify(std::ostream& os = std::cout) const override;
0052
0053 void set_layer(const int i) override { layer = i; }
0054 int get_layer() const override { return layer; }
0055 double get_radius() const override { return layer_radius; }
0056
0057 void find_segment_center(const int segment_z_bin, const int segment_phi_bin, double location[]) override;
0058 void find_strip_center(const int segment_z_bin, const int segment_phi_bin, const int strip_column, const int strip_index, double location[]) override;
0059
0060 double get_thickness() const override { return thickness; }
0061 double get_strip_y_spacing() const override { return strip_y_spacing; }
0062
0063
0064 double get_strip_tilt() const override { return strip_tilt; }
0065 int get_N_strip_columns() const override { return N_strip_columns; }
0066 int get_N_strips_per_column() const override { return N_strips_per_column; }
0067 int get_N_sensors_in_layer() const override { return N_sensors_in_layer; }
0068
0069
0070 double get_sensor_x_offset() const { return sensor_x_offset; }
0071 double get_sensor_y_offset() const { return sensor_y_offset; }
0072
0073 protected:
0074 int N_sensors_in_layer{-1};
0075 int layer{-1};
0076
0077
0078 double layer_radius{std::numeric_limits<double>::quiet_NaN()};
0079 double radius_stagger{std::numeric_limits<double>::quiet_NaN()};
0080 int layer_NZ{-1};
0081 double segment_z_step{std::numeric_limits<double>::quiet_NaN()};
0082 double segment_phi_step{std::numeric_limits<double>::quiet_NaN()};
0083 double sensor_x_offset{std::numeric_limits<double>::quiet_NaN()};
0084 double sensor_y_offset{std::numeric_limits<double>::quiet_NaN()};
0085
0086
0087
0088
0089 int N_strip_columns{-1};
0090 int N_strips_per_column{-1};
0091 int N_staggers{-1};
0092 double strip_z_spacing{std::numeric_limits<double>::quiet_NaN()};
0093 double strip_y_spacing{std::numeric_limits<double>::quiet_NaN()};
0094 double thickness{std::numeric_limits<double>::quiet_NaN()};
0095 double strip_tilt{std::numeric_limits<double>::quiet_NaN()};
0096
0097 ClassDefOverride(PHG4CylinderGeomv4, 1)
0098 };
0099
0100 #endif