Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4Parton Class Reference

#include <G4Parton.hh>

Public Member Functions

 G4Parton ()
 
 G4Parton (G4int PDGencoding)
 
 G4Parton (const G4Parton &right)
 
 ~G4Parton ()
 
G4Partonoperator= (const G4Parton &right)
 
G4bool operator== (const G4Parton &right) const
 
G4bool operator!= (const G4Parton &right) const
 
G4int GetPDGcode () const
 
G4ParticleDefinitionGetDefinition ()
 
void SetDefinition (G4ParticleDefinition *aDefinition)
 
void DefineMomentumInZ (G4double aLightConeMomentum, G4bool aDirection)
 
void DefineMomentumInZ (G4double aLightConeMomentum, G4double aLightConeE, G4bool aDirection)
 
const G4ThreeVectorGetPosition () const
 
void SetPosition (const G4ThreeVector &aPosition)
 
const G4LorentzVectorGet4Momentum () const
 
void Set4Momentum (const G4LorentzVector &aMomentum)
 
void SetX (G4double anX)
 
G4double GetX ()
 
void SetColour (G4int aColour)
 
G4int GetColour ()
 
void SetIsoSpinZ (G4double anIsoSpinZ)
 
G4double GetIsoSpinZ ()
 
void SetSpinZ (G4double aSpinZ)
 
G4double GetSpinZ ()
 

Public Attributes

G4int PDGencoding
 
G4ParticleDefinitiontheDefinition
 

Detailed Description

Definition at line 47 of file G4Parton.hh.

Constructor & Destructor Documentation

◆ G4Parton() [1/3]

G4Parton::G4Parton ( )
inline

Definition at line 50 of file G4Parton.hh.

51 {
52 // CAUTION:
53 // this is a preliminary definition yielding u and d quarks only!
54 //
56 theColour = (G4int)(3.*G4UniformRand())+1;
57 theIsoSpinZ = ((G4int)(G4UniformRand()))-0.5;
58 theSpinZ = ((G4int)(G4UniformRand()))-0.5;
59 }
int G4int
Definition: G4Types.hh:85
#define G4UniformRand()
Definition: Randomize.hh:52
G4int PDGencoding
Definition: G4Parton.hh:102

◆ G4Parton() [2/3]

G4Parton::G4Parton ( G4int  PDGencoding)

Definition at line 39 of file G4Parton.cc.

40{
41 PDGencoding=PDGcode;
42 theX = 0;
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}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
const G4String & GetParticleType() const
G4double GetPDGIsospin3() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103

◆ G4Parton() [3/3]

G4Parton::G4Parton ( const G4Parton right)

Definition at line 107 of file G4Parton.cc.

108{
109 PDGencoding = right.PDGencoding;
110 theMomentum = right.theMomentum;
111 thePosition = right.thePosition;
112 theX = right.theX;
114 theColour = right.theColour;
115 theIsoSpinZ = right.theIsoSpinZ;
116 theSpinZ = right.theSpinZ;
117}

◆ ~G4Parton()

G4Parton::~G4Parton ( )

Definition at line 136 of file G4Parton.cc.

137{
138// cout << "G4Parton::~G4Parton(): this = "<<this <<endl;
139// cout << "break here"<<this <<endl;
140}

Member Function Documentation

◆ DefineMomentumInZ() [1/2]

void G4Parton::DefineMomentumInZ ( G4double  aLightConeMomentum,
G4bool  aDirection 
)

Definition at line 142 of file G4Parton.cc.

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}
double G4double
Definition: G4Types.hh:83
void Set4Momentum(const G4LorentzVector &aMomentum)
Definition: G4Parton.hh:148
const G4LorentzVector & Get4Momentum() const
Definition: G4Parton.hh:143
T sqr(const T &x)
Definition: templates.hh:128

◆ DefineMomentumInZ() [2/2]

void G4Parton::DefineMomentumInZ ( G4double  aLightConeMomentum,
G4double  aLightConeE,
G4bool  aDirection 
)

Definition at line 153 of file G4Parton.cc.

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}

◆ Get4Momentum()

◆ GetColour()

G4int G4Parton::GetColour ( )
inline

Definition at line 90 of file G4Parton.hh.

90{return theColour;}

Referenced by G4PartonPair::G4PartonPair().

◆ GetDefinition()

◆ GetIsoSpinZ()

G4double G4Parton::GetIsoSpinZ ( )
inline

Definition at line 93 of file G4Parton.hh.

93{return theIsoSpinZ;}

◆ GetPDGcode()

◆ GetPosition()

const G4ThreeVector & G4Parton::GetPosition ( ) const
inline

Definition at line 132 of file G4Parton.hh.

133{
134 return thePosition;
135}

Referenced by G4ExcitedString::G4ExcitedString(), and operator=().

◆ GetSpinZ()

G4double G4Parton::GetSpinZ ( )
inline

Definition at line 96 of file G4Parton.hh.

96{return theSpinZ;}

Referenced by G4PartonPair::G4PartonPair().

◆ GetX()

G4double G4Parton::GetX ( )
inline

Definition at line 87 of file G4Parton.hh.

87{return theX;}

Referenced by G4SoftStringBuilder::BuildString(), and G4QGSParticipants::PerformSoftCollisions().

◆ operator!=()

G4bool G4Parton::operator!= ( const G4Parton right) const
inline

Definition at line 122 of file G4Parton.hh.

123{
124 return this!=&right;
125}

◆ operator=()

G4Parton & G4Parton::operator= ( const G4Parton right)

Definition at line 119 of file G4Parton.cc.

120{
121 if (this != &right)
122 {
123 PDGencoding=right.GetPDGcode();
124 theMomentum=right.Get4Momentum();
125 thePosition=right.GetPosition();
126 theX = right.theX;
128 theColour = right.theColour;
129 theIsoSpinZ = right.theIsoSpinZ;
130 theSpinZ = right.theSpinZ;
131 }
132
133 return *this;
134}
const G4ThreeVector & GetPosition() const
Definition: G4Parton.hh:132
G4int GetPDGcode() const
Definition: G4Parton.hh:127

◆ operator==()

G4bool G4Parton::operator== ( const G4Parton right) const
inline

Definition at line 117 of file G4Parton.hh.

118{
119 return this==&right;
120}

◆ Set4Momentum()

◆ SetColour()

void G4Parton::SetColour ( G4int  aColour)
inline

Definition at line 89 of file G4Parton.hh.

89{theColour = aColour;}

◆ SetDefinition()

void G4Parton::SetDefinition ( G4ParticleDefinition aDefinition)
inline

Definition at line 166 of file G4Parton.hh.

167{
168 theDefinition = aDefinition;
170}

Referenced by G4QuarkExchange::ExciteParticipants().

◆ SetIsoSpinZ()

void G4Parton::SetIsoSpinZ ( G4double  anIsoSpinZ)
inline

Definition at line 92 of file G4Parton.hh.

92{theIsoSpinZ = anIsoSpinZ;}

◆ SetPosition()

void G4Parton::SetPosition ( const G4ThreeVector aPosition)
inline

Definition at line 137 of file G4Parton.hh.

138{
139 thePosition=aPosition;
140}

◆ SetSpinZ()

void G4Parton::SetSpinZ ( G4double  aSpinZ)
inline

Definition at line 95 of file G4Parton.hh.

95{theSpinZ = aSpinZ;}

◆ SetX()

void G4Parton::SetX ( G4double  anX)
inline

Definition at line 86 of file G4Parton.hh.

86{ theX = anX; }

Member Data Documentation

◆ PDGencoding

G4int G4Parton::PDGencoding

Definition at line 102 of file G4Parton.hh.

Referenced by G4Parton(), GetPDGcode(), operator=(), and SetDefinition().

◆ theDefinition

G4ParticleDefinition* G4Parton::theDefinition

Definition at line 103 of file G4Parton.hh.

Referenced by G4Parton(), GetDefinition(), operator=(), and SetDefinition().


The documentation for this class was generated from the following files: