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
G4FragmentingString.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4FragmentingString.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
#ifndef G4FragmentingString_h
30
#define G4FragmentingString_h 1
31
32
// ------------------------------------------------------------
33
// GEANT 4 class header file
34
//
35
// ---------------- G4FragmentingString ----------------
36
// by Gunter Folger, September 2001.
37
// class for an excited string used in Fragmention
38
// ------------------------------------------------------------
39
40
#include "
G4ios.hh
"
41
#include "
globals.hh
"
42
#include "
G4ThreeVector.hh
"
43
#include "
G4LorentzVector.hh
"
44
#include "
G4LorentzRotation.hh
"
45
#include "
G4ParticleDefinition.hh
"
46
47
class
G4ExcitedString
;
48
49
class
G4FragmentingString
50
{
51
public
:
52
G4FragmentingString
(
const
G4FragmentingString
&
right
);
53
G4FragmentingString
(
const
G4ExcitedString
&excited);
54
G4FragmentingString
(
const
G4FragmentingString
&old,
55
G4ParticleDefinition
* newdecay,
56
const
G4LorentzVector
*
momentum
);
57
G4FragmentingString
(
const
G4FragmentingString
&old,
58
G4ParticleDefinition
* newdecay);
59
60
~G4FragmentingString
();
61
62
G4FragmentingString
&
operator=
(
const
G4FragmentingString
&);
63
G4bool
operator==
(
const
G4FragmentingString
&right)
const
;
64
65
G4bool
operator!=
(
const
G4FragmentingString
&right)
const
;
66
67
G4LorentzVector
Get4Momentum
()
const
;
68
69
G4ThreeVector
StablePt
();
70
G4ThreeVector
DecayPt
();
71
72
G4double
LightConePlus
();
73
G4double
LightConeMinus
();
74
G4double
LightConeDecay
();
75
76
G4double
Mass
()
const
;
77
G4double
Mass2
()
const
;
78
G4double
MassT2
()
const
;
79
80
G4ParticleDefinition
*
GetLeftParton
(
void
)
const
;
81
G4ParticleDefinition
*
GetRightParton
(
void
)
const
;
82
83
G4ParticleDefinition
*
GetStableParton
()
const
;
// stable at the moment
84
G4ParticleDefinition
*
GetDecayParton
()
const
;
// currently involved in fragmentation
85
86
void
SetLeftPartonStable
();
87
void
SetRightPartonStable
();
88
89
G4int
GetDecayDirection
()
const
;
90
91
G4bool
DecayIsQuark
();
92
G4bool
StableIsQuark
();
93
G4bool
IsAFourQuarkString
(
void
)
const
;
94
95
G4LorentzVector
GetPstring
();
96
G4LorentzVector
GetPleft
();
97
void
SetPleft
(
G4LorentzVector
a4momentum);
98
G4LorentzVector
GetPright
();
99
void
SetPright
(
G4LorentzVector
a4momentum);
100
void
LorentzRotate
(
const
G4LorentzRotation
& rotation);
101
G4LorentzRotation
TransformToCenterOfMass
();
102
G4LorentzRotation
TransformToAlignedCms
();
103
void
Boost
(
G4ThreeVector
& Velocity);
104
105
private
:
106
G4ParticleDefinition
*
LeftParton
, *
RightParton
;
107
G4ThreeVector
Ptleft
,
Ptright
;
// Pt (px,py) for partons (pz ignored!)
108
G4double
Pplus
,
Pminus
;
// p-, p+ of string, Plus ass. to Left!
109
110
G4ParticleDefinition
*
theStableParton
, *
theDecayParton
;
111
112
G4LorentzVector
Pstring
,
Pleft
,
Pright
;
113
enum
DecaySide
{
None
,
Left
,
Right
};
114
DecaySide
decaying
;
115
};
116
117
inline
118
G4bool
G4FragmentingString::operator==
(
const
G4FragmentingString
&
right
)
const
119
{
120
return
this
== &
right
;
121
}
122
123
inline
124
G4bool
G4FragmentingString::operator!=
(
const
G4FragmentingString
&
right
)
const
125
{
126
return
this
!= &
right
;
127
}
128
129
130
inline
131
G4ParticleDefinition
*
G4FragmentingString::GetStableParton
()
const
132
{
133
return
theStableParton
;
134
}
135
136
inline
137
G4ParticleDefinition
*
G4FragmentingString::GetDecayParton
()
const
138
{
139
return
theDecayParton
;
140
}
141
142
inline
143
G4ParticleDefinition
*
G4FragmentingString::GetLeftParton
(
void
)
const
144
{
145
return
LeftParton
;
146
}
147
148
inline
149
G4ParticleDefinition
*
G4FragmentingString::GetRightParton
(
void
)
const
150
{
151
return
RightParton
;
152
}
153
154
//+++++++++++++++++++++++++++
155
inline
156
void
G4FragmentingString::LorentzRotate
(
const
G4LorentzRotation
& rotation)
157
{
158
SetPleft
(rotation*
Pleft
);
159
SetPright
(rotation*
Pright
);
160
Pstring
= Pleft+
Pright
;
161
Ptleft
=Pleft.vect();
Ptleft
.
setZ
(0.);
162
Ptright
=Pright.vect();
Ptright
.
setZ
(0.);
163
Pplus
=
Pstring
.
plus
();
164
Pminus
=
Pstring
.
minus
();
165
}
166
167
inline
168
G4LorentzRotation
G4FragmentingString::TransformToCenterOfMass
()
169
{
170
G4LorentzVector
momentum
=
Pstring
;
171
G4LorentzRotation
toCMS(-1*momentum.
boostVector
());
172
173
Pleft
*= toCMS;
174
Pright
*= toCMS;
175
Pstring
*= toCMS;
176
Ptleft
=Pleft.vect();
Ptleft
.
setZ
(0.);
177
Ptright
=
Pright
.
vect
();
Ptright
.
setZ
(0.);
178
Pplus
=
Pstring
.
plus
();
179
Pminus
=
Pstring
.
minus
();
180
return
toCMS;
181
}
182
183
inline
184
G4LorentzRotation
G4FragmentingString::TransformToAlignedCms
()
185
{
186
G4LorentzVector
momentum
=
Pstring
;
187
G4LorentzRotation
toAlignedCms(-1*momentum.
boostVector
());
188
189
momentum= toAlignedCms*
Pleft
;
190
toAlignedCms.
rotateZ
(-1*momentum.phi());
191
toAlignedCms.
rotateY
(-1*momentum.theta());
192
193
Pleft *= toAlignedCms;
194
Pright
*= toAlignedCms;
195
Pstring
*= toAlignedCms;
196
197
Ptleft
=
G4ThreeVector
(0.,0.,0.);
198
Ptright
=
G4ThreeVector
(0.,0.,0.);
199
Pplus
=
Pstring
.
plus
();
200
Pminus
=
Pstring
.
minus
();
201
202
return
toAlignedCms;
203
}
204
205
inline
206
void
G4FragmentingString::SetPleft
(
G4LorentzVector
a4momentum)
207
{
208
Pleft
= a4momentum;
209
}
210
211
inline
212
void
G4FragmentingString::SetPright
(
G4LorentzVector
a4momentum)
213
{
214
Pright
= a4momentum;
215
}
216
217
#endif
218
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
parton_string
hadronization
include
G4FragmentingString.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:49
using
1.8.2 with
ECCE GitHub integration