File indexing completed on 2025-08-05 08:17:42
0001 #include "PHG4BlockDisplayAction.h"
0002
0003 #include <g4main/PHG4DisplayAction.h>
0004 #include <g4main/PHG4Utils.h>
0005
0006 #include <phparameter/PHParameters.h>
0007
0008 #include <Geant4/G4Colour.hh> // for G4Colour
0009 #include <Geant4/G4LogicalVolume.hh>
0010 #include <Geant4/G4VisAttributes.hh>
0011
0012 #include <cmath> // for isfinite
0013
0014 PHG4BlockDisplayAction::PHG4BlockDisplayAction(const std::string &name, PHParameters *pars)
0015 : PHG4DisplayAction(name)
0016 , m_Params(pars)
0017 , m_MyVolume(nullptr)
0018 , m_VisAtt(nullptr)
0019 , m_Colour(nullptr)
0020 {
0021 }
0022
0023 PHG4BlockDisplayAction::~PHG4BlockDisplayAction()
0024 {
0025 delete m_VisAtt;
0026 delete m_Colour;
0027 }
0028
0029 void PHG4BlockDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * )
0030 {
0031
0032 if (m_MyVolume->GetVisAttributes())
0033 {
0034 return;
0035 }
0036 m_VisAtt = new G4VisAttributes();
0037 if (m_Params->get_int_param("blackhole"))
0038 {
0039 PHG4Utils::SetColour(m_VisAtt, "BlackHole");
0040 m_VisAtt->SetVisibility(false);
0041 m_VisAtt->SetForceSolid(false);
0042 }
0043 else
0044 {
0045 PHG4Utils::SetColour(m_VisAtt, m_Params->get_string_param("material"));
0046 m_VisAtt->SetVisibility(true);
0047 m_VisAtt->SetForceSolid(true);
0048 }
0049 if (m_Colour)
0050 {
0051 m_VisAtt->SetColour(m_Colour->GetRed(),
0052 m_Colour->GetGreen(),
0053 m_Colour->GetBlue(),
0054 m_Colour->GetAlpha());
0055 m_VisAtt->SetVisibility(true);
0056 m_VisAtt->SetForceSolid(true);
0057 }
0058 m_MyVolume->SetVisAttributes(m_VisAtt);
0059 return;
0060 }
0061
0062 void PHG4BlockDisplayAction::SetColor(const double red, const double green, const double blue, const double alpha)
0063 {
0064 if (std::isfinite(red) && std::isfinite(green) && std::isfinite(blue) && std::isfinite(alpha))
0065 {
0066 m_Colour = new G4Colour(red, green, blue, alpha);
0067 }
0068 return;
0069 }