Back to home page

sPhenix code displayed by LXR

 
 

    


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);  // NOLINT(cppcoreguidelines-pro-type-static-cast-downcast)
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 &sector_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 }