Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:17

0001 #include "PHG4TpcEndCapDisplayAction.h"
0002 
0003 #include <g4main/PHG4DisplayAction.h>  // for PHG4DisplayAction
0004 #include <g4main/PHG4Utils.h>
0005 
0006 #include <Geant4/G4Colour.hh>
0007 #include <Geant4/G4LogicalVolume.hh>
0008 #include <Geant4/G4Material.hh>
0009 #include <Geant4/G4String.hh>  // for G4String
0010 #include <Geant4/G4VisAttributes.hh>
0011 
0012 #include <utility>  // for pair
0013 
0014 PHG4TpcEndCapDisplayAction::PHG4TpcEndCapDisplayAction(const std::string &name)
0015   : PHG4DisplayAction(name)
0016 {
0017 }
0018 
0019 PHG4TpcEndCapDisplayAction::~PHG4TpcEndCapDisplayAction()
0020 {
0021   for (auto &it : m_VisAttVec)
0022   {
0023     delete it;
0024   }
0025   m_VisAttVec.clear();
0026 }
0027 
0028 void PHG4TpcEndCapDisplayAction::ApplyDisplayAction(G4VPhysicalVolume * /*physvol*/)
0029 {
0030   // check if vis attributes exist, if so someone else has set them and we do nothing
0031   for (const auto &it : m_LogicalVolumeMap)
0032   {
0033     G4LogicalVolume *logvol = it.first;
0034     if (logvol->GetVisAttributes())
0035     {
0036       continue;
0037     }
0038 
0039     G4VisAttributes *visatt = new G4VisAttributes();
0040     visatt->SetVisibility(true);
0041     visatt->SetForceSolid(true);
0042     m_VisAttVec.push_back(visatt);  // for later deletion
0043                                     // cppcheck-suppress internalAstError
0044     if (it.second == "G10" or it.second == "FR4")
0045     {
0046       visatt->SetColour(G4Colour(0.0, .5, 0.0));
0047     }
0048     else if (it.second == "wagon_wheel")
0049     {
0050       visatt->SetColour(G4Colour(.8, 0.0, 0.0));
0051       visatt->SetForceLineSegmentsPerCircle(100);
0052     }
0053     else if (it.second == "cooling_block")
0054     {
0055       visatt->SetColour(G4Colour(.8, .8, .8));
0056       visatt->SetForceLineSegmentsPerCircle(100);
0057     }
0058     else
0059     {
0060       PHG4Utils::SetColour(visatt, it.first->GetMaterial()->GetName());
0061     }
0062     logvol->SetVisAttributes(visatt);
0063   }
0064   return;
0065 }