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
G4FTFModel.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4FTFModel.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
// Class Description
29
// Final state production code for hadron inelastic scattering above 3 GeV
30
// based on the modeling ansatz used in FRITIOF.
31
// To be used in your physics list in case you need this physics.
32
// In this case you want to register an object of this class with an object
33
// of G4TheoFSGenerator.
34
// Class Description - End
35
36
#ifndef G4FTFModel_h
37
#define G4FTFModel_h 1
38
39
// ------------------------------------------------------------
40
// GEANT 4 class header file
41
//
42
// ---------------- G4FTFModel ----------------
43
// by Gunter Folger, May 1998.
44
// class implementing the excitation in the FTF Parton String Model
45
// ------------------------------------------------------------
46
47
#include "
G4VPartonStringModel.hh
"
48
#include "
G4FTFParameters.hh
"
49
#include "
G4FTFParticipants.hh
"
50
#include "
G4ExcitedStringVector.hh
"
51
#include "
G4DiffractiveExcitation.hh
"
52
#include "
G4ElasticHNScattering.hh
"
53
#include "
G4FTFAnnihilation.hh
"
54
#include "
G4Proton.hh
"
55
#include "
G4Neutron.hh
"
56
57
class
G4VSplitableHadron
;
58
class
G4ExcitedString
;
59
60
61
class
G4FTFModel
:
public
G4VPartonStringModel
{
62
public
:
63
G4FTFModel
(
const
G4String
& modelName =
"FTF"
);
64
~G4FTFModel
();
65
66
void
Init
(
const
G4Nucleus
& aNucleus,
const
G4DynamicParticle
& aProjectile );
67
G4ExcitedStringVector
*
GetStrings
();
68
G4V3DNucleus
*
GetWoundedNucleus
()
const
;
69
G4V3DNucleus
*
GetTargetNucleus
()
const
;
70
G4V3DNucleus
*
GetProjectileNucleus
()
const
;
71
72
virtual
void
ModelDescription
( std::ostream& )
const
;
73
74
private
:
75
G4FTFModel
(
const
G4FTFModel
&
right
);
76
const
G4FTFModel
&
operator=
(
const
G4FTFModel
& right );
77
G4bool
operator==
(
const
G4FTFModel
& right )
const
;
78
G4bool
operator!=
(
const
G4FTFModel
& right )
const
;
79
80
void
StoreInvolvedNucleon
();
81
void
ReggeonCascade
();
82
G4bool
PutOnMassShell
();
83
G4bool
ExciteParticipants
();
84
void
BuildStrings
(
G4ExcitedStringVector
* strings );
85
void
GetResiduals
();
86
87
G4bool
AdjustNucleons
(
G4VSplitableHadron
* SelectedAntiBaryon,
88
G4Nucleon
* ProjectileNucleon,
89
G4VSplitableHadron
* SelectedTargetNucleon,
90
G4Nucleon
* TargetNucleon,
91
G4bool
Annihilation );
92
// The "AdjustNucleons" method uses the following struct and 3 new utility methods:
93
struct
CommonVariables
{
94
G4int
TResidualMassNumber
= 0,
TResidualCharge
= 0,
PResidualMassNumber
= 0,
95
PResidualCharge
= 0;
96
G4double
SqrtS
= 0.0,
S
= 0.0,
SumMasses
= 0.0,
97
TResidualExcitationEnergy
= 0.0,
TResidualMass
= 0.0,
TNucleonMass
= 0.0,
98
PResidualExcitationEnergy
= 0.0,
PResidualMass
= 0.0,
PNucleonMass
= 0.0,
99
Mprojectile
= 0.0,
M2projectile
= 0.0,
Pzprojectile
= 0.0,
Eprojectile
= 0.0,
100
WplusProjectile
= 0.0,
101
Mtarget
= 0.0,
M2target
= 0.0,
Pztarget
= 0.0,
Etarget
= 0.0,
WminusTarget
= 0.0,
102
Mt2targetNucleon
= 0.0,
PztargetNucleon
= 0.0,
EtargetNucleon
= 0.0,
103
Mt2projectileNucleon
= 0.0,
PzprojectileNucleon
= 0.0,
EprojectileNucleon
= 0.0,
104
YtargetNucleus
= 0.0,
YprojectileNucleus
= 0.0,
105
XminusNucleon
= 0.0,
XplusNucleon
= 0.0,
XminusResidual
= 0.0,
XplusResidual
= 0.0;
106
G4ThreeVector
PtNucleon
,
PtResidual
,
PtNucleonP
,
PtResidualP
,
PtNucleonT
,
PtResidualT
;
107
G4LorentzVector
Psum
,
Pprojectile
,
Ptmp
,
Ptarget
,
TResidual4Momentum
,
PResidual4Momentum
;
108
G4LorentzRotation
toCms
,
toLab
;
109
};
110
G4int
AdjustNucleonsAlgorithm_beforeSampling
(
G4int
interactionCase,
111
G4VSplitableHadron
* SelectedAntiBaryon,
112
G4Nucleon
* ProjectileNucleon,
113
G4VSplitableHadron
* SelectedTargetNucleon,
114
G4Nucleon
* TargetNucleon,
115
G4bool
Annihilation,
116
CommonVariables
&
common
);
117
G4bool
AdjustNucleonsAlgorithm_Sampling
(
G4int
interactionCase,
118
CommonVariables
&
common
);
119
void
AdjustNucleonsAlgorithm_afterSampling
(
G4int
interactionCase,
120
G4VSplitableHadron
* SelectedAntiBaryon,
121
G4VSplitableHadron
* SelectedTargetNucleon,
122
CommonVariables
&
common
);
123
124
G4ThreeVector
GaussianPt
(
G4double
AveragePt2,
G4double
maxPtSquare )
const
;
125
126
G4bool
ComputeNucleusProperties
(
G4V3DNucleus
* nucleus,
G4LorentzVector
& nucleusMomentum,
127
G4LorentzVector
& residualMomentum,
G4double
& sumMasses,
128
G4double
& residualExcitationEnergy,
G4double
& residualMass,
129
G4int
& residualMassNumber,
G4int
& residualCharge );
130
// Utility method used by PutOnMassShell.
131
132
G4bool
GenerateDeltaIsobar
(
const
G4double
sqrtS,
const
G4int
numberOfInvolvedNucleons,
133
G4Nucleon
* involvedNucleons[],
G4double
& sumMasses );
134
// Utility method used by PutOnMassShell.
135
136
G4bool
SamplingNucleonKinematics
(
G4double
averagePt2,
const
G4double
maxPt2,
137
G4double
dCor,
G4V3DNucleus
* nucleus,
138
const
G4LorentzVector
& pResidual,
139
const
G4double
residualMass,
const
G4int
residualMassNumber,
140
const
G4int
numberOfInvolvedNucleons,
141
G4Nucleon
* involvedNucleons[],
G4double
& mass2 );
142
143
// Utility method used by PutOnMassShell.
144
145
G4bool
CheckKinematics
(
const
G4double
sValue,
const
G4double
sqrtS,
146
const
G4double
projectileMass2,
const
G4double
targetMass2,
147
const
G4double
nucleusY,
const
G4bool
isProjectileNucleus,
148
const
G4int
numberOfInvolvedNucleons,
G4Nucleon
* involvedNucleons[],
149
G4double
& targetWminus,
G4double
& projectileWplus,
G4bool
& success );
150
// Utility method used by PutOnMassShell.
151
152
G4bool
FinalizeKinematics
(
const
G4double
w
,
const
G4bool
isProjectileNucleus,
153
const
G4LorentzRotation
& boostFromCmsToLab,
154
const
G4double
residualMass,
const
G4int
residualMassNumber,
155
const
G4int
numberOfInvolvedNucleons,
156
G4Nucleon
* involvedNucleons[],
157
G4LorentzVector
& residual4Momentum );
158
// Utility method used by PutOnMassShell.
159
160
G4ReactionProduct
theProjectile
;
161
G4FTFParticipants
theParticipants
;
162
163
G4Nucleon
*
TheInvolvedNucleonsOfTarget
[250];
164
G4int
NumberOfInvolvedNucleonsOfTarget
;
165
166
G4Nucleon
*
TheInvolvedNucleonsOfProjectile
[250];
167
G4int
NumberOfInvolvedNucleonsOfProjectile
;
168
169
G4FTFParameters
*
theParameters
;
170
G4DiffractiveExcitation
*
theExcitation
;
171
G4ElasticHNScattering
*
theElastic
;
172
G4FTFAnnihilation
*
theAnnihilation
;
173
174
std::vector< G4VSplitableHadron* >
theAdditionalString
;
175
176
G4double
LowEnergyLimit
;
177
G4bool
HighEnergyInter
;
178
179
G4LorentzVector
ProjectileResidual4Momentum
;
180
G4int
ProjectileResidualMassNumber
;
181
G4int
ProjectileResidualCharge
;
182
G4double
ProjectileResidualExcitationEnergy
;
183
184
G4LorentzVector
TargetResidual4Momentum
;
185
G4int
TargetResidualMassNumber
;
186
G4int
TargetResidualCharge
;
187
G4double
TargetResidualExcitationEnergy
;
188
};
189
190
191
inline
G4V3DNucleus
*
G4FTFModel::GetWoundedNucleus
()
const
{
192
return
theParticipants
.
GetWoundedNucleus
();
193
}
194
195
196
inline
G4V3DNucleus
*
G4FTFModel::GetTargetNucleus
()
const
{
197
return
theParticipants
.
GetWoundedNucleus
();
198
}
199
200
201
inline
G4V3DNucleus
*
G4FTFModel::GetProjectileNucleus
()
const
{
202
return
theParticipants
.
GetProjectileNucleus
();
203
}
204
205
#endif
206
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
parton_string
diffraction
include
G4FTFModel.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:49
using
1.8.2 with
ECCE GitHub integration