File indexing completed on 2025-08-06 08:19:25
0001 #include "PHG4MicromegasDisplayAction.h"
0002
0003 #include <g4main/PHG4DisplayAction.h> // for PHG4DisplayAction
0004
0005 #include <Geant4/G4Color.hh>
0006 #include <Geant4/G4LogicalVolume.hh>
0007 #include <Geant4/G4VisAttributes.hh>
0008
0009 #include <iostream> // for operator<<, basic_ostream, endl
0010 #include <string>
0011 #include <utility> // for pair
0012
0013 PHG4MicromegasDisplayAction::PHG4MicromegasDisplayAction(const std::string &name)
0014 : PHG4DisplayAction(name)
0015 {
0016 }
0017
0018 PHG4MicromegasDisplayAction::~PHG4MicromegasDisplayAction()
0019 {
0020 for (auto &it : m_VisAttVec)
0021 {
0022 delete it;
0023 }
0024 m_VisAttVec.clear();
0025 }
0026
0027 void PHG4MicromegasDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * )
0028 {
0029 for (auto it : m_LogicalVolumeMap)
0030 {
0031 G4LogicalVolume *logvol = it.first;
0032 if (logvol->GetVisAttributes())
0033 {
0034 continue;
0035 }
0036 G4VisAttributes *visatt = new G4VisAttributes();
0037 visatt->SetVisibility(true);
0038 visatt->SetForceSolid(true);
0039 m_VisAttVec.push_back(visatt);
0040 if (it.first->GetName().find("invisible") != std::string::npos)
0041 {
0042 visatt->SetColour(it.second);
0043 visatt->SetVisibility(false);
0044 }
0045 else
0046 {
0047 visatt->SetColour(it.second);
0048 }
0049 logvol->SetVisAttributes(visatt);
0050 }
0051 return;
0052 }