Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4Parton Class Reference

#include <G4Parton.hh>

Collaboration diagram for G4Parton:

Public Member Functions

 G4Parton ()
 
 G4Parton (G4int PDGencoding)
 
 G4Parton (const G4Parton &right)
 
 ~G4Parton ()
 
G4Partonoperator= (const G4Parton &right)
 
int operator== (const G4Parton &right) const
 
int 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::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:78
#define G4UniformRand()
Definition: Randomize.hh:97
G4int PDGencoding
Definition: G4Parton.hh:102
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 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4double GetPDGIsospin3() const
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:97
G4GLOB_DLL std::ostream G4cout
const G4String & GetParticleType() const
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103
static G4ParticleTable * GetParticleTable()
G4int PDGencoding
Definition: G4Parton.hh:102
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

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 }
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103
G4int PDGencoding
Definition: G4Parton.hh:102
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

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

Here is the call graph for this function:

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

Here is the call graph for this function:

const G4LorentzVector & G4Parton::Get4Momentum ( ) const
inline

Definition at line 143 of file G4Parton.hh.

144 {
145  return theMomentum;
146 }

Here is the caller graph for this function:

G4int G4Parton::GetColour ( )
inline

Definition at line 90 of file G4Parton.hh.

90 {return theColour;}

Here is the caller graph for this function:

G4ParticleDefinition * G4Parton::GetDefinition ( )
inline

Definition at line 161 of file G4Parton.hh.

162 {
163  return theDefinition;
164 }
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103

Here is the caller graph for this function:

G4double G4Parton::GetIsoSpinZ ( )
inline

Definition at line 93 of file G4Parton.hh.

93 {return theIsoSpinZ;}
G4int G4Parton::GetPDGcode ( ) const
inline

Definition at line 127 of file G4Parton.hh.

128 {
129  return PDGencoding;
130 }
G4int PDGencoding
Definition: G4Parton.hh:102

Here is the caller graph for this function:

const G4ThreeVector & G4Parton::GetPosition ( void  ) const
inline

Definition at line 132 of file G4Parton.hh.

133 {
134  return thePosition;
135 }

Here is the caller graph for this function:

G4double G4Parton::GetSpinZ ( )
inline

Definition at line 96 of file G4Parton.hh.

96 {return theSpinZ;}

Here is the caller graph for this function:

G4double G4Parton::GetX ( )
inline

Definition at line 87 of file G4Parton.hh.

87 {return theX;}

Here is the caller graph for this function:

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

Definition at line 122 of file G4Parton.hh.

123 {
124  return this!=&right;
125 }
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 }
G4int GetPDGcode() const
Definition: G4Parton.hh:127
const G4LorentzVector & Get4Momentum() const
Definition: G4Parton.hh:143
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103
const G4ThreeVector & GetPosition() const
Definition: G4Parton.hh:132
G4int PDGencoding
Definition: G4Parton.hh:102

Here is the call graph for this function:

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

Definition at line 117 of file G4Parton.hh.

118 {
119  return this==&right;
120 }
void G4Parton::Set4Momentum ( const G4LorentzVector aMomentum)
inline

Definition at line 148 of file G4Parton.hh.

149 {
150  theMomentum=aMomentum;
151 }

Here is the caller graph for this function:

void G4Parton::SetColour ( G4int  aColour)
inline

Definition at line 89 of file G4Parton.hh.

89 {theColour = aColour;}
void G4Parton::SetDefinition ( G4ParticleDefinition aDefinition)
inline

Definition at line 166 of file G4Parton.hh.

167 {
168  theDefinition = aDefinition;
170 }
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103
G4int PDGencoding
Definition: G4Parton.hh:102

Here is the call graph for this function:

void G4Parton::SetIsoSpinZ ( G4double  anIsoSpinZ)
inline

Definition at line 92 of file G4Parton.hh.

92 {theIsoSpinZ = anIsoSpinZ;}
void G4Parton::SetPosition ( const G4ThreeVector aPosition)
inline

Definition at line 137 of file G4Parton.hh.

138 {
139  thePosition=aPosition;
140 }

Here is the caller graph for this function:

void G4Parton::SetSpinZ ( G4double  aSpinZ)
inline

Definition at line 95 of file G4Parton.hh.

95 {theSpinZ = aSpinZ;}
void G4Parton::SetX ( G4double  anX)
inline

Definition at line 86 of file G4Parton.hh.

86 { theX = anX; }

Member Data Documentation

G4int G4Parton::PDGencoding

Definition at line 102 of file G4Parton.hh.

G4ParticleDefinition* G4Parton::theDefinition

Definition at line 103 of file G4Parton.hh.


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