diff --git a/Processes/Sibyll/sibyll2.3c.f b/Processes/Sibyll/sibyll2.3c.f index 1a5a80f02fe7b2b393b2724434bf389d8722e938..2073dcfbe6fdc9c2c08fafda23ed1e6503790cc2 100644 --- a/Processes/Sibyll/sibyll2.3c.f +++ b/Processes/Sibyll/sibyll2.3c.f @@ -7,7 +7,7 @@ C SSSSSS IIIIIII BBBBB YY LLLLLLL LLLLLLL C======================================================================= C Code for SIBYLL: hadronic interaction Monte Carlo event generator C======================================================================= -C Version 2.3c02 (Jun-01-2017, modified Dec-11-2017) +C Version 2.3c03 (Jun-01-2017, modified Aug-22-2019) C C with CHARM production C @@ -32,6 +32,8 @@ C friehn@lip.pt C stanev@bartol.udel.edu C C last changes relative to Sibyll 2.3c: +C * added cross section tables for hadron-nitrogen and hadron-oxygen +C (changed S_CCSIG common) C * no remnant in high mass diff. events (pi0-had scattering) C * repaired had-nuc. cross section routine for kaon beams C routine remains inactive in ordinary calls. @@ -469,7 +471,7 @@ C----------------------------------------------------------------------- * /,' ','| F. RIEHN et al., Proc. 35th Int. Cosmic Ray Conf.|', * /,' ','| Bexco, Busan, Korea, cont. 301 (2017) |', * /,' ','| |', - * /,' ','| last modifications: F. Riehn (12/11/2017) |', + * /,' ','| last modifications: F. Riehn (08/22/2019) |', * /,' ','====================================================', * /) @@ -480,7 +482,7 @@ C----------------------------------------------------------------------- CALL BLOCK_INI CALL NUC_GEOM_INI CALL SIG_AIR_INI -c CALL DEC_INI + c... charm frag. normalisation CALL ZNORMAL @@ -4453,8 +4455,11 @@ C-------------------------------------------------------------------- DOUBLE PRECISION FACN DIMENSION FACN(3:10) COMMON /SIB_FAC/ FACN + + DOUBLE PRECISION EPS100 SAVE - + DATA EPS100 /1.D-100/ + DO J=0,NH_max DO I=0,NS_max P_int(I,J) = 0.D0 @@ -4535,16 +4540,20 @@ C-------------------------------------------------------------------- chi2_hard_12 = (1.D0-al1+ga1)*(1.D0-al2-ga2)*chi2_hard chi2_hard_21 = (1.D0-al1-ga1)*(1.D0-al2+ga2)*chi2_hard + ef_11 = max(-0.5D0*(chi2_soft_11+chi2_hard_11),log(EPS100)) + ef_22 = max(-0.5D0*(chi2_soft_22+chi2_hard_22),log(EPS100)) + ef_12 = max(-0.5D0*(chi2_soft_12+chi2_hard_12),log(EPS100)) + ef_21 = max(-0.5D0*(chi2_soft_21+chi2_hard_21),log(EPS100)) + + ef_11 = dexp(ef_11) + ef_22 = dexp(ef_22) + ef_12 = dexp(ef_12) + ef_21 = dexp(ef_21) - ef_11 = dexp(-0.5D0*(chi2_soft_11+chi2_hard_11)) - ef_22 = dexp(-0.5D0*(chi2_soft_22+chi2_hard_22)) - ef_12 = dexp(-0.5D0*(chi2_soft_12+chi2_hard_12)) - ef_21 = dexp(-0.5D0*(chi2_soft_21+chi2_hard_21)) - - esf_11 = ef_11**2 - esf_22 = ef_22**2 - esf_12 = ef_12**2 - esf_21 = ef_21**2 + esf_11 = max(ef_11,EPS100)**2 + esf_22 = max(ef_22,EPS100)**2 + esf_12 = max(ef_12,EPS100)**2 + esf_21 = max(ef_21,EPS100)**2 F_ine = B*(1.D0 - fe_11*esf_11 - fe_12*esf_12 & - fe_21*esf_21 - fe_22*esf_22) @@ -4578,24 +4587,24 @@ C-------------------------------------------------------------------- soft_rec_22 = 1.D0/chi2_soft_22 soft_rec_12 = 1.D0/chi2_soft_12 soft_rec_21 = 1.D0/chi2_soft_21 - chi2_hard_11 = max(chi2_hard_11,EPS10) - chi2_hard_22 = max(chi2_hard_22,EPS10) - chi2_hard_12 = max(chi2_hard_12,EPS10) - chi2_hard_21 = max(chi2_hard_21,EPS10) + chi2_hard_11 = max(chi2_hard_11,EPS100) + chi2_hard_22 = max(chi2_hard_22,EPS100) + chi2_hard_12 = max(chi2_hard_12,EPS100) + chi2_hard_21 = max(chi2_hard_21,EPS100) DO I=0,I0MAX - soft_rec_11 = soft_rec_11*chi2_soft_11 - soft_rec_22 = soft_rec_22*chi2_soft_22 - soft_rec_12 = soft_rec_12*chi2_soft_12 - soft_rec_21 = soft_rec_21*chi2_soft_21 - hard_rec_11 = 1.D0/chi2_hard_11 - hard_rec_22 = 1.D0/chi2_hard_22 - hard_rec_12 = 1.D0/chi2_hard_12 - hard_rec_21 = 1.D0/chi2_hard_21 + soft_rec_11 = max(soft_rec_11*chi2_soft_11,EPS100) + soft_rec_22 = max(soft_rec_22*chi2_soft_22,EPS100) + soft_rec_12 = max(soft_rec_12*chi2_soft_12,EPS100) + soft_rec_21 = max(soft_rec_21*chi2_soft_21,EPS100) + hard_rec_11 = max(1.D0/chi2_hard_11,EPS100) + hard_rec_22 = max(1.D0/chi2_hard_22,EPS100) + hard_rec_12 = max(1.D0/chi2_hard_12,EPS100) + hard_rec_21 = max(1.D0/chi2_hard_21,EPS100) DO J=0,J0MAX - hard_rec_11 = hard_rec_11*chi2_hard_11 - hard_rec_22 = hard_rec_22*chi2_hard_22 - hard_rec_12 = hard_rec_12*chi2_hard_12 - hard_rec_21 = hard_rec_21*chi2_hard_21 + hard_rec_11 = max(hard_rec_11*chi2_hard_11,EPS100) + hard_rec_22 = max(hard_rec_22*chi2_hard_22,EPS100) + hard_rec_12 = max(hard_rec_12*chi2_hard_12,EPS100) + hard_rec_21 = max(hard_rec_21*chi2_hard_21,EPS100) P_int(I,J) = P_int(I,J) & + fe_11*soft_rec_11*hard_rec_11*fac_11 & + fe_22*soft_rec_22*hard_rec_22*fac_22 @@ -5535,7 +5544,7 @@ c read hadron-nucleon cross section from table IF(IPAR(12).eq.3)THEN c distinguish between nuclear cross sections.. IF(IAFLG.eq.0)THEN -c if target is nucleus calc. hadron-nucleus cross section (slow) +c if target is nucleus calc. hadron-nucleus cross section CALL SIB_SIGMA_HNUC(L,IA,SQS,SIGprod,SIGbdif,SIGela) ELSE c if target is air read hadron-air cross section from table @@ -11209,8 +11218,8 @@ C----------------------------------------------------------------------- 10 FORMAT(//,' Table of cross sections, and average number', & ' of minijets and wounded nucleons ') 15 FORMAT(' [sqrt(s) in GeV, cross sections in mbarn]. ') -16 FORMAT(' sqrt(s) sig(pp) sig(pAir) <n_s> <n_j> <n_w>', - & ' sig(pip) sig(piAir) <n_s> <n_j> <n_w>') +16 FORMAT(' sqrt(s) sig(pp) sig(pA) <n_s> <n_j> <n_w>', + & ' sig(pip) sig(piA) <n_s> <n_j> <n_w>') 18 FORMAT(1X,77('-') ) DO J=1,61,1 SQS = 10.D0**(ASQSMIN + DASQS*DBLE(J-1)) @@ -11251,7 +11260,7 @@ C----------------------------------------------------------------------- C======================================================================= - SUBROUTINE SIG_AIR_INI + SUBROUTINE SIG_AIR_INI C----------------------------------------------------------------------- C... Initialize the cross section and interaction lengths on air, @@ -11375,7 +11384,6 @@ c interaction length endif ENDDO END - C======================================================================= SUBROUTINE SAMPLE_TARGET(NW,XCHG,KRMNT,XJET,Irec,IREJ) @@ -11870,6 +11878,7 @@ C. INPUT : SSIG (mbarn) total pp cross section C. SLOPE (GeV**-2) elastic scattering slope for pp C. ALPHA real/imaginary part of the forward pp elastic C. scattering amplitude +C. ALAM coupling to inel. intermediat states C. OUTPUT : SIGT = Total cross section C. SIGEL = Elastic cross section C. SIGQEL = Elastic + Quasi elastic cross section @@ -11896,6 +11905,7 @@ C...................................................................... SIGQSD = (1.D0-FOX)*SIGQSD1 + FOX*SIGQSD2 RETURN END + C======================================================================= SUBROUTINE SIG_H_NUC @@ -11946,7 +11956,7 @@ C...................................................................... END C======================================================================= - + SUBROUTINE GLAUBER2 + (JA,SSIG,SLOPE,ALPHA,ALAM,SIGT,SIGEL,SIGQEL,SIGSD,SIGQSD) @@ -14080,7 +14090,6 @@ c internal END C======================================================================= - SUBROUTINE SIB_SIGMA_HNUC (L,IAT,SQS,SIGprod,SIGbdif,SIGela) C----------------------------------------------------------------------- @@ -17831,8 +17840,7 @@ c Knuth shuffle.. KF2=KPL(2)*10+KPL(3) END -C======================================================================= - + SUBROUTINE TRANSFONSHELL(ECM,XM1in,XM2in,XMAX,IMOD,P1,P2,LBAD) C-----------------------------------------------------------------------