Back to home page

sPhenix code displayed by LXR

 
 

    


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 * /*physvol*/)
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   // drawing 200 segments per circle makes it look smoother than default
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 }