93 G4cout <<
"---------------------------- Annihilation----------------" <<
G4endl;
99 if ( ProjectilePDGcode > 0 ) {
106 G4double M0projectile2 = Pprojectile.mag2();
114 G4double M0target2 = Ptarget.mag2();
117 G4cout <<
"PDG codes " << ProjectilePDGcode <<
" " << TargetPDGcode << G4endl
118 <<
"Pprojec " << Pprojectile <<
" " << Pprojectile.mag() << G4endl
119 <<
"Ptarget " << Ptarget <<
" " << Ptarget.mag() << G4endl
120 <<
"M0 proj target " << std::sqrt( M0projectile2 )
121 <<
" " << std::sqrt( M0target2 ) <<
G4endl;
128 Psum = Pprojectile + Ptarget;
132 G4cout <<
"Psum SqrtS S " << Psum <<
" " << std::sqrt( S ) <<
" " << S <<
G4endl;
138 toCms.rotateZ( -1*Ptmp.phi() );
139 toCms.rotateY( -1*Ptmp.theta() );
144 G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
147 ( 2.0*140.0 + 16.0 )*
MeV;
148 G4double Prel2 = S*S + M0projectile2*M0projectile2 + M0target2*M0target2 -
149 2.0*S*M0projectile2 - 2.0*S*M0target2 - 2.0*M0projectile2*M0target2;
152 if ( Prel2 <= 0.0 ) {
160 G4cout <<
"Annih at Rest X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
169 if ( SqrtS < MesonProdThreshold ) {
172 X_b = 6.8*
GeV / SqrtS;
185 G4cout <<
"Annih in Flight X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d
186 << G4endl <<
"SqrtS MesonProdThreshold " << SqrtS <<
" " << MesonProdThreshold
192 if ((ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
193 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
194 }
else if ((ProjectilePDGcode == -2212 || ProjectilePDGcode == -2214)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
195 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
196 }
else if ((ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
197 X_b *= 4.0; X_c *= 4.0; X_d *= 4.0;
198 }
else if ((ProjectilePDGcode == -2112 || ProjectilePDGcode == -2114)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
199 X_b *= 5.0; X_c *= 5.0; X_d *= 6.0;
200 }
else if ((ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
201 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
202 }
else if ((ProjectilePDGcode == -3122 || ProjectilePDGcode == -3124)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
203 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
204 }
else if ((ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
205 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
206 }
else if ((ProjectilePDGcode == -3112 || ProjectilePDGcode == -3114)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
207 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
208 }
else if ((ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
209 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
210 }
else if ((ProjectilePDGcode == -3212 || ProjectilePDGcode == -3214)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
211 X_b *= 3.0; X_c *= 3.0; X_d *= 2.0;
212 }
else if ((ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
213 X_b *= 4.0; X_c *= 4.0; X_d *= 2.0;
214 }
else if ((ProjectilePDGcode == -3222 || ProjectilePDGcode == -3224)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
215 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
216 }
else if ((ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
217 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
218 }
else if ((ProjectilePDGcode == -3312 || ProjectilePDGcode == -3314)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
219 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
220 }
else if ((ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324)&& ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
221 X_b *= 2.0; X_c *= 2.0; X_d *= 0.0;
222 }
else if ((ProjectilePDGcode == -3322 || ProjectilePDGcode == -3324)&& ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
223 X_b *= 1.0; X_c *= 1.0; X_d *= 0.0;
224 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2212 || TargetPDGcode == 2214 ) ) {
225 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
226 }
else if ( ProjectilePDGcode == -3334 && ( TargetPDGcode == 2112 || TargetPDGcode == 2114 ) ) {
227 X_b *= 0.0; X_c *= 0.0; X_d *= 0.0;
229 G4cout <<
"Unknown anti-baryon for FTF annihilation: PDGcodes - "
230 << ProjectilePDGcode <<
" " << TargetPDGcode <<
G4endl;
234 G4cout <<
"Annih Actual X a b c d " << X_a <<
" " << X_b <<
" " << X_c <<
" " << X_d <<
G4endl;
237 G4double Xannihilation = X_a + X_b + X_c + X_d;
249 if ( Ksi < X_a / Xannihilation ) {
258 G4int SampledCase = G4RandFlat::shootInt(
G4long( 6 ) );
260 G4int Tmp1( 0 ), Tmp2( 0 );
261 if ( SampledCase == 0 ) {
262 }
else if ( SampledCase == 1 ) {
263 Tmp1 = AQ[1]; AQ[1] = AQ[2]; AQ[2] = Tmp1;
264 }
else if ( SampledCase == 2 ) {
265 Tmp1 = AQ[0]; AQ[0] = AQ[1]; AQ[1] = Tmp1;
266 }
else if ( SampledCase == 3 ) {
267 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp1; AQ[2] = Tmp2;
268 }
else if ( SampledCase == 4 ) {
269 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = Tmp2; AQ[1] = AQ[2]; AQ[2] = Tmp1;
270 }
else if ( SampledCase == 5 ) {
271 Tmp1 = AQ[0]; Tmp2 = AQ[1]; AQ[0] = AQ[2]; AQ[1] = Tmp2; AQ[2] = Tmp1;
302 AveragePt2 = 200.0*200.0; maxPtSquare =
S;
306 G4int NumberOfTries( 0 );
309 const G4int maxNumberOfLoops = 1000;
310 G4int loopCounter = 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 ) &&
332 ++loopCounter < maxNumberOfLoops );
333 if ( loopCounter >= maxNumberOfLoops ) {
337 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
367 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
372 if ( Alfa_R == 1.0 ) {
376 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
381 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 ); Quark_Mom[2].setZ( Xaq3 );
385 if ( Alfa_R == 1.0 ) {
389 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
394 Quark_Mom[3].setZ( Xq1 ); Quark_Mom[4].setZ( Xq2 ); Quark_Mom[5].setZ( Xq3 );
398 for (
G4int i = 0; i < 3; i++ ) {
399 if ( Quark_Mom[i].getZ() != 0.0 ) {
400 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
405 for (
G4int i = 3; i < 6; i++ ) {
406 if ( Quark_Mom[i].getZ() != 0.0 ) {
407 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
413 if ( ! Succes )
continue;
415 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
420 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
421 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
423 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
424 WplusProjectile = SqrtS - Beta/WminusTarget;
426 }
while ( ( ! Succes ) &&
427 ++loopCounter < maxNumberOfLoops );
428 if ( loopCounter >= maxNumberOfLoops ) {
432 G4double SqrtScaleF = std::sqrt( ScaleFactor );
433 for (
G4int i = 0; i < 3; i++ ) {
434 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
435 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
436 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
437 Quark_Mom[i].setZ( Pz );
438 if ( ScaleFactor != 1.0 ) {
439 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
440 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
443 for (
G4int i = 3; i < 6; i++ ) {
444 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
445 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
446 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
447 Quark_Mom[i].setZ( Pz );
448 if ( ScaleFactor != 1.0 ) {
449 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
450 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
457 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
458 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
459 G4double Ystring1 = Pstring1.rapidity();
465 tmp = Quark_Mom[1] + Quark_Mom[4];
466 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
467 std::sqrt( Quark_Mom[4].mag2() + MassQ2 ) );
468 G4double Ystring2 = Pstring2.rapidity();
474 tmp = Quark_Mom[2] + Quark_Mom[5];
475 G4LorentzVector Pstring3( tmp, std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) +
476 std::sqrt( Quark_Mom[5].mag2() + MassQ2 ) );
477 G4double Ystring3 = Pstring3.rapidity();
487 if ( Ystring1 > Ystring2 && Ystring2 > Ystring3 ) {
488 Pprojectile = Pstring1;
489 LeftString = Pstring2;
492 if ( Ystring1 > Ystring3 && Ystring3 > Ystring2 ) {
493 Pprojectile = Pstring1;
494 LeftString = Pstring3;
498 if ( Ystring2 > Ystring1 && Ystring1 > Ystring3 ) {
499 Pprojectile = Pstring2;
500 LeftString = Pstring1;
503 if ( Ystring2 > Ystring3 && Ystring3 > Ystring1 ) {
504 Pprojectile = Pstring2;
505 LeftString = Pstring3;
509 if ( Ystring3 > Ystring1 && Ystring1 > Ystring2 ) {
510 Pprojectile = Pstring3;
511 LeftString = Pstring1;
514 if ( Ystring3 > Ystring2 && Ystring2 > Ystring1 ) {
515 Pprojectile = Pstring3;
516 LeftString = Pstring2;
521 Pprojectile.transform( toLab );
522 LeftString.transform( toLab );
523 Ptarget.transform( toLab );
548 if ( Ksi < (X_a + X_b) / Xannihilation ) {
551 G4cout <<
"Process b, quark - anti-quark annihilation, di-q - anti-di-q string" <<
G4endl;
554 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
555 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
557 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
558 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
559 if ( -AQ[iAQ] == Q[iQ] ) {
560 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
561 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
562 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
563 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
564 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
565 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
572 if ( CandidatsN != 0 ) {
573 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
574 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
575 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
576 LeftQ1 = Q[ CandQ[SampledCase][0] ];
577 LeftQ2 = Q[ CandQ[SampledCase][1] ];
580 G4int Anti_DQ( 0 ), DQ( 0 );
581 if ( std::abs( LeftAQ1 ) > std::abs( LeftAQ2 ) ) {
582 Anti_DQ = 1000*LeftAQ1 + 100*LeftAQ2 - 3;
584 Anti_DQ = 1000*LeftAQ2 + 100*LeftAQ1 - 3;
587 if ( std::abs( LeftQ1 ) > std::abs( LeftQ2 ) ) {
588 DQ = 1000*LeftQ1 + 100*LeftQ2 + 3;
590 DQ = 1000*LeftQ2 + 100*LeftQ1 + 3;
603 Pprojectile.setPx( 0.0 );
604 Pprojectile.setPy( 0.0 );
605 Pprojectile.setPz( 0.0 );
606 Pprojectile.setE( SqrtS );
607 Pprojectile.transform( toLab );
627 if ( Ksi < ( X_a + X_b + X_c ) / Xannihilation ) {
632 G4cout <<
"Process c, quark - anti-quark and string junctions annihilation, 2 strings left."
636 G4int CandidatsN( 0 ), CandAQ[9][2], CandQ[9][2];
637 G4int LeftAQ1( 0 ), LeftAQ2( 0 ), LeftQ1( 0 ), LeftQ2( 0 );
639 for (
G4int iAQ = 0; iAQ < 3; iAQ++ ) {
640 for (
G4int iQ = 0; iQ < 3; iQ++ ) {
641 if ( -AQ[iAQ] == Q[iQ] ) {
642 if ( iAQ == 0 ) { CandAQ[CandidatsN][0] = 1; CandAQ[CandidatsN][1] = 2; }
643 if ( iAQ == 1 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 2; }
644 if ( iAQ == 2 ) { CandAQ[CandidatsN][0] = 0; CandAQ[CandidatsN][1] = 1; }
645 if ( iQ == 0 ) { CandQ[CandidatsN][0] = 1; CandQ[CandidatsN][1] = 2; }
646 if ( iQ == 1 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 2; }
647 if ( iQ == 2 ) { CandQ[CandidatsN][0] = 0; CandQ[CandidatsN][1] = 1; }
654 if ( CandidatsN != 0 ) {
655 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
656 LeftAQ1 = AQ[ CandAQ[SampledCase][0] ];
657 LeftAQ2 = AQ[ CandAQ[SampledCase][1] ];
659 LeftQ1 = Q[ CandQ[SampledCase][0] ];
660 LeftQ2 = Q[ CandQ[SampledCase][1] ];
662 LeftQ2 = Q[ CandQ[SampledCase][0] ];
663 LeftQ1 = Q[ CandQ[SampledCase][1] ];
683 AveragePt2 = 200.0*200.0; maxPtSquare =
S;
687 G4int NumberOfTries( 0 );
690 const G4int maxNumberOfLoops = 1000;
691 G4int loopCounter = 0;
694 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
697 AveragePt2 *= ScaleFactor;
700 for(
G4int i = 0; i < 4; i++ ) {
701 Quark_Mom[i] =
GaussianPt( AveragePt2, maxPtSquare );
702 PtSum += Quark_Mom[i];
706 for (
G4int i = 0; i < 4; i++ ) {
707 Quark_Mom[i] -= PtSum;
709 ModMom2[i] = Quark_Mom[i].mag2();
710 SumMt += std::sqrt( ModMom2[i] + MassQ2 );
712 }
while ( ( SumMt > SqrtS ) &&
713 ++loopCounter < maxNumberOfLoops );
714 if ( loopCounter >= maxNumberOfLoops ) {
718 G4double WminusTarget( 0.0 ), WplusProjectile( 0.0 );
731 if ( NumberOfTries == 100*(NumberOfTries/100) ) {
736 if ( Alfa_R == 1.0 ) {
739 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
743 Quark_Mom[0].setZ( Xaq1 ); Quark_Mom[1].setZ( Xaq2 );
747 if ( Alfa_R == 1.0 ) {
750 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
754 Quark_Mom[2].setZ( Xq1 ); Quark_Mom[3].setZ( Xq2 );
758 for (
G4int i = 0; i < 2; i++ ) {
759 if ( Quark_Mom[i].getZ() != 0.0 ) {
760 Alfa += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
765 for (
G4int i = 2; i < 4; i++ ) {
766 if ( Quark_Mom[i].getZ() != 0.0 ) {
767 Beta += ( ScaleFactor * ModMom2[i] + MassQ2 ) / Quark_Mom[i].getZ();
773 if ( ! Succes )
continue;
775 if ( std::sqrt( Alfa ) + std::sqrt( Beta ) > SqrtS ) {
780 G4double DecayMomentum2 = S*S + Alfa*Alfa + Beta*Beta
781 - 2.0*S*Alfa - 2.0*S*Beta - 2.0*Alfa*Beta;
782 WminusTarget = ( S - Alfa + Beta + std::sqrt( DecayMomentum2 ) ) / 2.0 / SqrtS;
783 WplusProjectile = SqrtS - Beta/WminusTarget;
785 }
while ( ( ! Succes ) &&
786 ++loopCounter < maxNumberOfLoops );
787 if ( loopCounter >= maxNumberOfLoops ) {
791 G4double SqrtScaleF = std::sqrt( ScaleFactor );
793 for (
G4int i = 0; i < 2; i++ ) {
794 G4double Pz = WplusProjectile * Quark_Mom[i].getZ() / 2.0 -
795 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
796 ( 2.0 * WplusProjectile * Quark_Mom[i].getZ() );
797 Quark_Mom[i].setZ( Pz );
798 if ( ScaleFactor != 1.0 ) {
799 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
800 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
804 for (
G4int i = 2; i < 4; i++ ) {
805 G4double Pz = -WminusTarget * Quark_Mom[i].getZ() / 2.0 +
806 ( ScaleFactor * ModMom2[i] + MassQ2 ) /
807 ( 2.0 * WminusTarget * Quark_Mom[i].getZ() );
808 Quark_Mom[i].setZ( Pz );
809 if ( ScaleFactor != 1.0 ) {
810 Quark_Mom[i].setX( SqrtScaleF * Quark_Mom[i].getX() );
811 Quark_Mom[i].setY( SqrtScaleF * Quark_Mom[i].getY() );
819 G4LorentzVector Pstring1( tmp, std::sqrt( Quark_Mom[0].mag2() + MassQ2 ) +
820 std::sqrt( Quark_Mom[2].mag2() + MassQ2 ) );
821 G4double Ystring1 = Pstring1.rapidity();
827 tmp = Quark_Mom[1] + Quark_Mom[3];
828 G4LorentzVector Pstring2( tmp, std::sqrt( Quark_Mom[1].mag2() + MassQ2 ) +
829 std::sqrt( Quark_Mom[3].mag2() + MassQ2 ) );
830 G4double Ystring2 = Pstring2.rapidity();
836 if ( Ystring1 > Ystring2 ) {
837 Pprojectile = Pstring1;
840 Pprojectile = Pstring2;
845 Pprojectile.transform( toLab );
846 Ptarget.transform( toLab );
868 if ( Ksi < ( X_a + X_b + X_c + X_d ) / Xannihilation ) {
871 G4cout <<
"Process d, only 1 quark - anti-quark string" <<
G4endl;
874 G4int CandidatsN( 0 ), CandAQ[36], CandQ[36];
875 G4int LeftAQ( 0 ), LeftQ( 0 );
877 for (
G4int iAQ1 = 0; iAQ1 < 3; iAQ1++ ) {
878 for (
G4int iAQ2 = 0; iAQ2 < 3; iAQ2++ ) {
879 if ( iAQ1 != iAQ2 ) {
880 for (
G4int iQ1 = 0; iQ1 < 3; iQ1++ ) {
881 for (
G4int iQ2 = 0; iQ2 < 3; iQ2++ ) {
883 if ( -AQ[iAQ1] == Q[iQ1] && -AQ[iAQ2] == Q[iQ2] ) {
884 if ( iAQ1 == 0 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 2; }
885 if ( iAQ1 == 1 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 2; }
887 if ( iAQ1 == 0 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 1; }
888 if ( iAQ1 == 2 && iAQ2 == 0 ) { CandAQ[CandidatsN] = 1; }
890 if ( iAQ1 == 1 && iAQ2 == 2 ) { CandAQ[CandidatsN] = 0; }
891 if ( iAQ1 == 2 && iAQ2 == 1 ) { CandAQ[CandidatsN] = 0; }
893 if ( iQ1 == 0 && iQ2 == 1 ) { CandQ[CandidatsN] = 2; }
894 if ( iQ1 == 1 && iQ2 == 0 ) { CandQ[CandidatsN] = 2; }
896 if ( iQ1 == 0 && iQ2 == 2 ) { CandQ[CandidatsN] = 1; }
897 if ( iQ1 == 2 && iQ2 == 0 ) { CandQ[CandidatsN] = 1; }
899 if ( iQ1 == 1 && iQ2 == 2 ) { CandQ[CandidatsN] = 0; }
900 if ( iQ1 == 2 && iQ2 == 1 ) { CandQ[CandidatsN] = 0; }
910 if ( CandidatsN != 0 ) {
911 G4int SampledCase = G4RandFlat::shootInt(
G4long( CandidatsN ) );
912 LeftAQ = AQ[ CandAQ[SampledCase] ];
913 LeftQ = Q[ CandQ[SampledCase] ];
924 Pprojectile.setPx( 0.0 );
925 Pprojectile.setPy( 0.0 );
926 Pprojectile.setPz( 0.0 );
927 Pprojectile.setE( SqrtS );
928 Pprojectile.transform( toLab );
968 if ( AveragePt2 <= 0.0 ) {
972 (
G4Exp( -maxPtSquare/AveragePt2 ) -1.0 ) );
976 return G4ThreeVector ( Pt*std::cos( phi ), Pt*std::sin( phi ), 0.0 );
983 G4int AbsId = std::abs( IdPDG );
985 Q2 = ( AbsId % 1000 ) / 100;
986 Q3 = ( AbsId % 100 ) / 10;
987 if ( IdPDG < 0 ) { Q1 = -Q1; Q2 = -Q2; Q3 = -Q3; }
996 "G4FTFAnnihilation copy contructor not meant to be called" );
1004 "G4FTFAnnihilation = operator not meant to be called" );
1012 "G4FTFAnnihilation == operator not meant to be called" );
1020 "G4DiffractiveExcitation != operator not meant to be called" );
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
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
static const double twopi
G4double GetTimeOfCreation()
void IncrementCollisionCount(G4int aCount)
virtual ~G4FTFAnnihilation()
const G4LorentzVector & Get4Momentum() const
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
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