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
G4PhotonEvaporation.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4PhotonEvaporation.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
// GEANT4 class file
30
//
31
// CERN, Geneva, Switzerland
32
//
33
// File name: G4PhotonEvaporation
34
//
35
// Author: Vladimir Ivantchenko
36
//
37
// Creation date: 22 October 2015
38
//
39
//Modifications:
40
//
41
//
42
// -------------------------------------------------------------------
43
//
44
// This is a new class which has different design and uses different data
45
// structure than the old one
46
//
47
48
#ifndef G4PHOTONEVAPORATION_HH
49
#define G4PHOTONEVAPORATION_HH 1
50
51
#include "
globals.hh
"
52
#include "
G4VEvaporationChannel.hh
"
53
#include "
G4NuclearLevelData.hh
"
54
#include "
G4LevelManager.hh
"
55
#include "
G4Fragment.hh
"
56
#include "
G4Threading.hh
"
57
58
const
G4int
MAXDEPOINT
= 10;
59
const
G4int
MAXGRDATA
= 300;
60
61
class
G4GammaTransition
;
62
63
class
G4PhotonEvaporation
:
public
G4VEvaporationChannel
{
64
65
public
:
66
67
explicit
G4PhotonEvaporation
(
G4GammaTransition
* ptr=
nullptr
);
68
69
virtual
~G4PhotonEvaporation
();
70
71
virtual
void
Initialise
()
final
;
72
73
// one photon or e- emission
74
virtual
G4Fragment
*
EmittedFragment
(
G4Fragment
* theNucleus)
final
;
75
76
// returns "false", emitted gamma and e- are added to the results
77
virtual
G4bool
78
BreakUpChain
(
G4FragmentVector
* theResult,
G4Fragment
* theNucleus)
final
;
79
80
// emitted gamma, e-, and residual fragment are added to the results
81
G4FragmentVector
*
BreakItUp
(
const
G4Fragment
& theNucleus);
82
83
// compute emission probability for both continum and discrete cases
84
// must be called before any method above
85
virtual
G4double
GetEmissionProbability
(
G4Fragment
* theNucleus)
final
;
86
87
virtual
G4double
GetFinalLevelEnergy
(
G4int
Z
,
G4int
A
,
G4double
energy
)
final
;
88
89
virtual
G4double
GetUpperLevelEnergy
(
G4int
Z,
G4int
A)
final
;
90
91
void
SetGammaTransition
(
G4GammaTransition
*);
92
93
virtual
void
SetICM
(
G4bool
);
94
95
virtual
void
RDMForced
(
G4bool
);
96
97
inline
void
SetVerboseLevel
(
G4int
verbose);
98
99
inline
G4int
GetVacantShellNumber
()
const
;
100
101
G4PhotonEvaporation
(
const
G4PhotonEvaporation
&
right
) =
delete
;
102
const
G4PhotonEvaporation
&
operator
=
103
(
const
G4PhotonEvaporation
&
right
) =
delete
;
104
105
private
:
106
107
void
InitialiseGRData
();
108
109
G4Fragment
*
GenerateGamma
(
G4Fragment
* nucleus);
110
111
inline
void
InitialiseLevelManager
(
G4int
Z,
G4int
A);
112
113
G4NuclearLevelData
*
fNuclearLevelData
;
114
const
G4LevelManager
*
fLevelManager
;
115
G4GammaTransition
*
fTransition
;
116
117
// fPolarization stores polarization tensor for consecutive
118
// decays of a nucleus
119
G4NuclearPolarization
*
fPolarization
;
120
121
G4int
fVerbose
;
122
G4int
theZ
;
123
G4int
theA
;
124
G4int
fPoints
;
125
G4int
fCode
;
126
G4int
vShellNumber
;
127
size_t
fIndex
;
128
129
static
G4float
GREnergy
[
MAXGRDATA
];
130
static
G4float
GRWidth
[
MAXGRDATA
];
131
132
G4double
fCummProbability
[
MAXDEPOINT
];
133
134
G4double
fLevelEnergyMax
;
135
G4double
fExcEnergy
;
136
G4double
fProbability
;
137
G4double
fStep
;
138
G4double
fMaxLifeTime
;
139
140
G4double
Tolerance
;
141
142
G4bool
fICM
;
143
G4bool
fRDM
;
144
G4bool
fSampleTime
;
145
G4bool
fCorrelatedGamma
;
146
G4bool
isInitialised
;
147
148
#ifdef G4MULTITHREADED
149
static
G4Mutex
PhotonEvaporationMutex;
150
#endif
151
};
152
153
inline
void
G4PhotonEvaporation::SetVerboseLevel
(
G4int
verbose)
154
{
155
fVerbose
= verbose;
156
}
157
158
inline
void
159
G4PhotonEvaporation::InitialiseLevelManager
(
G4int
Z
,
G4int
A
)
160
{
161
if
(Z !=
theZ
|| A !=
theA
) {
162
theZ
=
Z
;
163
theA
=
A
;
164
fIndex
= 0;
165
fLevelManager
=
fNuclearLevelData
->
GetLevelManager
(
theZ
,
theA
);
166
fLevelEnergyMax
=
fLevelManager
?
fLevelManager
->
MaxLevelEnergy
() : 0.0;
167
}
168
}
169
170
inline
G4int
G4PhotonEvaporation::GetVacantShellNumber
()
const
171
{
172
return
vShellNumber
;
173
}
174
175
#endif
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
de_excitation
photon_evaporation
include
G4PhotonEvaporation.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:42
using
1.8.2 with
ECCE GitHub integration