99 if (
Parton[0] != NULL )
return;
103 G4int stringStart, stringEnd;
119 return Parton[ PartonInd ];
130 return Parton[ PartonInd ];
153 G4int* bEnd )
const {
158 G4int absPDGcode = std::abs( PDGcode );
160 if ( absPDGcode < 1000 ) {
161 G4int heavy = absPDGcode/100;
162 G4int light = (absPDGcode % 100)/10;
165 if (PDGcode < 0 ) anti *= -1;
176 G4int j1000 = PDGcode/1000;
177 G4int j100 = (PDGcode % 1000)/100;
178 G4int j10 = (PDGcode % 100)/10;
180 if ( std::abs( j100 ) >= std::abs( j10 ) ) {
181 if ( random < udspin1 ) {
183 *bEnd =
Diquark( j100, j10, 1 );
184 }
else if ( random < udspin1 + uuspin1 ) {
186 *bEnd =
Diquark( j1000, j100, 1 );
190 *bEnd =
Diquark( j1000, j10, j1000 != j100 ? 0 : 1 );
194 if ( random < udspin1 ) {
197 *bEnd =
Diquark( j100, j10, j100 != j10 ? 0 : 10 );
198 }
else if ( random < udspin1 + uuspin1 ) {
200 *bEnd =
Diquark( j1000, j100, 1 );
203 *bEnd =
Diquark( j1000, j10, 1 );
214 G4int diquarkPDG =
std::max( std::abs( aquark ), std::abs( bquark ) ) * 1000 +
215 std::min( std::abs( aquark ), std::abs( bquark ) ) * 100 +
217 return ( aquark > 0 && bquark > 0 ) ? diquarkPDG : -1*diquarkPDG;
void ChooseStringEnds(G4int PDGcode, G4int *aEnd, G4int *bEnd) const
G4Parton * GetNextParton()
G4int Diquark(G4int aquark, G4int bquark, G4int Spin) const
G4DiffractiveSplitableHadron()
G4int GetPDGEncoding() const
G4Parton * GetNextAntiParton()
G4ParticleDefinition * GetDefinition() const
void SetFirstParton(G4int PDGcode)
void SetSecondParton(G4int PDGcode)
~G4DiffractiveSplitableHadron()
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments