89 G4cout <<
"---------------------------- Annihilation----------------" <<
G4endl;
95 if ( ProjectilePDGcode > 0 ) {
102 G4double M0projectile2 = Pprojectile.mag2();
110 G4double M0target2 = Ptarget.mag2();
113 G4cout <<
"PDG codes " << ProjectilePDGcode <<
" " << TargetPDGcode << G4endl
114 <<
"Pprojec " << Pprojectile <<
" " << Pprojectile.mag() << G4endl
115 <<
"Ptarget " << Ptarget <<
" " << Ptarget.mag() << G4endl
116 <<
"M0 proj target " << std::sqrt( M0projectile2 )
117 <<
" " << std::sqrt( M0target2 ) <<
G4endl;
124 Psum = Pprojectile + Ptarget;
128 G4cout <<
"Psum SqrtS S " << Psum <<
" " << std::sqrt( S ) <<
" " << S <<
G4endl;
134 toCms.rotateZ( -1*Ptmp.phi() );
135 toCms.rotateY( -1*Ptmp.theta() );
140 G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
143 ( 2.0*140.0 + 16.0 )*
MeV;
144 G4double Prel2 = S*S + M0projectile2*M0projectile2 + M0target2*M0target2 -
145 2.0*S*M0projectile2 - 2.0*S*M0target2 - 2.0*M0projectile2*M0target2;
148 if ( Prel2 <= 0.0 ) {
156 G4cout <<
"Annih at Rest X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
165 if ( SqrtS < MesonProdThreshold ) {
166 X_b = 3.13 + 140.0*std::pow( ( MesonProdThreshold - SqrtS )/
GeV, 2.5 );
168 X_b = 6.8*
GeV / SqrtS;
181 G4cout <<
"Annih in Flight X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
182 << G4endl <<
"SqrtS MesonProdThreshold " << SqrtS <<
" " << MesonProdThreshold
188 if ((ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
189 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
190 }
else if ((ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
191 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
192 }
else if ((ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
193 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
194 }
else if ((ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
195 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
196 }
else if ((ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
197 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
198 }
else if ((ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
199 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
200 }
else if ((ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
201 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
202 }
else if ((ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
203 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
204 }
else if ((ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
205 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
206 }
else if ((ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
207 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
208 }
else if ((ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
209 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
210 }
else if ((ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
211 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
212 }
else if ((ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
213 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
214 }
else if ((ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
215 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
216 }
else if ((ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
217 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
218 }
else if ((ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
219 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
220 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
221 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
222 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
223 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
225 G4cout <<
"Unknown anti-baryon for FTF annihilation: PDGcodes - "
226 << ProjectilePDGcode <<
" " << TargetPDGcode <<
G4endl;
230 G4cout <<
"Annih Actual X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d <<
G4endl;
233 G4double Xannihilation = X_a + X_b + X_c + X_d;
245 if ( Ksi < X_a / Xannihilation ) {
254 G4int SampledCase = G4RandFlat::shootInt(
G4long( 6 ) );
256 G4int Tmp1( 0 ), Tmp2( 0 );
257 if ( SampledCase == 0 ) {
258 }
else if ( SampledCase == 1 ) {
259 Tmp1 = AQ[1]; AQ[1] = AQ[2]; AQ[2] = Tmp1;
260 }
else if ( SampledCase == 2 ) {
261 Tmp1 = AQ[0]; AQ[0] = AQ[1]; AQ[1] = Tmp1;
262 }
else if ( SampledCase == 3 ) {
263 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp1; AQ[2] = Tmp2;
264 }
else if ( SampledCase == 4 ) {
265 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = Tmp2; AQ[1] = AQ[2]; AQ[2] = Tmp1;
266 }
else if ( SampledCase == 5 ) {
267 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp2; AQ[2] = Tmp1;
298 AveragePt2 = 200.0*200.0; maxPtSquare = S;
302 G4int NumberOfTries( 0 );
307 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
310 AveragePt2 *= ScaleFactor;
313 for (
G4int i = 0; i < 6; i++ ) {
314 Quark_Mom [i] =
GaussianPt( AveragePt2, maxPtSquare );
315 PtSum += Quark_Mom[i];
319 for(
G4int i = 0; i < 6; i++ ) {
320 Quark_Mom[i] -= PtSum;
322 ModMom2[i] = Quark_Mom[i].mag2();
323 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
325 }
while ( SumMt > SqrtS );
327 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
356 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
361 if ( Alfa_R == 1.0 ) {
365 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
370 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
374 if ( Alfa_R == 1.0 ) {
378 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
383 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
387 for (
G4int i = 0; i < 3; i++ ) {
388 if ( Quark_Mom[i].getZ() != 0.0 ) {
389 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
394 for (
G4int i = 3; i < 6; i++ ) {
395 if ( Quark_Mom[i].getZ() != 0.0 ) {
396 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
402 if ( ! Succes )
continue;
404 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
409 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
410 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
412 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
413 WplusProjectile = SqrtS - Beta/WminusTarget;
415 }
while ( ! Succes );
417 G4double SqrtScaleF = std::sqrt( ScaleFactor );
418 for (
G4int i = 0; i < 3; i++ ) {
419 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
420 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
421 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
422 Quark_Mom[i].setZ( Pz );
423 if ( ScaleFactor != 1.0 ) {
424 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
425 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
428 for (
G4int i = 3; i < 6; i++ ) {
429 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
430 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
431 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
432 Quark_Mom[i].setZ( Pz );
433 if ( ScaleFactor != 1.0 ) {
434 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
435 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
442 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
443 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
444 G4double Ystring1 = Pstring1.rapidity();
450 tmp = Quark_Mom[1] + Quark_Mom[4];
451 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
452 std::sqrt( Quark_Mom[4].mag2() + MassQ2 ) );
453 G4double Ystring2 = Pstring2.rapidity();
459 tmp = Quark_Mom[2] + Quark_Mom[5];
460 G4LorentzVector Pstring3( tmp, std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) +
461 std::sqrt( Quark_Mom[5].mag2() + MassQ2 ) );
462 G4double Ystring3 = Pstring3.rapidity();
472 if ( Ystring1 > Ystring2 && Ystring2 > Ystring3 ) {
473 Pprojectile = Pstring1;
474 LeftString = Pstring2;
477 if ( Ystring1 > Ystring3 && Ystring3 > Ystring2 ) {
478 Pprojectile = Pstring1;
479 LeftString = Pstring3;
483 if ( Ystring2 > Ystring1 && Ystring1 > Ystring3 ) {
484 Pprojectile = Pstring2;
485 LeftString = Pstring1;
488 if ( Ystring2 > Ystring3 && Ystring3 > Ystring1 ) {
489 Pprojectile = Pstring2;
490 LeftString = Pstring3;
494 if ( Ystring3 > Ystring1 && Ystring1 > Ystring2 ) {
495 Pprojectile = Pstring3;
496 LeftString = Pstring1;
499 if ( Ystring3 > Ystring2 && Ystring2 > Ystring1 ) {
500 Pprojectile = Pstring3;
501 LeftString = Pstring2;
506 Pprojectile.transform( toLab );
507 LeftString.transform( toLab );
508 Ptarget.transform( toLab );
533 if ( Ksi < (X_a + X_b) / Xannihilation ) {
536 G4cout <<
"Process b, quark - anti-quark annihilation, di-q - anti-di-q string" <<
G4endl;
539 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
540 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
542 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
543 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
544 if ( -AQ[iAQ] == Q[iQ] ) {
545 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
546 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
547 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
548 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
549 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
550 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
557 if ( CandidatsN != 0 ) {
558 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
559 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
560 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
561 LeftQ1 = Q[ CandQ[SampledCase][0] ];
562 LeftQ2 = Q[ CandQ[SampledCase][1] ];
565 G4int Anti_DQ( 0 ), DQ( 0 );
566 if ( std::abs( LeftAQ1 ) > std::abs( LeftAQ2 ) ) {
567 Anti_DQ = 1000*LeftAQ1 + 100*LeftAQ2 - 3;
569 Anti_DQ = 1000*LeftAQ2 + 100*LeftAQ1 - 3;
572 if ( std::abs( LeftQ1 ) > std::abs( LeftQ2 ) ) {
573 DQ = 1000*LeftQ1 + 100*LeftQ2 + 3;
575 DQ = 1000*LeftQ2 + 100*LeftQ1 + 3;
588 Pprojectile.setPx( 0.0 );
589 Pprojectile.setPy( 0.0 );
590 Pprojectile.setPz( 0.0 );
591 Pprojectile.setE( SqrtS );
592 Pprojectile.transform( toLab );
612 if ( Ksi < ( X_a + X_b + X_c ) / Xannihilation ) {
617 G4cout <<
"Process c, quark - anti-quark and string junctions annihilation, 2 strings left."
621 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
622 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
624 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
625 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
626 if ( -AQ[iAQ] == Q[iQ] ) {
627 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
628 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
629 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
630 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
631 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
632 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
639 if ( CandidatsN != 0 ) {
640 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
641 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
642 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
644 LeftQ1 = Q[ CandQ[SampledCase][0] ];
645 LeftQ2 = Q[ CandQ[SampledCase][1] ];
647 LeftQ2 = Q[ CandQ[SampledCase][0] ];
648 LeftQ1 = Q[ CandQ[SampledCase][1] ];
668 AveragePt2 = 200.0*200.0; maxPtSquare = S;
672 G4int NumberOfTries( 0 );
677 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
680 AveragePt2 *= ScaleFactor;
683 for(
G4int i = 0; i < 4; i++ ) {
684 Quark_Mom[i] =
GaussianPt( AveragePt2, maxPtSquare );
685 PtSum += Quark_Mom[i];
689 for (
G4int i = 0; i < 4; i++ ) {
690 Quark_Mom[i] -= PtSum;
692 ModMom2[i] = Quark_Mom[i].mag2();
693 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
695 }
while ( SumMt > SqrtS );
697 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
709 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
714 if ( Alfa_R == 1.0 ) {
717 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
721 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
725 if ( Alfa_R == 1.0 ) {
728 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
732 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
736 for (
G4int i = 0; i < 2; i++ ) {
737 if ( Quark_Mom[i].getZ() != 0.0 ) {
738 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
743 for (
G4int i = 2; i < 4; i++ ) {
744 if ( Quark_Mom[i].getZ() != 0.0 ) {
745 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
751 if ( ! Succes )
continue;
753 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
758 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
759 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
760 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
761 WplusProjectile = SqrtS - Beta/WminusTarget;
763 }
while ( ! Succes );
765 G4double SqrtScaleF = std::sqrt( ScaleFactor );
767 for (
G4int i = 0; i < 2; i++ ) {
768 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
769 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
770 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
771 Quark_Mom[i].setZ( Pz );
772 if ( ScaleFactor != 1.0 ) {
773 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
774 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
778 for (
G4int i = 2; i < 4; i++ ) {
779 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
780 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
781 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
782 Quark_Mom[i].setZ( Pz );
783 if ( ScaleFactor != 1.0 ) {
784 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
785 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
793 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
794 std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) );
795 G4double Ystring1 = Pstring1.rapidity();
801 tmp = Quark_Mom[1] + Quark_Mom[3];
802 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
803 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
804 G4double Ystring2 = Pstring2.rapidity();
810 if ( Ystring1 > Ystring2 ) {
811 Pprojectile = Pstring1;
814 Pprojectile = Pstring2;
819 Pprojectile.transform( toLab );
820 Ptarget.transform( toLab );
842 if ( Ksi < ( X_a + X_b + X_c + X_d ) / Xannihilation ) {
845 G4cout <<
"Process d, only 1 quark - anti-quark string" <<
G4endl;
848 G4int CandidatsN( 0 ), CandAQ[36], CandQ[36];
849 G4int LeftAQ( 0 ), LeftQ( 0 );
851 for (
G4int iAQ1 = 0; iAQ1 < 3; iAQ1++ ) {
852 for (
G4int iAQ2 = 0; iAQ2 < 3; iAQ2++ ) {
853 if ( iAQ1 != iAQ2 ) {
854 for (
G4int iQ1 = 0; iQ1 < 3; iQ1++ ) {
855 for (
G4int iQ2 = 0; iQ2 < 3; iQ2++ ) {
857 if ( -AQ[iAQ1] == Q[iQ1] && -AQ[iAQ2] == Q[iQ2] ) {
858 if ( iAQ1 == 0 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 2; }
859 if ( iAQ1 == 1 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 2; }
861 if ( iAQ1 == 0 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 1; }
862 if ( iAQ1 == 2 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 1; }
864 if ( iAQ1 == 1 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 0; }
865 if ( iAQ1 == 2 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 0; }
867 if ( iQ1 == 0 && iQ2 == 1 ) { CandQ[CandidatsN] = 2; }
868 if ( iQ1 == 1 && iQ2 == 0 ) { CandQ[CandidatsN] = 2; }
870 if ( iQ1 == 0 && iQ2 == 2 ) { CandQ[CandidatsN] = 1; }
871 if ( iQ1 == 2 && iQ2 == 0 ) { CandQ[CandidatsN] = 1; }
873 if ( iQ1 == 1 && iQ2 == 2 ) { CandQ[CandidatsN] = 0; }
874 if ( iQ1 == 2 && iQ2 == 1 ) { CandQ[CandidatsN] = 0; }
884 if ( CandidatsN != 0 ) {
885 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
886 LeftAQ = AQ[ CandAQ[SampledCase] ];
887 LeftQ = Q[ CandQ[SampledCase] ];
898 Pprojectile.setPx( 0.0 );
899 Pprojectile.setPy( 0.0 );
900 Pprojectile.setPz( 0.0 );
901 Pprojectile.setE( SqrtS );
902 Pprojectile.transform( toLab );
942 if ( AveragePt2 <= 0.0 ) {
946 ( std::exp( -maxPtSquare/AveragePt2 ) -1.0 ) );
950 return G4ThreeVector ( Pt*std::cos( phi ), Pt*std::sin( phi ), 0.0 );
957 G4int AbsId = std::abs( IdPDG );
959 Q2 = ( AbsId % 1000 ) / 100;
960 Q3 = ( AbsId % 100 ) / 10;
961 if ( IdPDG < 0 ) { Q1 = -Q1; Q2 = -Q2; Q3 = -Q3; }
970 "G4FTFAnnihilation copy contructor not meant to be called" );
978 "G4FTFAnnihilation = operator not meant to be called" );
986 "G4FTFAnnihilation == operator not meant to be called" );
994 "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)
const 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