File indexing completed on 2025-08-05 08:18:17
0001 #include "PHG4TpcEndCapDisplayAction.h"
0002
0003 #include <g4main/PHG4DisplayAction.h> // for PHG4DisplayAction
0004 #include <g4main/PHG4Utils.h>
0005
0006 #include <Geant4/G4Colour.hh>
0007 #include <Geant4/G4LogicalVolume.hh>
0008 #include <Geant4/G4Material.hh>
0009 #include <Geant4/G4String.hh> // for G4String
0010 #include <Geant4/G4VisAttributes.hh>
0011
0012 #include <utility> // for pair
0013
0014 PHG4TpcEndCapDisplayAction::PHG4TpcEndCapDisplayAction(const std::string &name)
0015 : PHG4DisplayAction(name)
0016 {
0017 }
0018
0019 PHG4TpcEndCapDisplayAction::~PHG4TpcEndCapDisplayAction()
0020 {
0021 for (auto &it : m_VisAttVec)
0022 {
0023 delete it;
0024 }
0025 m_VisAttVec.clear();
0026 }
0027
0028 void PHG4TpcEndCapDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * )
0029 {
0030
0031 for (const auto &it : m_LogicalVolumeMap)
0032 {
0033 G4LogicalVolume *logvol = it.first;
0034 if (logvol->GetVisAttributes())
0035 {
0036 continue;
0037 }
0038
0039 G4VisAttributes *visatt = new G4VisAttributes();
0040 visatt->SetVisibility(true);
0041 visatt->SetForceSolid(true);
0042 m_VisAttVec.push_back(visatt);
0043
0044 if (it.second == "G10" or it.second == "FR4")
0045 {
0046 visatt->SetColour(G4Colour(0.0, .5, 0.0));
0047 }
0048 else if (it.second == "wagon_wheel")
0049 {
0050 visatt->SetColour(G4Colour(.8, 0.0, 0.0));
0051 visatt->SetForceLineSegmentsPerCircle(100);
0052 }
0053 else if (it.second == "cooling_block")
0054 {
0055 visatt->SetColour(G4Colour(.8, .8, .8));
0056 visatt->SetForceLineSegmentsPerCircle(100);
0057 }
0058 else
0059 {
0060 PHG4Utils::SetColour(visatt, it.first->GetMaterial()->GetName());
0061 }
0062 logvol->SetVisAttributes(visatt);
0063 }
0064 return;
0065 }