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
PurgMagSteppingAction.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PurgMagSteppingAction.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
// Code developed by:
27
// S.Larsson
28
//
29
// ***********************************
30
// * *
31
// * PurgMagSteppingAction.cc *
32
// * *
33
// ***********************************
34
//
35
//
36
37
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
38
39
#include "
PurgMagSteppingAction.hh
"
40
#include "
PurgMagRunAction.hh
"
41
#include "
PurgMagDetectorConstruction.hh
"
42
43
#include "
G4SteppingManager.hh
"
44
#include "
G4Electron.hh
"
45
#include "
G4Gamma.hh
"
46
#include "
G4Positron.hh
"
47
#include "
G4VTouchable.hh
"
48
#include "
G4VPhysicalVolume.hh
"
49
50
#include "
PurgMagAnalysisManager.hh
"
51
#include "
G4SystemOfUnits.hh
"
52
53
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
54
55
PurgMagSteppingAction::PurgMagSteppingAction
(
const
56
PurgMagDetectorConstruction
* det)
57
:Detector(det)
58
{ }
59
60
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
61
62
PurgMagSteppingAction::~PurgMagSteppingAction
()
63
{ }
64
65
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
66
67
void
PurgMagSteppingAction::UserSteppingAction
(
const
G4Step
* aStep)
68
69
{
70
G4AnalysisManager
* man =
G4AnalysisManager::Instance
();
71
72
//Collection at SSD in N-tuples. Electrons and photons separated
73
//Prestep point in World, next volume MeasureVolume, process transportation
74
if
((aStep->
GetPreStepPoint
()->
GetPhysicalVolume
() ==
Detector
->
GetWorld
())&&
75
(aStep->
GetTrack
()->
GetNextVolume
() ==
Detector
->
GetMeasureVolume
())&&
76
//(aStep->GetTrack()->GetMomentumDirection().z()>0.)&& // only particles with positive momentum
77
(aStep->
GetPostStepPoint
()->
GetProcessDefinedStep
()->
GetProcessName
() ==
"Transportation"
))
78
{
79
G4double
gx, gy, gz, ge, gpx, gpy, gpz, ex, ey, ez, ee;
80
G4double
epx, epy, epz, px, py, pz, pe, ppx, ppy, ppz;
81
82
// Electrons
83
if
(aStep->
GetTrack
()->
GetDynamicParticle
()->
GetDefinition
()
84
==
G4Electron::Definition
())
85
{
//Position
86
ex = (aStep->
GetTrack
()->
GetPosition
().
x
())/
cm
;
87
ey = (aStep->
GetTrack
()->
GetPosition
().
y
())/
cm
;
88
ez = (aStep->
GetTrack
()->
GetPosition
().
z
())/
cm
;
89
// Energy
90
ee = (aStep->
GetTrack
()->
GetKineticEnergy
())/
MeV
;
91
// Momentum
92
epx = aStep->
GetTrack
()->
GetMomentum
().
x
();
93
epy = aStep->
GetTrack
()->
GetMomentum
().
y
();
94
epz = aStep->
GetTrack
()->
GetMomentum
().
z
();
95
96
// Fill N-tuple electrons ( id = 1)
97
man->
FillNtupleDColumn
(1,0, ex);
98
man->
FillNtupleDColumn
(1,1, ey);
99
man->
FillNtupleDColumn
(1,2, ez);
100
man->
FillNtupleDColumn
(1,3, ee);
101
man->
FillNtupleDColumn
(1,4, epx);
102
man->
FillNtupleDColumn
(1,5, epy);
103
man->
FillNtupleDColumn
(1,6, epz);
104
man->
AddNtupleRow
(1);
105
}
106
107
// Photons
108
if
(aStep->
GetTrack
()->
GetDynamicParticle
()->
GetDefinition
() ==
109
G4Gamma::Definition
())
110
{
111
112
// Position
113
gx = (aStep->
GetTrack
()->
GetPosition
().
x
())/
cm
;
114
gy = (aStep->
GetTrack
()->
GetPosition
().
y
())/
cm
;
115
gz = (aStep->
GetTrack
()->
GetPosition
().
z
())/
cm
;
116
117
// Energy
118
ge = (aStep->
GetTrack
()->
GetKineticEnergy
())/
MeV
;
119
120
// Momentum
121
gpx = aStep->
GetTrack
()->
GetMomentum
().
x
();
122
gpy = aStep->
GetTrack
()->
GetMomentum
().
y
();
123
gpz = aStep->
GetTrack
()->
GetMomentum
().
z
();
124
125
// Fill N-tuple photons (id=2)
126
man->
FillNtupleDColumn
(2,0, gx);
127
man->
FillNtupleDColumn
(2,1, gy);
128
man->
FillNtupleDColumn
(2,2, gz);
129
man->
FillNtupleDColumn
(2,3, ge);
130
man->
FillNtupleDColumn
(2,4, gpx);
131
man->
FillNtupleDColumn
(2,5, gpy);
132
man->
FillNtupleDColumn
(2,6, gpz);
133
man->
AddNtupleRow
(2);
134
}
135
136
137
// Positrons
138
if
(aStep->
GetTrack
()->
GetDynamicParticle
()->
GetDefinition
() ==
139
G4Positron::Definition
())
140
{
141
142
// Position
143
px = (aStep->
GetTrack
()->
GetPosition
().
x
())/
cm
;
144
py = (aStep->
GetTrack
()->
GetPosition
().
y
())/
cm
;
145
pz = (aStep->
GetTrack
()->
GetPosition
().
z
())/
cm
;
146
147
// Energy
148
pe = (aStep->
GetTrack
()->
GetKineticEnergy
())/
MeV
;
149
150
// Momentum
151
ppx = aStep->
GetTrack
()->
GetMomentum
().
x
();
152
ppy = aStep->
GetTrack
()->
GetMomentum
().
y
();
153
ppz = aStep->
GetTrack
()->
GetMomentum
().
z
();
154
155
// Fill Ntuple positrons ( id = 3)
156
man->
FillNtupleDColumn
(3,0, px);
157
man->
FillNtupleDColumn
(3,1, py);
158
man->
FillNtupleDColumn
(3,2, pz);
159
man->
FillNtupleDColumn
(3,3, pe);
160
man->
FillNtupleDColumn
(3,4, ppx);
161
man->
FillNtupleDColumn
(3,5, ppy);
162
man->
FillNtupleDColumn
(3,6, ppz);
163
man->
AddNtupleRow
(3);
164
}
165
}
166
}
167
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
geant4
tree
geant4-10.6-release
examples
advanced
purging_magnet
src
PurgMagSteppingAction.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:00
using
1.8.2 with
ECCE GitHub integration