Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
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   // from PHObject
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   // size in local coordinates
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   // our own (not inherited)
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]{};  // global -> local coordinates rotation matrix
0066 
0067   ClassDefOverride(PHG4BlockGeomv1, 1)
0068 };
0069 
0070 #endif