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
G4Radioactivation.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4Radioactivation.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
#ifndef G4Radioactivation_h
27
#define G4Radioactivation_h 1
28
29
#include "
G4RadioactiveDecayBase.hh
"
30
31
#include <vector>
32
#include <map>
33
#include <
CLHEP/Units/SystemOfUnits.h
>
34
35
#include "
G4ios.hh
"
36
#include "
globals.hh
"
37
#include "
G4VRestDiscreteProcess.hh
"
38
#include "
G4ParticleChangeForRadDecay.hh
"
39
40
#include "
G4NucleusLimits.hh
"
41
#include "
G4RadioactiveDecayRatesToDaughter.hh
"
42
#include "
G4RadioactiveDecayChainsFromParent.hh
"
43
#include "
G4RadioactivityTable.hh
"
44
#include "
G4ThreeVector.hh
"
45
#include "
G4Threading.hh
"
46
47
class
G4Fragment
;
48
class
G4RadioactivationMessenger
;
49
50
typedef
std::vector<G4RadioactiveDecayChainsFromParent>
G4RadioactiveDecayParentChainTable
;
51
typedef
std::vector<G4RadioactiveDecayRatesToDaughter>
G4RadioactiveDecayRates
;
52
typedef
std::map<G4String, G4DecayTable*>
DecayTableMap
;
53
54
55
class
G4Radioactivation
:
public
G4RadioactiveDecayBase
56
{
57
public
:
// with description
58
59
G4Radioactivation
(
const
G4String
& processName=
"Radioactivation"
);
60
~G4Radioactivation
();
61
62
virtual
void
ProcessDescription
(std::ostream& outFile)
const
;
63
64
// Return decay table if it exists, if not, load it from file
65
G4DecayTable
*
GetDecayTable1
(
const
G4ParticleDefinition
*);
66
67
// Set the decay biasing scheme using the data in "filename"
68
void
SetDecayBias
(
G4String
filename
);
69
70
// Set the half-life threshold for isomer production
71
void
SetHLThreshold
(
G4double
hl) {
halflifethreshold
= hl;}
72
73
void
SetSourceTimeProfile
(
G4String
filename);
74
// Set source exposure function using histograms in "filename"
75
76
G4bool
IsRateTableReady
(
const
G4ParticleDefinition
&);
77
// Returns true if the coefficient and decay time table for all the
78
// descendants of the specified isotope are ready.
79
// used in VR decay mode only
80
81
void
CalculateChainsFromParent
(
const
G4ParticleDefinition
&);
82
// Calculates the coefficient and decay time table for all the descendents
83
// of the specified isotope. Adds the calculated table to the private data
84
// member "theParentChainTable".
85
// used in VR decay mode only
86
87
void
GetChainsFromParent
(
const
G4ParticleDefinition
&);
88
// Used to retrieve the coefficient and decay time table for all the
89
// descendants of the specified isotope from "theParentChainTable"
90
// and place it in "chainsFromParent".
91
// used in VR decay mode only
92
93
void
SetDecayRate
(
G4int
,
G4int
,
G4double
,
G4int
, std::vector<G4double>,
94
std::vector<G4double>);
95
// Sets "theDecayRate" with data supplied in the arguements.
96
// used in VR decay mode only
97
98
std::vector<G4RadioactivityTable*>
GetTheRadioactivityTables
()
99
{
return
theRadioactivityTables
;}
100
// Return vector of G4Radioactivity map - should be used in VR mode only
101
102
103
// Controls whether G4Radioactivation runs in analogue mode or
104
// variance reduction mode. SetBRBias, SetSplitNuclei and
105
// SetSourceTimeProfile all turn off analogue mode and use VR mode
106
inline
void
SetAnalogueMonteCarlo
(
G4bool
r
) {
107
AnalogueMC
=
r
;
108
if
(!
AnalogueMC
)
halflifethreshold
= 1
e
-6*
CLHEP::s
;
109
}
110
111
// Returns true if the simulation is an analogue Monte Carlo, and false if
112
// any of the biassing schemes have been selected.
113
inline
G4bool
IsAnalogueMonteCarlo
() {
return
AnalogueMC
;}
114
115
// Sets whether branching ration bias scheme applies.
116
inline
void
SetBRBias
(
G4bool
r
) {
117
BRBias
=
r
;
118
AnalogueMC
=
false
;
119
}
120
121
// Sets the number of times a nucleus will decay when biased
122
inline
void
SetSplitNuclei
(
G4int
r
) {
123
NSplit
=
r
;
124
AnalogueMC
=
false
;
125
}
126
127
// Returns the nuclear splitting number
128
inline
G4int
GetSplitNuclei
() {
return
NSplit
;}
129
130
G4VParticleChange
*
DecayIt
(
const
G4Track
& theTrack,
131
const
G4Step
& theStep);
132
133
protected
:
134
135
G4double
ConvolveSourceTimeProfile
(
const
G4double
,
const
G4double
);
136
G4double
GetDecayTime
();
137
G4int
GetDecayTimeBin
(
const
G4double
aDecayTime);
138
139
G4double
GetMeanLifeTime
(
const
G4Track
& theTrack,
140
G4ForceCondition
*
condition
);
141
142
//Add gamma,Xray,conversion,and auger electrons for bias mode
143
void
AddDeexcitationSpectrumForBiasMode
(
G4ParticleDefinition
* apartDef,
144
G4double
weight
,
145
G4double
currenTime,
146
std::vector<double>& weights_v,
147
std::vector<double>& times_v,
148
std::vector<G4DynamicParticle*>& secondaries_v);
149
150
G4RadioactivationMessenger
*
theRadioactivationMessenger
;
151
152
private
:
153
154
G4bool
AnalogueMC
;
155
G4bool
BRBias
;
156
G4int
NSplit
;
157
158
G4double
halflifethreshold
;
159
160
G4int
NSourceBin
;
161
G4double
SBin
[100];
162
G4double
SProfile
[100];
163
G4int
NDecayBin
;
164
G4double
DBin
[100];
165
G4double
DProfile
[100];
166
167
G4RadioactiveDecayRatesToDaughter
ratesToDaughter
;
168
G4RadioactiveDecayRates
theDecayRateVector
;
169
G4RadioactiveDecayChainsFromParent
chainsFromParent
;
170
G4RadioactiveDecayParentChainTable
theParentChainTable
;
171
172
// for the radioactivity tables
173
std::vector<G4RadioactivityTable*>
theRadioactivityTables
;
174
G4int
decayWindows
[100];
175
176
inline
177
G4VParticleChange
*
AtRestDoIt
(
const
G4Track
& theTrack,
const
G4Step
& theStep)
178
{
return
DecayIt
(theTrack, theStep);}
179
180
inline
181
G4VParticleChange
*
PostStepDoIt
(
const
G4Track
& theTrack,
const
G4Step
& theStep)
182
{
return
DecayIt
(theTrack, theStep);}
183
};
184
185
#endif
186
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
radioactive_decay
include
G4Radioactivation.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:50
using
1.8.2 with
ECCE GitHub integration