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