Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4Parton Class Reference

#include <G4Parton.hh>

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 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 ()
 

Detailed Description

Definition at line 47 of file G4Parton.hh.

Constructor & Destructor Documentation

G4Parton::G4Parton ( )
inline

Definition at line 50 of file G4Parton.hh.

References G4UniformRand.

51  {
52  // CAUTION:
53  // this is a preliminary definition yielding u and d quarks only!
54  //
55  PDGencoding=(G4int)(2.*G4UniformRand());
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:87
G4Parton::G4Parton ( G4int  PDGencoding)

Definition at line 39 of file G4Parton.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, G4UniformRand, G4ParticleTable::GetParticleTable(), G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGiIsospin(), G4ParticleDefinition::GetPDGIsospin3(), and G4ParticleDefinition::GetPDGiSpin().

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 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4double GetPDGIsospin3() const
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:87
G4GLOB_DLL std::ostream G4cout
const G4String & GetParticleType() const
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
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;
113  theDefinition = right.theDefinition;
114  theColour = right.theColour;
115  theIsoSpinZ = right.theIsoSpinZ;
116  theSpinZ = right.theSpinZ;
117 }
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.

References Get4Momentum(), CLHEP::HepLorentzVector::px(), CLHEP::HepLorentzVector::py(), Set4Momentum(), CLHEP::HepLorentzVector::setE(), CLHEP::HepLorentzVector::setPz(), and sqr().

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:140
void Set4Momentum(const G4LorentzVector &aMomentum)
Definition: G4Parton.hh:145
double py() const
double px() const
T sqr(const T &x)
Definition: templates.hh:145
double G4double
Definition: G4Types.hh:76
void G4Parton::DefineMomentumInZ ( G4double  aLightConeMomentum,
G4double  aLightConeE,
G4bool  aDirection 
)

Definition at line 153 of file G4Parton.cc.

References Get4Momentum(), CLHEP::HepLorentzVector::px(), CLHEP::HepLorentzVector::py(), Set4Momentum(), CLHEP::HepLorentzVector::setE(), CLHEP::HepLorentzVector::setPz(), and sqr().

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

Definition at line 89 of file G4Parton.hh.

Referenced by G4PartonPair::G4PartonPair().

89 {return theColour;}
G4ParticleDefinition * G4Parton::GetDefinition ( )
inline

Definition at line 158 of file G4Parton.hh.

Referenced by G4DiffractiveExcitation::CreateStrings(), G4FragmentingString::G4FragmentingString(), and G4PartonPair::G4PartonPair().

159 {
160  return theDefinition;
161 }
G4double G4Parton::GetIsoSpinZ ( )
inline

Definition at line 92 of file G4Parton.hh.

92 {return theIsoSpinZ;}
G4int G4Parton::GetPDGcode ( ) const
inline
const G4ThreeVector & G4Parton::GetPosition ( void  ) const
inline

Definition at line 129 of file G4Parton.hh.

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

130 {
131  return thePosition;
132 }
G4double G4Parton::GetSpinZ ( )
inline

Definition at line 95 of file G4Parton.hh.

Referenced by G4PartonPair::G4PartonPair().

95 {return theSpinZ;}
G4double G4Parton::GetX ( )
inline
int G4Parton::operator!= ( const G4Parton right) const
inline

Definition at line 119 of file G4Parton.hh.

References right.

120 {
121  return this!=&right;
122 }
G4Parton & G4Parton::operator= ( const G4Parton right)

Definition at line 119 of file G4Parton.cc.

References Get4Momentum(), GetPDGcode(), and GetPosition().

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 }
G4int GetPDGcode() const
Definition: G4Parton.hh:124
const G4LorentzVector & Get4Momentum() const
Definition: G4Parton.hh:140
const G4ThreeVector & GetPosition() const
Definition: G4Parton.hh:129
int G4Parton::operator== ( const G4Parton right) const
inline

Definition at line 114 of file G4Parton.hh.

References right.

115 {
116  return this==&right;
117 }
void G4Parton::Set4Momentum ( const G4LorentzVector aMomentum)
inline

Definition at line 145 of file G4Parton.hh.

Referenced by G4DiffractiveExcitation::CreateStrings(), DefineMomentumInZ(), G4VKinkyStringDecay::FragmentString(), and G4QGSDiffractiveExcitation::String().

146 {
147  theMomentum=aMomentum;
148 }
void G4Parton::SetColour ( G4int  aColour)
inline

Definition at line 88 of file G4Parton.hh.

88 {theColour = aColour;}
void G4Parton::SetIsoSpinZ ( G4double  anIsoSpinZ)
inline

Definition at line 91 of file G4Parton.hh.

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

Definition at line 134 of file G4Parton.hh.

Referenced by G4VKinkyStringDecay::FragmentString().

135 {
136  thePosition=aPosition;
137 }
void G4Parton::SetSpinZ ( G4double  aSpinZ)
inline

Definition at line 94 of file G4Parton.hh.

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

Definition at line 85 of file G4Parton.hh.

85 { theX = anX; }

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