117 if (
Color.size()!=0)
return;
146 RightMom.
setPx(HadronMom.
px() - pt.
x());
147 RightMom.
setPy(HadronMom.
py() - pt.
y());
153 G4double RightMinus = 0.5*(Local1 + Local2);
156 if (LeftMinus <= 0.) {
157 RightMinus = 0.5*(Local1 - Local2);
158 LeftMinus = HadronMom.
minus() - RightMinus;
164 LeftMom.
setPz(0.5*(LeftPlus - LeftMinus));
165 LeftMom.
setE (0.5*(LeftPlus + LeftMinus));
166 RightMom.
setPz(0.5*(RightPlus - RightMinus));
167 RightMom.
setE (0.5*(RightPlus + RightMinus));
172 Color.push_back(Left);
185 for (aSeaPair = 0; aSeaPair < nSeaPair; aSeaPair++)
198 Color.push_back(aParton);
202 aParton->
SetSpinZ(-firstPartonSpinZ);
215 Color.push_back(pColorParton);
266 const G4int maxNumberOfLoops = 1000;
267 G4int loopCounter = -1;
269 ++loopCounter < maxNumberOfLoops ) {;}
270 if ( loopCounter >= maxNumberOfLoops ) {
271 R = 0.99*maxPtSquare;
282 if (isAntiQuark) aPDGCode*=-1;
298 for(
G4int ii=1; ii<100; ii++)
305 if (y>ymax) ymax = y;
308 G4double xMax=1-(totalSea+1)*anXmin;
312 "G4QGSMSplitableHadron - Fatal: Cannot sample parton densities under these constraints.");
314 const G4int maxNumberOfLoops = 1000;
315 G4int loopCounter = 0;
325 }
while( (x2>y) && ++loopCounter < maxNumberOfLoops );
326 if ( loopCounter >= maxNumberOfLoops ) {
327 x1 = 0.5*( anXmin + xMax );
G4double G4Log(G4double x)
static constexpr double twopi
static constexpr double keV
static constexpr double GeV
CLHEP::Hep3Vector G4ThreeVector
G4bool SplitBarion(G4int PDGCode, G4int *q_or_qqbar, G4int *qbar_or_qq)
G4bool SplitMeson(G4int PDGcode, G4int *aEnd, G4int *bEnd)
G4double GetPDGMass() const
G4int GetPDGEncoding() const
G4int GetBaryonNumber() const
G4double GetPDGSpin() const
void SetSpinZ(G4double aSpinZ)
void Set4Momentum(const G4LorentzVector &aMomentum)
void SetPosition(const G4ThreeVector &aPosition)
void SetColour(G4int aColour)
static G4PionMinus * PionMinus()
static G4Pow * GetInstance()
G4double powN(G4double x, G4int n) const
G4double powA(G4double A, G4double y) const
std::deque< G4Parton * > AntiColor
std::deque< G4Parton * > Color
virtual ~G4QGSMSplitableHadron()
G4ThreeVector GaussianPt(G4double widthSquare, G4double maxPtSquare)
G4double minTransverseMass
void DiffractiveSplitUp()
G4Parton * BuildSeaQuark(G4bool isAntiQuark, G4int aPDGCode, G4int nSeaPair)
G4MesonSplitter theMesonSplitter
G4BaryonSplitter theBaryonSplitter
G4double SampleX(G4double anXmin, G4int nSea, G4int theTotalSea, G4double aBeta)
void GetValenceQuarkFlavors(const G4ParticleDefinition *aPart, G4Parton *&Parton1, G4Parton *&Parton2)
const G4ParticleDefinition * GetDefinition() const
const G4LorentzVector & Get4Momentum() const
const G4ThreeVector & GetPosition() const
G4int GetSoftCollisionCount()
ThreeVector shoot(const G4int Ap, const G4int Af)
T max(const T t1, const T t2)
brief Return the largest of the two arguments