Visualization stuff.
53{
54
55
56
57
58
59
60
61 G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
62 if (!pVVisManager) return;
63
64 const G4double markerSize = abs(i_mode)*0.001;
65 G4bool lineRequired (i_mode >= 0);
66 G4bool markersRequired (markerSize > 0.);
67
68 G4Polyline trajectoryLine;
69 G4Polymarker stepPoints;
70 G4Polymarker auxiliaryPoints;
71
72 for (G4int i = 0;
i < GetPointEntries() ;
i++)
73 {
74 G4VTrajectoryPoint* aTrajectoryPoint = GetPoint(i);
75 const std::vector<G4ThreeVector>* auxiliaries
76 = aTrajectoryPoint->GetAuxiliaryPoints();
77 if (auxiliaries)
78 {
79 for (size_t iAux = 0; iAux < auxiliaries->size(); ++iAux)
80 {
81 const G4ThreeVector
pos((*auxiliaries)[iAux]);
82 if (lineRequired)
83 {
84 trajectoryLine.push_back(pos);
85 }
86 if (markersRequired)
87 {
88 auxiliaryPoints.push_back(pos);
89 }
90 }
91 }
92 const G4ThreeVector
pos(aTrajectoryPoint->GetPosition());
93 if (lineRequired)
94 {
95 trajectoryLine.push_back(pos);
96 }
97 if (markersRequired)
98 {
99 stepPoints.push_back(pos);
100 }
101 }
102
103 if (lineRequired)
104 {
106 getVisualizationHelper()->trackVisualizationScheme();
108 const G4double
charge = GetCharge();
109 if (visScheme==1)
110 {
111
112 const G4String pname=GetParticleName();
113 if (pname==
"e+" || pname==
"e-")
colour = G4Colour(1.,1.,0.);
114 else if (pname==
"mu+" || pname==
"mu-")
colour = G4Colour(0.,1.,0.);
115 else if (pname==
"gamma")
colour = G4Colour(0.,0.,1.);
116 else if (pname==
"neutron")
colour = G4Colour(0.,0.,0.);
118 }
119 else if (visScheme==2)
120 {
123 else colour = G4Colour(0.,1.,0.);
124 }
125 else if (visScheme==3)
126 {
127 const G4String pname=GetParticleName();
128 if (pname==
"e+" || pname==
"e-")
colour = G4Colour(1.,1.,0.);
129 else if (pname==
"mu+" || pname==
"mu-")
colour = G4Colour(0.,0.,1.);
130 else if (pname==
"gamma")
colour = G4Colour(60./256.,79./256.,113./256.);
131 else if (pname==
"neutron")
colour = G4Colour(1.,1.,1.);
132 else if (pname=="pi-"|| pname=="pi+")
133 colour = G4Colour(250/256.,128/256.,114/256.);
134 else colour = G4Colour(176/256.,48/256.,96/256.);
135 }
136 G4VisAttributes trajectoryLineAttribs(colour);
137 if(visScheme==1 &&
charge==0)
138 {
139 G4VisAttributes::LineStyle
style=G4VisAttributes::dotted;
140 trajectoryLineAttribs.SetLineStyle(style);
141 }
142 trajectoryLine.SetVisAttributes(&trajectoryLineAttribs);
143 pVVisManager->Draw(trajectoryLine);
144 }
145 if (markersRequired)
146 {
147 auxiliaryPoints.SetMarkerType(G4Polymarker::squares);
148 auxiliaryPoints.SetScreenSize(markerSize);
149 auxiliaryPoints.SetFillStyle(G4VMarker::filled);
150 G4VisAttributes auxiliaryPointsAttribs(G4Colour(0.,1.,1.));
151 auxiliaryPoints.SetVisAttributes(&auxiliaryPointsAttribs);
152 pVVisManager->Draw(auxiliaryPoints);
153
154 stepPoints.SetMarkerType(G4Polymarker::circles);
155 stepPoints.SetScreenSize(markerSize);
156 stepPoints.SetFillStyle(G4VMarker::filled);
157 G4VisAttributes stepPointsAttribs(G4Colour(1.,1.,0.));
158 stepPoints.SetVisAttributes(&stepPointsAttribs);
159 pVVisManager->Draw(stepPoints);
160 }
161}
double charge(const T &p)
static const TruthController * getTruthController()