93 G4cout <<
"---------------------------- Annihilation----------------" <<
G4endl;
101 if ( ProjectilePDGcode > 0 ) {
113 G4cout <<
"PDG codes " << ProjectilePDGcode <<
" " << TargetPDGcode << G4endl
116 <<
"M0 proj target " << std::sqrt( M0projectile2 )
117 <<
" " << std::sqrt( M0target2 ) <<
G4endl;
122 common.
S = Psum.
mag2();
123 common.
SqrtS = std::sqrt( common.
S );
125 G4cout <<
"Psum SqrtS S " << Psum <<
" " << common.
SqrtS <<
" " << common.
S <<
G4endl;
131 toCms.rotateZ( -1*Ptmp.phi() );
132 toCms.rotateY( -1*Ptmp.theta() );
144 ( 2.0*140.0 + 16.0 )*
MeV;
146 - 2.0*( common.
S*(M0projectile2 + M0target2) + M0projectile2*M0target2 );
148 G4double X_a = 0.0, X_b = 0.0, X_c = 0.0, X_d = 0.0;
149 if ( Prel2 <= 0.0 ) {
156 G4cout <<
"Annih at Rest X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
163 if ( common.
SqrtS < MesonProdThreshold ) {
178 G4cout <<
"Annih in Flight X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
179 << G4endl <<
"SqrtS MesonProdThreshold " << common.
SqrtS <<
" " << MesonProdThreshold
185 if ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) {
186 if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214 ) {
187 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
188 }
else if ( ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114 ) {
189 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
190 }
else if ( ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124 ) {
191 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
192 }
else if ( ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114 ) {
193 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
194 }
else if ( ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214 ) {
195 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
196 }
else if ( ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224 ) {
197 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
198 }
else if ( ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314 ) {
199 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
200 }
else if ( ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324 ) {
201 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
202 }
else if ( ProjectilePDGcode == -3334 ) {
203 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
207 }
else if ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) {
208 if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214 ) {
209 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
210 }
else if ( ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114 ) {
211 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
212 }
else if ( ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124 ) {
213 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
214 }
else if ( ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114 ) {
215 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
216 }
else if ( ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214 ) {
217 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
218 }
else if ( ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224 ) {
219 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
220 }
else if ( ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314 ) {
221 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
222 }
else if ( ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324 ) {
223 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
224 }
else if ( ProjectilePDGcode == -3334 ) {
225 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
233 G4cout <<
"Unknown anti-baryon for FTF annihilation: PDGcodes - "
234 << ProjectilePDGcode <<
" " << TargetPDGcode <<
G4endl;
237 G4cout <<
"Annih Actual X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d <<
G4endl;
240 G4double Xannihilation = X_a + X_b + X_c + X_d;
250 if ( Ksi < X_a / Xannihilation ) {
254 G4int resultCode = 99;
255 if ( Ksi < (X_a + X_b) / Xannihilation ) {
257 if ( resultCode == 0 ) {
259 }
else if ( resultCode == 99 ) {
264 if ( Ksi < ( X_a + X_b + X_c ) / Xannihilation ) {
266 if ( resultCode == 0 ) {
268 }
else if ( resultCode == 99 ) {
273 if ( Ksi < ( X_a + X_b + X_c + X_d ) / Xannihilation ) {
295 G4int SampledCase = G4RandFlat::shootInt(
G4long( 6 ) );
296 G4int Tmp1 = 0, Tmp2 = 0;
297 switch ( SampledCase ) {
298 case 1 : Tmp1 = common.
AQ[1]; common.
AQ[1] = common.
AQ[2]; common.
AQ[2] = Tmp1;
break;
299 case 2 : Tmp1 = common.
AQ[0]; common.
AQ[0] = common.
AQ[1]; common.
AQ[1] = Tmp1;
break;
300 case 3 : Tmp1 = common.
AQ[0]; Tmp2 = common.
AQ[1]; common.
AQ[0] = common.
AQ[2];
301 common.
AQ[1] = Tmp1; common.
AQ[2] = Tmp2;
break;
302 case 4 : Tmp1 = common.
AQ[0]; Tmp2 = common.
AQ[1]; common.
AQ[0] = Tmp2;
303 common.
AQ[1] = common.
AQ[2]; common.
AQ[2] = Tmp1;
break;
304 case 5 : Tmp1 = common.
AQ[0]; Tmp2 = common.
AQ[1]; common.
AQ[0] = common.
AQ[2];
305 common.
AQ[1] = Tmp2; common.
AQ[2] = Tmp1;
break;
312 G4int NewCode = 0, antiQuark = 0, quark = 0;
314 for (
G4int iString = 0; iString < 3; iString++ ) {
315 if ( iString == 0 ) {
316 antiQuark = common.
AQ[0]; quark = common.
Q[0];
321 }
else if ( iString == 1 ) {
322 quark = common.
Q[1]; antiQuark = common.
AQ[1];
328 antiQuark = common.
AQ[2]; quark = common.
Q[2];
330 G4int absAntiQuark = std::abs( antiQuark ), absQuark = std::abs( quark );
332 if ( absAntiQuark == absQuark ) {
333 if ( absAntiQuark != 3 ) {
348 if ( absAntiQuark > absQuark ) {
349 NewCode = absAntiQuark*100 + absQuark*10 + 1; NewCode *= absAntiQuark/antiQuark;
351 NewCode = absQuark*100 + absAntiQuark*10 + 1; NewCode *= absQuark/quark;
356 if ( ! TestParticle )
return false;
357 if ( iString == 0 ) {
361 }
else if ( iString == 1 ) {
379 G4double AveragePt2 = 200.0*200.0, maxPtSquare = common.
S, SumMt = 0.0, MassQ2 = 0.0,
381 G4int NumberOfTries = 0, loopCounter = 0;
382 const G4int maxNumberOfLoops = 1000;
385 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
388 AveragePt2 *= ScaleFactor;
391 for (
G4int i = 0; i < 6; i++ ) {
392 Quark_Mom [i] =
GaussianPt( AveragePt2, maxPtSquare );
393 PtSum += Quark_Mom[i];
397 for (
G4int i = 0; i < 6; i++ ) {
398 Quark_Mom[i] -= PtSum;
399 ModMom2[i] = Quark_Mom[i].
mag2();
400 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
402 }
while ( ( SumMt > common.
SqrtS ) &&
403 ++loopCounter < maxNumberOfLoops );
404 if ( loopCounter >= maxNumberOfLoops ) {
409 G4double WminusTarget = 0.0, WplusProjectile = 0.0;
410 G4double Alfa_R = 0.5; ScaleFactor = 1.0;
412 NumberOfTries = 0; loopCounter = 0;
416 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
421 for (
G4int iCase = 0; iCase < 2; iCase++ ) {
424 if ( Alfa_R == 1.0 ) {
425 x1 = 1.0 - std::sqrt( r1 );
426 x2 = (1.0 -
x1) * r2;
429 x2 = (1.0 -
x1) *
sqr( std::sin(
pi/2.0*r2 ) );
432 G4int index = iCase*3;
433 Quark_Mom[index].
setZ( x1 ); Quark_Mom[index+1].
setZ( x2 ); Quark_Mom[index+2].
setZ( x3 );
434 for (
G4int i = 0; i < 3; i++ ) {
435 if ( Quark_Mom[index+i].getZ() != 0.0 ) {
436 G4double val = ( ScaleFactor * ModMom2[index+i] + MassQ2 ) / Quark_Mom[index+i].getZ();
447 if ( ! Success )
continue;
448 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > common.
SqrtS ) {
453 - 2.0*( common.
S*(Alfa + Beta) + Alfa*Beta );
454 WminusTarget = ( common.
S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / common.
SqrtS;
455 WplusProjectile = common.
SqrtS - Beta/WminusTarget;
456 }
while ( ( ! Success ) &&
457 ++loopCounter < maxNumberOfLoops );
458 if ( loopCounter >= maxNumberOfLoops ) {
462 G4double SqrtScaleF = std::sqrt( ScaleFactor );
463 for (
G4int iCase = 0; iCase < 2; iCase++ ) {
464 G4int index = iCase*3;
466 if ( iCase == 1 ) w = - WminusTarget;
467 for (
G4int i = 0; i < 3; i++ ) {
469 ( ScaleFactor * ModMom2[index+i] + MassQ2 ) /
470 ( 2.0 * w * Quark_Mom[index+i].getZ() );
471 Quark_Mom[index+i].
setZ( Pz );
472 if ( ScaleFactor != 1.0 ) {
473 Quark_Mom[index+i].
setX( SqrtScaleF * Quark_Mom[index+i].getX() );
474 Quark_Mom[index+i].
setY( SqrtScaleF * Quark_Mom[index+i].getY() );
479 G4double YstringMax = 0.0, YstringMin = 0.0;
480 for (
G4int i = 0; i < 3; i++ ) {
482 G4LorentzVector Pstring( tmp, std::sqrt( Quark_Mom[i].mag2() + MassQ2 ) +
483 std::sqrt( Quark_Mom[i+3].mag2() + MassQ2 ) );
487 if ( Pstring.
e() > 1.0e-30 ) {
488 if ( Pstring.
e() + Pstring.
pz() < 1.0e-30 ) {
490 if ( Pstring.
e() - Pstring.
pz() < 1.0e-30 ) {
499 Pstring1 = Pstring; YstringMax = Ystring;
500 }
else if ( i == 1 ) {
501 if ( Ystring > YstringMax ) {
502 Pstring2 = Pstring1; YstringMin = YstringMax;
503 Pstring1 = Pstring; YstringMax = Ystring;
505 Pstring2 = Pstring; YstringMin = Ystring;
508 if ( Ystring > YstringMax ) {
512 }
else if ( Ystring > YstringMin ) {
564 G4cout <<
"Process b, quark - anti-quark annihilation, di-q - anti-di-q string" <<
G4endl;
567 G4int CandidatsN = 0, CandAQ[9][2], CandQ[9][2];
568 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
569 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
570 if ( -common.
AQ[iAQ] == common.
Q[iQ] ) {
573 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
574 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
575 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
576 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
577 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
578 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
585 G4int LeftAQ1 = 0, LeftAQ2 = 0, LeftQ1 = 0, LeftQ2 = 0;
586 if ( CandidatsN != 0 ) {
587 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
588 LeftAQ1 = common.
AQ[ CandAQ[SampledCase][0] ];
589 LeftAQ2 = common.
AQ[ CandAQ[SampledCase][1] ];
590 LeftQ1 = common.
Q[ CandQ[SampledCase][0] ];
591 LeftQ2 = common.
Q[ CandQ[SampledCase][1] ];
596 G4int Anti_DQ = 0, DQ = 0;
597 if ( std::abs( LeftAQ1 ) > std::abs( LeftAQ2 ) ) {
598 Anti_DQ = 1000*LeftAQ1 + 100*LeftAQ2 - 3;
600 Anti_DQ = 1000*LeftAQ2 + 100*LeftAQ1 - 3;
602 if ( std::abs( LeftQ1 ) > std::abs( LeftQ2 ) ) {
603 DQ = 1000*LeftQ1 + 100*LeftQ2 + 3;
605 DQ = 1000*LeftQ2 + 100*LeftQ1 + 3;
658 G4cout <<
"Process c, quark - anti-quark and string junctions annihilation, 2 strings left."
662 G4int CandidatsN = 0, CandAQ[9][2], CandQ[9][2];
663 G4int LeftAQ1 = 0, LeftAQ2 = 0, LeftQ1 = 0, LeftQ2 = 0;
664 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
665 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
666 if ( -common.
AQ[iAQ] == common.
Q[iQ] ) {
669 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
670 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
671 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
672 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
673 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
674 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
680 if ( CandidatsN != 0 ) {
681 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
682 LeftAQ1 = common.
AQ[ CandAQ[SampledCase][0] ];
683 LeftAQ2 = common.
AQ[ CandAQ[SampledCase][1] ];
685 LeftQ1 = common.
Q[ CandQ[SampledCase][0] ];
686 LeftQ2 = common.
Q[ CandQ[SampledCase][1] ];
688 LeftQ2 = common.
Q[ CandQ[SampledCase][0] ];
689 LeftQ1 = common.
Q[ CandQ[SampledCase][1] ];
696 G4int NewCode = 0, antiQuark = 0, quark = 0;
698 for (
G4int iString = 0; iString < 2; iString++ ) {
699 if ( iString == 0 ) {
700 antiQuark = LeftAQ1; quark = LeftQ1;
706 quark = LeftQ2; antiQuark = LeftAQ2;
712 G4int absAntiQuark = std::abs( antiQuark ), absQuark = std::abs( quark );
714 if ( absAntiQuark == absQuark ) {
715 if ( absAntiQuark != 3 ) {
730 if ( absAntiQuark > absQuark ) {
731 NewCode = absAntiQuark*100 + absQuark*10 + 1; NewCode *= absAntiQuark/antiQuark;
733 NewCode = absQuark*100 + absAntiQuark*10 + 1; NewCode *= absQuark/quark;
737 if ( ! TestParticle )
return 99;
738 if ( iString == 0 ) {
752 G4double AveragePt2 = 200.0*200.0, maxPtSquare = common.
S, SumMt = 0.0, MassQ2 = 0.0,
754 G4int NumberOfTries = 0, loopCounter = 0;
755 const G4int maxNumberOfLoops = 1000;
758 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
761 AveragePt2 *= ScaleFactor;
764 for(
G4int i = 0; i < 4; i++ ) {
765 Quark_Mom[i] =
GaussianPt( AveragePt2, maxPtSquare );
766 PtSum += Quark_Mom[i];
770 for (
G4int i = 0; i < 4; i++ ) {
771 Quark_Mom[i] -= PtSum;
772 ModMom2[i] = Quark_Mom[i].
mag2();
773 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
775 }
while ( ( SumMt > common.
SqrtS ) &&
776 ++loopCounter < maxNumberOfLoops );
777 if ( loopCounter >= maxNumberOfLoops ) {
782 G4double WminusTarget = 0.0, WplusProjectile = 0.0, Alfa_R = 0.5; ScaleFactor = 1.0;
784 NumberOfTries = 0, loopCounter = 0;
788 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
793 for (
G4int iCase = 0; iCase < 2; iCase++ ) {
795 if ( Alfa_R == 1.0 ) {
799 x = 1.0 - std::sqrt( r);
802 x =
sqr( std::sin(
pi/2.0*r ) );
804 G4int index = iCase*2;
805 Quark_Mom[index].
setZ( x ); Quark_Mom[index+1].
setZ( 1.0 - x );
806 for (
G4int i = 0; i < 2; i++ ) {
807 if ( Quark_Mom[i].getZ() != 0.0 ) {
808 G4double val = ( ScaleFactor * ModMom2[index+i] + MassQ2 ) / Quark_Mom[index+i].getZ();
819 if ( ! Success )
continue;
820 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > common.
SqrtS ) {
825 - 2.0*( common.
S*(Alfa + Beta) + Alfa*Beta );
826 WminusTarget = ( common.
S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / common.
SqrtS;
827 WplusProjectile = common.
SqrtS - Beta/WminusTarget;
828 }
while ( ( ! Success ) &&
829 ++loopCounter < maxNumberOfLoops );
830 if ( loopCounter >= maxNumberOfLoops ) {
834 G4double SqrtScaleF = std::sqrt( ScaleFactor );
836 G4double Ystring1 = 0.0, Ystring2 = 0.0;
837 for (
G4int iCase = 0; iCase < 2; iCase++ ) {
838 G4int index = iCase*2;
839 for (
G4int i = 0; i < 2; i++ ) {
841 if ( iCase == 1 ) w = - WminusTarget;
843 - ( ScaleFactor * ModMom2[index+i] + MassQ2 ) /
844 ( 2.0 * w * Quark_Mom[index+i].getZ() );
845 Quark_Mom[index+i].
setZ( Pz );
846 if ( ScaleFactor != 1.0 ) {
847 Quark_Mom[index+i].
setX( SqrtScaleF * Quark_Mom[index+i].getX() );
848 Quark_Mom[index+i].
setY( SqrtScaleF * Quark_Mom[index+i].getY() );
852 for (
G4int iCase = 0; iCase < 2; iCase++ ) {
854 G4LorentzVector Pstring( tmp, std::sqrt( Quark_Mom[iCase].mag2() + MassQ2 ) +
855 std::sqrt( Quark_Mom[iCase+2].mag2() + MassQ2 ) );
859 if ( Pstring.
e() > 1.0e-30 ) {
860 if ( Pstring.
e() + Pstring.
pz() < 1.0e-30 ) {
862 if ( Pstring.
e() - Pstring.
pz() < 1.0e-30 ) {
870 Pstring1 = Pstring; Ystring1 = Ystring;
872 Pstring2 = Pstring; Ystring2 = Ystring;
875 if ( Ystring1 > Ystring2 ) {
914 G4cout <<
"Process d, only 1 quark - anti-quark string" <<
G4endl;
920 G4int CandidatsN = 0, CandAQ[36], CandQ[36];
921 G4int LeftAQ = 0, LeftQ = 0;
922 for (
G4int iAQ1 = 0; iAQ1 < 3; iAQ1++ ) {
923 for (
G4int iAQ2 = 0; iAQ2 < 3; iAQ2++ ) {
924 if ( iAQ1 != iAQ2 ) {
925 for (
G4int iQ1 = 0; iQ1 < 3; iQ1++ ) {
926 for (
G4int iQ2 = 0; iQ2 < 3; iQ2++ ) {
928 if ( -common.
AQ[iAQ1] == common.
Q[iQ1] && -common.
AQ[iAQ2] == common.
Q[iQ2] ) {
929 if ( ( iAQ1 == 0 && iAQ2 == 1 ) || ( iAQ1 == 1 && iAQ2 == 0 ) ) {
930 CandAQ[CandidatsN] = 2;
931 }
else if ( ( iAQ1 == 0 && iAQ2 == 2 ) || ( iAQ1 == 2 && iAQ2 == 0 ) ) {
932 CandAQ[CandidatsN] = 1;
933 }
else if ( ( iAQ1 == 1 && iAQ2 == 2 ) || ( iAQ1 == 2 && iAQ2 == 1 ) ) {
934 CandAQ[CandidatsN] = 0;
936 if ( ( iQ1 == 0 && iQ2 == 1 ) || ( iQ1 == 1 && iQ2 == 0 ) ) {
937 CandQ[CandidatsN] = 2;
938 }
else if ( ( iQ1 == 0 && iQ2 == 2 ) || ( iQ1 == 2 && iQ2 == 0 ) ) {
939 CandQ[CandidatsN] = 1;
940 }
else if ( ( iQ1 == 1 && iQ2 == 2 ) || ( iQ1 == 2 && iQ2 == 1 ) ) {
941 CandQ[CandidatsN] = 0;
952 if ( CandidatsN != 0 ) {
953 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
954 LeftAQ = common.
AQ[ CandAQ[SampledCase] ];
955 LeftQ = common.
Q[ CandQ[SampledCase] ];
962 G4int aAQ = std::abs( LeftAQ ), aQ = std::abs( LeftQ );
984 NewCode = aAQ*100 + aQ*10 + 1; NewCode *= aAQ/LeftAQ;
986 NewCode = aQ*100 + aAQ*10 + 1; NewCode *= aQ/LeftQ;
991 if ( ! TestParticle )
return false;
1042 if ( AveragePt2 <= 0.0 ) {
1046 (
G4Exp( -maxPtSquare/AveragePt2 ) -1.0 ) );
1050 return G4ThreeVector ( Pt*std::cos( phi ), Pt*std::sin( phi ), 0.0 );
1057 G4int AbsId = std::abs( IdPDG );
1059 Q2 = ( AbsId % 1000 ) / 100;
1060 Q3 = ( AbsId % 100 ) / 10;
1061 if ( IdPDG < 0 ) { Q1 = -Q1; Q2 = -Q2; Q3 = -Q3; }
1070 "G4FTFAnnihilation copy contructor not meant to be called" );
1078 "G4FTFAnnihilation = operator not meant to be called" );
1086 "G4FTFAnnihilation == operator not meant to be called" );
1094 "G4DiffractiveExcitation != operator not meant to be called" );
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
void SetStatus(const G4int aStatus)
virtual void SetSecondParton(G4int PDGcode)=0
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
const G4ParticleDefinition * GetDefinition() const
HepLorentzVector & transform(const HepRotation &)
G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const
CLHEP::Hep3Vector G4ThreeVector
virtual void SetFirstParton(G4int PDGcode)=0
static G4ParticleTable * GetParticleTable()
static constexpr double MeV
void SetProjMinNonDiffMass(const G4double aValue)
Float_t x1[n_points_granero]
const G4FTFAnnihilation & operator=(const G4FTFAnnihilation &right)
virtual ~G4FTFAnnihilation()
static int FASTCALL common(PROLOG_STATE *state, int tok)
virtual G4Parton * GetNextParton()=0
G4double GetPDGMass() const
G4double G4Log(G4double x)
void SetTarMinDiffMass(const G4double aValue)
G4LorentzVector Pprojectile
void SetTimeOfCreation(G4double aTime)
static G4Pow * GetInstance()
HepLorentzRotation & rotateZ(double delta)
const G4ThreeVector & GetPosition() const
G4double powA(G4double A, G4double y) const
int operator!=(const G4FTFAnnihilation &right) const
static constexpr double twopi
HepLorentzRotation inverse() const
virtual G4Parton * GetNextAntiParton()=0
int operator==(const G4FTFAnnihilation &right) const
G4bool Create3QuarkAntiQuarkStrings(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4VSplitableHadron *&AdditionalString, G4FTFParameters *theParameters, CommonVariables &common) const
void SetPosition(const G4ThreeVector &aPosition)
G4double ChooseX(G4double Alpha, G4double Beta) const
void SetDefinition(const G4ParticleDefinition *aDefinition)
virtual G4bool Annihilate(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4VSplitableHadron *&AdditionalString, G4FTFParameters *theParameters) const
G4int GetPDGEncoding() const
G4GLOB_DLL std::ostream G4cout
void UnpackBaryon(G4int IdPDG, G4int &Q1, G4int &Q2, G4int &Q3) const
void SetProjMinDiffMass(const G4double aValue)
Hep3Vector boostVector() const
const G4LorentzVector & Get4Momentum() const
static constexpr double pi
CLHEP::HepLorentzVector G4LorentzVector
HepLorentzRotation & rotateY(double delta)
G4int Create2QuarkAntiQuarkStrings(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4FTFParameters *theParameters, CommonVariables &common) const
G4int Create1DiquarkAntiDiquarkString(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, CommonVariables &common) const
G4LorentzRotation RandomRotation
G4bool Create1QuarkAntiQuarkString(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4FTFParameters *theParameters, CommonVariables &common) const
Float_t x2[n_points_geant4]
void SetTarMinNonDiffMass(const G4double aValue)
static constexpr double GeV
G4double GetTimeOfCreation()
void Set4Momentum(const G4LorentzVector &a4Momentum)
void Set4Momentum(const G4LorentzVector &aMomentum)
void IncrementCollisionCount(G4int aCount)