/
AllSiliconTrackerDisplayAction.cc
83 lines (74 loc) · 2.13 KB
/
AllSiliconTrackerDisplayAction.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "AllSiliconTrackerDisplayAction.h"
#include <g4main/PHG4DisplayAction.h>
#include <g4main/PHG4Utils.h>
#include <Geant4/G4Colour.hh> // for G4Colour
#include <Geant4/G4LogicalVolume.hh>
#include <Geant4/G4Material.hh>
#include <Geant4/G4VisAttributes.hh>
#include <cmath> // for isfinite
using namespace std;
AllSiliconTrackerDisplayAction::AllSiliconTrackerDisplayAction(const std::string &name)
: PHG4DisplayAction(name)
, m_MyVolume(nullptr)
{
}
AllSiliconTrackerDisplayAction::~AllSiliconTrackerDisplayAction()
{
for (auto &it : m_VisAttVec)
{
delete it;
}
m_VisAttVec.clear();
m_LogVolSet.clear();
}
void AllSiliconTrackerDisplayAction::ApplyDisplayAction(G4VPhysicalVolume *physvol)
{
// check if vis attributes exist, if so someone else has set them and we do nothing
for (auto &it : m_LogVolSet)
{
if (it->GetVisAttributes())
{
continue;
}
// cout << "mat: " << it->GetMaterial()->GetName() << endl;
G4VisAttributes *VisAtt = new G4VisAttributes();
m_VisAttVec.push_back(VisAtt);
VisAtt->SetVisibility(true);
VisAtt->SetForceSolid(true);
if (it->GetMaterial()->GetName().find("air") != string::npos)
{
VisAtt->SetVisibility(false);
VisAtt->SetForceSolid(false);
}
else if (it->GetMaterial()->GetName().find("CarbonFiber") != string::npos)
{
VisAtt->SetColour(G4Colour::Grey());
}
else if (it->GetMaterial()->GetName().find("Kapton") != string::npos)
{
VisAtt->SetColour(G4Colour::Green());
}
else if (it->GetMaterial()->GetName().find("water") != string::npos)
{
VisAtt->SetColour(G4Colour::Blue());
}
else if (it->GetMaterial()->GetName().find("silicon") != string::npos)
{
VisAtt->SetColour(G4Colour::Cyan());
}
else if (it->GetMaterial()->GetName().find("aluminum") != string::npos)
{
VisAtt->SetColour(G4Colour::Yellow());
}
else if (it->GetMaterial()->GetName().find("beryllium") != string::npos)
{
VisAtt->SetColour(G4Colour::Red());
}
else
{
VisAtt->SetColour(G4Colour::Red());
}
it->SetVisAttributes(VisAtt);
}
return;
}