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
G4ImportanceProcess.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4ImportanceProcess.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
//
27
//
28
// ----------------------------------------------------------------------
29
// Class G4ImportanceProcess
30
//
31
// Class description:
32
//
33
// Used internally by importance sampling in the "mass" geometry.
34
// This process is a forced post step process. I will apply
35
// importance sampling if the particle crosses a boundary in the
36
// "mass" geometry.
37
38
// Author: Michael Dressel (Michael.Dressel@cern.ch)
39
// ----------------------------------------------------------------------
40
#ifndef G4ImportanceProcess_hh
41
#define G4ImportanceProcess_hh G4ImportanceProcess_hh
42
43
#include "
G4VProcess.hh
"
44
#include "
G4VTrackTerminator.hh
"
45
46
class
G4SamplingPostStepAction
;
47
class
G4VImportanceAlgorithm
;
48
class
G4VIStore
;
49
50
class
G4Step
;
51
class
G4Navigator
;
52
class
G4TransportationManager
;
53
class
G4PathFinder
;
54
class
G4VTouchable
;
55
56
#include "
G4FieldTrack.hh
"
57
#include "
G4TouchableHandle.hh
"
58
#include "
G4MultiNavigator.hh
"
// For ELimited enum
59
60
class
G4ImportanceProcess
:
public
G4VProcess
,
public
G4VTrackTerminator
61
{
62
63
public
:
// with description
64
65
G4ImportanceProcess
(
const
G4VImportanceAlgorithm
&aImportanceAlgorithm,
66
const
G4VIStore
&aIstore,
67
const
G4VTrackTerminator
*TrackTerminator,
68
const
G4String
&aName =
"ImportanceProcess"
,
G4bool
para =
false
);
69
// creates a G4ParticleChange
70
71
virtual
~G4ImportanceProcess
();
72
// delete the G4ParticleChange
73
74
75
//--------------------------------------------------------------
76
// Set Parallel World
77
//--------------------------------------------------------------
78
79
void
SetParallelWorld
(
const
G4String
¶llelWorldName);
80
// void SetParallelWorld(const G4VPhysicalVolume* parallelWorld);
81
82
//--------------------------------------------------------------
83
// Process interface
84
//--------------------------------------------------------------
85
86
void
StartTracking
(
G4Track
*);
87
88
89
virtual
G4double
90
PostStepGetPhysicalInteractionLength
(
const
G4Track
& aTrack,
91
G4double
previousStepSize,
92
G4ForceCondition
*
condition
);
93
// make process beeing forced
94
virtual
G4VParticleChange
*
PostStepDoIt
(
const
G4Track
&,
const
G4Step
&);
95
// manage the importance sampling in the "mass" geometry
96
97
virtual
void
KillTrack
()
const
;
98
// used in case no scoring process follows that does the killing
99
100
virtual
const
G4String
&
GetName
()
const
;
101
102
103
public
:
// without description
104
105
// no operation in AtRestDoIt and AlongStepDoIt
106
107
virtual
G4double
108
AlongStepGetPhysicalInteractionLength
(
const
G4Track
&,
109
G4double
,
110
G4double
,
111
G4double
& ,
112
G4GPILSelection
*);
113
virtual
G4double
114
AtRestGetPhysicalInteractionLength
(
const
G4Track
& ,
115
G4ForceCondition
*);
116
117
virtual
G4VParticleChange
*
118
AtRestDoIt
(
const
G4Track
&,
const
G4Step
&);
119
120
121
virtual
G4VParticleChange
*
122
AlongStepDoIt
(
const
G4Track
&,
const
G4Step
&);
123
124
private
:
125
126
G4ImportanceProcess
(
const
G4ImportanceProcess
&);
127
G4ImportanceProcess
&
operator=
(
const
G4ImportanceProcess
&);
128
129
private
:
130
131
void
CopyStep
(
const
G4Step
&
step
);
132
133
G4Step
*
fGhostStep
;
134
G4StepPoint
*
fGhostPreStepPoint
;
135
G4StepPoint
*
fGhostPostStepPoint
;
136
137
G4ParticleChange
*
fParticleChange
;
138
const
G4VImportanceAlgorithm
&
fImportanceAlgorithm
;
139
const
G4VIStore
&
fIStore
;
140
G4SamplingPostStepAction
*
fPostStepAction
;
141
142
G4TransportationManager
*
fTransportationManager
;
143
G4PathFinder
*
fPathFinder
;
144
145
// -------------------------------
146
// Navigation in the Ghost World:
147
// -------------------------------
148
G4String
fGhostWorldName
;
149
G4VPhysicalVolume
*
fGhostWorld
;
150
G4Navigator
*
fGhostNavigator
;
151
G4int
fNavigatorID
;
152
G4TouchableHandle
fOldGhostTouchable
;
153
G4TouchableHandle
fNewGhostTouchable
;
154
G4FieldTrack
fFieldTrack
;
155
G4double
fGhostSafety
;
156
G4bool
fOnBoundary
;
157
158
G4bool
fParaflag
;
159
G4FieldTrack
fEndTrack
;
160
ELimited
feLimited
;
161
162
};
163
164
#endif
geant4
tree
geant4-10.6-release
source
processes
biasing
importance
include
G4ImportanceProcess.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration