Back to home page

sPhenix code displayed by LXR

 
 

    


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 * /*physvol*/)
0030 {
0031   // check if vis attributes exist, if so someone else has set them and we do nothing
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 }