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
G4ExcitationHandler.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4ExcitationHandler.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
// Hadronic Process: Nuclear De-excitations
27
// by V. Lara (May 1998)
28
//
29
// Modifications:
30
// 30 June 1998 by V. Lara:
31
// -Using G4ParticleTable and therefore G4IonTable
32
// it can return all kind of fragments produced in
33
// deexcitation
34
// -It uses default algorithms for:
35
// Evaporation: G4StatEvaporation
36
// MultiFragmentation: G4DummyMF (a dummy one)
37
// Fermi Breakup model: G4StatFermiBreakUp
38
//
39
// 03 September 2008 by J. M. Quesada for external choice of inverse
40
// cross section option
41
// 06 September 2008 JMQ Also external choices have been added for
42
// superimposed Coulomb barrier (if useSICBis set true, by default is false)
43
// 23 January 2012 by V.Ivanchenko remove obsolete data members; added access
44
// methods to deexcitation components
45
//
46
47
#ifndef G4ExcitationHandler_h
48
#define G4ExcitationHandler_h 1
49
50
#include "
globals.hh
"
51
#include "
G4Fragment.hh
"
52
#include "
G4ReactionProductVector.hh
"
53
#include "
G4IonTable.hh
"
54
#include "
G4DeexPrecoParameters.hh
"
55
#include "
G4NistManager.hh
"
56
57
class
G4VMultiFragmentation
;
58
class
G4VFermiBreakUp
;
59
class
G4VEvaporation
;
60
class
G4VEvaporationChannel
;
61
62
class
G4ExcitationHandler
63
{
64
public
:
65
66
explicit
G4ExcitationHandler
();
67
~G4ExcitationHandler
();
68
69
G4ReactionProductVector
*
BreakItUp
(
const
G4Fragment
&theInitialState);
70
71
// short model description used for automatic web documentation
72
void
ModelDescription
(std::ostream& outFile)
const
;
73
74
void
Initialise
();
75
76
// user defined sub-models
77
// deletion is responsibility of this handler if isLocal=true
78
void
SetEvaporation
(
G4VEvaporation
* ptr,
G4bool
isLocal=
false
);
79
void
SetMultiFragmentation
(
G4VMultiFragmentation
* ptr);
80
void
SetFermiModel
(
G4VFermiBreakUp
* ptr);
81
void
SetPhotonEvaporation
(
G4VEvaporationChannel
* ptr);
82
void
SetDeexChannelsType
(
G4DeexChannelType
val);
83
84
//======== Obsolete methods to be removed =====
85
86
// parameters of sub-models
87
inline
void
SetMaxZForFermiBreakUp
(
G4int
aZ);
88
inline
void
SetMaxAForFermiBreakUp
(
G4int
anA);
89
inline
void
SetMaxAandZForFermiBreakUp
(
G4int
anA,
G4int
aZ);
90
inline
void
SetMinEForMultiFrag
(
G4double
anE);
91
92
// access methods
93
G4VEvaporation
*
GetEvaporation
();
94
G4VMultiFragmentation
*
GetMultiFragmentation
();
95
G4VFermiBreakUp
*
GetFermiModel
();
96
G4VEvaporationChannel
*
GetPhotonEvaporation
();
97
98
// for inverse cross section choice
99
inline
void
SetOPTxs
(
G4int
opt);
100
// for superimposed Coulomb Barrir for inverse cross sections
101
inline
void
UseSICB
();
102
103
//==============================================
104
105
private
:
106
107
void
SetParameters
();
108
109
inline
void
SortSecondaryFragment
(
G4Fragment
*);
110
111
G4ExcitationHandler
(
const
G4ExcitationHandler
&
right
);
112
const
G4ExcitationHandler
&
operator
113
=(
const
G4ExcitationHandler
&
right
);
114
G4bool
operator==
(
const
G4ExcitationHandler
&right)
const
;
115
G4bool
operator!=
(
const
G4ExcitationHandler
&right)
const
;
116
117
G4VEvaporation
*
theEvaporation
;
118
G4VMultiFragmentation
*
theMultiFragmentation
;
119
G4VFermiBreakUp
*
theFermiModel
;
120
G4VEvaporationChannel
*
thePhotonEvaporation
;
121
G4IonTable
*
theTableOfIons
;
122
G4NistManager
*
nist
;
123
124
const
G4ParticleDefinition
*
theElectron
;
125
const
G4ParticleDefinition
*
theNeutron
;
126
const
G4ParticleDefinition
*
theProton
;
127
const
G4ParticleDefinition
*
theDeuteron
;
128
const
G4ParticleDefinition
*
theTriton
;
129
const
G4ParticleDefinition
*
theHe3
;
130
const
G4ParticleDefinition
*
theAlpha
;
131
132
G4int
icID
;
133
134
G4int
maxZForFermiBreakUp
;
135
G4int
maxAForFermiBreakUp
;
136
137
G4int
fVerbose
;
138
G4int
fWarnings
;
139
140
G4double
minEForMultiFrag
;
141
G4double
minExcitation
;
142
G4double
maxExcitation
;
143
144
G4bool
isInitialised
;
145
G4bool
isEvapLocal
;
146
G4bool
isActive
;
147
148
// list of fragments to store final result
149
std::vector<G4Fragment*>
theResults
;
150
151
// list of fragments to store intermediate result
152
std::vector<G4Fragment*>
results
;
153
154
// list of fragments to apply Evaporation or Fermi Break-Up
155
std::vector<G4Fragment*>
theEvapList
;
156
};
157
158
inline
void
G4ExcitationHandler::SetMaxZForFermiBreakUp
(
G4int
aZ)
159
{
160
maxZForFermiBreakUp
= aZ;
161
}
162
163
inline
void
G4ExcitationHandler::SetMaxAForFermiBreakUp
(
G4int
anA)
164
{
165
maxAForFermiBreakUp
= anA;
166
}
167
168
inline
void
G4ExcitationHandler::SetMaxAandZForFermiBreakUp
(
G4int
anA,
G4int
aZ)
169
{
170
SetMaxAForFermiBreakUp
(anA);
171
SetMaxZForFermiBreakUp
(aZ);
172
}
173
174
inline
void
G4ExcitationHandler::SetMinEForMultiFrag
(
G4double
anE)
175
{
176
minEForMultiFrag
= anE;
177
}
178
179
inline
void
G4ExcitationHandler::SetOPTxs
(
G4int
)
180
{}
181
182
inline
void
G4ExcitationHandler::UseSICB
()
183
{}
184
185
inline
void
G4ExcitationHandler::SortSecondaryFragment
(
G4Fragment
* frag)
186
{
187
G4int
A
= frag->
GetA_asInt
();
188
189
// gamma, e-, p, n
190
if
(A <= 1) {
191
theResults
.push_back(frag);
192
}
else
if
(frag->
GetExcitationEnergy
() <
minExcitation
) {
193
// cold fragments
194
G4int
Z
= frag->
GetZ_asInt
();
195
196
// is stable or d, t, He3, He4
197
if
(
nist
->
GetIsotopeAbundance
(Z, A) > 0.0 || (A == 3 && (Z == 1 || Z == 2)) ) {
198
theResults
.push_back(frag);
// stable fragment
199
}
else
{
200
theEvapList
.push_back(frag);
201
}
202
// hot fragments are unstable
203
}
else
{
204
theEvapList
.push_back(frag);
205
}
206
}
207
208
#endif
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
de_excitation
handler
include
G4ExcitationHandler.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:42
using
1.8.2 with
ECCE GitHub integration