File indexing completed on 2025-08-05 08:18:13
0001 #include "PHG4MvtxDisplayAction.h"
0002
0003 #include <g4main/PHG4Utils.h>
0004 #include "g4main/PHG4DisplayAction.h" // for PHG4DisplayAction
0005
0006 #include <Geant4/G4LogicalVolume.hh>
0007 #include <Geant4/G4VisAttributes.hh>
0008
0009 #include <utility> // for pair
0010
0011 PHG4MvtxDisplayAction::PHG4MvtxDisplayAction(const std::string &name)
0012 : PHG4DisplayAction(name)
0013 {
0014 }
0015
0016 PHG4MvtxDisplayAction::~PHG4MvtxDisplayAction()
0017 {
0018 for (auto &it : m_VisAttVec)
0019 {
0020 delete it;
0021 }
0022 m_VisAttVec.clear();
0023 }
0024
0025 void PHG4MvtxDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * )
0026 {
0027
0028 for (const auto &it : m_LogicalVolumeMap)
0029 {
0030 G4LogicalVolume *logvol = it.first;
0031 if (logvol->GetVisAttributes())
0032 {
0033 continue;
0034 }
0035 G4VisAttributes *visatt = new G4VisAttributes();
0036 m_VisAttVec.push_back(visatt);
0037 if (it.second == "Carbon")
0038 {
0039 visatt->SetColour(0.5, 0.5, 0.5, .25);
0040 }
0041 else if (it.second == "MVTX_CarbonFiber$")
0042 {
0043 visatt->SetColour(0.4, 0.4, 0.4, 1);
0044 }
0045 else if (it.second == "M60J3K")
0046 {
0047 visatt->SetColour(0.25, 0.25, 0.25, .25);
0048 }
0049 else if (it.second == "WATER" || it.second == "G4_WATER")
0050 {
0051 visatt->SetColour(0.0, 0.5, 0.0, .25);
0052 }
0053 else if (it.second == "SI")
0054 {
0055 PHG4Utils::SetColour(visatt, "G4_Si");
0056 }
0057 else if (it.second == "KAPTON")
0058 {
0059 PHG4Utils::SetColour(visatt, "G4_KAPTON");
0060 }
0061 else if (it.second == "ALUMINUM")
0062 {
0063 PHG4Utils::SetColour(visatt, "G4_Al");
0064 }
0065 else if (it.second == "G4_Cu")
0066 {
0067 PHG4Utils::SetColour(visatt, "G4_Cu");
0068 }
0069 else if (it.second == "G4_POLYETHYLENE")
0070 {
0071 visatt->SetColour(0., 0., 0., 1.);
0072 }
0073 else if (it.second == "red")
0074 {
0075 visatt->SetColour(1., 0., 0., 1.);
0076 }
0077 else if (it.second == "green")
0078 {
0079 visatt->SetColour(0., 1., 0., 1.);
0080 }
0081 else if (it.second == "blue")
0082 {
0083 visatt->SetColour(0., 0., 1., 1.);
0084 }
0085 else if (it.second == "black")
0086 {
0087 visatt->SetColour(0., 0., 0., 1.);
0088 }
0089 else if (it.second == "white")
0090 {
0091 visatt->SetColour(1., 1., 1., 1.);
0092 }
0093 else
0094 {
0095 visatt->SetColour(.2, .2, .7, .25);
0096 }
0097 visatt->SetVisibility(true);
0098 visatt->SetForceSolid(true);
0099 logvol->SetVisAttributes(visatt);
0100 }
0101 return;
0102 }