diff --git a/Processes/Sibyll/sibyll2.3c.f b/Processes/Sibyll/sibyll2.3c.f
index 1a5a80f02fe7b2b393b2724434bf389d8722e938..e757320c8c8cf72a652bd14b4eb880d92b93f187 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
+      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,3561 @@ c     Knuth shuffle..
       KF2=KPL(2)*10+KPL(3)     
       END
             
+C.=========================================================================
+C.  Library of programs for the generation of nucleus-nucleus interactions
+C.  and the study of nucleus-induced cosmic ray showers
+C.
+C.  September 2001  changes in FPNI, and SIGMA_INI,
+C.                  new SIGMA_PP, SIGMA_PPI, SIGMA_KP  (R. Engel)
+C.
+C.  may  1996       small bug  corrected by Dieter Heck in NUC_CONF 
+C.
+C.  march 1996      small modification to the superposition code
+C.
+C.  February 1996   change to FPNI to give an interaction length
+C.                   also  at very low energy  
+C.
+C.  Version 1.01  september 1995 
+C.       (small corrections P.L.)
+C.       the random number generator is called as S_RNDM(0)
+C.  ------------------------------------------------------
+C.  Version 1.00  April 1992
+C.
+C.  Authors:
+C.
+C.     J. Engel
+C.     T.K Gaisser
+C.     P.Lipari
+C.     T. Stanev
+C. 
+C.  This set of routines  when used in  the simulation of cosmic ray
+C.  showers have only three  "contact points" with the "external world"
+C.
+C.    (i) SUBROUTINE NUC_NUC_INI
+C.        (no  calling arguments)         
+C.         to be called once during general initialization
+C.    (ii) SUBROUTINE HEAVY (IA, E0)
+C.         where IA (integer) is the mass number of the projectile
+C.         nucleus  and E0 (TeV) is the energy per nucleon
+C.         The output (positions of first interaction for the IA
+C.         nucleons of the projectile) is  contained in  the common block:
+C.           COMMON /C1STNC/ XX0(60),XX(60),YY(60),AX(60),AY(60)
+C.         In detail:
+C.             XX0(j)   (g cm-2) =  position of interaction
+C.             XX(j) (mm)    x-distance from shower axis
+C.             YY(j) (mm)    y-distance from shower axis
+C.             AX(j) (radiants)  Theta_x with respect to original direction
+C.             AY(j) (radiants)  Theta_y with respect to original direction
+C.      
+C.    (iii)  FUNCTION FPNI (E,L)
+C.           Interaction length in air.
+C.           E (TeV) is the energy of the particle, L is the particle
+C.           code (NOTE: "Sibyll" codes are used : L =1-18) 
+C.           WANRNING : The nucleus-nucleus cross section
+C.           tabulated in the program are "matched" to the p-Air
+C.           cross section calculated  with this FUNCTION, in other words 
+C.           they are both calculated with the same input pp cross section
+C==========================================================================
+
+      SUBROUTINE NUC_NUC_INI
+
+C-----------------------------------------------------------------------
+C...Initialization for the generation of nucleus-nucleus interactions
+C.  INPUT : E0 (TeV) Energy per nucleon of the beam nucleus
+C........................................................................
+      SAVE
+
+      CALL NUC_GEOM_INI                       ! nucleus profiles
+      CALL SIGMA_INI                          ! initialize pp cross sections
+
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE FRAGM1 (IA,NW, NF, IAF)
+
+C-----------------------------------------------------------------------
+C...Nuclear Fragmentation 
+C.  total dissolution of nucleus
+C.......................................................................
+      SAVE
+
+      DIMENSION IAF(60)
+      NF = IA-NW
+      DO J=1,NF
+         IAF(J) = 1
+      ENDDO
+      RETURN
+      END
+C->
+C=======================================================================
+
+      SUBROUTINE FRAGM2 (IA,NW, NF, IAF)
+
+C-----------------------------------------------------------------------
+C...Nuclear Fragmentation 
+C.  Spectator in one single fragment 
+C.......................................................................
+      SAVE
+
+      DIMENSION IAF(60)
+      IF (IA-NW .GT. 0)  THEN
+         NF = 1
+         IAF(1) = IA-NW
+      ELSE
+         NF = 0
+      ENDIF
+      RETURN
+      END
+
+C-----------------------------------------------------------------------
+C...Code of fragmentation  of spectator nucleons
+C.  based on Jon Engel  abrasion-ablation algorithms
+C=======================================================================
+
+      BLOCK DATA FRAG_DATA
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+C...Data for the fragmentation of  nucleus  projectiles
+      COMMON /FRAGMOD/A(10,10,20),AE(10,10,20),ERES(10,10),NFLAGG(10,10)
+      SAVE
+      DATA (NFLAGG(I, 1),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0 /
+      DATA (NFLAGG(I, 2),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0 /
+      DATA (NFLAGG(I, 3),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0 /
+      DATA (NFLAGG(I, 4),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0 /
+      DATA (NFLAGG(I, 5),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0 /
+      DATA (NFLAGG(I, 6),I=1,10)  / 
+     +    0,  0,  0,  0,  0,  0,  0,  1,  1,  1 /
+      DATA (NFLAGG(I, 7),I=1,10)  / 
+     +    1,  1,  1,  1,  1,  1,  1,  1,  1,  1 /
+      DATA (NFLAGG(I, 8),I=1,10)  / 
+     +    1,  1,  1,  1,  1,  1,  1,  1,  1,  1 /
+      DATA (NFLAGG(I, 9),I=1,10)  / 
+     +    1,  1,  1,  1,  1,  1,  1,  1,  1,  1 /
+      DATA (NFLAGG(I,10),I=1,10)  / 
+     +    1,  1,  1,  1,  1,  1,  1,  1,  1,  1 /
+      DATA (A(I, 1, 1),I=1,10)  / 
+     +  .438D-01,.172D0  ,.283D0  ,.511D0  ,.715D0  ,.920D0  ,1.19D0  ,
+     +  1.37D0  ,1.65D0  ,2.14D0   /
+      DATA (A(I, 1, 2),I=1,10)  / 
+     +  .147D-01,.249D-01,.439D-01,.592D-01,.776D-01,.886D-01,.108D0  ,
+     +  .117D0  ,.126D0  ,.128D0   /
+      DATA (A(I, 1, 3),I=1,10)  / 
+     +  .216D-02,.627D-02,.834D-02,.108D-01,.144D-01,.152D-01,.196D-01,
+     +  .200D-01,.210D-01,.224D-01 /
+      DATA (A(I, 1, 4),I=1,10)  / 
+     +  .593D-01,.653D-01,.116D0  ,.145D0  ,.184D0  ,.204D0  ,.234D0  ,
+     +  .257D0  ,.271D0  ,.248D0   /
+      DATA (A(I, 1, 5),I=1,10)  / 
+     +  .000D+00,.918D-02,.362D-02,.805D-02,.436D-02,.728D-02,.466D-02,
+     +  .707D-02,.932D-02,.130D-01 /
+      DATA (A(I, 1, 6),I=1,10)  / 
+     +  .000D+00,.180D-02,.247D-02,.208D-02,.224D-02,.214D-02,.226D-02,
+     +  .233D-02,.230D-02,.194D-02 /
+      DATA (A(I, 1, 7),I=1,10)  / 
+     +  .000D+00,.106D-02,.703D-03,.687D-03,.739D-03,.674D-03,.819D-03,
+     +  .768D-03,.756D-03,.720D-03 /
+      DATA (A(I, 1, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.188D-02,.130D-02,.138D-02,.117D-02,.124D-02,
+     +  .119D-02,.111D-02,.829D-03 /
+      DATA (A(I, 1, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.302D-03,.258D-03,.249D-03,.208D-03,.248D-03,
+     +  .222D-03,.210D-03,.187D-03 /
+      DATA (A(I, 1,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.235D-03,.222D-03,.172D-03,.181D-03,
+     +  .166D-03,.152D-03,.124D-03 /
+      DATA (A(I, 1,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.238D-03,.179D-03,.145D-03,.156D-03,
+     +  .138D-03,.129D-03,.111D-03 /
+      DATA (A(I, 1,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.368D-03,.400D-03,.255D-03,.262D-03,
+     +  .221D-03,.182D-03,.112D-03 /
+      DATA (A(I, 1,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.753D-04,.712D-04,.527D-04,
+     +  .537D-04,.538D-04,.487D-04 /
+      DATA (A(I, 1,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.103D-03,.589D-04,.578D-04,
+     +  .468D-04,.385D-04,.269D-04 /
+      DATA (A(I, 1,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.444D-04,.372D-04,
+     +  .318D-04,.284D-04,.218D-04 /
+      DATA (A(I, 1,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.487D-04,.473D-04,
+     +  .338D-04,.243D-04,.122D-04 /
+      DATA (A(I, 1,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.121D-04,.117D-04,
+     +  .932D-05,.792D-05,.583D-05 /
+      DATA (A(I, 1,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.147D-04,
+     +  .101D-04,.756D-05,.496D-05 /
+      DATA (A(I, 1,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.755D-05,
+     +  .612D-05,.505D-05,.341D-05 /
+      DATA (A(I, 1,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .630D-05,.444D-05,.282D-05 /
+      DATA (A(I, 2, 1),I=1,10)  / 
+     +  .269D0  ,.510D0  ,.738D0  ,1.12D0  ,1.46D0  ,1.83D0  ,2.22D0  ,
+     +  2.57D0  ,3.00D0  ,3.67D0   /
+      DATA (A(I, 2, 2),I=1,10)  / 
+     +  .121D0  ,.133D0  ,.190D0  ,.234D0  ,.293D0  ,.332D0  ,.395D0  ,
+     +  .431D0  ,.468D0  ,.502D0   /
+      DATA (A(I, 2, 3),I=1,10)  / 
+     +  .227D-01,.374D-01,.474D-01,.578D-01,.722D-01,.794D-01,.960D-01,
+     +  .102D0  ,.110D0  ,.120D0   /
+      DATA (A(I, 2, 4),I=1,10)  / 
+     +  .287D0  ,.196D0  ,.270D0  ,.314D0  ,.373D0  ,.408D0  ,.462D0  ,
+     +  .498D0  ,.529D0  ,.523D0   /
+      DATA (A(I, 2, 5),I=1,10)  / 
+     +  .000D+00,.433D-01,.218D-01,.384D-01,.263D-01,.385D-01,.298D-01,
+     +  .405D-01,.504D-01,.671D-01 /
+      DATA (A(I, 2, 6),I=1,10)  / 
+     +  .000D+00,.151D-01,.177D-01,.159D-01,.173D-01,.173D-01,.187D-01,
+     +  .196D-01,.201D-01,.191D-01 /
+      DATA (A(I, 2, 7),I=1,10)  / 
+     +  .000D+00,.457D-02,.607D-02,.610D-02,.677D-02,.670D-02,.784D-02,
+     +  .787D-02,.806D-02,.803D-02 /
+      DATA (A(I, 2, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.702D-02,.536D-02,.558D-02,.510D-02,.554D-02,
+     +  .546D-02,.538D-02,.489D-02 /
+      DATA (A(I, 2, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.190D-02,.199D-02,.205D-02,.191D-02,.221D-02,
+     +  .214D-02,.213D-02,.204D-02 /
+      DATA (A(I, 2,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.226D-02,.219D-02,.195D-02,.208D-02,
+     +  .204D-02,.203D-02,.194D-02 /
+      DATA (A(I, 2,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.213D-02,.195D-02,.175D-02,.191D-02,
+     +  .183D-02,.179D-02,.166D-02 /
+      DATA (A(I, 2,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.588D-03,.186D-02,.137D-02,.141D-02,
+     +  .128D-02,.117D-02,.947D-03 /
+      DATA (A(I, 2,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.554D-03,.562D-03,.454D-03,
+     +  .485D-03,.505D-03,.509D-03 /
+      DATA (A(I, 2,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.490D-03,.533D-03,.531D-03,
+     +  .476D-03,.437D-03,.369D-03 /
+      DATA (A(I, 2,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.427D-03,.382D-03,
+     +  .358D-03,.340D-03,.294D-03 /
+      DATA (A(I, 2,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.239D-03,.298D-03,
+     +  .238D-03,.196D-03,.134D-03 /
+      DATA (A(I, 2,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.299D-04,.893D-04,
+     +  .796D-04,.744D-04,.683D-04 /
+      DATA (A(I, 2,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.127D-03,
+     +  .107D-03,.916D-04,.720D-04 /
+      DATA (A(I, 2,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.397D-04,
+     +  .630D-04,.565D-04,.461D-04 /
+      DATA (A(I, 2,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .511D-04,.459D-04,.402D-04 /
+      DATA (A(I, 3, 1),I=1,10)  / 
+     +  .708D0  ,1.02D0  ,1.41D0  ,1.91D0  ,2.42D0  ,3.00D0  ,3.53D0  ,
+     +  4.09D0  ,4.71D0  ,5.57D0   /
+      DATA (A(I, 3, 2),I=1,10)  / 
+     +  .397D0  ,.410D0  ,.539D0  ,.648D0  ,.795D0  ,.910D0  ,1.06D0  ,
+     +  1.17D0  ,1.29D0  ,1.42D0   /
+      DATA (A(I, 3, 3),I=1,10)  / 
+     +  .845D-01,.122D0  ,.157D0  ,.190D0  ,.232D0  ,.262D0  ,.307D0  ,
+     +  .335D0  ,.366D0  ,.402D0   /
+      DATA (A(I, 3, 4),I=1,10)  / 
+     +  .210D0  ,.379D0  ,.450D0  ,.490D0  ,.574D0  ,.636D0  ,.709D0  ,
+     +  .769D0  ,.820D0  ,.849D0   /
+      DATA (A(I, 3, 5),I=1,10)  / 
+     +  .000D+00,.102D0  ,.675D-01,.104D0  ,.858D-01,.115D0  ,.102D0  ,
+     +  .129D0  ,.154D0  ,.194D0   /
+      DATA (A(I, 3, 6),I=1,10)  / 
+     +  .000D+00,.392D-01,.615D-01,.593D-01,.649D-01,.674D-01,.735D-01,
+     +  .779D-01,.817D-01,.828D-01 /
+      DATA (A(I, 3, 7),I=1,10)  / 
+     +  .000D+00,.539D-02,.222D-01,.238D-01,.269D-01,.280D-01,.320D-01,
+     +  .334D-01,.350D-01,.361D-01 /
+      DATA (A(I, 3, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.838D-02,.130D-01,.133D-01,.131D-01,.141D-01,
+     +  .144D-01,.149D-01,.152D-01 /
+      DATA (A(I, 3, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.228D-02,.647D-02,.688D-02,.687D-02,.772D-02,
+     +  .786D-02,.811D-02,.824D-02 /
+      DATA (A(I, 3,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.664D-02,.828D-02,.802D-02,.845D-02,
+     +  .869D-02,.902D-02,.930D-02 /
+      DATA (A(I, 3,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.338D-02,.735D-02,.710D-02,.767D-02,
+     +  .767D-02,.776D-02,.756D-02 /
+      DATA (A(I, 3,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.280D-03,.262D-02,.349D-02,.342D-02,
+     +  .322D-02,.312D-02,.291D-02 /
+      DATA (A(I, 3,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.618D-03,.161D-02,.138D-02,
+     +  .148D-02,.155D-02,.166D-02 /
+      DATA (A(I, 3,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.313D-03,.128D-02,.161D-02,
+     +  .150D-02,.144D-02,.134D-02 /
+      DATA (A(I, 3,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.645D-03,.118D-02,
+     +  .115D-02,.111D-02,.103D-02 /
+      DATA (A(I, 3,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.117D-03,.497D-03,
+     +  .581D-03,.501D-03,.401D-03 /
+      DATA (A(I, 3,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.115D-04,.997D-04,
+     +  .202D-03,.203D-03,.206D-03 /
+      DATA (A(I, 3,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.877D-04,
+     +  .242D-03,.263D-03,.226D-03 /
+      DATA (A(I, 3,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.158D-04,
+     +  .881D-04,.152D-03,.136D-03 /
+      DATA (A(I, 3,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .358D-04,.997D-04,.117D-03 /
+      DATA (A(I, 4, 1),I=1,10)  / 
+     +  .945D0  ,1.29D0  ,1.40D0  ,1.98D0  ,2.73D0  ,3.17D0  ,3.77D0  ,
+     +  4.29D0  ,4.78D0  ,5.54D0   /
+      DATA (A(I, 4, 2),I=1,10)  / 
+     +  .581D0  ,.599D0  ,.645D0  ,.839D0  ,1.10D0  ,1.25D0  ,1.47D0  ,
+     +  1.64D0  ,1.78D0  ,1.99D0   /
+      DATA (A(I, 4, 3),I=1,10)  / 
+     +  .127D0  ,.182D0  ,.202D0  ,.264D0  ,.344D0  ,.387D0  ,.455D0  ,
+     +  .504D0  ,.549D0  ,.611D0   /
+      DATA (A(I, 4, 4),I=1,10)  / 
+     +  .183D0  ,.464D0  ,.351D0  ,.444D0  ,.642D0  ,.659D0  ,.772D0  ,
+     +  .830D0  ,.882D0  ,.930D0   /
+      DATA (A(I, 4, 5),I=1,10)  / 
+     +  .000D+00,.122D0  ,.803D-01,.136D0  ,.134D0  ,.173D0  ,.164D0  ,
+     +  .203D0  ,.239D0  ,.300D0   /
+      DATA (A(I, 4, 6),I=1,10)  / 
+     +  .000D+00,.393D-01,.766D-01,.872D-01,.108D0  ,.111D0  ,.123D0  ,
+     +  .132D0  ,.139D0  ,.145D0   /
+      DATA (A(I, 4, 7),I=1,10)  / 
+     +  .000D+00,.416D-02,.289D-01,.360D-01,.454D-01,.477D-01,.549D-01,
+     +  .583D-01,.618D-01,.654D-01 /
+      DATA (A(I, 4, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.761D-02,.157D-01,.214D-01,.205D-01,.233D-01,
+     +  .241D-01,.255D-01,.271D-01 /
+      DATA (A(I, 4, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.238D-02,.803D-02,.123D-01,.123D-01,.140D-01,
+     +  .145D-01,.153D-01,.160D-01 /
+      DATA (A(I, 4,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.695D-02,.150D-01,.154D-01,.166D-01,
+     +  .172D-01,.181D-01,.192D-01 /
+      DATA (A(I, 4,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.355D-02,.104D-01,.143D-01,.156D-01,
+     +  .158D-01,.164D-01,.165D-01 /
+      DATA (A(I, 4,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.112D-03,.276D-02,.568D-02,.736D-02,
+     +  .684D-02,.691D-02,.661D-02 /
+      DATA (A(I, 4,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.740D-03,.222D-02,.339D-02,
+     +  .352D-02,.382D-02,.409D-02 /
+      DATA (A(I, 4,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.369D-03,.160D-02,.322D-02,
+     +  .375D-02,.375D-02,.355D-02 /
+      DATA (A(I, 4,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.750D-03,.190D-02,
+     +  .298D-02,.319D-02,.299D-02 /
+      DATA (A(I, 4,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.260D-03,.673D-03,
+     +  .117D-02,.156D-02,.126D-02 /
+      DATA (A(I, 4,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.283D-05,.131D-03,
+     +  .363D-03,.618D-03,.690D-03 /
+      DATA (A(I, 4,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.205D-03,
+     +  .378D-03,.709D-03,.844D-03 /
+      DATA (A(I, 4,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.654D-05,
+     +  .150D-03,.341D-03,.527D-03 /
+      DATA (A(I, 4,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .957D-04,.197D-03,.406D-03 /
+      DATA (A(I, 5, 1),I=1,10)  / 
+     +  1.16D0  ,1.70D0  ,2.19D0  ,2.79D0  ,3.33D0  ,3.90D0  ,4.49D0  ,
+     +  5.07D0  ,5.66D0  ,6.38D0   /
+      DATA (A(I, 5, 2),I=1,10)  / 
+     +  .779D0  ,.899D0  ,1.09D0  ,1.28D0  ,1.51D0  ,1.71D0  ,1.96D0  ,
+     +  2.18D0  ,2.39D0  ,2.62D0   /
+      DATA (A(I, 5, 3),I=1,10)  / 
+     +  .167D0  ,.263D0  ,.334D0  ,.408D0  ,.482D0  ,.548D0  ,.632D0  ,
+     +  .700D0  ,.767D0  ,.840D0   /
+      DATA (A(I, 5, 4),I=1,10)  / 
+     +  .203D0  ,.565D0  ,.845D0  ,.867D0  ,.906D0  ,.961D0  ,1.08D0  ,
+     +  1.13D0  ,1.21D0  ,1.25D0   /
+      DATA (A(I, 5, 5),I=1,10)  / 
+     +  .000D+00,.129D0  ,.152D0  ,.237D0  ,.208D0  ,.268D0  ,.258D0  ,
+     +  .312D0  ,.368D0  ,.450D0   /
+      DATA (A(I, 5, 6),I=1,10)  / 
+     +  .000D+00,.460D-01,.126D0  ,.174D0  ,.182D0  ,.188D0  ,.208D0  ,
+     +  .219D0  ,.233D0  ,.239D0   /
+      DATA (A(I, 5, 7),I=1,10)  / 
+     +  .000D+00,.289D-02,.380D-01,.611D-01,.788D-01,.845D-01,.974D-01,
+     +  .103D0  ,.111D0  ,.117D0   /
+      DATA (A(I, 5, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.137D-01,.223D-01,.374D-01,.436D-01,.488D-01,
+     +  .488D-01,.524D-01,.547D-01 /
+      DATA (A(I, 5, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.162D-02,.114D-01,.198D-01,.263D-01,.315D-01,
+     +  .323D-01,.348D-01,.364D-01 /
+      DATA (A(I, 5,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.149D-01,.240D-01,.320D-01,.428D-01,
+     +  .436D-01,.469D-01,.493D-01 /
+      DATA (A(I, 5,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.562D-02,.194D-01,.290D-01,.408D-01,
+     +  .460D-01,.492D-01,.500D-01 /
+      DATA (A(I, 5,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.476D-04,.106D-01,.134D-01,.191D-01,
+     +  .227D-01,.264D-01,.253D-01 /
+      DATA (A(I, 5,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.281D-02,.679D-02,.879D-02,
+     +  .123D-01,.165D-01,.190D-01 /
+      DATA (A(I, 5,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.542D-04,.847D-02,.125D-01,
+     +  .144D-01,.173D-01,.192D-01 /
+      DATA (A(I, 5,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.652D-02,.982D-02,
+     +  .129D-01,.159D-01,.192D-01 /
+      DATA (A(I, 5,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.109D-03,.688D-02,
+     +  .751D-02,.845D-02,.905D-02 /
+      DATA (A(I, 5,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.823D-06,.237D-02,
+     +  .318D-02,.446D-02,.569D-02 /
+      DATA (A(I, 5,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.604D-03,
+     +  .610D-02,.673D-02,.827D-02 /
+      DATA (A(I, 5,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.716D-06,
+     +  .412D-02,.519D-02,.617D-02 /
+      DATA (A(I, 5,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .710D-03,.543D-02,.674D-02 /
+      DATA (A(I, 6, 1),I=1,10)  / 
+     +  1.36D0  ,2.08D0  ,2.67D0  ,3.30D0  ,3.94D0  ,4.62D0  ,5.18D0  ,
+     +  3.60D0  ,3.64D0  ,3.95D0   /
+      DATA (A(I, 6, 2),I=1,10)  / 
+     +  1.07D0  ,1.33D0  ,1.58D0  ,1.82D0  ,2.10D0  ,2.44D0  ,2.74D0  ,
+     +  1.78D0  ,1.73D0  ,1.80D0   /
+      DATA (A(I, 6, 3),I=1,10)  / 
+     +  .158D0  ,.276D0  ,.402D0  ,.506D0  ,.609D0  ,.700D0  ,.802D0  ,
+     +  .638D0  ,.629D0  ,.658D0   /
+      DATA (A(I, 6, 4),I=1,10)  / 
+     +  .308D0  ,.739D0  ,1.02D0  ,1.12D0  ,1.26D0  ,1.35D0  ,1.57D0  ,
+     +  1.94D0  ,1.71D0  ,1.55D0   /
+      DATA (A(I, 6, 5),I=1,10)  / 
+     +  .000D+00,.217D0  ,.183D0  ,.324D0  ,.276D0  ,.395D0  ,.393D0  ,
+     +  .558D0  ,.602D0  ,.681D0   /
+      DATA (A(I, 6, 6),I=1,10)  / 
+     +  .000D+00,.658D-01,.251D0  ,.267D0  ,.299D0  ,.326D0  ,.386D0  ,
+     +  .452D0  ,.475D0  ,.409D0   /
+      DATA (A(I, 6, 7),I=1,10)  / 
+     +  .000D+00,.198D-02,.774D-01,.136D0  ,.149D0  ,.164D0  ,.187D0  ,
+     +  .210D0  ,.238D0  ,.256D0   /
+      DATA (A(I, 6, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.290D-01,.122D0  ,.139D0  ,.128D0  ,.129D0  ,
+     +  .137D0  ,.147D0  ,.167D0   /
+      DATA (A(I, 6, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.699D-03,.617D-01,.750D-01,.801D-01,.905D-01,
+     +  .974D-01,.105D0  ,.122D0   /
+      DATA (A(I, 6,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.310D-01,.112D0  ,.127D0  ,.140D0  ,
+     +  .143D0  ,.155D0  ,.176D0   /
+      DATA (A(I, 6,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.277D-02,.889D-01,.143D0  ,.150D0  ,
+     +  .175D0  ,.184D0  ,.208D0   /
+      DATA (A(I, 6,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.202D-04,.343D-01,.959D-01,.109D0  ,
+     +  .115D0  ,.112D0  ,.116D0   /
+      DATA (A(I, 6,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.186D-02,.435D-01,.512D-01,
+     +  .744D-01,.856D-01,.103D0   /
+      DATA (A(I, 6,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.144D-04,.427D-01,.786D-01,
+     +  .911D-01,.993D-01,.108D0   /
+      DATA (A(I, 6,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.466D-02,.518D-01,
+     +  .848D-01,.109D0  ,.119D0   /
+      DATA (A(I, 6,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.655D-05,.330D-01,
+     +  .586D-01,.617D-01,.594D-01 /
+      DATA (A(I, 6,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.228D-06,.328D-02,
+     +  .190D-01,.301D-01,.454D-01 /
+      DATA (A(I, 6,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.218D-04,
+     +  .272D-01,.501D-01,.707D-01 /
+      DATA (A(I, 6,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.146D-06,
+     +  .441D-02,.378D-01,.556D-01 /
+      DATA (A(I, 6,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .160D-03,.204D-01,.679D-01 /
+      DATA (A(I, 7, 1),I=1,10)  / 
+     +  .522D0  ,.862D0  ,1.14D0  ,1.40D0  ,1.70D0  ,1.94D0  ,2.26D0  ,
+     +  2.48D0  ,2.72D0  ,3.95D0   /
+      DATA (A(I, 7, 2),I=1,10)  / 
+     +  .314D0  ,.450D0  ,.588D0  ,.692D0  ,.834D0  ,.936D0  ,1.09D0  ,
+     +  1.18D0  ,1.28D0  ,1.80D0   /
+      DATA (A(I, 7, 3),I=1,10)  / 
+     +  .814D-01,.147D0  ,.189D0  ,.226D0  ,.272D0  ,.302D0  ,.351D0  ,
+     +  .378D0  ,.406D0  ,.658D0   /
+      DATA (A(I, 7, 4),I=1,10)  / 
+     +  .252D0  ,.864D0  ,1.01D0  ,.851D0  ,.837D0  ,.774D0  ,.763D0  ,
+     +  .757D0  ,.748D0  ,1.55D0   /
+      DATA (A(I, 7, 5),I=1,10)  / 
+     +  .000D+00,.225D0  ,.180D0  ,.276D0  ,.193D0  ,.240D0  ,.190D0  ,
+     +  .228D0  ,.259D0  ,.681D0   /
+      DATA (A(I, 7, 6),I=1,10)  / 
+     +  .000D+00,.485D-01,.272D0  ,.273D0  ,.253D0  ,.216D0  ,.206D0  ,
+     +  .197D0  ,.191D0  ,.409D0   /
+      DATA (A(I, 7, 7),I=1,10)  / 
+     +  .000D+00,.137D-02,.752D-01,.137D0  ,.152D0  ,.134D0  ,.125D0  ,
+     +  .119D0  ,.116D0  ,.256D0   /
+      DATA (A(I, 7, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.220D-01,.155D0  ,.175D0  ,.155D0  ,.116D0  ,
+     +  .977D-01,.858D-01,.167D0   /
+      DATA (A(I, 7, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.326D-03,.695D-01,.881D-01,.106D0  ,.897D-01,
+     +  .782D-01,.706D-01,.122D0   /
+      DATA (A(I, 7,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.261D-01,.124D0  ,.131D0  ,.156D0  ,
+     +  .141D0  ,.121D0  ,.176D0   /
+      DATA (A(I, 7,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.785D-03,.864D-01,.130D0  ,.170D0  ,
+     +  .182D0  ,.172D0  ,.208     /
+      DATA (A(I, 7,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.896D-05,.225D-01,.105D0  ,.126D0  ,
+     +  .126D0  ,.135D0  ,.116D0   /
+      DATA (A(I, 7,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.542D-03,.427D-01,.553D-01,
+     +  .744D-01,.980D-01,.103D0   /
+      DATA (A(I, 7,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.515D-05,.377D-01,.831D-01,
+     +  .985D-01,.104D0  ,.108D0   /
+      DATA (A(I, 7,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.285D-02,.495D-01,
+     +  .871D-01,.106D0  ,.119D0   /
+      DATA (A(I, 7,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.110D-05,.284D-01,
+     +  .588D-01,.657D-01,.594D-01 /
+      DATA (A(I, 7,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.722D-07,.176D-02,
+     +  .170D-01,.305D-01,.454D-01 /
+      DATA (A(I, 7,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.148D-05,
+     +  .213D-01,.492D-01,.707D-01 /
+      DATA (A(I, 7,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.323D-07,
+     +  .722D-02,.359D-01,.556D-01 /
+      DATA (A(I, 7,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .461D-05,.155D-01,.679D-01 /
+      DATA (A(I, 8, 1),I=1,10)  / 
+     +  .630D0  ,.974D0  ,1.29D0  ,1.58D0  ,1.89D0  ,2.16D0  ,2.49D0  ,
+     +  2.75D0  ,3.02D0  ,3.95D0   /
+      DATA (A(I, 8, 2),I=1,10)  / 
+     +  .328D0  ,.459D0  ,.613D0  ,.735D0  ,.879D0  ,.994D0  ,1.15D0  ,
+     +  1.27D0  ,1.38D0  ,1.80D0   /
+      DATA (A(I, 8, 3),I=1,10)  / 
+     +  .748D-01,.121D0  ,.164D0  ,.197D0  ,.235D0  ,.265D0  ,.310D0  ,
+     +  .339D0  ,.370D0  ,.658D0   /
+      DATA (A(I, 8, 4),I=1,10)  / 
+     +  .194D0  ,.211D0  ,.337D0  ,.344D0  ,.339D0  ,.351D0  ,.390    ,
+     +  .419D0  ,.442D0  ,1.55D0   /
+      DATA (A(I, 8, 5),I=1,10)  / 
+     +  .000D+00,.869D-01,.725D-01,.113D0  ,.810D-01,.106D0  ,.951D-01,
+     +  .120D0  ,.143D0  ,.681D0   /
+      DATA (A(I, 8, 6),I=1,10)  / 
+     +  .000D+00,.288D-01,.102D0  ,.922D-01,.857D-01,.845D-01,.932D-01,
+     +  .983D-01,.102D0  ,.409D0   /
+      DATA (A(I, 8, 7),I=1,10)  / 
+     +  .000D+00,.668D-03,.533D-01,.575D-01,.493D-01,.482D-01,.539D-01,
+     +  .558D-01,.582D-01,.256D0   /
+      DATA (A(I, 8, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.205D-01,.808D-01,.510D-01,.409D-01,.406D-01,
+     +  .394D-01,.389D-01,.167D0   /
+      DATA (A(I, 8, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.999D-04,.647D-01,.385D-01,.325D-01,.325D-01,
+     +  .316D-01,.314D-01,.122D0   /
+      DATA (A(I, 8,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.169D-01,.834D-01,.611D-01,.565D-01,
+     +  .533D-01,.519D-01,.176D0   /
+      DATA (A(I, 8,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.107D-03,.769D-01,.922D-01,.805D-01,
+     +  .745D-01,.711D-01,.208D0   /
+      DATA (A(I, 8,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.180D-05,.143D-01,.983D-01,.775D-01,
+     +  .627D-01,.541D-01,.116D0   /
+      DATA (A(I, 8,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.157D-04,.346D-01,.507D-01,
+     +  .479D-01,.455D-01,.103D0   /
+      DATA (A(I, 8,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.752D-06,.248D-01,.721D-01,
+     +  .728D-01,.611D-01,.108D0   /
+      DATA (A(I, 8,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.686D-04,.356D-01,
+     +  .731D-01,.791D-01,.119D0   /
+      DATA (A(I, 8,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.838D-07,.151D-01,
+     +  .470D-01,.567D-01,.594D-01 /
+      DATA (A(I, 8,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.759D-08,.400D-04,
+     +  .193D-01,.313D-01,.454D-01 /
+      DATA (A(I, 8,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.385D-07,
+     +  .921D-02,.353D-01,.707D-01 /
+      DATA (A(I, 8,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.219D-08,
+     +  .348D-03,.226D-01,.556D-01 /
+      DATA (A(I, 8,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .212D-07,.149D-01,.679D-01 /
+      DATA (A(I, 9, 1),I=1,10)  / 
+     +  .736D0  ,1.13D0  ,1.49D0  ,1.82D0  ,2.20D0  ,2.49D0  ,2.86D0  ,
+     +  3.17D0  ,3.49D0  ,3.95D0   /
+      DATA (A(I, 9, 2),I=1,10)  / 
+     +  .339D0  ,.492D0  ,.658D0  ,.789D0  ,.958D0  ,1.08D0  ,1.25D0  ,
+     +  1.37D0  ,1.50D0  ,1.80D0   /
+      DATA (A(I, 9, 3),I=1,10)  / 
+     +  .680D-01,.110D0  ,.150D0  ,.180D0  ,.222D0  ,.247D0  ,.289    ,
+     +  .318D0  ,.349D0  ,.658D0   /
+      DATA (A(I, 9, 4),I=1,10)  / 
+     +  .110D0  ,.104D0  ,.157D0  ,.156D0  ,.210D0  ,.205D0  ,.246D0  ,
+     +  .274D0  ,.300D0  ,1.55D0   /
+      DATA (A(I, 9, 5),I=1,10)  / 
+     +  .000D+00,.379D-01,.347D-01,.477D-01,.486D-01,.576D-01,.569D-01,
+     +  .732D-01,.893D-01,.681D0   /
+      DATA (A(I, 9, 6),I=1,10)  / 
+     +  .000D+00,.223D-01,.354D-01,.312D-01,.436D-01,.400D-01,.489D-01,
+     +  .548D-01,.600D-01,.409D0   /
+      DATA (A(I, 9, 7),I=1,10)  / 
+     +  .000D+00,.338D-03,.149D-01,.142D-01,.215D-01,.188D-01,.248D-01,
+     +  .278D-01,.307D-01,.256D0   /
+      DATA (A(I, 9, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.553D-02,.862D-02,.150D-01,.106D-01,.145D-01,
+     +  .165D-01,.181D-01,.167D0   /
+      DATA (A(I, 9, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.375D-04,.641D-02,.111D-01,.792D-02,.112D-01,
+     +  .127D-01,.140D-01,.122D0   /
+      DATA (A(I, 9,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.112D-01,.200D-01,.127D-01,.176D-01,
+     +  .200D-01,.220D-01,.176D0   /
+      DATA (A(I, 9,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.244D-04,.261D-01,.162D-01,.232D-01,
+     +  .263D-01,.287D-01,.208D0   /
+      DATA (A(I, 9,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.455D-06,.635D-02,.121D-01,.186D-01,
+     +  .201D-01,.207D-01,.116D0   /
+      DATA (A(I, 9,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.146D-05,.922D-02,.116D-01,
+     +  .145D-01,.165D-01,.103D0   /
+      DATA (A(I, 9,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.135D-06,.128D-01,.202D-01,
+     +  .215D-01,.220D-01,.108D0   /
+      DATA (A(I, 9,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.237D-05,.229D-01,
+     +  .259D-01,.271D-01,.119D0   /
+      DATA (A(I, 9,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.100D-07,.534D-02,
+     +  .210D-01,.193D-01,.594D-01 /
+      DATA (A(I, 9,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.915D-09,.847D-06,
+     +  .119D-01,.125D-01,.454D-01 /
+      DATA (A(I, 9,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.298D-08,
+     +  .101D-01,.242D-01,.707D-01 /
+      DATA (A(I, 9,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.196D-09,
+     +  .243D-05,.234D-01,.556D-01 /
+      DATA (A(I, 9,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .575D-09,.364D-02,.679D-01 /
+      DATA (A(I,10, 1),I=1,10)  / 
+     +  .959D0  ,1.46D0  ,1.92D0  ,2.34D0  ,2.80D0  ,3.24D0  ,3.64D0  ,
+     +  4.05D0  ,4.48D0  ,3.95D0   /
+      DATA (A(I,10, 2),I=1,10)  / 
+     +  .343D0  ,.516D0  ,.692D0  ,.836D0  ,1.01D0  ,1.16D0  ,1.31D0  ,
+     +  1.46D0  ,1.61D0  ,1.80D0   /
+      DATA (A(I,10, 3),I=1,10)  / 
+     +  .512D-01,.837D-01,.115D0  ,.138D0  ,.169D0  ,.195D0  ,.220D0  ,
+     +  .245D0  ,.270D0  ,.658D0   /
+      DATA (A(I,10, 4),I=1,10)  / 
+     +  .274D-01,.361D-01,.510D-01,.562D-01,.703D-01,.828D-01,.877D-01,
+     +  .996D-01,.111D0  ,1.55D0   /
+      DATA (A(I,10, 5),I=1,10)  / 
+     +  .000D+00,.850D-02,.875D-02,.118D-01,.124D-01,.170D-01,.154D-01,
+     +  .194D-01,.237D-01,.681D0   /
+      DATA (A(I,10, 6),I=1,10)  / 
+     +  .000D+00,.345D-02,.519D-02,.533D-02,.691D-02,.842D-02,.844D-02,
+     +  .987D-02,.113D-01,.409D0   /
+      DATA (A(I,10, 7),I=1,10)  / 
+     +  .000D+00,.722D-04,.130D-02,.135D-02,.189D-02,.240D-02,.235D-02,
+     +  .281D-02,.331D-02,.256D0   /
+      DATA (A(I,10, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,.283D-03,.272D-03,.394D-03,.557D-03,.480D-03,
+     +  .616D-03,.775D-03,.167D0   /
+      DATA (A(I,10, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,.457D-05,.122D-03,.192D-03,.275D-03,.225D-03,
+     +  .292D-03,.373D-03,.122D0   /
+      DATA (A(I,10,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.119D-03,.185D-03,.278D-03,.201D-03,
+     +  .274D-03,.364D-03,.176D0   /
+      DATA (A(I,10,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.140D-05,.129D-03,.200D-03,.137D-03,
+     +  .188D-03,.252D-03,.208D0   /
+      DATA (A(I,10,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.207D-07,.307D-04,.518D-04,.278D-04,
+     +  .421D-04,.608D-04,.116D0   /
+      DATA (A(I,10,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.306D-07,.252D-04,.111D-04,
+     +  .188D-04,.295D-04,.103D0   /
+      DATA (A(I,10,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.321D-08,.220D-04,.104D-04,
+     +  .162D-04,.243D-04,.108D0   /
+      DATA (A(I,10,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.770D-08,.632D-05,
+     +  .105D-04,.162D-04,.119D0   /
+      DATA (A(I,10,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.117D-09,.199D-05,
+     +  .321D-05,.492D-05,.594D-01 /
+      DATA (A(I,10,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.888E-11,.323D-09,
+     +  .106D-05,.192D-05,.454D-01 /
+      DATA (A(I,10,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.174E-10,
+     +  .131D-05,.218D-05,.707D-01 /
+      DATA (A(I,10,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.994E-12,
+     +  .233D-09,.104D-05,.556D-01 /
+      DATA (A(I,10,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  .144E-11,.724D-06,.679D-01 /
+      DATA (AE(I, 1, 1),I=1,10)  / 
+     +  7.27D0  ,6.29D0  ,7.76D0  ,6.70D0  ,8.17D0  ,7.34D0  ,8.70D0  ,
+     +  8.02D0  ,7.37D0  ,6.18D0   /
+      DATA (AE(I, 1, 2),I=1,10)  / 
+     +  7.41D0  ,7.52D0  ,8.14D0  ,8.20D0  ,8.96D0  ,9.05D0  ,9.96D0  ,
+     +  10.0D0  ,10.1D0  ,9.86D0   /
+      DATA (AE(I, 1, 3),I=1,10)  / 
+     +  7.72D0  ,7.69D0  ,9.17D0  ,8.99D0  ,10.6D0  ,10.5D0  ,12.1D0  ,
+     +  12.1D0  ,12.0D0  ,11.5D0   /
+      DATA (AE(I, 1, 4),I=1,10)  / 
+     +  7.90D0  ,8.48D0  ,9.50D0  ,9.94D0  ,10.8D0  ,11.4D0  ,12.2D0  ,
+     +  12.8D0  ,13.3D0  ,13.8D0   /
+      DATA (AE(I, 1, 5),I=1,10)  / 
+     +  .000D+00,8.52D0  ,9.59D0  ,10.1D0  ,11.1D0  ,11.8D0  ,12.7D0  ,
+     +  13.3D0  ,13.8D0  ,14.4D0   /
+      DATA (AE(I, 1, 6),I=1,10)  / 
+     +  .000D+00,9.00D0  ,10.7D0  ,11.7D0  ,13.2D0  ,14.2D0  ,15.6D0  ,
+     +  16.5D0  ,17.3D0  ,18.0D0   /
+      DATA (AE(I, 1, 7),I=1,10)  / 
+     +  .000D+00,9.01D0  ,11.1D0  ,11.9D0  ,14.3D0  ,15.0D0  ,17.4D0  ,
+     +  18.0D0  ,18.6D0  ,18.8D0   /
+      DATA (AE(I, 1, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,11.2D0  ,12.4D0  ,14.5D0  ,15.7D0  ,17.6D0  ,
+     +  18.8D0  ,19.9D0  ,20.9D0   /
+      DATA (AE(I, 1, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,11.4D0  ,12.7D0  ,15.5D0  ,16.6D0  ,19.3D0  ,
+     +  20.2D0  ,21.1D0  ,21.7D0   /
+      DATA (AE(I, 1,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,13.2D0  ,15.8D0  ,17.3D0  ,19.9D0  ,
+     +  21.2D0  ,22.4D0  ,23.2D0   /
+      DATA (AE(I, 1,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,13.2D0  ,16.3D0  ,17.8D0  ,20.8D0  ,
+     +  22.1D0  ,23.3D0  ,24.2D0   /
+      DATA (AE(I, 1,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,13.4D0  ,16.2D0  ,18.2D0  ,21.0D0  ,
+     +  22.8D0  ,24.4D0  ,25.9D0   /
+      DATA (AE(I, 1,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,16.5D0  ,18.4D0  ,21.6D0  ,
+     +  23.2D0  ,24.8D0  ,26.2D0   /
+      DATA (AE(I, 1,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,16.7D0  ,19.0D0  ,22.3D0  ,
+     +  24.3D0  ,26.1D0  ,27.4D0   /
+      DATA (AE(I, 1,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,19.1D0  ,22.8D0  ,
+     +  24.7D0  ,26.6D0  ,28.2D0   /
+      DATA (AE(I, 1,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,19.2D0  ,23.0D0  ,
+     +  25.3D0  ,27.5D0  ,29.5D0   /
+      DATA (AE(I, 1,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,19.6D0  ,23.3D0  ,
+     +  25.6D0  ,27.8D0  ,29.6D0   /
+      DATA (AE(I, 1,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,23.6D0  ,
+     +  26.2D0  ,28.5D0  ,30.4D0   /
+      DATA (AE(I, 1,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,23.7D0  ,
+     +  26.3D0  ,28.8D0  ,31.0D0   /
+      DATA (AE(I, 1,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  26.5D0  ,29.2D0  ,31.5D0   /
+      DATA (AE(I, 2, 1),I=1,10)  / 
+     +  8.74D0  ,8.16D0  ,9.25D0  ,8.45D0  ,9.46D0  ,8.90D0  ,9.83D0  ,
+     +  9.38D0  ,8.96D0  ,8.15D0   /
+      DATA (AE(I, 2, 2),I=1,10)  / 
+     +  8.96D0  ,9.30D0  ,9.95D0  ,10.0D0  ,10.8D0  ,10.9D0  ,11.7D0  ,
+     +  11.8D0  ,11.9D0  ,11.8D0   /
+      DATA (AE(I, 2, 3),I=1,10)  / 
+     +  9.44D0  ,9.66D0  ,11.0D0  ,11.0D0  ,12.3D0  ,12.5D0  ,13.7D0  ,
+     +  13.9D0  ,14.0D0  ,13.8D0   /
+      DATA (AE(I, 2, 4),I=1,10)  / 
+     +  8.86D0  ,9.81D0  ,10.8D0  ,11.2D0  ,12.0D0  ,12.6D0  ,13.4D0  ,
+     +  14.0D0  ,14.5D0  ,15.1D0   /
+      DATA (AE(I, 2, 5),I=1,10)  / 
+     +  .000D+00,10.2D0  ,11.4D0  ,12.0D0  ,12.9D0  ,13.6D0  ,14.5D0  ,
+     +  15.1D0  ,15.7D0  ,16.3D0   /
+      DATA (AE(I, 2, 6),I=1,10)  / 
+     +  .000D+00,10.7D0  ,12.5D0  ,13.5D0  ,15.1D0  ,16.0D0  ,17.5D0  ,
+     +  18.3D0  ,19.2D0  ,19.9D0   /
+      DATA (AE(I, 2, 7),I=1,10)  / 
+     +  .000D+00,11.5D0  ,12.9D0  ,13.9D0  ,16.1D0  ,17.0D0  ,19.1D0  ,
+     +  19.8D0  ,20.6D0  ,21.0D0   /
+      DATA (AE(I, 2, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,12.4D0  ,13.8D0  ,15.9D0  ,17.2D0  ,19.1D0  ,
+     +  20.3D0  ,21.4D0  ,22.3D0   /
+      DATA (AE(I, 2, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,13.4D0  ,14.5D0  ,17.1D0  ,18.3D0  ,20.9D0  ,
+     +  21.9D0  ,23.0D0  ,23.7D0   /
+      DATA (AE(I, 2,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,14.9D0  ,17.5D0  ,19.1D0  ,21.6D0  ,
+     +  22.9D0  ,24.1D0  ,25.0D0   /
+      DATA (AE(I, 2,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,15.0D0  ,18.0D0  ,19.6D0  ,22.4D0  ,
+     +  23.8D0  ,25.2D0  ,26.2D0   /
+      DATA (AE(I, 2,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,16.2D0  ,17.3D0  ,19.4D0  ,22.2D0  ,
+     +  24.0D0  ,25.7D0  ,27.2D0   /
+      DATA (AE(I, 2,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,17.8D0  ,19.8D0  ,22.9D0  ,
+     +  24.6D0  ,26.2D0  ,27.7D0   /
+      DATA (AE(I, 2,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,19.1D0  ,20.4D0  ,23.7D0  ,
+     +  25.7D0  ,27.6D0  ,29.1D0   /
+      DATA (AE(I, 2,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,20.5D0  ,24.1D0  ,
+     +  26.1D0  ,28.1D0  ,29.9D0   /
+      DATA (AE(I, 2,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,20.9D0  ,23.9D0  ,
+     +  26.4D0  ,28.7D0  ,30.7D0   /
+      DATA (AE(I, 2,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,22.4D0  ,24.2D0  ,
+     +  26.7D0  ,29.0D0  ,30.9D0   /
+      DATA (AE(I, 2,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,24.8D0  ,
+     +  27.3D0  ,29.7D0  ,31.8D0   /
+      DATA (AE(I, 2,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,26.1D0  ,
+     +  27.3D0  ,29.9D0  ,32.3D0   /
+      DATA (AE(I, 2,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  27.4D0  ,30.1D0  ,32.6D0   /
+      DATA (AE(I, 3, 1),I=1,10)  / 
+     +  11.0D0  ,11.0D0  ,11.7D0  ,11.3D0  ,11.9D0  ,11.4D0  ,12.1D0  ,
+     +  11.7D0  ,11.5D0  ,11.0D0   /
+      DATA (AE(I, 3, 2),I=1,10)  / 
+     +  11.2D0  ,12.0D0  ,12.7D0  ,12.9D0  ,13.6D0  ,13.7D0  ,14.4D0  ,
+     +  14.6D0  ,14.7D0  ,14.6D0   /
+      DATA (AE(I, 3, 3),I=1,10)  / 
+     +  12.1D0  ,12.6D0  ,13.7D0  ,13.9D0  ,15.0D0  ,15.2D0  ,16.3D0  ,
+     +  16.5D0  ,16.7D0  ,16.7D0   /
+      DATA (AE(I, 3, 4),I=1,10)  / 
+     +  12.6D0  ,11.3D0  ,12.4D0  ,13.0D0  ,13.8D0  ,14.2D0  ,15.0D0  ,
+     +  15.6D0  ,16.1D0  ,16.6D0   /
+      DATA (AE(I, 3, 5),I=1,10)  / 
+     +  .000D+00,12.6D0  ,13.7D0  ,14.4D0  ,15.3D0  ,16.0D0  ,16.8D0  ,
+     +  17.5D0  ,18.1D0  ,18.6D0   /
+      DATA (AE(I, 3, 6),I=1,10)  / 
+     +  .000D+00,14.0D0  ,14.6D0  ,15.8D0  ,17.4D0  ,18.4D0  ,19.8D0  ,
+     +  20.6D0  ,21.5D0  ,22.2D0   /
+      DATA (AE(I, 3, 7),I=1,10)  / 
+     +  .000D+00,16.0D0  ,15.2D0  ,16.3D0  ,18.3D0  ,19.3D0  ,21.1D0  ,
+     +  22.0D0  ,22.8D0  ,23.5D0   /
+      DATA (AE(I, 3, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,15.6D0  ,15.1D0  ,17.2D0  ,18.6D0  ,20.6D0  ,
+     +  21.8D0  ,22.9D0  ,23.8D0   /
+      DATA (AE(I, 3, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,17.8D0  ,16.3D0  ,18.8D0  ,20.1D0  ,22.5D0  ,
+     +  23.6D0  ,24.7D0  ,25.6D0   /
+      DATA (AE(I, 3,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,17.5D0  ,19.0D0  ,20.7D0  ,23.1D0  ,
+     +  24.5D0  ,25.8D0  ,26.8D0   /
+      DATA (AE(I, 3,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,19.2D0  ,19.4D0  ,21.1D0  ,23.8D0  ,
+     +  25.4D0  ,26.8D0  ,28.0D0   /
+      DATA (AE(I, 3,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,20.7D0  ,19.6D0  ,19.7D0  ,22.4D0  ,
+     +  24.4D0  ,26.2D0  ,27.9D0   /
+      DATA (AE(I, 3,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,21.6D0  ,20.4D0  ,23.2D0  ,
+     +  25.1D0  ,26.9D0  ,28.5D0   /
+      DATA (AE(I, 3,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,23.5D0  ,22.0D0  ,23.8D0  ,
+     +  26.1D0  ,28.1D0  ,29.9D0   /
+      DATA (AE(I, 3,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,23.7D0  ,24.2D0  ,
+     +  26.3D0  ,28.5D0  ,30.4D0   /
+      DATA (AE(I, 3,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,25.4D0  ,24.8D0  ,
+     +  25.6D0  ,28.1D0  ,30.5D0   /
+      DATA (AE(I, 3,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,26.9D0  ,26.8D0  ,
+     +  26.1D0  ,28.4D0  ,30.8D0   /
+      DATA (AE(I, 3,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,28.8D0  ,
+     +  27.6D0  ,29.0D0  ,31.5D0   /
+      DATA (AE(I, 3,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,30.5D0  ,
+     +  29.2D0  ,28.9D0  ,31.5D0   /
+      DATA (AE(I, 3,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  31.0D0  ,30.0D0  ,31.7D0   /
+      DATA (AE(I, 4, 1),I=1,10)  / 
+     +  13.0D0  ,13.2D0  ,14.8D0  ,14.2D0  ,14.2D0  ,14.1D0  ,14.5D0  ,
+     +  14.4D0  ,14.3D0  ,14.0D0   /
+      DATA (AE(I, 4, 2),I=1,10)  / 
+     +  13.5D0  ,14.5D0  ,16.1D0  ,15.9D0  ,16.0D0  ,16.3D0  ,16.8D0  ,
+     +  17.0D0  ,17.1D0  ,17.2D0   /
+      DATA (AE(I, 4, 3),I=1,10)  / 
+     +  14.9D0  ,15.3D0  ,17.2D0  ,17.1D0  ,17.5D0  ,17.8D0  ,18.6D0  ,
+     +  18.9D0  ,19.1D0  ,19.3D0   /
+      DATA (AE(I, 4, 4),I=1,10)  / 
+     +  15.1D0  ,13.5D0  ,16.4D0  ,16.7D0  ,16.4D0  ,17.3D0  ,17.8D0  ,
+     +  18.5D0  ,19.0D0  ,19.6D0   /
+      DATA (AE(I, 4, 5),I=1,10)  / 
+     +  .000D+00,15.6D0  ,17.5D0  ,17.7D0  ,17.8D0  ,18.6D0  ,19.2D0  ,
+     +  19.9D0  ,20.3D0  ,21.1D0   /
+      DATA (AE(I, 4, 6),I=1,10)  / 
+     +  .000D+00,18.0D0  ,18.4D0  ,19.2D0  ,19.8D0  ,20.9D0  ,22.0D0  ,
+     +  23.1D0  ,23.6D0  ,24.7D0   /
+      DATA (AE(I, 4, 7),I=1,10)  / 
+     +  .000D+00,27.4D0  ,19.1D0  ,19.8D0  ,20.7D0  ,21.8D0  ,23.2D0  ,
+     +  24.4D0  ,24.9D0  ,25.9D0   /
+      DATA (AE(I, 4, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,18.9D0  ,18.9D0  ,19.3D0  ,21.1D0  ,22.5D0  ,
+     +  24.0D0  ,24.7D0  ,26.0D0   /
+      DATA (AE(I, 4, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,21.1D0  ,19.7D0  ,20.7D0  ,22.3D0  ,24.0D0  ,
+     +  25.6D0  ,26.3D0  ,27.7D0   /
+      DATA (AE(I, 4,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,21.0D0  ,21.1D0  ,22.9D0  ,24.6D0  ,
+     +  26.5D0  ,27.3D0  ,29.0D0   /
+      DATA (AE(I, 4,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,21.3D0  ,22.4D0  ,23.1D0  ,25.0D0  ,
+     +  27.1D0  ,27.9D0  ,29.8D0   /
+      DATA (AE(I, 4,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,36.6D0  ,21.5D0  ,22.2D0  ,23.1D0  ,
+     +  25.6D0  ,26.8D0  ,29.1D0   /
+      DATA (AE(I, 4,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,22.9D0  ,23.1D0  ,23.7D0  ,
+     +  26.2D0  ,27.3D0  ,29.6D0   /
+      DATA (AE(I, 4,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,30.5D0  ,23.6D0  ,25.0D0  ,
+     +  26.9D0  ,28.2D0  ,30.7D0   /
+      DATA (AE(I, 4,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,25.4D0  ,26.2D0  ,
+     +  27.2D0  ,28.3D0  ,31.0D0   /
+      DATA (AE(I, 4,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,24.5D0  ,25.9D0  ,
+     +  27.4D0  ,27.6D0  ,30.7D0   /
+      DATA (AE(I, 4,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,43.3D0  ,28.4D0  ,
+     +  27.5D0  ,27.9D0  ,30.9D0   /
+      DATA (AE(I, 4,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,27.2D0  ,
+     +  29.1D0  ,29.0D0  ,31.4D0   /
+      DATA (AE(I, 4,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,51.3D0  ,
+     +  30.6D0  ,29.5D0  ,31.4D0   /
+      DATA (AE(I, 4,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  28.8D0  ,30.6D0  ,32.4D0   /
+      DATA (AE(I, 5, 1),I=1,10)  / 
+     +  15.0D0  ,14.9D0  ,15.5D0  ,15.4D0  ,15.9D0  ,15.8D0  ,16.2D0  ,
+     +  16.2D0  ,16.1D0  ,15.9D0   /
+      DATA (AE(I, 5, 2),I=1,10)  / 
+     +  15.4D0  ,16.1D0  ,17.0D0  ,17.4D0  ,18.0D0  ,18.2D0  ,18.7D0  ,
+     +  18.9D0  ,19.0D0  ,19.1D0   /
+      DATA (AE(I, 5, 3),I=1,10)  / 
+     +  17.1D0  ,17.2D0  ,18.3D0  ,18.7D0  ,19.3D0  ,19.6D0  ,20.3D0  ,
+     +  20.6D0  ,20.8D0  ,20.9D0   /
+      DATA (AE(I, 5, 4),I=1,10)  / 
+     +  14.7D0  ,14.8D0  ,15.0D0  ,16.0D0  ,17.0D0  ,17.7D0  ,18.1D0  ,
+     +  19.0D0  ,19.4D0  ,20.0D0   /
+      DATA (AE(I, 5, 5),I=1,10)  / 
+     +  .000D+00,16.7D0  ,17.6D0  ,18.1D0  ,18.6D0  ,19.2D0  ,19.7D0  ,
+     +  20.4D0  ,20.8D0  ,21.2D0   /
+      DATA (AE(I, 5, 6),I=1,10)  / 
+     +  .000D+00,17.8D0  ,18.2D0  ,19.2D0  ,20.0D0  ,21.0D0  ,21.9D0  ,
+     +  23.0D0  ,23.6D0  ,24.3D0   /
+      DATA (AE(I, 5, 7),I=1,10)  / 
+     +  .000D+00,35.2D0  ,18.9D0  ,20.3D0  ,20.6D0  ,21.5D0  ,22.6D0  ,
+     +  23.7D0  ,24.2D0  ,24.7D0   /
+      DATA (AE(I, 5, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,16.4D0  ,18.9D0  ,18.8D0  ,19.6D0  ,20.7D0  ,
+     +  22.3D0  ,23.1D0  ,23.9D0   /
+      DATA (AE(I, 5, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,33.9D0  ,19.8D0  ,20.3D0  ,20.7D0  ,21.9D0  ,
+     +  23.4D0  ,24.1D0  ,24.8D0   /
+      DATA (AE(I, 5,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,18.0D0  ,20.0D0  ,21.4D0  ,22.0D0  ,
+     +  23.8D0  ,24.6D0  ,25.4D0   /
+      DATA (AE(I, 5,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,26.4D0  ,20.4D0  ,21.2D0  ,22.3D0  ,
+     +  23.8D0  ,24.7D0  ,25.5D0   /
+      DATA (AE(I, 5,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,41.7D0  ,18.2D0  ,19.8D0  ,21.1D0  ,
+     +  22.6D0  ,23.4D0  ,24.6D0   /
+      DATA (AE(I, 5,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,22.5D0  ,20.0D0  ,21.7D0  ,
+     +  22.8D0  ,23.7D0  ,24.7D0   /
+      DATA (AE(I, 5,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,54.1D0  ,19.9D0  ,21.9D0  ,
+     +  23.2D0  ,24.3D0  ,25.3D0   /
+      DATA (AE(I, 5,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,21.2D0  ,22.2D0  ,
+     +  23.6D0  ,24.9D0  ,25.5D0   /
+      DATA (AE(I, 5,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,44.9D0  ,21.9D0  ,
+     +  23.8D0  ,25.2D0  ,25.6D0   /
+      DATA (AE(I, 5,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,47.8D0  ,22.7D0  ,
+     +  23.8D0  ,24.9D0  ,26.3D0   /
+      DATA (AE(I, 5,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,35.5D0  ,
+     +  23.9D0  ,25.9D0  ,26.6D0   /
+      DATA (AE(I, 5,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,64.3D0  ,
+     +  24.1D0  ,25.7D0  ,27.1D0   /
+      DATA (AE(I, 5,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  34.0D0  ,25.7D0  ,27.7D0   /
+      DATA (AE(I, 6, 1),I=1,10)  / 
+     +  16.6D0  ,16.5D0  ,16.8D0  ,16.7D0  ,17.0D0  ,16.5D0  ,16.7D0  ,
+     +  18.3D0  ,18.9D0  ,19.0D0   /
+      DATA (AE(I, 6, 2),I=1,10)  / 
+     +  16.2D0  ,16.6D0  ,17.2D0  ,17.4D0  ,17.9D0  ,17.4D0  ,17.7D0  ,
+     +  20.7D0  ,22.0D0  ,22.6D0   /
+      DATA (AE(I, 6, 3),I=1,10)  / 
+     +  18.9D0  ,18.7D0  ,18.8D0  ,18.6D0  ,18.9D0  ,18.6D0  ,18.9D0  ,
+     +  21.0D0  ,22.3D0  ,22.9D0   /
+      DATA (AE(I, 6, 4),I=1,10)  / 
+     +  18.3D0  ,12.7D0  ,14.2D0  ,15.0D0  ,15.7D0  ,16.1D0  ,16.3D0  ,
+     +  16.5D0  ,17.9D0  ,19.0D0   /
+      DATA (AE(I, 6, 5),I=1,10)  / 
+     +  .000D+00,15.7D0  ,15.1D0  ,15.3D0  ,16.5D0  ,16.4D0  ,16.4D0  ,
+     +  17.0D0  ,18.3D0  ,19.4D0   /
+      DATA (AE(I, 6, 6),I=1,10)  / 
+     +  .000D+00,22.9D0  ,14.9D0  ,15.2D0  ,16.2D0  ,16.9D0  ,17.4D0  ,
+     +  18.2D0  ,19.5D0  ,21.1D0   /
+      DATA (AE(I, 6, 7),I=1,10)  / 
+     +  .000D+00,40.7D0  ,18.4D0  ,15.9D0  ,17.1D0  ,17.7D0  ,18.9D0  ,
+     +  19.5D0  ,20.3D0  ,21.1D0   /
+      DATA (AE(I, 6, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,23.3D0  ,16.2D0  ,16.3D0  ,17.3D0  ,18.7D0  ,
+     +  19.5D0  ,20.3D0  ,21.1D0   /
+      DATA (AE(I, 6, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,49.2D0  ,19.0D0  ,19.1D0  ,19.4D0  ,20.2D0  ,
+     +  20.8D0  ,21.6D0  ,22.0D0   /
+      DATA (AE(I, 6,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,27.2D0  ,21.2D0  ,20.8D0  ,21.4D0  ,
+     +  22.3D0  ,22.8D0  ,23.3D0   /
+      DATA (AE(I, 6,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,45.6D0  ,25.0D0  ,22.8D0  ,23.9D0  ,
+     +  23.6D0  ,24.3D0  ,24.4D0   /
+      DATA (AE(I, 6,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,45.8D0  ,29.7D0  ,25.1D0  ,25.3D0  ,
+     +  25.3D0  ,26.0D0  ,26.3D0   /
+      DATA (AE(I, 6,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,42.7D0  ,29.0D0  ,28.0D0  ,
+     +  27.0D0  ,27.2D0  ,27.6D0   /
+      DATA (AE(I, 6,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,62.0D0  ,32.0D0  ,30.0D0  ,
+     +  29.8D0  ,29.5D0  ,29.6D0   /
+      DATA (AE(I, 6,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,44.5D0  ,34.4D0  ,
+     +  32.7D0  ,31.5D0  ,31.8D0   /
+      DATA (AE(I, 6,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,75.6D0  ,37.1D0  ,
+     +  34.6D0  ,34.4D0  ,34.4D0   /
+      DATA (AE(I, 6,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,51.2D0  ,45.2D0  ,
+     +  39.0D0  ,37.5D0  ,36.4D0   /
+      DATA (AE(I, 6,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,74.9D0  ,
+     +  42.3D0  ,39.9D0  ,38.3D0   /
+      DATA (AE(I, 6,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,69.5D0  ,
+     +  50.7D0  ,42.3D0  ,41.4D0   /
+      DATA (AE(I, 6,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  66.3D0  ,48.0D0  ,43.4D0   /
+      DATA (AE(I, 7, 1),I=1,10)  / 
+     +  27.0D0  ,25.8D0  ,26.3D0  ,26.2D0  ,26.7D0  ,26.7D0  ,27.1D0  ,
+     +  27.1D0  ,27.2D0  ,19.0D0   /
+      DATA (AE(I, 7, 2),I=1,10)  / 
+     +  29.1D0  ,28.9D0  ,29.7D0  ,30.3D0  ,31.0D0  ,31.4D0  ,32.0D0  ,
+     +  32.3D0  ,32.7D0  ,22.6D0   /
+      DATA (AE(I, 7, 3),I=1,10)  / 
+     +  31.6D0  ,29.7D0  ,30.9D0  ,31.4D0  ,32.5D0  ,33.1D0  ,34.0D0  ,
+     +  34.6D0  ,35.1D0  ,22.9D0   /
+      DATA (AE(I, 7, 4),I=1,10)  / 
+     +  27.4D0  ,19.9D0  ,20.8D0  ,22.8D0  ,24.6D0  ,26.4D0  ,28.2D0  ,
+     +  29.6D0  ,30.8D0  ,19.0D0   /
+      DATA (AE(I, 7, 5),I=1,10)  / 
+     +  .000D+00,24.6D0  ,24.1D0  ,25.0D0  ,27.2D0  ,28.7D0  ,30.7D0  ,
+     +  31.8D0  ,32.9D0  ,19.4D0   /
+      DATA (AE(I, 7, 6),I=1,10)  / 
+     +  .000D+00,35.6D0  ,25.2D0  ,25.6D0  ,27.9D0  ,30.4D0  ,32.7D0  ,
+     +  34.6D0  ,36.3D0  ,21.1D0   /
+      DATA (AE(I, 7, 7),I=1,10)  / 
+     +  .000D+00,45.4D0  ,30.9D0  ,28.2D0  ,29.0D0  ,31.2D0  ,34.0D0  ,
+     +  35.8D0  ,37.4D0  ,21.1D0   /
+      DATA (AE(I, 7, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,38.2D0  ,29.6D0  ,29.4D0  ,30.3D0  ,33.2D0  ,
+     +  35.5D0  ,37.6D0  ,21.1D0   /
+      DATA (AE(I, 7, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,59.3D0  ,34.5D0  ,33.7D0  ,32.9D0  ,35.4D0  ,
+     +  37.6D0  ,39.6D0  ,22.0D0   /
+      DATA (AE(I, 7,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,44.5D0  ,37.8D0  ,37.5D0  ,37.2D0  ,
+     +  39.0D0  ,41.4D0  ,23.3D0   /
+      DATA (AE(I, 7,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,67.0D0  ,43.6D0  ,42.0D0  ,40.8D0  ,
+     +  41.4D0  ,43.0D0  ,24.4D0   /
+      DATA (AE(I, 7,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,49.9D0  ,50.9D0  ,44.6D0  ,43.9D0  ,
+     +  44.2D0  ,44.2D0  ,26.3D0   /
+      DATA (AE(I, 7,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,67.2D0  ,50.5D0  ,48.7D0  ,
+     +  48.1D0  ,47.2D0  ,27.6D0   /
+      DATA (AE(I, 7,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,68.1D0  ,55.2D0  ,52.3D0  ,
+     +  51.5D0  ,51.6D0  ,29.6D0   /
+      DATA (AE(I, 7,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,68.7D0  ,58.6D0  ,
+     +  56.5D0  ,55.7D0  ,31.8D0   /
+      DATA (AE(I, 7,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,89.3D0  ,62.9D0  ,
+     +  60.0D0  ,59.1D0  ,34.4D0   /
+      DATA (AE(I, 7,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,56.0D0  ,72.9D0  ,
+     +  66.3D0  ,64.2D0  ,36.4D0   /
+      DATA (AE(I, 7,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,105.D0  ,
+     +  71.3D0  ,68.3D0  ,38.3D0   /
+      DATA (AE(I, 7,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,73.4D0  ,
+     +  76.8D0  ,72.4D0  ,41.4D0   /
+      DATA (AE(I, 7,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  107.D0  ,79.9D0  ,43.4D0   /
+      DATA (AE(I, 8, 1),I=1,10)  / 
+     +  35.5D0  ,35.3D0  ,35.7D0  ,35.7D0  ,36.3D0  ,36.3D0  ,36.7D0  ,
+     +  36.7D0  ,36.7D0  ,19.0D0   /
+      DATA (AE(I, 8, 2),I=1,10)  / 
+     +  40.6D0  ,41.4D0  ,41.9D0  ,42.3D0  ,43.2D0  ,43.5D0  ,44.0D0  ,
+     +  44.3D0  ,44.5D0  ,22.6D0   /
+      DATA (AE(I, 8, 3),I=1,10)  / 
+     +  45.4D0  ,45.7D0  ,46.4D0  ,47.0D0  ,48.1D0  ,48.7D0  ,49.4D0  ,
+     +  49.8D0  ,50.2D0  ,22.9D0   /
+      DATA (AE(I, 8, 4),I=1,10)  / 
+     +  43.9D0  ,44.3D0  ,43.4D0  ,45.1D0  ,47.3D0  ,48.7D0  ,49.6D0  ,
+     +  50.5D0  ,51.3D0  ,19.0D0   /
+      DATA (AE(I, 8, 5),I=1,10)  / 
+     +  .000D+00,49.3D0  ,49.6D0  ,50.5D0  ,53.2D0  ,54.2D0  ,55.4D0  ,
+     +  56.1D0  ,56.8D0  ,19.4D0   /
+      DATA (AE(I, 8, 6),I=1,10)  / 
+     +  .000D+00,59.1D0  ,53.0D0  ,55.4D0  ,58.0D0  ,60.0D0  ,61.2D0  ,
+     +  62.5D0  ,63.6D0  ,21.1D0   /
+      DATA (AE(I, 8, 7),I=1,10)  / 
+     +  .000D+00,54.5D0  ,57.1D0  ,59.2D0  ,62.3D0  ,64.4D0  ,66.0D0  ,
+     +  67.3D0  ,68.5D0  ,21.1D0   /
+      DATA (AE(I, 8, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,65.9D0  ,62.1D0  ,65.1D0  ,67.6D0  ,69.4D0  ,
+     +  71.1D0  ,72.6D0  ,21.1D0   /
+      DATA (AE(I, 8, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,72.2D0  ,67.1D0  ,70.5D0  ,73.1D0  ,75.1D0  ,
+     +  76.8D0  ,78.4D0  ,22.0D0   /
+      DATA (AE(I, 8,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,80.1D0  ,75.0D0  ,78.0D0  ,80.0D0  ,
+     +  82.1D0  ,83.9D0  ,23.3D0   /
+      DATA (AE(I, 8,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,94.5D0  ,82.2D0  ,82.8D0  ,85.1D0  ,
+     +  87.3D0  ,89.2D0  ,24.4D0   /
+      DATA (AE(I, 8,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,56.8D0  ,92.5D0  ,87.2D0  ,89.4D0  ,
+     +  91.9D0  ,94.1D0  ,26.3D0   /
+      DATA (AE(I, 8,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,116.D0  ,96.2D0  ,94.4D0  ,
+     +  97.0D0  ,99.2D0  ,27.6D0   /
+      DATA (AE(I, 8,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,78.1D0  ,104.D0  ,102.D0  ,
+     +  102.D0  ,105.D0  ,29.6D0   /
+      DATA (AE(I, 8,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,128.D0  ,111.D0  ,
+     +  109.D0  ,110.D0  ,31.8D0   /
+      DATA (AE(I, 8,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,104.D0  ,118.D0  ,
+     +  117.D0  ,115.D0  ,34.4D0   /
+      DATA (AE(I, 8,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,64.4D0  ,138.D0  ,
+     +  124.D0  ,122.D0  ,36.4D0   /
+      DATA (AE(I, 8,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,133.D0  ,
+     +  133.D0  ,132.D0  ,38.3D0   /
+      DATA (AE(I, 8,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,83.6D0  ,
+     +  146.D0  ,139.D0  ,41.4D0   /
+      DATA (AE(I, 8,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  166.D0  ,147.D0  ,43.4D0   /
+      DATA (AE(I, 9, 1),I=1,10)  / 
+     +  43.3D0  ,43.2D0  ,43.6D0  ,43.8D0  ,44.1D0  ,44.3D0  ,44.7D0  ,
+     +  44.8D0  ,44.8D0  ,19.0D0   /
+      DATA (AE(I, 9, 2),I=1,10)  / 
+     +  50.9D0  ,51.4D0  ,52.0D0  ,52.6D0  ,53.1D0  ,53.6D0  ,54.2D0  ,
+     +  54.5D0  ,54.7D0  ,22.6D0   /
+      DATA (AE(I, 9, 3),I=1,10)  / 
+     +  58.0D0  ,58.4D0  ,59.3D0  ,60.1D0  ,60.7D0  ,61.5D0  ,62.3D0  ,
+     +  62.7D0  ,63.1D0  ,22.9D0   /
+      DATA (AE(I, 9, 4),I=1,10)  / 
+     +  62.0D0  ,63.9D0  ,63.7D0  ,65.7D0  ,65.5D0  ,67.5D0  ,68.2D0  ,
+     +  68.9D0  ,69.7D0  ,19.0D0   /
+      DATA (AE(I, 9, 5),I=1,10)  / 
+     +  .000D+00,72.2D0  ,72.5D0  ,74.2D0  ,74.2D0  ,76.1D0  ,77.0D0  ,
+     +  77.8D0  ,78.6D0  ,19.4D0   /
+      DATA (AE(I, 9, 6),I=1,10)  / 
+     +  .000D+00,80.4D0  ,80.5D0  ,83.1D0  ,83.0D0  ,85.5D0  ,86.8D0  ,
+     +  88.1D0  ,89.2D0  ,21.1D0   /
+      DATA (AE(I, 9, 7),I=1,10)  / 
+     +  .000D+00,63.4D0  ,88.5D0  ,91.3D0  ,91.1D0  ,94.0D0  ,95.8D0  ,
+     +  97.3D0  ,98.6D0  ,21.1D0   /
+      DATA (AE(I, 9, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,98.8D0  ,98.6D0  ,97.8D0  ,102.D0  ,104.D0  ,
+     +  106.D0  ,108.D0  ,21.1D0   /
+      DATA (AE(I, 9, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,84.1D0  ,107.D0  ,107.D0  ,111.D0  ,113.D0  ,
+     +  116.D0  ,117.D0  ,22.0D0   /
+      DATA (AE(I, 9,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,116.D0  ,115.D0  ,119.D0  ,122.D0  ,
+     +  125.D0  ,127.D0  ,23.3D0   /
+      DATA (AE(I, 9,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,111.D0  ,123.D0  ,127.D0  ,131.D0  ,
+     +  134.D0  ,137.D0  ,24.4D0   /
+      DATA (AE(I, 9,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,65.6D0  ,136.D0  ,135.D0  ,140.D0  ,
+     +  143.D0  ,146.D0  ,26.3D0   /
+      DATA (AE(I, 9,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,146.D0  ,144.D0  ,149.D0  ,
+     +  152.D0  ,155.D0  ,27.6D0   /
+      DATA (AE(I, 9,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,88.7D0  ,152.D0  ,158.D0  ,
+     +  162.D0  ,165.D0  ,29.6D0   /
+      DATA (AE(I, 9,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,181.D0  ,167.D0  ,
+     +  171.D0  ,174.D0  ,31.8D0   /
+      DATA (AE(I, 9,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,117.D0  ,174.D0  ,
+     +  180.D0  ,183.D0  ,34.4D0   /
+      DATA (AE(I, 9,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,72.0D0  ,201.D0  ,
+     +  189.D0  ,192.D0  ,36.4D0   /
+      DATA (AE(I, 9,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,151.D0  ,
+     +  198.D0  ,201.D0  ,38.3D0   /
+      DATA (AE(I, 9,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,95.2D0  ,
+     +  220.D0  ,210.D0  ,41.4D0   /
+      DATA (AE(I, 9,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  192.D0  ,217.D0  ,43.4D0   /
+      DATA (AE(I,10, 1),I=1,10)  / 
+     +  62.1D0  ,62.1D0  ,62.6D0  ,62.9D0  ,63.3D0  ,63.3D0  ,64.0D0  ,
+     +  64.0D0  ,64.0D0  ,19.0D0   /
+      DATA (AE(I,10, 2),I=1,10)  / 
+     +  75.1D0  ,75.4D0  ,76.3D0  ,76.8D0  ,77.6D0  ,77.9D0  ,78.8D0  ,
+     +  79.0D0  ,79.3D0  ,22.6D0   /
+      DATA (AE(I,10, 3),I=1,10)  / 
+     +  87.5D0  ,88.3D0  ,89.4D0  ,90.2D0  ,91.3D0  ,91.9D0  ,93.0D0  ,
+     +  93.5D0  ,93.9D0  ,22.9D0   /
+      DATA (AE(I,10, 4),I=1,10)  / 
+     +  104.D0  ,104.D0  ,105.D0  ,106.D0  ,107.D0  ,108.D0  ,109.D0  ,
+     +  110.D0  ,110.D0  ,19.0D0   /
+      DATA (AE(I,10, 5),I=1,10)  / 
+     +  .000D+00,122.D0  ,122.D0  ,123.D0  ,124.D0  ,125.D0  ,126.D0  ,
+     +  127.D0  ,128.D0  ,19.4D0   /
+      DATA (AE(I,10, 6),I=1,10)  / 
+     +  .000D+00,138.D0  ,139.D0  ,140.D0  ,142.D0  ,143.D0  ,144.D0  ,
+     +  146.D0  ,147.D0  ,21.1D0   /
+      DATA (AE(I,10, 7),I=1,10)  / 
+     +  .000D+00,85.3D0  ,158.D0  ,159.D0  ,161.D0  ,162.D0  ,164.D0  ,
+     +  166.D0  ,167.D0  ,21.1D0   /
+      DATA (AE(I,10, 8),I=1,10)  / 
+     +  .000D+00,.000D+00,176.D0  ,177.D0  ,179.D0  ,181.D0  ,183.D0  ,
+     +  184.D0  ,186.D0  ,21.1D0   /
+      DATA (AE(I,10, 9),I=1,10)  / 
+     +  .000D+00,.000D+00,114.D0  ,199.D0  ,201.D0  ,202.D0  ,205.D0  ,
+     +  206.D0  ,207.D0  ,22.0D0   /
+      DATA (AE(I,10,10),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,218.D0  ,219.D0  ,220.D0  ,224.D0  ,
+     +  225.D0  ,226.D0  ,23.3D0   /
+      DATA (AE(I,10,11),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,150.D0  ,238.D0  ,238.D0  ,243.D0  ,
+     +  244.D0  ,245.D0  ,24.4D0   /
+      DATA (AE(I,10,12),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,85.8D0  ,255.D0  ,255.D0  ,261.D0  ,
+     +  262.D0  ,263.D0  ,26.3D0   /
+      DATA (AE(I,10,13),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,195.D0  ,272.D0  ,279.D0  ,
+     +  279.D0  ,280.D0  ,27.6D0   /
+      DATA (AE(I,10,14),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,115.D0  ,290.D0  ,296.D0  ,
+     +  297.D0  ,298.D0  ,29.6D0   /
+      DATA (AE(I,10,15),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,263.D0  ,313.D0  ,
+     +  314.D0  ,315.D0  ,31.8D0   /
+      DATA (AE(I,10,16),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,150.D0  ,330.D0  ,
+     +  331.D0  ,332.D0  ,34.4D0   /
+      DATA (AE(I,10,17),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,90.0D0  ,319.D0  ,
+     +  349.D0  ,349.D0  ,36.4D0   /
+      DATA (AE(I,10,18),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,196.D0  ,
+     +  366.D0  ,367.D0  ,38.3D0   /
+      DATA (AE(I,10,19),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,122.D0  ,
+     +  387.D0  ,384.D0  ,41.4D0   /
+      DATA (AE(I,10,20),I=1,10)  / 
+     +  .000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,.000D+00,
+     +  247.D0  ,401.D0  ,43.4D0     /
+      DATA (ERES(I, 1),I=1,10)  / 10*0.D0/
+      DATA (ERES(I, 2),I=1,10)  / 10*0.D0/
+      DATA (ERES(I, 3),I=1,10)  / 10*0.D0/
+      DATA (ERES(I, 4),I=1,10)  / 10*0.D0/
+      DATA (ERES(I, 5),I=1,10)  / 10*0.D0/
+      DATA (ERES(I, 6),I=1,10)  / 
+     +    0.000D0, 0.000D0, 0.000D0, 0.000D0, 0.000D0, 0.000D0, 0.000D0,
+     +    2.780D0, 2.880D0, 2.890D0 /
+      DATA (ERES(I, 7),I=1,10)  / 
+     +    1.500D0, 2.460D0, 2.510D0, 2.610D0, 2.700D0, 2.920D0, 3.070D0,
+     +    3.200D0, 3.330D0, 2.890D0 /
+      DATA (ERES(I, 8),I=1,10)  / 
+     +    4.470D0, 4.350D0, 4.390D0, 4.550D0, 4.660D0, 4.890D0, 4.980D0,
+     +    5.100D0, 5.220D0, 2.890D0 /
+      DATA (ERES(I, 9),I=1,10)  / 
+     +    7.480D0, 7.380D0, 7.370D0, 7.480D0, 7.510D0, 7.630D0, 7.660D0,
+     +    7.750D0, 7.820D0, 2.890D0 /
+      DATA (ERES(I,10),I=1,10)  / 
+     +   15.270D0,15.190D0,15.200D0,15.370D0,15.380D0,15.430D0,15.540D0,
+     +   15.590D0,15.630D0, 2.890D0 /
+      END
+C->
+C=======================================================================
+
+      SUBROUTINE FRAGM (IAT,IAP, NW,B, NF, IAF)
+
+C-----------------------------------------------------------------------
+C...Nuclear Fragmentation, Abrasion-ablation model, 
+C...Based on Jon Engel's routines ABRABL 
+C...This most recent version adds for all prefragment
+C...masses > 10 the model calculation for the fragment
+C...mass distribution and the energy carried by the fragment
+C...of W. Friedmann
+C...The average values are used to implement the model
+C...in the montecarlo fashion / TSS, Dec '91
+C.
+C.  INPUT: IAP = mass of incident nucleus
+C.         IAT = mass of target   nucleus
+C.         NW = number of wounded nucleons in the beam nucleus
+C.         B  = impact parameter in the interaction
+C.     
+C.  OUTPUT : NF = number of fragments  of the spectator nucleus
+C.           IAF(1:NF) = mass number of each fragment
+C.           PF(3,60) in common block /FRAGMENTS/ contains
+C.           the three momentum components (MeV/c) of each
+C.           fragment in the projectile frame
+C..............................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON /FRAGMENTS/ PPP(3,60)
+      COMMON /FRAGMOD/A(10,10,20),AE(10,10,20),ERES(10,10),NFLAGG(10,10)
+      DIMENSION IAF(60)
+      DIMENSION AA(10), EAA(10) 
+      SAVE
+      EXTERNAL GASDEV
+      DATA AA/10.D0,15.D0,20.D0,25.D0,30.D0,35.D0,40.D0,45.D0,50.D0,
+     $        56.D0/
+      DATA EAA/1.D0,2.D0,4.D0,6.D0,8.D0,10.D0,12.D0,16.D0,20.D0,30.D0/
+
+      AP=IAP
+      AT=IAT
+      NPF = IAP - NW
+      IF (NPF .EQ. 0) THEN
+         NF = 0
+         RETURN
+      ENDIF
+
+      EB = ESTAR(AP,AT, B)
+      EBP = ESTARP (NPF, NW)
+C CONTRIBUTION TO E* FROM ENERGY DEPOSITED BY SECONDARIES
+      EB = EB + EBP
+C TOTAL E* IS THE SUM OF THE TWO COMPONENTS
+
+C.....Prefragment transverse momentum (MeV/nucleon)...
+            FK = FERMK(AP)
+C FERMI MOMENTUM OF THE PROJECTILE NUCLEUS
+            IF (NW .LT. IAP) THEN
+            SIG = FK*DSQRT(NW*NPF/(AP-1.D0))/3.162D0
+C GAUSSIAN SIGMA IN ALL THREE DIRECTION
+            ELSE
+            SIG = FK/3.162D0
+C THIS IS NOT CORRECT, TOO LARGE !!!!!!!!!!!!!!
+            ENDIF
+             PPFX = SIG*GASDEV(0)/NPF
+             PPFY = SIG*GASDEV(1)/NPF
+C THREE MOMENTUM COMPONENTS PER NUCLEON FOR THE PREFRAGMENT
+
+C.............Crude model for small prefragment mass .......
+            IF (NPF .LT. 10) THEN
+                 CALL EVAP(NPF, EB, EPS, NNUC, NALP)
+C   EPS IS THE KINETIC ENERGY CARRIED BY THE EVAPORATED NUCLEONS
+               ETOT = 938.D0 + EPS
+                 PP = SQRT((ETOT*ETOT - 8.79844D5)/3.D0)
+C   AVERAGE MOMENTUM OF EVAPORATED NUCLEONS IN EACH DIRECTION
+                 NUC = NPF - NNUC - 4*NALP
+                 NF = 0
+                 IF (NUC .GT. 0) THEN
+                    NF = NF + 1
+                    IAF(NF) = NUC
+                    PPP(1,NF) = NUC*PPFX
+                    PPP(2,NF) = NUC*PPFY
+                 ENDIF
+                 IF (NALP .NE. 0) THEN
+                 DO I=1,NALP
+                   NF = NF + 1
+                    IAF(NF) = 4
+                   CALL SINCO(S1,C1)
+                   CALL SINCO(S2,C2)
+                   PXE = 4.D0*PP*S1*S2
+                   PYE = 4.D0*PP*S1*C2
+                   PPP(1,NF) = 4.D0*PPFX + PXE
+                   PPP(2,NF) = 4.D0*PPFY + PYE
+                   PPP(1,1) = PPP(1,1) - PXE
+                   PPP(2,1) = PPP(2,1) - PYE
+                 ENDDO
+                 ENDIF
+                 IF (NNUC .NE. 0) THEN
+                 DO I=1,NNUC
+                    NF = NF + 1
+                    IAF(NF) = 1
+                    CALL SINCO(S1,C1)
+                    CALL SINCO(S2,C2)
+                    PXE = PP*S1*S2
+                    PYE = PP*S1*C2
+                    PPP(1,NF) = 4.D0*PPFX + PXE
+                    PPP(2,NF) = 4.D0*PPFY + PYE
+                    PPP(1,1) = PPP(1,1) - PXE
+                    PPP(2,1) = PPP(2,1) - PYE
+                 ENDDO
+                 ENDIF
+                 RETURN
+            ENDIF
+
+C.........More refined model calculation .............
+      JA = NPF/5 -1
+      IF (JA .LT. 10) THEN
+      IF ((NPF - AA(JA)) .GT. (AA(JA+1)-NPF)) JA = JA + 1
+      ENDIF
+      ARAT = DBLE(NPF)/AA(JA)
+      DO J=1,10
+      IF (EB .LT. EAA(J)) GO TO 29
+      ENDDO
+      JE = 10
+      GO TO 39
+   29      JE = J
+   39      IF (JE .GT. 1 .AND. JE .NE. 10) THEN
+      IF ((EB - EAA(J-1)) .LT. (EAA(J)-EB)) JE = J - 1
+      ENDIF
+      ERAT = EB/EAA(JE)
+        IF (EB .LT. 1.D0) THEN
+        ERAT = EB
+        ENDIF
+C INTERPOLATE BETWEEN EB=0. (NOTHING HAPPENS) AND EB = 1. MeV
+         IF (JA .EQ. 10 .AND. JE .GT. 6) THEN
+            WRITE(*,*)' JA=',JA,',   JE=',JE
+         ENDIF
+   43    ESUM = 0.D0
+      NSUM = 0
+      JF = 0
+      DO J=20,1,-1
+        FR =  A(JA, JE, J)*ARAT*ERAT
+        N1 = INT(1.D0 + FR)
+        FR1 = FR/DBLE(N1)
+        DO K=1, N1
+          IF (S_RNDM(0) .LT. FR1) THEN
+            JF = JF + 1
+            IAF(JF) = J
+            NSUM = NSUM + J
+            EKIN = ERAT*AE(JA,JE, J)
+            IF (EKIN .GT. 0.D0) THEN
+              ESUM = ESUM + EKIN
+              ETOT = 938.D0*IAF(JF) + EKIN
+              PP = DSQRT(2.D0*(ETOT*ETOT - IAF(JF)**2*8.79844D5)/3.D0)
+              CALL SINCO(S1,C1)
+              CALL SINCO(S2,C2)
+              PPP(1,JF) = PP*S1*S2 + IAF(JF)*PPFX
+              PPP(2,JF) = PP*S1*C2 + IAF(JF)*PPFY
+            ENDIF
+            IF (NSUM .GT. NPF) THEN
+C           WRITE(*,*)' WARNING, NSUM=', NSUM,',  NPF=',NPF
+C           WRITE(*,*)'  ARAT =', ARAT
+              GO TO 43
+            ELSE
+              IF (NSUM .EQ. NPF) THEN
+                GO TO 44
+              ENDIF
+            ENDIF
+          ENDIF
+        ENDDO
+      ENDDO
+      IF (NFLAGG(JA,JE) .EQ. 0) THEN
+C 'THE RESIDUE' IS A NUCLEAR FRAGMENT
+        JF = JF + 1
+        IAF(JF) = NPF - NSUM
+        F1 = NPF*EB - ESUM
+        IF (F1 .LT. 0.D0) F1 = 0.D0
+C GIVE THE REST OF EB TO THE FRAGMENT
+        EKIN = F1
+        IF (EKIN .GT. 0.D0) THEN
+          ETOT = 938.D0*IAF(JF) + EKIN
+          PP = DSQRT(2.D0*(ETOT*ETOT - IAF(JF)**2*8.79844D5)/3.D0)
+          CALL SINCO(S1,C1)
+          CALL SINCO(S2,C2)
+          PPP(1,JF) = PP*S1*S2 + IAF(JF)*PPFX
+          PPP(2,JF) = PP*S1*C2 + IAF(JF)*PPFY
+        ENDIF
+      ELSE
+C 'THE RESIDUE' CONSISTS OF SPECTATOR NUCLEONS
+        N1 = NPF - NSUM
+        DO K=1,N1
+          JF = JF + 1
+          IAF(JF) = 1
+          EKIN = ERAT*ERES(JA,JE)
+          IF (EKIN .GT. 0.D0) THEN
+            ETOT = 938.D0*IAF(JF) + EKIN
+            PP = DSQRT(2.D0*(ETOT*ETOT - IAF(JF)**2*8.79844D5)/3.D0)
+            CALL SINCO(S1,C1)
+            CALL SINCO(S2,C2)
+            PPP(1,JF) = PP*S1*S2 + PPFX
+            PPP(2,JF) = PP*S1*C2 + PPFY
+          ENDIF
+        ENDDO
+      ENDIF
+  44  NF = JF
+      RETURN
+      END
+C->
+C=======================================================================
+
+      FUNCTION ESTARP (NPF, NW)
+
+C-----------------------------------------------------------------------
+C CONTRIBUTION TO E* FROM ENERGY DEPOSITED BY SECONDARIES
+C VERY NAIVE VERSION INCORPORATING HUEFFNER'S IDEAS
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      APF = NPF
+      F1 = 15.3D0/APF**0.666666666D0
+C AVERAGE KINETIC ENERGY/NUCLEON IN PREFRAGMENT (MeV)
+C PER PATHLENGTH EQUAL TO THE PREFRAGMENT RADIUS
+      ESTARP = 0.D0
+      DO I=1,NW
+        IF (S_RNDM(0) .GT. 0.5D0) THEN
+          F2 = F1*RDIS(0)
+          ESTARP = ESTARP + F2
+        ENDIF
+      ENDDO
+C SAMPLE RANDOMLY PER WOUNDED NUCLEON, x NW
+      RETURN
+      END
 C=======================================================================
       
+      FUNCTION RDIS(Idum)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      dimension probr(20)
+      SAVE
+      data probr/
+     *      0.10000D0, 0.15748D0, 0.21778D0, 0.28605D0, 0.36060D0,
+     *      0.43815D0, 0.51892D0, 0.60631D0, 0.70002D0, 0.79325D0,
+     *      0.88863D0, 0.98686D0, 1.10129D0, 1.21202D0, 1.32932D0,
+     *      1.44890D0, 1.57048D0, 1.70139D0, 1.83417D0, 2.00000D0/
+
+      rdis = idum
+      nr = INT(20.D0*S_RNDM(0) + 1.D0)
+      if (nr .eq. 1) then
+        f1 = 0.D0
+      else
+        f1 = probr(nr-1)
+      endif
+      dr = probr(nr) - f1
+      rdis = f1 + dr*S_RNDM(1)
+      return
+      end
+
+C=======================================================================
+
+      FUNCTION ESTAR(ap,at,b)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      SAVE
+
+c      real*4 ap,at,b,estar
+      sigma=4.5D0  !total n-n cross section in fm**2
+      rt=.82d0*at**.33333333D0 !target radius
+      rp=.82d0*ap**.33333333D0 !projectile radius
+      alpha=rt**2/rp**2
+      beta=b**2/rt**2
+      f=at*sigma/(PI*rt**2)
+      alf = log(f)
+      alalf = log(alpha)
+      gfac=0.d0
+      gfac1=0.d0
+      s1=0.D0
+      s2=0.D0
+      s3=0.D0
+      ii=1
+      do n=0,10 ! This limit may not need to be so high.
+         if(n.ge.2) then
+            gfac1=gfac
+            gfac=gfac+log(float(n)) 
+         endif
+         g0=n*alf -n*beta*alpha/(n+alpha)+alalf
+         g1=g0-log(alpha+n)-gfac
+         g2=(n+2)*log(f)-(n+2)*beta*alpha/(n+2+alpha) 
+     >      +log(n+2+alpha+beta*alpha**2)-3.d0*log(n+2.d0+alpha)-gfac
+         g3=g0-2.d0*log(n+alpha)-gfac1
+         ii=-ii
+         s1=s1+ii*exp(g1)
+         s2=s2+ii*exp(g2)
+         if(n.ge.1) s3=s3+ii*exp(g3)
+      enddo
+
+      pb=s1
+      e1b=197.D0**2/(2.D0*938.d0*rp**2*pb) *s2
+c      a=b*(s3/pb-1)
+c      a=-b*s3/pb
+c      e2b=-.5* 938. * (41./(ap**.333))**2 * a**2 /(197.**2)
+c      estar=e1b+e2b
+      estar = e1b
+      return
+      end
+C=======================================================================
+
+      SUBROUTINE EVAP(npf,eb,eps,nnuc,nalp)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      eps=7.5D0+sqrt(8.D0*eb)
+      n=min(npf*int(eb/eps),npf)
+      nalp=n/5
+      nnuc=n-4*nalp
+      return
+      end
+C->
+C=======================================================================
+
+      FUNCTION FERMK(A)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION AA(6), FK(6)
+      SAVE
+      DATA AA/4.D0, 6.D0, 12.D0, 24.D0, 40.D0, 57.D0/
+      DATA FK/130.D0,169.D0,221.D0,235.D0,251.D0,260.D0/
+
+      DO I=2,4
+      IF (A .LT. AA(I)) GO TO 25
+      ENDDO
+      I = 5
+   25      F11 = AA(I-1)
+      F12 = AA(I)
+      F13 = AA(I+1)
+      F21 = FK(I-1)
+      F22 = FK(I)
+      F23 = FK(I+1)
+      FERMK = QUAD_INT(A,F11,F12,F13, F21,F22,F23)
+      RETURN
+      END
+
+C*=======================================================================
+C. Multiple interaction structure
+C========================================================================
+
+      SUBROUTINE INT_NUC (IA, IB, SIG0, SIGEL) 
+
+C-----------------------------------------------------------------------
+C...Compute with a montecarlo code  the  "multiple interaction structure"
+C.  of a nucleus-nucleus interaction
+C.
+C.  INPUT : IA            = mass of target nucleus
+C.          IB            = mass of projectile nucleus
+C.          SIG0 (mbarn)  = inelastic pp cross section
+C.          SIGEL(mbarn)  = elastic pp cross section
+C.
+C.  OUTPUT : in common block /CNUCMS/
+C.           B = impact parameter (fm)
+C.           BMAX = maximum impact parameter for generation
+C.           NTRY = number of "trials" before one interaction
+C.           NA = number of wounded nucleons in A
+C.           NB =    "        "        "     in B
+C.           NI = number of nucleon-nucleon inelastic interactions 
+C.           NAEL = number of elastically scattered nucleons in  A 
+C.           NBEL =    "         "           "          "    in  B
+C.           JJA(J)  [J=1:IA]   = number of inelastic interactions 
+C.                                of J-th nucleon of nucleus A
+C.           JJB(J)  [J=1:IB]   = number of inelastic interactions 
+C.                                of J-th nucleon of nucleus B
+C.           JJAEL(J)  [J=1:IA]   = number of elastic interactions 
+C.                                of J-th nucleon of nucleus A
+C.           JJBEL(J)  [J=1:IB]   = number of elastic interactions 
+C.                                of J-th nucleon of nucleus B
+C.           JJINT(J,K)  [J=1:NB, K=1:NA]  (0 = no interaction) 
+C.                                         (1 = interaction )
+C.                                         between nucleon J of A and K of B
+C-----------------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (IAMAX=56)
+      COMMON /CNUCMS/ B, BMAX, NTRY, NA, NB, NI, NAEL, NBEL
+     +         ,JJA(IAMAX), JJB(IAMAX), JJINT(IAMAX,IAMAX)
+     +         ,JJAEL(IAMAX), JJBEL(IAMAX)
+      DIMENSION XA(IAMAX), YA(IAMAX), XB(IAMAX), YB(IAMAX)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      SIGT = SIG0 + SIGEL
+      R2  = 0.1D0 * SIG0/PI
+      R2T = 0.1D0 * SIGT/PI
+      BMAX = 15.D0                             ! fm
+      NTRY = 0
+      CALL NUC_CONF (IA, XA, YA)
+      CALL NUC_CONF (IB, XB, YB)
+      NI = 0
+      NIEL = 0
+      DO JA=1,IA
+         JJA(JA) = 0
+         JJAEL(JA) = 0
+      ENDDO
+      DO JB=1,IB
+         JJB(JB) = 0
+         JJBEL(JB) = 0
+         DO JA=1,IA
+            JJINT(JB,JA) = 0
+         ENDDO
+      ENDDO
+1000  B = BMAX*SQRT(S_RNDM(0))
+      PHI = TWOPI*S_RNDM(1)
+      BX = B*COS(PHI)
+      BY = B*SIN(PHI)
+      NTRY = NTRY+1
+      DO JA=1,IA
+         DO JB=1,IB
+            S = (XA(JA)-XB(JB)-BX)**2 + (YA(JA)-YB(JB)-BY)**2
+            IF (S .LT. R2)  THEN
+               NI = NI + 1
+               JJA(JA) = JJA(JA)+1
+               JJB(JB) = JJB(JB)+1
+               JJINT(JB,JA) = 1
+            ELSE IF (S .LT. R2T)  THEN
+               NIEL = NIEL + 1
+               JJAEL(JA) = JJAEL(JA)+1
+               JJBEL(JB) = JJBEL(JB)+1
+            ENDIF
+         ENDDO
+      ENDDO
+      IF (NI + NIEL .EQ. 0)  GOTO 1000
+      NA = 0
+      NB = 0
+      NAEL = 0
+      NBEL = 0
+      DO JA=1,IA
+         IF (JJA(JA) .GT. 0)  THEN
+            NA = NA + 1
+         ELSE
+            IF (JJAEL(JA) .GT. 0)  NAEL = NAEL+1
+         ENDIF
+      ENDDO
+      DO JB=1,IB
+         IF (JJB(JB) .GT. 0)  THEN
+            NB = NB + 1
+         ELSE
+            IF (JJBEL(JB) .GT. 0)  NBEL = NBEL+1
+         ENDIF
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+       SUBROUTINE NUC_CONF (IA, XX, YY)
+
+C-----------------------------------------------------------------------
+C...This routine generates the configuration  of a nucleus 
+C.  need an initialization call to NUC_GEOM_INI
+C.
+C.  INPUT  : IA = mass number of the nucleus
+C.  OUTPUT : XX(1:IA), YY(1:IA) (fm) = position in impact parameter
+C.                                     space of the IA nucleons
+C...................................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (IAMAX=56)
+      DIMENSION XX(IAMAX), YY(IAMAX)
+      PARAMETER (NB=401)
+      COMMON /CPROFA/ ZMIN, DZ, BBZ(NB,IAMAX)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      DO J=1,IA
+         Z = S_RNDM(J)
+         JZ = INT((Z-ZMIN)/DZ)+1
+         JZ = MIN(JZ,400)
+         T = (Z-ZMIN)/DZ - DBLE(JZ-1)
+         B = BBZ(JZ,IA)*(1.D0-T) + BBZ(JZ+1,IA)*T
+         PHI = TWOPI*S_RNDM(J+1)
+         XX(J) = B*COS(PHI)
+         YY(J) = B*SIN(PHI)
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE NUC_GEOM_INI
+
+C-----------------------------------------------------------------------
+C...Initialize all nucleus profiles
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (NB=401)
+      PARAMETER (IAMAX=56)
+      COMMON /CPROF/ DB, BMAX, BB(NB), TB(NB), A
+      COMMON /CPROFA/ ZMIN, DZ, BBZ(NB,IAMAX)
+      DIMENSION FFB(NB), GGB(NB)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      CALL SHELL_INI
+      CALL WOOD_SAXON_INI
+      DO IA= 2,IAMAX
+           JA = IA
+         CALL NUC_PROFIL(JA)
+         DO K=1,NB
+           FFB(K) = BB(K)*TB(K) * TWOPI
+         ENDDO            
+         GGB(1) = 0.D0
+         GGB(NB) = 1.D0
+         DO K=2,NB-1
+           GGB(K) = GGB(K-1) + FFB(K-1)*DB
+         ENDDO            
+         CALL INVERT_ARRAY(GGB,0.D0,DB,NB, BBZ(1,IA), ZMIN, DZ)
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE NUC_PROFIL (JA)
+
+C-----------------------------------------------------------------------
+C...Compute the profile function T(b)
+C.  normalised as INT[d2b T(b) = 1]
+C.  INPUT : JA = integer mass number of nucleus
+C...............................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      PARAMETER (NB=401)
+      EXTERNAL DENSA
+      DOUBLE PRECISION DENSA
+      COMMON /CC01/  B
+      COMMON /CCDA/ JJA
+      COMMON /CPROF/ DB, BMAX, BB(NB), TB(NB), A
+      SAVE
+
+      BMAX = 7.5D0
+      DB = BMAX/DBLE(NB-1)
+      JJA = JA
+      A = JA
+      DO JB=1,NB
+        B = DB*DBLE(JB-1)
+        BB(JB) = B
+        IF (JA .LE. 18)  THEN
+            TB(JB) = PROFNUC (B, JA)
+         ELSE
+            TB(JB) = 2.D0*GAUSS (DENSA,0.D0,BMAX)
+         ENDIF
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE NUC1_PROFIL (AA)
+
+C-----------------------------------------------------------------------
+C...Compute the profile function T(b)
+C.  normalised as INT[d2b T(b) = 1]
+C.  INPUT : AA = mass number of nucleus
+C...............................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (NB=401)
+      EXTERNAL DENSA
+      DOUBLE PRECISION DENSA
+      COMMON /CC01/  B
+      COMMON /CPROF/ DB, BMAX, BB(NB), TB(NB), A
+      SAVE
+
+      A = AA
+      IA1 = INT(AA)
+      IA2 = IA1 + 1
+      U = AA - DBLE(IA1)
+      BMAX = 7.5D0
+      DB = BMAX/DBLE(NB-1)
+      DO JB=1,NB
+         B = DB*DBLE(JB-1)
+         BB(JB) = B
+         IF (A .LE. 18.D0)  THEN
+             T1 = PROFNUC (B, IA1)
+             T2 = PROFNUC (B, IA2)
+          ELSE
+             JJA = IA1
+             T1 = 2.D0*GAUSS (DENSA,0.D0,BMAX)
+             JJA = IA2
+             T2 = 2.D0*GAUSS (DENSA,0.D0,BMAX)
+          ENDIF
+          TB(JB) = (1.D0-U)*T1  + U*T2
+      ENDDO
+      RETURN
+      END
+
+C*======================================================================
+C.   Code about nuclear densities
+C=======================================================================
+
+      FUNCTION DENS_NUC (R, JA)
+
+C-----------------------------------------------------------------------
+C....Nuclear density (normalised to 1)
+C.   for a nucleus of mass number JA
+C.   INPUT R = radial coordinate  (fm)
+C.         JA = integer mass number
+C.  OUTPUT (fm**-3)
+C--------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CWOOD/ RR0(19:56), AA0(19:56), CC0(19:56)
+      SAVE
+
+      IF (JA .GT. 18)  THEN
+         DENS_NUC = WOOD_SAXON(R,JA)
+      ELSE IF (JA .NE. 4)  THEN
+         DENS_NUC = HELIUM(R)
+      ELSE
+         DENS_NUC = SHELL(R,JA)
+      ENDIF
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION WOOD_SAXON (R, JA) 
+
+C-----------------------------------------------------------------------
+C....Wood-Saxon nuclear density (normalised to 1)
+C.   for a nucleus of mass number A.
+C.   INPUT R =  (fm)
+C.         JA = mass number
+C.   OUTPUT (fm**-3)
+C------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CWOOD/ RR0(19:56), AA0(19:56), CC0(19:56)
+      SAVE
+
+      WOOD_SAXON = CC0(JA)/(1.D0+EXP((R-RR0(JA))/AA0(JA)))
+      RETURN
+      END      
+C=======================================================================
+
+      FUNCTION HELIUM (R)
+
+C-----------------------------------------------------------------------
+C... Helium density from Barrett and Jackson
+C.   INPUT R = r coordinate (fm)
+C.   OUTPUT (fm**-3)
+C........................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+      DATA R0 /0.964D0/, CA /0.322D0/   ! fm
+      DATA W /0.517D0/, CC /5.993224D-02/
+
+      HELIUM = CC*(1.D0+W*(R/R0)**2)/(1.D0 + EXP((R-R0)/CA))
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION SHELL (R,JA)
+
+C-----------------------------------------------------------------------
+C...Density in the shell model
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CSHELL/ RR0(18), RR02(18)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      R0 = RR0(JA)
+      C1 = MIN(1.D0,4.D0/DBLE(JA))
+      CS = 1.D0/(R0**3 * PI**1.5D0)
+      CP = 2.D0*CS/3.D0
+      FS = EXP(-(R/R0)**2)
+      FP = (R/R0)**2 * FS
+      SHELL = C1*CS*FS + (1.D0-C1)*CP*FP
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION PROFNUC (B, JA)
+
+C-----------------------------------------------------------------------
+C...This function return
+C.  the profile T(b) for a nucleus of mass number A
+C.  INPUT B = impact parameter (GeV**-1)
+C.        JA = integer mass number
+C.  OUTPUT  (fm**-2)
+C.
+C.  The  density of the nucleus is the `shell model density'
+C.  the parameter r0 must beinitialized in the common block
+C.............................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CSHELL/ RR0(18), RR02(18)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      B2 = B*B
+      ARG = B2/RR02(JA)
+      TS = EXP(-ARG)
+      TP = TS*(2.D0*B2+RR02(JA))/(3.D0*RR02(JA))
+      CS = MIN(1.D0,4.D0/DBLE(JA))
+      PROFNUC = (CS*TS + (1.D0-CS)*TP)/(PI*RR02(JA))
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SHELL_INI
+
+C-----------------------------------------------------------------------
+C...Initialize the parameter  of the shell model
+C.  for the nuclei with    6 < A < 18
+C..............................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      COMMON /CSHELL/ RR0(18), RR02(18)
+      DIMENSION RR(18)
+      SAVE
+C...Data on Sqrt[<r**2>]  in fermi
+      DATA RR /0.81D0, 2.095D0,  1.88D0, 1.674D0,  -1.D0,
+     +         2.56D0, 2.41D0,    -1.D0, 2.519D0, 2.45D0,
+     +         2.37D0, 2.460D0, 2.440D0,  2.54D0, 2.58D0, 
+     +         2.718D0,2.662D0, 2.789D0/
+
+      DO JA=1,18
+         A = DBLE(JA)
+         RMED = RR(JA)
+         IF (RMED .LE. 0.D0)   RMED = 0.5D0*(RR(JA-1) + RR(JA+1))
+         C = MAX(1.5D0,(5.D0/2.D0 - 4.D0/A) )
+         R0 = RMED/SQRT(C)
+         RR0 (JA) = R0
+         RR02(JA) = R0*R0
+      ENDDO
+      RETURN
+      END
+C->
+C=======================================================================
+
+      SUBROUTINE WOOD_SAXON_INI
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CWOOD/ RR0(19:56), AA0(19:56), CC0(19:56)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+C...Wood-Saxon parameters from  table 6.2   of Barrett and Jackson
+      RR0 (19) = 2.59D0
+      AA0 (19) = 0.564D0
+      RR0 (20) = 2.74D0
+      AA0 (20) = 0.569D0
+      RR0 (22) = 2.782D0
+      AA0 (22) = 0.549D0
+      RR0 (24) = 2.99D0
+      AA0 (24) = 0.548D0
+      RR0 (27) = 2.84D0
+      AA0 (27) = 0.569D0
+      RR0 (28) = 3.14D0
+      AA0 (28) = 0.537D0
+      RR0 (29) = 3.77D0
+      AA0 (29) = 0.52D0
+      RR0 (48) = 3.912D0
+      AA0 (48) = 0.5234D0
+      RR0 (56) = 3.98D0
+      AA0 (56) = 0.569D0
+      DO J=19, 56
+         IF (RR0(J) .LE. 0.D0)  THEN
+            RR0(J) = 1.05D0*DBLE(J)**0.333333333333D0
+            AA0(J) = 0.545D0
+         ENDIF
+         CC0(J)=3.D0/(4.D0*PI*RR0(J)**3)/(1.D0+((AA0(J)*PI)/RR0(J))**2)
+      ENDDO
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION DENSA (Z)
+
+C-----------------------------------------------------------------------
+C....Woods Saxon nuclear density (normalised to 1)
+C.   for a nucleus of mass number A.
+C.   INPUT z = z coordinate (fm)
+C.         JA = integer mass number
+C.         B (in common /CC01/)  impact parameter  (fm)
+C.  OUTPUT (fm**-3)
+C--------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CC01/  B
+      COMMON /CCDA/ JA
+      COMMON /CWOOD/ RR0(19:56), AA0(19:56), CC0(19:56)
+      SAVE
+
+      R = SQRT (Z*Z + B*B)
+      DENSA = CC0(JA)/(1.D0+EXP((R-RR0(JA))/AA0(JA)))
+      RETURN
+      END
+
+C*=====================================================================
+C. Cross sections
+C======================================================================
+
+      SUBROUTINE SIGMA_AIR (IB,SIG0,SIGEL,KINT,
+     +                            SIGMA,DSIGMA,SIGQE,DSIGQE)
+
+C-----------------------------------------------------------------------
+C...Compute with a montecarlo method the "production"
+C.  and "quasi-elastic" cross section for  
+C.  a nucleus-air  interaction 
+C.
+C.  INPUT : IB            = mass of projectile nucleus
+C.          SIG0 (mbarn)  = inelastic pp cross section
+C.          KINT            = number  of interactions to generate
+C.  OUTPUT : SIGMA (mbarn) = "production" cross section
+C.           DSIGMA   "    = error
+C.           SIGQE    "    = "quasi-elastic" cross section
+C.           DSIGQE   "    = error
+C.           additional output is in the common block  /CPROBAB/
+C..........................................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (IAMAX=56)
+      PARAMETER (IAMAX2=3136)          ! IAMAX*IAMAX
+      COMMON  /CPROBAB/ PROBA(IAMAX), DPROBA(IAMAX), 
+     +   PROBB(IAMAX), DPROBB(IAMAX), PROBI(IAMAX2), DPROBI(IAMAX2),
+     +   P1AEL(0:IAMAX),DP1AEL(0:IAMAX),P1BEL(0:IAMAX), DP1BEL(0:IAMAX),
+     +   P2AEL(0:IAMAX),DP2AEL(0:IAMAX),P2BEL(0:IAMAX), DP2BEL(0:IAMAX)
+      COMMON /CNUCMS/ B, BMAX, NTRY, NA, NB, NI, NAEL, NBEL
+     +         ,JJA(IAMAX), JJB(IAMAX), JJINT(IAMAX,IAMAX)
+     +         ,JJAEL(IAMAX), JJBEL(IAMAX)
+      DIMENSION  MMA(0:IAMAX), MMB(0:IAMAX), MMI(0:IAMAX2)
+      DIMENSION  M1AEL(0:IAMAX), M1BEL(0:IAMAX)
+      DIMENSION  M2AEL(0:IAMAX), M2BEL(0:IAMAX)
+      DOUBLE PRECISION FOX
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+      DATA FOX /0.21522D0/  !atomic percentage of 'non-nitrogen' in air
+
+      R2 = 0.1D0 * SIG0/PI
+      BMAX = 15.D0                           ! fm
+      SIGMA0 = PI*BMAX*BMAX*10.              ! mbarn
+      IA = 16
+      DO J=1,IA
+         MMA(J) = 0
+         M1AEL(J) = 0
+         M2AEL(J) = 0
+      ENDDO
+      DO J=1,IB
+         MMB(J) = 0
+         M1BEL(J) = 0
+         M2BEL(J) = 0
+      ENDDO
+      DO J=1,IA*IB
+         MMI(J) = 0
+      ENDDO
+      NN = 0
+      M = 0
+      DO KK=1,KINT
+c  select target IA from air composition
+         R = S_RNDM(KK)
+         IA = 14
+         IF (R .LT. FOX)  IA = 16
+
+         CALL INT_NUC (IA, IB, SIG0, SIGEL) 
+         NN = NN + NTRY
+         MMI(NI) = MMI(NI) + 1
+         MMA(NA) = MMA(NA)+1
+         MMB(NB) = MMB(NB)+1
+         IF (NI .GT. 0)  THEN
+            M = M+1
+            M1AEL(NAEL) = M1AEL(NAEL)+1
+            M1BEL(NBEL) = M1BEL(NBEL)+1
+         ELSE
+            M2AEL(NAEL) = M2AEL(NAEL)+1
+            M2BEL(NBEL) = M2BEL(NBEL)+1
+         ENDIF
+      ENDDO
+      MQE = KINT - M
+      SIGMA  = SIGMA0 * DBLE(M)/DBLE(NN)
+      DSIGMA = SIGMA0 * SQRT(DBLE(M))/DBLE(NN)
+      SIGQE  = SIGMA0 * DBLE(MQE)/DBLE(NN)
+      DSIGQE = SIGMA0 * SQRT(DBLE(MQE))/DBLE(NN)
+      DO J=1,IA
+         PROBA(J) = DBLE(MMA(J))/DBLE(M)
+         DPROBA(J) = SQRT(DBLE(MMA(J)))/DBLE(M)
+      ENDDO
+      DO J=1,IB
+         PROBB(J) = DBLE(MMB(J))/DBLE(M)
+         DPROBB(J) = SQRT(DBLE(MMB(J)))/DBLE(M)
+      ENDDO
+      DO J=1,IA*IB
+         PROBI(J) = DBLE(MMI(J))/DBLE(M)
+         DPROBI(J) = SQRT(DBLE(MMI(J)))/DBLE(M)
+      ENDDO
+      DO J=0,IA
+         P1AEL(J) = DBLE(M1AEL(J))/DBLE(M)
+         DP1AEL(J) = SQRT(DBLE(M1AEL(J)))/DBLE(M)
+         P2AEL(J) = DBLE(M2AEL(J))/DBLE(MQE)
+         DP2AEL(J) = SQRT(DBLE(M2AEL(J)))/DBLE(MQE)
+      ENDDO
+      DO J=0,IB
+         P1BEL(J) = DBLE(M1BEL(J))/DBLE(M)
+         DP1BEL(J) = SQRT(DBLE(M1BEL(J)))/DBLE(M)
+         P2BEL(J) = DBLE(M2BEL(J))/DBLE(MQE)
+         DP2BEL(J) = SQRT(DBLE(M2BEL(J)))/DBLE(MQE)
+      ENDDO
+      RETURN
+      END
+C->
+C=======================================================================
+
+      SUBROUTINE SIGMA_MC (IA,IB,SIG0,SIGEL,KINT,
+     +                            SIGMA,DSIGMA,SIGQE,DSIGQE)
+
+C-----------------------------------------------------------------------
+C...Compute with a montecarlo method the "production"
+C.  and "quasi-elastic" cross section for  
+C.  a nucleus-nucleus interaction
+C.
+C.  INPUT : IA            = mass of target nucleus
+C.          IB            = mass of projectile nucleus
+C.          SIG0 (mbarn)  = inelastic pp cross section
+C.          KINT            = number  of interactions to generate
+C.  OUTPUT : SIGMA (mbarn) = "production" cross section
+C.           DSIGMA   "    = error
+C.           SIGQE    "    = "quasi-elastic" cross section
+C.           DSIGQE   "    = error
+C.           additional output is in the common block  /CPROBAB/
+C.           Prob(n_A), Prob(n_B), Prob(n_int)
+C..........................................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+
+      PARAMETER (IAMAX=56)
+      PARAMETER (IAMAX2=3136)          ! IAMAX*IAMAX
+      COMMON  /CPROBAB/ PROBA(IAMAX), DPROBA(IAMAX), 
+     +   PROBB(IAMAX), DPROBB(IAMAX), PROBI(IAMAX2), DPROBI(IAMAX2),
+     +   P1AEL(0:IAMAX),DP1AEL(0:IAMAX),P1BEL(0:IAMAX), DP1BEL(0:IAMAX),
+     +   P2AEL(0:IAMAX),DP2AEL(0:IAMAX),P2BEL(0:IAMAX), DP2BEL(0:IAMAX)
+      COMMON /CNUCMS/ B, BMAX, NTRY, NA, NB, NI, NAEL, NBEL
+     +         ,JJA(IAMAX), JJB(IAMAX), JJINT(IAMAX,IAMAX)
+     +         ,JJAEL(IAMAX), JJBEL(IAMAX)
+      DIMENSION  MMA(0:IAMAX), MMB(0:IAMAX), MMI(0:IAMAX2)
+      DIMENSION  M1AEL(0:IAMAX), M1BEL(0:IAMAX)
+      DIMENSION  M2AEL(0:IAMAX), M2BEL(0:IAMAX)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      R2 = 0.1D0 * SIG0/PI
+      BMAX = 15.D0                           ! fm
+      SIGMA0 = PI*BMAX*BMAX*10.D0              ! mbarn
+      DO J=1,IA
+         MMA(J) = 0
+         M1AEL(J) = 0
+         M2AEL(J) = 0
+      ENDDO
+      DO J=1,IB
+         MMB(J) = 0
+         M1BEL(J) = 0
+         M2BEL(J) = 0
+      ENDDO
+      DO J=1,IA*IB
+         MMI(J) = 0
+      ENDDO
+      NN = 0
+      M = 0
+      DO KK=1,KINT
+         CALL INT_NUC (IA, IB, SIG0, SIGEL) 
+         NN = NN + NTRY
+         MMI(NI) = MMI(NI) + 1
+         MMA(NA) = MMA(NA)+1
+         MMB(NB) = MMB(NB)+1
+         IF (NI .GT. 0)  THEN
+            M = M+1
+            M1AEL(NAEL) = M1AEL(NAEL)+1
+            M1BEL(NBEL) = M1BEL(NBEL)+1
+         ELSE
+            M2AEL(NAEL) = M2AEL(NAEL)+1
+            M2BEL(NBEL) = M2BEL(NBEL)+1
+         ENDIF
+      ENDDO
+      MQE = KINT - M
+      SIGMA  = SIGMA0 * DBLE(M)/DBLE(NN)
+      DSIGMA = SIGMA0 * SQRT(DBLE(M))/DBLE(NN)
+      SIGQE  = SIGMA0 * DBLE(MQE)/DBLE(NN)
+      DSIGQE = SIGMA0 * SQRT(DBLE(MQE))/DBLE(NN)
+      DO J=1,IA
+         PROBA(J) = DBLE(MMA(J))/DBLE(M)
+         DPROBA(J) = SQRT(DBLE(MMA(J)))/DBLE(M)
+      ENDDO
+      DO J=1,IB
+         PROBB(J) = DBLE(MMB(J))/DBLE(M)
+         DPROBB(J) = SQRT(DBLE(MMB(J)))/DBLE(M)
+      ENDDO
+      DO J=1,IA*IB
+         PROBI(J) = DBLE(MMI(J))/DBLE(M)
+         DPROBI(J) = SQRT(DBLE(MMI(J)))/DBLE(M)
+      ENDDO
+      DO J=0,IA
+         P1AEL(J) = DBLE(M1AEL(J))/DBLE(M)
+         DP1AEL(J) = SQRT(DBLE(M1AEL(J)))/DBLE(M)
+         P2AEL(J) = DBLE(M2AEL(J))/DBLE(MQE)
+         DP2AEL(J) = SQRT(DBLE(M2AEL(J)))/DBLE(MQE)
+      ENDDO
+      DO J=0,IB
+         P1BEL(J) = DBLE(M1BEL(J))/DBLE(M)
+         DP1BEL(J) = SQRT(DBLE(M1BEL(J)))/DBLE(M)
+         P2BEL(J) = DBLE(M2BEL(J))/DBLE(MQE)
+         DP2BEL(J) = SQRT(DBLE(M2BEL(J)))/DBLE(MQE)
+      ENDDO
+      RETURN
+      END
+
+C*=============================================================
+C.  Cross sections
+C*=============================================================
+
+C Glauber h-air cross section calculation moved to inelScreen src file..
+
+C-----------------------------------------------------------------------
+C.  Fit of Block and Cahn to pp and pbar-p cross sections
+C-----------------------------------------------------------------------
+C=======================================================================
+
+      SUBROUTINE BLOCK(SQS,SIG1,SIG2,SLOP1,SLOP2,
+     +                 RHO1,RHO2,SIGEL1,SIGEL2)
+
+C-----------------------------------------------------------------------
+C...p-p and pbar-p cross sections
+C.  Parametrization of  Block and Cahn
+C
+C.  INPUT  : SQS   (GeV)  = c.m. energy
+C.  
+C.  OUPUT : SIG1 (mbarn)    = pp  total  cross section 
+C.          SLOP1 (GeV**2)  = slope of elastic scattering
+C.          RHO1            = Real/Imaginary part of the amplitude
+C.                            for forward elastic  scattering (pp)
+C.          SIGEL1 (mbarn)  = pp  elastic scattering  cross section
+C.          [1 -> 2   : pp -> pbar p]
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      S = SQS*SQS
+      CALL FPLUS  (S, FR, FI)
+      CALL FMINUS (S, GR, GI)
+      SIG1 = FI-GI
+      SIG2 = FI+GI
+      RHO1 = (FR-GR)/(FI-GI)
+      RHO2 = (FR+GR)/(FI+GI)
+      CALL SSLOPE (S, BP, BM)
+      SLOP1 = BP - GI/FI*(BM-BP)
+      SLOP2 = BP + GI/FI*(BM-BP)
+      SIGEL1 = SIG1**2*(1.D0+RHO1**2)/(16.D0*PI*SLOP1)/CMBARN
+      SIGEL2 = SIG2**2*(1.D0+RHO2**2)/(16.D0*PI*SLOP2)/CMBARN
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE FPLUS (S, FR, FI)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /BLOCKC/ AA, BETA, S0, CC, AMU, DD, ALPHA, A0
+      COMPLEX*16 Z1, Z2, Z3
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      F1 = LOG(S/S0)
+      Z1 = DCMPLX(F1,-PI/2.D0)
+      Z1 = Z1*Z1
+      Z2 = 1.D0 + A0*Z1
+      Z3 = Z1/Z2
+      F2 = CC*S**(AMU-1.D0)
+      F3 = 0.5D0*PI*(1.-AMU)
+      FI = AA + F2*COS(F3) + BETA*DREAL(Z3)
+      FR = -BETA*DIMAG(Z3)+F2*SIN(F3)
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE FMINUS (S, FR, FI)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /BLOCKC/ AA, BETA, S0, CC, AMU, DD, ALPHA, A0
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      F1 = S**(ALPHA-1.D0)
+      F2 = 0.5D0*PI*(1.D0-ALPHA)
+      FR = -DD*F1*COS(F2)
+      FI = -DD*F1*SIN(F2)
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE SSLOPE (S, BP, BM)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /BLOCKD/ CP, DP, EP, CM, DM
+      SAVE
+
+      AL = LOG(S)
+      BP = CP + DP*AL + EP*AL*AL
+      BM = CM + DM*AL
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE BLOCK_INI
+
+C-----------------------------------------------------------------------
+C...Parameters of fit IFIT=1 of Block and Cahn
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /BLOCKC/ AA, BETA, S0, CC, AMU, DD, ALPHA, A0
+      COMMON /BLOCKD/ CP, DP, EP, CM, DM
+      SAVE
+
+      AA = 41.74D0
+      BETA = 0.66D0
+      S0 = 338.5D0
+      CC = 0.D0
+      AMU = 0.D0
+      DD = -39.37D0
+      ALPHA = 0.48D0
+      A0 = 0.D0
+      CP = 10.90D0
+      DP = -0.08D0
+      EP = 0.043D0
+      CM = 23.27D0
+      DM = 0.93D0
+      RETURN
+      END
+
+C*=============================================================
+C.  Nucleus-nucleus cross sections
+C=======================================================================
+
+      SUBROUTINE SIGNUC_INI (IA,E0)
+
+C-----------------------------------------------------------------------
+C...This subroutine receives in INPUT E0 (TeV)
+C.  energy per nucleon and computes the cross sections
+C.  and interactions lengths for  all nuclei
+C.  with A  between 2 and IA
+C.  The output is contained in common block /CLENNN/
+C.
+C.  Attention: the tabulated cross sections are obtained with
+C.  new p-p cross sections as used in SIBYLL 2x,
+C.  in addition field dimensions changed (RE 04/2000)
+C.
+C........................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CLENNN/ SSIGNUC(60), ALNUC(60)
+      DIMENSION SIGMA(6,56), SIGQE(6,56)
+      DIMENSION AA(6)
+      SAVE
+      DATA NE /6/, AMIN /1.D0/, DA /1.D0/
+      DATA AA /1.D0,2.D0,3.D0,4.D0,5.D0,6.D0/
+      DATA AVOG /6.0221367D-04/
+      DATA ATARGET /14.514D0/            ! effective masss of air
+C...Data on `inelastic-production' nucleus-air cross section
+      DATA (SIGMA(J, 2),J=1,6) /
+     &3.842D+02,4.287D+02,4.940D+02,5.887D+02,6.922D+02,7.767D+02/
+      DATA (SIGMA(J, 3),J=1,6) /
+     &4.601D+02,5.149D+02,5.595D+02,6.663D+02,7.641D+02,8.446D+02/
+      DATA (SIGMA(J, 4),J=1,6) /
+     &4.881D+02,5.373D+02,6.005D+02,6.895D+02,7.716D+02,8.967D+02/
+      DATA (SIGMA(J, 5),J=1,6) /
+     &5.874D+02,6.176D+02,7.181D+02,7.993D+02,9.089D+02,1.031D+03/
+      DATA (SIGMA(J, 6),J=1,6) /
+     &7.054D+02,7.399D+02,8.388D+02,9.463D+02,1.080D+03,1.197D+03/
+      DATA (SIGMA(J, 7),J=1,6) /
+     &7.192D+02,7.611D+02,8.449D+02,9.539D+02,1.061D+03,1.176D+03/
+      DATA (SIGMA(J, 8),J=1,6) /
+     &7.550D+02,7.975D+02,9.153D+02,9.944D+02,1.126D+03,1.236D+03/
+      DATA (SIGMA(J, 9),J=1,6) /
+     &7.929D+02,8.392D+02,9.265D+02,1.059D+03,1.167D+03,1.262D+03/
+      DATA (SIGMA(J, 10),J=1,6) /
+     &8.157D+02,8.644D+02,9.512D+02,1.058D+03,1.182D+03,1.298D+03/
+      DATA (SIGMA(J, 11),J=1,6) /
+     &8.039D+02,8.587D+02,9.534D+02,1.055D+03,1.182D+03,1.298D+03/
+      DATA (SIGMA(J, 12),J=1,6) /
+     &8.515D+02,8.957D+02,9.869D+02,1.122D+03,1.253D+03,1.366D+03/
+      DATA (SIGMA(J, 13),J=1,6) /
+     &8.769D+02,9.100D+02,1.018D+03,1.119D+03,1.252D+03,1.341D+03/
+      DATA (SIGMA(J, 14),J=1,6) /
+     &9.058D+02,9.532D+02,1.057D+03,1.171D+03,1.302D+03,1.391D+03/
+      DATA (SIGMA(J, 15),J=1,6) /
+     &9.555D+02,9.799D+02,1.098D+03,1.201D+03,1.342D+03,1.444D+03/
+      DATA (SIGMA(J, 16),J=1,6) /
+     &1.009D+03,1.058D+03,1.149D+03,1.290D+03,1.414D+03,1.520D+03/
+      DATA (SIGMA(J, 17),J=1,6) /
+     &9.907D+02,1.045D+03,1.166D+03,1.290D+03,1.384D+03,1.516D+03/
+      DATA (SIGMA(J, 18),J=1,6) /
+     &1.036D+03,1.121D+03,1.198D+03,1.328D+03,1.470D+03,1.592D+03/
+      DATA (SIGMA(J, 19),J=1,6) /
+     &1.083D+03,1.162D+03,1.250D+03,1.371D+03,1.516D+03,1.661D+03/
+      DATA (SIGMA(J, 20),J=1,6) /
+     &1.146D+03,1.215D+03,1.295D+03,1.443D+03,1.544D+03,1.744D+03/
+      DATA (SIGMA(J, 21),J=1,6) /
+     &1.158D+03,1.234D+03,1.292D+03,1.467D+03,1.618D+03,1.750D+03/
+      DATA (SIGMA(J, 22),J=1,6) /
+     &1.153D+03,1.205D+03,1.329D+03,1.451D+03,1.596D+03,1.734D+03/
+      DATA (SIGMA(J, 23),J=1,6) /
+     &1.210D+03,1.274D+03,1.356D+03,1.493D+03,1.655D+03,1.803D+03/
+      DATA (SIGMA(J, 24),J=1,6) /
+     &1.212D+03,1.273D+03,1.398D+03,1.489D+03,1.641D+03,1.800D+03/
+      DATA (SIGMA(J, 25),J=1,6) /
+     &1.236D+03,1.315D+03,1.423D+03,1.561D+03,1.669D+03,1.855D+03/
+      DATA (SIGMA(J, 26),J=1,6) /
+     &1.279D+03,1.345D+03,1.431D+03,1.595D+03,1.734D+03,1.889D+03/
+      DATA (SIGMA(J, 27),J=1,6) /
+     &1.228D+03,1.304D+03,1.438D+03,1.546D+03,1.714D+03,1.836D+03/
+      DATA (SIGMA(J, 28),J=1,6) /
+     &1.289D+03,1.370D+03,1.451D+03,1.597D+03,1.754D+03,1.913D+03/
+      DATA (SIGMA(J, 29),J=1,6) /
+     &1.411D+03,1.469D+03,1.613D+03,1.777D+03,1.910D+03,2.075D+03/
+      DATA (SIGMA(J, 30),J=1,6) /
+     &1.347D+03,1.401D+03,1.498D+03,1.642D+03,1.816D+03,1.975D+03/
+      DATA (SIGMA(J, 31),J=1,6) /
+     &1.359D+03,1.448D+03,1.551D+03,1.694D+03,1.858D+03,2.007D+03/
+      DATA (SIGMA(J, 32),J=1,6) /
+     &1.358D+03,1.460D+03,1.559D+03,1.698D+03,1.842D+03,1.974D+03/
+      DATA (SIGMA(J, 33),J=1,6) /
+     &1.418D+03,1.448D+03,1.578D+03,1.727D+03,1.872D+03,2.047D+03/
+      DATA (SIGMA(J, 34),J=1,6) /
+     &1.433D+03,1.466D+03,1.605D+03,1.738D+03,1.892D+03,2.019D+03/
+      DATA (SIGMA(J, 35),J=1,6) /
+     &1.430D+03,1.511D+03,1.602D+03,1.752D+03,1.935D+03,2.060D+03/
+      DATA (SIGMA(J, 36),J=1,6) /
+     &1.462D+03,1.499D+03,1.653D+03,1.805D+03,1.920D+03,2.057D+03/
+      DATA (SIGMA(J, 37),J=1,6) /
+     &1.470D+03,1.520D+03,1.656D+03,1.818D+03,1.946D+03,2.131D+03/
+      DATA (SIGMA(J, 38),J=1,6) /
+     &1.470D+03,1.542D+03,1.691D+03,1.800D+03,1.968D+03,2.133D+03/
+      DATA (SIGMA(J, 39),J=1,6) /
+     &1.495D+03,1.588D+03,1.676D+03,1.834D+03,1.969D+03,2.163D+03/
+      DATA (SIGMA(J, 40),J=1,6) /
+     &1.525D+03,1.551D+03,1.722D+03,1.833D+03,2.020D+03,2.192D+03/
+      DATA (SIGMA(J, 41),J=1,6) /
+     &1.526D+03,1.615D+03,1.709D+03,1.899D+03,2.040D+03,2.181D+03/
+      DATA (SIGMA(J, 42),J=1,6) /
+     &1.510D+03,1.567D+03,1.716D+03,1.892D+03,2.056D+03,2.197D+03/
+      DATA (SIGMA(J, 43),J=1,6) /
+     &1.557D+03,1.658D+03,1.776D+03,1.898D+03,2.092D+03,2.200D+03/
+      DATA (SIGMA(J, 44),J=1,6) /
+     &1.556D+03,1.645D+03,1.752D+03,1.920D+03,2.091D+03,2.243D+03/
+      DATA (SIGMA(J, 45),J=1,6) /
+     &1.583D+03,1.663D+03,1.798D+03,1.940D+03,2.051D+03,2.263D+03/
+      DATA (SIGMA(J, 46),J=1,6) /
+     &1.599D+03,1.642D+03,1.799D+03,1.941D+03,2.107D+03,2.268D+03/
+      DATA (SIGMA(J, 47),J=1,6) /
+     &1.611D+03,1.692D+03,1.811D+03,1.956D+03,2.107D+03,2.264D+03/
+      DATA (SIGMA(J, 48),J=1,6) /
+     &1.625D+03,1.706D+03,1.819D+03,1.986D+03,2.139D+03,2.354D+03/
+      DATA (SIGMA(J, 49),J=1,6) /
+     &1.666D+03,1.737D+03,1.854D+03,1.971D+03,2.160D+03,2.318D+03/
+      DATA (SIGMA(J, 50),J=1,6) /
+     &1.648D+03,1.747D+03,1.856D+03,2.023D+03,2.181D+03,2.352D+03/
+      DATA (SIGMA(J, 51),J=1,6) /
+     &1.653D+03,1.763D+03,1.868D+03,2.015D+03,2.203D+03,2.386D+03/
+      DATA (SIGMA(J, 52),J=1,6) /
+     &1.690D+03,1.720D+03,1.902D+03,2.027D+03,2.189D+03,2.357D+03/
+      DATA (SIGMA(J, 53),J=1,6) /
+     &1.690D+03,1.750D+03,1.921D+03,2.059D+03,2.208D+03,2.417D+03/
+      DATA (SIGMA(J, 54),J=1,6) /
+     &1.705D+03,1.781D+03,1.911D+03,2.073D+03,2.242D+03,2.411D+03/
+      DATA (SIGMA(J, 55),J=1,6) /
+     &1.714D+03,1.806D+03,1.896D+03,2.100D+03,2.253D+03,2.411D+03/
+      DATA (SIGMA(J, 56),J=1,6) /
+     &1.774D+03,1.813D+03,1.954D+03,2.098D+03,2.280D+03,2.482D+03/
+ 
+      DATA (SIGQE(J, 2),J=1,6) /
+     &4.141D+01,3.708D+01,5.428D+01,8.696D+01,1.403D+02,1.885D+02/
+      DATA (SIGQE(J, 3),J=1,6) /
+     &4.357D+01,3.894D+01,5.177D+01,9.675D+01,1.447D+02,2.029D+02/
+      DATA (SIGQE(J, 4),J=1,6) /
+     &4.123D+01,3.933D+01,6.070D+01,9.482D+01,1.474D+02,2.023D+02/
+      DATA (SIGQE(J, 5),J=1,6) /
+     &4.681D+01,4.287D+01,6.381D+01,1.050D+02,1.519D+02,2.198D+02/
+      DATA (SIGQE(J, 6),J=1,6) /
+     &5.407D+01,5.195D+01,6.723D+01,1.108D+02,1.750D+02,2.368D+02/
+      DATA (SIGQE(J, 7),J=1,6) /
+     &4.975D+01,4.936D+01,6.880D+01,1.162D+02,1.689D+02,2.329D+02/
+      DATA (SIGQE(J, 8),J=1,6) /
+     &5.361D+01,5.027D+01,6.858D+01,1.177D+02,1.759D+02,2.412D+02/
+      DATA (SIGQE(J, 9),J=1,6) /
+     &4.980D+01,5.063D+01,7.210D+01,1.196D+02,1.806D+02,2.299D+02/
+      DATA (SIGQE(J, 10),J=1,6) /
+     &5.170D+01,5.070D+01,7.105D+01,1.182D+02,1.679D+02,2.411D+02/
+      DATA (SIGQE(J, 11),J=1,6) /
+     &4.950D+01,4.950D+01,7.286D+01,1.137D+02,1.769D+02,2.477D+02/
+      DATA (SIGQE(J, 12),J=1,6) /
+     &5.262D+01,5.133D+01,7.110D+01,1.204D+02,1.789D+02,2.501D+02/
+      DATA (SIGQE(J, 13),J=1,6) /
+     &5.320D+01,5.378D+01,6.847D+01,1.200D+02,1.805D+02,2.442D+02/
+      DATA (SIGQE(J, 14),J=1,6) /
+     &5.638D+01,5.271D+01,6.985D+01,1.209D+02,1.867D+02,2.610D+02/
+      DATA (SIGQE(J, 15),J=1,6) /
+     &5.294D+01,5.353D+01,7.435D+01,1.211D+02,1.899D+02,2.612D+02/
+      DATA (SIGQE(J, 16),J=1,6) /
+     &5.668D+01,5.254D+01,7.557D+01,1.269D+02,1.917D+02,2.707D+02/
+      DATA (SIGQE(J, 17),J=1,6) /
+     &5.456D+01,5.721D+01,7.481D+01,1.208D+02,1.859D+02,2.658D+02/
+      DATA (SIGQE(J, 18),J=1,6) /
+     &5.901D+01,5.382D+01,7.591D+01,1.246D+02,1.872D+02,2.874D+02/
+      DATA (SIGQE(J, 19),J=1,6) /
+     &6.328D+01,6.116D+01,8.451D+01,1.318D+02,2.088D+02,2.749D+02/
+      DATA (SIGQE(J, 20),J=1,6) /
+     &5.779D+01,5.924D+01,8.382D+01,1.370D+02,2.062D+02,2.837D+02/
+      DATA (SIGQE(J, 21),J=1,6) /
+     &7.155D+01,5.732D+01,8.231D+01,1.363D+02,2.047D+02,2.820D+02/
+      DATA (SIGQE(J, 22),J=1,6) /
+     &6.699D+01,5.651D+01,8.511D+01,1.477D+02,2.031D+02,2.921D+02/
+      DATA (SIGQE(J, 23),J=1,6) /
+     &6.179D+01,6.269D+01,9.395D+01,1.437D+02,2.195D+02,2.964D+02/
+      DATA (SIGQE(J, 24),J=1,6) /
+     &6.784D+01,6.028D+01,8.622D+01,1.279D+02,2.214D+02,2.867D+02/
+      DATA (SIGQE(J, 25),J=1,6) /
+     &6.589D+01,5.795D+01,8.890D+01,1.385D+02,2.055D+02,2.988D+02/
+      DATA (SIGQE(J, 26),J=1,6) /
+     &6.364D+01,6.325D+01,8.942D+01,1.421D+02,2.128D+02,3.083D+02/
+      DATA (SIGQE(J, 27),J=1,6) /
+     &6.449D+01,6.664D+01,8.986D+01,1.453D+02,2.140D+02,2.932D+02/
+      DATA (SIGQE(J, 28),J=1,6) /
+     &7.284D+01,6.139D+01,8.867D+01,1.425D+02,2.179D+02,2.978D+02/
+      DATA (SIGQE(J, 29),J=1,6) /
+     &7.221D+01,7.085D+01,9.079D+01,1.482D+02,2.277D+02,2.913D+02/
+      DATA (SIGQE(J, 30),J=1,6) /
+     &6.928D+01,6.294D+01,8.935D+01,1.463D+02,2.265D+02,2.834D+02/
+      DATA (SIGQE(J, 31),J=1,6) /
+     &6.611D+01,6.586D+01,9.133D+01,1.461D+02,2.201D+02,2.959D+02/
+      DATA (SIGQE(J, 32),J=1,6) /
+     &6.401D+01,6.177D+01,8.971D+01,1.480D+02,2.155D+02,3.152D+02/
+      DATA (SIGQE(J, 33),J=1,6) /
+     &7.057D+01,6.918D+01,8.410D+01,1.465D+02,2.288D+02,3.088D+02/
+      DATA (SIGQE(J, 34),J=1,6) /
+     &6.453D+01,7.020D+01,9.272D+01,1.517D+02,2.189D+02,2.999D+02/
+      DATA (SIGQE(J, 35),J=1,6) /
+     &6.741D+01,6.295D+01,9.323D+01,1.536D+02,2.190D+02,2.930D+02/
+      DATA (SIGQE(J, 36),J=1,6) /
+     &6.807D+01,7.046D+01,1.025D+02,1.565D+02,2.315D+02,3.090D+02/
+      DATA (SIGQE(J, 37),J=1,6) /
+     &8.082D+01,6.565D+01,9.160D+01,1.572D+02,2.229D+02,3.125D+02/
+      DATA (SIGQE(J, 38),J=1,6) /
+     &6.494D+01,6.964D+01,9.089D+01,1.653D+02,2.336D+02,3.120D+02/
+      DATA (SIGQE(J, 39),J=1,6) /
+     &6.833D+01,6.860D+01,8.933D+01,1.601D+02,2.261D+02,3.167D+02/
+      DATA (SIGQE(J, 40),J=1,6) /
+     &7.021D+01,6.866D+01,8.437D+01,1.588D+02,2.249D+02,2.941D+02/
+      DATA (SIGQE(J, 41),J=1,6) /
+     &7.122D+01,6.205D+01,9.545D+01,1.582D+02,2.335D+02,3.395D+02/
+      DATA (SIGQE(J, 42),J=1,6) /
+     &7.265D+01,6.936D+01,9.486D+01,1.505D+02,2.379D+02,3.248D+02/
+      DATA (SIGQE(J, 43),J=1,6) /
+     &7.048D+01,7.539D+01,9.192D+01,1.566D+02,2.532D+02,3.182D+02/
+      DATA (SIGQE(J, 44),J=1,6) /
+     &6.650D+01,7.139D+01,9.862D+01,1.602D+02,2.289D+02,3.077D+02/
+      DATA (SIGQE(J, 45),J=1,6) /
+     &7.511D+01,6.893D+01,9.245D+01,1.641D+02,2.519D+02,3.381D+02/
+      DATA (SIGQE(J, 46),J=1,6) /
+     &6.437D+01,6.894D+01,8.697D+01,1.544D+02,2.391D+02,3.213D+02/
+      DATA (SIGQE(J, 47),J=1,6) /
+     &7.980D+01,6.958D+01,1.022D+02,1.609D+02,2.408D+02,3.246D+02/
+      DATA (SIGQE(J, 48),J=1,6) /
+     &7.265D+01,7.313D+01,8.989D+01,1.578D+02,2.387D+02,3.235D+02/
+      DATA (SIGQE(J, 49),J=1,6) /
+     &6.959D+01,6.337D+01,9.084D+01,1.656D+02,2.331D+02,3.226D+02/
+      DATA (SIGQE(J, 50),J=1,6) /
+     &7.371D+01,6.807D+01,9.726D+01,1.535D+02,2.445D+02,3.189D+02/
+      DATA (SIGQE(J, 51),J=1,6) /
+     &7.882D+01,6.680D+01,9.377D+01,1.629D+02,2.448D+02,3.297D+02/
+      DATA (SIGQE(J, 52),J=1,6) /
+     &7.223D+01,6.794D+01,9.925D+01,1.738D+02,2.446D+02,3.162D+02/
+      DATA (SIGQE(J, 53),J=1,6) /
+     &7.703D+01,6.971D+01,9.601D+01,1.595D+02,2.484D+02,3.265D+02/
+      DATA (SIGQE(J, 54),J=1,6) /
+     &7.549D+01,7.459D+01,8.984D+01,1.645D+02,2.348D+02,3.201D+02/
+      DATA (SIGQE(J, 55),J=1,6) /
+     &7.891D+01,6.840D+01,1.017D+02,1.698D+02,2.501D+02,3.429D+02/
+      DATA (SIGQE(J, 56),J=1,6) /
+     &7.545D+01,6.673D+01,1.057D+02,1.684D+02,2.424D+02,3.181D+02/
+
+      ASQS = 0.5D0*LOG10(1.876D+03*E0)
+      JE = MIN(INT((ASQS-AMIN)/DA)+1,NE-2)
+      DO JA=2,IA
+         ABEAM = DBLE(JA)
+         S1 = QUAD_INT(ASQS, AA(JE),AA(JE+1),AA(JE+2),
+     +                   SIGMA(JE,JA),SIGMA(JE+1,JA),SIGMA(JE+2,JA))
+         S2 = QUAD_INT(ASQS, AA(JE),AA(JE+1),AA(JE+2),
+     +                   SIGQE(JE,JA),SIGQE(JE+1,JA),SIGQE(JE+2,JA))
+         SSIGNUC(JA) = S1 + S2
+         ALNUC(JA) = ATARGET/(AVOG*SSIGNUC(JA))
+      ENDDO
+      ALNUC(1) = FPNI(E0, 13)
+      SSIGNUC(1) = ATARGET/(AVOG*ALNUC(1))
+
+      RETURN
+      END
+
+
+C*=======================================================================
+C.  General utilities
+C=======================================================================
+
+      FUNCTION QUAD_INT (R,X0,X1,X2,V0,V1,V2)
+
+C-----------------------------------------------------------------------
+C...Quadratic interpolation
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      SAVE
+
+      R0=R-X0
+      R1=R-X1
+      R2=R-X2
+      S0=X0-X1
+      S1=X0-X2
+      S2=X1-X2
+      QUAD_INT = V0*R1*R2/(S0*S1)-V1*R0*R2/(S0*S2)+V2*R0*R1/(S1*S2)
+      RETURN
+      END
+C=======================================================================
+
+      FUNCTION GAUSS (FUN, A,B)
+
+C-----------------------------------------------------------------------
+C...Returns the  8 points Gauss-Legendre integral
+C.  of function FUN from A to B
+C...........................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION X(8), W(8)
+      SAVE
+      DATA X/.0950125098D0, .2816035507D0, .4580167776D0, .6178762444D0,
+     1       .7554044083D0, .8656312023D0, .9445750230D0, .9894009349D0/
+      DATA W/.1894506104D0, .1826034150D0, .1691565193D0, .1495959888D0,
+     1       .1246289712D0, .0951585116D0, .0622535239D0, .0271524594D0/
+
+      XM = 0.5D0*(B+A)
+      XR = 0.5D0*(B-A)
+      SS = 0.D0
+      DO J=1,8
+        DX = XR*X(J)
+        SS = SS + W(J) * (FUN(XM+DX) + FUN(XM-DX))
+      ENDDO
+      GAUSS = XR*SS
+      RETURN
+      END
+C=======================================================================
+
+      SUBROUTINE INVERT_ARRAY (yy, xmin, dx, n, xnew, ymin, dy)
+
+C-----------------------------------------------------------------------
+C..    This subroutine receives one   array
+C      of n y values in input yy(1:n)
+C      that correspond to  equispaced values of x_j = xmin + dx*(j-1)
+C
+C      and "reverse" the array returning an array of  x values
+C      xnew (1:n) that  corresponds to equispaced values of y
+C      The relation is assumed monotonous but can be 
+C      increasing or decreasing
+C..............................................................
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      dimension  yy(n), xnew (n)
+      SAVE
+
+      ymin = yy(1)
+      ymax = yy(n)
+      dy = (ymax - ymin)/float(n-1)
+      xnew (1) = xmin
+      xnew (n) = xmin + dx*float(n-1)
+      k0 = 1
+      do j=2,n-1
+         y = ymin + float(j-1)*dy 
+         do k=k0,n
+            if((yy(k) .gt. y) .eqv. (yy(n) .gt. yy(1))) goto 100
+         enddo
+100      y2 = yy(k)
+         y1 = yy(k-1)
+         k0 = k-1
+         x1 = xmin + dx*float(k-2)
+         x2 = x1+dx
+         xnew (j)  = x1 + dx* (y-y1)/(y2-y1)
+      enddo
+      return
+      end
+C->
+C=======================================================================
+
+      SUBROUTINE SINCO(S,C)
+
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+      F = TWOPI*S_RNDM(0)
+      C = COS (F)
+      S = SIN (F)
+      RETURN
+      END
+
+C***********************************************************************
+C.  Cross sections for cascade calculations (FPNI)
+C=======================================================================
+      
+      SUBROUTINE SIGMA_PP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO) 
+
+C-----------------------------------------------------------------------
+C...p-p cross sections
+C.
+C.  this routine serves the purpose to calculate cascades with different 
+C.  cross sections
+C.
+C. INPUT: E0 = Laboratory Energy  (TeV)
+C. 
+C. OUTPUT: SIGT = total cross section
+C.         SIGEL = elastic cross section
+C.         SIGINEL = inelastic cross section
+C.         SLOPE = slope of elastic scattering (GeV**-2)
+C.         RHO = Imaginary/Real part of forward elastic amplitude
+C.   
+C.  (old cross section tables end at 10^6 GeV)
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION SSIG0(51)
+      DIMENSION SIGDIF(3)
+      COMMON /CSPA/ ICSPA2(3)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+C...p-p inelastic cross sections (mbarn)
+      DATA (SSIG0(J),J=1,51) /
+     +      32.05D0,  32.06D0,  32.08D0,  32.13D0,  32.22D0,  32.36D0,
+     +      32.56D0,  32.85D0,  33.24D0,  33.75D0,  34.37D0,  35.14D0,
+     +      36.05D0,  37.12D0,  38.37D0,  39.78D0,  41.36D0,  43.13D0,
+     +      45.07D0,  47.18D0,  49.47D0,  51.91D0,  54.54D0,  57.28D0,
+     +      60.15D0,  63.15D0,  66.28D0,  69.48D0,  72.80D0,  76.22D0,
+     +      79.71D0,  83.27D0,  86.87D0,  90.55D0,  94.26D0,  98.05D0,
+     +     101.89D0, 105.75D0, 109.71D0, 113.65D0, 117.60D0, 121.55D0,
+     +     125.53D0, 129.56D0, 133.60D0, 137.70D0, 141.77D0, 145.84D0,
+     +     149.92D0, 154.02D0, 158.15D0/
+
+      ICSPA = ICSPA2(1)
+
+      SQS = SQRT(2000.D0*0.938D0*E0)
+
+*  pre-LHC SIBYLL2.1 model
+      
+      IF(ICSPA.EQ.-2) THEN
+
+         CALL SIB_SIGMA_EXT(3,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO)      
+
+*  old standard NUCLIB/SIBYLL model
+
+      ELSE IF(ICSPA.EQ.-1) THEN
+
+        AL = LOG10(SQS)
+        if(AL.le.1.D0) then
+          SIGINEL = SSIG0(1)
+        else
+          J1 = INT((AL - 1.D0)*10.D0) + 1
+          J1 = min(J1,50)
+          T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+          SIGINEL = SSIG0(J1)*(1.D0-T) + SSIG0(J1+1)*T
+        endif
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+        SIGT  = SIGINEL/(1.D0-R)
+        SIGEL = SIGINEL*R/(1.D0-R)
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO1**2) /CMBARN
+
+*  cross section as calculated in SIBYLL
+
+      ELSE IF(ICSPA.EQ.0) THEN
+
+        CALL SIB_SIGMA_HP(1,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+*  Donnachie-Landshoff  (sig-tot)
+
+      ELSE IF(ICSPA.EQ.1) THEN
+
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,
+     +             SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 21.7D0*S**DELDL+56.08D0*S**EPSDL
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO**2) /CMBARN
+
+*  Donnachie-Landshoff (sig-tot and sig-el)
+
+      ELSE IF(ICSPA.EQ.2) THEN
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 21.7D0*S**DELDL+56.08D0*S**EPSDL
+        IMODEL = 1
+        IF(IMODEL.EQ.1) THEN
+          ALPHAP = 0.25D0
+          SLOPE = 8.5D0+2.D0*ALPHAP*LOG(S)
+        ELSE IF(IMODEL.EQ.2) THEN
+          ALPHAP = 0.3D0
+          SLOPE = 8.D0+2.D0*ALPHAP*LOG(S)
+        ENDIF
+        SIGEL = SIGT**2/(16.D0*PI*SLOPE*CMBARN)
+        SIGINEL = SIGT-SIGEL
+        RHO = 0.D0
+
+*  geometrical scaling with Donnachie-Landshoff sig-tot
+
+      ELSE IF(ICSPA.EQ.3) THEN
+
+        R = 0.17D0
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 21.7D0*S**DELDL+56.08D0*S**EPSDL
+
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(16.D0*PI*SIGEL)/CMBARN
+        RHO = 0.D0
+
+c ICSPA=4 reserved for CONEX_EXTENSION
+c      ELSE IF(ICSPA.EQ.4) THEN
+
+*  cross section from 2014 Review of Particle Physics
+        
+      ELSE IF(ICSPA.EQ.5) THEN
+         
+c     elastic slope not included in fit
+c     taking slope parameterization from sigma_pp Donnie.-Landshoff
+         ALPHAP = 0.25D0
+         SLOPE = 8.5D0+4.D0*ALPHAP*LOG(SQS)
+         
+         CALL SIG_RPP2014(1,1,SQS,SLOPE,SIGT,SIGEL,SIGINEL,RHO)
+
+      ENDIF
+
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIGMA_PIP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO) 
+
+C-----------------------------------------------------------------------
+C...pi-p cross sections
+C.
+C.  this routine serves the purpose to calculate cascades with different 
+C.  cross sections
+C.
+C. INPUT: E0 = Laboratory Energy  (TeV)
+C. 
+C. OUTPUT: SIGT = total cross section
+C.         SIGEL = elastic cross section
+C.         SIGINEL = inelastic cross section
+C.         SLOPE = slope of elastic scattering (GeV**-2)
+C.         RHO = Imaginary/Real part of forward elastic amplitude
+C.
+C.  (old cross section tables end at 10^6 GeV)
+C-----------------------------------------------------------------------
+Cf2py double precision,intent(in) :: e0
+Cf2py double precision,intent(out) :: sigt, sigel, siginel, slope, rho
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION SSIG0(51)
+      DIMENSION SIGDIF(3)
+      COMMON /CSPA/ ICSPA2(3)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+C...pi-p inelastic cross sections (mbarn)
+      DATA (SSIG0(J),J=1,51) /
+     +      20.76D0,  20.78D0,  20.81D0,  20.88D0,  20.98D0,  21.13D0,
+     +      21.33D0,  21.61D0,  21.96D0,  22.39D0,  22.92D0,  23.56D0,
+     +      24.31D0,  25.18D0,  26.18D0,  27.32D0,  28.60D0,  30.04D0,
+     +      31.64D0,  33.40D0,  35.34D0,  37.43D0,  39.72D0,  42.16D0,
+     +      44.77D0,  47.56D0,  50.53D0,  53.66D0,  56.99D0,  60.50D0,
+     +      64.17D0,  68.03D0,  72.05D0,  76.27D0,  80.67D0,  85.27D0,
+     +      90.08D0,  95.04D0, 100.27D0, 105.65D0, 111.21D0, 116.94D0,
+     +     122.87D0, 129.03D0, 135.37D0, 141.93D0, 148.62D0, 155.49D0,
+     +     162.48D0, 169.60D0, 176.94D0/
+
+      ICSPA = ICSPA2(2)
+
+      SQS = SQRT(2000.D0*0.938D0*E0)
+      
+*  pre-LHC SIBYLL2.1 model
+      
+      IF(ICSPA.EQ.-2) THEN
+
+         CALL SIB_SIGMA_EXT(2,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO)
+      
+*  old standard NUCLIB/SIBYLL model
+
+      ELSE IF(ICSPA.EQ.-1) THEN
+
+        AL = LOG10(SQS)
+        if(AL.le.1.D0) then
+          SIGINEL = SSIG0(1)
+        else
+          J1 = INT((AL - 1.D0)*10.D0) + 1
+          J1 = min(J1,50)
+          T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+          SIGINEL = SSIG0(J1)*(1.D0-T) + SSIG0(J1+1)*T
+        endif
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+        SIGT  = SIGINEL/(1.D0-R)
+        SIGEL = SIGINEL*R/(1.D0-R)
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO1**2) /CMBARN
+
+*  cross section as calculated in SIBYLL
+
+      ELSE IF(ICSPA.EQ.0) THEN
+
+        CALL SIB_SIGMA_HP(2,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+*  Donnachie-Landshoff  (sig-tot)
+
+      ELSE IF(ICSPA.EQ.1) THEN
+
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,
+     +             SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 13.63D0*S**DELDL+(36.02D0+27.56D0)/2.D0*S**EPSDL
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO**2) /CMBARN
+
+*  Donnachie-Landshoff (sig-tot and sig-el)
+
+      ELSE IF(ICSPA.EQ.2) THEN
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 13.63D0*S**DELDL+(36.02D0+27.56D0)/2.D0*S**EPSDL
+        IMODEL = 1
+        IF(IMODEL.EQ.1) THEN
+          ALPHAP = 0.25D0
+          SLOPE = 8.5D0+2.D0*ALPHAP*LOG(S)
+        ELSE IF(IMODEL.EQ.2) THEN
+          ALPHAP = 0.3D0
+          SLOPE = 8.D0+2.D0*ALPHAP*LOG(S)
+        ENDIF
+        SIGEL = SIGT**2/(16.D0*PI*SLOPE*CMBARN)
+        SIGINEL = SIGT-SIGEL
+        RHO = 0.
+
+*  geometrical scaling with Donnachie-Landshoff sig-tot
+
+      ELSE IF(ICSPA.EQ.3) THEN
+
+        R = 0.17D0
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 13.63D0*S**DELDL+(36.02D0+27.56D0)/2.D0*S**EPSDL
+
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(16.D0*PI*SIGEL)/CMBARN
+        RHO = 0.D0
+
+c ICSPA=4 reserved for CONEX_EXTENSION
+c      ELSE IF(ICSPA.EQ.4) THEN
+
+*  cross section from 2014 Review of Particle Physics
+        
+      ELSE IF(ICSPA.EQ.5) THEN
+         
+c     elastic slope not included in fit
+c     taking slope parameterization from sigma_pp Donnie.-Landshoff
+         ALPHAP = 0.25D0
+         SLOPE = 8.5D0+4.D0*ALPHAP*LOG(SQS)
+         
+         CALL SIG_RPP2014(2,1,SQS,SLOPE,SIGT,SIGEL,SIGINEL,RHO)
+         
+      ENDIF
+
+
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIGMA_KP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO) 
+
+C-----------------------------------------------------------------------
+C...K-p cross sections
+C.
+C.  this routine serves the purpose to calculate cascades with different 
+C.  cross sections
+C.
+C.  if old cross sections are selected then sigma_pi = sigma_K
+C.
+C. INPUT: E0 = Laboratory Energy  (TeV)
+C. 
+C. OUTPUT: SIGT = total cross section
+C.         SIGEL = elastic cross section
+C.         SIGINEL = inelastic cross section
+C.         SLOPE = slope of elastic scattering (GeV**-2)
+C.         RHO = Imaginary/Real part of forward elastic amplitude
+C.
+C.  (old cross section tables end at 10^6 GeV)
+C-----------------------------------------------------------------------
+Cf2py double precision,intent(in) :: e0
+Cf2py double precision,intent(out) :: sigt, sigel, siginel, slope, rho
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      DIMENSION SSIG0(51)
+      DIMENSION SIGDIF(3)
+      COMMON /CSPA/ ICSPA2(3)
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+      SAVE
+
+C...pi-p inelastic cross sections (mbarn)
+      DATA (SSIG0(J),J=1,51) /
+     +      20.76D0,  20.78D0,  20.81D0,  20.88D0,  20.98D0,  21.13D0,
+     +      21.33D0,  21.61D0,  21.96D0,  22.39D0,  22.92D0,  23.56D0,
+     +      24.31D0,  25.18D0,  26.18D0,  27.32D0,  28.60D0,  30.04D0,
+     +      31.64D0,  33.40D0,  35.34D0,  37.43D0,  39.72D0,  42.16D0,
+     +      44.77D0,  47.56D0,  50.53D0,  53.66D0,  56.99D0,  60.50D0,
+     +      64.17D0,  68.03D0,  72.05D0,  76.27D0,  80.67D0,  85.27D0,
+     +      90.08D0,  95.04D0, 100.27D0, 105.65D0, 111.21D0, 116.94D0,
+     +     122.87D0, 129.03D0, 135.37D0, 141.93D0, 148.62D0, 155.49D0,
+     +     162.48D0, 169.60D0, 176.94D0/
+
+      ICSPA = ICSPA2(3)
+      
+      SQS = SQRT(2000.D0*0.938D0*E0)      
+
+*  pre-LHC SIBYLL2.1 model
+      
+      IF(ICSPA.EQ.-2) THEN
+
+         CALL SIB_SIGMA_EXT(3,SQS,SIGT,SIGEL,SIGINEL,SLOPE,RHO)
+      
+*  old standard NUCLIB/SIBYLL model
+
+      ELSE IF(ICSPA.EQ.-1) THEN
+
+        AL = LOG10(SQS)
+        if(AL.le.1.D0) then
+          SIGINEL = SSIG0(1)
+        else
+          J1 = INT((AL - 1.D0)*10.D0) + 1
+          J1 = min(J1,50)
+          T = (AL-1.D0)*10.D0 - DBLE(J1-1)
+          SIGINEL = SSIG0(J1)*(1.D0-T) + SSIG0(J1+1)*T
+        endif
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+        SIGT  = SIGINEL/(1.D0-R)
+        SIGEL = SIGINEL*R/(1.D0-R)
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO1**2) /CMBARN
+
+*  cross section as calculated in SIBYLL
+
+      ELSE IF(ICSPA.EQ.0) THEN
+
+        CALL SIB_SIGMA_HP(3,SQS,SIGT,SIGEL,SIGINEL,SIGDIF,SLOPE,RHO)
+
+*  Donnachie-Landshoff  (sig-tot)
+
+      ELSE IF(ICSPA.EQ.1) THEN
+
+        CALL BLOCK(SQS,SIGT1,SIGT2,SLOP1,SLOP2,RHO1,RHO2,
+     +             SIGEL1,SIGEL2)
+        R = SIGEL1/SIGT1
+        RHO = RHO1
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 11.82D0*S**DELDL+(26.36D0+ 8.15D0)/2.D0*S**EPSDL
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(SIGEL * 16.D0*PI) * (1.D0+RHO**2) /CMBARN
+
+*  Donnachie-Landshoff (sig-tot and sig-el)
+
+      ELSE IF(ICSPA.EQ.2) THEN
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 11.82D0*S**DELDL+(26.36D0+ 8.15D0)/2.D0*S**EPSDL
+        IMODEL = 1
+        IF(IMODEL.EQ.1) THEN
+          ALPHAP = 0.25D0
+          SLOPE = 8.5D0+2.D0*ALPHAP*LOG(S)
+        ELSE IF(IMODEL.EQ.2) THEN
+          ALPHAP = 0.3D0
+          SLOPE = 8.D0+2.D0*ALPHAP*LOG(S)
+        ENDIF
+        SIGEL = SIGT**2/(16.D0*PI*SLOPE*CMBARN)
+        SIGINEL = SIGT-SIGEL
+        RHO = 0.D0
+
+*  geometrical scaling with Donnachie-Landshoff sig-tot
+
+      ELSE IF(ICSPA.EQ.3) THEN
+
+        R = 0.17D0
+
+        DELDL = 0.0808D0
+        EPSDL = -0.4525D0
+        S = SQS*SQS
+        SIGT = 11.82D0*S**DELDL+(26.36D0+ 8.15D0)/2.D0*S**EPSDL
+
+        SIGEL = R*SIGT
+        SIGINEL = SIGT-SIGEL
+        SLOPE = SIGT**2/(16.D0*PI*SIGEL)/CMBARN
+        RHO = 0.D0
+        
+c ICSPA=4 reserved for CONEX_EXTENSION
+c      ELSE IF(ICSPA.EQ.4) THEN
+
+
+*  cross section from 2014 Review of Particle Physics
+        
+      ELSE IF(ICSPA.EQ.5) THEN
+         
+c     elastic slope not included in fit
+c     taking slope parameterization from sigma_pp Donnie.-Landshoff
+         ALPHAP = 0.25D0
+         SLOPE = 8.5D0+4.D0*ALPHAP*LOG(SQS)
+         
+         CALL SIG_RPP2014(3,1,SQS,SLOPE,SIGT,SIGEL,SIGINEL,RHO)
+
+      ENDIF
+
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE SIGMA_INI 
+
+C-----------------------------------------------------------------------
+C.  Initialize the cross section and interaction lengths in air
+C.  cross section model can be chosen, per particle, by setting ICSPA2()
+C.  default is Sibyll cross section (0,0,0)      
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+      COMMON /CSAIR/ ASQSMIN, ASQSMAX, DASQS,
+     &     SSIG0(61,3),SSIGA(61,3),ALINT(61,3),NSQS
+      
+      COMMON /CSPA/ ICSPA2(3)
+
+      INTEGER NCALL, NDEBUG, LUN
+      COMMON /S_DEBUG/ NCALL, NDEBUG, LUN
+
+C--------------------------------------------------------------------
+C     SIBYLL utility common blocks containing constants       \FR'14
+C--------------------------------------------------------------------
+      DOUBLE PRECISION EPS3,EPS5,EPS8,EPS10
+      COMMON /SIB_EPS/ EPS3,EPS5,EPS8,EPS10
+
+      DOUBLE PRECISION PI,TWOPI,CMBARN
+      COMMON /SIB_CST/ PI,TWOPI,CMBARN
+
+      DOUBLE PRECISION FACN
+      DIMENSION FACN(3:10)
+      COMMON /SIB_FAC/ FACN
+      SAVE
+      DATA ICSPA2 /0,0,0/
+      DATA AVOG /6.0221367D-04/
+      DATA ATARGET /14.514D0/            ! effective masss of air
+
+      IF(NDEBUG.gt.0)
+     &     write(lun,*) ' SIGMA_INI: using cross section model no.',
+     &     (ICSPA2(i),i=1,3)
+
+      CALL BLOCK_INI
+
+C...Loop on c.m. energy 
+      NSQS = 61
+      SQSMIN = 10.D0
+      SQSMAX = 1.d+07
+      ASQSMIN = LOG10(SQSMIN)
+      ASQSMAX = LOG10(SQSMAX)
+      DASQS = (ASQSMAX-ASQSMIN)/DBLE(NSQS-1)
+      DO J=1,NSQS
+         ASQS = ASQSMIN + DASQS*DBLE(J-1)
+         SQS = 10.D0**ASQS
+         E0 = SQS*SQS/(2.D0*0.938D0) * 1.D-03       ! TeV
+C...p-air
+         CALL SIGMA_PP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO)
+C     using parametrization by Goulianos for diff. cross section
+c     (depends on elastic cross section)
+c     used to determine coupling to intermediate resonances in Glauber calc (ALAM)
+c     assumed to be universal, i.e. same coupling used for proton, pion and kaons
+         CALL SIB_HADCS1(1,SQS,SIGT1,SIGEL1,SIGINEL1,SLOPE1,RHO1)
+         SIGEFF = 0.68D0*(1.D0+36.D0/SQS**2)
+     &        *LOG(0.6D0+0.02D0/1.5D0*SQS**2)
+         SIGEFF = MAX(0.D0,SIGEFF)
+         ALAM = sqrt(SIGEFF/SIGEL1)
+         SSIGSD = 2.D0 * SIGEFF        
+         CALL SIG_H_AIR (SIGT, SLOPE, RHO, ALAM,
+     &        SSIGT, SSIGEL, SSIGQE, SIGSD, SIGQSD )
+         SSIGA(J,1) = SSIGT-SSIGQE ! had-air production cross section
+         SSIG0(J,1) = SIGINEL   ! had-nucleon inel. cross section
+         ALINT(J,1) = 1.D0/(AVOG*SSIGA(J,1)/ATARGET) ! interaction length in air
+C...pi-air
+         CALL SIGMA_PIP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO) 
+         CALL  SIG_H_AIR (SIGT, SLOPE, RHO, ALAM,
+     &        SSIGT, SSIGEL, SSIGQE, SIGSD, SIGQSD )
+         SSIGA(J,2) = SSIGT-SSIGQE
+         SSIG0(J,2) = SIGINEL
+         ALINT(J,2) = 1.D0/(AVOG*SSIGA(J,2)/ATARGET)
+C...K-air
+         CALL SIGMA_KP (E0, SIGT, SIGEL, SIGINEL, SLOPE, RHO) 
+         CALL  SIG_H_AIR (SIGT, SLOPE, RHO, ALAM,
+     &        SSIGT, SSIGEL, SSIGQE, SIGSD, SIGQSD )
+         SSIGA(J,3) = SSIGT-SSIGQE
+         SSIG0(J,3) = SIGINEL
+         ALINT(J,3) = 1.D0/(AVOG*SSIGA(J,3)/ATARGET)
+      ENDDO
+
+      if (ndebug .gt. 0 ) THEN
+        WRITE(LUN,'(1X,A)') 
+     &  ' SIGMA_INI: NUCLIB interaction lengths [g/cm**2]'
+        WRITE(LUN,'(1X,A)') 
+     &  '     sqs,       p-air,      pi-air,     K-air'
+      DO J=1,NSQS
+         SQS = 10.D0**(ASQSMIN + DASQS*DBLE(J-1))
+         WRITE(LUN,'(1X,1P,4E12.3)') 
+     &        SQS,ALINT(J,1),ALINT(J,2),ALINT(J,3)
+        ENDDO
+      endif
+
+      RETURN
+      END
+
+C=======================================================================
+
+      FUNCTION FPNI (E,Linp)
+
+C-----------------------------------------------------------------------
+C...This function  returns the interaction length 
+C.  of an hadronic particle travelling in air
+C.
+C.  INPUT:   E (TeV)   particle energy
+C.           Linp      particle code
+C.  OUTPUT:  FPNI      (g cm-2)
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+            
+      COMMON /CSAIR/ ASQSMIN, ASQSMAX, DASQS,
+     &     SSIG0(61,3),SSIGA(61,3),ALINT(61,3),NSQS
+
+      DIMENSION KK(6:14)
+      SAVE
+      DATA KK /3*2, 4*3, 2*1/
+
+      SQS = SQRT(2000.D0*E*0.937D0)                        ! GeV
+      AL = LOG10 (SQS)
+      L = abs(Linp)
+      IF (AL .LE. ASQSMIN)  THEN
+         FPNI = ALINT(1,KK(L))
+      ELSE
+         T = (AL-ASQSMIN)/DASQS
+         J = INT(T)
+         J = MIN(J,NSQS-2)
+         T = T-DBLE(J)
+         FPNI = ((1.D0-T)*ALINT(J+1,KK(L)) + T*ALINT(J+2,KK(L)))
+      ENDIF
+      RETURN
+      END
+
+C=======================================================================
+      
+      FUNCTION FSIGHAIR (E,Linp)
+
+C-----------------------------------------------------------------------
+C...This function returns the production cross section
+C.  of an hadronic particle with air calculated in NUCLIB (SIGMA_INI)     
+C.
+C.  INPUT:   E (TeV)   particle energy
+C.           Linp      particle code
+C.  OUTPUT:  SIG_PROD  (mb)
+C-----------------------------------------------------------------------
+      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+      IMPLICIT INTEGER(I-N)
+            
+      COMMON /CSAIR/ ASQSMIN, ASQSMAX, DASQS,
+     &     SSIG0(61,3),SSIGA(61,3),ALINT(61,3),NSQS
+
+      DIMENSION KK(6:14)
+      SAVE
+      DATA KK /3*2, 4*3, 2*1/
+
+      SQS = SQRT(2000.D0*E*0.937D0)                        ! GeV
+      AL = LOG10 (SQS)
+      L = abs(Linp)
+      IF (AL .LE. ASQSMIN)  THEN
+         FSIGHAIR = SSIGA(1,KK(L))
+      ELSE
+         T = (AL-ASQSMIN)/DASQS
+         J = INT(T)
+         J = MIN(J,NSQS-2)
+         T = T-DBLE(J)
+         FSIGHAIR = ((1.D0-T)*SSIGA(J+1,KK(L)) + T*SSIGA(J+2,KK(L)))
+      ENDIF     
+      RETURN
+      END
+
+C=======================================================================
+
+      SUBROUTINE INT_LEN_INI
+
+C-----------------------------------------------------------------------
+C...Initialize the interaction lengths from NUCLIB
+C-----------------------------------------------------------------------
+      SAVE
+      
+      CALL NUC_GEOM_INI                 ! nucleus profiles
+      CALL SIGMA_INI                    ! initialize cross sections
+
+      RETURN
+      END
+C=======================================================================
+
       SUBROUTINE TRANSFONSHELL(ECM,XM1in,XM2in,XMAX,IMOD,P1,P2,LBAD)
 
 C-----------------------------------------------------------------------