ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
DMXSteppingAction.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file DMXSteppingAction.cc
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// --------------------------------------------------------------
28
// GEANT 4 - Underground Dark Matter Detector Advanced Example
29
//
30
// For information related to this code contact: Alex Howard
31
// e-mail: alexander.howard@cern.ch
32
// --------------------------------------------------------------
33
// Comments
34
//
35
// Underground Advanced
36
// by A. Howard and H. Araujo
37
// (27th November 2001)
38
//
39
// History:
40
// 21 Feb 2002 AH: Added Analysis
41
//
42
// SteppingAction program
43
// --------------------------------------------------------------
44
45
#include "
DMXSteppingAction.hh
"
46
#include "
DMXSteppingActionMessenger.hh
"
47
48
#include "
DMXEventAction.hh
"
49
#include "
DMXAnalysisManager.hh
"
50
51
#include "
G4RunManager.hh
"
52
#include "
G4Track.hh
"
53
#include "
G4Step.hh
"
54
#include "
G4StepPoint.hh
"
55
#include "
G4TrackStatus.hh
"
56
#include "
G4ParticleDefinition.hh
"
57
#include "
G4ParticleTypes.hh
"
58
#include "
G4VVisManager.hh
"
59
#include "
G4Colour.hh
"
60
#include "
G4Polyline.hh
"
61
#include "
G4VisAttributes.hh
"
62
#include "
globals.hh
"
63
#include "
G4ios.hh
"
64
65
66
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
67
68
DMXSteppingAction::DMXSteppingAction
()
69
: evtAction(0) {
70
71
steppingMessenger
=
new
DMXSteppingActionMessenger
(
this
);
72
73
// defaults for messenger
74
colourNeutronFlag
=
"magenta"
;
75
colourGammaFlag
=
"cyan"
;
76
colourOpticalFlag
=
"white"
;
77
colourChargedPlusFlag
=
"red"
;
78
colourChargedMinusFlag
=
"blue"
;
79
80
}
81
82
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
83
84
DMXSteppingAction::~DMXSteppingAction
()
85
{
86
87
delete
steppingMessenger
;
88
89
}
90
91
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
92
93
void
DMXSteppingAction::UserSteppingAction
(
const
G4Step
* fStep)
94
{
95
if
(!
evtAction
)
96
evtAction
=
97
dynamic_cast<
const
DMXEventAction
*
>
98
(
G4RunManager::GetRunManager
()->
GetUserEventAction
());
99
100
101
// removed 28/11/01 - unnecessary unless program "freezes"
102
// kill track if too many steps
103
// NB: This is set to DBL_MAX - therefore may cause program to "hang"
104
// G4int MaxNoSteps = DBL_MAX;
105
// G4int StepNo = fStep->GetTrack()->GetCurrentStepNumber();
106
// if(StepNo >= MaxNoSteps) fStep->GetTrack()->SetTrackStatus(fStopAndKill);
107
108
G4int
StepNo = fStep->
GetTrack
()->
GetCurrentStepNumber
();
109
if
(StepNo == 1)
110
{
111
G4double
partEnergy = fStep->
GetPreStepPoint
()->
GetKineticEnergy
();
112
G4ParticleDefinition
* particleType = fStep->
GetTrack
()->
GetDefinition
();
113
114
G4AnalysisManager
* man =
G4AnalysisManager::Instance
();
115
if
(particleType ==
G4Gamma::Definition
())
116
man->
FillH1
(8,partEnergy);
117
else
if
(particleType ==
G4Neutron::Definition
())
118
man->
FillH1
(9,partEnergy);
119
else
if
(particleType ==
G4Electron::Definition
())
120
man->
FillH1
(10,partEnergy);
121
else
if
(particleType ==
G4Positron::Definition
())
122
man->
FillH1
(11,partEnergy);
123
else
124
man->
FillH1
(12,partEnergy);
125
}
126
127
128
// check what is to be drawn from EventAction/EventActionMessenger
129
G4String
drawColsFlag =
evtAction
->
GetDrawColsFlag
();
130
G4String
drawTrksFlag =
evtAction
->
GetDrawTrksFlag
();
131
132
// draw by step (here) instead of by event (event action)
133
if
(drawColsFlag==
"custom"
&& drawTrksFlag!=
"none"
) {
134
135
// check that VisManager exists
136
G4VVisManager
* pVVisManager =
G4VVisManager::GetConcreteInstance
();
137
if
(pVVisManager) {
138
139
// particle colour in a string
140
G4String
name
= fStep->
GetTrack
()->
GetDefinition
()->
GetParticleName
();
141
G4String
strColour;
142
if
(name==
"neutron"
) {
143
if
(drawTrksFlag==
"charged"
)
return
;
144
strColour =
colourNeutronFlag
;
145
}
else
if
(name==
"gamma"
) {
146
if
(drawTrksFlag==
"charged"
)
return
;
147
strColour =
colourGammaFlag
;
148
}
else
if
(name==
"opticalphoton"
) {
149
if
(drawTrksFlag!=
"all"
)
return
;
150
strColour =
colourOpticalFlag
;
151
}
152
else
if
(name==
"alpha"
|| name==
"e+"
)
153
strColour =
colourChargedPlusFlag
;
154
else
155
strColour =
colourChargedMinusFlag
;
156
157
// convert string to G4Colour
158
G4Colour
colour;
159
if
(strColour==
"white"
) colour=
G4Colour
(1.0, 1.0, 1.0);
160
else
if
(strColour==
"grey"
) colour=
G4Colour
(0.5, 0.5, 0.5);
161
else
if
(strColour==
"lgrey"
) colour=
G4Colour
(.75, .75, .75);
162
else
if
(strColour==
"black"
) colour=
G4Colour
(0.0, 0.0, 0.0);
163
else
if
(strColour==
"red"
) colour=
G4Colour
(1.0, 0.0, 0.0);
164
else
if
(strColour==
"green"
) colour=
G4Colour
(0.0, 1.0, 0.0);
165
else
if
(strColour==
"blue"
) colour=
G4Colour
(0.0, 0.0, 1.0);
166
else
if
(strColour==
"cyan"
) colour=
G4Colour
(0.0, 1.0, 1.0);
167
else
if
(strColour==
"magenta"
) colour=
G4Colour
(1.0, 0.0, 1.0);
168
else
if
(strColour==
"yellow"
) colour=
G4Colour
(1.0, 1.0, 0.0);
169
else
if
(strColour==
"lgreen"
) colour=
G4Colour
(0.0, .75, 0.0);
170
else
if
(strColour==
"lblue"
) colour=
G4Colour
(0.0, 0.0, .75);
171
else
colour=
G4Colour
(1.0, 1.0, 1.0);
172
173
// create line with colour
174
G4VisAttributes
attribs(colour);
175
G4Polyline
polyline;
176
polyline.
SetVisAttributes
(attribs);
177
178
// draw line
179
G4Point3D
start
(fStep->
GetPreStepPoint
()->
GetPosition
());
180
G4Point3D
end(fStep->
GetPostStepPoint
()->
GetPosition
());
181
polyline.push_back(
start
);
182
polyline.push_back(end);
183
pVVisManager->
Draw
(polyline);
184
}
185
186
}
187
188
}
189
190
geant4
tree
geant4-10.6-release
examples
advanced
underground_physics
src
DMXSteppingAction.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:01
using
1.8.2 with
ECCE GitHub integration