72 fArrayParCollBaryonProj[indexTune].SetTune(indexTune);
73 fArrayParCollMesonProj[indexTune].SetTune(indexTune);
74 fArrayParCollPionProj[indexTune].SetTune(indexTune);
89 G4double Puubar( 1.0/3.0 ), Pddbar( 1.0/3.0 ), Pssbar( 1.0/3.0 );
102 G4int ProjectileabsPDGcode = std::abs( ProjectilePDGcode );
104 G4double ProjectileMass2 = ProjectileMass * ProjectileMass;
106 G4int ProjectileBaryonNumber( 0 ), AbsProjectileBaryonNumber( 0 ), AbsProjectileCharge( 0 );
107 G4bool ProjectileIsNucleus =
false;
110 ProjectileIsNucleus =
true;
112 AbsProjectileBaryonNumber = std::abs( ProjectileBaryonNumber );
114 if ( ProjectileBaryonNumber > 1 ) {
115 ProjectilePDGcode = 2212; ProjectileabsPDGcode = 2212;
117 ProjectilePDGcode = -2212; ProjectileabsPDGcode = 2212;
120 ProjectileMass2 =
sqr( ProjectileMass );
124 G4double TargetMass2 = TargetMass * TargetMass;
127 G4double Elab = std::sqrt( Plab*Plab + ProjectileMass2 );
128 G4double KineticEnergy = Elab - ProjectileMass;
130 G4double S = ProjectileMass2 + TargetMass2 + 2.0*TargetMass*Elab;
132 #ifdef debugFTFparams
133 G4cout <<
"--------- FTF Parameters --------------" <<
G4endl <<
"Proj Plab "
134 << ProjectilePDGcode <<
" " << Plab <<
G4endl <<
"Mass KinE " << ProjectileMass
135 <<
" " << KineticEnergy <<
G4endl <<
" A Z " << theA <<
" " << theZ <<
G4endl;
138 G4double Ylab, Xtotal( 0.0 ), Xelastic( 0.0 ), Xannihilation( 0.0 );
139 G4int NumberOfTargetNucleons;
141 Ylab = 0.5 *
G4Log( (Elab + Plab)/(Elab - Plab) );
146 #ifdef debugFTFparams
150 TargetMass /= GeV; TargetMass2 /= (GeV*GeV);
151 ProjectileMass /= GeV; ProjectileMass2 /= (GeV*GeV);
156 G4int NumberOfTargetProtons = theZ;
157 G4int NumberOfTargetNeutrons = theA - theZ;
158 NumberOfTargetNucleons = NumberOfTargetProtons + NumberOfTargetNeutrons;
161 if ( AbsProjectileBaryonNumber <= 1 ) {
172 Xtotal = ( NumberOfTargetProtons * xTtP + NumberOfTargetNeutrons * xTtN ) / NumberOfTargetNucleons;
173 Xelastic = ( NumberOfTargetProtons * xElP + NumberOfTargetNeutrons * xElN ) / NumberOfTargetNucleons;
177 Xelastic /= millibarn;
179 #ifdef debugFTFparams
180 G4cout<<
"Estimated cross sections (total and elastic) of h+N interactions "<<Xtotal<<
" "<<Xelastic<<
" (mb)"<<
G4endl;
185 if ( ProjectileIsNucleus && ProjectileBaryonNumber > 1 ) {
187 #ifdef debugFTFparams
188 G4cout<<
"Projectile is a nucleus: A and Z - "<<ProjectileBaryonNumber<<
" "<<ProjectileCharge<<
G4endl;
201 #ifdef debugFTFparams
202 G4cout <<
"XsPP (total and elastic) " << XtotPP/millibarn <<
" " << XelPP/millibarn <<
" (mb)"<<
G4endl
203 <<
"XsPN (total and elastic) " << XtotPN/millibarn <<
" " << XelPN/millibarn <<
" (mb)"<<
G4endl;
207 AbsProjectileCharge * NumberOfTargetProtons * XtotPP +
208 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
209 NumberOfTargetNeutrons * XtotPP
211 ( AbsProjectileCharge * NumberOfTargetNeutrons +
212 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
213 NumberOfTargetProtons ) * XtotPN
214 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
216 AbsProjectileCharge * NumberOfTargetProtons * XelPP +
217 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
218 NumberOfTargetNeutrons * XelPP
220 ( AbsProjectileCharge * NumberOfTargetNeutrons +
221 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
222 NumberOfTargetProtons ) * XelPN
223 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
227 Xelastic /= millibarn;
232 if ( ProjectilePDGcode >= -4112 && ProjectilePDGcode <= -1114 ) {
235 #ifdef debugFTFparams
236 G4cout<<
"Projectile is a anti-baryon or anti-nucleus - "<<ProjectileBaryonNumber<<
" "<<ProjectileCharge<<
G4endl;
237 G4cout<<
"(Only non-strange and strange baryons are considered)"<<
G4endl;
240 G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
241 G4double MesonProdThreshold = ProjectileMass + TargetMass +
242 ( 2.0 * 0.14 + 0.016 );
244 if ( PlabPerParticle < 40.0*MeV ) {
253 G4double Xasmpt = 36.04 + 0.304*LogS*LogS;
254 LogS =
G4Log( SqrtS / 20.74 );
255 G4double Basmpt = 11.92 + 0.3036*LogS*LogS;
256 G4double R0 = std::sqrt( 0.40874044*Xasmpt - Basmpt );
258 G4double FlowF = SqrtS / std::sqrt( ECMSsqr*ECMSsqr + ProjectileMass2*ProjectileMass2 +
259 TargetMass2*TargetMass2 - 2.0*ECMSsqr*ProjectileMass2
260 - 2.0*ECMSsqr*TargetMass2
261 - 2.0*ProjectileMass2*TargetMass2 );
263 Xtotal = Xasmpt * ( 1.0 + 13.55*FlowF/R0/R0/R0*
264 (1.0 - 4.47/SqrtS + 12.38/ECMSsqr - 12.43/SqrtS/ECMSsqr) );
266 Xasmpt = 4.4 + 0.101*LogS*LogS;
267 Xelastic = Xasmpt * ( 1.0 + 59.27*FlowF/R0/R0/R0*
268 (1.0 - 6.95/SqrtS + 23.54/ECMSsqr - 25.34/SqrtS/ECMSsqr ) );
272 if ( SqrtS < MesonProdThreshold ) {
280 X_c = 2.0*FlowF*
sqr( ProjectileMass + TargetMass )/ECMSsqr;
285 G4double Xann_on_P( 0.0), Xann_on_N( 0.0 );
287 if ( ProjectilePDGcode == -2212 ) {
288 Xann_on_P = X_a + X_b*5.0 + X_c*5.0 + X_d*6.0;
289 Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_d*4.0;
290 }
else if ( ProjectilePDGcode == -2112 ) {
291 Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_d*4.0;
292 Xann_on_N = X_a + X_b*5.0 + X_c*5.0 + X_d*6.0;
293 }
else if ( ProjectilePDGcode == -3122 ) {
294 Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
295 Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
296 }
else if ( ProjectilePDGcode == -3112 ) {
297 Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
298 Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_d*2.0;
299 }
else if ( ProjectilePDGcode == -3212 ) {
300 Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
301 Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
302 }
else if ( ProjectilePDGcode == -3222 ) {
303 Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_d*2.0;
304 Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
305 }
else if ( ProjectilePDGcode == -3312 ) {
306 Xann_on_P = X_a + X_b*1.0 + X_c*1.0 + X_d*0.0;
307 Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
308 }
else if ( ProjectilePDGcode == -3322 ) {
309 Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
310 Xann_on_N = X_a + X_b*1.0 + X_c*1.0 + X_d*0.0;
311 }
else if ( ProjectilePDGcode == -3334 ) {
312 Xann_on_P = X_a + X_b*0.0 + X_c*0.0 + X_d*0.0;
313 Xann_on_N = X_a + X_b*0.0 + X_c*0.0 + X_d*0.0;
315 G4cout <<
"Unknown anti-baryon for FTF annihilation" <<
G4endl;
320 if ( ! ProjectileIsNucleus ) {
321 Xannihilation = ( NumberOfTargetProtons * Xann_on_P + NumberOfTargetNeutrons * Xann_on_N )
322 / NumberOfTargetNucleons;
325 ( AbsProjectileCharge * NumberOfTargetProtons +
326 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
327 NumberOfTargetNeutrons ) * Xann_on_P
329 ( AbsProjectileCharge * NumberOfTargetNeutrons +
330 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
331 NumberOfTargetProtons ) * Xann_on_N
332 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
336 MesonProdThreshold = ProjectileMass + TargetMass + (0.14 + 0.08);
337 if ( SqrtS > MesonProdThreshold ) {
338 Xftf = 36.0 * ( 1.0 - MesonProdThreshold/SqrtS );
341 Xtotal = Xelastic + Xannihilation + Xftf;
343 #ifdef debugFTFparams
344 G4cout <<
"Plab Xtotal, Xelastic Xinel Xftf " << Plab <<
" " << Xtotal <<
" " << Xelastic
345 <<
" " << Xtotal - Xelastic <<
" " << Xtotal - Xelastic - Xannihilation <<
" (mb)"<<
G4endl
346 <<
"Plab Xelastic/Xtotal, Xann/Xin " << Plab <<
" " << Xelastic/Xtotal <<
" "
347 << Xannihilation/(Xtotal - Xelastic) <<
G4endl;
352 if ( Xtotal == 0.0 ) {
363 Xtotal = ( NumberOfTargetProtons * XtotPP + NumberOfTargetNeutrons * XtotPN )
364 / NumberOfTargetNucleons;
365 Xelastic = ( NumberOfTargetProtons * XelPP + NumberOfTargetNeutrons * XelPN )
366 / NumberOfTargetNucleons;
369 Xelastic /= millibarn;
382 if ( ( Xtotal - Xelastic ) == 0.0 ) {
389 SetSlope( Xtotal*Xtotal/16.0/pi/Xelastic/0.3894 );
402 #ifdef debugFTFparams
405 G4cout<<
"Parameters of excitation for projectile "<<ProjectilePDGcode<<
G4endl;
408 if ( (ProjectilePDGcode == 2212) || (ProjectilePDGcode == 2112) ) {
425 SetParams( 0, fArrayParCollBaryonProj[indexTune].GetProc0A1(),
426 fArrayParCollBaryonProj[indexTune].GetProc0B1(),
427 fArrayParCollBaryonProj[indexTune].GetProc0A2(),
428 fArrayParCollBaryonProj[indexTune].GetProc0B2(),
429 fArrayParCollBaryonProj[indexTune].GetProc0A3(),
430 fArrayParCollBaryonProj[indexTune].GetProc0Atop(),
431 fArrayParCollBaryonProj[indexTune].GetProc0Ymin() );
432 SetParams( 1, fArrayParCollBaryonProj[indexTune].GetProc1A1(),
433 fArrayParCollBaryonProj[indexTune].GetProc1B1(),
434 fArrayParCollBaryonProj[indexTune].GetProc1A2(),
435 fArrayParCollBaryonProj[indexTune].GetProc1B2(),
436 fArrayParCollBaryonProj[indexTune].GetProc1A3(),
437 fArrayParCollBaryonProj[indexTune].GetProc1Atop(),
438 fArrayParCollBaryonProj[indexTune].GetProc1Ymin() );
440 SetParams( 2, 6.0/Xinel, 0.0, -6.0/Xinel*16.28, 3.0, 0.0, 0.0, 0.93 );
441 SetParams( 3, 6.0/Xinel, 0.0, -6.0/Xinel*16.28, 3.0, 0.0, 0.0, 0.93 );
443 SetParams( 4, fArrayParCollBaryonProj[indexTune].GetProc4A1(),
444 fArrayParCollBaryonProj[indexTune].GetProc4B1(),
445 fArrayParCollBaryonProj[indexTune].GetProc4A2(),
446 fArrayParCollBaryonProj[indexTune].GetProc4B2(),
447 fArrayParCollBaryonProj[indexTune].GetProc4A3(),
448 fArrayParCollBaryonProj[indexTune].GetProc4Atop(),
449 fArrayParCollBaryonProj[indexTune].GetProc4Ymin() );
451 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
452 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
453 SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
460 if ( ! fArrayParCollBaryonProj[indexTune].IsProjDiffDissociation() )
461 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.0 );
462 if ( ! fArrayParCollBaryonProj[indexTune].IsTgtDiffDissociation() )
463 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.0 );
468 if ( NumberOfTargetNucleons > 26 ) {
484 }
else if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2112 ) {
493 SetParams( 0, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 1000.0 );
494 SetParams( 1, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 1000.0 );
496 SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93 );
497 SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93 );
498 SetParams( 4, 1.0, 0.0 , 0.0, 0.0 , 0.0, 0.0 , 0.93 );
500 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
501 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
502 SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
505 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
509 if ( ! fArrayParCollBaryonProj[indexTune].IsProjDiffDissociation() )
510 SetParams( 2, 0.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
511 if ( ! fArrayParCollBaryonProj[indexTune].IsTgtDiffDissociation() )
512 SetParams( 3, 0.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
525 }
else if ( ProjectileabsPDGcode == 211 || ProjectilePDGcode == 111 ) {
538 SetParams( 0, fArrayParCollPionProj[indexTune].GetProc0A1(),
539 fArrayParCollPionProj[indexTune].GetProc0B1(),
540 fArrayParCollPionProj[indexTune].GetProc0A2(),
541 fArrayParCollPionProj[indexTune].GetProc0B2(),
542 fArrayParCollPionProj[indexTune].GetProc0A3(),
543 fArrayParCollPionProj[indexTune].GetProc0Atop(),
544 fArrayParCollPionProj[indexTune].GetProc0Ymin() );
545 SetParams( 1, fArrayParCollPionProj[indexTune].GetProc1A1(),
546 fArrayParCollPionProj[indexTune].GetProc1B1(),
547 fArrayParCollPionProj[indexTune].GetProc1A2(),
548 fArrayParCollPionProj[indexTune].GetProc1B2(),
549 fArrayParCollPionProj[indexTune].GetProc1A3(),
550 fArrayParCollPionProj[indexTune].GetProc1Atop(),
551 fArrayParCollPionProj[indexTune].GetProc1Ymin() );
552 SetParams( 2, fArrayParCollPionProj[indexTune].GetProc2A1(),
553 fArrayParCollPionProj[indexTune].GetProc2B1(),
554 fArrayParCollPionProj[indexTune].GetProc2A2(),
555 fArrayParCollPionProj[indexTune].GetProc2B2(),
556 fArrayParCollPionProj[indexTune].GetProc2A3(),
557 fArrayParCollPionProj[indexTune].GetProc2Atop(),
558 fArrayParCollPionProj[indexTune].GetProc2Ymin() );
559 SetParams( 3, fArrayParCollPionProj[indexTune].GetProc3A1(),
560 fArrayParCollPionProj[indexTune].GetProc3B1(),
561 fArrayParCollPionProj[indexTune].GetProc3A2(),
562 fArrayParCollPionProj[indexTune].GetProc3B2(),
563 fArrayParCollPionProj[indexTune].GetProc3A3(),
564 fArrayParCollPionProj[indexTune].GetProc3Atop(),
565 fArrayParCollPionProj[indexTune].GetProc3Ymin() );
566 SetParams( 4, fArrayParCollPionProj[indexTune].GetProc4A1(),
567 fArrayParCollPionProj[indexTune].GetProc4B1(),
568 fArrayParCollPionProj[indexTune].GetProc4A2(),
569 fArrayParCollPionProj[indexTune].GetProc4B2(),
570 fArrayParCollPionProj[indexTune].GetProc4A3(),
571 fArrayParCollPionProj[indexTune].GetProc4Atop(),
572 fArrayParCollPionProj[indexTune].GetProc4Ymin() );
576 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
577 if ( ! fArrayParCollPionProj[indexTune].IsProjDiffDissociation() )
578 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
579 if ( ! fArrayParCollPionProj[indexTune].IsTgtDiffDissociation() )
580 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
607 }
else if ( ProjectileabsPDGcode == 321 || ProjectileabsPDGcode == 311 ||
608 ProjectilePDGcode == 130 || ProjectilePDGcode == 310 ) {
611 SetParams( 0, 60.0 , 2.5 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
612 SetParams( 1, 6.0 , 1.0 , -24.33 , 2.0 , 0.0, 0.0 , 1.40 );
613 SetParams( 2, 2.76, 1.2 , -22.5 , 2.7 ,0.04, 0.0 , 1.40 );
614 SetParams( 3, 1.09, 0.5 , -8.88 , 2. ,0.05, 0.0 , 1.40 );
615 SetParams( 4, 1.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 0.93 );
616 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
617 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
618 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
632 if ( ProjectileabsPDGcode > 1000 ) {
634 SetParams( 0, 13.71, 1.75, -30.69, 3.0 , 0.0, 1.0 , 0.93 );
635 SetParams( 1, 25.0, 1.0, -50.34, 1.5 , 0.0, 0.0 , 1.4 );
637 SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);
638 SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93);
639 SetParams( 4, 1.0, 0.0 , -2.01 , 0.5 , 0.0, 0.0 , 1.4 );
641 SetParams( 2, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
642 SetParams( 3, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
643 SetParams( 4, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
648 SetParams( 0, 60.0 , 2.5 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
649 SetParams( 1, 6.0 , 1.0 , -24.33 , 2.0 , 0.0, 0.0 , 1.40 );
650 SetParams( 2, 2.76, 1.2 , -22.5 , 2.7 ,0.04, 0.0 , 1.40 );
651 SetParams( 3, 1.09, 0.5 , -8.88 , 2. ,0.05, 0.0 , 1.40 );
652 SetParams( 4, 1.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 0.93 );
655 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
656 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
657 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 );
676 #ifdef debugFTFparams
690 if ( ProjectileabsPDGcode < 1000 ) {
709 double coeff = fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP1();
713 if ( fArrayParCollMesonProj[indexTune].IsNuclearTgtDestructP1_ADEP() )
715 coeff *=
G4double(NumberOfTargetNucleons);
717 double exfactor =
G4Exp( fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP2()
718 * (Ylab-fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP3()) );
720 coeff /= ( 1.+ exfactor );
726 coeff = fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP2();
727 exfactor =
G4Exp( fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP3()
728 * (Ylab-fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP4()) );
730 coeff /= ( 1. + exfactor );
736 }
else if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2112 ) {
741 G4Exp( 4.0*(Ylab - 2.1) )/( 1.0 +
G4Exp( 4.0*(Ylab - 2.1) ) ) );
745 ( 1.0 +
G4Exp( 4.0*(Ylab - 2.5) ) ) )*GeV*GeV );
773 coeff = fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP1();
777 if ( fArrayParCollBaryonProj[indexTune].IsNuclearProjDestructP1_NBRNDEP() )
779 coeff *=
G4double(AbsProjectileBaryonNumber);
781 double exfactor =
G4Exp( fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP2()*
782 (Ylab-fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP3()) );
784 coeff /= ( 1.+ exfactor );
789 coeff = fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP1();
793 if ( fArrayParCollBaryonProj[indexTune].IsNuclearTgtDestructP1_ADEP() )
795 coeff *=
G4double(NumberOfTargetNucleons);
797 exfactor =
G4Exp( fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP2()*
798 (Ylab-fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP3()) );
800 coeff /= ( 1.+ exfactor );
806 coeff = fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP2();
807 exfactor =
G4Exp( fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP3()*
808 (Ylab-fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP4()) );
810 coeff /= ( 1. + exfactor );
818 #ifdef debugFTFparams
886 G4int Qleft = std::max( partID/100, 1 );
887 G4int Qright = std::max( (partID/ 10)%10, 1 );
888 if ( Qleft < 6 && Qright < 6 ) {
890 }
else if ( Qleft < 6 && Qright > 6 ) {
891 G4int q1 = std::max( std::min( Qright/10, 5 ), 1 );
892 G4int q2 = std::max( std::min( Qright%10, 5 ), 1 );
894 }
else if ( Qleft > 6 && Qright < 6 ) {
895 G4int q1 = std::max( std::min( Qleft/10, 5 ), 1 );
896 G4int q2 = std::max( std::min( Qleft%10, 5 ), 1 );
899 return EstimatedMass;
908 if (Prob < 0.) Prob=0.;
914 if (Prob < 0.) Prob=0.;
921 if ( StringMass )
delete StringMass;
926void G4FTFParameters::Reset()
959 for (
G4int i = 0; i < 4; i++ ) {
960 for (
G4int j = 0; j < 7; j++ ) {
G4double S(G4double temp)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
G4VComponentCrossSection * GetComponentCrossSection(const G4String &name)
static G4CrossSectionDataSetRegistry * Instance()
void SetTarMinNonDiffMass(const G4double aValue)
G4double R2ofNuclearDestruction
void SetProjMinDiffMass(const G4double aValue)
G4double GetProbLogDistrPrD()
G4double GetCofNuclearDestructionPr()
void SetTotalCrossSection(const G4double Xtotal)
void SetExcitationEnergyPerWoundedNucleon(const G4double aValue)
G4double ExcitationEnergyPerWoundedNucleon
void SetProbabilityOfElasticScatt(const G4double Xtotal, const G4double Xelastic)
void SetElastisCrossSection(const G4double Xelastic)
void SetQuarkProbabilitiesAtGluonSplitUp(const G4double Puubar, const G4double Pddbar, const G4double Pssbar)
G4double GetPt2ofNuclearDestruction()
G4double GetProbLogDistr()
void SetMaxPt2ofNuclearDestruction(const G4double aValue)
G4double GetProjMinNonDiffMass()
G4double ProcParams[5][7]
G4double ProbOfSameQuarkExchange
G4double GetAvaragePt2ofElasticScattering()
G4double TarMinNonDiffMass
G4double ProbOfInelInteraction
void SetPt2Kink(const G4double aValue)
void SetSlope(const G4double Slope)
G4double GetTarMinDiffMass()
G4double RadiusOfHNinteractions2
void SetDeltaProbAtQuarkExchange(const G4double aValue)
G4double MaxPt2ofNuclearDestruction
G4double GetTarMinNonDiffMass()
void SetAvaragePt2ofElasticScattering(const G4double aPt2)
G4double DeltaProbAtQuarkExchange
G4double GetProcProb(const G4int ProcN, const G4double y)
G4double CofNuclearDestruction
void SetTarMinDiffMass(const G4double aValue)
void SetProjMinNonDiffMass(const G4double aValue)
void SetCofNuclearDestructionPr(const G4double aValue)
void SetR2ofNuclearDestruction(const G4double aValue)
void SetProbLogDistrPrD(const G4double aValue)
G4double CofNuclearDestructionPr
void SetGamma0(const G4double Gamma0)
void SetAveragePt2(const G4double aValue)
G4double GetDeltaProbAtQuarkExchange()
G4double DofNuclearDestruction
G4double GetExcitationEnergyPerWoundedNucleon()
void SetProbabilityOfAnnihilation(const G4double aValue)
void InitForInteraction(const G4ParticleDefinition *, G4int theA, G4int theZ, G4double s)
void SetDofNuclearDestruction(const G4double aValue)
G4double ProbabilityOfAnnihilation
G4double GetProjMinDiffMass()
G4double GetProbOfSameQuarkExchange()
G4double ProbabilityOfElasticScatt
G4double GetDofNuclearDestruction()
void SetRadiusOfHNinteractions2(const G4double Radius2)
void SetParams(const G4int ProcN, const G4double A1, const G4double B1, const G4double A2, const G4double B2, const G4double A3, const G4double Atop, const G4double Ymin)
G4double Pt2ofNuclearDestruction
G4bool EnableDiffDissociationForBGreater10
Control over whether to do nucleon-hadron diffractive dissociation or not.
void SetPt2ofNuclearDestruction(const G4double aValue)
G4double GetR2ofNuclearDestruction()
G4double GetCofNuclearDestruction()
void SetProbLogDistr(const G4double aValue)
void SetCofNuclearDestruction(const G4double aValue)
G4double ProjMinNonDiffMass
void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue)
G4double AvaragePt2ofElasticScattering
void SetProbOfSameQuarkExchange(const G4double aValue)
G4double MaxNumberOfCollisions
G4double FTFXannihilation
void SetInelasticCrossSection(const G4double Xinelastic)
static const G4int sNumberOfTunes
static G4FTFTunings * Instance()
G4int GetIndexTune(const G4ParticleDefinition *particleDef, const G4double ekin) const
static G4HadronicParameters * Instance()
G4bool EnableDiffDissociationForBGreater10() const
static G4Neutron * Neutron()
G4double GetPDGMass() const
G4int GetPDGEncoding() const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
static G4Proton * Definition()
static G4Proton * Proton()
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
G4double minMassQQbarStr[5][5]
G4double minMassQDiQStr[5][5][5]