File indexing completed on 2025-08-06 08:18:55
0001 #include "PHG4ConeDisplayAction.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 #include <string>
0014
0015 class G4VPhysicalVolume;
0016
0017 PHG4ConeDisplayAction::PHG4ConeDisplayAction(const std::string &name, PHParameters *pars)
0018 : PHG4DisplayAction(name)
0019 , m_Params(pars)
0020 , m_MyVolume(nullptr)
0021 , m_VisAtt(nullptr)
0022 , m_Colour(nullptr)
0023 {
0024 }
0025
0026 PHG4ConeDisplayAction::~PHG4ConeDisplayAction()
0027 {
0028 delete m_VisAtt;
0029 delete m_Colour;
0030 }
0031
0032 void PHG4ConeDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * )
0033 {
0034 if (m_MyVolume->GetVisAttributes())
0035 {
0036 return;
0037 }
0038 m_VisAtt = new G4VisAttributes();
0039 if (m_Params->get_int_param("blackhole"))
0040 {
0041 PHG4Utils::SetColour(m_VisAtt, "BlackHole");
0042 m_VisAtt->SetVisibility(false);
0043 m_VisAtt->SetForceSolid(false);
0044 }
0045 else
0046 {
0047 PHG4Utils::SetColour(m_VisAtt, m_Params->get_string_param("material"));
0048 m_VisAtt->SetVisibility(true);
0049 m_VisAtt->SetForceSolid(true);
0050 }
0051 if (m_Colour)
0052 {
0053 m_VisAtt->SetColour(m_Colour->GetRed(),
0054 m_Colour->GetGreen(),
0055 m_Colour->GetBlue(),
0056 m_Colour->GetAlpha());
0057 m_VisAtt->SetVisibility(true);
0058 m_VisAtt->SetForceSolid(true);
0059 }
0060
0061 m_VisAtt->SetForceLineSegmentsPerCircle(200);
0062 m_MyVolume->SetVisAttributes(m_VisAtt);
0063 return;
0064 }
0065
0066 void PHG4ConeDisplayAction::SetColor(const double red, const double green, const double blue, const double alpha)
0067 {
0068 if (std::isfinite(red) && std::isfinite(green) && std::isfinite(blue) && std::isfinite(alpha))
0069 {
0070 m_Colour = new G4Colour(red, green, blue, alpha);
0071 }
0072 return;
0073 }