Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:57

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
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   // from PHObject
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   // using PHG4CylinderGeom::get_strip_z_spacing;
0063   // double get_strip_z_spacing() const override { return strip_z_spacing; }
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   // our own (not inherited from base class)
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   // finding the center of a sensor given ladder_segment_z and ladder_
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   // navigation within a sensor
0087   // double strip_x_offset;
0088   // double strip_y_offset;
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