Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4Parton.hh
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#ifndef G4Parton_h
30#define G4Parton_h 1
31
32// ------------------------------------------------------------
33// GEANT 4 class header file
34//
35// ---------------- G4Parton ----------------
36// by Gunter Folger, June 1998.
37// class for Parton (inside a string) used by Parton String Models
38// ------------------------------------------------------------
39
40#include "globals.hh"
41#include "G4ThreeVector.hh"
42#include "G4LorentzVector.hh"
43#include <iostream>
44#include "G4ParticleTable.hh"
45#include "Randomize.hh"
46
48{
49 public:
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 }
60
62 G4Parton(const G4Parton &right);
63
64 ~G4Parton();
65
66 G4Parton & operator=(const G4Parton &right);
67
68 G4bool operator==(const G4Parton &right) const;
69
70 G4bool operator!=(const G4Parton &right) const;
71
72 G4int GetPDGcode() const;
73
75 void SetDefinition(G4ParticleDefinition * aDefinition); // Uzhi
76
77 void DefineMomentumInZ(G4double aLightConeMomentum, G4bool aDirection);
78 void DefineMomentumInZ(G4double aLightConeMomentum,G4double aLightConeE, G4bool aDirection);
79
80 const G4ThreeVector & GetPosition()const;
81 void SetPosition(const G4ThreeVector &aPosition);
82
83 const G4LorentzVector & Get4Momentum() const;
84 void Set4Momentum(const G4LorentzVector & aMomentum);
85
86 void SetX(G4double anX) { theX = anX; }
87 G4double GetX() {return theX;}
88
89 void SetColour(G4int aColour) {theColour = aColour;}
90 G4int GetColour() {return theColour;}
91
92 void SetIsoSpinZ(G4double anIsoSpinZ) {theIsoSpinZ = anIsoSpinZ;}
93 G4double GetIsoSpinZ() {return theIsoSpinZ;}
94
95 void SetSpinZ(G4double aSpinZ) {theSpinZ = aSpinZ;}
96 G4double GetSpinZ() {return theSpinZ;}
97
98 private:
99 G4double GetMass();
100
101 public:
104
105 private:
106 G4LorentzVector theMomentum;
107 G4ThreeVector thePosition;
108
109 G4int theColour;
110 G4double theIsoSpinZ;
111 G4double theSpinZ;
112
113 G4double theX;
114
115};
116
117inline G4bool G4Parton::operator==(const G4Parton &right) const
118{
119 return this==&right;
120}
121
122inline G4bool G4Parton::operator!=(const G4Parton &right) const
123{
124 return this!=&right;
125}
126
128{
129 return PDGencoding;
130}
131
133{
134 return thePosition;
135}
136
137inline void G4Parton::SetPosition(const G4ThreeVector &aPosition)
138{
139 thePosition=aPosition;
140}
141
142
144{
145 return theMomentum;
146}
147
148inline void G4Parton::Set4Momentum(const G4LorentzVector & aMomentum)
149{
150 theMomentum=aMomentum;
151}
152
153
154inline
155G4double G4Parton::GetMass()
156{
157 return theDefinition->GetPDGMass();
158}
159
160inline
162{
163 return theDefinition;
164}
165
166inline void G4Parton::SetDefinition(G4ParticleDefinition * aDefinition) // Uzhi
167{
168 theDefinition = aDefinition;
170}
171
172
173#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4UniformRand()
Definition: Randomize.hh:52
G4ParticleDefinition * theDefinition
Definition: G4Parton.hh:103
G4bool operator==(const G4Parton &right) const
Definition: G4Parton.hh:117
G4double GetX()
Definition: G4Parton.hh:87
void SetIsoSpinZ(G4double anIsoSpinZ)
Definition: G4Parton.hh:92
void SetSpinZ(G4double aSpinZ)
Definition: G4Parton.hh:95
G4double GetIsoSpinZ()
Definition: G4Parton.hh:93
G4double GetSpinZ()
Definition: G4Parton.hh:96
G4ParticleDefinition * GetDefinition()
Definition: G4Parton.hh:161
G4Parton & operator=(const G4Parton &right)
Definition: G4Parton.cc:119
G4bool operator!=(const G4Parton &right) const
Definition: G4Parton.hh:122
const G4ThreeVector & GetPosition() const
Definition: G4Parton.hh:132
G4int GetPDGcode() const
Definition: G4Parton.hh:127
void SetX(G4double anX)
Definition: G4Parton.hh:86
~G4Parton()
Definition: G4Parton.cc:136
void Set4Momentum(const G4LorentzVector &aMomentum)
Definition: G4Parton.hh:148
void DefineMomentumInZ(G4double aLightConeMomentum, G4bool aDirection)
Definition: G4Parton.cc:142
G4Parton()
Definition: G4Parton.hh:50
void SetPosition(const G4ThreeVector &aPosition)
Definition: G4Parton.hh:137
void SetDefinition(G4ParticleDefinition *aDefinition)
Definition: G4Parton.hh:166
G4int GetColour()
Definition: G4Parton.hh:90
void SetColour(G4int aColour)
Definition: G4Parton.hh:89
const G4LorentzVector & Get4Momentum() const
Definition: G4Parton.hh:143
G4int PDGencoding
Definition: G4Parton.hh:102