Geant4
11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4Parton.cc
Go to the documentation of this file.
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
// GEANT 4 class implementation file
30
//
31
// ---------------- G4Parton ----------------
32
// by Gunter Folger, June 1998.
33
// class for Parton (inside a string) used by Parton String Models
34
// ------------------------------------------------------------
35
36
#include "
G4Parton.hh
"
37
#include "
G4HadronicException.hh
"
38
39
G4Parton::G4Parton
(
G4int
PDGcode)
40
{
41
PDGencoding
=PDGcode;
42
theX = 0;
43
theDefinition
=
G4ParticleTable::GetParticleTable
()->
FindParticle
(
PDGencoding
);
44
if
(
theDefinition
== NULL)
45
{
46
G4cout
<<
"Encoding = "
<<
PDGencoding
<<
G4endl
;
47
G4String
text =
"G4Parton::GetDefinition(): Encoding not in particle table"
;
48
throw
G4HadronicException
(__FILE__, __LINE__, text);
49
}
50
//
51
// colour by random in (1,2,3)=(R,G,B) for quarks and
52
// in (-1,-2,-3)=(Rbar,Gbar,Bbar) for anti-quarks:
53
//
54
if
(
theDefinition
->
GetParticleType
() ==
"quarks"
) {
55
theColour = ((
G4int
)(3.*
G4UniformRand
())+1)*(std::abs(
PDGencoding
)/
PDGencoding
) ;
56
}
57
//
58
// colour by random in (-1,-2,-3)=(Rbar,Gbar,Bbar)=(GB,RB,RG) for di-quarks and
59
// in (1,2,3)=(R,G,B)=(GB,RB,RG) for anti-di-quarks:
60
//
61
else
if
(
theDefinition
->
GetParticleType
() ==
"diquarks"
) {
62
theColour = -((
G4int
)(3.*
G4UniformRand
())+1)*(std::abs(
PDGencoding
)/
PDGencoding
);
63
}
64
//
65
// colour by random in (-11,-12,...,-33)=(RRbar,RGbar,RBbar,...,BBbar) for gluons:
66
//
67
else
if
(
theDefinition
->
GetParticleType
() ==
"gluons"
) {
68
theColour = -(((
G4int
)(3.*
G4UniformRand
())+1)*10 + ((
G4int
)(3.*
G4UniformRand
())+1));
69
}
70
else
{
71
G4cout
<<
"Encoding = "
<<
PDGencoding
<<
G4endl
;
72
G4String
text =
"G4Parton::GetDefinition(): Particle is not a parton"
;
73
throw
G4HadronicException
(__FILE__, __LINE__, text);
74
}
75
//
76
// isospin-z from PDG-encoded isospin-z for
77
// quarks, anti-quarks, di-quarks, and anti-di-quarks:
78
//
79
if
((
theDefinition
->
GetParticleType
() ==
"quarks"
) || (
theDefinition
->
GetParticleType
() ==
"diquarks"
)){
80
theIsoSpinZ =
theDefinition
->
GetPDGIsospin3
();
81
}
82
//
83
// isospin-z choosen at random from PDG-encoded isospin for gluons (should be zero):
84
//
85
else
{
86
G4int
thisPDGiIsospin=
theDefinition
->
GetPDGiIsospin
();
87
if
(thisPDGiIsospin == 0) {
88
theIsoSpinZ = 0;
89
}
90
else
{
91
theIsoSpinZ = ((
G4int
)((thisPDGiIsospin+1)*
G4UniformRand
()))-thisPDGiIsospin*0.5;
92
}
93
}
94
//
95
// spin-z choosen at random from PDG-encoded spin:
96
//
97
G4int
thisPDGiSpin=
theDefinition
->
GetPDGiSpin
();
98
if
(thisPDGiSpin == 0) {
99
theSpinZ = 0;
100
}
101
else
{
102
G4int
rand=((
G4int
)((thisPDGiSpin+1)*
G4UniformRand
()));
103
theSpinZ = rand-thisPDGiSpin*0.5;;
104
}
105
}
106
107
G4Parton::G4Parton
(
const
G4Parton
&right)
108
{
109
PDGencoding
= right.
PDGencoding
;
110
theMomentum = right.theMomentum;
111
thePosition = right.thePosition;
112
theX = right.theX;
113
theDefinition
= right.
theDefinition
;
114
theColour = right.theColour;
115
theIsoSpinZ = right.theIsoSpinZ;
116
theSpinZ = right.theSpinZ;
117
}
118
119
G4Parton
&
G4Parton::operator=
(
const
G4Parton
&right)
120
{
121
if
(
this
!= &right)
122
{
123
PDGencoding
=right.
GetPDGcode
();
124
theMomentum=right.
Get4Momentum
();
125
thePosition=right.
GetPosition
();
126
theX = right.theX;
127
theDefinition
= right.
theDefinition
;
128
theColour = right.theColour;
129
theIsoSpinZ = right.theIsoSpinZ;
130
theSpinZ = right.theSpinZ;
131
}
132
133
return
*
this
;
134
}
135
136
G4Parton::~G4Parton
()
137
{
138
// cout << "G4Parton::~G4Parton(): this = "<<this <<endl;
139
// cout << "break here"<<this <<endl;
140
}
141
142
void
G4Parton::DefineMomentumInZ
(
G4double
aLightConeMomentum,
G4bool
aDirection)
143
{
144
G4double
Mass = GetMass();
145
G4LorentzVector
a4Momentum =
Get4Momentum
();
146
aLightConeMomentum*=theX;
147
G4double
TransverseMass2 =
sqr
(a4Momentum.
px
()) +
sqr
(a4Momentum.
py
()) +
sqr
(Mass);
148
a4Momentum.
setPz
(0.5*(aLightConeMomentum - TransverseMass2/aLightConeMomentum)*(aDirection? 1: -1));
149
a4Momentum.
setE
( 0.5*(aLightConeMomentum + TransverseMass2/aLightConeMomentum));
150
Set4Momentum
(a4Momentum);
151
}
152
153
void
G4Parton::DefineMomentumInZ
(
G4double
aLightConeMomentum,
G4double
aLightConeE,
G4bool
aDirection)
154
{
155
G4double
Mass = GetMass();
156
G4LorentzVector
a4Momentum =
Get4Momentum
();
157
aLightConeMomentum*=theX;
158
aLightConeE*=theX;
159
G4double
TransverseMass2 =
sqr
(a4Momentum.
px
()) +
sqr
(a4Momentum.
py
()) +
sqr
(Mass);
160
a4Momentum.
setPz
(0.5*(aLightConeMomentum - aLightConeE - TransverseMass2/aLightConeMomentum)*(aDirection? 1: -1));
161
a4Momentum.
setE
( 0.5*(aLightConeMomentum + aLightConeE + TransverseMass2/aLightConeMomentum));
162
Set4Momentum
(a4Momentum);
163
}
G4HadronicException.hh
G4Parton.hh
G4double
double G4double
Definition
G4Types.hh:83
G4bool
bool G4bool
Definition
G4Types.hh:86
G4int
int G4int
Definition
G4Types.hh:85
G4endl
#define G4endl
Definition
G4ios.hh:67
G4cout
G4GLOB_DLL std::ostream G4cout
G4UniformRand
#define G4UniformRand()
Definition
Randomize.hh:52
CLHEP::HepLorentzVector
Definition
LorentzVector.h:67
CLHEP::HepLorentzVector::py
double py() const
CLHEP::HepLorentzVector::setE
void setE(double)
CLHEP::HepLorentzVector::setPz
void setPz(double)
CLHEP::HepLorentzVector::px
double px() const
G4HadronicException
Definition
G4HadronicException.hh:32
G4ParticleDefinition::GetPDGiIsospin
G4int GetPDGiIsospin() const
Definition
G4ParticleDefinition.hh:108
G4ParticleDefinition::GetParticleType
const G4String & GetParticleType() const
Definition
G4ParticleDefinition.hh:118
G4ParticleDefinition::GetPDGiSpin
G4int GetPDGiSpin() const
Definition
G4ParticleDefinition.hh:103
G4ParticleDefinition::GetPDGIsospin3
G4double GetPDGIsospin3() const
Definition
G4ParticleDefinition.hh:107
G4ParticleTable::FindParticle
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
Definition
G4ParticleTable.cc:498
G4ParticleTable::GetParticleTable
static G4ParticleTable * GetParticleTable()
Definition
G4ParticleTable.cc:82
G4Parton
Definition
G4Parton.hh:48
G4Parton::theDefinition
G4ParticleDefinition * theDefinition
Definition
G4Parton.hh:103
G4Parton::operator=
G4Parton & operator=(const G4Parton &right)
Definition
G4Parton.cc:119
G4Parton::GetPosition
const G4ThreeVector & GetPosition() const
Definition
G4Parton.hh:132
G4Parton::GetPDGcode
G4int GetPDGcode() const
Definition
G4Parton.hh:127
G4Parton::~G4Parton
~G4Parton()
Definition
G4Parton.cc:136
G4Parton::Set4Momentum
void Set4Momentum(const G4LorentzVector &aMomentum)
Definition
G4Parton.hh:148
G4Parton::DefineMomentumInZ
void DefineMomentumInZ(G4double aLightConeMomentum, G4bool aDirection)
Definition
G4Parton.cc:142
G4Parton::G4Parton
G4Parton()
Definition
G4Parton.hh:50
G4Parton::Get4Momentum
const G4LorentzVector & Get4Momentum() const
Definition
G4Parton.hh:143
G4Parton::PDGencoding
G4int PDGencoding
Definition
G4Parton.hh:102
G4String
Definition
G4String.hh:62
sqr
T sqr(const T &x)
Definition
templates.hh:128
geant4-v11.2.2
source
processes
hadronic
util
src
G4Parton.cc
Generated by
1.12.0