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
G4AdjointSteppingAction.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4AdjointSteppingAction.hh
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
//
28
// Class Name: G4AdjointSteppingAction
29
// Author: L. Desorgher
30
// Contract: ESA contract 21435/08/NL/AT
31
// Organisation: SpaceIT GmbH
32
// Customer: ESA/ESTEC
34
//
35
// CHANGE HISTORY
36
// --------------
37
// ChangeHistory:
38
// -15/01/2007 Creation by L. Desorgher
39
// -01/11/2009 Some cleaning and adding of documentation for the first Release in the Geant4 toolkit, L. Desorgher
40
// -04/11/2009 Adding the possibility to use user stepping action, L. Desorgher
41
// -20/11/2009 Correct the stop of adjoint particles tracking when it reenters the adjoint source.
42
//
43
//
44
//-------------------------------------------------------------
45
// Documentation:
46
// Stepping action used in the adjoint simulation.
47
// It is responsible to stop the adjoint tracking phase when:
48
// -a)The adjoint track reaches the external surface.
49
// -b)The being tracked adjoint dynamic particle get an energy higher than the maximum energy of the external source.
50
// -c)The adjoint track enters the volume delimited by the adjoint source.
51
// In the case a) the info (energy,weight,...) of the adjoint dynamic particle associated to the track
52
// when crossing the external source is registered and in the next event a forward primary is generated. In the other cases b) and c)
53
// The next generated fwd particle is killed before being tracked and the next tracking of an adjoint particle is started directly.
54
//
55
56
#ifndef G4AdjointSteppingAction_h
57
#define G4AdjointSteppingAction_h 1
58
59
#include "
G4UserSteppingAction.hh
"
60
#include "
globals.hh
"
61
#include "
G4ThreeVector.hh
"
62
63
class
G4AdjointCrossSurfChecker
;
64
class
G4ParticleDefinition
;
65
66
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
67
68
class
G4AdjointSteppingAction
:
public
G4UserSteppingAction
69
{
70
public
:
71
G4AdjointSteppingAction
();
72
~G4AdjointSteppingAction
();
73
74
void
UserSteppingAction
(
const
G4Step
*);
75
76
inline
void
SetExtSourceEMax
(
G4double
Emax
){
ext_sourceEMax
=
Emax
;}
77
inline
void
SetStartEvent
(
G4bool
aBool){
start_event
=aBool;}
78
inline
G4bool
GetDidAdjParticleReachTheExtSource
(){
return
did_adj_part_reach_ext_source
;}
79
inline
G4ThreeVector
GetLastMomentum
(){
return
last_momentum
;}
80
inline
G4ThreeVector
GetLastPosition
(){
return
last_pos
;}
81
inline
G4double
GetLastEkin
(){
return
last_ekin
;}
82
inline
G4double
GetLastWeight
(){
return
last_weight
;}
83
inline
void
SetPrimWeight
(
G4double
weight
){
prim_weight
=
weight
;}
84
inline
G4ParticleDefinition
*
GetLastPartDef
(){
return
last_part_def
;}
85
inline
void
SetUserAdjointSteppingAction
(
G4UserSteppingAction
* anAction) {
86
theUserAdjointSteppingAction
= anAction;}
87
inline
void
SetUserForwardSteppingAction
(
G4UserSteppingAction
* anAction) {
88
theUserFwdSteppingAction
= anAction;}
89
inline
void
SetAdjointTrackingMode
(
G4bool
aBool){
is_adjoint_tracking_mode
=aBool;}
90
inline
void
ResetDidOneAdjPartReachExtSourceDuringEvent
()
91
{
did_one_adj_part_reach_ext_source_during_event
=
false
;}
92
inline
void
SetAdjointGeantinoTrackingMode
(
G4bool
aBool){
is_adjoint_geantino_tracking_mode
=aBool;}
93
private
:
94
95
G4double
ext_sourceEMax
;
96
G4AdjointCrossSurfChecker
*
theG4AdjointCrossSurfChecker
;
97
G4bool
start_event
;
98
99
G4bool
did_adj_part_reach_ext_source
;
100
G4bool
did_one_adj_part_reach_ext_source_during_event
;
101
G4ThreeVector
last_momentum
,
last_pos
;
102
G4double
last_ekin
;
103
G4double
last_weight
;
104
G4double
prim_weight
;
105
G4ParticleDefinition
*
last_part_def
;
106
G4UserSteppingAction
*
theUserAdjointSteppingAction
;
107
G4UserSteppingAction
*
theUserFwdSteppingAction
;
108
G4bool
is_adjoint_tracking_mode
;
109
G4bool
is_adjoint_geantino_tracking_mode
;
110
111
112
};
113
#endif
114
geant4
tree
geant4-10.6-release
source
tracking
include
G4AdjointSteppingAction.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:53
using
1.8.2 with
ECCE GitHub integration