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
G4IonQMDPhysics.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4IonQMDPhysics.cc
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
// ClassName: G4IonQMDPhysics
30
// Created from G4IonBinaryCascadePhysics
31
//
32
// Author: G.Folger
33
//
34
// Modified:
35
//
36
//----------------------------------------------------------------------------
37
//
38
39
#include "
G4IonQMDPhysics.hh
"
40
41
#include "
G4SystemOfUnits.hh
"
42
43
#include "
G4Deuteron.hh
"
44
#include "
G4Triton.hh
"
45
#include "
G4He3.hh
"
46
#include "
G4Alpha.hh
"
47
#include "
G4GenericIon.hh
"
48
#include "
G4IonConstructor.hh
"
49
50
#include "
G4HadronInelasticProcess.hh
"
51
#include "
G4BinaryLightIonReaction.hh
"
52
#include "
G4QMDReaction.hh
"
53
54
#include "
G4PreCompoundModel.hh
"
55
#include "
G4ExcitationHandler.hh
"
56
#include "
G4FTFBuilder.hh
"
57
#include "
G4HadronicInteraction.hh
"
58
#include "
G4BuilderType.hh
"
59
60
#include "
G4ComponentGGNuclNuclXsc.hh
"
61
#include "
G4CrossSectionInelastic.hh
"
62
63
#include "
G4ParticleDefinition.hh
"
64
#include "
G4ParticleTable.hh
"
65
#include "
G4ProcessManager.hh
"
66
67
// Nuclei
68
#include "
G4IonConstructor.hh
"
69
#include "
G4BuilderType.hh
"
70
#include "
G4HadronicInteractionRegistry.hh
"
71
#include "
G4HadronicParameters.hh
"
72
#include "
G4DeexPrecoParameters.hh
"
73
#include "
G4NuclearLevelData.hh
"
74
75
#include "
G4HadronicParameters.hh
"
76
77
// factory
78
#include "
G4PhysicsConstructorFactory.hh
"
79
//
80
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4IonQMDPhysics
);
81
82
G4ThreadLocal
G4FTFBuilder
*
G4IonQMDPhysics::theFTFPBuilder
=
nullptr
;
83
84
G4IonQMDPhysics::G4IonQMDPhysics
(
G4int
ver)
85
:
G4IonQMDPhysics
(
"IonQMD"
, ver)
86
{}
87
88
G4IonQMDPhysics::G4IonQMDPhysics
(
const
G4String
& nname,
G4int
ver)
89
:
G4VPhysicsConstructor
(nname), verbose(ver)
90
{
91
eminQMD
= 100.*
MeV
;
92
emaxQMD
= 10.*
GeV
;
93
overlap
= 10*
MeV
;
94
SetPhysicsType
(
bIons
);
95
G4DeexPrecoParameters
* param =
G4NuclearLevelData::GetInstance
()->
GetParameters
();
96
param->
SetDeexChannelsType
(
fCombined
);
97
if
(
verbose
> 1) {
G4cout
<<
"### IonPhysics: "
<< nname <<
G4endl
; }
98
}
99
100
G4IonQMDPhysics::~G4IonQMDPhysics
()
101
{
102
delete
theFTFPBuilder
;
theFTFPBuilder
=
nullptr
;
103
}
104
105
void
G4IonQMDPhysics::ConstructProcess
()
106
{
107
G4HadronicInteraction
*
p
=
108
G4HadronicInteractionRegistry::Instance
()->
FindModel
(
"PRECO"
);
109
G4PreCompoundModel
* thePreCompound =
static_cast<
G4PreCompoundModel
*
>
(
p
);
110
if
(!thePreCompound) { thePreCompound =
new
G4PreCompoundModel
; }
111
112
G4BinaryLightIonReaction
* theIonBC =
new
G4BinaryLightIonReaction
(thePreCompound);
113
theIonBC->
SetMaxEnergy
(
eminQMD
+
overlap
);
114
115
G4double
emax
=
G4HadronicParameters::Instance
()->
GetMaxEnergy
();
116
emaxQMD
=
G4HadronicParameters::Instance
()->
GetMaxEnergyTransitionFTF_Cascade
();
117
G4HadronicInteraction
* theFTFP =
nullptr
;
118
if
(emax >
emaxQMD
) {
119
theFTFPBuilder
=
new
G4FTFBuilder
(
"FTFP"
,thePreCompound);
120
theFTFP =
theFTFPBuilder
->
GetModel
();
121
theFTFP->
SetMinEnergy
(
emaxQMD
-
overlap
);
122
theFTFP->
SetMaxEnergy
(emax);
123
}
124
125
G4QMDReaction
* theQMD =
new
G4QMDReaction
();
126
theQMD->
SetMinEnergy
(
eminQMD
);
127
theQMD->
SetMaxEnergy
(
emaxQMD
);
128
129
G4VCrossSectionDataSet
* theNuclNuclData =
130
new
G4CrossSectionInelastic
(
new
G4ComponentGGNuclNuclXsc
() );
131
132
AddProcess
(
"dInelastic"
,
G4Deuteron::Deuteron
(), theIonBC, theQMD, theFTFP, theNuclNuclData);
133
AddProcess
(
"tInelastic"
,
G4Triton::Triton
(), theIonBC, theQMD, theFTFP, theNuclNuclData);
134
AddProcess
(
"He3Inelastic"
,
G4He3::He3
(), theIonBC, theQMD, theFTFP, theNuclNuclData);
135
AddProcess
(
"alphaInelastic"
,
G4Alpha::Alpha
(), theIonBC, theQMD, theFTFP, theNuclNuclData);
136
AddProcess
(
"ionInelastic"
,
G4GenericIon::GenericIon
(), theIonBC, theQMD, theFTFP, theNuclNuclData);
137
}
138
139
void
G4IonQMDPhysics::AddProcess
(
const
G4String
&
name
,
140
G4ParticleDefinition
*
p
,
141
G4BinaryLightIonReaction
* BIC,
142
G4QMDReaction
* QMD,
143
G4HadronicInteraction
* FTFP,
144
G4VCrossSectionDataSet
* theNuclNuclData)
145
{
146
G4HadronInelasticProcess
* hadi =
new
G4HadronInelasticProcess
(name, p);
147
G4ProcessManager
* pManager = p->
GetProcessManager
();
148
pManager->
AddDiscreteProcess
(hadi);
149
150
hadi->
AddDataSet
(theNuclNuclData);
151
152
hadi->
RegisterMe
(BIC);
153
hadi->
RegisterMe
(QMD);
154
if
(FTFP) { hadi->
RegisterMe
(FTFP); }
155
156
if
(
verbose
> 1) {
157
G4cout
<<
"Register "
<< hadi->
GetProcessName
()
158
<<
" for "
<< p->
GetParticleName
() <<
G4endl
159
<<
" Binary Cascade for E(MeV)= 0 - "
160
<<
eminQMD
+
overlap
;
161
G4cout
<<
" QMD for E(MeV)= "
<<
eminQMD
<<
" - "
<<
emaxQMD
;
162
if
(FTFP) {
163
G4cout
<<
" FTFP for E(MeV)= "
<< emaxQMD-overlap <<
" - "
<< FTFP->
GetMaxEnergy
();
164
}
165
G4cout
<<
G4endl
;
166
}
167
}
168
169
void
G4IonQMDPhysics::ConstructParticle
()
170
{
171
// Construct light ions
172
G4IonConstructor
pConstructor;
173
pConstructor.
ConstructParticle
();
174
}
geant4
tree
geant4-10.6-release
source
physics_lists
constructors
ions
src
G4IonQMDPhysics.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration