95 G4cout <<
"---------------------------- Annihilation----------------" <<
G4endl;
101 if ( ProjectilePDGcode > 0 ) {
108 G4double M0projectile2 = Pprojectile.mag2();
116 G4double M0target2 = Ptarget.mag2();
119 G4cout <<
"PDG codes " << ProjectilePDGcode <<
" " << TargetPDGcode << G4endl
120 <<
"Pprojec " << Pprojectile <<
" " << Pprojectile.mag() << G4endl
121 <<
"Ptarget " << Ptarget <<
" " << Ptarget.mag() << G4endl
122 <<
"M0 proj target " << std::sqrt( M0projectile2 )
123 <<
" " << std::sqrt( M0target2 ) <<
G4endl;
130 Psum = Pprojectile + Ptarget;
134 G4cout <<
"Psum SqrtS S " << Psum <<
" " << std::sqrt( S ) <<
" " << S <<
G4endl;
140 toCms.rotateZ( -1*Ptmp.phi() );
141 toCms.rotateY( -1*Ptmp.theta() );
146 G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
149 ( 2.0*140.0 + 16.0 )*
MeV;
150 G4double Prel2 = S*S + M0projectile2*M0projectile2 + M0target2*M0target2 -
151 2.0*S*M0projectile2 - 2.0*S*M0target2 - 2.0*M0projectile2*M0target2;
154 if ( Prel2 <= 0.0 ) {
162 G4cout <<
"Annih at Rest X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
171 if ( SqrtS < MesonProdThreshold ) {
172 X_b = 3.13 + 140.0*std::pow( ( MesonProdThreshold - SqrtS )/
GeV, 2.5 );
174 X_b = 6.8*
GeV / SqrtS;
187 G4cout <<
"Annih in Flight X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
188 << G4endl <<
"SqrtS MesonProdThreshold " << SqrtS <<
" " << MesonProdThreshold
194 if ( ProjectilePDGcode == -2212 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
195 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
196 }
else if ( ProjectilePDGcode == -2212 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
197 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
198 }
else if ( ProjectilePDGcode == -2112 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
199 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
200 }
else if ( ProjectilePDGcode == -2112 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
201 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
202 }
else if ( ProjectilePDGcode == -3122 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
203 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
204 }
else if ( ProjectilePDGcode == -3122 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
205 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
206 }
else if ( ProjectilePDGcode == -3112 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
207 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
208 }
else if ( ProjectilePDGcode == -3112 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
209 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
210 }
else if ( ProjectilePDGcode == -3212 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
211 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
212 }
else if ( ProjectilePDGcode == -3212 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
213 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
214 }
else if ( ProjectilePDGcode == -3222 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
215 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
216 }
else if ( ProjectilePDGcode == -3222 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
217 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
218 }
else if ( ProjectilePDGcode == -3312 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
219 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
220 }
else if ( ProjectilePDGcode == -3312 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
221 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
222 }
else if ( ProjectilePDGcode == -3322 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
223 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
224 }
else if ( ProjectilePDGcode == -3322 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
225 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
226 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
227 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
228 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
229 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
231 G4cout <<
"Unknown anti-baryon for FTF annihilation: PDGcodes - "
232 << ProjectilePDGcode <<
" " << TargetPDGcode <<
G4endl;
236 G4cout <<
"Annih Actual X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d <<
G4endl;
239 G4double Xannihilation = X_a + X_b + X_c + X_d;
251 if ( Ksi < X_a / Xannihilation ) {
260 G4int SampledCase = G4RandFlat::shootInt(
G4long( 6 ) );
262 G4int Tmp1( 0 ), Tmp2( 0 );
263 if ( SampledCase == 0 ) {
264 }
else if ( SampledCase == 1 ) {
265 Tmp1 = AQ[1]; AQ[1] = AQ[2]; AQ[2] = Tmp1;
266 }
else if ( SampledCase == 2 ) {
267 Tmp1 = AQ[0]; AQ[0] = AQ[1]; AQ[1] = Tmp1;
268 }
else if ( SampledCase == 3 ) {
269 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp1; AQ[2] = Tmp2;
270 }
else if ( SampledCase == 4 ) {
271 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = Tmp2; AQ[1] = AQ[2]; AQ[2] = Tmp1;
272 }
else if ( SampledCase == 5 ) {
273 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp2; AQ[2] = Tmp1;
304 AveragePt2 = 200.0*200.0; maxPtSquare = S;
308 G4int NumberOfTries( 0 );
313 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
316 AveragePt2 *= ScaleFactor;
319 for (
G4int i = 0; i < 6; i++ ) {
320 Quark_Mom [i] =
GaussianPt( AveragePt2, maxPtSquare );
321 PtSum += Quark_Mom[i];
325 for(
G4int i = 0; i < 6; i++ ) {
326 Quark_Mom[i] -= PtSum;
328 ModMom2[i] = Quark_Mom[i].mag2();
329 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
331 }
while ( SumMt > SqrtS );
333 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
362 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
367 if ( Alfa_R == 1.0 ) {
371 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
376 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
380 if ( Alfa_R == 1.0 ) {
384 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
389 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
393 for (
G4int i = 0; i < 3; i++ ) {
394 if ( Quark_Mom[i].getZ() != 0.0 ) {
395 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
400 for (
G4int i = 3; i < 6; i++ ) {
401 if ( Quark_Mom[i].getZ() != 0.0 ) {
402 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
408 if ( ! Succes )
continue;
410 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
415 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
416 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
418 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
419 WplusProjectile = SqrtS - Beta/WminusTarget;
421 }
while ( ! Succes );
423 G4double SqrtScaleF = std::sqrt( ScaleFactor );
424 for (
G4int i = 0; i < 3; i++ ) {
425 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
426 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
427 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
428 Quark_Mom[i].setZ( Pz );
429 if ( ScaleFactor != 1.0 ) {
430 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
431 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
434 for (
G4int i = 3; i < 6; i++ ) {
435 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
436 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
437 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
438 Quark_Mom[i].setZ( Pz );
439 if ( ScaleFactor != 1.0 ) {
440 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
441 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
448 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
449 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
450 G4double Ystring1 = Pstring1.rapidity();
456 tmp = Quark_Mom[1] + Quark_Mom[4];
457 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
458 std::sqrt( Quark_Mom[4].mag2() + MassQ2 ) );
459 G4double Ystring2 = Pstring2.rapidity();
465 tmp = Quark_Mom[2] + Quark_Mom[5];
466 G4LorentzVector Pstring3( tmp, std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) +
467 std::sqrt( Quark_Mom[5].mag2() + MassQ2 ) );
468 G4double Ystring3 = Pstring3.rapidity();
478 if ( Ystring1 > Ystring2 && Ystring2 > Ystring3 ) {
479 Pprojectile = Pstring1;
480 LeftString = Pstring2;
483 if ( Ystring1 > Ystring3 && Ystring3 > Ystring2 ) {
484 Pprojectile = Pstring1;
485 LeftString = Pstring3;
489 if ( Ystring2 > Ystring1 && Ystring1 > Ystring3 ) {
490 Pprojectile = Pstring2;
491 LeftString = Pstring1;
494 if ( Ystring2 > Ystring3 && Ystring3 > Ystring1 ) {
495 Pprojectile = Pstring2;
496 LeftString = Pstring3;
500 if ( Ystring3 > Ystring1 && Ystring1 > Ystring2 ) {
501 Pprojectile = Pstring3;
502 LeftString = Pstring1;
505 if ( Ystring3 > Ystring2 && Ystring2 > Ystring1 ) {
506 Pprojectile = Pstring3;
507 LeftString = Pstring2;
512 Pprojectile.transform( toLab );
513 LeftString.transform( toLab );
514 Ptarget.transform( toLab );
539 if ( Ksi < (X_a + X_b) / Xannihilation ) {
542 G4cout <<
"Process b, quark - anti-quark annihilation, di-q - anti-di-q string" <<
G4endl;
545 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
546 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
548 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
549 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
550 if ( -AQ[iAQ] == Q[iQ] ) {
551 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
552 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
553 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
554 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
555 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
556 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
563 if ( CandidatsN != 0 ) {
564 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
565 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
566 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
567 LeftQ1 = Q[ CandQ[SampledCase][0] ];
568 LeftQ2 = Q[ CandQ[SampledCase][1] ];
571 G4int Anti_DQ( 0 ), DQ( 0 );
572 if ( std::abs( LeftAQ1 ) > std::abs( LeftAQ2 ) ) {
573 Anti_DQ = 1000*LeftAQ1 + 100*LeftAQ2 - 3;
575 Anti_DQ = 1000*LeftAQ2 + 100*LeftAQ1 - 3;
578 if ( std::abs( LeftQ1 ) > std::abs( LeftQ2 ) ) {
579 DQ = 1000*LeftQ1 + 100*LeftQ2 + 3;
581 DQ = 1000*LeftQ2 + 100*LeftQ1 + 3;
594 Pprojectile.setPx( 0.0 );
595 Pprojectile.setPy( 0.0 );
596 Pprojectile.setPz( 0.0 );
597 Pprojectile.setE( SqrtS );
598 Pprojectile.transform( toLab );
618 if ( Ksi < ( X_a + X_b + X_c ) / Xannihilation ) {
623 G4cout <<
"Process c, quark - anti-quark and string junctions annihilation, 2 strings left."
627 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
628 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
630 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
631 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
632 if ( -AQ[iAQ] == Q[iQ] ) {
633 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
634 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
635 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
636 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
637 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
638 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
645 if ( CandidatsN != 0 ) {
646 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
647 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
648 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
650 LeftQ1 = Q[ CandQ[SampledCase][0] ];
651 LeftQ2 = Q[ CandQ[SampledCase][1] ];
653 LeftQ2 = Q[ CandQ[SampledCase][0] ];
654 LeftQ1 = Q[ CandQ[SampledCase][1] ];
674 AveragePt2 = 200.0*200.0; maxPtSquare = S;
678 G4int NumberOfTries( 0 );
683 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
686 AveragePt2 *= ScaleFactor;
689 for(
G4int i = 0; i < 4; i++ ) {
690 Quark_Mom[i] =
GaussianPt( AveragePt2, maxPtSquare );
691 PtSum += Quark_Mom[i];
695 for (
G4int i = 0; i < 4; i++ ) {
696 Quark_Mom[i] -= PtSum;
698 ModMom2[i] = Quark_Mom[i].mag2();
699 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
701 }
while ( SumMt > SqrtS );
703 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
715 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
720 if ( Alfa_R == 1.0 ) {
723 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
727 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
731 if ( Alfa_R == 1.0 ) {
734 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
738 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
742 for (
G4int i = 0; i < 2; i++ ) {
743 if ( Quark_Mom[i].getZ() != 0.0 ) {
744 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
749 for (
G4int i = 2; i < 4; i++ ) {
750 if ( Quark_Mom[i].getZ() != 0.0 ) {
751 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
757 if ( ! Succes )
continue;
759 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
764 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
765 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
766 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
767 WplusProjectile = SqrtS - Beta/WminusTarget;
769 }
while ( ! Succes );
771 G4double SqrtScaleF = std::sqrt( ScaleFactor );
773 for (
G4int i = 0; i < 2; i++ ) {
774 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
775 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
776 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
777 Quark_Mom[i].setZ( Pz );
778 if ( ScaleFactor != 1.0 ) {
779 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
780 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
784 for (
G4int i = 2; i < 4; i++ ) {
785 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
786 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
787 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
788 Quark_Mom[i].setZ( Pz );
789 if ( ScaleFactor != 1.0 ) {
790 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
791 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
799 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
800 std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) );
801 G4double Ystring1 = Pstring1.rapidity();
807 tmp = Quark_Mom[1] + Quark_Mom[3];
808 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
809 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
810 G4double Ystring2 = Pstring2.rapidity();
816 if ( Ystring1 > Ystring2 ) {
817 Pprojectile = Pstring1;
820 Pprojectile = Pstring2;
825 Pprojectile.transform( toLab );
826 Ptarget.transform( toLab );
848 if ( Ksi < ( X_a + X_b + X_c + X_d ) / Xannihilation ) {
851 G4cout <<
"Process d, only 1 quark - anti-quark string" <<
G4endl;
854 G4int CandidatsN( 0 ), CandAQ[9], CandQ[9];
855 G4int LeftAQ( 0 ), LeftQ( 0 );
857 for (
G4int iAQ1 = 0; iAQ1 < 3; iAQ1++ ) {
858 for (
G4int iAQ2 = 0; iAQ2 < 3; iAQ2++ ) {
859 if ( iAQ1 != iAQ2 ) {
860 for (
G4int iQ1 = 0; iQ1 < 3; iQ1++ ) {
861 for (
G4int iQ2 = 0; iQ2 < 3; iQ2++ ) {
863 if ( -AQ[iAQ1] == Q[iQ1] && -AQ[iAQ2] == Q[iQ2] ) {
864 if ( iAQ1 == 0 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 2; }
865 if ( iAQ1 == 1 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 2; }
867 if ( iAQ1 == 0 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 1; }
868 if ( iAQ1 == 2 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 1; }
870 if ( iAQ1 == 1 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 0; }
871 if ( iAQ1 == 2 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 0; }
873 if ( iQ1 == 0 && iQ2 == 1 ) { CandQ[CandidatsN] = 2; }
874 if ( iQ1 == 1 && iQ2 == 0 ) { CandQ[CandidatsN] = 2; }
876 if ( iQ1 == 0 && iQ2 == 2 ) { CandQ[CandidatsN] = 1; }
877 if ( iQ1 == 2 && iQ2 == 0 ) { CandQ[CandidatsN] = 1; }
879 if ( iQ1 == 1 && iQ2 == 2 ) { CandQ[CandidatsN] = 0; }
880 if ( iQ1 == 2 && iQ2 == 1 ) { CandQ[CandidatsN] = 0; }
890 if ( CandidatsN != 0 ) {
891 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
892 LeftAQ = AQ[ CandAQ[SampledCase] ];
893 LeftQ = Q[ CandQ[SampledCase] ];
904 Pprojectile.setPx( 0.0 );
905 Pprojectile.setPy( 0.0 );
906 Pprojectile.setPz( 0.0 );
907 Pprojectile.setE( SqrtS );
908 Pprojectile.transform( toLab );
948 if ( AveragePt2 <= 0.0 ) {
952 ( std::exp( -maxPtSquare/AveragePt2 ) -1.0 ) );
956 return G4ThreeVector ( Pt*std::cos( phi ), Pt*std::sin( phi ), 0.0 );
963 G4int AbsId = std::abs( IdPDG );
965 Q2 = ( AbsId % 1000 ) / 100;
966 Q3 = ( AbsId % 100 ) / 10;
967 if ( IdPDG < 0 ) { Q1 = -Q1; Q2 = -Q2; Q3 = -Q3; }
976 "G4FTFAnnihilation copy contructor not meant to be called" );
984 "G4FTFAnnihilation = operator not meant to be called" );
992 "G4FTFAnnihilation == operator not meant to be called" );
1000 "G4DiffractiveExcitation != operator not meant to be called" );
G4ThreeVector GaussianPt(G4double AveragePt2, G4double maxPtSquare) const
int operator!=(const G4FTFAnnihilation &right) const
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepLorentzRotation G4LorentzRotation
virtual void SetSecondParton(G4int PDGcode)=0
int operator==(const G4FTFAnnihilation &right) const
void SetTimeOfCreation(G4double aTime)
G4int GetPDGEncoding() const
void UnpackBaryon(G4int IdPDG, G4int &Q1, G4int &Q2, G4int &Q3) const
void SetStatus(const G4int aStatus)
G4ParticleDefinition * GetDefinition() const
G4GLOB_DLL std::ostream G4cout
virtual void SetFirstParton(G4int PDGcode)=0
G4double GetTimeOfCreation()
void IncrementCollisionCount(G4int aCount)
virtual ~G4FTFAnnihilation()
const G4LorentzVector & Get4Momentum() const
G4double GetPDGMass() const
G4double ChooseX(G4double Alpha, G4double Beta) const
void SetPosition(const G4ThreeVector &aPosition)
const G4ThreeVector & GetPosition() const
virtual G4bool Annihilate(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4VSplitableHadron *&AdditionalString, G4FTFParameters *theParameters) const
void Set4Momentum(const G4LorentzVector &a4Momentum)
const G4FTFAnnihilation & operator=(const G4FTFAnnihilation &right)
CLHEP::HepLorentzVector G4LorentzVector