File indexing completed on 2025-08-06 08:17:56
0001 #include "DumpPHG4CylinderGeomContainer.h"
0002
0003 #include <phool/PHIODataNode.h>
0004
0005 #include <g4detectors/PHG4CylinderGeom.h>
0006 #include <g4detectors/PHG4CylinderGeomContainer.h>
0007 #include <g4detectors/PHG4CylinderGeom_Spacalv1.h> // for PHG4CylinderGeom_...
0008 #include <g4detectors/PHG4CylinderGeom_Spacalv3.h>
0009
0010 #include <map>
0011 #include <ostream>
0012 #include <string>
0013 #include <utility>
0014
0015 using MyNode_t = PHIODataNode<PHG4CylinderGeomContainer>;
0016
0017 DumpPHG4CylinderGeomContainer::DumpPHG4CylinderGeomContainer(const std::string &NodeName)
0018 : DumpObject(NodeName)
0019 {
0020 return;
0021 }
0022
0023 int DumpPHG4CylinderGeomContainer::process_Node(PHNode *myNode)
0024 {
0025 PHG4CylinderGeomContainer *phg4geomcontainer = nullptr;
0026 MyNode_t *thisNode = static_cast<MyNode_t *>(myNode);
0027 if (thisNode)
0028 {
0029 phg4geomcontainer = thisNode->getData();
0030 }
0031 if (phg4geomcontainer)
0032 {
0033 PHG4CylinderGeomContainer::ConstIterator hiter;
0034 PHG4CylinderGeomContainer::ConstRange geom_begin_end = phg4geomcontainer->get_begin_end();
0035 *fout << "num layers: " << phg4geomcontainer->get_NLayers() << std::endl;
0036 for (hiter = geom_begin_end.first; hiter != geom_begin_end.second; hiter++)
0037 {
0038 *fout << "layer: " << hiter->second->get_layer() << std::endl;
0039 *fout << "radius: " << hiter->second->get_radius() << std::endl;
0040 *fout << "thickness: " << hiter->second->get_thickness() << std::endl;
0041 *fout << "zmin: " << hiter->second->get_zmin() << std::endl;
0042 *fout << "zmax: " << hiter->second->get_zmax() << std::endl;
0043 *fout << "nscint: " << hiter->second->get_nscint() << std::endl;
0044 *fout << "tiltangle: " << hiter->second->get_tiltangle() << std::endl;
0045 *fout << "strip_y_spacing: " << hiter->second->get_strip_y_spacing() << std::endl;
0046 *fout << "strip_z_spacing: " << hiter->second->get_strip_z_spacing(0) << std::endl;
0047 *fout << "strip_tilt: " << hiter->second->get_strip_tilt() << std::endl;
0048 *fout << "N_strip_columns: " << hiter->second->get_N_strip_columns() << std::endl;
0049 *fout << "N_strips_per_column: " << hiter->second->get_N_strips_per_column() << std::endl;
0050 *fout << "N_sensors_in_layer: " << hiter->second->get_N_sensors_in_layer() << std::endl;
0051 *fout << "pixel_z: " << hiter->second->get_pixel_z() << std::endl;
0052 *fout << "pixel_x: " << hiter->second->get_pixel_x() << std::endl;
0053 *fout << "pixel_thickness: " << hiter->second->get_pixel_thickness() << std::endl;
0054 PHG4CylinderGeom_Spacalv1 *layergeomv1 = dynamic_cast<PHG4CylinderGeom_Spacalv1 *>(hiter->second);
0055 if (layergeomv1)
0056 {
0057 const PHG4CylinderGeom_Spacalv3::sector_map_t §or_map = layergeomv1->get_sector_map();
0058 *fout << "xpos: " << layergeomv1->get_xpos() << std::endl;
0059 *fout << "ypos: " << layergeomv1->get_ypos() << std::endl;
0060 *fout << "zpos: " << layergeomv1->get_zpos() << std::endl;
0061 *fout << "fiber_clading_thickness: " << layergeomv1->get_fiber_clading_thickness() << std::endl;
0062 *fout << "fiber_core_diameter: " << layergeomv1->get_fiber_core_diameter() << std::endl;
0063 *fout << "fiber_distance: " << layergeomv1->get_fiber_distance() << std::endl;
0064 *fout << "absorber_mat: " << layergeomv1->get_absorber_mat() << std::endl;
0065 *fout << "fiber_clading_mat: " << layergeomv1->get_fiber_clading_mat() << std::endl;
0066 *fout << "fiber_core_mat: " << layergeomv1->get_fiber_core_mat() << std::endl;
0067 *fout << "virualize_fiber: " << layergeomv1->is_virualize_fiber() << std::endl;
0068 for (auto sectormapiter : sector_map)
0069 {
0070 *fout << "sector " << sectormapiter.first << ", rotation: " << sectormapiter.second << std::endl;
0071 }
0072 }
0073 PHG4CylinderGeom_Spacalv3 *layergeomv3 = dynamic_cast<PHG4CylinderGeom_Spacalv3 *>(hiter->second);
0074 if (layergeomv3)
0075 {
0076 *fout << "sidewall_outer_torr: " << layergeomv3->get_sidewall_outer_torr() << std::endl;
0077 *fout << "sidewall_thickness: " << layergeomv3->get_sidewall_thickness() << std::endl;
0078 *fout << "sidewall_mat: " << layergeomv3->get_sidewall_mat() << std::endl;
0079 *fout << "max_phi_bin_in_sec: " << layergeomv3->get_max_phi_bin_in_sec() << std::endl;
0080 *fout << "divider_mat: " << layergeomv3->get_divider_mat() << std::endl;
0081 *fout << "divider_width: " << layergeomv3->get_divider_width() << std::endl;
0082
0083 const PHG4CylinderGeom_Spacalv3::tower_map_t &tower_map = layergeomv3->get_sector_tower_map();
0084 for (const auto &towermapiter : tower_map)
0085 {
0086 *fout << "tower " << towermapiter.first << ", id: " << towermapiter.second.id << std::endl;
0087 *fout << "tower " << towermapiter.first << ", pDz: " << towermapiter.second.pDz << std::endl;
0088 *fout << "tower " << towermapiter.first << ", pDy1: " << towermapiter.second.pDy1 << std::endl;
0089 *fout << "tower " << towermapiter.first << ", pDx1: " << towermapiter.second.pDx1 << std::endl;
0090 *fout << "tower " << towermapiter.first << ", pDx2: " << towermapiter.second.pDx2 << std::endl;
0091 *fout << "tower " << towermapiter.first << ", pDy2: " << towermapiter.second.pDy2 << std::endl;
0092 *fout << "tower " << towermapiter.first << ", pDx3: " << towermapiter.second.pDx3 << std::endl;
0093 *fout << "tower " << towermapiter.first << ", pDx4: " << towermapiter.second.pDx4 << std::endl;
0094 *fout << "tower " << towermapiter.first << ", pTheta: " << towermapiter.second.pTheta << std::endl;
0095 *fout << "tower " << towermapiter.first << ", pPhi: " << towermapiter.second.pPhi << std::endl;
0096 *fout << "tower " << towermapiter.first << ", pAlp1: " << towermapiter.second.pAlp1 << std::endl;
0097 *fout << "tower " << towermapiter.first << ", pAlp2: " << towermapiter.second.pAlp2 << std::endl;
0098 *fout << "tower " << towermapiter.first << ", pRotationAngleX: " << towermapiter.second.pRotationAngleX << std::endl;
0099 *fout << "tower " << towermapiter.first << ", centralX: " << towermapiter.second.centralX << std::endl;
0100 *fout << "tower " << towermapiter.first << ", centralY: " << towermapiter.second.centralY << std::endl;
0101 *fout << "tower " << towermapiter.first << ", centralZ: " << towermapiter.second.centralZ << std::endl;
0102 *fout << "tower " << towermapiter.first << ", ModuleSkinThickness: " << towermapiter.second.ModuleSkinThickness << std::endl;
0103 *fout << "tower " << towermapiter.first << ", NFiberX: " << towermapiter.second.NFiberX << std::endl;
0104 *fout << "tower " << towermapiter.first << ", NFiberY: " << towermapiter.second.NFiberY << std::endl;
0105 *fout << "tower " << towermapiter.first << ", NSubtowerX: " << towermapiter.second.NSubtowerX << std::endl;
0106 *fout << "tower " << towermapiter.first << ", NSubtowerY: " << towermapiter.second.NSubtowerY << std::endl;
0107 *fout << "tower " << towermapiter.first << ", LightguideHeight: " << towermapiter.second.LightguideHeight << std::endl;
0108 *fout << "tower " << towermapiter.first << ", LightguideTaperRatio: " << towermapiter.second.LightguideTaperRatio << std::endl;
0109 *fout << "tower " << towermapiter.first << ", LightguideMaterial: " << towermapiter.second.LightguideMaterial << std::endl;
0110 }
0111 }
0112 }
0113 }
0114 return 0;
0115 }