NAV Navbar
shell fortran python javascript

Introduction

Welcome to Degrad! This program can be used to give cluster size distribution and primary cluster distribution in gas mixtures for ionising particles. The spatial distribution of the thermalised electron is given and plotted as a cumulated sum. The individual events can also be output using control word, IWRITE, so that a more detailed analysis can be performed with other detector simulation programs.

Ionising particle clusters are created with a start position of the primart electron in X Y and Z of (0,0,0). It is easy to transform and pace the generated clusters on a track with the calculated primary cluster spacing along the track given by a poisson distribution.

There is at the moment no facility to allow the density effect, which may change the cluster size at energies above minimum ionising. However, the density effect is expected to be small above minimum ionising. The dE/dX is also calculated for the ionising particle energy.

We have language bindings in Shell, Fortran, and Python! You can view code in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

This documentation page was created with Slate.

Progress Report

Tasks Completed

TO-DO

How to Use

Code

History

Documentation

Using

Degrad is written in python3 and FORTRAN

To run Degrad, use this code:

# to run fortran code
gfortran degrad3.3.f 
./a.out

# to run python
python3 test_degrad.py 

# With shell, you can just run the input interface if you have python3 and qt5 installed on your machine
cd UI/
python3 MAIN.py

Make sure you're in the same directory as the file you're executing.

The input interface for degrad UI has been written in pyqt-5. main.ui contains the ui structure of the interface, created in the qt-designer. Kittn uses API keys to allow access to the API. You can register a new Kittn API key at our developer portal.

Kittn expects for the API key to be included in all API requests to the server in a header that looks like the following:

Function Documentation

DEGRADE()

      PROGRAM DEGRADE                                                   
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG
 1    CALL SETUP(LAST)                                                  
      IF(LAST.EQ.1) GO TO 99
      CALL DENSITY
      CALL CASCDAT
      CALL MIXERC
      CALL MIXER
C CALCULATE FLUORESCENCE ABSORPTION DISTANCES 
      CALL FLDIST
      CALL PRINTER
      IF(IMIP.EQ.1) CALL MIPCALC
C IF MIP OR ELECTRON BEAM SKIP DIRECT CASCADE CALCULATION
      IF(IMIP.LE.2) GO TO 10
      ICON=IMIP-2
C  ICON=1 XRAY,   ICON=2 BETA DECAY , ICON=3 DOUBLE BETA DECAY  
      CALL CONTROL0(NEVENT,ESTART,ICON)
C CALCULATE AND OUTPUT AVERAGES FROM SHELLS
      CALL OUTPUTC(NEVENT,IMIP)
C AFTER ALL SHELL EMISSIONS THERMALISE ELECTRONS
  10  IF(BMAG.EQ.0.0D0) CALL MONTEFE
      IF(BMAG.NE.0.0D0) THEN
       IF(BTHETA.EQ.0.0D0.OR.BTHETA.EQ.180.0D0) THEN
        CALL MONTEFA
        ELSE IF(BTHETA.EQ.90.0D0) THEN
        CALL MONTEFB
        ELSE
        CALL MONTEFC
       ENDIF
      ENDIF
      CALL STATS2
      CALL OUTPUT 
      GO TO 1
  99  STOP                                                             
      END
def DEGRADE():
  # IMPLICIT #real*8 (A-H,O-Z)
  # IMPLICIT #integer*8 (I-N)
  global TMAX,SMALL,API,ESTART,THETA,PHI
  global TCFMAX #array size 10
  global TCFMAX1,RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE,EOVB,WB,BTHETA,BMAG
  SETUP(LAST)
  if(LAST == 1):
    sys.exit()
  DENSITY()
  CASCDAT()
  MIXERC()
  MIXER()
  # CALCULATE FLUORESCENCE ABSORPTION DISTANCES 
  FLDIST()
  PRINTER()
  if(IMIP == 1):
    MIPCALC()
  # if MIP OR ELECTRON BEAM SKIP DIRECT CASCADE CALCULATION
  if(IMIP <= 2):
    PASSING 
  else:
    ICON=IMIP-2
    #  ICON=1 XRAY,   ICON=2 BETA DECAY , ICON=3 DOUBLE BETA DECAY  
    CONTROL0(NEVENT,ESTART,ICON)
    # CALCULATE AND OUTPUT AVERAGES FROM SHELLS
    OUTPUTC(NEVENT,IMIP)
    # AFTER ALL SHELL EMISSIONS THERMALISE ELECTRONS
  if(BMAG == 0.00):
    MONTEFE()
  if(BMAG != 0.00):
    if(BTHETA == 0.00 or BTHETA == 180.00):
      MONTEFA()
    else if(BTHETA == 90.00) :
      MONTEFB()
    else:
      MONTEFC()
    # endif
  # endif
  STATS2()
  OUTPUT()
  DEGRADE()
  sys.exit()
  # end

This is the main function which calls all the subroutines.

Arguments

Argument Description
no arguments

MIXER()

Arguments

Argument Description
NONE -

Pseudo Code

        SUBROUTINE MIXER
        IMPLICIT REAL*8 (A-H,O-Z)
        IMPLICIT INTEGER*8 (I-N)                                         
        CHARACTER*25 NAMEG,NAME1,NAME2,NAME3,NAME4,NAME5,NAME6
        COMMON/RATIO/AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC(6)              
        CHARACTER*50 DSCRPT,SCRP1(300),SCRP2(300),SCRP3(300),SCRP4(300),
       /SCRP5(300),SCRP6(300)   
        CHARACTER*50 DSCRPTN,SCRPN1(10),SCRPN2(10),SCRPN3(10),SCRPN4(10),
       /SCRPN5(10),SCRPN6(10)                          
        COMMON/GASN/NGASN(6) 
        COMMON/MIX1/QELM(20000),QSUM(20000),QION(6,20000),QIN1(250,20000),
       /QIN2(250,20000),QIN3(250,20000),QIN4(250,20000),QIN5(250,20000),
       /QIN6(250,20000),QSATT(20000)             
        COMMON/MIX2/E(20000),EROOT(20000),QTOT(20000),QREL(20000),
       /QINEL(20000),QEL(20000)
        COMMON/MIX3/NIN1,NIN2,NIN3,NIN4,NIN5,NIN6,LION(6),LIN1(250),
       /LIN2(250),LIN3(250),LIN4(250),LIN5(250),LIN6(250),ALION(6),
       /ALIN1(250),ALIN2(250),ALIN3(250),ALIN4(250),ALIN5(250),ALIN6(250)
        COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
        COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
        COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
       /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE                    
        COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),
       /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)  
        COMMON/LARGEN/CFN(20000,60),TCFN(20000),SCLENUL(60),NPLAST    
        COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO
        COMMON/FRED/FCION(20000),FCATT(20000)
        COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC            
        COMMON/MRATIO/VAN1,VAN2,VAN3,VAN4,VAN5,VAN6,VAN
        COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
       /WPLN(6),ICOUNT,AVPFRAC(3,6)
        COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),EG2(512)
       /,WKLM(512),EFL(512)
        COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
        COMMON/NAMES/NAMEG(6)
        COMMON/IDEXC/NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,IDG1,IDG2,
       /IDG3,IDG4,IDG5,IDG6      
        COMMON/SCRIP/DSCRPT(512),DSCRPTN(60)
        COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
        COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS                        
        DIMENSION Q1(6,20000),Q2(6,20000),Q3(6,20000),Q4(6,20000),
       /Q5(6,20000),Q6(6,20000)
        DIMENSION E1(6),E2(6),E3(6),E4(6),E5(6),E6(6),EI1(250),EI2(250),
       /EI3(250),EI4(250),EI5(250),EI6(250)
        DIMENSION QATT(6,20000),EION(6)         
        DIMENSION PEQEL1(6,20000),PEQEL2(6,20000),PEQEL3(6,20000),
       /PEQEL4(6,20000),PEQEL5(6,20000),PEQEL6(6,20000)
        DIMENSION PEQIN1(250,20000),PEQIN2(250,20000),PEQIN3(250,20000),  
       /PEQIN4(250,20000),PEQIN5(250,20000),PEQIN6(250,20000)
        DIMENSION PENFRA1(3,250),PENFRA2(3,250),PENFRA3(3,250),
       /PENFRA4(3,250),PENFRA5(3,250),PENFRA6(3,250)
        DIMENSION KIN1(250),KIN2(250),KIN3(250),KIN4(250),KIN5(250),
       /KIN6(250)
        DIMENSION KEL1(6),KEL2(6),KEL3(6),KEL4(6),KEL5(6),KEL6(6)
        DIMENSION EION1(30),EION2(30),EION3(30),EION4(30),EION5(30),
       /EION6(30)
        DIMENSION QION1(30,20000),QION2(30,20000),QION3(30,20000),
       /QION4(30,20000),QION5(30,20000),QION6(30,20000)
        DIMENSION PEQION1(30,20000),PEQION2(30,20000),PEQION3(30,20000),
       /PEQION4(30,20000),PEQION5(30,20000),PEQION6(30,20000)
        DIMENSION LEGAS1(30),LEGAS2(30),LEGAS3(30),LEGAS4(30),LEGAS5(30),
       /LEGAS6(30)
        DIMENSION IESHEL1(30),IESHEL2(30),IESHEL3(30),IESHEL4(30),
       /IESHEL5(30),IESHEL6(30) 
        DIMENSION EB1(30),EB2(30),EB3(30),EB4(30),EB5(30),EB6(30)
        DIMENSION NC01(30),NC02(30),NC03(30),NC04(30),NC05(30),NC06(30)
        DIMENSION EC01(30),EC02(30),EC03(30),EC04(30),EC05(30),EC06(30)
        DIMENSION NG11(30),NG12(30),NG13(30),NG14(30),NG15(30),NG16(30)
        DIMENSION EG11(30),EG12(30),EG13(30),EG14(30),EG15(30),EG16(30)
        DIMENSION NG21(30),NG22(30),NG23(30),NG24(30),NG25(30),NG26(30)
        DIMENSION EG21(30),EG22(30),EG23(30),EG24(30),EG25(30),EG26(30)
        DIMENSION WK1(30),WK2(30),WK3(30),WK4(30),WK5(30),WK6(30)
        DIMENSION EFL1(30),EFL2(30),EFL3(30),EFL4(30),EFL5(30),EFL6(30)
        DIMENSION IZBR1(250),IZBR2(250),IZBR3(250),IZBR4(250),IZBR5(250),
       /IZBR6(250)
        DIMENSION QATT1(8,20000),QATT2(8,20000),QATT3(8,20000),
       /QATT4(8,20000),QATT5(8,20000),QATT6(8,20000) 
        DIMENSION QNUL1(10,20000),QNUL2(10,20000),QNUL3(10,20000),
       /QNUL4(10,20000),QNUL5(10,20000),QNUL6(10,20000),SCLN1(10),
       /SCLN2(10),SCLN3(10),SCLN4(10),SCLN5(10),SCLN6(10)  
        DIMENSION ESPLIT1(5,20),ESPLIT2(5,20),ESPLIT3(5,20),ESPLIT4(5,20),
       /ESPLIT5(5,20),ESPLIT6(5,20)
  C                                                                       
  C  ---------------------------------------------------------------------
  C                                                                       
  C     SUBROUTINE MIXER FILLS ARRAYS OF COLLISION FREQUENCY              
  C     CAN HAVE A MIXTURE OF UP TO 6 GASES                               
  C                                                                       
  C     MOD: STORE COUNTING IONISATION X-SECTION IN ARRAY CMINIXSC(6)
  C          AT MINIMUM IONISING ENERGY                                 
  C  ---------------------------------------------------------------------
  C                                                             
        NISO=0
        NIN1=0                                                            
        NIN2=0                                                            
        NIN3=0                                                            
        NIN4=0
        NIN5=0
        NIN6=0
        NION1=0
        NION2=0
        NION3=0
        NION4=0
        NION5=0
        NION6=0
        NATT1=0
        NATT2=0
        NATT3=0
        NATT4=0
        NATT5=0
        NATT6=0
        NUL1=0
        NUL2=0
        NUL3=0
        NUL4=0
        NUL5=0
        NUL6=0
        DO 2 J=1,6  
        NAMEG(J)='-------------------------'                              
        KEL1(J)=0
        KEL2(J)=0
        KEL3(J)=0
        KEL4(J)=0
        KEL5(J)=0
        KEL6(J)=0                       
        DO 1 I=1,20000                                                    
        Q1(J,I)=0.0D0                                                     
        Q2(J,I)=0.0D0                                                     
        Q3(J,I)=0.0D0                                                     
        Q4(J,I)=0.0D0
        Q5(J,I)=0.0D0
        Q6(J,I)=0.0D0
        DOUBLE(J,I)=0.0D0    
      1 CONTINUE                                                          
        E1(J)=0.0D0                                                       
        E2(J)=0.0D0                                                       
        E3(J)=0.0D0                                                       
        E4(J)=0.0D0 
        E5(J)=0.0D0
      2 E6(J)=0.0D0
        DO 222 J=1,30
        IESHEL1(J)=0
        IESHEL2(J)=0
        IESHEL3(J)=0
        IESHEL4(J)=0
        IESHEL5(J)=0
        IESHEL6(J)=0
        LEGAS1(J)=0
        LEGAS2(J)=0
        LEGAS3(J)=0
        LEGAS4(J)=0
        LEGAS5(J)=0
        LEGAS6(J)=0
        EION1(J)=0.0D0
        EION2(J)=0.0D0
        EION3(J)=0.0D0
        EION4(J)=0.0D0
        EION5(J)=0.0D0
        EION6(J)=0.0D0
        EB1(J)=0.0D0
        EB2(J)=0.0D0
        EB3(J)=0.0D0
        EB4(J)=0.0D0
        EB5(J)=0.0D0
        EB6(J)=0.0D0
        EC01(J)=0.0D0
        EC02(J)=0.0D0
        EC03(J)=0.0D0
        EC04(J)=0.0D0
        EC05(J)=0.0D0
        EC06(J)=0.0D0
        EG11(J)=0.0D0
        EG12(J)=0.0D0
        EG13(J)=0.0D0
        EG14(J)=0.0D0
        EG15(J)=0.0D0
        EG16(J)=0.0D0
        EG21(J)=0.0D0
        EG22(J)=0.0D0
        EG23(J)=0.0D0
        EG24(J)=0.0D0
        EG25(J)=0.0D0
        EG26(J)=0.0D0
        WK1(J)=0.0D0
        WK2(J)=0.0D0
        WK3(J)=0.0D0
        WK4(J)=0.0D0
        WK5(J)=0.0D0
        WK6(J)=0.0D0
        EFL1(J)=0.0D0
        EFL2(J)=0.0D0
        EFL3(J)=0.0D0
        EFL4(J)=0.0D0
        EFL5(J)=0.0D0
        EFL6(J)=0.0D0
        NC01(J)=0
        NC02(J)=0
        NC03(J)=0
        NC04(J)=0
        NC05(J)=0
        NC06(J)=0
        NG11(J)=0
        NG12(J)=0
        NG13(J)=0
        NG14(J)=0
        NG15(J)=0
        NG16(J)=0
        NG21(J)=0
        NG22(J)=0
        NG23(J)=0
        NG24(J)=0
        NG25(J)=0
        NG26(J)=0
        DO 222 I=1,20000
        QION1(J,I)=0.0D0
        QION2(J,I)=0.0D0
        QION3(J,I)=0.0D0
        QION4(J,I)=0.0D0
        QION5(J,I)=0.0D0
        QION6(J,I)=0.0D0
    222 CONTINUE
        DO 223 K=1,8
        DO 223 I=1,20000
        QATT1(K,I)=0.0
        QATT2(K,I)=0.0
        QATT3(K,I)=0.0
        QATT4(K,I)=0.0
        QATT5(K,I)=0.0
        QATT6(K,I)=0.0
    223 CONTINUE
        DO 224 K=1,10
        DO 224 I=1,20000
        QNUL1(K,I)=0.0
        QNUL2(K,I)=0.0
        QNUL3(K,I)=0.0
        QNUL4(K,I)=0.0
        QNUL5(K,I)=0.0
        QNUL6(K,I)=0.0
    224 CONTINUE 
        DO 225 I=1,512
        IONMODEL(I)=0
        DO 225 K=1,20
        ESPLIT(I,K)=0.0
    225 CONTINUE   
  C CALCULATE AND STORE ENERGY GRID FOR XRAYS BETAS OR PARTICLES
        IF(EFINAL.LE.20000.0) THEN
         ESTEP=EFINAL/DFLOAT(NSTEP)
         EHALF=ESTEP/2.0D0
         E(1)=EHALF
         GAM(1)=(EMS+E(1))/EMS
         BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
         DO 3 I=2,20000
         AJ=DFLOAT(I-1)
         E(I)=EHALF+ESTEP*AJ
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
      3  EROOT(I)=DSQRT(E(I))
         EROOT(1)=DSQRT(EHALF)     
        ELSE IF(EFINAL.GT.20000.0.AND.EFINAL.LE.140000.) THEN
         ESTEP=1.0
         EHALF=0.5
         E(1)=EHALF
         GAM(1)=(EMS+E(1))/EMS
         BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
         DO 31 I=2,16000
         AJ=DFLOAT(I-1)
         E(I)=EHALF+ESTEP*AJ
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
     31  EROOT(I)=DSQRT(E(I))
         EROOT(1)=DSQRT(EHALF)
         ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
         DO 32 I=16001,20000
         AJ=DFLOAT(I-16000)
         E(I)=16000.0+AJ*ESTEP1
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
     32  EROOT(I)=DSQRT(E(I))
        ELSE
         ESTEP=1.0
         EHALF=0.5
         E(1)=EHALF
         GAM(1)=(EMS+E(1))/EMS
         BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
         DO 33 I=2,12000
         AJ=DFLOAT(I-1)
         E(I)=EHALF+ESTEP*AJ
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
     33  EROOT(I)=DSQRT(E(I))
         EROOT(1)=DSQRT(EHALF)
         ESTEP1=20.0
         DO 34 I=12001,16000
         AJ=DFLOAT(I-12000)
         E(I)=12000.0+AJ*ESTEP1
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
     34  EROOT(I)=DSQRT(E(I))
         ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
         DO 35 I=16001,20000
         AJ=DFLOAT(I-16000)
         E(I)=92000.0+AJ*ESTEP2
         GAM(I)=(EMS+E(I))/EMS
         BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
     35  EROOT(I)=DSQRT(E(I))
        ENDIF
  C
        DO 4 I=1,250
        IZBR1(I)=0
        IZBR2(I)=0
        IZBR3(I)=0
        IZBR4(I)=0
        IZBR5(I)=0
        IZBR6(I)=0
        KIN1(I)=0
        KIN2(I)=0
        KIN3(I)=0
        KIN4(I)=0
        KIN5(I)=0
      4 KIN6(I)=0
        DO 6 I=1,512 
      6 INDEX(I)=0                                               
  C                                                                       
  C   CALL GAS CROSS-SECTIONS 
        CALL GASMIX(NGASN(1),Q1,QIN1,NIN1,E1,EI1,NAME1,VIRIAL1,EB1,
       /PEQEL1,PEQIN1,PENFRA1,KEL1,KIN1,QION1,PEQION1,EION1,NION1,QATT1,
       /NATT1,QNUL1,NUL1,SCLN1,NC01,EC01,WK1,EFL1,NG11,EG11,NG21,EG21,
       /IZBR1,LEGAS1,IESHEL1,IONMODL1,ESPLIT1,SCRP1,SCRPN1) 
        IF(NGAS.EQ.1) GO TO 10 
        CALL GASMIX(NGASN(2),Q2,QIN2,NIN2,E2,EI2,NAME2,VIRIAL2,EB2,
       /PEQEL2,PEQIN2,PENFRA2,KEL2,KIN2,QION2,PEQION2,EION2,NION2,QATT2,
       /NATT2,QNUL2,NUL2,SCLN2,NC02,EC02,WK2,EFL2,NG12,EG12,NG22,EG22,
       /IZBR2,LEGAS2,IESHEL2,IONMODL2,ESPLIT2,SCRP2,SCRPN2) 
        IF(NGAS.EQ.2) GO TO 10 
        CALL GASMIX(NGASN(3),Q3,QIN3,NIN3,E3,EI3,NAME3,VIRIAL3,EB3,
       /PEQEL3,PEQIN3,PENFRA3,KEL3,KIN3,QION3,PEQION3,EION3,NION3,QATT3,
       /NATT3,QNUL3,NUL3,SCLN3,NC03,EC03,WK3,EFL3,NG13,EG13,NG23,EG23,
       /IZBR3,LEGAS3,IESHEL3,IONMODL3,ESPLIT3,SCRP3,SCRPN3) 
        IF(NGAS.EQ.3) GO TO 10 
        CALL GASMIX(NGASN(4),Q4,QIN4,NIN4,E4,EI4,NAME4,VIRIAL4,EB4,
       /PEQEL4,PEQIN4,PENFRA4,KEL4,KIN4,QION4,PEQION4,EION4,NION4,QATT4,
       /NATT4,QNUL4,NUL4,SCLN4,NC04,EC04,WK4,EFL4,NG14,EG14,NG24,EG24,
       /IZBR4,LEGAS4,IESHEL4,IONMODL4,ESPLIT4,SCRP4,SCRPN4)
        IF(NGAS.EQ.4) GO TO 10 
        CALL GASMIX(NGASN(5),Q5,QIN5,NIN5,E5,EI5,NAME5,VIRIAL5,EB5,
       /PEQEL5,PEQIN5,PENFRA5,KEL5,KIN5,QION5,PEQION5,EION5,NION5,QATT5,
       /NATT5,QNUL5,NUL5,SCLN5,NC05,EC05,WK5,EFL5,NG15,EG15,NG25,EG25,
       /IZBR5,LEGAS5,IESHEL5,IONMODL5,ESPLIT5,SCRP5,SCRPN5)
        IF(NGAS.EQ.5) GO TO 10 
        CALL GASMIX(NGASN(6),Q6,QIN6,NIN6,E6,EI6,NAME6,VIRIAL6,EB6,
       /PEQEL6,PEQIN6,PENFRA6,KEL6,KIN6,QION6,PEQION6,EION6,NION6,QATT6,
       /NATT6,QNUL6,NUL6,SCLN6,NC06,EC06,WK6,EFL6,NG16,EG16,NG26,EG26,
       /IZBR6,LEGAS6,IESHEL6,IONMODL6,ESPLIT6,SCRP6,SCRPN6) 
     10 CONTINUE                                                          
  C ---------------------------------------------------------------       
  C  CORRECTION OF NUMBER DENSITY DUE TO VIRIAL COEFFICIENT               
  C  CAN BE PROGRAMMED HERE NOT YET IMPLEMENTED.                          
  C-----------------------------------------------------------------      
  C-----------------------------------------------------------------      
  C     CALCULATION OF COLLISION FREQUENCIES FOR AN ARRAY OF              
  C     ELECTRON ENERGIES IN THE RANGE ZERO TO EFINAL        
  C                                                                     
  C     L=5*N-4    ELASTIC NTH GAS                                        
  C     L=5*N-3    IONISATION NTH GAS                               
  C     L=5*N-2    ATTACHMENT NTH GAS                                  
  C     L=5*N-1    INELASTIC NTH GAS    
  C     L=5*N      SUPERELASTIC NTH GAS                    
  C---------------------------------------------------------------   
        DO 700 IE=1,20000  
        FCION(IE)=0.0D0
        FCATT(IE)=0.0D0
  C
        NP=1 
        IDG1=1
        NEGAS(NP)=1  
        LEGAS(NP)=0
        IESHELL(NP)=0                                               
        CF(IE,NP)=Q1(2,IE)*VAN1*BET(IE)
        PSCT(IE,NP)=0.5D0
        ANGCT(IE,NP)=1.0D0    
        INDEX(NP)=0 
  C   ELASTIC ANG  
        IF(KEL1(2).EQ.1) THEN
         PSCT1=PEQEL1(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2  
         INDEX(NP)=1   
        ENDIF 
        IF(KEL1(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL1(2,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 12                                   
        RGAS1=1.0D0+E1(2)/2.0D0                                           
        RGAS(NP)=RGAS1                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0 
        L=1                                                      
        IARRY(NP)=L 
        IZBR(NP)=0
        DSCRPT(NP)=SCRP1(2)  
        NAMEG(1)=NAME1
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,1)=0.0
        AVPFRAC(2,1)=0.0
        AVPFRAC(3,1)=0.0
        CMINEXSC(1)=E1(4)*AN1                                        
        CMINIXSC(1)=E1(5)*AN1
        ECLOSS(1)=E1(3)
        WPLN(1)=E1(6)
     12 IF(EFINAL.LT.E1(3)) GO TO 30
        IF(NION1.GT.1) GO TO 20  
        NP=NP+1
        IDG1=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q1(5,IE)*VAN1*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(1,IE)=Q1(3,IE)/Q1(5,IE)-1.0D0
        ELSE                                    
         CF(IE,NP)=Q1(3,IE)*VAN1*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=1 
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C 
        IF(ICOUNT.EQ.1) THEN
         IF(KEL1(5).EQ.1) THEN
          PSCT1=PEQEL1(5,IE) 
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL1(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL1(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL1(3).EQ.1) THEN
          PSCT1=PEQEL1(3,IE) 
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL1(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL1(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C
        WPL(NP)=EB1(1)
        NC0(NP)=NC01(1)
        EC0(NP)=EC01(1)
        NG1(NP)=NG11(1)
        EG1(NP)=EG11(1)
        NG2(NP)=NG21(1)
        EG2(NP)=EG21(1)
        WKLM(NP)=WK1(1)
        EFL(NP)=EFL1(1)
        IF(IE.GT.1) GO TO 30                                     
        RGAS(NP)=RGAS1                                                    
        EIN(NP)=E1(3)/RGAS1
        IPN(NP)=1 
        L=2                                                      
        IARRY(NP)=L 
        IZBR(NP)=0
        DSCRPT(NP)=SCRP1(3) 
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        IONMODEL(NP)=IONMODL1
        DO 19 K=1,20
     19 ESPLIT(NP,K)=ESPLIT1(IONMODL1,K) 
        GO TO 30
     20 DO 25 KION=1,NION1
        NP=NP+1
        IDG1=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        CF(IE,NP)=QION1(KION,IE)*VAN1*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5D0
        ANGCT(IE,NP)=1.0D0
        INDEX(NP)=0 
        NEGAS(NP)=1
        LEGAS(NP)=LEGAS1(KION)
        IESHELL(NP)=IESHEL1(KION)
  C                           
        IF(KEL1(3).EQ.1) THEN
         PSCT1=PEQION1(KION,IE) 
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL1(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION1(KION,IE)
         INDEX(NP)=2
        ENDIF
  C
        WPL(NP)=EB1(KION)
        NC0(NP)=NC01(KION)
        EC0(NP)=EC01(KION)
        NG1(NP)=NG11(KION)
        EG1(NP)=EG11(KION)
        NG2(NP)=NG21(KION)
        EG2(NP)=EG21(KION)
        WKLM(NP)=WK1(KION)
        EFL(NP)=EFL1(KION)
        IF(IE.GT.1) GO TO 25                                     
        RGAS(NP)=RGAS1                                                    
        EIN(NP)=EION1(KION)/RGAS1
  C 
        IPN(NP)=1 
        L=2                                                      
        IARRY(NP)=L 
        IZBR(NP)=0
        DSCRPT(NP)=SCRP1(2+KION) 
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        IONMODEL(NP)=IONMODL1
        DO 24 K=1,20
     24 ESPLIT(NP,K)=ESPLIT1(IONMODL1,K) 
     25 CONTINUE   
     30 IF(EFINAL.LT.E1(4)) GO TO 40   
        IF(NATT1.GT.1) GO TO 551                                   
        NP=NP+1
        IDG1=NP                                                           
        CF(IE,NP)=Q1(4,IE)*VAN1*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP) 
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 40
        NEGAS(NP)=1
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0                                     
        RGAS(NP)=RGAS1                                                   
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1              
        L=3                                           
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP1(3+NION1)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0 
        GO TO 40
    551 DO 552 JJ=1,NATT1 
        NP=NP+1
        IDG1=NP
        CF(IE,NP)=QATT1(JJ,IE)*VAN1*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 552
        NEGAS(NP)=1
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS1
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=3
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP1(2+NION1+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
    552 CONTINUE
     40 IF(NIN1.EQ.0) GO TO 60                                           
        DO 50 J=1,NIN1
        NP=NP+1
        IDG1=NP      
        NEGAS(NP)=1
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=QIN1(J,IE)*VAN1*BET(IE)
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR1(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KIN1(J).EQ.1) THEN   
         PSCT1=PEQIN1(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1   
        ENDIF
        IF(KIN1(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN1(J,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 50                                     
        RGAS(NP)=RGAS1                                                    
        EIN(NP)=EI1(J)/RGAS1
        L=4
        IF(EI1(J).LT.0.0D0) L=5                                           
        IPN(NP)=0  
        IARRY(NP)=L
        IZBR(NP)=IZBR1(J)
        DSCRPT(NP)=SCRP1(4+NION1+NATT1+J)
        PENFRA(1,NP)=PENFRA1(1,J)
        PENFRA(2,NP)=PENFRA1(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA1(3,J)
        IF(PENFRA(1,NP).GT.AVPFRAC(1,1)) THEN 
         AVPFRAC(1,1)=PENFRA(1,NP)
         AVPFRAC(2,1)=PENFRA(2,NP)
         AVPFRAC(3,1)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN1) CMINEXSC(1)=CMINEXSC(1)*AVPFRAC(1,1)
     50 CONTINUE    
  C                                                    
     60 IF(NGAS.EQ.1) GO TO 600
        NP=NP+1
        IDG2=NP  
        NEGAS(NP)=2
        LEGAS(NP)=0
        IESHELL(NP)=0                                                 
        CF(IE,NP)=Q2(2,IE)*VAN2*BET(IE)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KEL2(2).EQ.1) THEN
         PSCT1=PEQEL2(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL2(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL2(2,IE)
         INDEX(NP)=2 
        ENDIF 
  C
        IF(IE.GT.1) GO TO 62                                     
        RGAS2=1.0D0+E2(2)/2.0D0                                           
        RGAS(NP)=RGAS2                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0
        L=6                                                          
        IARRY(NP)=L      
        IZBR(NP)=0
        DSCRPT(NP)=SCRP2(2)  
        NAMEG(2)=NAME2
        PENFRA(1,NP)=0.0 
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,2)=0.0
        AVPFRAC(2,2)=0.0
        AVPFRAC(3,2)=0.0                        
        CMINEXSC(2)=E2(4)*AN2                                        
        CMINIXSC(2)=E2(5)*AN2
        ECLOSS(2)=E2(3)
        WPLN(2)=E2(6)
     62 IF(EFINAL.LT.E2(3)) GO TO 130  
        IF(NION2.GT.1) GO TO 70                                   
        NP=NP+1
        IDG2=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q2(5,IE)*VAN2*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(2,IE)=Q2(3,IE)/Q2(5,IE)-1.0D0
        ELSE                             
         CF(IE,NP)=Q2(3,IE)*VAN2*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=2
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(ICOUNT.EQ.1) THEN
         IF(KEL2(5).EQ.1) THEN
          PSCT1=PEQEL2(5,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL2(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL2(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL2(3).EQ.1) THEN
          PSCT1=PEQEL2(3,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL2(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL2(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C
        WPL(NP)=EB2(1)
        NC0(NP)=NC02(1)
        EC0(NP)=EC02(1)
        NG1(NP)=NG12(1)
        EG1(NP)=EG12(1)
        NG2(NP)=NG22(1)
        EG2(NP)=EG22(1)
        WKLM(NP)=WK2(1)
        EFL(NP)=EFL2(1)
        IF(IE.GT.1) GO TO 130                                      
        RGAS(NP)=RGAS2                                                    
        EIN(NP)=E2(3)/RGAS2 
        IPN(NP)=1  
        L=7                                                        
        IARRY(NP)=L
        IZBR(NP)=0      
        DSCRPT(NP)=SCRP2(3)     
        PENFRA(1,NP)=0.0 
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0  
        IONMODEL(NP)=IONMODL2
        DO 69 K=1,20
     69 ESPLIT(NP,K)=ESPLIT2(IONMODL2,K) 
        GO TO 130                                       
     70 DO 80 KION=1,NION2
        NP=NP+1
        IDG2=NP
        CF(IE,NP)=QION2(KION,IE)*VAN2*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
        NEGAS(NP)=2
        LEGAS(NP)=LEGAS2(KION)
        IESHELL(NP)=IESHEL2(KION)
  C
        IF(KEL2(3).EQ.1) THEN
         PSCT1=PEQION2(KION,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL2(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION2(KION,IE)
         INDEX(NP)=2
        ENDIF
  C
        WPL(NP)=EB2(KION)
        NC0(NP)=NC02(KION)
        EC0(NP)=EC02(KION)
        NG1(NP)=NG12(KION)
        EG1(NP)=EG12(KION)
        NG2(NP)=NG22(KION)
        EG2(NP)=EG22(KION)
        WKLM(NP)=WK2(KION)
        EFL(NP)=EFL2(KION)
        IF(IE.GT.1) GO TO 80                                      
        RGAS(NP)=RGAS2                                                    
        EIN(NP)=EION2(KION)/RGAS2 
  C
        IPN(NP)=1  
        L=7                                                        
        IARRY(NP)=L
        IZBR(NP)=0      
        DSCRPT(NP)=SCRP2(2+KION)     
        PENFRA(1,NP)=0.0 
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0       
        IONMODEL(NP)=IONMODL2
        DO 79 K=1,20
     79 ESPLIT(NP,K)=ESPLIT2(IONMODL2,K) 
     80 CONTINUE                                  
    130 IF(EFINAL.LT.E2(4)) GO TO 140    
        IF(NATT2.GT.1) GO TO 561                                 
        NP=NP+1
        IDG2=NP                                                           
        CF(IE,NP)=Q2(4,IE)*VAN2*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)  
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 140
        NEGAS(NP)=2
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0                                  
        RGAS(NP)=RGAS2                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1            
        L=8                                              
        IARRY(NP)=L
        IZBR(NP)=0      
        DSCRPT(NP)=SCRP2(3+NION2)   
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0        
        GO TO 140
    561 DO 562 JJ=1,NATT2
        NP=NP+1
        IDG2=NP
        CF(IE,NP)=QATT2(JJ,IE)*VAN2*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 562
        NEGAS(NP)=2
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS2
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=8
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP2(2+NION2+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
    562 CONTINUE                                 
    140 IF(NIN2.EQ.0) GO TO 160                                           
        DO 150 J=1,NIN2
        NP=NP+1
        IDG2=NP    
        NEGAS(NP)=2
        LEGAS(NP)=0
        IESHELL(NP)=0                                                   
        CF(IE,NP)=QIN2(J,IE)*VAN2*BET(IE)
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR2(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KIN2(J).EQ.1) THEN
         PSCT1=PEQIN2(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KIN2(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN2(J,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 150                                    
        RGAS(NP)=RGAS2                                                   
        EIN(NP)=EI2(J)/RGAS2
        L=9 
        IF(EI2(J).LT.0.0D0) L=10                                          
        IPN(NP)=0         
        IARRY(NP)=L
        IZBR(NP)=IZBR2(J)
        DSCRPT(NP)=SCRP2(4+NION2+NATT2+J)
        PENFRA(1,NP)=PENFRA2(1,J)
        PENFRA(2,NP)=PENFRA2(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA2(3,J)
        IF(PENFRA(1,NP).GT.AVPFRAC(1,2)) THEN 
         AVPFRAC(1,2)=PENFRA(1,NP)
         AVPFRAC(2,2)=PENFRA(2,NP)
         AVPFRAC(3,2)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN2) CMINEXSC(2)=CMINEXSC(2)*AVPFRAC(1,2)
    150 CONTINUE     
  C                                                   
    160 IF(NGAS.EQ.2) GO TO 600
        NP=NP+1
        IDG3=NP              
        NEGAS(NP)=3
        LEGAS(NP)=0
        IESHELL(NP)=0                                             
        CF(IE,NP)=Q3(2,IE)*VAN3*BET(IE)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C      
        IF(KEL3(2).EQ.1) THEN
         PSCT1=PEQEL3(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF 
        IF(KEL3(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL3(2,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 162                                     
        RGAS3=1.0D0+E3(2)/2.0D0                                           
        RGAS(NP)=RGAS3                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0  
        L=11                                                        
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP3(2)
        NAMEG(3)=NAME3
        PENFRA(1,NP)=0.0 
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,3)=0.0
        AVPFRAC(2,3)=0.0
        AVPFRAC(3,3)=0.0
        CMINEXSC(3)=E3(4)*AN3                                   
        CMINIXSC(3)=E3(5)*AN3 
        ECLOSS(3)=E3(3)
        WPLN(3)=E3(6)
    162 IF(EFINAL.LT.E3(3)) GO TO 230 
        IF(NION3.GT.1) GO TO 170                                    
        NP=NP+1
        IDG3=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q3(5,IE)*VAN3*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(3,IE)=Q3(3,IE)/Q3(5,IE)-1.0D0
        ELSE                              
         CF(IE,NP)=Q3(3,IE)*VAN3*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=3
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(ICOUNT.EQ.1) THEN
         IF(KEL3(5).EQ.1) THEN
          PSCT1=PEQEL3(5,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL3(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL3(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL3(3).EQ.1) THEN
          PSCT1=PEQEL3(3,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL3(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL3(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C 
        WPL(NP)=EB3(1)
        NC0(NP)=NC03(1)
        EC0(NP)=EC03(1)
        NG1(NP)=NG13(1)
        EG1(NP)=EG13(1)
        NG2(NP)=NG23(1)
        EG2(NP)=EG23(1)
        WKLM(NP)=WK3(1)
        EFL(NP)=EFL3(1)
        IF(IE.GT.1) GO TO 230                                            
        RGAS(NP)=RGAS3                                                    
        EIN(NP)=E3(3)/RGAS3 
        IPN(NP)=1
        L=12                                                           
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP3(3) 
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0 
        IONMODEL(NP)=IONMODL3
        DO 169 K=1,20
    169 ESPLIT(NP,K)=ESPLIT3(IONMODL3,K) 
        GO TO 230  
    170 DO 180 KION=1,NION3                                         
        NP=NP+1
        IDG3=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        CF(IE,NP)=QION3(KION,IE)*VAN3*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
        NEGAS(NP)=3
        LEGAS(NP)=LEGAS3(KION)
        IESHELL(NP)=IESHEL3(KION)
  C
        IF(KEL3(3).EQ.1) THEN
         PSCT1=PEQION3(3,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL3(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION3(KION,IE)
         INDEX(NP)=2
        ENDIF
  C 
        WPL(NP)=EB3(KION)
        NC0(NP)=NC03(KION)
        EC0(NP)=EC03(KION)
        NG1(NP)=NG13(KION)
        EG1(NP)=EG13(KION)
        NG2(NP)=NG23(KION)
        EG2(NP)=EG23(KION)
        WKLM(NP)=WK3(KION)
        EFL(NP)=EFL3(KION)
        IF(IE.GT.1) GO TO 180                                            
        RGAS(NP)=RGAS3                                                    
        EIN(NP)=EION3(KION)/RGAS3 
  C
        IPN(NP)=1
        L=12                                                           
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP3(2+KION) 
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0    
        IONMODEL(NP)=IONMODL3
        DO 179 K=1,20
    179 ESPLIT(NP,K)=ESPLIT3(IONMODL3,K) 
    180 CONTINUE                                        
    230 IF(EFINAL.LT.E3(4)) GO TO 240      
        IF(NATT3.GT.1) GO TO 571                               
        NP=NP+1
        IDG3=NP                                                           
        CF(IE,NP)=Q3(4,IE)*VAN3*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 240
        NEGAS(NP)=3
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0                                            
        RGAS(NP)=RGAS3                                                   
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1 
        L=13                                                        
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP3(3+NION3)
        PENFRA(1,NP)=0.0 
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0        
        GO TO 240
    571 CONTINUE
        DO 572 JJ=1,NATT3
        NP=NP+1
        IDG3=NP
        CF(IE,NP)=QATT3(JJ,IE)*VAN3*BET(IE)  
        FCATT(IE)=FCATT(IE)+CF(IE,NP)      
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 572
        NEGAS(NP)=3
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS3
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=13
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP3(2+NION3+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
    572 CONTINUE                           
    240 IF(NIN3.EQ.0) GO TO 260                                           
        DO 250 J=1,NIN3 
        NP=NP+1
        IDG3=NP      
        NEGAS(NP)=3
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=QIN3(J,IE)*VAN3*BET(IE)
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR3(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KIN3(J).EQ.1) THEN
         PSCT1=PEQIN3(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KIN3(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN3(J,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 250                                     
        RGAS(NP)=RGAS3                                                    
        EIN(NP)=EI3(J)/RGAS3
        L=14
        IF(EI3(J).LT.0.0D0) L=15                                          
        IPN(NP)=0
        IARRY(NP)=L
        IZBR(NP)=IZBR3(J)
        DSCRPT(NP)=SCRP3(4+NION3+NATT3+J)
        PENFRA(1,NP)=PENFRA3(1,J)
        PENFRA(2,NP)=PENFRA3(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA3(3,J)  
        IF(PENFRA(1,NP).GT.AVPFRAC(1,3)) THEN 
         AVPFRAC(1,3)=PENFRA(1,NP)
         AVPFRAC(2,3)=PENFRA(2,NP)
         AVPFRAC(3,3)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN3) CMINEXSC(3)=CMINEXSC(3)*AVPFRAC(1,3)   
    250 CONTINUE             
  C                  
    260 IF(NGAS.EQ.3) GO TO 600  
        NP=NP+1
        IDG4=NP      
        NEGAS(NP)=4
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=Q4(2,IE)*VAN4*BET(IE) 
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KEL4(2).EQ.1) THEN
         PSCT1=PEQEL4(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1  
        ENDIF
        IF(KEL4(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL4(2,IE)
         INDEX(NP)=2
        ENDIF 
  C
        IF(IE.GT.1) GO TO 262                                    
        RGAS4=1.0D0+E4(2)/2.0D0                                           
        RGAS(NP)=RGAS4                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0
        L=16                                                          
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP4(2)
        NAMEG(4)=NAME4 
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,4)=0.0 
        AVPFRAC(2,4)=0.0
        AVPFRAC(3,4)=0.0
        CMINEXSC(4)=E4(4)*AN4                                       
        CMINIXSC(4)=E4(5)*AN4
        ECLOSS(4)=E4(3)
        WPLN(4)=E4(6)
    262 IF(EFINAL.LT.E4(3)) GO TO 330  
        IF(NION4.GT.1) GO TO 270                                   
        NP=NP+1
        IDG4=NP  
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q4(5,IE)*VAN4*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(4,IE)=Q4(3,IE)/Q4(5,IE)-1.0D0
        ELSE                                                         
         CF(IE,NP)=Q4(3,IE)*VAN4*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=4
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0  
  C
        IF(ICOUNT.EQ.1) THEN
         IF(KEL4(5).EQ.1) THEN
          PSCT1=PEQEL4(5,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL4(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL4(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL4(3).EQ.1) THEN
          PSCT1=PEQEL4(3,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL4(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL4(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C
        WPL(NP)=EB4(1)
        NC0(NP)=NC04(1)
        EC0(NP)=EC04(1)
        NG1(NP)=NG14(1)
        EG1(NP)=EG14(1)
        NG2(NP)=NG24(1)
        EG2(NP)=EG24(1)
        WKLM(NP)=WK4(1)
        EFL(NP)=EFL4(1)
        IF(IE.GT.1) GO TO 330                                     
        RGAS(NP)=RGAS4                                                    
        EIN(NP)=E4(3)/RGAS4 
        IPN(NP)=1  
        L=17                                                        
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP4(3)   
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0 
        PENFRA(3,NP)=0.0  
        IONMODEL(NP)=IONMODL4
        DO 269 K=1,20
    269 ESPLIT(NP,K)=ESPLIT4(IONMODL4,K) 
        GO TO 330
    270 DO 280 KION=1,NION4                                       
        NP=NP+1
        IDG4=NP
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        CF(IE,NP)=QION4(KION,IE)*VAN4*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0  
        NEGAS(NP)=4
        LEGAS(NP)=LEGAS4(KION)
        IESHELL(NP)=IESHEL4(KION)
  C
        IF(KEL4(3).EQ.1) THEN
         PSCT1=PEQION4(KION,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL4(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION4(KION,IE)
         INDEX(NP)=2
        ENDIF
  C 
        WPL(NP)=EB4(KION)
        NC0(NP)=NC04(KION)
        EC0(NP)=EC04(KION)
        NG1(NP)=NG14(KION)
        EG1(NP)=EG14(KION)
        NG2(NP)=NG24(KION)
        EG2(NP)=EG24(KION)
        WKLM(NP)=WK4(KION)
        EFL(NP)=EFL4(KION)
        IF(IE.GT.1) GO TO 280                                     
        RGAS(NP)=RGAS4                                                    
        EIN(NP)=EION4(KION)/RGAS4
  C 
        IPN(NP)=1  
        L=17                                                        
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP4(2+KION)   
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0 
        PENFRA(3,NP)=0.0  
        IONMODEL(NP)=IONMODL4
        DO 279 K=1,20
    279 ESPLIT(NP,K)=ESPLIT4(IONMODL4,K) 
    280 CONTINUE                                       
    330 IF(EFINAL.LT.E4(4)) GO TO 340          
        IF(NATT4.GT.1) GO TO 581                           
        NP=NP+1
        IDG4=NP                                                           
        CF(IE,NP)=Q4(4,IE)*VAN4*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 340  
        NEGAS(NP)=4
        LEGAS(NP)=0
        IESHELL(NP)=0      
        INDEX(NP)=0                             
        RGAS(NP)=RGAS4                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1 
        L=18                                                        
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP4(3+NION4)
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0        
        GO TO 340
    581 DO 582 JJ=1,NATT4
        NP=NP+1
        IDG4=NP
        CF(IE,NP)=QATT4(JJ,IE)*VAN4*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP) 
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 582
        NEGAS(NP)=4
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS4
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=18
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP4(2+NION4+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
    582 CONTINUE                                    
    340 IF(NIN4.EQ.0) GO TO 360                                           
        DO 350 J=1,NIN4 
        NP=NP+1
        IDG4=NP
        NEGAS(NP)=4
        LEGAS(NP)=0
        IESHELL(NP)=0
        CF(IE,NP)=QIN4(J,IE)*VAN4*BET(IE)
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR4(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KIN4(J).EQ.1) THEN
         PSCT1=PEQIN4(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KIN4(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN4(J,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 350        
        RGAS(NP)=RGAS4                                                    
        EIN(NP)=EI4(J)/RGAS4
        L=19
        IF(EI4(J).LT.0.0D0) L=20                                          
        IPN(NP)=0         
        IARRY(NP)=L
        IZBR(NP)=IZBR4(J)
        DSCRPT(NP)=SCRP4(4+NION4+NATT4+J)
        PENFRA(1,NP)=PENFRA4(1,J)
        PENFRA(2,NP)=PENFRA4(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA4(3,J)
        IF(PENFRA(1,NP).GT.AVPFRAC(1,4)) THEN 
         AVPFRAC(1,4)=PENFRA(1,NP)
         AVPFRAC(2,4)=PENFRA(2,NP)
         AVPFRAC(3,4)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN4) CMINEXSC(4)=CMINEXSC(4)*AVPFRAC(1,4)
    350 CONTINUE             
  C                                           
    360 IF(NGAS.EQ.4) GO TO 600  
        NP=NP+1
        IDG5=NP      
        NEGAS(NP)=5
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=Q5(2,IE)*VAN5*BET(IE) 
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KEL5(2).EQ.1) THEN 
         PSCT1=PEQEL5(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL5(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL5(2,IE)
         INDEX(NP)=2
        ENDIF
  C 
        IF(IE.GT.1) GO TO 362                                    
        RGAS5=1.0D0+E5(2)/2.0D0                                           
        RGAS(NP)=RGAS5                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0
        L=21                                                          
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP5(2) 
        NAMEG(5)=NAME5    
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,5)=0.0
        AVPFRAC(2,5)=0.0
        AVPFRAC(3,5)=0.0
        CMINEXSC(5)=E5(4)*AN5                                    
        CMINIXSC(5)=E5(5)*AN5
        ECLOSS(5)=E5(3)
        WPLN(5)=E5(6)
    362 IF(EFINAL.LT.E5(3)) GO TO 430  
        IF(NION5.GT.1) GO TO 370                                   
        NP=NP+1
        IDG5=NP  
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q5(5,IE)*VAN5*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(5,IE)=Q5(3,IE)/Q5(5,IE)-1.0D0
        ELSE                                                         
         CF(IE,NP)=Q5(3,IE)*VAN5*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=5
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0 
  C
        IF(ICOUNT.EQ.1) THEN
         IF(KEL5(5).EQ.1) THEN
          PSCT1=PEQEL5(5,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL5(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL5(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL5(3).EQ.1) THEN
          PSCT1=PEQEL5(3,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1
         ENDIF
         IF(KEL5(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL5(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C 
        WPL(NP)=EB5(1)     
        NC0(NP)=NC05(1)
        EC0(NP)=EC05(1)
        NG1(NP)=NG15(1)
        EG1(NP)=EG15(1)
        NG2(NP)=NG25(1)
        EG2(NP)=EG25(1)
        WKLM(NP)=WK5(1)
        EFL(NP)=EFL5(1)
        IF(IE.GT.1) GO TO 430                                    
        RGAS(NP)=RGAS5                                                    
        EIN(NP)=E5(3)/RGAS5 
        IPN(NP)=1
        L=22                                                          
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP5(3)  
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0 
        IONMODEL(NP)=IONMODL5
        DO 369 K=1,20
    369 ESPLIT(NP,K)=ESPLIT5(IONMODL5,K) 
        GO TO 430       
    370 DO 380 KION=1,NION5                                   
        NP=NP+1
        IDG5=NP  
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        CF(IE,NP)=QION5(KION,IE)*VAN5*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0 
        NEGAS(NP)=5
        LEGAS(NP)=LEGAS5(KION)
        IESHELL(NP)=IESHEL5(KION)
  C
        IF(KEL5(3).EQ.1) THEN
         PSCT1=PEQION5(KION,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL5(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION5(KION,IE)
         INDEX(NP)=2
        ENDIF
  C
        WPL(NP)=EB5(KION)      
        NC0(NP)=NC05(KION)
        EC0(NP)=EC05(KION)
        NG1(NP)=NG15(KION)
        EG1(NP)=EG15(KION)
        NG2(NP)=NG25(KION)
        EG2(NP)=EG25(KION)
        WKLM(NP)=WK5(KION)
        EFL(NP)=EFL5(KION)
        IF(IE.GT.1) GO TO 380                                    
        RGAS(NP)=RGAS5                                                    
        EIN(NP)=EION5(KION)/RGAS5
  C 
        IPN(NP)=1
        L=22                                                          
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP5(2+KION)  
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0 
        IONMODEL(NP)=IONMODL5
        DO 379 K=1,20
    379 ESPLIT(NP,K)=ESPLIT5(IONMODL5,K) 
    380 CONTINUE
    430 IF(EFINAL.LT.E5(4)) GO TO 440                 
        IF(NATT5.GT.1) GO TO 591                    
        NP=NP+1
        IDG5=NP                                                           
        CF(IE,NP)=Q5(4,IE)*VAN5*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 440
        NEGAS(NP)=5
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0                                     
        RGAS(NP)=RGAS5                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1             
        L=23                                            
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP5(3+NION5)  
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0 
        PENFRA(3,NP)=0.0        
        GO TO 440
    591 DO 592 JJ=1,NATT5
        NP=NP+1
        IDG5=NP
        CF(IE,NP)=QATT5(JJ,IE)*VAN5*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 592
        NEGAS(NP)=5
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS5
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=23
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP5(2+NION5+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
    592 CONTINUE                                  
    440 IF(NIN5.EQ.0) GO TO 460                                           
        DO 450 J=1,NIN5 
        NP=NP+1
        IDG5=NP      
        NEGAS(NP)=5
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=QIN5(J,IE)*VAN5*BET(IE) 
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR5(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(KIN5(J).EQ.1) THEN
         PSCT1=PEQIN5(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KIN5(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN5(J,IE)
         INDEX(NP)=2
        ENDIF  
  C        
        IF(IE.GT.1) GO TO 450
        RGAS(NP)=RGAS5                                                    
        EIN(NP)=EI5(J)/RGAS5
        L=24
        IF(EI5(J).LT.0.0D0) L=25                                          
        IPN(NP)=0         
        IARRY(NP)=L
        IZBR(NP)=IZBR5(J)
        DSCRPT(NP)=SCRP5(4+NION5+NATT5+J)
        PENFRA(1,NP)=PENFRA5(1,J)
        PENFRA(2,NP)=PENFRA5(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA5(3,J)
        IF(PENFRA(1,NP).GT.AVPFRAC(1,5)) THEN 
         AVPFRAC(1,5)=PENFRA(1,NP)
         AVPFRAC(2,5)=PENFRA(2,NP)
         AVPFRAC(3,5)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN5) CMINEXSC(5)=CMINEXSC(5)*AVPFRAC(1,5)
    450 CONTINUE             
  C                                           
    460 IF(NGAS.EQ.5) GO TO 600  
        NP=NP+1
        IDG6=NP      
        NEGAS(NP)=6
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=Q6(2,IE)*VAN6*BET(IE)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0 
  C
        IF(KEL6(2).EQ.1) THEN
         PSCT1=PEQEL6(2,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KEL6(2).EQ.2) THEN
         PSCT(IE,NP)=PEQEL6(2,IE)
         INDEX(NP)=2
        ENDIF
  C  
        IF(IE.GT.1) GO TO 462                                    
        RGAS6=1.0D0+E6(2)/2.0D0                                           
        RGAS(NP)=RGAS6                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=0
        L=26                                                          
        IARRY(NP)=L
        IZBR(NP)=0  
        DSCRPT(NP)=SCRP6(2) 
        NAMEG(6)=NAME6  
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        AVPFRAC(1,6)=0.0
        AVPFRAC(2,6)=0.0
        AVPFRAC(3,6)=0.0
        CMINEXSC(6)=E6(4)*AN6                                       
        CMINIXSC(6)=E6(5)*AN6
        ECLOSS(6)=E6(3)
        WPLN(6)=E6(6)
    462 IF(EFINAL.LT.E6(3)) GO TO 530      
        IF(NION6.GT.1) GO TO 470                               
        NP=NP+1 
        IDG6=NP 
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        IF(ICOUNT.EQ.1) THEN
         CF(IE,NP)=Q6(5,IE)*VAN6*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
         DOUBLE(6,IE)=Q6(3,IE)/Q6(5,IE)-1.0D0
        ELSE                                                         
         CF(IE,NP)=Q6(3,IE)*VAN6*BET(IE)
         FCION(IE)=FCION(IE)+CF(IE,NP)
        ENDIF
        NEGAS(NP)=6
        LEGAS(NP)=0
        IESHELL(NP)=0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
  C
        IF(ICOUNT.EQ.1) THEN
         IF(KEL6(5).EQ.1) THEN
          PSCT1=PEQEL6(5,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1      
         ENDIF
         IF(KEL6(5).EQ.2) THEN
          PSCT(IE,NP)=PEQEL6(5,IE)
          INDEX(NP)=2
         ENDIF
        ELSE
         IF(KEL6(3).EQ.1) THEN
          PSCT1=PEQEL6(3,IE)
          CALL ANGCUT(PSCT1,ANGC,PSCT2)
          ANGCT(IE,NP)=ANGC
          PSCT(IE,NP)=PSCT2
          INDEX(NP)=1      
         ENDIF
         IF(KEL6(3).EQ.2) THEN
          PSCT(IE,NP)=PEQEL6(3,IE)
          INDEX(NP)=2
         ENDIF
        ENDIF
  C
        WPL(NP)=EB6(1)
        NC0(NP)=NC06(1)
        EC0(NP)=EC06(1)
        NG1(NP)=NG16(1)
        EG1(NP)=EG16(1)
        NG2(NP)=NG26(1)
        EG2(NP)=EG26(1)
        WKLM(NP)=WK6(1)
        EFL(NP)=EFL6(1)
        IF(IE.GT.1) GO TO 530                                     
        RGAS(NP)=RGAS6                                                    
        EIN(NP)=E6(3)/RGAS6 
        IPN(NP)=1             
        L=27                                             
        IARRY(NP)=L
        IZBR(NP)=0  
        DSCRPT(NP)=SCRP6(3)
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0    
        GO TO 530  
    470 DO 480 KION=1,NION6    
        NP=NP+1
        IDG6=NP  
  C CHOOSE BETWEEN COUNTING AND GROSS IONISATION X-SECTION
        CF(IE,NP)=QION6(KION,IE)*VAN6*BET(IE)
        FCION(IE)=FCION(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0
        NEGAS(NP)=6
        LEGAS(NP)=LEGAS6(KION)
        IESHELL(NP)=IESHEL6(KION)
  C
        IF(KEL6(3).EQ.1) THEN
         PSCT1=PEQION6(KION,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1      
        ENDIF
        IF(KEL6(3).EQ.2) THEN
         PSCT(IE,NP)=PEQION6(KION,IE)
         INDEX(NP)=2
        ENDIF
  C
        WPL(NP)=EB6(KION)
        NC0(NP)=NC06(KION)
        EC0(NP)=EC06(KION)
        NG1(NP)=NG16(KION)
        EG1(NP)=EG16(KION)
        NG2(NP)=NG26(KION)
        EG2(NP)=EG26(KION)
        WKLM(NP)=WK6(KION)
        EFL(NP)=EFL6(KION)
        IF(IE.GT.1) GO TO 480                                     
        RGAS(NP)=RGAS6                                                    
        EIN(NP)=EION6(KION)/RGAS6 
        IPN(NP)=1             
        L=27                                             
        IARRY(NP)=L
        IZBR(NP)=0  
        DSCRPT(NP)=SCRP6(2+KION)
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0    
        IONMODEL(NP)=IONMODL6
        DO 479 K=1,20
    479 ESPLIT(NP,K)=ESPLIT6(IONMODL6,K) 
    480 CONTINUE                                 
    530 IF(EFINAL.LT.E6(4)) GO TO 540                  
        IF(NATT6.GT.1) GO TO 590                   
        NP=NP+1
        IDG6=NP                                                           
        CF(IE,NP)=Q6(4,IE)*VAN6*BET(IE) 
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 540 
        NEGAS(NP)=6
        LEGAS(NP)=0
        IESHELL(NP)=0       
        INDEX(NP)=0                            
        RGAS(NP)=RGAS6                                                    
        EIN(NP)=0.0D0                                                     
        IPN(NP)=-1
        L=28                                                          
        IARRY(NP)=L
        IZBR(NP)=0  
        DSCRPT(NP)=SCRP6(3+NION6) 
        PENFRA(1,NP)=0.0  
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0        
        GO TO 540
    590 DO 602 JJ=1,NATT6
        NP=NP+1
        IDG6=NP
        CF(IE,NP)=QATT6(JJ,IE)*VAN6*BET(IE)
        FCATT(IE)=FCATT(IE)+CF(IE,NP)
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        IF(IE.GT.1) GO TO 602
        NEGAS(NP)=6
        LEGAS(NP)=0
        IESHELL(NP)=0
        INDEX(NP)=0
        RGAS(NP)=RGAS6
        EIN(NP)=0.0D0
        IPN(NP)=-1
        L=28
        IARRY(NP)=L
        IZBR(NP)=0
        DSCRPT(NP)=SCRP6(2+NION6+JJ)
        PENFRA(1,NP)=0.0
        PENFRA(2,NP)=0.0
        PENFRA(3,NP)=0.0
        IONMODEL(NP)=IONMODL6
        DO 601 K=1,20
    601 ESPLIT(NP,K)=ESPLIT6(IONMODL6,K)  
    602 CONTINUE                                    
    540 IF(NIN6.EQ.0) GO TO 560                                           
        DO 550 J=1,NIN6 
        NP=NP+1
        IDG6=NP      
        NEGAS(NP)=6
        LEGAS(NP)=0
        IESHELL(NP)=0                                                     
        CF(IE,NP)=QIN6(J,IE)*VAN6*BET(IE)
  C NO X-SECTION FOR BREMSSTRAHLUNG IF LBRM=0
        IF(IZBR6(J).NE.0.AND.LBRM.EQ.0) CF(IE,NP)=0.0
        PSCT(IE,NP)=0.5
        ANGCT(IE,NP)=1.0
        INDEX(NP)=0 
  C
        IF(KIN6(J).EQ.1) THEN
         PSCT1=PEQIN6(J,IE)
         CALL ANGCUT(PSCT1,ANGC,PSCT2)
         ANGCT(IE,NP)=ANGC
         PSCT(IE,NP)=PSCT2
         INDEX(NP)=1
        ENDIF
        IF(KIN6(J).EQ.2) THEN
         PSCT(IE,NP)=PEQIN6(J,IE)
         INDEX(NP)=2
        ENDIF
  C
        IF(IE.GT.1) GO TO 550          
        RGAS(NP)=RGAS6                                                    
        EIN(NP)=EI6(J)/RGAS6
        L=29
        IF(EI6(J).LT.0.0D0) L=30                                          
        IPN(NP)=0         
        IARRY(NP)=L
        IZBR(NP)=IZBR6(J)  
        DSCRPT(NP)=SCRP6(4+NION6+NATT6+J)
        PENFRA(1,NP)=PENFRA6(1,J)
        PENFRA(2,NP)=PENFRA6(2,J)*1.D-6/DSQRT(3.0D0)
        PENFRA(3,NP)=PENFRA6(3,J)
        IF(PENFRA(1,NP).GT.AVPFRAC(1,6)) THEN 
         AVPFRAC(1,6)=PENFRA(1,NP)
         AVPFRAC(2,6)=PENFRA(2,NP)
         AVPFRAC(3,6)=PENFRA(3,NP)
        ENDIF
        IF(J.EQ.NIN6) CMINEXSC(6)=CMINEXSC(6)*AVPFRAC(1,6) 
    550 CONTINUE                                                     
    560 CONTINUE     
  C                                                                       
    600 CONTINUE                                                          
        IPLAST=NP  
  C ----------------------------------------------------------------      
  C   CAN INCREASE ARRAY SIZE UP TO 1740 IF MORE COMPLEX MIXTURES USED.
  C   1740 = 6 * 290 ( 6 = MAX NO OF GASES. 290 = MAX NO OF LEVELS )    
  C ------------------------------------------------------------------    
        IF(IPLAST.GT.512) WRITE(6,992)                                    
    992 FORMAT(/,/,6X,'WARNING TOO MANY LEVELS IN CALCULATION. CAN INCREAS
       /E THE ARRAY SIZES FROM 512 UP TO 1740 MAXIMUM',/)                 
        IF(IPLAST.GT.512) STOP                                            
  C --------------------------------------------------------------------  
  C     CALCULATION OF TOTAL COLLISION FREQUENCY                          
  C --------------------------------------------------------------------- 
        TCF(IE)=0.0D0                                                     
        DO 610 IL=1,IPLAST                                                
        TCF(IE)=TCF(IE)+CF(IE,IL)
        IF(CF(IE,IL).LT.0.0D0) WRITE(6,776) CF(IE,IL),IE,IL,IARRY(IL),EIN
       /(IL),E(IE) 
    776 FORMAT('MODI WARNING NEGATIVE COLLISION FREQUENCY =',D12.3,' IE =',I6,
       /' IL =',I3,' IARRY=',I5,' EIN=',D12.4,' ENERGY=',D12.4)         
   610  CONTINUE                                                          
        DO 620 IL=1,IPLAST                                                
        IF(TCF(IE).EQ.0.0D0) GO TO 615                                    
        CF(IE,IL)=CF(IE,IL)/TCF(IE)                                       
        GO TO 620                                                         
   615  CF(IE,IL)=0.0D0                                                   
   620  CONTINUE                                                          
        DO 630 IL=2,IPLAST                                                
        CF(IE,IL)=CF(IE,IL)+CF(IE,IL-1)                                   
   630  CONTINUE                   
  C FIX ROUNDING ERRORS AT HIGHEST VALUE
        CF(IE,IPLAST)=1.0D0
  C
  C     FCATT(IE)=FCATT(IE)*EROOT(IE)
  C     FCION(IE)=FCION(IE)*EROOT(IE)                                     
  C     TCF(IE)=TCF(IE)*EROOT(IE)   
        FCATT(IE)=FCATT(IE)*1.0D-10  
        FCION(IE)=FCION(IE)*1.0D-10                                       
        TCF(IE)=TCF(IE)*1.0D-10   
  C CALCULATION OF NULL COLLISION FREQUENCIES
        NP=0
        NPLAST=0
        IF((NUL1+NUL2+NUL3+NUL4+NUL5+NUL6).EQ.0) GO TO 699
        IF(NUL1.GT.0) THEN
         DO 631 J=1,NUL1
         NP=NP+1
         SCLENUL(NP)=SCLN1(J)
         DSCRPTN(NP)=SCRPN1(J)
    631  CFN(IE,NP)=QNUL1(J,IE)*VAN1*SCLENUL(NP)*BET(IE)
        ENDIF
        IF(NUL2.GT.0) THEN
         DO 632 J=1,NUL2
         NP=NP+1
         SCLENUL(NP)=SCLN2(J)
         DSCRPTN(NP)=SCRPN2(J)
    632  CFN(IE,NP)=QNUL2(J,IE)*VAN2*SCLENUL(NP)*BET(IE)
        ENDIF
        IF(NUL3.GT.0) THEN
         DO 633 J=1,NUL3
         NP=NP+1
         SCLENUL(NP)=SCLN3(J)
         DSCRPTN(NP)=SCRPN3(J)
    633  CFN(IE,NP)=QNUL3(J,IE)*VAN3*SCLENUL(NP)*BET(IE)
        ENDIF
        IF(NUL4.GT.0) THEN
         DO 634 J=1,NUL4
         NP=NP+1
         SCLENUL(NP)=SCLN4(J)
         DSCRPTN(NP)=SCRPN4(J)
    634  CFN(IE,NP)=QNUL4(J,IE)*VAN4*SCLENUL(NP)*BET(IE)
        ENDIF
        IF(NUL5.GT.0) THEN
         DO 635 J=1,NUL5
         NP=NP+1
         SCLENUL(NP)=SCLN5(J)
         DSCRPTN(NP)=SCRPN5(J)
    635  CFN(IE,NP)=QNUL5(J,IE)*VAN5*SCLENUL(NP)*BET(IE)
        ENDIF
        IF(NUL6.GT.0) THEN
         DO 636 J=1,NUL6
         NP=NP+1
         SCLENUL(NP)=SCLN6(J)
         DSCRPTN(NP)=SCRPN6(J)
    636  CFN(IE,NP)=QNUL6(J,IE)*VAN6*SCLENUL(NP)*BET(IE)
        ENDIF
        NPLAST=NP
  C SUM NULL COLLISIONS
        TCFN(IE)=0.0
        DO 640 IL=1,NPLAST
        TCFN(IE)=TCFN(IE)+CFN(IE,IL)
        IF(CFN(IE,IL).LT.0.0) WRITE(6,779) CFN(IE,IL),IE,IL
    779 FORMAT(' WARNING NEGATIVE NULL COLLISION REQUENCY =',D12.3,
       /' IE =',I6,' IL =',I3)
    640 CONTINUE
        DO 642 IL=1,NPLAST
        IF(TCFN(IE).EQ.0.0D0) GO TO 641
        CFN(IE,IL)=CFN(IE,IL)/TCFN(IE)
        GO TO 642
    641 CFN(IE,IL)=0.0D0
    642 CONTINUE
        TCFN(IE)=TCFN(IE)*1.0D-10
        IF(NPLAST.EQ.1) GO TO 699
        DO 643 IL=2,NPLAST
        CFN(IE,IL)=CFN(IE,IL)+CFN(IE,IL-1)
    643 CONTINUE
  C FIX ROUNDING ERRORS AT HIGHEST VALUE
        CFN(IE,NPLAST)=1.0D0 
    699 CONTINUE
    700 CONTINUE 
  C     WRITE(6,841) (INDEX(J),J, J=1,IPLAST)
  C 841 FORMAT(2X,' INDEX=',I3,' J=',I3)                   
  C  SET ANISOTROPIC FLAG IF ANISOTROPIC SCATTERING DATA IS DETECTED
        KELSUM=0
        DO 701 J=1,6
   701  KELSUM=KELSUM+KEL1(J)+KEL2(J)+KEL3(J)+KEL4(J)+KEL5(J)+KEL6(J)
        DO 702 J=1,250
   702  KELSUM=KELSUM+KIN1(J)+KIN2(J)+KIN3(J)+KIN4(J)+KIN5(J)+KIN6(J)
        IF(KELSUM.GT.0) NISO=1  
  C     IF(NISO.EQ.1) WRITE(6,7765) NISO
  C7765 FORMAT(3X,' ANISOTROPIC SCATTERING DETECTED NISO=',I5)         
  C -------------------------------------------------------------------   
  C   CALCULATE NULL COLLISION FREQUENCY                                  
  C -------------------------------------------------------------------   
        BP=EFIELD*EFIELD*CONST1                                           
        F2=EFIELD*CONST3                                                  
        ELOW=TMAX*(TMAX*BP-F2*DSQRT(0.5D0*EFINAL))/ESTEP-1.0D0            
        ELOW=DMIN1(ELOW,SMALL)                                            
        EHI=TMAX*(TMAX*BP+F2*DSQRT(0.5D0*EFINAL))/ESTEP+1.0D0
        IF(EHI.GT.20000.0) EHI=20000.0
        JONE=1
        JLARGE=20000  
        DO 810 I=1,10                                                     
        JLOW=20000-2000*(11-I)+1+DINT(ELOW)                               
        JHI=20000-2000*(10-I)+DINT(EHI)
        JLOW=DMAX0(JLOW,JONE)                                         
        JHI=DMIN0(JHI,JLARGE)
        DO 800 J=JLOW,JHI
        IF(TCF(J).GE.TCFMAX(I)) TCFMAX(I)=TCF(J)                          
    800 CONTINUE                                                          
    810 CONTINUE  
  C---------------------------------------------------------------------
  C FIND MAXIMUM COLLISION FREQUENCY
  C     TLIM=TCFMAX(1)
  C     DO 835 I=1,10
  C 835 IF(TLIM.LT.TCFMAX(I)) TLIM=TCFMAX(I)
  C     TCFMAX1=TLIM  
        TLIM=0.0
        DO 835 I=1,20000
    835 IF(TLIM.LT.TCF(I)) TLIM=TCF(I)
        TCFMAX1=TLIM                                                    
  C -------------------------------------------------------------------   
  C   CROSS SECTION DATA FOR INTEGRALS IN  OUTPUT               
  C --------------------------------------------------------------------- 
        DO 900 I=1,NSTEP                                               
        QTOT(I)=AN1*Q1(1,I)+AN2*Q2(1,I)+AN3*Q3(1,I)+AN4*Q4(1,I)+
       /AN5*Q5(1,I)+AN6*Q6(1,I)            
        QEL(I)=AN1*Q1(2,I)+AN2*Q2(2,I)+AN3*Q3(2,I)+AN4*Q4(2,I)+
       /AN5*Q5(2,I)+AN6*Q6(2,I)             
  C                                                                       
        QION(1,I)=Q1(3,I)*AN1   
        IF(NION1.GT.1) THEN
         DO 811 KION=1,NION1
    811  QION(1,I)=QION1(KION,I)*AN1
        ENDIF                                           
        QION(2,I)=Q2(3,I)*AN2                                             
        IF(NION2.GT.1) THEN
         DO 812 KION=1,NION2
    812  QION(2,I)=QION2(KION,I)*AN2
        ENDIF                                           
        QION(3,I)=Q3(3,I)*AN3                                             
        IF(NION3.GT.1) THEN
         DO 813 KION=1,NION3
    813  QION(3,I)=QION3(KION,I)*AN3
        ENDIF                                           
        QION(4,I)=Q4(3,I)*AN4
        IF(NION4.GT.1) THEN
         DO 814 KION=1,NION4
    814  QION(4,I)=QION4(KION,I)*AN4
        ENDIF                                           
        QION(5,I)=Q5(3,I)*AN5
        IF(NION5.GT.1) THEN
         DO 815 KION=1,NION5
    815  QION(5,I)=QION5(KION,I)*AN5
        ENDIF                                           
        QION(6,I)=Q6(3,I)*AN6                                             
        IF(NION6.GT.1) THEN
         DO 816 KION=1,NION6
    816  QION(6,I)=QION6(KION,I)*AN6
        ENDIF                                           
        QATT(1,I)=Q1(4,I)*AN1                                             
        QATT(2,I)=Q2(4,I)*AN2                                             
        QATT(3,I)=Q3(4,I)*AN3                                             
        QATT(4,I)=Q4(4,I)*AN4
        QATT(5,I)=Q5(4,I)*AN5
        QATT(6,I)=Q6(4,I)*AN6                                             
  C                                                                       
        QREL(I)=0.0D0                                                     
        QSATT(I)=0.0D0                                                   
        QSUM(I)=0.0D0                                                     
        DO 855 J=1,NGAS                                                   
        QSUM(I)=QSUM(I)+QION(J,I)+QATT(J,I)                               
        QSATT(I)=QSATT(I)+QATT(J,I)                                       
    855 QREL(I)=QREL(I)+QION(J,I)-QATT(J,I)                               
  C                                                                       
        IF(NIN1.EQ.0) GO TO 865                                           
        DO 860 J=1,NIN1                                                   
    860 QSUM(I)=QSUM(I)+QIN1(J,I)*AN1                                     
    865 IF(NIN2.EQ.0) GO TO 875                                           
        DO 870 J=1,NIN2                                                   
    870 QSUM(I)=QSUM(I)+QIN2(J,I)*AN2                                     
    875 IF(NIN3.EQ.0) GO TO 885                                           
        DO 880 J=1,NIN3                                                   
    880 QSUM(I)=QSUM(I)+QIN3(J,I)*AN3                                     
    885 IF(NIN4.EQ.0) GO TO 895                                           
        DO 890 J=1,NIN4                                                   
    890 QSUM(I)=QSUM(I)+QIN4(J,I)*AN4                                     
    895 IF(NIN5.EQ.0) GO TO 898 
        DO 896 J=1,NIN5
    896 QSUM(I)=QSUM(I)+QIN5(J,I)*AN5
    898 IF(NIN6.EQ.0) GO TO 900
        DO 899 J=1,NIN6
    899 QSUM(I)=QSUM(I)+QIN6(J,I)*AN6                                     
  C                                                                       
   900  CONTINUE                                                          
  C                                                                       
        RETURN                                                            
        END 

SETUP()

      SUBROUTINE SETUP(LAST)                                            
      IMPLICIT REAL*8 (A-H,O-Z) 
      IMPLICIT INTEGER*8 (I-N) 
      INTEGER*4 NSEED                                       
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/CNSTS/ECHARG,EMASS,AMU,PIR2
      COMMON/INPT2/KGAS,LGAS,DETEFF,EXCWGHT
      COMMON/INPT1/NDVEC                                
      COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
      COMMON/RATIO/AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC(6)               
      COMMON/GASN/NGASN(6)                                 
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE
      COMMON/SET2/DRXINIT,DRYINIT,DRZINIT
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG 
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6)
      COMMON/MRATIO/VAN1,VAN2,VAN3,VAN4,VAN5,VAN6,VAN
      COMMON/OUTPT/ICOLL(30),NETOT,NPRIME,TMAX1,TIME(300),NNULL,
     /NITOT,ICOLN(512),ICOLNN(60),NREAL,NEXCTOT
      COMMON/PRIM3/MSUM(10000),MCOMP(10000),MRAYL(10000),MPAIR(10000),
     /MPHOT(10000),MVAC(10000)
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS 
      COMMON/COMP/ICMP,ICFLG,IRAY,IRFLG,IPAP,IPFLG,IBRM,IBFLG,LPEFLG 
      COMMON/MIX2/E(20000),EROOT(20000),QTOT(20000),QREL(20000),
     /QINEL(20000),QEL(20000)
      COMMON/PLOT/NXPL10(31),NYPL10(31),NZPL10(31),NXPL40(31),
     /NYPL40(31),NZPL40(31),NXPL100(31),NYPL100(31),NZPL100(31),
     /NXPL400(31),NYPL400(31),NZPL400(31),NXPL1000(31),NYPL1000(31),
     /NZPL1000(31),NXPL2(31),NYPL2(31),NZPL2(31),NXPL4000(31),
     /NYPL4000(31),NZPL4000(31),NXPL10000(31),NYPL10000(31),
     /NZPL10000(31),NXPL40000(31),NYPL40000(31),NZPL40000(31),
     /NXPL100000(31),NYPL100000(31),NZPL100000(31),NRPL2(31),NRPL10(31),
     /NRPL40(31),NRPL100(31),NRPL400(31),NRPL1000(31),NRPL4000(31),
     /NRPL10000(31),NRPL40000(31),NRPL100000(31),NEPL1(100),
     /NEPL10(100),NEPL100(100),MELEC(1000),MELEC3(1000),MELEC10(1000),
     /MELEC30(1000),MELEC100(1000),MELEC300(1000)
      COMMON/BREMG/EBRGAM(10),BRDCOSX(10),BRDCOSY(10),BRDCOSZ(10),
     /BRX(10),BRY(10),BRZ(10),BRT(10),EBRTOT(6),NBREM(6)
      COMMON/CLUS/XAV(100000),YAV(100000),ZAV(100000),TAV(100000),
     /XYAV(100000),XYZAV(100000),DX(100000),DY(100000),DZ(100000),
     /DT(100000),DXY(100000),DXYZ(100000),NCL(100000),FARX1(100000)
     /,FARY1(100000),FARZ1(100000),FARXY1(100000),RMAX1(100000),
     /TSUM(100000),XNEG(100000), 
     /YNEG(100000),ZNEG(100000),EDELTA(100000),EDELTA2(100000),
     /NCLEXC(100000)
      COMMON/KSEED/NSEED
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC
C                                                                       
C   NEW UPDATE OF CONSTANTS 2010
C
      API=DACOS(-1.0D0)                                                 
      ARY=13.60569253D0                                              
      PIR2=8.7973554297D-17                                       
      ECHARG=1.602176565D-19                                            
      EMASS=9.10938291D-31                     
      EMS=510998.928D0
      VC=299792458.0D0                       
      AMU=1.660538921D-27                                             
      BOLTZ=8.6173324D-5     
      BOLTZJ=1.3806488D-23                                              
      AWB=1.758820088D10                                              
      ALOSCH=2.6867805D19      
      RE=2.8179403267D-13    
      ALPH=137.035999074
      HBAR=6.58211928D-16                                     
      EOVM=DSQRT(2.0D0*ECHARG/EMASS)*100.0D0                            
      ABZERO=273.15D0                                                   
      ATMOS=760.0D0                                                     
      CONST1=AWB/2.0D0*1.0D-19                                          
      CONST2=CONST1*1.0D-02                                             
      CONST3=DSQRT(0.2D0*AWB)*1.0D-09                                   
      CONST4=CONST3*ALOSCH*1.0D-15                                      
      CONST5=CONST3/2.0D0
      TWOPI=2.0D0*API
      NANISO=2
      DO 55 K=1,6
      NBREM(K)=0
      EBRTOT(K)=0.0
   55 CONTINUE
      ICFLG=0
      IRFLG=0
      IPFLG=0
      IBFLG=0
      LPEFLG=0
C  --------------------------------------------       
C                                                                       
C      READ IN OUTPUT CONTROL AND INTEGRATION DATA                      
C                                                                       
      READ(5,2) NGAS,NEVENT,IMIP,NDVEC,NSEED,ESTART,ETHRM,ECUT    
    2 FORMAT(5I10,3F10.5)  
      ICOUNT=0
      IF(IMIP.EQ.1) ICOUNT=1 
      IF(NGAS.EQ.0) GO TO 99 
      IF(ESTART.GT.3.0D6.AND.IMIP.EQ.3) THEN
      WRITE(6,664) ESTART
  664 FORMAT(' PROGRAM STOPPED: X-RAY ENERGY=',D12.3,'EV. MAXIMUM ENERGY
     / 3.0MEV')
       STOP 
      ENDIF
      IF(IMIP.NE.1.AND.NEVENT.GT.10000) THEN 
       WRITE(6,665) NEVENT
  665  FORMAT(' PROGRAM STOPPED NUMBER OF EVENTS =',I7,' LARGER THAN ARR
     /AY LIMIT OF 10000')
       STOP
      ENDIF
      IF(IMIP.EQ.1.AND.NEVENT.GT.100000) THEN
       WRITE(6,666) NEVENT
  666  FORMAT(' PROGRAM STOPPED NUMBER OF EVENTS =',I7,' LARGER THAN ARR
     /AY LIMIT OF 100000')
       STOP
      ENDIF
C 
C   GAS IDENTIFIERS 
C
      READ(5,3) NGASN(1),NGASN(2),NGASN(3),NGASN(4),NGASN(5),NGASN(6)
    3 FORMAT(6I5)        
C      
C      GAS PARAMETERS
C
      READ(5,4) FRAC(1),FRAC(2),FRAC(3),FRAC(4),FRAC(5),FRAC(6),TEMPC,
     /TORR                        
    4 FORMAT(8F10.4)      
C                                                  
C      FIELD VALUES                                                    
C                                                                       
      READ(5,5) EFIELD,BMAG,BTHETA,IWRITE,IPEN                         
    5 FORMAT(3F10.3,2I5)
      READ(5,6) DETEFF,EXCWGHT,KGAS,LGAS,ICMP,IRAY,IPAP,IBRM,IECASC 
    6 FORMAT(2F10.3,7I5)
C     WRITE(6,656) IWRITE
C 656 FORMAT(' IWRITE=',I3)  
      IF(IWRITE.NE.0) OPEN(UNIT=50,FILE='DEGRAD.OUT')
C CALCULATE EFINAL FOR DELTAS OR XRAYS 
C INCREASED EFINAL CAUSED BY ELECTRIC FIELD 
      EBIG=0.05*ESTART/1000. 
      EFINAL=ESTART*1.0001+760.0*EBIG/TORR*(TEMPC+ABZERO)/293.15*EFIELD
      IF(EFINAL.LT.(1.01*ESTART)) EFINAL=1.01*ESTART 
C   CHECK INPUT
      TOTFRAC=0.0D0
      IF(NGAS.EQ.0.OR.NGAS.GT.6) GO TO 999
      DO 10 J=1,NGAS
      IF(NGASN(J).EQ.0.OR.FRAC(J).EQ.0.0D0) GO TO 999
   10 TOTFRAC=TOTFRAC+FRAC(J)
      IF(DABS(TOTFRAC-100.0D0).GT.1.D-6) GO TO 999
      LAST=0
      TMAX=100.0D0  
      NOUT=10  
      NSTEP=20000
C INITIAL ANGLES
      IF(NDVEC.EQ.1) THEN
       PHI=0.0D0                                
       THETA=0.0D0 
      ELSE IF(NDVEC.EQ.(-1)) THEN
       PHI=0.0D0
       THETA=DACOS(-1.D0)
      ELSE IF(NDVEC.EQ.0) THEN
       PHI=0.0D0
       THETA=API/2.0  
      ELSE IF(NDVEC.EQ.2) THEN
       R3=drand48(RDUM)
C  Self Added
C       PRINT * , RDUM
       PHI=TWOPI*R3
       R4=drand48(RDUM)
       THETA=DACOS(1.0D0-2.0D0*R4)  
      ELSE 
       WRITE(6,992) NDVEC
  992  FORMAT(/,2X,'DIRECTION OF BEAM NOT DEFINED NDVEC =',I5)
       STOP      
      ENDIF
C INITIAL DIRECTION COSINES FOR CASCADE CALCULATION
      DRZINIT=DCOS(THETA)
      DRXINIT=DSIN(THETA)*DCOS(PHI)
      DRYINIT=DSIN(THETA)*DSIN(PHI)
C ZERO COMMON BLOCKS OF OUTPUT RESULTS
      DO 64 J=1,10000
      MSUM(J)=0
      MCOMP(J)=0
      MRAYL(J)=0
      MPAIR(J)=0
      MPHOT(J)=0
   64 MVAC(J)=0
      DO 65 J=1,300                                                     
   65 TIME(J)=0.0D0                                                     
      DO 70 K=1,30                                                      
   70 ICOLL(K)=0  
      DO 80 K=1,512
   80 ICOLN(K)=0                 
      DO 81 K=1,60
   81 ICOLNN(K)=0                                       
      DO 100 K=1,10                                                     
  100 TCFMAX(K)=0.0D0   
C ZERO PLOT ARRAYS
      DO 110 K=1,31
      NXPL2(K)=0
      NYPL2(K)=0
      NZPL2(K)=0
      NXPL10(K)=0
      NYPL10(K)=0
      NZPL10(K)=0
      NXPL40(K)=0
      NYPL40(K)=0
      NZPL40(K)=0
      NXPL100(K)=0
      NYPL100(K)=0
      NZPL100(K)=0
      NXPL400(K)=0
      NYPL400(K)=0
      NZPL400(K)=0
      NXPL1000(K)=0
      NYPL1000(K)=0
      NZPL1000(K)=0
      NXPL4000(K)=0
      NYPL4000(K)=0
      NZPL4000(K)=0
      NXPL10000(K)=0
      NYPL10000(K)=0
      NZPL10000(K)=0
      NXPL40000(K)=0
      NYPL40000(K)=0
      NZPL40000(K)=0
      NXPL100000(K)=0
      NYPL100000(K)=0
      NZPL100000(K)=0
      NRPL2(K)=0
      NRPL10(K)=0
      NRPL40(K)=0
      NRPL100(K)=0
      NRPL400(K)=0
      NRPL1000(K)=0
      NRPL4000(K)=0
      NRPL10000(K)=0
      NRPL40000(K)=0
  110 NRPL100000(K)=0
      DO 111 K=1,100
      NEPL1(K)=0
      NEPL10(K)=0
  111 NEPL100(K)=0
      DO 112 K=1,1000
      MELEC(K)=0
      MELEC3(K)=0
      MELEC10(K)=0
      MELEC30(K)=0
      MELEC100(K)=0
  112 MELEC300(K)=0
C ZERO ARRAYS
      DO 113 KS=1,100000
      XAV(KS)=0.0
      YAV(KS)=0.0
      ZAV(KS)=0.0
      TAV(KS)=0.0
      XYAV(KS)=0.0
      XYZAV(KS)=0.0
      DX(KS)=0.0
      DY(KS)=0.0
      DZ(KS)=0.0
      DT(KS)=0.0
      DXY(KS)=0.0
      DXYZ(KS)=0.0
      FARX1(KS)=0.0
      FARY1(KS)=0.0
      FARZ1(KS)=0.0
      FARXY1(KS)=0.0
      RMAX1(KS)=0.0
      TSUM(KS)=0.0
      XNEG(KS)=0.0
      YNEG(KS)=0.0
      ZNEG(KS)=0.0
      EDELTA(KS)=0.0
      EDELTA2(KS)=0.0
      NCL(KS)=0
      NCLEXC(KS)=0
  113 CONTINUE
C ----------------------------------------------------  
C IF NSEED = 0 THEN USE STANDARD SEED VALUE =54217137
      IF(NSEED.NE.0) CALL RM48IN(NSEED,0,0)                           
C-----------------------------------------------      
C
      CORR=ABZERO*TORR/(ATMOS*(ABZERO+TEMPC)*100.0D0)                   
      AKT=(ABZERO+TEMPC)*BOLTZ
      AN1=FRAC(1)*CORR*ALOSCH                                           
      AN2=FRAC(2)*CORR*ALOSCH                                           
      AN3=FRAC(3)*CORR*ALOSCH                                           
      AN4=FRAC(4)*CORR*ALOSCH
      AN5=FRAC(5)*CORR*ALOSCH
      AN6=FRAC(6)*CORR*ALOSCH                                           
      AN=100.0D0*CORR*ALOSCH                                            
C     VAN1=FRAC(1)*CORR*CONST4*1.0D15                                   
C     VAN2=FRAC(2)*CORR*CONST4*1.0D15                                   
C     VAN3=FRAC(3)*CORR*CONST4*1.0D15                                   
C     VAN4=FRAC(4)*CORR*CONST4*1.0D15
C     VAN5=FRAC(5)*CORR*CONST4*1.0D15
C     VAN6=FRAC(6)*CORR*CONST4*1.0D15                                   
C     VAN=100.0D0*CORR*CONST4*1.0D15
      VAN1=FRAC(1)*CORR*ALOSCH*VC                                   
      VAN2=FRAC(2)*CORR*ALOSCH*VC                                   
      VAN3=FRAC(3)*CORR*ALOSCH*VC                                  
      VAN4=FRAC(4)*CORR*ALOSCH*VC
      VAN5=FRAC(5)*CORR*ALOSCH*VC
      VAN6=FRAC(6)*CORR*ALOSCH*VC                                  
      VAN=100.0D0*CORR*ALOSCH*VC
C CALCULATE AND STORE ENERGY GRID FOR XRAYS BETAS OR PARTICLES
      IF(EFINAL.LE.20000.0) THEN
       ESTEP=EFINAL/DFLOAT(NSTEP)
       EHALF=ESTEP/2.0D0
       E(1)=EHALF
       GAM(1)=(EMS+E(1))/EMS
       BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
       DO 203 I=2,20000
       AJ=DFLOAT(I-1)
       E(I)=EHALF+ESTEP*AJ
       GAM(I)=(EMS+E(I))/EMS
  203  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
      ELSE IF(EFINAL.GT.20000.0.AND.EFINAL.LE.140000.) THEN
       ESTEP=1.0
       EHALF=0.5
       E(1)=EHALF
       GAM(1)=(EMS+E(1))/EMS
       BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
       DO 231 I=2,16000
       AJ=DFLOAT(I-1)
       E(I)=EHALF+ESTEP*AJ
       GAM(I)=(EMS+E(I))/EMS
  231  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
       ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
       DO 232 I=16001,20000
       AJ=DFLOAT(I-16000)
       E(I)=16000.0+AJ*ESTEP1
       GAM(I)=(EMS+E(I))/EMS
  232  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
      ELSE
       ESTEP=1.0
       EHALF=0.5
       E(1)=EHALF
       GAM(1)=(EMS+E(1))/EMS
       BET(1)=DSQRT(1.0D0-1.0D0/(GAM(1)*GAM(1)))
       DO 233 I=2,12000
       AJ=DFLOAT(I-1)
       E(I)=EHALF+ESTEP*AJ
       GAM(I)=(EMS+E(I))/EMS
  233  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
       ESTEP1=20.0
       DO 234 I=12001,16000
       AJ=DFLOAT(I-12000)
       E(I)=12000.0+AJ*ESTEP1
       GAM(I)=(EMS+E(I))/EMS
  234  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
       ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
       DO 235 I=16001,20000
       AJ=DFLOAT(I-16000)
       E(I)=92000.0+AJ*ESTEP2
       GAM(I)=(EMS+E(I))/EMS
  235  BET(I)=DSQRT(1.0D0-1.0D0/(GAM(I)*GAM(I)))
      ENDIF
C  RADIANS PER PICOSECOND                                        
      WB=AWB*BMAG*1.0D-12 
C   METRES PER PICOSECOND
      IF(BMAG.EQ.0.0D0) RETURN
      EOVB=EFIELD*1.D-9/BMAG
      RETURN
  999 WRITE(6,87) NGAS,(J,NGASN(J),FRAC(J),J=1,6) 
   87 FORMAT(3(/),4X,' ERROR IN GAS INPUT : NGAS=',I5,6(/,2X,' N=',I3,' 
     /NGAS=',I5,' FRAC=',F8.3))                                         
   99 LAST=1                                                            
      RETURN                                                            
      END 
def SETUP(LAST):
    #IMPLICIT #real*8 (A-H,O-Z) 
    #IMPLICIT #integer*8 (I-N) 
    #integer*4 NSEED                                       
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    global ECHARG,EMASS,AMU,PIR2
    global KGAS,LGAS,DETEFF,EXCWGHT
    global NDVEC,CONST1,CONST2,CONST3,CONST4,CONST5                  
    global AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC #=[0 for x in range[6]]               
    global NGASN #=[0 for x in range[6]]                                 
    global TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX #=[0 for x in range(10)]
    global TCFMAX1,RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE
    global DRXINIT,DRYINIT,DRZINIT
    global EOVB,WB,BTHETA,BMAG 
    global DOUBLE #=[[0 for x in range[6]] for y in range(20000)]
    global AVPFRAC #=[[0 for x in range(3)] for y in range(6)]
    global CMINIXSC #=[0 for x in range[6]]
    global CMINEXSC #=[0 for x in range[6]]
    global ECLOSS #=[0 for x in range[6]]
    global WPLN #=[0 for x in range[6]]
    global ICOUNT
    global OVAN1,VAN2,VAN3,VAN4,VAN5,VAN6,VAN
    global ICOLL#=[0 for x in range(30)]
    global NETOT,NPRIME,TMAX1
    global TIME #=[0 for x in range(300)]
    global NNULL,NITOT
    global ICOLN #=[0 for x i range(512)]
    global ICOLNN#=[0 for x in range(60)]
    global NREAL,NEXCTOT
    global MSUM#=[0 for x in range(10000)]
    global MCOMP#=[0 for x in range(10000)]
    global MRAYL#=[0 for x in range(10000)]
    global MPAIR#=[0 for x in range(10000)]
    global MPHOT#=[0 for x in range(10000)]
    global MVAC#=[0 for x in range(10000)]
    global BET#=[0 for x in range(2000)]
    global GAM#=[0 for x in range(20000)]
    global VC,EMS 
    global ICMP,ICFLG,IRAY,IRFLG,IPAP,IPFLG,IBRM,IBFLG,LPEFLG 
    global E #=[0 for x in range(20000)]
    global EROOT #=[0 for x in range(20000)]
    global QTOT #=[0 for x in range(20000)]
    global QREL #=[0 for x in range(20000)]
    global QINEL #=[0 for x in range(20000)]
    global QEL #=[0 for x in range(20000)]
    global NXPL10#=[0 for x in range(31)]
    global NYPL10#=[0 for x in range(31)]
    global NZPL10#=[0 for x in range(31)]
    global NXPL40#=[0 for x in range(31)]
    global NYPL40#=[0 for x in range(31)]
    global NZPL40#=[0 for x in range(31)]
    global NXPL100#=[0 for x in range(31)]
    global NYPL100#=[0 for x in range(31)]
    global NZPL100#=[0 for x in range(31)]
    global NXPL400#=[0 for x in range(31)]
    global NYPL400#=[0 for x in range(31)]
    global NZPL400#=[0 for x in range(31)]
    global NXPL1000#=[0 for x in range(31)]
    global NYPL1000#=[0 for x in range(31)]
    global NZPL1000#=[0 for x in range(31)]
    global NXPL2#=[0 for x in range(31)]
    global NYPL2#=[0 for x in range(31)]
    global NZPL2#=[0 for x in range(31)]
    global NXPL4000#=[0 for x in range(31)]
    global NYPL4000#=[0 for x in range(31)]
    global NZPL4000#=[0 for x in range(31)]
    global NXPL10000#=[0 for x in range(31)]
    global NYPL10000#=[0 for x in range(31)]
    global NZPL10000#=[0 for x in range(31)]
    global NXPL40000#=[0 for x in range(31)]
    global NYPL40000#=[0 for x in range(31)]
    global NZPL40000#=[0 for x in range(31)]
    global NXPL100000#=[0 for x in range(31)]
    global NYPL100000#=[0 for x in range(31)]
    global NZPL100000#=[0 for x in range(31)]
    global NRPL2#=[0 for x in range(31)]
    global NRPL10#=[0 for x in range(31)]
    global NRPL40#=[0 for x in range(31)]
    global NRPL100#=[0 for x in range(31)]
    global NRPL400#=[0 for x in range(31)]
    global NRPL1000#=[0 for x in range(31)]
    global NRPL4000#=[0 for x in range(31)]
    global NRPL10000#=[0 for x in range(31)]
    global NRPL40000#=[0 for x in range(31)]
    global NRPL100000#=[0 for x in range(31)]
    global NEPL1#=[0 for x in range(100)]
    global NEPL10#=[0 for x in range(100)]
    global NEPL100#=[0 for x in range(100)]
    global MELEC#=[0 for x in range(1000)]
    global MELEC3#=[0 for x in range(1000)]
    global MELEC10#=[0 for x in range(1000)]
    global MELEC30#=[0 for x in range(1000)]
    global MELEC100#=[0 for x in range(1000)]
    global MELEC300#=[0 for x in range(1000)]
    global EBRGAM#=[0 for x in range(10)]
    global BRDCOSX# =[0 for x in range(10)]
    global BRDCOSY# =[0 for x in range(10)]
    global BRDCOSZ# =[0 for x in range(10)]
    global BRX#=[0 for x in range(10)]
    global BRY#=[0 for x in range(10)]
    global BRZ#=[0 for x in range(10)]
    global BRT#=[0 for x in range(10)]
    global EBRTOT#=[0 for x in range[6]]
    global NBREM#=[0 for x in range[6]]
    global XAV#=[0 for x in range(100000)]
    global YAV#=[0 for x in range(100000)]
    global ZAV#=[0 for x in range(100000)]
    global TAV#=[0 for x in range(100000)]
    global XYAV#=[0 for x in range(100000)]
    global XYZAV#=[0 for x in range(100000)]
    global DX#=[0 for x in range(100000)]
    global DY#=[0 for x in range(100000)] 
    global DZ#=[0 for x in range(100000)]
    global DT#=[0 for x in range(100000)]
    global DXY#=[0 for x in range(100000)]
    global DXYZ#=[0 for x in range(100000)]
    global NCL#=[0 for x in range(100000)]
    global FARX1#=[0 for x in range(100000)]
    global FARY1#=[0 for x in range(100000)]
    global FARZ1#=[0 for x in range(100000)]
    global FARXY1#=[0 for x in range(100000)]
    global RMAX1#=[0 for x in range(100000)]
    global TSUM#=[0 for x in range(100000)]
    global XNEG#=[0 for x in range(100000)]
    global YNEG#=[0 for x in range(100000)]
    global ZNEG#=[0 for x in range(100000)]
    global EDELTA#[100000]
    global EDELTA2#=[0 for x in range(100000)]
    global NCLEXC#=[0 for x in range(100000)]
    global NSEED
    global NEGAS#=[0 for x in range(512)]
    global LEGAS#=[0 for x in range(512)]
    global IESHELL#=[0 for x in range(512)]
    global IECASC
    #                                                                       
    #   NEW UPDATE OF CONSTANTS 2010
    #
    API=numpy.arccos(-1.00)                                                 
    ARY=13.605692530                                              
    PIR2=8.7973554297*(10**-17)
    ECHARG=1.602176565*(10**-19)                                         
    EMASS=9.10938291*(10**-31)                     
    EMS=510998.9280
    VC=299792458.00                       
    AMU=1.660538921*(10**-27)                                             
    BOLTZ=8.6173324*(10**-5)    
    BOLTZJ=1.3806488*(10**-23)                                              
    AWB=1.758820088*(10**10)                                             
    ALOSCH=2.6867805*(10**19)     
    RE=2.8179403267*(10**-13)    
    ALPH=137.035999074
    HBAR=6.58211928*(10**-16)                                     
    EOVM=math.sqrt(2.00*ECHARG/EMASS)*100.00                            
    ABZERO=273.150                                                   
    ATMOS=760.00                                                     
    CONST1=AWB/2.00*1.0*(10**-19)                                          
    CONST2=CONST1*1.0*(10**-02)                                             
    CONST3=math.sqrt(0.20*AWB)*1.0*(10**-9)                                   
    CONST4=CONST3*ALOSCH*1.0*(10**-15)                                      
    CONST5=CONST3/2.00
    TWOPI=2.00*API
    NANISO=2
    for K in range(1,6):
        NBREM[K]=0
        EBRTOT[K]=0.0
    ICFLG=0
    IRFLG=0
    IPFLG=0
    IBFLG=0
    LPEFLG=0
    #  --------------------------------------------       
    #                                                                       
    #      READ IN OUTPUT CONTROL AND INTEGRATION DATA                      
    #                                                                       
    NGAS=int(input())
    NEVENT=int(input())
    IMIP=int(input())
    NDVEC=int(input())
    NSEED=int(input())
    ESTART=float(input())
    ETHRM=float(input())
    ECUT=float(input())
    ICOUNT=0
    if(IMIP == 1):
        ICOUNT=1 
    if(NGAS == 0):  #yet to figure out 
        LAST=1
        return  
    if(ESTART > 3.0*(10**6) and IMIP == 3):
        print(' SUBROUTINE STOPPED: X-RAY ENERGY=','%.3f' % ESTART,'EV. MAXIMUM ENERGY 3.0MEV')
        sys.exit() 
    # endif
    if(IMIP != 1 and NEVENT > 10000):
        print(' SUBROUTINE STOPPED: NUMBER OF EVENTS =',NEVENT,' LARGER THAN ARRAY LIMIT OF 10000')
        sys.exit()
    # endif
    if(IMIP == 1 and NEVENT > 100000):
        print(' SUBROUTINE STOPPED: NUMBER OF EVENTS =',NEVENT,' LARGER THAN ARRAY LIMIT OF 100000')
        sys.exit()
    # endif
    # 
    #   GAS IDENTifIERS 
    #
    for i in range(1,6):
        NGASN[i]=int(input())
    #      
    #      GAS PARAMETERS
    #
    for i in range(1,6):
        FRAC[i]=round(float(input()),4)             #print(8'%.4f' %)      
    TEMPC=round(float(input()),4)                   #print(8'%.4f' %)      
    TORR=round(float(input()),4)                    #print(8'%.4f' %)      


    #print(8'%.4f' %)      
    #                                                  
    #      FIELD VALUES                                                    
    #                                                                       
    EFIELD=round(float(input()),3)              #print(3'%.3f' % ,2I5)
    BMAG=round(float(input()),3)            #print(3'%.3f' % ,2I5)
    BTHETA=round(float(input()),3)          #print(3'%.3f' % ,2I5)
    IWRITE=int(input())         #print(3'%.3f' % ,2I5)
    IPEN=int(input())                               #print(3'%.3f' % ,2I5)     

    DETEFF=round(float(input()),3)          # print(2'%.3f' % ,7I5)
    EXCWGHT=round(float(input()),3)         # print(2'%.3f' % ,7I5)         
    KGAS=int(input())                       # print(2'%.3f' % ,7I5)
    LGAS=int(input())                       # print(2'%.3f' % ,7I5)
    ICMP=int(input())                       # print(2'%.3f' % ,7I5)
    IRAY=int(input())                       # print(2'%.3f' % ,7I5)
    IPAP=int(input())                       # print(2'%.3f' % ,7I5)
    IBRM=int(input())                       # print(2'%.3f' % ,7I5)
    IECASC =int(input())                    # print(2'%.3f' % ,7I5)
    #     WRITE(6,656) IWRITE
    # 656 print(' IWRITE=',I3)  
    if(IWRITE != 0):
        OPEN(UNIT=50,FILE='DEGRAD.OUT')  #yet to be
    # CALCULATE EFINAL FOR DELTAS OR XRAYS 
    # INCREASED EFINAL CAUSED BY ELECTRIC FIELD 
    EBIG=0.05*ESTART/1000. 
    EFINAL=ESTART*1.0001+760.0*EBIG/TORR*(TEMPC+ABZERO)/293.15*EFIELD
    if(EFINAL < (1.01*ESTART)):
        EFINAL=1.01*ESTART 
    #   CHECK INPUT
    TOTFRAC=0.00
    if(NGAS == 0 or NGAS > 6):
            GOTO999()
    for J in range(1,NGAS):
        if(NGASN[J]== 0 or FRAC[J] == 0.00):
            GOTO999()
        TOTFRAC=TOTFRAC+FRAC[J]
    if(abs(TOTFRAC-100.00)> 1*(10**-6)):
        GOTO999()
    LAST=0
    TMAX=100.00  
    NOUT=10  
    NSTEP=20000
    # INITIAL ANGLES
    if(NDVEC): #22594
        PHI=0
        THETA=0
    else if(NDVEC==-1):
        PHI=0
        THETA=numpy.arccos(-1)
    else if(NDVEC==0):
        PHI=0.0
        THETA=API/2.0
    else if(NDVEC==2):
        R3=DRAND48(0.0,1.0)
        PHI=TWOPI*R3
        R4=DRAND48(1.5, 1.9)
        THETA=numpy.arccos(1.0-2.0*R4)
    else :
        print('DIRECTION OF BEAM NOT DEFINED NDVEC =',NDVEC)
        sys.exit()

    # INITIAL DIRECTION COSINES FOR CASCADE CALCULATION
    DRZINIT= numpy.cos(THETA)
    DRXINIT= numpy.sin(THETA)*numpy.cos(PHI)
    DRYINIT=numpy.sin(THETA)*numpy.sin(PHI)
    # ZERO COMMON BLOCKS OF OUTPUT RESULTS
    for J in range(1,10000):
        MSUM[J]=0
        MCOMP[J]=0
        MRAYL[J]=0
        MPAIR[J]=0
        MPHOT[J]=0
        MVAC[J]=0

    for J in range(1,300):
        TIME[J]=0
    for K in range(1,30):
        ICOLL[K]=0
    for K in range(1,512):
        ICOLN[K]=0
    for K in range(1,60):
        ICOLNN[K]=0
    for in range(1,10):
        TCFMAX[K]=float(0)
    # ZERO PLOT ARRAYS
    for K in range(1,31):
        NXPL2[K]=0
        NYPL2[K]=0
        NZPL2[K]=0
        NXPL10[K]=0
        NYPL10[K]=0
        NZPL10[K]=0
        NXPL40[K]=0
        NYPL40[K]=0
        NZPL40[K]=0
        NXPL100[K]=0
        NYPL100[K]=0
        NZPL100[K]=0
        NXPL400[K]=0
        NYPL400[K]=0
        NZPL400[K]=0
        NXPL1000[K]=0
        NYPL1000[K]=0
        NZPL1000[K]=0
        NXPL4000[K]=0
        NYPL4000[K]=0
        NZPL4000[K]=0
        NXPL10000[K]=0
        NYPL10000[K]=0
        NZPL10000[K]=0
        NXPL40000[K]=0
        NYPL40000[K]=0
        NZPL40000[K]=0
        NXPL100000[K]=0
        NYPL100000[K]=0
        NZPL100000[K]=0
        NRPL2[K]=0
        NRPL10[K]=0
        NRPL40[K]=0
        NRPL100[K]=0
        NRPL400[K]=0
        NRPL1000[K]=0
        NRPL4000[K]=0
        NRPL10000[K]=0
        NRPL40000[K]=0
        NRPL100000[K]=0 #22678
    for K in range(1,100):
        NEPL1[K]=0
        NEPL10[K]=0
        NEPL100[K]=0
    for K in range(1,1000):
        MELEC[K]=0
        MELEC3[K]=0
        MELEC10[K]=0
        MELEC30[K]=0
        MELEC100[K]=0
        MELEC300[K]=0 #22689
    # C ZERO ARRAYS
    for KS in range(1,100000):
        XAV[KS]=0.0
        YAV[KS]=0.0
        ZAV[KS]=0.0
        TAV[KS]=0.0
        XYAV[KS]=0.0
        XYZAV[KS]=0.0
        DX[KS]=0.0
        DY[KS]=0.0
        DZ[KS]=0.0
        DT[KS]=0.0
        DXY[KS]=0.0
        DXYZ[KS]=0.0
        FARX1[KS]=0.0
        FARY1[KS]=0.0
        FARZ1[KS]=0.0
        FARXY1[KS]=0.0
        RMAX1[KS]=0.0
        TSUM[KS]=0.0
        XNEG[KS]=0.0
        YNEG[KS]=0.0
        ZNEG[KS]=0.0
        EDELTA[KS]=0.0
        EDELTA2[KS]=0.0
        NCL[KS]=0
        NCLEXC[KS]=0 ##22716 #22915
    # ----------------------------------------------------  
    # if NSEED = 0 : USE STANDARD SEED VALUE =54217137
    if(NSEED != 0):
        RM48(NSEED,0,0)                           
    #-----------------------------------------------      
    #
    CORR=ABZERO*TORR/(ATMOS*(ABZERO+TEMPC)*100.00)                    #check precision
    AKT=(ABZERO+TEMPC)*BOLTZ
    AN1=FRAC[1]CORR*ALOSCH                                           
    AN2=FRAC[2]CORR*ALOSCH                                           
    AN3=FRAC[3]CORR*ALOSCH                                           
    AN4=FRAC[4]CORR*ALOSCH
    AN5=FRAC[5]CORR*ALOSCH
    AN6=FRAC[6]CORR*ALOSCH                                           
    AN=float(100.00*CORR*ALOSCH)
    AN=100.00*CORR*ALOSCH                                            
    #VAN1=FRAC[1]*CORR*CONST4*1.0D15                                   
    #VAN2=FRAC[2]*CORR*CONST4*1.0D15                                   
    #VAN3=FRAC(3)*CORR*CONST4*1.0D15                                   
    #VAN4=FRAC[4]*CORR*CONST4*1.0D15
    #VAN5=FRAC[5]*CORR*CONST4*1.0D15
    #VAN6=FRAC[6]*CORR*CONST4*1.0D15                                   
    #VAN=100.00*CORR*CONST4*1.0D15
    VAN1=FRAC[1]*CORR*ALOSCH*VC                                   
    VAN2=FRAC[2]*CORR*ALOSCH*VC                                   
    VAN3=FRAC[3]*CORR*ALOSCH*VC                                  
    VAN4=FRAC[4]*CORR*ALOSCH*VC
    VAN5=FRAC[5]*CORR*ALOSCH*VC
    VAN6=FRAC[6]*CORR*ALOSCH*VC                                  
    VAN=float(100.00*CORR*ALOSCH*VC)    #22745 #22945
    # CALCULATE AND STORE ENERGY GRID FOR XRAYS BETAS OR PARTICLES

    if(EFINAL <= 20000.0):
        ESTEP=float(EFINAL/float(NSTEP))
        EHALF=float(ESTEP/2.00)
        E[1]=EHALF
        GAM[1]=(EMS+E[1])/EMS
        BET[1]=math.sqrt(1.00-1.00/(GAM[1]*GAM[1]))  #ifcontinues
        for I in range(2,20000):                      #ifcontinues
            AJ=float(I-1)
            E[I]=EHALF+ESTEP*AJ
            GAM[I]=(EMS+E[I])/EMS
            BET[I]=math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))
    else if(EFINAL > 20000.0 and EFINAL <= 140000.) :
        ESTEP=1.0
        EHALF=0.5
        E[1]=EHALF
        GAM[1]=(EMS+E[1])/EMS
        BET[1]=math.sqrt(1.00-1.00/(GAM[1]*GAM[1]))
        for i in range(2,16000):
            AJ=float(I-1)
            E[I]=EHALF+ESTEP*AJ
            GAM[I]=(EMS+E[I])/EMS
            BET[I]=math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))   #22768 #22968  
        ESTEP1=(EFINAL-16000.0)/float(4000)
        for I in range(16001,2000):
            AJ=float(I-16000)
            E[I]=16000.0+AJ*ESTEP1
            GAM[I]=(EMS+E[I])/EMS
            BET[I]=math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))
    else:
        ESTEP=1.0
        EHALF=0.5
        E[1]=EHALF
        GAM[1]=(EMS+E[1])/EMS
        BET[1]=math.sqrt(1.00-1.00/(GAM[1]*GAM[1]))
        for I in range(2,12000):
            AJ=float(I-1)
            E[I]=EHALF+ESTEP*AJ
            GAM[I]=(EMS+E[I])/EMS
            BET[I]math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))
        ESTEP1=20.0
        for I in range(12001,16000):
            AJ=float(I-12000)
            E[I]=12000.0+AJ*ESTEP1
            GAM[I]=(EMS+E[I])/EMS
            BET[I]math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))
        ESTEP2=(EFINAL-92000.0)/float(4000)
        for I in range(16001,20000):
            AJ=float(I-16000)
            E[I]=92000.0+AJ*ESTEP2
            GAM[I]=(EMS+E[I])/EMS
            BET[I]math.sqrt(1.00-1.00/(GAM[I]*GAM[I]))
    # endif
    #  RADIANS PER PICOSECOND                                        
    WB=AWB*BMAG*1.0*(10**-12 )
    #   METRES PER PICOSECOND
    if(BMAG == 0.00):
        return
    EOVB=EFIELD*1*(10**-9)/BMAG
    return
    print(' ERROR IN GAS INPUT : NGAS=',NGAS,'\n')
    for J in range(1,6):
        print(' N=',J,' NGAS=',NGASN[J],' FRAC=',FRAC[J])
    LAST=1                                                            
    return                                                            
    # end                                                               

The SETUP() function handles the gas inputs

Arguments

Argument Description
LAST 1 -> end the program
0 -> keep the Program running

Pseudo Code

Variables Description
NGAS Number of Gases
NEVENT Event Number
IMIP = 1 Mips Simulation (dE/dX, Clusters)
= 2 Electron Beam (Total Absorption)
= 3 X-ray
= 4 Beta Decay
= 5 Double Beta Decay
NDVEC = 2 Mip X-ray or Beta in Random Direction
= 1 Mip X-ray or Beta Direction Parallel to E-field (Z)
=-1 Mip X-ray or Beta Direction Anti Parallel to E-field (-z)
= 0 Mip X-ray or Beta in Random Direction in X-y Plane
NSEED = 0 Uses Standard Seed Value = 54217137
!= 0 Uses Value of NSEED as Seed Value
ESTART Starting energy of the chosen IMIP ( MIP
electron,beta Decay or X-ray Energy in eV).
Note Double Beta Decay Energy Is to Be Entered as the
Energy of Each Beta (0.5 Times Total Decay Energy)
(if X-ray Max Energy=2.0 MeV)
ETHRM Electrons Tracked Until They Fall to This Energy eV.
for Fast Calculation the Thermalisation Energy Should
Be Set to the Lowest Ionisation Potential in the Gas Mixture.
for More Accurate Thermalisation Range the Thermalisation
Energy Should Be Set to the Lowest Excitation Energy in
Pure Noble Gases or to 2.0 eV for Mixtures With Molecular Gas
ECUT For Mips only. Applies Energy Cut in eV to Give the
Maximum Allowed Primary Cluster Energy ( Should Be Set
to Less Than 10000 eV to Give Maximum Primary Cluster Size)
of Typically 400 Electrons
Variable Number of Inputs Input Type Description
NGASN 6 int Number to define which gas(between 1-80)
see Gas-List for identifying numbers
Variable Number of Inputs Input Type Description
FRAC 6 float .4f Percentage fraction of gas in mixture
TEMPC 1 float .4f Temperature of Gas in Centigrade
TORR 1 float .4f Pressure of Gas in Torr
Variable Input Type Description
EFIELD float .3f Electric Field in Volts/cm
BMAG float .3f Magnetic Field in Kilo Gauss
BTHETA float .3f Angle between electric and magnetic fields in degrees
IWRITE int = 0 Standard Output
= 1 then
Line 1: Output no. of electrons and no. of excitations
for each event
Line 2 : Output X,Y,Z and T for each thermalised electron
= 2 then
Line 1: Output no. of electrons and no. of excitations
for each event
Line 2: Outputs X,Y,Z and T for each thermalised electron
Line 3: Outputs X,Y,Z and T for each excitation
IPEN int = 0 No Penning transfers
= 1 Penning transfers allowed
Variable Input type Description
DETEFF float .3f Detection efficiency of photons. Used for calculation of
FANO factors for combined electron and photon detection
in pure noble gases (Between 0.0 - 100.0)
EXCWGHT float .3f Weight given to excitation events in FANO calculation
with respect to ionisation. Typically 0.5 - 0.6
Use weight given by SQRT((Fele)/(Fexc))
Fele = Electron FANO factor
Fexc = Electron FANO factor
KGAS int Gas identifier for which gas in mixture has Beta decayed.
Identifier Numbers : NGAS1 etc.
LGAS int If molecular gas : LGAS identifies the component atom in
the molecule which has Beta decayed :
E.g. in CO2 1=Carbon 2=Oxygen
in CF4 1=Carbon 2=Fluorine
ICMP int =0 No Compton Scattering
=1 Include Compton Scattering
IRAY int =0 No Rayleigh Scattering
=1 Include Rayleigh Scattering
IPAP int =0 No pair production
=1 Include pair production
IBRM int =0 No Bremsstrahlung
=1 Include Bremsstrahlung
IECASC int =0 Use parameterised cascade for 2nd to n^(th) generation
of electron ionising collisions.
=1 Use exact cascade for 2nd to nth generation of
electron ionising collisions.

DENSITY()

Arguments

Argument Description
NONE -

Pseudo Code

def DENSITY():
    #IMPLICIT #real*8 (A-H,O-Z)
    #IMPLICIT #integer*8 (I-N)
    global DEN #=[0 for x in range(20000)]
    global AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC #=[0 for x in range(6)]
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    global NGASN #=[0 for x in range[6]]
    global BET#=[0 for x in range(2000)]
    global GAM#=[0 for x in range(20000)]
    global VC,EMS
    ###############################################
    DEN=conf.DEN
    AN1=conf.AN1
    AN2=conf.AN2
    AN3=conf.AN3
    AN4=conf.AN4
    AN5=conf.AN5
    AN6=conf.AN6
    AN=conf.AN
    FRAC=conf.FRAC
    NGAS=conf.NGAS
    NSTEP=conf.NSTEP
    NANISO=conf.NANISO
    EFINAL=conf.EFINAL
    ESTEP=conf.ESTEP
    AKT=conf.AKT
    ARY=conf.ARY
    TEMPC=conf.TEMPC
    TORR=conf.TORR
    IPEN=conf.IPEN
    NGASN=conf.NGASN
    BET=conf.BET
    GAM=conf.GAM
    VC=conf.VC
    EMS=conf.EMS
    ###############################################
    AND=numpy.zeros(6+1)
    EIAV=numpy.zeros(80+1)
    X00=numpy.zeros(80+1)
    X11=numpy.zeros(80+1)
    AKS=numpy.zeros(80+1)
    AAA=numpy.zeros(80+1)
    JELEC=numpy.zeros(80+1)
    # DENSITY EFFECT CONSTANTS
    # EIAV ENERGY IN EV
    # JELEC NUMBER OF ELECTRONS PER ATOM OR MOLECULE
    EIAV=[0,115.0,188.0,41.8,41.8,137.0,352.0,482.0,41.7,45.4,47.1,48.3,85.0,0.0,71.6,95.0,82.0,0.0,0.0,0.0,0.0,19.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,128.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,48.3,*36*[0.0]]
    # print(len(EIAV))
    JELEC=[0,42,18,2,2,10,36,54,10,18,26,34,22,0,10,16,14,0,0,0,0,2,0,0,0,0,0,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,34]+36*[0]
    X00=[0,1.70,1.7635,2.2017,2.2017,2.0735,1.7158,1.5630,1.6263,1.5090,1.4339,1.3788,1.6294,0.0,1.7952,1.7541,1.7378,0.0,0.0,0.0,0.0,1.8639,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.3788,*36*[0.0]]
    X11=[0,4.00,4.4855,3.6122,3.6122,4.6421,5.0748,4.7371,3.9716,3.8726,3.8011,3.7524,4.1825,0.0,4.3437,4.3213,4.1323,0.0,0.0,0.0,0.0,3.2718,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.7524,*36*[0.0]]
    AKS=[0,3.00,2.9618,5.8347,5.8347,3.5771,3.4051,2.7414,3.6257,3.6095,3.5920,3.4884,3.3227,0.0,3.5901,3.2913,3.2125,0.0,0.0,0.0,0.0,5.7273,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.4884,*36*[0.0]]
    AAA=[0,.18551,.19714,.13443,.13443,.08064,.07446,.23314,.09253,0.09627,0.09916,.10852,.11768,0.0,.08101,.11778,.15349,0.0,0.0,0.0,0.0,.14092,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,.177484,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,.10852,*36*[0.0]]
    #
    API=numpy.arccos(-1.00)                                                 
    EMS=510998.9280
    RE=2.8179403267*(10**-13)
    ALPH=137.035999074
    ABZERO=273.150                                                   
    ATMOS=760.00                                                     
    #                                                                       
    # DENSITY EFFECT CALCULATION
    AND[1]=AN1
    AND[2]=AN2
    AND[3]=AN3
    AND[4]=AN4
    AND[5]=AN5
    AND[6]=AN6
    HSUM=0.0
    SUM1=0.0
    SUMDNOM=0.0
    # print(NGAS)
    for L1 in range(1,NGAS+1):
        # print("E",EIAV[int(NGASN[L1])],NGASN[L1])
        SUM1=SUM1+FRAC[L1]*float(JELEC[int(NGASN[L1])])*math.log(EIAV[int(NGASN[L1])]) 
        SUMDNOM=SUMDNOM+FRAC[L1]*float(JELEC[int(NGASN[L1])])
        HSUM=HSUM+AND[L1]*float(JELEC[int(NGASN[L1])])  #22385
    EIBAR=math.exp(SUM1/SUMDNOM)
    # PLASMA ENERGY
    HWP1=math.sqrt(4.0*API*HSUM*RE**3)*ALPH*EMS
    #
    DELDEN=math.log(EIBAR/HWP1)
    CBAR=1.0+2.0*DELDEN
    flag=0   #SELF ADDED
    if(NGAS == 1):  #22392
        flag=1
    # CALC X0 AND X1
    if(CBAR < 10.0):
        X0=1.6
        X1=4.0
    elif(CBAR >= 4.0 and CBAR < 10.5) :
        X0=1.7
        X1=4.0
    elif(CBAR >= 10.5 and CBAR < 11.0) :
        X0=1.8
        X1=4.0
    elif(CBAR >= 11.0 and CBAR < 11.5) :
        X0=1.9
        X1=4.0
    elif(CBAR >= 11.5 and CBAR < 12.25) :
        X0=2.0
        X1=4.0
    elif(CBAR >= 12.25 and CBAR < 13.804) :
        X0=2.0
        X1=5.0
    else: 
        X0=0.326*CBAR-1.5
        X1=5.0
    # endif
    if(flag==1):
        AKBAR=3.0
        ABAR=(CBAR-2.0*math.log(10.00)*X0)/((X1-X0)**3)
    elif(flag==0):
        AKBAR=AKS[int(NGASN[1])]
        X0=X00[int(NGASN[1])]
        X1=X11[int(NGASN[1])]
        ABAR=AAA[int(NGASN[1])]
    else:
        pass
    # CORRECT X0 AND X1 FOR DENSITY CHANGE FROM 20C AND 760 TORR
    # NB CORRECTION TO CBAR ALREADY DONE
    DCOR=0.5*math.log10(TORR*293.15/(760.0*(TEMPC+ABZERO)))
    X0=X0-DCOR
    X1=X1-DCOR
    # CALCULATE DENSITY CORRECTION FACTOR ARRAY DEN(20000)
    AFC=2.0*math.log(10.00)
    for I in range(1,20000+1):
        BG=BET[I]*GAM[I]
        X=math.log10(BG)
        if(X < X0):
            DEN[I]=0.0
        elif(X > X0 and X < X1) :
            DEN[I]=ABAR*math.exp(AKBAR*math.log(X1-X))+AFC*X-CBAR
        else: 
            DEN[I]=AFC*X-CBAR              
        # endif
        #     WRITE(6,99) DEN[I]
        #  99 print(' DENSITY CORRECTION=',D12.5)
    conf.DEN=DEN
    conf.AN1=AN1
    conf.AN2=AN2
    conf.AN3=AN3
    conf.AN4=AN4
    conf.AN5=AN5
    conf.AN6=AN6
    conf.AN=AN
    conf.FRAC=FRAC
    conf.NGAS=NGAS
    conf.NSTEP=NSTEP
    conf.NANISO=NANISO
    conf.EFINAL=EFINAL
    conf.ESTEP=ESTEP
    conf.AKT=AKT
    conf.ARY=ARY
    conf.TEMPC=TEMPC
    conf.TORR=TORR
    conf.IPEN=IPEN
    conf.NGASN=NGASN
    conf.BET=BET
    conf.GAM=GAM
    conf.VC=VC
    conf.EMS=EMS    
    return
    # end
      SUBROUTINE DENSITY
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/DENS/DEN(20000)
      COMMON/RATIO/AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC(6)
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/GASN/NGASN(6)
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      DIMENSION AND(6),EIAV(80),X00(80),X11(80),AKS(80),AAA(80),
     /JELEC(80)
C DENSITY EFFECT CONSTANTS
C EIAV ENERGY IN EV
C JELEC NUMBER OF ELECTRONS PER ATOM OR MOLECULE
      DATA EIAV/115.0,188.0,41.8,41.8,137.0,352.0,482.0,41.7,45.4,47.1,
     /48.3,85.0,0.0,71.6,95.0,82.0,0.0,0.0,0.0,0.0,
     /19.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,128.0,
     /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
     /0.0,0.0,0.0,48.3,
     /36*0.0/
      DATA JELEC/42,18,2,2,10,36,54,10,18,26,
     /34,22,0,10,16,14,0,0,0,0,
     /2,0,0,0,0,0,0,0,0,70,
     /0,0,0,0,0,0,0,0,0,0,
     /0,0,0,34,
     /36*0/
      DATA X00/1.70,1.7635,2.2017,2.2017,2.0735,1.7158,1.5630,1.6263,
     /1.5090,1.4339,
     /1.3788,1.6294,0.0,1.7952,1.7541,1.7378,0.0,0.0,0.0,0.0,
     /1.8639,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.6,
     /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
     /0.0,0.0,0.0,1.3788,
     /36*0.0/
      DATA X11/4.00,4.4855,3.6122,3.6122,4.6421,5.0748,4.7371,3.9716,
     /3.8726,3.8011,
     /3.7524,4.1825,0.0,4.3437,4.3213,4.1323,0.0,0.0,0.0,0.0,
     /3.2718,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,
     /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
     /0.0,0.0,0.0,3.7524,
     /36*0.0/
      DATA AKS/3.00,2.9618,5.8347,5.8347,3.5771,3.4051,2.7414,3.6257,
     /3.6095,3.5920,
     /3.4884,3.3227,0.0,3.5901,3.2913,3.2125,0.0,0.0,0.0,0.0,
     /5.7273,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,
     /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
     /0.0,0.0,0.0,3.4884,
     /36*0.0/
      DATA AAA/.18551,.19714,.13443,.13443,.08064,.07446,.23314,.09253,
     /0.09627,0.09916,
     /.10852,.11768,0.0,.08101,.11778,.15349,0.0,0.0,0.0,0.0,
     /.14092,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,.177484,
     /0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,
     /0.0,0.0,0.0,.10852,
     /36*0.0/
C
      API=DACOS(-1.0D0)                                                 
      EMS=510998.928D0
      RE=2.8179403267D-13    
      ALPH=137.035999074
      ABZERO=273.15D0                                                   
      ATMOS=760.0D0                                                     
C                                                                       
C DENSITY EFFECT CALCULATION
      AND(1)=AN1
      AND(2)=AN2
      AND(3)=AN3
      AND(4)=AN4
      AND(5)=AN5
      AND(6)=AN6
      HSUM=0.0
      SUM1=0.0
      SUMDNOM=0.0
      DO 120 L1=1,NGAS
      SUM1=SUM1+FRAC(L1)*DFLOAT(JELEC(NGASN(L1)))*DLOG(EIAV(NGASN(L1))) 
      SUMDNOM=SUMDNOM+FRAC(L1)*DFLOAT(JELEC(NGASN(L1)))
  120 HSUM=HSUM+AND(L1)*DFLOAT(JELEC(NGASN(L1)))
      EIBAR=DEXP(SUM1/SUMDNOM)
C PLASMA ENERGY
      HWP1=DSQRT(4.0*API*HSUM*RE**3)*ALPH*EMS
C
      DELDEN=DLOG(EIBAR/HWP1)
      CBAR=1.0+2.0*DELDEN
      IF(NGAS.EQ.1) GO TO 200
C CALC X0 AND X1
      IF(CBAR.LT.10.0) THEN
      X0=1.6
      X1=4.0
      ELSE IF(CBAR.GE.4.0.AND.CBAR.LT.10.5) THEN
      X0=1.7
      X1=4.0
      ELSE IF(CBAR.GE.10.5.AND.CBAR.LT.11.0) THEN
      X0=1.8
      X1=4.0
      ELSE IF(CBAR.GE.11.0.AND.CBAR.LT.11.5) THEN
      X0=1.9
      X1=4.0
      ELSE IF(CBAR.GE.11.5.AND.CBAR.LT.12.25) THEN
      X0=2.0
      X1=4.0
      ELSE IF(CBAR.GE.12.25.AND.CBAR.LT.13.804) THEN
      X0=2.0
      X1=5.0
      ELSE 
      X0=0.326*CBAR-1.5
      X1=5.0
      ENDIF
      AKBAR=3.0
      ABAR=(CBAR-2.0*DLOG(10.0D0)*X0)/((X1-X0)**3)
      GO TO 201
  200 AKBAR=AKS(NGASN(1))
      X0=X00(NGASN(1))
      X1=X11(NGASN(1))
      ABAR=AAA(NGASN(1))
  201 CONTINUE
C CORRECT X0 AND X1 FOR DENSITY CHANGE FROM 20C AND 760 TORR
C NB CORRECTION TO CBAR ALREADY DONE
      DCOR=0.5*DLOG10(TORR*293.15/(760.0*(TEMPC+ABZERO)))
      X0=X0-DCOR
      X1=X1-DCOR
C CALCULATE DENSITY CORRECTION FACTOR ARRAY DEN(20000)
      AFC=2.0*DLOG(10.0D0)
      DO 236 I=1,20000
      BG=BET(I)*GAM(I)
      X=DLOG10(BG)
      IF(X.LT.X0) THEN   
       DEN(I)=0.0
      ELSE IF(X.GT.X0.AND.X.LT.X1) THEN
       DEN(I)=ABAR*DEXP(AKBAR*DLOG(X1-X))+AFC*X-CBAR
      ELSE 
       DEN(I)=AFC*X-CBAR              
      ENDIF
C     WRITE(6,99) DEN(I)
C  99 FORMAT(' DENSITY CORRECTION=',D12.5)
  236 CONTINUE
      RETURN
      END

MIXERC()

Arguments

Argument Description
NONE -

Pseudo Code

def MIXERC():
    # IMPLICIT #real*8 (A-H,O-Z) 
    # IMPLICIT #integer*8 (I-N)
    # COMMON/INPT/
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    #COMMON/MIXC/
    # global conf.PRSH,conf.ESH,conf.AUG,conf.RAD,conf.PRSHBT,conf.IZ,conf.INIOCC,conf.ISHLMX,conf.AMZ 
    #COMMON/MIXPE/
    # global conf.XPE,conf.YPE
    #COMMON/MIXCN/
    # global conf.XCP,conf.YRY,conf.YCP,conf.YPP
    #COMMON/COMPTIN/
    # global conf.FRMFR,conf.FRMFC
    #COMMON/GASN/
    global NGASN
    PRSH1=numpy.zeros((3+1,17+1,17+1))
    PRSH2=numpy.zeros((3+1,17+1,17+1))
    PRSH3=numpy.zeros((3+1,17+1,17+1))
    PRSH4=numpy.zeros((3+1,17+1,17+1))
    PRSH5=numpy.zeros((3+1,17+1,17+1))
    PRSH6=numpy.zeros((3+1,17+1,17+1))
    PRSHBT1=numpy.zeros((3+1,17+1))
    PRSHBT2=numpy.zeros((3+1,17+1))
    PRSHBT3=numpy.zeros((3+1,17+1))
    PRSHBT4=numpy.zeros((3+1,17+1))
    PRSHBT5=numpy.zeros((3+1,17+1))
    PRSHBT6=numpy.zeros((3+1,17+1))
    ESH1=numpy.zeros((3+1,17+1))
    ESH2=numpy.zeros((3+1,17+1))
    ESH3=numpy.zeros((3+1,17+1))
    ESH4=numpy.zeros((3+1,17+1))
    ESH5=numpy.zeros((3+1,17+1))
    ESH6=numpy.zeros((3+1,17+1))
    AUG1=numpy.zeros((3+1,17+1,17+1,17+1))
    AUG2=numpy.zeros((3+1,17+1,17+1,17+1))
    AUG3=numpy.zeros((3+1,17+1,17+1,17+1))
    AUG4=numpy.zeros((3+1,17+1,17+1,17+1))
    AUG5=numpy.zeros((3+1,17+1,17+1,17+1))
    AUG6=numpy.zeros((3+1,17+1,17+1,17+1))
    RAD1=numpy.zeros((3+1,17+1,17+1))
    RAD2=numpy.zeros((3+1,17+1,17+1))
    RAD3=numpy.zeros((3+1,17+1,17+1))
    RAD4=numpy.zeros((3+1,17+1,17+1))
    RAD5=numpy.zeros((3+1,17+1,17+1))
    RAD6=numpy.zeros((3+1,17+1,17+1))
    INIOCC1=numpy.zeros((3+1,17+1))
    INIOCC2=numpy.zeros((3+1,17+1))
    INIOCC3=numpy.zeros((3+1,17+1))
    INIOCC4=numpy.zeros((3+1,17+1))
    INIOCC5=numpy.zeros((3+1,17+1))
    INIOCC6=numpy.zeros((3+1,17+1))
    XP1=numpy.zeros((3+1,17+1,60+1))
    YP1=numpy.zeros((3+1,17+1,60+1))
    XP2=numpy.zeros((3+1,17+1,60+1))
    YP2=numpy.zeros((3+1,17+1,60+1))
    XP3=numpy.zeros((3+1,17+1,60+1))
    YP3=numpy.zeros((3+1,17+1,60+1))
    XP4=numpy.zeros((3+1,17+1,60+1))
    YP4=numpy.zeros((3+1,17+1,60+1))
    XP5=numpy.zeros((3+1,17+1,60+1))
    YP5=numpy.zeros((3+1,17+1,60+1))
    XP6=numpy.zeros((3+1,17+1,60+1))
    YP6=numpy.zeros((3+1,17+1,60+1))
    XC1=numpy.zeros((3+1,54+1))
    YR1=numpy.zeros((3+1,54+1))
    YC1=numpy.zeros((3+1,54+1))
    YPP1=numpy.zeros((3+1,54+1))
    XC2=numpy.zeros((3+1,54+1))
    YR2=numpy.zeros((3+1,54+1))
    YC2=numpy.zeros((3+1,54+1))
    YPP2=numpy.zeros((3+1,54+1))
    XC3=numpy.zeros((3+1,54+1))
    YR3=numpy.zeros((3+1,54+1))
    YC3=numpy.zeros((3+1,54+1))
    YPP3=numpy.zeros((3+1,54+1))
    XC4=numpy.zeros((3+1,54+1))
    YR4=numpy.zeros((3+1,54+1))
    YC4=numpy.zeros((3+1,54+1))
    YPP4=numpy.zeros((3+1,54+1))
    XC5=numpy.zeros((3+1,54+1))
    YR5=numpy.zeros((3+1,54+1))
    YC5=numpy.zeros((3+1,54+1))
    YPP5=numpy.zeros((3+1,54+1))
    XC6=numpy.zeros((3+1,54+1))
    YR6=numpy.zeros((3+1,54+1))
    YC6=numpy.zeros((3+1,54+1))
    YPP6=numpy.zeros((3+1,54+1))
    FFAC1=numpy.zeros((3+1,45+1))
    FFAC2=numpy.zeros((3+1,45+1))
    FFAC3=numpy.zeros((3+1,45+1))
    FFAC4=numpy.zeros((3+1,45+1))
    FFAC5=numpy.zeros((3+1,45+1))
    FFAC6=numpy.zeros((3+1,45+1))
    FFAR1=numpy.zeros((3+1,45+1))
    FFAR2=numpy.zeros((3+1,45+1))
    FFAR3=numpy.zeros((3+1,45+1))
    FFAR4=numpy.zeros((3+1,45+1))
    FFAR5=numpy.zeros((3+1,45+1))
    FFAR6=numpy.zeros((3+1,45+1))
    IZ1=numpy.zeros((3+1))
    IZ2=numpy.zeros((3+1))
    IZ3=numpy.zeros((3+1))
    IZ4=numpy.zeros((3+1))
    IZ5=numpy.zeros((3+1))
    IZ6=numpy.zeros((3+1))
    AMZ1=numpy.zeros((3+1))
    AMZ2=numpy.zeros((3+1))
    AMZ3=numpy.zeros((3+1))
    AMZ4=numpy.zeros((3+1))
    AMZ5=numpy.zeros((3+1))
    AMZ6=numpy.zeros((3+1))

    # LOAD PHOTOELECTRIC AND COMPTON X-SECS
    # LOAD INITIAL SHELL OCCUPANCIES FOR EACH GAS
    # LOAD ENERGY LEVELS
    # LOAD TRANSITION PROBABILITIES AUGER AND RADIATIVE
    # LOAD SHAKE OFF PROBABILITIES AND ENERGIES
    for I in range(1,6+1):
        for M in range(1,3+1):
            conf.IZ[I][M]=0
            conf.AMZ[I][M]=0.00
            for J in range(1,17+1):
                conf.ESH[I][M][J]=0.0
                conf.INIOCC[I][M][J]=0
                conf.PRSHBT[I][M][J]=0.0
                for K in range(1,17+1):
                    conf.PRSH[I][M][J][K]=0.0
                    conf.RAD[I][M][J][K]=0.0
                    for L in range(1,17+1):
                        conf.AUG[I][M][J][K][L]=0.0
    GASMIXC(conf.NGASN[1],PRSH1,PRSHBT1,ESH1,AUG1,RAD1,XP1,YP1,XC1,YR1,YC1,YPP1,FFAR1,FFAC1,IZ1,AMZ1,INIOCC1)
    if(conf.NGAS == 1):
        pass
    else:
        GASMIXC(conf.NGASN[2],PRSH2,PRSHBT2,ESH2,AUG2,RAD2,XP2,YP2,XC2,YR2,YC2,YPP2,FFAR2,FFAC2,IZ2,AMZ2,INIOCC2)
        if(conf.NGAS == 2):
            pass
        else:
            GASMIXC(conf.NGASN[3],PRSH3,PRSHBT3,ESH3,AUG3,RAD3,XP3,YP3,XC3,YR3,YC3,YPP3,FFAR3,FFAC3,IZ3,AMZ3,INIOCC3)
            if(conf.NGAS == 3):
                pass
            else:
                GASMIXC(conf.NGASN[4],PRSH4,PRSHBT4,ESH4,AUG4,RAD4,XP4,YP4,XC4,YR4,YC4,YPP4,FFAR4,FFAC4,IZ4,AMZ4,INIOCC4)
                if(conf.NGAS == 4):
                    pass
                else:
                    GASMIXC(conf.NGASN[5],PRSH5,PRSHBT5,ESH5,AUG5,RAD5,XP5,YP5,XC5,YR5,YC5,YPP5,FFAR5,FFAC5,IZ5,AMZ5,INIOCC5)
                    if(conf.NGAS == 5):
                        pass
                    else:
                        GASMIXC(conf.NGASN[6],PRSH6,PRSHBT6,ESH6,AUG6,RAD6,XP6,YP6,XC6,YR6,YC6,YPP6,FFAR6,FFAC6,IZ6,AMZ6,INIOCC6)
                        if(conf.NGAS == 6):
                            pass
    # 10 CONTINUE
    I=1
    print(conf.XPE.shape,XP1.shape)
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ1[J1]
        conf.AMZ[I][J1]=AMZ1[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[1][J1][J][M]=XP1[J1][J][M]
                conf.YPE[1][J1][J][M]=YP1[J1][J][M]
            conf.ESH[I][J1][J]=ESH1[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC1[J1][J]
            if(INIOCC1[J1][J]!= 0):
                conf.ISHLMX[1][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT1[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH1[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD1[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG1[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[1][J][M]=XC1[J][M]
            conf.YRY[1][J][M]=YR1[J][M]
            conf.YCP[1][J][M]=YC1[J][M]
            conf.YPP[1][J][M]=YPP1[J][M]
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[1][J][K]=FFAR1[J][K]
            conf.FRMFC[1][J][K]=FFAC1[J][K]
    if(conf.NGAS == 1):
        return
    I=2
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ2[J1]
        conf.AMZ[I][J1]=AMZ2[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[2][J1][J][M]=XP2[J1][J][M]
                conf.YPE[2][J1][J][M]=YP2[J1][J][M]
            conf.ESH[I][J1][J]=ESH2[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC2[J1][J]
            if(INIOCC2[J1][J]!= 0):
                conf.ISHLMX[2][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT2[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH2[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD2[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG2[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[2][J][M]=XC2[J][M]
            conf.YRY[2][J][M]=YR2[J][M]
            conf.YCP[2][J][M]=YC2[J][M]
            conf.YPP[2][J][M]=YPP2[J][M]
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[2][J][K]=FFAR2[J][K]
            conf.FRMFC[2][J][K]=FFAC2[J][K]
    if(conf.NGAS == 2):
        return
    I=3
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ3[J1]
        conf.AMZ[I][J1]=AMZ3[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[3][J1][J][M]=XP3[J1][J][M]
                conf.YPE[3][J1][J][M]=YP3[J1][J][M]
            conf.ESH[I][J1][J]=ESH3[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC3[J1][J]
            if(INIOCC3[J1][J]!= 0):
                conf.ISHLMX[3][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT3[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH3[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD3[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG3[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[3][J][M]=XC3[J][M]
            conf.YRY[3][J][M]=YR3[J][M]
            conf.YCP[3][J][M]=YC3[J][M]
            conf.YPP[3][J][M]=YPP3[J][M]
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[3][J][K]=FFAR3[J][K]
            conf.FRMFC[3][J][K]=FFAC3[J][K]
    if(conf.NGAS == 3):
        return
    I=4
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ4[J1]
        conf.AMZ[I][J1]=AMZ4[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[4][J1][J][M]=XP4[J1][J][M]
                conf.YPE[4][J1][J][M]=YP4[J1][J][M]
            conf.ESH[I][J1][J]=ESH4[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC4[J1][J]
            if(INIOCC4[J1][J]!= 0):
                conf.ISHLMX[4][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT4[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH4[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD4[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG4[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[4][J][M]=XC4[J][M]
            conf.YRY[4][J][M]=YR4[J][M]
            conf.YCP[4][J][M]=YC4[J][M]
            conf.YPP[4][J][M]=YPP4[J][M]
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[4][J][K]=FFAR4[J][K]
            conf.FRMFC[4][J][K]=FFAC4[J][K]
    if(conf.NGAS == 4):
        return
    I=5
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ5[J1]
        conf.AMZ[I][J1]=AMZ5[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[5][J1][J][M]=XP5[J1][J][M]
                conf.YPE[5][J1][J][M]=YP5[J1][J][M]
            conf.ESH[I][J1][J]=ESH5[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC5[J1][J]
            if(INIOCC5[J1][J]!= 0):
                conf.ISHLMX[5][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT5[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH5[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD5[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG5[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[5][J][M]=XC5[J][M]
            conf.YRY[5][J][M]=YR5[J][M]
            conf.YCP[5][J][M]=YC5[J][M]
            conf.YPP[5][J][M]=YPP5[J][M] 
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[5][J][K]=FFAR5[J][K]
            conf.FRMFC[5][J][K]=FFAC5[J][K]
    if(conf.NGAS == 5):
        return
    I=6
    for J1 in range(1,3+1):
        conf.IZ[I][J1]=IZ6[J1]
        conf.AMZ[I][J1]=AMZ6[J1]
        for J in range(1,17+1):
            for M in range(1,60+1):
                conf.XPE[6][J1][J][M]=XP6[J1][J][M]
                conf.YPE[6][J1][J][M]=YP6[J1][J][M]
            conf.ESH[I][J1][J]=ESH6[J1][J]
            conf.INIOCC[I][J1][J]=INIOCC6[J1][J]
            if(INIOCC6[J1][J]!= 0):
                conf.ISHLMX[6][J1]=J
            conf.PRSHBT[I][J1][J]=PRSHBT6[J1][J]
            for K in range(1,17+1):
                conf.PRSH[I][J1][J][K]=PRSH6[J1][J][K]
                conf.RAD[I,J1,J,K]=RAD6[J1][J][K]
                for L in range(1,17+1):
                    conf.AUG[I][J1][J][K][L]=AUG6[J1][J][K][L]
    for J in range(1,3+1):
        for M in range(1,54+1):
            conf.XCP[6][J][M]=XC6[J][M]
            conf.YRY[6][J][M]=YR6[J][M]
            conf.YCP[6][J][M]=YC6[J][M]
            conf.YPP[6][J][M]=YPP6[J][M]
    for J in range(1,3+1):
        for K in range(1,45+1):
            conf.FRMFR[6][J][K]=FFAR6[J][K]
            conf.FRMFC[6][J][K]=FFAC6[J][K]
    if(conf.NGAS > 6):
        print(' subroutine STOPPED: NGAS=',conf.NGAS,' IN MIXERC')
        sys.exit()
    # endif
    # 1000 CONTINUE
    return
    # end
      SUBROUTINE MIXERC 
      IMPLICIT REAL*8 (A-H,O-Z) 
      IMPLICIT INTEGER*8 (I-N)
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3) 
      COMMON/MIXPE/XPE(6,3,17,60),YPE(6,3,17,60)
      COMMON/MIXCN/XCP(6,3,54),YRY(6,3,54),YCP(6,3,54),YPP(6,3,54)
      COMMON/COMPTIN/FRMFR(6,3,45),FRMFC(6,3,45)
      COMMON/GASN/NGASN(6)
      DIMENSION PRSH1(3,17,17),PRSH2(3,17,17),PRSH3(3,17,17),
     /PRSH4(3,17,17),PRSH5(3,17,17),PRSH6(3,17,17)
      DIMENSION PRSHBT1(3,17),PRSHBT2(3,17),PRSHBT3(3,17),PRSHBT4(3,17),
     /PRSHBT5(3,17),PRSHBT6(3,17)
      DIMENSION ESH1(3,17),ESH2(3,17),ESH3(3,17),ESH4(3,17),ESH5(3,17),
     /ESH6(3,17)
      DIMENSION AUG1(3,17,17,17),AUG2(3,17,17,17),AUG3(3,17,17,17),
     /AUG4(3,17,17,17),AUG5(3,17,17,17),AUG6(3,17,17,17)
      DIMENSION RAD1(3,17,17),RAD2(3,17,17),RAD3(3,17,17),RAD4(3,17,17),
     /RAD5(3,17,17),RAD6(3,17,17)
      DIMENSION INIOCC1(3,17),INIOCC2(3,17),INIOCC3(3,17),INIOCC4(3,17),
     /INIOCC5(3,17),INIOCC6(3,17)
      DIMENSION XP1(3,17,60),YP1(3,17,60),XP2(3,17,60),YP2(3,17,60),
     /XP3(3,17,60),YP3(3,17,60),XP4(3,17,60),YP4(3,17,60),
     /XP5(3,17,60),YP5(3,17,60),XP6(3,17,60),YP6(3,17,60)
      DIMENSION XC1(3,54),YR1(3,54),YC1(3,54),YPP1(3,54),
     /XC2(3,54),YR2(3,54),YC2(3,54),YPP2(3,54),
     /XC3(3,54),YR3(3,54),YC3(3,54),YPP3(3,54),
     /XC4(3,54),YR4(3,54),YC4(3,54),YPP4(3,54),
     /XC5(3,54),YR5(3,54),YC5(3,54),YPP5(3,54),
     /XC6(3,54),YR6(3,54),YC6(3,54),YPP6(3,54)
      DIMENSION FFAC1(3,45),FFAC2(3,45),FFAC3(3,45),FFAC4(3,45),
     /FFAC5(3,45),FFAC6(3,45)
      DIMENSION FFAR1(3,45),FFAR2(3,45),FFAR3(3,45),FFAR4(3,45),
     /FFAR5(3,45),FFAR6(3,45)
      DIMENSION IZ1(3),IZ2(3),IZ3(3),IZ4(3),IZ5(3),IZ6(3)
      DIMENSION AMZ1(3),AMZ2(3),AMZ3(3),AMZ4(3),AMZ5(3),AMZ6(3)
C LOAD PHOTOELECTRIC AND COMPTON X-SECS
C LOAD INITIAL SHELL OCCUPANCIES FOR EACH GAS
C LOAD ENERGY LEVELS
C LOAD TRANSITION PROBABILITIES AUGER AND RADIATIVE
C LOAD SHAKE OFF PROBABILITIES AND ENERGIES
      DO 1 I=1,6
      DO 1 M=1,3
      IZ(I,M)=0
      AMZ(I,M)=0.0D0
      DO 1 J=1,17
      ESH(I,M,J)=0.0
      INIOCC(I,M,J)=0
      PRSHBT(I,M,J)=0.0
      DO 1 K=1,17
      PRSH(I,M,J,K)=0.0
      RAD(I,M,J,K)=0.0
      DO 1 L=1,17
      AUG(I,M,J,K,L)=0.0
    1 CONTINUE  
      CALL GASMIXC(NGASN(1),PRSH1,PRSHBT1,ESH1,AUG1,RAD1,XP1,YP1,XC1,
     /YR1,YC1,YPP1,FFAR1,FFAC1,IZ1,AMZ1,INIOCC1)
      IF(NGAS.EQ.1) GO TO 10
      CALL GASMIXC(NGASN(2),PRSH2,PRSHBT2,ESH2,AUG2,RAD2,XP2,YP2,XC2,
     /YR2,YC2,YPP2,FFAR2,FFAC2,IZ2,AMZ2,INIOCC2)
      IF(NGAS.EQ.2) GO TO 10
      CALL GASMIXC(NGASN(3),PRSH3,PRSHBT3,ESH3,AUG3,RAD3,XP3,YP3,XC3,
     /YR3,YC3,YPP3,FFAR3,FFAC3,IZ3,AMZ3,INIOCC3)
      IF(NGAS.EQ.3) GO TO 10
      CALL GASMIXC(NGASN(4),PRSH4,PRSHBT4,ESH4,AUG4,RAD4,XP4,YP4,XC4,
     /YR4,YC4,YPP4,FFAR4,FFAC4,IZ4,AMZ4,INIOCC4)
      IF(NGAS.EQ.4) GO TO 10
      CALL GASMIXC(NGASN(5),PRSH5,PRSHBT5,ESH5,AUG5,RAD5,XP5,YP5,XC5,
     /YR5,YC5,YPP5,FFAR5,FFAC5,IZ5,AMZ5,INIOCC5)
      IF(NGAS.EQ.5) GO TO 10
      CALL GASMIXC(NGASN(6),PRSH6,PRSHBT6,ESH6,AUG6,RAD6,XP6,YP6,XC6,
     /YR6,YC6,YPP6,FFAR6,FFAC6,IZ6,AMZ6,INIOCC6)
      IF(NGAS.EQ.6) GO TO 10
   10 CONTINUE
      I=1
      DO 30 J1=1,3
      IZ(I,J1)=IZ1(J1)
      AMZ(I,J1)=AMZ1(J1)
      DO 30 J=1,17
      DO 20 M=1,60
      XPE(1,J1,J,M)=XP1(J1,J,M)
      YPE(1,J1,J,M)=YP1(J1,J,M)
   20 CONTINUE
      ESH(I,J1,J)=ESH1(J1,J)
      INIOCC(I,J1,J)=INIOCC1(J1,J)
      IF(INIOCC1(J1,J).NE.0) ISHLMX(1,J1)=J
      PRSHBT(I,J1,J)=PRSHBT1(J1,J)
      DO 30 K=1,17
      PRSH(I,J1,J,K)=PRSH1(J1,J,K)
      RAD(I,J1,J,K)=RAD1(J1,J,K)
      DO 30 L=1,17
      AUG(I,J1,J,K,L)=AUG1(J1,J,K,L)
   30 CONTINUE
      DO 35 J=1,3
      DO 35 M=1,54
      XCP(1,J,M)=XC1(J,M)
      YRY(1,J,M)=YR1(J,M)
      YCP(1,J,M)=YC1(J,M)
      YPP(1,J,M)=YPP1(J,M)
   35 CONTINUE
      DO 40 J=1,3
      DO 40 K=1,45
      FRMFR(1,J,K)=FFAR1(J,K)
   40 FRMFC(1,J,K)=FFAC1(J,K)
      IF(NGAS.EQ.1) GO TO 1000
      I=2
      DO 60 J1=1,3
      IZ(I,J1)=IZ2(J1)
      AMZ(I,J1)=AMZ2(J1)
      DO 60 J=1,17
      DO 50 M=1,60
      XPE(2,J1,J,M)=XP2(J1,J,M)
      YPE(2,J1,J,M)=YP2(J1,J,M)
   50 CONTINUE
      ESH(I,J1,J)=ESH2(J1,J)
      INIOCC(I,J1,J)=INIOCC2(J1,J)
      IF(INIOCC2(J1,J).NE.0) ISHLMX(2,J1)=J
      PRSHBT(I,J1,J)=PRSHBT2(J1,J)
      DO 60 K=1,17
      PRSH(I,J1,J,K)=PRSH2(J1,J,K)
      RAD(I,J1,J,K)=RAD2(J1,J,K)
      DO 60 L=1,17
      AUG(I,J1,J,K,L)=AUG2(J1,J,K,L)
   60 CONTINUE
      DO 65 J=1,3
      DO 65 M=1,54
      XCP(2,J,M)=XC2(J,M)
      YRY(2,J,M)=YR2(J,M)
      YCP(2,J,M)=YC2(J,M)
      YPP(2,J,M)=YPP2(J,M)
   65 CONTINUE
      DO 70 J=1,3
      DO 70 K=1,45
      FRMFR(2,J,K)=FFAR2(J,K)
   70 FRMFC(2,J,K)=FFAC2(J,K)
      IF(NGAS.EQ.2) GO TO 1000
      I=3
      DO 90 J1=1,3
      IZ(I,J1)=IZ3(J1)
      AMZ(I,J1)=AMZ3(J1)
      DO 90 J=1,17
      DO 80 M=1,60
      XPE(3,J1,J,M)=XP3(J1,J,M)
      YPE(3,J1,J,M)=YP3(J1,J,M)
   80 CONTINUE
      ESH(I,J1,J)=ESH3(J1,J)
      INIOCC(I,J1,J)=INIOCC3(J1,J)
      IF(INIOCC3(J1,J).NE.0) ISHLMX(3,J1)=J
      PRSHBT(I,J1,J)=PRSHBT3(J1,J)
      DO 90 K=1,17
      PRSH(I,J1,J,K)=PRSH3(J1,J,K)
      RAD(I,J1,J,K)=RAD3(J1,J,K)
      DO 90 L=1,17
      AUG(I,J1,J,K,L)=AUG3(J1,J,K,L)
   90 CONTINUE
      DO 95 J=1,3
      DO 95 M=1,54
      XCP(3,J,M)=XC3(J,M)
      YRY(3,J,M)=YR3(J,M)
      YCP(3,J,M)=YC3(J,M)
      YPP(3,J,M)=YPP3(J,M)
   95 CONTINUE
      DO 100 J=1,3
      DO 100 K=1,45
      FRMFR(3,J,K)=FFAR3(J,K)
  100 FRMFC(3,J,K)=FFAC3(J,K)
      IF(NGAS.EQ.3) GO TO 1000
      I=4
      DO 120 J1=1,3
      IZ(I,J1)=IZ4(J1)
      AMZ(I,J1)=AMZ4(J1)
      DO 120 J=1,17
      DO 110 M=1,60
      XPE(4,J1,J,M)=XP4(J1,J,M)
      YPE(4,J1,J,M)=YP4(J1,J,M)
  110 CONTINUE
      ESH(I,J1,J)=ESH4(J1,J)
      INIOCC(I,J1,J)=INIOCC4(J1,J)
      IF(INIOCC4(J1,J).NE.0) ISHLMX(4,J1)=J
      PRSHBT(I,J1,J)=PRSHBT4(J1,J)
      DO 120 K=1,17
      PRSH(I,J1,J,K)=PRSH4(J1,J,K)
      RAD(I,J1,J,K)=RAD4(J1,J,K)
      DO 120 L=1,17
      AUG(I,J1,J,K,L)=AUG4(J1,J,K,L)
  120 CONTINUE
      DO 125 J=1,3
      DO 125 M=1,54
      XCP(4,J,M)=XC4(J,M)
      YRY(4,J,M)=YR4(J,M)
      YCP(4,J,M)=YC4(J,M)
      YPP(4,J,M)=YPP4(J,M)
  125 CONTINUE
      DO 130 J=1,3
      DO 130 K=1,45
      FRMFR(4,J,K)=FFAR4(J,K)
  130 FRMFC(4,J,K)=FFAC4(J,K)
      IF(NGAS.EQ.4) GO TO 1000
      I=5
      DO 150 J1=1,3
      IZ(I,J1)=IZ5(J1)
      AMZ(I,J1)=AMZ5(J1)
      DO 150 J=1,17
      DO 140 M=1,60
      XPE(5,J1,J,M)=XP5(J1,J,M)
      YPE(5,J1,J,M)=YP5(J1,J,M)
  140 CONTINUE
      ESH(I,J1,J)=ESH5(J1,J)
      INIOCC(I,J1,J)=INIOCC5(J1,J)
      IF(INIOCC5(J1,J).NE.0) ISHLMX(5,J1)=J
      PRSHBT(I,J1,J)=PRSHBT5(J1,J)
      DO 150 K=1,17
      PRSH(I,J1,J,K)=PRSH5(J1,J,K)
      RAD(I,J1,J,K)=RAD5(J1,J,K)
      DO 150 L=1,17
      AUG(I,J1,J,K,L)=AUG5(J1,J,K,L)
  150 CONTINUE
      DO 155 J=1,3
      DO 155 M=1,54
      XCP(5,J,M)=XC5(J,M)
      YRY(5,J,M)=YR5(J,M)
      YCP(5,J,M)=YC5(J,M)
      YPP(5,J,M)=YPP5(J,M) 
  155 CONTINUE
      DO 160 J=1,3
      DO 160 K=1,45
      FRMFR(5,J,K)=FFAR5(J,K)
  160 FRMFC(5,J,K)=FFAC5(J,K)
      IF(NGAS.EQ.5) GO TO 1000
      I=6
      DO 180 J1=1,3
      IZ(I,J1)=IZ6(J1)
      AMZ(I,J1)=AMZ6(J1)
      DO 180 J=1,17
      DO 170 M=1,60
      XPE(6,J1,J,M)=XP6(J1,J,M)
      YPE(6,J1,J,M)=YP6(J1,J,M)
  170 CONTINUE
      ESH(I,J1,J)=ESH6(J1,J)
      INIOCC(I,J1,J)=INIOCC6(J1,J)
      IF(INIOCC6(J1,J).NE.0) ISHLMX(6,J1)=J
      PRSHBT(I,J1,J)=PRSHBT6(J1,J)
      DO 180 K=1,17
      PRSH(I,J1,J,K)=PRSH6(J1,J,K)
      RAD(I,J1,J,K)=RAD6(J1,J,K)
      DO 180 L=1,17
      AUG(I,J1,J,K,L)=AUG6(J1,J,K,L)
  180 CONTINUE 
      DO 185 J=1,3
      DO 185 M=1,54
      XCP(6,J,M)=XC6(J,M)
      YRY(6,J,M)=YR6(J,M)
      YCP(6,J,M)=YC6(J,M)
      YPP(6,J,M)=YPP6(J,M)
  185 CONTINUE
      DO 190 J=1,3
      DO 190 K=1,45
      FRMFR(6,J,K)=FFAR6(J,K)
  190 FRMFC(6,J,K)=FFAC6(J,K)
      IF(NGAS.GT.6) THEN
       WRITE(6,99) NGAS
   99 FORMAT(' PROGRAM STOPPED NGAS=',I3,' IN MIXERC')
       STOP
      ENDIF
 1000 CONTINUE
      RETURN
      END

CASCDAT():

Arguments

Argument Description
NONE -
def CASCDAT():
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # CHARACTER*6 SCRPT(17),SCRPT1(17),SCR(17),SCR1(17)
    SCRPT=numpy.zeros(17+1,dtype=str)
    SCRPT1=numpy.zeros(17+1,dtype=str)
    # SCR(17),SCR1(17)
    # COMMON/GENCAS/
    # global 
    ELEV=conf.ELEV
    NSDEG=conf.NSDEG
    AA=conf.AA
    BB=conf.BB
    SCR=conf.SCR
    SCR1=conf.SCR1
    NSD=numpy.zeros(17+1)   
    # GENERAL ATOMIC DATA
    # adding an extra elemnt in front of arrays to maintain the indexing
    NSD=[0]+[2,2,2,4,2,2,4,4,6,2,2,4,4,6,2,2,4]
    SCRPT=[0]+[' K  ',' L1 ',' L2 ',' L3 ',' M1',' M2 ',' M3 ',' M4 ',' M5 ',' N1 ',' N2 ',' N3 ',' N4 ',' N5 ',' O1 ',' O2 ',' O3 ']
    SCRPT1=[0]+[' 1s ',' 2s ',' 2p1/2',' 2p3/2',' 3s ',' 3p1/2',' 3p3/2',' 3d3/2',' 3d5/2',' 4s ',' 4p1/2',' 4p3/2',' 4d3/2',' 4d5/2',' 5s ',' 5p1/2',' 5p3/2']
    AA=[0]+[0.0,0.0,0.25,0.25,0.0,0.25,0.25,0.50,0.50,0.0,0.25,0.25,0.50,0.50,0.0,0.25,0.25]
    BB=[0]+[1.5,1.5,1.25,1.25,1.5,1.25,1.25,0.75,0.75,1.5,1.25,1.25,0.75,0.75,1.5,1.25,1.25]
    ELEV=[13.598]+16*[0.0]+[24.587]+16*[0.0]+[54.7,5.4]+15*[0.0]+[111.5,9.3]+15*[0.0]+[188.0,12.6,4.70]+14*[0.0]+[
    # CARBON
    284.2,18.0,6.40]+14*[0.0]+[401.6,24.4,14.534,14.524]+13*[0.0]+[532.0,28.5,13.618,13.618]+13*[0.0]+[685.4,34.0,16.000,16.000]+13*[0.0]+[
    # NEON
    870.2,48.475,21.661,21.565]+13*[0.0]+[1070.8,63.5,30.65,30.81,5.1]+12*[0.0]+[1303.0,88.7,49.78,49.50,7.6]+12*[0.0]+[1559.6,117.8,72.95,72.55,10.6,6.0]+11*[0.0]+[1839.0,149.7,99.82,99.42,13.5,8.1]+11*[0.0]+[2145.5,189.0,136.0,135.0,16.1,10.5]+11*[0.0]+[2472.0,230.9,163.6,162.5,20.2,10.4]+11*[0.0]+[2822.4,270.0,202.0,200.0,24.5,12.9]+11*[0.0]+[
    # ARGON
    3205.9,326.3,250.6,248.4,29.239,15.937,15.760]+10*[0.0]+[3608.4,378.6,297.3,294.6,34.8,18.3,18.2]+10*[0.0]+[4038.5,438.4,349.7,346.2,44.3,25.4,25.3]+10*[0.0]+[4492.0,498.0,403.6,398.7,51.1,28.3,28.2]+10*[0.0]+[4966.0,560.9,460.2,453.8,58.7,32.6,32.5]+10*[0.0]+[5465.0,626.7,519.8,512.1,66.3,37.2,37.1]+10*[0.0]+[5989.0,696.0,583.8,574.1,74.1,42.2,42.1]+10*[0.0]+[6539.0,769.1,649.9,638.7,82.3,47.2,47.1]+10*[0.0]+[7112.0,844.6,719.9,706.8,91.3,52.7,52.6]+10*[0.0]+[7709.0,925.1,793.2,778.1,101.0,59.8,58.9]+10*[0.0]+[8333.0,1008.6,870.0,852.7,110.8,68.0,66.2]+10*[0.0]+[8979.0,1096.7,952.3,932.7,122.5,77.3,75.1]+10*[0.0]+[9659.0,1196.2,1044.9,1021.8,139.8,91.4,88.6,10.2,10.1]+8*[0.0]+[
    # Z=31
    10367.,1299.0,1143.2,1116.4,159.5,103.5,100.0,18.7,18.6]+8*[0.0]+[11103.,1414.6,1248.1,1217.0,180.1,124.9,120.8,29.8,29.2,14.3,7.9]+6*[0.0]+[11867.,1527.0,1359.1,1323.6,204.7,146.2,141.2,41.7,41.7,17.0,9.8]+6*[0.0]+[12658.,1652.0,1474.3,1433.9,229.6,166.5,160.7,55.5,54.6,20.1,9.8]+6*[0.0]+[13474.,1782.0,1596.0,1550.0,257.0,189.0,182.0,70.0,69.0,23.8,11.8]+6*[0.0]+[
    # KR
    14327.26,1921.0,1730.9,1678.4,292.8,222.2,214.4,95.0,93.8,27.5,14.666,13.9996]+5*[0.0]+[15200.,2065.,1864.0,1804.0,326.7,248.7,239.1,113.0,112.,30.5,16.3,15.3]+5*[0.0]+[16105.,2216.,2007.,1940.0,358.7,280.3,270.0,136.0,134.2,38.9,21.3,20.1]+5*[0.0]+[17038.,2373.,2156.,2080.0,392.0,310.6,298.8,157.7,155.8,43.8,24.4,23.1]+5*[0.0]+[17998.,2532.,2307.,2223.0,430.3,343.5,329.8,181.1,178.8,50.6,28.5,27.1]+5*[0.0]+[
    # Z=41
    18986.,2698.,2465.,2371.0,466.6,376.1,360.6,205.0,202.3,56.4,32.6,30.8]+5*[0.0]+[20000.,2866.,2625.,2520.0,506.3,411.6,394.0,231.1,227.9,63.2,37.6,35.5]+5*[0.0]+[21044.,3043.,2793.,2677.0,544.0,447.6,417.7,257.6,253.9,69.5,42.3,39.9]+5*[0.0]+[22117.,3224.,2967.,2838.0,586.1,483.5,461.4,284.2,280.0,75.0,46.3,43.2]+5*[0.0]+[23220.,3412.,3146.,3004.0,628.1,521.3,496.5,311.9,307.2,81.4,50.5,47.3]+5*[0.0]+[24350.,3604.,3330.,3173.0,671.6,559.9,532.3,340.5,335.2,87.1,55.7,50.9]+5*[0.0]+[25514.,3806.,3524.,3351.0,719.0,603.8,573.0,374.0,368.3,97.0,63.7,58.3]+5*[0.0]+[26711.,4018.,3727.,3538.,772.0,652.6,618.4,411.9,405.2,109.8,63.9,63.8,11.7,10.7]+3*[0.0]+[27940.,4238.,3938.,3730.,827.2,703.2,665.3,451.4,443.9,122.9,73.6,73.5,17.7,16.9]+3*[0.0]+[29200.,4465.,4156.,3929.,884.7,756.5,714.6,493.2,484.9,137.1,83.6,83.5,24.9,23.9]+3*[0.0]+[
    # Z=51
    30491.,4698.,4380.,4132.,946.0,812.7,766.4,537.5,528.2,153.2,95.6,95.5,33.3,32.1]+3*[0.0]+[31814.,4939.,4612.,4341.,1006.,870.8,820.0,583.4,573.,169.4,103.3,103.2,41.9,40.4]+3*[0.0]+[33169.,5188.,4852.,4557.,1072.,931.0,875.0,630.8,619.3,186.,123.0,122.9,50.6,48.9]+3*[0.0]+[
    # XE
    34561.,5453.,5107.,4786.,1148.7,1002.1,940.6,689.0,676.4,213.2,146.7,145.5,69.5,67.5,23.3,13.43,12.129843,35985.,5714.,5359.,5012.,1211.,1071.0,1003.0,740.5,726.6,232.3,172.4,161.3,79.8,77.5,23.7,14.2,12.6,37441.,5989.,5624.,5247.,1293.,1137.0,1063.0,795.7,780.5,253.5,192.0,178.6,92.6,89.9,30.3,17.0,14.8,38925.,6266.,5891.,5483.,1362.,1209.0,1128.0,853.0,836.0,274.7,205.8,196.0,105.3,102.5,34.3,19.3,16.8,40443.,6549.,6164.,5723.,1436.,1274.0,1187.0,902.4,883.8,291.0,223.2,206.5,109.0,107.0,37.2,19.8,17.0,41991.,6835.,6440.,5964.,1511.,1337.0,1242.0,948.3,928.8,304.5,236.3,217.6,115.1,115.0,37.4,21.0,20.9,43569.,7126.,6722.,6208.,1575.,1403.,1297.0,1003.3,980.4,319.2,243.3,224.6,120.5,120.4,37.5,21.1,21.0,
    # Z=61
    45184.,7428.,7013.,6459.,1650.,1471.,1357.,1052.0,1027.0,332.0,251.,231.,124.,123.,37.6,21.4,21.3,46834.,7737.,7312.,6716.,1723.,1541.,1420.,1110.9,1083.4,347.2,265.6,247.4,128.,127.,37.7,21.4,21.3,48519.,8052.,7617.,6977.,1800.,1614.,1481.,1158.6,1127.5,360.0,284.0,257.0,132.,127.7,37.8,22.0,21.9,50239.,8376.,7930.,7243.,1881.,1688.,1544.,1221.9,1189.6,378.6,286.0,271.0,143.,142.6,36.0,28.0,22.0,51996.,8708.,8252.,7514.,1968.,1768.,1611.,1276.9,1241.1,396.0,322.4,284.1,150.5,150.4,45.6,28.7,22.6,53789.,9046.,8581.,7790.,2047.,1842.,1676.,1333.,1292.6,414.2,333.5,293.2,153.6,153.5,48.9,29.5,23.3,55618.,9394.,8918.,8071.,2128.,1923.,1741.,1392.,1351.,432.4,343.5,308.2,160.1,160.0,49.3,30.8,24.1,57486.,9751.,9264.,8358.,2207.,2006.,1812.,1453.,1409.,449.8,366.2,320.2,167.6,167.5,50.6,31.4,24.7,59390.,10116.,9617.,8648.,2307.,2090.,1885.,1515.,1468.,470.9,385.9,332.6,175.5,175.4,54.7,31.8,25.0,61332.,10486.,9978.,8944.,2398.,2173.,1950.,1576.,1528.,480.5,388.7,339.7,191.2,182.4,55.0,32.5,25.8,
    # Z=71
    63314.,10870.,10349.,9244.,2491.,2264.,2024.,1639.,1589.,506.8,412.4,359.2,206.1,196.3,57.3,33.6,26.7,65351.,11271.,10739.,9561.,2601.,2365.,2108.,1716.,1662.,538.0,438.2,380.7,220.0,211.5,64.2,38.0,29.9,67416.,11682.,11136.,9881.,2708.,2469.,2194.,1793.,1735.,563.4,463.4,400.9,237.9,226.4,69.7,42.2,32.7,69525.,12100.,11544.,10207.,2820.,2575.,2281.,1872.,1809.,594.1,490.4,423.6,255.9,243.5,75.6,45.3,36.8,71676.,12527.,11959.,10535.,2932.,2682.,2367.,1949.,1883.,625.4,518.7,446.8,273.9,260.5,83.0,45.6,38.0,73871.,12968.,12385.,10871.,3049.,2792.,2457.,2031.,1960.,658.2,549.1,470.7,293.1,278.5,84.0,58.0,45.0,76111.,13419.,12824.,11215.,3174.,2909.,2551.,2116.,2040.,691.1,577.8,495.8,311.9,296.3,95.2,63.0,49.0,78395.,13880.,13273.,11564.,3296.,3027.,2645.,2202.,2122.,725.4,609.1,519.4,331.6,314.6,101.7,65.3,52.0,80725.,14353.,13734.,11919.,3425.,3148.,2743.,2291.,2206.,762.1,642.7,546.3,353.2,335.1,107.2,74.2,57.2]
    ELEV=numpy.reshape(ELEV,(17,79))    
    ELEV=numpy.r_[[numpy.zeros(ELEV.shape[1])],ELEV]
    ELEV=numpy.c_[numpy.zeros(ELEV.shape[0]),ELEV]

    # LOAD GENERAL DATA FOR CASCADE CALCULATIONS
    for I in range(1,17+1):
        NSDEG[I]=NSD[I]
        SCR[I]=SCRPT[I]
        SCR1[I]=SCRPT1[I]
        for J in range(1,79+1):
            ELEV[I][J]=ELEV[I][J]
    conf.ELEV=ELEV
    conf.NSDEG=NSDEG
    conf.AA=AA
    conf.BB=BB
    conf.SCR=SCR
    conf.SCR1=SCR1
    return 
    # end
      SUBROUTINE CASCDAT
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      CHARACTER*6 SCRPT(17),SCRPT1(17),SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      DIMENSION NSD(17)

C GENERAL ATOMIC DATA
      DATA NSD/2,2,2,4,2,2,4,4,6,2,2,4,4,6,2,2,4/
      DATA SCRPT/' K  ',' L1 ',' L2 ',' L3 ',' M1',' M2 ',' M3 ',' M4 ',
     /' M5 ',' N1 ',' N2 ',' N3 ',' N4 ',' N5 ',' O1 ',' O2 ',' O3 '/
      DATA SCRPT1/' 1s ',' 2s ',' 2p1/2',' 2p3/2',' 3s ',' 3p1/2',' 3p3/
     /2',' 3d3/2',' 3d5/2',' 4s ',' 4p1/2',' 4p3/2',' 4d3/2',' 4d5/2',' 
     /5s ',' 5p1/2',' 5p3/2'/
      DATA AA/0.0,0.0,0.25,0.25,0.0,0.25,0.25,0.50,0.50,0.0,0.25,0.25,
     /0.50,0.50,0.0,0.25,0.25/
      DATA BB/1.5,1.5,1.25,1.25,1.5,1.25,1.25,0.75,0.75,1.5,1.25,1.25,
     /0.75,0.75,1.5,1.25,1.25/
      DATA ELEV/13.598,16*0.0,24.587,16*0.0,54.7,5.4,15*0.0,
     /111.5,9.3,15*0.0,
     /188.0,12.6,4.70,14*0.0,
C CARBON
     /284.2,18.0,6.40,14*0.0,
     /401.6,24.4,14.534,14.524,13*0.0,
     /532.0,28.5,13.618,13.618,13*0.0,
     /685.4,34.0,16.000,16.000,13*0.0,
C NEON
     /870.2,48.475,21.661,21.565,13*0.0,
     /1070.8,63.5,30.65,30.81,5.1,12*0.0,
     /1303.0,88.7,49.78,49.50,7.6,12*0.0,
     /1559.6,117.8,72.95,72.55,10.6,6.0,11*0.0,
     /1839.0,149.7,99.82,99.42,13.5,8.1,11*0.0,
     /2145.5,189.0,136.0,135.0,16.1,10.5,11*0.0,
     /2472.0,230.9,163.6,162.5,20.2,10.4,11*0.0,
     /2822.4,270.0,202.0,200.0,24.5,12.9,11*0.0,
C ARGON
     /3205.9,326.3,250.6,248.4,29.239,15.937,15.760,10*0.0,
     /3608.4,378.6,297.3,294.6,34.8,18.3,18.2,10*0.0,
     /4038.5,438.4,349.7,346.2,44.3,25.4,25.3,10*0.0,
     /4492.0,498.0,403.6,398.7,51.1,28.3,28.2,10*0.0,
     /4966.0,560.9,460.2,453.8,58.7,32.6,32.5,10*0.0,
     /5465.0,626.7,519.8,512.1,66.3,37.2,37.1,10*0.0,
     /5989.0,696.0,583.8,574.1,74.1,42.2,42.1,10*0.0,
     /6539.0,769.1,649.9,638.7,82.3,47.2,47.1,10*0.0,
     /7112.0,844.6,719.9,706.8,91.3,52.7,52.6,10*0.0,
     /7709.0,925.1,793.2,778.1,101.0,59.8,58.9,10*0.0,
     /8333.0,1008.6,870.0,852.7,110.8,68.0,66.2,10*0.0,
     /8979.0,1096.7,952.3,932.7,122.5,77.3,75.1,10*0.0,
     /9659.0,1196.2,1044.9,1021.8,139.8,91.4,88.6,10.2,10.1,8*0.0,
C Z=31
     /10367.,1299.0,1143.2,1116.4,159.5,103.5,100.0,18.7,18.6,8*0.0,
     /11103.,1414.6,1248.1,1217.0,180.1,124.9,120.8,29.8,29.2,14.3,7.9,
     /6*0.0,
     /11867.,1527.0,1359.1,1323.6,204.7,146.2,141.2,41.7,41.7,17.0,9.8,
     /6*0.0,
     /12658.,1652.0,1474.3,1433.9,229.6,166.5,160.7,55.5,54.6,20.1,9.8,
     /6*0.0,
     /13474.,1782.0,1596.0,1550.0,257.0,189.0,182.0,70.0,69.0,23.8,11.8,
     /6*0.0,
C KR
     /14327.26,1921.0,1730.9,1678.4,292.8,222.2,214.4,95.0,93.8,27.5,
     /14.666,13.9996,5*0.0,
     /15200.,2065.,1864.0,1804.0,326.7,248.7,239.1,113.0,112.,30.5,16.3,
     /15.3,5*0.0,
     /16105.,2216.,2007.,1940.0,358.7,280.3,270.0,136.0,134.2,38.9,21.3,
     /20.1,5*0.0,
     /17038.,2373.,2156.,2080.0,392.0,310.6,298.8,157.7,155.8,43.8,24.4,
     /23.1,5*0.0,
     /17998.,2532.,2307.,2223.0,430.3,343.5,329.8,181.1,178.8,50.6,28.5,
     /27.1,5*0.0,
C Z=41
     /18986.,2698.,2465.,2371.0,466.6,376.1,360.6,205.0,202.3,56.4,32.6,
     /30.8,5*0.0,
     /20000.,2866.,2625.,2520.0,506.3,411.6,394.0,231.1,227.9,63.2,37.6,
     /35.5,5*0.0,
     /21044.,3043.,2793.,2677.0,544.0,447.6,417.7,257.6,253.9,69.5,42.3,
     /39.9,5*0.0,
     /22117.,3224.,2967.,2838.0,586.1,483.5,461.4,284.2,280.0,75.0,46.3,
     /43.2,5*0.0,
     /23220.,3412.,3146.,3004.0,628.1,521.3,496.5,311.9,307.2,81.4,50.5,
     /47.3,5*0.0,
     /24350.,3604.,3330.,3173.0,671.6,559.9,532.3,340.5,335.2,87.1,55.7,
     /50.9,5*0.0,
     /25514.,3806.,3524.,3351.0,719.0,603.8,573.0,374.0,368.3,97.0,63.7,
     /58.3,5*0.0,
     /26711.,4018.,3727.,3538.,772.0,652.6,618.4,411.9,405.2,109.8,63.9,
     /63.8,11.7,10.7,3*0.0,
     /27940.,4238.,3938.,3730.,827.2,703.2,665.3,451.4,443.9,122.9,73.6,
     /73.5,17.7,16.9,3*0.0,
     /29200.,4465.,4156.,3929.,884.7,756.5,714.6,493.2,484.9,137.1,83.6,
     /83.5,24.9,23.9,3*0.0,
C Z=51
     /30491.,4698.,4380.,4132.,946.0,812.7,766.4,537.5,528.2,153.2,95.6,
     /95.5,33.3,32.1,3*0.0,
     /31814.,4939.,4612.,4341.,1006.,870.8,820.0,583.4,573.,169.4,103.3,
     /103.2,41.9,40.4,3*0.0,
     /33169.,5188.,4852.,4557.,1072.,931.0,875.0,630.8,619.3,186.,123.0,
     /122.9,50.6,48.9,3*0.0,
C XE
     /34561.,5453.,5107.,4786.,1148.7,1002.1,940.6,689.0,676.4,213.2,
     /146.7,145.5,69.5,67.5,23.3,13.43,12.129843,
     /35985.,5714.,5359.,5012.,1211.,1071.0,1003.0,740.5,726.6,232.3,
     /172.4,161.3,79.8,77.5,23.7,14.2,12.6,
     /37441.,5989.,5624.,5247.,1293.,1137.0,1063.0,795.7,780.5,253.5,
     /192.0,178.6,92.6,89.9,30.3,17.0,14.8,
     /38925.,6266.,5891.,5483.,1362.,1209.0,1128.0,853.0,836.0,274.7,
     /205.8,196.0,105.3,102.5,34.3,19.3,16.8,
     /40443.,6549.,6164.,5723.,1436.,1274.0,1187.0,902.4,883.8,291.0,
     /223.2,206.5,109.0,107.0,37.2,19.8,17.0,
     /41991.,6835.,6440.,5964.,1511.,1337.0,1242.0,948.3,928.8,304.5,
     /236.3,217.6,115.1,115.0,37.4,21.0,20.9,
     /43569.,7126.,6722.,6208.,1575.,1403.,1297.0,1003.3,980.4,319.2,
     /243.3,224.6,120.5,120.4,37.5,21.1,21.0,
C Z=61
     /45184.,7428.,7013.,6459.,1650.,1471.,1357.,1052.0,1027.0,332.0,
     /251.,231.,124.,123.,37.6,21.4,21.3,
     /46834.,7737.,7312.,6716.,1723.,1541.,1420.,1110.9,1083.4,347.2,
     /265.6,247.4,128.,127.,37.7,21.4,21.3,
     /48519.,8052.,7617.,6977.,1800.,1614.,1481.,1158.6,1127.5,360.0,
     /284.0,257.0,132.,127.7,37.8,22.0,21.9,
     /50239.,8376.,7930.,7243.,1881.,1688.,1544.,1221.9,1189.6,378.6,
     /286.0,271.0,143.,142.6,36.0,28.0,22.0,
     /51996.,8708.,8252.,7514.,1968.,1768.,1611.,1276.9,1241.1,396.0,
     /322.4,284.1,150.5,150.4,45.6,28.7,22.6,
     /53789.,9046.,8581.,7790.,2047.,1842.,1676.,1333.,1292.6,414.2,
     /333.5,293.2,153.6,153.5,48.9,29.5,23.3,
     /55618.,9394.,8918.,8071.,2128.,1923.,1741.,1392.,1351.,432.4,
     /343.5,308.2,160.1,160.0,49.3,30.8,24.1,
     /57486.,9751.,9264.,8358.,2207.,2006.,1812.,1453.,1409.,449.8,
     /366.2,320.2,167.6,167.5,50.6,31.4,24.7,
     /59390.,10116.,9617.,8648.,2307.,2090.,1885.,1515.,1468.,470.9,
     /385.9,332.6,175.5,175.4,54.7,31.8,25.0,
     /61332.,10486.,9978.,8944.,2398.,2173.,1950.,1576.,1528.,480.5,
     /388.7,339.7,191.2,182.4,55.0,32.5,25.8,
C Z=71
     /63314.,10870.,10349.,9244.,2491.,2264.,2024.,1639.,1589.,506.8,
     /412.4,359.2,206.1,196.3,57.3,33.6,26.7,
     /65351.,11271.,10739.,9561.,2601.,2365.,2108.,1716.,1662.,538.0,
     /438.2,380.7,220.0,211.5,64.2,38.0,29.9,
     /67416.,11682.,11136.,9881.,2708.,2469.,2194.,1793.,1735.,563.4,
     /463.4,400.9,237.9,226.4,69.7,42.2,32.7,
     /69525.,12100.,11544.,10207.,2820.,2575.,2281.,1872.,1809.,594.1,
     /490.4,423.6,255.9,243.5,75.6,45.3,36.8,
     /71676.,12527.,11959.,10535.,2932.,2682.,2367.,1949.,1883.,625.4,
     /518.7,446.8,273.9,260.5,83.0,45.6,38.0,
     /73871.,12968.,12385.,10871.,3049.,2792.,2457.,2031.,1960.,658.2,
     /549.1,470.7,293.1,278.5,84.0,58.0,45.0,
     /76111.,13419.,12824.,11215.,3174.,2909.,2551.,2116.,2040.,691.1,
     /577.8,495.8,311.9,296.3,95.2,63.0,49.0,
     /78395.,13880.,13273.,11564.,3296.,3027.,2645.,2202.,2122.,725.4,
     /609.1,519.4,331.6,314.6,101.7,65.3,52.0,
     /80725.,14353.,13734.,11919.,3425.,3148.,2743.,2291.,2206.,762.1,
     /642.7,546.3,353.2,335.1,107.2,74.2,57.2/
C LOAD GENERAL DATA FOR CASCADE CALCULATIONS
      DO 1 I=1,17
      NSDEG(I)=NSD(I)
      SCR(I)=SCRPT(I)
      SCR1(I)=SCRPT1(I)
      PRINT *
      DO 1 J=1,79
    1 ELEV(I,J)=ELEV(I,J)
      RETURN 
      END

GASMIX()

Arguments

Argument Description
NGS Gas identifier
Q
QIN
NIN
E
EI
NAME
VIRL Virial
EB
PEQEL
PEQIN
PENFRA
KEL
KIN
QION
PEQION
EION
NION
QATT
NATT
QNULL
NNULL
SCLN
NC0
EC0
WK
EFL
NG1
EG1
NG2
EG2
IZBR
LEGAS
IESHELL
IONMODEL
ESPLIT
SCRPT
SCRPTN
def GASMIX(NGS,Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
    #IMPLICIT #real*8 (A-H,O-Z) 
    # CHARACTER*25 
    NAME=numpy.zeros(25+1,dtype=str)
    # CHARACTER*50 
    SCRPT=numpy.zeros(300+1,dtype=str)
    SCRPTN=numpy.zeros(10+1,dtype=str)                       
    E=numpy.zeros((6+1))
    EI=numpy.zeros((250+1))
    KIN=numpy.zeros((250+1))
    Q=numpy.zeros((6+1,20000+1))
    QIN=numpy.zeros((250+1,20000+1))
    EION=numpy.zeros((30+1))
    EB=numpy.zeros((30+1))   
    QION=numpy.zeros((30+1,20000+1))      
    PEQION=numpy.zeros((30+1,20000+1))
    PEQEL=numpy.zeros((6+1,20000+1))
    PEQIN=numpy.zeros((250+1,20000+1))
    KEL=numpy.zeros((6+1))
    PENFRA=numpy.zeros((3+1,250+1))
    NC0=numpy.zeros((30+1))
    EC0=numpy.zeros((30+1))
    WK=numpy.zeros((30+1))
    EFL=numpy.zeros((30+1))
    NG1=numpy.zeros((30+1))
    EG1=numpy.zeros((30+1))
    NG2=numpy.zeros((30+1))
    EG2=numpy.zeros((30+1))
    IZBR=numpy.zeros((250+1))
    LEGAS=numpy.zeros((30+1))
    IESHELL=numpy.zeros((30+1))
    QATT=numpy.zeros((8+1,20000+1))
    QNULL=numpy.zeros((10+1,20000+1))
    SCLN=numpy.zeros((10+1))
    ESPLIT=numpy.zeros((5+1,20+1))
    # 
    #GO TO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80) NGS

    if(NGS==1):
        NATT=GAS1(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        print(type(NATT))
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT
    if(NGS==2):
        Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT=GAS2(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        # print(GAS2(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN))
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT
    if(NGS==3):
        GAS3(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return  Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if(NGS==4):
        GAS4(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT   
    if (NGS==5):
        GAS5(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==6):
        GAS6(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==7):
        GAS7(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==8):
        GAS8(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==9):
        GAS9(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==10):
        GAS10(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==11):
        GAS11(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT  
    if (NGS==12):
        Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT=GAS12(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        # print(GAS12(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN))
        print("GASMIX gas12 natt type=",type(NATT))
        return Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT
    if (NGS==13):
        GAS13(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==14):
        GAS14(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==15):
        GAS15(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==16):
        GAS16(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==17):
        GAS17(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==18):
        GAS18(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==19):
        GAS19(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==20):
        GAS20(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==21):
        GAS21(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==22):
        GAS22(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==23):
        GAS23(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==24):
        GAS24(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==25):
        GAS25(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==26):
        GAS26(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==27):
        GAS27(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==28):
        GAS28(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==29):
        GAS29(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KQION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==30):
        GAS30(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==31):
        GAS31(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==32):
        GAS32(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==33):
        GAS33(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==34):
        GAS34(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==35):
        GAS35(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==36):
        GAS36(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==37):
        GAS37(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==38):
        GAS38(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==39):
        GAS39(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==40):
        GAS40(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==41):
        GAS41(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==42):
        GAS42(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==43):
        GAS43(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==44):
        GAS44(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==45):
        GAS45(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==46):
        GAS46(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==47):
        GAS47(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==48):
        GAS48(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==49):
        GAS49(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==50):
        GAS50(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==51):
        GAS51(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==52):
        GAS52(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==53):
        GAS53(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==54):
        GAS54(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==55):
        GAS55(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==56):
        GAS56(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==57):
        GAS57(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==58):
        GAS58(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==59):
        GAS59(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==60):
        GAS60(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==61):
        GAS61(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==62):
        GAS62(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==63):
        GAS63(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==64):
        GAS64(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==65):
        GAS65(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==66):
        GAS66(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==67):
        GAS67(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==68):
        GAS68(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==69):
        GAS69(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==70):
        GAS70(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==71):
        GAS71(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==72):
        GAS72(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==73):
        GAS73(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==74):
        GAS74(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==75):
        GAS75(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==76):
        GAS76(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==77):
        GAS77(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==78):
        GAS78(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==79):
        GAS79(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
    if (NGS==80):
        GAS80(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
        return   
      # end 
      SUBROUTINE GASMIX(NGS,Q,QIN,NIN,E,EI,NAME,VIRL,EB,
     /PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,
     /QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,
     /IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      IMPLICIT REAL*8 (A-H,O-Z) 
      IMPLICIT INTEGER*8 (I-N)
      CHARACTER*25 NAME       
      CHARACTER*50 SCRPT(300),SCRPTN(10)                       
      DIMENSION Q(6,20000),QIN(250,20000),E(6),EI(250),KIN(250)  
      DIMENSION QION(30,20000),PEQION(30,20000),EION(30),EB(30)         
      DIMENSION PEQEL(6,20000),PEQIN(250,20000),KEL(6),PENFRA(3,250)
      DIMENSION NC0(30),EC0(30),WK(30),EFL(30),NG1(30),EG1(30),
     /NG2(30),EG2(30),IZBR(250),LEGAS(30),IESHELL(30)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN(10),ESPLIT(5,20) 
C 
      PRINT *,E(I)
      WRITE(6,4556)
 4556 FORMAT('GASMIX############################################')                                                                      

      GO TO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
     /21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,
     /41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,    
     /61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80) NGS
    1 CALL GAS1(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    2 CALL GAS2(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    3 CALL GAS3(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    4 CALL GAS4(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    5 CALL GAS5(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    6 CALL GAS6(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    7 CALL GAS7(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    8 CALL GAS8(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
    9 CALL GAS9(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   10 CALL GAS10(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   11 CALL GAS11(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   12 CALL GAS12(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   13 CALL GAS13(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   14 CALL GAS14(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   15 CALL GAS15(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   16 CALL GAS16(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   17 CALL GAS17(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   18 CALL GAS18(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   19 CALL GAS19(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   20 CALL GAS20(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   21 CALL GAS21(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   22 CALL GAS22(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   23 CALL GAS23(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   24 CALL GAS24(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   25 CALL GAS25(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   26 CALL GAS26(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   27 CALL GAS27(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   28 CALL GAS28(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   29 CALL GAS29(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   30 CALL GAS30(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   31 CALL GAS31(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   32 CALL GAS32(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   33 CALL GAS33(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   34 CALL GAS34(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   35 CALL GAS35(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   36 CALL GAS36(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   37 CALL GAS37(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   38 CALL GAS38(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   39 CALL GAS39(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   40 CALL GAS40(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   41 CALL GAS41(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   42 CALL GAS42(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   43 CALL GAS43(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   44 CALL GAS44(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   45 CALL GAS45(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   46 CALL GAS46(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   47 CALL GAS47(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   48 CALL GAS48(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   49 CALL GAS49(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   50 CALL GAS50(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   51 CALL GAS51(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   52 CALL GAS52(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   53 CALL GAS53(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   54 CALL GAS54(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   55 CALL GAS55(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   56 CALL GAS56(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   57 CALL GAS57(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   58 CALL GAS58(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   59 CALL GAS59(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   60 CALL GAS60(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   61 CALL GAS61(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   62 CALL GAS62(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   63 CALL GAS63(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   64 CALL GAS64(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   65 CALL GAS65(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   66 CALL GAS66(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   67 CALL GAS67(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   68 CALL GAS68(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   69 CALL GAS69(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   70 CALL GAS70(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   71 CALL GAS71(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   72 CALL GAS72(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   73 CALL GAS73(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   74 CALL GAS74(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   75 CALL GAS75(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   76 CALL GAS76(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   77 CALL GAS77(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   78 CALL GAS78(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   79 CALL GAS79(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
   80 CALL GAS80(Q,QIN,NIN,E,EI,NAME,VIRL,EB,PEQEL,PEQIN,PENFRA,KEL,KIN,
     /QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WK,EFL,
     /NG1,EG1,NG2,EG2,IZBR,LEGAS,IESHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      RETURN   
      END 

FLDIST()

Arguments

Argument Description
NONE -
      SUBROUTINE FLDIST
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),EFL(512)
C CALCULATE FLUORESCENCE AVERAGE ABSORPTION DISTANCE AND LOAD INTO ARRAY
      ! PRINT *,"INSIDE FLDIST"
      ! CALL SLEEP(2)
      DO 1 I=1,512
      EPH=EFL(I)
      ! PRINT *,EPH
      IF(EPH.EQ.0.0) GO TO 1
      JF=3
      ! PRINT *,IDUM
      ! PAUSE 1
      CALL ABSO(JF,EPH,IDUM,KDUM,LDUM,DIST)
      EFL(I)=DIST
    1 CONTINUE
      RETURN
      END
def FLDIST():
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONFL/
    global NC0#(512)
    global EC0#(512)
    global NG1#(512)
    global EG1#(512)
    global NG2#(512)
    global EG2#(512)
    global WKLM#(512)
    global EFL#(512)    
    NC0=conf.NC0
    EC0=conf.EC0
    NG1=conf.NG1
    EG1=conf.EG1
    NG2=conf.NG2
    EG2=conf.EG2
    WKLM=conf.WKLM
    EFL=conf.EFL
    # CALCULATE FLUORESCENCE AVERAGE ABSORPTION DISTANCE AND LOAD INTO ARRAY
    for I in range(1,512+1):
        EPH=EFL[I]
        if(EPH == 0.0):
            continue
        JF=3
        ABSO(JF,EPH,IDUM,KDUM,LDUM,DIST)
        EFL[I]=DIST

    conf.NC0=NC0
    conf.EC0=EC0
    conf.NG1=NG1
    conf.EG1=EG1
    conf.NG2=NG2
    conf.EG2=EG2
    conf.WKLM=WKLM
    conf.EFL=EFL
    return
    # end

ABSO()

Arguments

Argument Description
JF
EPH For photon energy calculates interaction distance
with Gas identity, KGAS.
If compton rayleigh or pair production allowed
then calculates KGAS, LGAS
ISHELL Absorption Shell
KGAS Gas Identity
LGAS
DIST Absorption distance per event in metres

Pseudo Code

def ABSO(JF,EPH,ISHELL,KGAS,LGAS,DIST):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    def get_globals():
        #COMMON/RATIO/
        AN1=conf.AN1
        AN2=conf.AN2
        AN3=conf.AN3
        AN4=conf.AN4
        AN5=conf.AN5
        AN6=conf.AN6
        AN=conf.AN
        FRAC=conf.FRAC#(6)  
        #COMMON/COMP/=conf.#COMMON/COMP/
        LCMP=conf.LCMP
        LCFLG=conf.LCFLG
        LRAY=conf.LRAY
        LRFLG=conf.LRFLG
        LPAP=conf.LPAP
        LPFLG=conf.LPFLG
        LBRM=conf.LBRM
        LBFLG=conf.LBFLG
        LPEFLG=conf.LPEFLG
        #COMMON/ABBS/=conf.#COMMON/ABBS/
        ABSXRAY=conf.ABSXRAY             
        #COMMON/INPT/=conf.#COMMON/INPT/
        NGAS=conf.NGAS
        NSTEP=conf.NSTEP
        NANISO=conf.NANISO
        EFINAL=conf.EFINAL
        ESTEP=conf.ESTEP
        AKT=conf.AKT
        ARY=conf.ARY
        TEMPC=conf.TEMPC
        TORR=conf.TORR
        IPEN=conf.IPEN
        #COMMON/MIXC/=conf.#COMMON/MIXC/
        PRS=conf.PRSH#(6,3,17,17)
        ESH=conf.ESH#(6,3,17)
        AUG17=conf.AUG#(6,3,17,17,17)
        RAD=conf.RAD#(6,3,17,17)
        PRSHBT=conf.PRSHBT#(6,3,17)
        IZ=conf.IZ#(6,3)
        INIOCC=conf.INIOCC#(6,3,17)
        ISHLMX=conf.ISHLMX#(6,3)
        AMZ=conf.AMZ#(6,3)
        #COMMON/MIXPE/=conf.#COMMON/MIXPE/
        XPE=conf.XPE#(6,3,17,60)
        YPE=conf.YPE#(6,3,17,60)
        #COMMON/MIXCN/=conf.#COMMON/MIXCN/
        XEN=conf.XEN#(6,3,54)
        YRY=conf.YRY#(6,3,54)
        YCP=conf.YCP#(6,3,54)
        YPP=conf.YPP#(6,3,54)
        globals().update(locals())
    get_globals()
    # DIMENSION 
    XSEC=numpy.zeros((306+1))
    XSECC=numpy.zeros((18+1))
    XSECR=numpy.zeros((18+1))
    XSECP=numpy.zeros((18+1))
    ANGAS=numpy.zeros((6+1))
    ABSL=numpy.zeros((306+1))
    ABSLC=numpy.zeros((18+1))
    ABSLR=numpy.zeros((18+1))
    ABSLP=numpy.zeros((18+1))
    XSUM=numpy.zeros((360+1))
    def update_globals():
        conf.AN1=AN1
        conf.AN2=AN2
        conf.AN3=AN3
        conf.AN4=AN4
        conf.AN5=AN5
        conf.AN6=AN6
        conf.AN=AN
        conf.FRAC=FRAC
        conf.LCMP=LCMP
        conf.LCFLG=LCFLG
        conf.LRAY=LRAY
        conf.LRFLG=LRFLG
        conf.LPAP=LPAP
        conf.LPFLG=LPFLG
        conf.LBRM=LBRM
        conf.LBFLG=LBFLG
        conf.LPEFLG=LPEFLG
        conf.ABSXRAY=ABSXRAY
        conf.NGAS=NGAS
        conf.NSTEP=NSTEP
        conf.NANISO=NANISO
        conf.EFINAL=EFINAL
        conf.ESTEP=ESTEP
        conf.AKT=AKT
        conf.ARY=ARY
        conf.TEMPC=TEMPC
        conf.TORR=TORR
        conf.IPEN=IPEN
        conf.PRSH=PRS
        conf.ESH=ESH
        conf.AUG=AUG17
        conf.RAD=RAD
        conf.PRSHBT=PRSHBT
        conf.IZ=IZ
        conf.INIOCC=INIOCC
        conf.ISHLMX=ISHLMX
        conf.AMZ=AMZ
        conf.XPE=XPE
        conf.YPE=YPE
        conf.XEN=XEN
        conf.YRY=YRY
        conf.YCP=YCP
        conf.YPP=YPP
    #******************************************************************
    # FOR PHOTON ENERGY EPH CALCULATES INTERACTION DISTANCE WITH
    #  GAS IDENTITY,KGAS . IF MOLECULAR GAS ALSO IDENTIFIES THE 
    #  ATOMIC COMPONENT OF THE MOLECULE  LGAS. 
    #  IF PHOTOELECTRIC ABSORPTION CALCULATES ABSORPTION SHELL, ISHELL
    # AND SETS PHOTOELECTRIC FLAG,LPEFLG=1. 
    # IF COMPTON RAYLEIGH OR PAIR PRODUCTION ALLOWED : CALCULATES
    # KGAS , LGAS AND SETS COMPTON RAYLEIGH OR PAIR PRODUCTION FLAGS.
    #****************************************************************** 
    ANGAS[1]=AN1
    ANGAS[2]=AN2
    ANGAS[3]=AN3
    ANGAS[4]=AN4
    ANGAS[5]=AN5
    ANGAS[6]=AN6
    LCFLG=0
    LRFLG=0
    LPFLG=0
    LPEFLG=0
    # CALCULATE PE X-SECTION FOR EACH GAS AND FIND ABS LENGTH 
    EPHLG=math.log(EPH)
    IPT=0
    for I in range(1,NGAS+1):
        for J1 in range(1,3+1):
            for J in range(1,17+1):
                IPT=IPT+1
                XSEC[IPT]=0.0
                ABSL[IPT]=0.0
                if(J > ISHLMX(I,J1)):
                    # GO TO 1
                    continue
                if(EPHLG < XPE[I][J1][J][1]):
                    # GO TO 1
                    continue
                for K in range(2,60+1):
                    if(EPHLG <= XPE[I][J1][J][K]) :
                        A=(YPE[I][J1][J][K]-YPE[I][J1][J][K-1])/(XPE[I][J1][J][K]-XPE[I][J1][J][K-1])
                        B=(XPE[I][J1][J][K-1]*YPE[I][J1][J][K]-XPE[I][J1][J][K]*YPE[I][J1][J][K-1])/(XPE[I][J1][J][K-1]-XPE[I][J1][J][K])
                        XSEC[IPT]=math.exp(A*EPHLG+B)
                        ABSL[IPT]=XSEC[IPT]*ANGAS[I]
                        break
                    # endif
    # CALCULATE COMPTON X-SECTION FOR EACH GAS AND FIND ABS LENGTH
    IPT=0
    for I in range(1,NGAS+1):
        for J1 in range(1,3+1):
            IPT=IPT+1
            XSECC[IPT]=0.0
            ABSLC[IPT]=0.0
            # USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
            if(JF == 3 or JF == 2):
                # GO TO 30
                continue
            # ONLY USE PE X-SECTION
            if(LCMP != 1):
                # GO TO 30
                continue
            if(EPHLG < XEN[I][J1][1]):
                # GO TO 30
                continue
            for K in range(2,54+1):
                if(EPHLG <= XEN[I][J1][K]) :
                    A=(YCP[I][J1][K]-YCP[I][J1][K-1])/(XEN[I][J1][K]-XEN[I][J1][K-1])
                    B=(XEN[I][J1][K-1]*YCP[I][J1][K]-XEN[I][J1][K]*YCP[I][J1][K-1])/(XEN[I][J1][K-1]-XEN[I][J1][K])
                    XSECC[IPT]=math.exp(A*EPHLG+B)
                    ABSLC[IPT]=XSECC[IPT]*ANGAS[I]
                    # GO TO 30 
                    break
                # endif
            # 30 CONTINUE
    # CALCULATE RAYLEIGH X-SECTION FOR EACH GAS AND FIND ABS LENGTH
    IPT=0
    for I in range(1,NGAS+1):
        for J1 in range(1,3+1):
            IPT=IPT+1
            XSECR[IPT]=0.0
            ABSLR[IPT]=0.0
            # USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
            if(JF == 3 or JF == 2):
                # GO TO 40
                continue
            if(LRAY != 1):
                # GO TO 40
                continue
            if(EPHLG < XEN[I][J1][1]):
                # GO TO 40
                continue
            for K in range(2,54+1):
                if(EPHLG <= XEN[I][J1][K]) :
                    A=(YRY[I][J1][K]-YRY[I][J1][K-1])/(XEN[I][J1][K]-XEN[I][J1][K-1])
                    B=(XEN[I][J1][K-1]*YRY[I][J1][K]-XEN[I][J1][K]*YRY[I][J1][K-1])/(XEN[I][J1][K-1]-XEN[I][J1][K])
                    XSECR[IPT]=math.exp(A*EPHLG+B)
                    ABSLR[IPT]=XSECR[IPT]*ANGAS[I]
                    # GO TO 40
                    break
                # endif
            # 40 CONTINUE   
    # CALCULATE PAIR PRODUCTION X-SECTION FOR EACH GAS AND FIND ABS LENGTH 
    IPT=0
    for I in range(1,NGAS+1):
        for J1 in range(1,3+1):
            IPT=IPT+1
            XSECP[IPT]=0.0
            ABSLP[IPT]=0.0
            # USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
            if(JF == 3 or JF == 2):
                # GO TO 50
                continue
            if(LPAP != 1):
                # GO TO 50
                continue
            if(EPHLG < XEN[I][J1][1]):
                # GO TO 50
                continue
            for K in range(2,54+1):
                if(EPHLG <= XEN[I][J1][K]) :
                    A=(YPP[I][J1][K]-YPP[I][J1][K-1])/(XEN[I][J1][K]-XEN[I][J1][K-1])
                    B=(XEN[I][J1][K-1]*YPP[I][J1][K]-XEN[I][J1][K]*YPP[I][J1][K-1])/(XEN[I][J1][K-1]-XEN[I][J1][K])
                    XSECP[IPT]=math.exp(A*EPHLG+B)
                    ABSLP[IPT]=XSECP[IPT]*ANGAS[I]
                    # GO TO 50
                    break
                # endif
                # 49 CONTINUE
            # 50 CONTINUE   
    # FORM CUMULATIVE SUMS 
    IFIN=NGAS*17*3
    for J in range(2,IFIN+1):
        XSEC[J]=XSEC[J]+XSEC[J-1]
        ABSL[J]=ABSL[J]+ABSL[J-1]
    IFINR=NGAS*3
    for J in range(2,IFINR+1):
        XSECC[J]=XSECC[J]+XSECC[J-1]
        ABSLC[J]=ABSLC[J]+ABSLC[J-1]
        XSECR[J]=XSECR[J]+XSECR[J-1]
        ABSLR[J]=ABSLR[J]+ABSLR[J-1]
        XSECP[J]=XSECP[J]+XSECP[J-1]
        ABSLP[J]=ABSLP[J]+ABSLP[J-1]
    # TOTAL X-SECTION
    XSECT=XSEC[IFIN]+XSECC[IFINR]+XSECR[IFINR]+XSECP[IFINR]
    # TOTAL ABS LENGTH
    ABSTOT=ABSL[IFIN]+ABSLR[IFINR]+ABSLC[IFINR]+ABSLP[IFINR]
    # CALCULATE ABSORPTION DISTANCE IN METRES AND RETURN
    if(JF == 3):
        DIST=1.0/(ABSTOT*100.0)
        return
    # endif
    # CALCULATE ABSORPTION DISTANCE IN MICRONS
    if(JF == -1):
        if(ABSTOT > 0.0):
            ABSXRAY=1.0e4/ABSTOT
        if(ABSTOT == 0.0):
            ABSXRAY=1.0e15
        return
    # endif
    if(ABSTOT == 0.0):
        # PHOTON TOO LOW ENERGY TO IONISE SET ISHELL=-1
        ISHELL=-1
        return
    # endif
    # NORMALISE TO 1 
    for J in range(1,IFIN+1):
        XSEC[J]=XSEC[J]/XSECT
    for J in range(1,IFINR+1):
        XSECC[J]=XSECC[J]/XSECT
        XSECR[J]=XSECR[J]/XSECT
        XSECP[J]=XSECP[J]/XSECT
    # FORM SUM X-SECTION FOR SAMPLING ARRAY 
    # P.E.
    for J in range(1,IFIN+1):
        XSUM[J]=XSEC[J]
    IEND=IFIN
    if(LCMP != 1):
        # GO TO 145 
        pass
    else:
        # COMPTON
        ISTART=IFIN+1
        IEND=IFIN+IFINR
        for J in range(ISTART,IEND+1):
            XSUM[J]=XSUM[ISTART-1]+XSECC[J-ISTART+1] 
    # 145 
    if(LRAY != 1):
        # GO TO 155
        pass
    else:
        # RAYLEIGH
        if(LCMP == 0):
            ISTART=IFIN+1
            IEND=IFIN+IFINR
        elif(LCMP == 1) :
            ISTART=IFIN+IFINR+1
            IEND=IFIN+IFINR+IFINR
        # endif
        for J in range(ISTART,IEND+1):
            XSUM[J]=XSUM[ISTART-1]+XSECR[J-ISTART+1]
    # 155 
    if(LPAP != 1):
        # GO TO 165
        pass
    else:
        # PAIR PRODUCTION
        if(LCMP == 0 and LRAY == 0):
            ISTART=IFIN+1
            IEND=IFIN+IFINR
        elif(LCMP == 0 and LRAY == 1) :
            ISTART=IFIN+IFINR+1
            IEND=IFIN+IFINR+IFINR
        elif(LCMP == 1 and LRAY == 0) :
            ISTART=IFIN+IFINR+1
            IEND=IFIN+IFINR+IFINR
        elif(LCMP == 1 and LRAY == 1) :
            ISTART=IFIN+IFINR+IFINR+1
            IEND=ISTART+IFINR+IFINR+IFINR
        else: 
            print(' ERROR IN FUNCTION ABSO FLAG NOT CORRECT')
            sys.exit()
        # endif
        for J in range(ISTART,IEND+1):
            XSUM[J]=XSUM[ISTART-1]+XSECP[J-ISTART+1]
    # 165 CONTINUE 
    # FIND GAS AND SHELL
    R1=DRAND48(RDUM)
    for J in range(1,IEND+1):
        if(XSUM[J]< R1):
            # GO TO 4
            continue
        ID=J
        # GO TO 5
        break
    # 4 CONTINUE
    # LOCATE GAS AND SHELL
    # 5 
    flag200=0
    IPET=NGAS*3*17
    if(ID > IPET):
        # GO TO 22
        pass
    else:
        # PHOTO ELECTRIC
        LPEFLG=1
        if(ID <= 51):
            KGAS=1
            if(ID <= 17):
                LGAS=1
                ISHELL=ID
            elif(ID <= 34) :
                LGAS=2
                ISHELL=ID-17
            else:
                LGAS=3
                ISHELL=ID-34
            # endif
            # GO TO 12      
        elif(ID <= 102) :
            KGAS=2
            if(ID <= 68):
                LGAS=1
                ISHELL=ID-51
            elif(ID <= 85) :
                LGAS=2
                ISHELL=ID-68
            else:
                LGAS=3
                ISHELL=ID-85
            # endif
            # GO TO 12
        elif(ID <= 153) :
            KGAS=3
            if(ID <= 119):
                LGAS=1
                ISHELL=ID-102
            elif(ID <= 136) :
                LGAS=2
                ISHELL=ID-119
            else:
                LGAS=3
                ISHELL=ID-136
            # endif
            # GO TO 12
        elif(ID <= 204) :
            KGAS=4
            if(ID <= 170):
                LGAS=1
                ISHELL=ID-153
            elif(ID <= 187) :
                LGAS=2
                ISHELL=ID-170
            else:
                LGAS=3
                ISHELL=ID-187
            # endif
            # GO TO 12
        elif(ID <= 255) :
            KGAS=5
            if(ID <= 221):
                LGAS=1
                ISHELL=ID-204
            elif(ID <= 238) :
                LGAS=2
                ISHELL=ID-221
            else:
                LGAS=3
                ISHELL=ID-238
            # endif
            # GO TO 12
        else: 
            KGAS=6
            if(ID <= 272):
                LGAS=1
                ISHELL=ID-255
            elif(ID <= 289) :
                LGAS=2
                ISHELL=ID-272
            else:
                LGAS=3
                ISHELL=ID-289
            # endif
        # endif
        # 12 CONTINUE
        flag200=1
        # COMPTON RAYLEIGH OR PAIR PRODUCTION
    # 22 
    if(flag200):
        pass
    else:
        ISHELL=0
        if(ID <= (IPET+IFINR)) :
            # COMPTON RAYLEIGH OR PAIR PRODUCTION.   SET :  FLAG KGAS LGAS
            if(LCMP == 1):
                LCFLG=1
            if(LCMP == 0 and LRAY == 1):
                LRFLG=1
            if(LCMP == 0 and LRAY == 0):
                LPFLG=1
            if(ID <= IPET+3):
                KGAS=1
                LGAS=ID-IPET
            elif(ID <= IPET+6) :
                KGAS=2
                LGAS=ID-IPET-3
            elif(ID <= IPET+9) : 
                KGAS=3
                LGAS=ID-IPET-6 
            elif(ID <= IPET+12) :
                KGAS=4
                LGAS=ID-IPET-9
            elif(ID <= IPET+15) :
                KGAS=5
                LGAS=ID-IPET-12
            else:
                KGAS=6
                LGAS=ID-IPET-15
        # endif
        elif (ID <= IPET+2*IFINR) :
            if(LRAY == 1):
                LRFLG=1
            if(LRAY == 0 and LPAP == 1):
                LPFLG=1
            if(ID <= IPET+IFINR+3):
                KGAS=1
                LGAS=ID-IPET-IFINR
            elif(ID <= IPET+IFINR+6) :
                KGAS=2
                LGAS=ID-IPET-IFINR-3
            elif(ID <= IPET+IFINR+9) : 
                KGAS=3
                LGAS=ID-IPET-IFINR-6
            elif(ID <= IPET+IFINR+12) :
                KGAS=4
                LGAS=ID-IPET-IFINR-9
            elif(ID <= IPET+IFINR+15) :
                KGAS=5
                LGAS=ID-IPET-IFINR-12
            else:
                KGAS=6
                LGAS=ID-IPET-IFINR-15
            # endif
        else: 
            LPFLG=1
            if(ID <= IPET+3*IFINR):
                KGAS=1
                LGAS=ID-IPET-IFINR-IFINR
            elif(ID <= IPET+IFINR+IFINR+6) :
                KGAS=2
                LGAS=ID-IPET-IFINR-IFINR-3
            elif(ID <= IPET+IFINR+IFINR+9) : 
                KGAS=3
                LGAS=ID-IPET-IFINR-IFINR-6
            elif(ID <= IPET+IFINR+IFINR+12) :
                KGAS=4
                LGAS=ID-IPET-IFINR-IFINR-9
            elif(ID <= IPET+IFINR+IFINR+15) :
                KGAS=5
                LGAS=ID-IPET-IFINR-IFINR-12
            else:
                KGAS=6
                LGAS=ID-IPET-IFINR-IFINR-15
            # endif
        # endif
        if(ID > (IPET+54)) :
            print(' IDENTifIER IN FUNCTION ABSO IS GT LIMIT ID=',ID,'\n    def STOPPED:')
            sys.exit()
        # endif
    # 200 CONTINUE
    # CALCULATE ABSORPTION DISTANCE PER EVENT IN METRES
    R1=DRAND48(RDUM)  
    DIST=-math.log(R1)/(ABSTOT*100.0)
    return
    # end
      SUBROUTINE ABSO(JF,EPH,ISHELL,KGAS,LGAS,DIST)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/RATIO/AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC(6)  
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/ABBS/ABSXRAY             
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/MIXPE/XPE(6,3,17,60),YPE(6,3,17,60)
      COMMON/MIXCN/XEN(6,3,54),YRY(6,3,54),YCP(6,3,54),YPP(6,3,54)
      DIMENSION XSEC(306),XSECC(18),XSECR(18),XSECP(18),
     /ANGAS(6),ABSL(306),ABSLC(18),ABSLR(18),ABSLP(18),XSUM(360)
C******************************************************************
C FOR PHOTON ENERGY EPH CALCULATES INTERACTION DISTANCE WITH
C  GAS IDENTITY,KGAS . IF MOLECULAR GAS ALSO IDENTIFIES THE 
C  ATOMIC COMPONENT OF THE MOLECULE  LGAS. 
C  IF PHOTOELECTRIC ABSORPTION CALCULATES ABSORPTION SHELL, ISHELL
C AND SETS PHOTOELECTRIC FLAG,LPEFLG=1. 
C IF COMPTON RAYLEIGH OR PAIR PRODUCTION ALLOWED THEN CALCULATES
C KGAS , LGAS AND SETS COMPTON RAYLEIGH OR PAIR PRODUCTION FLAGS.
C****************************************************************** 
      ANGAS(1)=AN1
      ANGAS(2)=AN2
      ANGAS(3)=AN3
      ANGAS(4)=AN4
      ANGAS(5)=AN5
      ANGAS(6)=AN6
      LCFLG=0
      LRFLG=0
      LPFLG=0
      LPEFLG=0
C CALCULATE PE X-SECTION FOR EACH GAS AND FIND ABS LENGTH 
      EPHLG=DLOG(EPH)
      IPT=0
      DO 1 I=1,NGAS
      DO 1 J1=1,3
      DO 1 J=1,17
      IPT=IPT+1
      XSEC(IPT)=0.0
      ABSL(IPT)=0.0
      IF(J.GT.ISHLMX(I,J1)) GO TO 1
      IF(EPHLG.LT.XPE(I,J1,J,1)) GO TO 1
      DO 11 K=2,60 
      IF(EPHLG.LE.XPE(I,J1,J,K)) THEN
       A=(YPE(I,J1,J,K)-YPE(I,J1,J,K-1))/(XPE(I,J1,J,K)-XPE(I,J1,J,K-1))
       B=(XPE(I,J1,J,K-1)*YPE(I,J1,J,K)-XPE(I,J1,J,K)*YPE(I,J1,J,K-1))/
     /(XPE(I,J1,J,K-1)-XPE(I,J1,J,K))
       XSEC(IPT)=DEXP(A*EPHLG+B)
       ABSL(IPT)=XSEC(IPT)*ANGAS(I)
       GO TO 1
      ENDIF
   11 CONTINUE
    1 CONTINUE
C CALCULATE COMPTON X-SECTION FOR EACH GAS AND FIND ABS LENGTH
      IPT=0
      DO 30 I=1,NGAS
      DO 30 J1=1,3   
      IPT=IPT+1
      XSECC(IPT)=0.0
      ABSLC(IPT)=0.0
C USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
      IF(JF.EQ.3.OR.JF.EQ.2) GO TO 30
C ONLY USE PE X-SECTION
      IF(LCMP.NE.1) GO TO 30
      IF(EPHLG.LT.XEN(I,J1,1)) GO TO 30
      DO 29 K=2,54
      IF(EPHLG.LE.XEN(I,J1,K)) THEN
       A=(YCP(I,J1,K)-YCP(I,J1,K-1))/(XEN(I,J1,K)-XEN(I,J1,K-1))
       B=(XEN(I,J1,K-1)*YCP(I,J1,K)-XEN(I,J1,K)*YCP(I,J1,K-1))/
     /(XEN(I,J1,K-1)-XEN(I,J1,K))
       XSECC(IPT)=DEXP(A*EPHLG+B)
       ABSLC(IPT)=XSECC(IPT)*ANGAS(I)
       GO TO 30 
      ENDIF
   29 CONTINUE
   30 CONTINUE
C CALCULATE RAYLEIGH X-SECTION FOR EACH GAS AND FIND ABS LENGTH
      IPT=0
      DO 40 I=1,NGAS
      DO 40 J1=1,3   
      IPT=IPT+1
      XSECR(IPT)=0.0
      ABSLR(IPT)=0.0
C USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
      IF(JF.EQ.3.OR.JF.EQ.2) GO TO 40
      IF(LRAY.NE.1) GO TO 40
      IF(EPHLG.LT.XEN(I,J1,1)) GO TO 40
      DO 39 K=2,54
      IF(EPHLG.LE.XEN(I,J1,K)) THEN
       A=(YRY(I,J1,K)-YRY(I,J1,K-1))/(XEN(I,J1,K)-XEN(I,J1,K-1))
       B=(XEN(I,J1,K-1)*YRY(I,J1,K)-XEN(I,J1,K)*YRY(I,J1,K-1))/
     /(XEN(I,J1,K-1)-XEN(I,J1,K))
       XSECR(IPT)=DEXP(A*EPHLG+B)
       ABSLR(IPT)=XSECR(IPT)*ANGAS(I)
       GO TO 40
      ENDIF
   39 CONTINUE
   40 CONTINUE   
C CALCULATE PAIR PRODUCTION X-SECTION FOR EACH GAS AND FIND ABS LENGTH 
      IPT=0
      DO 50 I=1,NGAS
      DO 50 J1=1,3
      IPT=IPT+1
      XSECP(IPT)=0.0
      ABSLP(IPT)=0.0
C USE ONLY PE X-SECTION FOR SECOND STAGE FLUORESCENCE 
      IF(JF.EQ.3.OR.JF.EQ.2) GO TO 50
      IF(LPAP.NE.1) GO TO 50
      IF(EPHLG.LT.XEN(I,J1,1)) GO TO 50
      DO 49 K=2,54
      IF(EPHLG.LE.XEN(I,J1,K)) THEN
       A=(YPP(I,J1,K)-YPP(I,J1,K-1))/(XEN(I,J1,K)-XEN(I,J1,K-1))
       B=(XEN(I,J1,K-1)*YPP(I,J1,K)-XEN(I,J1,K)*YPP(I,J1,K-1))/
     /(XEN(I,J1,K-1)-XEN(I,J1,K))
       XSECP(IPT)=DEXP(A*EPHLG+B)
       ABSLP(IPT)=XSECP(IPT)*ANGAS(I)
       GO TO 50
      ENDIF
   49 CONTINUE
   50 CONTINUE   
C FORM CUMULATIVE SUMS 
      IFIN=NGAS*17*3
      DO 2 J=2,IFIN
      XSEC(J)=XSEC(J)+XSEC(J-1)
      ABSL(J)=ABSL(J)+ABSL(J-1)
    2 CONTINUE 
      IFINR=NGAS*3
      DO 110 J=2,IFINR
      XSECC(J)=XSECC(J)+XSECC(J-1)
      ABSLC(J)=ABSLC(J)+ABSLC(J-1)
      XSECR(J)=XSECR(J)+XSECR(J-1)
      ABSLR(J)=ABSLR(J)+ABSLR(J-1)
      XSECP(J)=XSECP(J)+XSECP(J-1)
      ABSLP(J)=ABSLP(J)+ABSLP(J-1)
  110 CONTINUE 
C TOTAL X-SECTION
      XSECT=XSEC(IFIN)+XSECC(IFINR)+XSECR(IFINR)+XSECP(IFINR)
C TOTAL ABS LENGTH
      ABSTOT=ABSL(IFIN)+ABSLR(IFINR)+ABSLC(IFINR)+ABSLP(IFINR)
C CALCULATE ABSORPTION DISTANCE IN METRES AND RETURN
      IF(JF.EQ.3) THEN
       DIST=1.0/(ABSTOT*100.0)
       RETURN
      ENDIF
C CALCULATE ABSORPTION DISTANCE IN MICRONS
      IF(JF.EQ.-1) THEN 
       IF(ABSTOT.GT.0.0) ABSXRAY=1.0D4/ABSTOT
       IF(ABSTOT.EQ.0.0) ABSXRAY=1.0D15
       RETURN
      ENDIF
      IF(ABSTOT.EQ.0.0) THEN
C PHOTON TOO LOW ENERGY TO IONISE SET ISHELL=-1
       ISHELL=-1
       RETURN
      ENDIF
C NORMALISE TO 1 
      DO 3 J=1,IFIN
      XSEC(J)=XSEC(J)/XSECT
    3 CONTINUE
      DO 120 J=1,IFINR
      XSECC(J)=XSECC(J)/XSECT
      XSECR(J)=XSECR(J)/XSECT
      XSECP(J)=XSECP(J)/XSECT
  120 CONTINUE
C FORM SUM X-SECTION FOR SAMPLING ARRAY 
C P.E.
      DO 130 J=1,IFIN
      XSUM(J)=XSEC(J)
  130 CONTINUE
      IEND=IFIN
      IF(LCMP.NE.1) GO TO 145 
C COMPTON
      ISTART=IFIN+1
      IEND=IFIN+IFINR
      DO 140 J=ISTART,IEND
      XSUM(J)=XSUM(ISTART-1)+XSECC(J-ISTART+1) 
  140 CONTINUE
  145 IF(LRAY.NE.1) GO TO 155
C RAYLEIGH
      IF(LCMP.EQ.0) THEN 
       ISTART=IFIN+1
       IEND=IFIN+IFINR
       ELSE IF(LCMP.EQ.1) THEN
       ISTART=IFIN+IFINR+1
       IEND=IFIN+IFINR+IFINR
      ENDIF
      DO 150 J=ISTART,IEND
      XSUM(J)=XSUM(ISTART-1)+XSECR(J-ISTART+1)
  150 CONTINUE
  155 IF(LPAP.NE.1) GO TO 165
C PAIR PRODUCTION
      IF(LCMP.EQ.0.AND.LRAY.EQ.0) THEN
       ISTART=IFIN+1
       IEND=IFIN+IFINR
      ELSE IF(LCMP.EQ.0.AND.LRAY.EQ.1) THEN
       ISTART=IFIN+IFINR+1
       IEND=IFIN+IFINR+IFINR
      ELSE IF(LCMP.EQ.1.AND.LRAY.EQ.0) THEN
       ISTART=IFIN+IFINR+1
       IEND=IFIN+IFINR+IFINR
      ELSE IF(LCMP.EQ.1.AND.LRAY.EQ.1) THEN
       ISTART=IFIN+IFINR+IFINR+1
       IEND=ISTART+IFINR+IFINR+IFINR
      ELSE 
       WRITE(6,998)
  998  FORMAT(' ERROR IN SUBROUTINE ABSO FLAG NOT CORRECT')
       STOP
      ENDIF
      DO 160 J=ISTART,IEND
      XSUM(J)=XSUM(ISTART-1)+XSECP(J-ISTART+1)
  160 CONTINUE
  165 CONTINUE 
C FIND GAS AND SHELL
      R1=drand48(RDUM)
      DO 4 J=1,IEND
      IF(XSUM(J).LT.R1) GO TO 4
       ID=J
       GO TO 5
    4 CONTINUE
C LOCATE GAS AND SHELL
    5 IPET=NGAS*3*17
      IF(ID.GT.IPET) GO TO 22
C PHOTO ELECTRIC
      LPEFLG=1
      IF(ID.LE.51) THEN
       KGAS=1
       IF(ID.LE.17) THEN
        LGAS=1
        ISHELL=ID
       ELSE IF(ID.LE.34) THEN
        LGAS=2
        ISHELL=ID-17
       ELSE
        LGAS=3
        ISHELL=ID-34
       ENDIF
       GO TO 12
      ELSE IF(ID.LE.102) THEN
       KGAS=2
       IF(ID.LE.68) THEN
        LGAS=1
        ISHELL=ID-51
       ELSE IF(ID.LE.85) THEN
        LGAS=2
        ISHELL=ID-68
       ELSE
        LGAS=3
        ISHELL=ID-85
       ENDIF
       GO TO 12
      ELSE IF(ID.LE.153) THEN
       KGAS=3
       IF(ID.LE.119) THEN
        LGAS=1
        ISHELL=ID-102
       ELSE IF(ID.LE.136) THEN
        LGAS=2
        ISHELL=ID-119
       ELSE
        LGAS=3
        ISHELL=ID-136
       ENDIF
       GO TO 12
      ELSE IF(ID.LE.204) THEN
       KGAS=4
       IF(ID.LE.170) THEN
        LGAS=1
        ISHELL=ID-153
       ELSE IF(ID.LE.187) THEN
        LGAS=2
        ISHELL=ID-170
       ELSE
        LGAS=3
        ISHELL=ID-187
       ENDIF
       GO TO 12
      ELSE IF(ID.LE.255) THEN
       KGAS=5
       IF(ID.LE.221) THEN
        LGAS=1
        ISHELL=ID-204
       ELSE IF(ID.LE.238) THEN
        LGAS=2
        ISHELL=ID-221
       ELSE
        LGAS=3
        ISHELL=ID-238
       ENDIF
       GO TO 12
      ELSE 
       KGAS=6
       IF(ID.LE.272) THEN
        LGAS=1
        ISHELL=ID-255
       ELSE IF(ID.LE.289) THEN
        LGAS=2
        ISHELL=ID-272
       ELSE
        LGAS=3
        ISHELL=ID-289
       ENDIF
      ENDIF
   12 CONTINUE
      GO TO 200
C COMPTON RAYLEIGH OR PAIR PRODUCTION
   22 ISHELL=0
      IF(ID.LE.(IPET+IFINR)) THEN
C COMPTON RAYLEIGH OR PAIR PRODUCTION.   SET :  FLAG KGAS LGAS
       IF(LCMP.EQ.1) LCFLG=1
       IF(LCMP.EQ.0.AND.LRAY.EQ.1) LRFLG=1
       IF(LCMP.EQ.0.AND.LRAY.EQ.0) LPFLG=1
       IF(ID.LE.IPET+3) THEN
        KGAS=1
        LGAS=ID-IPET
       ELSE IF(ID.LE.IPET+6) THEN
        KGAS=2
        LGAS=ID-IPET-3
       ELSE IF(ID.LE.IPET+9) THEN 
        KGAS=3
        LGAS=ID-IPET-6 
       ELSE IF(ID.LE.IPET+12) THEN
        KGAS=4
        LGAS=ID-IPET-9
       ELSE IF(ID.LE.IPET+15) THEN
        KGAS=5
        LGAS=ID-IPET-12
       ELSE
        KGAS=6
        LGAS=ID-IPET-15
       ENDIF
      ELSE IF (ID.LE.IPET+2*IFINR) THEN
       IF(LRAY.EQ.1) LRFLG=1
       IF(LRAY.EQ.0.AND.LPAP.EQ.1) LPFLG=1
       IF(ID.LE.IPET+IFINR+3) THEN
        KGAS=1
        LGAS=ID-IPET-IFINR
       ELSE IF(ID.LE.IPET+IFINR+6) THEN
        KGAS=2
        LGAS=ID-IPET-IFINR-3
       ELSE IF(ID.LE.IPET+IFINR+9) THEN 
        KGAS=3
        LGAS=ID-IPET-IFINR-6
       ELSE IF(ID.LE.IPET+IFINR+12) THEN
        KGAS=4
        LGAS=ID-IPET-IFINR-9
       ELSE IF(ID.LE.IPET+IFINR+15) THEN
        KGAS=5
        LGAS=ID-IPET-IFINR-12
       ELSE
        KGAS=6
        LGAS=ID-IPET-IFINR-15
       ENDIF
      ELSE 
       LPFLG=1
       IF(ID.LE.IPET+3*IFINR) THEN
        KGAS=1
        LGAS=ID-IPET-IFINR-IFINR
       ELSE IF(ID.LE.IPET+IFINR+IFINR+6) THEN
        KGAS=2
        LGAS=ID-IPET-IFINR-IFINR-3
       ELSE IF(ID.LE.IPET+IFINR+IFINR+9) THEN 
        KGAS=3
        LGAS=ID-IPET-IFINR-IFINR-6
       ELSE IF(ID.LE.IPET+IFINR+IFINR+12) THEN
        KGAS=4
        LGAS=ID-IPET-IFINR-IFINR-9
       ELSE IF(ID.LE.IPET+IFINR+IFINR+15) THEN
        KGAS=5
        LGAS=ID-IPET-IFINR-IFINR-12
       ELSE
        KGAS=6
        LGAS=ID-IPET-IFINR-IFINR-15
       ENDIF
      ENDIF
      IF(ID.GT.(IPET+54)) THEN
       WRITE(6,999) ID
  999 FORMAT(' IDENTIFIER IN SUBROUTINE ABSO IS GT LIMIT ID=',I5,/,'    
     /PROGRAM STOPPED')
       STOP
      ENDIF
  200 CONTINUE
C CALCULATE ABSORPTION DISTANCE PER EVENT IN METRES
      R1=drand48(RDUM)  
      DIST=-DLOG(R1)/(ABSTOT*100.0)
      RETURN
      END

STATS2()

Arguments

Argument Description
NONE -

Pseudo Code

import conf
import numpy
import sys
def STATS2():
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)   
    # COMMON/INPT2/
    KGAS=conf.KGAS
    LGAS=conf.LGAS
    DETEFF=conf.DETEFF
    EXCWGHT=conf.EXCWGHT                            
    # COMMON/SETP/=conf.# COMMON/SETP/
    TMAX=conf.TMAX
    SMALL=conf.SMALL
    API=conf.API
    ESTART=conf.ESTART
    THETA=conf.THETA
    PHI=conf.PHI
    TCFMAX=conf.TCFMAX
    TCFMAX1=conf.TCFMAX1
    RSTART=conf.RSTART
    EFIELD=conf.EFIELD
    ETHRM=conf.ETHRM
    ECUT=conf.ECUT
    NDELTA=conf.NDELTA
    IMIP=conf.IMIP
    IWRITE  =conf.IWRITE  
    # COMMON/CLUS/=conf.# COMMON/CLUS/
    XAV=conf.XAV
    YAV=conf.YAV
    ZAV=conf.ZAV
    TAV=conf.TAV
    XYAV=conf.XYAV
    XYZAV=conf.XYZAV
    DX=conf.DX
    DY=conf.DY
    DZ=conf.DZ
    DT=conf.DT
    DXY=conf.DXY
    DXYZ=conf.DXYZ
    NCL=conf.NCL
    FARX1=conf.FARX1
    FARY1=conf.FARY1
    FARZ1=conf.FARZ1
    FARXY1=conf.FARXY1
    RMAX1=conf.RMAX1
    TSUM=conf.TSUM
    XNEG=conf.XNEG
    YNEG=conf.YNEG
    ZNEG=conf.ZNEG
    EDELTA=conf.EDELTA
    EDELTA2=conf.EDELTA2
    NCLEXC=conf.NCLEXC
    # COMMON/PRIM3=conf.# COMMON/PRIM3
    MSUM=conf.MSUM
    MCOMP=conf.MCOMP
    MRAYL=conf.MRAYL
    MPAIR=conf.MPAIR
    MPHOT=conf.MPHOT
    MVAC=conf.MVAC
    # COMMON/FANO/=conf.# COMMON/FANO/
    AFAN1=conf.AFAN1
    AFAN2=conf.AFAN2
    AFAN3=conf.AFAN3
    AFAN4=conf.AFAN4
    ASKEW=conf.ASKEW
    AKURT=conf.AKURT
    AFAN1EXC=conf.AFAN1EXC
    AFAN2EXC=conf.AFAN2EXC
    AFAN3EXC=conf.AFAN3EXC
    AFAN4EXC=conf.AFAN4EXC
    ASKEWEXC=conf.ASKEWEXC
    AKURTEXC=conf.AKURTEXC
    AFAN1TOT=conf.AFAN1TOT
    AFAN2TOT=conf.AFAN2TOT
    AFAN3TOT=conf.AFAN3TOT
    AFAN4TOT=conf.AFAN4TOT
    ASKEWTOT=conf.ASKEWTOT
    AKURTTOT=conf.AKURTTOT
    AFAN1TOF=conf.AFAN1TOF
    AFAN2TOF=conf.AFAN2TOF
    AFAN3TOF=conf.AFAN3TOF
    AFAN4TOF=conf.AFAN4TOF
    ASKEWTOF=conf.ASKEWTOF
    AKURTTOF=conf.AKURTTOF
    # COMMON/FANOE/=conf.# COMMON/FANOE/
    AFAN1E=conf.AFAN1E
    AFAN2E=conf.AFAN2E
    AFAN3E=conf.AFAN3E
    AFAN4E=conf.AFAN4E
    ASKEWE=conf.ASKEWE
    AKURTE=conf.AKURTE
    AFAN1EXCE=conf.AFAN1EXCE
    AFAN2EXCE=conf.AFAN2EXCE
    AFAN3EXCE=conf.AFAN3EXCE
    AFAN4EXCE=conf.AFAN4EXCE
    ASKEWEXCE=conf.ASKEWEXCE
    AKURTEXCE=conf.AKURTEXCE
    AFAN1TOTE=conf.AFAN1TOTE
    AFAN2TOTE=conf.AFAN2TOTE
    AFAN3TOTE=conf.AFAN3TOTE
    AFAN4TOTE=conf.AFAN4TOTE
    ASKEWTOTE=conf.ASKEWTOTE
    AKURTTOTE=conf.AKURTTOTE
    AFAN1TOFE=conf.AFAN1TOFE
    AFAN2TOFE=conf.AFAN2TOFE
    AFAN3TOFE=conf.AFAN3TOFE
    AFAN4TOFE=conf.AFAN4TOFE
    ASKEWTOFE=conf.ASKEWTOFE
    AKURTTOFE=conf.AKURTTOFE
    NFE=conf.NFE
    # COMMON/RNGE/=conf.# COMMON/RNGE/
    XBAR=conf.XBAR
    YBAR=conf.YBAR
    ZBAR=conf.ZBAR
    TBAR=conf.TBAR
    XYBAR=conf.XYBAR
    XYZBAR=conf.XYZBAR
    DXBAR=conf.DXBAR
    DYBAR=conf.DYBAR
    DZBAR=conf.DZBAR
    DTBAR=conf.DTBAR
    DXYBAR=conf.DXYBAR
    DXYZBAR=conf.DXYZBAR
    XMAX=conf.XMAX
    YMAX=conf.YMAX
    ZMAX=conf.ZMAX
    XYMAX=conf.XYMAX
    RMAX=conf.RMAX
    SUMTT=conf.SUMTT
    XNEG1=conf.XNEG1
    YNEG1=conf.YNEG1
    ZNEG1=conf.ZNEG1
    FARXBAR=conf.FARXBAR
    FARYBAR=conf.FARYBAR
    FARZBAR=conf.FARZBAR
    FARXYBAR=conf.FARXYBAR
    RMAXBAR=conf.RMAXBAR
    EBAR=conf.EBAR
    EBAR2=conf.EBAR2    
    # COMMON/PRIM1/=conf.# COMMON/PRIM1/
    AVRAYL=conf.AVRAYL
    AVCOMP=conf.AVCOMP
    AVPAIR=conf.AVPAIR
    AVPHOTO=conf.AVPHOTO
    # COMMON/PRIM2/=conf.# COMMON/PRIM2/
    CMPDST=conf.CMPDST
    RYLDST=conf.RYLDST
    #      
    #-----------------------------------------------------------------------
    #   CALCULATES AVERAGES OVER TOTAL NUMBER OF DELTAS
    #   CALCULATES FANO FACTORS FO,F1,F2 AND F3
    #  CALCULATES FANO FACTORS FOR EXCITATION 
    #  INCLUDED MODIFICATION TO CALCULATE ESCAPE PEAK FANO FACTORS 
    #-----------------------------------------------------------------------
    # 
    ANCL1=0.00
    ANCL2=0.00
    ANCL3=0.00
    ANCL4=0.00
    ANCL1E=0.00
    ANCL2E=0.00
    ANCL3E=0.00
    ANCL4E=0.00
    ANCL1EXC=0.00
    ANCL2EXC=0.00
    ANCL3EXC=0.00
    ANCL4EXC=0.00
    ANCL1EXCE=0.00
    ANCL2EXCE=0.00
    ANCL3EXCE=0.00
    ANCL4EXCE=0.00
    ANCL1TOT=0.00
    ANCL2TOT=0.00
    ANCL3TOT=0.00
    ANCL4TOT=0.00
    ANCL1TOTE=0.00
    ANCL2TOTE=0.00
    ANCL3TOTE=0.00
    ANCL4TOTE=0.00
    ANCL1TOF=0.00
    ANCL2TOF=0.00
    ANCL3TOF=0.00
    ANCL4TOF=0.00
    ANCL1TOFE=0.00
    ANCL2TOFE=0.00
    ANCL3TOFE=0.00
    ANCL4TOFE=0.00
    ATOTR=0.00
    ATOTC=0.00
    ATOTP=0.00
    ATOTPE=0.00
    NF=0
    NFE=0
    DETFRAC=DETEFF*0.01
    if(DETEFF == 0.0):
        # WRITE(6,99) 
        # 99  
        print(2*'\n',' WARNING EXCITATION DETECTION EFFICIENCY WAS ZERO NOW  SET TO 1.0 % ',2*'\n')
        DETFRAC=0.01
    # endif
    for I in range(1,NDELTA+1):
        flag5=0
        NCLUS=NCL[I]
        NEXC=NCLEXC[I]
        if(IMIP == 1):
            # GO TO 11 
            pass
        else:
            if(MPAIR[I]> 2) :
                # WRITE(6,991) MPAIR[I],I
                # 991 
                print(' ERROR IN STATS2 MPAIR GT 2 = %d EVENT NO= %d'%(MPAIR[I],I))
                sys.exit()
            # endif
            if(MPAIR[I]> 0):
                flag5=1
                break
            #  REMOVE EXTRA ELECTRON FOR CONSISTENCY IN CLUSTER DEF FOR DELTAS      
        # 11 
        flag8=0
        if(flag5):
            pass
        else:
            NCLUS1=NCLUS   
            if(IMIP == 2):
                NCLUS1=NCLUS-1
            ANC1=float(NCLUS1)
            ANCL1=ANCL1+ANC1
            ANCL2=ANCL2+ANC1*ANC1
            ANCL3=ANCL3+ANC1*ANC1*ANC1
            ANCL4=ANCL4+ANC1*ANC1*ANC1*ANC1
            NTEMP=0
            for K in range(1,NEXC+1):
                R1=DRAND48(RDUM)
                if(R1 < DETFRAC):
                    NTEMP=NTEMP+1
                # 1 CONTINUE
            ANC1EXC=float(NEXC)
            ANCL1EXC=ANCL1EXC+ANC1EXC
            ANCL2EXC=ANCL2EXC+ANC1EXC*ANC1EXC
            ANCL3EXC=ANCL3EXC+ANC1EXC*ANC1EXC*ANC1EXC
            ANCL4EXC=ANCL4EXC+ANC1EXC*ANC1EXC*ANC1EXC*ANC1EXC
            ANCTOT=ANC1+float(NTEMP)*EXCWGHT
            ANCL1TOT=ANCL1TOT+ANCTOT
            ANCL2TOT=ANCL2TOT+ANCTOT*ANCTOT
            ANCL3TOT=ANCL3TOT+ANCTOT*ANCTOT*ANCTOT
            ANCL4TOT=ANCL4TOT+ANCTOT*ANCTOT*ANCTOT*ANCTOT
            ANCTOF=ANC1+float(NEXC)*EXCWGHT
            ANCL1TOF=ANCL1TOF+ANCTOF
            ANCL2TOF=ANCL2TOF+ANCTOF*ANCTOF
            ANCL3TOF=ANCL3TOF+ANCTOF*ANCTOF*ANCTOF
            ANCL4TOF=ANCL4TOF+ANCTOF*ANCTOF*ANCTOF*ANCTOF
            NF=NF+1
            flag8=1
            #  REMOVE EXTRA ELECTRON FOR CONSISTENCY IN CLUSTER DEF FOR DELTAS      
        # 5 
        if(flag8):
            pass
        else:
            NCLUS1=NCLUS   
            if(IMIP == 2):
                NCLUS1=NCLUS-1
            ANC1=float(NCLUS1)
            ANCL1E=ANCL1E+ANC1
            ANCL2E=ANCL2E+ANC1*ANC1
            ANCL3E=ANCL3E+ANC1*ANC1*ANC1
            ANCL4E=ANCL4E+ANC1*ANC1*ANC1*ANC1
            NTEMP=0
            for K in range(1,NEXC+1):
                R1=DRAND48(RDUM)
                if(R1 < DETFRAC):
                    NTEMP=NTEMP+1
                # 6 CONTINUE
            ANC1EXC=float(NEXC)
            ANCL1EXCE=ANCL1EXCE+ANC1EXC
            ANCL2EXCE=ANCL2EXCE+ANC1EXC*ANC1EXC
            ANCL3EXCE=ANCL3EXCE+ANC1EXC*ANC1EXC*ANC1EXC
            ANCL4EXCE=ANCL4EXCE+ANC1EXC*ANC1EXC*ANC1EXC*ANC1EXC
            ANCTOT=ANC1+float(NTEMP)*EXCWGHT
            ANCL1TOTE=ANCL1TOTE+ANCTOT
            ANCL2TOTE=ANCL2TOTE+ANCTOT*ANCTOT
            ANCL3TOTE=ANCL3TOTE+ANCTOT*ANCTOT*ANCTOT
            ANCL4TOTE=ANCL4TOTE+ANCTOT*ANCTOT*ANCTOT*ANCTOT
            ANCTOF=ANC1+float(NEXC)*EXCWGHT
            ANCL1TOFE=ANCL1TOFE+ANCTOF
            ANCL2TOFE=ANCL2TOFE+ANCTOF*ANCTOF
            ANCL3TOFE=ANCL3TOFE+ANCTOF*ANCTOF*ANCTOF
            ANCL4TOFE=ANCL4TOFE+ANCTOF*ANCTOF*ANCTOF*ANCTOF
            NFE=NFE+1
        # 8 
        if(IMIP == 3) :
            ATOTR=ATOTR+MRAYL[I]
            ATOTC=ATOTC+MCOMP[I]
            ATOTP=ATOTP+MPAIR[I]
            ATOTPE=ATOTPE+MPHOT[I]
        # endif
    # 10 CONTINUE
    # CALCULATE FANO FACTORS
    ANF=float(NF)
    ANF1=ANF*ANF
    if(ANF1 == 0.0):
        ANF1=1.00
    AFAN1=ANCL1/ANF
    AFAN1EXC=ANCL1EXC/ANF
    AFAN1TOT=ANCL1TOT/ANF
    AFAN1TOF=ANCL1TOF/ANF
    AFAN2=math.sqrt((ANF*ANCL2-ANCL1*ANCL1)/ANF1)
    AFAN2EXC=math.sqrt((ANF*ANCL2EXC-ANCL1EXC*ANCL1EXC)/ANF1)
    AFAN2TOT=math.sqrt((ANF*ANCL2TOT-ANCL1TOT*ANCL1TOT)/ANF1)
    AFAN2TOF=math.sqrt((ANF*ANCL2TOF-ANCL1TOF*ANCL1TOF)/ANF1)
    AFAN3=(ANCL3-3.00*AFAN1*ANCL2+2.00*ANCL1*AFAN1*AFAN1)/ANF
    AFAN3EXC=(ANCL3EXC-3.00*AFAN1EXC*ANCL2EXC+2.00*ANCL1EXC*AFAN1EXC*AFAN1EXC)/ANF
    AFAN3TOT=(ANCL3TOT-3.00*AFAN1TOT*ANCL2TOT+2.00*ANCL1TOT*AFAN1TOT*AFAN1TOT)/ANF
    AFAN3TOF=(ANCL3TOF-3.00*AFAN1TOF*ANCL2TOF+2.00*ANCL1TOF*AFAN1TOF*AFAN1TOF)/ANF
    AFAN4=(ANCL4-4.00*AFAN1*ANCL3+6.00*AFAN1*AFAN1*ANCL2-3.00*AFAN1*AFAN1*AFAN1*ANCL1)/ANF
    AFAN4=AFAN4-3.00*AFAN2*AFAN2*AFAN2*AFAN2
    AFAN4EXC=(ANCL4EXC-4.00*AFAN1EXC*ANCL3EXC+6.00*AFAN1EXC*AFAN1EXC*ANCL2EXC-3.00*AFAN1EXC*AFAN1EXC*AFAN1EXC*ANCL1EXC)/ANF
    AFAN4EXC=AFAN4EXC-3.00*AFAN2EXC*AFAN2EXC*AFAN2EXC*AFAN2EXC
    AFAN4TOT=(ANCL4TOT-4.00*AFAN1TOT*ANCL3TOT+6.00*AFAN1TOT*AFAN1TOT*ANCL2TOT-3.00*AFAN1TOT*AFAN1TOT*AFAN1TOT*ANCL1TOT)/ANF
    AFAN4TOT=AFAN4TOT-3.00*AFAN2TOT*AFAN2TOT*AFAN2TOT*AFAN2TOT
    AFAN4TOF=(ANCL4TOF-4.00*AFAN1TOF*ANCL3TOF+6.00*AFAN1TOF*AFAN1TOF*ANCL2TOF-3.00*AFAN1TOF*AFAN1TOF*AFAN1TOF*ANCL1TOF)/ANF
    AFAN4TOF=AFAN4TOF-3.00*AFAN2TOF*AFAN2TOF*AFAN2TOF*AFAN2TOF
    ASKEW=AFAN3/(AFAN2**3)
    AKURT=AFAN4/(AFAN2**4)
    AFAN3=AFAN3/AFAN1
    AFAN4=AFAN4/AFAN1
    ASKEWEXC=AFAN3EXC/(AFAN2EXC**3)
    AKURTEXC=AFAN4EXC/(AFAN2EXC**4)
    AFAN3EXC=AFAN3EXC/AFAN1EXC
    AFAN4EXC=AFAN4EXC/AFAN1EXC
    ASKEWTOT=AFAN3TOT/(AFAN2TOT**3)
    AKURTTOT=AFAN4TOT/(AFAN2TOT**4)
    AFAN3TOT=AFAN3TOT/AFAN1TOT
    AFAN4TOT=AFAN4TOT/AFAN1TOT
    ASKEWTOF=AFAN3TOF/(AFAN2TOF**3)
    AKURTTOF=AFAN4TOF/(AFAN2TOF**4)
    AFAN3TOF=AFAN3TOF/AFAN1TOF
    AFAN4TOF=AFAN4TOF/AFAN1TOF
    # CALCULATE FANO FACTORS FOR ESCAPE PEAK
    ANFE=float(NFE)
    ANF1E=ANFE*ANFE
    if(ANF1E == 0.0):
        ANF1E=1.00
    AFAN1E=ANCL1E/ANFE
    AFAN1EXCE=ANCL1EXCE/ANFE
    AFAN1TOTE=ANCL1TOTE/ANFE
    AFAN1TOFE=ANCL1TOFE/ANFE
    AFAN2E=math.sqrt((ANFE*ANCL2E-ANCL1E*ANCL1E)/ANF1E)
    AFAN2EXCE=math.sqrt((ANFE*ANCL2EXCE-ANCL1EXCE*ANCL1EXCE)/ANF1E)
    AFAN2TOTE=math.sqrt((ANFE*ANCL2TOTE-ANCL1TOTE*ANCL1TOTE)/ANF1E)
    AFAN2TOFE=math.sqrt((ANFE*ANCL2TOFE-ANCL1TOFE*ANCL1TOFE)/ANF1E)
    AFAN3E=(ANCL3E-3.00*AFAN1E*ANCL2E+2.00*ANCL1E*AFAN1E*AFAN1E)/ANFE
    AFAN3EXCE=(ANCL3EXCE-3.00*AFAN1EXCE*ANCL2EXCE+2.00*ANCL1EXCE*AFAN1EXCE*AFAN1EXCE)/ANFE
    AFAN3TOTE=(ANCL3TOTE-3.00*AFAN1TOTE*ANCL2TOTE+2.00*ANCL1TOTE*AFAN1TOTE*AFAN1TOTE)/ANFE
    AFAN3TOFE=(ANCL3TOFE-3.00*AFAN1TOFE*ANCL2TOFE+2.00*ANCL1TOFE*AFAN1TOFE*AFAN1TOFE)/ANFE
    AFAN4E=(ANCL4E-4.00*AFAN1E*ANCL3E+6.00*AFAN1E*AFAN1E*ANCL2E-3.00*AFAN1E*AFAN1E*AFAN1E*ANCL1E)/ANFE
    AFAN4E=AFAN4E-3.00*AFAN2E*AFAN2E*AFAN2E*AFAN2E
    AFAN4EXCE=(ANCL4EXCE-4.00*AFAN1EXCE*ANCL3EXCE+6.00*AFAN1EXCE*AFAN1EXCE*ANCL2EXCE-3.00*AFAN1EXCE*AFAN1EXCE*AFAN1EXCE*ANCL1EXCE)/ANFE
    AFAN4EXCE=AFAN4EXCE-3.00*AFAN2EXCE*AFAN2EXCE*AFAN2EXCE*AFAN2EXCE
    AFAN4TOTE=(ANCL4TOTE-4.00*AFAN1TOTE*ANCL3TOTE+6.00*AFAN1TOTE*AFAN1TOTE*ANCL2TOTE-3.00*AFAN1TOTE*AFAN1TOTE*AFAN1TOTE*ANCL1TOTE)/ANFE
    AFAN4TOTE=AFAN4TOTE-3.00*AFAN2TOTE*AFAN2TOTE*AFAN2TOTE*AFAN2TOTE
    AFAN4TOFE=(ANCL4TOFE-4.00*AFAN1TOFE*ANCL3TOFE+6.00*AFAN1TOFE*AFAN1TOFE*ANCL2TOFE-3.00*AFAN1TOFE*AFAN1TOFE*AFAN1TOFE*ANCL1TOFE)/ANFE
    AFAN4TOFE=AFAN4TOFE-3.00*AFAN2TOFE*AFAN2TOFE*AFAN2TOFE*AFAN2TOFE
    ASKEWE=AFAN3E/(AFAN2E**3)
    AKURTE=AFAN4E/(AFAN2E**4)
    AFAN3E=AFAN3E/AFAN1E
    AFAN4E=AFAN4E/AFAN1E
    ASKEWEXCE=AFAN3EXCE/(AFAN2EXCE**3)
    AKURTEXCE=AFAN4EXCE/(AFAN2EXCE**4)
    AFAN3EXCE=AFAN3EXCE/AFAN1EXCE
    AFAN4EXCE=AFAN4EXCE/AFAN1EXCE
    ASKEWTOTE=AFAN3TOTE/(AFAN2TOTE**3)
    AKURTTOTE=AFAN4TOTE/(AFAN2TOTE**4)
    AFAN3TOTE=AFAN3TOTE/AFAN1TOTE
    AFAN4TOTE=AFAN4TOTE/AFAN1TOTE
    ASKEWTOFE=AFAN3TOFE/(AFAN2TOFE**3)
    AKURTTOFE=AFAN4TOFE/(AFAN2TOFE**4)
    AFAN3TOFE=AFAN3TOFE/AFAN1TOFE
    AFAN4TOFE=AFAN4TOFE/AFAN1TOFE
    # CALCULATE AVERAGES OVER TOTAL NUMBER OF DELTAS 
    XBAR=0.00
    YBAR=0.00
    ZBAR=0.00 
    TBAR=0.00
    XYBAR=0.00
    XYZBAR=0.00
    DXBAR=0.00
    DYBAR=0.00
    DZBAR=0.00
    DTBAR=0.00
    DXYBAR=0.00
    DXYZBAR=0.00
    FARXBAR=0.00
    FARYBAR=0.00
    FARZBAR=0.00
    FARXYBAR=0.00
    RMAXBAR=0.00
    XMAX=0.00
    YMAX=0.00
    ZMAX=0.00
    XYMAX=0.00
    RMAX=0.00
    SUMTT=0.00
    XNEGSUM=0.00
    YNEGSUM=0.00
    ZNEGSUM=0.00
    EBAR=0.00
    EBAR2=0.00
    for I in range(1,NDELTA+1):
        XBAR=XBAR+XAV[I]
        YBAR=YBAR+YAV[I]
        ZBAR=ZBAR+ZAV[I]
        TBAR=TBAR+TAV[I]
        XYBAR=XYBAR+XYAV[I]
        XYZBAR=XYZBAR+XYZAV[I]
        DXBAR=DXBAR+DX[I]
        DYBAR=DYBAR+DY[I]
        DZBAR=DZBAR+DZ[I]
        DTBAR=DTBAR+DT[I]
        DXYBAR=DXYBAR+DXY[I]
        DXYZBAR=DXYZBAR+DXYZ[I]
        SUMTT=SUMTT+TSUM[I]
        FARXBAR=FARXBAR+FARX1[I]
        if(FARX1[I]> XMAX):
            XMAX=FARX1[I]
        FARYBAR=FARYBAR+FARY1[I]
        if(FARY1[I]> YMAX):
            YMAX=FARY1[I]
        FARZBAR=FARZBAR+FARZ1[I]
        if(FARZ1[I]> ZMAX):
            ZMAX=FARZ1[I]
        FARXYBAR=FARXYBAR+FARXY1[I]
        if(FARXY1[I]> XYMAX):
            XYMAX=FARXY1[I]
        RMAXBAR=RMAXBAR+RMAX1[I]
        if(RMAX1[I]> RMAX):
            RMAX=RMAX1[I]
        XNEGSUM=XNEGSUM+XNEG[I]
        YNEGSUM=YNEGSUM+YNEG[I]
        ZNEGSUM=ZNEGSUM+ZNEG[I]
        EBAR=EBAR+EDELTA[I]
        EBAR2=EBAR2+EDELTA2[I]
    # 20 CONTINUE
    ANDELTA=float(NDELTA)
    XBAR=XBAR/ANDELTA
    YBAR=YBAR/ANDELTA
    ZBAR=ZBAR/ANDELTA
    TBAR=TBAR/ANDELTA
    XYBAR=XYBAR/ANDELTA
    XYZBAR=XYZBAR/ANDELTA
    DXBAR=DXBAR/ANDELTA
    DYBAR=DYBAR/ANDELTA
    DZBAR=DZBAR/ANDELTA
    DTBAR=DTBAR/ANDELTA
    DXYBAR=DXYBAR/ANDELTA
    DXYZBAR=DXYZBAR/ANDELTA
    FARXBAR=FARXBAR/ANDELTA
    FARYBAR=FARYBAR/ANDELTA
    FARZBAR=FARZBAR/ANDELTA
    FARXYBAR=FARXYBAR/ANDELTA
    RMAXBAR=RMAXBAR/ANDELTA
    XNEG1=XNEGSUM/ANDELTA
    YNEG1=YNEGSUM/ANDELTA
    ZNEG1=ZNEGSUM/ANDELTA
    EBAR=EBAR/ANDELTA
    EBAR2=EBAR2/ANDELTA
    if(IMIP == 3):
        AVRAYL=ATOTR/ANDELTA
        AVCOMP=ATOTC/ANDELTA
        AVPAIR=ATOTP/ANDELTA
        AVPHOTO=ATOTPE/ANDELTA
    # endif
    if(IMIP == 3):
        for I in range(1,10+1):
            RYLDST[I]=0.0
            CMPDST[I]=0.0
        # 29  CONTINUE
        for I in range(1,NDELTA+1):
            if(MRAYL[I]>= 10 or MRAYL[I] < 1):
                # GO TO 30
                pass
            else:
                RYLDST[MRAYL[I]]=RYLDST[MRAYL[I]]+1.0
            # 30  CONTINUE
            if(MCOMP[I]>= 10 or MCOMP[I] < 1):
                # GO TO 31
                pass
            else:
                CMPDST[MCOMP[I]]=CMPDST[MCOMP[I]]+1.0
            # 31  CONTINUE
        # 32  CONTINUE
        for I in range(1,10+1):
            RYLDST[I]=RYLDST[I]/ANDELTA
            CMPDST[I]=CMPDST[I]/ANDELTA
        # 33  CONTINUE
    # endif
    if(1):
        conf.KGAS=KGAS
        conf.LGAS=LGAS
        conf.DETEFF=DETEFF
        conf.EXCWGHT=EXCWGHT
        conf.TMAX=TMAX
        conf.SMALL=SMALL
        conf.API=API
        conf.ESTART=ESTART
        conf.THETA=THETA
        conf.PHI=PHI
        conf.TCFMAX=TCFMAX
        conf.TCFMAX1=TCFMAX1
        conf.RSTART=RSTART
        conf.EFIELD=EFIELD
        conf.ETHRM=ETHRM
        conf.ECUT=ECUT
        conf.NDELTA=NDELTA
        conf.IMIP=IMIP
        conf.IWRITE  =IWRITE  
        conf.XAV=XAV
        conf.YAV=YAV
        conf.ZAV=ZAV
        conf.TAV=TAV
        conf.XYAV=XYAV
        conf.XYZAV=XYZAV
        conf.DX=DX
        conf.DY=DY
        conf.DZ=DZ
        conf.DT=DT
        conf.DXY=DXY
        conf.DXYZ=DXYZ
        conf.NCL=NCL
        conf.FARX1=FARX1
        conf.FARY1=FARY1
        conf.FARZ1=FARZ1
        conf.FARXY1=FARXY1
        conf.RMAX1=RMAX1
        conf.TSUM=TSUM
        conf.XNEG=XNEG
        conf.YNEG=YNEG
        conf.ZNEG=ZNEG
        conf.EDELTA=EDELTA
        conf.EDELTA2=EDELTA2
        conf.NCLEXC=NCLEXC
        conf.MSUM=MSUM
        conf.MCOMP=MCOMP
        conf.MRAYL=MRAYL
        conf.MPAIR=MPAIR
        conf.MPHOT=MPHOT
        conf.MVAC=MVAC
        conf.AFAN1=AFAN1
        conf.AFAN2=AFAN2
        conf.AFAN3=AFAN3
        conf.AFAN4=AFAN4
        conf.ASKEW=ASKEW
        conf.AKURT=AKURT
        conf.AFAN1EXC=AFAN1EXC
        conf.AFAN2EXC=AFAN2EXC
        conf.AFAN3EXC=AFAN3EXC
        conf.AFAN4EXC=AFAN4EXC
        conf.ASKEWEXC=ASKEWEXC
        conf.AKURTEXC=AKURTEXC
        conf.AFAN1TOT=AFAN1TOT
        conf.AFAN2TOT=AFAN2TOT
        conf.AFAN3TOT=AFAN3TOT
        conf.AFAN4TOT=AFAN4TOT
        conf.ASKEWTOT=ASKEWTOT
        conf.AKURTTOT=AKURTTOT
        conf.AFAN1TOF=AFAN1TOF
        conf.AFAN2TOF=AFAN2TOF
        conf.AFAN3TOF=AFAN3TOF
        conf.AFAN4TOF=AFAN4TOF
        conf.ASKEWTOF=ASKEWTOF
        conf.AKURTTOF=AKURTTOF
        conf.AFAN1E=AFAN1E
        conf.AFAN2E=AFAN2E
        conf.AFAN3E=AFAN3E
        conf.AFAN4E=AFAN4E
        conf.ASKEWE=ASKEWE
        conf.AKURTE=AKURTE
        conf.AFAN1EXCE=AFAN1EXCE
        conf.AFAN2EXCE=AFAN2EXCE
        conf.AFAN3EXCE=AFAN3EXCE
        conf.AFAN4EXCE=AFAN4EXCE
        conf.ASKEWEXCE=ASKEWEXCE
        conf.AKURTEXCE=AKURTEXCE
        conf.AFAN1TOTE=AFAN1TOTE
        conf.AFAN2TOTE=AFAN2TOTE
        conf.AFAN3TOTE=AFAN3TOTE
        conf.AFAN4TOTE=AFAN4TOTE
        conf.ASKEWTOTE=ASKEWTOTE
        conf.AKURTTOTE=AKURTTOTE
        conf.AFAN1TOFE=AFAN1TOFE
        conf.AFAN2TOFE=AFAN2TOFE
        conf.AFAN3TOFE=AFAN3TOFE
        conf.AFAN4TOFE=AFAN4TOFE
        conf.ASKEWTOFE=ASKEWTOFE
        conf.AKURTTOFE=AKURTTOFE
        conf.NFE=NFE
        conf.XBAR=XBAR
        conf.YBAR=YBAR
        conf.ZBAR=ZBAR
        conf.TBAR=TBAR
        conf.XYBAR=XYBAR
        conf.XYZBAR=XYZBAR
        conf.DXBAR=DXBAR
        conf.DYBAR=DYBAR
        conf.DZBAR=DZBAR
        conf.DTBAR=DTBAR
        conf.DXYBAR=DXYBAR
        conf.DXYZBAR=DXYZBAR
        conf.XMAX=XMAX
        conf.YMAX=YMAX
        conf.ZMAX=ZMAX
        conf.XYMAX=XYMAX
        conf.RMAX=RMAX
        conf.SUMTT=SUMTT
        conf.XNEG1=XNEG1
        conf.YNEG1=YNEG1
        conf.ZNEG1=ZNEG1
        conf.FARXBAR=FARXBAR
        conf.FARYBAR=FARYBAR
        conf.FARZBAR=FARZBAR
        conf.FARXYBAR=FARXYBAR
        conf.RMAXBAR=RMAXBAR
        conf.EBAR=EBAR
        conf.EBAR2    =EBAR2
        conf.AVRAYL=AVRAYL
        conf.AVCOMP=AVCOMP
        conf.AVPAIR=AVPAIR
        conf.AVPHOTO=AVPHOTO
        conf.CMPDST=CMPDST
        conf.RYLDST=RYLDST
    return
    # end
    # DOUBLE PRECISION FUNCTION
    def DMAX0(IA,IB):
        #integer *8 IA,IB
        if(IA < IB):
            return IB
        else:
            return IA
        # endif
        return
    # end
    # DOUBLE PRECISION FUNCTION
    def DMIN0(IA,IB):
        #integer*8 IA,IB,IONE
        IONE=1
        if(IA > IB):
            return IB
        elif(IA < IONE):
            return IONE
        else: 
            return IA
    # end 
    # DOUBLE PRECISION FUNCTION
    def DRAND48(DUMMY):
        # *-----------------------------------------------------------------------
        # *   RNDM2  - returns double precision random numbers by calling RM48.
        # *   (Last changed on  5/ 2/00.)
        # *-----------------------------------------------------------------------
        # implicit none
        #integer NVEC
        # PARAMETER(NVEC=1000)
        NVEC=1000
        # DOUBLE PRECISION
        float(RVEC[NVEC])
        float(DUMMY)
        #integer IVEC
        IVEC=0
        RVEC,IVEC
        globals().update(locals())
        # *** Now generate random number between 0 and one.
        if(IVEC == 0 or IVEC >= NVEC):
            RM48(RVEC,NVEC)
            IVEC=1
        else:
            IVEC=IVEC+1
        # endif
        # *** Assign result.
        # DRAND48=RVEC[IVEC]
        return RVEC[IVEC]
    # end
    #CCCCCCC
    # *0
    # * $Id: rm48.F,v 1.2 1996/12/12 16:32:06 cernlib Exp $
    # *
    # * $Log: rm48.F,v $
    # * Revision 1.2  1996/12/12 16:32:06  cernlib
    # * Variables ONE and ZERO added to SAVE statement, courtesy R.Veenhof
    # *
    # * Revision 1.1.1.1  1996/04/01 15:02:55  mclareni
    # * Mathlib gen
    # *
    # *
    # *#include "gen/pilot.h"
      SUBROUTINE STATS2
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)   
      COMMON/INPT2/KGAS,LGAS,DETEFF,EXCWGHT                            
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE  
      COMMON/CLUS/XAV(100000),YAV(100000),ZAV(100000),TAV(100000),
     /XYAV(100000),XYZAV(100000),DX(100000),DY(100000),DZ(100000),
     /DT(100000),DXY(100000),DXYZ(100000),NCL(100000),FARX1(100000)
     /,FARY1(100000),FARZ1(100000),FARXY1(100000),RMAX1(100000),
     /TSUM(100000),XNEG(100000),
     /YNEG(100000),ZNEG(100000),EDELTA(100000),EDELTA2(100000),
     /NCLEXC(100000)
      COMMON/PRIM3/MSUM(10000),MCOMP(10000),MRAYL(10000),MPAIR(10000),
     /MPHOT(10000),MVAC(10000)
      COMMON/FANO/AFAN1,AFAN2,AFAN3,AFAN4,ASKEW,AKURT,AFAN1EXC,AFAN2EXC,
     /AFAN3EXC,AFAN4EXC,ASKEWEXC,AKURTEXC,AFAN1TOT,AFAN2TOT,AFAN3TOT,
     /AFAN4TOT,ASKEWTOT,AKURTTOT,AFAN1TOF,AFAN2TOF,AFAN3TOF,AFAN4TOF,
     /ASKEWTOF,AKURTTOF
      COMMON/FANOE/AFAN1E,AFAN2E,AFAN3E,AFAN4E,ASKEWE,AKURTE,AFAN1EXCE,
     /AFAN2EXCE,AFAN3EXCE,AFAN4EXCE,ASKEWEXCE,AKURTEXCE,AFAN1TOTE,
     /AFAN2TOTE,AFAN3TOTE,AFAN4TOTE,ASKEWTOTE,AKURTTOTE,AFAN1TOFE,
     /AFAN2TOFE,AFAN3TOFE,AFAN4TOFE,ASKEWTOFE,AKURTTOFE,NFE
      COMMON/RNGE/XBAR,YBAR,ZBAR,TBAR,XYBAR,XYZBAR,DXBAR,DYBAR,DZBAR,
     /DTBAR,DXYBAR,DXYZBAR,XMAX,YMAX,ZMAX,XYMAX,RMAX,SUMTT,XNEG1,YNEG1,
     /ZNEG1,FARXBAR,FARYBAR,FARZBAR,FARXYBAR,RMAXBAR,EBAR,EBAR2    
      COMMON/PRIM1/AVRAYL,AVCOMP,AVPAIR,AVPHOTO
      COMMON/PRIM2/CMPDST(10),RYLDST(10)
C      
C-----------------------------------------------------------------------
C   CALCULATES AVERAGES OVER TOTAL NUMBER OF DELTAS
C   CALCULATES FANO FACTORS FO,F1,F2 AND F3
C  CALCULATES FANO FACTORS FOR EXCITATION 
C  INCLUDED MODIFICATION TO CALCULATE ESCAPE PEAK FANO FACTORS 
C-----------------------------------------------------------------------
C 
      ANCL1=0.0D0
      ANCL2=0.0D0
      ANCL3=0.0D0
      ANCL4=0.0D0
      ANCL1E=0.0D0
      ANCL2E=0.0D0
      ANCL3E=0.0D0
      ANCL4E=0.0D0
      ANCL1EXC=0.0D0
      ANCL2EXC=0.0D0
      ANCL3EXC=0.0D0
      ANCL4EXC=0.0D0
      ANCL1EXCE=0.0D0
      ANCL2EXCE=0.0D0
      ANCL3EXCE=0.0D0
      ANCL4EXCE=0.0D0
      ANCL1TOT=0.0D0
      ANCL2TOT=0.0D0
      ANCL3TOT=0.0D0
      ANCL4TOT=0.0D0
      ANCL1TOTE=0.0D0
      ANCL2TOTE=0.0D0
      ANCL3TOTE=0.0D0
      ANCL4TOTE=0.0D0
      ANCL1TOF=0.0D0
      ANCL2TOF=0.0D0
      ANCL3TOF=0.0D0
      ANCL4TOF=0.0D0
      ANCL1TOFE=0.0D0
      ANCL2TOFE=0.0D0
      ANCL3TOFE=0.0D0
      ANCL4TOFE=0.0D0
      ATOTR=0.0D0
      ATOTC=0.0D0
      ATOTP=0.0D0
      ATOTPE=0.0D0
      NF=0
      NFE=0
      DETFRAC=DETEFF*0.01
      IF(DETEFF.EQ.0.0) THEN
       WRITE(6,99) 
   99  FORMAT(2/,' WARNING EXCITATION DETECTION EFFICIENCY WAS ZERO NOW 
     / SET TO 1.0 % ',2/)
       DETFRAC=0.01
      ENDIF
      DO 10 I=1,NDELTA
      NCLUS=NCL(I)
      NEXC=NCLEXC(I)
      IF(IMIP.EQ.1) GO TO 11 
      IF(MPAIR(I).GT.2) THEN
       WRITE(6,991) MPAIR(I),I
  991 FORMAT(' ERROR IN STATS2 MPAIR GT 2 =',I9,' EVENT NO=',I6)
       STOP
      ENDIF
      IF(MPAIR(I).GT.0) GO TO 5
C  REMOVE EXTRA ELECTRON FOR CONSISTENCY IN CLUSTER DEF FOR DELTAS      
   11 NCLUS1=NCLUS   
      IF(IMIP.EQ.2) NCLUS1=NCLUS-1
      ANC1=DFLOAT(NCLUS1)
      ANCL1=ANCL1+ANC1
      ANCL2=ANCL2+ANC1*ANC1
      ANCL3=ANCL3+ANC1*ANC1*ANC1
      ANCL4=ANCL4+ANC1*ANC1*ANC1*ANC1
      NTEMP=0
      DO 1 K=1,NEXC
      R1=drand48(RDUM)
      IF(R1.LT.DETFRAC) NTEMP=NTEMP+1
    1 CONTINUE
      ANC1EXC=DFLOAT(NEXC)
      ANCL1EXC=ANCL1EXC+ANC1EXC
      ANCL2EXC=ANCL2EXC+ANC1EXC*ANC1EXC
      ANCL3EXC=ANCL3EXC+ANC1EXC*ANC1EXC*ANC1EXC
      ANCL4EXC=ANCL4EXC+ANC1EXC*ANC1EXC*ANC1EXC*ANC1EXC
      ANCTOT=ANC1+DFLOAT(NTEMP)*EXCWGHT
      ANCL1TOT=ANCL1TOT+ANCTOT
      ANCL2TOT=ANCL2TOT+ANCTOT*ANCTOT
      ANCL3TOT=ANCL3TOT+ANCTOT*ANCTOT*ANCTOT
      ANCL4TOT=ANCL4TOT+ANCTOT*ANCTOT*ANCTOT*ANCTOT
      ANCTOF=ANC1+DFLOAT(NEXC)*EXCWGHT
      ANCL1TOF=ANCL1TOF+ANCTOF
      ANCL2TOF=ANCL2TOF+ANCTOF*ANCTOF
      ANCL3TOF=ANCL3TOF+ANCTOF*ANCTOF*ANCTOF
      ANCL4TOF=ANCL4TOF+ANCTOF*ANCTOF*ANCTOF*ANCTOF
      NF=NF+1
      GO TO 8
C  REMOVE EXTRA ELECTRON FOR CONSISTENCY IN CLUSTER DEF FOR DELTAS      
    5 NCLUS1=NCLUS   
      IF(IMIP.EQ.2) NCLUS1=NCLUS-1
      ANC1=DFLOAT(NCLUS1)
      ANCL1E=ANCL1E+ANC1
      ANCL2E=ANCL2E+ANC1*ANC1
      ANCL3E=ANCL3E+ANC1*ANC1*ANC1
      ANCL4E=ANCL4E+ANC1*ANC1*ANC1*ANC1
      NTEMP=0
      DO 6 K=1,NEXC
      R1=drand48(RDUM)
      IF(R1.LT.DETFRAC) NTEMP=NTEMP+1
    6 CONTINUE
      ANC1EXC=DFLOAT(NEXC)
      ANCL1EXCE=ANCL1EXCE+ANC1EXC
      ANCL2EXCE=ANCL2EXCE+ANC1EXC*ANC1EXC
      ANCL3EXCE=ANCL3EXCE+ANC1EXC*ANC1EXC*ANC1EXC
      ANCL4EXCE=ANCL4EXCE+ANC1EXC*ANC1EXC*ANC1EXC*ANC1EXC
      ANCTOT=ANC1+DFLOAT(NTEMP)*EXCWGHT
      ANCL1TOTE=ANCL1TOTE+ANCTOT
      ANCL2TOTE=ANCL2TOTE+ANCTOT*ANCTOT
      ANCL3TOTE=ANCL3TOTE+ANCTOT*ANCTOT*ANCTOT
      ANCL4TOTE=ANCL4TOTE+ANCTOT*ANCTOT*ANCTOT*ANCTOT
      ANCTOF=ANC1+DFLOAT(NEXC)*EXCWGHT
      ANCL1TOFE=ANCL1TOFE+ANCTOF
      ANCL2TOFE=ANCL2TOFE+ANCTOF*ANCTOF
      ANCL3TOFE=ANCL3TOFE+ANCTOF*ANCTOF*ANCTOF
      ANCL4TOFE=ANCL4TOFE+ANCTOF*ANCTOF*ANCTOF*ANCTOF
      NFE=NFE+1
    8 IF(IMIP.EQ.3) THEN
      ATOTR=ATOTR+MRAYL(I)
      ATOTC=ATOTC+MCOMP(I)
      ATOTP=ATOTP+MPAIR(I)
      ATOTPE=ATOTPE+MPHOT(I)
      ENDIF
   10 CONTINUE
C CALCULATE FANO FACTORS
      ANF=DFLOAT(NF)
      ANF1=ANF*ANF
      IF(ANF1.EQ.0.0) ANF1=1.0D0
      AFAN1=ANCL1/ANF
      AFAN1EXC=ANCL1EXC/ANF
      AFAN1TOT=ANCL1TOT/ANF
      AFAN1TOF=ANCL1TOF/ANF
      AFAN2=DSQRT((ANF*ANCL2-ANCL1*ANCL1)/ANF1)
      AFAN2EXC=DSQRT((ANF*ANCL2EXC-ANCL1EXC*ANCL1EXC)/ANF1)
      AFAN2TOT=DSQRT((ANF*ANCL2TOT-ANCL1TOT*ANCL1TOT)/ANF1)
      AFAN2TOF=DSQRT((ANF*ANCL2TOF-ANCL1TOF*ANCL1TOF)/ANF1)
      AFAN3=(ANCL3-3.0D0*AFAN1*ANCL2+2.0D0*ANCL1*AFAN1*AFAN1)/ANF
      AFAN3EXC=(ANCL3EXC-3.0D0*AFAN1EXC*ANCL2EXC+2.0D0*ANCL1EXC*AFAN1EXC
     /*AFAN1EXC)/ANF
      AFAN3TOT=(ANCL3TOT-3.0D0*AFAN1TOT*ANCL2TOT+2.0D0*ANCL1TOT*AFAN1TOT
     /*AFAN1TOT)/ANF
      AFAN3TOF=(ANCL3TOF-3.0D0*AFAN1TOF*ANCL2TOF+2.0D0*ANCL1TOF*AFAN1TOF
     /*AFAN1TOF)/ANF
      AFAN4=(ANCL4-4.0D0*AFAN1*ANCL3+6.0D0*AFAN1*AFAN1*ANCL2-3.0D0*AFAN1
     /*AFAN1*AFAN1*ANCL1)/ANF
      AFAN4=AFAN4-3.0D0*AFAN2*AFAN2*AFAN2*AFAN2
      AFAN4EXC=(ANCL4EXC-4.0D0*AFAN1EXC*ANCL3EXC+6.0D0*AFAN1EXC*AFAN1EXC
     /*ANCL2EXC-3.0D0*AFAN1EXC*AFAN1EXC*AFAN1EXC*ANCL1EXC)/ANF
      AFAN4EXC=AFAN4EXC-3.0D0*AFAN2EXC*AFAN2EXC*AFAN2EXC*AFAN2EXC
      AFAN4TOT=(ANCL4TOT-4.0D0*AFAN1TOT*ANCL3TOT+6.0D0*AFAN1TOT*AFAN1TOT
     /*ANCL2TOT-3.0D0*AFAN1TOT*AFAN1TOT*AFAN1TOT*ANCL1TOT)/ANF
      AFAN4TOT=AFAN4TOT-3.0D0*AFAN2TOT*AFAN2TOT*AFAN2TOT*AFAN2TOT
      AFAN4TOF=(ANCL4TOF-4.0D0*AFAN1TOF*ANCL3TOF+6.0D0*AFAN1TOF*AFAN1TOF
     /*ANCL2TOF-3.0D0*AFAN1TOF*AFAN1TOF*AFAN1TOF*ANCL1TOF)/ANF
      AFAN4TOF=AFAN4TOF-3.0D0*AFAN2TOF*AFAN2TOF*AFAN2TOF*AFAN2TOF
      ASKEW=AFAN3/(AFAN2**3)
      AKURT=AFAN4/(AFAN2**4)
      AFAN3=AFAN3/AFAN1
      AFAN4=AFAN4/AFAN1
      ASKEWEXC=AFAN3EXC/(AFAN2EXC**3)
      AKURTEXC=AFAN4EXC/(AFAN2EXC**4)
      AFAN3EXC=AFAN3EXC/AFAN1EXC
      AFAN4EXC=AFAN4EXC/AFAN1EXC
      ASKEWTOT=AFAN3TOT/(AFAN2TOT**3)
      AKURTTOT=AFAN4TOT/(AFAN2TOT**4)
      AFAN3TOT=AFAN3TOT/AFAN1TOT
      AFAN4TOT=AFAN4TOT/AFAN1TOT
      ASKEWTOF=AFAN3TOF/(AFAN2TOF**3)
      AKURTTOF=AFAN4TOF/(AFAN2TOF**4)
      AFAN3TOF=AFAN3TOF/AFAN1TOF
      AFAN4TOF=AFAN4TOF/AFAN1TOF
C CALCULATE FANO FACTORS FOR ESCAPE PEAK
      ANFE=DFLOAT(NFE)
      ANF1E=ANFE*ANFE
      IF(ANF1E.EQ.0.0) ANF1E=1.0D0
      AFAN1E=ANCL1E/ANFE
      AFAN1EXCE=ANCL1EXCE/ANFE
      AFAN1TOTE=ANCL1TOTE/ANFE
      AFAN1TOFE=ANCL1TOFE/ANFE
      AFAN2E=DSQRT((ANFE*ANCL2E-ANCL1E*ANCL1E)/ANF1E)
      AFAN2EXCE=DSQRT((ANFE*ANCL2EXCE-ANCL1EXCE*ANCL1EXCE)/ANF1E)
      AFAN2TOTE=DSQRT((ANFE*ANCL2TOTE-ANCL1TOTE*ANCL1TOTE)/ANF1E)
      AFAN2TOFE=DSQRT((ANFE*ANCL2TOFE-ANCL1TOFE*ANCL1TOFE)/ANF1E)
      AFAN3E=(ANCL3E-3.0D0*AFAN1E*ANCL2E+2.0D0*ANCL1E*AFAN1E*AFAN1E)/
     /ANFE
      AFAN3EXCE=(ANCL3EXCE-3.0D0*AFAN1EXCE*ANCL2EXCE+2.0D0*ANCL1EXCE*
     /AFAN1EXCE*AFAN1EXCE)/ANFE
      AFAN3TOTE=(ANCL3TOTE-3.0D0*AFAN1TOTE*ANCL2TOTE+2.0D0*ANCL1TOTE*
     /AFAN1TOTE*AFAN1TOTE)/ANFE
      AFAN3TOFE=(ANCL3TOFE-3.0D0*AFAN1TOFE*ANCL2TOFE+2.0D0*ANCL1TOFE*
     /AFAN1TOFE*AFAN1TOFE)/ANFE
      AFAN4E=(ANCL4E-4.0D0*AFAN1E*ANCL3E+6.0D0*AFAN1E*AFAN1E*ANCL2E-
     /3.0D0*AFAN1E*AFAN1E*AFAN1E*ANCL1E)/ANFE
      AFAN4E=AFAN4E-3.0D0*AFAN2E*AFAN2E*AFAN2E*AFAN2E
      AFAN4EXCE=(ANCL4EXCE-4.0D0*AFAN1EXCE*ANCL3EXCE+6.0D0*AFAN1EXCE*
     /AFAN1EXCE*ANCL2EXCE-3.0D0*AFAN1EXCE*AFAN1EXCE*AFAN1EXCE*
     /ANCL1EXCE)/ANFE
      AFAN4EXCE=AFAN4EXCE-3.0D0*AFAN2EXCE*AFAN2EXCE*AFAN2EXCE*AFAN2EXCE
      AFAN4TOTE=(ANCL4TOTE-4.0D0*AFAN1TOTE*ANCL3TOTE+6.0D0*AFAN1TOTE*
     /AFAN1TOTE*ANCL2TOTE-3.0D0*AFAN1TOTE*AFAN1TOTE*AFAN1TOTE*ANCL1TOTE)
     //ANFE
      AFAN4TOTE=AFAN4TOTE-3.0D0*AFAN2TOTE*AFAN2TOTE*AFAN2TOTE*AFAN2TOTE
      AFAN4TOFE=(ANCL4TOFE-4.0D0*AFAN1TOFE*ANCL3TOFE+6.0D0*AFAN1TOFE*
     /AFAN1TOFE*ANCL2TOFE-3.0D0*AFAN1TOFE*AFAN1TOFE*AFAN1TOFE*ANCL1TOFE)
     //ANFE
      AFAN4TOFE=AFAN4TOFE-3.0D0*AFAN2TOFE*AFAN2TOFE*AFAN2TOFE*AFAN2TOFE
      ASKEWE=AFAN3E/(AFAN2E**3)
      AKURTE=AFAN4E/(AFAN2E**4)
      AFAN3E=AFAN3E/AFAN1E
      AFAN4E=AFAN4E/AFAN1E
      ASKEWEXCE=AFAN3EXCE/(AFAN2EXCE**3)
      AKURTEXCE=AFAN4EXCE/(AFAN2EXCE**4)
      AFAN3EXCE=AFAN3EXCE/AFAN1EXCE
      AFAN4EXCE=AFAN4EXCE/AFAN1EXCE
      ASKEWTOTE=AFAN3TOTE/(AFAN2TOTE**3)
      AKURTTOTE=AFAN4TOTE/(AFAN2TOTE**4)
      AFAN3TOTE=AFAN3TOTE/AFAN1TOTE
      AFAN4TOTE=AFAN4TOTE/AFAN1TOTE
      ASKEWTOFE=AFAN3TOFE/(AFAN2TOFE**3)
      AKURTTOFE=AFAN4TOFE/(AFAN2TOFE**4)
      AFAN3TOFE=AFAN3TOFE/AFAN1TOFE
      AFAN4TOFE=AFAN4TOFE/AFAN1TOFE
C CALCULATE AVERAGES OVER TOTAL NUMBER OF DELTAS 
      XBAR=0.0D0
      YBAR=0.0D0
      ZBAR=0.0D0 
      TBAR=0.0D0
      XYBAR=0.0D0
      XYZBAR=0.0D0
      DXBAR=0.0D0
      DYBAR=0.0D0
      DZBAR=0.0D0
      DTBAR=0.0D0
      DXYBAR=0.0D0
      DXYZBAR=0.0D0
      FARXBAR=0.0D0
      FARYBAR=0.0D0
      FARZBAR=0.0D0
      FARXYBAR=0.0D0
      RMAXBAR=0.0D0
      XMAX=0.0D0
      YMAX=0.0D0
      ZMAX=0.0D0
      XYMAX=0.0D0
      RMAX=0.0D0
      SUMTT=0.0D0
      XNEGSUM=0.0D0
      YNEGSUM=0.0D0
      ZNEGSUM=0.0D0
      EBAR=0.0D0
      EBAR2=0.0D0
      DO 20 I=1,NDELTA
      XBAR=XBAR+XAV(I)
      YBAR=YBAR+YAV(I)
      ZBAR=ZBAR+ZAV(I)
      TBAR=TBAR+TAV(I)
      XYBAR=XYBAR+XYAV(I)
      XYZBAR=XYZBAR+XYZAV(I)
      DXBAR=DXBAR+DX(I)
      DYBAR=DYBAR+DY(I)
      DZBAR=DZBAR+DZ(I)
      DTBAR=DTBAR+DT(I)
      DXYBAR=DXYBAR+DXY(I)
      DXYZBAR=DXYZBAR+DXYZ(I)
      SUMTT=SUMTT+TSUM(I)
      FARXBAR=FARXBAR+FARX1(I)
      IF(FARX1(I).GT.XMAX) XMAX=FARX1(I)
      FARYBAR=FARYBAR+FARY1(I)
      IF(FARY1(I).GT.YMAX) YMAX=FARY1(I)
      FARZBAR=FARZBAR+FARZ1(I)
      IF(FARZ1(I).GT.ZMAX) ZMAX=FARZ1(I)
      FARXYBAR=FARXYBAR+FARXY1(I)
      IF(FARXY1(I).GT.XYMAX) XYMAX=FARXY1(I)
      RMAXBAR=RMAXBAR+RMAX1(I)
      IF(RMAX1(I).GT.RMAX) RMAX=RMAX1(I)
      XNEGSUM=XNEGSUM+XNEG(I)
      YNEGSUM=YNEGSUM+YNEG(I)
      ZNEGSUM=ZNEGSUM+ZNEG(I)
      EBAR=EBAR+EDELTA(I)
      EBAR2=EBAR2+EDELTA2(I)
   20 CONTINUE
      ANDELTA=DFLOAT(NDELTA)
      XBAR=XBAR/ANDELTA
      YBAR=YBAR/ANDELTA
      ZBAR=ZBAR/ANDELTA
      TBAR=TBAR/ANDELTA
      XYBAR=XYBAR/ANDELTA
      XYZBAR=XYZBAR/ANDELTA
      DXBAR=DXBAR/ANDELTA
      DYBAR=DYBAR/ANDELTA
      DZBAR=DZBAR/ANDELTA
      DTBAR=DTBAR/ANDELTA
      DXYBAR=DXYBAR/ANDELTA
      DXYZBAR=DXYZBAR/ANDELTA
      FARXBAR=FARXBAR/ANDELTA
      FARYBAR=FARYBAR/ANDELTA
      FARZBAR=FARZBAR/ANDELTA
      FARXYBAR=FARXYBAR/ANDELTA
      RMAXBAR=RMAXBAR/ANDELTA
      XNEG1=XNEGSUM/ANDELTA
      YNEG1=YNEGSUM/ANDELTA
      ZNEG1=ZNEGSUM/ANDELTA
      EBAR=EBAR/ANDELTA
      EBAR2=EBAR2/ANDELTA
      IF(IMIP.EQ.3) THEN
      AVRAYL=ATOTR/ANDELTA
      AVCOMP=ATOTC/ANDELTA
      AVPAIR=ATOTP/ANDELTA
      AVPHOTO=ATOTPE/ANDELTA
      ENDIF
      IF(IMIP.EQ.3) THEN
       DO 29 I=1,10
       RYLDST(I)=0.0
       CMPDST(I)=0.0
   29  CONTINUE
       DO 32 I=1,NDELTA
       IF(MRAYL(I).GE.10.OR.MRAYL(I).LT.1) GO TO 30
       RYLDST(MRAYL(I))=RYLDST(MRAYL(I))+1.0
   30  CONTINUE
       IF(MCOMP(I).GE.10.OR.MCOMP(I).LT.1) GO TO 31
       CMPDST(MCOMP(I))=CMPDST(MCOMP(I))+1.0
   31  CONTINUE
   32  CONTINUE
       DO 33 I=1,10
       RYLDST(I)=RYLDST(I)/ANDELTA
       CMPDST(I)=CMPDST(I)/ANDELTA
   33  CONTINUE
      ENDIF
      RETURN
      END
      DOUBLE PRECISION FUNCTION DMAX0(IA,IB)
      INTEGER *8 IA,IB
      IF(IA.LT.IB) THEN
       DMAX0=IB
      ELSE
       DMAX0=IA
      ENDIF
      RETURN
      END
      DOUBLE PRECISION FUNCTION DMIN0(IA,IB)
      INTEGER*8 IA,IB,IONE
      IONE=1
      IF(IA.GT.IB) THEN
       DMIN0=IB
      ELSE IF(IA.LT.IONE) THEN
       DMIN0=IONE
      ELSE 
       DMIN0=IA
      ENDIF
      RETURN
      END 
      DOUBLE PRECISION FUNCTION drand48(DUMMY)
*-----------------------------------------------------------------------
*   RNDM2  - Returns double precision random numbers by calling RM48.
*   (Last changed on  5/ 2/00.)
*-----------------------------------------------------------------------
       implicit none
       INTEGER NVEC
       PARAMETER(NVEC=1000)
       DOUBLE PRECISION RVEC(NVEC),DUMMY
       INTEGER IVEC
       DATA IVEC/0/
       SAVE RVEC,IVEC
*** Now generate random number between 0 and one.
       IF(IVEC.EQ.0.OR.IVEC.GE.NVEC)THEN
            CALL RM48(RVEC,NVEC)
            IVEC=1
       ELSE
            IVEC=IVEC+1
       ENDIF
*** Assign result.
       drand48=RVEC(IVEC)
       END

PRINTER()

Arguments

Argument Description
NONE -
def PRINTER():
    # IMPLICIT #real*8 (A-H,O-Z) 
    # IMPLICIT #integer*8 (I-N)   
    #integer*4 NSEED                                     
    #COMMON/INPT/
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    #COMMON/INPT2/
    global KGAS,LGAS,DETEFF,EXCWGHT
    #COMMON/INPT1/
    global NDVEC
    #COMMON/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG 
    #COMMON/RATIO/
    global AN1,AN2,AN3,AN4,AN5,AN6,AN
    global FRAC#(6)              
    #COMMON/SETP/
    global TMAX,SMALL,API,ESTART,THETA,PHI
    global TCFMAX#(10),
    global TCFMAX1,RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE                      
    #COMMON/BFLD/
    global EOVB,WB,BTHETA,BMAG  
    #COMMON/IONC/
    global DOUBLE#(6,20000),
    global CMINIXSC#(6),
    global CMINEXSC#(6),
    global ECLOSS#(6),
    global WPLN#(6),
    global ICOUNT,AVPFRAC#(3,6)
    #COMMON/LARGE/
    global CF#(20000,512),
    global EIN#(512),
    global TCF#(20000),
    global IARRY#(512),
    global RGAS#(512),
    global IPN#(512),
    global WPL#(512),
    global IZBR#(512),
    global IPLAST,PENFRA#(3,512)   
    #COMMON/NAMES/
    global NAMEG#(6)  
    #COMMON/KSEED/
    global NSEED 
    #COMMON/ECASC/
    global NEGAS#(512),
    global LEGAS#(512),
    global IESHELL#(512),
    global IECASC  
    NGAS=conf.NGAS
    NSTEP=conf.NSTEP
    NANISO=conf.NANISO
    EFINAL=conf.EFINAL
    ESTEP=conf.ESTEP
    AKT=conf.AKT
    ARY=conf.ARY
    TEMPC=conf.TEMPC
    TORR=conf.TORR
    IPEN=conf.IPEN
    KGAS=conf.KGAS
    LGAS=conf.LGAS
    DETEFF=conf.DETEFF
    EXCWGHT=conf.EXCWGHT
    NDVEC=conf.NDVEC
    LCMP=conf.LCMP
    LCFLG=conf.LCFLG
    LRAY=conf.LRAY
    LRFLG=conf.LRFLG
    LPAP=conf.LPAP
    LPFLG=conf.LPFLG
    LBRM=conf.LBRM
    LBFLG=conf.LBFLG
    LPEFLG =conf.LPEFLG 
    AN1=conf.AN1
    AN2=conf.AN2
    AN3=conf.AN3
    AN4=conf.AN4
    AN5=conf.AN5
    AN6=conf.AN6
    AN=conf.AN
    FRAC=conf.FRAC
    TMAX=conf.TMAX
    SMALL=conf.SMALL
    API=conf.API
    ESTART=conf.ESTART
    THETA=conf.THETA
    PHI=conf.PHI
    TCFMAX=conf.TCFMAX

    TCFMAX1=conf.TCFMAX1
    RSTART=conf.RSTART
    EFIELD=conf.EFIELD
    ETHRM=conf.ETHRM
    ECUT=conf.ECUT
    NEVENT=conf.NEVENT
    IMIP=conf.IMIP
    IWRITE=conf.IWRITE
    EOVB=conf.EOVB
    WB=conf.WB
    BTHETA=conf.BTHETA
    BMAG  =conf.BMAG  
    DOUBLE=conf.DOUBLE

    CMINIXSC=conf.CMINIXSC

    CMINEXSC=conf.CMINEXSC

    ECLOSS=conf.ECLOSS

    WPLN=conf.WPLN

    ICOUNT=conf.ICOUNT
    AVPFRAC=conf.AVPFRAC
    CF=conf.CF

    EIN=conf.EIN

    TCF=conf.TCF

    IARRY=conf.IARRY

    RGAS=conf.RGAS

    IPN=conf.IPN

    WPL=conf.WPL

    IZBR=conf.IZBR

    IPLAST=conf.IPLAST
    PENFRA=conf.PENFRA
    NAMEG=conf.NAMEG
    NSEED =conf.NSEED 
    NEGAS=conf.NEGAS

    LEGAS=conf.LEGAS

    IESHELL=conf.IESHELL

    IECASC  =conf.IECASC  
    # NAMEG=numpy.zeros(25+1,dtype=str)
    # WRITE(6,1)     
    print('\n           DEGRAD VERSION 3.3  \n','      -----------------------------\n\n')      
    if(IMIP == 1):
        print('   MIP AND DE/DX SIMULATION')    #2
    if(IMIP == 2):
        print('   ELECTRON BEAM SIMULATION')    
    if(IMIP == 3):
        print('   X-RAY SIMULATION')    #4
    if(IMIP == 4):
        print('   BETA DECAY SIMULATION')   #5
    if(IMIP == 5):
        print('   DOUBLE BETA DECAY SIMULATION')    #6
    print('----------------------------------\n\n')
    if(LCMP == 0):
        print('   SIMULATION WITHOUT COMPTON SCATTERING')   #7
    if(LCMP == 1):
        print('   SIMULATION WITH COMPTON SCATTERING')  #8
    if(LRAY == 0):
        print('   SIMULATION WITHOUT RAYLEIGH SCATTERING')  #9
    if(LRAY == 1):
        print('   SIMULATION WITH RAYLEIGH SCATTERING') #11 
    if(LPAP == 0):
        print('   SIMULATION WITHOUT PAIR PRODUCTION')  #12 
    if(LPAP == 1):
        print('   SIMULATION WITH PAIR PRODUCTION') #13 
    if(LBRM == 0):
        print('   SIMULATION WITHOUT BREMSSTRAHLUNG')   #14 
    if(LBRM == 1):  
        print('   SIMULATION WITH BREMSSTRAHLUNG')  #15 
    if(IECASC == 0):
        print('   SIMULATION WITH PARAMETERISED SHELL CASCADE') #16 
    if(IECASC == 1):
        print('   SIMULATION WITH COMPLETE SHELL CASCADE')  #17 
    print('----------------------------------\n\n')
    print('   MONTE CARLO SOLUTION FOR MIXTURE OF ',NGAS,' GASES.\n   DEGRADATION CALCULATION ALL TIMES IN PICOSECS, DISTANCE IN MICRONS\n   -----------------------------------------------------------------')
    # WRITE(6,30) (NAMEG[J],FRAC[J], J=1,NGAS)     
    for J in range(1,NGAS+1):
        print('\n',5*' ','  GASES  USED ',15*' ',' PERCENTAGE USED ',2*'\n',6*' ',NAMEG[J],5*' ','%.4f' % FRAC[J],'\n')
    print('\n','  ','GAS TEMPERATURE =','%.1f' % TEMPC,' DEGREES CENTIGRADE.','\n','  ','GAS PRESSURE = ','%.1f' % TORR,' TORR.')
    if(NSEED != 0):
        # WRITE(6,51) NSEED
        print(2*'\n',' RANDOM NUMBER SEED =',NSEED)
    if(NSEED == 0):
        # WRITE(6,52) 
        print(2*'\n',' STANDARD RANDOM NUMBER SEED = 54217137')
    if(IPEN == 0):
        # WRITE(6,55)
        print(2*'\n','  ',' PENNING IONISATION NOT ALLOWED')
    if(IPEN == 1):
        # WRITE(6,56)                              
        print(2*'\n','  ',' PENNING IONISATION ALLOWED')
    # WRITE(6,60) EFINAL,NSTEP                                          
    print(1*'\n','  ','INTEGRATION FROM 0.0 TO ','%.1f' % EFINAL,' EV.  IN ',NSTEP,' STEPS. ') 
    # WRITE(6,90) EFIELD,BMAG,BTHETA,WB                                 
    print(1*'\n','  ELECTRIC FIELD =','%.4f' % EFIELD,' VOLTS/CM.','\n''  MAGNETIC FIELD =','%.4f' % BMAG,' KILOGAUSS.','\n','  ANGLE BETWEEN ELECTRIC AND MAGNETIC FIELD =','%.3f' % BTHETA,' DEGREES.','\n','  CYCLOTRON FREQ. =','%.3f' % WB,' RADIANS/PICOSECOND')
    # WRITE(6,43)
    print('\n',' USED ANISOTROPIC X-SECTIONS (OKHRIMOVSKYY ET AL) ')
    if(ICOUNT == 1):
        # WRITE(6,34) 
        print(' USED COUNTING IONISATION X-SECTIONS')
    else:
        # WRITE(6,35)
        print(' USE GROSS IONISATION X-SECTIONS')
    # endif
    # WRITE(6,91) ESTART,NEVENT,ETHRM 
    # print(NEVENT,conf.NEVENT)
    print(1*'\n','  INITIAL ELECTRON OR X-RAY ENERGY =','%.1f' % ESTART,' EV.','\n',9*' ','NUMBER OF EVENTS =',NEVENT,'\n',4*' ','THERMALISATION ENERGY =','%.2f' % ETHRM,' EV.','\n')
    # WRITE(6,911) DETEFF,EXCWGHT
    print(' PHOTON DETECTION EFFICIENCY USED IN FANO CALCULATION =','%.3f' % DETEFF,' %','\n',7*' ','WEIGHT GIVEN TO EXCITATION IN FANO CALCULATION =','%.3f' % EXCWGHT,'\n') 
    # print(IMIP)
    if(IMIP == 4 or IMIP == 5):
        if(KGAS <= 0 or KGAS > NGAS):
            # WRITE(6,990) KGAS
            print(' ERROR IN INPUT: BETA DECAY IDENTifIER KGAS=',KGAS,'  PROGRAM STOPPED:')
            sys.exit()
        # endif
        if(LGAS <= 0 or LGAS > 3):
            # WRITE(6,991) LGAS
            print(' ERROR IN INPUT: BETA DECAY IDENTIFIER LGAS=',LGAS,'  PROGRAM STOPPED:')
            sys.exit() 
        # endif
        # WRITE(6,88) KGAS,LGAS
        print('\n  BETA DECAY IN GAS NO =',KGAS,'\n  IF MOLECULE : BETA DECAY IN ATOMIC COMPONENT =',LGAS,'\n')
    # endif
    if(NDVEC == 2):
        # WRITE(6,915)
        print('  BETA OR X-RAY IN RANDOM DIRECTION TO E-FIELD')
        pass
    else:
        # endif
        if(abs(numpy.cos(THETA)) < 1.e-9 and IMIP > 2):
            # WRITE(6,92)
            print('  BETA OR X-RAY PERP# endICULAR TO E-FIELD IN X-Y PLANE')  
        if(abs(numpy.cos(THETA)) < 1.e-9 and IMIP == 2):
            # WRITE(6,922)
            print('  ELECTRON BEAM ALONG X DIRECTION')
        if(numpy.cos(THETA)== 1.0):
            # WRITE(6,93)
            print('  E-BEAM,BETA OR X-RAY ALONG Z-AXIS IN E-FIELD DIRECTION')
        if(numpy.cos(THETA)== -1.0):
            # WRITE(6,94)
            print('  E-BEAM,BETA OR X-RAY ALONG Z-AXIS OPPOSITE TO E-FIELD DIRECTION')     
    # 95  WRITE(6,96) TCFMAX1 

    print("TCFMAX1",TCFMAX1,type(TCFMAX1))
    print('\n NULL COLLISION FREQUENCY = %.4f *(10**12/SEC)\n'%(TCFMAX1))
    # WRITE(6,111)  (TCF(L),L=500,9500,1000)
    for L in range(500,9500+1,1000):
        print('  ','REAL COLLISION FREQUENCY AT 10 EQUALLY SPACED ENERGY INTERVALS (*10**12/SEC)','\n')
        print(3*' ','%.3f' % TCF[L],'\t')
        if L==4500:
            print('\n')

    conf.NGAS=NGAS
    conf.NSTEP=NSTEP
    conf.NANISO=NANISO
    conf.EFINAL=EFINAL
    conf.ESTEP=ESTEP
    conf.AKT=AKT
    conf.ARY=ARY
    conf.TEMPC=TEMPC
    conf.TORR=TORR
    conf.IPEN=IPEN
    conf.KGAS=KGAS
    conf.LGAS=LGAS
    conf.DETEFF=DETEFF
    conf.EXCWGHT=EXCWGHT
    conf.NDVEC=NDVEC
    conf.LCMP=LCMP
    conf.LCFLG=LCFLG
    conf.LRAY=LRAY
    conf.LRFLG=LRFLG
    conf.LPAP=LPAP
    conf.LPFLG=LPFLG
    conf.LBRM=LBRM
    conf.LBFLG=LBFLG
    conf.LPEFLG =LPEFLG 
    conf.AN1=AN1
    conf.AN2=AN2
    conf.AN3=AN3
    conf.AN4=AN4
    conf.AN5=AN5
    conf.AN6=AN6
    conf.AN=AN
    conf.FRAC=FRAC
    conf.TMAX=TMAX
    conf.SMALL=SMALL
    conf.API=API
    conf.ESTART=ESTART
    conf.THETA=THETA
    conf.PHI=PHI
    conf.TCFMAX=TCFMAX

    conf.TCFMAX1=TCFMAX1
    conf.RSTART=RSTART
    conf.EFIELD=EFIELD
    conf.ETHRM=ETHRM
    conf.ECUT=ECUT
    conf.NEVENT=NEVENT
    conf.IMIP=IMIP
    conf.IWRITE=IWRITE                      
    conf.EOVB=EOVB
    conf.WB=WB
    conf.BTHETA=BTHETA
    conf.BMAG  =BMAG  
    conf.DOUBLE=DOUBLE

    conf.CMINIXSC=CMINIXSC

    conf.CMINEXSC=CMINEXSC

    conf.ECLOSS=ECLOSS

    conf.WPLN=WPLN

    conf.ICOUNT=ICOUNT
    conf.AVPFRAC=AVPFRAC
    conf.CF=CF

    conf.EIN=EIN

    conf.TCF=TCF

    conf.IARRY=IARRY

    conf.RGAS=RGAS

    conf.IPN=IPN

    conf.WPL=WPL

    conf.IZBR=IZBR

    conf.IPLAST=IPLAST
    conf.PENFRA=PENFRA
    conf.NSEED =NSEED 
    conf.NEGAS=NEGAS

    conf.LEGAS=LEGAS

    conf.IESHELL=IESHELL

    conf.IECASC  =IECASC  
    return                                                            
    # end                                                               
      SUBROUTINE PRINTER                                              
      IMPLICIT REAL*8 (A-H,O-Z) 
      IMPLICIT INTEGER*8 (I-N)   
      INTEGER*4 NSEED                                     
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/INPT2/KGAS,LGAS,DETEFF,EXCWGHT
      COMMON/INPT1/NDVEC
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG 
      COMMON/RATIO/AN1,AN2,AN3,AN4,AN5,AN6,AN,FRAC(6)              
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE                      
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG  
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6)
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),    
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)   
      COMMON/NAMES/NAMEG(6)  
      COMMON/KSEED/NSEED 
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC  
      CHARACTER*25 NAMEG                                  
      WRITE(6,1)     
    1 FORMAT(2/,10X,' DEGRAD VERSION 3.3  ',/,6X,
     /'-----------------------------',2/)      
      IF(IMIP.EQ.1) WRITE(6,2)
      IF(IMIP.EQ.2) WRITE(6,3)    
      IF(IMIP.EQ.3) WRITE(6,4)   
      IF(IMIP.EQ.4) WRITE(6,5)       
      IF(IMIP.EQ.5) WRITE(6,6)
      WRITE(6,245)
      IF(LCMP.EQ.0) WRITE(6,7)
      IF(LCMP.EQ.1) WRITE(6,8)
      IF(LRAY.EQ.0) WRITE(6,9)
      IF(LRAY.EQ.1) WRITE(6,11)
      IF(LPAP.EQ.0) WRITE(6,12)
      IF(LPAP.EQ.1) WRITE(6,13)
      IF(LBRM.EQ.0) WRITE(6,14)
      IF(LBRM.EQ.1) WRITE(6,15)
      IF(IECASC.EQ.0) WRITE(6,16)
      IF(IECASC.EQ.1) WRITE(6,17)
      WRITE(6,245) 
  245 FORMAT('----------------------------------',2(/))
    2 FORMAT(2X,' MIP AND DE/DX SIMULATION')
    3 FORMAT(2X,' ELECTRON BEAM SIMULATION')
    4 FORMAT(2X,' X-RAY SIMULATION')
    5 FORMAT(2X,' BETA DECAY SIMULATION')
    6 FORMAT(2X,' DOUBLE BETA DECAY SIMULATION')
    7 FORMAT(2X,' SIMULATION WITHOUT COMPTON SCATTERING')  
    8 FORMAT(2X,' SIMULATION WITH COMPTON SCATTERING')
    9 FORMAT(2X,' SIMULATION WITHOUT RAYLEIGH SCATTERING')
   11 FORMAT(2X,' SIMULATION WITH RAYLEIGH SCATTERING')
   12 FORMAT(2X,' SIMULATION WITHOUT PAIR PRODUCTION')
   13 FORMAT(2X,' SIMULATION WITH PAIR PRODUCTION')
   14 FORMAT(2X,' SIMULATION WITHOUT BREMSSTRAHLUNG')
   15 FORMAT(2X,' SIMULATION WITH BREMSSTRAHLUNG')
   16 FORMAT(2X,' SIMULATION WITH PARAMETERISED SHELL CASCADE')
   17 FORMAT(2X,' SIMULATION WITH COMPLETE SHELL CASCADE')
      WRITE(6,10) NGAS                                                  
   10 FORMAT(3X,'MONTE CARLO SOLUTION FOR MIXTURE OF ',I2,' GASES.',/,3X
     /,'DEGRADATION CALCULATION ALL TIMES IN PICOSECS, DISTANCE IN MICRO
     /NS',/,3X,'--------------------------------------------------------
     /---------')
      WRITE(6,30) (NAMEG(J),FRAC(J), J=1,NGAS)                          
  30  FORMAT(/,5X,'  GASES  USED ',15X,' PERCENTAGE USED ',2(/),6(6X,A25
     /,5X,F9.4,/))                    
      WRITE(6,50) TEMPC,TORR                                            
   50 FORMAT(/,2X,'GAS TEMPERATURE =',F6.1,' DEGREES CENTIGRADE.',/,2X,'
     /GAS PRESSURE = ',F7.1,' TORR.')
      IF(NSEED.NE.0) WRITE(6,51) NSEED
   51 FORMAT(2(/),' RANDOM NUMBER SEED =',I10)
      IF(NSEED.EQ.0) WRITE(6,52) 
   52 FORMAT(2(/),' STANDARD RANDOM NUMBER SEED = 54217137')
      IF(IPEN.EQ.0) WRITE(6,55)
   55 FORMAT(2(/),2X,' PENNING IONISATION NOT ALLOWED')
      IF(IPEN.EQ.1) WRITE(6,56)                              
   56 FORMAT(2(/),2X,' PENNING IONISATION ALLOWED')
      WRITE(6,60) EFINAL,NSTEP                                          
  60  FORMAT(1(/),2X,'INTEGRATION FROM 0.0 TO ',F11.1,' EV.  IN ',I5,' S
     /TEPS. ') 
      WRITE(6,90) EFIELD,BMAG,BTHETA,WB                                 
  90  FORMAT(1(/),'  ELECTRIC FIELD =',F12.4,' VOLTS/CM.',/'  MAGNETIC F
     /IELD =',F11.4,' KILOGAUSS.',/,'  ANGLE BETWEEN ELECTRIC AND MAGNET
     /IC FIELD =',F10.3,' DEGREES.',/,'  CYCLOTRON FREQ. =',E12.3,' RADI
     /ANS/PICOSECOND')
      WRITE(6,43)
  43  FORMAT(/,' USED ANISOTROPIC X-SECTIONS (OKHRIMOVSKYY ET AL) ')
      IF(ICOUNT.EQ.1) THEN
      WRITE(6,34) 
  34  FORMAT(' USED COUNTING IONISATION X-SECTIONS')
      ELSE
      WRITE(6,35)
  35  FORMAT(' USE GROSS IONISATION X-SECTIONS')
      ENDIF
      WRITE(6,91) ESTART,NDELTA,ETHRM 
  91  FORMAT(1(/),'  INITIAL ELECTRON OR X-RAY ENERGY =',F11.1,' EV.',/,
     /9X,'NUMBER OF EVENTS =',I9,/,4X,'THERMALISATION ENERGY =',F6.2,
     /' EV.',/)
      WRITE(6,911) DETEFF,EXCWGHT
  911 FORMAT(' PHOTON DETECTION EFFICIENCY USED IN FANO CALCULATION =',
     /F7.3,' %',/,7X,'WEIGHT GIVEN TO EXCITATION IN FANO CALCULATION =',
     /F7.3,/) 
      IF(IMIP.EQ.4.OR.IMIP.EQ.5) THEN
       IF(KGAS.LE.0.OR.KGAS.GT.NGAS) THEN
        WRITE(6,990) KGAS
  990   FORMAT(' ERROR IN INPUT: BETA DECAY IDENTIFIER KGAS=',I3,'  PROG
     /RAM STOPPED')
        STOP
       ENDIF
       IF(LGAS.LE.0.OR.LGAS.GT.3) THEN
        WRITE(6,991) LGAS
  991   FORMAT(' ERROR IN INPUT: BETA DECAY IDENTIFIER LGAS=',I3,'  PROG
     /RAM STOPPED')
        STOP 
       ENDIF
       WRITE(6,88) KGAS,LGAS
   88  FORMAT(/,'  BETA DECAY IN GAS NO =',I2,/,'  IF MOLECULE THEN BETA
     / DECAY IN ATOMIC COMPONENT =',I2,/)
      ENDIF
      IF(NDVEC.EQ.2) THEN
       WRITE(6,915)
  915  FORMAT('  BETA OR X-RAY IN RANDOM DIRECTION TO E-FIELD')
       GO TO 95
      ENDIF
      IF(DABS(DCOS(THETA)).LT.1.D-9.AND.IMIP.GT.2) WRITE(6,92)
      IF(DABS(DCOS(THETA)).LT.1.D-9.AND.IMIP.EQ.2) WRITE(6,922)
      IF(DCOS(THETA).EQ.1.0) WRITE(6,93)
      IF(DCOS(THETA).EQ.-1.0) WRITE(6,94)
 922  FORMAT('  ELECTRON BEAM ALONG X DIRECTION')
  92  FORMAT('  BETA OR X-RAY PERPENDICULAR TO E-FIELD IN X-Y PLANE')  
  93  FORMAT('  E-BEAM,BETA OR X-RAY ALONG Z-AXIS IN E-FIELD DIRECTION')
  94  FORMAT('  E-BEAM,BETA OR X-RAY ALONG Z-AXIS OPPOSITE TO E-FIELD DI
     /RECTION')  
      PRINT *, TCFMAX1 
  95  WRITE(6,96) TCFMAX1 
  96  FORMAT(/,2X,'NULL COLLISION FREQUENCY =',D10.3,' *(10**12/SEC)',/)
      WRITE(6,111)  (TCF(L),L=500,9500,1000)                            
  111 FORMAT(2X,'REAL COLLISION FREQUENCY AT 10 EQUALLY SPACED ENERGY IN
     /TERVALS (*10**12/SEC)',/,2(5(3X,D10.3)/))                   
      RETURN                                                            
      END

MIPCALC()

Arguments

Argument Description
NONE -
      SUBROUTINE MIPCALC
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)                                         
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE  
      COMMON/SET2/DRXINIT,DRYINIT,DRZINIT
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)
      COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      COMMON/MIPCLC/ANPRELA,ANPRATT,ANPREXC,ANPRION,ANPREXCI,ANPRBRM
      COMMON/DEDX/ELOSS,ELOSEX,ELOSION,ESUM,BETAGAM,TCFHIGH,VELC,
     /EMAXDEL,ELOSIONC,CUTIONFRC,ELOSEXI,ELOSBREM,NREJECT
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/MIPOUT/ENM(100000,20),XS(100000,20),YS(100000,20),
     /ZS(100000,20),DIRX(100000,20),DIRY(100000,20),DIRZ(100000,20),
     /TS(100000,20),IEVENT(100000)
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),DSTFL(512)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512) 
      DIMENSION CFTEMP(512),PSTEMP(512),ANTEMP(512)
C CALCULATE DE/DX AND DISTANCE BETWEEN PRIMARY CLUSTERS AND ALSO
C PRIMARY ELECTRON ENERGY AND VACANCY FOR INPUT TO THERMALISATION
C ALSO ADDS EXCITATION CLUSTERS WHICH HAVE PENNING FRACTIONS GT 0.0
C
C USE VELOCITY IN METRES/PICOSECOND
      VV=2.99792458D-4 
C MAXIMUM DELTA ELECTRON ENERGY ALLOWED IN EVENT OUTPUT SECTION= EMAXDEL
C NOTE NO LIMIT ON GLOBAL DE/DX CALCULATION
C
      EMAXDEL=ECUT      
      NREJECT=0
      NCUT=0
      NCUTT=0
C
      IEVMAX=100000  
      NPMAX=0    
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
      ANPRELA=0.0D0
      ANPRATT=0.0D0
      ANPREXC=0.0D0
      ANPREXCI=0.0D0
      ANPRION=0.0D0
      ANPRBRM=0.0D0
      ELOSS=0.0D0
      ELOSEX=0.0D0
      ELOSEXI=0.0D0
      ELOSION=0.0D0
      ELOSIONC=0.0D0
      ELOSBREM=0.0D0
      DO 1 I=1,IPLAST
      CFTEMP(I)=CF(20000,I)
      PSTEMP(I)=PSCT(20000,I)
      ANTEMP(I)=ANGCT(20000,I)
      TCFF=TCF(20000)
      BETA=BET(20000)
      GAMM=GAM(20000)
    1 CONTINUE
      VEL=BETA*VC
      DO 2 J=1,IPLAST
      IA=IARRY(J)
      IF(IA.EQ.4.OR.IA.EQ.5.OR.IA.EQ.9.OR.IA.EQ.10.OR.IA.EQ.14.OR.IA.EQ.
     /15.OR.IA.EQ.19.OR.IA.EQ.20.OR.IA.EQ.24.OR.IA.EQ.25.OR.IA.EQ.29.OR.
     /IA.EQ.30) THEN
C BREMSSTRAHLUNG EXCITATION OR SUPERELASTIC
       IF(J.NE.1) CFT=TCFF*(CFTEMP(J)-CFTEMP(J-1))
       IF(J.EQ.1) CFT=TCFF*CFTEMP(J)
C CHECK IF BREMSSTRAHLUNG
       IF(LBRM.EQ.1.AND.IZBR(J).NE.0) THEN
C BREMSSTRAHLUNG
C FIND AVERAGE BREMSSTRAHLUNG ENERGY LOSS OVER 10000 EVENTS
        IATOMNO=IZBR(J)
        E=ESTART
        ESUMBR=0.0
        WRITE(6,997) E
  997   FORMAT(' ENERGY=',D12.4)
        DO 111 K=1,10000
       CALL BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,
     /EGAMMA,GDCX,GDCY,GDCZ)
        ESUMBR=ESUMBR+EGAMMA
  111   CONTINUE
        ELBRM=ESUMBR/10000.0
        WRITE(6,998) ELBRM
  998   FORMAT(' ELBRM=',D12.4)
        ANPRBRM=ANPRBRM+CFT/VEL
        ELOSBREM=ELOSBREM+CFT*ELBRM/VEL
       ENDIF
       IF(LBRM.EQ.1.AND.IZBR(J).NE.0) GO TO 5
C EXCITATION OR SUPERELASTIC
        ANPREXC=ANPREXC+CFT/VEL
        ELOSEX=ELOSEX+CFT*EIN(J)*RGAS(J)/VEL
        IF(IPEN.EQ.1.AND.PENFRA(1,J).GT.0.0) THEN
C PENNING TRANSFER OF EXCITATION TO IONISATION
         ANPREXCI=ANPREXCI+PENFRA(1,J)*CFT/VEL
         ELOSEXI=ELOSEXI+PENFRA(1,J)*CFT*EIN(J)*RGAS(J)/VEL
        ENDIF
    5 CONTINUE
      ELSE IF(IA.EQ.1.OR.IA.EQ.6.OR.IA.EQ.11.OR.IA.EQ.16.OR.IA.EQ.21.OR.
     /IA.EQ.26) THEN
C ELASTIC ENERGY LOSS
       IF(J.NE.1) CFT=TCFF*(CFTEMP(J)-CFTEMP(J-1))
       IF(J.EQ.1) CFT=TCFF*CFTEMP(J)
       ANPRELA=ANPRELA+CFT/VEL
C CALCULATE ELASTIC ENERGY LOSS AVERAGED OVER NE EVENTS
C USE ANISOTROPIC SCATTERING
       NE=10000
       ELAS=0.0D0
       RFAC=1.0D0+GAMM*(RGAS(J)-1.0D0)
       RFAC=(RFAC-1.0D0)/(RFAC*RFAC)
       DO 66 K=1,NE
       R3=drand48(RDUM)
       IF(INDEX(J).EQ.1) THEN
        R31=drand48(RDUM)
        F3=1.0D0-R3*ANTEMP(J)
        IF(R31.GT.PSTEMP(J)) F3=-F3
       ELSE IF(INDEX(J).EQ.2) THEN
        EPSI=PSTEMP(J)
        F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3)))
       ELSE
C ISOTROPIC SCATTERING
        F3=1.0D0-2.0D0*R3
       ENDIF
       ELAS=ELAS+(1.0D0-F3)
   66  CONTINUE
       ELOSS=CFT*2.0D0*RFAC*EFINAL*ELAS/VEL
       ELOSS=ELOSS/DFLOAT(NE)
      ELSE IF(IA.EQ.3.OR.IA.EQ.8.OR.IA.EQ.13.OR.IA.EQ.18.OR.IA.EQ.23.OR.
     /IA.EQ.28) THEN
C ATTACHMENT
      ANPRATT=ANPRATT+TCFF*(CFTEMP(J)-CFTEMP(J-1))/VEL
      ELSE IF(IA.EQ.2.OR.IA.EQ.7.OR.IA.EQ.12.OR.IA.EQ.17.OR.IA.EQ.22.OR.
     /IA.EQ.27) THEN
C IONISATION
      ANPRION=ANPRION+TCFF*(CFTEMP(J)-CFTEMP(J-1))/VEL
      ELSE 
       WRITE(6,99)
   99  FORMAT(' WARNING NO COLLISION TYPE IN SUBROUTINE MIPCALC')    
      ENDIF
    2 CONTINUE
C CALCULATE ENERGY LOSS TO IONISATION AVERAGED OVER NEV EVENTS
      NEV=10000000
      ETEMP=0.0
      ETEMPC=0.0
      DO 3 J=1,IPLAST
      IA=IARRY(J)
      IF(IA.EQ.2.OR.IA.EQ.7.OR.IA.EQ.12.OR.IA.EQ.17.OR.IA.EQ.22.OR.IA.
     /EQ.27) THEN
       IF(EFINAL.LT.EIN(J)) GO TO 3
C  NEV = NO OF IONISATION EVENTS TO AVERAGE
       DO 4 K=1,NEV
       IF(IONMODEL(J).GT.0) THEN
C CALCULATE SECONDARY ENERGY ,ESEC, IN IONISATION COLLISION USING
C FIVE DIFFERENT POSSIBLE MODELS
         CALL IONSPLIT(J,ESTART,EIN(J),ETEMP1)
         GO TO  644
        ENDIF
       R9=drand48(RDUM)
       ETEMP1=WPL(J)*TAN(R9*ATAN((ESTART-EIN(J))/(2.0D0*WPL(J)))) 
       ETEMP1=WPL(J)*(ETEMP1/WPL(J))**0.9524
  644  CONTINUE    
       ETEMP=ETEMP+ETEMP1+EIN(J)*RGAS(J)
       NCUTT=NCUTT+1
       IF((ETEMP1+EIN(J)*RGAS(J)).LT.EMAXDEL) THEN
        ETEMPC=ETEMPC+ETEMP1+EIN(J)*RGAS(J)
        NCUT=NCUT+1
       ENDIF
    4  CONTINUE
       IF(J.NE.1) CFT=TCFF*(CFTEMP(J)-CFTEMP(J-1))
       IF(J.EQ.1) CFT=TCFF*CFTEMP(J)
       ETEMP=CFT*ETEMP/VEL
       ETEMPC=CFT*ETEMPC/VEL
       ETEMP=ETEMP/DFLOAT(NEV)
       ETEMPC=ETEMPC/DFLOAT(NEV)
       ELOSION=ELOSION+ETEMP
       ELOSIONC=ELOSIONC+ETEMPC
       ELSE
      ENDIF
    3 CONTINUE
      BETAGAM=BETA*GAMM
C CONVERT TO EV/CM
      ELOSS=ELOSS*1.D10
      ELOSEX=ELOSEX*1.D10
      ELOSEXI=ELOSEXI*1.D10
      ELOSION=ELOSION*1.D10
      ELOSIONC=ELOSIONC*1.D10
      ELOSBREM=ELOSBREM*1.D10
C CONVERT COLLISIONS/CM
      ANPRELA=ANPRELA*1.D10
      ANPRATT=ANPRATT*1.D10
      ANPREXC=ANPREXC*1.D10
      ANPREXCI=ANPREXCI*1.D10
      ANPRION=ANPRION*1.D10
      ANPRBRM=ANPRBRM*1.D10
      ESUM=ELOSS+ELOSEX+ELOSION+ELOSBREM
      VELC=VEL*100.
      TCFHIGH=TCF(20000)*1.D12
      CUTIONFRC=DFLOAT(NCUT)/DFLOAT(NCUTT)
C 
C  LOAD EVENT ARRAYS WITH ELECTRON ENERGY AND DIRECTION COSINES
C  ADDS ELECTRONS FROM PENNING EXCITATION IF ALLOWED
      DO 100 K=1,NEVENT 
      IF(K.GT.IEVMAX) THEN
      WRITE(6,999) IEVMAX
  999 FORMAT(' WARNING MAXIMUM NUMBER OF EVENTS=',I6,' PROGRAM STOPPED')
      ENDIF
      NP=0
C
C DETERMINE COLLISION TYPE   
C
   10 R1=drand48(RDUM)
      I=0
   11 I=I+1 
      IF(CFTEMP(I).LT.R1) GO TO 11
C FIND TYPE OF INTERACTION
      IA=IARRY(I)
      IF(IA.EQ.2.OR.IA.EQ.7.OR.IA.EQ.12.OR.IA.EQ.17.OR.IA.EQ.22.OR.IA.
     /EQ.27) THEN
C  IONISATION
C-----------------------------------------------------------------
   12  R9=drand48(RDUM)
       ESEC=WPL(I)*TAN(R9*ATAN((ESTART-EIN(I))/(2.0D0*WPL(I)))) 
       ESEC=WPL(I)*(ESEC/WPL(I))**0.9524
       IF(ESEC.GT.EMAXDEL) THEN
        NREJECT=NREJECT+1
        GO TO 12
       ENDIF
C CALCULATE PRIMARY SCATTERING ANGLE 
C ANISOTROPIC SCATTERING
       R3=drand48(RDUM)
       IF(INDEX(I).EQ.1) THEN
        R31=drand48(RDUM)
        F3=1.0D0-R3*ANTEMP(I)
        IF(R31.GT.PSTEMP(I)) F3=-F3
       ELSE IF(INDEX(I).EQ.2) THEN
        EPSI=PSTEMP(I) 
        F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3)))
       ELSE 
C ISOTROPIC SCATTERING
        F3=1.0D0-2.0D0*R3
       ENDIF
       THETAP=DACOS(F3)
       F5P=DSIN(THETAP)
       GAMSEC=(EMS+ESEC)/EMS
C CALCULATE SECONDARY RECOIL ANGLE FROM FREE KINEMATICS
       F5S=F5P*DSQRT(ESTART/ESEC)*GAMM/GAMSEC
       IF(F5S.GT.1.0) F5S=1.0
       THETAS=DASIN(F5S)
       R1=drand48(RDUM)
       PHIS=TWOPI*R1
C CALCULATE NEW DIRECTION COSINES FROM INITIAL VALUES AND SCAT. ANGLES
       CALL DRCOS(DRXINIT,DRYINIT,DRZINIT,THETAS,PHIS,DRXX,DRYY,DRZZ)
C LOAD SECONDARY ELECTRON DATA  
       NP=NP+1
       IF(NP.GT.NPMAX) NPMAX=NP
       IF(NP.GT.20) WRITE(6,991)
  991  FORMAT(' EVENT WITH N0 OF PRIMARIES GT 20 IN MIPCALC STOPPED PROG
     /RAM')
       IF(NP.GT.20) STOP
       ENM(K,NP)=ESEC
       DIRX(K,NP)=DRXX 
       DIRY(K,NP)=DRYY 
       DIRZ(K,NP)=DRZZ
       XS(K,NP)=0.0
       YS(K,NP)=0.0
       ZS(K,NP)=0.0
       TS(K,NP)=0.0
       IEVENT(K)=NP
C CALCULATE POSSIBLE SHELL EMISSIONS: AUGER OR FLUORESCENCE
       IFLTST=0
       IF(WKLM(I).GT.0.0) THEN
        R9=drand48(RDUM)
        IF(R9.LT.WKLM(I)) IFLTST=1
       ENDIF
       IF(IFLTST.EQ.0) THEN
C AUGER EMISSION WITHOUT FLUORESCENCE
        NAUG=NC0(I)
        EAVAUG=EC0(I)/DFLOAT(NAUG)
        DO 700 JFL=1,NC0(I)
        NP=NP+1
        IF(NP.GT.NPMAX) NPMAX=NP
        IF(NP.GT.20) WRITE(6,991)
        IF(NP.GT.20) STOP
        ENM(K,NP)=EAVAUG
C RANDOM EMISSION ANGLE
        R3=drand48(RDUM)
        F3=1.0D0-2.0D0*R3
        THETAS=DACOS(F3)
        F6=DCOS(THETAS)
        F5=DSIN(THETAS)
        R4=drand48(RDUM)
        PHIS=TWOPI*R4
        F8=DSIN(PHIS)
        F9=DCOS(PHIS)
        DIRX(K,NP)=F9*F5
        DIRY(K,NP)=F8*F5
        DIRZ(K,NP)=F6
        XS(K,NP)=0.0
        YS(K,NP)=0.0
        ZS(K,NP)=0.0
        TS(K,NP)=0.0
  700   CONTINUE
        IEVENT(K)=NP
       ELSE 
C AUGER EMISSION AND FLUORESCENCE
        IF(NG2(I).EQ.0) GO TO 702
        NAUG=NG2(I)
        EAVAUG=EG2(I)/DFLOAT(NAUG)
        DO 701 JFL=1,NG2(I)
        NP=NP+1
        IF(NP.GT.NPMAX) NPMAX=NP
        IF(NP.GT.20) WRITE(6,991)
        IF(NP.GT.20) STOP
        ENM(K,NP)=EAVAUG
C RANDOM EMISSION ANGLE
        R3=drand48(RDUM)
        THETAS=DACOS(1.0-2.0*R3)
        F6=DCOS(THETAS)
        F5=DSIN(THETAS)
        R4=drand48(RDUM)
        PHIS=TWOPI*R4
        F8=DSIN(PHIS)
        F9=DCOS(PHIS)
        DIRX(K,NP)=F9*F5
        DIRY(K,NP)=F8*F5
        DIRZ(K,NP)=F6
        XS(K,NP)=0.0
        YS(K,NP)=0.0
        ZS(K,NP)=0.0
        TS(K,NP)=0.0
  701   CONTINUE
        IEVENT(K)=NP
  702   IF(NG1(I).EQ.0) GO TO 704
        NAUG=NG1(I)
        EAVAUG=EG1(I)/DFLOAT(NAUG)
        R9=drand48(RDUM)
C FLUORESCENCE ABSORPTION DISTANCE
        DFL=-DLOG(R9)*DSTFL(I)
        DO 703 JFL=1,NG1(I)
        NP=NP+1
        IF(NP.GT.NPMAX) NPMAX=NP
        IF(NP.GT.20) WRITE(6,991)
        IF(NP.GT.20) STOP
        ENM(K,NP)=EAVAUG
C RANDOM EMISSION ANGLE
        R3=drand48(RDUM)
        THETAS=DACOS(1.0-2.0*R3)
        F6=DCOS(THETAS)
        F5=DSIN(THETAS)
        R4=drand48(RDUM)
        PHIS=TWOPI*R4
        F8=DSIN(PHIS)
        F9=DCOS(PHIS)
        DIRX(K,NP)=F9*F5
        DIRY(K,NP)=F8*F5
        DIRZ(K,NP)=F6
        R3=drand48(RDUM)
        THEFL=DACOS(1.0-2.0*R3) 
        R4=drand48(RDUM)
        PHIFL=TWOPI*R4
        XS(K,NP)=DFL*DSIN(THEFL)*DCOS(PHIFL)
        YS(K,NP)=DFL*DSIN(THEFL)*DSIN(PHIFL)
        ZS(K,NP)=DFL*DCOS(THEFL)  
        TS(K,NP)=DFL/VV
  703   CONTINUE
        IEVENT(K)=NP
  704   CONTINUE   
       ENDIF
      ELSE IF(IA.EQ.4.OR.IA.EQ.9.OR.IA.EQ.14.OR.IA.EQ.14.OR.IA.EQ.19.
     /OR.IA.EQ.24.OR.IA.EQ.29) THEN
C EXCITATION
C----------------------------------------------------------------
       IF(PENFRA(1,I).EQ.0.0.OR.IPEN.EQ.0) GO TO 10
C POSSIBLE PENNING TRANSFER
       R9=drand48(RDUM)
       IF(R9.LT.PENFRA(1,I)) THEN
C PENNING TRANSFER
        NP=NP+1
        IF(NP.GT.NPMAX) NPMAX=NP
        IF(NP.GT.20) WRITE(6,991)
        IF(NP.GT.20) STOP
C FINITE PENNING FIXED ELECTRON ENERGY TO 4.0EV
        ENM(K,NP)=4.0
C RANDOM EMISSION ANGLE
        R3=drand48(RDUM)
        THETAS=DACOS(1.0-2.0*R3)
        F6=DCOS(THETAS)
        F5=DSIN(THETAS)
        R4=drand48(RDUM)
        PHIS=TWOPI*R4
        F8=DSIN(PHIS)
        F9=DCOS(PHIS)
        DIRX(K,NP)=F9*F5
        DIRY(K,NP)=F8*F5
        DIRZ(K,NP)=F6
C PENNING TRANSFER DISTANCE
        ASIGN=1.0D0
        R1=drand48(RDUM)
        IF(R1.LT.0.5)ASIGN=-ASIGN
        R9=drand48(RDUM)
        XS(K,NP)=-DLOG(R9)*PENFRA(2,I)*1.D-6*ASIGN
        R1=drand48(RDUM)
        IF(R1.LT.0.5)ASIGN=-ASIGN
        R9=drand48(RDUM)
        YS(K,NP)=-DLOG(R9)*PENFRA(2,I)*1.D-6*ASIGN
        R1=drand48(RDUM)
        IF(R1.LT.0.5)ASIGN=-ASIGN
        R9=drand48(RDUM)
        ZS(K,NP)=-DLOG(R9)*PENFRA(2,I)*1.D-6*ASIGN
        R9=drand48(RDUM)
        TS(K,NP)=-DLOG(R9)*PENFRA(3,I)
        IEVENT(K)=NP
       ELSE
        GO TO 10
       ENDIF  
      ELSE
C ELASTIC
C-----------------------------------------------------------------
       GO TO 10
      ENDIF
  100 CONTINUE
      WRITE(6,888) NPMAX
  888 FORMAT(' NPMAX=',I3)
      RETURN
      END
def MIPCALC():
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)                                         
    #/INPT/
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    #/SETP/
    global TMAX,SMALL,API,ESTART,THETA,PHI
    global TCFMAX#(10)
    global TCFMAX1,RSTART,EFIELD,ETHRM,ECUT,NEVENT,IMIP,IWRITE  
    #/SET2/
    global DRXINIT,DRYINIT,DRZINIT
    #/LARGE/
    global CF#(20000,512)
    global EIN#(512)
    global TCF#(20000)
    global IARRY#(512)
    global RGAS#(512)
    global IPN#(512)
    global WPL#(512)
    global IZBR#(512)
    global IPLAST
    global PENFRA#[3][512]
    #/ANIS/
    global PSCT#(20000,512)
    global ANGCT#(20000,512)
    global INDEX#(512)
    global NISO
    #/RLTVY/
    global BET#[2000]
    global GAM#(20000)
    global VC,EMS
    #/MIPCLC/
    global ANPRELA,ANPRATT,ANPREXC,ANPRION,ANPREXCI,ANPRBRM
    #/DEDX/
    global ELOSS,ELOSEX,ELOSION,ESUM,BETAGAM,TCFHIGH,VELC,EMAXDEL,ELOSIONC,CUTIONFRC,ELOSEXI,ELOSBREM,NREJECT
    #/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    #/MIPOUT/
    global ENM#(100000,20)
    global XS#(100000,20)
    global YS#(100000,20)
    global ZS#(100000,20)
    global DIRX#(100000,20)
    global DIRY#(100000,20)
    global DIRZ#[100000,20]
    global TS#(100000,20)
    global IEVENT#(100000)
    #/IONFL/
    global NC0#(512)
    global EC0#(512)
    global NG1#(512)
    global EG1#(512)
    global NG2#(512)
    global EG2#(512)
    global WKLM#(512)
    global DSTFL#(512)
    #/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512) 
    def get_globals():
        NGAS=conf.NGAS
        NSTEP=conf.NSTEP
        NANISO=conf.NANISO
        EFINAL=conf.EFINAL
        ESTEP=conf.ESTEP
        AKT=conf.AKT
        ARY=conf.ARY
        TEMPC=conf.TEMPC
        TORR=conf.TORR
        IPEN=conf.IPEN
        TMAX=conf.TMAX
        SMALL=conf.SMALL
        API=conf.API
        ESTART=conf.ESTART
        THETA=conf.THETA
        PHI=conf.PHI
        TCFMAX=conf.TCFMAX
        TCFMAX1=conf.TCFMAX1
        RSTART=conf.RSTART
        EFIELD=conf.EFIELD
        ETHRM=conf.ETHRM
        ECUT=conf.ECUT
        NEVENT=conf.NEVENT
        IMIP=conf.IMIP
        IWRITE  =conf.IWRITE  
        DRXINIT=conf.DRXINIT
        DRYINIT=conf.DRYINIT
        DRZINIT=conf.DRZINIT
        CF=conf.CF
        EIN=conf.EIN
        TCF=conf.TCF
        IARRY=conf.IARRY
        RGAS=conf.RGAS
        IPN=conf.IPN
        WPL=conf.WPL
        IZBR=conf.IZBR
        IPLAST=conf.IPLAST
        PENFRA=conf.PENFRA
        PSCT=conf.PSCT
        ANGCT=conf.ANGCT
        INDEX=conf.INDEX
        NISO=conf.NISO
        BET=conf.BET
        GAM=conf.GAM
        VC=conf.VC
        EMS=conf.EMS
        ANPRELA=conf.ANPRELA
        ANPRATT=conf.ANPRATT
        ANPREXC=conf.ANPREXC
        ANPRION=conf.ANPRION
        ANPREXCI=conf.ANPREXCI
        ANPRBRM=conf.ANPRBRM
        ELOSS=conf.ELOSS
        ELOSEX=conf.ELOSEX
        ELOSION=conf.ELOSION
        ESUM=conf.ESUM
        BETAGAM=conf.BETAGAM
        TCFHIGH=conf.TCFHIGH
        VELC=conf.VELC
        EMAXDEL=conf.EMAXDEL
        ELOSIONC=conf.ELOSIONC
        CUTIONFRC=conf.CUTIONFRC
        ELOSEXI=conf.ELOSEXI
        ELOSBREM=conf.ELOSBREM
        NREJECT=conf.NREJECT
        LCMP=conf.LCMP
        LCFLG=conf.LCFLG
        LRAY=conf.LRAY
        LRFLG=conf.LRFLG
        LPAP=conf.LPAP
        LPFLG=conf.LPFLG
        LBRM=conf.LBRM
        LBFLG=conf.LBFLG
        LPEFLG=conf.LPEFLG
        ENM=conf.ENM
        XS=conf.XS
        YS=conf.YS
        ZS=conf.ZS
        DIRX=conf.DIRX
        DIRY=conf.DIRY
        DIRZ=conf.DIRZ
        TS=conf.TS
        IEVENT=conf.IEVENT
        NC0=conf.NC0
        EC0=conf.EC0
        NG1=conf.NG1
        EG1=conf.EG1
        NG2=conf.NG2
        EG2=conf.EG2
        WKLM=conf.WKLM
        DSTFL=conf.DSTFL
        ESPLIT=conf.ESPLIT
        IONMODEL=conf.IONMODEL
    get_globals()
    def update_globals():
        conf.NGAS=NGAS
        conf.NSTEP=NSTEP
        conf.NANISO=NANISO
        conf.EFINAL=EFINAL
        conf.ESTEP=ESTEP
        conf.AKT=AKT
        conf.ARY=ARY
        conf.TEMPC=TEMPC
        conf.TORR=TORR
        conf.IPEN=IPEN
        conf.TMAX=TMAX
        conf.SMALL=SMALL
        conf.API=API
        conf.ESTART=ESTART
        conf.THETA=THETA
        conf.PHI=PHI
        conf.TCFMAX=TCFMAX
        conf.TCFMAX1=TCFMAX1
        conf.RSTART=RSTART
        conf.EFIELD=EFIELD
        conf.ETHRM=ETHRM
        conf.ECUT=ECUT
        conf.NEVENT=NEVENT
        conf.IMIP=IMIP
        conf.IWRITE  =IWRITE  
        conf.DRXINIT=DRXINIT
        conf.DRYINIT=DRYINIT
        conf.DRZINIT=DRZINIT
        conf.CF=CF
        conf.EIN=EIN
        conf.TCF=TCF
        conf.IARRY=IARRY
        conf.RGAS=RGAS
        conf.IPN=IPN
        conf.WPL=WPL
        conf.IZBR=IZBR
        conf.IPLAST=IPLAST
        conf.PENFRA=PENFRA
        conf.PSCT=PSCT
        conf.ANGCT=ANGCT
        conf.INDEX=INDEX
        conf.NISO=NISO
        conf.BET=BET
        conf.GAM=GAM
        conf.VC=VC
        conf.EMS=EMS
        conf.ANPRELA=ANPRELA
        conf.ANPRATT=ANPRATT
        conf.ANPREXC=ANPREXC
        conf.ANPRION=ANPRION
        conf.ANPREXCI=ANPREXCI
        conf.ANPRBRM=ANPRBRM
        conf.ELOSS=ELOSS
        conf.ELOSEX=ELOSEX
        conf.ELOSION=ELOSION
        conf.ESUM=ESUM
        conf.BETAGAM=BETAGAM
        conf.TCFHIGH=TCFHIGH
        conf.VELC=VELC
        conf.EMAXDEL=EMAXDEL
        conf.ELOSIONC=ELOSIONC
        conf.CUTIONFRC=CUTIONFRC
        conf.ELOSEXI=ELOSEXI
        conf.ELOSBREM=ELOSBREM
        conf.NREJECT=NREJECT
        conf.LCMP=LCMP
        conf.LCFLG=LCFLG
        conf.LRAY=LRAY
        conf.LRFLG=LRFLG
        conf.LPAP=LPAP
        conf.LPFLG=LPFLG
        conf.LBRM=LBRM
        conf.LBFLG=LBFLG
        conf.LPEFLG=LPEFLG
        conf.ENM=ENM
        conf.XS=XS
        conf.YS=YS
        conf.ZS=ZS
        conf.DIRX=DIRX
        conf.DIRY=DIRY
        conf.DIRZ=DIRZ
        conf.TS=TS
        conf.IEVENT=IEVENT
        conf.NC0=NC0
        conf.EC0=EC0
        conf.NG1=NG1
        conf.EG1=EG1
        conf.NG2=NG2
        conf.EG2=EG2
        conf.WKLM=WKLM
        conf.DSTFL=DSTFL
        conf.ESPLIT=ESPLIT
        conf.IONMODEL=IONMODEL
    CFTEMP=numpy.zeros(512+1)#[0 for x in range(512)]
    PSTEMP=numpy.zeros(512+1)#[0 for x in range(512)]
    ANTEMP=numpy.zeros(512+1)#[0 for x in range(512)]
    # CALCULATE DE/DX AND DISTANCE BETWEEN PRIMARY CLUSTERS AND ALSO
    # PRIMARY ELECTRON ENERGY AND VACANCY FOR INPUT TO THERMALISATION
    # ALSO ADDS EXCITATION CLUSTERS WHICH HAVE PENNING FRACTIONS GT 0.0
    #
    # USE VELOCITY IN METRES/PICOSECOND
    VV=2.99792458*(10**-4 )
    # MAXIMUM DELTA ELECTRON ENERGY ALLOWED IN EVENT OUTPUT SECTION= EMAXDEL
    # NOTE NO LIMIT ON GLOBAL DE/DX CALCULATION
    #
    EMAXDEL=ECUT      
    NREJECT=0
    NCUT=0
    NCUTT=0
    #
    IEVMAX=100000   
    NPMAX=0    
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    ANPRELA=0.00
    ANPRATT=0.00
    ANPREXC=0.00
    ANPREXCI=0.00
    ANPRION=0.00
    ANPRBRM=0.00
    ELOSS=0.00
    ELOSEX=0.00
    ELOSEXI=0.00
    ELOSION=0.00
    ELOSIONC=0.00
    ELOSBREM=0.00
    for I in range(1,IPLAST+1):
        CFTEMP[I]=CF[20000][I]
        PSTEMP[I]=PSCT[20000][I]
        ANTEMP[I]=ANGCT[20000][I]
        TCFF=TCF[20000]
        BETA=BET[2000]
        GAMM=GAM[20000]
    VEL=BETA*VC
    for J in range(1,IPLAST+1):
        IA=IARRY[J]
        if(IA == 4 or IA == 5 or IA == 9 or IA == 10 or IA == 14 or IA == 15 or IA == 19 or IA == 20 or IA == 24 or IA == 25 or IA == 29 or IA == 30):
            # BREMSSTRAHLUNG EXCITATION OR SUPERELASTIC
            if(J != 1):
                CFT=TCFF*(CFTEMP[J]-CFTEMP[J-1])
            if(J == 1):
                CFT=TCFF*CFTEMP[J]
            # CHECK IF BREMSSTRAHLUNG
            if(LBRM == 1 and IZBR[J]!= 0) :
                # BREMSSTRAHLUNG
                # FIND AVERAGE BREMSSTRAHLUNG ENERGY LOSS OVER 10000 EVENTS
                IATOMNO=IZBR[J]
                E=ESTART
                ESUMBR=0.0
                print(' ENERGY=','%.4f' % E)
                for K in range(1,10000+1):
                    BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,EGAMMA,GDCX,GDCY,GDCZ)
                    ESUMBR=ESUMBR+EGAMMA
                ELBRM=ESUMBR/10000.0
                print(' ELBRM=','%.4f' % ELBRM)
                ANPRBRM=ANPRBRM+CFT/VEL
                ELOSBREM=ELOSBREM+CFT*ELBRM/VEL
            # endif
            if(LBRM == 1 and IZBR[J]!= 0):
                pass
            else:
                # EXCITATION OR SUPERELASTIC
                ANPREXC=ANPREXC+CFT/VEL
                ELOSEX=ELOSEX+CFT*EIN[J]*RGAS[J]/VEL
                if(IPEN == 1 and PENFRA[1,J] > 0.0):
                    # PENNING TRANSFER OF EXCITATION TO IONISATION
                     ANPREXCI=ANPREXCI+PENFRA[1,J]*CFT/VEL
                     ELOSEXI=ELOSEXI+PENFRA[1,J]*CFT*EIN[J]*RGAS[J]/VEL
            # endif
        elif(IA == 1 or IA == 6 or IA == 11 or IA == 16 or IA == 21 or IA == 26) :
            # ELASTIC ENERGY LOSS
            if(J != 1):
                CFT=TCFF*(CFTEMP[J]-CFTEMP[J-1])
            if(J == 1):
                CFT=TCFF*CFTEMP[J]
            ANPRELA=ANPRELA+CFT/VEL
            # CALCULATE ELASTIC ENERGY LOSS AVERAGED OVER NE EVENTS
            # USE ANISOTROPIC SCATTERING
            NE=10000
            ELAS=0.00
            RFAC=1.00+GAMM*(RGAS[J]-1.00)
            RFAC=(RFAC-1.00)/(RFAC*RFAC)
            for K in range(1,NE+1):
                R3=DRAND48(RDUM)
                if(INDEX[J]== 1):
                    R31=DRAND48(RDUM)
                    F3=1.00-R3*ANTEMP[J]
                    if(R31 > PSTEMP[J]):
                        F3=-F3
                elif(INDEX[J] == 2):
                    EPSI=PSTEMP[J]
                    F3=1.00-(2.00*R3*(1.00-EPSI)/(1.00+EPSI*(1.00-2.00*R3)))
                else:
                    # ISOTROPIC SCATTERING
                    F3=1.00-2.00*R3
                # endif
                ELAS=ELAS+(1.00-F3)
            ELOSS=CFT*2.00*RFAC*EFINAL*ELAS/VEL
            ELOSS=ELOSS/float(NE)
        elif(IA == 3 or IA == 8 or IA == 13 or IA == 18 or IA == 23 or IA == 28):
            # ATTACHMENT
            ANPRATT=ANPRATT+TCFF*(CFTEMP[J]-CFTEMP[J-1])/VEL
        elif(IA == 2 or IA == 7 or IA == 12 or IA == 17 or IA == 22 or IA == 27):
            # IONISATION
            ANPRION=ANPRION+TCFF*(CFTEMP[J]-CFTEMP[J-1])/VEL
        else: 
            print(' WARNING NO COLLISION TYPE IN FUNCTION MIPCALC')    
        # endif
    # CALCULATE ENERGY LOSS TO IONISATION AVERAGED OVER NEV EVENTS
    NEV=10000000
    ETEMP=0.0
    ETEMPC=0.0
    for J in range(1,IPLAST+1):
        IA=IARRY[J]
        if(IA == 2 or IA == 7 or IA == 12 or IA == 17 or IA == 22 or IA==27) :
            if(EFINAL < EIN[J]):
                pass 
            else:
                #  NEV = NO OF IONISATION EVENTS TO AVERAGE
                for K in range(1,NEV+1):
                    if(IONMODEL[J]> 0) :
                        # CALCULATE SECONDARY ENERGY ,ESEC, IN IONISATION COLLISION USING
                        # FIVE DIFFERENT POSSIBLE MODELS
                        IONSPLIT(J,ESTART,EIN[J],ETEMP1)
                        pass
                    # endif # doing to pass and hence the next else
                    else:
                        R9=DRAND48(RDUM)
                        ETEMP1=WPL[J]*numpy.tan(R9*numpy.arctan((ESTART-EIN[J])/(2.00*WPL[J]))) 
                        ETEMP1=WPL[J]*(ETEMP1/WPL[J])**0.9524
                    ETEMP=ETEMP+ETEMP1+EIN[J]*RGAS[J]
                    NCUTT=NCUTT+1
                    if((ETEMP1+EIN[J]*RGAS[J]) < EMAXDEL) :
                        ETEMPC=ETEMPC+ETEMP1+EIN[J]*RGAS[J]
                        NCUT=NCUT+1
                    # endif
                if(J != 1):
                    CFT=TCFF*(CFTEMP[J]-CFTEMP[J-1])
                if(J == 1):
                    CFT=TCFF*CFTEMP[J]
                ETEMP=CFT*ETEMP/VEL
                ETEMPC=CFT*ETEMPC/VEL
                ETEMP=ETEMP/float(NEV)
                ETEMPC=ETEMPC/float(NEV)
                ELOSION=ELOSION+ETEMP
                ELOSIONC=ELOSIONC+ETEMPC
        else:
            pass
    BETAGAM=BETA*GAMM
    # CONVERT TO EV/CM
    ELOSS=ELOSS*1*(10**10)
    ELOSEX=ELOSEX*1*(10**10)
    ELOSEXI=ELOSEXI*1*(10**10)
    ELOSION=ELOSION*1*(10**10)
    ELOSIONC=ELOSIONC*1*(10**10)
    ELOSBREM=ELOSBREM*1*(10**10)
    # CONVERT COLLISIONS/CM
    ANPRELA=ANPRELA*1*(10**10)
    ANPRATT=ANPRATT*1*(10**10)
    ANPREXC=ANPREXC*1*(10**10)
    ANPREXCI=ANPREXCI*1*(10**10)
    ANPRION=ANPRION*1*(10**10)
    ANPRBRM=ANPRBRM*1*(10**10)
    ESUM=ELOSS+ELOSEX+ELOSION+ELOSBREM
    VELC=VEL*100.
    TCFHIGH=TCF(20000)*1*(10**12)
    CUTIONFRC=float(NCUT)/float(NCUTT)
    # 
    #  LOAD EVENT ARRAYS WITH ELECTRON ENERGY AND DIRECTION COSINES
    #  ADDS ELECTRONS FROM PENNING EXCITATION IF ALLOWED
    for K in range(1,NEVENT +1):
        if(K > IEVMAX):
            print(' WARNING MAXIMUM NUMBER OF EVENTS=',IEVMAX,' def STOPPED:')
        # endif
        NP=0
        #
        # DETERMINE COLLISION TYPE   
        #
        #10
        def GOTO10():
            R1=DRAND48(RDUM)
            I=0
            counter11=1
            while(counter11):
                counter11=0
                I=I+1 
                if(CFTEMP[I]< R1):
                    counter11=1
            # FIND TYPE OF INTERACTION
            IA=IARRY[I]
            if(IA == 2 or IA == 7 or IA == 12 or IA == 17 or IA == 22 or IA==27) :
                #  IONISATION
                #-----------------------------------------------------------------
                counter12=1 # self added for looping
                while(counter12):
                    counter12=0
                    R9=DRAND48(RDUM)
                    ESEC=WPL[I]*TAN(R9*ATAN((ESTART-EIN[I])/(2.00*WPL[I]))) 
                    ESEC=WPL[I]*(ESEC/WPL[I])**0.9524
                    if(ESEC > EMAXDEL):
                        NREJECT=NREJECT+1
                        counter12=1
                    # endif
                # CALCULATE PRIMARY SCATTERING ANGLE 
                # ANISOTROPIC SCATTERING
                R3=DRAND48(RDUM)
                if(INDEX[I]== 1):
                    R31=DRAND48(RDUM)
                F3=1.00-R3*ANTEMP[I]
                if(R31 > PSTEMP[I]):
                    F3=-F3
                elif(INDEX[I] == 2) :
                    EPSI=PSTEMP[I] 
                    F3=1.00-(2.00*R3*(1.00-EPSI)/(1.00+EPSI*(1.00-2.00*R3)))
                else: 
                    # ISOTROPIC SCATTERING
                    F3=1.00-2.00*R3
                # endif
                THETAP=numpy.arccos(F3)
                F5P=numpy.sin(THETAP)
                GAMSEC=(EMS+ESEC)/EMS
                # CALCULATE SECONDARY RECOIL ANGLE FROM FREE KINEMATICS
                F5S=F5P*math.sqrt(ESTART/ESEC)*GAMM/GAMSEC
                if(F5S > 1.0):
                    F5S=1.0
                THETAS=numpy.arcsin(F5S)
                R1=DRAND48(RDUM)
                PHIS=TWOPI*R1
                # CALCULATE NEW DIRECTION COSINES FROM INITIAL VALUES AND SCAT. ANGLES
                DRCOS(DRXINIT,DRYINIT,DRZINIT,THETAS,PHIS,DRXX,DRYY,DRZZ)
                # LOAD SECONDARY ELECTRON DATA  
                NP=NP+1
                if(NP > NPMAX):
                    NPMAX=NP
                if(NP > 20):
                    print(' EVENT WITH N0 OF PRIMARIES GT 20 IN MIPCALC STOPPED PROGRAM')
                if(NP > 20):
                    sys.exit()
                ENM[K][NP]=ESEC
                DIRX[K][NP]=DRXX 
                DIRY[K][NP]=DRYY 
                DIRZ[K][NP]=DRZZ
                XS[K][NP]=0.0
                YS[K][NP]=0.0
                ZS[K][NP]=0.0
                TS[K][NP]=0.0
                IEVENT[K]=NP
                # CALCULATE POSSIBLE SHELL EMISSIONS: AUGER OR FLUORESCENCE
                IFLTST=0
                if(WKLM[I]> 0.0) :
                    R9=DRAND48(RDUM)
                    if(R9 < WKLM[I]):
                        IFLTST=1
                # endif
                if(IFLTST == 0):
                    # AUGER EMISSION WITHOUT FLUORESCENCE
                    NAUG=NC0[I]
                    EAVAUG=EC0[I]/float(NAUG)
                    for JFL in range(1,NC0[I]+1):
                        NP=NP+1
                        if(NP > NPMAX):
                            NPMAX=NP
                        if(NP > 20):
                            print(' EVENT WITH N0 OF PRIMARIES > 20 IN MIPCALC STOPPED PROGRAM')
                        if(NP > 20):
                            sys.exit()
                        ENM[K][NP]=EAVAUG
                        # RANDOM EMISSION ANGLE
                        R3=DRAND48(RDUM)
                        F3=1.00-2.00*R3
                        THETAS=numpy.arccos(F3)
                        F6=numpy.cos(THETAS)
                        F5=numpy.sin(THETAS)
                        R4=DRAND48(RDUM)
                        PHIS=TWOPI*R4
                        F8=numpy.sin(PHIS)
                        F9=numpy.cos(PHIS)
                        DIRX[K][NP]=F9*F5
                        DIRY[K][NP]=F8*F5
                        DIRZ[K][NP]=F6
                        XS[K][NP]=0.0
                        YS[K][NP]=0.0
                        ZS[K][NP]=0.0
                        TS[K][NP]=0.0
                    IEVENT[K]=NP
                else: 
                    # AUGER EMISSION AND FLUORESCENCE
                    if(NG2[I]== 0):
                        pass
                    else:
                        NAUG=NG2[I]
                        EAVAUG=EG2[I]/float(NAUG)
                        for JFL in range(1,NG2[I]+1):
                            NP=NP+1
                            if(NP > NPMAX):
                                NPMAX=NP
                            if(NP > 20):
                                print(' EVENT WITH N0 OF PRIMARIES > 20 IN MIPCALC STOPPED PROGRAM')
                            if(NP > 20):
                                sys.exit()
                            ENM[K][NP]=EAVAUG
                            # RANDOM EMISSION ANGLE
                            R3=DRAND48(RDUM)
                            THETAS=numpy.arccos(1.0-2.0*R3)
                            F6=numpy.cos(THETAS)
                            F5=numpy.sin(THETAS)
                            R4=DRAND48(RDUM)
                            PHIS=TWOPI*R4
                            F8=numpy.sin(PHIS)
                            F9=numpy.cos(PHIS)
                            DIRX[K][NP]=F9*F5
                            DIRY[K][NP]=F8*F5
                            DIRZ[K][NP]=F6
                            XS[K][NP]=0.0
                            YS[K][NP]=0.0
                            ZS[K][NP]=0.0
                            TS[K][NP]=0.0
                        IEVENT[K]=NP
                    if(NG1[I] == 0):
                        pass
                    else:
                        NAUG=NG1[I]
                        EAVAUG=EG1[I]/float(NAUG)
                        R9=DRAND48(RDUM)
                        # FLUORESCENCE ABSORPTION DISTANCE
                        DFL=-math.log(R9)*DSTFL[I]
                        for JFL in range(1,NG1[I]+1):
                            NP=NP+1
                            if(NP > NPMAX):
                                NPMAX=NP
                            if(NP > 20):
                                print(' EVENT WITH N0 OF PRIMARIES > 20 IN MIPCALC STOPPED PROGRAM')
                            if(NP > 20):
                                sys.exit()
                            ENM[K][NP]=EAVAUG
                            # RANDOM EMISSION ANGLE
                            R3=DRAND48(RDUM)
                            THETAS=numpy.arccos(1.0-2.0*R3)
                            F6=numpy.cos(THETAS)
                            F5=numpy.sin(THETAS)
                            R4=DRAND48(RDUM)
                            PHIS=TWOPI*R4
                            F8=numpy.sin(PHIS)
                            F9=numpy.cos(PHIS)
                            DIRX[K][NP]=F9*F5
                            DIRY[K][NP]=F8*F5
                            DIRZ[K][NP]=F6
                            R3=DRAND48(RDUM)
                            THEFL=numpy.arccos(1.0-2.0*R3) 
                            R4=DRAND48(RDUM)
                            PHifL=TWOPI*R4
                            XS[K][NP]=DFL*numpy.sin(THEFL)*numpy.cos(PHifL)
                            YS[K][NP]=DFL*numpy.sin(THEFL)*numpy.sin(PHifL)
                            ZS[K][NP]=DFL*numpy.cos(THEFL)  
                            TS[K][NP]=DFL/VV
                        IEVENT[K]=NP  
                # endif
            elif(IA == 4 or IA == 9 or IA == 14 or IA == 14 or IA == 19 or IA == 24 or IA == 29) :
                # EXCITATION
                #----------------------------------------------------------------
                if(PENFRA[1][I] == 0.0 or IPEN == 0):
                    GOTO10()
                # POSSIBLE PENNING TRANSFER
                R9=DRAND48(RDUM)
                if(R9 < PENFRA[1][I]):
                    # PENNING TRANSFER
                    NP=NP+1
                    if(NP > NPMAX):
                        NPMAX=NP
                    if(NP > 20):
                        print(' EVENT WITH N0 OF PRIMARIES > 20 IN MIPCALC STOPPED PROGRAM')
                    if(NP > 20):
                        sys.exit()
                    # FINITE PENNING FIXED ELECTRON ENERGY TO 4.0EV
                    ENM[K][NP]=4.0
                    # RANDOM EMISSION ANGLE
                    R3=DRAND48(RDUM)
                    THETAS=numpy.arccos(1.0-2.0*R3)
                    F6=numpy.cos(THETAS)
                    F5=numpy.sin(THETAS)
                    R4=DRAND48(RDUM)
                    PHIS=TWOPI*R4
                    F8=numpy.sin(PHIS)
                    F9=numpy.cos(PHIS)
                    DIRX[K][NP]=F9*F5
                    DIRY[K][NP]=F8*F5
                    DIRZ[K][NP]=F6
                    # PENNING TRANSFER DISTANCE
                    ASIGN=1.00
                    R1=DRAND48(RDUM)
                    if(R1 < 0.5):
                        ASIGN=-ASIGN
                    R9=DRAND48(RDUM)
                    XS[K][NP]=-math.log(R9)*PENFRA[2,I]*1*10**-6*ASIGN
                    R1=DRAND48(RDUM)
                    if(R1 < 0.5):
                        ASIGN=-ASIGN
                    R9=DRAND48(RDUM)
                    YS[K][NP]=-math.log(R9)*PENFRA[2,I]*1*10**-6*ASIGN
                    R1=DRAND48(RDUM)
                    if(R1 < 0.5):
                        ASIGN=-ASIGN
                    R9=DRAND48(RDUM)
                    ZS[K][NP]=-math.log(R9)*PENFRA[2,I]*1*10**-6*ASIGN
                    R9=DRAND48(RDUM)
                    TS[K][NP]=-math.log(R9)*PENFRA[3,I]
                    IEVENT[K]=NP
                else:
                    GOTO10()
                # endif  
            else:
                # ELASTIC
                #-----------------------------------------------------------------
                GOTO10()
            # endif
    print(' NPMAX=',NPMAX)
    update_globals()
    return
    # end

CSSTFBN

Stores event data for Nth generation fluorescence.

Functions in this module :

Arguments

Argument Description
NVAC
L1
DIST1
def CSSTFB1(NVAC,L1,DIST1):           
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #COMMON/CALCASB/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENB1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    #COMMON/GEN11/
    global X11#(10,28)
    global Y11#(10,28)
    global Z11#(10,28)
    #COMMON/GEN01/
    global X01#(10)
    global Y01#(10)
    global Z01#(10)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF1[NVAC]=0
        for K in range(1,28):
            ESTF1[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 28) :
        print(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    IONF1[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF1[NVAC][J]=ESTORE[NVAC][J]
        X1[NVAC][J]=X01[NVAC]+DIST1*DRX0[NVAC][L1]
        Y1[NVAC][J]=Y01[NVAC]+DIST1*DRY0[NVAC][L1]
        Z1[NVAC][J]=Z01[NVAC]+DIST1*DRZ0[NVAC][L1]
        X11[NVAC][L1]=X1[NVAC][J]
        Y11[NVAC][L1]=Y1[NVAC][J]
        Z11[NVAC][L1]=Z1[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTFB2(NVAC,L1,DIST1):               
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #COMMON/CALCAS1B/
    #CALCAS1B#
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)

    #COMMON/CALCAS2B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]

    #COMMON/GEN21/
    global X21#(10,28)
    global Y21#(10,28)
    global Z21#(10,28)
    #COMMON/GEN11/
    global X11#(10,28)
    global Y11#(10,28)
    global Z11#(10,28)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF2[NVAC]=0
        for K in range(1,28):
            ESTF2[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
    # STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 28) :
        print(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    IONF2[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF2[NVAC][J]=ESTORE[NVAC][J]
        X2[NVAC][J]=X11[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y2[NVAC][J]=Y11[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z2[NVAC][J]=Z11[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X21[NVAC][L1]=X2[NVAC][J]
        Y21[NVAC][L1]=Y2[NVAC][J]
        Z21[NVAC][L1]=Z2[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTFB3(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #COMMON/CALCAS2B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS3B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENB3/
    global IONF3#(10)
    global ESTF3#(10,15)
    global X3#(10,15)
    global Y3#(10,15)
    global Z3#(10,15)
    global DRXS#(10,15)
    global DRYS#(10,15)
    global DRZS#(10,15)
    #COMMON/GEN31/
    global X31#(10,28)
    global Y31#(10,28)
    global Z31#(10,28)
    #COMMON/GEN21/
    global X21#(10,28)
    global Y21#(10,28)
    global Z21#(10,28)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF3[NVAC]=0
        for K in range(1,15):
            ESTF3[NVAC][K]=0.0
            return
    # endif
    # STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 15) :
        print(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    IONF3[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF3[NVAC][J]=ESTORE[NVAC][J]
        X3[NVAC][J]=X21[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Z3[NVAC][J]=Y21[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z3[NVAC][J]=Z21[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X31[NVAC][L1]=X3[NVAC][J]
        Y31[NVAC][L1]=Z3[NVAC][J]
        Z31[NVAC][L1]=Z3[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTFB4(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #COMMON/CALCAS3B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS4B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENB4/
    global IONF4#(10)
    global ESTF4#(10,12)
    global X4#(10,12)
    global Y4#(10,12)
    global Z4#(10,12)
    global DRXS#(10,12)
    global DRYS#(10,12)
    global DRZS#(10,12)
    #COMMON/GEN31/
    global X31#(10,28)
    global Y31#(10,28)
    global Z31#(10,28)
    #COMMON/GEN41/
    global X41#(10,28)
    global Y41#(10,28)
    global Z41#(10,28)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF4[NVAC]=0
        for K in range(1,12):
            ESTF4[NVAC][K]=0.0
            return
    # endif
    # STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 12) :
        print(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    IONF4[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF4[NVAC][J]=ESTORE[NVAC][J]
        X4[NVAC][J]=X31[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y4[NVAC][J]=Y31[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z4[NVAC][J]=Z31[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X41[NVAC][L1]=X4[NVAC][J]
        Y41[NVAC][L1]=Y4[NVAC][J]
        Z41[NVAC][L1]=Z4[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTFB5(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #COMMON/CALCAS4B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS5B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENB5/
    global IONF5#(10)
    global ESTF5#(10,5)
    global X5#(10,5)
    global Y5#(10,5)
    global Z5#(10,5)
    global DRXS#(10,5)
    global DRYS#(10,5)
    global DRZS#(10,5)
    #COMMON/GEN41/
    global X41#(10,28)
    global Y41#(10,28)
    global Z41#(10,28)
    #COMMON/GEN51/
    global X51#(10,28)
    global Y51#(10,28)
    global Z51#(10,28)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF5[NVAC]=0
        for K in range(1,5):
            ESTF5[NVAC][K]=0.0
            return
    # endif
    # STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 5) :
        print(' WARNING FIFTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    IONF5[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF5[NVAC][J]=ESTORE[NVAC][J]
        X5[NVAC][J]=X41[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y5[NVAC][J]=Y41[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z5[NVAC][J]=Z41[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X51[NVAC][L1]=X5[NVAC][J]
        Y51[NVAC][L1]=Y5[NVAC][J]
        Z51[NVAC][L1]=Z5[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end

      SUBROUTINE CSSTFB1(NVAC,L1,DIST1)           
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCASB/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS1B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENB1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),
     /DRXS(10,28),DRYS(10,28),DRZS(10,28)
      COMMON/GEN11/X11(10,28),Y11(10,28),Z11(10,28)
      COMMON/GEN01/X01(10),Y01(10),Z01(10)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF1(NVAC)=0
       DO 11 K=1,28
   11  ESTF1(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
      IONF1(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF1(NVAC,J)=ESTORE(NVAC,J)
      X1(NVAC,J)=X01(NVAC)+DIST1*DRX0(NVAC,L1)
      Y1(NVAC,J)=Y01(NVAC)+DIST1*DRY0(NVAC,L1)
      Z1(NVAC,J)=Z01(NVAC)+DIST1*DRZ0(NVAC,L1)
      X11(NVAC,L1)=X1(NVAC,J)
      Y11(NVAC,L1)=Y1(NVAC,J)
      Z11(NVAC,L1)=Z1(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTFB2(NVAC,L1,DIST1)               
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS1B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS2B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENB2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),
     /DRXS(10,28),DRYS(10,28),DRZS(10,28)
      COMMON/GEN21/X21(10,28),Y21(10,28),Z21(10,28)
      COMMON/GEN11/X11(10,28),Y11(10,28),Z11(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF2(NVAC)=0
       DO 11 K=1,28
   11  ESTF2(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
C STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
      IONF2(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF2(NVAC,J)=ESTORE(NVAC,J)
      X2(NVAC,J)=X11(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y2(NVAC,J)=Y11(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z2(NVAC,J)=Z11(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X21(NVAC,L1)=X2(NVAC,J)
      Y21(NVAC,L1)=Y2(NVAC,J)
      Z21(NVAC,L1)=Z2(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTFB3(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS2B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS3B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENB3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),
     /DRXS(10,15),DRYS(10,15),DRZS(10,15)
      COMMON/GEN31/X31(10,28),Y31(10,28),Z31(10,28)
      COMMON/GEN21/X21(10,28),Y21(10,28),Z21(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF3(NVAC)=0
       DO 11 K=1,15
   11  ESTF3(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.15) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
      IONF3(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF3(NVAC,J)=ESTORE(NVAC,J)
      X3(NVAC,J)=X21(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y3(NVAC,J)=Y21(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z3(NVAC,J)=Z21(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X31(NVAC,L1)=X3(NVAC,J)
      Y31(NVAC,L1)=Y3(NVAC,J)
      Z31(NVAC,L1)=Z3(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTFB4(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS3B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS4B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENB4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),
     /DRXS(10,12),DRYS(10,12),DRZS(10,12)
      COMMON/GEN31/X31(10,28),Y31(10,28),Z31(10,28)
      COMMON/GEN41/X41(10,28),Y41(10,28),Z41(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF4(NVAC)=0
       DO 11 K=1,12
   11  ESTF4(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.12) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
      IONF4(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF4(NVAC,J)=ESTORE(NVAC,J)
      X4(NVAC,J)=X31(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y4(NVAC,J)=Y31(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z4(NVAC,J)=Z31(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X41(NVAC,L1)=X4(NVAC,J)
      Y41(NVAC,L1)=Y4(NVAC,J)
      Z41(NVAC,L1)=Z4(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTFB5(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS4B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS5B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENB5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),
     /DRXS(10,5),DRYS(10,5),DRZS(10,5)
      COMMON/GEN41/X41(10,28),Y41(10,28),Z41(10,28)
      COMMON/GEN51/X51(10,28),Y51(10,28),Z51(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF5(NVAC)=0
       DO 11 K=1,5
   11  ESTF5(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.5) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FIFTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
      IONF5(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF5(NVAC,J)=ESTORE(NVAC,J)
      X5(NVAC,J)=X41(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y5(NVAC,J)=Y41(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z5(NVAC,J)=Z41(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X51(NVAC,L1)=X5(NVAC,J)
      Y51(NVAC,L1)=Y5(NVAC,J)
      Z51(NVAC,L1)=Z5(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END

COMPRESS

Arguments

Argument Description
IDBG
ENSUM
      SUBROUTINE COMPRESS(IDBG,ENSUM)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
      COMMON/RESB/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),
     /X(10,28),Y(10,28),Z(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/GENB1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),
     /DRX1(10,28),DRY1(10,28),DRZ1(10,28)
      COMMON/GENB2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),
     /DRX2(10,28),DRY2(10,28),DRZ2(10,28)
      COMMON/GENB3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),
     /DRX3(10,15),DRY3(10,15),DRZ3(10,15)
      COMMON/GENB4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),
     /DRX4(10,12),DRY4(10,12),DRZ4(10,12)
      COMMON/GENB5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),
     /DRX5(10,5),DRY5(10,5),DRZ5(10,5)
      COMMON/INTHRMB1/NPTPE,ET(10,50),XT(10,50),YT(10,50),ZT(10,50),
     /DRX(10,50),DRY(10,50),DRZ(10,50),
     /NJFLR(10,50),IEVENTL(10) 
      COMMON/PPSTRB/NPTP,EPPST(2),XPP(2),YPP(2),ZPP(2),
     /DRXPP(2),DRYPP(2),DRZPP(2)
      DIMENSION ESTOT(10) 
      NPTPE=MVAC1
      DO 1 I=1,10
    1 ESTOT(I)=0.0
C     IF(IDBG.EQ.1) THEN
C     WRITE(6,66) MVAC1
C  66 FORMAT(' IN COMPRESS MVAC1=',I4)
C     DO 67 KK=1,MVAC1
C     WRITE(6,68) IONSM(KK),IONF1(KK),IONF2(KK),IONF3(KK),IONF4(KK),
C    /IONF5(KK)
C  68 FORMAT(' IONSUM 0-5=',6I4)
C     WRITE(6,69) (ESTOR(KK,KKK),KKK=1,28)
C  69 FORMAT(' ESTOR=',4(7D12.4,/))
C     WRITE(6,70) (ESTF1(KK,KKK),KKK=1,28)
C  70 FORMAT(' ESTF1=',4(7D12.4,/))
C  67 CONTINUE
C     ENDIF
C      
C  STORE CASCADE DATA INTO COMMON/INTHRMB1/
      DO 12 K=1,MVAC1
      ITOT=IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)+IONF4(K)+IONF5(K)
      IEVENTL(K)=ITOT
      IF(ITOT.GT.50) THEN 
       WRITE(6,811) J
  811 FORMAT(' NEVENT=',I5,' ITOT OVERFLOW IN OUTPUTBC')
       STOP       
      ENDIF
C STORE EVENT FOR INPUT TO THERMALISATION
      DO 6 M=1,IONSM(K)
      ET(K,M)=ESTOR(K,M)
      XT(K,M)=X(K,M)
      YT(K,M)=Y(K,M)
      ZT(K,M)=Z(K,M)
      DRX(K,M)=DRX0(K,M)
      DRY(K,M)=DRY0(K,M)
      DRZ(K,M)=DRZ0(K,M)
      NJFLR(K,M)=0
      ESTOT(K)=ESTOT(K)+ESTOR(K,M)
    6 CONTINUE
      IF(IONF1(K).EQ.0) GO TO 17
      DO 7 M=1,IONF1(K)
      M1=M+IONSM(K)
      ET(K,M1)=ESTF1(K,M)   
      XT(K,M1)=X1(K,M)
      YT(K,M1)=Y1(K,M)
      ZT(K,M1)=Z1(K,M)
      DRX(K,M1)=DRX1(K,M)
      DRY(K,M1)=DRY1(K,M)
      DRZ(K,M1)=DRZ1(K,M)
      ESTOT(K)=ESTOT(K)+ESTF1(K,M)
      NJFLR(K,M1)=1
    7 CONTINUE
   17 IF(IONF2(K).EQ.0) GO TO 18
      DO 8 M=1,IONF2(K)
      M2=M+IONSM(K)+IONF1(K)
      ET(K,M2)=ESTF2(K,M)
      XT(K,M2)=X2(K,M)
      YT(K,M2)=Y2(K,M)
      ZT(K,M2)=Z2(K,M)
      DRX(K,M2)=DRX2(K,M)
      DRY(K,M2)=DRY2(K,M)
      DRZ(K,M2)=DRZ2(K,M)
      ESTOT(K)=ESTOT(K)+ESTF2(K,M)
      NJFLR(K,M2)=2
    8 CONTINUE
   18 IF(IONF3(K).EQ.0) GO TO 19
      DO 9 M=1,IONF3(K)
      M3=M+IONSM(K)+IONF1(K)+IONF2(K)
      ET(K,M3)=ESTF3(K,M)
      XT(K,M3)=X3(K,M)
      YT(K,M3)=Y3(K,M)
      ZT(K,M3)=Z3(K,M)
      DRX(K,M3)=DRX3(K,M)
      DRY(K,M3)=DRY3(K,M)
      DRZ(K,M3)=DRZ3(K,M)
      ESTOT(K)=ESTOT(K)+ESTF3(K,M)
      NJFLR(K,M3)=3
    9 CONTINUE
   19 IF(IONF4(K).EQ.0) GO TO 20
      DO 10 M=1,IONF4(K)
      M4=M+IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)
      ET(K,M4)=ESTF4(K,M)
      XT(K,M4)=X4(K,M)
      YT(K,M4)=Y4(K,M)
      ZT(K,M4)=Z4(K,M)
      DRX(K,M4)=DRX4(K,M)
      DRY(K,M4)=DRY4(K,M)
      DRZ(K,M4)=DRZ4(K,M)
      ESTOT(K)=ESTOT(K)+ESTF4(K,M)
      NJFLR(K,M4)=4
   10 CONTINUE
   20 IF(IONF5(K).EQ.0) GO TO 21
      DO 11 M=1,IONF5(K)
      M5=M+IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)+IONF4(K)
      ET(K,M5)=ESTF5(K,M)
      XT(K,M5)=X5(K,M)
      YT(K,M5)=Y5(K,M)
      ZT(K,M5)=Z5(K,M)
      DRX(K,M5)=DRX5(K,M)
      DRY(K,M5)=DRY5(K,M)
      DRZ(K,M5)=DRZ5(K,M)
      ESTOT(K)=ESTOT(K)+ESTF5(K,M)
      NJFLR(K,M5)=5
   11 CONTINUE
   21 CONTINUE
C PRINT SOME RAW DATA
C     IF(J.LE.525) THEN
C     EDUM=0.0
C     DO 666 JJ=1,IEVENTL(J)
C 666 EDUM=EDUM+ET(JJ,J)
C     WRITE(6,232) J
C     WRITE(6,2321) EDUM
C2321 FORMAT(' TOT ENERGY=',D12.3)
C 232 FORMAT(' DATA FOR EVENT=',I3)
C     DO 234 M=1,IEVENTL(J)
C     WRITE(6,233) ET(M,J),XT(M,J),YT(M,J),ZT(M,J),TH(M,J),PH(M,J)
C 233 FORMAT(' E=',D12.3,' X=',D12.3,' Y=',D12.3,' Z=',D12.3,' THETA=',
C    /D12.3,' PHI=',D12.3)
C 234 CONTINUE
C     ENDIF
      EDUM=0.0
   12 CONTINUE
      DO 30 K=1,MVAC1
      EDUM=EDUM+ESTOT(K)
   30 CONTINUE
      EDUM=EDUM+EPPST(1)+EPPST(2)
      ENSUM=EDUM
      IF(EDUM.GT.(EFINAL+0.1)) THEN
       WRITE(6,999) EDUM
  999 FORMAT(' ETOT =',D12.5,'EV.    BAD EVENT IN COMPRESS',/)
       IBAD=1
       STOP
      ENDIF
      RETURN     
      END  
def COMPRESS(IDBG,ENSUM):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    # COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    # COMMON/RESB/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),X(10,28),Y(10,28),Z[10,28],DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/GENB1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28)
    # COMMON/GENB2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28)
    # COMMON/GENB3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),DRX3(10,15),DRY3(10,15),DRZ3(10,15)
    # COMMON/GENB4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),DRX4(10,12),DRY4(10,12),DRZ4(10,12)
    # COMMON/GENB5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),DRX5(10,5),DRY5(10,5),DRZ5(10,5)
    # COMMON/INTHRMB1/NPTPE,ET(10,50),XT(10,50),YT(10,50),ZT(10,50),DRX(10,50),DRY(10,50),DRZ[10,50],NJFLR(10,50),IEVENTL(10) 
    # COMMON/PPSTRB/NPTP,EPPST[2],XPP[2],YPP[2],ZPP[2],DRXPP[2],DRYPP[2],DRZPP[2]
    #COMMON/INPT/
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    #COMMON/PRIM4/
    global MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    #COMMON/RESB/
    global IONSM#(10)
    global IFLSM#(10)
    global ESTOR#(10,28)
    global EPHOT#(10,28)
    global X#(10,28)
    global Y#(10,28)
    global Z#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/GENB1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    #COMMON/GENB2/
    global IONF2#(10)
    global ESTF2#(10,28)
    global X2#(10,28)
    global Y2#(10,28)
    global Z2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    #COMMON/GENB3/
    global IONF3#(10)
    global ESTF3#(10,15)
    global X3#(10,15)
    global Y3#(10,15)
    global Z3#(10,15)
    global DRX3#(10,15)
    global DRY3#(10,15)
    global DRZ3#(10,15)
    #COMMON/GENB4/
    global IONF4#(10)
    global ESTF4#(10,12)
    global X4#(10,12)
    global Y4#(10,12)
    global Z4#(10,12)
    global DRX4#(10,12)
    global DRY4#(10,12)
    global DRZ4#(10,12)
    #COMMON/GENB5/
    global IONF5#(10)
    global ESTF5#(10,5)
    global X5#(10,5)
    global Y5#(10,5)
    global Z5#(10,5)
    global DRX5#(10,5)
    global DRY5#(10,5)
    global DRZ5#(10,5)
    #COMMON/INTHRMB1/
    global NPTPE
    global ET#(10,50)
    global XT#(10,50)
    global YT#(10,50)
    global ZT#(10,50)
    global DRX#(10,50)
    global DRY#(10,50)
    global DRZ#(10,50)
    global NJFLR#(10,50)
    global IEVENTL#(10) 
    #COMMON/PPSTRB/
    global NPTP
    global EPPST#(2)
    global XPP#(2)
    global YPP#(2)
    global ZPP#(2)
    global DRXPP#(2)
    global DRYPP#(2)
    global DRZPP#(2)
    #DIMENSION 
    ESTOT=[0 for x in range(10)]
    NPTPE=MVAC1
    for I in range(1,10+1):
        ESTOT[I]=0.0
    #     IF(IDBG == 1) :
    #     WRITE(6,66) MVAC1
    #  66 print(' IN COMPRESS MVAC1=',I4)
    #     DO 67 KK=1,MVAC1
    #     WRITE(6,68) IONSM(KK),IONF1(KK),IONF2(KK),IONF3(KK),IONF4(KK),
    #    /IONF5(KK)
    #  68 print(' IONSUM 0-5=',6I4)
    #     WRITE(6,69) (ESTOR(KK,KKK),KKK=1,28)
    #  69 print(' ESTOR=',4(7'%.4f' % ,/))
    #     WRITE(6,70) (ESTF1(KK,KKK),KKK=1,28)
    #  70 print(' ESTF1=',4(7'%.4f' % ,/))
    #  67 CONTINUE
    #     # endIF
    #      
    #  STORE CASCADE DATA INTO COMMON/INTHRMB1/
    for K in range(1,MVAC1+1):
        ITOT=IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]+IONF4[K]+IONF5[K]
        IEVENTL[K]=ITOT
        if(ITOT > 50):
            print(' NEVENT=',J,' ITOT OVERFLOW IN OUTPUTBC')
            sys.exit()       
        # endif
        # STORE EVENT FOR INPUT TO THERMALISATION
        for M in range(1,IONSM[K]+1):
            ET[K][M]=ESTOR[K][M]
            XT[K][M]=X[K][M]
            YT[K][M]=Y[K][M]
            ZT[K][M]=Z[K,M]
            DRX[K][M]=DRX0[K][M]
            DRY[K][M]=DRY0[K][M]
            DRZ[K,M]=DRZ0[K][M]
            NJFLR[K][M]=0
            ESTOT[K]=ESTOT[K]+ESTOR[K][M]
        if(IONF1[K]== 0):
            pass
        else:
            for M in range(1,IONF1[K]+1):
                M1=M+IONSM[K]
                ET[K][M1]=ESTF1[K][M]   
                XT[K][M1]=X1[K][M]
                YT[K][M1]=Y1[K][M]
                ZT[K][M1]=Z1[K][M]
                DRX[K][M1]=DRX1[K][M]
                DRY[K][M1]=DRY1[K][M]
                DRZ[K,M1]=DRZ1[K][M]
                ESTOT[K]=ESTOT[K]+ESTF1[K][M]
                NJFLR[K][M1]=1
        if(IONF2[K] == 0):
            pass
        else:
            for M in range(1,IONF2[K]+1):
                M2=M+IONSM[K]+IONF1[K]
                ET[K][M2]=ESTF2[K][M]
                XT[K][M2]=X2[K][M]
                YT[K][M2]=Y2[K][M]
                ZT[K][M2]=Z2[K][M]
                DRX[K][M2]=DRX2[K][M]
                DRY[K][M2]=DRY2[K][M]
                DRZ[K,M2]=DRZ2[K][M]
                ESTOT[K]=ESTOT[K]+ESTF2[K][M]
                NJFLR[K][M2]=2
        if(IONF3[K] == 0):
            pass
        else:
            for M in range(1,IONF3[K]+1):
                M3=M+IONSM[K]+IONF1[K]+IONF2[K]
                ET[K][M3]=ESTF3[K][M]
                XT[K][M3]=X3[K][M]
                YT[K][M3]=Y3[K][M]
                ZT[K][M3]=Z3[K][M]
                DRX[K][M3]=DRX3[K][M]
                DRY[K][M3]=DRY3[K][M]
                DRZ[K,M3]=DRZ3[K][M]
                ESTOT[K]=ESTOT[K]+ESTF3[K][M]
                NJFLR[K][M3]=3
        if(IONF4[K] == 0):
            pass
        else:
            for M in range(1,IONF4[K]+1):
                M4=M+IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]
                ET[K][M4]=ESTF4[K][M]
                XT[K][M4]=X4[K][M]
                YT[K][M4]=Y4[K][M]
                ZT[K][M4]=Z4[K][M]
                DRX[K][M4]=DRX4[K][M]
                DRY[K][M4]=DRY4[K][M]
                DRZ[K,M4]=DRZ4[K][M]
                ESTOT[K]=ESTOT[K]+ESTF4[K][M]
                NJFLR[K][M4]=4
        if(IONF5[K] == 0):
            pass
        else:
            for M in range(1,IONF5[K]+1):
                M5=M+IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]+IONF4[K]
                ET[K][M5]=ESTF5[K][M]
                XT[K][M5]=X5[K][M]
                YT[K][M5]=Y5[K][M]
                ZT[K][M5]=Z5[K][M]
                DRX[K][M5]=DRX5[K][M]
                DRY[K][M5]=DRY5[K][M]
                DRZ[K,M5]=DRZ5[K][M]
                ESTOT[K]=ESTOT[K]+ESTF5[K][M]
                NJFLR[K][M5]=5
        # PRINT SOME RAW DATA
        #     IF(J <= 525) :
        #     EDUM=0.0
        #     DO 666 JJ=1,IEVENTL[J]
        # 666 EDUM=EDUM+ET(JJ,J)
        #     WRITE(6,232) J
        #     WRITE(6,2321) EDUM
        #2321 print(' TOT ENERGY=','%.3f' %)
        # 232 print(' DATA FOR EVENT=',I3)
        #     DO 234 M=1,IEVENTL[J]
        #     WRITE(6,233) ET(M,J),XT(M,J),YT(M,J),ZT(M,J),TH(M,J),PH(M,J)
        # 233 print(' E=','%.3f' %,' X=','%.3f' %,' Y=','%.3f' %,' Z=','%.3f' %,' THETA=',
        #    /'%.3f' %,' PHI=','%.3f' %)
        # 234 CONTINUE
        #     # endIF
        EDUM=0.0
    for K in range(1,MVAC1+1):
        EDUM=EDUM+ESTOT[K]
    EDUM=EDUM+EPPST[1]+EPPST[2]
    ENSUM=EDUM
    if(EDUM > (EFINAL+0.1)):
        print(' ETOT =','%.5f' % EDUM,'EV.    BAD EVENT IN COMPRESS\n')
        IBAD=1
        sys.exit()
    # endif
    return     
    # end         

BREMSCASC()

Arguments

Argument Description
J11
EGAMMA
X0
Y0
Z0
T0
GDCX
GDCY
GDCZ
ILOW
def BREMSCASC(J11,EGAMMA,X0,Y0,Z0,T0,GDCX,GDCY,GDCZ,ILOW):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6 SCR(17),SCR1(17)
    # COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    # COMMON/COMPTOUT/EGAM,EELEC,THETAG,THETAE
    # COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/CALCAS1B/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28)
    # COMMON/CALCAS2B/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28)
    # COMMON/CALCAS3B/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),DRY3(10,28),DRZ3(10,28)
    # COMMON/CALCAS4B/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),DRY4(10,28),DRZ4(10,28)
    # COMMON/CALCAS5B/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),DRY5(10,28),DRZ5(10,28)
    # COMMON/RESB/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),X10(10,28),Y10(10,28),Z10(10,28),DRX01(10,28),DRY01(10,28),DRZ01(10,28)
    # COMMON/GENB1/IONF1(10),ESTF1(10,28),X11(10,28),Y11(10,28),Z11(10,28),DRX11(10,28),DRY11(10,28),DRZ11(10,28)
    # COMMON/GENB2/IONF2(10),ESTF2(10,28),X21(10,28),Y21(10,28),Z21(10,28),DRX21(10,28),DRY21(10,28),DRZ21(10,28)
    # COMMON/GENB3/IONF3(10),ESTF3(10,15),X31(10,15),Y31(10,15),Z31(10,15),DRX31(10,15),DRY31(10,15),DRZ31(10,15)
    # COMMON/GENB4/IONF4(10),ESTF4(10,12),X41(10,12),Y41(10,12),Z41(10,12),DRX41(10,12),DRY41(10,12),DRZ41(10,12)
    # COMMON/GENB5/IONF5(10),ESTF5(10,5),X51(10,5),Y51(10,5),Z51(10,5),DRX51(10,5),DRY51(10,5),DRZ51(10,5)
    # COMMON/COUTE/ECMP(10),ECDRX(10),ECDRY(10),ECDRZ[10],XCPOS(10),YCPOS(10),ZCPOS(10),KCGAS(10),LCGAS(10),ICSHELL(10)
    # COMMON/COUTTB/TT(10),TTP
    # COMMON/PPSTRB/NPTP,EPPST[2],XPP[2],YPP[2],ZPP[2],DRXPP[2],DRYPP[2],DRZPP[2]
    # COMMON/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    #COMMON/COMPTOUT/
    global EGAM,EELEC,THETAG,THETAE
    #COMMON/PRIM4/
    global MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    #COMMON/GENCAS/
    global ELEV#(17,79)
    global NSDEG#(17)
    global AA#(17)
    global BB#(17)
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#(6,3,17,17)
    global PRSHBT#(6,3,17)
    global IZ#(6,3)
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#(6,3)
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASB/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#(10,28)
    #COMMON/CALCAS1B/
    global IONSUM1#(10)
    global IFLSUM1#(10)
    global ESTOR1#(10,28)
    global EPHOTG1#(10,28)
    global DRXE1#(10,28)
    global DRYE1#(10,28)
    global DRZE1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    #COMMON/CALCAS2B/
    global IONSUM2#(10)
    global IFLSUM2#(10)
    global ESTOR2#(10,28)
    global EPHOTG2#(10,28)
    global DRXE2#(10,28)
    global DRYE2#(10,28)
    global DRZE2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    #COMMON/CALCAS3B/
    global IONSUM3#(10)
    global IFLSUM3#(10)
    global ESTOR3#(10,28)
    global EPHOTG3#(10,28)
    global DRXE3#(10,28)
    global DRYE3#(10,28)
    global DRZE3#(10,28)
    global DRX3#(10,28)
    global DRY3#(10,28)
    global DRZ3#(10,28)
    #COMMON/CALCAS4B/
    global IONSUM4#(10)
    global IFLSUM4#(10)
    global ESTOR4#(10,28)
    global EPHOTG4#(10,28)
    global DRXE4#(10,28)
    global DRYE4#(10,28)
    global DRZE4#(10,28)
    global DRX4#(10,28)
    global DRY4#(10,28)
    global DRZ4#(10,28)
    #COMMON/CALCAS5B/
    global IONSUM5#(10)
    global IFLSUM5#(10)
    global ESTOR5#(10,28)
    global EPHOTG5#(10,28)
    global DRXE5#(10,28)
    global DRYE5#(10,28)
    global DRZE5#(10,28)
    global DRX5#(10,28)
    global DRY5#(10,28)
    global DRZ5#(10,28)
    #COMMON/RESB/
    global IONSM#(10)
    global IFLSM#(10)
    global ESTOR#(10,28)
    global EPHOT#(10,28)
    global X10#(10,28)
    global Y10#(10,28)
    global Z10#(10,28)
    global DRX01#(10,28)
    global DRY01#(10,28)
    global DRZ01#(10,28)
    #COMMON/GENB1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X11#(10,28)
    global Y11#(10,28)
    global Z11#(10,28)
    global DRX11#(10,28)
    global DRY11#(10,28)
    global DRZ11#(10,28)
    #COMMON/GENB2/
    global IONF2#(10)
    global ESTF2#(10,28)
    global X21#(10,28)
    global Y21#(10,28)
    global Z21#(10,28)
    global DRX21#(10,28)
    global DRY21#(10,28)
    global DRZ21#(10,28)
    #COMMON/GENB3/
    global IONF3#(10)
    global ESTF3#(10,15)
    global X31#(10,15)
    global Y31#(10,15)
    global Z31#(10,15)
    global DRX31#(10,15)
    global DRY31#(10,15)
    global DRZ31#(10,15)
    #COMMON/GENB4/
    global IONF4#(10)
    global ESTF4#(10,12)
    global X41#(10,12)
    global Y41#(10,12)
    global Z41#(10,12)
    global DRX41#(10,12)
    global DRY41#(10,12)
    global DRZ41#(10,12)
    #COMMON/GENB5/
    global IONF5#(10)
    global ESTF5#(10,5)
    global X51#(10,5)
    global Y51#(10,5)
    global Z51#(10,5)
    global DRX51#(10,5)
    global DRY51#(10,5)
    global DRZ51#(10,5)
    #COMMON/COUTE/
    global ECMP#(10)
    global ECDRX#(10)
    global ECDRY#(10)
    global ECDRZ#(10)
    global XCPOS#(10)
    global YCPOS#(10)
    global ZCPOS#(10)
    global KCGAS#(10)
    global LCGAS#(10)
    global ICSHELL#(10)
    #COMMON/COUTTB/
    global TT#(10)
    global TTP
    #COMMON/PPSTRB/
    global NPTP
    global EPPST#(2)
    global XPP#(2)
    global YPP#(2)
    global ZPP#(2)
    global DRXPP#(2)
    global DRYPP#(2)
    global DRZPP#(2)
    #----------------------------------------------------------------------
    # BREMSSTRAHLUNG CASCADE TREE:
    #   SET OR ZERO SOME VARIABLES 
    #   CREATE INTERACTION TREE FOR PE COMPTON RAYLEIGH AND PAIR PRODUCTION
    #   STORE ELECTRON ENERGY DIRECTION COSINES AND POSITION WITH SHELL
    #   LEVEL AND GAS IDENTITY IN COMMON/COUT/ FOR EACH COMPTON AND PE EVENT
    #   STORE PAIR PRODUCTION ELECTRON AND POSITRON DATA IN COMMON/PPSTR/
    #   STORE FINAL CASCADE RESULTS IN COMMON/CASRSB/
    #----------------------------------------------------------------------
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    IDBG=0
    #     IF(J11 == 2) IDBG=1
    def GOTO5():
        ILOW=0
        # USE VELOCITY IN METRES/PICOSECONDS
        VV=2.99792458E-4 
        #  
        LFIX=0
        # ALLOW FLUORESCENCE CALCULATION
        def GOTO123():
            ICONPH=1
            #  PHOTON ORIGIN
            X=X0
            Y=Y0
            Z=Z0
            TSUM=T0
            #  LOAD INITIAL DIRECTION COSINES BEFORE INTERACTION 
            DRXS=GDCX
            DRYS=GDCY
            DRZS=GDCZ
            #   INITIAL ENERGY
            ENERGY=EGAMMA
            #
            # ZERO SOME ARRAYS
            EPPST[1]=0.00
            EPPST[2]=0.00
            for K in range(1,10):
                for J in range(1,28):
                    EPHOTON[K][J]=0.0
                    EPHOTG1[K][J]=0.0
                    EPHOTG2[K][J]=0.0
                    EPHOTG3[K][J]=0.0
                    EPHOTG4[K][J]=0.0
                    EPHOTG5[K][J]=0.0
                    ESTORE[K][J]=0.0
                    ESTOR1[K][J]=0.0
                    ESTOR2[K][J]=0.0
                    ESTOR3[K][J]=0.0
                    ESTOR4[K][J]=0.0
                    ESTOR5[K][J]=0.0
                    ESTOR[K][J]=0.0
                    ESTF1[K][J]=0.0
                    ESTF2[K][J]=0.0
                for J in range(1,15):
                    ESTF3[K][J]=0.0
                for J in range(1,12):
                    ESTF4[K][J]=0.0
                for J in range(1,5):
                    ESTF5[K][J]=0.0
                IFLSUM[K]=0
                IFLSUM1[K]=0
                IFLSUM2[K]=0
                IFLSUM3[K]=0
                IFLSUM4[K]=0
                IFLSUM5[K]=0
                IONSUM[K]=0
                IONSUM1[K]=0
                IONSUM2[K]=0
                IONSUM3[K]=0
                IONSUM4[K]=0
                IONSUM5[K]=0
                IONSM[K]=0
                IONF1[K]=0
                IONF2[K]=0
                IONF3[K]=0
                IONF4[K]=0
                IONF5[K]=0
                KCGAS[K]=0
                LCGAS[K]=0
                ICSHELL[K]=0
                ECMP[K]=0.0
            NCOMP=0
            NRAYL=0
            NPAIR=0
            NPHOT=0
            NVAC=0
            NPTP=0
            #    
            IFIRST=1
            ISECOND=2
            def GOTO2(): 
                NTOTI=NCOMP+NRAYL+NPAIR+NPHOT
                # PHOTONS
                ABSO(IFIRST,ENERGY,ISHELL,KGAS,LGAS,DIST)
                #     IF(IDBG == 1) :
                #     WRITE(6,888) ENERGY,ISHELL,J11
                # 888 print(' AFTER ABSO ENERGY=',D12.5,' ISHELL=',I3,' EVENT NO=',I4)
                #     # endIF
                if(ISHELL == -1):
                    # BREMSSTRAHLUNG GAMMA TOO LOW IN ENERGY TO IONISE
                    ILOW=1
                    return
                # endif
                #  
                #  CREATE INTERACTION TREE
                flag=0
                if(LPEFLG == 1):
                    flag=100
                if(LCFLG == 1):
                    flag=10         ###############################
                elif(LRFLG == 1):   ##                           ##
                    flag=20         ## Made significant changes  ##
                elif(LPFLG == 1):   ##                           ##
                    flag=30         ###############################
                # COMPTON SCATTERING
                if(flag==10 or flag==0): 
                    COMPTON(KGAS,LGAS,ENERGY)
                    NCOMP=NCOMP+1
                    NVAC=NVAC+1
                    if(NVAC > 10):
                        # MAXIMUM OF 10 PRIMARY INTERACTIONS
                        #      NJHIGH=NJHIGH+1
                        GOTO123()
                    # endif
                    # RANDOMISE ANGLE PHI
                    R3=DRAND48(RDUM)
                    PHI=TWOPI*R3
                    # CALCULATE COMPTON ELECTRON DIRECTION COSINES USING THETAE AND PHI
                    DRCOS(DRXS,DRYS,DRZS,THETAE,PHI,DRXX,DRYY,DRZZ)
                    # FOR COMPTON EFFECT STORE ELECTRON DIRECTION COSINES
                    ECDRX[NVAC]=DRXX
                    ECDRY[NVAC]=DRYY
                    ECDRZ[NVAC]=DRZZ
                    # CALCULATE WHICH SHELL HAS VACANCY FROM COMPTON EVENT
                    CVAC(KGAS,LGAS,EELEC,KSHELL,KBAD)
                    # REJECT EVENT WITHOUT SUFFICIENT ENERGY TO IONISE SHELLS
                    if(KBAD == 1):
                        GOTO123()
                    # STORE ELECTRON ENERGY SHELL VACANCY ISHELL KGAS LGAS POSITION 
                    ECMP[NVAC]=EELEC
                    ICSHELL[NVAC]=KSHELL
                    KCGAS[NVAC]=KGAS
                    LCGAS[NVAC]=LGAS
                    # INTERACTION POSITIONS
                    XCPOS[NVAC]=X+DIST*DRXS
                    YCPOS[NVAC]=Y+DIST*DRYS
                    ZCPOS[NVAC]=Z+DIST*DRZS
                    TT[NVAC]=TSUM+DIST/VV 
                    # UPDATE PHOTON STARTING ENERGY POSITION AND ANGLES
                    ENERGY=EGAM
                    X=XCPOS[NVAC]
                    Y=YCPOS[NVAC]
                    Z=ZCPOS[NVAC]
                    PHIG=PHI+API
                    if(PHIG >= TWOPI):
                        PHIG=PHI-API
                    DRCOS(DRXS,DRYS,DRZS,THETAG,PHIG,DRXX,DRYY,DRZZ)
                    # NEW DIRECTION COSINES
                    DRXS=DRXX
                    DRYS=DRYY
                    DRZS=DRZZ
                    # LOOP BACK 
                    GOTO2()

                if(flag==20 or flag==0):
                    # RAYLEIGH SCATTERING
                    RAYLEIGH(KGAS,LGAS,ENERGY,THETAR)
                    NRAYL=NRAYL+1
                    #  CALCULATE ENERGY LOSS IN RAYLEIGH SCATTERING
                    RAYLOS(KGAS,LGAS,ENERGY,THETAR,ELRAY)
                    #     IF(IDBG == 1) WRITE(6,776) ENERGY,ELRAY
                    # 776 print(' AFTER RAYLOS ENERGY=','%.4f' % ,' ELRAY=','%.4f' % )
                    # UPDATE X-RAY STARTING ENERGY POSITION AND ANGLES
                    ENERGY=ENERGY-ELRAY
                    X=X+DIST*DRXS
                    Y=Y+DIST*DRYS
                    Z=Z+DIST*DRZS
                    TSUM=TSUM+DIST/VV
                    # RANDOMISE ANGLE PHI
                    R3=DRAND48(RDUM)
                    PHIR=TWOPI*R3
                    DRCOS(DRXS,DRYS,DRZS,THETAR,PHIR,DRXX,DRYY,DRZZ)
                    DRXS=DRXX
                    DRYS=DRYY
                    DRZS=DRZZ
                    # LOOP BACK
                    GOTO2()

                if(flag==30 or flag==0): 
                    # PAIR PRODUCTION
                    PAIR(KGAS,LGAS,ENERGY,E1,E2,THET1,PHI1,THET2,PHI2)
                    NPAIR=NPAIR+1
                    if(NPAIR > 2):
                        print(' ERROR NPAIR GT 2 =',NPAIR,' IN BREMSCASC EVENT NO =',J11)
                        sys.exit()
                    # endif
                    NPTP=NPAIR
                    # STORE ELECTRON AND POSITRON ENERGY POSITION AND ANGLES
                    EPPST[1]=E1
                    EPPST[2]=E2
                    if(NVAC == 0):
                        # FIRST INTERACTION IS PAIR PRODUCTION
                        XPP[1]=X
                        YPP[1]=Y
                        ZPP[1]=Z
                        XPP[2]=X
                        YPP[2]=Y
                        ZPP[2]=Z
                        TTP=TSUM
                        pass
                    # endif
                    else:
                        XPP[1]=X+DIST*DRXS
                        YPP[1]=Y+DIST*DRYS
                        ZPP[1]=Z+DIST*DRZS
                        XPP[2]=XPP[1]
                        YPP[2]=YPP[1]
                        ZPP[2]=ZPP[1]
                        TTP=TSUM+DIST/VV
                    DRCOS(DRXS,DRYS,DRZS,THET1,PHI1,DRXX,DRYY,DRZZ)
                    DRXPP[1]=DRXX
                    DRYPP[1]=DRYY
                    DRZPP[1]=DRZZ
                    DRCOS(DRXS,DRYS,DRZS,THET2,PHI2,DRXX,DRYY,DRZZ)
                    DRXPP[2]=DRXX
                    DRYPP[2]=DRYY
                    DRZPP[2]=DRZZ
                    flag=200
                    # PHOTOELECTRIC ABSORPTION
                    #  STORE ENERGY ISHELL KGAS
                if(flag==100 or flag==0): 
                    NVAC=NVAC+1
                    if(NVAC > 10):
                        # ONLY ALLOW MAXIMUM OF 10 PRIMARY INTERACTIONS
                        GOTO123()
                        sys.exit()
                    # endif

                    NPHOT=NPHOT+1
                    # ECMP= TOTAL ENERGY= EGAMMA = ELECTRON KINETIC ENERGY+ VACANCY ENERGY
                    ECMP[NVAC]=ENERGY
                    ICSHELL[NVAC]=ISHELL
                    XCPOS[NVAC]=X+DIST*DRXS
                    YCPOS[NVAC]=Y+DIST*DRYS
                    ZCPOS[NVAC]=Z+DIST*DRZS
                    TT[NVAC]=TSUM+DIST/VV
                    KCGAS[NVAC]=KGAS
                    LCGAS[NVAC]=LGAS
                    # FOR PE EFFECT STORE PHOTON INCIDENT ANGLE
                    ECDRX[NVAC]=DRXS
                    ECDRY[NVAC]=DRYS
                    ECDRZ[NVAC]=DRZS
                # LOOP OVER SHELL VACANCIES
                if(flag==200 or flag==0):
                    # STORE NUMBER AND TYPE OF PRIMARY INTERACTIONS
                    MSUM1=NTOTI
                    MCOMP1=NCOMP
                    MRAYL1=NRAYL
                    MPAIR1=NPAIR
                    MPHOT1=NPHOT
                    MVAC1=NVAC
                    # LOOP OVER SHELL INTERACTIONS
                    #     IF(IDBG == 1) :
                    #     WRITE(6,54) NVAC
                    #  54 print(' NVAC=',I3)
                    #    for 6 in range(M1=1,NVAC):
                    #     WRITE(6,55) M1, (ESTORE(M1,K1),K1=1,28)
                    #  55 print(' M1=',I3,/,' ESTORE(M1,K)=',4(7'%.4f' % ,/))
                    #  56 CONTINUE
                    #    for 8 in range(M1=1,NVAC):
                    #     WRITE(6,57) (EPHOTON(M1,K1),K1=1,28)
                    #  57 print(' EPHOTON=',4(7'%.4f' % ,/))
                    #  58 CONTINUE 
                    #     # endIF
                    for K in range(1,NVAC):
                        CONTROLB(IDBG,K)
                    #  COMPRESS AUGER AND FLUORESCENCE DATA INTO BLOCKS
                    COMPRESS(IDBG,ENSUM)
                    # CATCH DROPPED KSHELL FLUORESCENCE
                    if(abs(ENSUM-EGAMMA)> 2200.) :
                        DIF=ENSUM-EGAMMA
                    if(IDBG == 1):
                        print('\n Dif=','%.6f' % DIF,' J11=',J11,'\n') 
                        GOTO5()
                    # endif
                    # ADD PAIR DATA AND LOAD INTO COMMON/CASRSB/
                    CASRESB()
            GOTO2()
        GOTO123()
    GOTO5()
    return
    # end
      SUBROUTINE BREMSCASC(J11,EGAMMA,X0,Y0,Z0,T0,GDCX,GDCY,GDCZ,ILOW)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/COMPTOUT/EGAM,EELEC,THETAG,THETAE
      COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/CALCAS1B/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),
     /EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),
     /DRY1(10,28),DRZ1(10,28)
      COMMON/CALCAS2B/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),
     /EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),
     /DRY2(10,28),DRZ2(10,28)
      COMMON/CALCAS3B/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),
     /EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),
     /DRY3(10,28),DRZ3(10,28)
      COMMON/CALCAS4B/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),
     /EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),
     /DRY4(10,28),DRZ4(10,28)
      COMMON/CALCAS5B/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),
     /EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),
     /DRY5(10,28),DRZ5(10,28)
      COMMON/RESB/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),
     /X10(10,28),Y10(10,28),Z10(10,28),DRX01(10,28),DRY01(10,28),
     /DRZ01(10,28)
      COMMON/GENB1/IONF1(10),ESTF1(10,28),X11(10,28),Y11(10,28),
     /Z11(10,28),DRX11(10,28),DRY11(10,28),DRZ11(10,28)
      COMMON/GENB2/IONF2(10),ESTF2(10,28),X21(10,28),Y21(10,28),
     /Z21(10,28),DRX21(10,28),DRY21(10,28),DRZ21(10,28)
      COMMON/GENB3/IONF3(10),ESTF3(10,15),X31(10,15),Y31(10,15),
     /Z31(10,15),DRX31(10,15),DRY31(10,15),DRZ31(10,15)
      COMMON/GENB4/IONF4(10),ESTF4(10,12),X41(10,12),Y41(10,12),
     /Z41(10,12),DRX41(10,12),DRY41(10,12),DRZ41(10,12)
      COMMON/GENB5/IONF5(10),ESTF5(10,5),X51(10,5),Y51(10,5),
     /Z51(10,5),DRX51(10,5),DRY51(10,5),DRZ51(10,5)
      COMMON/COUTE/ECMP(10),ECDRX(10),ECDRY(10),ECDRZ(10),XCPOS(10),
     /YCPOS(10),ZCPOS(10),KCGAS(10),LCGAS(10),ICSHELL(10)
      COMMON/COUTTB/TT(10),TTP
      COMMON/PPSTRB/NPTP,EPPST(2),XPP(2),YPP(2),ZPP(2),
     /DRXPP(2),DRYPP(2),DRZPP(2)
C----------------------------------------------------------------------
C BREMSSTRAHLUNG CASCADE TREE:
C   SET OR ZERO SOME VARIABLES 
C   CREATE INTERACTION TREE FOR PE COMPTON RAYLEIGH AND PAIR PRODUCTION
C   STORE ELECTRON ENERGY DIRECTION COSINES AND POSITION WITH SHELL
C   LEVEL AND GAS IDENTITY IN COMMON/COUT/ FOR EACH COMPTON AND PE EVENT
C   STORE PAIR PRODUCTION ELECTRON AND POSITRON DATA IN COMMON/PPSTR/
C   STORE FINAL CASCADE RESULTS IN COMMON/CASRSB/
C----------------------------------------------------------------------
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
      IDBG=0
C     IF(J11.EQ.2) IDBG=1
   5  ILOW=0
C USE VELOCITY IN METRES/PICOSECONDS
      VV=2.99792458D-4 
C  
      LFIX=0
C ALLOW FLUORESCENCE CALCULATION
  123 ICONPH=1
C  PHOTON ORIGIN
      X=X0
      Y=Y0
      Z=Z0
      TSUM=T0
C  LOAD INITIAL DIRECTION COSINES BEFORE INTERACTION 
      DRXS=GDCX
      DRYS=GDCY
      DRZS=GDCZ
C   INITIAL ENERGY
      ENERGY=EGAMMA
C
C ZERO SOME ARRAYS
      EPPST(1)=0.0D0
      EPPST(2)=0.0D0
      DO 11 K=1,10
      DO 1 J=1,28
      EPHOTON(K,J)=0.0
      EPHOTG1(K,J)=0.0
      EPHOTG2(K,J)=0.0
      EPHOTG3(K,J)=0.0
      EPHOTG4(K,J)=0.0
      EPHOTG5(K,J)=0.0
      ESTORE(K,J)=0.0
      ESTOR1(K,J)=0.0
      ESTOR2(K,J)=0.0
      ESTOR3(K,J)=0.0
      ESTOR4(K,J)=0.0
      ESTOR5(K,J)=0.0
      ESTOR(K,J)=0.0
      ESTF1(K,J)=0.0
      ESTF2(K,J)=0.0
   1  CONTINUE
      DO 120 J=1,15
  120 ESTF3(K,J)=0.0
      DO 121 J=1,12
  121 ESTF4(K,J)=0.0
      DO 122 J=1,5
  122 ESTF5(K,J)=0.0
      IFLSUM(K)=0
      IFLSUM1(K)=0
      IFLSUM2(K)=0
      IFLSUM3(K)=0
      IFLSUM4(K)=0
      IFLSUM5(K)=0
      IONSUM(K)=0
      IONSUM1(K)=0
      IONSUM2(K)=0
      IONSUM3(K)=0
      IONSUM4(K)=0
      IONSUM5(K)=0
      IONSM(K)=0
      IONF1(K)=0
      IONF2(K)=0
      IONF3(K)=0
      IONF4(K)=0
      IONF5(K)=0
      KCGAS(K)=0
      LCGAS(K)=0
      ICSHELL(K)=0
      ECMP(K)=0.0
   11 CONTINUE
      NCOMP=0
      NRAYL=0
      NPAIR=0
      NPHOT=0
      NVAC=0
      NPTP=0
C    
      IFIRST=1
      ISECOND=2
    2 NTOTI=NCOMP+NRAYL+NPAIR+NPHOT
C PHOTONS
      CALL ABSO(IFIRST,ENERGY,ISHELL,KGAS,LGAS,DIST)
C     IF(IDBG.EQ.1) THEN
C     WRITE(6,888) ENERGY,ISHELL,J11
C 888 FORMAT(' AFTER ABSO ENERGY=',D12.5,' ISHELL=',I3,' EVENT NO=',I4)
C     ENDIF
      IF(ISHELL.EQ.-1) THEN
C BREMSSTRAHLUNG GAMMA TOO LOW IN ENERGY TO IONISE
       ILOW=1
       RETURN
      ENDIF
C  
C  CREATE INTERACTION TREE
      IF(LPEFLG.EQ.1) GO TO 100
      IF(LCFLG.EQ.1) GO TO 10
      IF(LRFLG.EQ.1) GO TO 20
      IF(LPFLG.EQ.1) GO TO 30
C COMPTON SCATTERING
   10 CALL COMPTON(KGAS,LGAS,ENERGY)
      NCOMP=NCOMP+1
      NVAC=NVAC+1
      IF(NVAC.GT.10) THEN
C MAXIMUM OF 10 PRIMARY INTERACTIONS
C      NJHIGH=NJHIGH+1
       GO TO 123
      ENDIF
c RANDOMISE ANGLE PHI
      R3=drand48(RDUM)
      PHI=TWOPI*R3
C CALCULATE COMPTON ELECTRON DIRECTION COSINES USING THETAE AND PHI
      CALL DRCOS(DRXS,DRYS,DRZS,THETAE,PHI,DRXX,DRYY,DRZZ)
C FOR COMPTON EFFECT STORE ELECTRON DIRECTION COSINES
      ECDRX(NVAC)=DRXX
      ECDRY(NVAC)=DRYY
      ECDRZ(NVAC)=DRZZ
C CALCULATE WHICH SHELL HAS VACANCY FROM COMPTON EVENT
      CALL CVAC(KGAS,LGAS,EELEC,KSHELL,KBAD)
C REJECT EVENT WITHOUT SUFFICIENT ENERGY TO IONISE SHELLS
      IF(KBAD.EQ.1) GO TO 123
C STORE ELECTRON ENERGY SHELL VACANCY ISHELL KGAS LGAS POSITION 
      ECMP(NVAC)=EELEC
      ICSHELL(NVAC)=KSHELL
      KCGAS(NVAC)=KGAS
      LCGAS(NVAC)=LGAS
C INTERACTION POSITIONS
      XCPOS(NVAC)=X+DIST*DRXS
      YCPOS(NVAC)=Y+DIST*DRYS
      ZCPOS(NVAC)=Z+DIST*DRZS
      TT(NVAC)=TSUM+DIST/VV 
C UPDATE PHOTON STARTING ENERGY POSITION AND ANGLES
       ENERGY=EGAM
       X=XCPOS(NVAC)
       Y=YCPOS(NVAC)
       Z=ZCPOS(NVAC)
       PHIG=PHI+API
       IF(PHIG.GE.TWOPI) PHIG=PHI-API
       CALL DRCOS(DRXS,DRYS,DRZS,THETAG,PHIG,DRXX,DRYY,DRZZ)
C NEW DIRECTION COSINES
       DRXS=DRXX
       DRYS=DRYY
       DRZS=DRZZ
C LOOP BACK 
      GO TO 2
C RAYLEIGH SCATTERING
   20 CALL RAYLEIGH(KGAS,LGAS,ENERGY,THETAR)
      NRAYL=NRAYL+1
C  CALCULATE ENERGY LOSS IN RAYLEIGH SCATTERING
      CALL RAYLOS(KGAS,LGAS,ENERGY,THETAR,ELRAY)
C     IF(IDBG.EQ.1) WRITE(6,776) ENERGY,ELRAY
C 776 FORMAT(' AFTER RAYLOS ENERGY=',D12.4,' ELRAY=',D12.4)
C UPDATE X-RAY STARTING ENERGY POSITION AND ANGLES
      ENERGY=ENERGY-ELRAY
      X=X+DIST*DRXS
      Y=Y+DIST*DRYS
      Z=Z+DIST*DRZS
      TSUM=TSUM+DIST/VV
c RANDOMISE ANGLE PHI
      R3=drand48(RDUM)
      PHIR=TWOPI*R3
      CALL DRCOS(DRXS,DRYS,DRZS,THETAR,PHIR,DRXX,DRYY,DRZZ)
      DRXS=DRXX
      DRYS=DRYY
      DRZS=DRZZ
C LOOP BACK
      GO TO 2
C PAIR PRODUCTION
   30 CALL PAIR(KGAS,LGAS,ENERGY,E1,E2,THET1,PHI1,THET2,PHI2)
      NPAIR=NPAIR+1
      IF(NPAIR.GT.2) THEN
       WRITE(6,991) NPAIR,J11
  991  FORMAT(' ERROR NPAIR GT 2 =',I6,' IN BREMSCASC EVENT NO =',I6)
       STOP
      ENDIF
      NPTP=NPAIR
C STORE ELECTRON AND POSITRON ENERGY POSITION AND ANGLES
      EPPST(1)=E1
      EPPST(2)=E2
      IF(NVAC.EQ.0) THEN
C FIRST INTERACTION IS PAIR PRODUCTION
       XPP(1)=X
       YPP(1)=Y
       ZPP(1)=Z
       XPP(2)=X
       YPP(2)=Y
       ZPP(2)=Z
       TTP=TSUM
       GO TO 40       
      ENDIF
      XPP(1)=X+DIST*DRXS
      YPP(1)=Y+DIST*DRYS
      ZPP(1)=Z+DIST*DRZS
      XPP(2)=XPP(1)
      YPP(2)=YPP(1)
      ZPP(2)=ZPP(1)
      TTP=TSUM+DIST/VV
   40 CALL DRCOS(DRXS,DRYS,DRZS,THET1,PHI1,DRXX,DRYY,DRZZ)
      DRXPP(1)=DRXX
      DRYPP(1)=DRYY
      DRZPP(1)=DRZZ
      CALL DRCOS(DRXS,DRYS,DRZS,THET2,PHI2,DRXX,DRYY,DRZZ)
      DRXPP(2)=DRXX
      DRYPP(2)=DRYY
      DRZPP(2)=DRZZ
      GO TO 200
C PHOTOELECTRIC ABSORPTION
C  STORE ENERGY ISHELL KGAS
  100 NVAC=NVAC+1
      IF(NVAC.GT.10) THEN
C ONLY ALLOW MAXIMUM OF 10 PRIMARY INTERACTIONS
       GO TO 123
      STOP
      ENDIF
      NPHOT=NPHOT+1
C ECMP= TOTAL ENERGY= EGAMMA = ELECTRON KINETIC ENERGY+ VACANCY ENERGY
      ECMP(NVAC)=ENERGY
      ICSHELL(NVAC)=ISHELL
      XCPOS(NVAC)=X+DIST*DRXS
      YCPOS(NVAC)=Y+DIST*DRYS
      ZCPOS(NVAC)=Z+DIST*DRZS
      TT(NVAC)=TSUM+DIST/VV
      KCGAS(NVAC)=KGAS
      LCGAS(NVAC)=LGAS
C FOR PE EFFECT STORE PHOTON INCIDENT ANGLE
      ECDRX(NVAC)=DRXS
      ECDRY(NVAC)=DRYS
      ECDRZ(NVAC)=DRZS
C LOOP OVER SHELL VACANCIES
  200 CONTINUE
C STORE NUMBER AND TYPE OF PRIMARY INTERACTIONS
      MSUM1=NTOTI
      MCOMP1=NCOMP
      MRAYL1=NRAYL
      MPAIR1=NPAIR
      MPHOT1=NPHOT
      MVAC1=NVAC
C LOOP OVER SHELL INTERACTIONS
C     IF(IDBG.EQ.1) THEN
C     WRITE(6,54) NVAC
C  54 FORMAT(' NVAC=',I3)
C     DO 56 M1=1,NVAC
C     WRITE(6,55) M1, (ESTORE(M1,K1),K1=1,28)
C  55 FORMAT(' M1=',I3,/,' ESTORE(M1,K)=',4(7D12.4,/))
C  56 CONTINUE
C     DO 58 M1=1,NVAC
C     WRITE(6,57) (EPHOTON(M1,K1),K1=1,28)
C  57 FORMAT(' EPHOTON=',4(7D12.4,/))
C  58 CONTINUE 
C     ENDIF
      DO 900 K=1,NVAC
      CALL CONTROLB(IDBG,K)
  900 CONTINUE
C  COMPRESS AUGER AND FLUORESCENCE DATA INTO BLOCKS
      CALL COMPRESS(IDBG,ENSUM)
C CATCH DROPPED KSHELL FLUORESCENCE
      IF(DABS(ENSUM-EGAMMA).GT.2200.) THEN
       DIF=ENSUM-EGAMMA
       IF(IDBG.EQ.1) WRITE(6,945) DIF,J11
  945  FORMAT(/,' DIF=',D14.6,' J11=',I5,/) 
       GO TO 5  
      ENDIF
C ADD PAIR DATA AND LOAD INTO COMMON/CASRSB/
      CALL CASRESB
      RETURN
      END

CONTROLB()

Arguments

Argument Description
IDBG
NVAC

Pseudo-Code

def CONTROLB(IDBG,NVAC):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # CHARACTER*6 SCR(17),SCR1(17)
    #     COMMON/INPT2/KGAS,LGAS,DETEFF,EXCWGHT
    # COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/CALCAS1B/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28)
    # COMMON/CALCAS2B/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28)
    # COMMON/CALCAS3B/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),DRY3(10,28),DRZ3(10,28)
    # COMMON/CALCAS4B/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),DRY4(10,28),DRZ4(10,28)
    # COMMON/CALCAS5B/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),DRY5(10,28),DRZ5(10,28)
    # COMMON/COUTE/ECMP(10),ECDRX(10),ECDRY(10),ECDRZ[10],XCPOS(10),YCPOS(10),ZCPOS(10),KCGAS(10),LCGAS(10),ICSHELL(10)
    #
    #COMMON/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    #COMMON/GENCAS/
    global ELEV#(17,79)
    global NSDEG#(17)
    global AA#(17)
    global BB#(17)
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#(6,3,17,17)
    global PRSHBT#(6,3,17)
    global IZ#(6,3)
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#(6,3)
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASB/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#(10,28)
    #COMMON/CALCAS1B/
    global IONSUM1#(10)
    global IFLSUM1#(10)
    global ESTOR1#(10,28)
    global EPHOTG1#(10,28)
    global DRXE1#(10,28)
    global DRYE1#(10,28)
    global DRZE1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    #COMMON/CALCAS2B/
    global IONSUM2#(10)
    global IFLSUM2#(10)
    global ESTOR2#(10,28)
    global EPHOTG2#(10,28)
    global DRXE2#(10,28)
    global DRYE2#(10,28)
    global DRZE2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    #COMMON/CALCAS3B/
    global IONSUM3#(10)
    global IFLSUM3#(10)
    global ESTOR3#(10,28)
    global EPHOTG3#(10,28)
    global DRXE3#(10,28)
    global DRYE3#(10,28)
    global DRZE3#(10,28)
    global DRX3#(10,28)
    global DRY3#(10,28)
    global DRZ3#(10,28)
    #COMMON/CALCAS4B/
    global IONSUM4#(10)
    global IFLSUM4#(10)
    global ESTOR4#(10,28)
    global EPHOTG4#(10,28)
    global DRXE4#(10,28)
    global DRYE4#(10,28)
    global DRZE4#(10,28)
    global DRX4#(10,28)
    global DRY4#(10,28)
    global DRZ4#(10,28)
    #COMMON/CALCAS5B/
    global IONSUM5#(10)
    global IFLSUM5#(10)
    global ESTOR5#(10,28)
    global EPHOTG5#(10,28)
    global DRXE5#(10,28)
    global DRYE5#(10,28)
    global DRZE5#(10,28)
    global DRX5#(10,28)
    global DRY5#(10,28)
    global DRZ5#(10,28)
    #COMMON/COUTE/
    global ECMP#(10)
    global ECDRX#(10)
    global ECDRY#(10)
    global ECDRZ#(10)
    global XCPOS#(10)
    global YCPOS#(10)
    global ZCPOS#(10)
    global KCGAS#(10)
    global LCGAS#(10)
    global ICSHELL#(10)

    #  CALCULATES AUGER AND FLUORESCENCE CASCADE FOR VACANCY IN ICSHELL
    #
    IFIRST=1
    ISECOND=2
    ICONPH=1
    X0=XCPOS[NVAC]
    Y0=YCPOS[NVAC]
    Z0=ZCPOS[NVAC]
    DRXE[NVAC][1]=ECDRX[NVAC]
    DRYE[NVAC][1]=ECDRY[NVAC]
    DRZE[NVAC][1]=ECDRZ[NVAC]
    KDUM=KCGAS[NVAC]
    LDUM=LCGAS[NVAC]
    EDUM=ECMP[NVAC]
    IDUM=ICSHELL[NVAC]
    # 
    # CALCULATE CASCADE EVENT
    CALCB(NVAC,KDUM,LDUM,EDUM,IDUM)
    #     IF(IDBG == 1) :
    #     DO 67 M1=1,NVAC
    #     WRITE(6,66) EDUM,M1,(ESTORE(M1,KK),KK=1,28)
    #  66 print(' IN CONTROLB EDUM=','%.4f' % ,' M1=',I3,/,' ESTORE(M1,K)=',
    #    /4(7'%.4f' % ,/))
    #  67 CONTINUE
    #     WRITE(6,68) (IFLSUM(KK),KK=1,10)
    #  68 print(' IFLSUM=',10I4)
    #     DO 70 M1=1,NVAC
    #     WRITE(6,69) (EPHOTON(M1,KK),KK=1,28)
    #  69 print(' EPHOTON=',4(7'%.4f' % ,/))
    #  70 CONTINUE   
    #C    # endIF
    # STORE EVENT 
    #     Z0=DIST
    CASSTOREB(NVAC,X0,Y0,Z0)
    # IF INCLUDE PHOTOABSORPTION OF FLUORESENCE : 
    if(ICONPH == 1):
        if(IFLSUM[NVAC]== 0):
            # ZERO COUNTER
            L1=0
            CSSTFB1(NVAC,L1,DIST1)
            pass
            # endif
            # LOOP AROUND FIRST GEN FLUORESCENCE
        else:           
            IFLLOW=0
            IFL1=IFLSUM[NVAC]
            for L1 in range(1,IFL1):
                EPH=EPHOTON[NVAC][L1]
                #
                # CALC ABSORPTION POSITION X1,Y1,Z1 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL1 IN GAS KGAS1 COMPONENT LGAS1 
                ABSO(ISECOND,EPH,ISHELL1,KGAS1,LGAS1,DIST1)
                #      IF(IDBG == 1) :
                #      WRITE(6,72) EPH,ISHELL1
                #  72  print('IN CONTROLB EPH=','%.4f' % ,' ISHELL1=',I4)
                #      # endIF
                # LOW ENERGY PHOTON
                if(ISHELL1 == -1):
                    IFLSUM[NVAC]=IFLSUM[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                    #      IF(IDBG == 1) :
                    #      WRITE(6,445) L1,ISHELL1,EPH
                    # 445  print(' CALLING CALCB1 L1=',I3,' ISHELL1=',I3,' EPH=','%.4f' % )
                    #      # endIF
                else:
                    CALCB1(NVAC,KGAS1,LGAS1,EPH,ISHELL1,L1)
                    # STORE EVENT
                    CSSTFB1(NVAC,L1,DIST1) 
        # 
        # SECOND GENERATION FLUORESCENCE
        if(IFLSUM1[NVAC]== 0) :    
            # ZERO COUNTER
            L2=0
            CSSTFB2(NVAC,L2,DIST)
            pass
            # endif 
        else:
            # LOOP AROUND SECOND GEN FLUORESCENCE
            IFL2=IFLSUM1[NVAC]
            for L2 in range(1,IFL2):
                EPH=EPHOTG1(NVAC,L2)
                #
                # CALC ABSORPTION POSITION X2,Y2,Z2 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL2 IN GAS KGAS2 COMPONENT LGAS2
                ABSO(ISECOND,EPH,ISHELL2,KGAS2,LGAS2,DIST2)
                # LOW ENERGY PHOTON
                if(ISHELL2 == -1):
                    pass
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALCB2(NVAC,KGAS2,LGAS2,EPH,ISHELL2,L2)
                    # STORE EVENT
                    CSSTFB2(NVAC,L2,DIST2)               
        # 
        # THIRD GENERATION FLUORESCENCE
        if(IFLSUM2[NVAC]== 0):     
            # ZERO COUNTER
            L3=0
            CSSTFB3(NVAC,L3,DIST) 
            pass
            # endif
            # LOOP AROUND THIRD GEN FLUORESCENCE
        else:
            IFL3=IFLSUM2[NVAC]
            for L3 in range(1,IFL3):
                EPH=EPHOTG2[NVAC][L3]
                #
                # CALC ABSORPTION POSITION X3,Y3,Z3 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL3 IN GAS KGAS3 COMPONENT LGAS3
                ABSO(ISECOND,EPH,ISHELL3,KGAS3,LGAS3,DIST3)
                # LOW ENERGY PHOTON
                if(ISHELL3 == -1):
                    pass
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALCB3(NVAC,KGAS3,LGAS3,EPH,ISHELL3,L3)
                    # STORE EVENT
                    CSSTFB3(NVAC,L3,DIST3)               
        # 
        # FOURTH GENERATION FLUORESCENCE
        if(IFLSUM3[NVAC]== 0):    
            # ZERO COUNTER
            L4=0
            CSSTFB4(NVAC,L4,DIST)
            pass
            # endif
            # LOOP AROUND FOURTH GEN FLUORESCENCE
        else:
            IFL4=IFLSUM3[NVAC]
            for L4 in range(1,IFL4):
                EPH=EPHOTG3[NVAC][L4]
                #
                # CALC ABSORPTION POSITION X4,Y4,Z4 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL4 IN GAS KGAS4 COMPONENT LGAS4
                ABSO(ISECOND,EPH,ISHELL4,KGAS4,LGAS4,DIST4)
                # LOW ENERGY PHOTON
                if(ISHELL4 == -1):
                    pass
                else:
                    #
                    # CALCULATE CASCADE IN GAS 
                    CALCB4(NVAC,KGAS4,LGAS4,EPH,ISHELL4,L4)
                    # STORE EVENT
                    CSSTFB4(NVAC,L4,DIST4)                    
        # 
        # FIFTH GENERATION FLUORESCENCE
        if(IFLSUM4[NVAC]== 0):     
            # ZERO COUNTER
            L5=0
            CSSTFB5(NVAC,L5,DIST)
            pass
            # endif
            # LOOP AROUND FIFTH GEN FLUORESCENCE
        else:
            IFL5=IFLSUM5[NVAC]
            for L5 in range(1,IFL5):
                EPH=EPHOTG4[NVAC][L5]
                #
                # CALC ABSORPTION POSITION X5,Y5,Z5 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL5 IN GAS KGAS5 COMPONENT LGAS5
                ABSO(ISECOND,EPH,ISHELL5,KGAS5,LGAS5,DIST5)
                # LOW ENERGY PHOTON
                if(ISHELL5 == -1):
                    pass
                else:
                    #
                    # CALCULATE CASCADE IN GAS 
                    CALCB5(NVAC,KGAS5,LGAS5,EPH,ISHELL5,L5)
                    # STORE EVENT
                    CSSTFB5(NVAC,L5,DIST5)               
                    if(IFLSUM5[NVAC]>= 1):
                        print(' WARNING SIXTH GENERATION EXISTS IFLSUM5=',IFLSUM5)
    # endif
    # 10 CONTINUE
    #     IF(IDBG == 1) :
    #     DO 666 KKK=1,NVAC
    #     WRITE(6,777) (ESTORE(KKK,K),K=1,28)
    # 777 print(' ESTORE=',4(7'%.4f' % ,/))
    #     WRITE(6,778) (ESTOR1(KKK,K),K=1,28)
    # 778 print(' ESTOR1=',4(7'%.4f' % ,/))
    #     WRITE(6,779) IONSUM(KKK),IONSUM1(KKK),IONSUM2(KKK),IONSUM3(KKK),
    #    /IONSUM4(KKK),IONSUM5(KKK)
    # 779 print(' IONSUM 0-5=',6I4)
    #     WRITE(6,780) IFLSUM(KKK),IFLSUM1(KKK),IFLSUM2(KKK),IFLSUM3(KKK),
    #    /IFLSUM4(KKK),IFLSUM5(KKK)
    # 780 print(' IFLSUM 0-5=',6I4)
    # 666 CONTINUE
    #     # endIF
    return 
    # end
      SUBROUTINE CONTROLB(IDBG,NVAC)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
C     COMMON/INPT2/KGAS,LGAS,DETEFF,EXCWGHT
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/CALCAS1B/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),
     /EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),
     /DRY1(10,28),DRZ1(10,28)
      COMMON/CALCAS2B/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),
     /EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),
     /DRY2(10,28),DRZ2(10,28)
      COMMON/CALCAS3B/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),
     /EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),
     /DRY3(10,28),DRZ3(10,28)
      COMMON/CALCAS4B/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),
     /EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),
     /DRY4(10,28),DRZ4(10,28)
      COMMON/CALCAS5B/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),
     /EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),
     /DRY5(10,28),DRZ5(10,28)
      COMMON/COUTE/ECMP(10),ECDRX(10),ECDRY(10),ECDRZ(10),XCPOS(10),
     /YCPOS(10),ZCPOS(10),KCGAS(10),LCGAS(10),ICSHELL(10)
C
C  CALCULATES AUGER AND FLUORESCENCE CASCADE FOR VACANCY IN ICSHELL
C
      IFIRST=1
      ISECOND=2
      ICONPH=1
      X0=XCPOS(NVAC)
      Y0=YCPOS(NVAC)
      Z0=ZCPOS(NVAC)
      DRXE(NVAC,1)=ECDRX(NVAC)
      DRYE(NVAC,1)=ECDRY(NVAC)
      DRZE(NVAC,1)=ECDRZ(NVAC)
      KDUM=KCGAS(NVAC)
      LDUM=LCGAS(NVAC)
      EDUM=ECMP(NVAC)
      IDUM=ICSHELL(NVAC)
C 
C CALCULATE CASCADE EVENT
      CALL CALCB(NVAC,KDUM,LDUM,EDUM,IDUM)
C     IF(IDBG.EQ.1) THEN
C     DO 67 M1=1,NVAC
C     WRITE(6,66) EDUM,M1,(ESTORE(M1,KK),KK=1,28)
C  66 FORMAT(' IN CONTROLB EDUM=',D12.4,' M1=',I3,/,' ESTORE(M1,K)=',
C    /4(7D12.4,/))
C  67 CONTINUE
C     WRITE(6,68) (IFLSUM(KK),KK=1,10)
C  68 FORMAT(' IFLSUM=',10I4)
C     DO 70 M1=1,NVAC
C     WRITE(6,69) (EPHOTON(M1,KK),KK=1,28)
C  69 FORMAT(' EPHOTON=',4(7D12.4,/))
C  70 CONTINUE   
CC    ENDIF
C STORE EVENT 
C     Z0=DIST
      CALL CASSTOREB(NVAC,X0,Y0,Z0)
C IF INCLUDE PHOTOABSORPTION OF FLUORESENCE THEN 
      IF(ICONPH.EQ.1) THEN
       IF(IFLSUM(NVAC).EQ.0) THEN
C ZERO COUNTER
         L1=0
         CALL CSSTFB1(NVAC,L1,DIST1)
         GO TO 91
        ENDIF
C LOOP AROUND FIRST GEN FLUORESCENCE
       IFLLOW=0
       IFL1=IFLSUM(NVAC)
       DO 9 L1=1,IFL1
       EPH=EPHOTON(NVAC,L1)
C
C CALC ABSORPTION POSITION X1,Y1,Z1 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL1 IN GAS KGAS1 COMPONENT LGAS1 
       CALL ABSO(ISECOND,EPH,ISHELL1,KGAS1,LGAS1,DIST1)
C      IF(IDBG.EQ.1) THEN
C      WRITE(6,72) EPH,ISHELL1
C  72  FORMAT('IN CONTROLB EPH=',D12.4,' ISHELL1=',I4)
C      ENDIF
C LOW ENERGY PHOTON
       IF(ISHELL1.EQ.-1) THEN
        IFLSUM(NVAC)=IFLSUM(NVAC)-1
        GO TO 9
       ENDIF
C
C CALCULATE CASCADE IN GAS 
C      IF(IDBG.EQ.1) THEN
C      WRITE(6,445) L1,ISHELL1,EPH
C 445  format(' CALLING CALCB1 L1=',I3,' ISHELL1=',I3,' EPH=',D12.4)
C      ENDIF
       CALL CALCB1(NVAC,KGAS1,LGAS1,EPH,ISHELL1,L1)
C STORE EVENT
       CALL CSSTFB1(NVAC,L1,DIST1) 
    9  CONTINUE 
   91  CONTINUE
C 
C SECOND GENERATION FLUORESCENCE
        IF(IFLSUM1(NVAC).EQ.0) THEN    
C ZERO COUNTER
         L2=0
         CALL CSSTFB2(NVAC,L2,DIST)
         GO TO 81        
        ENDIF 
C LOOP AROUND SECOND GEN FLUORESCENCE
       IFL2=IFLSUM1(NVAC)
       DO 8 L2=1,IFL2
       EPH=EPHOTG1(NVAC,L2)
C
C CALC ABSORPTION POSITION X2,Y2,Z2 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL2 IN GAS KGAS2 COMPONENT LGAS2
       CALL ABSO(ISECOND,EPH,ISHELL2,KGAS2,LGAS2,DIST2)
C LOW ENERGY PHOTON
       IF(ISHELL2.EQ.-1) GO TO 8
C
C CALCULATE CASCADE IN GAS 
       CALL CALCB2(NVAC,KGAS2,LGAS2,EPH,ISHELL2,L2)
C STORE EVENT
       CALL CSSTFB2(NVAC,L2,DIST2)               
    8  CONTINUE 
   81  CONTINUE   
C 
C THIRD GENERATION FLUORESCENCE
       IF(IFLSUM2(NVAC).EQ.0) THEN     
C ZERO COUNTER
         L3=0
         CALL CSSTFB3(NVAC,L3,DIST) 
         GO TO 71
        ENDIF
C LOOP AROUND THIRD GEN FLUORESCENCE
       IFL3=IFLSUM2(NVAC)
       DO 7 L3=1,IFL3
       EPH=EPHOTG2(NVAC,L3)
C
C CALC ABSORPTION POSITION X3,Y3,Z3 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL3 IN GAS KGAS3 COMPONENT LGAS3
       CALL ABSO(ISECOND,EPH,ISHELL3,KGAS3,LGAS3,DIST3)
C LOW ENERGY PHOTON
       IF(ISHELL3.EQ.-1) GO TO 7
C
C CALCULATE CASCADE IN GAS 
       CALL CALCB3(NVAC,KGAS3,LGAS3,EPH,ISHELL3,L3)
C STORE EVENT
       CALL CSSTFB3(NVAC,L3,DIST3)               
    7  CONTINUE 
   71  CONTINUE     
C 
C FOURTH GENERATION FLUORESCENCE
      IF(IFLSUM3(NVAC).EQ.0) THEN    
C ZERO COUNTER
         L4=0
         CALL CSSTFB4(NVAC,L4,DIST)
         GO TO 61
        ENDIF
C LOOP AROUND FOURTH GEN FLUORESCENCE
       IFL4=IFLSUM3(NVAC)
       DO 6 L4=1,IFL4
       EPH=EPHOTG3(NVAC,L4)
C
C CALC ABSORPTION POSITION X4,Y4,Z4 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL4 IN GAS KGAS4 COMPONENT LGAS4
       CALL ABSO(ISECOND,EPH,ISHELL4,KGAS4,LGAS4,DIST4)
C LOW ENERGY PHOTON
       IF(ISHELL4.EQ.-1) GO TO 6
C
C CALCULATE CASCADE IN GAS 
       CALL CALCB4(NVAC,KGAS4,LGAS4,EPH,ISHELL4,L4)
C STORE EVENT
       CALL CSSTFB4(NVAC,L4,DIST4)                    
    6  CONTINUE 
   61  CONTINUE      
C 
C FIFTH GENERATION FLUORESCENCE
       IF(IFLSUM4(NVAC).EQ.0) THEN     
C ZERO COUNTER
         L5=0
         CALL CSSTFB5(NVAC,L5,DIST)
         GO TO 51
        ENDIF
C LOOP AROUND FIFTH GEN FLUORESCENCE
       IFL5=IFLSUM5(NVAC)
       DO 5 L5=1,IFL5
       EPH=EPHOTG4(NVAC,L5)
C
C CALC ABSORPTION POSITION X5,Y5,Z5 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL5 IN GAS KGAS5 COMPONENT LGAS5
       CALL ABSO(ISECOND,EPH,ISHELL5,KGAS5,LGAS5,DIST5)
C LOW ENERGY PHOTON
       IF(ISHELL5.EQ.-1) GO TO 5
C
C CALCULATE CASCADE IN GAS 
       CALL CALCB5(NVAC,KGAS5,LGAS5,EPH,ISHELL5,L5)
C STORE EVENT
       CALL CSSTFB5(NVAC,L5,DIST5)               
       IF(IFLSUM5(NVAC).GE.1) WRITE(6,89) IFLSUM5
   89  FORMAT(' WARNING SIXTH GENERATION EXISTS IFLSUM5=',I3)
    5  CONTINUE
   51  CONTINUE
      ENDIF
   10 CONTINUE
C     IF(IDBG.EQ.1) THEN
C     DO 666 KKK=1,NVAC
C     WRITE(6,777) (ESTORE(KKK,K),K=1,28)
C 777 FORMAT(' ESTORE=',4(7D12.4,/))
C     WRITE(6,778) (ESTOR1(KKK,K),K=1,28)
C 778 FORMAT(' ESTOR1=',4(7D12.4,/))
C     WRITE(6,779) IONSUM(KKK),IONSUM1(KKK),IONSUM2(KKK),IONSUM3(KKK),
C    /IONSUM4(KKK),IONSUM5(KKK)
C 779 FORMAT(' IONSUM 0-5=',6I4)
C     WRITE(6,780) IFLSUM(KKK),IFLSUM1(KKK),IFLSUM2(KKK),IFLSUM3(KKK),
C    /IFLSUM4(KKK),IFLSUM5(KKK)
C 780 FORMAT(' IFLSUM 0-5=',6I4)
C 666 CONTINUE
C     ENDIF
      RETURN 
      END

CALCB()

Arguments

Argument Description
NVAC
KGAS
LGAS
ELECEN
ISHELL

Pseudo-Code

Variable Description
DRX
DRY Initial Photon Direction
DRZ
import numpy
def CALCB(NVAC,KGAS,LGAS,ELECEN,ISHELL):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # CHARACTER*6 SCR(17),SCR1(17)
    # COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    #COMMON/PRIM4/
    global MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASB/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]

    #DIMENSION 
    TEMP=numpy.zeros((17+1))
    TEMP1=numpy.zeros((289+1))
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    # INITIAL PHOTON DIRECTION  DRX, DRY AND DRZ
    DRXINIT=DRXE[NVAC][1]
    DRYINIT=DRYE[NVAC][1]
    DRZINIT=DRZE[NVAC][1]
    ISHELLST=ISHELL
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        API=numpy.arccos(-1.00)
        TWOPI=2.00*API
        ISECOND=1
        IFIRST=0
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        # PHOTONS
        IONSUM[NVAC]=1
        IFLSUM[NVAC]=0
        # STORE INITIAL PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][1]=ELECEN-ELEV[ISHELL,IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][1]
        ELEFT=ELEFT-ESTORE[NVAC][1]
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        #    ENTRY FOR COMPTON ELECTRON.....
        if(NVAC <= MCOMP1):
            #    IF COMPTON EVENT ELECTRON ANGLE FROM COMPTON (ALREADY STORED)
            pass
            # endif
        else:
            # USE PHOTOELCTRON ANGULAR DISTRIBUTION
            APE=AA[ISHELL]
            BPE=BB[ISHELL]
            ANGGEN(APE,BPE,THET)
            if(THET < 0.0):
                THET=THET+API
            R3=DRAND48(RDUM)
            PHI=TWOPI*R3
            # INITIAL PHOTON DIRECTION  DRXINIT, DRYINIT AND DRZINIT
            DRCOS(DRXINIT,DRYINIT,DRZINIT,THET,PHI,DRXX,DRYY,DRZZ)
            DRXE[NVAC][1]=DRXX
            DRYE[NVAC][1]=DRYY
            DRZE[NVAC][1]=DRZZ
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            ICON=1
            IFIRST=IFIRST+1
            if(IFIRST > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,ICON,IFIRST,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                GOTO2()
            if(IFIRST == 1):
                # INITIAL ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                # PRIMARY ELECTRON
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
            # endif
            if(IFIRST != 1):
                ESTORE[NVAC][IONSUM[NVAC]]=ESTORE[NVAC][IONSUM[NVAC]]-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
            # endif
            IONSUM[NVAC]=IONSUM[NVAC]+1
            # MAXIMUM ION CHARGE STATE =28
            if(IONSUM[NVAC]> 28) :
                #WRITE(6,99) IONSUM[NVAC]   #error
                print(' WARNING ION CHARGE LIMITED TO 28+ IN THIS VERSION') 
                sys.exit()
            # endif
            # SHAKE ELECTRON
            ESTORE[NVAC][IONSUM[NVAC]]=ESHK
            ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
            if(ELEFT < 0.0):
                GOTO100()
            # RANDOM EMISSION DIRECTION
            R3=DRAND48(RDUM)
            THET=numpy.arccos(1.0-2.0*R3)
            R3=DRAND48(RDUM)
            PHI=TWOPI*R3
            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2(): 
                UPDATE(KGAS,LGAS,ISHELL)
                #  CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]):
                        # STORE PHOTON ENERGY AND ANGLE : UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL,IZ[KGAS][LGAS]]-ELEV[I,IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R3=DRAND48(RDUM)
                        PHI=TWOPI*R3
                        # CALC DIRECTION COSINES OF FLUORESCENCE
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        #   
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()
            flag116=1
            while(flag116):
                flag116=0
                R2=R1-TEMP(17)
                for J in range(1,17):
                    if(flag116==1):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL,IZ[KGAS][LGAS]]-(ELEV[I,IZ[KGAS][LGAS]]+ELEV[I,IZ[KGAS][LGAS]+1])*0.5-(ELEV[J,IZ[KGAS][LGAS]]+ELEV[J,IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                flag117=1
                                while (flag117):
                                    flag117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP(17)):
                                        flag117=1
                                flag116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]>28): 
                                print(' IONSUM LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC],' IN CALCB')
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R3=DRAND48(RDUM)
                            PHI=TWOPI*R3
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
        GOTO4()             # endif
    GOTO100()
    print(' ERROR IN CASCADE 0 def CALCB') 
    sys.exit() 
    # end
      SUBROUTINE CALCB(NVAC,KGAS,LGAS,ELECEN,ISHELL)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/PRIM4/MSUM1,MCOMP1,MRAYL1,MPAIR1,MPHOT1,MVAC1
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASB/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
C INITIAL PHOTON DIRECTION  DRX, DRY AND DRZ
      DRXINIT=DRXE(NVAC,1)
      DRYINIT=DRYE(NVAC,1)
      DRZINIT=DRZE(NVAC,1)
      ISHELLST=ISHELL
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
      ISECOND=1
      IFIRST=0
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
C PHOTONS
      IONSUM(NVAC)=1
      IFLSUM(NVAC)=0
C STORE INITIAL PHOTOELECTRON ENERGY AND ANGLE
      ESTORE(NVAC,1)=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,1)
      ELEFT=ELEFT-ESTORE(NVAC,1)
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C    ENTRY FOR COMPTON ELECTRON.....
      IF(NVAC.LE.MCOMP1) THEN
C    IF COMPTON EVENT ELECTRON ANGLE FROM COMPTON (ALREADY STORED)
       GO TO 4
      ENDIF
C USE PHOTOELCTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
C INITIAL PHOTON DIRECTION  DRXINIT, DRYINIT AND DRZINIT
      CALL DRCOS(DRXINIT,DRYINIT,DRZINIT,THET,PHI,DRXX,DRYY,DRZZ)
      DRXE(NVAC,1)=DRXX
      DRYE(NVAC,1)=DRYY
      DRZE(NVAC,1)=DRZZ
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      ICON=1
      IFIRST=IFIRST+1
      IF(IFIRST.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,ICON,IFIRST,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
      IF(IFIRST.EQ.1) THEN
C INITIAL ELECTRON + SHAKEOFF
       ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
C PRIMARY ELECTRON
       ESTORE(NVAC,IONSUM(NVAC))=ELECN
      ENDIF
      IF(IFIRST.NE.1) THEN
       ESTORE(NVAC,IONSUM(NVAC))=ESTORE(NVAC,IONSUM(NVAC))-ESHK-
     /ELEV(JVAC,IZ(KGAS,LGAS))
      ENDIF
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC) 
   99  FORMAT(' WARNING ION CHARGE LIMITED TO 28+ IN THIS VERSION') 
       STOP
      ENDIF
C SHAKE ELECTRON
      ESTORE(NVAC,IONSUM(NVAC))=ESHK
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CONTINUE                                     
      CALL UPDATE(KGAS,LGAS,ISHELL)
C  CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND ANGLE THEN UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R3=drand48(RDUM)
       PHI=TWOPI*R3
C CALC DIRECTION COSINES OF FLUORESCENCE
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
C   
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 27 J=1,17
      DO 27 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-
     /(ELEV(J,IZ(KGAS,LGAS))+ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN 
        WRITE(6,887) IONSUM(NVAC)
  887   FORMAT(' IONSUM LIMITED TO 28 IN THIS VERSION IONSUM=',I3,
     /' IN CALCB')
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R3=drand48(RDUM)
       PHI=TWOPI*R3
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   27 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE 0 SUBROUTINE CALCB') 
      STOP 
      END

CASCADEE()

Arguments

Argument Description
J11
KGAS Gas Identifier
LGAS
X0
Y0
Z0
T0
EINIT
ISHELL

Pseudo-Code

      SUBROUTINE CASCADEE(J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASE/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/CALCAS1E/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),
     /EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),
     /DRY1(10,28),DRZ1(10,28)
      COMMON/CALCAS2E/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),
     /EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),
     /DRY2(10,28),DRZ2(10,28)
      COMMON/CALCAS3E/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),
     /EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),
     /DRY3(10,28),DRZ3(10,28)
      COMMON/CALCAS4E/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),
     /EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),
     /DRY4(10,28),DRZ4(10,28)
      COMMON/CALCAS5E/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),
     /EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),
     /DRY5(10,28),DRZ5(10,28)
      COMMON/RESE/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),
     /XN(10,28),YN(10,28),ZN(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28),
     /TN(10,28)
      COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),
     /DRXS1(10,28),DRYS1(10,28),DRZS1(10,28),T1(10,28)
      COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),
     /DRXS2(10,28),DRYS2(10,28),DRZS2(10,28),T2(10,28)
      COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),
     /DRXS3(10,15),DRYS3(10,15),DRZS3(10,15),T3(10,15)
      COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),
     /DRXS4(10,12),DRYS4(10,12),DRZS4(10,12),T4(10,12)
      COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),
     /DRXS5(10,5),DRYS5(10,5),DRZS5(10,5),T5(10,5)
C     COMMON/NSIZE/NJHIGH
C----------------------------------------------------------------------
C CALCULATE CASCADE FROM A VACANCY= ISHELL  IN KGAS LGAS 
C ENERGY OF ESCAPE ELECTRON FROM VACANCY =EINIT ( NEEDED FOR SHAKE OFF)
C ESCAPE ELECTRON NOT INCLUDED IN CASCADE SUM
C----------------------------------------------------------------------
C   SET OR ZERO SOME VARIABLES 
C----------------------------------------------------------------------
C     WRITE(6,77) J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL
      KGASST=KGAS
      LGASST=LGAS
      EINITST=EINIT
      ISHELLST=ISHELL
  10  API=DACOS(-1.0D0)
      NJHIGH=0
      KGAS=KGASST
      LGAS=LGASST
      EINIT=EINITST
      ISHELL=ISHELLST
C  
C ZERO SOME ARRAYS
      DO 11 K=1,10
      DO 1 J=1,28
      EPHOTON(K,J)=0.0
      EPHOTG1(K,J)=0.0
      EPHOTG2(K,J)=0.0
      EPHOTG3(K,J)=0.0
      EPHOTG4(K,J)=0.0
      EPHOTG5(K,J)=0.0
      ESTORE(K,J)=0.0
      ESTOR1(K,J)=0.0
      ESTOR2(K,J)=0.0
      ESTOR3(K,J)=0.0
      ESTOR4(K,J)=0.0
      ESTOR5(K,J)=0.0
      ESTOR(K,J)=0.0
      ESTF1(K,J)=0.0
      ESTF2(K,J)=0.0
   1  CONTINUE
      IFLSUM(K)=0
      IFLSUM1(K)=0
      IFLSUM2(K)=0
      IFLSUM3(K)=0
      IFLSUM4(K)=0
      IFLSUM5(K)=0
      IONSUM(K)=0
      IONSUM1(K)=0
      IONSUM2(K)=0
      IONSUM3(K)=0
      IONSUM4(K)=0
      IONSUM5(K)=0
      IONSM(K)=0
      IONF1(K)=0
      IONF2(K)=0
      IONF3(K)=0
      IONF4(K)=0
      IONF5(K)=0
   11 CONTINUE
C INITIAL ENERGY IN SHELL
      ESHSTART=ELEV(ISHELL,IZ(KGAS,LGAS))   
C LOOP OVER SHELL VACANCIES
      CALL CONTROLE(KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL)
C COMPRESS AUGER AND FLUORESCENCE DATA INTO BLOCKS
      CALL COMPRESSE(ETOT)
C  REPEAT FOR POSSIBLE K-SHELLROUNDING ERROR
        IF((ESHSTART-ETOT).GT.2200.) GO TO 10
C LOAD INTO COMMON/CASRSE/
      CALL CASRESE
C     WRITE(6,77) J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL
C 77  FORMAT(' J11=',I6,' KGAS=',I3,' LGAS=',I3,' X0=',D12.4,' Y0=',
C    /D12.4,' Z0=',D12.4,' T0=',D12.4,/,' EINIT=',D12.4,' ISHELL=',I3) 
      RETURN
      END

def CASCADEE(J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # CHARACTER*6 SCR(17),SCR1(17)
    # COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCASE/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/CALCAS1E/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28)
    # COMMON/CALCAS2E/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28)
    # COMMON/CALCAS3E/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),DRY3(10,28),DRZ3(10,28)
    # COMMON/CALCAS4E/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),DRY4(10,28),DRZ4(10,28)
    # COMMON/CALCAS5E/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),DRY5(10,28),DRZ5(10,28)
    # COMMON/RESE/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),XN(10,28),YN(10,28),ZN(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28),TN(10,28)
    # COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),DRXS1(10,28),DRYS1(10,28),DRZS1(10,28),T1(10,28)
    # COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),DRXS2(10,28),DRYS2(10,28),DRZS2(10,28),T2(10,28)
    # COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),DRXS3(10,15),DRYS3(10,15),DRZS3(10,15),T3(10,15)
    # COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),DRXS4(10,12),DRYS4(10,12),DRZS4(10,12),T4(10,12)
    # COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),DRXS5(10,5),DRYS5(10,5),DRZS5(10,5),T5(10,5)
    #COMMON/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    #COMMON/GENCAS/
    global ELEV#(17,79)
    global NSDEG#(17)
    global AA#(17)
    global BB#(17)
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#(6,3,17,17)
    global PRSHBT#(6,3,17)
    global IZ#(6,3)
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#(6,3)
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASE/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM1#(10)
    global IFLSUM1#(10)
    global ESTOR1#(10,28)
    global EPHOTG1#(10,28)
    global DRXE1#(10,28)
    global DRYE1#(10,28)
    global DRZE1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    #COMMON/CALCAS2E/
    global IONSUM2#(10)
    global IFLSUM2#(10)
    global ESTOR2#(10,28)
    global EPHOTG2#(10,28)
    global DRXE2#(10,28)
    global DRYE2#(10,28)
    global DRZE2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    #COMMON/CALCAS3E/
    global IONSUM3#(10)
    global IFLSUM3#(10)
    global ESTOR3#(10,28)
    global EPHOTG3#(10,28)
    global DRXE3#(10,28)
    global DRYE3#(10,28)
    global DRZE3#(10,28)
    global DRX3#(10,28)
    global DRY3#(10,28)
    global DRZ3#(10,28)
    #COMMON/CALCAS4E/
    global IONSUM4#(10)
    global IFLSUM4#(10)
    global ESTOR4#(10,28)
    global EPHOTG4#(10,28)
    global DRXE4#(10,28)
    global DRYE4#(10,28)
    global DRZE4#(10,28)
    global DRX4#(10,28)
    global DRY4#(10,28)
    global DRZ4#(10,28)
    #COMMON/CALCAS5E/
    global IONSUM5#(10)
    global IFLSUM5#(10)
    global ESTOR5#(10,28)
    global EPHOTG5#(10,28)
    global DRXE5#(10,28)
    global DRYE5#(10,28)
    global DRZE5#(10,28)
    global DRX5#(10,28)
    global DRY5#(10,28)
    global DRZ5#(10,28)
    #COMMON/RESE/
    global IONSM#(10)
    global IFLSM#(10)
    global ESTOR#(10,28)
    global EPHOT#(10,28)
    global XN#(10,28)
    global YN#(10,28)
    global ZN#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    global TN#(10,28)
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS1#(10,28)
    global DRYS1#(10,28)
    global DRZS1#(10,28)
    global T1#(10,28)
    #COMMON/GENE2/
    global IONF2#(10)
    global ESTF2#(10,28)
    global X2#(10,28)
    global Y2#(10,28)
    global Z2#(10,28)
    global DRXS2#(10,28)
    global DRYS2#(10,28)
    global DRZS2#(10,28)
    global T2#(10,28)
    #COMMON/GENE3/
    global IONF3#(10)
    global ESTF3#(10,15)
    global X3#(10,15)
    global Y3#(10,15)
    global Z3#(10,15)
    global DRXS3#(10,15)
    global DRYS3#(10,15)
    global DRZS3#(10,15)
    global T3#(10,15)
    #COMMON/GENE4/
    global IONF4#(10)
    global ESTF4#(10,12)
    global X4#(10,12)
    global Y4#(10,12)
    global Z4#(10,12)
    global DRXS4#(10,12)
    global DRYS4#(10,12)
    global DRZS4#(10,12)
    global T4#(10,12)
    #COMMON/GENE5/
    global IONF5#(10)
    global ESTF5#(10,5)
    global X5#(10,5)
    global Y5#(10,5)
    global Z5#(10,5)
    global DRXS5#(10,5)
    global DRYS5#(10,5)
    global DRZS5#(10,5)
    global T5#(10,5)

    #     COMMON/NSIZE/NJHIGH
    #----------------------------------------------------------------------
    # CALCULATE CASCADE FROM A VACANCY= ISHELL  IN KGAS LGAS 
    # ENERGY OF ESCAPE ELECTRON FROM VACANCY =EINIT ( NEEDED FOR SHAKE OFF)
    # ESCAPE ELECTRON NOT INCLUDED IN CASCADE SUM
    #----------------------------------------------------------------------
    #   SET OR ZERO SOME VARIABLES 
    #----------------------------------------------------------------------
    #     WRITE(6,77) J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL
    KGASST=KGAS
    LGASST=LGAS
    EINITST=EINIT
    ISHELLST=ISHELL
    def GOTO10():  
        API=numpy.arccos(-1.00)
        NJHIGH=0
        KGAS=KGASST
        LGAS=LGASST
        EINIT=EINITST
        ISHELL=ISHELLST
        #  
        # ZERO SOME ARRAYS
        for K in range(1,10):
            for J in range(1,28):
                EPHOTON[K][J]=0.0
                EPHOTG1[K][J]=0.0
                EPHOTG2[K][J]=0.0
                EPHOTG3[K][J]=0.0
                EPHOTG4[K][J]=0.0
                EPHOTG5[K][J]=0.0
                ESTORE[K][J]=0.0
                ESTOR1[K][J]=0.0
                ESTOR2[K][J]=0.0
                ESTOR3[K][J]=0.0
                ESTOR4[K][J]=0.0
                ESTOR5[K][J]=0.0
                ESTOR[K][J]=0.0
                ESTF1[K][J]=0.0
                ESTF2[K][J]=0.0
            IFLSUM[K]=0
            IFLSUM1[K]=0
            IFLSUM2[K]=0
            IFLSUM3[K]=0
            IFLSUM4[K]=0
            IFLSUM5[K]=0
            IONSUM[K]=0
            IONSUM1[K]=0
            IONSUM2[K]=0
            IONSUM3[K]=0
            IONSUM4[K]=0
            IONSUM5[K]=0
            IONSM[K]=0
            IONF1[K]=0
            IONF2[K]=0
            IONF3[K]=0
            IONF4[K]=0
            IONF5[K]=0
        # INITIAL ENERGY IN SHELL
        ESHSTART=ELEV[ISHELL,IZ[KGAS][LGAS]]   
        # LOOP OVER SHELL VACANCIES
        CONTROLE(KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL)
        # COMPRESS AUGER AND FLUORESCENCE DATA INTO BLOCKS
        COMPRESSE(ETOT)
        #  REPEAT FOR POSSIBLE K-SHELLROUNDING ERROR
        if((ESHSTART-ETOT)> 2200.):
            GOTO10()
        # LOAD INTO COMMON/CASRSE/
        CASRESE()
        #     WRITE(6,77) J11,KGAS,LGAS,X0,Y0,Z0,T0,EINIT,ISHELL
        # 77  print(' J11=',I6,' KGAS=',I3,' LGAS=',I3,' X0=','%.4f' % ,' Y0=',
        #    /'%.4f' % ,' Z0=','%.4f' % ,' T0=','%.4f' % ,/,' EINIT=','%.4f' % ,' ISHELL=',I3) 
    GOTO10()
    return
    # end

CONTROLE()

Calculates Auger and fluorescence cascade for vacancy in ICSHELL

Arguments

Argument Description
KGAS
LGAS
X
Y
Z
T
EINIT
ISHELL

Pseudo-Code

      SUBROUTINE CONTROLE(KGAS,LGAS,X,Y,Z,T,EINIT,ISHELL)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASE/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/CALCAS1E/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),
     /EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),
     /DRY1(10,28),DRZ1(10,28)
      COMMON/CALCAS2E/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),
     /EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),
     /DRY2(10,28),DRZ2(10,28)
      COMMON/CALCAS3E/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),
     /EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),
     /DRY3(10,28),DRZ3(10,28)
      COMMON/CALCAS4E/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),
     /EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),
     /DRY4(10,28),DRZ4(10,28)
      COMMON/CALCAS5E/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),
     /EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),
     /DRY5(10,28),DRZ5(10,28)
c
C
C  CALCULATES AUGER AND FLUORESCENCE CASCADE FOR VACANCY IN ICSHELL
C
      IFIRST=1
      ISECOND=2
      ICONPH=1
      NVAC=1
      X0=X
      Y0=Y
      Z0=Z
      T0=T
      IZERO=0
      IONE=1
      ADIST=0.0
C 
C CALCULATE CASCADE EVENT
c     WRITE(6,991) NVAC,KGAS,LGAS,EINIT,ISHELL
C 991 FORMAT(' NVAC=',I3,' KGAS=',I3,' LGAS=',I3,' EINIT=',D12.4,' 
C    /ISHELL=',I3)
      CALL CALCE(NVAC,KGAS,LGAS,EINIT,ISHELL)
C STORE EVENT 
C     Z0=DIST
      CALL CASSTOREE(NVAC,X0,Y0,Z0,T0)
C IF INCLUDE PHOTOABSORPTION OF FLUORESENCE THEN 
      IF(ICONPH.EQ.1) THEN
       IF(IFLSUM(NVAC).EQ.0) THEN 
C ZERO COUNTER
        L1=0
        CALL CSSTF1E(NVAC,L1,ADIST)
        GO TO 91
       ENDIF
C LOOP AROUND FIRST GEN FLUORESCENCE
       IFL1=IFLSUM(NVAC)
       DO 9 L1=1,IFL1
       EPH=EPHOTON(NVAC,L1)
C
C CALC ABSORPTION POSITION X1,Y1,Z1 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL1 IN GAS KGAS1 COMPONENT LGAS1 
       CALL ABSO(ISECOND,EPH,ISHELL1,KGAS1,LGAS1,DIST1)
C LOW ENERGY PHOTON
       IF(ISHELL1.EQ.-1) THEN
         IFLSUM(NVAC)=IFLSUM(NVAC)-1
        GO TO 9
       ENDIF
C
C CALCULATE CASCADE IN GAS 
       CALL CALC1E(NVAC,KGAS1,LGAS1,EPH,ISHELL1,L1)
C STORE EVENT
       CALL CSSTF1E(NVAC,L1,DIST1) 
    9  CONTINUE 
   91  CONTINUE
C
C SECOND GENERATION FLUORESCENCE
       IF(IFLSUM1(NVAC).EQ.0) THEN
C ZERO COUNTER
        L2=0
        CALL CSSTF2E(NVAC,L2,ADIST)
        GO TO 81
       ENDIF 
C LOOP AROUND SECOND GEN FLUORESCENCE
       IFL2=IFLSUM1(NVAC)
       DO 8 L2=1,IFL2
       EPH=EPHOTG1(NVAC,L2)
C
C CALC ABSORPTION POSITION X2,Y2,Z2 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL2 IN GAS KGAS2 COMPONENT LGAS2
       CALL ABSO(ISECOND,EPH,ISHELL2,KGAS2,LGAS2,DIST2)
C LOW ENERGY PHOTON
       IF(ISHELL2.EQ.-1) THEN
        IFLSUM1(NVAC)=IFLSUM1(NVAC)-1
        GO TO 8
       ENDIF
C
C CALCULATE CASCADE IN GAS 
       CALL CALC2E(NVAC,KGAS2,LGAS2,EPH,ISHELL2,L2)
C STORE EVENT
       CALL CSSTF2E(NVAC,L2,DIST2)               
    8  CONTINUE    
   81  CONTINUE
C 
C THIRD GENERATION FLUORESCENCE
       IF(IFLSUM2(NVAC).EQ.0) THEN
C ZERO COUNTER
        L3=0
        CALL CSSTF3E(NVAC,L3,ADIST)
        GO TO 71
       ENDIF
C LOOP AROUND THIRD GEN FLUORESCENCE
       IFL3=IFLSUM2(NVAC)
       DO 7 L3=1,IFL3
       EPH=EPHOTG2(NVAC,L3)
C
C CALC ABSORPTION POSITION X3,Y3,Z3 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL3 IN GAS KGAS3 COMPONENT LGAS3
       CALL ABSO(ISECOND,EPH,ISHELL3,KGAS3,LGAS3,DIST3)
C LOW ENERGY PHOTON
       IF(ISHELL3.EQ.-1) THEN
        IFLSUM2(NVAC)=IFLSUM2(NVAC)-1
        GO TO 7
       ENDIF
C
C CALCULATE CASCADE IN GAS 
       CALL CALC3E(NVAC,KGAS3,LGAS3,EPH,ISHELL3,L3)
C STORE EVENT
       CALL CSSTF3E(NVAC,L3,DIST3)               
    7  CONTINUE 
   71  CONTINUE     
C 
C FOURTH GENERATION FLUORESCENCE
       IF(IFLSUM3(NVAC).EQ.0) THEN
C ZERO COUNTER
        L4=0
        CALL CSSTF4E(NVAC,L4,ADIST)
        GO TO 61
       ENDIF
C LOOP AROUND FOURTH GEN FLUORESCENCE
       IFL4=IFLSUM3(NVAC)
       DO 6 L4=1,IFL4
       EPH=EPHOTG3(NVAC,L4)
C
C CALC ABSORPTION POSITION X4,Y4,Z4 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL4 IN GAS KGAS4 COMPONENT LGAS4
       CALL ABSO(ISECOND,EPH,ISHELL4,KGAS4,LGAS4,DIST4)
C LOW ENERGY PHOTON
       IF(ISHELL4.EQ.-1) THEN
        IFLSUM3(NVAC)=IFLSUM3(NVAC)-1
        GO TO 6
       ENDIF
C
C CALCULATE CASCADE IN GAS 
       CALL CALC4E(NVAC,KGAS4,LGAS4,EPH,ISHELL4,L4)
C STORE EVENT
       CALL CSSTF4E(NVAC,L4,DIST4)                    
    6  CONTINUE  
   61  CONTINUE     
C 
C FIFTH GENERATION FLUORESCENCE
       IF(IFLSUM4(NVAC).EQ.0) THEN
C ZERO COUNTER
        L5=0
        CALL CSSTF5E(NVAC,L5,ADIST)
        GO TO 51
       ENDIF
C LOOP AROUND FIFTH GEN FLUORESCENCE
       IFL5=IFLSUM5(NVAC)
       DO 5 L5=1,IFL5
       EPH=EPHOTG4(NVAC,L5)
C
C CALC ABSORPTION POSITION X5,Y5,Z5 FOR FLUORESENCE PHOTON OF ENERGY EPH
C WITH ABSORPTION IN SHELL ISHELL5 IN GAS KGAS5 COMPONENT LGAS5
       CALL ABSO(ISECOND,EPH,ISHELL5,KGAS5,LGAS5,DIST5)
C LOW ENERGY PHOTON
       IF(ISHELL5.EQ.-1) THEN
         IFLSUM5(NVAC)=IFLSUM(NVAC)-1
        GO TO 5
       ENDIF
C
C CALCULATE CASCADE IN GAS 
       CALL CALC5E(NVAC,KGAS5,LGAS5,EPH,ISHELL5,L5)
C STORE EVENT
       CALL CSSTF5E(NVAC,L5,DIST5)               
       IF(IFLSUM5(NVAC).GE.1) WRITE(6,89) IFLSUM5
   89  FORMAT(' WARNING SIXTH GENERATION EXISTS IFLSUM5=',I3)
    5  CONTINUE
   51  CONTINUE
      ENDIF
   10 CONTINUE
      RETURN 
      END

def CONTROLE(KGAS,LGAS,X,Y,Z,T,EINIT,ISHELL):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6 SCR(17),SCR1(17)
    # COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCASE/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/CALCAS1E/IONSUM1(10),IFLSUM1(10),ESTOR1(10,28),EPHOTG1(10,28),DRXE1(10,28),DRYE1(10,28),DRZE1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28)
    # COMMON/CALCAS2E/IONSUM2(10),IFLSUM2(10),ESTOR2(10,28),EPHOTG2(10,28),DRXE2(10,28),DRYE2(10,28),DRZE2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28)
    # COMMON/CALCAS3E/IONSUM3(10),IFLSUM3(10),ESTOR3(10,28),EPHOTG3(10,28),DRXE3(10,28),DRYE3(10,28),DRZE3(10,28),DRX3(10,28),DRY3(10,28),DRZ3(10,28)
    # COMMON/CALCAS4E/IONSUM4(10),IFLSUM4(10),ESTOR4(10,28),EPHOTG4(10,28),DRXE4(10,28),DRYE4(10,28),DRZE4(10,28),DRX4(10,28),DRY4(10,28),DRZ4(10,28)
    # COMMON/CALCAS5E/IONSUM5(10),IFLSUM5(10),ESTOR5(10,28),EPHOTG5(10,28),DRXE5(10,28),DRYE5(10,28),DRZE5(10,28),DRX5(10,28),DRY5(10,28),DRZ5(10,28)
    #COMMON/COMP/
    global LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
    #COMMON/GENCAS/
    global ELEV#(17,79)
    global NSDEG#(17)
    global AA#(17)
    global BB#(17)
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#(6,3,17,17)
    global PRSHBT#(6,3,17)
    global IZ#(6,3)
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#(6,3)
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASE/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM1#(10)
    global IFLSUM1#(10)
    global ESTOR1#(10,28)
    global EPHOTG1#(10,28)
    global DRXE1#(10,28)
    global DRYE1#(10,28)
    global DRZE1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    #COMMON/CALCAS2E/
    global IONSUM2#(10)
    global IFLSUM2#(10)
    global ESTOR2#(10,28)
    global EPHOTG2#(10,28)
    global DRXE2#(10,28)
    global DRYE2#(10,28)
    global DRZE2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    #COMMON/CALCAS3E/
    global IONSUM3#(10)
    global IFLSUM3#(10)
    global ESTOR3#(10,28)
    global EPHOTG3#(10,28)
    global DRXE3#(10,28)
    global DRYE3#(10,28)
    global DRZE3#(10,28)
    global DRX3#(10,28)
    global DRY3#(10,28)
    global DRZ3#(10,28)
    #COMMON/CALCAS4E/
    global IONSUM4#(10)
    global IFLSUM4#(10)
    global ESTOR4#(10,28)
    global EPHOTG4#(10,28)
    global DRXE4#(10,28)
    global DRYE4#(10,28)
    global DRZE4#(10,28)
    global DRX4#(10,28)
    global DRY4#(10,28)
    global DRZ4#(10,28)
    #COMMON/CALCAS5E/
    global IONSUM5#(10)
    global IFLSUM5#(10)
    global ESTOR5#(10,28)
    global EPHOTG5#(10,28)
    global DRXE5#(10,28)
    global DRYE5#(10,28)
    global DRZE5#(10,28)
    global DRX5#(10,28)
    global DRY5#(10,28)
    global DRZ5#(10,28)

    #
    #
    #  CALCULATES AUGER AND FLUORESCENCE CASCADE FOR VACANCY IN ICSHELL
    #
    IFIRST=1
    ISECOND=2
    ICONPH=1
    NVAC=1
    X0=X
    Y0=Y
    Z0=Z
    T0=T
    IZERO=0
    IONE=1
    ADIST=0.0
    # 
    # CALCULATE CASCADE EVENT
    #     WRITE(6,991) NVAC,KGAS,LGAS,EINIT,ISHELL
    # 991 print(' NVAC=',I3,' KGAS=',I3,' LGAS=',I3,' EINIT=','%.4f' % ,' 
    #    /ISHELL=',I3)
    CALCE(NVAC,KGAS,LGAS,EINIT,ISHELL)
    # STORE EVENT 
    #     Z0=DIST
    CASSTOREE(NVAC,X0,Y0,Z0,T0)
    # IF INCLUDE PHOTOABSORPTION OF FLUORESENCE : 
    if(ICONPH == 1):
        if(IFLSUM[NVAC]== 0): 
            # ZERO COUNTER
            L1=0
            CSSTF1E(NVAC,L1,ADIST)
            pass
            # endif
            # LOOP AROUND FIRST GEN FLUORESCENCE
        else:
            IFL1=IFLSUM[NVAC]
            for L1 in range(1,IFL1):
                EPH=EPHOTON[NVAC][L1]
                #
                # CALC ABSORPTION POSITION X1,Y1,Z1 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL1 IN GAS KGAS1 COMPONENT LGAS1 
                ABSO(ISECOND,EPH,ISHELL1,KGAS1,LGAS1,DIST1)
                # LOW ENERGY PHOTON
                if(ISHELL1 == -1):
                    IFLSUM[NVAC]=IFLSUM[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALC1E(NVAC,KGAS1,LGAS1,EPH,ISHELL1,L1)
                    # STORE EVENT
                    CSSTF1E(NVAC,L1,DIST1) 
        #
        # SECOND GENERATION FLUORESCENCE
        if(IFLSUM1[NVAC]== 0):
            # ZERO COUNTER
            L2=0
            CSSTF2E(NVAC,L2,ADIST)
            pass
            # endif 
            # LOOP AROUND SECOND GEN FLUORESCENCE
        else:
            IFL2=IFLSUM1[NVAC]
            for L2 in range(1,IFL2):
                EPH=EPHOTG1(NVAC,L2)
                #
                # CALC ABSORPTION POSITION X2,Y2,Z2 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL2 IN GAS KGAS2 COMPONENT LGAS2
                ABSO(ISECOND,EPH,ISHELL2,KGAS2,LGAS2,DIST2)
                # LOW ENERGY PHOTON
                if(ISHELL2 == -1):
                    IFLSUM1[NVAC]=IFLSUM1[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALC2E(NVAC,KGAS2,LGAS2,EPH,ISHELL2,L2)
                    # STORE EVENT
                    CSSTF2E(NVAC,L2,DIST2)               
        # 
        # THIRD GENERATION FLUORESCENCE
        if(IFLSUM2[NVAC]== 0):
            # ZERO COUNTER
            L3=0
            CSSTF3E(NVAC,L3,ADIST)
            pass
            # endif
            # LOOP AROUND THIRD GEN FLUORESCENCE
        else:
            IFL3=IFLSUM2[NVAC]
            for L3 in range(1,IFL3):
                EPH=EPHOTG2[NVAC][L3]
                #
                # CALC ABSORPTION POSITION X3,Y3,Z3 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL3 IN GAS KGAS3 COMPONENT LGAS3
                ABSO(ISECOND,EPH,ISHELL3,KGAS3,LGAS3,DIST3)
                # LOW ENERGY PHOTON
                if(ISHELL3 == -1):
                    IFLSUM2[NVAC]=IFLSUM2[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALC3E(NVAC,KGAS3,LGAS3,EPH,ISHELL3,L3)
                    # STORE EVENT
                    CSSTF3E(NVAC,L3,DIST3)               
        # 
        # FOURTH GENERATION FLUORESCENCE
        if(IFLSUM3[NVAC]== 0):
            # ZERO COUNTER
            L4=0
            CSSTF4E(NVAC,L4,ADIST)
            pass
            # endif
            # LOOP AROUND FOURTH GEN FLUORESCENCE
        else:
            IFL4=IFLSUM3[NVAC]
            for L4 in range(1,IFL4):
                EPH=EPHOTG3[NVAC][L4]
                #
                # CALC ABSORPTION POSITION X4,Y4,Z4 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL4 IN GAS KGAS4 COMPONENT LGAS4
                ABSO(ISECOND,EPH,ISHELL4,KGAS4,LGAS4,DIST4)
                # LOW ENERGY PHOTON
                if(ISHELL4 == -1):
                    IFLSUM3[NVAC]=IFLSUM3[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALC4E(NVAC,KGAS4,LGAS4,EPH,ISHELL4,L4)
                    # STORE EVENT
                    CSSTF4E(NVAC,L4,DIST4)                    
        # 
        # FIFTH GENERATION FLUORESCENCE
        if(IFLSUM4[NVAC]== 0):
            # ZERO COUNTER
            L5=0
            CSSTF5E(NVAC,L5,ADIST)
            pass
            # endif
            # LOOP AROUND FIFTH GEN FLUORESCENCE
        else:
            IFL5=IFLSUM5[NVAC]
            for L5 in range(1,IFL5):
                EPH=EPHOTG4(NVAC,L5)
                #
                # CALC ABSORPTION POSITION X5,Y5,Z5 FOR FLUORESENCE PHOTON OF ENERGY EPH
                # WITH ABSORPTION IN SHELL ISHELL5 IN GAS KGAS5 COMPONENT LGAS5
                ABSO(ISECOND,EPH,ISHELL5,KGAS5,LGAS5,DIST5)
                # LOW ENERGY PHOTON
                if(ISHELL5 == -1):
                    IFLSUM5[NVAC]=IFLSUM[NVAC]-1
                    pass
                    # endif
                    #
                    # CALCULATE CASCADE IN GAS 
                else:
                    CALC5E(NVAC,KGAS5,LGAS5,EPH,ISHELL5,L5)
                    # STORE EVENT
                    CSSTF5E(NVAC,L5,DIST5)               
                    if(IFLSUM5[NVAC]>= 1):
                        print(' WARNING SIXTH GENERATION EXISTS IFLSUM5=',IFLSUM5)
    # endif
    return 
    # end

CALCBn

Calculates cascade in gas KGAS and Molecular component LGAS with initial energy deposit ELECEN and shell vacancy created at ISHELL. * Contains 5 functions: * CALCB1() * CALCB2() * CALCB3() * CALCB4() * CALCB5()

Arguments

Argument Description
NVAC
KGAS
LGAS
ELECEN
ISHELL
L1

Pseudo-Code

      SUBROUTINE CALCB1(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCASB/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS1B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS 
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
      ISTART=IONSUM(NVAC)
      ISTARTF=IFLSUM(NVAC)
      ISHELLST=ISHELL
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      INIT=1
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
      IONSUM(NVAC)=ISTART+1
      IFLSUM(NVAC)=ISTARTF
C STORE PHOTOELECTRON ENERGY AND ANGLE
      ESTORE(NVAC,IONSUM(NVAC))=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,IONSUM(NVAC))
      ELEFT=ELEFT-ELECN
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C USE PHOTELECTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      CALL DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,
     /DRXX,DRYY,DRZZ)
      DRXE(NVAC,IONSUM(NVAC))=DRXX
      DRYE(NVAC,IONSUM(NVAC))=DRYY
      DRZE(NVAC,IONSUM(NVAC))=DRZZ
C LOOP AROUND CASCADE
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      IDUM=1
      IF(INIT.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      INSUM=IONSUM(NVAC)
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
C  ELECTRON + SHAKEOFF
      ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      ESTORE(NVAC,IONSUM(NVAC))=ELECN
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN 
       WRITE(6,99) IONSUM(NVAC)  
  99   FORMAT(' 1ST GEN LIMITED TO 28 IN THIS VERSION IONSUM=',I3)  
       STOP        
      ENDIF 
      ESTORE(NVAC,IONSUM(NVAC))=ESHK 
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION 
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R4=drand48(RDUM)
      PHI=TWOPI*R4
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CALL UPDATE(KGAS,LGAS,ISHELL)
      INIT=2
C CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND ANGLE THEN UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)       
       PHI=TWOPI*R4
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 17 J=1,17
      DO 17 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-(ELEV(J,IZ(KGAS,LGAS))+
     /ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN
        WRITE(6,99) IONSUM(NVAC)
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   17 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE B1') 
      STOP 
      END
      SUBROUTINE CALCB2(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCAS1B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS2B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
      ISTART=IONSUM(NVAC)
      ISTARTF=IFLSUM(NVAC)
      ISHELLST=ISHELL
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      INIT=1
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
      IONSUM(NVAC)=ISTART+1
      IFLSUM(NVAC)=ISTARTF
C STORE INITIAL PHOTELECTRON AND ANGLE
      ESTORE(NVAC,IONSUM(NVAC))=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,IONSUM(NVAC))
      ELEFT=ELEFT-ELECN
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C USE PHOTOELECTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      CALL DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,
     /DRXX,DRYY,DRZZ)
      DRXE(NVAC,IONSUM(NVAC))=DRXX
      DRYE(NVAC,IONSUM(NVAC))=DRYY
      DRZE(NVAC,IONSUM(NVAC))=DRZZ
C LOOP AROUND CASCADE
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      IDUM=1
      IF(INIT.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      INSUM=IONSUM(NVAC)
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
C  ELECTRON + SHAKEOFF
      ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      ESTORE(NVAC,IONSUM(NVAC))=ELECN
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC)
   99  FORMAT(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',I3) 
       STOP
      ENDIF
      ESTORE(NVAC,IONSUM(NVAC))=ESHK
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R4=drand48(RDUM)
      PHI=TWOPI*R4
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CALL UPDATE(KGAS,LGAS,ISHELL)
      INIT=2
C CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 17 J=1,17
      DO 17 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-(ELEV(J,IZ(KGAS,LGAS))+
     /ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN
        WRITE(6,99) IONSUM(NVAC)
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   17 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE B2') 
      STOP 
      END
      SUBROUTINE CALCB3(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCAS2B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS3B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
      ISTART=IONSUM(NVAC)
      ISTARTF=IFLSUM(NVAC)
      ISHELLST=ISHELL
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      INIT=1
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
      IONSUM(NVAC)=ISTART+1
      IFLSUM(NVAC)=ISTARTF
C STORE PHOTOELECTRON ENERGY AND ANGLE
      ESTORE(NVAC,IONSUM(NVAC))=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,IONSUM(NVAC))
      ELEFT=ELEFT-ELECN
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C USE PHOTOELECTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      CALL DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,
     /DRXX,DRYY,DRZZ)
      DRXE(NVAC,IONSUM(NVAC))=DRXX
      DRYE(NVAC,IONSUM(NVAC))=DRYY
      DRZE(NVAC,IONSUM(NVAC))=DRZZ
C LOOP AROUND CASCADE
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      IDUM=1
      IF(INIT.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      INSUM=IONSUM(NVAC)
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
C  ELECTRON + SHAKEOFF
      ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      ESTORE(NVAC,IONSUM(NVAC))=ELECN
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC) 
   99  FORMAT(' 3RD GEN ION CHARGE LIMITED TO 28  IONSUM=',I3) 
       STOP
      ENDIF
      ESTORE(NVAC,IONSUM(NVAC))=ESHK
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION ANGLE
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R4=drand48(RDUM)
      PHI=TWOPI*R4
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CALL UPDATE(KGAS,LGAS,ISHELL)
      INIT=2
C CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 17 J=1,17
      DO 17 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-(ELEV(J,IZ(KGAS,LGAS))+
     /ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN
        WRITE(6,99) IONSUM(NVAC)
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=DRAND48(RDUM)
       PHI=TWOPI*R4
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   17 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE B3') 
      STOP 
      END
      SUBROUTINE CALCB4(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCAS3B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS4B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
      ISTART=IONSUM(NVAC)
      ISTARTF=IFLSUM(NVAC)
      ISHELLST=ISHELL
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      INIT=1
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
      IONSUM(NVAC)=ISTART+1
      IFLSUM(NVAC)=ISTARTF
C STORE PHOTOELECTRON ENERGY AND ANGLE
      ESTORE(NVAC,IONSUM(NVAC))=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,IONSUM(NVAC))
      ELEFT=ELEFT-ELECN
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C USE PHOTOELECTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      CALL DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,
     /DRXX,DRYY,DRZZ)
      DRXE(NVAC,IONSUM(NVAC))=DRXX
      DRYE(NVAC,IONSUM(NVAC))=DRYY
      DRZE(NVAC,IONSUM(NVAC))=DRZZ
C LOOP AROUND CASCADE
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      IDUM=1
      IF(INIT.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      INSUM=IONSUM(NVAC)
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
C  ELECTRON + SHAKEOFF
      ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      ESTORE(NVAC,IONSUM(NVAC))=ELECN
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC)
   99  FORMAT(' 4TH GEN ION CHARGE LIMITED TO 28 IONSUM=',I3) 
       STOP
      ENDIF
      ESTORE(NVAC,IONSUM(NVAC))=ESHK
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION ANGLE
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R4=drand48(RDUM)
      PHI=TWOPI*R4
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CALL UPDATE(KGAS,LGAS,ISHELL)
      INIT=2
C CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 17 J=1,17
      DO 17 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-(ELEV(J,IZ(KGAS,LGAS))+
     /ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN
        WRITE(6,99) IONSUM(NVAC)
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=DRAND48(RDUM)
       PHI=TWOPI*R4
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   17 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE B4') 
      STOP 
      END
      SUBROUTINE CALCB5(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1)
      IMPLICIT REAL*8(A-H,O-Z)
      IMPLICIT INTEGER*8(I-N)
      CHARACTER*6 SCR(17),SCR1(17)
      COMMON/GENCAS/ELEV(17,79),NSDEG(17),AA(17),BB(17),SCR,SCR1
      COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),
     /RAD(6,3,17,17),PRSHBT(6,3,17),IZ(6,3),INIOCC(6,3,17),ISHLMX(6,3),
     /AMZ(6,3)
      COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
      COMMON/CALCAS4B/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS5B/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      DIMENSION TEMP(17),TEMP1(289)
C
C CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
C WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
C
      ISTART=IONSUM(NVAC)
      ISTARTF=IFLSUM(NVAC)
      ISHELLST=ISHELL
      API=DACOS(-1.0D0)
      TWOPI=2.0D0*API
  100 ELEFT=ELECEN
      ISHELL=ISHELLST
      INIT=1
C SET STARTING ARRAY NOCC EQUAL TO INIOCC
      DO 1 I=1,17
      NOCC(KGAS,LGAS,I)=INIOCC(KGAS,LGAS,I)
    1 CONTINUE
      IONSUM(NVAC)=ISTART+1
      IFLSUM(NVAC)=ISTARTF
      ESTORE(NVAC,IONSUM(NVAC))=ELECEN-ELEV(ISHELL,IZ(KGAS,LGAS))
      ELECN=ESTORE(NVAC,IONSUM(NVAC))
      ELEFT=ELEFT-ELECN
      NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)-1  
C USE PHOTOELECTRON ANGULAR DISTRIBUTION
      APE=AA(ISHELL)
      BPE=BB(ISHELL)
      CALL ANGGEN(APE,BPE,THET)
      IF(THET.LT.0.0) THET=THET+API
      R3=drand48(RDUM)
      PHI=TWOPI*R3
      CALL DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,
     /DRXX,DRYY,DRZZ)
      DRXE(NVAC,IONSUM(NVAC))=DRXX
      DRYE(NVAC,IONSUM(NVAC))=DRYY
      DRZE(NVAC,IONSUM(NVAC))=DRZZ
C LOOP AROUND CASCADE
    4 CONTINUE
C CHECK FOR ELECTRON SHAKEOFF
      IDUM=1
      IF(INIT.GT.1) ELECN=ESTORE(NVAC,IONSUM(NVAC))
      INSUM=IONSUM(NVAC)
      CALL SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
C  CALCULATE ENERGY OF ELECTRON
      IF(JVAC.EQ.0) GO TO 2
C  ELECTRON + SHAKEOFF
      ELECN=ELECN-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      ESTORE(NVAC,IONSUM(NVAC))=ELECN
      IONSUM(NVAC)=IONSUM(NVAC)+1
C MAXIMUM ION CHARGE STATE =28
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC)
   99  FORMAT(' 5TH GEN ION CHARGE LIMITED TO 28  IONSUM=',I3)
       STOP 
      ENDIF
      ESTORE(NVAC,IONSUM(NVAC))=ESHK
      ELEFT=ELEFT-ESHK-ELEV(JVAC,IZ(KGAS,LGAS))
      IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION ANGLE
      R3=drand48(RDUM)
      THET=DACOS(1.0-2.0*R3)
      R4=drand48(RDUM)
      PHI=TWOPI*R4
      DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
      DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
      DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
    2 CALL UPDATE(KGAS,LGAS,ISHELL)
      INIT=2
C CHOOSE FLUORESCENCE OR AUGER TRANSITION
      TSUM=0.0
      DO 10 I=1,17
      TSUM=TSUM+RADR(KGAS,LGAS,ISHELL,I)
      DO 10 J=1,17
      TSUM=TSUM+AUGR(KGAS,LGAS,ISHELL,I,J)
   10 CONTINUE
C NO MORE TRANSITIONS POSSIBLE
      IF(TSUM.EQ.0.0) RETURN  
C NORMALISE TO 1.0
      DO 11 I=1,17
      RADR(KGAS,LGAS,ISHELL,I)=RADR(KGAS,LGAS,ISHELL,I)/TSUM
      DO 11 J=1,17
      AUGR(KGAS,LGAS,ISHELL,I,J)=AUGR(KGAS,LGAS,ISHELL,I,J)/TSUM
   11 CONTINUE
C CREATE CUMULATIVE SUM ARRAY
      TEMP(1)=RADR(KGAS,LGAS,ISHELL,1)
      DO 12 I=2,17
      TEMP(I)=RADR(KGAS,LGAS,ISHELL,I)+TEMP(I-1)
   12 CONTINUE
      TEMP1(1)=AUGR(KGAS,LGAS,ISHELL,1,1)
      DO 13 I=2,17
      TEMP1(I)=AUGR(KGAS,LGAS,ISHELL,I,1)+TEMP1(I-1)
   13 CONTINUE
      DO 14 J=1,16
      DO 14 I=1,17
      TEMP1(I+(J*17))=AUGR(KGAS,LGAS,ISHELL,I,(J+1))+TEMP1(I+(J*17)-1)
   14 CONTINUE
C FIND FLUORESCENCE OR AUGER TRANSITION
      R1=drand48(RDUM)
      DO 16 I=1,17
      IF(R1.LT.TEMP(I)) THEN
C STORE PHOTON ENERGY AND UPDATE NOCC
       IFLSUM(NVAC)=IFLSUM(NVAC)+1
       EPHOTON(NVAC,IFLSUM(NVAC))=ELEV(ISHELL,IZ(KGAS,LGAS))-
     /ELEV(I,IZ(KGAS,LGAS))
       ELEFT=ELEFT-DABS(EPHOTON(NVAC,IFLSUM(NVAC)))
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=drand48(RDUM)
       PHI=TWOPI*R4
       DRX(NVAC,IFLSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRY(NVAC,IFLSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZ(NVAC,IFLSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN    
       ENDIF
       GO TO 2  
      ENDIF 
   16 CONTINUE
  116 CONTINUE
      R2=R1-TEMP(17)
      DO 17 J=1,17
      DO 17 I=1,17
      IF(R2.LT.TEMP1(I+((J-1)*17))) THEN
C AUGER OR COSTER KRONIG  
C STORE EJECTED ELECTRON AND UPDATE NOCC
       ETEMP=ELEV(ISHELL,IZ(KGAS,LGAS))-(ELEV(I,IZ(KGAS,LGAS))+
     /ELEV(I,IZ(KGAS,LGAS)+1))*0.5-(ELEV(J,IZ(KGAS,LGAS))+
     /ELEV(J,IZ(KGAS,LGAS)+1))*0.5
       IF(ETEMP.LT.0.0) THEN
C DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
  117   R1=drand48(RDUM)
        IF(R1.LT.TEMP(17)) GO TO 117
        GO TO 116
       ENDIF
       IONSUM(NVAC)=IONSUM(NVAC)+1
       IF(IONSUM(NVAC).GT.28) THEN
        WRITE(6,99) IONSUM(NVAC)
        STOP
       ENDIF
       ESTORE(NVAC,IONSUM(NVAC))=ETEMP
       ELEFT=ELEFT-DABS(ETEMP)
       IF(ELEFT.LT.0.0) GO TO 100
C RANDOM EMISSION DIRECTION
       R3=drand48(RDUM)
       THET=DACOS(1.0-2.0*R3)
       R4=DRAND48(RDUM)
       PHI=TWOPI*R4
       DRXE(NVAC,IONSUM(NVAC))=DSIN(THET)*DCOS(PHI)
       DRYE(NVAC,IONSUM(NVAC))=DSIN(THET)*DSIN(PHI)
       DRZE(NVAC,IONSUM(NVAC))=DCOS(THET)
       NOCC(KGAS,LGAS,ISHELL)=NOCC(KGAS,LGAS,ISHELL)+1
       NOCC(KGAS,LGAS,I)=NOCC(KGAS,LGAS,I)-1
       NOCC(KGAS,LGAS,J)=NOCC(KGAS,LGAS,J)-1
C FIND LOWEST VACANCY
       CALL VACANCY(KGAS,LGAS,ISHELL,ILAST)
       IF(ILAST.EQ.1) THEN
C NO MORE TRANSITIONS POSSIBLE
        RETURN
       ENDIF
       GO TO 4 
      ENDIF
   17 CONTINUE
      WRITE(6,88) 
   88 FORMAT(' ERROR IN CASCADE B5') 
      STOP 
      END
def CALCB1(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6
    # SCR=""#(17)
    # SCR1=""#(17)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCASB/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #DIMENSION 
    TEMP=numpy.zeros((17+1))
    TEMP1=numpy.zeros((289+1))
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS 
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    ISHELLST=ISHELL
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL,IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28):
                    print(' 1ST GEN LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC])  
                    sys.exit()        
                # endif 
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK 
                ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION DIRECTION 
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND ANGLE : UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL,IZ[KGAS][LGAS]]-ELEV[I,IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)       
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2() ## calling the internal function first time 
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 1ST GEN LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
                        # endif
        GOTO4()
        print(' ERROR IN CASCADE B1') 
        sys.exit() 
    GOTO100()
    # end
def CALCB2(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6 
    # SCR=""#(17)
    # SCR1=""#(17)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS1B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS2B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #DIMENSION
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    ISHELLST=ISHELL
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE INITIAL PHOTELECTRON AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL,IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) :
                    print(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC]) 
                    sys.exit()
                # endif
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION DIRECTION
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL,IZ[KGAS][LGAS]]-ELEV[I,IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
                #16 CONTINUE
            GOTO2()
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)

                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
                        # endif
        GOTO4()
        print(' ERROR IN CASCADE B2') 
        sys.exit() 
    GOTO100()
    # end
def CALCB3(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6 
    # SCR=""#(17)
    # SCR1=""#(17)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS2B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS3B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #DIMENSION
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    ISHELLST=ISHELL
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL,IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) :
                    print(' 3RD GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC]) 
                    sys.exit()
                # endif
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION ANGLE
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL,IZ[KGAS][LGAS]]-ELEV[I,IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()  
                    # endif 
            GOTO2()
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I,IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 3RD GEN ION CHARGE LIMITED TO 28 IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
                        # endif
        GOTO4()             
        print(' ERROR IN CASCADE B3') 
        sys.exit() 
    GOTO100()   
    #end

def CALCB4(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    #CHARACTER*6 
    # SCR=""#(17)
    # SCR1=""#(17)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS3B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS4B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #DIMENSION
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    ISHELLST=ISHELL
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL,IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) :
                    print(' 4TH GEN ION CHARGE LIMITED TO 28 IONSUM=',IONSUM[NVAC]) 
                    sys.exit()
                # endif
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION ANGLE
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL,IZ[KGAS][LGAS]]-ELEV[I,IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL,IZ[KGAS][LGAS]]-(ELEV[I,IZ[KGAS][LGAS]]+ELEV[I,IZ[KGAS][LGAS]+1])*0.5-(ELEV[J,IZ[KGAS][LGAS]]+ELEV[J,IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 4TH GEN ION CHARGE LIMITED TO 28 IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                                # endif
                            GOTO4() 
                        # endif
        GOTO4()
        print(' ERROR IN CASCADE B4') 
        sys.exit() 
    GOTO100()
    # end

def CALCB5(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # SCR=""
    # SCR1=""#(17)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS4B/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS5B/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #DIMENSION 
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    ISHELLST=ISHELL
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) :
                    print(' 5TH GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC])
                    sys.exit() 
                # endif
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                ELEFT=ELEFT-ESHK-ELEV[JVAC,IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION ANGLE
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1(I+((J-1)*17))) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL,IZ[KGAS][LGAS]]-(ELEV[I,IZ[KGAS][LGAS]]+ELEV[I,IZ[KGAS][LGAS]+1])*0.5-(ELEV[J,IZ[KGAS][LGAS]]+ELEV[J,IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 5TH GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-abs(ETEMP)
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
                        # endif
        GOTO4()
        print(' ERROR IN CASCADE B5') 
        sys.exit() 
    GOTO100()
    # end

CSSTFNE

Stores event data for N-th generation fluorescence.

Arguments

Argument Description
NVAC
L1
DIST1

Pseudo-Code

def CSSTF1E(NVAC,L1,DIST1):           
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/CALCASE/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS1E/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),DRXS(10,28),DRYS(10,28),DRZS(10,28),T1(10,28)
    #COMMON/CALCASE/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    global T1#(10,28)


    # COMMON/GEN111/X11(10,28),Y11(10,28),Z11(10,28),T11(10,28)
    # COMMON/GEN101/X01(10),Y01(10),Z01(10),T01(10)
    #    COMMON/GEN111/
    global X11#(10,28)
    global Y11#(10,28)
    global Z11#(10,28)
    global T11#(10,28)
    #    COMMON/GEN101/
    global X01#(10)
    global Y01#(10)
    global Z01#(10)
    global T01#(10)

    if(L1 == 0):
        # ZERO COUNTER
        IONF1[NVAC]=0
        for K in range(1,28):
            ESTF1[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 28) :
        print(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN EVENT WITH',IONSUM[NVAC],' IONS.\n',' COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    # VEL IN METRES/PICOSECOND
    VV=2.99792458*(10**-4)
    IONF1[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF1[NVAC][J]=ESTORE[NVAC][J]
        X1[NVAC][J]=X01[NVAC]+DIST1*DRX0[NVAC][L1]
        Y1[NVAC][J]=Y01[NVAC]+DIST1*DRY0[NVAC][L1]
        Z1[NVAC][J]=Z01[NVAC]+DIST1*DRZ0[NVAC][L1]
        T1[NVAC][J]=T01[NVAC]+DIST1/VV
        X11[NVAC][L1]=X1[NVAC][J]
        Y11[NVAC][L1]=Y1[NVAC][J]
        Z11[NVAC][L1]=Z1[NVAC][J]
        T11[NVAC][L1]=T1[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
  # end
def CSSTF2E(NVAC,L1,DIST1):               
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/CALCAS1E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS2E/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),DRXS(10,28),DRYS(10,28),DRZS(10,28),T2(10,28)
    #COMMON/CALCASE/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    global T1#(10,28)


    # COMMON/GEN121/X21(10,28),Y21(10,28),Z21(10,28),T21(10,28)
    # COMMON/GEN111/X11(10,28),Y11(10,28),Z11(10,28),T11(10,28)
    # #   COMMON/GEN121/
    global X21#(10,28)
    global Y21#(10,28)
    global Z21#(10,28)
    global T21#(10,28)
    #    COMMON/GEN111/
    global X11#(10,28)
    global Y11#(10,28)
    global Z11#(10,28)
    global T11#(10,28)

    if(L1 == 0):
        # ZERO COUNTER
        IONF2[NVAC]=0
        for K in range(1,28):
            ESTF2[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 28) :
        print(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.\n',' COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    # VEL IN METRES/PICOSECOND
    VV=2.99792458*10**-4
    IONF2[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF2[NVAC][J]=ESTORE[NVAC][J]
        X2[NVAC][J]=X11[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y2[NVAC][J]=Y11[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z2[NVAC][J]=Z11[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        T2[NVAC][J]=T11[NVAC][L1]+DIST1/VV
        X21[NVAC][L1]=X2[NVAC][J]
        Y21[NVAC][L1]=Y2[NVAC][J]
        Z21[NVAC][L1]=Z2[NVAC][J]
        T21[NVAC][L1]=T2[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTF3E(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/CALCAS2E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS3E/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),DRXS(10,15),DRYS(10,15),DRZS(10,15),T3(10,15)
    #COMMON/CALCASE/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    global T1#(10,28)


    # COMMON/GEN131/X31(10,28),Y31(10,28),Z31(10,28),T31(10,28)
    # COMMON/GEN121/X21(10,28),Y21(10,28),Z21(10,28),T21(10,28)
    #
    if(L1 == 0):
        # ZERO COUNTER
        IONF3[NVAC]=0
        for K in range(1,15):
            ESTF3[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 15) :
        print(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    # VEL IN METRES/PICOSECOND
    VV=2.99792458*10**-4
    IONF3[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF3[NVAC][J]=ESTORE[NVAC][J]
        X3[NVAC][J]=X21[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Z3[NVAC][J]=Y21[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z3[NVAC][J]=Z21[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        T3[NVAC][J]=T21[NVAC][L1]+DIST1/VV
        X31[NVAC][L1]=X3[NVAC][J]
        Y31[NVAC][L1]=Z3[NVAC][J]
        Z31[NVAC][L1]=Z3[NVAC][J]
        T31[NVAC][L1]=T3[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTF4E(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/CALCAS3E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS4E/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),DRXS(10,12),DRYS(10,12),DRZS(10,12),T4(10,12)
    #COMMON/CALCASE/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    global T1#(10,28)


    # COMMON/GEN131/X31(10,28),Y31(10,28),Z31(10,28),T31(10,28)
    # COMMON/GEN141/X41(10,28),Y41(10,28),Z41(10,28),T41(10,28)
    #
    # #   COMMON/GEN131/
    global X31#(10,28)
    global Y31#(10,28)
    global Z31#(10,28)
    global T31#(10,28)
    #    COMMON/GEN121/
    global X21#(10,28)
    global Y21#(10,28)
    global Z21#(10,28)
    global T21#(10,28)

    if(L1 == 0):
        # ZERO COUNTER
        IONF4[NVAC]=0
        for K in range(1,12):
            ESTF4[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 12) :
        print(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    # VEL IN METRES/PICOSECOND
    VV=2.99792458*10**-4
    IONF4[NVAC]=IONSUM[NVAC]
    DO 1 J=1,IONSUM[NVAC]
        ESTF4[NVAC][J]=ESTORE[NVAC][J]
        X4[NVAC][J]=X31[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y4[NVAC][J]=Y31[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z4[NVAC][J]=Z31[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        T4[NVAC][J]=T31[NVAC][L1]+DIST1/VV
        X41[NVAC][L1]=X4[NVAC][J]
        Y41[NVAC][L1]=Y4[NVAC][J]
        Z41[NVAC][L1]=Z4[NVAC][J]
        T41[NVAC][L1]=T4[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
def CSSTF5E(NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/CALCAS4E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS5E/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),DRXS(10,5),DRYS(10,5),DRZS(10,5),T5(10,5)
    #COMMON/CALCASE/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1E/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRXS#(10,28)
    global DRYS#(10,28)
    global DRZS#(10,28)
    global T1#(10,28)

    # COMMON/GEN141/X41(10,28),Y41(10,28),Z41(10,28),T41(10,28)
    # COMMON/GEN151/X51(10,28),Y51(10,28),Z51(10,28),T51(10,28)
    #   COMMON/GEN131/
    global X31#(10,28)
    global Y31#(10,28)
    global Z31#(10,28)
    global T31#(10,28)  
#    COMMON/GEN141/
    global X41#(10,28)
    global Y41#(10,28)
    global Z41#(10,28)
    global T41#(10,28)
    if(L1 == 0):
        # ZERO COUNTER
        IONF5[NVAC]=0
        for K in range(1,5):
            ESTF5[NVAC][K]=0.0
        return
    # endif
    # STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 5) :
        print(' WARNING FifTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n')
        sys.exit()
    # endif
    # VEL IN METRES/PICOSECOND
    VV=2.99792458*10**-4
    IONF5[NVAC]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]):
        ESTF5[NVAC][J]=ESTORE[NVAC][J]
        X5[NVAC][J]=X41[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y5[NVAC][J]=Y41[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z5[NVAC][J]=Z41[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        T5[NVAC][J]=T41[NVAC][L1]+DIST1/VV
        X51[NVAC][L1]=X5[NVAC][J]
        Y51[NVAC][L1]=Y5[NVAC][J]
        Z51[NVAC][L1]=Z5[NVAC][J]
        T51[NVAC][L1]=T5[NVAC][J]
        DRXS[NVAC][J]=DRXE[NVAC][J]
        DRYS[NVAC][J]=DRYE[NVAC][J]
        DRZS[NVAC][J]=DRZE[NVAC][J]
    return
    # end
      SUBROUTINE CSSTF1E(NVAC,L1,DIST1)           
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCASE/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS1E/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),
     /DRXS(10,28),DRYS(10,28),DRZS(10,28),T1(10,28)
      COMMON/GEN111/X11(10,28),Y11(10,28),Z11(10,28),T11(10,28)
      COMMON/GEN101/X01(10),Y01(10),Z01(10),T01(10)
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF1(NVAC)=0
       DO 11 K=1,28
   11  ESTF1(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
C VEL IN METRES/PICOSECOND
      VV=2.99792458D-4
      IONF1(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF1(NVAC,J)=ESTORE(NVAC,J)
      X1(NVAC,J)=X01(NVAC)+DIST1*DRX0(NVAC,L1)
      Y1(NVAC,J)=Y01(NVAC)+DIST1*DRY0(NVAC,L1)
      Z1(NVAC,J)=Z01(NVAC)+DIST1*DRZ0(NVAC,L1)
      T1(NVAC,J)=T01(NVAC)+DIST1/VV
      X11(NVAC,L1)=X1(NVAC,J)
      Y11(NVAC,L1)=Y1(NVAC,J)
      Z11(NVAC,L1)=Z1(NVAC,J)
      T11(NVAC,L1)=T1(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF2E(NVAC,L1,DIST1)               
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS1E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS2E/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),
     /DRXS(10,28),DRYS(10,28),DRZS(10,28),T2(10,28)
      COMMON/GEN121/X21(10,28),Y21(10,28),Z21(10,28),T21(10,28)
      COMMON/GEN111/X11(10,28),Y11(10,28),Z11(10,28),T11(10,28)
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF2(NVAC)=0
       DO 11 K=1,28
   11  ESTF2(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
C VEL IN METRES/PICOSECOND
      VV=2.99792458D-4
      IONF2(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF2(NVAC,J)=ESTORE(NVAC,J)
      X2(NVAC,J)=X11(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y2(NVAC,J)=Y11(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z2(NVAC,J)=Z11(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      T2(NVAC,J)=T11(NVAC,L1)+DIST1/VV
      X21(NVAC,L1)=X2(NVAC,J)
      Y21(NVAC,L1)=Y2(NVAC,J)
      Z21(NVAC,L1)=Z2(NVAC,J)
      T21(NVAC,L1)=T2(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF3E(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS2E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS3E/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),
     /DRXS(10,15),DRYS(10,15),DRZS(10,15),T3(10,15)
      COMMON/GEN131/X31(10,28),Y31(10,28),Z31(10,28),T31(10,28)
      COMMON/GEN121/X21(10,28),Y21(10,28),Z21(10,28),T21(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF3(NVAC)=0
       DO 11 K=1,15
   11  ESTF3(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.15) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
C VEL IN METRES/PICOSECOND
      VV=2.99792458D-4
      IONF3(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF3(NVAC,J)=ESTORE(NVAC,J)
      X3(NVAC,J)=X21(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y3(NVAC,J)=Y21(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z3(NVAC,J)=Z21(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      T3(NVAC,J)=T21(NVAC,L1)+DIST1/VV
      X31(NVAC,L1)=X3(NVAC,J)
      Y31(NVAC,L1)=Y3(NVAC,J)
      Z31(NVAC,L1)=Z3(NVAC,J)
      T31(NVAC,L1)=T3(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF4E(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS3E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS4E/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),
     /DRXS(10,12),DRYS(10,12),DRZS(10,12),T4(10,12)
      COMMON/GEN131/X31(10,28),Y31(10,28),Z31(10,28),T31(10,28)
      COMMON/GEN141/X41(10,28),Y41(10,28),Z41(10,28),T41(10,28)
C
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF4(NVAC)=0
       DO 11 K=1,12
   11  ESTF4(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.12) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
C VEL IN METRES/PICOSECOND
      VV=2.99792458D-4
      IONF4(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF4(NVAC,J)=ESTORE(NVAC,J)
      X4(NVAC,J)=X31(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y4(NVAC,J)=Y31(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z4(NVAC,J)=Z31(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      T4(NVAC,J)=T31(NVAC,L1)+DIST1/VV
      X41(NVAC,L1)=X4(NVAC,J)
      Y41(NVAC,L1)=Y4(NVAC,J)
      Z41(NVAC,L1)=Z4(NVAC,J)
      T41(NVAC,L1)=T4(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF5E(NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS4E/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS5E/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),
     /DRXS(10,5),DRYS(10,5),DRZS(10,5),T5(10,5)
      COMMON/GEN141/X41(10,28),Y41(10,28),Z41(10,28),T41(10,28)
      COMMON/GEN151/X51(10,28),Y51(10,28),Z51(10,28),T51(10,28)
      IF(L1.EQ.0) THEN
C ZERO COUNTER
       IONF5(NVAC)=0
       DO 11 K=1,5
   11  ESTF5(NVAC,K)=0.0
       RETURN
      ENDIF
C STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.5) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC
  99   FORMAT(' WARNING FIFTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/)
       STOP
      ENDIF
C VEL IN METRES/PICOSECOND
      VV=2.99792458D-4
      IONF5(NVAC)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF5(NVAC,J)=ESTORE(NVAC,J)
      X5(NVAC,J)=X41(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y5(NVAC,J)=Y41(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z5(NVAC,J)=Z41(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      T5(NVAC,J)=T41(NVAC,L1)+DIST1/VV
      X51(NVAC,L1)=X5(NVAC,J)
      Y51(NVAC,L1)=Y5(NVAC,J)
      Z51(NVAC,L1)=Z5(NVAC,J)
      T51(NVAC,L1)=T5(NVAC,J)
      DRXS(NVAC,J)=DRXE(NVAC,J)
      DRYS(NVAC,J)=DRYE(NVAC,J)
      DRZS(NVAC,J)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END

COMPRESSE()

Stores event for input to thermalisation

Arguments

Argument Description
ETOT
def COMPRESSE(ETOT):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    # COMMON/RESE/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),X(10,28),Y(10,28),Z[10,28],DRX0(10,28),DRY0(10,28),DRZ0(10,28),T00(10,28)
    # COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),DRX1(10,28),DRY1(10,28),DRZ1(10,28),T01(10,28)
    # COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),DRX2(10,28),DRY2(10,28),DRZ2(10,28),T02(10,28)
    # COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),DRX3(10,15),DRY3(10,15),DRZ3(10,15),T03(10,15)
    # COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),DRX4(10,12),DRY4(10,12),DRZ4(10,12),T04(10,12)
    # COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),DRX5(10,5),DRY5(10,5),DRZ5(10,5),T05(10,5)   
    # COMMON/INTHRMB2/NPTPE,ET(10,50),XT(10,50),YT(10,50),ZT(10,50),TT(10,50),DRX(10,50),DRY(10,50),DRZ[10,50],NJFLR(10,50),IEVENTL(10) 
    # COMMON/PPSTRB/NPTP,EPPST[2],XPP[2],YPP[2],ZPP[2],DRXPP[2],DRYPP[2],DRZPP[2]
    #COMMON/INPT/
    global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
    #COMMON/RESE/
    global IONSM#(10)
    global IFLSM#(10)
    global ESTOR#(10,28)
    global EPHOT#(10,28)
    global X#(10,28)
    global Y#(10,28)
    global Z#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    global T00#(10,28)
    #COMMON/GENE1/
    global IONF1#(10)
    global ESTF1#(10,28)
    global X1#(10,28)
    global Y1#(10,28)
    global Z1#(10,28)
    global DRX1#(10,28)
    global DRY1#(10,28)
    global DRZ1#(10,28)
    global T01#(10,28)
    #COMMON/GENE2/
    global IONF2#(10)
    global ESTF2#(10,28)
    global X2#(10,28)
    global Y2#(10,28)
    global Z2#(10,28)
    global DRX2#(10,28)
    global DRY2#(10,28)
    global DRZ2#(10,28)
    global T02#(10,28)
    #COMMON/GENE3/
    global IONF3#(10)
    global ESTF3#(10,15)
    global X3#(10,15)
    global Y3#(10,15)
    global Z3#(10,15)
    global DRX3#(10,15)
    global DRY3#(10,15)
    global DRZ3#(10,15)
    global T03#(10,15)
    #COMMON/GENE4/
    global IONF4#(10)
    global ESTF4#(10,12)
    global X4#(10,12)
    global Y4#(10,12)
    global Z4#(10,12)
    global DRX4#(10,12)
    global DRY4#(10,12)
    global DRZ4#(10,12)
    global T04#(10,12)
    #COMMON/GENE5/
    global IONF5#(10)
    global ESTF5#(10,5)
    global X5#(10,5)
    global Y5#(10,5)
    global Z5#(10,5)
    global DRX5#(10,5)
    global DRY5#(10,5)
    global DRZ5#(10,5)
    global T05#(10,5)   
    #COMMON/INTHRMB2/
    global NPTPE
    global ET#(10,50)
    global XT#(10,50)
    global YT#(10,50)
    global ZT#(10,50)
    global TT#(10,50)
    global DRX#(10,50)
    global DRY#(10,50)
    global DRZ#(10,50)
    global NJFLR#(10,50)
    global IEVENTL#(10) 
    #COMMON/PPSTRB/
    global NPTP
    global EPPST#(2)
    global XPP#(2)
    global YPP#(2)
    global ZPP#(2)
    global DRXPP#(2)
    global DRYPP#(2)
    global DRZPP#(2)

    #DIMENSION 
    ESTOT=[0 for x in range(10)] 
    NPTPE=1
    IVAC=1
    #      
    #  
    #STORE CASCADE:

    for K in range(1,IVAC):
        ESTOT[K]=0.0
        ITOT=IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]+IONF4[K]+IONF5[K]
        IEVENTL[K]=ITOT
        if(ITOT > 50):
            print(' NEVENT=',J,' ITOT OVERFLOW IN OUTPUTBC')
            sys.exit()       
        # endif
        # STORE EVENT FOR INPUT TO THERMALISATION
        for M in range(1,IONSM[K]):
            ET[K][M]=ESTOR[K][M]
            XT[K][M]=X[K][M]

        TT[K][M]=T00[K][M]
        DRX[K][M]=DRX0[K][M]
        DRY[K][M]=DRY0[K][M]
        DRZ[K,M]=DRZ0[K][M]
        ESTOT[K]=ESTOT[K]+ESTOR[K][M]
        NJFLR[K][M]=0
    if(IONF1[K]== 0):
        pass
    else:
        for M in range(1,IONF1[K]):
            M1=M+IONSM[K]
            ET[K][M1]=ESTF1[K][M]   
            XT[K][M1]=X1[K][M]
            YT[K][M1]=Y1[K][M]
            ZT[K][M1]=Z1[K][M]
            TT[K][M]=T01[K][M]
            DRX[K][M1]=DRX1[K][M]
            DRY[K][M1]=DRY1[K][M]
            DRZ[K,M1]=DRZ1[K][M]
            ESTOT[K]=ESTOT[K]+ESTF1[K][M]
            NJFLR[K][M1]=1
    # 17 
    if(IONF2[K] == 0):
        pass
    else:
        for M in range(1,IONF2[K]):
            M2=M+IONSM[K]+IONF1[K]
            ET[K][M2]=ESTF2[K][M]
            XT[K][M2]=X2[K][M]
            YT[K][M2]=Y2[K][M]
            ZT[K][M2]=Z2[K][M]
            TT[K][M2]=T02[K][M]
            DRX[K][M2]=DRX2[K][M]
            DRY[K][M2]=DRY2[K][M]
            DRZ[K,M2]=DRZ2[K][M]
            ESTOT[K]=ESTOT[K]+ESTF2[K][M]
            NJFLR[K][M2]=2
    #18 
    if(IONF3[K] == 0):
        pass
    else:
        for M in range(1,IONF3[K]):
            M3=M+IONSM[K]+IONF1[K]+IONF2[K]
            ET[K][M3]=ESTF3[K][M]
            XT[K][M3]=X3[K][M]
            YT[K][M3]=Y3[K][M]
            ZT[K][M3]=Z3[K][M]
            TT[K][M3]=T03[K][M]
            DRX[K][M3]=DRX3[K][M]
            DRY[K][M3]=DRY3[K][M]
            DRZ[K,M3]=DRZ3[K][M]
            ESTOT[K]=ESTOT[K]+ESTF3[K][M]
            NJFLR[K][M3]=3
    #19 
    if(IONF4[K] == 0):
        pass
    else:
        for M in range(1,IONF4[K]):
            M4=M+IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]
            ET[K][M4]=ESTF4[K][M]
            XT[K][M4]=X4[K][M]
            YT[K][M4]=Y4[K][M]
            ZT[K][M4]=Z4[K][M]
            TT[K][M4]=T04[K][M]
            DRX[K][M4]=DRX4[K][M]
            DRY[K][M4]=DRY4[K][M]
            DRZ[K,M4]=DRZ4[K][M]
            ESTOT[K]=ESTOT[K]+ESTF4[K][M]
            NJFLR[K][M4]=4

    if(IONF5[K] == 0):
        pass
    else:
        for M in range(1,IONF5[K]):
            M5=M+IONSM[K]+IONF1[K]+IONF2[K]+IONF3[K]+IONF4[K]
            ET[K][M5]=ESTF5[K][M]
            XT[K][M5]=X5[K][M]
            YT[K][M5]=Y5[K][M]
            ZT[K][M5]=Z5[K][M]
            TT[K][M5]=T05[K][M]
            DRX[K][M5]=DRX5[K][M]
            DRY[K][M5]=DRY5[K][M]
            DRZ[K,M5]=DRZ5[K][M]
            ESTOT[K]=ESTOT[K]+ESTF5[K][M]
            NJFLR[K][M5]=5

    # PRINT SOME RAW DATA
        #     IF(J <= 525) :
        #     EDUM=0.0
        #     DO 666 JJ=1,IEVENTL[J]
        # 666 EDUM=EDUM+ET(JJ,J)
        #     WRITE(6,232) J
        #     WRITE(6,2321) EDUM
        #2321 print(' TOT ENERGY=','%.3f' %)
        # 232 print(' DATA FOR EVENT=',I3)
        #     DO 234 M=1,IEVENTL[J]
        #     WRITE(6,233) ET(M,J),XT(M,J),YT(M,J),ZT(M,J),TH(M,J),PH(M,J)
        # 233 print(' E=','%.3f' %,' X=','%.3f' %,' Y=','%.3f' %,' Z=','%.3f' %,' THETA=',
        #    /'%.3f' %,' PHI=','%.3f' %)
        # 234 CONTINUE
        #     # endIF
        EDUM=0.0
    for K in range(1,IVAC):
        EDUM=EDUM+ESTOT[K]
    ETOT=EDUM
    if(EDUM > (EFINAL+0.1)) :
        print(' ETOT =','%.5f' % EDUM,'EV.    BAD EVENT IN COMPRESSE\n')
        IBAD=1
        sys.exit()
    # endif
    return     
    # end         
      SUBROUTINE COMPRESSE(ETOT)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/RESE/IONSM(10),IFLSM(10),ESTOR(10,28),EPHOT(10,28),
     /X(10,28),Y(10,28),Z(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28),
     /T00(10,28)
      COMMON/GENE1/IONF1(10),ESTF1(10,28),X1(10,28),Y1(10,28),Z1(10,28),
     /DRX1(10,28),DRY1(10,28),DRZ1(10,28),T01(10,28)
      COMMON/GENE2/IONF2(10),ESTF2(10,28),X2(10,28),Y2(10,28),Z2(10,28),
     /DRX2(10,28),DRY2(10,28),DRZ2(10,28),T02(10,28)
      COMMON/GENE3/IONF3(10),ESTF3(10,15),X3(10,15),Y3(10,15),Z3(10,15),
     /DRX3(10,15),DRY3(10,15),DRZ3(10,15),T03(10,15)
      COMMON/GENE4/IONF4(10),ESTF4(10,12),X4(10,12),Y4(10,12),Z4(10,12),
     /DRX4(10,12),DRY4(10,12),DRZ4(10,12),T04(10,12)
      COMMON/GENE5/IONF5(10),ESTF5(10,5),X5(10,5),Y5(10,5),Z5(10,5),
     /DRX5(10,5),DRY5(10,5),DRZ5(10,5),T05(10,5)   
      COMMON/INTHRMB2/NPTPE,ET(10,50),XT(10,50),
     /YT(10,50),ZT(10,50),TT(10,50),DRX(10,50),DRY(10,50),DRZ(10,50),
     /NJFLR(10,50),IEVENTL(10) 
      COMMON/PPSTRB/NPTP,EPPST(2),XPP(2),YPP(2),ZPP(2),
     /DRXPP(2),DRYPP(2),DRZPP(2)
      DIMENSION ESTOT(10) 
      NPTPE=1
      IVAC=1
C      
C  STORE CASCADE DATA INTO COMMON/INTHRMB2/
      DO 12 K=1,IVAC
      ESTOT(K)=0.0
      ITOT=IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)+IONF4(K)+IONF5(K)
      IEVENTL(K)=ITOT
      IF(ITOT.GT.50) THEN 
       WRITE(6,811) J
  811 FORMAT(' NEVENT=',I5,' ITOT OVERFLOW IN OUTPUTBC')
       STOP       
      ENDIF
C STORE EVENT FOR INPUT TO THERMALISATION
      DO 6 M=1,IONSM(K)
      ET(K,M)=ESTOR(K,M)
      XT(K,M)=X(K,M)
      YT(K,M)=Y(K,M)
      ZT(K,M)=Z(K,M)
      TT(K,M)=T00(K,M)
      DRX(K,M)=DRX0(K,M)
      DRY(K,M)=DRY0(K,M)
      DRZ(K,M)=DRZ0(K,M)
      ESTOT(K)=ESTOT(K)+ESTOR(K,M)
      NJFLR(K,M)=0
    6 CONTINUE
      IF(IONF1(K).EQ.0) GO TO 17
      DO 7 M=1,IONF1(K)
      M1=M+IONSM(K)
      ET(K,M1)=ESTF1(K,M)   
      XT(K,M1)=X1(K,M)
      YT(K,M1)=Y1(K,M)
      ZT(K,M1)=Z1(K,M)
      TT(K,M)=T01(K,M)
      DRX(K,M1)=DRX1(K,M)
      DRY(K,M1)=DRY1(K,M)
      DRZ(K,M1)=DRZ1(K,M)
      ESTOT(K)=ESTOT(K)+ESTF1(K,M)
      NJFLR(K,M1)=1
    7 CONTINUE
   17 IF(IONF2(K).EQ.0) GO TO 18
      DO 8 M=1,IONF2(K)
      M2=M+IONSM(K)+IONF1(K)
      ET(K,M2)=ESTF2(K,M)
      XT(K,M2)=X2(K,M)
      YT(K,M2)=Y2(K,M)
      ZT(K,M2)=Z2(K,M)
      TT(K,M2)=T02(K,M)
      DRX(K,M2)=DRX2(K,M)
      DRY(K,M2)=DRY2(K,M)
      DRZ(K,M2)=DRZ2(K,M)
      ESTOT(K)=ESTOT(K)+ESTF2(K,M)
      NJFLR(K,M2)=2
    8 CONTINUE
   18 IF(IONF3(K).EQ.0) GO TO 19
      DO 9 M=1,IONF3(K)
      M3=M+IONSM(K)+IONF1(K)+IONF2(K)
      ET(K,M3)=ESTF3(K,M)
      XT(K,M3)=X3(K,M)
      YT(K,M3)=Y3(K,M)
      ZT(K,M3)=Z3(K,M)
      TT(K,M3)=T03(K,M)
      DRX(K,M3)=DRX3(K,M)
      DRY(K,M3)=DRY3(K,M)
      DRZ(K,M3)=DRZ3(K,M)
      ESTOT(K)=ESTOT(K)+ESTF3(K,M)
      NJFLR(K,M3)=3
    9 CONTINUE
   19 IF(IONF4(K).EQ.0) GO TO 20
      DO 10 M=1,IONF4(K)
      M4=M+IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)
      ET(K,M4)=ESTF4(K,M)
      XT(K,M4)=X4(K,M)
      YT(K,M4)=Y4(K,M)
      ZT(K,M4)=Z4(K,M)
      TT(K,M4)=T04(K,M)
      DRX(K,M4)=DRX4(K,M)
      DRY(K,M4)=DRY4(K,M)
      DRZ(K,M4)=DRZ4(K,M)
      ESTOT(K)=ESTOT(K)+ESTF4(K,M)
      NJFLR(K,M4)=4
   10 CONTINUE
   20 IF(IONF5(K).EQ.0) GO TO 21
      DO 11 M=1,IONF5(K)
      M5=M+IONSM(K)+IONF1(K)+IONF2(K)+IONF3(K)+IONF4(K)
      ET(K,M5)=ESTF5(K,M)
      XT(K,M5)=X5(K,M)
      YT(K,M5)=Y5(K,M)
      ZT(K,M5)=Z5(K,M)
      TT(K,M5)=T05(K,M)
      DRX(K,M5)=DRX5(K,M)
      DRY(K,M5)=DRY5(K,M)
      DRZ(K,M5)=DRZ5(K,M)
      ESTOT(K)=ESTOT(K)+ESTF5(K,M)
      NJFLR(K,M5)=5
   11 CONTINUE
   21 CONTINUE
C PRINT SOME RAW DATA
C     IF(J.LE.525) THEN
C     EDUM=0.0
C     DO 666 JJ=1,IEVENTL(J)
C 666 EDUM=EDUM+ET(JJ,J)
C     WRITE(6,232) J
C     WRITE(6,2321) EDUM
C2321 FORMAT(' TOT ENERGY=',D12.3)
C 232 FORMAT(' DATA FOR EVENT=',I3)
C     DO 234 M=1,IEVENTL(J)
C     WRITE(6,233) ET(M,J),XT(M,J),YT(M,J),ZT(M,J),TH(M,J),PH(M,J)
C 233 FORMAT(' E=',D12.3,' X=',D12.3,' Y=',D12.3,' Z=',D12.3,' THETA=',
C    /D12.3,' PHI=',D12.3)
C 234 CONTINUE
C     ENDIF
      EDUM=0.0
   12 CONTINUE
      DO 30 K=1,IVAC
      EDUM=EDUM+ESTOT(K)
   30 CONTINUE
      ETOT=EDUM
      IF(EDUM.GT.(EFINAL+0.1)) THEN
       WRITE(6,999) EDUM
  999 FORMAT(' ETOT =',D12.5,'EV.    BAD EVENT IN COMPRESSE',/)
       IBAD=1
       STOP
      ENDIF
      RETURN     
      END         

SPLITN

Function Description
SPLIT1 Modified opal beaty with energy dependant
splitting function. Model Assumes constant
splitting function between EI and 10 kEV.
Logarithmic chanfe with energy up to a
constant value at minimum ionising 1MEV
and above.
SPLIT2
SPLIT3
Possible energy splitting function
SPLIT4
SPLIT5

Arguments

Argument Description
I
E
EI
ESEC
      SUBROUTINE SPLIT1(I,E,EI,ESEC)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
C MODIFIED OPAL BEATY WITH ENERGY DEPENDANT SPLITTING FUNCTION
C MODEL ASSUMES CONSTANT SPLITTING FUNCTION BETWEEN EI AND 10 KEV
C THEN LOGARTHMIC CHANGE WITH ENERGY UP TO A CONSTANT VALUE AT
C MINIMUM IONISING ,1 MEV , AND ABOVE 
      WPLLOW=ESPLIT(I,1)
      WPLHIGH=ESPLIT(I,2)
      IF(E.LE.1.D4) THEN
       WPL=WPLLOW
       GO TO 1
      ELSE IF(E.GE.1.D6) THEN
       WPL=WPLHIGH
       GO TO 1
      ELSE
C  LOG INTERPOLATE AT ENERGY E 
       A=(WPLHIGH-WPLLOW)*0.21714724095
       B=-(9.21034037198*WPLHIGH-13.815510558*WPLLOW)*0.21714724095
       WPL=A*DLOG(E)+B
      ENDIF
    1 R1=drand48(RDUM)
      ESEC=WPL*TAN(R1*ATAN((E-EI)/(2.0*WPL))) 
      ESEC=WPL*(ESEC/WPL)**0.9524
      RETURN
      END 
      SUBROUTINE SPLIT2(I,E,EI,ESEC)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
C POSSIBLE ENERGY SPLITTING FUNCTION
      RETURN
      END 
      SUBROUTINE SPLIT3(I,E,EI,ESEC)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
C POSSIBLE ENERGY SPLITTING FUNCTION
      RETURN
      END 
      SUBROUTINE SPLIT4(I,E,EI,ESEC)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
C POSSIBLE ENERGY SPLITTING FUNCTION
      RETURN
      END 
      SUBROUTINE SPLIT5(I,E,EI,ESEC)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
C POSSIBLE ENERGY SPLITTING FUNCTION
      RETURN
      END 

def SPLIT1(I,E,EI,ESEC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512)
    # MODIFIED OPAL BEATY WITH ENERGY DEP# endANT SPLITTING def
    # MODEL ASSUMES CONSTANT SPLITTING def BETWEEN EI AND 10 KEV
    # : LOGARTHMIC CHANGE WITH ENERGY UP TO A CONSTANT VALUE AT
    # MINIMUM IONISING ,1 MEV , AND ABOVE 
    WPLLOW=ESPLIT[I][1]
    WPLHIGH=ESPLIT[I][2]
    if(E <= 1*10**4):
        WPL=WPLLOW
        pass
    elif(E >= 1*10**6) :
        WPL=WPLHIGH
        pass
    else:
        #  LOG INTERPOLATE AT ENERGY E 
        A=(WPLHIGH-WPLLOW)*0.21714724095
        B=-(9.21034037198*WPLHIGH-13.815510558*WPLLOW)*0.21714724095
        WPL=A*math.log(E)+B
    # endif
    R1=DRAND48(RDUM)
    ESEC=WPL*TAN(R1*ATAN((E-EI)/(2.0*WPL))) 
    ESEC=WPL*(ESEC/WPL)**0.9524
    return
    # end 
def SPLIT2(I,E,EI,ESEC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512)
    # POSSIBLE ENERGY SPLITTING def
    return
    # end 
def SPLIT3(I,E,EI,ESEC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512)
    # POSSIBLE ENERGY SPLITTING def
    return
    # end 
def SPLIT4(I,E,EI,ESEC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512)
    # POSSIBLE ENERGY SPLITTING def
    return
    # end 
def SPLIT5(I,E,EI,ESEC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # COMMON/IONMOD/
    global ESPLIT#(512,20)
    global IONMODEL#(512)
    # POSSIBLE ENERGY SPLITTING def
    return
      # end 

MONTEFE()

Arguments

Argument Description
NONE -

Pseudo-Code

      SUBROUTINE MONTEFE                                                
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)                                         
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/INPT1/NDVEC
      COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE                    
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)
      COMMON/LARGEN/CFN(20000,60),TCFN(20000),SCLENUL(60),NPLAST
      COMMON/OUTPT/ICOLL(30),NETOT,NPRIME,TMAX1,TIME(300),NNULL,
     /NITOT,ICOLN(512),ICOLNN(60),NREAL,NEXCTOT 
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      COMMON/STTS/XST(150000),YST(150000),ZST(150000),TST(150000),
     /TTIME(150000),NFGF(150000),NFGPP(150000),NFGBR(150000),NELEC,
     /NEGION,EST1,EST2
      COMMON/STEXC/XSTEXC(150000),YSTEXC(150000),ZSTEXC(150000),
     /TSTEXC(150000),NSTEXC
      COMMON/STEXCNUL/XSTN(150000),YSTN(150000),ZSTN(150000),
     /TSTN(150000),IDNUL(150000),NEXCNUL
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6) 
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),DSTFL(512)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512)
      COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO
      COMMON/CASRS/ECAS(400),XCAS(400),YCAS(400),ZCAS(400),DRXS(400),
     /DRYS(400),DRZS(400),TT1(400),NFLGF(400),NFLGPP(400),IEVNTL
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/BREMG/EBRGAM(10),BRDCOSX(10),BRDCOSY(10),BRDCOSZ(10),
     /BRX(10),BRY(10),BRZ(10),BRT(10),EBRTOT(6),NBREM(6)
      COMMON/CASRSB/ECASB(400),XCASB(400),YCASB(400),ZCASB(400),
     /DRXB(400),DRYB(400),DRZB(400),TTB1(400),NFLGFB(400),NFLGPPB(400),
     /IEVNTLB
      COMMON/CASRSE/ECASE(400),XCASE(400),YCASE(400),ZCASE(400),
     /DRXCE(400),DRYCE(400),DRZCE(400),TCASE(400),
     /NFLGFE(400),NFLGPPE(400),IEVENTE
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC
      COMMON/IDEXC/NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,
     /IDG1,IDG2,IDG3,IDG4,IDG5,IDG6
      DIMENSION XS(150000),YS(150000),ZS(150000),TS(150000),ES(150000),
     /DCX(150000),DCY(150000),DCZ(150000),
     /NFLGFC(150000),NFLGPPC(150000),NFLGBRMC(150000)
      DIMENSION TEMP(20000)
C     DIMENSION ETEMP(1000)
C ----------------------------------------------------------------------
C      RELATIVISTIC VERSION SEPTEMBER 2013
C      ELECTRIC FIELD ALONG Z AXIS. NO MAGNETIC FIELD. 
C      TRACKS DELTA ELECTRONS AND UPDATES ARRAYS CONTAINING POSITION AND
C      TIME OF THERMALISED ELECTRONS.
C     CALCULATES NUMBER OF PRODUCED ELECTRONS PER PRIMARY AND OTHER
C     HIGHER FANO FACTORS. 
C     RANGE IS ACCURATE ONLY FOR ANISOTROPIC X-SECTIONS              
C ----------------------------------------------------------------------
C VARYING ENERGY STEPS
      IF(EFINAL.LE.140000.) THEN
        ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
      ELSE
        ESTEP1=20.0
        ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
      ENDIF
      NPRINT=0
      J20000=20000 
      J300=300
      API=DACOS(-1.0D0)
      SMALL=1.0D-20                                                     
      TMAX1=0.0D0 
      EMAX=0.0D0                                                      
      RDUM=RSTART                                                       
      CONST9=CONST3*0.01D0
      DO 25 I=1,300
   25 TIME(I)=0.0D0
      DO 26 I=1,30
   26 ICOLL(I)=0
      DO 27 I=1,512
   27 ICOLN(I)=0
      NREAL=0
      NNULL=0
      NETOT=0
      NEXCTOT=0
      NITOT=0
      NMXADD=0
      NTMPFLG=0
      BP=EFIELD*EFIELD*CONST1                                           
      F1=EFIELD*CONST2                                                  
      F2=EFIELD*CONST3                                                  
      F4=2.0D0*API
      THETA1=THETA
      PHI1=PHI
C CALCULATE MAXIMUM COLLISION FREQUENCY    
      TLIM=0.0 
      DO 111 J=1,20000 
      TEMP(J)=TCFN(J)+TCF(J) 
      IF(TLIM.LT.TEMP(J)) TLIM=TEMP(J) 
  111 CONTINUE
      NEOVFL=0
      J1=0
C START OF PRIMARY EVENT LOOP 
      DO 210 J11=1,NDELTA
      J1=J1+1
      NPRIME=J1
      NGEXC1=0
      NGEXC2=0
      NGEXC3=0
      NGEXC4=0
      NGEXC5=0
      NGEXC6=0
C     INITIAL DIRECTION COSINES FOR ELECTRON BEAM                    
      DCZ1=DCOS(THETA1)
      DCX1=DSIN(THETA1)*DCOS(PHI1)                                      
      DCY1=DSIN(THETA1)*DSIN(PHI1)
      NFLGFF=0
      NFLGPPP=0
      NFLGBRMM=0
      NFLGHIGH=0
      EST1=ESTART
      E1=ESTART
      X=0.0D0
      Y=0.0D0
      Z=0.0D0
      K1=0
      KEXC=0
      NSTEXC=0
      NEXCNUL=0
      NCLUS=0
      NELEC=0
      NEGION=0
      TLAST=0.0D0
      ST=0.0D0
      TDASH=0.0D0
      IF(IMIP.EQ.2) GO TO 1
      IF(IMIP.GT.2) THEN
C READIN FIRST ELECTRON FROM BETA DECAY OR XRAY UNTHERMALISED CLUSTERS
       CALL CASRES(J11,IBADTOT,IBAD1)
C  SKIP IF BAD EVENT
       IF(IBAD1.EQ.1) THEN
        J1=J1-1
        GO TO 210
       ENDIF 
      ELSE IF(IMIP.EQ.1) THEN
C READ IN FIRST ELECTRON FROM MIP INTERACTION
        CALL CASREM(J11)
        EST1=ECAS(1)
        EST2=EST1
      ENDIF
      X=XCAS(1)
      Y=YCAS(1)
      Z=ZCAS(1)
      ST=TT1(1)
      TS(1)=TT1(1)
      E1=ECAS(1)
      DCZ1=DRZS(1)
      DCY1=DRYS(1)
      DCX1=DRXS(1)
      NFLGFF=NFLGF(1)
      NFLGPPP=NFLGPP(1)
      NFLGBRMM=0
      NFLGHIGH=NFLGFF
C PUT REMAINDER OF ELECTRONS INTO CLUSTER STORE
      ISDUM=0
      DO 35 IST=2,IEVNTL
      ISDUM=ISDUM+1
      XS(ISDUM)=XCAS(IST)
      YS(ISDUM)=YCAS(IST)
      ZS(ISDUM)=ZCAS(IST)
      TS(ISDUM)=TT1(IST)
      ES(ISDUM)=ECAS(IST)
      DCX(ISDUM)=DRXS(IST)
      DCY(ISDUM)=DRYS(IST)
      DCZ(ISDUM)=DRZS(IST)
      NFLGFC(ISDUM)=NFLGF(IST)
      NFLGPPC(ISDUM)=NFLGPP(IST)
      NFLGBRMC(ISDUM)=0
      NCLUS=ISDUM
      IF(NFLGF(IST).GT.NFLGHIGH) NFLGHIGH=NFLGF(IST)
   35 CONTINUE

C START OF LOOP FOR NEWLY CREATED ELECTRONS
    1 CONTINUE                                                          
      R1=drand48(RDUM)
      T=-DLOG(R1)/TLIM+TDASH
      TDASH=T
C     AP=DCZ1*F2*DSQRT(E1)
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      AP=DCZ1*EFIELD*BET1*VC*1.0D-10
      BP1=BP/GAM1              
      E=E1+(AP+BP1*T)*T
      IF(E.LT.0.0D0) THEN
       E=0.001D0
      ENDIF    
C INSERT NEW ALGORITHM TO FIND IE FOR VARYING ENERGY STEP          
      IF(IMIP.EQ.1) THEN                                     
       IE=DINT(E/ESTEP)+1                                               
      ELSE
       IF(EFINAL.LE.20000.) THEN
        IE=DINT(E/ESTEP)+1
       ELSE IF(EFINAL.LE.140000.) THEN
        IF(E.LE.16000.) THEN
         IE=DINT(E)+1
        ELSE
         IE=16000+DINT((E-16000.)/ESTEP1)
        ENDIF
       ELSE
        IF(E.LE.12000.) THEN
         IE=DINT(E)+1
        ELSE IF(E.LE.92000.) THEN
         IE=12000+DINT((E-12000.)/ESTEP1)
        ELSE
         IE=16000+DINT((E-92000.)/ESTEP2)
        ENDIF
       ENDIF
      ENDIF 
      IE=DMIN0(IE,J20000)                                            
C                                                                       
C     TEST FOR REAL OR NULL COLLISION                                   
C                                                                       
      R5=drand48(RDUM)
      TEST1=TCF(IE)/TLIM                                               
      IF(R5.LE.TEST1) GO TO 137                                        
      NNULL=NNULL+1                          
      TEST2=TEMP(IE)/TLIM
      IF(R5.LT.TEST2) THEN
C TEST FOR NULL LEVELS
       IF(NPLAST.EQ.0) GO TO 1
       R2=drand48(RDUM) 
       I=0
  888  I=I+1
       IF(CFN(IE,I).LT.R2) GO TO 888
C INCREMENT NULL LEVEL SUM
       NEXCNUL=NEXCNUL+1
       ICOLNN(I)=ICOLNN(I)+1
C STORE X Y Z T ID FOR MOLECULAR LIGHT EMISSION FROM NULL EXCITATION
C NOTE:  SMALL APPROX USED POSITION OF PREVIOUS REAL COLLISION
       XSTN(NEXCNUL)=X
       YSTN(NEXCNUL)=Y
       ZSTN(NEXCNUL)=Z
       TSTN(NEXCNUL)=ST
       IDNUL(NEXCNUL)=I      
       GO TO 1                          
      ELSE
C NULL 
       GO TO 1
      ENDIF    
C                                                                       
C  CALCULATE DIRECTION COSINES AND POSITIONS AT INSTANT BEFORE COLLISION
  137 T2=T*T
      IF(E.GT.EMAX) EMAX=E
      IF(T.GT.TMAX1) TMAX1=T
      TDASH=0.0D0
      NREAL=NREAL+1                                                     
C     CONST6=DSQRT(E1/E)
      GAM2=(EMS+E)/EMS
      GAM12=(GAM1+GAM2)/2.0D0
      BET2=DSQRT(1.0D0-1.0D0/(GAM2*GAM2))   
      CONST6=BET1/BET2                                             
      DCX2=DCX1*CONST6                                                  
      DCY2=DCY1*CONST6                                                  
C     DCZ2=DCZ1*CONST6+EFIELD*T*CONST5/DSQRT(E) 
      DCZ2=DCZ1*CONST6+EFIELD*T*2.0D10*CONST1/(VC*BET2)
C     CONST7=CONST9*DSQRT(E1)  
      CONST7=VC*BET1*1.0D-12                          
      A=T*CONST7                                                        
      X=X+DCX1*A                                                        
      Y=Y+DCY1*A
      Z=Z+DCZ1*A+T2*F1/GAM12
C     Z=Z+DCZ1*A+T2*F1     
      ST=ST+T
      IT=DINT(T+1.0D0)                                                  
      IT=DMIN0(IT,J300)                                               
      TIME(IT)=TIME(IT)+1.0D0                                           
C --------------------------------------------------------------------- 
C     DETERMINATION OF REAL COLLISION TYPE                              
C --------------------------------------------------------------------- 
      R2=drand48(RDUM)
      I=0                                                               
  140 I=I+1                                                             
      IF(CF(IE,I).LT.R2) GO TO 140    
C************************************************************
C CHECK IF BREMSSTRAHLUNG
      IF(IZBR(I).NE.0.AND.LBRM.EQ.1) THEN
       NFLGBRMM=1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1
       DO 141 KNGS=1,NGAS
       IF(IPT.EQ.(KNGS*5)-1) GO TO 142
  141  CONTINUE
  142  IATOMNO=IZBR(I) 
       CALL BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,
     /EGAMMA,GDCX,GDCY,GDCZ)
       NBREM(KNGS)=NBREM(KNGS)+1
       EBRTOT(KNGS)=EBRTOT(KNGS)+EGAMMA
C GET  NEW DRCOS DRCOSY DRCOSX AND ENERGY OF ELECTRON
       E1=EOUT
       DCX1=EDCX
       DCY1=EDCY
       DCZ1=EDCZ
C RUN BREMSSTRAHLUNG GAMMA THROUGH CASCADE THEN STORE CONVERTED 
C ELECTRONS IN COMMON/CASRSB/
C
       CALL BREMSCASC(J11,EGAMMA,X,Y,Z,ST,GDCX,GDCY,GDCZ,ILOW)
C BREMSSTRAHLUNG ENERGY TOO LOW TO IONISE
       IF(ILOW.EQ.1) GO TO 190
C    
C  STORE BREMSSTRAHLUNG DATA IN CLUSTER STORE
C 
       ETSUM=0.0     
       DO 890 KBR=1,IEVNTLB
       NCLUS=NCLUS+1
       IF(NCLUS.GT.150000) THEN 
        WRITE(6,546) NCLUS,NREAL
        STOP
       ENDIF    
       ES(NCLUS)=ECASB(KBR)
       ETSUM=ETSUM+ES(NCLUS)
       XS(NCLUS)=XCASB(KBR)
       YS(NCLUS)=YCASB(KBR)
       ZS(NCLUS)=ZCASB(KBR)
       TS(NCLUS)=TTB1(KBR)
       DCX(NCLUS)=DRXB(KBR)
       DCY(NCLUS)=DRYB(KBR)
       DCZ(NCLUS)=DRZB(KBR)
       NFLGFC(NCLUS)=NFLGFB(KBR)+NFLGHIGH
       NFLGPPC(NCLUS)=NFLGPPB(KBR)
       NFLGBRMC(NCLUS)=2
  890  CONTINUE 
       IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
       GO TO 190
      ENDIF                
  891 CONTINUE  
C*****************************************************************
C     S1=RGAS(I)   
      S1=1.0D0+GAM2*(RGAS(I)-1.0D0)                                    
      EI=EIN(I)
C     WRITE(6,8890) EIN(I),I
C8890 FORMAT(' EIN=',D12.4,' I=',I3)
      IF(E.LT.EI) THEN
      EI=E-0.0001D0
      ENDIF                                                          
      IF(IPN(I).EQ.0) GO TO 666
C ATTACHMENT       
      IF(IPN(I).EQ.-1) THEN
       NETOT=NETOT+1
       NITOT=NITOT+1
       NELEC=NELEC+1
       NEGION=NEGION+1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1 
       IT=DINT(T+1.0D0)
       IT=DMIN0(IT,J300)
       TIME(IT)=TIME(IT)+1.0D0
       GO TO 335
      ENDIF
      EISTR=EI
      IF(IONMODEL(I).GT.0) THEN 
C CALCULATE SECONDARY ENERGY,ESEC,IN IONISATION COLLISION USING
C FIVE DIFFERENT MODELS
       CALL IONSPLIT(I,E,EI,ESEC)
       GO TO 544
      ENDIF
      R9=drand48(RDUM)
C    USE OPAL PETERSON AND BEATY SPLITTING FACTOR.
      ESEC=WPL(I)*TAN(R9*ATAN((E-EI)/(2.0D0*WPL(I))))
      ESEC=WPL(I)*(ESEC/WPL(I))**0.9524
  544 CONTINUE
      EI=ESEC+EI 
C STORE POSITION ,ENERGY, DIRECTION COSINES AND TIME OF GENERATION
C OF SECONDARY IONISATION ELECTRONS
      NCLUS=NCLUS+1
      NMXADD=MAX(NCLUS,NMXADD)
      IF(NCLUS.GT.150000) THEN 
      WRITE(6,546) NCLUS,NREAL
 546  FORMAT(2X,' PROGRAM STOPPED . NCLUS=',I7,' NREAL=',I10)
      STOP
      ENDIF     
      XS(NCLUS)=X       
      YS(NCLUS)=Y
      ZS(NCLUS)=Z
      TS(NCLUS)=ST
      ES(NCLUS)=ESEC   
      NFLGFC(NCLUS)=NFLGFF
      NFLGPPC(NCLUS)=NFLGPPP
      NFLGBRMC(NCLUS)=NFLGBRMM
      NTMPFLG=1
      NCLTMP=NCLUS
C     ES(NCLUS)=ESEC
C RANDOMISE SECONDARY ELECTRON DIRECTION
C     R3=drand48(RDUM)
C     F3=1.0-2.0D0*R3
C     THETA0=DACOS(F3)
C     F6=DCOS(THETA0)
C     F5=DSIN(THETA0)
C     R4=drand48(RDUM)
C     PHI0=F4*R4
C     F8=DSIN(PHI0)
C     F9=DCOS(PHI0)               
C     DCX(NCLUS)=F9*F5
C     DCY(NCLUS)=F8*F5
C     DCZ(NCLUS)=F6   
C*********************************************************
      IF(IECASC.EQ.0)GO TO 333
      IF(LEGAS(I).EQ.0) GO TO 333
C USE COMPLETE CASCADE FOR ELECTRON IONISATION
      KG1=NEGAS(I)
      LG1=LEGAS(I)
      IGSHEL=IESHELL(I)
      CALL CASCADEE(J11,KG1,LG1,X,Y,Z,ST,ESEC,IGSHEL)
C
C STORE CASCADE IN CLUSTER STORE
C
      ETSUM=0.0
      DO 844 KBR=1,IEVENTE
      NCLUS=NCLUS+1
      IF(NCLUS.GT.150000) THEN
       WRITE(6,546) NCLUS,NREAL
       STOP
      ENDIF
      ES(NCLUS)=ECASE(KBR)
      ETSUM=ETSUM+ES(NCLUS)
      XS(NCLUS)=XCASE(KBR)
      YS(NCLUS)=YCASE(KBR)
      ZS(NCLUS)=ZCASE(KBR)
      TS(NCLUS)=TCASE(KBR)
      DCX(NCLUS)=DRXCE(KBR)
      DCY(NCLUS)=DRYCE(KBR)
      DCZ(NCLUS)=DRZCE(KBR)
      NFLGFC(NCLUS)=NFLGFE(KBR)+NFLGHIGH
      NFLGPPC(NCLUS)=NFLGPPE(KBR)
      NFLGBRMC(NCLUS)=NFLGBRMM
  844 CONTINUE
      IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
      GO TO 666
C*********************************************************
C STORE POSSIBLE SHELL EMISSIONS AUGER OR FLUORESCENCE 
  333 IF(EISTR.GT.30.0) THEN
C      WRITE(6,8891) EISTR
C8891  FORMAT(' EISTR=',D12.4)
C TEST IF FLUORESCENCE EMISSION
       IFLTST=0
       IF(WKLM(I).GT.0.0) THEN
        R9=drand48(RDUM)
        IF(R9.LT.WKLM(I)) IFLTST=1
       ENDIF
       IF(IFLTST.EQ.0) THEN
C AUGER EMISSION WITHOUT FLUORESCENCE
        NAUG=NC0(I)
        EAVAUG=EC0(I)/DFLOAT(NAUG)
        DO 700 JFL=1,NC0(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        TS(NCLUS)=ST
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  700   CONTINUE 
       ELSE
C AUGER EMISSION AND FLUORESENCE 
        IF(NG2(I).EQ.0) GO TO 702
        NAUG=NG2(I)
        EAVAUG=EG2(I)/DFLOAT(NAUG)
        DO 701 JFL=1,NG2(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  701   CONTINUE
  702   IF(NG1(I).EQ.0) GO TO 704
        NAUG=NG1(I)
        EAVAUG=EG1(I)/DFLOAT(NAUG)
        R9=drand48(RDUM)
        DFL=-DLOG(R9)*DSTFL(I)
        DO 703 JFL=1,NG1(I)
        NCLUS=NCLUS+1
        R3=drand48(RDUM)
        THEFL=DACOS(1.0-2.0D0*R3)
        R4=drand48(RDUM)
        PHIFL=F4*R4
        XS(NCLUS)=X+DFL*DSIN(THEFL)*DCOS(PHIFL)
        YS(NCLUS)=Y+DFL*DSIN(THEFL)*DSIN(PHIFL)
        ZS(NCLUS)=Z+DFL*DCOS(THEFL)
        NFLGFC(NCLUS)=NFLGHIGH+1
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
        NFLGHIGH=NFLGFC(NCLUS)
  703   CONTINUE
  704   CONTINUE
       ENDIF
      ENDIF
C                                                                       
C  GENERATE SCATTERING ANGLES AND UPDATE  LABORATORY COSINES AFTER      
C   COLLISION ALSO UPDATE ENERGY OF ELECTRON.                           
C
  666 IPT=IARRY(I)
      ICOLL(IPT)=ICOLL(IPT)+1 
      ICOLN(I)=ICOLN(I)+1 
C IF EXCITATION THEN ADD PROBABILITY ,PENFRA(1,I),OF TRANSFER TO GIVE   
C IONISATION OF THE OTHER GASES IN MIXTURE
      IF(IPEN.EQ.0.OR.NGAS.EQ.1) GO TO 5 
      IF(PENFRA(1,I).NE.0.0) THEN      
       RAN=drand48(RDUM)
       IF(RAN.GT.PENFRA(1,I)) GO TO 5
       NCLUS=NCLUS+1  
C ENTER HERE POSSIBLE DELOCALISATION LENGTH FOR PENNING TRANSFER
       IF(PENFRA(2,I).EQ.0.0) THEN
        XS(NCLUS)=X
        YS(NCLUS)=Y      
        ZS(NCLUS)=Z             
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        GO TO 667
       ENDIF
       ASIGN=1.0
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       XS(NCLUS)=X-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       YS(NCLUS)=Y-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       ZS(NCLUS)=Z-DLOG(RAN)*PENFRA(2,I)*ASIGN
  667  RAN=drand48(RDUM)
       TS(NCLUS)=ST-DLOG(RAN)*PENFRA(3,I)
C ASSIGN EXCESS ENERGY OF 1EV TO PENNING CREATED ELECTRON
       ES(NCLUS)=1.0
       DCX(NCLUS)=DCX1
       DCY(NCLUS)=DCY1
       DCZ(NCLUS)=DCZ1
       GO TO 6
      ENDIF 
C      GO TO 6 
C CALCULATE SUM OF EXCITATION PER CLUSTER AND STORE EXCITATION X Y Z T
   5  IF(IPN(I).EQ.0) THEN
       IF((RGAS(I)*EIN(I)).GT.4.0) THEN
        KEXC=KEXC+1
        IF(KEXC.GT.150000) THEN
         WRITE(6,548) KEXC
 548     FORMAT(2X,' PROGRAM STOPPED . KEXC=',I7)
         STOP
        ENDIF
C FIND GAS IN WHICH EXCITATION OCCURED AND INCREMENT COUNTER
        IF(I.LE.IDG1) THEN 
         NGEXC1=NGEXC1+1
        ELSE IF(I.LE.IDG2) THEN
         NGEXC2=NGEXC2+1
        ELSE IF(I.LE.IDG3) THEN
         NGEXC3=NGEXC3+1
        ELSE IF(I.LE.IDG4) THEN
         NGEXC4=NGEXC4+1
        ELSE IF(I.LE.IDG5) THEN
         NGEXC5=NGEXC5+1
        ELSE IF(I.LE.IDG6) THEN
         NGEXC6=NGEXC6+1
        ELSE
         WRITE(6,9911) 
 9911    FORMAT(' PROGRAM STOPPED BAD GAS ID IN MONTE')
         STOP
        ENDIF
        NEXCTOT=NEXCTOT+1
        NSTEXC=NSTEXC+1
        XSTEXC(KEXC)=X
        YSTEXC(KEXC)=Y
        ZSTEXC(KEXC)=Z
        TSTEXC(KEXC)=ST
       ENDIF
      ENDIF 
   6  S2=(S1*S1)/(S1-1.0D0) 
C   ANISOTROPIC SCATTERING
      R3=drand48(RDUM)
      IF(INDEX(I).EQ.1) THEN
       R31=drand48(RDUM)
       F3=1.0D0-R3*ANGCT(IE,I)          
       IF(R31.GT.PSCT(IE,I))  F3=-F3
      ELSE IF(INDEX(I).EQ.2) THEN
       EPSI=PSCT(IE,I)
       F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3))) 
      ELSE 
C ISOTROPIC SCATTERING                                             
       F3=1.0D0-2.0D0*R3
      ENDIF
      THETA0=DACOS(F3)
      R4=drand48(RDUM)
      PHI0=F4*R4                                                        
      F8=DSIN(PHI0)                                                     
      F9=DCOS(PHI0)                                                     
      IF(E.LT.EI) EI=0.0D0                                              
      ARG1=1.0D0-S1*EI/E                                                
      ARG1=DMAX1(ARG1,SMALL)                                            
      D=1.0D0-F3*DSQRT(ARG1)                                            
      E1=E*(1.0D0-EI/(S1*E)-2.0D0*D/S2) 
      E1=DMAX1(E1,SMALL)                                                
      Q=DSQRT((E/E1)*ARG1)/S1                                           
      Q=DMIN1(Q,1.0D0)                                                  
      THETA=DASIN(Q*DSIN(THETA0))                                       
      F6=DCOS(THETA)                                                    
      U=(S1-1.0D0)*(S1-1.0D0)/ARG1                                      
      CSQD=F3*F3                                                        
      IF(F3.LT.0.0D0.AND.CSQD.GT.U) F6=-1.0D0*F6                        
      F5=DSIN(THETA)                                                    
      DCZ2=DMIN1(DCZ2,1.0D0)                                            
      ARGZ=DSQRT(DCX2*DCX2+DCY2*DCY2)
      IF(ARGZ.EQ.0.0D0) THEN
       DCZ1=F6         
       DCX1=F9*F5                             
       DCY1=F8*F5 
       IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
        F5S=F5*DSQRT(E1/ES(NCLTMP))
        IF(F5S.GT.1.0) F5S=1.0
        THSEC=DASIN(F5S)
        F5S=DSIN(THSEC)
        F6S=DCOS(THSEC)
        IF(F6.LT.0.0) F6S=-F6S
        PHIS=PHI0+API   
        IF(PHIS.GT.F4) PHIS=PHI0-F4
        F8S=DSIN(PHIS)
        F9S=DCOS(PHIS)
        DCZ(NCLTMP)=F6S
        DCX(NCLTMP)=F9S*F5S
        DCY(NCLTMP)=F8S*F5S
        NTMPFLG=0
       ENDIF
       GO TO 190
      ENDIF                                            
      DCZ1=DCZ2*F6+ARGZ*F5*F8                                           
      DCY1=DCY2*F6+(F5/ARGZ)*(DCX2*F9-DCY2*DCZ2*F8)                     
      DCX1=DCX2*F6-(F5/ARGZ)*(DCY2*F9+DCX2*DCZ2*F8)
      IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
       F5S=F5*DSQRT(E1/ES(NCLTMP))
       IF(F5S.GT.1.0) F5S=1.0            
       THSEC=DASIN(F5S)
       F5S=DSIN(THSEC)
       F6S=DCOS(THSEC)
       IF(F6.LT.0.0) F6S=-F6S
       PHIS=PHI0+API   
       IF(PHIS.GT.F4) PHIS=PHI0-F4
       F8S=DSIN(PHIS)
       F9S=DCOS(PHIS)
       DCZ(NCLTMP)=DCZ2*F6S+ARGZ*F5S*F8S                               
       DCY(NCLTMP)=DCY2*F6S+(F5S/ARGZ)*(DCX2*F9S-DCY2*DCZ2*F8S)        
       DCX(NCLTMP)=DCX2*F6S-(F5S/ARGZ)*(DCY2*F9S+DCX2*DCZ2*F8S)
       NTMPFLG=0
      ENDIF 
  190 CONTINUE 
C TEST IF ELECTRON IS THERMALISED
      IF(E1.GT.ETHRM) GO TO 1  
C STORE POSITION AND TIME OF ELECTRON AND COLLISION HISTORY
  191 CONTINUE
      K1=K1+1
      XST(K1)=X
      YST(K1)=Y
      ZST(K1)=Z
      TST(K1)=ST
      NFGF(K1)=NFLGFF
      NFGPP(K1)=NFLGPPP
      NFGBR(K1)=NFLGBRMM
      TTIME(K1)=ST-TLAST
      NELEC=NELEC+1
      NETOT=NETOT+1
 335  IF(K1.EQ.150000) GO TO 889
C CATCH SINGLE ELECTRON CLUSTER THAT WAS ATTACHED.
c     IF(NELEC.EQ.1.AND.NCLUS.EQ.0) GO TO 210 
C
        IF(NELEC.EQ.(NCLUS+1)) THEN
C       WRITE(6,884) NELEC,NCLUS,NEGION,J11
C 884 FORMAT(' NELEC=',I6,' NCLUS=',I6,' NEGION=',I3,' J11=',I6)
C LAST ELECTRON IN CLUSTER DO STATISTICS OVER PRIMARY CLUSTER
        CALL STATS(J11,J1)
        GO TO 210
       ENDIF
      IF(NELEC.LT.(NCLUS+1)) THEN
C GET NEW IONISATION ELECTRON FROM STORE
       X=XS(NELEC)
       Y=YS(NELEC)
       Z=ZS(NELEC)
       ST=TS(NELEC)
       NFLGFF=NFLGFC(NELEC)
       NFLGPPP=NFLGPPC(NELEC)
       NFLGBRMM=NFLGBRMC(NELEC)
       TLAST=TS(NELEC)
       E1=ES(NELEC)
       DCX1=DCX(NELEC)
       DCY1=DCY(NELEC)
       DCZ1=DCZ(NELEC)
       IF(E1.LT.ETHRM) GO TO 191                       
       GO TO 1   
      ENDIF
C  MAIN LOOP END    
  210 CONTINUE
C RESET NUMBER OF EVENTS FOR BAD EVENTS
      IF(IMIP.GT.2) NDELTA=NDELTA-IBADTOT
C
      WRITE(6,887) EMAX,NEOVFL
  887 FORMAT(' EMAX=',D12.7,' NEOVFL=',I5)  
      IF(EMAX.GT.EFINAL) THEN
      WRITE(6,989) EFINAL,EMAX
  989 FORMAT('INCREASE ENERGY LIMIT FROM',D12.6,' EV TO AT LEAST',D12.6,
     /' EV.')
      STOP
      ENDIF                                         
      RETURN 
  889 NLEFT=NCLUS-NELEC
      WRITE(6,992) NPRIME,NLEFT,NCLUS
  992 FORMAT(3(/),' WARNING STOPPED AFTER NPRIME=',I6,' LAST PRIMARY HAS
     /AT LEAST ',I6,' SECONDARIES LEFT TO TRACK OUT OF ',I6,' ELECTRONS 
     /ALREADY IN CLUSTER') 
      STOP                      
      RETURN                                                            
      END
def MONTEFE():                                                
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      # global /INPT/
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      # global /INPT1/
      global NDVEC
      # global /CNSTS1/
      global CONST1,CONST2,CONST3,CONST4,CONST5                  
      # global /SETP/
      global TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX#(10)
      global TCFMAX1,RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE                    
      # global /LARGE/
      global CF#(20000,512)
      global EIN#(512)
      global TCF#(20000)
      global IARRY#(512),
      global RGAS#(512)
      global IPN#(512)
      global WPL#(512)
      global IZBR#(512)
      global IPLAST,PENFRA#[3,512]
      # global /LARGEN/
      global CFN#(20000,60),
      global TCFN#(20000)
      global SCLENUL#(60)
      global NPLAST
      # global /OUTPT/
      global ICOLL#(30)
      global NETOT,NPRIME,TMAX1,TIME#(300)
      global NNULL,NITOT,ICOLN#(512)
      global ICOLNN#(60)
      global NREAL,NEXCTOT 
      # global /RLTVY/
      global BET#(20000)
      global GAM#(20000)
      global VC,EMS
      # global /STTS/
      global XST#(150000)
      global YST#(150000)
      global ZST#(150000)
      global TST#(150000),
      global TTIME#(150000)
      global NFGF#(150000)
      global NFGPP#(150000)
      global NFGBR#(150000)
      global NELEC,NEGION,EST1,EST2
      # global /STEXC/
      global XSTEXC#(150000)
      global YSTEXC#(150000)
      global ZSTEXC#(150000),
      global TSTEXC#(150000)
      global NSTEXC
      # global /STEXCNUL/
      global XSTN#(150000)
      global YSTN#(150000)
      global ZSTN#(150000),
      global TSTN#(150000)
      global IDNUL#(150000)
      global NEXCNUL
      # global /IONC/
      global DOUBLE#(6,20000)
      global CMINIXSC#[6]
      global CMINEXSC#[6]
      global ECLOSS#[6],
      global WPLN#[6]
      global ICOUNT,AVPFRAC#(3,6) 
      # global /IONFL/
      global NC0#(512)
      global EC0#(512)
      global NG1#(512)
      global EG1#(512)
      global NG2#(512),
      global EG2#(512)
      global WKLM#(512)
      global DSTFL#(512)
      # global /IONMOD/
      global ESPLIT#(512,20)
      global IONMODEL#(512)
      # global /ANIS/
      global PSCT#(20000,512)
      global ANGCT#(20000,512)
      global INDEX#(512)
      global NISO
      # global /CASRS/
      global ECAS#(400)
      global XCAS#(400)
      global YCAS#(400)
      global ZCAS#(400)
      global DRXS#(400),
      global DRYS#(400)
      global DRZS#(400)
      global TT1#(400)
      global NFLGF#(400)
      global NFLGPP#(400)
      global IEVNTL
      # global /COMP/
      global LCMPLCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      # global /BREMG/
      global EBRGAM#(10)
      global BRDCOSX#(10)
      global BRDCOSY#(10)
      global BRDCOSZ#[10],
      global BRX#(10)
      global BRY#(10)
      global BRZ#[10]
      global BRT#(10)
      global EBRTOT#[6]
      global NBREM#[6]
      # global /CASRSB/
      global ECASB#[400]
      global XCASB#[400]
      global YCASB#[400]
      global ZCASB#[400],
      global DRXB#[400]
      global DRYB#[400]
      global DRZB#[400]
      global TTB1#(400)
      global NFLGFB#[400]
      global NFLGPPB#[400],
      global IEVNTLB
      # global /CASRSE/
      global ECASE#(400)
      global XCASE#(400)
      global YCASE#(400)
      global ZCASE#(400),
      global DRXCE#(400)
      global DRYCE#(400)
      global DRZCE#(400)
      global TCASE#(400),
      global NFLGFE#(400)
      global NFLGPPE#(400)
      global IEVENTE
      # global /ECASC/
      global NEGAS#(512)
      global LEGAS#(512)
      global IESHELL#(512)
      global IECASC
      # global /IDEXC/
      global NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,IDG1,IDG2,IDG3,IDG4,IDG5,IDG6
      NGAS=conf.NGAS
      NSTEP=conf.NSTEP
      NANISO=conf.NANISO
      EFINAL=conf.EFINAL
      ESTEP=conf.ESTEP
      AKT=conf.AKT
      ARY=conf.ARY
      TEMPC=conf.TEMPC
      TORR=conf.TORR
      IPEN=conf.IPEN
      NDVEC=conf.NDVEC
      CONST1=conf.CONST1
      CONST2=conf.CONST2
      CONST3=conf.CONST3
      CONST4=conf.CONST4
      CONST5=conf.CONST5                  
      TMAX=conf.TMAX
      SMALL=conf.SMALL
      API=conf.API
      ESTART=conf.ESTART
      THETA=conf.THETA
      PHI=conf.PHI
      TCFMAX=conf.TCFMAX
      TCFMAX1=conf.TCFMAX1
      RSTART=conf.RSTART
      EFIELD=conf.EFIELD
      ETHRM=conf.ETHRM
      ECUT=conf.ECUT
      NDELTA=conf.NDELTA
      IMIP=conf.IMIP
      IWRITE=conf.IWRITE                    
      CF=conf.CF
      EIN=conf.EIN
      TCF=conf.TCF
      IARRY=conf.IARRY
      RGAS=conf.RGAS
      IPN=conf.IPN
      WPL=conf.WPL
      IZBR=conf.IZBR
      IPLAST=conf.IPLAST
      PENFRA=conf.PENFRA
      CFN=conf.CFN
      TCFN=conf.TCFN
      SCLENUL=conf.SCLENUL
      NPLAST=conf.NPLAST
      ICOLL=conf.ICOLL
      NETOT=conf.NETOT
      NPRIME=conf.NPRIME
      TMAX1=conf.TMAX1
      TIME=conf.TIME
      NNULL=conf.NNULL
      NITOT=conf.NITOT
      ICOLN=conf.ICOLN
      ICOLNN=conf.ICOLNN
      NREAL=conf.NREAL
      NEXCTOT =conf.NEXCTOT 
      BET=conf.BET
      GAM=conf.GAM
      VC=conf.VC
      EMS=conf.EMS
      XST=conf.XST
      YST=conf.YST
      ZST=conf.ZST
      TST=conf.TST
      TTIME=conf.TTIME
      NFGF=conf.NFGF
      NFGPP=conf.NFGPP
      NFGBR=conf.NFGBR
      NELEC=conf.NELEC
      NEGION=conf.NEGION
      EST1=conf.EST1
      EST2=conf.EST2
      XSTEXC=conf.XSTEXC
      YSTEXC=conf.YSTEXC
      ZSTEXC=conf.ZSTEXC
      TSTEXC=conf.TSTEXC
      NSTEXC=conf.NSTEXC
      XSTN=conf.XSTN
      YSTN=conf.YSTN
      ZSTN=conf.ZSTN
      TSTN=conf.TSTN
      IDNUL=conf.IDNUL
      NEXCNUL=conf.NEXCNUL
      DOUBLE=conf.DOUBLE
      CMINIXSC=conf.CMINIXSC
      CMINEXSC=conf.CMINEXSC
      ECLOSS=conf.ECLOSS
      WPLN=conf.WPLN
      ICOUNT=conf.ICOUNT
      AVPFRAC=conf.AVPFRAC
      NC0=conf.NC0
      EC0=conf.EC0
      NG1=conf.NG1
      EG1=conf.EG1
      NG2=conf.NG2
      EG2=conf.EG2
      WKLM=conf.WKLM
      DSTFL=conf.DSTFL
      ESPLIT=conf.ESPLIT
      IONMODEL=conf.IONMODEL
      PSCT=conf.PSCT
      ANGCT=conf.ANGCT
      INDEX=conf.INDEX
      NISO=conf.NISO
      ECAS=conf.ECAS
      XCAS=conf.XCAS
      YCAS=conf.YCAS
      ZCAS=conf.ZCAS
      DRXS=conf.DRXS
      DRYS=conf.DRYS
      DRZS=conf.DRZS
      TT1=conf.TT1
      NFLGF=conf.NFLGF
      NFLGPP=conf.NFLGPP
      IEVNTL=conf.IEVNTL
      LCMPLCFLG=conf.LCMPLCFLG
      LRAY=conf.LRAY
      LRFLG=conf.LRFLG
      LPAP=conf.LPAP
      LPFLG=conf.LPFLG
      LBRM=conf.LBRM
      LBFLG=conf.LBFLG
      LPEFLG=conf.LPEFLG
      EBRGAM=conf.EBRGAM
      BRDCOSX=conf.BRDCOSX
      BRDCOSY=conf.BRDCOSY
      BRDCOSZ=conf.BRDCOSZ
      BRX=conf.BRX
      BRY=conf.BRY
      BRZ=conf.BRZ
      BRT=conf.BRT
      EBRTOT=conf.EBRTOT
      NBREM=conf.NBREM
      ECASB=conf.ECASB
      XCASB=conf.XCASB
      YCASB=conf.YCASB
      ZCASB=conf.ZCASB
      DRXB=conf.DRXB
      DRYB=conf.DRYB
      DRZB=conf.DRZB
      TTB1=conf.TTB1
      NFLGFB=conf.NFLGFB
      NFLGPPB=conf.NFLGPPB
      IEVNTLB=conf.IEVNTLB
      ECASE=conf.ECASE
      XCASE=conf.XCASE
      YCASE=conf.YCASE
      ZCASE=conf.ZCASE
      DRXCE=conf.DRXCE
      DRYCE=conf.DRYCE
      DRZCE=conf.DRZCE
      TCASE=conf.TCASE
      NFLGFE=conf.NFLGFE
      NFLGPPE=conf.NFLGPPE
      IEVENTE=conf.IEVENTE
      NEGAS=conf.NEGAS
      LEGAS=conf.LEGAS
      IESHELL=conf.IESHELL
      IECASC=conf.IECASC
      NGEXC1=conf.NGEXC1
      NGEXC2=conf.NGEXC2
      NGEXC3=conf.NGEXC3
      NGEXC4=conf.NGEXC4
      NGEXC5=conf.NGEXC5
      NGEXC6=conf.NGEXC6
      IDG1=conf.IDG1
      IDG2=conf.IDG2
      IDG3=conf.IDG3
      IDG4=conf.IDG4
      IDG5=conf.IDG5
      IDG6=conf.IDG6
      # DIMENSION 
      XS=numpy.zeros((150000+1))
      YS=numpy.zeros((150000+1))
      ZS=numpy.zeros((150000+1))
      TS=numpy.zeros((150000+1))
      ES=numpy.zeros((150000+1))
      DCX=numpy.zeros((150000+1))
      DCY=numpy.zeros((150000+1))
      DCZ=numpy.zeros((150000+1))
      NFLGFC=numpy.zeros((150000+1))
      NFLGPPC=numpy.zeros((150000+1))
      NFLGBRMC=numpy.zeros((150000+1))
      # DIMENSION 
      TEMP=numpy.zeros((20000+1))
      #     DIMENSION ETEMP(1000)
      # ----------------------------------------------------------------------
      #      RELATIVISTIC VERSION SEPTEMBER 2013
      #      ELECTRIC FIELD ALONG Z AXIS. NO MAGNETIC FIELD. 
      #      TRACKS DELTA ELECTRONS AND UPDATES ARRAYS CONTAINING POSITION AND
      #      TIME OF THERMALISED ELECTRONS.
      #     CALCULATES NUMBER OF PRODUCED ELECTRONS PER PRIMARY AND OTHER
      #     HIGHER FANO FACTORS. 
      #     RANGE IS ACCURATE ONLY FOR ANISOTROPIC X-SECTIONS              
      # ----------------------------------------------------------------------
      # VARYING ENERGY STEPS
      if(EFINAL <= 140000.):
            ESTEP1=(EFINAL-16000.0)/float(4000)
      else:
            ESTEP1=20.0
            ESTEP2=(EFINAL-92000.0)/float(4000)
      # endif
      NPRINT=0
      J20000=20000 
      J300=300
      API=numpy.arccos(-1.00)
      SMALL=1.0E-20                                                     
      TMAX1=0.00 
      EMAX=0.00                                                      
      RDUM=RSTART                                                       
      CONST9=CONST3*0.010
      for I in range(1,300+1):
            TIME[I]=0.00
      for I in range(1,30+1):
            ICOLL[I]=0
      for I in range(1,512+1):
            ICOLN[I]=0
      NREAL=0
      NNULL=0
      NETOT=0
      NEXCTOT=0
      NITOT=0
      NMXADD=0
      NTMPFLG=0
      BP=EFIELD*EFIELD*CONST1                                           
      F1=EFIELD*CONST2                                                  
      F2=EFIELD*CONST3                                                  
      F4=2.00*API
      THETA1=THETA
      PHI1=PHI
      # CALCULATE MAXIMUM COLLISION FREQUENCY    
      TLIM=0.0 
      for J in range(1,20000+1):
            TEMP[J]=TCFN[J]+TCF[J] 
            if(TLIM < TEMP[J]):
                  TLIM=TEMP[J] 
            # 111 CONTINUE
      NEOVFL=0
      J1=0
      # START OF PRIMARY EVENT LOOP 
      for J11 in range(1,NDELTA+1):
            J1=J1+1
            NPRIME=J1
            NGEXC1=0
            NGEXC2=0
            NGEXC3=0
            NGEXC4=0
            NGEXC5=0
            NGEXC6=0
            #     INITIAL DIRECTION COSINES FOR ELECTRON BEAM                    
            DCZ1=numpy.cos(THETA1)
            DCX1=numpy.sin(THETA1)*numpy.cos(PHI1)                                      
            DCY1=numpy.sin(THETA1)*numpy.sin(PHI1)
            NFLGFF=0
            NFLGPPP=0
            NFLGBRMM=0
            NFLGHIGH=0
            EST1=ESTART
            E1=ESTART
            X=0.00
            Y=0.00
            Z=0.00
            K1=0
            KEXC=0
            NSTEXC=0
            NEXCNUL=0
            NCLUS=0
            NELEC=0
            NEGION=0
            TLAST=0.00
            ST=0.00
            TDASH=0.00
            if(IMIP == 2):
                  pass
            else:
                  if(IMIP > 2):
                        # READIN FIRST ELECTRON FROM BETA DECAY OR XRAY UNTHERMALISED CLUSTERS
                        CASRES(J11,IBADTOT,IBAD1)
                        #  SKIP IF BAD EVENT
                        if(IBAD1 == 1):
                              J1=J1-1
                              flag1=0
                              continue
                        # endif 
                  elif(IMIP == 1) :
                        # READ IN FIRST ELECTRON FROM MIP INTERACTION
                        CASREM(J11)
                        EST1=ECAS[1]
                        EST2=EST1
                  # endif
                  X=XCAS[1]
                  Y=YCAS[1]
                  Z=ZCAS[1]
                  ST=TT1[1]
                  TS[1]=TT1[1]
                  E1=ECAS[1]
                  DCZ1=DRZS[1]
                  DCY1=DRYS[1]
                  DCX1=DRXS[1]
                  NFLGFF=NFLGF[1]
                  NFLGPPP=NFLGPP[1]
                  NFLGBRMM=0
                  NFLGHIGH=NFLGFF
                  # PUT REMAINDER OF ELECTRONS INTO CLUSTER STORE
                  ISDUM=0
                  for IST in range(2,IEVNTL+1):
                        ISDUM=ISDUM+1
                        XS[ISDUM]=XCAS[IST]
                        YS[ISDUM]=YCAS[IST]
                        ZS[ISDUM]=ZCAS[IST]
                        TS[ISDUM]=TT1[IST]
                        ES[ISDUM]=ECAS[IST]
                        DCX[ISDUM]=DRXS[IST]
                        DCY[ISDUM]=DRYS[IST]
                        DCZ[ISDUM]=DRZS[IST]
                        NFLGFC[ISDUM]=NFLGF[IST]
                        NFLGPPC[ISDUM]=NFLGPP[IST]
                        NFLGBRMC[ISDUM]=0
                        NCLUS=ISDUM
                        if(NFLGF[IST]> NFLGHIGH):
                              NFLGHIGH=NFLGF[IST]
                        # 35 CONTINUE

                  # START OF LOOP FOR NEWLY CREATED ELECTRONS
            # 1 CONTINUE
            flag1=1
            flag210=0
            while(flag1):  
                  flag1=0                                                       
                  R1=random.uniform(RDUM)
                  T=-math.log(R1)/TLIM+TDASH
                  TDASH=T
                  #     AP=DCZ1*F2*DSQRT(E1)
                  GAM1=(EMS+E1)/EMS
                  BET1=math.sqrt(1.00-1.00/(GAM1*GAM1))
                  AP=DCZ1*EFIELD*BET1*VC*1.0e-10
                  BP1=BP/GAM1              
                  E=E1+(AP+BP1*T)*T
                  if(E < 0.00):
                        E=0.0010
                  # endif    
                  # INSERT NEW ALGORITHM TO FIND IE FOR VARYING ENERGY STEP          
                  if(IMIP == 1):
                        IE=int(E/ESTEP)+1                                               
                  else:
                        if(EFINAL <= 20000.):
                              IE=int(E/ESTEP)+1
                        elif(EFINAL <= 140000.) :
                              if(E <= 16000.):
                                    IE=int(E)+1
                              else:
                                    IE=16000+int((E-16000.)/ESTEP1)
                              # endif
                        else:
                              if(E <= 12000.):
                                    IE=int(E)+1
                              elif(E <= 92000.) :
                                    IE=12000+int((E-12000.)/ESTEP1)
                              else:
                                    IE=16000+int((E-92000.)/ESTEP2)
                              # endif
                        # endif
                  # endif 
                  IE=min(IE,J20000)                                            
                  #                                                                       
                  #     TEST FOR REAL OR NULL COLLISION                                   
                  #                                                                       
                  R5=random.uniform(RDUM)
                  TEST1=TCF[IE]/TLIM                                               
                  if(R5 <= TEST1):
                        pass
                  else:
                        NNULL=NNULL+1                          
                        TEST2=TEMP[IE]/TLIM
                        if(R5 < TEST2):
                              # TEST FOR NULL LEVELS
                              if(NPLAST == 0):
                                    flag1=1
                                    continue
                              R2=random.uniform(RDUM) 
                              I=0
                              flag888=1
                              while(flag888):  
                                    flag888=0
                                    I=I+1
                                    if(CFN[IE][I]< R2):
                                          flag888=1

                              # INCREMENT NULL LEVEL SUM
                              NEXCNUL=NEXCNUL+1
                              ICOLNN[I]=ICOLNN[I]+1
                              # STORE X Y Z T ID FOR MOLECULAR LIGHT EMISSION FROM NULL EXCITATION
                              # NOTE:  SMALL APPROX USED POSITION OF PREVIOUS REAL COLLISION
                              XSTN[NEXCNUL]=X
                              YSTN[NEXCNUL]=Y
                              ZSTN[NEXCNUL]=Z
                              TSTN[NEXCNUL]=ST
                              IDNUL[NEXCNUL]=I      
                              flag1=1
                              continue
                        else:
                              # NULL 
                              flag1=1
                              continue
                        # endif    
                        #                                                                       
                        #  CALCULATE DIRECTION COSINES AND POSITIONS AT INSTANT BEFORE COLLISION
                  # 137 
                  T2=T*T
                  if(E > EMAX):
                        EMAX=E
                  if(T > TMAX1):
                        TMAX1=T
                  TDASH=0.00
                  NREAL=NREAL+1                                                     
                  #     CONST6=DSQRT(E1/E)
                  GAM2=(EMS+E)/EMS
                  GAM12=(GAM1+GAM2)/2.00
                  BET2=math.sqrt(1.00-1.00/(GAM2*GAM2))   
                  CONST6=BET1/BET2                                             
                  DCX2=DCX1*CONST6                                                  
                  DCY2=DCY1*CONST6                                                  
                  #     DCZ2=DCZ1*CONST6+EFIELD*T*CONST5/DSQRT(E) 
                  DCZ2=DCZ1*CONST6+EFIELD*T*2.0e10*CONST1/(VC*BET2)
                  #     CONST7=CONST9*DSQRT(E1)  
                  CONST7=VC*BET1*1.0e-12                          
                  A=T*CONST7                                                        
                  X=X+DCX1*A                                                        
                  Y=Y+DCY1*A
                  Z=Z+DCZ1*A+T2*F1/GAM12
                  #     Z=Z+DCZ1*A+T2*F1     
                  ST=ST+T
                  IT=int(T+1.00)                                                  
                  IT=min(IT,J300)                                               
                  TIME[IT]=TIME[IT]+1.00                                           
                  # --------------------------------------------------------------------- 
                  #     DETERMINATION OF REAL COLLISION TYPE                              
                  # --------------------------------------------------------------------- 
                  R2=random.uniform(RDUM)
                  I=0                                                               
                  flag140=1
                  while(flag140):
                        flag140=0
                        I=I+1                                                             
                        if(CF[IE][I]< R2):
                              flag140=1
                              break
                  #************************************************************
                  # CHECK IF BREMSSTRAHLUNG
                  if(IZBR[I]!= 0 and LBRM == 1) :
                        NFLGBRMM=1
                  IPT=IARRY[I]
                  ICOLL[IPT]=ICOLL[IPT]+1
                  ICOLN[I]=ICOLN[I]+1
                  for KNGS in range(1,NGAS+1):
                        if(IPT == (KNGS*5)-1):
                              break
                        # 141  CONTINUE
                  # 142  
                  IATOMNO=IZBR[I] 
                  BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,EGAMMA,GDCX,GDCY,GDCZ)
                  NBREM[KNGS]=NBREM[KNGS]+1
                  EBRTOT[KNGS]=EBRTOT[KNGS]+EGAMMA
                  # GET  NEW DRCOS DRCOSY DRCOSX AND ENERGY OF ELECTRON
                  E1=EOUT
                  DCX1=EDCX
                  DCY1=EDCY
                  DCZ1=EDCZ
                  # RUN BREMSSTRAHLUNG GAMMA THROUGH CASCADE THEN STORE CONVERTED 
                  # ELECTRONS IN global /CASRSB/
                  #
                  BREMSCASC(J11,EGAMMA,X,Y,Z,ST,GDCX,GDCY,GDCZ,ILOW)
                  # BREMSSTRAHLUNG ENERGY TOO LOW TO IONISE
                  flag191=0
                  if(ILOW == 1):
                        pass
                  else:
                        #    
                        #  STORE BREMSSTRAHLUNG DATA IN CLUSTER STORE
                        # 
                        ETSUM=0.0     
                        for KBR in range(1,IEVNTLB+1):
                              NCLUS=NCLUS+1
                              if(NCLUS > 150000):
                                    print('   SUBROUTINE STOPPED . NCLUS=',NCLUS,' NREAL=',NREAL)
                                    sys.exit()
                              # endif    
                              ES[NCLUS]=ECASB[KBR]
                              ETSUM=ETSUM+ES[NCLUS]
                              XS[NCLUS]=XCASB[KBR]
                              YS[NCLUS]=YCASB[KBR]
                              ZS[NCLUS]=ZCASB[KBR]
                              TS[NCLUS]=TTB1[KBR]
                              DCX[NCLUS]=DRXB[KBR]
                              DCY[NCLUS]=DRYB[KBR]
                              DCZ[NCLUS]=DRZB[KBR]
                              NFLGFC[NCLUS]=NFLGFB[KBR]+NFLGHIGH
                              NFLGPPC[NCLUS]=NFLGPPB[KBR]
                              NFLGBRMC[NCLUS]=2
                              # 890  CONTINUE 
                        if(NFLGFC[NCLUS]> NFLGHIGH):
                              NFLGHIGH=NFLGFC[NCLUS]
                              pass
                        else:
                              # endif                
                              # 891 CONTINUE  
                              #*****************************************************************
                              #     S1=RGAS[I]   
                              S1=1.00+GAM2*(RGAS[I]-1.00)                                    
                              EI=EIN[I]
                              #     WRITE(6,8890) EIN[I],I
                              #8890 FORMAT(' EIN=',D12.4,' I=',I3)
                              if(E < EI):
                                    EI=E-0.00010
                              # endif                                                          
                              if(IPN[I]== 0):
                                    # GO TO 666
                                    pass
                              else:
                                    flag335=0
                                    # ATTACHMENT       
                                    if(IPN[I]== -1) :
                                          NETOT=NETOT+1
                                          NITOT=NITOT+1
                                          NELEC=NELEC+1
                                          NEGION=NEGION+1
                                          IPT=IARRY[I]
                                          ICOLL[IPT]=ICOLL[IPT]+1
                                          ICOLN[I]=ICOLN[I]+1 
                                          IT=int(T+1.00)
                                          IT=min(IT,J300)
                                          TIME[IT]=TIME[IT]+1.00
                                          flag335=1
                                    # endif
                                    if(flag335):
                                          # 335 Copied it form the end till here 
                                          if(K1 == 150000):
                                                # GO TO 889
                                                # 889 
                                                NLEFT=NCLUS-NELEC
                                                # WRITE(6,992) NPRIME,NLEFT,NCLUS
                                                # 992 
                                                print('\n\n\n WARNING STOPPED AFTER NPRIME=',NPRIME,' LAST PRIMARY HAS AT LEAST ',NLEFT,' SECONDARIES LEFT TO TRACK OUT OF ',NCLUS,' ELECTRONS ALREADY IN CLUSTER') 
                                                sys.exit()                      
                                                return                                                            
                                                # end
                                          # CATCH SINGLE ELECTRON CLUSTER THAT WAS ATTACHED.
                                          #     if(NELEC == 1 and NCLUS == 0) GO TO 210 
                                          #
                                          if(NELEC == (NCLUS+1)) :
                                                #       WRITE(6,884) NELEC,NCLUS,NEGION,J11
                                                # 884 FORMAT(' NELEC=',I6,' NCLUS=',I6,' NEGION=',I3,' J11=',I6)
                                                # LAST ELECTRON IN CLUSTER DO STATISTICS OVER PRIMARY CLUSTER
                                                STATS(J11,J1)
                                                # GO TO 210
                                                flag210=1

                                          # endif
                                          if(NELEC < (NCLUS+1)) :
                                                # GET NEW IONISATION ELECTRON FROM STORE
                                                X=XS[NELEC]
                                                Y=YS[NELEC]
                                                Z=ZS[NELEC]
                                                ST=TS[NELEC]
                                                NFLGFF=NFLGFC[NELEC]
                                                NFLGPPP=NFLGPPC[NELEC]
                                                NFLGBRMM=NFLGBRMC[NELEC]
                                                TLAST=TS[NELEC]
                                                E1=ES[NELEC]
                                                DCX1=DCX[NELEC]
                                                DCY1=DCY[NELEC]
                                                DCZ1=DCZ[NELEC]
                                                if(E1 < ETHRM):
                                                      flag191=1
                                                      pass
                                                else:                       
                                                      # GO TO 1   
                                                      continue
                                          # endif

                                    EISTR=EI
                                    if(IONMODEL[I]> 0) : 
                                          # CALCULATE SECONDARY ENERGY,ESEC,IN IONISATION COLLISION USING
                                          # FIVE DIFFERENT MODELS
                                          IONSPLIT(I,E,EI,ESEC)
                                          # GO TO 544
                                          pass
                                    else:
                                          # endif
                                          R9=random.uniform(RDUM)
                                          #    USE OPAL PETERSON AND BEATY SPLITTING FACTOR.
                                          ESEC=WPL[I]*numpy.tan(R9*numpy.arctan((E-EI)/(2.00*WPL[I])))
                                          ESEC=WPL[I]*(ESEC/WPL[I])**0.9524
                                    # 544 CONTINUE
                                    EI=ESEC+EI 
                                    # STORE POSITION ,ENERGY, DIRECTION COSINES AND TIME OF GENERATION
                                    # OF SECONDARY IONISATION ELECTRONS
                                    NCLUS=NCLUS+1
                                    NMXADD=MAX(NCLUS,NMXADD)
                                    if(NCLUS > 150000):
                                          # WRITE(6,546) NCLUS,NREAL
                                          # 546  
                                          print('   SUBROUTINE STOPPED . NCLUS=',NCLUS,' NREAL=',NREAL)
                                          sys.exit()
                                    # endif     
                                    XS[NCLUS]=X       
                                    YS[NCLUS]=Y
                                    ZS[NCLUS]=Z
                                    TS[NCLUS]=ST
                                    ES[NCLUS]=ESEC   
                                    NFLGFC[NCLUS]=NFLGFF
                                    NFLGPPC[NCLUS]=NFLGPPP
                                    NFLGBRMC[NCLUS]=NFLGBRMM
                                    NTMPFLG=1
                                    NCLTMP=NCLUS
                                    #     ES[NCLUS]=ESEC
                                    # RANDOMISE SECONDARY ELECTRON DIRECTION
                                    #     R3=drand48(RDUM)
                                    #     F3=1.0-2.0D0*R3
                                    #     THETA0=DACOS(F3)
                                    #     F6=DCOS(THETA0)
                                    #     F5=DSIN(THETA0)
                                    #     R4=drand48(RDUM)
                                    #     PHI0=F4*R4
                                    #     F8=DSIN(PHI0)
                                    #     F9=DCOS(PHI0)               
                                    #     DCX[NCLUS]=F9*F5
                                    #     DCY[NCLUS]=F8*F5
                                    #     DCZ[NCLUS]=F6   
                                    #*********************************************************
                                    flag666=0
                                    if(IECASC == 0):
                                          # GO TO 333
                                          pass
                                    else:
                                          if(LEGAS[I]== 0):
                                                # GO TO 333
                                                pass
                                          else:
                                                # USE COMPLETE CASCADE FOR ELECTRON IONISATION
                                                KG1=NEGAS[I]
                                                LG1=LEGAS[I]
                                                IGSHEL=IESHELL[I]
                                                CASCADEE(J11,KG1,LG1,X,Y,Z,ST,ESEC,IGSHEL)
                                                #
                                                # STORE CASCADE IN CLUSTER STORE
                                                #
                                                ETSUM=0.0
                                                for KBR in range(1,IEVENTE+1):
                                                      NCLUS=NCLUS+1
                                                      if(NCLUS > 150000):
                                                            print('   SUBROUTINE STOPPED . NCLUS=',NCLUS,' NREAL=',NREAL)
                                                            sys.exit()
                                                      # endif
                                                      ES[NCLUS]=ECASE[KBR]
                                                      ETSUM=ETSUM+ES[NCLUS]
                                                      XS[NCLUS]=XCASE[KBR]
                                                      YS[NCLUS]=YCASE[KBR]
                                                      ZS[NCLUS]=ZCASE[KBR]
                                                      TS[NCLUS]=TCASE[KBR]
                                                      DCX[NCLUS]=DRXCE[KBR]
                                                      DCY[NCLUS]=DRYCE[KBR]
                                                      DCZ[NCLUS]=DRZCE[KBR]
                                                      NFLGFC[NCLUS]=NFLGFE[KBR]+NFLGHIGH
                                                      NFLGPPC[NCLUS]=NFLGPPE[KBR]
                                                      NFLGBRMC[NCLUS]=NFLGBRMM
                                                      # 844 CONTINUE
                                                if(NFLGFC[NCLUS]> NFLGHIGH):
                                                      NFLGHIGH=NFLGFC[NCLUS]
                                                flag666=1
                                                #*********************************************************
                                                # STORE POSSIBLE SHELL EMISSIONS AUGER OR FLUORESCENCE 
                                    # 333 
                                    if(flag666):
                                          pass
                                    else:
                                          if(EISTR > 30.0) :
                                                #      WRITE(6,8891) EISTR
                                                #8891  FORMAT(' EISTR=',D12.4)
                                                # TEST IF FLUORESCENCE EMISSION
                                                IFLTST=0
                                                if(WKLM[I]> 0.0):
                                                      R9=random.uniform(RDUM)
                                                if(R9 < WKLM[I]):
                                                      IFLTST=1
                                          # endif
                                          if(IFLTST == 0):
                                                # AUGER EMISSION WITHOUT FLUORESCENCE
                                                NAUG=NC0[I]
                                                EAVAUG=EC0[I]/float(NAUG)
                                                for JFL in range(1,NC0[I]+1):
                                                      NCLUS=NCLUS+1
                                                      XS[NCLUS]=X
                                                      YS[NCLUS]=Y
                                                      ZS[NCLUS]=Z
                                                      TS[NCLUS]=ST
                                                      NFLGFC[NCLUS]=NFLGFF
                                                      NFLGPPC[NCLUS]=NFLGPPP
                                                      NFLGBRMC[NCLUS]=NFLGBRMM
                                                      ES[NCLUS]=EAVAUG
                                                      R3=random.uniform(RDUM)
                                                      F3=1.0-2.00*R3
                                                      THETA0=numpy.arccos(F3)
                                                      F6=numpy.cos(THETA0)
                                                      F5=numpy.sin(THETA0)
                                                      R4=random.uniform(RDUM)
                                                      PHI0=F4*R4
                                                      F8=numpy.sin(PHI0)
                                                      F9=numpy.cos(PHI0)               
                                                      DCX[NCLUS]=F9*F5
                                                      DCY[NCLUS]=F8*F5
                                                      DCZ[NCLUS]=F6
                                                      # 700   CONTINUE 
                                          else:
                                                # AUGER EMISSION AND FLUORESENCE 
                                                if(NG2[I]== 0):
                                                      # GO TO 702
                                                      pass
                                                else:
                                                      NAUG=NG2[I]
                                                      EAVAUG=EG2[I]/float(NAUG)
                                                      for JFL in range(1,NG2[I]+1):
                                                            NCLUS=NCLUS+1
                                                            XS[NCLUS]=X
                                                            YS[NCLUS]=Y
                                                            ZS[NCLUS]=Z
                                                            NFLGFC[NCLUS]=NFLGFF
                                                            NFLGPPC[NCLUS]=NFLGPPP
                                                            NFLGBRMC[NCLUS]=NFLGBRMM
                                                            TS[NCLUS]=ST
                                                            ES[NCLUS]=EAVAUG
                                                            R3=random.uniform(RDUM)
                                                            F3=1.0-2.00*R3
                                                            THETA0=numpy.arccos(F3)
                                                            F6=numpy.cos(THETA0)
                                                            F5=numpy.sin(THETA0)
                                                            R4=random.uniform(RDUM)
                                                            PHI0=F4*R4
                                                            F8=numpy.sin(PHI0)
                                                            F9=numpy.cos(PHI0)               
                                                            DCX[NCLUS]=F9*F5
                                                            DCY[NCLUS]=F8*F5
                                                            DCZ[NCLUS]=F6
                                                            # 701   CONTINUE
                                                # 702   
                                                if(NG1[I] == 0):
                                                      # GO TO 704
                                                      pass
                                                else:
                                                      NAUG=NG1[I]
                                                      EAVAUG=EG1[I]/float(NAUG)
                                                      R9=random.uniform(RDUM)
                                                      DFL=-math.log(R9)*DSTFL[I]
                                                      for JFL in range(1,NG1[I]+1):
                                                            NCLUS=NCLUS+1
                                                            R3=random.uniform(RDUM)
                                                            THEFL=numpy.arccos(1.0-2.00*R3)
                                                            R4=random.uniform(RDUM)
                                                            PHIFL=F4*R4
                                                            XS[NCLUS]=X+DFL*numpy.sin(THEFL)*numpy.cos(PHIFL)
                                                            YS[NCLUS]=Y+DFL*numpy.sin(THEFL)*numpy.sin(PHIFL)
                                                            ZS[NCLUS]=Z+DFL*numpy.cos(THEFL)
                                                            NFLGFC[NCLUS]=NFLGHIGH+1
                                                            NFLGPPC[NCLUS]=NFLGPPP
                                                            NFLGBRMC[NCLUS]=NFLGBRMM
                                                            TS[NCLUS]=ST
                                                            ES[NCLUS]=EAVAUG
                                                            R3=random.uniform(RDUM)
                                                            F3=1.0-2.00*R3
                                                            THETA0=numpy.arccos(F3)
                                                            F6=numpy.cos(THETA0)
                                                            F5=numpy.sin(THETA0)
                                                            R4=random.uniform(RDUM)
                                                            PHI0=F4*R4
                                                            F8=numpy.sin(PHI0)
                                                            F9=numpy.cos(PHI0)               
                                                            DCX[NCLUS]=F9*F5
                                                            DCY[NCLUS]=F8*F5
                                                            DCZ[NCLUS]=F6
                                                            NFLGHIGH=NFLGFC[NCLUS]
                                                            # 703   CONTINUE
                                                # 704   CONTINUE
                                                # endif
                                          # endif
                                          #                                                                       
                                          #  GENERATE SCATTERING ANGLES AND UPDATE  LABORATORY COSINES AFTER      
                                          #   COLLISION ALSO UPDATE ENERGY OF ELECTRON.                           
                                          #
                                          # 666 
                              IPT=IARRY[I]
                              ICOLL[IPT]=ICOLL[IPT]+1 
                              ICOLN[I]=ICOLN[I]+1 
                              # IF EXCITATION THEN ADD PROBABILITY ,PENFRA(1,I),OF TRANSFER TO GIVE   
                              # IONISATION OF THE OTHER GASES IN MIXTURE
                              flag6=0
                              if(IPEN == 0 or NGAS == 1):
                                    # GO TO 5
                                    pass
                              else:
                                    if(PENFRA[1][I] != 0.0):
                                          RAN=random.uniform(RDUM)
                                          if(RAN > PENFRA[1][I]):
                                                # GO TO 5
                                                pass
                                          else:
                                                NCLUS=NCLUS+1  
                                                # ENTER HERE POSSIBLE DELOCALISATION LENGTH FOR PENNING TRANSFER
                                                if(PENFRA[2][I] == 0.0):
                                                      XS[NCLUS]=X
                                                      YS[NCLUS]=Y      
                                                      ZS[NCLUS]=Z             
                                                      NFLGFC[NCLUS]=NFLGFF
                                                      NFLGPPC[NCLUS]=NFLGPPP
                                                      NFLGBRMC[NCLUS]=NFLGBRMM
                                                      pass
                                                else:
                                                      # endif
                                                      ASIGN=1.0
                                                      RAN=random.uniform(RDUM)
                                                      RAN1=random.uniform(RDUM)
                                                      if(RAN1 < 0.5):
                                                            ASIGN=-ASIGN
                                                      XS[NCLUS]=X-math.log(RAN)*PENFRA[2][I]*ASIGN
                                                      RAN=random.uniform(RDUM)
                                                      RAN1=random.uniform(RDUM)
                                                      if(RAN1 < 0.5):
                                                            ASIGN=-ASIGN
                                                      YS[NCLUS]=Y-math.log(RAN)*PENFRA[2][I]*ASIGN
                                                      RAN=random.uniform(RDUM)
                                                      RAN1=random.uniform(RDUM)
                                                      if(RAN1 < 0.5):
                                                            ASIGN=-ASIGN
                                                      ZS[NCLUS]=Z-math.log(RAN)*PENFRA[2][I]*ASIGN
                                                # 667  
                                                RAN=random.uniform(RDUM)
                                                TS[NCLUS]=ST-math.log(RAN)*PENFRA[3][I]
                                                # ASSIGN EXCESS ENERGY OF 1EV TO PENNING CREATED ELECTRON
                                                ES[NCLUS]=1.0
                                                DCX[NCLUS]=DCX1
                                                DCY[NCLUS]=DCY1
                                                DCZ[NCLUS]=DCZ1
                                                flag6=1
                                          # endif 
                                          #      GO TO 6 
                                          # CALCULATE SUM OF EXCITATION PER CLUSTER AND STORE EXCITATION X Y Z T
                              # 5 
                              if(flag6): 
                                    if(IPN[I] == 0) :
                                          if((RGAS[I]*EIN[I]) > 4.0) :
                                                KEXC=KEXC+1
                                          if(KEXC > 150000):
                                                # WRITE(6,548) KEXC
                                                # 548     
                                                print('   SUBROUTINE STOPPED . KEXC=',KEXC)
                                                sys.exit()
                                          # endif
                                          # FIND GAS IN WHICH EXCITATION OCCURED AND INCREMENT COUNTER
                                          if(I <= IDG1):
                                                NGEXC1=NGEXC1+1
                                          elif(I <= IDG2) :
                                                NGEXC2=NGEXC2+1
                                          elif(I <= IDG3) :
                                                NGEXC3=NGEXC3+1
                                          elif(I <= IDG4) :
                                                NGEXC4=NGEXC4+1
                                          elif(I <= IDG5) :
                                                NGEXC5=NGEXC5+1
                                          elif(I <= IDG6) :
                                                NGEXC6=NGEXC6+1
                                          else:
                                                # WRITE(6,9911) 
                                                # 9911    
                                                print(' SUBROUTINE STOPPED BAD GAS ID IN MONTE')
                                                sys.exit()
                                          # endif
                                          NEXCTOT=NEXCTOT+1
                                          NSTEXC=NSTEXC+1
                                          XSTEXC[KEXC]=X
                                          YSTEXC[KEXC]=Y
                                          ZSTEXC[KEXC]=Z
                                          TSTEXC[KEXC]=ST
                                          # endif
                                    # endif 
                              # 6  
                              S2=(S1*S1)/(S1-1.00) 
                              #   ANISOTROPIC SCATTERING
                              R3=random.uniform(RDUM)
                              if(INDEX[I]== 1):
                                    R31=random.uniform(RDUM)
                              F3=1.00-R3*ANGCT(IE,I)          
                              if(R31 > PSCT[IE][I]):
                                    F3=-F3
                              elif(INDEX[I] == 2) :
                                    EPSI=PSCT(IE,I)
                                    F3=1.00-(2.00*R3*(1.00-EPSI)/(1.00+EPSI*(1.00-2.00*R3))) 
                              else: 
                                    # ISOTROPIC SCATTERING                                             
                                    F3=1.00-2.00*R3
                              # endif
                              THETA0=numpy.arccos(F3)
                              R4=random.uniform(RDUM)
                              PHI0=F4*R4                                                        
                              F8=numpy.sin(PHI0)                                                     
                              F9=numpy.cos(PHI0)                                                     
                              if(E < EI):
                                    EI=0.00                                              
                              ARG1=1.00-S1*EI/E                                                
                              ARG1=max(ARG1,SMALL)                                            
                              D=1.00-F3*math.sqrt(ARG1)                                            
                              E1=E*(1.00-EI/(S1*E)-2.00*D/S2) 
                              E1=max(E1,SMALL)                                                
                              Q=math.sqrt((E/E1)*ARG1)/S1                                           
                              Q=min(Q,1.00)                                                  
                              THETA=numpy.arcsin(Q*numpy.sin(THETA0))                                       
                              F6=numpy.cos(THETA)                                                    
                              U=(S1-1.00)*(S1-1.00)/ARG1                                      
                              CSQD=F3*F3                                                        
                              if(F3 < 0.00 and CSQD > U):
                                    F6=-1.00*F6                        
                              F5=numpy.sin(THETA)                                                    
                              DCZ2=min(DCZ2,1.00)                                            
                              ARGZ=math.sqrt(DCX2*DCX2+DCY2*DCY2)
                              flag190=0
                              if(ARGZ == 0.00):
                                    DCZ1=F6         
                                    DCX1=F9*F5                             
                                    DCY1=F8*F5 
                                    if(NTMPFLG == 1):
                                          # USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
                                          F5S=F5*math.sqrt(E1/ES[NCLTMP])
                                          if(F5S > 1.0):
                                                F5S=1.0
                                          THSEC=numpy.arcsin(F5S)
                                          F5S=numpy.sin(THSEC)
                                          F6S=numpy.cos(THSEC)
                                          if(F6 < 0.0):
                                                F6S=-F6S
                                          PHIS=PHI0+API   
                                          if(PHIS > F4):
                                                PHIS=PHI0-F4
                                          F8S=numpy.sin(PHIS)
                                          F9S=numpy.cos(PHIS)
                                          DCZ[NCLTMP]=F6S
                                          DCX[NCLTMP]=F9S*F5S
                                          DCY[NCLTMP]=F8S*F5S
                                          NTMPFLG=0
                                    # endif
                                    flag190=1
                              # endif                                            
                              if(flag190):
                                    # GO TO 190
                                    pass
                              else:
                                    DCZ1=DCZ2*F6+ARGZ*F5*F8                                           
                                    DCY1=DCY2*F6+(F5/ARGZ)*(DCX2*F9-DCY2*DCZ2*F8)                     
                                    DCX1=DCX2*F6-(F5/ARGZ)*(DCY2*F9+DCX2*DCZ2*F8)
                                    if(NTMPFLG == 1):
                                          # USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
                                          F5S=F5*math.sqrt(E1/ES[NCLTMP])
                                          if(F5S > 1.0):
                                                F5S=1.0            
                                          THSEC=numpy.arcsin(F5S)
                                          F5S=numpy.sin(THSEC)
                                          F6S=numpy.cos(THSEC)
                                          if(F6 < 0.0):
                                                F6S=-F6S
                                          PHIS=PHI0+API   
                                          if(PHIS > F4):
                                                PHIS=PHI0-F4
                                          F8S=numpy.sin(PHIS)
                                          F9S=numpy.cos(PHIS)
                                          DCZ[NCLTMP]=DCZ2*F6S+ARGZ*F5S*F8S                               
                                          DCY[NCLTMP]=DCY2*F6S+(F5S/ARGZ)*(DCX2*F9S-DCY2*DCZ2*F8S)        
                                          DCX[NCLTMP]=DCX2*F6S-(F5S/ARGZ)*(DCY2*F9S+DCX2*DCZ2*F8S)
                                          NTMPFLG=0
                                    # endif 

                  # 190 CONTINUE 
                  # TEST IF ELECTRON IS THERMALISED
                  if(E1 > ETHRM):
                        flag1=1
                        continue  
                  # STORE POSITION AND TIME OF ELECTRON AND COLLISION HISTORY
                  # 191 CONTINUE
                  flag191=1
                  while(flag191):
                        flag191=0
                        K1=K1+1
                        XST[K1]=X
                        YST[K1]=Y
                        ZST[K1]=Z
                        TST[K1]=ST
                        NFGF[K1]=NFLGFF
                        NFGPP[K1]=NFLGPPP
                        NFGBR[K1]=NFLGBRMM
                        TTIME[K1]=ST-TLAST
                        NELEC=NELEC+1
                        NETOT=NETOT+1
                        # 335  
                        if(K1 == 150000):
                              # GO TO 889
                              # 889 
                              NLEFT=NCLUS-NELEC
                              # WRITE(6,992) NPRIME,NLEFT,NCLUS
                              # 992 
                              print(3*'\n',' WARNING STOPPED AFTER NPRIME= %d LAST PRIMARY HAS AT LEAST %d SECONDARIES LEFT TO TRACK OUT OF %d ELECTRONS ALREADY IN CLUSTER'%(NPRIME,NLEFT,NCLUS)) 
                              # sys.exit()  
                              # doing this if so that updating conf variables can be collapsed by indentation in sublime
                              if(1):   
                                    conf.NGAS=NGAS
                                    conf.NSTEP=NSTEP
                                    conf.NANISO=NANISO
                                    conf.EFINAL=EFINAL
                                    conf.ESTEP=ESTEP
                                    conf.AKT=AKT
                                    conf.ARY=ARY
                                    conf.TEMPC=TEMPC
                                    conf.TORR=TORR
                                    conf.IPEN=IPEN
                                    conf.NDVEC=NDVEC
                                    conf.CONST1=CONST1
                                    conf.CONST2=CONST2
                                    conf.CONST3=CONST3
                                    conf.CONST4=CONST4
                                    conf.CONST5=CONST5
                                    conf.TMAX=TMAX
                                    conf.SMALL=SMALL
                                    conf.API=API
                                    conf.ESTART=ESTART
                                    conf.THETA=THETA
                                    conf.PHI=PHI
                                    conf.TCFMAX=TCFMAX
                                    conf.TCFMAX1=TCFMAX1
                                    conf.RSTART=RSTART
                                    conf.EFIELD=EFIELD
                                    conf.ETHRM=ETHRM
                                    conf.ECUT=ECUT
                                    conf.NDELTA=NDELTA
                                    conf.IMIP=IMIP
                                    conf.IWRITE=IWRITE                    
                                    conf.CF=CF
                                    conf.EIN=EIN
                                    conf.TCF=TCF
                                    conf.IARRY=IARRY
                                    conf.RGAS=RGAS
                                    conf.IPN=IPN
                                    conf.WPL=WPL
                                    conf.IZBR=IZBR
                                    conf.IPLAST=IPLAST
                                    conf.PENFRA=PENFRA
                                    conf.CFN=CFN
                                    conf.TCFN=TCFN
                                    conf.SCLENUL=SCLENUL
                                    conf.NPLAST=NPLAST
                                    conf.ICOLL=ICOLL
                                    conf.NETOT=NETOT
                                    conf.NPRIME=NPRIME
                                    conf.TMAX1=TMAX1
                                    conf.TIME=TIME
                                    conf.NNULL=NNULL
                                    conf.NITOT=NITOT
                                    conf.ICOLN=ICOLN
                                    conf.ICOLNN=ICOLNN
                                    conf.NREAL=NREAL
                                    conf.NEXCTOT =NEXCTOT 
                                    conf.BET=BET
                                    conf.GAM=GAM
                                    conf.VC=VC
                                    conf.EMS=EMS
                                    conf.XST=XST
                                    conf.YST=YST
                                    conf.ZST=ZST
                                    conf.TST=TST
                                    conf.TTIME=TTIME
                                    conf.NFGF=NFGF
                                    conf.NFGPP=NFGPP
                                    conf.NFGBR=NFGBR
                                    conf.NELEC=NELEC
                                    conf.NEGION=NEGION
                                    conf.EST1=EST1
                                    conf.EST2=EST2
                                    conf.XSTEXC=XSTEXC
                                    conf.YSTEXC=YSTEXC
                                    conf.ZSTEXC=ZSTEXC
                                    conf.TSTEXC=TSTEXC
                                    conf.NSTEXC=NSTEXC
                                    conf.XSTN=XSTN
                                    conf.YSTN=YSTN
                                    conf.ZSTN=ZSTN
                                    conf.TSTN=TSTN
                                    conf.IDNUL=IDNUL
                                    conf.NEXCNUL=NEXCNUL
                                    conf.DOUBLE=DOUBLE
                                    conf.CMINIXSC=CMINIXSC
                                    conf.CMINEXSC=CMINEXSC
                                    conf.ECLOSS=ECLOSS
                                    conf.WPLN=WPLN
                                    conf.ICOUNT=ICOUNT
                                    conf.AVPFRAC=AVPFRAC
                                    conf.NC0=NC0
                                    conf.EC0=EC0
                                    conf.NG1=NG1
                                    conf.EG1=EG1
                                    conf.NG2=NG2
                                    conf.EG2=EG2
                                    conf.WKLM=WKLM
                                    conf.DSTFL=DSTFL
                                    conf.ESPLIT=ESPLIT
                                    conf.IONMODEL=IONMODEL
                                    conf.PSCT=PSCT
                                    conf.ANGCT=ANGCT
                                    conf.INDEX=INDEX
                                    conf.NISO=NISO
                                    conf.ECAS=ECAS
                                    conf.XCAS=XCAS
                                    conf.YCAS=YCAS
                                    conf.ZCAS=ZCAS
                                    conf.DRXS=DRXS
                                    conf.DRYS=DRYS
                                    conf.DRZS=DRZS
                                    conf.TT1=TT1
                                    conf.NFLGF=NFLGF
                                    conf.NFLGPP=NFLGPP
                                    conf.IEVNTL=IEVNTL
                                    conf.LCMPLCFLG=LCMPLCFLG
                                    conf.LRAY=LRAY
                                    conf.LRFLG=LRFLG
                                    conf.LPAP=LPAP
                                    conf.LPFLG=LPFLG
                                    conf.LBRM=LBRM
                                    conf.LBFLG=LBFLG
                                    conf.LPEFLG=LPEFLG
                                    conf.EBRGAM=EBRGAM
                                    conf.BRDCOSX=BRDCOSX
                                    conf.BRDCOSY=BRDCOSY
                                    conf.BRDCOSZ=BRDCOSZ
                                    conf.BRX=BRX
                                    conf.BRY=BRY
                                    conf.BRZ=BRZ
                                    conf.BRT=BRT
                                    conf.EBRTOT=EBRTOT
                                    conf.NBREM=NBREM
                                    conf.ECASB=ECASB
                                    conf.XCASB=XCASB
                                    conf.YCASB=YCASB
                                    conf.ZCASB=ZCASB
                                    conf.DRXB=DRXB
                                    conf.DRYB=DRYB
                                    conf.DRZB=DRZB
                                    conf.TTB1=TTB1
                                    conf.NFLGFB=NFLGFB
                                    conf.NFLGPPB=NFLGPPB
                                    conf.IEVNTLB=IEVNTLB
                                    conf.ECASE=ECASE
                                    conf.XCASE=XCASE
                                    conf.YCASE=YCASE
                                    conf.ZCASE=ZCASE
                                    conf.DRXCE=DRXCE
                                    conf.DRYCE=DRYCE
                                    conf.DRZCE=DRZCE
                                    conf.TCASE=TCASE
                                    conf.NFLGFE=NFLGFE
                                    conf.NFLGPPE=NFLGPPE
                                    conf.IEVENTE=IEVENTE
                                    conf.NEGAS=NEGAS
                                    conf.LEGAS=LEGAS
                                    conf.IESHELL=IESHELL
                                    conf.IECASC=IECASC
                                    conf.NGEXC1=NGEXC1
                                    conf.NGEXC2=NGEXC2
                                    conf.NGEXC3=NGEXC3
                                    conf.NGEXC4=NGEXC4
                                    conf.NGEXC5=NGEXC5
                                    conf.NGEXC6=NGEXC6
                                    conf.IDG1=IDG1
                                    conf.IDG2=IDG2
                                    conf.IDG3=IDG3
                                    conf.IDG4=IDG4
                                    conf.IDG5=IDG5
                                    conf.IDG6=IDG6                 
                              return 

                        # CATCH SINGLE ELECTRON CLUSTER THAT WAS ATTACHED.
                        #     if(NELEC == 1 and NCLUS == 0) GO TO 210 
                        #
                        if(NELEC == (NCLUS+1)) :
                              #       WRITE(6,884) NELEC,NCLUS,NEGION,J11
                              # 884 FORMAT(' NELEC=',I6,' NCLUS=',I6,' NEGION=',I3,' J11=',I6)
                              # LAST ELECTRON IN CLUSTER DO STATISTICS OVER PRIMARY CLUSTER
                              STATS(J11,J1)
                              # GO TO 210
                              flag1=0
                              flag210=1
                              break
                        # endif
                        if(NELEC < (NCLUS+1)) :
                              # GET NEW IONISATION ELECTRON FROM STORE
                              X=XS[NELEC]
                              Y=YS[NELEC]
                              Z=ZS[NELEC]
                              ST=TS[NELEC]
                              NFLGFF=NFLGFC[NELEC]
                              NFLGPPP=NFLGPPC[NELEC]
                              NFLGBRMM=NFLGBRMC[NELEC]
                              TLAST=TS[NELEC]
                              E1=ES[NELEC]
                              DCX1=DCX[NELEC]
                              DCY1=DCY[NELEC]
                              DCZ1=DCZ[NELEC]
                              if(E1 < ETHRM):
                                    flag191=1
                                    continue
                              flag1=1                       
                              break
                  # endif
                  #  MAIN LOOP END    
                  # 210 CONTINUE
                  if(flag210):
                        break
      # RESET NUMBER OF EVENTS FOR BAD EVENTS
      if(IMIP > 2):
            NDELTA=NDELTA-IBADTOT
      #
      # WRITE(6,887) EMAX,NEOVFL
      # 887 
      print(' EMAX= %.7f NEOVFL= %d'%(EMAX,NEOVFL))  
      if(EMAX > EFINAL):
            # WRITE(6,989) EFINAL,EMAX
            # 989 
            print('INCREASE ENERGY LIMIT FROM %.6f EV TO AT LEAST %.6f \n EV.'%(EFINAL,EMAX))
            # sys.exit()
            # doing if(1) so that updating conf variables can be collapsed by indentation in sublime
            if(1):
                  conf.NGAS=NGAS
                  conf.NSTEP=NSTEP
                  conf.NANISO=NANISO
                  conf.EFINAL=EFINAL
                  conf.ESTEP=ESTEP
                  conf.AKT=AKT
                  conf.ARY=ARY
                  conf.TEMPC=TEMPC
                  conf.TORR=TORR
                  conf.IPEN=IPEN
                  conf.NDVEC=NDVEC
                  conf.CONST1=CONST1
                  conf.CONST2=CONST2
                  conf.CONST3=CONST3
                  conf.CONST4=CONST4
                  conf.CONST5=CONST5
                  conf.TMAX=TMAX
                  conf.SMALL=SMALL
                  conf.API=API
                  conf.ESTART=ESTART
                  conf.THETA=THETA
                  conf.PHI=PHI
                  conf.TCFMAX=TCFMAX
                  conf.TCFMAX1=TCFMAX1
                  conf.RSTART=RSTART
                  conf.EFIELD=EFIELD
                  conf.ETHRM=ETHRM
                  conf.ECUT=ECUT
                  conf.NDELTA=NDELTA
                  conf.IMIP=IMIP
                  conf.IWRITE=IWRITE                    
                  conf.CF=CF
                  conf.EIN=EIN
                  conf.TCF=TCF
                  conf.IARRY=IARRY
                  conf.RGAS=RGAS
                  conf.IPN=IPN
                  conf.WPL=WPL
                  conf.IZBR=IZBR
                  conf.IPLAST=IPLAST
                  conf.PENFRA=PENFRA
                  conf.CFN=CFN
                  conf.TCFN=TCFN
                  conf.SCLENUL=SCLENUL
                  conf.NPLAST=NPLAST
                  conf.ICOLL=ICOLL
                  conf.NETOT=NETOT
                  conf.NPRIME=NPRIME
                  conf.TMAX1=TMAX1
                  conf.TIME=TIME
                  conf.NNULL=NNULL
                  conf.NITOT=NITOT
                  conf.ICOLN=ICOLN
                  conf.ICOLNN=ICOLNN
                  conf.NREAL=NREAL
                  conf.NEXCTOT =NEXCTOT 
                  conf.BET=BET
                  conf.GAM=GAM
                  conf.VC=VC
                  conf.EMS=EMS
                  conf.XST=XST
                  conf.YST=YST
                  conf.ZST=ZST
                  conf.TST=TST
                  conf.TTIME=TTIME
                  conf.NFGF=NFGF
                  conf.NFGPP=NFGPP
                  conf.NFGBR=NFGBR
                  conf.NELEC=NELEC
                  conf.NEGION=NEGION
                  conf.EST1=EST1
                  conf.EST2=EST2
                  conf.XSTEXC=XSTEXC
                  conf.YSTEXC=YSTEXC
                  conf.ZSTEXC=ZSTEXC
                  conf.TSTEXC=TSTEXC
                  conf.NSTEXC=NSTEXC
                  conf.XSTN=XSTN
                  conf.YSTN=YSTN
                  conf.ZSTN=ZSTN
                  conf.TSTN=TSTN
                  conf.IDNUL=IDNUL
                  conf.NEXCNUL=NEXCNUL
                  conf.DOUBLE=DOUBLE
                  conf.CMINIXSC=CMINIXSC
                  conf.CMINEXSC=CMINEXSC
                  conf.ECLOSS=ECLOSS
                  conf.WPLN=WPLN
                  conf.ICOUNT=ICOUNT
                  conf.AVPFRAC=AVPFRAC
                  conf.NC0=NC0
                  conf.EC0=EC0
                  conf.NG1=NG1
                  conf.EG1=EG1
                  conf.NG2=NG2
                  conf.EG2=EG2
                  conf.WKLM=WKLM
                  conf.DSTFL=DSTFL
                  conf.ESPLIT=ESPLIT
                  conf.IONMODEL=IONMODEL
                  conf.PSCT=PSCT
                  conf.ANGCT=ANGCT
                  conf.INDEX=INDEX
                  conf.NISO=NISO
                  conf.ECAS=ECAS
                  conf.XCAS=XCAS
                  conf.YCAS=YCAS
                  conf.ZCAS=ZCAS
                  conf.DRXS=DRXS
                  conf.DRYS=DRYS
                  conf.DRZS=DRZS
                  conf.TT1=TT1
                  conf.NFLGF=NFLGF
                  conf.NFLGPP=NFLGPP
                  conf.IEVNTL=IEVNTL
                  conf.LCMPLCFLG=LCMPLCFLG
                  conf.LRAY=LRAY
                  conf.LRFLG=LRFLG
                  conf.LPAP=LPAP
                  conf.LPFLG=LPFLG
                  conf.LBRM=LBRM
                  conf.LBFLG=LBFLG
                  conf.LPEFLG=LPEFLG
                  conf.EBRGAM=EBRGAM
                  conf.BRDCOSX=BRDCOSX
                  conf.BRDCOSY=BRDCOSY
                  conf.BRDCOSZ=BRDCOSZ
                  conf.BRX=BRX
                  conf.BRY=BRY
                  conf.BRZ=BRZ
                  conf.BRT=BRT
                  conf.EBRTOT=EBRTOT
                  conf.NBREM=NBREM
                  conf.ECASB=ECASB
                  conf.XCASB=XCASB
                  conf.YCASB=YCASB
                  conf.ZCASB=ZCASB
                  conf.DRXB=DRXB
                  conf.DRYB=DRYB
                  conf.DRZB=DRZB
                  conf.TTB1=TTB1
                  conf.NFLGFB=NFLGFB
                  conf.NFLGPPB=NFLGPPB
                  conf.IEVNTLB=IEVNTLB
                  conf.ECASE=ECASE
                  conf.XCASE=XCASE
                  conf.YCASE=YCASE
                  conf.ZCASE=ZCASE
                  conf.DRXCE=DRXCE
                  conf.DRYCE=DRYCE
                  conf.DRZCE=DRZCE
                  conf.TCASE=TCASE
                  conf.NFLGFE=NFLGFE
                  conf.NFLGPPE=NFLGPPE
                  conf.IEVENTE=IEVENTE
                  conf.NEGAS=NEGAS
                  conf.LEGAS=LEGAS
                  conf.IESHELL=IESHELL
                  conf.IECASC=IECASC
                  conf.NGEXC1=NGEXC1
                  conf.NGEXC2=NGEXC2
                  conf.NGEXC3=NGEXC3
                  conf.NGEXC4=NGEXC4
                  conf.NGEXC5=NGEXC5
                  conf.NGEXC6=NGEXC6
                  conf.IDG1=IDG1
                  conf.IDG2=IDG2
                  conf.IDG3=IDG3
                  conf.IDG4=IDG4
                  conf.IDG5=IDG5
                  conf.IDG6=IDG6
      # endif                                         
      return 
      # 889 
      NLEFT=NCLUS-NELEC
      # WRITE(6,992) NPRIME,NLEFT,NCLUS
      # 992 
      print(3*'\n',' WARNING STOPPED AFTER NPRIME= %d LAST PRIMARY HAS AT LEAST %d SECONDARIES LEFT TO TRACK OUT OF %d ELECTRONS ALREADY IN CLUSTER'%(NPRIME,NLEFT,NCLUS)) 
      # sys.exit()  
      # doing this if so that updating conf variables can be collapsed by indentation in sublime
      if(1):   
            conf.NGAS=NGAS
            conf.NSTEP=NSTEP
            conf.NANISO=NANISO
            conf.EFINAL=EFINAL
            conf.ESTEP=ESTEP
            conf.AKT=AKT
            conf.ARY=ARY
            conf.TEMPC=TEMPC
            conf.TORR=TORR
            conf.IPEN=IPEN
            conf.NDVEC=NDVEC
            conf.CONST1=CONST1
            conf.CONST2=CONST2
            conf.CONST3=CONST3
            conf.CONST4=CONST4
            conf.CONST5=CONST5
            conf.TMAX=TMAX
            conf.SMALL=SMALL
            conf.API=API
            conf.ESTART=ESTART
            conf.THETA=THETA
            conf.PHI=PHI
            conf.TCFMAX=TCFMAX
            conf.TCFMAX1=TCFMAX1
            conf.RSTART=RSTART
            conf.EFIELD=EFIELD
            conf.ETHRM=ETHRM
            conf.ECUT=ECUT
            conf.NDELTA=NDELTA
            conf.IMIP=IMIP
            conf.IWRITE=IWRITE                    
            conf.CF=CF
            conf.EIN=EIN
            conf.TCF=TCF
            conf.IARRY=IARRY
            conf.RGAS=RGAS
            conf.IPN=IPN
            conf.WPL=WPL
            conf.IZBR=IZBR
            conf.IPLAST=IPLAST
            conf.PENFRA=PENFRA
            conf.CFN=CFN
            conf.TCFN=TCFN
            conf.SCLENUL=SCLENUL
            conf.NPLAST=NPLAST
            conf.ICOLL=ICOLL
            conf.NETOT=NETOT
            conf.NPRIME=NPRIME
            conf.TMAX1=TMAX1
            conf.TIME=TIME
            conf.NNULL=NNULL
            conf.NITOT=NITOT
            conf.ICOLN=ICOLN
            conf.ICOLNN=ICOLNN
            conf.NREAL=NREAL
            conf.NEXCTOT =NEXCTOT 
            conf.BET=BET
            conf.GAM=GAM
            conf.VC=VC
            conf.EMS=EMS
            conf.XST=XST
            conf.YST=YST
            conf.ZST=ZST
            conf.TST=TST
            conf.TTIME=TTIME
            conf.NFGF=NFGF
            conf.NFGPP=NFGPP
            conf.NFGBR=NFGBR
            conf.NELEC=NELEC
            conf.NEGION=NEGION
            conf.EST1=EST1
            conf.EST2=EST2
            conf.XSTEXC=XSTEXC
            conf.YSTEXC=YSTEXC
            conf.ZSTEXC=ZSTEXC
            conf.TSTEXC=TSTEXC
            conf.NSTEXC=NSTEXC
            conf.XSTN=XSTN
            conf.YSTN=YSTN
            conf.ZSTN=ZSTN
            conf.TSTN=TSTN
            conf.IDNUL=IDNUL
            conf.NEXCNUL=NEXCNUL
            conf.DOUBLE=DOUBLE
            conf.CMINIXSC=CMINIXSC
            conf.CMINEXSC=CMINEXSC
            conf.ECLOSS=ECLOSS
            conf.WPLN=WPLN
            conf.ICOUNT=ICOUNT
            conf.AVPFRAC=AVPFRAC
            conf.NC0=NC0
            conf.EC0=EC0
            conf.NG1=NG1
            conf.EG1=EG1
            conf.NG2=NG2
            conf.EG2=EG2
            conf.WKLM=WKLM
            conf.DSTFL=DSTFL
            conf.ESPLIT=ESPLIT
            conf.IONMODEL=IONMODEL
            conf.PSCT=PSCT
            conf.ANGCT=ANGCT
            conf.INDEX=INDEX
            conf.NISO=NISO
            conf.ECAS=ECAS
            conf.XCAS=XCAS
            conf.YCAS=YCAS
            conf.ZCAS=ZCAS
            conf.DRXS=DRXS
            conf.DRYS=DRYS
            conf.DRZS=DRZS
            conf.TT1=TT1
            conf.NFLGF=NFLGF
            conf.NFLGPP=NFLGPP
            conf.IEVNTL=IEVNTL
            conf.LCMPLCFLG=LCMPLCFLG
            conf.LRAY=LRAY
            conf.LRFLG=LRFLG
            conf.LPAP=LPAP
            conf.LPFLG=LPFLG
            conf.LBRM=LBRM
            conf.LBFLG=LBFLG
            conf.LPEFLG=LPEFLG
            conf.EBRGAM=EBRGAM
            conf.BRDCOSX=BRDCOSX
            conf.BRDCOSY=BRDCOSY
            conf.BRDCOSZ=BRDCOSZ
            conf.BRX=BRX
            conf.BRY=BRY
            conf.BRZ=BRZ
            conf.BRT=BRT
            conf.EBRTOT=EBRTOT
            conf.NBREM=NBREM
            conf.ECASB=ECASB
            conf.XCASB=XCASB
            conf.YCASB=YCASB
            conf.ZCASB=ZCASB
            conf.DRXB=DRXB
            conf.DRYB=DRYB
            conf.DRZB=DRZB
            conf.TTB1=TTB1
            conf.NFLGFB=NFLGFB
            conf.NFLGPPB=NFLGPPB
            conf.IEVNTLB=IEVNTLB
            conf.ECASE=ECASE
            conf.XCASE=XCASE
            conf.YCASE=YCASE
            conf.ZCASE=ZCASE
            conf.DRXCE=DRXCE
            conf.DRYCE=DRYCE
            conf.DRZCE=DRZCE
            conf.TCASE=TCASE
            conf.NFLGFE=NFLGFE
            conf.NFLGPPE=NFLGPPE
            conf.IEVENTE=IEVENTE
            conf.NEGAS=NEGAS
            conf.LEGAS=LEGAS
            conf.IESHELL=IESHELL
            conf.IECASC=IECASC
            conf.NGEXC1=NGEXC1
            conf.NGEXC2=NGEXC2
            conf.NGEXC3=NGEXC3
            conf.NGEXC4=NGEXC4
            conf.NGEXC5=NGEXC5
            conf.NGEXC6=NGEXC6
            conf.IDG1=IDG1
            conf.IDG2=IDG2
            conf.IDG3=IDG3
            conf.IDG4=IDG4
            conf.IDG5=IDG5
            conf.IDG6=IDG6                 
      return                                                            
      # end

MONTEFA()

Arguments

Argument Description
NONE -

Pseudo Code

      SUBROUTINE MONTEFA                                               
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)                                         
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/INPT1/NDVEC
      COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE   
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG                                   
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),    
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)
      COMMON/LARGEN/CFN(20000,60),TCFN(20000),SCLENUL(60),NPLAST
      COMMON/OUTPT/ICOLL(30),NETOT,NPRIME,TMAX1,TIME(300),NNULL,
     /NITOT,ICOLN(512),ICOLNN(60),NREAL,NEXCTOT 
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      COMMON/STTS/XST(150000),YST(150000),ZST(150000),TST(150000),
     /TTIME(150000),NFGF(150000),NFGPP(150000),NFGBR(150000),NELEC,
     /NEGION,EST1,EST2 
      COMMON/STEXC/XSTEXC(150000),YSTEXC(150000),ZSTEXC(150000),
     /TSTEXC(150000),NSTEXC
      COMMON/STEXCNUL/XSTN(150000),YSTN(150000),ZSTN(150000),
     /TSTN(150000),IDNUL(150000),NEXCNUL
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6)
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),DSTFL(512)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512) 
      COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO
      COMMON/CASRS/ECAS(400),XCAS(400),YCAS(400),ZCAS(400),DRXS(400),
     /DRYS(400),DRZS(400),TT1(400),NFLGF(400),NFLGPP(400),IEVNTL
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/BREMG/EBRGAM(10),BRDCOSX(10),BRDCOSY(10),BRDCOSZ(10),
     /BRX(10),BRY(10),BRZ(10),BRT(10),EBRTOT(6),NBREM(6)
      COMMON/CASRSB/ECASB(400),XCASB(400),YCASB(400),ZCASB(400),
     /DRXB(400),DRYB(400),DRZB(400),TTB1(400),NFLGFB(400),NFLGPPB(400),
     /IEVNTLB
      COMMON/CASRSE/ECASE(400),XCASE(400),YCASE(400),ZCASE(400),
     /DRXCE(400),DRYCE(400),DRZCE(400),TCASE(400),
     /NFLGFE(400),NFLGPPE(400),IEVENTE
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC
      COMMON/IDEXC/NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,
     /IDG1,IDG2,IDG3,IDG4,IDG5,IDG6
      DIMENSION XS(150000),YS(150000),ZS(150000),TS(150000),ES(150000),
     /DCX(150000),DCY(150000),DCZ(150000),
     /NFLGFC(150000),NFLGPPC(150000),NFLGBRMC(150000)
      DIMENSION TEMP(20000)
C ----------------------------------------------------------------------   
C   RELATIVISTIC KINEMATICS
C   ELECTRIC AND MAGNETIC FIELDS  PARALLEL TO Z-AXIS      
C   TRACKS DELTA ELECTRONS AND UPDATES ARRAYS CONTAINING POSITION AND 
C   TIME OF THERMALISED ELECTRONS.
C   CALCULATES NUMBER OF PRODUCED ELECTRONS PER PRIMARY DELTA AND OTHER
C   HIGHER FANO FACTORS
C   RANGE CALCULATION IS ACCURATE ONLY FOR ANISOTROPIC X-SECTIONS.
C ----------------------------------------------------------------------
C VARYING ENERGY STEPS
      IF(EFINAL.LE.140000.) THEN
        ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
      ELSE
        ESTEP1=20.0
        ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
      ENDIF
      NPRINT=0 
      J300=300
      J20000=20000
      API=DACOS(-1.0D0)
      SMALL=1.0D-20
      EMAX=0.0D0
      TMAX1=0.0D0
      RDUM=RSTART
      CONST9=CONST3*0.01D0
      DO 25 I=1,300
   25 TIME(I)=0.0D0
      DO 26 I=1,30
   26 ICOLL(I)=0
      DO 27 I=1,512
   27 ICOLN(I)=0
      NREAL=0                                                           
      NNULL=0                                                           
      NETOT=0
      NEXCTOT=0
      NITOT=0
      NMXADD=0
      NTMPFLG=0
      BP=EFIELD*EFIELD*CONST1                                           
      F1=EFIELD*CONST2                                                  
      F2=EFIELD*CONST3
      F4=2.0D0*API
      THETA1=THETA
      PHI1=PHI
      NEOVFL=0
C CALCULATE MAXIMUM COLLISION FREQUENCY
      TLIM=0.0
      DO 111 J=1,20000
      TEMP(J)=TCFN(J)+TCF(J)
      IF(TLIM.LT.TEMP(J)) TLIM=TEMP(J) 
  111 CONTINUE
C START OF PRIMARY DELTA LOOP
      J1=0
      DO 210 J11=1,NDELTA 
      J1=J1+1
      NPRIME=J1      
      NGEXC1=0
      NGEXC2=0
      NGEXC3=0
      NGEXC4=0
      NGEXC5=0
      NGEXC6=0
C     INITIAL DIRECTION COSINES FOR ELECTRON BEAM                
      DCZ1=DCOS(THETA1) 
      DCX1=DSIN(THETA1)*DCOS(PHI1)                                      
      DCY1=DSIN(THETA1)*DSIN(PHI1)
      NFLGFF=0
      NFLGPPP=0
      NFLGBRMM=0
      NFLGHIGH=0
      EST1=ESTART
C INITIAL VELOCITY
      E1=ESTART
C     VTOT=CONST9*DSQRT(E1)
      GAM1=(EMS+E1)/EMS
      GAM12=GAM1
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.0D-12
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT      
      X=0.0D0    
      Y=0.0D0    
      Z=0.0D0                                           
      K1=0   
      KEXC=0
      NSTEXC=0
      NEXCNUL=0
      NCLUS=0
      NELEC=0
      NEGION=0
      TLAST=0.0D0
      ST=0.0D0
      TDASH=0.0D0
      IF(IMIP.EQ.2) GO TO 1
      IF(IMIP.GT.2) THEN
C READIN FIRST ELECTRON FROM BETA DECAY OR XRAY UNTHERMALISED CLUSTERS
       CALL CASRES(J11,IBADTOT,IBAD1)
C  SKIP IF BAD EVENT
       IF(IBAD1.EQ.1) THEN
        J1=J1-1
        GO TO 210
       ENDIF
      ELSE IF(IMIP.EQ.1) THEN
C READ IN FIRST ELECTRON FROM MIP INTERACTION
        CALL CASREM(J11)
        EST1=ECAS(1)
        EST2=EST1
      ENDIF
      X=XCAS(1)
      Y=YCAS(1)
      Z=ZCAS(1)
      ST=TT1(1)
      TS(1)=TT1(1)
      E1=ECAS(1)
      DCZ1=DRZS(1)
      DCY1=DRYS(1)
      DCX1=DRXS(1)
      NFLGFF=NFLGF(1)
      NFLGPPP=NFLGPP(1)
      NFLGBRMM=0
      NFLGHIGH=NFLGFF
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
C     VTOT=CONST9*DSQRT(E1)
      VTOT=BET1*VC*1.0D-12
C
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C PUT REMAINDER OF ELECTRONS INTO CLUSTER STORE
      ISDUM=0
      DO 35 IST=2,IEVNTL
      ISDUM=ISDUM+1
      XS(ISDUM)=XCAS(IST)
      YS(ISDUM)=YCAS(IST)
      ZS(ISDUM)=ZCAS(IST)
      TS(ISDUM)=TT1(IST)
      ES(ISDUM)=ECAS(IST)
      DCX(ISDUM)=DRXS(IST)
      DCY(ISDUM)=DRYS(IST)
      DCZ(ISDUM)=DRZS(IST)
      NFLGFC(ISDUM)=NFLGF(IST)
      NFLGPPC(ISDUM)=NFLGPP(IST)
      NFLGBRMC(ISDUM)=0
      NCLUS=ISDUM
      IF(NFLGF(IST).GT.NFLGHIGH) NFLGHIGH=NFLGF(IST)
   35 CONTINUE
      GAM12=GAM1
C START OF LOOP FOR NEWLY CREATED ELECTRONS                             
    1 CONTINUE 
      R1=drand48(RDUM)
      T=-DLOG(R1)/TLIM+TDASH
      TDASH=T
C     AP=DCZ1*F2*DSQRT(E1)
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      AP=DCZ1*EFIELD*BET1*VC*1.0D-10
      BP1=BP/GAM1
 913  FORMAT(3X,' AFTER STORE NREAL=',I10,' E1=',E12.3,' T=',E12.3,' AP=
     /',E12.3,' BP=',E12.3,' DCZ1=',E12.3)
C     E=E1+(AP+BP*T)*T       
      E=E1+(AP+BP1*T)*T
      IF(E.LT.0.0D0) THEN
       IF(NPRINT.EQ.0) WRITE(6,913)NREAL,E1,T,AP,BP,DCZ1 
       NPRINT=1
       E=0.001D0
      ENDIF                                                   
C INSERT NEW ALGORITHM TO FIND IE FOR VARYING ENERGY STEP          
      IF(IMIP.EQ.1) THEN                                     
       IE=DINT(E/ESTEP)+1                                               
      ELSE
       IF(EFINAL.LE.20000.) THEN
        IE=DINT(E/ESTEP)+1
       ELSE IF(EFINAL.LE.140000.) THEN
        IF(E.LE.16000.) THEN
         IE=DINT(E)+1
        ELSE
         IE=16000+DINT((E-16000.)/ESTEP1)
        ENDIF
       ELSE
        IF(E.LE.12000.) THEN
         IE=DINT(E)+1
        ELSE IF(E.LE.92000.) THEN
         IE=12000+DINT((E-12000.)/ESTEP1)
        ELSE
         IE=16000+DINT((E-92000.)/ESTEP2)
        ENDIF
       ENDIF
      ENDIF 
      IE=DMIN0(IE,J20000)                                            
C                                                                       
C     TEST FOR REAL OR NULL COLLISION                                   
C                                                                       
      R5=drand48(RDUM)
      TEST1=TCF(IE)/TLIM                                                
      IF(R5.LE.TEST1) GO TO 137                                         
      NNULL=NNULL+1                
      TEST2=TEMP(IE)/TLIM
      IF(R5.LT.TEST2) THEN
C TEST FOR NULL LEVELS
       IF(NPLAST.EQ.0) GO TO 1
       R2=drand48(RDUM) 
       I=0
  888  I=I+1
       IF(CFN(IE,I).LT.R2) GO TO 888  
C INCREMENT NULL LEVEL SUM
       NEXCNUL=NEXCNUL+1
       ICOLNN(I)=ICOLNN(I)+1
C STORE X Y Z T ID FOR MOLECULAR LIGHT EMISSION AND DISSOCIATION FROM 
C    NULL EXCITATION  
C NOTE: SMALL APPROX USED POSITION OF PREVIOUS COLLISION
       XSTN(NEXCNUL)=X
       YSTN(NEXCNUL)=Y
       ZSTN(NEXCNUL)=Z
       TSTN(NEXCNUL)=ST
       IDNUL(NEXCNUL)=I
       GO TO 1       
      ELSE
C NULL
       GO TO 1
      ENDIF                                                   
C                                                                       
C  CALCULATE DIRECTION COSINES AND POSITIONS AT INSTANT BEFORE COLLISION
  137 T2=T*T
      GAM2=(EMS+E)/EMS
      BET2=DSQRT(1.0D0-1.0D0/(GAM2*GAM2))
      GAM12=(GAM1+GAM2)/2.0D0
      IF(E.GT.EMAX) EMAX=E
      IF(T.GT.TMAX1) TMAX1=T
      TDASH=0.0D0  
      NREAL=NREAL+1
      WBT=WB*T/GAM12
C     WBT=WB*T      
      WBR=WB/GAM12
      COSWT=DCOS(WBT)
      SINWT=DSIN(WBT)                                                   
C     CONST6=DSQRT(E1/E)
      CONST6=BET1/BET2
      CX2=CX1*COSWT-CY1*SINWT
      CY2=CY1*COSWT+CX1*SINWT
C     VTOT=CONST9*DSQRT(E)
      VTOT=VC*BET2*1.0D-12                    
      DCX2=CX2/VTOT                                                     
      DCY2=CY2/VTOT                                                     
C     DCZ2=DCZ1*CONST6+EFIELD*T*CONST5/DSQRT(E) 
      DCZ2=DCZ1*CONST6+EFIELD*T*2.0D10*CONST1/(VC*BET2)
C     CONST7=CONST9*DSQRT(E1)   
      CONST7=VC*BET1*1.0D-12            
      A=T*CONST7                                                        
C     DX=(CX1*SINWT-CY1*(1.0D0-COSWT))/WB 
      DX=(CX1*SINWT-CY1*(1.0D0-COSWT))/WBR                              
      X=X+DX           
C     DY=(CY1*SINWT+CX1*(1.0D0-COSWT))/WB                               
      DY=(CY1*SINWT+CX1*(1.0D0-COSWT))/WBR                              
      Y=Y+DY    
C     Z=Z+DCZ1*A+T2*F1
      Z=Z+DCZ1*A+T2*F1/GAM12
      ST=ST+T
      IT=DINT(T+1.0D0)                                                  
      IT=DMIN0(IT,J300)                                                
      TIME(IT)=TIME(IT)+1.0D0                                           
C --------------------------------------------------------------------- 
C     DETERMINATION OF REAL COLLISION TYPE                              
C --------------------------------------------------------------------- 
      R2=drand48(RDUM)
      I=0                                                               
  140 I=I+1 
      IF(I.LE.0.OR.I.GT.512) THEN
      WRITE(6,945) I
  945 FORMAT(' BAD  SELECTION I=',I8)
      STOP
      ENDIF
      IF(CF(IE,I).LT.R2) GO TO 140        
C************************************************************
C CHECK IF BREMSSTRAHLUNG
      IF(IZBR(I).NE.0.AND.LBRM.EQ.1) THEN
       NFLGBRMM=1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1
       DO 141 KNGS=1,NGAS
       IF(IPT.EQ.(KNGS*5)-1) GO TO 142
  141  CONTINUE
  142  IATOMNO=IZBR(I) 
       CALL BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,
     /EGAMMA,GDCX,GDCY,GDCZ)
       NBREM(KNGS)=NBREM(KNGS)+1
       EBRTOT(KNGS)=EBRTOT(KNGS)+EGAMMA
C      WRITE(6,668) EGAMMA,J11   
C 668 FORMAT(' BREM EGAMMA=',D12.4,' EVENT NO=',I5)
C GET  NEW DRCOS DRCOSY DRCOSX AND ENERGY OF ELECTRON
       E1=EOUT
       DCX1=EDCX
       DCY1=EDCY
       DCZ1=EDCZ
C RUN BREMSSTRAHLUNG GAMMA THROUGH CASCADE THEN STORE CONVERTED 
C ELECTRONS IN COMMON/CASRSB/
C              
       CALL BREMSCASC(J11,EGAMMA,X,Y,Z,ST,GDCX,GDCY,GDCZ,ILOW)
C BREMSSTRAHLUNG ENERGY TOO LOW TO IONISE
       IF(ILOW.EQ.1) GO TO 190
C 
C STORE BREMSSTRAHLUNG DATA IN CLUSTER STORE
C
       DO 890 KBR=1,IEVNTLB
       NCLUS=NCLUS+1
       IF(NCLUS.GT.150000) THEN 
        WRITE(6,546) NCLUS,NREAL
        STOP
       ENDIF     
       ES(NCLUS)=ECASB(KBR)
       XS(NCLUS)=XCASB(KBR)
       YS(NCLUS)=YCASB(KBR)
       ZS(NCLUS)=ZCASB(KBR)
       TS(NCLUS)=TTB1(KBR)
       DCX(NCLUS)=DRXB(KBR)
       DCY(NCLUS)=DRYB(KBR)
       DCZ(NCLUS)=DRZB(KBR)
       NFLGFC(NCLUS)=NFLGFB(KBR)+NFLGHIGH
       NFLGPPC(NCLUS)=NFLGPPB(KBR)
       NFLGBRMC(NCLUS)=2
  890  CONTINUE
       IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
       GO TO 190
      ENDIF
  891 CONTINUE
C****************************************************************
C     S1=RGAS(I)  
      S1=1.0D0+GAM2*(RGAS(I)-1.0D0)                                    
      EI=EIN(I)
      IF(E.LT.EI) THEN
      EI=E-0.0001D0
      ENDIF                                                          
      IF(IPN(I).EQ.0) GO TO 666
C ATTACHMENT       
      IF(IPN(I).EQ.-1) THEN
       NETOT=NETOT+1
       NITOT=NITOT+1
       NELEC=NELEC+1
       NEGION=NEGION+1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1 
       IT=DINT(T+1.0D0)
       IT=DMIN0(IT,J300)
       TIME(IT)=TIME(IT)+1.0D0
       GO TO 335
      ENDIF   
      EISTR=EI
      IF(IONMODEL(I).GT.0) THEN
C CALCULATE SECONDARY ENERGY,ESEC,IN IONISATION COLLISION USING
C FIVE DIFFERENT MODELS
       CALL IONSPLIT(I,E,EI,ESEC) 
       GO TO 544
      ENDIF
      R9=drand48(RDUM)
C    USE OPAL PETERSON AND BEATY SPLITTING FACTOR.
      ESEC=WPL(I)*TAN(R9*ATAN((E-EI)/(2.0D0*WPL(I)))) 
      ESEC=WPL(I)*(ESEC/WPL(I))**0.9524
  544 CONTINUE
      EI=ESEC+EI 
C STORE POSITION ,ENERGY, DIRECTION COSINES AND TIME OF GENERATION
C OF SECONDARY IONISATION ELECTRON
      NCLUS=NCLUS+1
      NMXADD=MAX(NCLUS,NMXADD)
      IF(NCLUS.GT.150000) THEN 
       WRITE(6,546) NCLUS,NREAL 
 546   FORMAT(2X,' PROGRAM STOPPED . NCLUS=',I7,' NREAL =',I10)
       STOP
      ENDIF     
      XS(NCLUS)=X       
      YS(NCLUS)=Y
      ZS(NCLUS)=Z
      TS(NCLUS)=ST
      ES(NCLUS)=ESEC        
      NFLGFC(NCLUS)=NFLGFF
      NFLGPPC(NCLUS)=NFLGPPP
      NFLGBRMC(NCLUS)=NFLGBRMM
      NTMPFLG=1
      NCLTMP=NCLUS
C RANDOMISE SECONDARY ELECTRON DIRECTION
C     R3=drand48(RDUM)
C     F3=1.0-2.0D0*R3
C     THETA0=DACOS(F3)
C     F6=DCOS(THETA0)
C     F5=DSIN(THETA0)
C     R4=drand48(RDUM)
C     PHI0=F4*R4
C     F8=DSIN(PHI0)
C     F9=DCOS(PHI0)               
C     DCX(NCLUS)=F9*F5
C     DCY(NCLUS)=F8*F5
C     DCZ(NCLUS)=F6     
C*********************************************************
      IF(IECASC.EQ.0)GO TO 333
      IF(LEGAS(I).EQ.0) GO TO 333
C USE COMPLETE CASCADE FOR ELECTRON IONISATION
      KG1=NEGAS(I)
      LG1=LEGAS(I)
      IGSHEL=IESHELL(I)
      CALL CASCADEE(J11,KG1,LG1,X,Y,Z,ST,ESEC,IGSHEL)
C
C STORE CASCADE IN CLUSTER STORE
C
      ETSUM=0.0
      DO 844 KBR=1,IEVENTE
      NCLUS=NCLUS+1
      IF(NCLUS.GT.150000) THEN
       WRITE(6,546) NCLUS,NREAL
       STOP
      ENDIF
      ES(NCLUS)=ECASE(KBR)
      ETSUM=ETSUM+ES(NCLUS)
      XS(NCLUS)=XCASE(KBR)
      YS(NCLUS)=YCASE(KBR)
      ZS(NCLUS)=ZCASE(KBR)
      TS(NCLUS)=TCASE(KBR)
      DCX(NCLUS)=DRXCE(KBR)
      DCY(NCLUS)=DRYCE(KBR)
      DCZ(NCLUS)=DRZCE(KBR)
      NFLGFC(NCLUS)=NFLGFE(KBR)+NFLGHIGH
      NFLGPPC(NCLUS)=NFLGPPE(KBR)
      NFLGBRMC(NCLUS)=NFLGBRMM
  844 CONTINUE
      IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
      GO TO 666
C*********************************************************
C STORE POSSIBLE SHELL EMISSSIONS BY AUGER OR FLUORESCENCE
  333 IF (EISTR.GT.30.0) THEN
C TEST IF FLUORESCENCE EMISSION
       IFLTST=0
       IF(WKLM(I).GT.0.0) THEN
        R9=drand48(RDUM)
        IF(R9.LT.WKLM(I)) IFLTST=1
       ENDIF
       IF(IFLTST.EQ.0) THEN
C AUGER EMISSION WITHOUT FLUORESCENCE
        NAUG=NC0(I)
        EAVAUG=EC0(I)/DFLOAT(NAUG)
        DO 700 JFL=1,NC0(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        TS(NCLUS)=ST
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)      
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  700   CONTINUE
       ELSE
C AUGER EMISSION AND FLUORESCENCE
        IF(NG2(I).EQ.0) GO TO 702
        NAUG=NG2(I)
        EAVAUG=EG2(I)/DFLOAT(NAUG)
        DO 701 JFL=1,NG2(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  701   CONTINUE
  702   IF(NG1(I).EQ.0) GO TO 704
        NAUG=NG1(I)
        EAVAUG=EG1(I)/DFLOAT(NAUG)
        R9=drand48(RDUM)
        DFL=-DLOG(R9)*DSTFL(I)
        DO 703 JFL=1,NG1(I)
        NCLUS=NCLUS+1
        R3=drand48(RDUM)
        THEFL=DACOS(1.0-2.0D0*R3)
        R4=drand48(RDUM)
        PHIFL=F4*R4
        XS(NCLUS)=X+DFL*DSIN(THEFL)*DCOS(PHIFL)
        YS(NCLUS)=Y+DFL*DSIN(THEFL)*DSIN(PHIFL)
        ZS(NCLUS)=Z+DFL*DCOS(THEFL)
        NFLGFC(NCLUS)=NFLGHIGH+1
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
        NFLGHIGH=NFLGFC(NCLUS)
  703   CONTINUE
  704   CONTINUE
       ENDIF
      ENDIF 
C                                                                       
C  GENERATE SCATTERING ANGLES AND UPDATE  LABORATORY COSINES AFTER      
C   COLLISION ALSO UPDATE ENERGY OF ELECTRON.                           
C
  666 IPT=IARRY(I)
      ICOLL(IPT)=ICOLL(IPT)+1 
      ICOLN(I)=ICOLN(I)+1   
C IF EXCITATION THEN ADD PROBABILITY,PENFRA(1,I), OF TRANSFER TO GIVE   
C IONISATION OF THE OTHER GASES IN MIXTURE 
      IF(IPEN.EQ.0.OR.NGAS.EQ.1) GO TO 5          
      IF(PENFRA(1,I).NE.0.0) THEN
       RAN=drand48(RDUM)
       IF(RAN.GT.PENFRA(1,I)) GO TO 5
       NCLUS=NCLUS+1  
C ENTER HERE POSSIBLE DELOCALISATION LENGTH FOR PENNING TRANSFER
       IF(PENFRA(2,I).EQ.0.0) THEN
        XS(NCLUS)=X      
        YS(NCLUS)=Y
        ZS(NCLUS)=Z   
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        GO TO 667
       ENDIF
       ASIGN=1.0
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       XS(NCLUS)=X-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       YS(NCLUS)=Y-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       ZS(NCLUS)=Z-DLOG(RAN)*PENFRA(2,I)*ASIGN
  667  RAN=drand48(RDUM)           
       TS(NCLUS)=ST-DLOG(RAN)*PENFRA(3,I) 
C ASSIGN EXCESS ENERGY OF 1EV TO PENNING CREATED ELECTRON
       ES(NCLUS)=1.0
       DCX(NCLUS)=DCX1
       DCY(NCLUS)=DCY1
       DCZ(NCLUS)=DCZ1
       GO TO 6
      ENDIF
C     GO TO 6 
C CALCULATE SUM OF EXCITATION PER CLUSTER AND STORE EXCITATION X Y Z T
   5  IF(IPN(I).EQ.0) THEN
       IF((RGAS(I)*EIN(I)).GT.4.0) THEN
        KEXC=KEXC+1
        IF(KEXC.GT.150000) THEN 
         WRITE(6,548) KEXC 
 548     FORMAT(2X,' PROGRAM STOPPED . KEXC=',I7)
         STOP
        ENDIF
C FIND GAS IN WHICH EXCITATION OCCURED AND INCREMENT COUNTER
        IF(I.LE.IDG1) THEN 
         NGEXC1=NGEXC1+1
        ELSE IF(I.LE.IDG2) THEN
         NGEXC2=NGEXC2+1
        ELSE IF(I.LE.IDG3) THEN
         NGEXC3=NGEXC3+1
        ELSE IF(I.LE.IDG4) THEN
         NGEXC4=NGEXC4+1
        ELSE IF(I.LE.IDG5) THEN
         NGEXC5=NGEXC5+1
        ELSE IF(I.LE.IDG6) THEN
         NGEXC6=NGEXC6+1
        ELSE
         WRITE(6,9911) 
 9911    FORMAT(' PROGRAM STOPPED BAD GAS ID IN MONTE')
         STOP
        ENDIF
        NEXCTOT=NEXCTOT+1
        NSTEXC=NSTEXC+1
        XSTEXC(KEXC)=X
        YSTEXC(KEXC)=Y
        ZSTEXC(KEXC)=Z
        TSTEXC(KEXC)=ST
       ENDIF
      ENDIF 
   6  S2=(S1*S1)/(S1-1.0D0) 
C ANISOTROPIC SCATTERING
      R3=drand48(RDUM)     
      IF(INDEX(I).EQ.1) THEN
       R31=drand48(RDUM)
       F3=1.0D0-R3*ANGCT(IE,I)        
       IF(R31.GT.PSCT(IE,I)) F3=-F3     
      ELSE IF (INDEX(I).EQ.2) THEN
       EPSI=PSCT(IE,I)
       F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3)))  
      ELSE     
C ISOTROPIC SCATTERING                                                 
       F3=1.0D0-2.0D0*R3  
      ENDIF
      THETA0=DACOS(F3)                                                  
      R4=drand48(RDUM)
      PHI0=F4*R4                                                        
      F8=DSIN(PHI0)                                                     
      F9=DCOS(PHI0)                                                     
      IF(E.LT.EI) EI=0.0D0                                              
      ARG1=1.0D0-S1*EI/E                                                
      ARG1=DMAX1(ARG1,SMALL)                                            
      D=1.0D0-F3*DSQRT(ARG1)                                            
      E1=E*(1.0D0-EI/(S1*E)-2.0D0*D/S2) 
      E1=DMAX1(E1,SMALL)                                                
      Q=DSQRT((E/E1)*ARG1)/S1                                           
      Q=DMIN1(Q,1.0D0)                                                  
      THETA=DASIN(Q*DSIN(THETA0))                                       
      F6=DCOS(THETA)                                                    
      U=(S1-1.0D0)*(S1-1.0D0)/ARG1                                      
      CSQD=F3*F3                                                        
      IF(F3.LT.0.0D0.AND.CSQD.GT.U) F6=-1.0D0*F6                        
      F5=DSIN(THETA)                                                    
      DCZ2=DMIN1(DCZ2,1.0D0)   
      ARGZ=DSQRT(DCX2*DCX2+DCY2*DCY2)
      IF(ARGZ.EQ.0.0D0) THEN
       DCZ1=F6         
       DCX1=F9*F5                             
       DCY1=F8*F5
       IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
        F5S=F5*DSQRT(E1/ES(NCLTMP))
        IF(F5S.GE.1.0) F5S=0.999
        THSEC=DASIN(F5S)
        F5S=DSIN(THSEC)
        F6S=DCOS(THSEC)
        IF(F6.LT.0.0) F6S=-F6S
        PHIS=PHI0+API   
        IF(PHIS.GT.F4) PHIS=PHI0-F4
        F8S=DSIN(PHIS)
        F9S=DCOS(PHIS)
        DCZ(NCLTMP)=F6S
        DCX(NCLTMP)=F9S*F5S
        DCY(NCLTMP)=F8S*F5S
        NTMPFLG=0
       ENDIF
       GO TO 190
      ENDIF      
      DCZ1=DCZ2*F6+ARGZ*F5*F8   
      DCY1=DCY2*F6+(F5/ARGZ)*(DCX2*F9-DCY2*DCZ2*F8)                     
      DCX1=DCX2*F6-(F5/ARGZ)*(DCY2*F9+DCX2*DCZ2*F8) 
      IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
       F5S=F5*DSQRT(E1/ES(NCLTMP))
       IF(F5S.GE.1.0) F5S=0.999          
       THSEC=DASIN(F5S)
       F5S=DSIN(THSEC)
       F6S=DCOS(THSEC)
       IF(F6.LT.0.0) F6S=-F6S
       PHIS=PHI0+API   
       IF(PHIS.GT.F4) PHIS=PHI0-F4
       F8S=DSIN(PHIS)
       F9S=DCOS(PHIS)
       DCZ(NCLTMP)=DCZ2*F6S+ARGZ*F5S*F8S                               
       DCY(NCLTMP)=DCY2*F6S+(F5S/ARGZ)*(DCX2*F9S-DCY2*DCZ2*F8S)        
       DCX(NCLTMP)=DCX2*F6S-(F5S/ARGZ)*(DCY2*F9S+DCX2*DCZ2*F8S)
       NTMPFLG=0
      ENDIF 
  190 CONTINUE  
C     VTOT=CONST9*DSQRT(E1)
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.0D-12
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C TEST IF ELECTRON IS THERMALISED
      IF(E1.GT.ETHRM) GO TO 1
C STORE POSITION AND TIME OF THERMALISED ELECTRON
  191 CONTINUE
      K1=K1+1
      XST(K1)=X
      YST(K1)=Y
      ZST(K1)=Z
      TST(K1)=ST
      NFGF(K1)=NFLGFF
      NFGPP(K1)=NFLGPPP
      NFGBR(K1)=NFLGBRMM
      TTIME(K1)=ST-TLAST
      NELEC=NELEC+1
      NETOT=NETOT+1
C     WRITE(6,777) XST(K1),YST(K1),ZST(K1),TST(K1),NFGF(K1),NFGPP(K1),
C    /NFGBR(K1),NELEC,NETOT,K1
C 777 FORMAT(' XST=',D12.4,' YST=',D12.4,' ZST=',D12.4,' TST=',D12.4,/,
C    /' NFGF=',I4,' NFGPP=',I4,' NFGBR=',I4,' NELEC=',I4,' NETOT=',I4,
C    /' K1=',I4)
  335 IF(K1.EQ.150000) GO TO 889
      IF(NELEC.EQ.(NCLUS+1)) THEN
C LAST ELECTRON IN CLUSTER, DO STATISTICS ON PRIMARY
       CALL STATS(J11,J1)
       GO TO 210 
      ENDIF
C GET NEW IONISATION ELECTRON FROM STORE
      X=XS(NELEC)
      Y=YS(NELEC)
      Z=ZS(NELEC)
      ST=TS(NELEC)
      NFLGFF=NFLGFC(NELEC)
      NFLGPPP=NFLGPPC(NELEC)
      NFLGBRMM=NFLGBRMC(NELEC)
      TLAST=TS(NELEC)
      E1=ES(NELEC)
      DCX1=DCX(NELEC)
      DCY1=DCY(NELEC)
      DCZ1=DCZ(NELEC) 
C     IF(NELEC.GT.94) WRITE(6,766) X,Y,Z,ST,E1,DCX1,DCY1,DCZ1,NELEC
C 766 FORMAT(' X=',D12.4,' Y=',D12.4,' Z=',D12.4,' T=',D12.4,/,' E=',
C    /D12.4,' DCX=',D12.4,' DCY=',D12.4,' DCZ=',D12.4,' NELEC=',I6,/)
C STORE ALREADY THERMALISED ELECTRONS
      IF(E1.LT.ETHRM) GO TO 191 
      GO TO 1  
C MAIN LOOP END   
  210 CONTINUE
C RESET NUMBER OF EVENTS FOR BAD EVENTS
      IF(IMIP.GT.2) NDELTA=NDELTA-IBADTOT
C
      WRITE(6,887) EMAX,NEOVFL
  887 FORMAT(' EMAX=',D12.7,' NEOVFL =',I5)
      IF(EMAX.GT.EFINAL) THEN
      WRITE(6,989) EFINAL,EMAX
  989 FORMAT('INCREASE ENERGY LIMIT FROM',D12.6,' EV TO AT LEAST',D12.6,
     /' EV.')
      STOP
      ENDIF                                         
      RETURN 
  889 NLEFT=NCLUS-NELEC
      WRITE(6,992) NPRIME,NLEFT,NCLUS
  992 FORMAT(3(/),' WARNING STOPPED AFTER NPRIME=',I6,' LAST PRIMARY HAS
     / AT LEAST ',I6,' SECONDARIES LEFT TO TRACK, OUT OF ',I6,' ELECTRON
     /S ALREADY IN CLUSTER')
      STOP
      RETURN
      END

```## MONTEFB()
* Tracks DELTA electrons and updates arrays containing position and time of thermalised electrons.
* Calculates number of produced electrons per primary delta and other higher FANO factors.

### Arguments

| Argument | Description |
|----------|-------------|
| NONE     | -           |
|          |             |

### Pseudo Code


```fortran
      SUBROUTINE MONTEFB                                                
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)                                         
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/INPT1/NDVEC
      COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE 
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG                                   
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),    
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)
      COMMON/LARGEN/CFN(20000,60),TCFN(20000),SCLENUL(60),NPLAST
      COMMON/OUTPT/ICOLL(30),NETOT,NPRIME,TMAX1,TIME(300),NNULL, 
     /NITOT,ICOLN(512),ICOLNN(60),NREAL,NEXCTOT  
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      COMMON/STTS/XST(150000),YST(150000),ZST(150000),TST(150000),
     /TTIME(150000),NFGF(150000),NFGPP(150000),NFGBR(150000),NELEC,
     /NEGION,EST1,EST2
      COMMON/STEXC/XSTEXC(150000),YSTEXC(150000),ZSTEXC(150000),
     /TSTEXC(150000),NSTEXC
      COMMON/STEXCNUL/XSTN(150000),YSTN(150000),ZSTN(150000),
     /TSTN(150000),IDNUL(150000),NEXCNUL
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6)
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),DSTFL(512)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512) 
      COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO 
      COMMON/CASRS/ECAS(400),XCAS(400),YCAS(400),ZCAS(400),DRXS(400),
     /DRYS(400),DRZS(400),TT1(400),NFLGF(400),NFLGPP(400),IEVNTL
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/BREMG/EBRGAM(10),BRDCOSX(10),BRDCOSY(10),BRDCOSZ(10),
     /BRX(10),BRY(10),BRZ(10),BRT(10),EBRTOT(6),NBREM(6)
      COMMON/CASRSB/ECASB(400),XCASB(400),YCASB(400),ZCASB(400),
     /DRXB(400),DRYB(400),DRZB(400),TTB1(400),NFLGFB(400),NFLGPPB(400),
     /IEVNTLB
      COMMON/CASRSE/ECASE(400),XCASE(400),YCASE(400),ZCASE(400),
     /DRXCE(400),DRYCE(400),DRZCE(400),TCASE(400),
     /NFLGFE(400),NFLGPPE(400),IEVENTE
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC
      COMMON/IDEXC/NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,
     /IDG1,IDG2,IDG3,IDG4,IDG5,IDG6
      DIMENSION XS(150000),YS(150000),ZS(150000),TS(150000),ES(150000),
     /DCX(150000),DCY(150000),DCZ(150000),
     /NFLGFC(150000),NFLGPPC(150000),NFLGBRMC(150000)           
      DIMENSION TEMP(20000)   
C -------------------------------------------------------------------  
C  RELATIVISTIC VERSION
C  ELECTRIC FIELD ALONG Z-AXIS MAGNETIC FIELD ALONG  X-AXIS.
C  TRACKS DELTA ELECTRONS AND UPDATES ARRAYS CONTAINING POSITION AND
C  TIME OF THERMALISED ELECTRONS.
C  CALCULATES NUMBER OF PRODUCED ELECTRONS PER PRIMARY DELTA AND OTHER
C  HIGHER FANO FACTORS .
C ------------------------------------------------------------------- 
C VARYING ENERGY STEPS
      IF(EFINAL.LE.140000.) THEN
        ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
      ELSE
        ESTEP1=20.0
        ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
      ENDIF
      NPRINT=0
      J20000=20000
      J300=300
      API=DACOS(-1.0D0)
      SMALL=1.0D-20         
      EMAX=0.0D0                                            
      TMAX1=0.0D0                                                       
      RDUM=RSTART                                                       
      CONST9=CONST3*0.01D0
      DO 25 I=1,300
   25 TIME(I)=0.0D0
      DO 26 I=1,30
   26 ICOLL(I)=0
      DO 27 I=1,512
   27 ICOLN(I)=0
      NREAL=0                                                           
      NNULL=0
      NETOT=0
      NEXCTOT=0
      NITOT=0
      NMXADD=0
      NTMPFLG=0
      THETA1=THETA
      PHI1=PHI
      F4=2.0D0*API
      NEOVFL=0
C CALCULATE MAXIMUM COLLISION FREQUENCY
      TLIM=0.0
      DO 111 J=1,20000
      TEMP(J)=TCFN(J)+TCF(J)
      IF(TLIM.LT.TEMP(J)) TLIM=TEMP(J) 
  111 CONTINUE
      J1=0
C START OF PRIMARY EVENT LOOP
      DO 210 J11=1,NDELTA
      J1=J1+1
      NPRIME=J1   
      NGEXC1=0
      NGEXC2=0
      NGEXC3=0
      NGEXC4=0
      NGEXC5=0
      NGEXC6=0
C     INITIAL DIRECTION COSINES                                         
      DCZ1=DCOS(THETA1) 
      DCX1=DSIN(THETA1)*DCOS(PHI1)                                      
      DCY1=DSIN(THETA1)*DSIN(PHI1) 
      NFLGFF=0
      NFLGPPP=0
      NFLGBRMM=0
      NFLGHIGH=0
      EST1=ESTART
C INITIAL VELOCITY,TIME AND POSITION
      E1=ESTART
      GAM1=(EMS+E1)/EMS
      GAM12=GAM1
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.0D-12
C     VTOT=CONST9*DSQRT(E1)       
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT      
      X=0.0D0
      Y=0.0D0
      Z=0.0D0 
      K1=0
      KEXC=0
      NSTEXC=0
      NEXCNUL=0
      NCLUS=0
      NELEC=0
      NEGION=0
      TLAST=0.0D0
      ST=0.0D0
      TDASH=0.0D0
      IF(IMIP.EQ.2) GO TO 1
      IF(IMIP.GT.2) THEN
C READ IN FIRST ELECTRON FROM BETA DECAY OR XRAY UNTHERMALISED CLUSTERS
       CALL CASRES(J11,IBADTOT,IBAD1)
C  SKIP IF BAD EVENT
       IF(IBAD1.EQ.1) THEN
        J1=J1-1
        GO TO 210
       ENDIF 
      ELSE IF(IMIP.EQ.1) THEN
C READ IN FIRST ELECTRON FROM MIP INTERACTION
       CALL CASREM(J11)
       EST1=ECAS(1)
       EST2=EST1
      ENDIF
      X=XCAS(1)
      Y=YCAS(1)
      Z=ZCAS(1)
      ST=TT1(1)
      TS(1)=TT1(1)
      E1=ECAS(1)
      DCZ1=DRZS(1)
      DCY1=DRYS(1)
      DCX1=DRXS(1)
      NFLGFF=NFLGF(1)
      NFLGPPP=NFLGPP(1)
      NFLGBRMM=0
      NFLGHIGH=NFLGFF
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=VC*BET1*1.0D-12
C     VTOT=CONST9*DSQRT(E1)
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C PUT REMAINDER OF ELECTRONS INTO CLUSTER STORE
      ISDUM=0
      DO 35 IST=2,IEVNTL
      ISDUM=ISDUM+1
      XS(ISDUM)=XCAS(IST)
      YS(ISDUM)=YCAS(IST)
      ZS(ISDUM)=ZCAS(IST)
      TS(ISDUM)=TT1(IST)
      ES(ISDUM)=ECAS(IST)
      DCX(ISDUM)=DRXS(IST)
      DCY(ISDUM)=DRYS(IST)
      DCZ(ISDUM)=DRZS(IST)
      NFLGFC(ISDUM)=NFLGF(IST)
      NFLGPPC(ISDUM)=NFLGPP(IST)
      NFLGBRMC(ISDUM)=0
      NCLUS=ISDUM
      IF(NFLGFC(IST).GT.NFLGHIGH) NFLGHIGH=NFLGFC(IST)
   35 CONTINUE
      GAM12=GAM1
C START OF LOOP FOR NEWLY CREATED ELECTRONS                             
    1 CONTINUE                                                          
      R1=drand48(RDUM)
      T=-DLOG(R1)/TLIM+TDASH
      TDASH=T
      WBT=WB*T/GAM12
C     WBT=WB*T
      COSWT=DCOS(WBT)
      SINWT=DSIN(WBT)
      DZ=GAM12*(CZ1*SINWT+(EOVB-CY1)*(1.0D0-COSWT))/WB
C     DZ=(CZ1*SINWT+(EOVB-CY1)*(1.0D0-COSWT))/WB 
      E=E1+DZ*EFIELD*100.0D0
      GAM2=(EMS+E)/EMS
      BET2=DSQRT(1.0D0-1.0D0/(GAM2*GAM2))
C913  FORMAT(3X,' AFTER STORE NREAL=',I10,' DZ=',D12.3,'E1=',D12.3,' COS
C    /WT=',D12.3,' SINWT=',D12.3,' WBT=',D12.3,' CY1=',D12.3)   
      IF(E.LT.0.0D0) THEN
C      IF(NPRINT.EQ.0) WRITE(6,913)NREAL,DZ,E1,COSWT,SINWT,WBT,CY1
C      NPRINT=1  
       E=0.001D0
      ENDIF                                                   
C INSERT NEW ALGORITHM TO FIND IE FOR VARYING ENERGY STEP          
      IF(IMIP.EQ.1) THEN                                     
       IE=DINT(E/ESTEP)+1                                               
      ELSE
       IF(EFINAL.LE.20000.) THEN
        IE=DINT(E/ESTEP)+1
       ELSE IF(EFINAL.LE.140000.) THEN
        IF(E.LE.16000.) THEN
         IE=DINT(E)+1
        ELSE
         IE=16000+DINT((E-16000.)/ESTEP1)
        ENDIF
       ELSE
        IF(E.LE.12000.) THEN
         IE=DINT(E)+1
        ELSE IF(E.LE.92000.) THEN
         IE=12000+DINT((E-12000.)/ESTEP1)
        ELSE
         IE=16000+DINT((E-92000.)/ESTEP2)
        ENDIF
       ENDIF
      ENDIF 
      IE=DMIN0(IE,J20000)                                            
C                                                                       
C     TEST FOR REAL OR NULL COLLISION                                   
C                                                                       
      R5=drand48(RDUM)
      TEST1=TCF(IE)/TLIM                                                
      IF(R5.LE.TEST1) GO TO 137                                        
      NNULL=NNULL+1                     
      TEST2=TEMP(IE)/TLIM
      IF(R5.LT.TEST2) THEN
C TEST FOR NULL LEVELS
       IF(NPLAST.EQ.0) GO TO 1
       R2=drand48(RDUM) 
       I=0
  888  I=I+1
       IF(CFN(IE,I).LT.R2) GO TO 888
C INCREMENT NULL LEVEL SUM
       NEXCNUL=NEXCNUL+1
       ICOLNN(I)=ICOLNN(I)+1
C STORE X Y Z T ID FOR MOLECULAR LIGHT EMISSION AND DISSOCIATION FROM 
C    NULL EXCITATION
C NOTE: SMALL APPROX USED POSITION OF PREVIOUS REAL COLLISION
       XSTN(NEXCNUL)=X
       YSTN(NEXCNUL)=Y
       ZSTN(NEXCNUL)=Z
       TSTN(NEXCNUL)=ST
       IDNUL(NEXCNUL)=I                            
       GO TO 1     
      ELSE
C NULL
       GO TO 1
      ENDIF                                                     
C                                                                       
C  CALCULATE DIRECTION COSINES AND POSITIONS AT INSTANT BEFORE COLLISION
  137 T2=T*T
      IF(E.GT.EMAX) EMAX=E
      IF(T.GT.TMAX1) TMAX1=T
      TDASH=0.0D0 
      NREAL=NREAL+1
C CALC VELOCITY
      CX2=CX1
      CY2=(CY1-EOVB)*COSWT+CZ1*SINWT+EOVB
      CZ2=CZ1*COSWT-(CY1-EOVB)*SINWT
C CALC DIRECTION COSINES
      VTOT=DSQRT(CX2*CX2+CY2*CY2+CZ2*CZ2)
      DCX2=CX2/VTOT
      DCY2=CY2/VTOT
      DCZ2=CZ2/VTOT                                                     
C CALC NEW POSITION                                                
      X=X+CX1*T                                                         
      Y=Y+EOVB*T+GAM12*((CY1-EOVB)*SINWT+CZ1*(1.0D0-COSWT))/WB
      Z=Z+DZ 
      GAM12=(GAM1+GAM2)/2.0D0         
      ST=ST+T
      IT=DINT(T+1.0D0)                                                  
      IT=DMIN0(IT,J300)                                               
      TIME(IT)=TIME(IT)+1.0D0                                           
C --------------------------------------------------------------------- 
C     DETERMINATION OF REAL COLLISION TYPE                              
C --------------------------------------------------------------------- 
      R2=drand48(RDUM)
      I=0                                                               
  140 I=I+1                                                             
      IF(CF(IE,I).LT.R2) GO TO 140      
C************************************************************
C CHECK IF BREMSSTRAHLUNG
      IF(IZBR(I).NE.0.AND.LBRM.EQ.1) THEN
       NFLGBRMM=1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1
       DO 141 KNGS=1,NGAS
       IF(IPT.EQ.(KNGS*5)-1) GO TO 142
  141  CONTINUE
  142  IATOMNO=IZBR(I) 
       CALL BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,
     /EGAMMA,GDCX,GDCY,GDCZ)
       NBREM(KNGS)=NBREM(KNGS)+1
       EBRTOT(KNGS)=EBRTOT(KNGS)+EGAMMA
C      WRITE(6,668) EGAMMA,J11   
C 668 FORMAT(' BREM EGAMMA=',D12.4,' EVENT NO=',I5)
C GET  NEW DRCOS DRCOSY DRCOSX AND ENERGY OF ELECTRON
       E1=EOUT
       DCX1=EDCX
       DCY1=EDCY
       DCZ1=EDCZ
C RUN BREMSSTRAHLUNG GAMMA THROUGH CASCADE THEN STORE CONVERTED
C ELECTRONS IN COMMON/CASRSB/
C 
       CALL BREMSCASC(J11,EGAMMA,X,Y,Z,ST,GDCX,GDCY,GDCZ,ILOW)
C BREMSSTRAHLUNG ENERGY TOO LOW TO IONISE
       IF(ILOW.EQ.1) GO TO 190
C 
C STORE BREMSSTARHLUNG DATA IN CLUSTER STORE
C
       DO 890 KBR=1,IEVNTLB
       NCLUS=NCLUS+1
       IF(NCLUS.GT.150000) THEN 
        WRITE(6,546) NCLUS,NREAL
        STOP
       ENDIF     
       ES(NCLUS)=ECASB(KBR)
       XS(NCLUS)=XCASB(KBR)
       YS(NCLUS)=YCASB(KBR)
       ZS(NCLUS)=ZCASB(KBR)
       TS(NCLUS)=TTB1(KBR)
       DCX(NCLUS)=DRXB(KBR)
       DCY(NCLUS)=DRYB(KBR)
       DCZ(NCLUS)=DRZB(KBR)
       NFLGFC(NCLUS)=NFLGFB(KBR)+NFLGHIGH
       NFLGPPC(NCLUS)=NFLGPPB(KBR)
       NFLGBRMC(NCLUS)=2
  890  CONTINUE
       IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
       GO TO 190
      ENDIF
  891 CONTINUE
C****************************************************************
C     S1=RGAS(I)                   
      S1=1.0D0+GAM2*(RGAS(I)-1.0D0)  
      EI=EIN(I)
      IF(E.LT.EI) THEN
      EI=E-0.0001D0
      ENDIF                                                          
      IF(IPN(I).EQ.0) GO TO 666
C ATTACHMENT       
      IF(IPN(I).EQ.-1) THEN
       NETOT=NETOT+1
       NITOT=NITOT+1
       NELEC=NELEC+1
       NEGION=NEGION+1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1 
       IT=DINT(T+1.0D0)
       IT=DMIN0(IT,J300)
       TIME(IT)=TIME(IT)+1.0D0
       GO TO 335
      ENDIF   
      EISTR=EI
      IF(IONMODEL(I).GT.0) THEN
C CALCULATE SECONDARY ENERGY,ESEC,IN IONISATION COLLISION USING
C FIVE DIFFERENT MODELS
       CALL IONSPLIT(I,E,EI,ESEC)
       GO TO 544
      ENDIF
      R9=drand48(RDUM)
C    USE OPAL PETERSON AND BEATY SPLITTING FACTOR.
      ESEC=WPL(I)*TAN(R9*ATAN((E-EI)/(2.0D0*WPL(I)))) 
      ESEC=WPL(I)*(ESEC/WPL(I))**0.9524
  544 CONTINUE
      EI=ESEC+EI 
C STORE POSITION ,ENERGY, DIRECTION COSINES AND TIME OF GENERATION
C OF SECONDARY IONISATION ELECTRON 
      NCLUS=NCLUS+1
      NMXADD=MAX(NCLUS,NMXADD)
      IF(NCLUS.GT.150000) THEN 
       WRITE(6,546) NCLUS,NREAL
 546   FORMAT(2X,' PROGRAM STOPPED . NCLUS=',I7,' NREAL=',I10)
       STOP
      ENDIF     
      XS(NCLUS)=X       
      YS(NCLUS)=Y
      ZS(NCLUS)=Z
      TS(NCLUS)=ST
      ES(NCLUS)=ESEC 
      NFLGFC(NCLUS)=NFLGFF
      NFLGPPC(NCLUS)=NFLGPPP
      NFLGBRMC(NCLUS)=NFLGBRMM
      NTMPFLG=1
      NCLTMP=NCLUS
C RANDOMISE SECONDARY ELECTRON DIRECTION
C     R3=drand48(RDUM)
C     F3=1.0-2.0D0*R3
C     THETA0=DACOS(F3)
C     F6=DCOS(THETA0)
C     F5=DSIN(THETA0)
C     R4=drand48(RDUM)
C     PHI0=F4*R4
C     F8=DSIN(PHI0)
C     F9=DCOS(PHI0)               
C     DCX(NCLUS)=F9*F5
C     DCY(NCLUS)=F8*F5
C     DCZ(NCLUS)=F6    
C*********************************************************
      IF(IECASC.EQ.0)GO TO 333
      IF(LEGAS(I).EQ.0) GO TO 333
C USE COMPLETE CASCADE FOR ELECTRON IONISATION
      KG1=NEGAS(I)
      LG1=LEGAS(I)
      IGSHEL=IESHELL(I)
      CALL CASCADEE(J11,KG1,LG1,X,Y,Z,ST,ESEC,IGSHEL)
C
C STORE CASCADE IN CLUSTER STORE
C
      ETSUM=0.0
      DO 844 KBR=1,IEVENTE
      NCLUS=NCLUS+1
      IF(NCLUS.GT.150000) THEN
       WRITE(6,546) NCLUS,NREAL
       STOP
      ENDIF
      ES(NCLUS)=ECASE(KBR)
      ETSUM=ETSUM+ES(NCLUS)
      XS(NCLUS)=XCASE(KBR)
      YS(NCLUS)=YCASE(KBR)
      ZS(NCLUS)=ZCASE(KBR)
      TS(NCLUS)=TCASE(KBR)
      DCX(NCLUS)=DRXCE(KBR)
      DCY(NCLUS)=DRYCE(KBR)
      DCZ(NCLUS)=DRZCE(KBR)
      NFLGFC(NCLUS)=NFLGFE(KBR)+NFLGHIGH
      NFLGPPC(NCLUS)=NFLGPPE(KBR)
      NFLGBRMC(NCLUS)=NFLGBRMM
  844 CONTINUE
      IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
      GO TO 666
C*********************************************************
C STORE POSSIBLE SHELL EMISSIONS AUGER OR FLUORESCENCE 
  333 IF(EISTR.GT.30.0) THEN
C TEST IF FLUORESCENCE EMISSION
       IFLTST=0
       IF(WKLM(I).GT.0.0) THEN
        R9=drand48(RDUM)
        IF(R9.LT.WKLM(I)) IFLTST=1
       ENDIF
       IF(IFLTST.EQ.0) THEN
C AUGER EMISSION WITHOUT FLUORESCENCE
        NAUG=NC0(I)
        EAVAUG=EC0(I)/DFLOAT(NAUG)
        DO 700 JFL=1,NC0(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        TS(NCLUS)=ST
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  700   CONTINUE 
       ELSE
C AUGER EMISSION AND FLUORESENCE 
        IF(NG2(I).EQ.0) GO TO 702
        NAUG=NG2(I)
        EAVAUG=EG2(I)/DFLOAT(NAUG)
        DO 701 JFL=1,NG2(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  701   CONTINUE
  702   IF(NG1(I).EQ.0) GO TO 704
        NAUG=NG1(I)
        EAVAUG=EG1(I)/DFLOAT(NAUG)
        R9=drand48(RDUM)
        DFL=-DLOG(R9)*DSTFL(I)
        DO 703 JFL=1,NG1(I)
        NCLUS=NCLUS+1
        R3=drand48(RDUM)
        THEFL=DACOS(1.0-2.0D0*R3)
        R4=drand48(RDUM)
        PHIFL=F4*R4
        XS(NCLUS)=X+DFL*DSIN(THEFL)*DCOS(PHIFL)
        YS(NCLUS)=Y+DFL*DSIN(THEFL)*DSIN(PHIFL)
        ZS(NCLUS)=Z+DFL*DCOS(THEFL)
        NFLGFC(NCLUS)=NFLGHIGH+1
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
        NFLGHIGH=NFLGFC(NCLUS)
  703   CONTINUE
  704   CONTINUE
       ENDIF
      ENDIF
C                                                                       
C  GENERATE SCATTERING ANGLES AND UPDATE  LABORATORY COSINES AFTER      
C   COLLISION ALSO UPDATE ENERGY OF ELECTRON.                           
C
  666 IPT=IARRY(I)
      ICOLL(IPT)=ICOLL(IPT)+1 
      ICOLN(I)=ICOLN(I)+1      
C IF EXCITATION THEN ADD PROBABILITY ,PENFRA(1,I), OF TRANSFER TO GIVE 
C IONISATION OF THE OTHER GASES IN MIXTURE              
      IF(IPEN.EQ.0.OR.NGAS.EQ.1) GO TO 5          
      IF(PENFRA(1,I).NE.0.0) THEN
       RAN=drand48(RDUM) 
       IF(RAN.GT.PENFRA(1,I)) GO TO 5
       NCLUS=NCLUS+1    
C ENTER HERE POSSIBLE DELOCALISATION LENGTH FOR PENNING TRANSFER
       IF(PENFRA(2,I).EQ.0.0) THEN
        XS(NCLUS)=X  
        YS(NCLUS)=Y    
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        GO TO 667
       ENDIF
       ASIGN=1.0
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       XS(NCLUS)=X-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       YS(NCLUS)=Y-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN
       ZS(NCLUS)=Z-DLOG(RAN)*PENFRA(2,I)*ASIGN
  667  RAN=drand48(RDUM)
       TS(NCLUS)=ST-DLOG(RAN)*PENFRA(3,I)
C ASSIGN EXCESS ENERGY OF 1EV TO PENNING CREATED ELECTRON
       ES(NCLUS)=1.0 
       DCX(NCLUS)=DCX1
       DCY(NCLUS)=DCY1
       DCZ(NCLUS)=DCZ1
       GO TO 6
      ENDIF
C     GO TO 6
C CALCULATE SUM OF EXCITATION PER CLUSTER AND STORE EXCITATION X Y Z T
   5  IF(IPN(I).EQ.0) THEN
       IF((RGAS(I)*EIN(I)).GT.4.0) THEN
        KEXC=KEXC+1
        IF(KEXC.GT.150000) THEN 
         WRITE(6,548) KEXC
 548     FORMAT(2X,' PROGRAM STOPPED . KEXC=',I7)
         STOP
        ENDIF
C FIND GAS IN WHICH EXCITATION OCCURED AND INCREMENT COUNTER
        IF(I.LE.IDG1) THEN 
         NGEXC1=NGEXC1+1
        ELSE IF(I.LE.IDG2) THEN
         NGEXC2=NGEXC2+1
        ELSE IF(I.LE.IDG3) THEN
         NGEXC3=NGEXC3+1
        ELSE IF(I.LE.IDG4) THEN
         NGEXC4=NGEXC4+1
        ELSE IF(I.LE.IDG5) THEN
         NGEXC5=NGEXC5+1
        ELSE IF(I.LE.IDG6) THEN
         NGEXC6=NGEXC6+1
        ELSE
         WRITE(6,9911) 
 9911    FORMAT(' PROGRAM STOPPED BAD GAS ID IN MONTE')
         STOP
        ENDIF
        NEXCTOT=NEXCTOT+1
        NSTEXC=NSTEXC+1
        XSTEXC(KEXC)=X
        YSTEXC(KEXC)=Y
        ZSTEXC(KEXC)=Z
        TSTEXC(KEXC)=ST
       ENDIF
      ENDIF 
   6  S2=(S1*S1)/(S1-1.0D0) 
C  ANISOTROPIC SCATTERING
      R3=drand48(RDUM) 
      IF(INDEX(I).EQ.1) THEN
       R31=drand48(RDUM)
       F3=1.0D0-R3*ANGCT(IE,I)      
       IF(R31.GT.PSCT(IE,I))  F3=-F3
      ELSE IF(INDEX(I).EQ.2) THEN
       EPSI=PSCT(IE,I)
       F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3)))
      ELSE 
C ISOTROPIC SCATTERING                   
       F3=1.0D0-2.0D0*R3  
      ENDIF
      THETA0=DACOS(F3)                                                  
      R4=drand48(RDUM)
      PHI0=F4*R4                                                        
      F8=DSIN(PHI0)                                                     
      F9=DCOS(PHI0)                                                     
      IF(E.LT.EI) EI=0.0D0                                              
      ARG1=1.0D0-S1*EI/E                                                
      ARG1=DMAX1(ARG1,SMALL)                                            
      D=1.0D0-F3*DSQRT(ARG1)                                            
      E1=E*(1.0D0-EI/(S1*E)-2.0D0*D/S2) 
      E1=DMAX1(E1,SMALL)                                                
      Q=DSQRT((E/E1)*ARG1)/S1                                           
      Q=DMIN1(Q,1.0D0)                                                  
      THETA=DASIN(Q*DSIN(THETA0))                                       
      F6=DCOS(THETA)                                                    
      U=(S1-1.0D0)*(S1-1.0D0)/ARG1                                      
      CSQD=F3*F3                                                        
      IF(F3.LT.0.0D0.AND.CSQD.GT.U) F6=-1.0D0*F6                        
      F5=DSIN(THETA)                                                    
      DCZ2=DMIN1(DCZ2,1.0D0)                                            
      ARGZ=DSQRT(DCX2*DCX2+DCY2*DCY2)
      IF(ARGZ.EQ.0.0D0) THEN
       DCZ1=F6         
       DCX1=F9*F5                             
       DCY1=F8*F5 
       IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
        F5S=F5*DSQRT(E1/ES(NCLTMP))
        IF(F5S.GT.1.0) F5S=1.0
        THSEC=DASIN(F5S)
        F5S=DSIN(THSEC)
        F6S=DCOS(THSEC)
        IF(F6.LT.0.0) F6S=-F6S
        PHIS=PHI0+API   
        IF(PHIS.GT.F4) PHIS=PHI0-F4
        F8S=DSIN(PHIS)
        F9S=DCOS(PHIS)
        DCZ(NCLTMP)=F6S
        DCX(NCLTMP)=F9S*F5S
        DCY(NCLTMP)=F8S*F5S
        NTMPFLG=0
       ENDIF
       GO TO 190
      ENDIF                                            
      DCZ1=DCZ2*F6+ARGZ*F5*F8                                           
      DCY1=DCY2*F6+(F5/ARGZ)*(DCX2*F9-DCY2*DCZ2*F8)                     
      DCX1=DCX2*F6-(F5/ARGZ)*(DCY2*F9+DCX2*DCZ2*F8) 
      IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
       F5S=F5*DSQRT(E1/ES(NCLTMP))
       IF(F5S.GT.1.0) F5S=1.0            
       THSEC=DASIN(F5S)
       F5S=DSIN(THSEC)
       F6S=DCOS(THSEC)
       IF(F6.LT.0.0) F6S=-F6S
       PHIS=PHI0+API   
       IF(PHIS.GT.F4) PHIS=PHI0-F4
       F8S=DSIN(PHIS)
       F9S=DCOS(PHIS)
       DCZ(NCLTMP)=DCZ2*F6S+ARGZ*F5S*F8S                               
       DCY(NCLTMP)=DCY2*F6S+(F5S/ARGZ)*(DCX2*F9S-DCY2*DCZ2*F8S)        
       DCX(NCLTMP)=DCX2*F6S-(F5S/ARGZ)*(DCY2*F9S+DCX2*DCZ2*F8S)
       NTMPFLG=0
      ENDIF 
  190 CONTINUE 
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.D-12 
C     VTOT=CONST9*DSQRT(E1)
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C TEST IF ELECTRON IS THERMALISED
      IF(E1.GT.ETHRM) GO TO 1
C STORE POSITION AND TIME OF THERMALISED ELECTRON
  191 CONTINUE
      K1=K1+1
      XST(K1)=X
      YST(K1)=Y
      ZST(K1)=Z
      TST(K1)=ST
      NFGF(K1)=NFLGFF
      NFGPP(K1)=NFLGPPP
      NFGBR(K1)=NFLGBRMM
      TTIME(K1)=ST-TLAST
      NELEC=NELEC+1
      NETOT=NETOT+1
  335 IF(K1.EQ.150000) GO TO 889
      IF(NELEC.EQ.(NCLUS+1)) THEN
C LAST ELECTRON IN CLUSTER , DO STATISTICS ON CLUSTER  
       CALL STATS(J11,J1)
       GO TO 210
      ENDIF 
C GET NEW IONISATION ELECTRON FROM STORE
      X=XS(NELEC)
      Y=YS(NELEC)
      Z=ZS(NELEC)
      ST=TS(NELEC)
      NFLGFF=NFLGFC(NELEC)
      NFLGPPP=NFLGPPC(NELEC)
      NFLGBRMM=NFLGBRMC(NELEC)
      TLAST=TS(NELEC) 
      E1=ES(NELEC)
      DCX1=DCX(NELEC)
      DCY1=DCY(NELEC)
      DCZ1=DCZ(NELEC)  
      IF(E1.LT.ETHRM) GO TO 191  
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.D-12 
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
      GO TO 1                                    
C  MAIN LOOP END 
  210 CONTINUE
C RESET NUMBER OF EVENTS FOR BAD EVENTS
      IF(IMIP.GT.2) NDELTA=NDELTA-IBADTOT
C
      WRITE(6,887) EMAX,NEOVFL
  887 FORMAT(' EMAX=',D12.7,' NEOVFL =',I5)
      IF(EMAX.GT.EFINAL) THEN
      WRITE(6,989) EFINAL,EMAX
  989 FORMAT('INCREASE ENERGY LIMIT FROM',D12.6,' EV TO AT LEAST',D12.6,
     /' EV.')
      STOP
      ENDIF                                         
      RETURN 
  889 NLEFT=NCLUS-NELEC
      WRITE(6,992) NPRIME,NLEFT,NCLUS
  992 FORMAT(3(/),' WARNING STOPPED AFTER NPRIME=',I6,' LAST PRIMARY HAS
     / AT LEAST ',I6,' SECONDARIES LEFT TO TRACK,OUT OF ',I6,' ELECTRONS
     / ALREADY IN CLUSTER')
      STOP
      RETURN
      END                                                   

MONTEFC()

Arguments

Argument Description
NONE -

Pseudo Code

      SUBROUTINE MONTEFC                                                
      IMPLICIT REAL*8 (A-H,O-Z) 
      IMPLICIT INTEGER*8 (I-N)                                        
      COMMON/INPT/NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/INPT1/NDVEC
      COMMON/CNSTS1/CONST1,CONST2,CONST3,CONST4,CONST5                  
      COMMON/SETP/TMAX,SMALL,API,ESTART,THETA,PHI,TCFMAX(10),TCFMAX1,
     /RSTART,EFIELD,ETHRM,ECUT,NDELTA,IMIP,IWRITE  
      COMMON/BFLD/EOVB,WB,BTHETA,BMAG
      COMMON/LARGE/CF(20000,512),EIN(512),TCF(20000),IARRY(512),    
     /RGAS(512),IPN(512),WPL(512),IZBR(512),IPLAST,PENFRA(3,512)
      COMMON/LARGEN/CFN(20000,60),TCFN(20000),SCLENUL(60),NPLAST
      COMMON/OUTPT/ICOLL(30),NETOT,NPRIME,TMAX1,TIME(300),NNULL, 
     /NITOT,ICOLN(512),ICOLNN(60),NREAL,NEXCTOT  
      COMMON/RLTVY/BET(20000),GAM(20000),VC,EMS
      COMMON/STTS/XST(150000),YST(150000),ZST(150000),TST(150000),
     /TTIME(150000),NFGF(150000),NFGPP(150000),NFGBR(150000),NELEC,
     /NEGION,EST1,EST2
      COMMON/STEXC/XSTEXC(150000),YSTEXC(150000),ZSTEXC(150000),
     /TSTEXC(150000),NSTEXC
      COMMON/STEXCNUL/XSTN(150000),YSTN(150000),ZSTN(150000),
     /TSTN(150000),IDNUL(150000),NEXCNUL
      COMMON/IONC/DOUBLE(6,20000),CMINIXSC(6),CMINEXSC(6),ECLOSS(6),
     /WPLN(6),ICOUNT,AVPFRAC(3,6)
      COMMON/IONFL/NC0(512),EC0(512),NG1(512),EG1(512),NG2(512),
     /EG2(512),WKLM(512),DSTFL(512)
      COMMON/IONMOD/ESPLIT(512,20),IONMODEL(512) 
      COMMON/ANIS/PSCT(20000,512),ANGCT(20000,512),INDEX(512),NISO
      COMMON/CASRS/ECAS(400),XCAS(400),YCAS(400),ZCAS(400),DRXS(400),
     /DRYS(400),DRZS(400),TT1(400),NFLGF(400),NFLGPP(400),IEVNTL     
      COMMON/COMP/LCMP,LCFLG,LRAY,LRFLG,LPAP,LPFLG,LBRM,LBFLG,LPEFLG
      COMMON/BREMG/EBRGAM(10),BRDCOSX(10),BRDCOSY(10),BRDCOSZ(10),
     /BRX(10),BRY(10),BRZ(10),BRT(10),EBRTOT(6),NBREM(6) 
      COMMON/CASRSB/ECASB(400),XCASB(400),YCASB(400),ZCASB(400),
     /DRXB(400),DRYB(400),DRZB(400),TTB1(400),NFLGFB(400),NFLGPPB(400),
     /IEVNTLB
      COMMON/CASRSE/ECASE(400),XCASE(400),YCASE(400),ZCASE(400),
     /DRXCE(400),DRYCE(400),DRZCE(400),TCASE(400),
     /NFLGFE(400),NFLGPPE(400),IEVENTE     
      COMMON/ECASC/NEGAS(512),LEGAS(512),IESHELL(512),IECASC
      COMMON/IDEXC/NGEXC1,NGEXC2,NGEXC3,NGEXC4,NGEXC5,NGEXC6,
     /IDG1,IDG2,IDG3,IDG4,IDG5,IDG6
      DIMENSION XS(150000),YS(150000),ZS(150000),TS(150000),ES(150000),
     /DCX(150000),DCY(150000),DCZ(150000),
     /NFLGFC(150000),NFLGPPC(150000),NFLGBRMC(150000)           
      DIMENSION TEMP(20000) 
C ------------------------------------------------------------------- 
C   RELATIVISTIC VERSION  
C   CALCULATES COLLISION EVENTS AND UPDATES DIFFUSION AND VELOCITY.
C   THIS ROUTINE HANDLES TERMINATIONS AT FIXED DRIFT TIMES. 
C   SOLVES MOTION IN COORDINATE SYSTEM WITH BFIELD ALIGNED TO X-AXIS
C   ELECTRIC FIELD AT AN ANGLE BTHETA IN THE X-Z PLANE.
C   THE RESULTS FOR THE VELOCITY VECTORS  ARE THEN 
C   ROTATED INTO THE STANDARD COORDINATE FRAME WITH THE ELECTRIC FIELD 
C   ALONG THE Z-AXIS AND THE BFIELD AT AN ANGLE BTHETA TO THE ELECTRIC
C   FIELD IN THE X-Z PLANE  
C -------------------------------------------------------------------
C VARYING ENERGY STEPS
      IF(EFINAL.LE.140000.) THEN
        ESTEP1=(EFINAL-16000.0)/DFLOAT(4000)
      ELSE
        ESTEP1=20.0
        ESTEP2=(EFINAL-92000.0)/DFLOAT(4000)
      ENDIF
      NPRINT=0 
      J20000=20000
      J300=300
      API=DACOS(-1.0D0)
      SMALL=1.0D-20
      EMAX=0.0D0
      TMAX1=0.0D0
      RDUM=RSTART
      CONST9=CONST3*0.01D0
      DO 25 I=1,300
   25 TIME(I)=0.0D0
      DO 26 I=1,30
   26 ICOLL(I)=0
      DO 27 I=1,512
   27 ICOLN(I)=0
      NREAL=0           
      NNULL=0                                                           
      NETOT=0 
      NEXCTOT=0
      NITOT=0
      NMXADD=0
      NTMPFLG=0
C CALC ROTATION MATRIX ANGLES
      RCS=DCOS((BTHETA-90.0D0)*API/180.0D0)
      RSN=DSIN((BTHETA-90.0D0)*API/180.0D0)
C 
      RTHETA=BTHETA*API/180.0D0
      EFZ100=EFIELD*100.0D0*DSIN(RTHETA)
      EFX100=EFIELD*100.0D0*DCOS(RTHETA)
      F1=EFIELD*CONST2*DCOS(RTHETA)
      F4=2.0D0*API
      EOVBR=EOVB*DSIN(RTHETA)
      THETA1=THETA
      PHI1=PHI
C CALCULATE MAXIMUM COLLISION FREQUENCY
      TLIM=0.0
      DO 111 J=1,20000
      TEMP(J)=TCFN(J)+TCF(J) 
      IF(TLIM.LT.TEMP(J)) TLIM=TEMP(J) 
  111 CONTINUE
      NEOVFL=0
      J1=0
C START OF PRIMARY EVENT LOOP
      DO 210 J11=1,NDELTA
      J1=J1+1
      NPRIME=J1
      NGEXC1=0
      NGEXC2=0
      NGEXC3=0
      NGEXC4=0
      NGEXC5=0
      NGEXC6=0
C     INITIAL DIRECTION COSINES 
      IF(THETA1.EQ.(API/2.0).OR.NDVEC.NE.1) THEN
C  ONLY ALLOW CASE WHERE DELTA IS ALONG E-FIELD DIRECTION
       WRITE(6,22) 
   22  FORMAT(2(/),3X,'PROGRAM STOPPED ONLY ALLOWED TO HAVE DELTA ELECTR
     /ON PRALLEL TO E-FIELD IN CASE WITH ARBITRARY ANGLE FOR B-FIELD')  
       STOP
      ENDIF
C FIX DELTA TO E - FIELD DIRECTION
      PHI1=0.0D0
      THETA1=(API/2.0)-RTHETA
      DCZ1=DCOS(THETA1)                                                 
      DCX1=DSIN(THETA1)*DCOS(PHI1)                                      
      DCY1=DSIN(THETA1)*DSIN(PHI1) 
      NFLGFF=0
      NFLGPPP=0
      NFLGBRMM=0
      NFLGHIGH=0
      EST1=ESTART
C INITIAL VELOCITY
      E1=ESTART
      GAM1=(EMS+E1)/EMS
      GAM12=GAM1
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.0D-12
C     VTOT=CONST9*DSQRT(E1)
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT 
      X=0.0D0
      Y=0.0D0
      Z=0.0D0
      K1=0
      KEXC=0
      NSTEXC=0
      NEXCNUL=0
      NCLUS=0
      NELEC=0
      NEGION=0
      TLAST=0.0D0
      ST=0.0D0
      TDASH=0.0D0  
      IF(IMIP.EQ.2) GO TO 1
      IF(IMIP.GT.2) THEN
C READIN FIRST ELECTRON FROM BETA DECAY OR X-RAY UNTHERMALISED CLUSTERS
       CALL CASRES(J11,IBADTOT,IBAD1)
C  SKIP BAD EVENT
       IF(IBAD1.EQ.1) THEN
        J1=J1-1
        GO TO 210
       ENDIF
      ELSE IF(IMIP.EQ.1) THEN
C READ IN FIRST ELECTRON FROM MIP INTERACTION
       CALL CASREM(J11)
       EST1=ECAS(1)
       EST2=EST1
      ENDIF
      X=XCAS(1)
      Y=YCAS(1)
      Z=ZCAS(1)
      ST=TT1(1)
      TS(1)=TT1(1)
      E1=ECAS(1)
      DCZ1=DRZS(1)
      DCY1=DRYS(1)
      DCX1=DRXS(1)
      NFLGFF=NFLGF(1)
      NFLGPPP=NFLGPP(1)
      NFLGBRMM=0
      NFLGHIGH=NFLGFF
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.0D-12
C     VTOT=CONST9*DSQRT(E1)
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C PUT REMAINDER OF ELECTRONS INTO CLUSTER STORE
      ISDUM=0
      DO 35 IST=2,IEVNTL
      ISDUM=ISDUM+1
      XS(ISDUM)=XCAS(IST)
      YS(ISDUM)=YCAS(IST)
      ZS(ISDUM)=ZCAS(IST)
      TS(ISDUM)=TT1(IST)
      ES(ISDUM)=ECAS(IST)
      DCX(ISDUM)=DRXS(IST)
      DCY(ISDUM)=DRYS(IST)
      DCZ(ISDUM)=DRZS(IST)
      NFLGFC(ISDUM)=NFLGF(IST)
      NFLGPPC(ISDUM)=NFLGPP(IST)
      NFLGBRMC(ISDUM)=0
      NCLUS=ISDUM
      IF(NFLGFC(IST).GT.NFLGHIGH) NFLGHIGH=NFLGFC(IST)
   35 CONTINUE
      GAM12=GAM1
C START OF LOOP FOR NEW ELECTRONS                                       
    1 CONTINUE 
      R1=drand48(RDUM)
      T=-DLOG(R1)/TLIM+TDASH
      TDASH=T
      WBT=WB*T/GAM12
C     WBT=WB*T
      COSWT=DCOS(WBT)
      SINWT=DSIN(WBT)
      DZ=GAM12*(CZ1*SINWT+(EOVBR-CY1)*(1.0D0-COSWT))/WB
C     DZ=(CZ1*SINWT+(EOVBR-CY1)*(1.0D0-COSWT))/WB
      DX=CX1*T+F1*T*T/GAM12
C     DX=CX1*T+F1*T*T
      E=E1+DZ*EFZ100+DX*EFX100
      GAM2=(EMS+E)/EMS
      BET2=DSQRT(1.0D0-1.0D0/(GAM2+GAM2))
      IF(E.LT.0.0D0) THEN
       E=0.001D0
      ENDIF                                                   
C INSERT NEW ALGORITHM TO FIND IE FOR VARYING ENERGY STEP          
      IF(IMIP.EQ.1) THEN                                     
       IE=DINT(E/ESTEP)+1                                               
      ELSE
       IF(EFINAL.LE.20000.) THEN
        IE=DINT(E/ESTEP)+1
       ELSE IF(EFINAL.LE.140000.) THEN
        IF(E.LE.16000.) THEN
         IE=DINT(E)+1
        ELSE
         IE=16000+DINT((E-16000.)/ESTEP1)
        ENDIF
       ELSE
        IF(E.LE.12000.) THEN
         IE=DINT(E)+1
        ELSE IF(E.LE.92000.) THEN
         IE=12000+DINT((E-12000.)/ESTEP1)
        ELSE
         IE=16000+DINT((E-92000.)/ESTEP2)
        ENDIF
       ENDIF
      ENDIF 
      IE=DMIN0(IE,J20000)                                            
C                                                                       
C     TEST FOR REAL OR NULL COLLISION                                   
C                                                                       
      R5=drand48(RDUM)
      TEST1=TCF(IE)/TLIM                                                
      IF(R5.LE.TEST1) GO TO 137                                         
      NNULL=NNULL+1       
      TEST2=TEMP(IE)/TLIM                      
      IF(R5.LT.TEST2) THEN
C TEST FOR NULL LEVELS
       IF(NPLAST.EQ.0) GO TO 1
       R2=drand48(RDUM) 
       I=0
  888  I=I+1
       IF(CFN(IE,I).LT.R2) GOTO 888
C INCREMENT NULL LEVEL SUM
       NEXCNUL=NEXCNUL+1
       ICOLNN(I)=ICOLNN(I)+1
C STORE X Y Z T ID FOR MOLECULAR LIGHT EMISSION AND DISSOCIATION FROM 
C   NULL EXCITATION
C NOTE: SMALL APPROX USED POSITION OF PREVIOUS REAL COLLISION
       XSTN(NEXCNUL)=X
       YSTN(NEXCNUL)=Y
       ZSTN(NEXCNUL)=Z
       TSTN(NEXCNUL)=ST
       IDNUL(NEXCNUL)=I               
       GO TO 1         
      ELSE
C NULL
       GO TO 1
      ENDIF                                                 
C                                                                       
C  CALCULATE DIRECTION COSINES AND POSITIONS AT INSTANT BEFORE COLLISION
  137 T2=T*T
      IF(E.GT.EMAX) EMAX=E
      IF(T.GT.TMAX1) TMAX1=T
      TDASH=0.0D0
      NREAL=NREAL+1  
C CALC VELOCITY
C     CX2=CX1+2.0*F1*T        
      CX2=CX1+2.0*F1*T/GAM12
      CY2=(CY1-EOVBR)*COSWT+CZ1*SINWT+EOVBR
      CZ2=CZ1*COSWT-(CY1-EOVBR)*SINWT
C CALC DIRECTION COSINES
      VTOT=DSQRT(CX2*CX2+CY2*CY2+CZ2*CZ2)
      DCX2=CX2/VTOT
      DCY2=CY2/VTOT
      DCZ2=CZ2/VTOT                                                     
C CALC NEW POSITION                                                
      X=X+DX                                                            
      Y=Y+EOVBR*T+GAM12*((CY1-EOVBR)*SINWT+CZ1*(1.0D0-COSWT))/WB
C     Y=Y+EOVBR*T+((CY1-EOVBR)*SINWT+CZ1*(1.0D0-COSWT))/WB
      Z=Z+DZ          
      GAM12=(GAM1+GAM2)/2.0D0
      ST=ST+T
      IT=DINT(T+1.0D0)                                                  
      IT=DMIN0(IT,J300)                                               
      TIME(IT)=TIME(IT)+1.0D0                                           
C --------------------------------------------------------------------- 
C     DETERMINATION OF REAL COLLISION TYPE                              
C --------------------------------------------------------------------- 
      R2=drand48(RDUM)
      I=0                                                               
  140 I=I+1                                                             
      IF(CF(IE,I).LT.R2) GO TO 140     
C************************************************************
C CHECK IF BREMSSTRAHLUNG
      IF(IZBR(I).NE.0.AND.LBRM.EQ.1) THEN
       NFLGBRMM=1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1
       DO 141 KNGS=1,NGAS
       IF(IPT.EQ.(KNGS*5)-1) GO TO 142
  141  CONTINUE
  142  IATOMNO=IZBR(I) 
       CALL BREMS(IATOMNO,E,DCX2,DCY2,DCZ2,EOUT,EDCX,EDCY,EDCZ,
     /EGAMMA,GDCX,GDCY,GDCZ)
       NBREM(KNGS)=NBREM(KNGS)+1
       EBRTOT(KNGS)=EBRTOT(KNGS)+EGAMMA
C      WRITE(6,668) EGAMMA,J11   
C 668 FORMAT(' BREM EGAMMA=',D12.4,' EVENT NO=',I5)
C GET  NEW DRCOS DRCOSY DRCOSX AND ENERGY OF ELECTRON
       E1=EOUT
       DCX1=EDCX
       DCY1=EDCY
       DCZ1=EDCZ
C RUN BREMSSTRAHLUNG GAMMA THROUGH CASCADE THEN STORE CONVERTED
C ELECTRONS IN COMMON/CASRSB/
C 
       CALL BREMSCASC(J11,EGAMMA,X,Y,Z,ST,GDCX,GDCY,GDCZ,ILOW)
C BREMSSTRAHLUNG ENERGY TOO LOW TO IONISE
       IF(ILOW.EQ.1) GO TO 190
C 
C STORE BREMSSTRAHLUNG DATA IN CLUSTER STORE
       DO 890 KBR=1,IEVNTLB
       NCLUS=NCLUS+1
       IF(NCLUS.GT.150000) THEN 
        WRITE(6,546) NCLUS,NREAL
        STOP
       ENDIF     
       ES(NCLUS)=ECASB(KBR)
       XS(NCLUS)=XCASB(KBR)
       YS(NCLUS)=YCASB(KBR)
       ZS(NCLUS)=ZCASB(KBR)
       TS(NCLUS)=TTB1(KBR)
       DCX(NCLUS)=DRXB(KBR)
       DCY(NCLUS)=DRYB(KBR)
       DCZ(NCLUS)=DRZB(KBR)
       NFLGFC(NCLUS)=NFLGFB(KBR)+NFLGHIGH
       NFLGPPC(NCLUS)=NFLGPPB(KBR)
       NFLGBRMC(NCLUS)=2
  890  CONTINUE
       IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
       GO TO 190
      ENDIF
  891 CONTINUE
C****************************************************************
C     S1=RGAS(I)                                                        
      S1=1.0D0+GAM2*(RGAS(I)-1.0D0)                                     
      EI=EIN(I)
      IF(E.LT.EI) THEN
      EI=E-0.0001D0
      ENDIF                                                          
      IF(IPN(I).EQ.0) GO TO 666
C ATTACHMENT       
      IF(IPN(I).EQ.-1) THEN
       NETOT=NETOT+1
       NITOT=NITOT+1
       NELEC=NELEC+1
       NEGION=NEGION+1
       IPT=IARRY(I)
       ICOLL(IPT)=ICOLL(IPT)+1
       ICOLN(I)=ICOLN(I)+1 
       IT=DINT(T+1.0D0)
       IT=DMIN0(IT,J300)
       TIME(IT)=TIME(IT)+1.0D0
       GO TO 335
      ENDIF    
      EISTR=EI                                   
      IF(IONMODEL(I).GT.0) THEN
C CALCULATE SECONDARY ENERGY,ESEC,IN IONISATION COLLISION USING
C FIVE DIFFERENT MODELS
       CALL IONSPLIT(I,E,EI,ESEC) 
       GO TO 544
      ENDIF               
      R9=drand48(RDUM)
C    USE OPAL PETERSON AND BEATY SPLITTING FACTOR.
      ESEC=WPL(I)*TAN(R9*ATAN((E-EI)/(2.0D0*WPL(I)))) 
      ESEC=WPL(I)*(ESEC/WPL(I))**0.9524
  544 CONTINUE
      EI=ESEC+EI 
C STORE POSITION ,ENERGY, DIRECTION COSINES AND TIME OF GENERATION
C OF SECONDARY IONISATION ELECTRON 
      NCLUS=NCLUS+1
      NMXADD=MAX(NCLUS,NMXADD)
      IF(NCLUS.GT.150000) THEN 
       WRITE(6,546) NCLUS,NREAL 
 546   FORMAT(2X,' PROGRAM STOPPED . NCLUS=',I7,' NREAL=',I10)
       STOP
      ENDIF     
      XS(NCLUS)=X       
      YS(NCLUS)=Y
      ZS(NCLUS)=Z
      TS(NCLUS)=ST
      ES(NCLUS)=ESEC 
      NFLGFC(NCLUS)=NFLGFF
      NFLGPPC(NCLUS)=NFLGPPP
      NFLGBRMC(NCLUS)=NFLGBRMM         
      NTMPFLG=1
      NCLTMP=NCLUS
C RANDOMISE SECONDARY ELECTRON DIRECTION
C     R3=drand48(RDUM)
C     F3=1.0-2.0D0*R3
C     THETA0=DACOS(F3)
C     F6=DCOS(THETA0)
C     F5=DSIN(THETA0)
C     R4=drand48(RDUM)
C     PHI0=F4*R4
C     F8=DSIN(PHI0)
C     F9=DCOS(PHI0)               
C     DCX(NCLUS)=F9*F5
C     DCY(NCLUS)=F8*F5
C     DCZ(NCLUS)=F6    
C*********************************************************
      IF(IECASC.EQ.0)GO TO 333
      IF(LEGAS(I).EQ.0) GO TO 333
C USE COMPLETE CASCADE FOR ELECTRON IONISATION
      KG1=NEGAS(I)
      LG1=LEGAS(I)
      IGSHEL=IESHELL(I)
      CALL CASCADEE(J11,KG1,LG1,X,Y,Z,ST,ESEC,IGSHEL)
C
C STORE CASCADE IN CLUSTER STORE
C
      ETSUM=0.0
      DO 844 KBR=1,IEVENTE
      NCLUS=NCLUS+1
      IF(NCLUS.GT.150000) THEN
       WRITE(6,546) NCLUS,NREAL
       STOP
      ENDIF
      ES(NCLUS)=ECASE(KBR)
      ETSUM=ETSUM+ES(NCLUS)
      XS(NCLUS)=XCASE(KBR)
      YS(NCLUS)=YCASE(KBR)
      ZS(NCLUS)=ZCASE(KBR)
      TS(NCLUS)=TCASE(KBR)
      DCX(NCLUS)=DRXCE(KBR)
      DCY(NCLUS)=DRYCE(KBR)
      DCZ(NCLUS)=DRZCE(KBR)
      NFLGFC(NCLUS)=NFLGFE(KBR)+NFLGHIGH
      NFLGPPC(NCLUS)=NFLGPPE(KBR)
      NFLGBRMC(NCLUS)=NFLGBRMM
  844 CONTINUE
      IF(NFLGFC(NCLUS).GT.NFLGHIGH) NFLGHIGH=NFLGFC(NCLUS)
      GO TO 666
C*********************************************************
C STORE POSSIBLE SHELL EMISSIONS AUGER OR FLUORESCENCE 
  333 IF(EISTR.GT.30.0) THEN
C TEST IF FLUORESCENCE EMISSION
       IFLTST=0
       IF(WKLM(I).GT.0.0) THEN
        R9=drand48(RDUM)
        IF(R9.LT.WKLM(I)) IFLTST=1
       ENDIF
       IF(IFLTST.EQ.0) THEN
C AUGER EMISSION WITHOUT FLUORESCENCE
        NAUG=NC0(I)
        EAVAUG=EC0(I)/DFLOAT(NAUG)
        DO 700 JFL=1,NC0(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        TS(NCLUS)=ST
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  700   CONTINUE 
       ELSE
C AUGER EMISSION AND FLUORESENCE 
        IF(NG2(I).EQ.0) GO TO 702
        NAUG=NG2(I)
        EAVAUG=EG2(I)/DFLOAT(NAUG)
        DO 701 JFL=1,NG2(I)
        NCLUS=NCLUS+1
        XS(NCLUS)=X
        YS(NCLUS)=Y
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
  701   CONTINUE
  702   IF(NG1(I).EQ.0) GO TO 704
        NAUG=NG1(I)
        EAVAUG=EG1(I)/DFLOAT(NAUG)
        R9=drand48(RDUM)
        DFL=-DLOG(R9)*DSTFL(I)
        DO 703 JFL=1,NG1(I)
        NCLUS=NCLUS+1
        R3=drand48(RDUM)
        THEFL=DACOS(1.0-2.0D0*R3)
        R4=drand48(RDUM)
        PHIFL=F4*R4
        XS(NCLUS)=X+DFL*DSIN(THEFL)*DCOS(PHIFL)
        YS(NCLUS)=Y+DFL*DSIN(THEFL)*DSIN(PHIFL)
        ZS(NCLUS)=Z+DFL*DCOS(THEFL)
        NFLGFC(NCLUS)=NFLGHIGH+1
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        TS(NCLUS)=ST
        ES(NCLUS)=EAVAUG
        R3=drand48(RDUM)
        F3=1.0-2.0D0*R3
        THETA0=DACOS(F3)
        F6=DCOS(THETA0)
        F5=DSIN(THETA0)
        R4=drand48(RDUM)
        PHI0=F4*R4
        F8=DSIN(PHI0)
        F9=DCOS(PHI0)               
        DCX(NCLUS)=F9*F5
        DCY(NCLUS)=F8*F5
        DCZ(NCLUS)=F6
        NFLGHIGH=NFLGFC(NCLUS)
  703   CONTINUE
  704   CONTINUE
       ENDIF
      ENDIF
C
C  GENERATE SCATTERING ANGLES AND UPDATE  LABORATORY COSINES AFTER      
C   COLLISION ALSO UPDATE ENERGY OF ELECTRON.                           
C
  666 IPT=IARRY(I)
      ICOLL(IPT)=ICOLL(IPT)+1 
      ICOLN(I)=ICOLN(I)+1   
C IF EXCITATION THEN ADD PROBABILITY ,PENFRA(1,I), OF TRANSFER TO GIVE 
C IONISATION OF THE OTHER GASES IN MIXTURE            
      IF(IPEN.EQ.0.OR.NGAS.EQ.1) GO TO 5                
      IF(PENFRA(1,I).NE.0.0) THEN
       RAN=drand48(RDUM)
       IF(RAN.GT.PENFRA(1,I)) GO TO 5
       NCLUS=NCLUS+1
C ENTER HERE POSSIBLE DELOCALISATION LENGTH FOR PENNING TRANSFER
       IF(PENFRA(2,I).EQ.0.0) THEN
        XS(NCLUS)=X             
        YS(NCLUS)=Y    
        ZS(NCLUS)=Z
        NFLGFC(NCLUS)=NFLGFF
        NFLGPPC(NCLUS)=NFLGPPP
        NFLGBRMC(NCLUS)=NFLGBRMM
        GO TO 667
       ENDIF
       ASIGN=1.0
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN  
       XS(NCLUS)=X-DLOG(RAN)*PENFRA(2,I)*ASIGN
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN 
       YS(NCLUS)=Y-DLOG(RAN)*PENFRA(2,I)*ASIGN 
       RAN=drand48(RDUM)
       RAN1=drand48(RDUM)
       IF(RAN1.LT.0.5) ASIGN=-ASIGN  
       ZS(NCLUS)=Z-DLOG(RAN)*PENFRA(2,I)*ASIGN
  667  RAN=drand48(RDUM)
       TS(NCLUS)=ST-DLOG(RAN)*PENFRA(3,I)
C ASSIGN EXCESS ENERGY OF 1EV TO PENNING CREATED ELECTRON
       ES(NCLUS)=1.0
       DCX(NCLUS)=DCX1
       DCY(NCLUS)=DCY1
       DCZ(NCLUS)=DCZ1
       GO TO 6
      ENDIF
C     GO TO 6 
C CALCULATE SUM OF EXCITATION PER CLUSTER AND STORE EXCITATION X Y Z T
   5  IF(IPN(I).EQ.0) THEN
       IF((RGAS(I)*EIN(I)).GT.4.0) THEN
        KEXC=KEXC+1
        IF(KEXC.GT.150000) THEN 
         WRITE(6,548) KEXC
 548     FORMAT(2X,' PROGRAM STOPPED . KEXC=',I7)
         STOP
        ENDIF
C FIND GAS IN WHICH EXCITATION OCCURED AND INCREMENT COUNTER
        IF(I.LE.IDG1) THEN 
         NGEXC1=NGEXC1+1
        ELSE IF(I.LE.IDG2) THEN
         NGEXC2=NGEXC2+1
        ELSE IF(I.LE.IDG3) THEN
         NGEXC3=NGEXC3+1
        ELSE IF(I.LE.IDG4) THEN
         NGEXC4=NGEXC4+1
        ELSE IF(I.LE.IDG5) THEN
         NGEXC5=NGEXC5+1
        ELSE IF(I.LE.IDG6) THEN
         NGEXC6=NGEXC6+1
        ELSE
         WRITE(6,9911) 
 9911    FORMAT(' PROGRAM STOPPED BAD GAS ID IN MONTE')
         STOP
        ENDIF
        NEXCTOT=NEXCTOT+1
        NSTEXC=NSTEXC+1
        XSTEXC(KEXC)=X
        YSTEXC(KEXC)=Y
        ZSTEXC(KEXC)=Z
        TSTEXC(KEXC)=ST
       ENDIF
      ENDIF 
   6  S2=(S1*S1)/(S1-1.0D0) 
C  ANISOTROPIC SCATTERING 
      R3=drand48(RDUM)
      IF(INDEX(I).EQ.1) THEN
       R31=drand48(RDUM)
       F3=1.0D0-R3*ANGCT(IE,I)       
       IF(R31.GT.PSCT(IE,I)) F3=-F3   
      ELSE IF(INDEX(I).EQ.2) THEN
       EPSI=PSCT(IE,I)
       F3=1.0D0-(2.0D0*R3*(1.0D0-EPSI)/(1.0D0+EPSI*(1.0D0-2.0D0*R3)))   
      ELSE
C ISOTROPIC SCATTERING        
       F3=1.0D0-2.0D0*R3  
      ENDIF
      THETA0=DACOS(F3)                                                  
      R4=drand48(RDUM)
      PHI0=F4*R4                                                        
      F8=DSIN(PHI0)                                                     
      F9=DCOS(PHI0)                                                     
      IF(E.LT.EI) EI=0.0D0                                              
      ARG1=1.0D0-S1*EI/E                                                
      ARG1=DMAX1(ARG1,SMALL)                                            
      D=1.0D0-F3*DSQRT(ARG1)                                            
      E1=E*(1.0D0-EI/(S1*E)-2.0D0*D/S2) 
      E1=DMAX1(E1,SMALL)                                                
      Q=DSQRT((E/E1)*ARG1)/S1                                           
      Q=DMIN1(Q,1.0D0)                                                  
      THETA=DASIN(Q*DSIN(THETA0))                                       
      F6=DCOS(THETA)                                                    
      U=(S1-1.0D0)*(S1-1.0D0)/ARG1                                      
      CSQD=F3*F3                                                        
      IF(F3.LT.0.0D0.AND.CSQD.GT.U) F6=-1.0D0*F6                        
      F5=DSIN(THETA)                                                    
      DCZ2=DMIN1(DCZ2,1.0D0)                                            
      ARGZ=DSQRT(DCX2*DCX2+DCY2*DCY2)
      IF(ARGZ.EQ.0.0D0) THEN
       DCZ1=F6         
       DCX1=F9*F5                             
       DCY1=F8*F5 
       IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
        F5S=F5*DSQRT(E1/ES(NCLTMP))
        IF(F5S.GT.1.0) F5S=1.0
        THSEC=DASIN(F5S)
        F5S=DSIN(THSEC)
        F6S=DCOS(THSEC)
        IF(F6.LT.0.0) F6S=-F6S
        PHIS=PHI0+API   
        IF(PHIS.GT.F4) PHIS=PHI0-F4
        F8S=DSIN(PHIS)
        F9S=DCOS(PHIS)
        DCZ(NCLTMP)=F6S
        DCX(NCLTMP)=F9S*F5S
        DCY(NCLTMP)=F8S*F5S
        NTMPFLG=0
       ENDIF
       GO TO 190
      ENDIF                                            
      DCZ1=DCZ2*F6+ARGZ*F5*F8                                           
      DCY1=DCY2*F6+(F5/ARGZ)*(DCX2*F9-DCY2*DCZ2*F8)                     
      DCX1=DCX2*F6-(F5/ARGZ)*(DCY2*F9+DCX2*DCZ2*F8) 
      IF(NTMPFLG.EQ.1) THEN
C USE FREE KINEMATICS FOR IONISATION SECONDARY ANGLES
       F5S=F5*DSQRT(E1/ES(NCLTMP))
       IF(F5S.GT.1.0) F5S=1.0            
       THSEC=DASIN(F5S)
       F5S=DSIN(THSEC)
       F6S=DCOS(THSEC)
       IF(F6.LT.0.0) F6S=-F6S
       PHIS=PHI0+API   
       IF(PHIS.GT.F4) PHIS=PHI0-F4
       F8S=DSIN(PHIS)
       F9S=DCOS(PHIS)
       DCZ(NCLTMP)=DCZ2*F6S+ARGZ*F5S*F8S                               
       DCY(NCLTMP)=DCY2*F6S+(F5S/ARGZ)*(DCX2*F9S-DCY2*DCZ2*F8S)        
       DCX(NCLTMP)=DCX2*F6S-(F5S/ARGZ)*(DCY2*F9S+DCX2*DCZ2*F8S)
       NTMPFLG=0
      ENDIF 
  190 CONTINUE  
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.D-12
C     VTOT=CONST9*DSQRT(E1)
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
C TEST IF ELECTRON IS THERMALISED
      IF(E1.GT.ETHRM) GO TO 1
  191 CONTINUE
C STORE POSITION AND TIME OF THERMALISED ELECTRONS
      K1=K1+1
C ROTATE INTO COORDINATE SYSTEM WITH EFIELD ALONG Z
      ZR=Z*RCS-X*RSN
      YR=Y
      XR=Z*RSN+X*RCS          
      XST(K1)=XR
      YST(K1)=YR
      ZST(K1)=ZR
      TST(K1)=ST
      NFGF(K1)=NFLGFF
      NFGPP(K1)=NFLGPPP
      NFGBR(K1)=NFLGBRMM
      TTIME(K1)=ST-TLAST
      NELEC=NELEC+1
      NETOT=NETOT+1
  335 IF(K1.EQ.150000) GO TO 889
      IF(NELEC.EQ.(NCLUS+1)) THEN
C LAST ELECTRON IN CLUSTER. DO STATISTICS ON CLUSTER
       CALL STATS(J11,J1) 
       GO TO 210      
      ENDIF
C GET NEW IONISATION ELECTRON FROM STORE
      X=XS(NELEC)
      Y=YS(NELEC)
      Z=ZS(NELEC)
      ST=TS(NELEC)
      NFLGFF=NFLGFC(NELEC)
      NFLGPPP=NFLGPPC(NELEC)
      NFLGBRMM=NFLGBRMC(NELEC)
      TLAST=TS(NELEC)
      E1=ES(NELEC)
      DCX1=DCX(NELEC)
      DCY1=DCY(NELEC)
      DCZ1=DCZ(NELEC)
      IF(E1.LT.ETHRM) GO TO 191
      GAM1=(EMS+E1)/EMS
      BET1=DSQRT(1.0D0-1.0D0/(GAM1*GAM1))
      VTOT=BET1*VC*1.D-12
      CX1=DCX1*VTOT
      CY1=DCY1*VTOT
      CZ1=DCZ1*VTOT
      GO TO 1  
C MAIN LOOP END
  210 CONTINUE
C RESET NUMBER OF EVENTS FOR BAD EVENTS
      IF(IMIP.GT.2) NDELTA=NDELTA-IBADTOT
      WRITE(6,887) EMAX,NEOVFL
  887 FORMAT(' EMAX=',D12.7,' NEOVFL =',I5)
      IF(EMAX.GT.EFINAL) THEN
      WRITE(6,989) EFINAL,EMAX
  989 FORMAT('INCREASE ENERGY LIMIT FROM',D12.6,' EV TO AT LEAST',D12.6,
     /' EV.')
      STOP
      ENDIF                                         
      RETURN
  889 NLEFT=NCLUS-NELEC
      WRITE(6,992) NPRIME,NLEFT,NCLUS
  992 FORMAT(3(/),' WARNING STOPPED AFTER NPRIME=',I6,' LAST PRIMARY HAS
     / AT LEAST ',I6,' SECONDARIES LEFT TO TRACK. OUT OF ',I6,' ELECTRON
     /S ALREADY IN CLUSTER')
      STOP
      RETURN
      END                                                  

CSSTFN

Stores event data for N-th generation fluorescence

Arguments

Argument Description
NEV
NVAC
L1
DIST1

Pseudo-Code

import conf
def CSSTF1(NEV,NVAC,L1,DIST1):           
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    def get_globals():
        IONSUM0=conf.IONSUM0
        IFLSUM0=conf.IFLSUM0
        ESTORE0=conf.ESTORE0
        EPHOTON0=conf.EPHOTON0
        DRXE0=conf.DRXE0
        DRYE0=conf.DRYE0
        DRZE0=conf.DRZE0
        DRX0=conf.DRX0
        DRY0=conf.DRY0
        DRZ0=conf.DRZ0
        IONSUM=conf.IONSUM
        IFLSUM=conf.IFLSUM
        ESTORE=conf.ESTORE
        EPHOTON=conf.EPHOTON
        DRXE=conf.DRXE
        DRYE=conf.DRYE
        DRZE=conf.DRZE
        DRX=conf.DRX
        DRY=conf.DRY
        DRZ=conf.DRZ
        IONF1=conf.IONF1
        ESTF1=conf.ESTF1
        X1=conf.X1
        Y1=conf.Y1
        Z1=conf.Z1
        DRXS=conf.DRXS
        DRYS=conf.DRYS
        DRZS=conf.DRZS
        X11=conf.X11
        Y11=conf.Y11
        Z11=conf.Z11
        X01=conf.X01
        Y01=conf.Y01
        Z01=conf.Z01
    get_globals()
    def update_globals():
        conf.IONSUM0=IONSUM0
        conf.IFLSUM0=IFLSUM0
        conf.ESTORE0=ESTORE0
        conf.EPHOTON0=EPHOTON0
        conf.DRXE0=DRXE0
        conf.DRYE0=DRYE0
        conf.DRZE0=DRZE0
        conf.DRX0=DRX0
        conf.DRY0=DRY0
        conf.DRZ0=DRZ0
        conf.IONSUM=IONSUM
        conf.IFLSUM=IFLSUM
        conf.ESTORE=ESTORE
        conf.EPHOTON=EPHOTON
        conf.DRXE=DRXE
        conf.DRYE=DRYE
        conf.DRZE=DRZE
        conf.DRX=DRX
        conf.DRY=DRY
        conf.DRZ=DRZ
        conf.IONF1=IONF1
        conf.ESTF1=ESTF1
        conf.X1=X1
        conf.Y1=Y1
        conf.Z1=Z1
        conf.DRXS=DRXS
        conf.DRYS=DRYS
        conf.DRZS=DRZS
        conf.X11=X11
        conf.Y11=Y11
        conf.Z11=Z11
        conf.X01=X01
        conf.Y01=Y01
        conf.Z01=Z01
    # STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 28) :
        print(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN EVENT WITH',I3IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',I3NVAC,'\n PRIMARY INTERACTION NUMBER =',I3NEV)
        sys.exit()
    # endif
    IONF1[NVAC][NEV]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]+1):
        ESTF1[NVAC][J][NEV]=ESTORE[NVAC][J]
        X1[NVAC][J][NEV]=X01[NVAC]+DIST1*DRX0[NVAC][L1]
        Y1[NVAC][J][NEV]=Y01[NVAC]+DIST1*DRY0[NVAC][L1]
        Z1[NVAC][J][NEV]=Z01[NVAC]+DIST1*DRZ0[NVAC][L1]
        X11[NVAC][L1]=X1[NVAC][J][NEV]
        Y11[NVAC][L1]=Y1[NVAC][J][NEV]
        Z11[NVAC][L1]=Z1[NVAC][J][NEV]
        DRXS[NVAC][J][NEV]=DRXE[NVAC][J]
        DRYS[NVAC][J][NEV]=DRYE[NVAC][J]
        DRZS[NVAC][J][NEV]=DRZE[NVAC][J]
    update_globals()
    return
    # end
def CSSTF2(NEV,NVAC,L1,DIST1):               
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)

    # STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
    def get_globals():
        IONSUM0=conf.IONSUM0
        IFLSUM0=conf.IFLSUM0
        ESTORE0=conf.ESTORE0
        EPHOTON0=conf.EPHOTON0
        DRXE0=conf.DRXE0
        DRYE0=conf.DRYE0
        DRZE0=conf.DRZE0
        DRX0=conf.DRX0
        DRY0=conf.DRY0
        DRZ0=conf.DRZ0
        IONSUM=conf.IONSUM
        IFLSUM=conf.IFLSUM
        ESTORE=conf.ESTORE
        EPHOTON=conf.EPHOTON
        DRXE=conf.DRXE
        DRYE=conf.DRYE
        DRZE=conf.DRZE
        DRX=conf.DRX
        DRY=conf.DRY
        DRZ=conf.DRZ
        IONF2=conf.IONF2
        ESTF2=conf.ESTF2
        X2=conf.X2
        Y2=conf.Y2
        Z2=conf.Z2
        DRXS=conf.DRXS
        DRYS=conf.DRYS
        DRZS=conf.DRZS
        X21=conf.X21
        Y21=conf.Y21
        Z21=conf.Z21
        X11=conf.X11
        Y11=conf.Y11
        Z11=conf.Z11
    get_globals()
    def update_globals():
        conf.IONSUM0=IONSUM0
        conf.IFLSUM0=IFLSUM0
        conf.ESTORE0=ESTORE0
        conf.EPHOTON0=EPHOTON0
        conf.DRXE0=DRXE0
        conf.DRYE0=DRYE0
        conf.DRZE0=DRZE0
        conf.DRX0=DRX0
        conf.DRY0=DRY0
        conf.DRZ0=DRZ0
        conf.IONSUM=IONSUM
        conf.IFLSUM=IFLSUM
        conf.ESTORE=ESTORE
        conf.EPHOTON=EPHOTON
        conf.DRXE=DRXE
        conf.DRYE=DRYE
        conf.DRZE=DRZE
        conf.DRX=DRX
        conf.DRY=DRY
        conf.DRZ=DRZ
        conf.IONF2=IONF2
        conf.ESTF2=ESTF2
        conf.X2=X2
        conf.Y2=Y2
        conf.Z2=Z2
        conf.DRXS=DRXS
        conf.DRYS=DRYS
        conf.DRZS=DRZS
        conf.X21=X21
        conf.Y21=Y21
        conf.Z21=Z21
        conf.X11=X11
        conf.Y11=Y11
        conf.Z11=Z11

    if(IONSUM[NVAC]> 28) :
        print(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n PRIMARY INTERACTION NUMBER =',NEV)
        sys.exit()
    # endif
    IONF2[NVAC][NEV]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]+1):
        ESTF2[NVAC][J][NEV]=ESTORE[NVAC][J]
        X2[NVAC][J][NEV]=X11[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y2[NVAC][J][NEV]=Y11[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z2[NVAC][J][NEV]=Z11[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X21[NVAC][L1]=X2[NVAC][J][NEV]
        Y21[NVAC][L1]=Y2[NVAC][J][NEV]
        Z21[NVAC][L1]=Z2[NVAC][J][NEV]
        DRXS[NVAC][J][NEV]=DRXE[NVAC][J]
        DRYS[NVAC][J][NEV]=DRYE[NVAC][J]
        DRZS[NVAC][J][NEV]=DRZE[NVAC][J]
    update_globals()
    return
    # end
def CSSTF3(NEV,NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    def get_globals():
        IONSUM0=conf.IONSUM0
        IFLSUM0=conf.IFLSUM0
        ESTORE0=conf.ESTORE0
        EPHOTON0=conf.EPHOTON0
        DRXE0=conf.DRXE0
        DRYE0=conf.DRYE0
        DRZE0=conf.DRZE0
        DRX0=conf.DRX0
        DRY0=conf.DRY0
        DRZ0=conf.DRZ0
        IONSUM=conf.IONSUM
        IFLSUM=conf.IFLSUM
        ESTORE=conf.ESTORE
        EPHOTON=conf.EPHOTON
        DRXE=conf.DRXE
        DRYE=conf.DRYE
        DRZE=conf.DRZE
        DRX=conf.DRX
        DRY=conf.DRY
        DRZ=conf.DRZ
        IONF3=conf.IONF3
        ESTF3=conf.ESTF3
        X3=conf.X3
        Y3=conf.Y3
        Z3=conf.Z3
        DRXS=conf.DRXS
        DRYS=conf.DRYS
        DRZS=conf.DRZS
        X31=conf.X31
        Y31=conf.Y31
        Z31=conf.Z31
        X21=conf.X21
        Y21=conf.Y21
        Z21=conf.Z21
    get_globals()
    def update_globals():
        conf.IONSUM0=IONSUM0
        conf.IFLSUM0=IFLSUM0
        conf.ESTORE0=ESTORE0
        conf.EPHOTON0=EPHOTON0
        conf.DRXE0=DRXE0
        conf.DRYE0=DRYE0
        conf.DRZE0=DRZE0
        conf.DRX0=DRX0
        conf.DRY0=DRY0
        conf.DRZ0=DRZ0
        conf.IONSUM=IONSUM
        conf.IFLSUM=IFLSUM
        conf.ESTORE=ESTORE
        conf.EPHOTON=EPHOTON
        conf.DRXE=DRXE
        conf.DRYE=DRYE
        conf.DRZE=DRZE
        conf.DRX=DRX
        conf.DRY=DRY
        conf.DRZ=DRZ
        conf.IONF3=IONF3
        conf.ESTF3=ESTF3
        conf.X3=X3
        conf.Y3=Y3
        conf.Z3=Z3
        conf.DRXS=DRXS
        conf.DRYS=DRYS
        conf.DRZS=DRZS
        conf.X31=X31
        conf.Y31=Y31
        conf.Z31=Z31
        conf.X21=X21
        conf.Y21=Y21
        conf.Z21=Z21

    # STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 15) :
        print(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',INVAC3,'\n PRIMARY INTERACTION NUMBER =',NEV)
        sys.exit()
    # endif
    IONF3[NVAC][NEV]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]+1):
        ESTF3[NVAC][J][NEV]=ESTORE[NVAC][J]
        X3[NVAC][J][NEV]=X21[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y3[NVAC][J][NEV]=Y21[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z3[NVAC][J][NEV]=Z21[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X31[NVAC][L1]=X3[NVAC][J][NEV]
        Y31[NVAC][L1]=Y3[NVAC][J][NEV]
        Z31[NVAC][L1]=Z3[NVAC][J][NEV]
        DRXS[NVAC][J][NEV]=DRXE[NVAC][J]
        DRYS[NVAC][J][NEV]=DRYE[NVAC][J]
        DRZS[NVAC][J][NEV]=DRZE[NVAC][J]
    update_globals()
    return
    # end
def CSSTF4(NEV,NVAC,L1,DIST1):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    def get_globals():
        IONSUM0=conf.IONSUM0
        IFLSUM0=conf.IFLSUM0
        ESTORE0=conf.ESTORE0
        EPHOTON0=conf.EPHOTON0
        DRXE0=conf.DRXE0
        DRYE0=conf.DRYE0
        DRZE0=conf.DRZE0
        DRX0=conf.DRX0
        DRY0=conf.DRY0
        DRZ0=conf.DRZ0
        IONSUM=conf.IONSUM
        IFLSUM=conf.IFLSUM
        ESTORE=conf.ESTORE
        EPHOTON=conf.EPHOTON
        DRXE=conf.DRXE
        DRYE=conf.DRYE
        DRZE=conf.DRZE
        DRX=conf.DRX
        DRY=conf.DRY
        DRZ=conf.DRZ
        IONF4=conf.IONF4
        ESTF4=conf.ESTF4
        X4=conf.X4
        Y4=conf.Y4
        Z4=conf.Z4
        DRXS=conf.DRXS
        DRYS=conf.DRYS
        DRZS=conf.DRZS
        X31=conf.X31
        Y31=conf.Y31
        Z31=conf.Z31
        X41=conf.X41
        Y41=conf.Y41
        Z41=conf.Z41
    get_globals()
    def update_globals():
        conf.IONSUM0=IONSUM0
        conf.IFLSUM0=IFLSUM0
        conf.ESTORE0=ESTORE0
        conf.EPHOTON0=EPHOTON0
        conf.DRXE0=DRXE0
        conf.DRYE0=DRYE0
        conf.DRZE0=DRZE0
        conf.DRX0=DRX0
        conf.DRY0=DRY0
        conf.DRZ0=DRZ0
        conf.IONSUM=IONSUM
        conf.IFLSUM=IFLSUM
        conf.ESTORE=ESTORE
        conf.EPHOTON=EPHOTON
        conf.DRXE=DRXE
        conf.DRYE=DRYE
        conf.DRZE=DRZE
        conf.DRX=DRX
        conf.DRY=DRY
        conf.DRZ=DRZ
        conf.IONF4=IONF4
        conf.ESTF4=ESTF4
        conf.X4=X4
        conf.Y4=Y4
        conf.Z4=Z4
        conf.DRXS=DRXS
        conf.DRYS=DRYS
        conf.DRZS=DRZS
        conf.X31=X31
        conf.Y31=Y31
        conf.Z31=Z31
        conf.X41=X41
        conf.Y41=Y41
        conf.Z41=Z41
    # STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 12) :
        print(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.','\n COMPTON BRANCH NO=',NVAC,'\n PRIMARY INTERACTION NUMBER =',NEV)
        sys.exit()
    # endif
    IONF4[NVAC][NEV]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]+1):
        ESTF4[NVAC][J][NEV]=ESTORE[NVAC][J]
        X4[NVAC][J][NEV]=X31[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y4[NVAC][J][NEV]=Y31[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z4[NVAC][J][NEV]=Z31[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X41[NVAC][L1]=X4[NVAC][J][NEV]
        Y41[NVAC][L1]=Y4[NVAC][J][NEV]
        Z41[NVAC][L1]=Z4[NVAC][J][NEV]
        DRXS[NVAC][J][NEV]=DRXE[NVAC][J]
        DRYS[NVAC][J][NEV]=DRYE[NVAC][J]
        DRZS[NVAC][J][NEV]=DRZE[NVAC][J]
    # 1 CONTINUE
    update_globals()
    return
    # end
def CSSTF5(NEV,NVAC,L1,DIST1): 
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    def get_globals():
        IONSUM0=conf.IONSUM0
        IFLSUM0=conf.IFLSUM0
        ESTORE0=conf.ESTORE0
        EPHOTON0=conf.EPHOTON0
        DRXE0=conf.DRXE0
        DRYE0=conf.DRYE0
        DRZE0=conf.DRZE0
        DRX0=conf.DRX0
        DRY0=conf.DRY0
        DRZ0=conf.DRZ0
        IONSUM=conf.IONSUM
        IFLSUM=conf.IFLSUM
        ESTORE=conf.ESTORE
        EPHOTON=conf.EPHOTON
        DRXE=conf.DRXE
        DRYE=conf.DRYE
        DRZE=conf.DRZE
        DRX=conf.DRX
        DRY=conf.DRY
        DRZ=conf.DRZ
        IONF5=conf.IONF5
        ESTF5=conf.ESTF5
        X5=conf.X5
        Y5=conf.Y5
        Z5=conf.Z5
        DRXS=conf.DRXS
        DRYS=conf.DRYS
        DRZS=conf.DRZS
        X41=conf.X41
        Y41=conf.Y41
        Z41=conf.Z41
        X51=conf.X51
        Y51=conf.Y51
        Z51=conf.Z51
    get_globals()
    def update_globals():
        conf.IONSUM0=IONSUM0
        conf.IFLSUM0=IFLSUM0
        conf.ESTORE0=ESTORE0
        conf.EPHOTON0=EPHOTON0
        conf.DRXE0=DRXE0
        conf.DRYE0=DRYE0
        conf.DRZE0=DRZE0
        conf.DRX0=DRX0
        conf.DRY0=DRY0
        conf.DRZ0=DRZ0
        conf.IONSUM=IONSUM
        conf.IFLSUM=IFLSUM
        conf.ESTORE=ESTORE
        conf.EPHOTON=EPHOTON
        conf.DRXE=DRXE
        conf.DRYE=DRYE
        conf.DRZE=DRZE
        conf.DRX=DRX
        conf.DRY=DRY
        conf.DRZ=DRZ
        conf.IONF5=IONF5
        conf.ESTF5=ESTF5
        conf.X5=X5
        conf.Y5=Y5
        conf.Z5=Z5
        conf.DRXS=DRXS
        conf.DRYS=DRYS
        conf.DRZS=DRZS
        conf.X41=X41
        conf.Y41=Y41
        conf.Z41=Z41
        conf.X51=X51
        conf.Y51=Y51
        conf.Z51=Z51
    # STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
    if(IONSUM[NVAC]> 5) :
        print(' WARNING FIFTH GENERATION CONVERTED FLUORESCENCE HAS AN  EVENT WITH',IONSUM[NVAC],' IONS.\n',' COMPTON BRANCH NO=',NVAC,'\n PRIMARY INTERACTION NUMBER=',NEV)
        sys.exit()
    # endif
    IONF5[NVAC][NEV]=IONSUM[NVAC]
    for J in range(1,IONSUM[NVAC]+1):
        ESTF5[NVAC][J][NEV]=ESTORE[NVAC][J]
        X5[NVAC][J][NEV]=X41[NVAC][L1]+DIST1*DRX0[NVAC][L1]
        Y5[NVAC][J][NEV]=Y41[NVAC][L1]+DIST1*DRY0[NVAC][L1]
        Z5[NVAC][J][NEV]=Z41[NVAC][L1]+DIST1*DRZ0[NVAC][L1]
        X51[NVAC][L1]=X5[NVAC][J][NEV]
        Y51[NVAC][L1]=Y5[NVAC][J][NEV]
        Z51[NVAC][L1]=Z5[NVAC][J][NEV]
        DRXS[NVAC][J][NEV]=DRXE[NVAC][J]
        DRYS[NVAC][J][NEV]=DRYE[NVAC][J]
        DRZS[NVAC][J][NEV]=DRZE[NVAC][J]
    update_globals()
    return
    # end
      SUBROUTINE CSSTF1(NEV,NVAC,L1,DIST1)           
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS1/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/GEN1/IONF1(10,10000),ESTF1(10,28,10000),X1(10,28,10000),
     /Y1(10,28,10000),Z1(10,28,10000),DRXS(10,28,10000),
     /DRYS(10,28,10000),DRZS(10,28,10000)
      COMMON/GEN11/X11(10,28),Y11(10,28),Z11(10,28)
      COMMON/GEN01/X01(10),Y01(10),Z01(10)
C STORE EVENT DATA FOR FIRST GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC,NEV
  99   FORMAT(' WARNING FIRST GENERATION CONVERTED FLUORESCENCE HAS AN
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/,' PRIMARY IN
     /TERACTION NUMBER =',I3)
       STOP
      ENDIF
      IONF1(NVAC,NEV)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF1(NVAC,J,NEV)=ESTORE(NVAC,J)
      X1(NVAC,J,NEV)=X01(NVAC)+DIST1*DRX0(NVAC,L1)
      Y1(NVAC,J,NEV)=Y01(NVAC)+DIST1*DRY0(NVAC,L1)
      Z1(NVAC,J,NEV)=Z01(NVAC)+DIST1*DRZ0(NVAC,L1)
      X11(NVAC,L1)=X1(NVAC,J,NEV)
      Y11(NVAC,L1)=Y1(NVAC,J,NEV)
      Z11(NVAC,L1)=Z1(NVAC,J,NEV)
      DRXS(NVAC,J,NEV)=DRXE(NVAC,J)
      DRYS(NVAC,J,NEV)=DRYE(NVAC,J)
      DRZS(NVAC,J,NEV)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF2(NEV,NVAC,L1,DIST1)               
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS1/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS2/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/GEN2/IONF2(10,10000),ESTF2(10,28,10000),X2(10,28,10000),
     /Y2(10,28,10000),Z2(10,28,10000),DRXS(10,28,10000),
     /DRYS(10,28,10000),DRZS(10,28,10000)
      COMMON/GEN21/X21(10,28),Y21(10,28),Z21(10,28)
      COMMON/GEN11/X11(10,28),Y11(10,28),Z11(10,28)
C STORE EVENT DATA FOR SECOND GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.28) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC,NEV
  99   FORMAT(' WARNING SECOND GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/,' PRIMARY IN
     /TERACTION NUMBER =',I3)
       STOP
      ENDIF
      IONF2(NVAC,NEV)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF2(NVAC,J,NEV)=ESTORE(NVAC,J)
      X2(NVAC,J,NEV)=X11(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y2(NVAC,J,NEV)=Y11(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z2(NVAC,J,NEV)=Z11(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X21(NVAC,L1)=X2(NVAC,J,NEV)
      Y21(NVAC,L1)=Y2(NVAC,J,NEV)
      Z21(NVAC,L1)=Z2(NVAC,J,NEV)
      DRXS(NVAC,J,NEV)=DRXE(NVAC,J)
      DRYS(NVAC,J,NEV)=DRYE(NVAC,J)
      DRZS(NVAC,J,NEV)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF3(NEV,NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS2/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS3/IONSUM(10),IFLSUM(10),ESTORE(10,28),
     /EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),
     /DRY(10,28),DRZ(10,28)
      COMMON/GEN3/IONF3(10,10000),ESTF3(10,15,10000),X3(10,15,10000),
     /Y3(10,15,10000),Z3(10,15,10000),DRXS(10,15,10000),
     /DRYS(10,15,10000),DRZS(10,15,10000)
      COMMON/GEN31/X31(10,28),Y31(10,28),Z31(10,28)
      COMMON/GEN21/X21(10,28),Y21(10,28),Z21(10,28)
C STORE EVENT DATA FOR THIRD GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.15) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC,NEV
  99   FORMAT(' WARNING THIRD GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/,' PRIMARY IN
     /TERACTION NUMBER =',I3)
       STOP
      ENDIF
      IONF3(NVAC,NEV)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF3(NVAC,J,NEV)=ESTORE(NVAC,J)
      X3(NVAC,J,NEV)=X21(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y3(NVAC,J,NEV)=Y21(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z3(NVAC,J,NEV)=Z21(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X31(NVAC,L1)=X3(NVAC,J,NEV)
      Y31(NVAC,L1)=Y3(NVAC,J,NEV)
      Z31(NVAC,L1)=Z3(NVAC,J,NEV)
      DRXS(NVAC,J,NEV)=DRXE(NVAC,J)
      DRYS(NVAC,J,NEV)=DRYE(NVAC,J)
      DRZS(NVAC,J,NEV)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF4(NEV,NVAC,L1,DIST1)
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS3/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS4/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/GEN4/IONF4(10,10000),ESTF4(10,12,10000),X4(10,12,10000),
     /Y4(10,12,10000),Z4(10,12,10000),DRXS(10,12,10000),
     /DRYS(10,12,10000),DRZS(10,12,10000)
      COMMON/GEN31/X31(10,28),Y31(10,28),Z31(10,28)
      COMMON/GEN41/X41(10,28),Y41(10,28),Z41(10,28)
C STORE EVENT DATA FOR FOURTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.12) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC,NEV
  99   FORMAT(' WARNING FOURTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/,' PRIMARY IN
     /TERACTION NUMBER =',I3)
       STOP
      ENDIF
      IONF4(NVAC,NEV)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF4(NVAC,J,NEV)=ESTORE(NVAC,J)
      X4(NVAC,J,NEV)=X31(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y4(NVAC,J,NEV)=Y31(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z4(NVAC,J,NEV)=Z31(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X41(NVAC,L1)=X4(NVAC,J,NEV)
      Y41(NVAC,L1)=Y4(NVAC,J,NEV)
      Z41(NVAC,L1)=Z4(NVAC,J,NEV)
      DRXS(NVAC,J,NEV)=DRXE(NVAC,J)
      DRYS(NVAC,J,NEV)=DRYE(NVAC,J)
      DRZS(NVAC,J,NEV)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END
      SUBROUTINE CSSTF5(NEV,NVAC,L1,DIST1) 
      IMPLICIT REAL*8 (A-H,O-Z)
      IMPLICIT INTEGER*8 (I-N)
      COMMON/CALCAS4/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),
     /EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),
     /DRX0(10,28),DRY0(10,28),DRZ0(10,28)
      COMMON/CALCAS5/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),
     /DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),
     /DRZ(10,28)
      COMMON/GEN5/IONF5(10,10000),ESTF5(10,5,10000),X5(10,5,10000),
     /Y5(10,5,10000),Z5(10,5,10000),DRXS(10,5,10000),DRYS(10,5,10000),
     /DRZS(10,5,10000)
      COMMON/GEN41/X41(10,28),Y41(10,28),Z41(10,28)
      COMMON/GEN51/X51(10,28),Y51(10,28),Z51(10,28)
C STORE EVENT DATA FOR FIFTH GENERATION FLUORESCENCE
      IF(IONSUM(NVAC).GT.5) THEN
       WRITE(6,99) IONSUM(NVAC),NVAC,NEV
  99   FORMAT(' WARNING FIFTH GENERATION CONVERTED FLUORESCENCE HAS AN 
     / EVENT WITH',I3,' IONS.',/,' COMPTON BRANCH NO=',I3,/,' PRIMARY IN
     /TERACTION NUMBER=',I3)
       STOP
      ENDIF
      IONF5(NVAC,NEV)=IONSUM(NVAC)
      DO 1 J=1,IONSUM(NVAC)
      ESTF5(NVAC,J,NEV)=ESTORE(NVAC,J)
      X5(NVAC,J,NEV)=X41(NVAC,L1)+DIST1*DRX0(NVAC,L1)
      Y5(NVAC,J,NEV)=Y41(NVAC,L1)+DIST1*DRY0(NVAC,L1)
      Z5(NVAC,J,NEV)=Z41(NVAC,L1)+DIST1*DRZ0(NVAC,L1)
      X51(NVAC,L1)=X5(NVAC,J,NEV)
      Y51(NVAC,L1)=Y5(NVAC,J,NEV)
      Z51(NVAC,L1)=Z5(NVAC,J,NEV)
      DRXS(NVAC,J,NEV)=DRXE(NVAC,J)
      DRYS(NVAC,J,NEV)=DRYE(NVAC,J)
      DRZS(NVAC,J,NEV)=DRZE(NVAC,J)
    1 CONTINUE
      RETURN
      END

CALCN

Calculates cascade in gas KGAS and molecular component LGAS with initial energy deposit elecen and shell vacancy created at ISHELL

Arguments

Argument Description
IPN
NVAC
KGAS
LGAS
ELECEN
ISHELL
ICON

Pseudo-Code

def CALC(IPN,NVAC,KGAS,LGAS,ELECEN,ISHELL,ICON):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # SCR=""\
    # SCR1=""
    #COMMON/INPT1/
    global NDVEC
    #COMMON/PRIM3/
    global MSUM#(10000)
    global MCOMP#(10000)
    global MRAYL#(10000)
    global MPAIR#(10000)
    global MPHOT#(10000)
    global MVAC#(10000)
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]    
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]    
    #DIMENSION 
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    # INITIAL PHOTON DIRECTION  DRX, DRY AND DRZ
    DRXINIT=DRXE[NVAC][1]
    DRYINIT=DRYE[NVAC][1]
    DRZINIT=DRZE[NVAC][1]
    ISHELLST=ISHELL
    def GOTO100():
        ELEFT=ELECEN
        ISHELL=ISHELLST
        API=numpy.arccos(-1.00)
        TWOPI=2.00*API
        ISECOND=1
        IFIRST=0
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        # PHOTONS
        if(ICON == 1):
            IONSUM[NVAC]=1
            IFLSUM[NVAC]=0
            # STORE INITIAL PHOTOELECTRON ENERGY AND ANGLE
            ESTORE[NVAC][1]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
            ELECN=ESTORE[NVAC][1]
            ELEFT=ELEFT-ESTORE[NVAC][1]
            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
            #    ENTRY FOR COMPTON ELECTRON.....
            if(NVAC <= MCOMP[IPN]):
                #    IF COMPTON EVENT ELECTRON ANGLE FROM COMPTON (ALREADY STORED)
                GOTO4()
            # endif
            # USE PHOTOELCTRON ANGULAR DISTRIBUTION
            APE=AA[ISHELL]
            BPE=BB[ISHELL]
            ANGGEN(APE,BPE,THET)
            if(THET < 0.0):
                THET=THET+API
            R3=DRAND48(RDUM)
            PHI=TWOPI*R3
            # INITIAL PHOTON DIRECTION  DRXINIT, DRYINIT AND DRZINIT
            DRCOS(DRXINIT,DRYINIT,DRZINIT,THET,PHI,DRXX,DRYY,DRZZ)
            DRXE[NVAC][1]=DRXX
            DRYE[NVAC][1]=DRYY
            DRZE[NVAC][1]=DRZZ
            GOTO4()
        # endif
        if(ICON == 2):
            # BETA DECAY
            IONSUM[NVAC]=1
            IFLSUM[NVAC]=0
            ISHELL=0
            ELECN=ELECEN
            ESTORE[NVAC][1]=ELECN
            if(NDVEC == 2):
                # RANDOM EMISSION DIRECTION
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
            elif(NDVEC == 0):
                # RANDOM EMISSION IN THE X-Y PLANE
                THET=API/2.0
            elif(NDVEC == 1):
                # EMISSION ALONG Z AXIS
                THET=0.00
            elif(NDVEC == -1):
                # EMISSION ALONG -Z AXIS
                THET=numpy.arccos(-1.00)
            else:
                print(' ERROR NDVEC NOT CORRECT SUBROUTINE STOPPED:')
                sys.exit()
            # endif
            R3=DRAND48(RDUM)
            PHI=TWOPI*R3
            DRXE[NVAC][1]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][1]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][1]=numpy.cos(THET)
        # endif
        # DOUBLE BETA DECAY
        if(ICON == 3):
            IONSUM[NVAC]=1
            IFLSUM[NVAC]=0
            ISHELL=0
            ELECN=ELECEN
            ESTORE[NVAC][1]=ELECN
            ESECOND=ELECN
            if(NDVEC == 2):
                # RANDOM EMISSION DIRECTION
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
            elif(NDVEC == 0):
                # RANDOM EMISSION IN THE X-Y PLANE
                THET=API/2.0
            elif(NDVEC == 1):
                # EMISSION ALONG Z AXIS
                THET=0.00
            elif(NDVEC == -1):
                # EMISSION ALONG -Z AXIS
                THET=numpy.arccos(-1.00)
            else:
                print(' ERROR NDVEC NOT CORRECT SUBROUTINE STOPPED:')
                sys.exit()
            # endif
            R3=DRAND48(RDUM)
            PHI=TWOPI*R3
            DRXE[NVAC][1]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][1]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][1]=numpy.cos(THET)
        # endif
        #
        THESEC=API-THET
        if(PHI < API):
            PHISEC=API+PHI
        else:
            PHISEC=PHI-API
        # endif
        GOTO4()
        def GOTO66():
            IONSUM[NVAC]=IONSUM[NVAC]+1
            ESTORE[NVAC][IONSUM[NVAC]]=ESECOND
            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THESEC)*numpy.cos(PHISEC)
            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THESEC)*numpy.sin(PHISEC)
            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THESEC)
            ELECN=ESECOND
            ISECOND=2
            ISHELL=0
            IFIRST=0
            # LOOP AROUND CASCADE
            def GOTO4():
                # CHECK FOR ELECTRON SHAKEOFF
                IFIRST=IFIRST+1
                if(IFIRST > 1):
                    ELECN=ESTORE[NVAC][IONSUM[NVAC]]
                SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,ICON,IFIRST,JVAC)
                #  CALCULATE ENERGY OF ELECTRON
                if(JVAC == 0):
                    pass
                else:    
                    if(IFIRST == 1):
                        # INITIAL ELECTRON + SHAKEOFF
                        if(ICON == 1):
                            ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                        if(ICON == 2):
                            ELECN=ELECN-ESHK-ELEV[JVAC,(IZ[KGAS,LGAS]+1)]
                        if(ICON == 2 or ICON == 3):
                            ISHELL=JVAC
                        if(ICON == 3):
                            ELECN=ELECN-ESHK-ELEV[JVAC][(IZ[KGAS][LGAS]+2)]
                        # PRIMARY ELECTRON
                        ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                    # endif
                    if(ICON == 1 and IFIRST != 1):
                        ESTORE[NVAC][IONSUM[NVAC]]=ESTORE[NVAC][IONSUM[NVAC]]-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                    # endif
                    IONSUM[NVAC]=IONSUM[NVAC]+1
                    # MAXIMUM ION CHARGE STATE =28
                    if(IONSUM[NVAC]> 28):
                        #WRITE(6,99) IONSUM[NVAC] 
                        #99  
                        print(' WARNING ION CHARGE LIMITED TO 28+ IN THIS VERSION') 
                        sys.exit()
                    # endif
                    # SHAKE ELECTRON
                    ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                    if(ICON == 1):
                        ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                    if(ICON == 2):
                        ELEFT=ELEFT-ESHK-ELEV[JVAC,(IZ[KGAS,LGAS]+1)]
                    if(ICON == 3):
                        ELEFT=ELEFT-ESHK-ELEV[JVAC][(IZ[KGAS][LGAS]+2)]
                    if(ELEFT < 0.0):
                        GOTO100()
                    # RANDOM EMISSION DIRECTION
                    R3=DRAND48(RDUM)
                    THET=numpy.arccos(1.0-2.0*R3)
                    R3=DRAND48(RDUM)
                    PHI=TWOPI*R3
                    DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                    DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                    DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                    # RETURN IF NO SHAKE OFF WITH BETA DECAY
                def GOTO2():
                    if(ICON == 2 and IONSUM[NVAC] == 1):
                        return
                    # GO INTO SECOND BETA LOOP
                    if(ICON == 3 and IONSUM[NVAC]== 1 and ISECOND == 1):
                        GOTO66()
                    if(ICON == 3 and IFIRST == 1 and JVAC == 0 and ISECOND == 2):
                        return
                    #
                    UPDATE(KGAS,LGAS,ISHELL)
                    #  CHOOSE FLUORESCENCE OR AUGER TRANSITION
                    TSUM=0.0
                    for I in range(1,17):
                        TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                        for J in range(1,17):
                            TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                    # NO MORE TRANSITIONS POSSIBLE
                    if(TSUM == 0.0 and ICON == 3 and ISECOND == 1):
                        GOTO66()
                    if(TSUM == 0.0):
                        return  
                    # NORMALISE TO 1.0
                    for I in range(1,17):
                        RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                        for J in range(1,17):
                            AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                    # CREATE CUMULATIVE SUM ARRAY
                    TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                    for I in range(2,17):
                        TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                    TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                    for I in range(2,17):
                        TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                    for J in range(1,16):
                        for I in range(1,17):
                            TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                    # FIND FLUORESCENCE OR AUGER TRANSITION
                    R1=DRAND48(RDUM)
                    for I in range(1,17):
                        if(R1 < TEMP[I]) :
                            # STORE PHOTON ENERGY AND ANGLE : UPDATE NOCC
                            IFLSUM[NVAC]=IFLSUM[NVAC]+1
                            EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                            if(ICON == 2):
                                EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]+1]-ELEV[I][IZ[KGAS][LGAS]+1]
                            if(ICON == 3):
                                EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]+2]-ELEV[I][IZ[KGAS][LGAS]+2]
                            if(EPHOTON[NVAC][IFLSUM[NVAC]] < 0.0):
                                print(' PHOTON ENERGY=','%.3f' % EPHOTON[NVAC][IFLSUM[NVAC]],'NVAC=',NVAC,' IFLSUM=',IFLSUM[NVAC],' IN CALC')
                            ELEFT=ELEFT-abs(EPHOTON[NVAC][IFLSUM[NVAC]])
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R3=DRAND48(RDUM)
                            PHI=TWOPI*R3
                            # CALC DIRECTION COSINES OF FLUORESCENCE
                            DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                            #   
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                #  SECOND ELECTRON IN DOUBLE BETA DECAY
                                if(ICON == 3 and ISECOND == 1):
                                    GOTO66()
                                return    
                            # endif
                        GOTO2()
                        # endif 
                GOTO2()    
                counter116=1
                while(counter116):
                    counter116=0
                    R2=R1-TEMP[17]
                    for J in range(1,17):
                        if(counter116):
                            break
                        for I in range(1,17):
                            if(R2 < TEMP1[I+((J-1)*17)]):
                                # AUGER OR COSTER KRONIG  
                                # STORE EJECTED ELECTRON AND UPDATE NOCC
                                ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                                if(ICON == 2):
                                    ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]+1]-(ELEV[I][IZ[KGAS][LGAS]+1]+ELEV[I][IZ[KGAS][LGAS]+2])*0.5-(ELEV[J][IZ[KGAS][LGAS]+1]+ELEV[J][IZ[KGAS][LGAS]+2])*0.5
                                if(ICON == 3):
                                    ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]+2]-(ELEV[I][IZ[KGAS][LGAS]+2]+ELEV[I][IZ[KGAS][LGAS]+3])*0.5-(ELEV[J][IZ[KGAS][LGAS]+2]+ELEV[J][IZ[KGAS][LGAS]+3])*0.5
                                if(ETEMP < 0.0):
                                    # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                    counter117=1
                                    while(counter117):
                                        counter117=0
                                        R1=DRAND48(RDUM)
                                        if(R1 < TEMP[17]):
                                            counter117=1
                                    counter116=1
                                    break
                                # endif
                                IONSUM[NVAC]=IONSUM[NVAC]+1
                                if(IONSUM[NVAC]> 28): 
                                    print(' IONSUM LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC],' IN CALC')
                                    sys.exit()
                                # endif
                                ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                                ELEFT=ELEFT-ETEMP
                                if(ELEFT < 0.0):
                                    GOTO100()
                                # RANDOM EMISSION DIRECTION
                                R3=DRAND48(RDUM)
                                THET=numpy.arccos(1.0-2.0*R3)
                                R3=DRAND48(RDUM)
                                PHI=TWOPI*R3
                                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                                NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                                NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                                NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                                # FIND LOWEST VACANCY
                                VACANCY(KGAS,LGAS,ISHELL,ILAST)
                                if(ILAST == 1):
                                    # NO MORE TRANSITIONS POSSIBLE
                                    #  SECOND ELECTRON IN DOUBLE BETA DECAY
                                    if(ICON == 3 and ISECOND == 1):
                                        GOTO66()
                                    return
                                # endif
                                    GOTO4() 
                            # endif
            GOTO4()
        GOTO66()
    GOTO100()
    print(' ERROR IN CASCADE 0') 
    sys.exit() 
    # end
def CALC1(IPN,NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # SCR=""
    #    SCR1=""
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]    
    #DIMENSION 
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS 
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) : 
                    print(' 1ST GEN LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC])  
                    sys.exit()        
                # endif 
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK 
                ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS,LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION DIRECTION 
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][J+1]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND ANGLE : UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-EPHOTON[NVAC][IFLSUM[NVAC]]
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)       
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif
            GOTO2() 
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC]) #34602
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-ETEMP
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()    
                    # endif
        GOTO4()
    GOTO100()            
    print(' ERROR IN CASCADE 1') 
    sys.exit() 
    # end

def CALC2(IPN,NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)

    # SCR=""
    # SCR1=""
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#(17)
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS1/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28] 
    #DIMENSION 
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE INITIAL PHOTELECTRON AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                pass
            else:
                #  ELECTRON + SHAKEOFF
                ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                ESTORE[NVAC][IONSUM[NVAC]]=ELECN
                IONSUM[NVAC]=IONSUM[NVAC]+1
                # MAXIMUM ION CHARGE STATE =28
                if(IONSUM[NVAC]> 28) :
                    print(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC]) 
                    sys.exit()
                # endif
                ESTORE[NVAC][IONSUM[NVAC]]=ESHK
                ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
                if(ELEFT < 0.0):
                    GOTO100()
                # RANDOM EMISSION DIRECTION
                R3=DRAND48(RDUM)
                THET=numpy.arccos(1.0-2.0*R3)
                R4=DRAND48(RDUM)
                PHI=TWOPI*R4
                DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        if(EPHOTON[NVAC][IFLSUM[NVAC]] < 0.0):
                            print(' EPHOTON=','%.3f' % EPHOTON[NVAC][IFLSUM[NVAC]],' NVAC=',NVAC,' IN CALC2')
                        ELEFT=ELEFT-EPHOTON[NVAC][IFLSUM[NVAC]]
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif
            GOTO2() 
            counter116
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1 #34598
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 2ND GEN IONS LIMITED TO 28 IN THIS VERSION IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-ETEMP
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4()
                        # endif 
        GOTO4()
    GOTO100()
    print(' ERROR IN CASCADE 2') 
    sys.exit() 
    # end
def CALC3(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)

    #CHARACTER*6 
    # SCR="",
    # SCR1=""
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#[17]
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS2/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS3/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    TEMP=[0 for x in range(18)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                GOTO2()
            #  ELECTRON + SHAKEOFF
            ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            ESTORE[NVAC][IONSUM[NVAC]]=ELECN
            IONSUM[NVAC]=IONSUM[NVAC]+1
            # MAXIMUM ION CHARGE STATE =28
            if(IONSUM[NVAC]> 28) :
                print(' 3RD GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC]) 
                sys.exit()
            # endif
            ESTORE[NVAC][IONSUM[NVAC]]=ESHK
            ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            if(ELEFT < 0.0):
                GOTO100()
            # RANDOM EMISSION ANGLE
            R3=DRAND48(RDUM)
            THET=numpy.arccos(1.0-2.0*R3)
            R4=DRAND48(RDUM)
            PHI=TWOPI*R4
            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-EPHOTON[NVAC][IFLSUM[NVAC]]
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()  
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                                # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 3RD GEN ION CHARGE LIMITED TO 28  IONSUM=', IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-ETEMP
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4() 
                        # endif
        GOTO4()
    GOTO100()
    print(' ERROR IN CASCADE 3') 
    sys.exit() 
    # end

def CALC4(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # SCR=""\nSCR1=""
    # COMMON/GENCAS/ELEV[17,79],NSDEG(17),AA[17],BB[17],SCR,SCR1
    # COMMON/MIXC/PRSH(6,3,17,17),ESH(6,3,17),AUG(6,3,17,17,17),RAD[6,3,17,17],PRSHBT(6,3,17),IZ[6,3],INIOCC(6,3,17),ISHLMX(6,3),AMZ[6,3]
    # COMMON/UPD/NOCC(6,3,17),AUGR(6,3,17,17,17),RADR(6,3,17,17)
    # COMMON/CALCAS3/IONSUM0(10),IFLSUM0(10),ESTORE0(10,28),EPHOTON0(10,28),DRXE0(10,28),DRYE0(10,28),DRZE0(10,28),DRX0(10,28),DRY0(10,28),DRZ0(10,28)
    # COMMON/CALCAS4/IONSUM(10),IFLSUM(10),ESTORE(10,28),EPHOTON(10,28),DRXE(10,28),DRYE(10,28),DRZE(10,28),DRX(10,28),DRY(10,28),DRZ[10,28]
    # DIMENSION TEMP[17],TEMP1(289)

    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#[17]
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS3/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]
    # COMMON/CALCAS4/
    global IONSUM#(10]
    global IFLSUM#(10]
    global ESTORE#(10,28]
    global EPHOTON#(10,28]
    global DRXE#(10,28]
    global DRYE#(10,28]
    global DRZE#(10,28]
    global DRX#(10,28]
    global DRY#(10,28]
    global DRZ#[10,28]
    #DIMENSION
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        # STORE PHOTOELECTRON ENERGY AND ANGLE
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0(NVAC,L1),DRY0(NVAC,L1),DRZ0(NVAC,L1),THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                GOTO2()
            #  ELECTRON + SHAKEOFF
            ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            ESTORE[NVAC][IONSUM[NVAC]]=ELECN
            IONSUM[NVAC]=IONSUM[NVAC]+1
            # MAXIMUM ION CHARGE STATE =28
            if(IONSUM[NVAC]> 28) :
                print(' 4TH GEN ION CHARGE LIMITED TO 28 IONSUM=',IONSUM[NVAC]) 
                sys.exit()
            # endif
            ESTORE[NVAC][IONSUM[NVAC]]=ESHK
            ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            if(ELEFT < 0.0):
                GOTO100()
            # RANDOM EMISSION ANGLE
            R3=DRAND48(RDUM)
            THET=numpy.arccos(1.0-2.0*R3)
            R4=DRAND48(RDUM)
            PHI=TWOPI*R4
            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-EPHOTON[NVAC][IFLSUM[NVAC]]
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()
            counter116=1
            while(counter116):
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1(I+((J-1)*17))) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 4TH GEN ION CHARGE LIMITED TO 28 IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-ETEMP
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4() 
                        # endif
        GOTO4()
    GOTO100()            
    print(' ERROR IN CASCADE 4') 
    sys.exit() 
    # end

def CALC5(NVAC,KGAS,LGAS,ELECEN,ISHELL,L1):
    # IMPLICIT #real*8(A-H,O-Z)
    # IMPLICIT #integer*8(I-N)
    # SCR=""\nSCR1=""
    #COMMON/GENCAS/
    global ELEV#[17,79]
    global NSDEG#[17]
    global AA#[17]
    global BB#[17]
    global SCR,SCR1
    #COMMON/MIXC/
    global PRSH#(6,3,17,17)
    global ESH#(6,3,17)
    global AUG#(6,3,17,17,17)
    global RAD#[6,3,17,17]
    global PRSHBT#(6,3,17)
    global IZ#[6,3]
    global INIOCC#(6,3,17)
    global ISHLMX#(6,3)
    global AMZ#[6,3]
    #COMMON/UPD/
    global NOCC#(6,3,17)
    global AUGR#(6,3,17,17,17)
    global RADR#(6,3,17,17)
    #COMMON/CALCAS4/
    global IONSUM0#(10)
    global IFLSUM0#(10)
    global ESTORE0#(10,28)
    global EPHOTON0#(10,28)
    global DRXE0#(10,28)
    global DRYE0#(10,28)
    global DRZE0#(10,28)
    global DRX0#(10,28)
    global DRY0#(10,28)
    global DRZ0#(10,28)
    #COMMON/CALCAS5/
    global IONSUM#(10)
    global IFLSUM#(10)
    global ESTORE#(10,28)
    global EPHOTON#(10,28)
    global DRXE#(10,28)
    global DRYE#(10,28)
    global DRZE#(10,28)
    global DRX#(10,28)
    global DRY#(10,28)
    global DRZ#[10,28]    
    #DIMENSION 
    TEMP=[0 for x in range(17)]
    TEMP1=[0 for x in range(289)]
    #
    # CALCULATE CASCADE IN GAS KGAS AND MOLECULAR COMPONENT LGAS
    # WITH INTIAL ENERGY DEPOSIT ELECEN AND SHELL VACANCY CREATED AT ISHELL
    #
    ISTART=IONSUM[NVAC]
    ISTARTF=IFLSUM[NVAC]
    API=numpy.arccos(-1.00)
    TWOPI=2.00*API
    def GOTO100():
        ELEFT=ELECEN
        INIT=1
        # SET STARTING ARRAY NOCC EQUAL TO INIOCC
        for I in range(1,17):
            NOCC[KGAS][LGAS][I]=INIOCC[KGAS][LGAS][I]
        IONSUM[NVAC]=ISTART+1
        IFLSUM[NVAC]=ISTARTF
        ESTORE[NVAC][IONSUM[NVAC]]=ELECEN-ELEV[ISHELL][IZ[KGAS][LGAS]]
        ELECN=ESTORE[NVAC][IONSUM[NVAC]]
        ELEFT=ELEFT-ELECN
        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]-1  
        # USE PHOTOELECTRON ANGULAR DISTRIBUTION
        APE=AA[ISHELL]
        BPE=BB[ISHELL]
        ANGGEN(APE,BPE,THET)
        if(THET < 0.0):
            THET=THET+API
        R3=DRAND48(RDUM)
        PHI=TWOPI*R3
        DRCOS(DRX0[NVAC][L1],DRY0[NVAC][L1],DRZ0[NVAC][L1],THET,PHI,DRXX,DRYY,DRZZ)
        DRXE[NVAC][IONSUM[NVAC]]=DRXX
        DRYE[NVAC][IONSUM[NVAC]]=DRYY
        DRZE[NVAC][IONSUM[NVAC]]=DRZZ
        # LOOP AROUND CASCADE
        def GOTO4():
            # CHECK FOR ELECTRON SHAKEOFF
            IDUM=1
            if(INIT > 1):
                ELECN=ESTORE[NVAC][IONSUM[NVAC]]
            INSUM=IONSUM[NVAC]
            SHAKE(ISHELL,ELECN,KGAS,LGAS,ESHK,IDUM,INSUM,JVAC)
            #  CALCULATE ENERGY OF ELECTRON
            if(JVAC == 0):
                GOTO2()
            #  ELECTRON + SHAKEOFF
            ELECN=ELECN-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            ESTORE[NVAC][IONSUM[NVAC]]=ELECN
            IONSUM[NVAC]=IONSUM[NVAC]+1
            # MAXIMUM ION CHARGE STATE =28
            if(IONSUM[NVAC]> 28) :
                print(' 5TH GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC])
                sys.exit() 
            # endif
            ESTORE[NVAC][IONSUM[NVAC]]=ESHK
            ELEFT=ELEFT-ESHK-ELEV[JVAC][IZ[KGAS][LGAS]]
            if(ELEFT < 0.0):
                GOTO100()
            # RANDOM EMISSION ANGLE
            R3=DRAND48(RDUM)
            THET=numpy.arccos(1.0-2.0*R3)
            R4=DRAND48(RDUM)
            PHI=TWOPI*R4
            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
            def GOTO2():
                UPDATE(KGAS,LGAS,ISHELL)
                INIT=2
                # CHOOSE FLUORESCENCE OR AUGER TRANSITION
                TSUM=0.0
                for I in range(1,17):
                    TSUM=TSUM+RADR[KGAS][LGAS][ISHELL][I]
                    for J in range(1,17):
                        TSUM=TSUM+AUGR[KGAS][LGAS][ISHELL][I][J]
                # NO MORE TRANSITIONS POSSIBLE
                if(TSUM == 0.0):
                    return  
                # NORMALISE TO 1.0
                for I in range(1,17):
                    RADR[KGAS][LGAS][ISHELL][I]=RADR[KGAS][LGAS][ISHELL][I]/TSUM
                    for J in range(1,17):
                        AUGR[KGAS][LGAS][ISHELL][I][J]=AUGR[KGAS][LGAS][ISHELL][I][J]/TSUM
                # CREATE CUMULATIVE SUM ARRAY
                TEMP[1]=RADR[KGAS][LGAS][ISHELL][1]
                for I in range(2,17):
                    TEMP[I]=RADR[KGAS][LGAS][ISHELL][I]+TEMP[I-1]
                TEMP1[1]=AUGR[KGAS][LGAS][ISHELL][1][1]
                for I in range(2,17):
                    TEMP1[I]=AUGR[KGAS][LGAS][ISHELL][I][1]+TEMP1[I-1]
                for J in range(1,16):
                    for I in range(1,17):
                        TEMP1[I+(J*17)]=AUGR[KGAS][LGAS][ISHELL][I][(J+1)]+TEMP1[I+(J*17)-1]
                # FIND FLUORESCENCE OR AUGER TRANSITION
                R1=DRAND48(RDUM)
                for I in range(1,17):
                    if(R1 < TEMP[I]) :
                        # STORE PHOTON ENERGY AND UPDATE NOCC
                        IFLSUM[NVAC]=IFLSUM[NVAC]+1
                        EPHOTON[NVAC][IFLSUM[NVAC]]=ELEV[ISHELL][IZ[KGAS][LGAS]]-ELEV[I][IZ[KGAS][LGAS]]
                        ELEFT=ELEFT-EPHOTON[NVAC][IFLSUM[NVAC]]
                        if(ELEFT < 0.0):
                            GOTO100()
                        # RANDOM EMISSION DIRECTION
                        R3=DRAND48(RDUM)
                        THET=numpy.arccos(1.0-2.0*R3)
                        R4=DRAND48(RDUM)
                        PHI=TWOPI*R4
                        DRX[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                        DRY[NVAC][IFLSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                        DRZ[NVAC][IFLSUM[NVAC]]=numpy.cos(THET)
                        NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                        NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                        # FIND LOWEST VACANCY
                        VACANCY(KGAS,LGAS,ISHELL,ILAST)
                        if(ILAST == 1):
                            # NO MORE TRANSITIONS POSSIBLE
                            return    
                        # endif
                        GOTO2()
                    # endif 
            GOTO2()
            counter116=1
            while(counter116):
                counter116=0
                R2=R1-TEMP[17]
                for J in range(1,17):
                    if(counter116):
                        break
                    for I in range(1,17):
                        if(R2 < TEMP1[I+((J-1)*17)]) :
                            # AUGER OR COSTER KRONIG  
                            # STORE EJECTED ELECTRON AND UPDATE NOCC
                            ETEMP=ELEV[ISHELL][IZ[KGAS][LGAS]]-(ELEV[I][IZ[KGAS][LGAS]]+ELEV[I][IZ[KGAS][LGAS]+1])*0.5-(ELEV[J][IZ[KGAS][LGAS]]+ELEV[J][IZ[KGAS][LGAS]+1])*0.5
                            if(ETEMP < 0.0):
                                # DO NOT ALLOW NEGATIVE ENERGY TRANSITIONS
                                counter117=1
                                while(counter117):
                                    counter117=0
                                    R1=DRAND48(RDUM)
                                    if(R1 < TEMP[17]):
                                        counter117=1
                                counter116=1
                                break
                            # endif
                            IONSUM[NVAC]=IONSUM[NVAC]+1
                            if(IONSUM[NVAC]> 28) :
                                print(' 5TH GEN ION CHARGE LIMITED TO 28  IONSUM=',IONSUM[NVAC])
                                sys.exit()
                            # endif
                            ESTORE[NVAC][IONSUM[NVAC]]=ETEMP
                            ELEFT=ELEFT-ETEMP
                            if(ELEFT < 0.0):
                                GOTO100()
                            # RANDOM EMISSION DIRECTION
                            R3=DRAND48(RDUM)
                            THET=numpy.arccos(1.0-2.0*R3)
                            R4=DRAND48(RDUM)
                            PHI=TWOPI*R4
                            DRXE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.cos(PHI)
                            DRYE[NVAC][IONSUM[NVAC]]=numpy.sin(THET)*numpy.sin(PHI)
                            DRZE[NVAC][IONSUM[NVAC]]=numpy.cos(THET)
                            NOCC[KGAS][LGAS][ISHELL]=NOCC[KGAS][LGAS][ISHELL]+1
                            NOCC[KGAS][LGAS][I]=NOCC[KGAS][LGAS][I]-1
                            NOCC[KGAS][LGAS][J]=NOCC[KGAS][LGAS][J]-1
                            # FIND LOWEST VACANCY
                            VACANCY(KGAS,LGAS,ISHELL,ILAST)
                            if(ILAST == 1):
                                # NO MORE TRANSITIONS POSSIBLE
                                return
                            # endif
                            GOTO4() 
                        # endif
        GOTO4()
    GOTO100()    
    print(' ERROR IN CASCADE 5') 
    sys.exit() 
  # end
```## GASMIXC()

### Arguments

| Argument | Description |
|----------|-------------|
| NGS      |             |
| PRSH     |             |
| PRSHBT   |             |
| ESH      |             |
| AUG      |             |
| RAD      |             |
| XPE      |             |
| YPE      |             |
| XCP      |             |
| YRY      |             |
| YCP      |             |
| YPP      |             |
| FFR      |             |
| FFC      |             |
| IZ       |             |
| AMZ      |             |
| INIOCC   |             |

### Pseudo-Code

```python
import numpy
import conf
from Cgasn import *
def GASMIXC(NGS,PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # DIMENSION 
    INIOCC=numpy.zeros((3+1,17+1))
    PRSH=numpy.zeros((3+1,17+1,17+1))
    ESH=numpy.zeros((3+1,17+1))
    PRSHBT=numpy.zeros((3+1,17+1))
    AUG=numpy.zeros((3+1,17+1,17+1,17+1))
    RAD=numpy.zeros((3+1,17+1,17+1))
    XPE=numpy.zeros((3+1,17+1,60+1))
    YPE=numpy.zeros((3+1,17+1,60+1))
    XCP=numpy.zeros((3+1,54+1))
    YRY=numpy.zeros((3+1,54+1))
    YCP=numpy.zeros((3+1,54+1))
    YPP=numpy.zeros((3+1,54+1))
    FFR=numpy.zeros((3+1,45+1))
    FFC=numpy.zeros((3+1,45+1))
    IZ=numpy.zeros((3+1))
    AMZ=numpy.zeros((3+1))
    #
    # ZERO ARRAYS 
    for K in range(1,3+1):
        IZ[K]=0
        AMZ[K]=0.0
        for M in range(1,54+1):
            XCP[K][M]=0.0
            YRY[K][M]=0.0
            YCP[K][M]=0.0
            YPP[K][M]=0.0
        for N in range(1,45+1):
            FFR[K][N]=0.0
            FFC[K][N]=0.0
        for J in range(1,17+1):
            PRSHBT[K][J]=0.0
            ESH[K][J]=0.0
            INIOCC[K][J]=0
            for KK in range(1,60+1):
                XPE[K][J][KK]=0.0
                YPE[K][J][KK]=0.0
            for I in range(1,17+1):
                RAD[K][J][I]=0.0
                PRSH[K][J][I]=0.0
                for L in range(1,17+1):
                    AUG[K][J][I][L]=0.0
    #
    #      GO TO (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,    61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80) NGS
    if(NGS==1):
        CGAS1(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==2):
        CGAS2(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==3):
        CGAS3(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==4):
        CGAS4(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==5):
        CGAS5(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==6):
        CGAS6(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==7):
        CGAS7(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==8):
        CGAS8(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==9):
        CGAS9(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==10):
        CGAS10(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==11):
        CGAS11(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==12):
        CGAS12(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==13):
        CGAS13(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==14):
        CGAS14(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==15):
        CGAS15(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==16):
        CGAS16(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==17):
        CGAS17(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==18):
        CGAS18(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==19):
        CGAS19(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==20):
        CGAS20(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==21):
        CGAS21(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==22):
        CGAS22(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==23):
        CGAS23(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==24):
        CGAS24(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==25):
        CGAS25(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==26):
        CGAS26(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==27):
        CGAS27(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==28):
        CGAS28(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==29):
        CGAS29(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==30):
        CGAS30(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==31):
        CGAS31(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==32):
        CGAS32(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==33):
        CGAS33(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==34):
        CGAS34(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==35):
        CGAS35(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==36):
        CGAS36(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==37):
        CGAS37(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==38):
        CGAS38(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==39):
        CGAS39(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==40):
        CGAS40(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==41):
        CGAS41(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==42):
        CGAS42(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==43):
        CGAS43(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==44):
        CGAS44(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==45):
        CGAS45(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==46):
        CGAS46(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==47):
        CGAS47(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==48):
        CGAS48(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==49):
        CGAS49(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==50):
        CGAS50(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==51):
        CGAS51(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==52):
        CGAS52(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==53):
        CGAS53(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==54):
        CGAS54(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==55):
        CGAS55(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==56):
        CGAS56(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==57):
        CGAS57(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==58):
        CGAS58(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==59):
        CGAS59(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==60):
        CGAS60(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==61):
        CGAS61(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==62):
        CGAS62(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==63):
        CGAS63(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==64):
        CGAS64(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==65):
        CGAS65(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==66):
        CGAS66(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==67):
        CGAS67(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==68):
        CGAS68(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==69):
        CGAS69(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==70):
        CGAS70(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==71):
        CGAS71(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==72):
        CGAS72(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==73):
        CGAS73(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==74):
        CGAS74(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==75):
        CGAS75(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==76):
        CGAS76(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==77):
        CGAS77(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==78):
        CGAS78(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==79):
        CGAS79(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    if(NGS==80):
        CGAS80(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFR,FFC,IZ,AMZ,INIOCC)
        return   
    # end   
```## CGASN
Cascade calculation function for each gas.

### Arguments

| Argument | Description |
|----------|-------------|
| PRSH     |             |
| PRSHBT   |             |
| ESH      |             |
| AUG      |             |
| RAD      |             |
| XPE      |             |
| YPE      |             |
| XCP      |             |
| YRY      |             |
| YCP      |             |
| YPP      |             |
| FFAR     |             |
| FFAC     |             |
| IZ       |             |
| AMZ      |             |
| INIOCC   |             |

### Pseudo-Code

```python
import math
import numpy
def CGAS1(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #DIMENSION 
    PRSH=[[[0 for x in range(3+1)]for y in range(17+1)] for z in range(17+1)]
    PRSHBT=[[0 for x in range(3+1)] for y in range(17+1)]
    ESH=[[0 for x in range(3+1)] for y in range(17+1)]
    AUG=[[[[0 for x in range(3+1)] for y in range(17+1)] for z in range(17+1)] for a in range(17+1)]
    RAD=[[[0 for x in range(3+1)]for y in range(17+1)] for z in range(17+1)]
    XPE=[[[0 for x in range(3+1)]for y in range(17+1)] for z in range(60+1)]
    YPE=[[[0 for x in range(3+1)]for y in range(17+1)] for z in range(60+1)]
    XCP=[[0 for x in range(3+1)] for y in range(54+1)]
    YRY=[[0 for x in range(3+1)] for y in range(54+1)]
    YCP=[[0 for x in range(3+1)] for y in range(54+1)]
    YPP=[[0 for x in range(3+1)] for y in range(54+1)]
    FFAR=[[0 for x in range(3+1)] for y in range(45+1)]
    FFAC=[[0 for x in range(3+1)] for y in range(45+1)]
    IZ=[0 for x in range(3+1)]
    AMZ=[0 for x in range(3+1)]
    INIOCC=[[0 for x in range(3+1)] for y in range(17+1)]
    #DIMENSION 
    INIOC=numpy.zeros((17+1))
    PRBSH=numpy.zeros((17+1,17+1))
    ES=numpy.zeros((17+1))
    R=numpy.zeros((17+1,17+1))
    A=[numpy.zeros((17+1,17+1)) for z in range(17+1)]
    PRBSHBT=numpy.zeros((17+1))
    #DIMENSION 
    INIOCF=numpy.zeros((17+1))
    PRBSHF=numpy.zeros((17+1,17+1))
    ESF=numpy.zeros((17+1))
    RF=numpy.zeros((17+1,17+1))
    AF=[numpy.zeros((17+1,17+1)) for z in range(17+1)]
    PRBSHBTF=numpy.zeros((17+1)) 
    #DIMENSION 
    XPEK=[0 for x in range(49+1)]
    YPEK=[0 for x in range(49+1)]
    XPEL1=[0 for x in range(54+1)]
    YPEL1=[0 for x in range(54+1)]
    XPEL2=[0 for x in range(54+1)]
    YPEL2=[0 for x in range(54+1)]
    XCOMC=[0 for x in range(54+1)]
    YRAYC=[0 for x in range(54+1)]
    YCOMC=[0 for x in range(54+1)]
    YPAPC=[0 for x in range(54+1)]
    FFRC=[0 for x in range(45+1)]
    FFCC=[0 for x in range(45+1)]
    #DIMENSION 
    XPEKF=[0 for x in range(45+1)]
    YPEKF=[0 for x in range(45+1)]
    XPEL1F=[0 for x in range(53+1)]
    YPEL1F=[0 for x in range(53+1)]
    XPEL2F=[0 for x in range(55+1)]
    YPEL2F=[0 for x in range(55+1)]
    XPEL3F=[0 for x in range(55+1)]
    YPEL3F=[0 for x in range(55+1)]
    XCOMF=[0 for x in range(54+1)]
    YRAYF=[0 for x in range(54+1)]
    YCOMF=[0 for x in range(54+1)]
    YPAPF=[0 for x in range(54+1)]
    FFRF=[0 for x in range(45+1)]
    FFCF=[0 for x in range(45+1)]

    # 
    # CF4 FOR CASCADE CALCULATIONS
    #
    #  CARBON  DATA
    # LEVEL OCCUPANCY FOR GROUND STATE
    INIOC=[2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    ES=[10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    # SHAKE OFF :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    PRBSH=[0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0]
    # SHAKE OFF : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    PRBSHBT=[2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    A[1][2][2]=[0.858]
    A[1][2][3]=[0.824]
    A[1][3][3]=[0.378]
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    R[1][2]=[1.50E-14]
    R[1][3]=[3.45E-5]
    R[1][4]=[6.88E-5]
    # L1 SHELL
    R[2][3]=[1.20E-7]
    R[2][4]=[2.41E-7]
    # L2 SHELL
    R[3][4]=[1.55E-21]
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC 5(1973)50
    # K  SHELL 1S 1/2
    YPEK=[9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8]
    XPEK=[285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L1 SHELL 2S 1/2
    YPEL1=[1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9]
    XPEL1=[18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]          
    # L2 SHELL 2P 1/2
    YPEL2=[1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12]
    XPEL2=[6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL J.PHYS.CHEM.REF.4(1975)471
    # HUBBEL NIST XCOM WEB SITE
    # STORM AND ISRAEL NUCL.TABLES A7(1970)565
    XCOMC=[100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.022E6,1.25E6,1.5E6,2.0E6,2.044E6,3.0E6,4.0E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    YRAYC=[23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,.4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504E-3,4.792E-3,3.070E-3,2.133E-3,1.200E-3,7.682E-4,7.355E-4,4.917E-4,3.415E-4,1.921E-4,1.839E-4,8.539E-5,4.803E-5,3.074E-5,2.135E-5,1.568E-5,1.201E-5,9.488E-6,7.685E-6,3.415E-6,1.921E-6,8.537E-7,4.802E-7,3.073E-7,2.134E-7,1.200E-7,7.682E-8]  
    YCOMC=[3.044E-3,6.469E-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,.7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,.08805,.07586,.05983,.04966]  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    YPAPC=[34*1E-20,2.870E-4,1.594E-3,6.356E-3,6.852E-3,.01844,  .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401]   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    FFRC=[1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198E-4,3.06E-4,6.295E-5, 2.027E-5,5.398E-7,8.455E-8,3.52E-8,5.993E-12,2.767E-21,2.80E-30]
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    FFCC=[1.7E-21,6.317E-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=12.0107
    # 
    # ATOMIC FLOURINE FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    INIOCF=[2,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0]
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    ESF=[14.0,2.5,2.5,2.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    # SHAKE OFF :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    PRBSHF=[0.08,2.00,6.00,8.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.20,1.20,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.40,1.00,2.50,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.40,1.20,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0]
    # SHAKE OFF : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    PRBSHBTF=[1.29,5.5,7.0,11.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    AF[1][2][2]=[0.838]
    AF[1][2][3]=[0.816]
    AF[1][3][3]=[0.377]
    AF[1][2][4]=[0.216]
    AF[1][3][4]=[0.104]
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    RF[1][2]=[1.17E-12]
    RF[1][3]=[5.88E-4]
    RF[1][4]=[1.17E-3]
    # L1 SHELL
    RF[2][3]=[1.27E-6]
    RF[2][4]=[2.57E-6]
    # L2 SHELL
    RF[3][4]=[1.69E-18]
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC 5(1973)50
    # K  SHELL 1S 1/2
    YPEKF=[4.3E5,3.20E5,2.53E5,2.02E5,1.68E5,5.89E4,2.70E4,8.58E3,3.72E3,1.92E3,1.11E3,462.,232.,65.2,26.1,7.07,2.77,1.34,.734,.285,.137,.0364,.0144,.00409,.00176,9.47E-4,5.90E-4,2.98E-4,1.85E-4,8.73E-5,5.48E-5,3.06E-5,2.09E-5,1.59E-5,1.28E-5,9.13E-6,7.11E-6,5.99E-6,3.36E-6,2.19E-6,1.63E-6,1.30E-6,1.08E-6,8.03E-7,6.41E-7]
    XPEKF=[685.4,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L1 SHELL 2S 1/2
    YPEL1F=[3.70E6,6.60E5,4.17E5,3.46E5,2.56E5,1.26E5,6.41E4,3.46E4,1.97E4,1.44E4,1.16E4,9.24E3,7.76E3,2.80E3,1.32E3,438.,194.,102.,59.7,25.2,12.8,3.64,1.47,.402,.158,.0765,.0421,.0164,.00789,.00210,8.35E-4,2.37E-4,1.02E-4,5.48E-5,3.41E-5,1.72E-5,1.07E-5,5.06E-6,3.18E-6,1.77E-6,1.21E-6,9.20E-7,7.39E-7,5.29E-7,4.12E-7,2.64E-7,1.95E-7,1.27E-7,9.45E-8,7.51E-8,6.24E-8,4.66E-8,3.71E-8]
    XPEL1F=[34.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]          
    # L2 SHELL 2P 1/2
    YPEL2F=[1.0E7,1.00E7,3.2E6,6.93E5,3.73E5,2.65E5,1.59E5,4.99E4,1.78E4,7.22E3,3.19E3,2.03E3,1.50E3,1.09E3,860.,212.,75.7,17.0,5.71,2.40,1.17,.375,.154,.0300,.00931,.00177,5.46E-4,2.19E-4,1.05E-4,3.29E-5,1.36E-5,2.82E-6,9.63E-7,2.29E-7,8.82E-8,4.40E-8,2.58E-8,1.18E-8,6.74E-9,2.75E-9,1.73E-9,9.63E-10,6.60E-10,5.00E-10,4.02E-10,2.88E-10,2.24E-10,1.44E-10,1.06E-10,6.91E-11,5.14E-11,4.08E-11,3.39E-11,2.53E-11,2.02E-11]
    XPEL2F=[16.0,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L3 SHELL 2P 3/2
    YPEL3F=[2.00E7,2.0E7,6.4E6,1.39E6,7.43E5,5.30E5,3.18E5,9.98E4,3.57E4,1.43E4,6.32E3,4.03E3,2.97E3,2.16E3,1.70E3,419.,149.,33.5,11.2,4.71,2.30,.731,.298,.0578,.0178,.00335,.00102,4.07E-4,1.92E-4,5.95E-5,2.42E-5,4.90E-6,1.65E-6,3.91E-7,1.53E-7,7.86E-8,4.75E-8,2.33E-8,1.43E-8,6.69E-9,4.20E-9,2.34E-9,1.60E-9,1.22E-9,9.77E-10,7.00E-10,5.44E-10,3.50E-10,2.57E-10,1.68E-10,1.25E-10,9.93E-11,8.25E-11,6.16E-11,4.91E-11]
    XPEL3F=[16.0,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    XCOMF=[100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.022E6,1.25E6,1.5E6,2.0E6,2.044E6,3.0E6,4.0E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    YRAYF=[53.87,53.82,53.77,53.62,53.42,53.16,52.85,52.07,51.11,48.01,44.27,36.25,29.02,23.25,18.86,13.07,9.647,5.470,3.611,1.921,      1.181,.7966,.5731,.3370,.2212,.1013,.05764,.02585,.01459,.009349, 6.498E-3,3.658E-3,2.342E-3,2.242E-3,1.499E-3,1.041E-3,5.858E-4,5.609E-4,2.604E-4,1.465E-4,9.374E-5,6.510E-5,4.783E-5,3.662E-5,2.893E-5,2.344E-5,1.046E-5,5.883E-6,2.614E-6,1.471E-6,9.412E-7,6.535E-7,3.677E-7,2.353E-7]  
    YCOMF=[1.935E-3,4.736E-3,8.533E-3,.01925,.03410,.05298,.07579,.1325,.2029,.4270,                  .6987,1.293,1.861,2.354,2.762,3.353,3.735,4.257,4.524,4.760,4.808,4.775,4.706,4.533,4.354,3.955,3.637,3.172,2.846,2.600,2.406,2.115,1.902,1.882,1.701,1.546,1.319,1.303,1.038,.8658,.7477,.6609,.5940,.5406,.4969,.4604,.3408,.2735,.1991,.1582,    .1321,.1138,.08974,.07449]    
    # TOTAL PAIR PROEUCTION NUCLEAR + ELECTRON
    YPAPF=[34*1E-20,6.506E-4,3.60E-3,.01434,.01546,.04137,.06799,.09219,.1141,.1339,.1518,.1680,.1829,.2403,.2830,.3451,.3893,     .4199,.4463,.4852,.5119]   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    FFRF=[1.0,.99973,.99910,.9981,.9967,.9948,.9926,.9868,.9794,.9604,.9362,.9223,.8833,.8398,.7931,.7451,.6497,.5611,.4172,.3189,.2562,.2172,.1926,.1762,.1646,.1430,.1243,.08978,.06246,.04616,.02986,.02354,.01091,.006078,.003611,.002744,.001011,2.268E-4,7.432E-5,2.042E-6, 3.244E-7,1.362E-7,2.758E-11,1.59E-20,1.63E-29]
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    FFCF=[1.1E-21,2.22E-4,.00111,.002489,.004411,.006878,.009867,.01739,.02689,.05122,.08166,.09867,.1453,.1957,.2474,.2990,.3966,.4830,.6169,.7043,.7591,.7946,.8196,.8391,.8559,.8916,.9209,.9609,.9816,.9914,.99590,.99800,.99946,.99983,.99994,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
    # FLOURINE ATOMIC NUMBER
    IZ[2]=9
    AMZ[2]=75.9936
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    for I in range(1,17+1):
        PRSHBT[1][I]=PRBSHBT[I]/100.0
        PRSHBT[2][I]=PRBSHBTF[I]/100.0
        for J in range(1,17+1):
            PRBSH[I][J]=PRBSH[I][J]/100.0
            PRBSHF[I][J]=PRBSHF[I][J]/100.0
    # SWAP INDICES AND DO CHECK SUM
    for I in range(1,17+1):
        PRSUM=0.0
        PRSUMF=0.0
        for J in range(1,17+1):
            PRSH[1][I][J]=PRBSH[J][I]
            PRSH[2][I][J]=PRBSHF[J][I]
            #     PRSUMF=PRSUMF+PRSH[2][I][J]
            #     PRSUM=PRSUM+PRSH[1][I][J]
            #     WRITE(6,888) I,PRSUM,PRSUMF
            # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    for I in range(1,17+1):
        ESH[1][I]=ES[I]
        ESH[2][I]=ESF[I]
        INIOCC[1][I]=INIOC[I]
        INIOCC[2][I]=INIOCF[I]
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    for I in range(1,4+1):
        for J in range(1,17+1):
            for K in range(1,17 +1):
                AUG[1][I][J][K]=A[I][J][K]*0.0272105
                AUG[2][I][J][K]=AF[I][J][K]*0.0272105  
    for I in range(5,17+1):
        for J in range(1,17+1):
            for K in range(1,17+1):
                AUG[1][I][J][K]=A[I][J][K]*0.00272105
                AUG[2][I][J][K]=AF[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    for I in range(5,17+1):
        for J in range(6,17+1):
            R[I][J]=R[I][J]*6.582119E-16
            RF[I][J]=RF[I][J]*6.582119E-16
    # LOAD OUTPUT ARRAY
    # LOAD OUTPUT ARRAY
    for I in range(1,17+1):
        for J in range(1,17+1):
            RAD[1][I][J]=R[I][J]
            RAD[2][I][J]=RF[I][J]
    #  
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC DATA
    for J in range(1,49+1):
        XPE[1][1][J]=math.log(XPEK[J])
        YPE[1][1][J]=math.log(YPEK[J]*1E-24)
    for J in range(1,54+1):
        XPE[1][2][J]=math.log(XPEL1[J])
        YPE[1][2][J]=math.log(YPEL1[J]*1E-24)
    for J in range(1,54 +1):
        XPE[1][3][J]=math.log(XPEL2[J])
        YPE[1][3][J]=math.log(YPEL2[J]*1E-24)
    # LOAD FLUORINE PHOTOELECTRIC DATA
    # SCALE BY 4 SINCE 4 ATOMS PER CARBON
    for J in range(1,45+1):
        XPE[2][1][J]=math.log(XPEKF[J])
        YPE[2][1][J]=math.log(YPEKF[J]*4.0*1E-24)
    for J in range(1,53+1):
        XPE[2][2][J]=math.log(XPEL1F[J])
        YPE[2][2][J]=math.log(YPEL1F[J]*4.0*1E-24)
    for J in range(1,55 +1):
        XPE[2][3][J]=math.log(XPEL2F[J])
        YPE[2][3][J]=math.log(YPEL2F[J]*4.0*1E-24)
    for J in range(1,55 +1):
        XPE[2][4][J]=math.log(XPEL3F[J])
        YPE[2][4][J]=math.log(YPEL3F[J]*4.0*1E-24)
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    for J in range(1,54+1):
        XCP[1][J]=math.log(XCOMC[J])
        XCP[2][J]=math.log(XCOMF[J])
        YRY[1][J]=math.log(YRAYC[J]*1E-24)
        YRY[2][J]=math.log(YRAYF[J]*4.0*1E-24)
        YCP[1][J]=math.log(YCOMC[J]*1E-24)
        YCP[2][J]=math.log(YCOMF[J]*4.0*1E-24)
        YPP[1][J]=math.log(YPAPC[J]*1E-24)
        YPP[2][J]=math.log(YPAPF[J]*4.0*1E-24)
    # LOAD RAYLEIGH AND COMPTON FORM FACTOR
    for J in range(1,45+1):
        FFAR[1][J]=FFRC[J]
        FFAR[2][J]=FFRF[J]
        FFAC[1][J]=FFCC[J]
        FFAC[2][J]=FFCF[J]
    return
    # end
def CGAS2(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    #DIMENSION 
    PRSH=numpy.zeros((3+1,17+1,17+1))
    PRSHBT=numpy.zeros((3+1,17+1))#[[0 for x in range(3+1)]for y in range(17+1)]
    ESH=numpy.zeros((3+1,17+1))
    AUG=numpy.zeros((3+1,17+1,17+1,17+1))
    RAD=numpy.zeros((3+1,17+1,17+1))
    XPE=numpy.zeros((3+1,17+1,60+1))
    YPE=numpy.zeros((3+1,17+1,60+1))
    XCP=numpy.zeros((3+1,54+1))
    YRY=numpy.zeros((3+1,54+1))
    YCP=numpy.zeros((3+1,54+1))
    YPP=numpy.zeros((3+1,54+1))
    FFAR=numpy.zeros((3+1,45+1))
    FFAC=numpy.zeros((3+1,45+1))
    IZ=numpy.zeros((3+1))
    AMZ=numpy.zeros((3+1))
    INIOCC=numpy.zeros((3+1,17+1))
    #DIMENSION 
    INIOC=numpy.zeros((17+1))
    PRBSH=numpy.zeros((17+1,17+1))
    ES=numpy.zeros((17+1))
    R=numpy.zeros((17+1,17+1))
    A=numpy.zeros((17+1,17+1,17+1))
    PRBSHBT=numpy.zeros((17+1))
    #DIMENSION 
    XPEK=numpy.zeros((38+1))
    YPEK=numpy.zeros((38+1))
    XPEL1=numpy.zeros((54+1))
    YPEL1=numpy.zeros((54+1))
    XPEL2=numpy.zeros((56+1))
    YPEL2=numpy.zeros((56+1))
    XPEL3=numpy.zeros((56+1))
    YPEL3=numpy.zeros((56+1))
    XPEM1=numpy.zeros((59+1))
    YPEM1=numpy.zeros((59+1))
    XPEM2=numpy.zeros((60+1))
    YPEM2=numpy.zeros((60+1))
    XPEM3=numpy.zeros((60+1))
    YPEM3=numpy.zeros((60+1))
    XENE=numpy.zeros((54+1))
    YRAY=numpy.zeros((54+1))
    YCOM=numpy.zeros((54+1))
    YPAP=numpy.zeros((54+1))
    FFR=numpy.zeros((45+1))
    FFC=numpy.zeros((45+1))
    # 
    # ARGON FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    INIOC=[0]+[2,2,2,4,2,2,4,0,0,0,0,0,0,0,0,0,0]
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    ES=[0]+[22.5,9.10,9.90,9.90,2.20,1.60,1.60,0.00,0.00,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    # SHAKE OFF :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    PRBSH=[.001,0.30,0.54,1.07,2.47,5.86,11.45,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.017,.056,0.11,1.66,4.18,8.33,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.049,.043,0.17,1.73,4.41,8.71,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.050,.080,0.13,1.73,4.37,8.72,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.16,1.37,2.82,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.25,0.57,2.33,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.25,1.12,1.74,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,*170*[0.0]]
    PRBSH=numpy.reshape(PRBSH,(17,17))
    PRBSH=numpy.r_[[numpy.zeros(PRBSH.shape[1])],PRBSH]
    PRBSH=numpy.c_[numpy.zeros(PRBSH.shape[0]),PRBSH]
    # SHAKE OFF : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    PRBSHBT=[0]+[.264,.914,.703,1.41,4.24,5.92,11.84,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00]
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K L M AND N SHELLS 
    #  CHEN+CRASEMANN,ANDT 24(1979)13,  FOR K AND L SHELLS 
    #  MCGUIRE,SANDIA REPORTS,          FOR M AND N SHELLS 
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    A[1][2][2]=1.456
    A[1][2][3]=1.604
    A[1][2][4]=3.072
    A[1][2][5]=0.324
    A[1][2][6]=0.151
    A[1][2][7]=0.288
    A[1][3][3]=0.294
    A[1][3][4]=7.277
    A[1][3][5]=0.156
    A[1][3][6]=0.053
    A[1][3][7]=0.607
    A[1][4][4]=4.132
    A[1][4][5]=0.299
    A[1][4][6]=0.607
    A[1][4][7]=0.697
    A[1][5][5]=0.018
    A[1][5][6]=0.015
    A[1][5][7]=0.028
    A[1][6][7]=0.202
    A[1][7][7]=0.030
    # L1 SHELL RATE (MILLIATOMIC UNITS)
    A[2][3][5]=17.780
    A[2][3][6]=7.404
    A[2][3][7]=7.482
    A[2][4][5]=34.607
    A[2][4][6]=7.308
    A[2][4][7]=20.792
    A[2][5][5]=0.767
    A[2][5][6]=1.203
    A[2][5][7]=2.380
    A[2][6][7]=0.007
    A[2][7][7]=0.068
    # L2 AUGER SHELL RATE (MILLIATOMIC UNITS)
    # L3 AUGER SHELL RATE (MILLIATOMIC UNITS)
    A[4][5][5]=0.062
    A[4][5][6]=0.041
    A[4][5][7]=1.293
    A[4][6][7]=1.719
    A[4][7][7]=2.548
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    R[1][2]=2.34E-9
    R[1][3]=.02226
    R[1][4]=.044
    R[1][5]=3.36E-10
    R[1][6]=1.822E-3
    R[1][7]=3.60E-3
    # L1 SHELL
    R[2][3]=8.75E-6
    R[2][4]=1.97E-5
    R[2][5]=7.22E-14
    R[2][6]=7.18E-5
    R[2][7]=1.378E-4
    # L2 SHELL
    R[3][4]=7.88E-14
    R[3][5]=2.43E-5
    R[3][6]=1.21E-14
    R[3][7]=1.05E-8
    # L3 SHELL
    R[4][5]=2.48E-5
    R[4][6]=5.29E-9
    R[4][7]=5.19E-9
    # RADIATIVE TRANSITIONS MANSON AND KENNEDY ANDT 14(1974)111
    # DIPOLE ONLY NON-RELATIVISTIC CALC.  UNITS   1/SEC
    # M1 SHELL
    R[5][6]=2.0708E9
    R[5][7]=4.1416E9
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : KENNEDY AND MANSON     PHYS REV A5(1972)227
    #                : SCOFIELD               UCRL-51326
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    #                : CHAN ET AL             PHYS REV A46(1992)149
    #                : MARR AND WEST          ANDT 18(1976)497
    #                : VIEGELE                ATOMIC 5(1973)50
    # KSHELL 1S 1/2
    YPEK=[0]+[7.53E4,4.51E4,2.53E4,1.55E4,7.06E3,3.77E3,1.17E3,498.,146.,60.2,30.0,17.0,6.85,3.38,.938,.382,.111,.0485,.0264,.0165,.00839,.00522,.00244,.00152,8.31E-4,5.64E-4,4.24E-4,3.39E-4,2.41E-4,1.87E-4,1.19E-4,8.75E-5,5.70E-5,4.23E-5,3.36E-5,2.79E-5,2.08E-5,1.66E-5]
    XPEK=[0]+[3205.9,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L1 SHELL 2S 1/2
    YPEL1=[0]+[3.20E5,3.38E5,3.35E5,3.26E5,3.15E5,2.92E5,2.72E5,2.62E5,1.77E5,1.19E5,9.46E4,8.06E4,6.79E4,5.89E4,2.64E4,1.43E4,5.71E3,2.86E3,1.64E3,1.03E3,483.,264.,84.9,37.0,11.1,4.66,2.35,1.34,.544,.270,.0755,.0308,.00903,.00394,.00215,.00135,6.83E-4,4.25E-4,1.99E-4,1.24E-4,6.78E-5,4.60E-5,3.46E-5,2.77E-5,1.97E-5,1.52E-5,9.73E-6,7.14E-6,4.65E-6,3.45E-6,2.74E-6,2.27E-6,1.69E-6,1.35E-6]
    XPEL1=[0]+[326.3,333.1,339.9,346.7,353.5,367.1,380.7,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L2 SHELL 2P 1/2
    YPEL2=[0]+[1.80E6,1.31E6,9.57E5,8.67E5,8.37E5,8.17E5,7.80E5,6.87E5,6.10E5,5.40E5,2.65E5,1.36E5,9.40E4,7.28E4,5.60E4,4.56E4,1.37E4,5.61E3,1.51E3,577.,268.,142.,50.7,22.5,5.00,1.68,.354,.116,.0488,.0241,.00793,.00338,7.46E-4,2.63E-4,6.51E-5,2.57E-5,1.31E-5,7.72E-6,3.59E-6,2.08E-6,8.63E-7,5.36E-7,2.94E-7,2.00E-7,1.50E-7,1.20E-7,8.54E-8,6.61E-8,4.22E-8,3.09E-8,2.02E-8,1.50E-8,1.19E-8,9.86E-9,7.35E-9,5.86E-9]
    XPEL2=[0]+[250.6,257.4,264.2,271.0,277.8,291.4,305.0,332.2,359.4,386.6,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L3 SHELL 2P 3/2
    YPEL3=[0]+[3.60E6,2.63E6,1.91E6,1.73E6,1.67E6,1.63E6,1.56E6,1.37E6,1.22E6,1.08E6,5.21E5,2.67E5,1.84E5,1.43E5,1.09E5,8.93E4,2.67E4,1.09E4,2.93E3,1.11E3,514.,271.,96.4,42.6,9.36,3.12,.647,.209,.0869,.0424,.0137,.00575,.00122,4.23E-4,1.03E-4,4.07E-5,2.10E-5,1.27E-5,6.22E-6,3.79E-6,1.72E-6,1.07E-6,5.86E-7,3.98E-7,2.99E-7,2.39E-7,1.70E-7,1.32E-7,8.41E-8,6.17E-8,4.02E-8,2.98E-8,2.37E-8,1.96E-8,1.46E-8,1.17E-8]
    XPEL3=[0]+[248.4,255.2,262.0,268.8,275.6,289.2,302.8,330.0,357.2,384.4,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # M1 SHELL 3S 1/2
    YPEM1=[0]+[5.6E4,1.87E5,2.62E5,3.07E5,3.27E5,3.27E5,3.07E5,2.54E5,2.08E5,1.79E5,1.36E5,7.16E4,4.04E4,2.39E4,1.49E4,1.15E4,9.67E3,8.05E3,7.00E3,3.04E3,1.62E3,639.,320.,183.,115.,54.1,29.6,9.53,4.17,1.26,.527,.266,.151,.0616,.0306,.00856,.00350,.00102,4.47E-4,2.44E-4,1.53E-4,7.75E-5,4.82E-5,2.26E-5,1.40E-5,7.70E-6,5.23E-6,3.93E-6,3.14E-6,2.24E-6,1.73E-6,1.10E-6,8.10E-7,5.28E-7,3.92E-7,3.11E-7,2.58E-7,1.92E-7,1.53E-8]
    XPEM1=[0]+[29.239,36.0,42.8,49.6,56.4,70.0,83.6,110.8,138.0,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # M2 SHELL 3P 1/2
    YPEM2=[0]+[10.3E6,11.9E6,11.3E6,7.23E6,3.33E6,8.83E5,2.43E5,1.67E5,2.25E5,2.81E5,3.24E5,3.58E5,3.77E5,3.80E5,3.79E5,3.69E5,3.45E5,3.25E5,2.97E5,2.80E5,2.38E5,2.00E5,1.67E5,1.40E5,1.09E5,7.40E4,3.58E4,1.81E4,9.65E3,6.82E3,5.37E3,4.19E3,3.44E3,1.09E3,458.,127.,49.4,23.3,12.4,4.49,2.01,.450,.152,.0322,.0106,.00446,.00221,7.29E-4,3.11E-4,6.85E-5,2.42E-5,5.98E-6,2.36E-6,1.20E-6,7.07E-7,3.27E-7,1.89E-7,7.82E-8,4.86E-8,5.31E-10]
    XPEM2=[0]+[15.937,20.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,100.,110.,120.,130.,150.,170.,190.,210.,245.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,1.0E8]
    # M3 SHELL 3P 3/2
    YPEM3=[0]+[20.5E6,23.8E6,22.5E6,14.5E6,6.67E6,1.77E6,4.87E5,3.33E5,4.50E5,5.62E5,6.49E5,7.15E5,7.53E5,7.60E5,7.57E5,7.37E5,6.89E5,6.51E5,5.95E5,5.60E5,4.76E5,4.00E5,3.33E5,2.80E5,2.17E5,1.47E5,7.06E4,3.55E4,1.89E4,1.34E4,1.05E4,8.19E3,6.73E3,2.12E3,889.,246.,95.1,44.6,23.7,8.50,3.78,.839,.281,.0587,.0190,.00792,.00387,.00125,5.26E-4,1.12E-4,3.88E-5,9.43E-6,3.75E-6,1.94E-6,1.17E-6,5.75E-7,3.51E-7,1.62E-7,1.01E-7,1.10E-9]
    XPEM3=[0]+[15.760,20.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,100.,110.,120.,130.,150.,170.,190.,210.,245.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,1.0E8]
    #  RAYLEIGH, COMPTON AND PAIR PR0DUCTION 
    # HUBBEL J.PHYS.CHEM.REF.4(1975)471
    # HUBBEL  NIST XCOM WEB SITE
    # STORM AND ISRAEL NUCL.TABLES A7(1970)565
    XENE=[0]+[100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.022E6,1.25E6,1.5E6,2.0E6,2.044E6,3.0E6,4.0E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    YRAY=[0]+[215.5,215.2,215.0,214.2,213.2,211.9,210.3,206.5,201.7,187.2,170.5,138.2,112.4,93.45,79.70,61.33,49.16,30.22,20.01,10.72,      6.776,4.690,3.435,2.061,1.369,.6390,.3681,.1671,.09475,.06089,    .04238,.02389,.01531,.01466,9.804E-3,6.811E-3,3.833E-3,3.669E-3,1.704E-3,9.585E-4,         6.135E-4,4.260E-4,3.130E-4,2.397E-4,1.894E-4,1.534E-4,6.788E-5,3.818E-5,1.697E-5,9.545E-6,6.109E-6,4.242E-6,2.386E-6,1.527E-6]  
    YCOM=[0]+[5.185E-3,.01168,.02080,.04655,.08210,.1270,.1806,.3117,.4696,.9421,                        1.462,2.466,3.332,4.046,4.624,5.501,6.161,7.330,8.048,8.727,8.961,9.013,8.975,8.767,8.493,7.800,7.209,6.314,5.674,5.189,4.805,4.225,3.801,3.761,3.400,3.090,2.638,2.605,2.076,1.731,1.495,1.322,1.188,1.081,.9938,.9208,.6815,.5470,.3982,.3164,    .2641,.2276,.1795,.1490]      
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    YPAP=[0]+34*[1.E-20]+[2.826E-3,.01507,.05880,.06336,.1665,.2700,    .3627,.4462,.5208,.5882,.6493,.7049,.9170,1.072,1.296,1.446,      1.563,1.650,1.779,1.876]   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    FFR=[0]+[1.0,.99967,.99889,.99761,.99578,.99339,.99056,.98333,.9744,.9506,  .9217,.9050,.8606,.8078,.7656,.7189,.6350,.5667,.4746,.4202,.3814,.3465,.3122,.2787,.2468,.1796,.1343,.08906,.07183,.06278,.05371,.04672,.03272,.02292,.01596,.0126,.005872,.001555,5.553E-4,1.744E-5,2.907E-6,1.250E-6,3.693E-10,2.99E-19,3.37E-28]  
    FFC=[0]+[5.6E-22,3.33E-4,.00133,.003011,.005328,.008283,.01185,.02073,.03172,.05906,  .09133,.1087,.1533,.1977,.2400,.2796,.3502,.4098,.4999,.5617,.6094,.6517,.6900,.7256,.7572,.8189,.8606,.9067,.9328,.9517,.9661,.9761,.9889,.9950,.99756,.99878,.99967,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
    # ARGON ATOMIC NUMBER
    IZ[1]=18
    AMZ[1]=39.948
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY   
    for I in range(1,17+1):
        PRSHBT[1][I]=PRBSHBT[I]/100.0
        for J in range(1,17+1):
            PRBSH[I][J]=PRBSH[I][J]/100.0
    # SWAP INDICES AND DO CHECK SUM
    for I in range(1,17+1):
        PRSUM=0
        for J in range(1,17+1):
            PRSH[1][I][J]=PRBSH[J][I]
        #     PRSUM=PRSUM+PRSH[I][J]
        #     WRITE(6,888) I,PRSUM
        # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    for I in range(1,17+1):
        ESH[1][I]=ES[I]
        INIOCC[1][I]=INIOC[I]
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    for I in range(1,4+1):
        for J in range(1,17+1):
            for K in range(1,17 +1):
                AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    for I in range(5,17+1):
        for J in range(1,17+1):
            for K in range(1,17+1):
                AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     for I in range(1,17+1):
    #     ASUM=0.0
    #     for J in range(1,17+1):
    #     for K in range(1,17+1):
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    for I in range(5,17+1):
        for J in range(6,17+1):
            R[I][J]=R[I][J]*6.582119E-16
    # LOAD OUTPUT ARRAY
    for I in range(1,17+1):
        for J in range(1,17+1):
            RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     for5  in range(=1,17+1):
    #     RSUM=0.0
    #     for4  in range(=1,17+1):
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA
    for J in range(1,38+1):
        XPE[1][1][J]=math.log(XPEK[J])
        YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    for J in range(1,54+1):
        XPE[1][2][J]=math.log(XPEL1[J])
        YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    for J in range(1,55+1):
        XPE[1][3][J]=math.log(XPEL2[J])
        YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    for J in range(1,55+1):
        XPE[1][4][J]=math.log(XPEL3[J])
        YPE[1][4][J]=math.log(YPEL3[J]*1.E-24)
    for J in range(1,59+1):
        XPE[1][5][J]=math.log(XPEM1[J])
        YPE[1][5][J]=math.log(YPEM1[J]*1.E-24)
    for J in range(1,60+1):
        XPE[1][6][J]=math.log(XPEM2[J])
        YPE[1][6][J]=math.log(YPEM2[J]*1.E-24)
    for J in range(1,60+1):
        XPE[1][7][J]=math.log(XPEM3[J])
        YPE[1][7][J]=math.log(YPEM3[J]*1.E-24)
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    for J in range(1,54+1):
        XCP[1][J]=math.log(XENE[J])
        YRY[1][J]=math.log(YRAY[J]*1.E-24)
        YCP[1][J]=math.log(YCOM[J]*1.E-24)
        YPP[1][J]=math.log(YPAP[J]*1.E-24)
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    for J in range(1,45+1):
        FFAR[1][J]=FFR[J]
        FFAC[1][J]=FFC[J]
    return 
    # end
'''
def CGAS3(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(60),YPEK(60),XENE(54),YRAY(54),YCOM(54),YPAP(54),FFR(45),FFC(45)
    # 
    # HELIUM DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/26.9,0.0,0.0,0.0,0.0,0.0,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00/
    # AUGER RATES 
    DATA A/4913*0.0/
    # RADIATIVE RATES 
    DATA R/289*0.0/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    # KSHELL 1S 1/2
    DATA YPEK/7.40E6,6.40E6,5.38E6,4.57E6,3.88E6,3.16E6,2.48E6,2.02E6,1.67E6,1.56E6,1.15E6,9.75E5,8.13E5,6.93E5,5.95E5,5.16E5,4.50E5,3.93E5,3.06E5,2.46E5,1.73E5,1.21E5,7.15E4,2.23E4,7.98E3,3.23E3,1.44E3,926.,688.,507.,402.,109.,43.2,11.2,4.23,2.03,1.10,.411,.194,.0487,.0183,.00457,.00171,7.95E-4,4.26E-4,1.60E-4,7.48E-5,1.92E-5,7.43E-6,2.05E-6,8.66E-7,4.64E-7,2.88E-7,1.45E-7,9.03E-8,4.14E-8,2.63E-8,1.49E-8,1.03E-8,3.28E-10/
    DATA XPEK/24.587,27.0,30.0,33.0,36.0,40.0,45.0,50.0,55.0,59.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    # HUBBEL    J.PHYS CHEM REF DATA 4(1975)471
    # HUBBEL    NIST XCOM WEB SITE
    # STORM AND ISRAEL      NUCL DATA TABLES A7(1970)565
    DATA XENE/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAY/2.660,2.658,2.655,2.648,2.637,2.624,2.608,2.567,2.517,2.356,2.162,1.743,1.369,1.072,.8492,.5592,.3921,.1962,.1166,.05432,     .03113,.02010,.01403,7.933D-3,5.089D-3,2.267D-3,1.276D-3,5.676D-4,3.194D-4,2.044D-4,         1.420D-4,7.986D-5,5.111D-5,4.894D-5,3.272D-5,2.272D-5,1.278D-5,1.224D-5,5.680D-6,3.195D-6,2.045D-6,1.420D-6,1.043D-6,7.988D-7,6.312D-7,5.112D-7,2.272D-7,1.278D-7,5.679D-8,3.194D-8,2.044D-8,1.420D-8,7.984D-9,5.109D-9/  
    DATA YCOM/1.524D-3,2.559D-3,3.793D-3,7.081D-3,1.183D-2,1.796D-2,2.543D-2,4.426D-2,6.759D-2,0.1419,.2317,.4230,.5948,.7328,.8385,.9785,1.059,1.145,1.168,1.163,1.139,1.111,1.083,1.030,.9825,.8860,.8124,.7068,.6334,.5785,.5352,.4702,.4228,.4183,.3780,.3436,.2932,.2896,.2307,.1924,.1662,.1469,.1320,.1201,.1104,.1023,.07573,.06078,.04425,.03516,.02935,.02529,.01994,.01655/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAP/34*1.E-20,3.127D-5,1.755D-4,7.034D-4,7.584D-4,2.101D-3,3.611D-3,5.061D-3,6.427D-3,7.681D-3,8.838D-3,9.906D-3,1.089D-2,1.473D-2,1.792D-2,.0222,.0253,      .0277,.0296,.0326,.0351/                  
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFR/1.0,.99975,.99910,.9980,.9965,.9945,.9920,.9860,.9785,.9585,.9330,.9180,.8775,.8305,.7800,.7290,.6260,.5295,.3690,.2547,.1771,.1247,.8930,.06495,.04806,.02420,.01326,4.82D-3,2.098D-3,1.046D-3,5.770D-4,3.428D-4,1.427D-4,6.945D-5,3.770D-5,2.218D-5,9.130D-6,1.813D-6,5.755D-7,1.487D-8,2.289D-9,9.425D-10,1.173D-13,2.56D-23,2.56D-32/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFC/5.E-21,.00105,.00250,.00440,.00705,.01029,.01495,.02595,.04027,.07675,.1225,.1478,.2161,.2917,.3680,.4403,.5730,.6810,.8285,.9090,.9510,.9735,.9850,.9915,.99495,.99855,.99950,.99995,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HELIUM ATOMIC NUMBER
    IZ[1]=2 
    AMZ[1]=4.002602
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA
    DO 21 J=1,60
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 22 J=1,54
    XCP[1][J]=math.log(XENE[J])
    YRY[1][J]=math.log(YRAY[J]*1.E-24)
    YCP[1][J]=math.log(YCOM[J]*1.E-24)
    YPP[1][J]=math.log(YPAP[J]*1.E-24)
    22 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 23 J=1,45
    FFAR[1][J]=FFR[J]
    FFAC[1][J]=FFC[J]
    23 CONTINUE
    return 
    # end
def CGAS4(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(60),YPEK(60),XENE(54),YRAY(54),YCOM(54),YPAP(54),FFR(45),FFC(45)  
    # 
    # HELIUM DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/26.9,0.0,0.0,0.0,0.0,0.0,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00/
    # AUGER RATES 
    DATA A/4913*0.0/
    # RADIATIVE RATES 
    DATA R/289*0.0/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    # KSHELL 1S 1/2
    DATA YPEK/7.40E6,6.40E6,5.38E6,4.57E6,3.88E6,3.16E6,2.48E6,2.02E6,1.67E6,1.56E6,1.15E6,9.75E5,8.13E5,6.93E5,5.95E5,5.16E5,4.50E5,3.93E5,3.06E5,2.46E5,1.73E5,1.21E5,7.15E4,2.23E4,7.98E3,3.23E3,1.44E3,926.,688.,507.,402.,109.,43.2,11.2,4.23,2.03,1.10,.411,.194,.0487,.0183,.00457,.00171,7.95E-4,4.26E-4,1.60E-4,7.48E-5,1.92E-5,7.43E-6,2.05E-6,8.66E-7,4.64E-7,2.88E-7,1.45E-7,9.03E-8,4.14E-8,2.63E-8,1.49E-8,1.03E-8,3.28E-10/
    DATA XPEK/24.587,27.0,30.0,33.0,36.0,40.0,45.0,50.0,55.0,59.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA  4(1975)471
    # HUBBEL        NIST XCOM  WEB SITE
    # STORM AND ISRAEL    NUCL DATA TABLES A7(1970)565
    DATA XENE/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAY/2.660,2.658,2.655,2.648,2.637,2.624,2.608,2.567,2.517,2.356,2.162,1.743,1.369,1.072,.8492,.5592,.3921,.1962,.1166,.05432,     .03113,.02010,.01403,7.933D-3,5.089D-3,2.267D-3,1.276D-3,5.676D-4,3.194D-4,2.044D-4,         1.420D-4,7.986D-5,5.111D-5,4.894D-5,3.272D-5,2.272D-5,1.278D-5,1.224D-5,5.680D-6,3.195D-6,2.045D-6,1.420D-6,1.043D-6,7.988D-7,6.312D-7,5.112D-7,2.272D-7,1.278D-7,5.679D-8,3.194D-8,2.044D-8,1.420D-8,7.984D-9,5.109D-9/  
    DATA YCOM/1.524D-3,2.559D-3,3.793D-3,7.081D-3,1.183D-2,1.796D-2,2.543D-2,4.426D-2,6.759D-2,0.1419,.2317,.4230,.5948,.7328,.8385,.9785,1.059,1.145,1.168,1.163,1.139,1.111,1.083,1.030,.9825,.8860,.8124,.7068,.6334,.5785,.5352,.4702,.4228,.4183,.3780,.3436,.2932,.2896,.2307,.1924,.1662,.1469,.1320,.1201,.1104,.1023,.07573,.06078,.04425,.03516,.02935,.02529,.01994,.01655/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAP/34*1.E-20,3.127D-5,1.755D-4,7.034D-4,7.584D-4,2.101D-3,3.611D-3,5.061D-3,6.427D-3,7.681D-3,8.838D-3,9.906D-3,1.089D-2,1.473D-2,1.792D-2,.0222,.0253,      .0277,.0296,.0326,.0351/                  
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFR/1.0,.99975,.99910,.9980,.9965,.9945,.9920,.9860,.9785,.9585,.9330,.9180,.8775,.8305,.7800,.7290,.6260,.5295,.3690,.2547,.1771,.1247,.8930,.06495,.04806,.02420,.01326,4.82D-3,2.098D-3,1.046D-3,5.770D-4,3.428D-4,1.427D-4,6.945D-5,3.770D-5,2.218D-5,9.130D-6,1.813D-6,5.755D-7,1.487D-8,2.289D-9,9.425D-10,1.173D-13,2.56D-23,2.56D-32/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFC/5.E-21,.00105,.00250,.00440,.00705,.01029,.01495,.02595,.04027,.07675,.1225,.1478,.2161,.2917,.3680,.4403,.5730,.6810,.8285,.9090,.9510,.9735,.9850,.9915,.99495,.99855,.99950,.99995,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HELIUM ATOMIC NUMBER
    IZ[1]=2 
    AMZ[1]=3.01600  
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA
    DO 21 J=1,60
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 22 J=1,54
    XCP[1][J]=math.log(XENE[J])
    YRY[1][J]=math.log(YRAY[J]*1.E-24)
    YCP[1][J]=math.log(YCOM[J]*1.E-24)
    YPP[1][J]=math.log(YPAP[J]*1.E-24)
    22 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 23 J=1,45
    FFAR[1][J]=FFR[J]
    FFAC[1][J]=FFC[J]
    23 CONTINUE
    return 
    # end
def CGAS5(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(42),YPEK(42),XPEL1(58),YPEL1(58),XPEL2(60),YPEL2(60),XPEL3(60),YPEL3(60),XENE(54),YRAY(54),YCOM(54),YPAP(54),FFR(45),FFC(45)
    # 
    # NEON  DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,4,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/15.9,3.40,3.20,3.20,0.00,0.00,0.00,0.00,0.00,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/.030,1.71,5.44,10.63,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.16,1.48,2.98,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.34,0.78,3.14,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.34,1.55,2.35,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/1.03,4.77,5.55,11.10,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.820/,A[1][2][3]/0.8315/,A[1][2][4]/1.5925/
    DATA A[1][3][3]/0.140/,A[1][3][4]/3.47/
    DATA A[1][4][4]/1.97/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/3.55E-12/,R(1,3)/.001128/,R(1,4)/.002242/
    # L1 SHELL
    DATA R(2,3)/2.23E-6/,R(2,4)/4.54E-6/
    # L2 SHELL
    DATA R(3,4)/8.70E-18/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : KENNEDY AND MANSON     PHYS REV A5(1972)227
    #                : SCOFIELD               UCRL-51326
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    #                : CHAN ET AL             PHYS REV A45(1992)1420
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    #                : BIZAU ET AL            J.ELEC.SPEC. 71(1995)205
    # K  SHELL 1S 1/2
    DATA YPEK/3.60E5,2.32E5,8.40E4,3.92E4,1.28E4,5.61E3,2.92E3,1.70E3,717.,363.,103.,41.6,11.4,4.49,2.17,1.20,.468,.225,.0602,.0240,.00680,.00293,.00158,9.86E-4,4.98E-4,3.10E-4,1.46E-4,9.16E-5,5.09E-5,3.49E-5,2.64E-5,2.12E-5,1.52E-5,1.18E-5,7.57E-6,5.57E-6,3.64E-6,2.70E-6,2.15E-6,1.78E-6,1.33E-6,1.06E-6/
    DATA XPEK/870.2,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/2.69E5,4.04E5,5.03E5,5.48E5,6.21E5,5.60E5,5.24E5,4.38E5,3.76E5,2.90E5,1.51E5,8.05E4,4.47E4,2.61E4,1.93E4,1.57E4,1.26E4,1.06E4,3.95E3,
    1.90E3,643.,290.,154.,91.2,39.1,20.0,5.78,2.35,.651,.258,.125,.0693,.0271,.0131,.00351,.00140,3.98E-4,1.71E-4,9.24E-5,5.76E-5,2.91E-5,1.81E-5,8.52E-6,5.34E-6,2.97E-6,2.03E-6,1.54E-6,1.24E-6,8.85E-7,6.88E-7,4.42E-7,3.25E-7,2.12E-7,1.58E-7,1.25E-7,1.04E-7,7.77E-8,6.19E-8/
    DATA XPEL1/48.475,55.3,62.1,68.3,75.7,89.3,102.9,132.3,151.3,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/2.13E6,2.57E6,2.87E6,2.98E6,2.98E6,2.87E6,2.50E6,2.14E6,1.82E6,1.57E6,1.35E6,1.14E6,9.49E5,7.91E5,6.35E5,4.43E5,2.86E5,9.54E4,3.52E4,1.46E4,6.60E3,4.25E3,3.15E3,2.32E3,1.82E3,459.,167.,38.5,13.2,5.64,2.78,.901,.372,.0734,.0230,.00444,.00138,5.57E-4,2.67E-4,8.43E-5,3.49E-5,7.30E-6,2.50E-6,5.98E-7,2.31E-7,1.16E-7,6.78E-8,3.10E-8,1.78E-8,7.27E-9,4.56E-9,2.54E-9,1.74E-9,1.31E-9,1.06E-9,7.55E-10,5.87E-10,3.77E-10,2.77E-10,5.28E-11/
    DATA XPEL2/21.661,24.0,27.0,30.0,35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,110.,120.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,1.0E8/
    # L3 SHELL 2P 3/2
    DATA YPEL3/4.25E6,5.14E6,5.73E6,5.97E6,2.98E6,2.87E6,5.00E6,4.29E6,3.64E6,3.13E6,2.69E6,2.28E6,1.90E6,1.58E6,1.26E6,9.20E5,5.68E5,1.89E5,6.98E4,2.89E4,1.30E4,8.41E3,6.23E3,4.57E3,3.60E3,903.,328.,75.6,25.8,11.0,5.43,1.75,.720,.141,.0439,.00837,.00257,.00103,4.88E-4,1.52E-4,6.19E-5,1.26E-5,4.26E-6,1.01E-6,3.96E-7,2.04E-7,1.23E-7,6.04E-8,3.70E-8,1.72E-8,1.08E-8,6.00E-9,4.11E-9,3.11E-9,2.50E-9,1.79E-9,1.39E-9,8.91E-10,6.56E-10,1.25E-10/
    DATA XPEL3/21.565,24.0,27.0,30.0,35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,110.,120.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION  DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    # STORM AND ISRAEL     NUCL.DATA TABLES A7(1970)565
    DATA XENE/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAY/66.51,66.46,66.41,66.26,66.05,65.79,65.47,64.67,63.67,60.42,56.40,47.42,38.86,31.65,25.94,18.11,13.35,7.460,4.877,2.590,      1.596,1.078,.7754,.4563,.2998,.1376,.07840,.03519,.01987,.01274,  8.853D-3,4.985D-3,3.191D-3,3.056D-3,2.043D-3,1.419D-3,7.983D-4,7.643D-4,3.549D-4,1.996D-4,1.278D-4,8.872D-5,6.518D-5,4.991D-5,3.943D-5,3.194D-5,1.425D-5,8.017D-6,3.563D-6,2.004D-6,1.283D-6,8.905D-7,5.011D-7,3.206D-7/  
    DATA YCOM/1.835D-3,4.309D-3,7.696D-3,.01731,.03067,.04770,.06825,.1196,.1836,.3902,                  .6452,1.221,1.796,2.320,2.774,3.473,3.949,4.603,4.926,5.214,5.287,5.264,5.198,5.017,4.823,4.388,4.038,3.523,3.161,2.889,2.673,2.350,2.113,2.091,1.889,1.718,1.466,1.448,1.153,.9620,.8308,.7343,.6600,.6006,.5521,.5116,.3786,.3039,.2212,.1758,    .1467,.1264,.09972,.08276/    
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAP/34*1.E-20,8.090D-4,4.464D-3,.01775,.01913,.05108,.08379,.1135,.1403,.1644,.1863,.2062,.2244,.2942,.3473,.4212,.4730,      .5120,.5417,.5872,.6210/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFR/1.,.99978,.99926,.9984,.9972,.9957,.9938,.9891,.9830,.9672,.9468,.9352,.9019,.8643,.8233,.7803,.6925,.6076,.4614,.3531,.2786,.2293,.1969,.1754,.1607,.1379,.1217,.09266,.06781,.05136,   .03491,.02782,.01363,.007790,.004690,.003580,.001360,.0003075,.0001015,2.822D-6,4.507D-7,1.897D-7,4.044D-11,2.45D-20,2.54D-29/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFC/1.E-21,.000200,.00090,.00201,.00357,.00556,.00799,.01410,.02180,.04177, .06694,.08120,.1205,.1637,.2088,.2547,.3442,.4269,.5644,.6640,.7320,.7774,.8085,.8312,.8490,.8836,.9113,.9517,.9752,.9875,.99368,.99670,.99906,.99969,.99989,1.,1.,1.,1.,1.,1.,1.,1.,1.,1./
    # NEON ATOMIC NUMBER
    IZ[1]=10
    AMZ[1]=20.1797
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA
    DO 21 J=1,42
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    DO 22 J=1,58
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    22 CONTINUE 
    DO 23 J=1,60 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    23 CONTINUE 
    DO 24 J=1,60
    XPE[1][4][J]=math.log(XPEL3[J])
    YPE[1][4][J]=math.log(YPEL3[J]*1.E-24)
    24 CONTINUE 
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XENE[J])
    YRY[1][J]=math.log(YRAY[J]*1.E-24)
    YCP[1][J]=math.log(YCOM[J]*1.E-24)
    YPP[1][J]=math.log(YPAP[J]*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 26 J=1,45
    FFAR[1][J]=FFR[J]
    FFAC[1][J]=FFC[J]
    26 CONTINUE
    return 
    # end
def CGAS6(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(33),YPEK(33),XPEL1(40),YPEL1(40),XPEL2(40),YPEL2(40),XPEL3(40),YPEL3(40),XPEM1(48),YPEM1(48),XPEM2(49),YPEM2(49),XPEM3(49),YPEM3(49),XPEM4(59),YPEM4(59),XPEM5(59),YPEM5(59),XPEN1(59),YPEN1(59),XPEN2(60),YPEN2(60),XPEN3(60),YPEN3(60),XENE(54),YRAY(54),YCOM(54),YPAP(54),FFR(45),FFC(45)
    # 
    # KRYPTON DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,4,2,2,4,4,6,2,2,4,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/33.4,17.7,19.2,19.3,7.80,7.80,7.70,7.80,7.70,2.0,1.4,1.3,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/.002,.060,.089,.180,.220,0.38,0.75,1.43,2.13,1.80,4.39,9.06,0.00,0.00,0.00,0.00,0.00,0.00,.002,.007,.014,.089,.150,.310,1.36,2.04,1.50,3.78,7.97,0.00,0.00,0.00,0.00,0.00,0.00,.008,.006,.026,.099,.180,.360,1.42,2.14,1.53,3.86,8.13,0.00,0.00,0.00,0.00,0.00,0.00,.008,.011,.018,.097,.170,.360,1.41,2.12,1.52,3.84,8.10,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.006,.020,.045,0.32,0.50,1.22,3.26,6.97,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.012,.010,.048,0.33,0.51,1.21,3.26,6.96,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.011,.020,.034,0.31,0.48,1.20,3.24,6.95,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.012,.023,.050,0.27,0.55,1.19,3.22,6.88,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.012,.022,.049,0.35,0.45,1.18,3.21,6.87,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.003,.004,0.14,1.33,3.02,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.001,.002,0.20,0.50,2.31,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.001,.001,0.18,0.96,1.66,0.00,0.00,0.00,0.00,0.00,85*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/.0723,.185,.124,.230,.438,.446,.852,1.32,1.96,2.39,4.53,9.23,0.00,0.00,0.00,0.00,0.00/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K L M AND N SHELLS 
    #  CHEN+CRASEMANN,ANDT 24(1979)13,  FOR K AND L SHELLS 
    #  MCGUIRE,SANDIA REPORTS,          FOR M AND N SHELLS 
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/2.402/,A[1][2][3]/2.697/,A[1][2][4]/4.434/,A[1][2][5]/0.713/,A[1][2][6]/0.406/,A[1][2][7]/0.663/,A[1][2][8]/0.031/,A[1][2][9]/0.039/,A[1,2,10]/0.092/,A[1,2,11]/0.040/,A[1,2,12]/0.065/
    DATA A[1][3][3]/0.455/,A[1][3][4]/10.384/,A[1][3][5]/0.338/,A[1][3][6]/0.126/,A[1][3][7]/1.318/,A[1][3][8]/0.041/,A[1][3][9]/0.147/,A[1,3,10]/0.043/,A[1,3,11]/0.013/,A[1,3,12]/0.128/ 
    DATA A[1][4][4]/5.730/,A[1][4][5]/0.611/,A[1][4][6]/1.457/,A[1][4][7]/1.597/,A[1][4][8]/0.214/,A[1][4][9]/0.217/,A[1,4,10]/0.098/,A[1,4,11]/0.202/,A[1,4,12]/0.222/
    DATA A[1][5][5]/0.064/,A[1][5][6]/0.064/,A[1][5][7]/0.099/,A[1,5,10]/0.021/,A[1,5,11]/0.009/,A[1,5,12]/0.014/,A[1][6][7]/0.202/,A[1,6,10]/0.010/,A[1,6,12]/0.028/,A[1][7][7]/0.113/,A[1][7][8]/0.024/,A[1][7][9]/0.024/,A[1,7,10]/0.016/,A[1,7,11]/0.028/,A[1,7,12]/0.031/
    # L1 SHELL RATE (MILLIATOMIC UNITS)
    DATA A[2][3][8]/19.581/,A[2][3][9]/31.107/,A[2,3,10]/3.203/,A[2,3,11]/1.665/,A[2,3,12]/2.200/
    DATA A[2][4][7]/54.196/,A[2][4][8]/57.773/,A[2][4][9]/82.495/,A[2,4,10]/5.370/,A[2,4,11]/1.833/,A[2,4,12]/3.926/
    DATA A[2][5][5]/1.173/,A[2][5][6]/2.236/,A[2][5][7]/4.300/,A[2][5][8]/3.017/,A[2][5][9]/4.422/,A[2,5,10]/0.266/,A[2,5,11]/0.218/,A[2,5,12]/0.415/
    DATA A[2][6][7]/0.092/,A[2][6][8]/0.054/,A[2][6][9]/0.974/,A[2,6,10]/0.216/
    DATA A[2][7][7]/0.103/,A[2][7][8]/0.916/,A[2][7][9]/0.652/,A[2,7,10]/0.415/,A[2,7,12]/0.017/
    DATA A[2][8][8]/0.125/,A[2][8][9]/5.685/,A[2,8,10]/0.282/,A[2,8,11]/0.007/,A[2,8,12]/0.085/
    DATA A[2][9][9]/1.580/,A[2,9,10]/0.411/,A[2,9,11]/0.088/,A[2,9,12]/0.062/
    DATA A[2,10,10]/0.015/,A[2,10,11]/0.021/,A[2,10,12]/0.041/
    # L2 AUGER SHELL RATE (MILLIATOMIC UNITS)
    DATA A[3,4,10]/0.874/,A[3,4,11]/2.468/,A[3,4,12]/0.978/
    DATA A[3][5][5]/0.093/,A[3][5][6]/1.876/,A[3][5][7]/0.160/,A[3][5][8]/0.111/,A[3][5][9]/0.252/,A[3,5,11]/0.141/,A[3,5,12]/0.014/
    DATA A[3][6][6]/1.724/,A[3][6][7]/5.804/,A[3][6][8]/2.741/,A[3][6][9]/5.061/,A[3,6,10]/0.245/,A[3,6,11]/0.301/,A[3,6,12]/0.551/
    DATA A[3][7][7]/0.160/,A[3][7][8]/3.285/,A[3][7][9]/0.460/,A[3,7,10]/0.019/,A[3,7,11]/0.449/,A[3,7,12]/0.027/
    DATA A[3][8][8]/2.818/,A[3][8][9]/12.528/,A[3,8,10]/0.014/
    DATA A[3][9][9]/0.592/,A[3,9,11]/0.362/,A[3,9,12]/0.040/
    DATA A[3,10,11]/0.019/,A[3,11,11]/0.019/,A[3,11,12]/0.043/
    # L3 AUGER SHELL RATE (MILLIATOMIC UNITS)
    DATA A[4][5][5]/0.099/,A[4][5][6]/0.071/,A[4][5][7]/1.974/,A[4][5][8]/0.176/,A[4][5][9]/0.206/,A[4,5,12]/0.148/
    DATA A[4][6][7]/3.189/,A[4][6][8]/0.190/,A[4][6][9]/1.737/,A[4,6,12]/0.244/
    DATA A[4][7][7]/4.617/,A[4][7][8]/4.052/,A[4][7][9]/6.153/,A[4,7,10]/0.256/,A[4,7,11]/0.300/,A[4,7,12]/0.793/
    DATA A[4][8][8]/0.512/,A[4][8][9]/10.126/,A[4,8,10]/0.021/,A[4,8,11]/0.018/,A[4,8,12]/0.297/
    DATA A[4][9][9]/6.885/,A[4,9,10]/0.025/,A[4,9,11]/0.159/,A[4,9,12]/0.485/
    DATA A[4,10,12]/0.019/,A[4,11,12]/0.023/,A[4,12,12]/0.034/
    # M SHELL AUGER RATE (10**-4 ATOMIC UNITS)
    DATA A[5,6,10]/127.3/,A[5,6,11]/145.0/,A[5,6,12]/336.5/
    DATA A[5,7,10]/254.6/,A[5,7,11]/336.5/,A[5,7,12]/626.1/
    DATA A[5,8,10]/104.4/,A[5,8,11]/15.3/,A[5,8,12]/5.30/
    DATA A[5,9,10]/156.6/,A[5,9,11]/1.95/,A[5,9,12]/29.1/
    DATA A[5,10,10]/5.00/A[5,10,11]/9.22/,A[5,10,12]/18.4/
    DATA A[5,11,11]/0.346/,A[5,11,12]/0.656/,A[5,12,12]/1.02/
    DATA A[6,10,10]/1.04/,A[6,10,11]/5.01/,A[6,10,12]/1.38/
    DATA A[6,11,11]/3.41/,A[6,11,12]/12.3/,A[6,12,12]/0.32/
    DATA A[7][8][8]/29.2/,A[7][8][9]/364.0/,A[7,8,10]/23.9/,A[7,8,11]/23.6/,A[7,8,12]/143.2/
    DATA A[7][9][9]/294.0/,A[7,9,10]/105.7/,A[7,9,11]/164.4/,A[7,9,12]/361.8/
    DATA A[7,10,10]/1.04/,A[7,10,11]/0.69/,A[7,10,12]/5.69/
    DATA A[7,11,11]/0.06/,A[7,11,12]/6.37/,A[7,12,12]/9.62/
    DATA A[8,10,10]/2.22/,A[8,10,11]/8.35/,A[8,10,12]/10.83/
    DATA A[8,11,11]/2.65/,A[8,11,12]/6.62/,A[8,12,12]/2.34/
    DATA A[9,10,10]/2.22/,A[9,10,11]/5.09/,A[9,10,12]/14.09/
    DATA A[9,11,11]/0.50/,A[9,11,12]/3.96/,A[9,12,12]/7.15/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/3.88E-6/,R(1,3)/0.499/,R(1,4)/0.962/,R(1,5)/8.60E-7/,R(1,6)/0.0702/,R(1,7)/0.1369/,R(1,8)/2.046E-4/,R(1,9)/2.931E-4/,R(1,10)/1.11E-7/,R(1,11)/6.17E-3/,R(1,12)/.01187/
    # L1 SHELL
    DATA R(2,3)/3.24E-5/,R(2,4)/1.536E-4/,R(2,5)/4.85E-10/,R(2,6)/5.43E-3/,R(2,7)/9.66E-3/,R(2,8)/3.19E-5/,R(2,9)/4.75E-5/,R(2,10)/8.62E-11/,R(2,11)/5.09E-4/R(2,12)/9.00E-4/
    # L2 SHELL
    DATA R(3,4)/1.02E-9/,R(3,5)/8.69E-4/,R(3,6)/1.26E-10/,R(3,7)/4.40E-6/,R(3,8)/.02374/,R(3,9)/2.80E-8/,R(3,10)/1.082E-4/,R(3,11)/1.47E-11/,R(3,12)/4.11E-7/
    # L3 SHELL
    DATA R(4,5)/9.62E-4/,R(4,6)/2.22E-6/,R(4,7)/2.12E-6/,R(4,8)/2.326E-3/,R(4,9)/.02067/,R(4,10)/1.192E-4/,R(4,11)/2.07E-7/,R(4,12)/1.97E-7/
    # RADIATIVE TRANSITIONS MANSON AND KENNEDY ANDT 14(1974)111
    # DIPOLE ONLY NON-RELATIVISTIC CALC.  UNITS   1/SEC
    # M1 SHELL
    DATA R(5,6)/2.2759E10/,R(5,7)/4.5517E10/,R(5,11)/4.5243E10/,R(5,12)/9.0487E10/
    DATA R(6,8)/3.43988E10/,R(6,9)/5.15982E10/,R(6,10)/1.5818E10/,R(6,11)/1.4049E9/,R(6,12)/2.8099E9/
    DATA R(7,8)/6.8797E10/,R(7,9)/1.03196E11/,R(7,10)/3.1636E10/,R(7,11)/2.1074E9/,R(7,12)/4.2148E9/
    DATA R(10,11)/2.3294E9/,R(10,12)/4.6589E9/
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SHANTHI ET AL.         PHYS REV A37(1988)4720
    #                : KENNEDY AND MANSON     PHYS REV A5(1972)227
    #                : SCOFIELD               UCRL-51326
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    #                : CHAN ET AL             PHYS REV A46(1992)149
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # KSHELL
    DATA YPEK/1.54E4,1.38E4,6.61E3,2.2E3,979.,517.,304.,131.,67.3,20.,8.50,2.61,1.17,.650,.412,.211,.131,.0611,.0374,.0201,.0135,.0100,.00795,.00559,.00430,.00272,.00198,.00129,9.50E-4,7.54E-4,6.24E-4,4.65E-4,3.70E-4/
    DATA XPEK/14326.,1.5E4,2.0E4,3.0E4,4.E4,5.E4,6.E4,8.E4,1.E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL
    DATA YPEL1/6.48E4,6.43E4,3.31E4,1.95E4,1.26E4,8.66E3,4.66E3,2.82E3,1.08E3,527.,184.,84.7,45.7,27.4,12.0,6.31,1.92,.828,.258,.117,.0649,.0412,.0211,.0132,.00611,.00374,.00201,.00135,.00100,7.95E-4,5.59E-4,4.30E-4,2.72E-4,1.98E-4,1.29E-4,9.50E-5,7.54E-5,6.24E-5,4.65E-5,3.70E-5/
    DATA XPEL1/1921.,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L2 SHELL
    DATA YPEL2/1.89E5,1.24E5,4.22E4,1.88E4,9.77E3,5.65E3,2.32E3,1.14E3,303.,115.,28.6,10.4,4.74,2.48,.892,.404,.0978,.0366,.00970,.00399,.00207,.00125,5.96E-4,3.51E-4,1.48E-4,9.07E-5,4.87E-5,3.26E-5,2.43E-5,1.93E-5,1.36E-5,1.04E-5,6.59E-6,4.80E-6,3.11E-6,2.30E-6,1.83E-6,1.51E-6,1.13E-6,8.97E-7/
    DATA XPEL2/1730.9,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L3 SHELL
    DATA YPEL3/3.96E5,2.37E5,7.91E4,3.47E4,1.79E4,1.03E4,4.17E3,2.03E3,528.,197.,47.6,17.0,7.57,3.90,1.36,.602,.139,.0504,.0129,.00525,.00274,.00167,8.18E-4,4.95E-4,2.23E-4,1.37E-4,7.34E-5,4.91E-5,3.66E-5,2.90E-5,2.04E-5,1.57E-5,9.92E-6,7.24E-6,4.69E-6,3.47E-6,2.75E-6,2.28E-6,1.70E-6,1.35E-6/
    DATA XPEL3/1678.4,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # M1 SHELL
    DATA YPEM1/2.05E5,1.53E5,1.11E5,7.89E4,6.48E4,5.65E4,4.89E4,4.34E4,2.20E4,1.31E4,6.07E3,3.40E3,2.14E3,1.45E3,764.,459.,174.,85.1,29.7,13.7,7.42,4.45,1.96,1.03,.315,.136,.0423,.0192,.0107,.00677,.00347,.00216,.00100,6.13E-4,3.29E-4,2.20E-4,1.64E-4,1.30E-4,9.16E-5,7.04E-5,4.45E-5,3.25E-5,2.10E-5,1.56E-5,1.23E-5,1.02E-5,7.61E-6,6.06E-6/
    DATA XPEM1/292.8,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # M2 SHELL
    DATA YPEM2/2.00E5,1.96E5,1.92E5,1.49E5,1.07E5,8.72E4,7.52E4,6.41E4,5.62E4,2.53E4,1.34E4,4.99E3,2.35E3,1.27E3,760.,326.,165.,45.8,17.8,4.53,1.68,.769,.405,.147,.0668,.0163,.00613,.00163,6.72E-4,3.51E-4,2.11E-4,1.01E-4,5.91E-5,2.50E-5,1.53E-5,8.23E-6,5.51E-6,4.10E-6,3.25E-6,2.29E-6,1.76E-6,1.11E-6,8.11E-7,5.26E-7,3.89E-7,3.08E-7,2.56E-7,1.90E-7,1.52E-7/   
    DATA XPEM2/222.2,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # M3 SHELL
    DATA YPEM3/4.90E5,4.54E5,4.11E5,3.07E5,2.16E5,1.74E5,1.49E5,1.27E5,1.11E5,4.88E4,2.55E4,9.36E3,4.36E3,2.34E3,1.38E3,586.,294.,79.8,30.5,7.55,2.73,1.23,.636,.224,.0995,.0231,.00842,.00216,8.81E-4,4.61E-4,2.81E-4,1.38E-4,8.36E-5,3.76E-5,2.30E-5,1.24E-5,8.28E-6,6.17E-6,4.89E-6,3.44E-6,2.65E-6,1.67E-6,1.22E-6,7.91E-7,5.85E-7,4.64E-7,3.84E-7,2.86E-7,2.28E-7/  
    DATA XPEM3/214.4,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # M4 SHELL
    DATA YPEM4/2.17E5,2.89E5,3.62E5,5.68E5,8.00E5,1.17E6,1.44E6,1.71E6,1.74E6,1.68E6,1.37E6,1.06E6,8.07E5,4.04E5,2.08E5,1.42E5,1.09E5,8.31E4,6.73E4,1.88E4,7.16E3,1.71E3,588.,251.,123.,38.9,15.6,2.82,.819,.140,.0394,.0147,.00659,.00187,.000710,.000127,3.91E-5,8.04E-6,2.82E-6,1.30E-6,7.15E-7,2.99E-7,1.62E-7,6.33E-8,3.88E-8,2.08E-8,1.39E-8,1.04E-8,8.24E-9,5.80E-9,4.46E-9,2.82E-9,2.05E-9,1.33E-9,9.84E-10,7.81E-10,6.47E-10,4.82E-10,3.84E-10/
    DATA XPEM4/95.0,101.8,108.6,115.4,122.2,135.8,149.,176.,203.,230.,298.,366.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # M5 SHELL
    DATA YPEM5/3.25E5,4.34E5,5.43E5,8.52E5,1.20E6,1.76E6,2.16E6,2.56E6,2.61E6,2.53E6,2.06E6,1.58E6,1.19E6,5.96E5,3.05E5,2.08E5,1.60E5,1.22E5,9.83E4,2.73E4,1.04E4,2.46E3,843.,358.,175.,55.0,21.9,3.92,1.12,.189,.0525,.0193,.00853,.00237,.000889,.000156,4.78E-5,9.95E-6,3.57E-6,1.73E-6,1.01E-6,4.51E-7,2.63E-7,1.09E-7,6.68E-8,3.59E-8,2.40E-8,1.79E-8,1.42E-8,1.04E-8,7.68E-9,4.85E-9,3.54E-9,2.29E-9,1.69E-9,1.35E-9,1.11E-9,8.29E-10,6.61E-10/
    DATA XPEM5/93.8,100.6,107.4,114.2,121.0,134.6,149.,176.,203.,230.,298.,366.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # N1 SHELL
    DATA YPEN1/3.4E3,2.75E4,8.9E4,1.29E5,1.53E5,1.72E5,1.62E5,1.42E5,1.19E5,1.02E5,8.0E4,4.52E4,2.70E4,1.71E4,1.13E4,9.07E3,7.78E3,6.64E3,5.88E3,2.86E3,1.67E3,760.,423.,265.,179.,94.3,56.5,21.5,10.5,3.66,1.69,.915,.549,.242,.127,.0389,.0168,.00523,.00237,.00132,8.36E-4,4.29E-4,2.67E-4,1.24E-4,7.60E-5,4.08E-5,2.73E-5,2.03E-5,1.61E-5,1.14E-5,8.73E-6,5.52E-6,4.03E-6,2.61E-6,1.93E-6,1.53E-6,1.27E-6,9.44E-7,7.52E-7/
    DATA XPEN1/27.5,34.3,41.1,47.9,54.7,68.3,81.7,109.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # N2 SHELL
    DATA YPEN2/1.47E7,1.51E7,1.48E7,1.37E7,1.07E7,8.87E6,5.80E6,3.17E6,1.56E6,8.33E5,4.93E5,3.30E5,2.49E5,2.08E5,1.75E5,1.42E5,9.00E4,5.2E4,4.80E4,4.16E4,3.33E4,2.28E4,1.50E4,1.01E4,8.01E3,6.81E3,5.74E3,5.00E3,2.19E3,1.15E3,431.,204.,111.,66.2,28.7,14.6,4.06,1.58,.404,.150,.0688,.0363,.0132,.00600,.00146,5.51E-4,1.46E-4,6.03E-5,3.14E-5,1.90E-5,9.01E-6,5.30E-6,2.24E-6,1.37E-6,7.38E-7,4.93E-7,3.67E-7,2.91E-7,2.05E-7,1.36E-8/
    DATA XPEN2/14.666,16.0,18.0,20.0,24.0,26.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,96.0,132.,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E8/
    # N3 SHELL
    DATA YPEN3/29.5E7,3.02E7,2.95E7,2.73E7,2.15E7,1.77E7,1.16E7,6.33E6,3.11E6,1.67E6,9.87E5,6.59E5,4.99E5,4.15E5,3.50E5,2.84E5,1.8E5,1.04E5,9.6E4,8.32E4,6.67E4,4.60E4,2.99E4,1.98E4,1.56E4,1.32E4,1.11E4,9.67E3,4.18E3,2.17E3,801.,374.,202.,119.,50.7,25.5,6.95,2.67,.662,.240,.108,.0560,.0198,.00879,.00205,7.45E-4,1.91E-4,7.81E-5,4.09E-5,2.49E-5,1.22E-5,7.44E-6,3.37E-6,2.07E-6,1.11E-6,7.42E-7,5.53E-7,4.38E-7,3.09E-7,2.04E-8/
    DATA XPEN3/13.9996,16.0,18.0,20.0,24.0,26.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,96.0,132.,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E8/ 
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL           J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL           NIST  XCOM WEB SITE
    # STORM AND ISRAEL   NUCL.DATA TABLES   A7(1970)565
    DATA XENE/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAY/861.9,861.2,860.4,858.1,855.0,851.0,846.3,834.6,820.7,776.6,726.0,625.3,539.9,471.2,415.0,327.3,261.5,159.7,108.7,61.54,      39.47,27.32,20.06,12.24,8.281,3.975,2.319,1.068,.6111,.3949,      .2758,.1561,.1002,.09596,.06426,.04467,.02516,.02409,.01119,    6.296D-3,                  4.030D-3,2.799D-3,2.056D-3,1.574D-3,1.244D-3,1.008D-3,4.366D-4,2.456D-4,1.092D-4,6.141D-5,3.930D-5,2.729D-5,1.535D-5,9.825D-6/  
    DATA YCOM/7.696D-3,.01705,.03005,.06694,.1178,.1818,.2579,.4424, .6620,1.304,                        1.995,3.334,4.548,5.610,6.532,8.078,9.364,11.81,13.46,15.33,16.23,16.64,16.77,16.63,16.27,15.17,14.14,12.49,11.26,10.32,9.572,8.429,7.588,7.508,6.790,6.175,5.272,5.207,4.149,3.462,2.990,2.643,2.375,2.162,1.987,1.841,1.363,1.094,.7964,.6329,    .5283,.4552,.3590,.2979/      
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAP/34*1.E-20,1.437D-2,.07008,.2552,.2737,.6887,1.089,      1.443,1.753,2.031,2.281,2.510,2.718,3.486,4.074,4.911,5.470,5.863,6.215,6.672,7.015/        
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFR/1.0,.99972,.99914,.99819,.99678,.99497,.9928,.9872,.9806,.9628,    .9411,.9289,.8961,.8614,.8264,.7925,.7306,.6775,.5925,.5228,.4594,.4008,.3489,.3044,.2682,.2076,.1751,.1385,.1086,.0860,.06344,.05469,.03719,.03106,.02684,.02350,.01682,.007156,.003261,1.552D-4,2.919D-5,1.323D-5,6.572D-9,8.97D-18,1.46D-16/      
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFC/2.8D-22,2.5D-4,9.7D-4,.002164,.003825,.005942,.008489,.01480,.02256,.04151, .0635,.07508,.1046,.1335,.1613,.1878,.2374,.2822,.3564,.4158,.4681,.5156,.5589,.5983,.6333,.7056,.7586,.8297,.8758,.9072,.9281,.9422,.9600,.9717,.9800,.9861,.9936,.99903,.99983,1.0,1.0,1.0,1.0,1.0,1.0/
    # KRYPTON ATOMIC NUMBER
    IZ[1]=36
    AMZ[1]=83.798
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA
    DO 21 J=1,33
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    DO 22 J=1,40
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    22 CONTINUE 
    DO 23 J=1,40 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    23 CONTINUE 
    DO 24 J=1,40
    XPE[1][4][J]=math.log(XPEL3[J])
    YPE[1][4][J]=math.log(YPEL3[J]*1.E-24)
    24 CONTINUE 
    DO 25 J=1,48
    XPE[1][5][J]=math.log(XPEM1[J])
    YPE[1][5][J]=math.log(YPEM1[J]*1.E-24)
    25 CONTINUE
    DO 26 J=1,49
    XPE[1][6][J]=math.log(XPEM2[J])
    YPE[1][6][J]=math.log(YPEM2[J]*1.E-24)
    26 CONTINUE 
    DO 27 J=1,49 
    XPE[1][7][J]=math.log(XPEM3[J])
    YPE[1][7][J]=math.log(YPEM3[J]*1.E-24)
    27 CONTINUE 
    DO 28 J=1,59
    XPE[1][8][J]=math.log(XPEM4[J])
    YPE[1][8][J]=math.log(YPEM4[J]*1.E-24)
    28 CONTINUE 
    DO 29 J=1,59
    XPE[1][9][J]=math.log(XPEM5[J])
    YPE[1][9][J]=math.log(YPEM5[J]*1.E-24)
    29 CONTINUE
    DO 30 J=1,59
    XPE(1,10,J)=math.log(XPEN1[J])
    YPE(1,10,J)=math.log(YPEN1[J]*1.E-24)
    30 CONTINUE 
    DO 31 J=1,60 
    XPE(1,11,J)=math.log(XPEN2[J])
    YPE(1,11,J)=math.log(YPEN2[J]*1.E-24)
    31 CONTINUE 
    DO 32 J=1,60
    XPE(1,12,J)=math.log(XPEN3[J])
    YPE(1,12,J)=math.log(YPEN3[J]*1.E-24)
    32 CONTINUE 
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 33 J=1,54
    XCP[1][J]=math.log(XENE[J])
    YRY[1][J]=math.log(YRAY[J]*1.E-24)
    YCP[1][J]=math.log(YCOM[J]*1.E-24)
    YPP[1][J]=math.log(YPAP[J]*1.E-24)
    33 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 34 J=1,45
    FFAR[1][J]=FFR[J]
    FFAC[1][J]=FFC[J]
    34 CONTINUE
    return
    # end 
def CGAS7(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(30),YPEK(30),XPEL1(36),YPEL1(36),XPEL2(37),YPEL2(37),XPEL3(37),YPEL3(37),XPEM1(41),YPEM1(41),XPEM2(41),YPEM2(41),XPEM3(42),YPEM3(42),XPEM4(45),YPEM4(45),XPEM5(45),YPEM5(45),XPEN1(49),YPEN1(49),XPEN2(50),YPEN2(50),XPEN3(51),YPEN3(51),XPEN4(59),YPEN4(59),XPEN5(59),YPEN5(59),XPEO1(59),YPEO1(59),XPEO2(60),YPEO2(60),XPEO3(60),YPEO3(60),XENE(54),YRAY(54),YCOM(54),YPAP(54),FFR(45),FFC(45)
    # 
    # XENON DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,4,2,2,4,4,6,2,2,4,4,6,2,2,4/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/43.6,23.7,26.2,25.4,11.7,12.1,11.7,12.8,12.6,6.0,5.8,5.6,5.0,4.9,1.7,1.2,1.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/.001,.023,.032,.061,.073,0.11,0.22,0.22,0.32,0.23,0.37,0.73,1.65,2.46,1.67,3.73,8.39,0.00,.001,.002,.005,.028,.038,.082,0.16,0.24,0.14,0.22,0.36,1.63,2.46,1.48,3.36,7.76,0.00,.003,.002,.009,.032,.052,0.10,0.18,0.27,0.15,0.24,0.50,1.67,2.51,1.50,3.41,7.86,0.00,.003,.003,.006,.030,.045,.099,0.17,0.26,0.15,0.23,0.48,1.66,2.50,1.49,3.39,7.83,0.00,0.00,0.00,0.00,.001,.004,.009,.017,.027,.075,0.11,0.25,1.05,1.62,1.36,3.12,7.31,0.00,0.00,0.00,0.00,.003,.002,.011,.020,.032,.075,0.12,0.26,1.08,1.66,1.36,3.14,7.33,0.00,0.00,0.00,0.00,.003,.004,.007,.017,.028,.072,0.11,0.25,1.05,1.61,1.36,3.12,7.31,0.00,0.00,0.00,0.00,.004,.005,.014,.023,.047,.079,0.12,0.27,1.15,1.75,1.37,3.15,7.35,0.00,0.00,0.00,0.00,.004,.006,.013,.028,.037,.078,0.12,0.27,1.13,1.75,1.37,3.14,7.35,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.005,.017,.043,0.33,0.53,1.09,2.70,6.45,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.008,.008,.039,0.31,0.49,1.06,2.57,6.39,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.007,.014,.025,0.28,0.45,1.04,2.63,6.34,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.005,.010,.025,0.17,0.36,0.96,2.51,6.09,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.004,.009,.024,0.21,0.29,0.95,2.50,6.06,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.006,.010,0.14,1.13,3.05,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.002,.004,0.19,0.43,2.35,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.002,.003,0.17,0.76,1.60/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/.0348,.0791,.0494,.0819,.160,.144,.258,.205,.300,.376,.417,.784,1.56,2.32,2.09,3.88,8.51/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K L M AND N SHELLS 
    #  CHEN+CRASEMANN,ANDT 24(1979)13,  FOR K AND L SHELLS 
    #  MCGUIRE,SANDIA REPORTS,          FOR M AND N SHELLS 
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/3.740/,A[1][2][3]/4.524/,A[1][2][4]/5.393/,A[1][2][5]/1.340/,A[1][2][6]/0.867/,A[1][2][7]/1.046/,A[1][2][8]/0.074/,A[1][2][9]/0.078/,A[1,2,10]/0.293/,A[1,2,11]/0.179/,A[1,2,12]/0.215/,A[1,2,15]/0.045/,A[1,2,16]/0.022/,A[1,2,17]/0.025/
    DATA A[1][3][3]/0.558/,A[1][3][4]/11.635/,A[1][3][5]/0.673/,A[1][3][6]/0.191/,A[1][3][7]/1.874/,A[1][3][8]/0.088/,A[1][3][9]/0.287/,A[1,3,10]/0.142/,A[1,3,11]/0.039/,A[1,3,12]/0.372/,A[1,3,14]/0.053/,A[1,3,15]/0.021/,A[1,3,17]/0.043/ 
    DATA A[1][4][4]/5.864/,A[1][4][5]/0.797/,A[1][4][6]/1.842/,A[1][4][7]/1.943/,A[1][4][8]/0.311/,A[1][4][9]/0.318/,A[1,4,10]/0.167/,A[1,4,11]/0.367/,A[1,4,12]/0.388/,A[1,4,13]/0.058/,A[1,4,14]/0.059/,A[1,4,15]/0.026/,A[1,4,16]/0.044/,A[1,4,17]/0.045/
    DATA A[1][5][5]/0.119/,A[1][5][6]/0.131/,A[1][5][7]/0.154/,A[1,5,10]/0.052/,A[1,5,11]/0.027/,A[1,5,12]/0.032/,A[1][6][7]/0.301/,A[1,6,10]/0.028/,A[1,6,12]/0.060/,A[1][7][7]/0.163/,A[1][7][8]/0.041/,A[1][7][9]/0.041/,A[1,7,10]/0.033/,A[1,7,11]/0.061/,A[1,7,12]/0.065/
    # L1 SHELL RATE (MILLIATOMIC UNITS)
    DATA A[2,3,10]/7.052/,A[2,3,11]/5.055/,A[2,3,12]/6.396/,A[2,3,13]/1.751/,A[2,3,14]/2.869/,A[2,3,15]/1.038/,A[2,3,16]/0.556/,A[2,3,17]/0.686/
    DATA A[2,4,10]/9.422/,A[2,4,11]/4.167/,A[2,4,12]/7.694/,A[2,4,13]/8.024/,A[2,4,14]/10.40/,A[2,4,15]/1.385/,A[2,4,16]/0.473/,A[2,4,17]/0.880/
    DATA A[2][5][5]/1.715/,A[2][5][6]/3.423/,A[2][5][7]/6.315/,A[2][5][8]/4.969/,A[2][5][9]/7.119/,A[2,5,10]/0.636/,A[2,5,11]/0.688/,A[2,5,12]/1.261/,A[2,5,13]/0.793/,A[2,5,14]/1.132/,A[2,5,15]/0.097/,A[2,5,16]/0.084/,A[2,5,17]/0.149/
    DATA A[2][6][7]/0.136/,A[2][6][8]/0.147/,A[2][6][9]/1.890/,A[2,6,10]/0.508/,A[2,6,13]/0.024/,A[2,6,14]/0.197/,A[2,6,15]/0.073/
    DATA A[2][7][7]/0.143/,A[2][7][8]/1.290/,A[2][7][9]/0.891/,A[2,7,10]/0.937/,A[2,7,12]/0.044/,A[2,7,13]/0.116/,A[2,7,15]/0.135/
    DATA A[2][8][8]/0.285/,A[2][8][9]/10.175/,A[2,8,10]/0.712/,A[2,8,11]/0.038/,A[2,8,12]/0.255/,A[2,8,13]/0.090/,A[2,8,14]/1.191/,A[2,8,15]/0.102/
    DATA A[2][9][9]/2.873/,A[2,9,10]/1.011/,A[2,9,11]/0.342/,A[2,9,12]/0.185/,A[2,9,13]/1.138/,A[2,9,14]/0.703/,A[2,9,15]/0.146/,A[2,9,16]/0.041/
    DATA A[2,10,10]/0.056/,A[2,10,11]/0.103/,A[2,10,12]/0.189/,A[2,10,13]/0.112/,A[2,10,14]/0.160/,A[2,10,17]/0.022/
    DATA A[2,11,14]/0.038/,A[2,11,17]/0.027/,A[2,13,14]/0.147/,A[2,14,14]/0.046/
    # L2 AUGER SHELL RATE (MILLIATOMIC UNITS)
    DATA A[3,4,10]/1.260/,A[3,4,11]/5.499/,A[3,4,12]/1.934/,A[3,4,13]/7.131/,A[3,4,14]/2.659/,A[3,4,15]/0.176/,A[3,4,16]/0.645/,A[3,4,17]/0.228/
    DATA A[3][5][5]/0.113/,A[3][5][6]/2.762/,A[3][5][7]/0.258/,A[3][5][8]/0.228/,A[3][5][9]/0.388/,A[3,5,11]/0.382/,A[3,5,12]/0.046/,A[3,5,13]/0.025/,A[3,5,16]/0.044/
    DATA A[3][6][6]/2.718/,A[3][6][7]/8.442/,A[3][6][8]/4.636/,A[3][6][9]/7.878/,A[3,6,10]/0.612/,A[3,6,11]/0.939/,A[3,6,12]/1.656/,A[3,6,13]/0.738/,A[3,6,14]/1.253/,A[3,6,15]/0.095/,A[3,6,16]/0.112/,A[3,6,17]/0.195/
    DATA A[3][7][7]/0.223/,A[3][7][8]/5.422/,A[3][7][9]/0.727/,A[3,7,10]/0.050/,A[3,7,11]/1.221/,A[3,7,12]/0.074/,A[3,7,13]/0.746/,A[3,7,14]/0.094/,A[3,7,16]/0.141/
    DATA A[3][8][8]/5.092/,A[3][8][9]/21.648/,A[3,8,10]/0.050/,A[3,8,11]/0.664/,A[3,8,12]/1.008/,A[3,8,13]/1.384/,A[3,8,14]/3.146/,A[3,8,16]/0.077/,A[3,8,17]/0.118/
    DATA A[3][9][9]/1.031/,A[3,9,11]/1.005/,A[3,9,12]/0.125/,A[3,9,13]/2.513/,A[3,9,14]/0.274/,A[3,9,16]/0.114/
    DATA A[3,10,11]/0.086/,A[3,11,11]/0.078/,A[3,11,12]/0.239/,A[3,11,13]/0.105/,A[3,11,14]/0.162/,A[3,12,13]/0.140/,A[3,13,13]/0.379/
    # L3 AUGER SHELL RATE (MILLIATOMIC UNITS)
    DATA A[4][5][5]/0.135/,A[4][5][6]/0.092/,A[4][5][7]/2.942/,A[4][5][8]/0.300/,A[4][5][9]/0.343/,A[4,5,12]/0.407/
    DATA A[4][6][7]/4.935/,A[4][6][8]/0.327/,A[4][6][9]/2.893/,A[4,6,12]/0.705/,A[4,6,14]/0.376/
    DATA A[4][7][7]/6.897/,A[4][7][8]/7.051/,A[4][7][9]/10.607/,A[4,7,10]/0.645/,A[4,7,11]/0.943/,A[4,7,12]/2.335/,A[4,7,13]/1.084/,A[4,7,14]/1.611/,A[4,7,15]/0.101/,A[4,7,16]/0.114/,A[4,7,17]/0.270/
    DATA A[4][8][8]/1.037/,A[4][8][9]/19.841/,A[4,8,10]/0.060/,A[4,8,11]/0.064/,A[4,8,12]/0.944/,A[4,8,13]/0.282/,A[4,8,14]/2.322/,A[4,8,17]/0.105/
    DATA A[4][9][9]/13.486/,A[4,9,10]/0.072/,A[4,9,11]/0.523/,A[4,9,12]/1.592/,A[4,9,13]/2.728/,A[4,9,14]/3.516/,A[4,9,16]/0.063/,A[4,9,17]/0.181/
    DATA A[4,10,12]/0.090/,A[4,11,12]/0.137/,A[4,11,14]/0.070/,A[4,12,12]/0.193/,A[4,12,13]/0.146/,A[4,12,14]/0.240/,A[4,12,17]/0.044/,A[4,13,14]/0.333/,A[4,14,14]/0.233/
    # M SHELL AUGER RATE (10**-4 ATOMIC UNITS)
    DATA A[5,6,13]/300.0/,A[5,6,14]/453.0/,A[5,6,15]/38.0/,A[5,6,16]/33.6/,A[5,6,17]/68.7/
    DATA A[5,7,11]/396.0/,A[5,7,12]/732.0/,A[5,7,13]/213.0/,A[5,7,14]/337.0/,A[5,7,15]/59.1/,A[5,7,16]/55.3/,A[5,7,17]/108.0/
    DATA A[5,8,10]/155.0/,A[5,8,11]/23.4/,A[5,8,12]/13.0/,A[5,8,13]/39.3/,A[5,8,14]/55.9/,A[5,8,15]/15.5/,A[5,8,16]/2.67/,A[5,8,17]/1.60/
    DATA A[5,9,10]/233.0/,A[5,9,11]/6.96/,A[5,9,12]/47.6/,A[5,9,13]/55.9/,A[5,9,14]/86.9/,A[5,9,15]/23.3/,A[5,9,16]/0.88/,A[5,9,17]/5.52/
    DATA A[5,10,10]/20.7/A[5,10,11]/18.2/,A[5,10,12]/36.4/,A[5,10,13]/30.8/,A[5,10,14]/46.1/,A[5,10,15]/3.06/,A[5,10,16]/2.39/,A[5,10,17]/4.78/
    DATA A[5,11,11]/0.92/,A[5,11,12]/2.22/,A[5,11,13]/1.34/,A[5,11,14]/0.84/,A[5,11,15]/1.92/,A[5,11,16]/0.20/,A[5,11,17]/0.24/
    DATA A[5,12,12]/2.95/,A[5,12,13]/1.28/,A[5,12,14]/3.09/,A[5,12,15]/3.84/,A[5,12,16]/0.24/,A[5,12,17]/0.65/
    DATA A[5,13,13]/0.34/,A[5,13,14]/2.36/,A[5,13,15]/3.43/,A[5,13,16]/0.13/,A[5,13,17]/0.13/
    DATA A[5,14,14]/1.10/,A[5,14,15]/5.14/,A[5,14,16]/0.091/,A[5,14,17]/0.30/
    DATA A[5,15,15]/0.43/,A[5,15,16]/0.26/,A[5,15,17]/0.53/,A[5,16,16]/0.011/,A[5,16,17]/0.024/,A[5,17,17]/0.035/
    DATA A[6,7,15]/16.8/,A[6,7,16]/16.4/,A[6,7,17]/21.0/
    DATA A[6,8,10]/188.0/,A[6,8,11]/224.0/,A[6,8,12]/407.0/,A[6,8,13]/77.4/,A[6,8,14]/81.7/,A[6,8,15]/31.5/,A[6,8,16]/25.8/,A[6,8,17]/49.5/
    DATA A[6,9,10]/45.1/,A[6,9,11]/277.0/,A[6,9,12]/34.8/,A[6,9,13]/5.43/,A[6,9,14]/14.0/,A[6,9,15]/5.05/,A[6,9,16]/27.7/,A[6,9,17]/4.08/
    DATA A[6,10,10]/1.59/,A[6,10,11]/18.2/,A[6,10,12]/3.51/,A[6,10,13]/0.77/,A[6,10,14]/2.36/,A[6,10,15]/0.38/,A[6,10,16]/1.37/,A[6,10,17]/0.38/
    DATA A[6,11,11]/13.5/,A[6,11,12]/45.7/,A[6,11,13]/31.6/,A[6,11,14]/54.4/,A[6,11,15]/3.08/,A[6,11,16]/2.80/,A[6,11,17]/5.51/
    DATA A[6,12,12]/1.07/,A[6,12,13]/4.10/,A[6,12,14]/2.76/,A[6,12,15]/0.35/,A[6,12,16]/3.91/,A[6,12,17]/0.21/
    DATA A[6,13,13]/1.13/,A[6,13,14]/3.67/,A[6,13,15]/0.097/,A[6,13,16]/2.94/,A[6,13,17]/0.39/
    DATA A[6,14,14]/0.82/,A[6,14,15]/0.279/,A[6,14,16]/5.17/,A[6,14,17]/0.26/
    DATA A[6,15,15]/0.026/,A[6,15,16]/0.301/,A[6,15,17]/0.046/,A[6,16,16]/0.15/,A[6,16,17]/0.53/,A[6,17,17]/0.023/
    DATA A[7,8,10]/57.2/,A[7,8,11]/36.6/,A[7,8,12]/236.0/,A[7,8,13]/29.4/,A[7,8,14]/17.7/,A[7,8,15]/7.45/,A[7,8,16]/4.82/,A[7,8,17]/27.0/
    DATA A[7,9,10]/222.0/,A[7,9,11]/223.0/,A[7,9,12]/555.0/,A[7,9,13]/81.9/,A[7,9,14]/162.0/,A[7,9,15]/37.4/,A[7,9,16]/30.4/,A[7,9,17]/77.5/
    DATA A[7,10,10]/1.59/,A[7,10,11]/1.76/,A[7,10,12]/19.9/,A[7,10,13]/1.49/,A[7,10,14]/1.63/,A[7,10,15]/0.38/,A[7,10,16]/0.19/,A[7,10,17]/1.56/
    DATA A[7,11,11]/0.38/,A[7,11,12]/23.1/,A[7,11,13]/0.61/,A[7,11,14]/2.82/,A[7,11,15]/0.17/,A[7,11,16]/0.075/,A[7,11,17]/1.99/
    DATA A[7,12,12]/36.7/,A[7,12,13]/37.2/,A[7,12,14]/52.2/,A[7,12,15]/3.25/,A[7,12,16]/2.78/,A[7,12,17]/7.59/
    DATA A[7,13,13]/0.33/,A[7,13,14]/3.11/,A[7,13,15]/0.177/,A[7,13,16]/0.057/,A[7,13,17]/3.53/
    DATA A[7,14,14]/2.17/,A[7,14,15]/0.198/,A[7,14,16]/0.26/,A[7,14,17]/4.90/
    DATA A[7,15,15]/0.026/,A[7,15,16]/0.023/,A[7,15,17]/0.324/,A[7,16,16]/0.004/,A[7,16,17]/0.266/,A[7,17,17]/0.421/
    DATA A[8,10,10]/0.012/,A[8,10,11]/1.25/,A[8,10,12]/0.88/,A[8,10,13]/20.5/,A[8,10,14]/2.96/,A[8,10,15]/0.009/,A[8,10,16]/0.123/,A[8,10,17]/0.065/
    DATA A[8,11,11]/0.56/,A[8,11,12]/4.25/,A[8,11,13]/17.8/,A[8,11,14]/2.16/,A[8,11,15]/0.133/,A[8,11,16]/0.079/,A[8,11,17]/0.297/
    DATA A[8,12,12]/1.55/,A[8,12,13]/43.0/,A[8,12,14]/2.02/,A[8,12,15]/0.090/,A[8,12,16]/0.398/,A[8,12,17]/0.284/
    DATA A[8,13,13]/36.8/,A[8,13,14]/86.3/,A[8,13,15]/4.70/,A[8,13,16]/3.10/,A[8,13,17]/7.24/
    DATA A[8,14,14]/13.5/,A[8,14,15]/0.35/,A[8,14,16]/0.24/,A[8,14,17]/0.25/
    DATA A[8,15,15]/0.0008/,A[8,15,16]/0.015/,A[8,15,17]/0.008/,A[8,16,16]/0.0072/,A[8,16,17]/0.0479/,A[8,17,17]/0.0169/
    DATA A[9,10,10]/0.012/,A[9,10,11]/0.35/,A[9,10,12]/1.78/,A[9,10,13]/1.97/,A[9,10,14]/21.5/,A[9,10,15]/0.009/,A[9,10,16]/0.022/,A[9,10,17]/0.166/
    DATA A[9,11,11]/0.025/,A[9,11,12]/3.46/,A[9,11,13]/0.36/,A[9,11,14]/22.4/,A[9,11,15]/0.035/,A[9,11,16]/0.003/,A[9,11,17]/0.334/
    DATA A[9,12,12]/2.88/,A[9,12,13]/2.42/,A[9,12,14]/3.98/,A[9,12,15]/0.188/,A[9,12,16]/0.266/,A[9,12,17]/0.455/
    DATA A[9,13,13]/5.90/,A[9,13,14]/63.7/,A[9,13,15]/0.23/,A[9,13,16]/0.051/,A[9,13,17]/0.274/
    DATA A[9,14,14]/66.9/,A[9,14,15]/4.82/,A[9,14,16]/3.74/,A[9,14,17]/6.76/
    DATA A[9,15,15]/0.0008/,A[9,15,16]/0.003/,A[9,15,17]/0.021/,A[9,16,16]/0.0003/,A[9,16,17]/0.0380/,A[9,17,17]/0.0388/
    # N SHELL AUGER RATES (10**-4 ATOMIC UNITS)
    DATA A[10,11,15]/98.5/,A[10,11,16]/80.3/,A[10,11,17]/229.0/
    DATA A[10,12,15]/197.0/,A[10,12,16]/229.0/,A[10,12,17]/389.0/
    DATA A[10,13,13]/11.6/,A[10,13,14]/295.0/,A[10,13,15]/74.7/,A[10,13,16]/12.4/,A[10,13,17]/64.2/
    DATA A[10,14,14]/91.4/,A[10,14,15]/112.0/,A[10,14,16]/51.4/,A[10,14,17]/63.5/
    DATA A[10,15,15]/5.72/,A[10,15,16]/5.83/,A[10,15,17]/11.7/
    DATA A[10,16,16]/0.53/,A[10,16,17]/1.95/,A[10,17,17]/2.04/
    DATA A[11,13,15]/171.0/,A[11,13,16]/152.0/,A[11,13,17]/394.0/
    DATA A[11,14,15]/25.2/,A[11,14,16]/139.0/,A[11,14,17]/35.9/
    DATA A[11,15,15]/0.390/,A[11,15,16]/8.04/,A[11,15,17]/1.05/
    DATA A[11,16,16]/4.14/,A[11,16,17]/13.7/,A[11,17,17]/0.42/
    DATA A[12,13,15]/32.2/,A[12,13,16]/26.9/,A[12,13,17]/133.0/
    DATA A[12,14,15]/164.0/,A[12,14,16]/188.0/,A[12,14,17]/374.0/
    DATA A[12,15,15]/0.390/,A[12,15,16]/0.53/,A[12,15,17]/8.56/
    DATA A[12,16,16]/0.15/,A[12,16,17]/6.98/,A[12,17,17]/11.1/
    DATA A[13,15,15]/6.00/,A[13,15,16]/2.69/,A[13,15,17]/3.41/
    DATA A[13,16,16]/3.13/,A[13,16,17]/10.7/,A[13,17,17]/4.21/
    DATA A[14,15,15]/6.00/,A[14,15,16]/1.60/,A[14,15,17]/4.50/
    DATA A[14,16,16]/0.59/,A[14,16,17]/7.55/,A[14,17,17]/9.90/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/2.88E-4/,R(1,3)/2.842/,R(1,4)/5.26/,R(1,5)/7.93E-5/,R(1,6)/0.494/,R(1,7)/0.958/,R(1,8)/4.87E-3/,R(1,9)/6.66E-3/,R(1,10)/1.86E-5/,R(1,11)/.0986/,R(1,12)/.1916/,R(1,13)/8.588E-4/,R(1,14)/1.2882E-3/,R(1,16)/.01057/,R(1,17)/.02113/
    # L1 SHELL
    DATA R(2,3)/7.12E-5/,R(2,4)/1.341E-3/,R(2,5)/6.67E-8/,R(2,6)/.0498/,R(2,7)/.0785/,R(2,8)/7.42E-4/,R(2,9)/1.109E-3/,R(2,10)/2.37E-8/,R(2,11)/.01074/R(2,12)/.01737/,R(2,13)/9.03E-5/,R(2,14)/1.372E-4/,R(2,15)/3.87E-9/,R(2,16)/1.221E-3/,R(2,17)/1.897E-3/
    # L2 SHELL
    DATA R(3,4)/2.17E-7/,R(3,5)/6.49E-3/,R(3,6)/1.84E-8/,R(3,7)/1.001E-4/,R(3,8)/.2312/,R(3,9)/1.92E-6/,R(3,10)/1.431E-3/,R(3,11)/5.58E-9/,R(3,12)/2.22E-5/,R(3,13)/.0345/,R(3,14)/3.13E-7/,R(3,15)/2.146E-4/,R(3,16)/6.70E-10/,R(3,17)/2.43E-6/
    # L3 SHELL
    DATA R(4,5)/8.22E-3/,R(4,6)/4.98E-5/,R(4,7)/4.63E-5/,R(4,8)/.02188/,R(4,9)/.1939/,R(4,10)/1.789E-3/,R(4,11)/1.04E-5/,R(4,12)/9.99E-6/,R(4,13)/3.18E-3/,R(4,14)/.02838/,R(4,15)/2.677E-4/,R(4,16)/1.18E-6/,R(4,17)/1.09E-6/
    # RADIATIVE TRANSITIONS MANSON AND KENNEDY ANDT 14(1974)111
    # DIPOLE ONLY NON-RELATIVISTIC CALC.  UNITS   1/SEC
    # M1 SHELL
    DATA R(5,6)/6.3377E10/,R(5,7)/1.26753E11/,R(5,11)/1.8393E12/,R(5,12)/3.6785E12/,R(5,16)/2.2512E11/,R(5,17)/4.5023E11/
    DATA R(6,8)/8.8395E10/,R(6,9)/1.3259E11/,R(6,10)/2.8247E11/,R(6,13)/5.7349E11/,R(6,14)/8.6023E11/,R(6,15)/4.2237E10/
    DATA R(7,8)/1.7679E11/,R(7,9)/2.6518E11/,R(7,10)/5.6494E11/,R(7,13)/1.1470E12/,R(7,14)/1.7205E12/,R(7,15)/8.4473E10/
    DATA R(8,11)/4.6363E10/,R(8,12)/9.2725E10/,R(8,16)/4.9477E9/,R(8,17)/9.8955E9/
    DATA R(9,11)/6.9544E10/,R(9,12)/1.3909E11/,R(9,16)/7.4216E9/,R(9,17)/1.4843E10/
    DATA R(10,11)/1.7296E10/,R(10,12)/3.4593E10/,R(10,16)/1.8626E10/,R(10,17)/3.7251E10/
    DATA R(11,13)/2.6747E10/,R(11,14)/4.012E10/,R(11,15)/1.2116E10/
    DATA R(12,13)/5.3493E10/,R(12,14)/8.024E10/,R(12,15)/2.4233E10/
    DATA R(13,16)/1.5247E9/,R(13,17)/3.0493E9/,R(14,16)/2.287E9/,R(14,17)/4.574E9/,R(15,16)/1.5316E9/,R(15,17)/3.0633E9/
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : KUTZNER ET AL          PHYS REV A40(1989)5052
    #                : KENNEDY AND MANSON     PHYS REV A5(1972)227
    #                : SCOFIELD               UCRL-51326
    #                : WEST AND MORTON        ANDT 22(1978)103
    #                : SAMSON AND STOLTE      J.ELEC.SPEC. 123(2002)265
    #                : CHAN ET AL             PHYS REV A46(1992)149
    # KSHELL
    DATA YPEK/5920.,4040.,2262.,1381.,626.,335.,106.,46.7,15.1,6.95,3.93,2.52,1.31,.817,.378,.231,.123,.0816,.0607,.0479,.0335,.0259,.0160,.0117,.00749,.00553,.00438,.00363,.00271,.00215/
    DATA XPEK/34561.,4.0E4,5.0E4,6.0E4,8.E4,1.E5,1.5E5,2.E5,3.E5,4.E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEL1/2.34E4,1.97E4,1.19E4,7.80E3,3.42E3,1.82E3,712.,353.,202.,126.,59.1,32.4,10.7,4.82,1.59,.746,.424,.273,.142,.0887,.0409,.0250,.0133,.00883,.00657,.00518,.00362,.00280,.00174,.00126,.000810,.000598,.000474,.000393,.000293,.000232/
    DATA XPEL1/5453.,6.0E3,8.0E3,1.E4,1.5E4,2.E4,3.E4,4.E4,5.E4,6.E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEL2/4.62E4,4.10E4,3.25E4,1.49E4,7.91E3,2.40E3,999.,279.,111.,53.4,29.3,11.3,5.42,1.43,.567,.160,.0686,.0367,.0225,.0109,.00653,.00282,.00172,.000916,.000609,.000453,.000357,.000250,.000193,.000120,8.70E-5,5.59E-5,4.12E-5,3.27E-5,2.71E-5,2.02E-5,1.60E-5/
    DATA XPEL2/5107.,5455.,6000.,8000.,1.E4,1.5E4,2.E4,3.E4,4.E4,5.E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEL3/9.85E4,9.25E4,5.74E4,2.53E4,1.32E4,3.86E3,1.56E3,417.,160.,75.0,40.2,14.9,6.89,1.71,.645,.173,.072,.0381,.0233,.0114,.0069,.00306,.00187,.000994,.000660,.000491,.000388,.000271,.000209,.000130,9.44E-5,6.06E-5,4.47E-5,3.55E-5,2.94E-5,2.19E-5,1.74E-5/
    DATA XPEL3/4786.,5000.,6000.,8000.,1.E4,1.5E4,2.E4,3.E4,4.E4,5.E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,  1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEM1/6.72E4,4.87E4,3.22E4,1.65E4,9.91E3,6.55E3,4.62E3,2.61E3,1.65E3,692.,363.,140.,69.3,39.5,24.7,11.6,6.38,2.11,.956,.317,.148,.0844,.0543,.0283,.0177,.00814,.00497,.00264,.00176,.00131,.00103,7.21E-4,5.57E-4,3.46E-4,2.51E-4,1.61E-4,1.19E-4,9.44E-5,7.82E-5,5.84E-5,4.63E-5/
    DATA XPEM1/1148.7,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEM2/1.20E5,6.99E4,4.49E4,2.12E4,1.16E4,7.05E3,4.58E3,2.24E3,1.25E3,411.,179.,52.7,21.5,10.6,5.89,2.32,1.12,.301,.120,.0343,.0147,.0079,.00486,.00237,.00141,6.11E-4,3.73E-4,1.98E-4,1.32E-4,9.81E-5,7.74E-5,5.42E-5,4.18E-5,2.59E-5,1.89E-5,1.21E-5,8.93E-6,7.09E-6,5.87E-6,4.38E-6,3.47E-6/
    DATA XPEM2/1002.1,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEM3/2.85E5,2.58E5,1.48E5,9.05E4,4.06E4,2.16E4,1.28E4,8.17E3,3.89E3,2.13E3,672.,284.,80.0,31.5,15.1,8.19,3.09,1.44,.364,.139,.0375,.0157,.00830,.00509,.00249,.00151,6.67E-4,4.07E-4,2.17E-4,1.44E-4,1.07E-4,8.45E-5,5.91E-5,4.57E-5,2.83E-5,2.06E-5,1.32E-5,9.75E-6,7.74E-6,6.41E-6,4.78E-6,3.79E-6/
    DATA XPEM3/940.6,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEM4/1.37E6,1.02E6,8.11E5,6.60E5,5.58E5,2.01E5,8.88E4,2.59E4,1.02E4,4.81E3,2.56E3,915.,402.,85.5,27.5,5.35,1.64,.649,.305,.0924,.0368,.00713,.00230,.000501,.000181,8.53E-5,4.78E-5,2.04E-5,1.10E-5,4.20E-6,2.56E-6,1.36E-6,9.06E-7,6.75E-7,5.32E-7,3.72E-7,2.87E-7,1.78E-7,1.30E-7,8.32E-8,6.14E-8,4.87E-8,4.06E-8,3.01E-8,2.39E-8/
    DATA XPEM4/689.,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEM5/2.20E6,1.48E6,1.19E6,9.68E5,8.15E5,2.90E5,1.27E5,3.66E4,1.43E4,6.70E3,3.54E3,1.25E3,547.,114.,36.3,6.88,2.07,.806,.373,.110,.0433,.00815,.00259,.000561,.000208,.000102,5.86E-5,2.66E-5,1.57E-5,6.43E-6,3.92E-6,2.09E-6,1.39E-6,1.03E-6,8.15E-7,5.70E-7,4.40E-7,2.73E-7,1.98E-7,1.27E-7,9.40E-8,7.46E-8,6.18E-8,4.61E-8,3.66E-8/
    DATA XPEM5/676.4,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEN1/1.65E5,1.33E5,9.75E4,6.86E4,4.85E4,3.97E4,3.46E4,2.99E4,2.67E4,1.37E4,8.27E3,3.97E3,2.31E3,1.50E3,1.05E3,585.,367.,153.,79.7,30.7,15.2,8.66,5.42,2.55,1.40,.463,.210,.0696,.0326,.0186,.0119,.00622,.00388,.00179,.00109,5.81E-4,3.86E-4,2.87E-4,2.27E-4,1.59E-4,1.23E-4,7.60E-5,5.52E-5,3.55E-5,2.62E-5,2.08E-5,1.72E-5,1.28E-5,1.02E-5/
    DATA XPEN1/213.2,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEN2/1.29E5,1.23E5,1.06E5,8.97E4,6.97E4,5.24E4,4.41E4,3.89E4,3.41E4,3.08E4,1.60E4,9.50E3,4.27E3,2.31E3,1.39E3,905.,443.,248.,82.2,36.0,10.7,4.38,2.16,1.21,.477,.231,.0623,.0249,.00713,.00306,.00164,.00101,4.93E-4,2.94E-4,1.27E-4,7.75E-5,4.12E-5,2.74E-5,2.04E-5,1.61E-5,1.13E-5,8.69E-6,5.39E-6,3.92E-6,2.52E-6,1.86E-6,1.47E-6,1.22E-6,9.10E-7,7.22E-7/
    DATA XPEN2/146.7,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEN3/3.85E5,3.75E5,3.37E5,2.86E5,2.21E5,1.61E5,1.16E5,9.58E4,8.36E4,7.23E4,6.46E4,3.21E4,1.85E4,8.03E3,4.23E3,2.50E3,1.60E3,766.,421.,134.,56.9,16.2,6.41,3.08,1.67,.633,.296,.0748,.0286,.00774,.00324,.00172,.00105,5.17E-4,3.12E-4,1.38E-4,8.42E-5,4.48E-5,2.98E-5,2.22E-5,1.75E-5,1.22E-5,9.45E-6,5.86E-6,4.26E-6,2.73E-6,2.02E-6,1.60E-6,1.33E-6,9.89E-7,7.84E-7/
    DATA XPEN3/145.5,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEN4/5.08E5,4.60E5,5.00E6,8.00E6,9.60E6,8.60E6,4.60E6,9.20E5,2.94E5,1.02E5,2.48E5,3.12E5,3.00E5,2.14E5,1.43E5,1.12E5,9.32E4,7.69E4,6.60E4,2.56E4,1.21E4,3.81E3,1.58E3,769.,418.,154.,69.1,15.2,4.96,.981,.303,.121,.0570,.0174,.00696,.00135,4.38E-4,9.55E-5,3.45E-5,1.63E-5,9.14E-6,3.88E-6,2.11E-6,7.87E-7,4.80E-7,2.56E-7,1.70E-7,1.26E-7,9.97E-8,6.98E-8,5.39E-8,3.34E-8,2.43E-8,1.56E-8,1.15E-8,9.13E-9,7.56E-9,5.64E-9,4.47E-9/
    DATA XPEN4/69.5,76.3,83.1,89.9,96.7,110.3,123.9,151.1,178.3,205.5,273.5,341.5,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEN5/7.62E5,6.90E5,7.50E6,1.20E7,1.44E7,1.29E7,6.90E7,1.38E6,4.40E5,1.53E5,3.72E5,4.67E5,4.54E5,3.19E5,2.11E5,1.64E5,1.36E5,1.12E5,9.63E4,3.68E4,1.72E4,5.38E3,2.21E3,1.07E3,577.,211.,93.6,20.2,6.51,1.26,.380,.149,.0692,.0206,.00810,.00153,4.90E-4,1.07E-4,3.94E-5,1.93E-5,1.12E-5,5.12E-6,2.94E-6,1.24E-6,7.57E-7,4.03E-7,2.68E-7,1.99E-7,1.57E-7,1.10E-7,8.49E-8,5.35E-8,3.83E-8,2.46E-8,1.81E-8,1.44E-8,1.19E-8,8.89E-9,7.05E-9/
    DATA XPEN5/67.5,74.3,81.1,87.9,94.7,108.3,121.9,149.1,176.3,203.5,271.5,339.5,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E8,1.0E8/
    DATA YPEO1/5.00E5,1.80E5,6.00E4,2.00E5,5.00E5,7.50E5,8.50E5,6.00E5,4.00E4,7.00E3,2.00E4,2.50E4,1.88E4,1.22E4,8.20E3,6.58E3,5.67E3,4.85E3,4.33E3,2.14E3,1.28E3,604.,349.,226.,157.,87.5,54.8,22.9,12.0,4.61,2.28,1.30,.813,.382,.210,.0695,.0315,.0105,.00490,.00279,.00179,9.33E-4,5.84E-4,2.69E-4,1.64E-4,8.74E-5,5.81E-5,4.32E-5,3.41E-5,2.38E-5,1.84E-5,1.14E-5,8.30E-6,5.33E-6,3.93E-6,3.12E-6,2.58E-6,1.93E-6,1.53E-6/
    DATA XPEO1/23.3,30.0,40.0,50.0,70.0,80.0,90.0,100.0,130.0,160.0,190.,250.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEO2/2.20E7,1.20E7,2.5E6,6.5E5,4.0E5,2.2E5,3.3E5,6.0E5,5.5E5,6.0E4,2.5E4,2.71E4,1.87E4,1.30E4,9.15E3,6.54E3,5.37E3,4.69E3,4.07E3,3.63E3,1.82E3,1.07E3,475.,255.,154.,102.,49.8,28.0,9.26,4.06,1.21,.495,.245,.137,.054,.0262,.00704,.00282,8.06E-4,3.47E-4,1.86E-4,1.14E-4,5.57E-5,3.33E-5,1.44E-5,8.79E-6,4.68E-6,3.11E-6,2.31E-6,1.82E-6,1.28E-6,9.86E-7,6.11E-7,4.44E-7,2.85E-7,2.11E-7,1.67E-7,1.38E-7,1.03E-7,8.18E-8/
    DATA XPEO2/13.43,20.0,30.0,40.0,50.0,60.0,80.0,90.0,100.,130.,150.,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    DATA YPEO3/4.40E7,2.40E7,5.0E6,1.3E6,8.0E5,4.4E5,6.6E5,1.2E6,1.1E6,1.2E5,5.0E4,5.42E4,3.74E4,2.60E4,1.83E4,1.33E4,1.07E4,9.38E3,8.14E3,7.26E3,3.64E3,2.14E3,950.,510.,308.,204.,99.6,56.0,18.5,8.12,2.42,.990,.490,.274,.108,.0524,.01408,.00564,1.62E-3,6.94E-4,3.72E-4,2.28E-4,1.12E-4,6.66E-5,2.88E-5,1.76E-5,9.35E-6,6.22E-6,4.63E-6,3.65E-6,2.55E-6,1.97E-6,1.22E-6,8.89E-7,5.71E-7,4.21E-7,3.34E-7,2.77E-7,2.06E-7,1.64E-7/
    DATA XPEO3/12.129843,20.0,30.0,40.0,50.0,60.0,80.0,90.0,100.,130.,150.,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA DATA
    # HUBBEL          J.PHYS.CHEM.REF.DATA  4(1975)471
    # HUBBEL          NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL DATA TABLES A7(1970)565
    DATA XENE/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAY/1939.,1938.,1936.,1930.,1923.,1914.,1902.,1877.,1844.,1744.,1631.,1413.,1229.,1078.,952.3,755.3,613.6,403.8,288.3,164.5,      107.1,76.13,56.90,35.05,23.74,11.55,6.836,3.192,1.839,1.193,      .8365,.4755,.3061,.2932,.1967,.1369,.07712,.07390,.03436,.01934,.01238,8.599D-3,6.318D-3,4.838D-3,3.823D-3,3.096D-3,1.292D-3,  7.268D-4,3.229D-4,1.817D-4,1.163D-4,8.073D-5,4.542D-5,2.906D-5/  
    DATA YCOM/.01126,.02527,.04472,.09970,.1751,.2695,.3812,.6491,   .9629,1.858,                        2.801,4.628,6.265,7.664,8.876,10.96,12.75,16.22,18.50,21.21,22.64,23.40,23.78,23.90,23.57,22.22,20.83,18.52,16.76,15.40,14.30,12.61,11.36,11.24,10.17,9.252,7.902,7.805,6.222,5.191,4.484,3.964,3.563,3.243,2.981,2.762,2.044,1.641,1.195,.9493,    .7924,.6828,.5385,.4469/      
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAP/34*1.E-20,4.173D-2,.19300,.6478,.6918,1.628,2.496,      3.247,3.895,4.472,4.993,5.465,5.899,7.429,8.685,10.46,11.59,12.51,13.23,14.25,14.97/        
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFR/1.0,.99978,.99913,.99809,.99661,.99470,.9924,.9867,.9794,.9613,    .9391,.9267,.8941,.8604,.8270,.7950,.7372,.6872,.6026,.5298,.4676,.4169,.3772,.3463,.3215,.2715,.2265,.1533,.1126,.09657,.08052,.07033,.04998,.03619,.02807,.02498,.01881,.01213,.006993,5.581D-4,  1.226D-4,5.913D-5,4.711D-8,1.29D-16,3.96D-25/       
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFC/1.9D-22,2.41D-4,9.63D-4,.002152,.003802,.005894,.008406,.01458,.02211,.04015,.06054,.07113,.09769,.1236,.1487,.1730,.2180,.2572,.3206,.3735,.4228,.4689,.5115,.5496,.5831,.6485,.6969,.7681,.8189,.8565,.8856,.9080,.9383,.9559,.9667,.9739,.9837,.9954,.9987,.99998,1.0,1.0,1.0,1.0,1.0/
    # XENON ATOMIC NUMBER
    IZ[1]=54
    AMZ[1]=131.293
    # CONVERT SHAKE OFF FROM  % TO  PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC DATA 
    DO 21 J=1,30
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    DO 22 J=1,36
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    22 CONTINUE 
    DO 23 J=1,37 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    23 CONTINUE 
    DO 24 J=1,37
    XPE[1][4][J]=math.log(XPEL3[J])
    YPE[1][4][J]=math.log(YPEL3[J]*1.E-24)
    24 CONTINUE 
    DO 25 J=1,41
    XPE[1][5][J]=math.log(XPEM1[J])
    YPE[1][5][J]=math.log(YPEM1[J]*1.E-24)
    25 CONTINUE
    DO 26 J=1,41
    XPE[1][6][J]=math.log(XPEM2[J])
    YPE[1][6][J]=math.log(YPEM2[J]*1.E-24)
    26 CONTINUE 
    DO 27 J=1,42 
    XPE[1][7][J]=math.log(XPEM3[J])
    YPE[1][7][J]=math.log(YPEM3[J]*1.E-24)
    27 CONTINUE 
    DO 28 J=1,45
    XPE[1][8][J]=math.log(XPEM4[J])
    YPE[1][8][J]=math.log(YPEM4[J]*1.E-24)
    28 CONTINUE 
    DO 29 J=1,45
    XPE[1][9][J]=math.log(XPEM5[J])
    YPE[1][9][J]=math.log(YPEM5[J]*1.E-24)
    29 CONTINUE
    DO 30 J=1,49
    XPE(1,10,J)=math.log(XPEN1[J])
    YPE(1,10,J)=math.log(YPEN1[J]*1.E-24)
    30 CONTINUE 
    DO 31 J=1,50 
    XPE(1,11,J)=math.log(XPEN2[J])
    YPE(1,11,J)=math.log(YPEN2[J]*1.E-24)
    31 CONTINUE 
    DO 32 J=1,51
    XPE(1,12,J)=math.log(XPEN3[J])
    YPE(1,12,J)=math.log(YPEN3[J]*1.E-24)
    32 CONTINUE 
    DO 33 J=1,59
    XPE(1,13,J)=math.log(XPEN4[J])
    YPE(1,13,J)=math.log(YPEN4[J]*1.E-24)
    33 CONTINUE 
    DO 34 J=1,59 
    XPE(1,14,J)=math.log(XPEN5[J])
    YPE(1,14,J)=math.log(YPEN5[J]*1.E-24)
    34 CONTINUE 
    DO 35 J=1,59
    XPE(1,15,J)=math.log(XPEO1[J])
    YPE(1,15,J)=math.log(YPEO1[J]*1.E-24)
    35 CONTINUE 
    DO 36 J=1,60 
    XPE(1,16,J)=math.log(XPEO2[J])
    YPE(1,16,J)=math.log(YPEO2[J]*1.E-24)
    36 CONTINUE 
    DO 37 J=1,60
    XPE(1,17,J)=math.log(XPEO3[J])
    YPE(1,17,J)=math.log(YPEO3[J]*1.E-24)
    37 CONTINUE 
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 38 J=1,54
    XCP[1][J]=math.log(XENE[J])
    YRY[1][J]=math.log(YRAY[J]*1.E-24)
    YCP[1][J]=math.log(YCOM[J]*1.E-24)
    YPP[1][J]=math.log(YPAP[J]*1.E-24)
    38 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 39 J=1,45
    FFAR[1][J]=FFR[J]
    FFAC[1][J]=FFC[J]
    39 CONTINUE
    # end
def CGAS8(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEK(49),YPEK(49),XPEL1(54),YPEL1(54),XPEL2(54),YPEL2(54),XCOMC(54),YRAYC(54),YCOMC(54),YPAPC(54),FFRC(45),FFCC(45)
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # 
    #  CH4 DATA FOR CASCADE CALCULATIONS
    #
    # CARBON DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.858/,A[1][2][3]/0.824/,A[1][3][3]/0.378/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/1.50E-14/,R(1,3)/3.45E-5/,R(1,4)/6.88E-5/
    # L1 SHELL
    DATA R(2,3)/1.20E-7/,R(2,4)/2.41E-7/
    # L2 SHELL
    DATA R(3,4)/1.55E-21/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8/
    DATA XPEK/285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9/
    DATA XPEL1/18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12/
    DATA XPEL2/6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    DATA XCOMC/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYC/23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504D-3,4.792D-3,   3.070D-3,                  2.133D-3,1.200D-3,7.682D-4,7.355D-4,4.917D-4,3.415D-4,1.921D-4,1.839D-4,8.539D-5,4.803D-5,3.074D-5,2.135D-5,1.568D-5,1.201D-5,9.488D-6,7.685D-6,3.415D-6,1.921D-6,8.537D-7,4.802D-7,3.073D-7,2.134D-7,1.200D-7,7.682D-8/  
    DATA YCOMC/3.044D-3,6.469D-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,                  .7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,    .08805,.07586,.05983,.04966/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPC/34*1.E-20,2.870D-4,1.594D-3,6.356D-3,6.852D-3,.01844, .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRC/1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198D-4,3.06D-4,6.295D-5, 2.027D-5,5.398D-7,8.455D-8,3.52D-8,5.993D-12,2.767D-21,2.80D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCC/1.7D-21,6.317D-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=12.0107
    # 
    # ATOMIC HYDROGEN DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    # STORM AND ISRAEL    NUCL.DATA TABLES  A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[2]=1
    AMZ[2]=4.03176
    #
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    PRSHBT[2][I]=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    PRSH[2][I][J]=PRBSHH[J][I]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM,PRSUMH
    # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    ESH[2][I]=ESHH[I]
    INIOCC[1][I]=INIOC[I]
    INIOCC[2][I]=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    4 AUG[2][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=A[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    R[I][J]=R[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=R[I][J]
    13 RAD[2][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON DATA
    DO 21 J=1,49
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    21 CONTINUE
    DO 22 J=1,54
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    23 CONTINUE
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 24 J=1,54
    XPE[2][1][J]=math.log(XPEKH[J])
    # ALLOW FOR 4 HYDROGEN ATOMS
    YPE[2][1][J]=math.log(YPEKH[J]*4.0*1.E-24)
    24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XCOMC[J])
    XCP[2][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYC[J]*1.E-24)
    YRY[2][J]=math.log(YRAYH[J]*4.0*1.E-24)
    YCP[1][J]=math.log(YCOMC[J]*1.E-24)
    YCP[2][J]=math.log(YCOMH[J]*4.0*1.E-24)
    YPP[1][J]=math.log(YPAPC[J]*1.E-24)
    YPP[2][J]=math.log(YPAPH[J]*4.0*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 29 J=1,45
    FFAR[1][J]=FFRC[J]
    FFAR[2][J]=FFRH[J]
    FFAC[1][J]=FFCC[J]
    FFAC[2][J]=FFCH[J]
    29 CONTINUE
    return 
    # end
def CGAS9(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEK(49),YPEK(49),XPEL1(54),YPEL1(54),XPEL2(54),YPEL2(54),XCOMC(54),YRAYC(54),YCOMC(54),YPAPC(54),FFRC(45),FFCC(45)
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    #
    # 
    #  C2H6 DATA FOR CASCADE CALCULATION
    # 
    # CARBON DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.858/,A[1][2][3]/0.824/,A[1][3][3]/0.378/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/1.50E-14/,R(1,3)/3.45E-5/,R(1,4)/6.88E-5/
    # L1 SHELL
    DATA R(2,3)/1.20E-7/,R(2,4)/2.41E-7/
    # L2 SHELL
    DATA R(3,4)/1.55E-21/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8/
    DATA XPEK/285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9/
    DATA XPEL1/18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12/
    DATA XPEL2/6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    DATA XCOMC/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYC/23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504D-3,4.792D-3,   3.070D-3,                  2.133D-3,1.200D-3,7.682D-4,7.355D-4,4.917D-4,3.415D-4,1.921D-4,1.839D-4,8.539D-5,4.803D-5,3.074D-5,2.135D-5,1.568D-5,1.201D-5,9.488D-6,7.685D-6,3.415D-6,1.921D-6,8.537D-7,4.802D-7,3.073D-7,2.134D-7,1.200D-7,7.682D-8/  
    DATA YCOMC/3.044D-3,6.469D-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,                  .7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,    .08805,.07586,.05983,.04966/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPC/34*1.E-20,2.870D-4,1.594D-3,6.356D-3,6.852D-3,.01844, .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRC/1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198D-4,3.06D-4,6.295D-5, 2.027D-5,5.398D-7,8.455D-8,3.52D-8,5.993D-12,2.767D-21,2.80D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCC/1.7D-21,6.317D-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=24.0214
    # 
    # ATOMIC HYDROGEN DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    # STORM AND ISRAEL    NUCL.DATA TABLES  A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[2]=1
    AMZ[2]=6.04764
    #
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    PRSHBT[2][I]=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    PRSH[2][I][J]=PRBSHH[J][I]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM,PRSUMH
    # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    ESH[2][I]=ESHH[I]
    INIOCC[1][I]=INIOC[I]
    INIOCC[2][I]=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    4 AUG[2][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=A[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    R[I][J]=R[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=R[I][J]
    13 RAD[2][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON DATA
    # ALLOW FOR 2 CARBON ATOMS
    DO 21 J=1,49
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*2.0*1.E-24)
    21 CONTINUE
    DO 22 J=1,54
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*2.0*1.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*2.0*1.E-24)
    23 CONTINUE
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 24 J=1,54
    XPE[2][1][J]=math.log(XPEKH[J])
    # ALLOW FOR 6 HYDROGEN ATOMS
    YPE[2][1][J]=math.log(YPEKH[J]*6.0*1.E-24)
    24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XCOMC[J])
    XCP[2][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYC[J]*2.0*1.E-24)
    YRY[2][J]=math.log(YRAYH[J]*6.0*1.E-24)
    YCP[1][J]=math.log(YCOMC[J]*2.0*1.E-24)
    YCP[2][J]=math.log(YCOMH[J]*6.0*1.E-24)
    YPP[1][J]=math.log(YPAPC[J]*2.0*1.E-24)
    YPP[2][J]=math.log(YPAPH[J]*6.0*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 29 J=1,45
    FFAR[1][J]=FFRC[J]
    FFAR[2][J]=FFRH[J]
    FFAC[1][J]=FFCC[J]
    FFAC[2][J]=FFCH[J]
    29 CONTINUE
    return 
    # end
def CGAS10(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEK(49),YPEK(49),XPEL1(54),YPEL1(54),XPEL2(54),YPEL2(54),XCOMC(54),YRAYC(54),YCOMC(54),YPAPC(54),FFRC(45),FFCC(45)
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # 
    #  C3H8 DATA FOR CASCADE CALCULATIONS
    #
    # CARBON DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.858/,A[1][2][3]/0.824/,A[1][3][3]/0.378/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/1.50E-14/,R(1,3)/3.45E-5/,R(1,4)/6.88E-5/
    # L1 SHELL
    DATA R(2,3)/1.20E-7/,R(2,4)/2.41E-7/
    # L2 SHELL
    DATA R(3,4)/1.55E-21/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8/
    DATA XPEK/285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9/
    DATA XPEL1/18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12/
    DATA XPEL2/6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    DATA XCOMC/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYC/23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504D-3,4.792D-3,   3.070D-3,                  2.133D-3,1.200D-3,7.682D-4,7.355D-4,4.917D-4,3.415D-4,1.921D-4,1.839D-4,8.539D-5,4.803D-5,3.074D-5,2.135D-5,1.568D-5,1.201D-5,9.488D-6,7.685D-6,3.415D-6,1.921D-6,8.537D-7,4.802D-7,3.073D-7,2.134D-7,1.200D-7,7.682D-8/  
    DATA YCOMC/3.044D-3,6.469D-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,                  .7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,    .08805,.07586,.05983,.04966/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPC/34*1.E-20,2.870D-4,1.594D-3,6.356D-3,6.852D-3,.01844, .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRC/1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198D-4,3.06D-4,6.295D-5, 2.027D-5,5.398D-7,8.455D-8,3.52D-8,5.993D-12,2.767D-21,2.80D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCC/1.7D-21,6.317D-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=36.0321
    # 
    # ATOMIC HYDROGEN DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    # STORM AND ISRAEL    NUCL.DATA TABLES  A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[2]=1
    AMZ[2]=8.06352
    #
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    PRSHBT[2][I]=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    PRSH[2][I][J]=PRBSHH[J][I]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM,PRSUMH
    # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    ESH[2][I]=ESHH[I]
    INIOCC[1][I]=INIOC[I]
    INIOCC[2][I]=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    4 AUG[2][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=A[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    R[I][J]=R[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=R[I][J]
    13 RAD[2][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON DATA
    DO 21 J=1,49
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*3.0*1.E-24)
    21 CONTINUE
    DO 22 J=1,54
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*3.0*1.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*3.0*1.E-24)
    23 CONTINUE
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 24 J=1,54
    XPE[2][1][J]=math.log(XPEKH[J])
    # ALLOW FOR 4 HYDROGEN ATOMS
    YPE[2][1][J]=math.log(YPEKH[J]*8.0*1.E-24)
    24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XCOMC[J])
    XCP[2][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYC[J]*3.0*1.E-24)
    YRY[2][J]=math.log(YRAYH[J]*8.0*1.E-24)
    YCP[1][J]=math.log(YCOMC[J]*3.0*1.E-24)
    YCP[2][J]=math.log(YCOMH[J]*8.0*1.E-24)
    YPP[1][J]=math.log(YPAPC[J]*3.0*1.E-24)
    YPP[2][J]=math.log(YPAPH[J]*8.0*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 29 J=1,45
    FFAR[1][J]=FFRC[J]
    FFAR[2][J]=FFRH[J]
    FFAC[1][J]=FFCC[J]
    FFAC[2][J]=FFCH[J]
    29 CONTINUE
    return 
    # end
def CGAS11(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEK(49),YPEK(49),XPEL1(54),YPEL1(54),XPEL2(54),YPEL2(54),XCOMC(54),YRAYC(54),YCOMC(54),YPAPC(54),FFRC(45),FFCC(45)
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # 
    #  C4H10 DATA FOR CASCADE CALCULATIONS
    #
    # CARBON DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.858/,A[1][2][3]/0.824/,A[1][3][3]/0.378/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/1.50E-14/,R(1,3)/3.45E-5/,R(1,4)/6.88E-5/
    # L1 SHELL
    DATA R(2,3)/1.20E-7/,R(2,4)/2.41E-7/
    # L2 SHELL
    DATA R(3,4)/1.55E-21/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8/
    DATA XPEK/285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9/
    DATA XPEL1/18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12/
    DATA XPEL2/6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL          J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL          NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL DATA TABLES A7(1970)565
    DATA XCOMC/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYC/23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504D-3,4.792D-3,   3.070D-3,                  2.133D-3,1.200D-3,7.682D-4,7.355D-4,4.917D-4,3.415D-4,1.921D-4,1.839D-4,8.539D-5,4.803D-5,3.074D-5,2.135D-5,1.568D-5,1.201D-5,9.488D-6,7.685D-6,3.415D-6,1.921D-6,8.537D-7,4.802D-7,3.073D-7,2.134D-7,1.200D-7,7.682D-8/  
    DATA YCOMC/3.044D-3,6.469D-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,                  .7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,    .08805,.07586,.05983,.04966/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPC/34*1.E-20,2.870D-4,1.594D-3,6.356D-3,6.852D-3,.01844, .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRC/1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198D-4,3.06D-4,6.295D-5, 2.027D-5,5.398D-7,8.455D-8,3.52D-8,5.993D-12,2.767D-21,2.80D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCC/1.7D-21,6.317D-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=48.0428
    # 
    # ATOMIC HYDROGEN DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[2]=1
    AMZ[2]=10.0794
    #
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    PRSHBT[2][I]=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    PRSH[2][I][J]=PRBSHH[J][I]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM,PRSUMH
    # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    ESH[2][I]=ESHH[I]
    INIOCC[1][I]=INIOC[I]
    INIOCC[2][I]=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    4 AUG[2][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=A[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    R[I][J]=R[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=R[I][J]
    13 RAD[2][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON DATA
    # SCALE TO 4 ATOMS PER MOLECULE
    DO 21 J=1,49
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*4.0*1.E-24)
    21 CONTINUE
    DO 22 J=1,54
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*4.0*1.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*4.0*1.E-24)
    23 CONTINUE
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 24 J=1,54
    XPE[2][1][J]=math.log(XPEKH[J])
    # SCALE TO 10 HYDROGEN ATOMS PER MOLECULE
    YPE[2][1][J]=math.log(YPEKH[J]*10.0*1.E-24)
    24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XCOMC[J])
    XCP[2][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYC[J]*4.0*1.E-24)
    YRY[2][J]=math.log(YRAYH[J]*10.0*1.E-24)
    YCP[1][J]=math.log(YCOMC[J]*4.0*1.E-24)
    YCP[2][J]=math.log(YCOMH[J]*10.0*1.E-24)
    YPP[1][J]=math.log(YPAPC[J]*4.0*1.E-24)
    YPP[2][J]=math.log(YPAPH[J]*10.0*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 26 J=1,45
    FFAR[1][J]=FFRC[J]
    FFAR[2][J]=FFRH[J]
    FFAC[1][J]=FFCC[J]
    FFAC[2][J]=FFCH[J]
    26 CONTINUE
    return 
    # end
'''
def CGAS12(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    # DIMENSION 
    PRSH=numpy.zeros((3+1,17+1,17+1))
    PRSHBT=numpy.zeros((3+1,17+1))
    ESH=numpy.zeros((3+1,17+1))
    AUG=numpy.zeros((3+1,17+1,17+1,17+1))
    RAD=numpy.zeros((3+1,17+1,17+1))
    XPE=numpy.zeros((3+1,17+1,60+1))
    YPE=numpy.zeros((3+1,17+1,60+1))
    XCP=numpy.zeros((3+1,54+1))
    YRY=numpy.zeros((3+1,54+1))
    YCP=numpy.zeros((3+1,54+1))
    YPP=numpy.zeros((3+1,54+1))
    FFAR=numpy.zeros((3+1,45+1))
    FFAC=numpy.zeros((3+1,45+1))
    IZ=numpy.zeros((3+1))
    AMZ=numpy.zeros((3+1))
    INIOCC=numpy.zeros((3+1,17+1))  
    # DIMENSION 
    INIOC=numpy.zeros((17+1))
    PRBSH=numpy.zeros((17+1,17+1))
    ES=numpy.zeros((17+1))
    R=numpy.zeros((17+1,17+1))
    A=numpy.zeros((17+1,17+1,17+1))
    PRBSHBT=numpy.zeros((17+1))
    # DIMENSION 
    INIOCO=numpy.zeros((17+1))
    PRBSHO=numpy.zeros((17+1,17+1))
    ESO=numpy.zeros((17+1))
    RO=numpy.zeros((17+1,17+1))
    AO=numpy.zeros((17+1,17+1,17+1))
    PRBSHBTO=numpy.zeros((17+1))
    # DIMENSION 
    XPEK=numpy.zeros((49+1))
    YPEK=numpy.zeros((49+1))
    XPEL1=numpy.zeros((54+1))
    YPEL1=numpy.zeros((54+1))
    XPEL2=numpy.zeros((54+1))
    YPEL2=numpy.zeros((54+1))
    XCOMC=numpy.zeros((54+1))
    YRAYC=numpy.zeros((54+1))
    YCOMC=numpy.zeros((54+1))
    YPAPC=numpy.zeros((54+1))
    FFRC=numpy.zeros((45+1))
    FFCC=numpy.zeros((45+1))
    # DIMENSION 
    XPEKO=numpy.zeros((46+1))
    YPEKO=numpy.zeros((46+1))
    XPEL1O=numpy.zeros((53+1))
    YPEL1O=numpy.zeros((53+1))
    XPEL2O=numpy.zeros((55+1))
    YPEL2O=numpy.zeros((55+1))
    XPEL3O=numpy.zeros((55+1))
    YPEL3O=numpy.zeros((55+1))
    XCOMO=numpy.zeros((54+1))
    YRAYO=numpy.zeros((54+1))
    YCOMO=numpy.zeros((54+1))
    YPAPO=numpy.zeros((54+1))
    FFRO=numpy.zeros((45+1))
    FFCO=numpy.zeros((45+1))
    #
    #  CO2 DATA 
    # 
    # CARBON DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    INIOC=[0]+[2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    ES=[0]+[10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    PRBSH=[0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00]+238*[0.0]
    PRBSH=numpy.reshape(PRBSH,(17,17))
    PRBSH=numpy.r_[[numpy.zeros(PRBSH.shape[1])],PRBSH]
    PRBSH=numpy.c_[numpy.zeros(PRBSH.shape[0]),PRBSH]
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    PRBSHBT=[0]+[2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    A[1][2][2]=0.858
    A[1][2][3]=0.824
    A[1][3][3]=0.378
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    R[1][2]=1.50E-14
    R[1][3]=3.45E-5
    R[1][4]=6.88E-5
    # L1 SHELL
    R[2][3]=1.20E-7
    R[2][4]=2.41E-7
    # L2 SHELL
    R[3][4]=1.55E-21
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    YPEK=[0]+[9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8]
    XPEK=[0]+[285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L1 SHELL 2S 1/2
    YPEL1=[0]+[1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9]
    XPEL1=[0]+[18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L2 SHELL 2P 1/2
    YPEL2=[0]+[1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.75E-12,1.38E-12]
    XPEL2=[0]+[6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL         J.PHYS.CHEM.REF DATA 4(1975)471
    # HUBBEL         NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL.DATA TABLES  A7(1970)565
    XCOMC=[0]+[100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.022E6,1.25E6,1.5E6,2.0E6,2.044E6,3.0E6,4.0E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    YRAYC=[0]+[23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504E-3,4.792E-3,   3.070E-3,                  2.133E-3,1.200E-3,7.682E-4,7.355E-4,4.917E-4,3.415E-4,1.921E-4,1.839E-4,8.539E-5,4.803E-5,3.074E-5,2.135E-5,1.568E-5,1.201E-5,9.488E-6,7.685E-6,3.415E-6,1.921E-6,8.537E-7,4.802E-7,3.073E-7,2.134E-7,1.200E-7,7.682E-8]
    YCOMC=[0]+[3.044E-3,6.469E-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,.7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,.08805,.07586,.05983,.04966]
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    YPAPC=[0]+34*[1.E-20]+[2.870E-4,1.594E-3,6.356E-3,6.852E-3,.01844,.03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401]
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    FFRC=[0]+[1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198E-4,3.06E-4,6.295E-5, 2.027E-5,5.398E-7,8.455E-8,3.52E-8,5.993E-12,2.767E-21,2.80E-30]
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    FFCC=[0]+[1.7E-21,6.317E-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=12.0107
    # 
    # ATOMIC OXYGEN DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    INIOCO=[0]+[2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0]
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    ESO=[0]+[12.0,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    PRBSHO=[0.10,2.50,6.00,6.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.30,2.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,1.20,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00]+221*[0.0]
    PRBSHO=numpy.reshape(PRBSHO,(17,17))
    PRBSHO=numpy.r_[[numpy.zeros(PRBSHO.shape[1])],PRBSHO]
    PRBSHO=numpy.c_[numpy.zeros(PRBSHO.shape[0]),PRBSHO]
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    PRBSHBTO=[0]+[1.56,6.0,8.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    AO[1][2][2]=0.856
    AO[1][2][3]=0.824
    AO[1][3][3]=0.382
    AO[1][2][4]=0.140
    AO[1][3][4]=0.068
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    RO[1][2]=3.36E-13
    RO[1][3]=2.752E-4
    RO[1][4]=5.48E-4
    # L1 SHELL
    RO[2][3]=6.62E-7
    RO[2][4]=1.34E-6
    # L2 SHELL
    RO[3][4]=2.55E-19
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    YPEKO=[0]+[5.75E5,3.06E5,2.21E5,1.76E5,1.39E5,1.16E5,3.9E4,1.75E4,5.44E3,2.32E3,1.19E3,682.,281.,140.,38.8,15.4,4.13,1.61,.771,.423,.163,.0782,.0207,.00817,.00231,9.89E-4,5.33E-4,3.32E-4,1.68E-4,1.04E-4,4.91E-5,3.09E-5,1.73E-5,1.18E-5,8.98E-6,7.22E-6,5.18E-6,4.03E-6,2.59E-6,1.91E-6,1.25E-6,9.26E-7,7.36E-7,6.11E-7,4.56E-7,3.64E-7]
    XPEKO=[0]+[532.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L1 SHELL 2S 1/2
    YPEL1O=[0]+[5.60E6,6.00E5,3.67E5,2.96E5,2.12E5,9.79E4,4.78E4,2.51E4,1.39E4,1.00E4,8.00E3,6.36E3,5.32E3,1.87E3,863.,279.,122.,63.1,36.6,15.3,7.67,2.15,.859,.232,.0906,.0436,.0239,.00926,.00444,.00118,4.66E-4,1.31E-4,5.63E-5,3.03E-5,1.89E-5,9.54E-6,5.93E-6,2.80E-6,1.76E-6,9.84E-7,6.75E-7,5.12E-7,4.12E-7,2.95E-7,2.30E-7,1.48E-7,1.09E-7,7.11E-8,5.28E-8,4.20E-8,3.49E-8,2.60E-8,2.08E-8]
    XPEL1O=[0]+[28.5,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L2 SHELL 2P 1/2
    YPEL2O=[0]+[2.0E7,2.00E7,2.4E6,3.25E5,1.93E5,1.34E5,7.80E4,2.29E4,7.93E3,3.13E3,1.35E3,853.,626.,455.,357.,85.7,30.0,6.51,2.13,.884,.428,.136,.0552,.0106,.00325,6.11E-4,1.87E-4,7.46E-5,3.55E-5,1.11E-5,4.55E-6,9.39E-7,3.20E-7,7.55E-8,2.91E-8,1.45E-8,8.47E-9,3.86E-9,2.21E-9,9.07E-10,5.71E-10,3.19E-10,2.19E-10,1.66E-10,1.33E-10,9.56E-11,7.44E-11,4.78E-11,3.52E-11,2.30E-11,1.71E-11,1.36E-11,1.13E-11,8.43E-12,6.72E-12]
    XPEL2O=[0]+[13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # L3 SHELL 2P 3/2
    YPEL3O=[0]+[4.0E7,4.00E7,4.8E6,6.50E5,3.84E5,2.67E5,1.55E5,4.55E4,1.58E4,6.23E3,2.69E3,1.69E3,1.24E3,900.,708.,170.,59.3,12.8,4.20,1.74,.841,.265,.107,.0205,.00625,.00116,3.51E-4,1.39E-4,6.55E-5,2.01E-5,8.16E-6,1.65E-6,5.52E-7,1.30E-7,5.10E-8,2.62E-8,1.58E-8,7.76E-9,4.77E-9,2.25E-9,1.42E-9,7.91E-10,5.42E-10,4.12E-10,3.31E-10,2.37E-10,1.85E-10,1.19E-10,8.73E-11,5.71E-11,4.24E-11,3.37E-11,2.80E-11,2.09E-11,1.67E-11]
    XPEL3O=[0]+[13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    XCOMO=[0]+[100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.022E6,1.25E6,1.5E6,2.0E6,2.044E6,3.0E6,4.0E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8]
    YRAYO=[0]+[42.56,42.52,42.46,42.32,42.12,41.87,41.57,40.82,39.89,36.98,33.56,26.63,20.81,16.42,13.23,9.157,6.814,3.948,2.627,1.394,      .8541,.5755,.4138,.2428,.1591,.07264,.04128,.01849,.01043,        .006684,                   4.645E-3,2.615E-3,1.674E-3,1.603E-3,1.072E-3,7.442E-4,4.187E-4,4.008E-4,1.861E-4,1.047E-4,6.699E-5,4.652E-5,3.418E-5,2.617E-5,2.068E-5,1.675E-5,7.474E-6,4.204E-6,1.868E-6,1.051E-6,6.726E-7,4.670E-7,2.628E-7,1.681E-7]
    YCOMO=[0]+[2.479E-3,5.433E-3,9.695E-3,.02175,.03847,.05970,.08522,.1484,.2262,.4697,                  .7560,1.352,1.886,2.323,2.665,3.139,3.439,3.864,4.092,4.286,4.315,4.275,4.207,4.044,3.880,3.521,3.236,2.821,2.530,2.312,2.139,1.880,1.691,1.673,1.512,1.374,1.173,1.158,.9226,.7696,.6646,.5874,.5280,.4805,.4417,.4093,.3029,.2431,.1770,.1406,    .1174,.1012,.07977,.06621]
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    YPAPO=[0]+34*[1.E-20]+[5.159E-4,2.85E-3,.01134,.01222,.03273,.05388,.07314,.09067,.1064,.1207,.1338,.1457,.1915,.2267,.2749,.3085,    .3339,.3549,.3862,.4086]
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    FFRO=[0]+[1.0,.99967,.99890,.9976,.9959,.9935,.9907,.9836,.9746,.9515,.9221,.9055,.8594,.8087,.7559,.7025,.6006,.5107,.3754,.2919,.2430,.2141,.1959,.1827,.1720,.1477,.1245,.0840,.05521,.0398,.02439,.01905,.008362,.004562,.002637,.001975,6.5E-4,1.609E-4,5.239E-5,1.424E-6,  2.251E-7,9.421E-8,1.809E-11,9.77E-21,1.0E-29]
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    FFCO=[0]+[1.2E-21,3.7E-4,.00137,.00316,.00560,.00872,.0125,.02201,.03387,.06421,.1015,.1221,.1775,.2356,.2937,.3499,.4516,.5366,.6571,.7285,.7719,.8014,.8245,.8444,.8626,.9020,.9327,.9705,.9875,.9946,.99759,.99887,.99971,.99991,.99997,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]
    # OXYGEN ATOMIC NUMBER
    IZ[2]=8
    AMZ[2]=31.9988
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    for I in range(1,17+1):
        PRSHBT[1][I]=PRBSHBT[I]/100.0
        PRSHBT[2][I]=PRBSHBTO[I]/100.0
        for J in range(1,17+1):
            PRBSH[I][J]=PRBSH[I][J]/100.0
            PRBSHO[I][J]=PRBSHO[I][J]/100.0
    # SWAP INDICES AND DO CHECK SUM
    for I in range(1,17+1):
        PRSUM=0.0
        PRSUMO=0.0
        for J in range(1,17+1):
            PRSH[1][I][J]=PRBSH[J][I]
            PRSH[2][I][J]=PRBSHO[J][I]
            #     PRSUM=PRSUM+PRSH[1][I][J]
            #     PRSUMO=PRSUMO+PRSH[2][I][J]
            #     WRITE(6,888) I,PRSUM,PRSUMO
            # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUMO=','%.3f' %)
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    for I in range(1,17+1):
        ESH[1][I]=ES[I]
        ESH[2][I]=ESO[I]
        INIOCC[1][I]=INIOC[I]
        INIOCC[2][I]=INIOCO[I]
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    for I in range(1,4+1):
        for J in range(1,17+1):
            for K in range(1,17 +1):
                AUG[1][I][J][K]=A[I][J][K]*0.0272105
                AUG[2][I][J][K]=AO[I][J][K]*0.0272105  
    for I in range(5,17+1):
        for J in range(1,17+1):
            for K in range(1,17+1):
                AUG[1][I][J][K]=A[I][J][K]*0.00272105
                AUG[2][I][J][K]=AO[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    for I in range(5,17+1):
        for J in range(6,17+1):
            R[I][J]=R[I][J]*6.582119E-16
            RO[I][J]=RO[I][J]*6.582119E-16
    # LOAD OUTPUT ARRAY
    for I in range(1,17+1):
        for J in range(1,17+1):
            RAD[1][I][J]=R[I][J]
            RAD[2][I][J]=RO[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON  DATA
    for J in range(1,49+1):
        XPE[1][1][J]=math.log(XPEK[J])
        YPE[1][1][J]=math.log(YPEK[J]*1.E-24)
    for J in range(1,54+1):
        XPE[1][2][J]=math.log(XPEL1[J])
        YPE[1][2][J]=math.log(YPEL1[J]*1.E-24)
    for J in range(1,54 +1):
        XPE[1][3][J]=math.log(XPEL2[J])
        YPE[1][3][J]=math.log(YPEL2[J]*1.E-24)
    # LOAD OXYGEN PHOTOELECTRIC AND COMPTON DATA DATA
    # SCALE BY TWO FOR OXYGEN ATOMS
    for J in range(1,46+1):
        XPE[2][1][J]=math.log(XPEKO[J])
        YPE[2][1][J]=math.log(YPEKO[J]*2.0*1.E-24)
    for J in range(1,53+1):
        XPE[2][2][J]=math.log(XPEL1O[J])
        YPE[2][2][J]=math.log(YPEL1O[J]*2.0*1.E-24)
    for J in range(1,55 +1):
        XPE[2][3][J]=math.log(XPEL2O[J])
        YPE[2][3][J]=math.log(YPEL2O[J]*2.0*1.E-24)
    for J in range(1,55 +1):
        XPE[2][4][J]=math.log(XPEL3O[J])
        YPE[2][4][J]=math.log(YPEL3O[J]*2.0*1.E-24)
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    for J in range(1,54+1):
        XCP[1][J]=math.log(XCOMC[J])
        XCP[2][J]=math.log(XCOMO[J])
        YRY[1][J]=math.log(YRAYC[J]*1.E-24)
        YRY[2][J]=math.log(YRAYO[J]*2.0*1.E-24)
        YCP[1][J]=math.log(YCOMC[J]*1.E-24)
        YCP[2][J]=math.log(YCOMO[J]*2.0*1.E-24)
        YPP[1][J]=math.log(YPAPC[J]*1.E-24)
        YPP[2][J]=math.log(YPAPO[J]*2.0*1.E-24)
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    for J in range(1,45+1):
        FFAR[1][J]=FFRC[J]
        FFAR[2][J]=FFRO[J]
        FFAC[1][J]=FFCC[J]
        FFAC[2][J]=FFCO[J]
    return 
    # end
'''
def CGAS13(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS14(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOCO(17),PRBSHO(17,17),ESO(17),RO(17,17),AO(17,17,17),PRBSHBTO(17)  
    DIMENSION XPEKO(46),YPEKO(46),XPEL1O(53),YPEL1O(53),XPEL2O(55),YPEL2O(55),XPEL3O(55),YPEL3O(55),XCOMO(54),YRAYO(54),YCOMO(54),YPAPO(54),FFRO(45),FFCO(45)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # ATOMIC OXYGEN DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCO/2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESO/12.0,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHO/0.10,2.50,6.00,6.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.30,2.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,1.20,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTO/1.56,6.0,8.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA AO[1][2][2]/0.856/,AO[1][2][3]/0.824/,AO[1][3][3]/0.382/
    DATA AO[1][2][4]/0.140/,AO[1][3][4]/0.068/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA 
    RO[1][2]=3.36E-13/
    RO[1][3]=2.752E-4/
    RO[1][4]=5.48E-4
    # L1 SHELL
    DATA 
    RO[2][3]=6.62E-7/
    RO[2][4]=1.34E-6
    # L2 SHELL
    DATA 
    RO[3][4]=2.55E-19
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKO/5.75E5,3.06E5,2.21E5,1.76E5,1.39E5,1.16E5,3.9E4,1.75E4,5.44E3,2.32E3,1.19E3,682.,281.,140.,38.8,15.4,4.13,1.61,.771,.423,.163,.0782,.0207,.00817,.00231,9.89E-4,5.33E-4,3.32E-4,1.68E-4,1.04E-4,4.91E-5,3.09E-5,1.73E-5,1.18E-5,8.98E-6,7.22E-6,5.18E-6,4.03E-6,2.59E-6,1.91E-6,1.25E-6,9.26E-7,7.36E-7,6.11E-7,4.56E-7,3.64E-7/
    DATA XPEKO/532.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1O/5.60E6,6.00E5,3.67E5,2.96E5,2.12E5,9.79E4,4.78E4,2.51E4,1.39E4,1.00E4,8.00E3,6.36E3,5.32E3,1.87E3,863.,279.,122.,63.1,36.6,15.3,7.67,2.15,.859,.232,.0906,.0436,.0239,.00926,.00444,.00118,4.66E-4,1.31E-4,5.63E-5,3.03E-5,1.89E-5,9.54E-6,5.93E-6,2.80E-6,1.76E-6,9.84E-7,6.75E-7,5.12E-7,4.12E-7,2.95E-7,2.30E-7,1.48E-7,1.09E-7,7.11E-8,5.28E-8,4.20E-8,3.49E-8,2.60E-8,2.08E-8/
    DATA XPEL1O/28.5,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2O/2.0E7,2.00E7,2.4E6,3.25E5,1.93E5,1.34E5,7.80E4,2.29E4,7.93E3,3.13E3,1.35E3,853.,626.,455.,357.,85.7,30.0,6.51,2.13,.884,.428,.136,.0552,.0106,.00325,6.11E-4,1.87E-4,7.46E-5,3.55E-5,1.11E-5,4.55E-6,9.39E-7,3.20E-7,7.55E-8,2.91E-8,1.45E-8,8.47E-9,3.86E-9,2.21E-9,9.07E-10,5.71E-10,3.19E-10,2.19E-10,1.66E-10,1.33E-10,9.56E-11,7.44E-11,4.78E-11,3.52E-11,2.30E-11,1.71E-11,1.36E-11,1.13E-11,8.43E-12,6.72E-12/
    DATA XPEL2O/13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L3 SHELL 2P 3/2
    DATA YPEL3O/4.0E7,4.00E7,4.8E6,6.50E5,3.84E5,2.67E5,1.55E5,4.55E4,1.58E4,6.23E3,2.69E3,1.69E3,1.24E3,900.,708.,170.,59.3,12.8,4.20,1.74,.841,.265,.107,.0205,.00625,.00116,3.51E-4,1.39E-4,6.55E-5,2.01E-5,8.16E-6,1.65E-6,5.52E-7,1.30E-7,5.10E-8,2.62E-8,1.58E-8,7.76E-9,4.77E-9,2.25E-9,1.42E-9,7.91E-10,5.42E-10,4.12E-10,3.31E-10,2.37E-10,1.85E-10,1.19E-10,8.73E-11,5.71E-11,4.24E-11,3.37E-11,2.80E-11,2.09E-11,1.67E-11/
    DATA XPEL3O/13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    DATA XCOMO/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYO/42.56,42.52,42.46,42.32,42.12,41.87,41.57,40.82,39.89,36.98,33.56,26.63,20.81,16.42,13.23,9.157,6.814,3.948,2.627,1.394,      .8541,.5755,.4138,.2428,.1591,.07264,.04128,.01849,.01043,        .006684,                   4.645D-3,2.615D-3,1.674D-3,1.603D-3,1.072D-3,7.442D-4,4.187D-4,4.008D-4,1.861D-4,1.047D-4,6.699D-5,4.652D-5,3.418D-5,2.617D-5,2.068D-5,1.675D-5,7.474D-6,4.204D-6,1.868D-6,1.051D-6,6.726D-7,4.670D-7,2.628D-7,1.681D-7/  
    DATA YCOMO/2.479D-3,5.433D-3,9.695D-3,.02175,.03847,.05970,.08522,.1484,.2262,.4697,                  .7560,1.352,1.886,2.323,2.665,3.139,3.439,3.864,4.092,4.286,4.315,4.275,4.207,4.044,3.880,3.521,3.236,2.821,2.530,2.312,2.139,1.880,1.691,1.673,1.512,1.374,1.173,1.158,.9226,.7696,.6646,.5874,.5280,.4805,.4417,.4093,.3029,.2431,.1770,.1406,    .1174,.1012,.07977,.06621/    
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPO/34*1.E-20,5.159D-4,2.85D-3,.01134,.01222,.03273,.05388,.07314,.09067,.1064,.1207,.1338,.1457,.1915,.2267,.2749,.3085,    .3339,.3549,.3862,.4086/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRO/1.0,.99967,.99890,.9976,.9959,.9935,.9907,.9836,.9746,.9515,.9221,.9055,.8594,.8087,.7559,.7025,.6006,.5107,.3754,.2919,.2430,.2141,.1959,.1827,.1720,.1477,.1245,.0840,.05521,.0398,.02439,.01905,.008362,.004562,.002637,.001975,6.5D-4,1.609D-4,5.239D-5,1.424D-6,  2.251D-7,9.421D-8,1.809D-11,9.77D-21,1.0D-29/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCO/1.2D-21,3.7D-4,.00137,.00316,.00560,.00872,.0125,.02201,.03387,.06421,.1015,.1221,.1775,.2356,.2937,.3499,.4516,.5366,.6571,.7285,.7719,.8014,.8245,.8444,.8626,.9020,.9327,.9705,.9875,.9946,.99759,.99887,.99971,.99991,.99997,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # OXYGEN ATOMIC NUMBER
    IZ[1]=8
    AMZ[1]=15.9994
    # 
    # ATOMIC HYDROGEN DATA FOR CASCADE CALCULATIONS SCALED TO
    # MOLECULAR HYDROGEN
    #  
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/ 
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL                J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL                NIST XCOM WEB SITE
    # STORM AND ISRAEL        NUCL DATA TABLES A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[2]=1
    AMZ[2]=2.015808
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBTO[I]/100.0
    PRSHBT[2][I]=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSHO[I][J]=PRBSHO[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUMO=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSHO[J][I]
    PRSH[2][I][J]=PRBSHH[J][I]
    #     PRSUMO=PRSUMO+PRSH[1][I][J]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     WRITE(6,888) I,PRSUMO,PRSUMH
    # 888 print(' I=',I3,' PRSUMO=','%.3f' %,' PRSUMH=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ESO[I]
    ESH[2][I]=ESHH[I]
    INIOCC[1][I]=INIOCO[I]
    INIOCC[2][I]=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=AO[I][J][K]*0.0272105
    4 AUG[2][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=AO[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    RO[I][J]=RO[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=RO[I][J]
    13 RAD[2][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON  DATA\
    # SCALE BY 2 HYDROGEN ATOMS
    DO 21 J=1,54
    XPE[2][1][J]=math.log(XPEKH[J])
    YPE[2][1][J]=math.log(YPEKH[J]*2.E-24)
    21 CONTINUE
    # LOAD OXYGEN PHOTOELECTRIC AND COMPTON DATA DATA
    DO 24 J=1,46
    XPE[1][1][J]=math.log(XPEKO[J])
    YPE[1][1][J]=math.log(YPEKO[J]*1.E-24)
    24 CONTINUE
    DO 25 J=1,53
    XPE[1][2][J]=math.log(XPEL1O[J])
    YPE[1][2][J]=math.log(YPEL1O[J]*1.E-24)
    25 CONTINUE 
    DO 26 J=1,55 
    XPE[1][3][J]=math.log(XPEL2O[J])
    YPE[1][3][J]=math.log(YPEL2O[J]*1.E-24)
    26 CONTINUE
    DO 27 J=1,55 
    XPE[1][4][J]=math.log(XPEL3O[J])
    YPE[1][4][J]=math.log(YPEL3O[J]*1.E-24)
    27 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 28 J=1,54
    XCP[1][J]=math.log(XCOMO[J])
    XCP[2][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYO[J]*1.E-24)
    YRY[2][J]=math.log(YRAYH[J]*2.0*1.E-24)
    YCP[1][J]=math.log(YCOMO[J]*1.E-24)
    YCP[2][J]=math.log(YCOMH[J]*2.0*1.E-24)
    YPP[1][J]=math.log(YPAPO[J]*1.E-24)
    YPP[2][J]=math.log(YPAPH[J]*2.0*1.E-24)
    28 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 29 J=1,45
    FFAR[1][J]=FFRO[J]
    FFAR[2][J]=FFRH[J]
    FFAC[1][J]=FFCO[J]
    FFAC[2][J]=FFCH[J]
    29 CONTINUE
    return 
    # end
def CGAS15(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
        # IMPLICIT #real*8 (A-H,O-Z)
        # IMPLICIT #integer*8 (I-N)
        DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
        DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
        DIMENSION XPEK(46),YPEK(46),XPEL1(53),YPEL1(53),XPEL2(55),YPEL2(55),XPEL3(55),YPEL3(55),XCOMO(54),YRAYO(54),YCOMO(54),YPAPO(54),FFRO(45),FFCO(45)
        # 
        # ATOMIC OXYGEN DATA FOR CASCADE CALCULATIONS SCALED LATER TO 
    #  MOLECULAR OXYGEN
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
          DATA INIOC/2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
          DATA ES/12.0,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
          DATA PRBSH/0.10,2.50,6.00,6.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.30,2.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,1.20,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
          DATA PRBSHBT/1.56,6.0,8.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
          DATA A[1][2][2]/0.856/,A[1][2][3]/0.824/,A[1][3][3]/0.382/
          DATA A[1][2][4]/0.140/,A[1][3][4]/0.068/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
          DATA R(1,2)/3.36E-13/,R(1,3)/2.752E-4/,R(1,4)/5.48E-4/ 
    # L1 SHELL
          DATA R(2,3)/6.62E-7/,R(2,4)/1.34E-6/
    # L2 SHELL
          DATA R(3,4)/2.55E-19/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
          DATA YPEK/5.75E5,3.06E5,2.21E5,1.76E5,1.39E5,1.16E5,3.9E4,1.75E4,5.44E3,2.32E3,1.19E3,682.,281.,140.,38.8,15.4,4.13,1.61,.771,.423,.163,.0782,.0207,.00817,.00231,9.89E-4,5.33E-4,3.32E-4,1.68E-4,1.04E-4,4.91E-5,3.09E-5,1.73E-5,1.18E-5,8.98E-6,7.22E-6,5.18E-6,4.03E-6,2.59E-6,1.91E-6,1.25E-6,9.26E-7,7.36E-7,6.11E-7,4.56E-7,3.64E-7/
          DATA XPEK/532.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
          DATA YPEL1/5.60E6,6.00E5,3.67E5,2.96E5,2.12E5,9.79E4,4.78E4,2.51E4,1.39E4,1.00E4,8.00E3,6.36E3,5.32E3,1.87E3,863.,279.,122.,63.1,36.6,15.3,7.67,2.15,.859,.232,.0906,.0436,.0239,.00926,.00444,.00118,4.66E-4,1.31E-4,5.63E-5,3.03E-5,1.89E-5,9.54E-6,5.93E-6,2.80E-6,1.76E-6,9.84E-7,6.75E-7,5.12E-7,4.12E-7,2.95E-7,2.30E-7,1.48E-7,1.09E-7,7.11E-8,5.28E-8,4.20E-8,3.49E-8,2.60E-8,2.08E-8/
          DATA XPEL1/28.5,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
          DATA YPEL2/2.0E7,2.00E7,2.4E6,3.25E5,1.93E5,1.34E5,7.80E4,2.29E4,7.93E3,3.13E3,1.35E3,853.,626.,455.,357.,85.7,30.0,6.51,2.13,.884,.428,.136,.0552,.0106,.00325,6.11E-4,1.87E-4,7.46E-5,3.55E-5,1.11E-5,4.55E-6,9.39E-7,3.20E-7,7.55E-8,2.91E-8,1.45E-8,8.47E-9,3.86E-9,2.21E-9,9.07E-10,5.71E-10,3.19E-10,2.19E-10,1.66E-10,1.33E-10,9.56E-11,7.44E-11,4.78E-11,3.52E-11,2.30E-11,1.71E-11,1.36E-11,1.13E-11,8.43E-12,6.72E-12/
          DATA XPEL2/13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L3 SHELL 2P 3/2
          DATA YPEL3/4.0E7,4.00E7,4.8E6,6.50E5,3.84E5,2.67E5,1.55E5,4.55E4,1.58E4,6.23E3,2.69E3,1.69E3,1.24E3,900.,708.,170.,59.3,12.8,4.20,1.74,.841,.265,.107,.0205,.00625,.00116,3.51E-4,1.39E-4,6.55E-5,2.01E-5,8.16E-6,1.65E-6,5.52E-7,1.30E-7,5.10E-8,2.62E-8,1.58E-8,7.76E-9,4.77E-9,2.25E-9,1.42E-9,7.91E-10,5.42E-10,4.12E-10,3.31E-10,2.37E-10,1.85E-10,1.19E-10,8.73E-11,5.71E-11,4.24E-11,3.37E-11,2.80E-11,2.09E-11,1.67E-11/
          DATA XPEL3/13.8,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL           J.PHYS.CHEM.REF.DATA    4(1975)471
    # HUBBEL           NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL.DATA TABLES  A7(1970)565
          DATA XCOMO/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
          DATA YRAYO/42.56,42.52,42.46,42.32,42.12,41.87,41.57,40.82,39.89,36.98,33.56,26.63,20.81,16.42,13.23,9.157,6.814,3.948,2.627,1.394,      .8541,.5755,.4138,.2428,.1591,.07264,.04128,.01849,.01043,        .006684,                   4.645D-3,2.615D-3,1.674D-3,1.603D-3,1.072D-3,7.442D-4,4.187D-4,4.008D-4,1.861D-4,1.047D-4,6.699D-5,4.652D-5,3.418D-5,2.617D-5,2.068D-5,1.675D-5,7.474D-6,4.204D-6,1.868D-6,1.051D-6,6.726D-7,4.670D-7,2.628D-7,1.681D-7/  
          DATA YCOMO/2.479D-3,5.433D-3,9.695D-3,.02175,.03847,.05970,.08522,.1484,.2262,.4697,                  .7560,1.352,1.886,2.323,2.665,3.139,3.439,3.864,4.092,4.286,4.315,4.275,4.207,4.044,3.880,3.521,3.236,2.821,2.530,2.312,2.139,1.880,1.691,1.673,1.512,1.374,1.173,1.158,.9226,.7696,.6646,.5874,.5280,.4805,.4417,.4093,.3029,.2431,.1770,.1406,    .1174,.1012,.07977,.06621/    
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
          DATA YPAPO/34*1.E-20,5.159D-4,2.85D-3,.01134,.01222,.03273,.05388,.07314,.09067,.1064,.1207,.1338,.1457,.1915,.2267,.2749,.3085,    .3339,.3549,.3862,.4086/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
          DATA FFRO/1.0,.99967,.99890,.9976,.9959,.9935,.9907,.9836,.9746,.9515,.9221,.9055,.8594,.8087,.7559,.7025,.6006,.5107,.3754,.2919,.2430,.2141,.1959,.1827,.1720,.1477,.1245,.0840,.05521,.0398,.02439,.01905,.008362,.004562,.002637,.001975,6.5D-4,1.609D-4,5.239D-5,1.424D-6,  2.251D-7,9.421D-8,1.809D-11,9.77D-21,1.0D-29/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
          DATA FFCO/1.2D-21,3.7D-4,.00137,.00316,.00560,.00872,.0125,.02201,.03387,.06421,.1015,.1221,.1775,.2356,.2937,.3499,.4516,.5366,.6571,.7285,.7719,.8014,.8245,.8444,.8626,.9020,.9327,.9705,.9875,.9946,.99759,.99887,.99971,.99991,.99997,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # OXYGEN ATOMIC NUMBER
          IZ[1]=8
          AMZ[1]=31.9988 
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
          DO 1 I=1,17
          PRSHBT[1][I]=PRBSHBT[I]/100.0
          DO 1 J=1,17
          PRBSH[I][J]=PRBSH[I][J]/100.0
        1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
          DO 2 I=1,17
          PRSUM=0.0
          DO 2 J=1,17
          PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
        2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
          DO 3 I=1,17
          ESH[1][I]=ES[I]
          INIOCC[1][I]=INIOC[I]
        3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
          DO 4 I=1,4
          DO 4 J=1,17
          DO 4 K=1,17 
        4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
          DO 5 I=5,17
          DO 5 J=1,17
          DO 5 K=1,17
        5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
          DO 12 I=5,17
          DO 12 J=6,17
       12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
          DO 13 I=1,17
          DO 13 J=1,17
       13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC AND COMPTON DATA
    # SCALE BY TWO FOR MOLECULE
          DO 21 J=1,46
          XPE[1][1][J]=math.log(XPEK[J])
          YPE[1][1][J]=math.log(YPEK[J]*2.0*1.E-24)
       21 CONTINUE
          DO 22 J=1,53
          XPE[1][2][J]=math.log(XPEL1[J])
          YPE[1][2][J]=math.log(YPEL1[J]*2.0*1.E-24)
       22 CONTINUE 
          DO 23 J=1,55 
          XPE[1][3][J]=math.log(XPEL2[J])
          YPE[1][3][J]=math.log(YPEL2[J]*2.0*1.E-24)
       23 CONTINUE
          DO 24 J=1,55 
          XPE[1][4][J]=math.log(XPEL3[J])
          YPE[1][4][J]=math.log(YPEL3[J]*2.0*1.E-24)
       24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
          DO 25 J=1,54
          XCP[1][J]=math.log(XCOMO[J])
          YRY[1][J]=math.log(YRAYO[J]*2.0*1.E-24)
          YCP[1][J]=math.log(YCOMO[J]*2.0*1.E-24)
          YPP[1][J]=math.log(YPAPO[J]*2.0*1.E-24)
       25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
          DO 26 J=1,45
          FFAR[1][J]=FFRO[J]
          FFAC[1][J]=FFCO[J]
       26 CONTINUE
          return 
          # end
def CGAS16(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(47),YPEK(47),XPEL1(53),YPEL1(53),XPEL2(55),YPEL2(55),XPEL3(55),YPEL3(55),XCOMN(54),YRAYN(54),YCOMN(54),YPAPN(54),FFRN(45),FFCN(45)
    # 
    # ATOMIC NITROGEN DATA FOR CASCADE CALCULATIONS SCALED LATER TO 
    #  MOLECULAR NITROGEN
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/11.00,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.12,2.50,8.00,4.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.30,2.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.50,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.2,6.0,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.842/,A[1][2][3]/0.828/,A[1][3][3]/0.380/
    DATA A[1][2][4]/0.072/,A[1][3][4]/0.035/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/8.04E-14/,R(1,3)/1.104E-4/,R(1,4)/2.201E-4/
    # L1 SHELL
    DATA R(2,3)/3.09E-7/,R(2,4)/6.23E-7/
    # L2 SHELL
    DATA R(3,4)/2.65E-20/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/7.0E5,3.78E5,2.03E5,1.43E5,1.13E5,8.83E5,7.32E4,2.39E4,1.05E4,3.20E3,1.35E3,681.,388.,158.,78.2,21.3,8.39,2.22,.861,.411,.225,.0863,.0412,.0108,.00428,.00120,5.14E-4,2.77E-4,1.72E-4,8.69E-5,5.40E-5,2.55E-5,1.61E-5,8.99E-6,6.18E-6,4.69E-6,3.77E-6,2.71E-6,2.11E-6,1.36E-6,9.99E-7,6.54E-7,4.86E-7,3.86E-7,3.21E-7,2.39E-7,1.91E-7/
    DATA XPEK/401.6,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/4.50E6,4.80E5,2.98E5,2.35E5,1.63E5,7.04E4,3.31E4,1.68E4,9.06E3,6.45E3,5.12E3,4.03E3,3.38E3,1.15E3,522.,164.,70.0,35.8,20.6,8.46,
    .4.21,1.16,.459,.122,.0475,.0227,.0124,.00478,.00229,6.02E-4,2.37E-4,6.68E-5,2.86E-5,1.54E-5,9.57E-6,4.83E-6,3.00E-6,1.42E-6,8.94E-7,5.01E-7,3.44E-7,2.61E-7,2.10E-7,1.51E-7,1.17E-7,7.55E-8,5.56E-8,3.64E-8,2.70E-8,2.15E-8,1.79E-8,1.33E-8,1.06E-8/
    DATA XPEL1/24.4,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/3.20E6,4.00E6,4.00E6,1.8E5,8.45E4,5.70E4,3.19E4,8.90E3,2.95E3,1.14E3,482.,301.,220.,160.,124.,28.4,9.73,2.02,.647,.266,.128,.0402,.0162,.00306,9.27E-4,1.72E-4,5.20E-5,2.07E-5,9.78E-6,3.03E-6,1.24E-6,2.55E-7,8.63E-8,2.03E-8,7.78E-9,3.88E-9,2.25E-9,1.02E-9,5.85E-10,2.44E-10,1.54E-10,8.60E-11,5.91E-11,4.49E-11,3.61E-11,2.59E-11,2.02E-11,1.30E-11,9.56E-12,6.25E-12,4.65E-12,3.70E-12,3.07E-12,2.29E-12,1.83E-12/
    DATA XPEL2/14.534,20.0,25.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L3 SHELL 2P 3/2
    DATA YPEL3/6.40E6,8.00E6,8.00E6,3.6E5,1.68E5,1.14E5,6.38E4,1.78E4,5.90E3,2.29E3,964.,603.,440.,319.,246.,56.4,19.3,4.00,1.28,.524,.252,.0787,.0317,.00593,.00179,3.27E-4,9.82E-5,3.87E-5,1.82E-5,5.55E-6,2.25E-6,4.50E-7,1.51E-7,3.54E-8,1.39E-8,7.10E-9,4.32E-9,2.12E-9,1.31E-9,6.29E-10,3.96E-10,2.22E-10,1.52E-10,1.16E-10,9.31E-11,6.68E-11,5.20E-11,3.34E-11,2.46E-11,1.61E-11,1.20E-11,9.53E-12,7.91E-12,5.91E-12,4.71E-12/
    DATA XPEL3/14.524,20.0,25.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL           J.PHYS.CHEM.REF.DATA    4(1975)471
    # HUBBEL           NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL.DATA TABLES  A7(1970)565
    DATA XCOMN/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYN/32.55,32.51,32.47,32.34,32.15,31.91,31.62,30.90,30.03,27.34,24.32,18.61,14.21,11.10,8.927,6.246,4.722,2.805,1.870,.9839,      .6009,.4042,.2901,.1697,.1109,.05046,.02863,.01281,.007221,       .004626,                   3.215D-3,1.809D-3,1.158D-3,1.109D-3,7.414D-4,5.149D-4,2.897D-4,2.773D-4,1.287D-4,7.243D-5,4.635D-5,3.219D-5,2.365D-5,1.811D-5,1.431D-5,1.159D-5,5.164D-6,2.905D-6,1.291D-6,7.263D-7,4.648D-7,3.227D-7,1.816D-7,1.162D-7/  
    DATA YCOMN/2.698D-3,6.260D-3,.01180,.02508,.04428,.06856,.09770, .1692,.2560,.5198,                  .8165,1.392,1.866,2.225,2.494,2.858,3.093,3.449,3.645,3.800,3.811,3.766,3.700,3.551,3.403,3.085,2.834,2.470,2.215,2.023,1.872,1.645,1.479,1.464,1.323,1.202,1.026,1.013,.8073,.6734,.5815,.5140,.4620,.4205,.3865,.3581,.2650,.2127,.1549,.1231,    .1027,.08851,.06980,.05793/   
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPN/34*1.E-20,3.931D-4,2.177D-3,8.667D-3,9.343D-3,.02507,.04138,   .05628,.06989,.08213,.09326,.1034,.1127,.1487,.1753,.2138,.2397,  .2609,.2763,.3012,.3193/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRN/1.0,.99911,.99814,.9970,.9947,.9919,.9897,.9793,.9680,.9391,.9031,.8834,.8280,.7696,.7099,.6514,.5464,.4597,.3420,.2769,.2421,.2217,.2066,.1931,.1803,.1307,.1197,.07481,.0462,.0325,.01881,.01457,.006071,.003214,.001871,.001443,5.857D-4,1.087D-4,3.519D-5,9.463D-7,1.490D-7,6.217D-8,1.127D-11,5.67D-21,5.77D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCN/1.4D-21,4.3D-4,.00186,.00417,.00739,.01149,.01644,.02881,.04429,.08257,.1292,.1543,.2200,.2861,.3496,.4083,.5084,.5853,.6846,.7403,.7767,.8050,.8299,.8526,.8733,.9166,.9471,.9800,.9924,.9970,.99876,.99943,.99987,.99997,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # NITROGEN ATOMIC NUMBER
    IZ[1]=7
    AMZ[1]=28.0134
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC AND COMPTON DATA
    # SCALE BY TWO FOR MOLECULE
    DO 21 J=1,47
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*2.0*1.E-24)
    21 CONTINUE
    DO 22 J=1,53
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*2.0*1.E-24)
    22 CONTINUE 
    DO 23 J=1,55 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*2.0*1.E-24)
    23 CONTINUE
    DO 24 J=1,55 
    XPE[1][4][J]=math.log(XPEL3[J])
    YPE[1][4][J]=math.log(YPEL3[J]*2.0*1.E-24)
    24 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 25 J=1,54
    XCP[1][J]=math.log(XCOMN[J])
    YRY[1][J]=math.log(YRAYN[J]*2.0*1.E-24)
    YCP[1][J]=math.log(YCOMN[J]*2.0*1.E-24)
    YPP[1][J]=math.log(YPAPN[J]*2.0*1.E-24)
    25 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 26 J=1,45
    FFAR[1][J]=FFRN[J]
    FFAC[1][J]=FFCN[J]
    26 CONTINUE
    return 
    # end
def CGAS17(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS18(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS19(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS20(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS21(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION XPEK(54),YPEK(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # ATOMIC HYDROGEN DATA FOR CASCADE CALCULATIONS SCALED TO
    # MOLECULAR HYDROGEN
    #  
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEK/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/ 
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL                J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL                NIST XCOM WEB SITE
    # STORM AND ISRAEL        NUCL DATA TABLES A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[1]=1
    AMZ[1]=2.015808
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM
    # 888 print(' I=',I3,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    INIOCC[1][I]=INIOC[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    4 AUG[1][I][J][K]=A[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    5 AUG[1][I][J][K]=A[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    12 R[I][J]=R[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    13 RAD[1][I][J]=R[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    # LOAD PHOTOELECTRIC AND COMPTON DATA
    DO 21 J=1,54
    XPE[1][1][J]=math.log(XPEK[J])
    # SCALED TO MOLECULAR HYDROGEN
    YPE[1][1][J]=math.log(YPEK[J]*2.0*1.E-24)
    21 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 22 J=1,54
    XCP[1][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYH[J]*2.0*1.E-24)
    YCP[1][J]=math.log(YCOMH[J]*2.0*1.E-24)
    YPP[1][J]=math.log(YPAPH[J]*2.0*1.E-24)
    22 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 23 J=1,45
    FFAR[1][J]=FFRH[J]
    FFAC[1][J]=FFCH[J]
    23 CONTINUE
    return 
    # end
def CGAS22(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS23(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS24(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS25(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS26(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS27(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS28(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS29(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS30(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOCS(17),PRBSHS(17,17),ESS(17),RS(17,17),AS(17,17,17),PRBSHBTS(17)
    DIMENSION INIOCF(17),PRBSHF(17,17),ESF(17),RF(17,17),AF(17,17,17),PRBSHBTF(17) 
    DIMENSION XPEKS(42),YPEKS(42),XPEL1S(53),YPEL1S(53),XPEL2S(54),YPEL2S(54),XPEL3S(54),YPEL3S(54),XPEM1S(60),YPEM1S(60),XPEM2S(60),YPEM2S(60),XPEM3S(60),YPEM3S(60),XCOMS(54),YRAYS(54),YCOMS(54),YPAPS(54),FFRS(45),FFCS(45)
    DIMENSION XPEKF(45),YPEKF(45),XPEL1F(53),YPEL1F(53),XPEL2F(55),YPEL2F(55),XPEL3F(55),YPEL3F(55),XCOMF(54),YRAYF(54),YCOMF(54),YPAPF(54),FFRF(45),FFCF(45)
    # 
    # SF6 DATA FOR CASCADE CALCULATIONS
    #
    #  SULFUR  DATA
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCS/2,2,2,4,2,2,2,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESS/19.0,7.5,7.5,7.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHS/0.001,0.38,0.69,1.37,3.16,7.50,7.33,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.022,.072,0.14,2.12,5.35,5.33,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.063,.055,0.22,2.21,5.64,5.57,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,.064,0.10,0.17,2.21,5.59,5.58,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTS/0.337,1.25,1.01,2.04,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA AS(1,2,2)/1.250/,AS(1,2,3)/1.384/,AS(1,2,4)/2.768/,AS(1,2,5)/0.252/,AS(1,3,3)/0.26/,AS(1,3,4)/6.55/,AS(1,3,5)/0.118/,AS(1,4,4)/3.72/,AS(1,4,5)/0.237/
    # L1 SHELL RATE
    DATA AS(2,3,5)/10.56/,AS(2,4,5)/21.1/,AS(2,5,5)/0.210/
    # L3 SHELL RATE
    DATA AS(4,5,5)/0.017/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA RS(1,2)/6.51D-10/,RS(1,3)/0.01276/,RS(1,4)/0.02527/,RS(1,5)/8.30D-11/,RS(1,6)/5.95D-4/,RS(1,7)/1.179D-3/
    # L1 SHELL
    DATA RS(2,3)/6.84D-6/,RS(2,4)/1.48D-5/,RS(2,5)/1.37D-14/,RS(2,6)/1.91D-5/,RS(2,7)/3.69D-5/
    # L2 SHELL
    DATA RS(3,4)/1.45D-14/,RS(3,5)/1.21D-5/,RS(3,6)/1.31D-15/,RS(3,7)/2.02D-9/
    # L3 SHELL
    DATA RS(4,5)/1.23D-5/,RS(4,6)/1.02D-9/,RS(4,7)/1.00D-9/
    # M1 SHELL
    DATA RS(5,6)/1.235D9/,RS(5,7)/1.2351D9/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKS/9.86D4,6.45'%.3f' %.07D4,1.69D4,1.03D4,4.58D3,2.41D3,7.32'%.3f' %.08D2,8.89'%.3f' %6.3,18.0,10.1,4.05,1.99,.546,.221,6.40D-2,2.78D-2,1.51D-2,9.45D-3,4.79D-3,2.98D-3,1.39D-3,8.59D-4,4.73D-4,3.21D-4,2.42D-4,1.94D-4,1.61D-4,1.38D-4,1.21D-4,1.07D-4,8.73D-5,6.84D-5,5.02D-5,3.27D-5,2.43D-5,1.93D-5,1.60D-5,1.19D-5,9.52D-6/
    DATA XPEKS/2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # L1 SHELL 2S 1/2
    DATA YPEL1S/4.06'%.3f' %.42D5,2.24D5,1.44D5,9.30D4,7.25D4,6.11D4,5.11D4,4.42D4,1.91D4,1.01D4,6.16'%.3f' %.88D3,1.90D3,1.07D3,6.63'%.3f' %.05D2,1.64D2,51.6,22.1,6.53,2.70,1.35,.761,.307,.151,.0419,.0170,4.94D-3,2.15D-3,1.17D-3,7.32D-4,3.71D-4,2.31D-4,1.07D-4,6.65D-5,3.66D-5,2.49D-5,1.87D-5,1.50D-5,1.25D-5,1.07D-5,9.34D-6,8.28D-6,6.76D-6,5.29D-6,3.88D-6,2.53D-6,1.88D-6,1.49D-6,1.24D-6,9.24D-7,7.37D-7/
    DATA XPEL1S/230.9,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/      
    # L2 SHELL 2P 1/2
    DATA YPEL2S/1.70D6,1.48D6,7.45'%.3f' %.37D5,1.59D5,7.96D4,5.43D4,4.18'%.3f' %.18D4,2.60D4,7.52'%.3f' %.01D3,1.50D3,784.,292.,133.,69.3,24.3,10.6,2.30,.760,.156,5.05D-2,2.11D-2,1.03D-2,3.37D-3,1.43D-3,3.11D-4,1.09D-4,2.67D-5,1.05D-5,5.33D-6,3.14D-6,1.46D-6,8.41D-7,3.89D-7,2.42D-7,1.33D-7,9.07D-8,6.83D-8,5.47D-8,4.55D-8,3.89D-8,3.40D-8,3.02D-8,2.46D-8,1.93D-8,1.42D-8,9.24D-9,6.85D-9,5.44D-9,4.52D-9,3.37D-9,2.69D-9/
    DATA XPEL2S/163.6,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # L3 SHELL 2P 3/2
    DATA YPEL3S/3.20D6,2.89D6,1.48D6,6.65'%.3f' %.13D5,1.56D5,1.07D5,8.19D4,6.23D4,5.10D4,1.47D4,5.86D3,2.91D3,1.52D3,564.,257.,133.,46.6,20.3,4.34,1.42,.288,9.20D-2,3.79D-2,1.84D-2,5.89D-3,2.45D-3,5.16D-4,1.78D-4,4.29D-5,1.70D-5,8.72D-6,5.29D-6,2.58D-6,1.58D-6,7.30D-7,4.54D-7,2.50D-7,1.70D-7,1.28D-7,1.03D-7,8.54D-8,7.30D-8,6.38D-8,5.66D-8,4.62D-8,3.62D-8,2.66D-8,1.73D-8,1.29D-8,1.02D-8,8.47D-9,6.32D-9,5.04D-9/
    DATA XPEL3S/162.5,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # M1 SHELL 3S 1/2
    DATA YPEM1S/1.60D6,1.59D6,1.21D6,9.98D5,5.23D5,2.82D5,1.62D5,1.33D5,9.84D4,5.03D4,2.77D4,1.62D4,1.01D4,7.75D3,6.47D3,5.36D3,4.65D3,1.96D3,1024.,624.,392.,192.,108.,67.1,30.9,16.7,5.24,2.26,.666,.276,.138,.0778,.0314,.0155,4.29D-3,1.74D-3,5.06D-4,2.20D-4,1.20D-4,7.50D-5,3.80D-5,2.36D-5,1.10D-5,6.82D-6,3.75D-6,2.55D-6,1.92D-6,1.54D-6,1.28D-6,1.10D-6,8.50D-7,6.93D-7,5.43D-7,3.98D-7,2.60D-7,1.93D-7,1.53D-7,1.27D-7,9.48D-8,7.56D-8/
    DATA XPEM1S/22.0,25.0,30.0,40.0,70.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # M2 SHELL 3P 1/2
    DATA YPEM2S/1.30D6,1.27D6,1.76D6,1.34D6,1.11D6,5.81'%.3f' %.13D5,1.80D5,1.44D5,1.01D5,4.39D4,2.01D4,9.84D3,5.13'%.3f' %.55D3,2.76D3,2.13D3,1.16'%.3f' %48.,142.,71.8,38.0,14.4,6.60,3.46,1.22,5.39,.117,.0389,8.03D-3,2.60D-3,1.09D-3,5.33D-4,1.74D-4,7.39D-5,1.60D-5,5.63D-6,1.48D-6,5.40D-7,2.73D-7,1.61D-7,7.43D-8,4.29D-8,1.99D-8,1.24D-8,6.80D-9,4.62D-9,3.48D-9,2.79D-9,2.32D-9,1.99D-9,1.54D-9,1.26D-9,9.84D-10,7.22D-10,4.71D-10,3.49D-10,2.30D-10,1.72D-10,1.37D-10/
    DATA XPEM2S/16.0,20.0,25.0,30.0,40.0,70.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,6.0D7,8.0D7,1.0D8/
    # M3 SHELL 3P 3/2
    DATA YPEM3S/2.60D6,2.54'%.3f' %.52D6,2.68D6,2.21D6,1.16D6,6.25'%.3f' %.59D5,2.87D5,2.01D5,8.70'%.3f' %.97D4,1.94D4,1.01D4,6.98D3,5.15'%.3f' %.750D3,2.28D3,680.,277.,140.,73.7,27.7,12.7,6.64,2.34,1.02,.220,.0725,.0148,4.72D-3,1.95D-3,9.45D-4,3.03D-4,1.27D-4,2.67D-5,9.18D-6,2.22D-6,8.78D-7,4.54D-7,2.75D-7,1.35D-7,8.26D-8,3.83D-8,2.38D-8,1.31D-8,8.91D-9,6.71D-9,5.37D-9,4.47D-9,3.83D-9,2.97D-9,2.42D-9,1.90D-9,1.39D-9,9.07D-10,6.73D-10,4.44D-10,3.31D-10,2.64D-10/
    DATA XPEM3S/15.67,20.0,25.0,30.0,40.0,70.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,2472.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,1.0D7,1.2D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,6.0D7,8.0D7,1.0D8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL NIST XCOM WEB SITE
    # STORM AND ISRAEL NUCL.DATA TABLES A7(1970)565
    DATA XCOMS/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYS/170.2,170.0,169.7,169.0,168.0,166.7,165.1,161.4,156.9,143.5,129.2,103.8,85.21,72.06,62.38,48.50,38.49,22.90,15.02,8.049,5.082,3.503,2.554,1.523,1.009,.4698,.2700,.1222,.06924,.04447,.03094,.01744,.01117,.01070,7.153D-3,4.969D-3,2.796D-3,2.677D-3,1.243D-3,6.992D-4,4.475D-4,3.108D-4,2.283D-4,1.748D-4,1.381D-4,1.119D-4,4.972D-5,2.797D-5,1.243D-5,6.992D-6,4.475D-6,3.108D-6,1.748D-6,1.119D-6/
    DATA YCOMS/6.17D-3,1.402D-2,2.485D-2,5.543D-2,9.741D-2,.150,.2124,.3623,.5383,1.039,1.553,2.469,3.196,3.766,4.231,4.983,5.592,6.677,7.306,7.874,8.065,8.099,8.053,7.848,7.590,6.956,6.421,5.618,5.047,4.615,4.273,3.757,3.379,3.343,3.022,2.747,2.345,2.316,1.845,1.539,1.329,1.175,1.056,.9610,.8834,.8185,.6058,.4862,.3540,.2813,.2348,.2023,.1595,.1324/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPS/34*1.E-20,2.188D-3,1.177D-2,4.614D-2,4.973D-2,.1313,.2134,.2871,.3537,.4132,.4669,.5157,.5601,.7341,.8602,1.037,1.161,1.252,1.325,1.432,1.509/
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRS/1.0,.99962,.99862,.99700,.99463,.99162,.98800,.97900,.96769,.93919,.90462,.88575,.83612,.78588,.73781,.69369,.61976,.56428,.49048,.43821,.39011,.34307,.29846,.25789,.22239,.15750,.12050,.087775,.073556,.063131,.052706,.044881,.029237,.019362,.013112,.010256,4.537D-3,1.141D-3,3.982D-4,1.208D-5,1.991D-6,8.514D-7,2.342D-10,1.78D-19,1.96D-28/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCS/1.7D-21,4.37D-4,1.812D-3,4.04D-3,7.1375D-3,.011062,.015787,.027425,.041625,.075794,.11446,.13444,.18373,.23000,.27216,.31000,.37400,.42469,.50012,.56000,.61431,.66412,.70850,.74700,.77950,.83837,.87438,.91506,.94069,.95944,.97294,.98225,.99250,.99675,.99856,.99931,.99981,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # SULFUR ATOMIC NUMBER
    IZ[1]=16
    AMZ[1]=32.065
    # 
    # ATOMIC FLOURINE DATA FOR CASCADE CALCULATIONS
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCF/2,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESF/14.0,2.5,2.5,2.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHF/0.08,2.00,6.00,8.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.20,1.20,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.40,1.00,2.50,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.40,1.20,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTF/1.29,5.5,7.0,11.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    #     DATA AF(1,2,2)/0.838/,AF(1,2,3)/0.816/,AF(1,3,3)/0.377/
    #     DATA AF(1,2,4)/0.216/,AF(1,3,4)/0.104/
    DATA AF(1,2,2)/0.838/,AF(1,2,3)/0.816/,AF(1,3,3)/0.754/
    DATA AF(1,2,4)/1.224/,AF(1,3,4)/2.262/,AF(1,4,4)/2.262/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA RF(1,2)/1.17D-12/,RF(1,3)/5.88D-4/,RF(1,4)/1.17D-3/
    # L1 SHELL
    DATA RF(2,3)/1.27D-6/,RF(2,4)/2.57D-6/
    # L2 SHELL
    DATA RF(3,4)/1.69D-18/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKF/4.3'%.3f' %.20D5,2.53D5,2.02D5,1.68D5,5.89D4,2.70D4,8.58'%.3f' %.72D3,1.92D3,1.11D3,462.,232.,65.2,26.1,7.07,2.77,1.34,.734,.285,.137,.0364,.0144,.00409,.00176,9.47D-4,5.90D-4,2.98D-4,1.85D-4,8.73D-5,5.48D-5,3.06D-5,2.09D-5,1.59D-5,1.28D-5,9.13D-6,7.11D-6,5.99D-6,3.36D-6,2.19D-6,1.63D-6,1.30D-6,1.08D-6,8.03D-7,6.41D-7/
    DATA XPEKF/685.4,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,8.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # L1 SHELL 2S 1/2
    DATA YPEL1F/3.70D6,6.60D5,4.17'%.3f' %.46D5,2.56D5,1.26D5,6.41'%.3f' %.46D4,1.97D4,1.44D4,1.16D4,9.24D3,7.76D3,2.80D3,1.32D3,438.,194.,102.,59.7,25.2,12.8,3.64,1.47,.402,.158,.0765,.0421,.0164,.00789,.00210,8.35D-4,2.37D-4,1.02D-4,5.48D-5,3.41D-5,1.72D-5,1.07D-5,5.06D-6,3.18D-6,1.77D-6,1.21D-6,9.20D-7,7.39D-7,5.29D-7,4.12D-7,2.64D-7,1.95D-7,1.27D-7,9.45D-8,7.51D-8,6.24D-8,4.66D-8,3.71D-8/
    DATA XPEL1F/34.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,8.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2F/1.0D7,1.00'%.3f' %.2D6,6.93'%.3f' %.73D5,2.65D5,1.59D5,4.99D4,1.78D4,7.22'%.3f' %.19D3,2.03D3,1.50D3,1.09D3,860.,212.,75.7,17.0,5.71,2.40,1.17,.375,.154,.0300,.00931,.00177,5.46D-4,2.19D-4,1.05D-4,3.29D-5,1.36D-5,2.82D-6,9.63D-7,2.29D-7,8.82D-8,4.40D-8,2.58D-8,1.18D-8,6.74D-9,2.75D-9,1.73D-9,9.63D-10,6.60D-10,5.00D-10,4.02D-10,2.88D-10,2.24D-10,1.44D-10,1.06D-10,6.91D-11,5.14D-11,4.08D-11,3.39D-11,2.53D-11,2.02D-11/
    DATA XPEL2F/16.0,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,8.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # L3 SHELL 2P 3/2
    DATA YPEL3F/2.0D7,2.0D7,6.4D6,1.39D6,7.43D5,5.30'%.3f' %.18D5,9.98'%.3f' %.57D4,1.43D4,6.32D3,4.03D3,2.97D3,2.16D3,1.70D3,419.,149.,33.5,11.2,4.71,2.30,.731,.298,.0578,.0178,.00335,.00102,4.07D-4,1.92D-4,5.95D-5,2.42D-5,4.90D-6,1.65D-6,3.91D-7,1.53D-7,7.86D-8,4.75D-8,2.33D-8,1.43D-8,6.69D-9,4.20D-9,2.34D-9,1.60D-9,1.22D-9,9.77D-10,7.00D-10,5.44D-10,3.50D-10,2.57D-10,1.68D-10,1.25D-10,9.93D-11,8.25D-11,6.16D-11,4.91D-11/
    DATA XPEL3F/16.0,25.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.5D6,2.0'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,8.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    DATA XCOMF/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYF/53.87,53.82,53.77,53.62,53.42,53.16,52.85,52.07,51.11,48.01,44.27,36.25,29.02,23.25,18.86,13.07,9.647,5.470,3.611,1.921,      1.181,.7966,.5731,.3370,.2212,.1013,.05764,.02585,.01459,.009349, 6.498D-3,3.658D-3,2.342D-3,2.242D-3,1.499D-3,1.041D-3,5.858D-4,5.609D-4,2.604D-4,1.465D-4,9.374D-5,6.510D-5,4.783D-5,3.662D-5,2.893D-5,2.344D-5,1.046D-5,5.883D-6,2.614D-6,1.471D-6,9.412D-7,6.535D-7,3.677D-7,2.353D-7/  
    DATA YCOMF/1.935D-3,4.736D-3,8.533D-3,.01925,.03410,.05298,.07579,.1325,.2029,.4270,                  .6987,1.293,1.861,2.354,2.762,3.353,3.735,4.257,4.524,4.760,4.808,4.775,4.706,4.533,4.354,3.955,3.637,3.172,2.846,2.600,2.406,2.115,1.902,1.882,1.701,1.546,1.319,1.303,1.038,.8658,.7477,.6609,.5940,.5406,.4969,.4604,.3408,.2735,.1991,.1582,    .1321,.1138,.08974,.07449/    
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPF/34*1.E-20,6.506D-4,3.60D-3,.01434,.01546,.04137,.06799,.09219,.1141,.1339,.1518,.1680,.1829,.2403,.2830,.3451,.3893,     .4199,.4463,.4852,.5119/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRF/1.0,.99973,.99910,.9981,.9967,.9948,.9926,.9868,.9794,.9604,.9362,.9223,.8833,.8398,.7931,.7451,.6497,.5611,.4172,.3189,.2562,.2172,.1926,.1762,.1646,.1430,.1243,.08978,.06246,.04616,.02986,.02354,.01091,.006078,.003611,.002744,.001011,2.268D-4,7.432D-5,2.042D-6, 3.244D-7,1.362D-7,2.758D-11,1.59D-20,1.63D-29/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCF/1.1D-21,2.22D-4,.00111,.002489,.004411,.006878,.009867,.01739,.02689,.05122,.08166,.09867,.1453,.1957,.2474,.2990,.3966,.4830,.6169,.7043,.7591,.7946,.8196,.8391,.8559,.8916,.9209,.9609,.9816,.9914,.99590,.99800,.99946,.99983,.99994,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # FLOURINE ATOMIC NUMBER
    IZ[2]=9
    AMZ[2]=113.9904
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBTS[I]/100.0
    PRSHBT[2][I]=PRBSHBTF[I]/100.0
    DO 1 J=1,17
    PRBSHS[I][J]=PRBSHS[I][J]/100.0
    PRBSHF[I][J]=PRBSHF[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUMS=0.0
    PRSUMF=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSHS[J][I]
    PRSH[2][I][J]=PRBSHF[J][I]
    #     PRSUMF=PRSUMF+PRSH[2][I][J]
    #     PRSUMS=PRSUMS+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUMS,PRSUMF
    # 888 print(' I=',I3,' PRSUMS=','%.3f' %,' PRSUMF=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ESS[I]
    ESH[2][I]=ESF[I]
    INIOCC[1][I]=INIOCS[I]
    INIOCC[2][I]=INIOCF[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=AS[I][J][K]*0.0272105
    4 AUG[2][I][J][K]=AF[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=AS[I][J][K]*0.00272105
    5 AUG[2][I][J][K]=AF[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    RS[I][J]=RS[I][J]*6.582119D-16
    12 RF[I][J]=RF[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=RS[I][J]
    13 RAD[2][I][J]=RF[I][J]
    #  
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD SULFUR PHOTOELECTRIC DATA
    DO 21 J=1,42
    XPE[1][1][J]=math.log(XPEKS[J])
    YPE[1][1][J]=math.log(YPEKS[J]*1.E-24)
    21 CONTINUE
    DO 22 J=1,53
    XPE[1][2][J]=math.log(XPEL1S[J])
    YPE[1][2][J]=math.log(YPEL1S[J]*1.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2S[J])
    YPE[1][3][J]=math.log(YPEL2S[J]*1.E-24)
    XPE[1][4][J]=math.log(XPEL3S[J])
    YPE[1][4][J]=math.log(YPEL3S[J]*1.E-24)
    23 CONTINUE
    DO 231 J=1,60
    XPE[1][5][J]=math.log(XPEM1S[J])
    YPE[1][5][J]=math.log(YPEM1S[J]*1.E-24)
    XPE[1][6][J]=math.log(XPEM2S[J])
    YPE[1][6][J]=math.log(YPEM2S[J]*1.E-24)
    XPE[1][7][J]=math.log(XPEM3S[J])
    YPE[1][7][J]=math.log(YPEM3S[J]*1.E-24)
    231 CONTINUE 
    # LOAD FLUORINE PHOTOELECTRIC DATA
    # SCALE BY 6 SINCE 6 ATOMS PER SULFUR
    DO 24 J=1,45
    XPE[2][1][J]=math.log(XPEKF[J])
    YPE[2][1][J]=math.log(YPEKF[J]*6.0*1.E-24)
    24 CONTINUE
    DO 25 J=1,53
    XPE[2][2][J]=math.log(XPEL1F[J])
    YPE[2][2][J]=math.log(YPEL1F[J]*6.0*1.E-24)
    25 CONTINUE 
    DO 26 J=1,55 
    XPE[2][3][J]=math.log(XPEL2F[J])
    YPE[2][3][J]=math.log(YPEL2F[J]*6.0*1.E-24)
    26 CONTINUE
    DO 27 J=1,55 
    XPE[2][4][J]=math.log(XPEL3F[J])
    YPE[2][4][J]=math.log(YPEL3F[J]*6.0*1.E-24)
    27 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 28 J=1,54
    XCP[1][J]=math.log(XCOMS[J])
    XCP[2][J]=math.log(XCOMF[J])
    YRY[1][J]=math.log(YRAYS[J]*1.E-24)
    YRY[2][J]=math.log(YRAYF[J]*6.0*1.E-24)
    YCP[1][J]=math.log(YCOMS[J]*1.E-24)
    YCP[2][J]=math.log(YCOMF[J]*6.0*1.E-24)
    YPP[1][J]=math.log(YPAPS[J]*1.E-24)
    YPP[2][J]=math.log(YPAPF[J]*6.0*1.E-24)
    28 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTOR
    DO 29 J=1,45
    FFAR[1][J]=FFRS[J]
    FFAR[2][J]=FFRF[J]
    FFAC[1][J]=FFCS[J]
    FFAC[2][J]=FFCF[J]
    29 CONTINUE
    return
    # end
def CGAS31(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS32(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS33(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS34(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS35(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS36(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS37(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS38(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS39(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS40(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS41(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS42(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS43(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS44(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    DIMENSION INIOC(17),PRBSH(17,17),ES(17),R(17,17),A[17,17,17],PRBSHBT(17)
    DIMENSION INIOCN(17),PRBSHN(17,17),ESN(17),RN(17,17),AN(17,17,17),PRBSHBTN(17)
    DIMENSION INIOCH(17),PRBSHH(17,17),ESHH(17),RH(17,17),AH(17,17,17),PRBSHBTH(17)  
    DIMENSION XPEK(49),YPEK(49),XPEL1(54),YPEL1(54),XPEL2(54),YPEL2(54),XCOMC(54),YRAYC(54),YCOMC(54),YPAPC(54),FFRC(45),FFCC(45)
    DIMENSION XPEKN(47),YPEKN(47),XPEL1N(53),YPEL1N(53),XPEL2N(55),YPEL2N(55),XPEL3N(55),YPEL3N(55),XCOMN(54),YRAYN(54),YCOMN(54),YPAPN(54),FFRN(45),FFCN(45)
    DIMENSION XPEKH(54),YPEKH(54),XCOMH(54),YRAYH(54),YCOMH(54),YPAPH(54),FFRH(45),FFCH(45)
    # 
    # TRIMETHYL AMINE  TMA
    #  C3NH9  DATA FOR CASCADE CALCULATIONS
    #
    # CARBON DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOC/2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ES/10.00,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSH/0.20,3.00,9.00,0.0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.80,3.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,238*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBT/2.74,12.0,12.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA A[1][2][2]/0.858/,A[1][2][3]/0.824/,A[1][3][3]/0.378/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA R(1,2)/1.50E-14/,R(1,3)/3.45E-5/,R(1,4)/6.88E-5/
    # L1 SHELL
    DATA R(2,3)/1.20E-7/,R(2,4)/2.41E-7/
    # L2 SHELL
    DATA R(3,4)/1.55E-21/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEK/9.26E5,7.98E5,4.81E5,2.35E5,1.21E5,8.42E4,6.57E4,5.09E4,4.20E4,1.33E4,5.73E3,1.70E3,707.,354.,200.,80.4,39.3,10.6,4.12,1.08,.415,.197,.107,.0411,.0195,.00512,.00201,5.64E-4,2.41E-4,1.29E-4,8.05E-5,4.06E-5,2.52E-5,1.19E-5,7.51E-6,4.21E-6,2.90E-6,2.20E-6,1.77E-6,1.27E-6,9.93E-7,6.39E-7,4.71E-7,3.08E-7,2.29E-7,1.82E-7,1.51E-7,1.13E-7,9.01E-8/
    DATA XPEK/285.0,300.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1/1.35E7,1.50E6,4.00E5,2.21E5,1.70E5,1.14E5,4.58E4,2.07E4,1.02E4,5.34E3,3.76E3,2.97E3,2.32E3,1.93E3,635.,280.,85.1,35.7,18.0,10.3,4.16,2.05,.554,.217,.0571,.0220,.0105,.00570,.00218,.00104,   2.72E-4,1.07E-4,3.00E-5,1.28E-5,6.88E-6,4.28E-6,2.16E-6,1.34E-6,6.37E-7,4.02E-7,2.26E-7,1.55E-7,1.18E-7,9.49E-8,6.82E-8,5.32E-8,3.42E-8,2.52E-8,1.65E-8,1.23E-8,9.75E-9,8.10E-9,6.05E-9,4.82E-9/
    DATA XPEL1/18.0,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2/1.35E7,9.0E5,1.50E5,7.81E4,5.15E4,2.79E4,7.59E3,2.49E3,924.,383.,239.,173.,124.,94.6,20.7,6.75,1.36,.432,.176,.0841,  .0259,.0103,.00189,5.64E-4,1.02E-4,3.06E-5,1.20E-5,5.63E-6,1.72E-6,6.96E-7,1.40E-7,4.69E-8,1.10E-8,4.26E-9,2.16E-9,1.29E-9,6.20E-10,3.76E-10,1.82E-10,1.15E-10,6.45E-11,4.44E-11,3.37E-11,2.71E-11,1.95E-11,1.52E-11,9.77E-12,7.20E-12,4.71E-12,3.50E-12,2.79E-12,2.31E-12,1.73E-12,1.38E-12/
    DATA XPEL2/6.40,50.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    DATA XCOMC/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYC/23.94,23.90,24.85,23.72,23.53,23.31,23.03,22.37,21.52,19.12,16.59,12.22,9.179,7.170,5.819,4.181,3.232,1.952,1.292,.6711,      .4079,.2734,.1956,.1139,.07418,.03360,.01903,8.504D-3,4.792D-3,   3.070D-3,                  2.133D-3,1.200D-3,7.682D-4,7.355D-4,4.917D-4,3.415D-4,1.921D-4,1.839D-4,8.539D-5,4.803D-5,3.074D-5,2.135D-5,1.568D-5,1.201D-5,9.488D-6,7.685D-6,3.415D-6,1.921D-6,8.537D-7,4.802D-7,3.073D-7,2.134D-7,1.200D-7,7.682D-8/  
    DATA YCOMC/3.044D-3,6.469D-3,.01140,.02518,.04448,.06870,.09764, .1680,.2519,.5001,                  .7702,1.278,1.685,1.984,2.202,2.497,2.697,3.012,3.182,3.300,3.296,3.250,3.188,3.054,2.924,2.647,2.431,2.118,1.899,1.735,1.605,1.410,1.268,1.255,1.134,1.031,.8795,.8687,.6920,.5772,.4985,.4406,.3960,.3604,.3313,.3069,.2272,.1823,.1327,.1055,    .08805,.07586,.05983,.04966/  
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPC/34*1.E-20,2.870D-4,1.594D-3,6.356D-3,6.852D-3,.01844, .03054,   .04163,.05178,.06095,.06928,.07690,.08388,.1108,.1310,.1597,.1802,.1958,.2080,.2263,.2401/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRC/1.0,.99957,.99830,.9962,.9932,.9895,.9848,.9735,.9590,.9228,.8783,.8538,.7902,.7218,.6562,.5962,.4935,.4170,.3252,.2810,.2558,.2375,.2202,.2027,.1853,.1441,.1094,.0620,.03577,.02147,.01341,.008705,.004055,.002108,.001191,7.198D-4,3.06D-4,6.295D-5, 2.027D-5,5.398D-7,8.455D-8,3.52D-8,5.993D-12,2.767D-21,2.80D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCC/1.7D-21,6.317D-4,.002165,.004922,.008607,.01341,.01928,.03358,.05143,.0948,.1459,.1732,.2413,.3110,.3755,.4340,.5330,.6072,.6973,.7463,.7817,.8130,.8418,.8680,.8913,.9358,.9635,.9883,.9962,.9987,.99947,.99977,.99995,.99998,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # CARBON ATOMIC NUMBER
    IZ[1]=6
    AMZ[1]=36.0321    
    # 
    # ATOMIC NITROGEN DATA 
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCN/2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESN/11.00,2.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHN/0.12,2.50,8.00,4.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.30,2.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,1.00,2.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.50,2.00,0.50,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,221*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTN/2.2,6.0,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0/
    #
    # AUGER AND COSTER-KRONIG TRANSITION RATES FOR K AND L SHELLS 
    #  WALTERS AND BHALLA (1971)
    # K SHELL RATE (MILLIATOMIC UNITS) TO GET TO EV *0.0272105
    DATA AN(1,2,2)/0.842/,AN(1,2,3)/0.828/,AN(1,3,3)/0.380/
    DATA AN(1,2,4)/0.072/,AN(1,3,4)/0.035/
    # RADIATIVE TRANSITIONS SCOFIELD ANDT 14(1974)121
    # DIPOLE AND HIGHER MULTIPOLES , RELATIVISTIC CALC. UNITS 1.519E15/SEC
    # K-SHELL
    DATA RN(1,2)/8.04E-14/,RN(1,3)/1.104E-4/,RN(1,4)/2.201E-4/
    # L1 SHELL
    DATA RN(2,3)/3.09E-7/,RN(2,4)/6.23E-7/
    # L2 SHELL
    DATA RN(3,4)/2.65E-20/
    # 
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKN/7.0E5,3.78E5,2.03E5,1.43E5,1.13E5,8.83E5,7.32E4,2.39E4,1.05E4,3.20E3,1.35E3,681.,388.,158.,78.2,21.3,8.39,2.22,.861,.411,.225,.0863,.0412,.0108,.00428,.00120,5.14E-4,2.77E-4,1.72E-4,8.69E-5,5.40E-5,2.55E-5,1.61E-5,8.99E-6,6.18E-6,4.69E-6,3.77E-6,2.71E-6,2.11E-6,1.36E-6,9.99E-7,6.54E-7,4.86E-7,3.86E-7,3.21E-7,2.39E-7,1.91E-7/
    DATA XPEKN/401.6,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L1 SHELL 2S 1/2
    DATA YPEL1N/4.50E6,4.80E5,2.98E5,2.35E5,1.63E5,7.04E4,3.31E4,1.68E4,9.06E3,6.45E3,5.12E3,4.03E3,3.38E3,1.15E3,522.,164.,70.0,35.8,20.6,8.46,
    .4.21,1.16,.459,.122,.0475,.0227,.0124,.00478,.00229,6.02E-4,2.37E-4,6.68E-5,2.86E-5,1.54E-5,9.57E-6,4.83E-6,3.00E-6,1.42E-6,8.94E-7,5.01E-7,3.44E-7,2.61E-7,2.10E-7,1.51E-7,1.17E-7,7.55E-8,5.56E-8,3.64E-8,2.70E-8,2.15E-8,1.79E-8,1.33E-8,1.06E-8/
    DATA XPEL1N/24.4,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/          
    # L2 SHELL 2P 1/2
    DATA YPEL2N/3.20E6,4.00E6,4.00E6,1.8E5,8.45E4,5.70E4,3.19E4,8.90E3,2.95E3,1.14E3,482.,301.,220.,160.,124.,28.4,9.73,2.02,.647,.266,.128,.0402,.0162,.00306,9.27E-4,1.72E-4,5.20E-5,2.07E-5,9.78E-6,3.03E-6,1.24E-6,2.55E-7,8.63E-8,2.03E-8,7.78E-9,3.88E-9,2.25E-9,1.02E-9,5.85E-10,2.44E-10,1.54E-10,8.60E-11,5.91E-11,4.49E-11,3.61E-11,2.59E-11,2.02E-11,1.30E-11,9.56E-12,6.25E-12,4.65E-12,3.70E-12,3.07E-12,2.29E-12,1.83E-12/
    DATA XPEL2N/14.534,20.0,25.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # L3 SHELL 2P 3/2
    DATA YPEL3N/6.40E6,8.00E6,8.00E6,3.6E5,1.68E5,1.14E5,6.38E4,1.78E4,5.90E3,2.29E3,964.,603.,440.,319.,246.,56.4,19.3,4.00,1.28,.524,.252,.0787,.0317,.00593,.00179,3.27E-4,9.82E-5,3.87E-5,1.82E-5,5.55E-6,2.25E-6,4.50E-7,1.51E-7,3.54E-8,1.39E-8,7.10E-9,4.32E-9,2.12E-9,1.31E-9,6.29E-10,3.96E-10,2.22E-10,1.52E-10,1.16E-10,9.31E-11,6.68E-11,5.20E-11,3.34E-11,2.46E-11,1.61E-11,1.20E-11,9.53E-12,7.91E-12,5.91E-12,4.71E-12/
    DATA XPEL3N/14.524,20.0,25.0,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL           J.PHYS.CHEM.REF.DATA    4(1975)471
    # HUBBEL           NIST XCOM WEB SITE
    # STORM AND ISRAEL   NUCL.DATA TABLES  A7(1970)565
    DATA XCOMN/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YRAYN/32.55,32.51,32.47,32.34,32.15,31.91,31.62,30.90,30.03,27.34,24.32,18.61,14.21,11.10,8.927,6.246,4.722,2.805,1.870,.9839,      .6009,.4042,.2901,.1697,.1109,.05046,.02863,.01281,.007221,       .004626,                   3.215D-3,1.809D-3,1.158D-3,1.109D-3,7.414D-4,5.149D-4,2.897D-4,2.773D-4,1.287D-4,7.243D-5,4.635D-5,3.219D-5,2.365D-5,1.811D-5,1.431D-5,1.159D-5,5.164D-6,2.905D-6,1.291D-6,7.263D-7,4.648D-7,3.227D-7,1.816D-7,1.162D-7/  
    DATA YCOMN/2.698D-3,6.260D-3,.01180,.02508,.04428,.06856,.09770, .1692,.2560,.5198,                  .8165,1.392,1.866,2.225,2.494,2.858,3.093,3.449,3.645,3.800,3.811,3.766,3.700,3.551,3.403,3.085,2.834,2.470,2.215,2.023,1.872,1.645,1.479,1.464,1.323,1.202,1.026,1.013,.8073,.6734,.5815,.5140,.4620,.4205,.3865,.3581,.2650,.2127,.1549,.1231,    .1027,.08851,.06980,.05793/   
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPN/34*1.E-20,3.931D-4,2.177D-3,8.667D-3,9.343D-3,.02507,.04138,   .05628,.06989,.08213,.09326,.1034,.1127,.1487,.1753,.2138,.2397,  .2609,.2763,.3012,.3193/   
    # NORMALISED RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRN/1.0,.99911,.99814,.9970,.9947,.9919,.9897,.9793,.9680,.9391,.9031,.8834,.8280,.7696,.7099,.6514,.5464,.4597,.3420,.2769,.2421,.2217,.2066,.1931,.1803,.1307,.1197,.07481,.0462,.0325,.01881,.01457,.006071,.003214,.001871,.001443,5.857D-4,1.087D-4,3.519D-5,9.463D-7,1.490D-7,6.217D-8,1.127D-11,5.67D-21,5.77D-30/
    # NORMALISED COMPTON FORM FACTOR  Hubbel
    DATA FFCN/1.4D-21,4.3D-4,.00186,.00417,.00739,.01149,.01644,.02881,.04429,.08257,.1292,.1543,.2200,.2861,.3496,.4083,.5084,.5853,.6846,.7403,.7767,.8050,.8299,.8526,.8733,.9166,.9471,.9800,.9924,.9970,.99876,.99943,.99987,.99997,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # NITROGEN ATOMIC NUMBER
    IZ[2]=7
    AMZ[2]=14.0067
    # 
    # ATOMIC HYDROGEN DATA
    #
    # LEVEL OCCUPANCY FOR GROUND STATE
    DATA INIOCH/1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/
    # AVERAGE SHAKE OFF ELECTRON ENERGY
    DATA ESHH/17*0.0/ 
    # SHAKE OFF DATA :  CARLSON AND NESTOR PHYS REV A8(1973)2887
    # % PROBABILITY OF J SHELL SHAKE OFF FROM VACANCY IN SHELL I PROBSH[I][J]
    DATA PRBSHH/289*0.0/
    # SHAKE OFF DATA : CARLSON,NESTOR ET AL PHYS REV 169(1968)27
    # % PROBABILITY OF J SHELL SHAKE OFF FROM BETA DECAY PRSHBT[J]
    DATA PRBSHBTH/17*0.0/
    #
    # PHOTOELECTRIC ABSORPTION X-SECTIONS FOR EACH SHELL: 
    #    UNITS BARNS/ATOM AND ENERGIES IN EV
    #  ASSEMBLED FROM: BAND ET AL.            ANDT 23(1979)443
    #                : SCOFIELD               UCRL-51326
    #                : VIEGELE                ATOMIC DATA 5(1973)50
    # K  SHELL 1S 1/2
    DATA YPEKH/6.41E6,2.18E6,1.93E4,8.10E3,5.31E3,2.86E3,765.,251.,96.6,41.9,26.7,19.7,14.4,11.4,2.93,1.11,.281,.105,.0491,.0263,.00982,.00456,.00113,4.18E-4,1.03E-4,3.82E-5,1.77E-5,9.46E-6,3.52E-6,1.64E-6,4.18E-7,1.61E-7,4.41E-8,1.86E-8,9.93E-9,6.16E-9,3.12E-9,1.96E-9,9.73E-10,6.20E-10,3.52E-10,2.44E-10,1.87E-10,1.51E-10,1.09E-10,8.50E-11,5.49E-11,4.06E-11,2.66E-11,1.98E-11,1.58E-11,1.31E-11,9.79E-12,7.81E-12/
    DATA XPEKH/13.598,20.,100.,132.3,151.4,184.,278.,392.,525.,676.5,775.,849.,932.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0E4,1.5E4,2.0E4,3.0E4,4.0E4,5.0E4,6.0E4,8.0E4,1.0E5,1.5E5,2.0E5,3.0E5,4.0E5,5.0E5,6.0E5,8.0E5,1.0E6,1.5E6,2.0E6,3.0E6,4.0E6,5.0E6,6.0E6,8.0E6,1.0E7,1.5E7,2.0E7,3.0E7,4.0E7,5.0E7,6.0E7,8.0E7,1.0E8/
    # RAYLEIGH      COMPTON AND PAIR PRODUCTION DATA
    # HUBBEL        J.PHYS.CHEM.REF.DATA 4(1975)471
    # HUBBEL        NIST XCOM WEB SITE
    # STORM AND ISRAEL    NUCL.DATA TABLES  A7(1970)565
    DATA XCOMH/100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.5D5,2.0'%.3f' %.0D5,4.0D5,5.0D5,6.0D5,8.0D5,1.0D6,1.022D6,1.25D6,1.5D6,2.0D6,2.044'%.3f' %.0D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.5D7,2.0'%.3f' %.0D7,4.0D7,5.0D7,6.0D7,8.0D7,1.0D8/
    DATA YCOMH/9.552D-4,2.144D-3,3.802D-3,8.494D-3,1.496D-2,2.310D-2,3.279D-2,5.629D-2,8.424D-2,0.1650,.2478,.3822,.4675,.5187,.5503,.5840,.5993,.6095,.6068,.5924,.5759,.5597,.5444,.5166,.4923,.4435,.4064,.3535,.3168,.2893,.2676,.2351,.2114,.2092,.1890,.1718,.1466,.1448,.1153,.0962,.08308,.07343,.0660,.06007,.05522,.05116,.03786,.03039,.02212,.01758,.01467,.01264,.009972,.008276/
    DATA YRAYH/.6650,.6635,.6617,.6569,.6503,.6421,.6323,.6087,.5806,.4984,.4142,.2764,.1881,.1341,.09987,.06126,.04121,.01943,.01119,.005062,.002866,.001840,.001280,7.211D-4,4.619D-4,2.054D-4,1.156D-4,5.138D-5,2.890D-5,1.850D-5,1.285D-5,7.226D-6,4.625D-6,4.428D-6,2.960D-6,2.056D-6,1.156D-6,1.107D-6,5.139D-7,2.891D-7,1.850D-7,1.285D-7,9.439D-8,7.227D-8,5.710D-8,4.625D-8,2.056D-8,1.156D-8,5.139D-9,2.890D-9,1.850D-9,1.284D-9,7.222D-10,4.620D-10/
    # TOTAL PAIR PRODUCTION NUCLEAR + ELECTRON
    DATA YPAPH/34*1.E-20,7.805D-6,4.385D-5,1.758D-4,1.895D-4,5.451D-4,9.849D-4,1.430D-3,1.859D-3,2.260D-3,2.634D-3,2.984D-3,3.308D-3,4.61D-3,5.61D-3,7.08D-3,8.13D-3,8.98D-3,9.65D-3,1.074D-2,1.161D-2/
    # RAYLEIGH FORM FACTOR  Hubbel
    DATA FFRH/1.0,.9994,.9978,.9950,.9912,.9863,.9804,.9655,.9469,.8999,.8424,.8108,.7271,.6413,.5581,.4808,.3497,.2513,.1304,.07059,.04032,.02429,.01533,.01009,.006881,.002995,.001494,4.890D-4,2.035D-4,9.902D-5,5.373D-5,3.160D-5,1.300D-5,6.282D-6,3.395D-6,1.992D-6,8.168D-7,1.615D-7,5.112D-8,1.309D-9,1.998D-10,8.182D-11,8.182D-15,8.182D-27,8.182D-39/
    # COMPTON FORM FACTOR  Hubbel
    DATA FFCH/1.E-20,.001105,.004410,.009888,.01749,.02717,.03883,.06773,.1033,.1902,.2904,.3426,.4713,.5887,.6885,.7689,.8777,.9369,.9830,.9950,.9984,.9994,.9998,.9999,.99995,.99999,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0/
    # HYDROGEN ATOMIC NUMBER
    IZ[3]=1
    AMZ[3]=9.07146    
    #
    # CONVERT SHAKE OFF FROM A % TO A PROBABILITY
    DO 1 I=1,17
    PRSHBT[1][I]=PRBSHBT[I]/100.0
    PRSHBT[2][I]=PRBSHBTN[I]/100.0
    PRSHBT(3,I)=PRBSHBTH[I]/100.0
    DO 1 J=1,17
    PRBSH[I][J]=PRBSH[I][J]/100.0
    PRBSHN[I][J]=PRBSHN[I][J]/100.0
    PRBSHH[I][J]=PRBSHH[I][J]/100.0
    1 CONTINUE  
    # SWAP INDICES AND DO CHECK SUM
    DO 2 I=1,17
    PRSUM=0.0
    PRSUMN=0.0
    PRSUMH=0.0
    DO 2 J=1,17
    PRSH[1][I][J]=PRBSH[J][I]
    PRSH[2][I][J]=PRBSHN[J][I]
    PRSH[3][I][J]=PRBSHH[J][I]
    #     PRSUMH=PRSUMH+PRSH[2][I][J]
    #     PRSUM=PRSUM+PRSH[1][I][J]
    #     WRITE(6,888) I,PRSUM,PRSUMH
    # 888 print(' I=',I3,' PRSUM=','%.3f' %,' PRSUM=','%.3f' %)
    2 CONTINUE
    # LOAD SKAKE OFF ENERGIES AND LEVEL OCCUPATIONS
    DO 3 I=1,17
    ESH[1][I]=ES[I]
    ESH[2][I]=ESN[I]
    ESH(3,I)=ESHH[I]
    INIOCC[1][I]=INIOC[I]
    INIOCC[2][I]=INIOCN[I]
    INIOCC(3,I)=INIOCH[I]
    3 CONTINUE
    #
    # AUGER PROBABILITIES IN ARRAY AUG[I][J][K] INITIAL VACANCY IN SHELL I,
    # WITH TRANSITION TO SHELLS J,K
    # LOAD OUTPUT ARRAYS AND CONVERT TO EV
    DO 4 I=1,4
    DO 4 J=1,17
    DO 4 K=1,17 
    AUG[1][I][J][K]=A[I][J][K]*0.0272105 
    AUG[2][I][J][K]=AN[I][J][K]*0.0272105 
    4 AUG[3][I][J][K]=AH[I][J][K]*0.0272105  
    DO 5 I=5,17
    DO 5 J=1,17
    DO 5 K=1,17
    AUG[1][I][J][K]=A[I][J][K]*0.00272105
    AUG[2][I][J][K]=AN[I][J][K]*0.00272105
    5 AUG[3][I][J][K]=AH[I][J][K]*0.00272105
    # CHECK AUGER LEVEL SUMS
    #     DO 7 I=1,17
    #     ASUM=0.0
    #     DO 6 J=1,17
    #     DO 6 K=1,17
    #   6 ASUM=ASUM+AUG[I][J][K]
    #     WRITE(6,887) I,ASUM
    # 887 print(' I=',I3,' ASUM=','%.3f' %)
    #   7 CONTINUE
    #  
    # CONVERT RADIATIVE RATES IN M AND N SHELL TO EV 
    DO 12 I=5,17
    DO 12 J=6,17
    R[I][J]=R[I][J]*6.582119D-16
    RN[I][J]=RN[I][J]*6.582119D-16
    12 RH[I][J]=RH[I][J]*6.582119D-16
    # LOAD OUTPUT ARRAY
    DO 13 I=1,17
    DO 13 J=1,17
    RAD[1][I][J]=R[I][J]
    RAD[2][I][J]=RN[I][J]
    13 RAD[3][I][J]=RH[I][J]
    # PRINTOUT CHECK SUM
    #     DO 15 I=1,17
    #     RSUM=0.0
    #     DO 14 J=1,17
    #  14 RSUM=RSUM+R[I][J]
    #     WRITE(6,100) I,RSUM
    # 100 print(' SHELL =',I3,' RAD RATE EV=','%.3f' %)
    #  15 CONTINUE
    #
    # LOAD CARBON PHOTOELECTRIC AND COMPTON DATA
    # ALLOW FOR 3 CARBON ATOMS
    DO 21 J=1,49
    XPE[1][1][J]=math.log(XPEK[J])
    YPE[1][1][J]=math.log(YPEK[J]*3.E-24)
    21 CONTINUE
    DO 22 J=1,54
    XPE[1][2][J]=math.log(XPEL1[J])
    YPE[1][2][J]=math.log(YPEL1[J]*3.E-24)
    22 CONTINUE 
    DO 23 J=1,54 
    XPE[1][3][J]=math.log(XPEL2[J])
    YPE[1][3][J]=math.log(YPEL2[J]*3.E-24)
    23 CONTINUE
    # LOAD NITROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 24 J=1,47
    XPE[2][1][J]=math.log(XPEKN[J])
    YPE[2][1][J]=math.log(YPEKN[J]*1.E-24)
    24 CONTINUE
    DO 25 J=1,53
    XPE[2][2][J]=math.log(XPEL1N[J])
    YPE[2][2][J]=math.log(YPEL1N[J]*1.E-24)
    25 CONTINUE 
    DO 26 J=1,55
    XPE[2][3][J]=math.log(XPEL2N[J])
    YPE[2][3][J]=math.log(YPEL2N[J]*1.E-24)
    26 CONTINUE
    DO 27 J=1,55
    XPE[2][4][J]=math.log(XPEL3N[J])
    YPE[2][4][J]=math.log(YPEL3N[J]*1.E-24)
    27 CONTINUE
    # LOAD HYDROGEN PHOTOELECTRIC AND COMPTON DATA
    DO 28 J=1,54
    XPE[3][1][J]=math.log(XPEKH[J])
    # ALLOW FOR 9 HYDROGEN ATOMS
    YPE[3][1][J]=math.log(YPEKH[J]*9.0*1.E-24)
    28 CONTINUE
    # LOAD RAYLEIGH COMPTON AND PAIR PRODUCTION X-SEC
    DO 29 J=1,54
    XCP[1][J]=math.log(XCOMC[J])
    XCP[2][J]=math.log(XCOMN[J])
    XCP[3][J]=math.log(XCOMH[J])
    YRY[1][J]=math.log(YRAYC[J]*3.0D-24)
    YRY[2][J]=math.log(YRAYN[J]*1.0D-24)
    YRY[3][J]=math.log(YRAYH[J]*9.0D-24)
    YCP[1][J]=math.log(YCOMC[J]*3.0D-24)
    YCP[2][J]=math.log(YCOMN[J]*1.0D-24)
    YCP[3][J]=math.log(YCOMH[J]*9.0D-24)
    YPP[1][J]=math.log(YPAPC[J]*3.0D-24)
    YPP[2][J]=math.log(YPAPN[J]*1.0D-24)
    YPP[3][J]=math.log(YPAPH[J]*9.0D-24)
    29 CONTINUE
    # LOAD RAYLEIGH AND COMPTON FORM FACTORS
    DO 39 J=1,45
    FFAR[1][J]=FFRC[J]
    FFAR[2][J]=FFRN[J]
    FFAR[3][J]=FFRH[J]
    FFAC[1][J]=FFCC[J]
    FFAC[2][J]=FFCN[J]
    FFAC[3][J]=FFCH[J]
    39 CONTINUE
    return 
    # end
def CGAS45(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS46(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS47(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS48(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS49(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS50(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS51(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS52(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS53(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS54(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS55(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS56(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS57(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS58(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS59(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS60(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS61(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS62(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS63(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS64(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS65(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS66(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS67(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS68(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS69(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS70(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS71(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS72(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS73(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS74(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS75(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS76(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS77(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS78(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS79(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
def CGAS80(PRSH,PRSHBT,ESH,AUG,RAD,XPE,YPE,XCP,YRY,YCP,YPP,FFAR,FFAC,IZ,AMZ,INIOCC):
    # IMPLICIT #real*8 (A-H,O-Z)
    # IMPLICIT #integer*8 (I-N)
    DIMENSION PRSH(3,17,17),PRSHBT(3,17),ESH(3,17),AUG(3,17,17,17),RAD[3,17,17],XPE(3,17,60),YPE(3,17,60),XCP(3,54),YRY(3,54),YCP(3,54),YPP(3,54),FFAR(3,45),FFAC(3,45),IZ[3],AMZ[3],INIOCC(3,17)
    # 
    return
# end
'''

GASN

Arguments

Argument Description
Q
QIN
NIN
E
EIN
NAME
VIRIAL
EOBY
PEQEL
PEQIN
PENFRA
KEL
KIN
QION
PEQION
EION
NION
QATT
NATT
QNULL
NNULL
SCLN
NC0
EC0
WKLM
EFL
NG1
EG1
NG2
EG2
IZBR
LEGAS
ISHELL
IONMODEL
ESPLIT
SCRPT
SCRPTN

Pseudo-Code

import math
import sys
import conf
import numpy
def GAS1(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      #COMMON/MIX2/
      global EG#(20000)
      global EROOT#(20000)
      global QT1#(20000)
      global QT2#(20000)
      global QT3#(20000)
      global QT4#(20000)
      #COMMON/DENS/
      global DEN#(20000)
      #DIMENSION 
      PEQEL=[[0 for x in range(6)] for y in range(20000)]
      PEQIN=[[0 for x in range(250)] for y in range(20000)]
      KIN=[0 for x in range(250)]
      KEL=[0 for x in range(6)]
      #DIMENSION 
      QION=[[0 for x in range(30)] for y in range(20000)]
      PEQION=[[0 for x in range(30)] for y in range(20000)]
      EION=[0 for x in range(30)]
      EOBY=[0 for x in range(30)] 
      #DIMENSION 
      NC0=[0 for x in range(30)]
      EC0=[0 for x in range(30)]
      WKLM=[0 for x in range(30)]
      EFL=[0 for x in range(30)]
      NG1=[0 for x in range(30)]
      EG1=[0 for x in range(30)]
      NG2=[0 for x in range(30)]
      EG2=[0 for x in range(30)]
      IZBR=[0 for x in range(250)]
      LEGAS=[0 for x in range(30)]
      ISHELL=[0 for x in range(30)] 
      #DIMENSION 
      QATT=[[0 for x in range(8)] for y in range(20000)]
      QNULL=[[0 for x in range(10)] for y in range(20000)]
      SCLN=[0 for x in range(10)]
      ESPLIT=[[0 for x in range(5)] for y in range(20)]
      #DIMENSION 
      Q=[[0 for x in range(6)] for y in range(20000)]
      QIN=[[0 for x in range(250)] for y in range(20000)]
      E=[0 for x in range(6)]
      EIN=[0 for x in range(250)]
      PENFRA=[[0 for x in range(3)] for y in range(250)]
      #DIMENSION 
      XEN=[0 for x in range(163)]
      YELM=[0 for x in range(163)]
      YELT=[0 for x in range(163)]
      YEPS=[0 for x in range(163)]
      XVBV4=[0 for x in range(11)]
      YVBV4=[0 for x in range(11)]
      XVBV1=[0 for x in range(11)]
      YVBV1=[0 for x in range(11)]
      XVBV3=[0 for x in range(11)]
      YVBV3=[0 for x in range(11)]
      XVIB5=[0 for x in range(12)]
      YVIB5=[0 for x in range(12)]
      XVIB6=[0 for x in range(12)]
      YVIB6=[0 for x in range(12)]
      XTR1=[0 for x in range(12)]
      YTR1=[0 for x in range(12)]
      XTR2=[0 for x in range(11)]
      YTR2=[0 for x in range(11)]
      XTR3=[0 for x in range(11)]
      YTR3=[0 for x in range(11)]
      XCF3=[0 for x in range(37)]
      YCF3=[0 for x in range(37)]
      XCF2=[0 for x in range(31)]
      YCF2=[0 for x in range(31)]
      XCF1=[0 for x in range(28)]
      YCF1=[0 for x in range(28)]
      XCF32=[0 for x in range(25)]
      YCF32=[0 for x in range(25)]
      XCF0=[0 for x in range(27)]
      YCF0=[0 for x in range(27)]
      XC0F=[0 for x in range(27)]
      YC0F=[0 for x in range(27)]
      XCF22=[0 for x in range(25)]
      YCF22=[0 for x in range(25)]
      XCF=[0 for x in range(22)]
      YCF=[0 for x in range(22)]
      XCFF=[0 for x in range(24)]
      YCFF=[0 for x in range(24)]
      XCF2F=[0 for x in range(25)]
      YCF2F=[0 for x in range(25)]
      XCF3F=[0 for x in range(26)]
      YCF3F=[0 for x in range(26)]
      XATT=[0 for x in range(11)]
      YATT=[0 for x in range(11)]
      XKSHC=[0 for x in range(81)]
      YKSHC=[0 for x in range(81)]
      XKSHF=[0 for x in range(79)]
      YKSHF=[0 for x in range(79)]
      IOFFN=[0 for x in range(46)]
      IOFFION=[0 for x in range(12)]
      #DIMENSION 
      Z6T=[0 for x in range(25)]
      Z9T=[0 for x in range(25)]
      EBRM=[0 for x in range(25)]
      # CHARACTER*50 
      SCRPT=""#(300)
      SCRPTN=""#[10] 
      # CHARACTER*25 
      NAME=""                                                 
      XEN=[0.0,.001,.002,.003,.004,.005,.006,.007,.008,.009,        0.01,.012,.014,.016,.018,0.02,.025,0.03,.035,0.04,                .045,0.05,.055,0.06,.065,0.07,.075,0.08,.085,0.09,                0.10,0.12,0.14,0.17,0.20,0.24,0.30,0.40,0.50,0.60,                0.80,1.00,1.20,1.40,1.70,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,50.0, 60.0,80.0,100.,125.,150.,200.,250.,300.,400.,500.,600.,700.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.,1.25*10**4,1.50*10**4,1.75*10**4,2.0*10**4,2.5*10**4,3.0*10**4,3.5*10**4,4.0*10**4,4.5*10**4,5.0*10**4,6.0*10**4,7.0*10**4,8.0*10**4,9.0*10**4,1.0*10**5,1.25*10**5,1.5*10**5,1.75*10**5,2.0*10**5,2.5*10**5,3.0*10**5,3.5*10**5,4.0*10**5,4.5*10**5,5.0*10**5,6.0*10**5,7.0*10**5,8.0*10**5,9.0*10**5,1.0*10**6,1.25*10**6,1.5*10**6,1.75*10**6,2.0*10**6,2.5*10**6,3.0*10**6,3.5*10**6,4.0*10**6,4.5*10**6,5.0*10**6,6.0*10**6,7.0*10**6,8.0*10**6,9.0*10**6,1.0*10**7,1.25*10**7,1.5*10**7,1.75*10**7,2.0*10**7,2.5*10**7,3.0*10**7,3.5*10**7,4.0*10**7,4.5*10**7,5.0*10**7,6.0*10**7,7.0*10**7,8.0*10**7,9.0*10**7,1.0*10**8,1.25*10**8,1.5*10**8,1.75*10**8,2.0*10**8,2.5*10**8,3.0*10**8,3.5*10**8,4.0*10**8,4.5*10**8,5.0*10**8,6.0*10**8,7.0*10**8,8.0*10**8,9.0*10**8,1.0*10**9]
      # ELASTIC MOMENTUM TRANSFER X-SECTION
      YELM=[12.5,8.70,7.00,5.95,5.20,4.70,4.30,3.95,3.65,3.40,3.20,2.85,2.58,2.37,2.19,2.04,1.77,1.57,1.41,1.30,    1.20,1.12,1.05,0.99,0.93,0.88,0.84,0.80,0.76,0.72,0.65,0.48,0.35,0.29,0.29,0.34,0.47,0.87,1.35,1.85,2.95,4.00,4.75,5.15,5.45,5.65,5.80,6.00,6.10,6.30,6.50,6.80,7.20,8.30,9.50,10.1,9.60,8.80,7.85,6.72,5.90,5.06,4.16,3.57,2.99,1.92,1.53,1.20,0.88,0.66,.525,0.43,0.37,0.30,.228,.169,.131,.104,.0711,.0519, .0397,.0314,.0212,.0153,.0117,.00918,.00743,.00615,.00412,.00297,2.25*10**-3,1.77*10**-3,1.18*10**-3,8.51*10**-4,6.45*10**-4,5.08*10**-4,4.12*10**-4,3.41*10**-4,2.47*10**-4,1.88*10**-4,1.49*10**-4,1.21*10**-4,1.01*10**-4,6.88*10**-5,5.05*10**-5,3.90*10**-5,3.13*10**-5,2.17*10**-5,1.62*10**-5,1.27*10**-5,1.03*10**-5,8.56*10**-6,7.27*10**-6,5.49*10**-6,4.34*10**-6,3.54*10**-6,2.96*10**-6,2.52*10**-6,1.81*10**-6,1.36*10**-6,1.07*10**-6,8.68*10**-7,6.08*10**-7,4.53*10**-7,3.51*10**-7,2.82*10**-7,2.31*10**-7,1.93*10**-7,1.42*10**-7,1.08*10**-7,8.59*10**-8,6.98*10**-8,5.79*10**-8,3.89*10**-8,2.80*10**-8,2.12*10**-8,1.66*10**-8,1.10*10**-8,7.86*10**-9,5.90*10**-9,4.59*10**-9,3.68*10**-9,3.01*10**-9,2.13*10**-9,1.58*10**-9,1.22*10**-9,9.75*10**-10,7.92*10**-10,5.10*10**-10,3.56*10**-10,2.62*10**-10,2.01*10**-10,1.29*10**-10,8.95*10**-11,6.58*10**-11,5.04*10**-11,3.98*10**-11,3.23*10**-11,2.24*10**-11,1.65*10**-11,1.26*10**-11,9.96*10**-12,8.07*10**-12]
      # ELASTIC X-SECTION ASSUME*10** ISOTROPIC BELOW 0.6 EV
      YELT=[12.5,8.70,7.00,5.95,5.20,4.70,4.30,3.95,3.65,3.40,3.20,2.85,2.58,2.37,2.19,2.04,1.77,1.57,1.41,1.30,    1.20,1.12,1.05,0.99,0.93,0.88,0.84,0.80,0.76,0.72,0.65,0.48,0.35,0.29,0.29,0.34,0.47,0.87,1.35,1.85,3.77,4.89,5.66,6.43,7.43,8.34,10.6,12.5,11.6,11.0,11.0,11.7,12.9,14.5,16.8,17.6,18.1,17.2,15.9,14.9,14.3,13.0,11.7,10.5,9.65,8.10,6.83,6.02,5.02,4.36,3.83,3.40,3.08,2.65,2.17,1.89,1.55,1.40,1.19,1.11,.921,.822,.696,.568,.492,.435,.390,.353,.286,.241,.209,.185,.150,.127,.111,.0984,.0888,.0810,.0694,.0611,.0522,.050,.0461,.0391,.0344,.0311,.0287,.0253,.0230,.0214,.0202,.0193,.0186,.0176,.0169,.0164,.0160,.0157,.0152,.0148,.0146,.0145,.0143,.0142,.0141,.0141,.0140,.0140,.0140,.0139,.0139,.0139,.0139,.0139,.01389,.01389,.01389,26*.01388]
      # EPSILON FOR ELASTIC ANGULAR *10**ISTRIBUTION
      # EPSILON =1-YEPS
      YEPS=[40*1.0,.68056,.73101,.76161,.70664,.61270,.53797,.37888,.30604,.35505,.40830,.42979,.41826,.39140,.40794,.39986,.40963,.36006,.33951,.32037,.27671,.23985,.21859,.18948,.17666,.15292,.10180,.09358,.07880,.06538,.05301,.04608,.04117,.03833,.03532,.03188,.02561,.02374,.019986,.015005,.010925,.009845,.008442,.006348,.005446,.004667,.004028,.003554,.003186,.002530,.002096,.001783,.001549,.001228,.001016,.000859,.000749,.000661,.000590,.000486,.000411,3.53*10**-4,3.12*10**-4,2.78*10**-4,2.17*10**-4,1.76*10**-4,1.47*10**-4,1.26*10**-4,9.61*10**-5,7.68*10**-5,6.32*10**-5,5.32*10**-5,4.56*10**-5,3.97*10**-5,3.10*10**-5,2.30*10**-5,2.07*10**-5,1.74*10**-5,1.49*10**-5,1.07*10**-5,8.04*10**-6,6.28*10**-6,5.05*10**-6,3.47*10**-6,2.54*10**-6,1.94*10**-6,1.53*10**-6,1.24*10**-6,1.02*10**-6,7.33*10**-7,5.51*10**-7,4.30*10**-7,3.44*10**-7,2.82*10**-7,1.84*10**-7,1.30*10**-7,9.62*10**-8,7.42*10**-8,4.80*10**-8,3.35*10**-8,2.47*10**-8,1.89*10**-8,1.50*10**-8,1.21*10**-8,8.388*10**-9,6.133*10**-9,4.669*10**-9,3.666*10**-9,2.950*10**-9,1.858*10**-9,1.271*10**-9,9.21*10**-10,6.97*10**-10,4.37*10**-10,2.98*10**-10,2.16*10**-10,1.63*10**-10,1.28*10**-10,1.02*10**-10,7.00*10**-11,5.10*10**-11,3.80*10**-11,3.00*10**-11,2.40*10**-11]
      #  VIBRATION V4 (RESONANCE ONLY) SCALE*10** BY 1/E**3 ABOVE 50EV 
      XVBV4=[0.0783,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,20.0,50.0]           
      YVBV4=[0.0,0.0,0.05,0.35,1.06,1.40,1.26,0.97,0.07,.022,      1.*10**-3]        
      #  VIBRATION V1 (RESONANCE ONLY) SCALE*10** BY 1/E**3 ABOVE 50EV
      XVBV1=[0.1126,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,20.0,   50.0]                 
      YVBV1=[0.0,0.0,.016,.118,0.36,0.47,0.42,0.33,.023,.007,     3.*10**-4]    
      #  VIBRATION V3 (RESONANCE ONLY) SCALE*10** BY 1/E**3 ABOVE 50EV
      XVBV3=[0.1588,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,20.0,   50.0]         
      YVBV3=[0.0,0.0,0.15,1.05,3.19,4.20,3.78,2.90,0.20,.067,     3.*10**-3]         
      #  VIBRATION HARMONIC 2(V3) SCALE*10** BY 1/E ABOVE 50EV
      XVIB5=[0.3176,1.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,   20.0,50.0]             
      YVIB5=[0.0,.001,0.01,.031,0.23,0.67,0.87,0.79,0.60,.042,      .014,.0006] 
      # VIBRATION HARMONIC (3(V3) + ALL OTHER HARMONICS)
      #  SCALE*10** BY 1/E ABOVE 50 EV
      XVIB6=[0.4764,1.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,   20.0,50.0]          
      YVIB6=[0.0,.0009,.045,.117,.774,2.32,3.06,2.75,2.12,.138,     .037,.0018] 
      #
      #  *10**ISSOCATIVE IONISATION :
      #  WEIGHTE*10** AVERAGE OF SIEGLAFF AN*10** NISHIMURA FOR SINGLE IONISATION AN*10**
      #  *10**OUBLE IONISATION.
      #  FOR *10**OUBLE IONISATION WITH BREAKUP :  BRUCE ET AL CPL 190(1992)285 
      #  NB.  (USE*10** NISHIMURA ONLY BELOW 30EV)
      #
      XCF3=[15.7,16.0,17.0,18.0,19.0,20.0,22.0,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,                120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,         1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF3=[0.0,.032,.075,.128,.191,.276,.448,.610,.866,1.08,      1.26,1.72,2.05,2.35,2.62,2.94,3.13,3.24,3.32,3.35,              3.38,3.34,3.27,3.17,3.00,2.81,2.54,2.28,2.09,1.77,1.56,1.32,1.15,1.05,.937,.804,.692]

      XCF2=[21.47,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,                120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,         1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF2=[0.00,.003,.010,.032,.060,.131,.148,.162,.192,.221,.234,.243,.256,.263,.266,.260,.257,.240,.233,.212,.186,.169,.152,.131,.113,.0961,.0834,.0763,.0681,.0585,.0503]
      # CF+ 
      XCF1=[29.14,                  30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,                120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,         1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF1=[0.00,                  .0024,.0145,.0583,.107,.156,.185,.226,.239,.238,.266,.274,.259,.261,.234,.227,.186,.146,.122,.113,.0909,.0820,.0695,.0603,.0552,.0493,.0423,.0364]
      # *10**ATA CF3 2+
      #yet to be 
      XCF32=[41.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF32=[0.00,.0053,.0083,.0104,.0135,.0154,.0164,.0187,.0208,.0198,.0208,.0198,.0187,.0167,.0135,.0114,.0101,.0079,.0065,.0055,.0048,.0044,.0039,.0033,.0029]
      # C+ 
      XCF0=[34.77,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,         1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF0=[0.0,.0005,.0093,.0426,.0884,.134,.172,.193,.207,.228,.245,.246,.249,.236,.222,.191,.166,.144,.134,.104,.0895,.0759,.0658,.0602,.0538,.0462,.0397] 
      # F+ 
      XC0F=[34.5,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,         1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YC0F=[0.0,.0019,.0085,.0271,.0561,.1051,.154,.1937,.212,.289,.363,.408,.439,.461,.440,.378,.316,.264,.227,.174,.170,.144,.125,.114,.102,.0874,.0753]   
      # CF2 2+
      #yet to be
      XCF22=[42.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF22=[0.0,.0002,.0033,.0095,.0194,.0287,.0348,.0409,.0483,.0521,.0522,.0517,.0467,.0458,.0367,.0303,.0280,.0218,.0164,.0139,.0120,.0110,.0098,.0084,.0073] 
      # ION PAIRS:
      #   (C+ , F+)
      XCF=[63.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF=[0.0,.002,.009,.020,.025,.038,.048,.056,.062,.059,.068,.049,.043,.036,.025,.019,.016,.014,.012,.011,.0096,.0082]
      #   (CF+ , F+)
      XCFF=[43.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCFF=[0.0,.001,.009,.028,.049,.077,.084,.111,.125,.136,.139,.126,.133,.109,.095,.078,.059,.040,.034,.030,.027,.024,.021,.018]
      #   (CF2 + , F+)
      XCF2F=[40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF2F=[0.0,.001,.004,.013,.024,.034,.043,.046,.053,.054,.057,.056,.049,.050,.042,.036,.030,.023,.015,.013,.011,.0104,.0093,.0080,.0069]
      #   (CF3 + , F+)
      XCF3F=[36.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,200.,250.,300.,400.,500.,600.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.]
      YCF3F=[0.0,.001,.003,.006,.014,.023,.030,.037,.038,.042,.041,.044,.045,.040,.038,.033,.028,.023,.018,.012,.0105,.0091,.0083,.0074,.0064,.0055]
      # CARBON K-SHELL IONISATION X-SECTION
      XKSHC=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,  447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,  1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,  3981.,5012.,7079.,1.0*10**4,1.50*10**4,2.05*10**4,2.51*10**4,3.07*10**4,4.10*10**4,5.01*10**4,  6.13*10**4,7.08*10**4,8.18*10**4,1.0*10**5,1.54*10**5,2.05*10**5,2.99*10**5,4.10*10**5,5.01*10**5,  6.13*10**5,  7.08*10**5,8.18*10**5,1.0*10**6,1.25*10**6,1.5*10**6,2.05*10**6,3.07*10**6,4.10*10**6,5.01*10**6,  6.13*10**6,  7.08*10**6,8.18*10**6,1.0*10**7,1.5*10**7,2.05*10**7,3.07*10**7,4.10*10**7,5.01*10**7,6.13*10**7,  7.08*10**7,  8.18*10**7,1.0*10**8,1.5*10**8,2.05*10**8,3.07*10**8,4.10*10**8,5.01*10**8,6.13*10**8,7.08*10**8,  8.18*10**8,  1.0*10**9]
      YKSHC=[0.00,1.66*10**-4,3.48*10**-4,5.25*10**-4,6.96*10**-4,8.63*10**-4,1.02*10**-3,1.33*10**-3,1.75*10**-3,2.01*10**-3,2.24*10**-3,2.46*10**-3,2.66*10**-3,2.84*10**-3,3.21*10**-3,3.38*10**-3,3.47*10**-3,3.55*10**-3,3.65*10**-3,3.72*10**-3,3.75*10**-3,3.74*10**-3,3.68*10**-3,3.57*10**-3,3.45*10**-3,3.31*10**-3,3.19*10**-3,3.07*10**-3,2.91*10**-3,2.66*10**-3,2.25*10**-3,1.95*10**-3,1.55*10**-3,1.21*10**-3,8.97*10**-4,7.07*10**-4,6.07*10**-4,5.21*10**-4,4.21*10**-4,3.63*10**-4,3.14*10**-4,2.84*10**-4,2.57*10**-4,2.25*10**-4,1.74*10**-4,1.50*10**-4,1.28*10**-4,1.15*10**-4,1.09*10**-4,1.05*10**-4,1.03*10**-4,1.02*10**-4,1.01*10**-4,1.005*10**-4,1.01*10**-4,1.03*10**-4,1.07*10**-4,1.11*10**-4,1.14*10**-4,1.17*10**-4,1.20*10**-4,1.22*10**-4,1.25*10**-4,1.32*10**-4,1.38*10**-4,1.45*10**-4,1.50*10**-4,1.54*10**-4,1.58*10**-4,1.60*10**-4,1.63*10**-4,1.67*10**-4,1.74*10**-4,1.80*10**-4,1.87*10**-4,1.92*10**-4,1.96*10**-4,2.00*10**-4,2.02*10**-4,2.05*10**-4,2.09*10**-4]
      # FLUORINE K-SHELL IONISATION X-SECTION
      XKSHF=[685.4,705.,726.,747.,770.,792.,816.,840.,865.,890.,  916.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,  2238.,2512.,2985.,3758.,4467.,5158.,5957.,7079.,1.0*10**4,1.26*10**4,  1.50*10**4,2.05*10**4,2.51*10**4,3.07*10**4,4.10*10**4,5.01*10**4,6.13*10**4,7.08*10**4,8.18*10**4,  1.0*10**5,  1.50*10**5,2.05*10**5,2.99*10**5,4.10*10**5,5.01*10**5,6.13*10**5,7.08*10**5,8.18*10**5,1.00*10**6,  1.26*10**6,  1.50*10**6,2.05*10**6,3.07*10**6,4.10*10**6,5.01*10**6,6.13*10**6,7.08*10**6,8.18*10**6,1.00*10**7,  1.26*10**7,  1.50*10**7,2.05*10**7,3.07*10**7,4.10*10**7,5.01*10**7,6.13*10**7,7.08*10**7,8.18*10**7,1.00*10**8,  1.26*10**8,  1.50*10**8,2.05*10**8,3.07*10**8,4.10*10**8,5.01*10**8,6.13*10**8,7.08*10**8,8.18*10**8,1.00*10**9]
      YKSHF=[0.00,3.39*10**-5,6.77*10**-5,1.00*10**-4,1.32*10**-4,1.63*10**-4,1.92*10**-4,2.21*10**-4,2.48*10**-4,2.75*10**-4,3.00*10**-4,3.25*10**-4,3.71*10**-4,4.33*10**-4,4.87*10**-4,5.34*10**-4,5.96*10**-4,6.32*10**-4,6.57*10**-4,6.69*10**-4,6.77*10**-4,6.79*10**-4,6.68*10**-4,6.33*10**-4,5.97*10**-4,5.62*10**-4,5.25*10**-4,4.80*10**-4,3.93*10**-4,3.41*10**-4,3.04*10**-4,2.45*10**-4,2.13*10**-4,1.85*10**-4,1.51*10**-4,1.31*10**-4,1.14*10**-4,1.04*10**-4,9.46*10**-5,8.32*10**-5,6.58*10**-5,5.60*10**-5,4.80*10**-5,4.35*10**-5,4.15*10**-5,4.00*10**-5,3.93*10**-5,3.89*10**-5,3.85*10**-5,3.86*10**-5,3.89*10**-5,3.98*10**-5,4.17*10**-5,4.33*10**-5,4.45*10**-5,4.58*10**-5,4.68*10**-5,4.78*10**-5,4.92*10**-5,5.09*10**-5,5.21*10**-5,5.45*10**-5,5.75*10**-5,5.96*10**-5,6.12*10**-5,6.27*10**-5,6.38*10**-5,6.49*10**-5,6.64*10**-5,6.82*10**-5,6.95*10**-5,7.19*10**-5,7.50*10**-5,7.72*10**-5,7.88*10**-5,8.03*10**-5,8.14*10**-5,8.25*10**-5,8.40*10**-5]
      # ATTACHMENT              
      XATT=[4.00,4.10,5.00,6.00,7.00,8.00,9.00,10.0,11.0,           12.0,100.]                                                        
      YATT=[.0,.00001,.00087,.0062,.0125,.0134,.0047,.0009,.0004,   .00001,.0000001]
      #
      #  NEUTRAL DISSOCIATION 
      #      DIPOLE NEUTRAL DISSOCIATION GIVEN ANALYTICALLY
      #      NON-DIPOLE  NEUTRAL DISSOCIATION :  
      XTR1=[11.5,12.5,14.0,15.0,16.0,17.0,19.0,21.0,24.0,27.0,31.0,34.0]
      YTR1=[0.00,.005,.017,.026,.029,.031,.035,.035,.031,.026,.019,.015]
      XTR2=[12.5,14.0,15.0,16.0,17.0,19.0,21.0,24.0,27.0,31.0,34.0]
      YTR2=[0.00,.030,.056,.064,.068,.075,.077,.068,.057,.042,.033]
      XTR3=[14.0,15.0,16.0,17.0,19.0,21.0,24.0,27.0,31.0,34.0,39.0]
      YTR3=[0.00,.087,.180,.210,.237,.250,.250,.237,.187,.145,.107]
      # BREMSTRAHLUNG X-SECTION WITH CUT OFF      
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      Z9T=[573.,358.,179.,101.6,57.3,26.5,15.4,9.63,6.52,5.92,6.01,6.18,6.35,6.43,6.52,6.65,6.75,6.87,6.95,7.02,7.07,7.10,7.12,7.13,7.14]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      # ----------------------------------------------------------------------
      # 2015: UPDATE INCLUDES NEW OSCILATOR STRENGTH TO EXCITATIONS WHICH
      #       ARE ALL DISSOCIATIVE. INTRODUCED ALL DISSOCIATIVE IONISATION 
      #       CHANNELS FROM THE 3 GROUPS:  LINDSAY , NISHIMURA AND BONHAM
      #       USED WEIGHTED AVERAGE TO GET CONSISTENT COUNTING AND GROSS 
      #       IONISATIONS.
      # 
      # 2012: UPDATE INCLUDES CARBON AND FLUORINE K-SHELL IONISATION X-SECS.     
      #   NEW ANALYSIS UPDATED TO MARCH  2008
      #   ALLOWS SUPERELASTIC SCATTERING TO V2,V4,V1 AND V3 VIBRATIONAL LEVELS
      #   BORN ANGULAR DISTRIBUTION FOR  V4 AND V3 VIBRATIONAL LEVELS
      #   INCLUDED NEW IONISATION X-SECTIONS BY NISHIMURA AND READJUSTED
      #   DISSOCIATION X-SECTION TO FIT TOWNS# end MEASUREMENTS.
      #   ELASTIC X-SECTION BELOW 0.6 EV ASSUMED ISOTROPIC SINCE NO ACCURATE 
      #   EXIST ON ELASTIC SCATTERING AT THE RAMSAUER MINIMUM.
      #   THE ELASTIC X-SECTION BETWEEN 0.0 AND 0.6 EV IS NOT SENSITIVE
      #   ENOUGH TO DRIFT AND DIFFUSION TO ACCURATELY PREDICT THE 
      #   POSITION OF THE RAMSAUER MINIMUM. THE ABSOLUTE VALUE OF THE ELASTIC
      #   X-SECTION BELOW THE RAMSAUER MINIMUM ( LESS THAN 0.18 EV) SEEMS TO 
      #   BE LOWER THAN PREDICTIONS BY MANN AND LINDER OR FIELD ET AL.  
      #    THE TEMPERATURE DEP# endENCE OF THE LOW FIELD MOBILITY CF GEE AND 
      #   FREEMAN WHICH IS REPRODUCED BY THIS X-SECTION SET SEEMS ALSO TO 
      #   EXCLUDE HIGHER ELASTIC X-SECTIONS IN THE REGION BETWEEN 0.02 AND 
      #   0.1 EV.
      #   THE BASE NOW FITS NAKAMURAS DRIFT VELOCITY IN CF4 AND CF4 ARGON
      #   MIXTURES TO WITHIN EXPERIMENTAL ERRORS . NAKAMURAS IS MUCH MORE 
      #   ACCURATE THAN HUNTERS SO WE REJECT HUNTERS IN THE NEW 
      #   ANALYSIS.
      #   THE TOWNS# end IONISATION AND ATTACHMENT RATES AGREE WELL WITH THE 
      #   PUBLISHED .
      # ---------------------------------------------------------------
      if(NANISO == 0):
            NAME=' CF4 ISOTROPIC     2015  '
      else:
            NAME=' CF4 ANISOTROPIC   2015  '
      # endif 
      #--------------------------------------------------------------------
      #      
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859*10**-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      # BORN BETHE VALUES FOR IONISATION
      CONST=1.873884*10**-20
      AM2=9.50
      C=100.9
      #
      NCF3=37
      NCF2=31
      NCF1=28
      NCF32=25
      NCF0=27
      NC0F=27
      NCF22=25
      NCF=22
      NCFF=24
      NCF2F=25
      NCF3F=26
      #
      NION=12
      NATT=1
      NIN=46
      NNULL=0
      IONMODEL=0  
      #
      # ARRAY SIZE
      NASIZE=20000
      #
      NBREM=25
      for J in range(1,NIN):
            IZBR[J]=0
      IZBR[47]=6
      IZBR[48]=9
      #
      for J in range(1,6):
            KEL[J]=NANISO
      # ASSUME CAPITELLI LONGO TYPE OF ANGULAR DISTRIBUTION FOR 
      #  ALL VIBRATIONAL LEVELS AND THE SUM OF HIGHER HARMONICS 
      for J in range(1,10):
            KIN[J]=1
      # ANGULAR DISTRIBUTION FOR DISS.EXCITATION IS GIVEN BY OKHRIMOVSKKY
      for J in range(11,NIN):
            KIN[J]=NANISO  
      # RATIO OF MOMENTUM TRANSFER TO TOTAL X-SEC FOR RESONANCE
      # PART OF VIBRATIONAL X-SECTIONS
      RAT=0.75
      #
      NDATA=163                                                       
      NVBV4=11                                
      NVBV1=11                                                          
      NVBV3=11                                                          
      NVIB5=12                                                          
      NVIB6=12
      NATT1=11                                                         
      NTR1=12
      NTR2=11
      NTR3=11
      NKSHC=81
      NKSHF=79
      #                                                          
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(88.0043*AMU)                                      
      E[3]=15.90
      E[4]=0.0
      E[5]=0.0                    
      E[6]=0.0
      #
      EION[1]=15.7
      EION[2]=21.47
      EION[3]=29.14
      EION[4]=34.5
      EION[5]=34.77
      EION[6]=36.0
      EION[7]=40.0
      EION[8]=41.0
      EION[9]=43.0
      EION[10]=63.0 
      EION[11]=285.0
      EION[12]=685.4
      #  OPAL BEATY IONISATION ENERGY SPLITTING 
      for J in range(1,10):
            EOBY[J]=0.58*EION[J] 
      # OPAL BEATY SPLITTING FACTOR FOR SHELLS
      EOBY[11]=210.0    
      EOBY[12]=510.0    
      for J in range(1,10):
            LEGAS[J]=0  
            ISHELL[J]=0   
      LEGAS[11]=1   
      LEGAS[12]=2  
      ISHELL[11]=1 
      ISHELL[12]=1 
      # SINGLE IONISATION DATA
      for J in range(1,5):
            NC0[J]=0
            EC0[J]=0.0
            WKLM[J]=0.0
            EFL[J]=0.0
            NG1[J]=0
            EG1[J]=0.0
            NG2[J]=0
            EG2[J]=0.0
      # DOUBLE IONISATION DATA
      for J in range(6,10):
            NC0[J]=1.0
            EC0[J]=1.0
            WKLM[J]=0.0
            EFL[J]=0.0
            NG1[J]=0
            EG1[J]=0.0
            NG2[J]=0
            EG2[J]=0.0
      # K SHELL INCLUDING FLUORESCENCE
      NC0[11]=2
      EC0[11]=253.0
      WKLM[11]=0.0026
      EFL[11]=273.0
      NG1[11]=1
      EG1[11]=253.0
      NG2[11]=1
      EG2[11]=5.0
      NC0[12]=3
      EC0[12]=625.2
      WKLM[12]=0.010
      EFL[12]=668.
      NG1[12]=2
      EG1[12]=625.2
      NG2[12]=1
      EG2[12]=5.0
      #
      for J in range(1,NION):
            for I in range(1,NASIZE):
                  if(EG[I]> EION[J]):
                        IOFFION[J]=I-1
                        break
                  # endif
      #
      EIN[1]=-0.0539
      EIN[2]=0.0539
      EIN[3]=-0.0783                                                    
      EIN[4]=0.0783 
      EIN[5]=-0.1126                                                    
      EIN[6]=0.1126
      EIN[7]=-0.1588
      EIN[8]=0.1588                                                     
      EIN[9]=0.3176                                                     
      EIN[10]=0.4764
      EIN[11]=11.5
      EIN[12]=11.63
      EIN[13]=11.88
      EIN[14]=12.13
      EIN[15]=12.38
      EIN[16]=12.50
      EIN[17]=12.63
      EIN[18]=12.88
      EIN[19]=13.13
      EIN[20]=13.38
      EIN[21]=13.63
      EIN[22]=13.88
      EIN[23]=14.00
      EIN[24]=14.13
      EIN[25]=14.38
      EIN[26]=14.63
      EIN[27]=14.88
      EIN[28]=15.13
      EIN[29]=15.38
      EIN[30]=15.63
      EIN[31]=15.88
      EIN[32]=16.13
      EIN[33]=16.38
      EIN[34]=16.63
      EIN[35]=16.88
      EIN[36]=17.13
      EIN[37]=17.38
      EIN[38]=17.63
      EIN[39]=17.88
      EIN[40]=18.13
      EIN[41]=18.38
      EIN[42]=18.63
      EIN[43]=18.88
      EIN[44]=19.13
      EIN[45]=19.38
      EIN[46]=19.63
      EIN[47]=0.0
      EIN[48]=0.0
      # OFFSET ENERGY FOR DISSOCIATION ANGULAR DISTRIBUTION
      for NL in range(11,46):
            for I in range(1,NASIZE):
                  if(EG[I]> abs(EIN[NL])) :
                        IOFFN[NL]=I-1
                        break
                  # endif
      #***********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # ONLY DISSOCIATION X-SECTION (LEVEL 11) HAS ENOUGH ENERGY TO GIVE 
      #  POSSIBLE PENNING TRANSFER
      for K in range(1,46):
            for L in range(1,3):
                  PENFRA[L,K]=0.0  
      # PENNING TRANSFER FRACTION FOR LEVEL 11
      PENFRA[1][K]=0.0
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2][K]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      PENFRA[3][K]=1.0
      if(IPEN == 0):
            pass 
      elif(PENFRA[1,11] == 0.0):
            pass
      else:
            print(' GAS = ',NAME,' ENERGY LEVEL = ','%.4f' % EIN[11],' EV.\n',' PENNING PROBABILITY = ','%.3f' % PENFRA[1,11],' ABS.LENGTH = ','%.2f' % PENFRA[2,11],' DECAY TIME = ','%.1f' %  PENFRA[3,11],'\n')
      #999 

      #*********************************************************************** 
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC            CF4              '
      if(NANISO == 0):
            SCRPT[2]=' ELASTIC  ISOTROPIC             CF4              '
      # endif
      SCRPT[3]=' ION  CF3 +                      ELOSS=   15.70   '
      SCRPT[4]=' ION  CF2 +                      ELOSS=   21.47   '
      SCRPT[5]=' ION  CF +                       ELOSS=   29.14   '
      SCRPT[6]=' ION  F +                        ELOSS=   34.5    '
      SCRPT[7]=' ION  C +                        ELOSS=   34.77   '
      SCRPT[8]=' DOUBLE ION    CF3 + , F +       ELOSS=   36.0    '
      SCRPT[9]=' DOUBLE ION    CF2 + , F +       ELOSS=   40.0    '
      SCRPT[10]=' IONS  CF3 ++ OR CF2 ++          ELOSS=   41.0    '
      SCRPT[11]=' DOUBLE ION    CF +  , F +       ELOSS=   43.0    '
      SCRPT[12]=' DOUBLE ION    C  +  , F +       ELOSS=   63.0    '
      SCRPT[13]=' IONISATION   CARBON K-SHELL     ELOSS=  285.0    '
      SCRPT[14]=' IONISATION FLUORINE K-SHELL     ELOSS=  685.4    '
      SCRPT[15]=' ATTACHMENT                                       '
      SCRPT[16]='                                                  '
      SCRPT[17]='                                                  '
      SCRPT[18]=' VIB  V2           ANISOTROPIC   ELOSS=   -0.0539 '
      SCRPT[19]=' VIB  V2           ANISOTROPIC   ELOSS=    0.0539 '
      SCRPT[20]=' VIB  V4           ANISOTROPIC   ELOSS=   -0.0783 '
      SCRPT[21]=' VIB  V4           ANISOTROPIC   ELOSS=    0.0783 '
      SCRPT[22]=' VIB  V1           ANISOTROPIC   ELOSS=   -0.1126 '
      SCRPT[23]=' VIB  V1           ANISOTROPIC   ELOSS=    0.1126 '
      SCRPT[24]=' VIB  V3           ANISOTROPIC   ELOSS=   -0.1588 '
      SCRPT[25]=' VIB  V3           ANISOTROPIC   ELOSS=    0.1588 '
      SCRPT[26]=' VIB 2V3           ANISOTROPIC   ELOSS=    0.3176 '
      SCRPT[27]=' VIB HARMONIC      ANISOTROPIC   ELOSS=    0.4764 '
      SCRPT[28]=' NEUTRAL DISS      NON-DIPOLE    ELOSS=   11.5    '
      SCRPT[29]=' NEUTRAL DISS DIPOLE F=0.000189  ELOSS=   11.63   '
      SCRPT[30]=' NEUTRAL DISS DIPOLE F=0.001085  ELOSS=   11.88   '
      SCRPT[31]=' NEUTRAL DISS DIPOLE F=0.004807  ELOSS=   12.13   '
      SCRPT[32]=' NEUTRAL DISS DIPOLE F=0.008819  ELOSS=   12.38   '
      SCRPT[33]=' NEUTRAL DISS      NON-DIPOLE    ELOSS=   12.50   '
      SCRPT[34]=' NEUTRAL DISS DIPOLE F=0.008918  ELOSS=   12.63   '
      SCRPT[35]=' NEUTRAL DISS DIPOLE F=0.008420  ELOSS=   12.88   '
      SCRPT[36]=' NEUTRAL DISS DIPOLE F=0.02531   ELOSS=   13.13   '
      SCRPT[37]=' NEUTRAL DISS DIPOLE F=0.09553   ELOSS=   13.38   '
      SCRPT[38]=' NEUTRAL DISS DIPOLE F=0.11193   ELOSS=   13.63   '
      SCRPT[39]=' NEUTRAL DISS DIPOLE F=0.10103   ELOSS=   13.88   '
      SCRPT[40]=' NEUTRAL DISS      NON-DIPOLE    ELOSS=   14.00   '
      SCRPT[41]=' NEUTRAL DISS DIPOLE F=0.06902   ELOSS=   14.13   '
      SCRPT[42]=' NEUTRAL DISS DIPOLE F=0.03968   ELOSS=   14.38   '
      SCRPT[43]=' NEUTRAL DISS DIPOLE F=0.02584   ELOSS=   14.63   '
      SCRPT[44]=' NEUTRAL DISS DIPOLE F=0.02071   ELOSS=   14.88   '
      SCRPT[45]=' NEUTRAL DISS DIPOLE F=0.03122   ELOSS=   15.13   '
      SCRPT[46]=' NEUTRAL DISS DIPOLE F=0.05580   ELOSS=   15.38   '
      SCRPT[47]=' NEUTRAL DISS DIPOLE F=0.10187   ELOSS=   15.63   '
      SCRPT[48]=' NEUTRAL DISS DIPOLE F=0.09427   ELOSS=   15.88   '
      SCRPT[49]=' NEUTRAL DISS DIPOLE F=0.05853   ELOSS=   16.13   '
      SCRPT[50]=' NEUTRAL DISS DIPOLE F=0.06002   ELOSS=   16.38   '
      SCRPT[51]=' NEUTRAL DISS DIPOLE F=0.05647   ELOSS=   16.63   '
      SCRPT[52]=' NEUTRAL DISS DIPOLE F=0.04885   ELOSS=   16.88   '
      SCRPT[53]=' NEUTRAL DISS DIPOLE F=0.04036   ELOSS=   17.13   '
      SCRPT[54]=' NEUTRAL DISS DIPOLE F=0.03298   ELOSS=   17.38   '
      SCRPT[55]=' NEUTRAL DISS DIPOLE F=0.02593   ELOSS=   17.63   '
      SCRPT[56]=' NEUTRAL DISS DIPOLE F=0.01802   ELOSS=   17.88   '
      SCRPT[57]=' NEUTRAL DISS DIPOLE F=0.01287   ELOSS=   18.13   '
      SCRPT[58]=' NEUTRAL DISS DIPOLE F=0.00830   ELOSS=   18.38   '
      SCRPT[59]=' NEUTRAL DISS DIPOLE F=0.00698   ELOSS=   18.63   '
      SCRPT[60]=' NEUTRAL DISS DIPOLE F=0.00581   ELOSS=   18.88   '
      SCRPT[61]=' NEUTRAL DISS DIPOLE F=0.00502   ELOSS=   19.13   '
      SCRPT[62]=' NEUTRAL DISS DIPOLE F=0.00398   ELOSS=   19.38   '
      SCRPT[63]=' NEUTRAL DISS DIPOLE F=0.00189   ELOSS=   19.63   '
      SCRPT[64]=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT[65]=' BREMSSTRAHLUNG FROM FLUORINE ATOMS               '
      #  VIBRATIONAL DEGENERACY
      DEGV4=3.0
      DEGV3=3.0
      DEGV2=2.0
      DEGV1=1.0  
      # CALC VIB LEVEL POPULATIONS
      APOPV2=DEGV2*math.exp(EIN[1]/AKT)
      APOPV4=DEGV4*math.exp(EIN[3]/AKT)
      APOPV1=DEGV1*math.exp(EIN[5]/AKT)
      APOPV3=DEGV3*math.exp(EIN[7]/AKT)
      APOPGS=1.0
      APOPSUM=APOPGS+APOPV2+APOPV4+APOPV1+APOPV3
      APOPGS=1.0/APOPSUM
      APOPV2=APOPV2/APOPSUM
      APOPV4=APOPV4/APOPSUM
      APOPV1=APOPV1/APOPSUM
      APOPV3=APOPV3/APOPSUM
      # RENORMALISE GROUND STATE TO ALLOW FOR EXCITATION X-SEC FROM
      # EXCITED VIBRATIONAL STATES (EXACT APPROX IF THE HOT TRANSITIONS HAVE
      # EQUAL X-SEC TO THE GROUND STATE TRANSITIONS)
      # 
      APOPGS=1.0
      #
      #     EN=-ESTEP/2.0                                      
      for I in range(1,NSTEP):
            EN=EG[I]                              
            #     EN=EN+ESTEP                                
            GAMMA1=(EMASS2+2.00*EN)/EMASS2
            GAMMA2=GAMMA1*GAMMA1
            BETA=math.sqrt(1.00-1.00/GAMMA2)
            BETA2=BETA*BETA
            #
            flag20=0                       
            for J in range[2][N]:
                  if(EN <= XEN[J]):
                        flag20=1
                        break
            if(flag20==0):
                  J=NDATA                                                       
            A=(YELM[J]-YELM[J-1])/(XEN[J]-XEN[J-1])                         
            B=(XEN[J-1]*YELM[J]-XEN[J]*YELM[J-1])/(XEN[J-1]-XEN[J]) 
            QMOM=(A*EN+B)*1.*10**-16  
            A=(YELT[J]-YELT[J-1])/(XEN[J]-XEN[J-1])                         
            B=(XEN[J-1]*YELT[J]-XEN[J]*YELT[J-1])/(XEN[J-1]-XEN[J]) 
            QELA=(A*EN+B)*1.*10**-16
            A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])
            B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
            PQ2=(A*EN+B)
            # EPS CORRECTED FOR 1-EPS
            PQ2=1.0-PQ2
            PQ1=0.5+(QELA-QMOM)/QELA
            if(NANISO == 0):
                  PEQEL[2][I]=0.5
            if(NANISO == 1):
                  PEQEL[2][I]=PQ1
            if(NANISO == 2):
                  PEQEL[2][I]=PQ2
                  Q[2][I]=QELA
            if(NANISO == 0):
                  Q[2][I]=QMOM
            #  DISSOCIATIVE IONISATION
            #  ION  =  CF3 +
            QION[1][I]=0.0
            PEQION[1][I]=0.5
            if(NANISO == 2):
                  PEQION[1][I]=0.0                             
            if(EN <= EION[1]):
                  pass
            else:
                  if(EN > XCF3[NCF3]):
                        pass  
                  else:
                        flag42=1
                        flag44=1                              
                        for J in range(2,NCF3):
                              if(EN <= XCF3[J]):
                                    flag42=0
                                    break
                        if(flag42):
                              J=NCF3
                        A=(YCF3[J]-YCF3[J-1])/(XCF3[J]-XCF3[J-1])                         
                        B=(XCF3[J-1]*YCF3[J]-XCF3[J]*YCF3[J-1])/(XCF3[J-1]-XCF3[J])       
                        QION[1][I]=(A*EN+B)*1.*10**-16
                        flag44=0
                        # USE BORN BETHE X-SECTION ABOVE XCF3(NCF3) EV
                  if(flag44):
                        X2=1.00/BETA2
                        X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
                        QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.7344
                  # 44 CONTINUE
                  if(EN <= (2.0*EION[1])):
                        pass
                  else:
                        PEQION[1][I]=PEQEL[2][(I-IOFFION[1])]     
                  #  ION = CF2 +
            QION[2][I]=0.0
            PEQION[2][I]=0.5
            if(NANISO == 2):
                  PEQION[2][I]=0.0                             
            if(EN <= EION[2]):
                  pass
            else:
                  flag47=1      
                  flag49=1
                  if(EN > XCF2[NCF2]):
                        pass
                  else:

                        for J in range(2,NCF2):
                              if(EN <= XCF2[J]):
                                    flag47=0                                       
                        if(flag47):
                              J=NCF2                                                           
                        A=(YCF2[J]-YCF2[J-1])/(XCF2[J]-XCF2[J-1])                         
                        B=(XCF2[J-1]*YCF2[J]-XCF2[J]*YCF2[J-1])/(XCF2[J-1]-XCF2[J])       
                        QION[2][I]=(A*EN+B)*1.E-16
                        flag49=0
                        # USE BORN BETHE X-SECTION ABOVE XCF2[NCF2] EV
                  if(flag49):
                        QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0534
                  #49 CONTINUE
                  if(EN <= (2.0*EION[2])):
                        pass
                  else:
                        PEQION[2][I]=PEQEL[2][(I-IOFFION[2])]
                        #  ION = CF +
            QION[3][I]=0.0
            PEQION[3][I]=0.5
            if(NANISO == 2):
                  PEQION[3][I]=0.0                             
            if(EN <= EION[3]):
                  pass
            else:
                  flag52=1
                  flag54=1
                  if(EN > XCF1(NCF1)):
                        pass                                
                  else:
                        for J in range(2,NCF1):
                              if(EN <= XCF1[J]):
                                    flag52=0
                        if(flag52):
                              J=NCF1                                                           
                        A=(YCF1[J]-YCF1[J-1])/(XCF1[J]-XCF1[J-1])                         
                        B=(XCF1[J-1]*YCF1[J]-XCF1[J]*YCF1[J-1])/(XCF1[J-1]-XCF1[J])       
                        QION[3][I]=(A*EN+B)*1.*10**-16
                        flag54=0
                        # USE BORN BETHE X-SECTION ABOVE XCF1(NCF1) EV
                  if(flag54):
                        QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0386
                  if(EN <= (2.0*EION[3])):
                        pass
                  else:
                        PEQION[3][I]=PEQEL[2][(I-IOFFION[3])]
                        #  ION = F +
            QION[4][I]=0.0
            PEQION[4][I]=0.5
            if(NANISO == 2):
                  PEQION[4][I]=0.0                             
            if(EN <= EION[4]):
                  pass
            else:
                  flag57=1
                  flag59=1
                  if(EN > XC0F[NC0F]):
                        pass                                
                  else:
                        for J in range(2,NC0F):
                              if(EN <= XC0F[J]):
                                    flag57=0
                        if(flag57):                                       
                              J=NC0F                                                           
                        A=(YC0F[J]-YC0F[J-1])/(XC0F[J]-XC0F[J-1])                         
                        B=(XC0F[J-1]*YC0F[J]-XC0F[J]*YC0F[J-1])/(XC0F[J-1]-XC0F[J])       
                        QION[4][I]=(A*EN+B)*1.*10**-16
                        flag59=0
                        # USE BORN BETHE X-SECTION ABOVE XC0F[NC0F] EV
                  if(flag59):
                        QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0799
                  if(EN <= (2.0*EION[4])):
                        pass
                  else:
                        PEQION[4][I]=PEQEL[2][(I-IOFFION[4])]
                  #  ION = C +
            QION[5][I]=0.0
            PEQION[5][I]=0.5
            if(NANISO == 2):
                  PEQION[5][I]=0.0                             
            if(EN <= EION[5]):
                  pass
            else:
                  flag62=1
                  flag64=1
                  if(EN > XCF0[NCF0]):
                        pass                                
                  else:
                        for J in range(2,NCF0):
                              if(EN <= XCF0[J]):
                                    flag62=0
                        if(flag62):
                              J=NCF0                                                           
                        A=(YCF0[J]-YCF0[J-1])/(XCF0[J]-XCF0[J-1])                         
                        B=(XCF0[J-1]*YCF0[J]-XCF0[J]*YCF0[J-1])/(XCF0[J-1]-XCF0[J])       
                        QION[5][I]=(A*EN+B)*1.E-16
                        flag64
                        # USE BORN BETHE X-SECTION ABOVE XCF0[NCF0] EV
                  if(flag64):
                        QION[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0422
                  if(EN <= (2.0*EION[5])):
                        pass
                  else:
                        PEQION[5][I]=PEQEL[2][(I-IOFFION[5])]
                        #  DOUBLE IONS  CF3 +  AND F +
            QION[6][I]=0.0
            PEQION[6][I]=0.5
            if(NANISO == 2):
                  PEQION[6][I]=0.0                             
            if(EN <= EION[6]):
                  pass
            else:
                  flag67=1
                  flag69=1
                  if(EN > XCF3F[NCF3F]):
                        pass                               
                  else:
                        for J in range(2,NCF3F):
                              if(EN <= XCF3F[J]):
                                    flag67=0
                        if(flag67):
                              J=NCF3F                                                        
                        A=(YCF3F[J]-YCF3F[J-1])/(XCF3F[J]-XCF3F[J-1])                     
                        B=(XCF3F[J-1]*YCF3F[J]-XCF3F[J]*YCF3F[J-1])/(XCF3F[J-1]-XCF3F[J])
                        QION[6][I]=(A*EN+B)*1.*10**-16
                        flag69
                        # USE BORN BETHE X-SECTION ABOVE XCF3F[NCF3F] EV
                  if(flag69):
                        QION[6][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0058
                  if(EN <= (2.0*EION[6])):
                        pass
                  else:
                        PEQION[6][I]=PEQEL[2][(I-IOFFION[6])]
                  #  DOUBLE IONS  CF2 +  AND F +
            QION[7][I]=0.0
            PEQION[7][I]=0.5
            if(NANISO == 2):
                  PEQION[7][I]=0.0                             
            if(EN <= EION[7]):
                  pass
            else:
                  flag72=1
                  flag74=1
                  if(EN > XCF2F[NCF2F]):
                        pass
                  else:
                        for J in range(2,NCF2F):
                              if(EN <= XCF2F[J]):
                                    flag72=0
                        if(flag72):
                              J=NCF2F                                                        
                        A=(YCF2F[J]-YCF2F[J-1])/(XCF2F[J]-XCF2F[J-1])                     
                        B=(XCF2F[J-1]*YCF2F[J]-XCF2F[J]*YCF2F[J-1])/(XCF2F[J-1]-XCF2F[J])
                        QION[7][I]=(A*EN+B)*1.*10**-16
                        flag74=0
                        # USE BORN BETHE X-SECTION ABOVE XCF2F[NCF2F] EV
                  if(flag74):
                        QION[7][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0073
                  if(EN <= (2.0*EION[7])):
                        pass
                  else:
                        PEQION[7][I]=PEQEL[2][(I-IOFFION[7])]
                        #  DOUBLE CHARGED ION  CF3 ++
            QION[8][I]=0.0
            PEQION[8][I]=0.5
            if(NANISO == 2):
                  PEQION[8][I]=0.0                             
            if(EN <= EION[8]):
                  pass
            else:
                  flag77=1
                  flag79=1
                  if(EN > XCF32[NCF32]):
                        pass
                  else:
                        for J in range(2,NCF32):
                              if(EN <= XCF32[J]):
                                    flag77=0
                        if(flag77):
                              J=NCF32                                                        
                        A=(YCF32[J]-YCF32[J-1])/(XCF32[J]-XCF32[J-1])                     
                        B=(XCF32[J-1]*YCF32[J]-XCF32[J]*YCF32[J-1])/(XCF32[J-1]-XCF32[J])
                        QION[8][I]=(A*EN+B)*1.E-16
                        flag79=0
                        # USE BORN BETHE X-SECTION ABOVE XCF32[NCF32] EV
                  if(flag79):
                        QION[8][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0031
                  if(EN <= (2.0*EION[8])):
                        pass
                  else:
                        PEQION[8][I]=PEQEL[2][(I-IOFFION[8])]
                  #  DOUBLE CHARGED ION  CF2 ++
                  #
                  #  ADD INTO CF3 ++
                  #                            
            if(EN <= XCF22[1]):
                  pass
            else: 
                  flag82=1
                  flag85=1
                  if(EN > XCF22[NCF22]):
                        pass
                  else:
                        for J in range(2,NCF22):
                              if(EN <= XCF22[J]):
                                    flag82=0
                        if(flag82):
                              J=NCF22                                                        
                        A=(YCF22[J]-YCF22[J-1])/(XCF22[J]-XCF22[J-1])                     
                        B=(XCF22[J-1]*YCF22[J]-XCF22[J]*YCF22[J-1])/(XCF22[J-1]-XCF22[J])
                        QION[8][I]=QION[8][I]+(A*EN+B)*1.E-16
                        flag85=0
                        # USE BORN BETHE X-SECTION ABOVE XCF22[NCF22] EV
                  if(flag85):
                        QION[8][I]=QION[8][I]+CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0077  
                        #  DOUBLE IONS    CF +  AND F +
            QION[9][I]=0.0
            PEQION[9][I]=0.5
            if(NANISO == 2):
                  PEQION[9][I]=0.0                             
            if(EN <= EION[9]):
                  pass 
            else:
                  flag87=1
                  flag89=1
                  if(EN > XCFF[NCFF]):
                        pass
                  else:
                        for J in range(2,NCFF):
                              if(EN <= XCFF[J]):
                                    flag87                                    
                        if(flag87):
                              J=NCFF                                                       
                        A=(YCFF[J]-YCFF[J-1])/(XCFF[J]-XCFF[J-1])                     
                        B=(XCFF[J-1]*YCFF[J]-XCFF[J]*YCFF[J-1])/(XCFF[J-1]-XCFF[J])
                        QION[9][I]=(A*EN+B)*1.*10**-16
                        flag89=0
                        # USE BORN BETHE X-SECTION ABOVE XCFF[NCFF] EV
                  if(flag89):
                        QION[9][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0189
                  if(EN <= (2.0*EION[9])):
                        pass
                  else:
                        PEQION[9][I]=PEQEL[2][(I-IOFFION[9])]
                  #  DOUBLE IONS    C +  AND F +
            QION[10][I]=0.0
            PEQION[10][I]=0.5
            if(NANISO == 2):
                  PEQION[10][I]=0.0                             
            if(EN <= EION[10]):
                  pass
            else:
                  flag92=1
                  flag94=1
                  if(EN > XCF[NCF]):
                        pass
                  else:
                        for J in range(2,NCF):
                              if(EN <= XCF[J]):
                                    flag92=0                                    
                        if(flag92):
                              J=NCF                                                       
                        A=(YCF[J]-YCF[J-1])/(XCF[J]-XCF[J-1])                     
                        B=(XCF[J-1]*YCF[J]-XCF[J]*YCF[J-1])/(XCF[J-1]-XCF[J])
                        QION[10][I]=(A*EN+B)*1.E-16
                        flag94=0
                        # USE BORN BETHE X-SECTION ABOVE XCF[NCF] EV
                  if(flag94):
                        QION[10][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0087
                  if(EN <= (2.0*EION[10])):
                        pass
                  else:
                        PEQION[10][I]=PEQEL[2][(I-IOFFION[10])]
                  # CARBON K-SHELL IONISATION
            QION[11][I]=0.0
            PEQION[11][I]=0.5
            if(NANISO == 2):
                  PEQION[11][I]=0.0                             
            if(EN <= EION[11]):
                  pass
            else:
                  flag131=1
                  for J in range(2,NKSHC):
                        if(EN <= XKSHC[J]):
                              flag131=0
                  if(flag131):                                                  
                        J=NKSHC                                                           
                  A=(YKSHC[J]-YKSHC[J-1])/(XKSHC[J]-XKSHC[J-1])                  
                  B=(XKSHC[J-1]*YKSHC[J]-XKSHC[J]*YKSHC[J-1])/(XKSHC[J-1]-XKSHC[J])
                  QION[11][I]=(A*EN+B)*1.E-16
                  if(EN <= (2.0*EION[11])):
                        pass
                  else:
                        PEQION[11][I]=PEQEL[2][(I-IOFFION[11])]
                        # FLUORINE K-SHELL IONISATION                          
            QION[12][I]=0.0
            PEQION[12][I]=0.5
            if(NANISO == 2):
                  PEQION[12][I]=0.0                             
            if(EN <= EION[12]):
                  pass
            else:
                  flag141=1
                  flag145=1
                  for J in range(2,NKSHF):
                        if(EN <= XKSHF[J]):
                              flag141=0
                  if(flag141):
                        J=NKSHF                                                           
                  A=(YKSHF[J]-YKSHF[J-1])/(XKSHF[J]-XKSHF[J-1])                  
                  B=(XKSHF[J-1]*YKSHF[J]-XKSHF[J]*YKSHF[J-1])/(XKSHF[J-1]-XKSHF[J])
                  # FACTOR OF 4 FROM NUMBER OF FLUORINE ATOMS IN MOLECULE
                  QION[12][I]=4.0*(A*EN+B)*1.E-16
                  if(EN <= (2.0*EION[12])):
                        pass
                  else:
                        PEQION[12][I]=PEQEL[2][(I-IOFFION[12])]
                  #    
                  # ATTACHMENT                                   
            Q[4][I]=0.0                                                        
            if(EN <= XATT[1]):
                  pass
            else:
                  flag220=1
                  if(EN > XATT[NATT1]):
                        pass
                  else:
                        for J in range(2,NATT1):
                              if(EN <= XATT[J]):
                                    flag220=0                                       
                        if(flag220):
                              J=NATT1                                                           
                        A=(YATT[J]-YATT[J-1])/(XATT[J]-XATT[J-1])                         
                        B=(XATT[J-1]*YATT[J]-XATT[J]*YATT[J-1])/(XATT[J-1]-XATT[J])       
                        Q[4][I]=(A*EN+B)*1.E-16  
                        #                                           
            Q[5][I]=0.0                                                        
            Q[6][I]=0.0
            # SCALE FACTOR FOR VIBRATIONAL DIPOLE V3 ABOVE 0.4EV
            VDSC=1.0
            if(EN > 0.4):
                  EPR=EN
            if(EN > 5.0):
                  EPR=5.0
                  VDSC=(14.4-EPR)/14.0
            # endif 
            #           
            # SUPERELASTIC OF VIBRATION V2 ISOTROPIC  BELOW 100EV                             
            #
            QIN[1][I]=0.0 
            PEQIN[1][I]=0.5
            if(EN <= 0.0):
                  pass
            else:
                  EFAC=math.sqrt(1.0-(EIN[1]/EN))
                  QIN[1][I]=0.007*math.log((EFAC+1.0)/(EFAC-1.0))/EN
                  QIN[1][I]=QIN[1][I]*APOPV2*1.E-16/DEGV2
                  if(EN > 100.0):
                        PEQIN[1][I]=PQ1
            # VIBRATION V2 ISOTROPIC BELOW 100EV
            QIN[2][I]=0.0
            PEQIN[2][I]=0.5                                                   
            if(EN <= EIN[2]):
                  pass
            else:
                  EFAC=math.sqrt(1.0-(EIN[2]/EN))
                  QIN[2][I]=0.007*math.log((1.0+EFAC)/(1.0-EFAC))/EN    
                  QIN[2][I]=QIN[2][I]*APOPGS*1.E-16
                  if(EN > 100.0):
                        PEQIN[2][I]=PQ1
            #           
            # SUPERELASTIC OF VIBRATION V4 ISOTROPIC BELOW 100EV                              
            #
            QIN[3][I]=0.0
            PEQIN[3][I]=0.5
            if(EN <= 0.0):
                  pass
            else:
                  flag420=1
                  flag425=1
                  if((EN-EIN[3]) > X):
                        pass
                  else:
                        for J in range(2,NVBV4):
                              if((EN-EIN[3]) <= XVBV4[J]):
                                    flag420=0
                        if(flag420):
                              J=NVBV4
                        A=(YVBV4[J]-YVBV4[J-1])/(XVBV4[J]-XVBV4[J-1])
                        B=(XVBV4[J-1]*YVBV4[J]-XVBV4[J]*YVBV4[J-1])/(XVBV4[J-1]-XVBV4[J])
                        QIN[3][I]=(EN-EIN[3])*(A*(EN-EIN[3])+B)/EN
                        flag425=0
                  if(flag425):
                        QIN[3][I]=YVBV4[NVBV4]*(XVBV4[NVBV4]/(EN*(EN-EIN[3]))**2)
                  EFAC=math.sqrt(1.0-(EIN[3]/EN))
                  QIN[3][I]=QIN[3][I]+0.0500*math.log((EFAC+1.0)/(EFAC-1.0))/EN
                  QIN[3][I]=QIN[3][I]*APOPV4*1.E-16/DEGV4
                  if(EN > 100.0):
                        PEQIN[3][I]=PQ1
            # VIBRATION V4 ANISOTROPIC
            QIN[4][I]=0.0
            PEQIN[4][I]=0.5                                                   
            if(EN <= EIN[4]):
                  pass
            else:
                  flag470=1
                  flag475=1
                  if(EN > XVBV4[NVBV4]):
                        pass
                  else:
                        for J in range(2,NVBV4):
                              if(EN <= XVBV4[J]):
                                    flag470=0                                      
                        if(flag470):
                              J=NVBV4                                                          
                        A=(YVBV4[J]-YVBV4[J-1])/(XVBV4[J]-XVBV4[J-1])                     
                        B=(XVBV4[J-1]*YVBV4[J]-XVBV4[J]*YVBV4[J-1])/(XVBV4[J-1]-XVBV4[J])
                        QIN[4][I]=A*EN+B
                        flag475=0
                  if(flag475):
                        QIN[4][I]=YVBV4[NVBV4]*(XVBV4[NVBV4]/EN)**3
                  EFAC=math.sqrt(1.0-(EIN[4]/EN))
                  ADIP=0.0500*math.log((1.0+EFAC)/(1.0-EFAC))/EN    
                  ELF=EN-EIN[4]
                  FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
                  BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
                  # RATIO OF MT TO TOTAL X-SECT FOR RESONANCE PART = RAT
                  XMT=((1.5-FWD/(FWD+BCK))*ADIP+RAT*QIN[4][I])*APOPGS*1.E-16
                  QIN[4][I]=(QIN[4][I]+ADIP)*APOPGS*1.E-16
                  if(EN <= 100.0):
                        PEQIN[4][I]=0.5+(QIN[4][I]-XMT)/QIN[4][I]
                  if(EN > 100.0):
                        PEQIN[4][I]=PQ1
            # SUPERELASTIC OF VIBRATION V1 ISOTROPIC BELOW 100EV
            QIN[5][I]=0.0
            PEQIN[5][I]=0.5                                                  
            if(EN <= 0.0):
                  pass
            else:
                  flag520=1
                  flag525=1
                  if((EN-EIN[5]) > XVBV1[NVBV1]):
                        pass
                  else:
                        for J in range(2,NVBV1):
                              if((EN-EIN[5]) <= XVBV1[J]):
                                    flag520                             
                        if(flag520):
                              J=NVBV1                                                          
                        A=(YVBV1[J]-YVBV1[J-1])/(XVBV1[J]-XVBV1[J-1])                     
                        B=(XVBV1[J-1]*YVBV1[J]-XVBV1[J]*YVBV1[J-1])/(XVBV1[J-1]-XVBV1[J])
                        QIN[5][I]=(EN-EIN[5])*(A*(EN-EIN[5])+B)/EN
                        flag525=0
                  if(flag525):
                        QIN[5][I]=YVBV1[NVBV1]*(XVBV1[NVBV1]/(EN*(EN-EIN[5]))**2)
                  EFAC=math.sqrt(1.0-(EIN[5]/EN))
                  QIN[5][I]=QIN[5][I]+0.0224*math.log((EFAC+1.0)/(EFAC-1.0))/EN
                  QIN[5][I]=QIN[5][I]*APOPV1*1.E-16/DEGV1  
                  if(EN > 100.0):
                        PEQIN[5][I]=PQ1
            #  VIBRATION V1  ISOTROPIC BELOW 100EV
            QIN[6][I]=0.0        
            PEQIN[6][I]=0.5                          
            if(EN <= EIN[6]):
                  pass
            else:   
                  flag570=1
                  flag575=1
                  if(EN > XVBV1[NVBV1]):
                        pass
                  else:                                
                        for J in range(2,NVBV1):
                              if(EN <= XVBV1[J]):
                                    flag570=0                                      
                        if(flag570):
                              J=NVBV1                                                          
                        A=(YVBV1[J]-YVBV1[J-1])/(XVBV1[J]-XVBV1[J-1])                     
                        B=(XVBV1[J-1]*YVBV1[J]-XVBV1[J]*YVBV1[J-1])/(XVBV1[J-1]-XVBV1[J]) 
                        QIN[6][I]=A*EN+B
                        flag575=0
                  if(flag575):
                        QIN[6][I]=YVBV1[NVBV1]*(XVBV1[NVBV1]/EN)**3
                  EFAC=math.sqrt(1.0-(EIN[6]/EN))
                  QIN[6][I]=QIN[6][I]+0.0224*math.log((1.0+EFAC)/(1.0-EFAC))/EN
                  QIN[6][I]=QIN[6][I]*APOPGS*1.E-16
                  if(EN > 100.0):
                        PEQIN[6][I]=PQ1
            # SUPERELASTIC OF VIBRATION V3 ISOTROPIC BELOW 100EV
            QIN[7][I]=0.0
            PEQIN[7][I]=0.5
            if(EN <= 0.0):
                  pass
            else:
                  flag620=1
                  flag625=1
                  if((EN-EIN[7]) > XVBV3[NVBV3]):
                        pass
                  else:
                        for J in range(2,NVBV3):
                              if((EN-EIN[7]) <= XVBV3[J]):
                                    flag620=0                             
                        if(flag620):
                              J=NVBV3                                                          
                        A=(YVBV3[J]-YVBV3[J-1])/(XVBV3[J]-XVBV3[J-1])                     
                        B=(XVBV3[J-1]*YVBV3[J]-XVBV3[J]*YVBV3[J-1])/(XVBV3[J-1]-XVBV3[J]) 
                        QIN[7][I]=(EN-EIN[7])*(A*(EN-EIN[7])+B)/EN
                        flag625=0
                  if(flag625):
                        QIN[7][I]=YVBV3[NVBV3]*(XVBV3[NVBV3]/(EN*(EN-EIN[7]))**2)
                  EFAC=math.sqrt(1.0-(EIN[7]/EN))
                  QIN[7][I]=QIN[7][I]+VDSC*1.610*math.log((EFAC+1.0)/(EFAC-1.0))/EN
                  QIN[7][I]=QIN[7][I]*APOPV3*1.E-16/DEGV3
                  if(EN > 100.0):
                        PEQIN[7][I]=PQ1
            # VIBRATION V3 ANISOTROPIC
            QIN[8][I]=0.0
            PEQIN[8][I]=0.5
            if(EN <= EIN[8]):
                  pass
            else:
                  flag670=1
                  flag675=1
                  if(EN > XVBV3[NVBV3]):
                        pass
                  else:
                        for J in range(2,NVBV3):
                              if(EN <= XVBV3[J]):
                                    flag670=0                                      
                        if(flag670):
                              J=NVBV3                                                          
                        A=(YVBV3[J]-YVBV3[J-1])/(XVBV3[J]-XVBV3[J-1])                     
                        B=(XVBV3[J-1]*YVBV3[J]-XVBV3[J]*YVBV3[J-1])/(XVBV3[J-1]-XVBV3[J]) 
                        QIN[8][I]=A*EN+B
                        flag675=0
                  if(flag675):
                        QIN[8][I]=YVBV3[NVBV3]*(XVBV3[NVBV3]/EN)**3
                  EFAC=math.sqrt(1.0-(EIN[8]/EN))
                  ADIP=VDSC*1.610*math.log((1.0+EFAC)/(1.0-EFAC))/EN
                  ELF=EN-EIN[8]
                  FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
                  BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
                  #   ASSUME RATIO MOM T./ TOT X-SECT FOR RESONANCE PART = RAT 
                  XMT=((1.5-FWD/(FWD+BCK))*ADIP+RAT*QIN[8][I])*APOPGS*1.E-16
                  QIN[8][I]=(QIN[8][I]+ADIP)*APOPGS*1.E-16
                  if(EN <= 100.0):
                        PEQIN[8][I]=0.5+(QIN[8][I]-XMT)/QIN[8][I]
                  if(EN > 100.0):
                        PEQIN[8][I]=PQ1
            # VIBRATION HARMONIC 2V3
            QIN[9][I]=0.0
            PEQIN[9][I]=0.5
            if(EN <= EIN[9]):
                  pass
            else:
                  flag720=1
                  flag725=1
                  if(EN > XVIB5[NVIB5]):
                        pass
                  else:
                        for J in range(2,NVIB5):
                              if(EN <= XVIB5[J]):
                                    flag720=0                                      
                        if(flag720):
                              J=NVIB5                                                           
                        A=(YVIB5[J]-YVIB5[J-1])/(XVIB5[J]-XVIB5[J-1])                     
                        B=(XVIB5[J-1]*YVIB5[J]-XVIB5[J]*YVIB5[J-1])/(XVIB5[J-1]-XVIB5[J]) 
                        QIN[9][I]=(A*EN+B)
                        flag725=0
                  if(flag725):
                        QIN[9][I]=YVIB5[NVIB5]*(XVIB5[NVIB5]/EN)
                  QIN[9][I]=QIN[9][I]*APOPGS*1.E-16
                  if(EN <= 100.0):
                        PEQIN[9][I]=0.5+(1.0-RAT)
                  if(EN > 100.0):
                        PEQIN[9][I]=PQ1                 
            # VIBRATION HARMONIC 3V3 
            QIN[10][I]=0.0
            PEQIN[10][I]=0.5                                                 
            if(EN <= EIN[10]):
                  pass
            else:
                  flag820=1
                  flag825=1
                  if(EN > XVIB6[NVIB6]):
                        pass
                  else:
                        for J in range(2,NVIB6):
                              if(EN <= XVIB6[J]):
                                    flag820=0                                      
                        if(flag820):
                              J=NVIB6                                                           
                        A=(YVIB6[J]-YVIB6[J-1])/(XVIB6[J]-XVIB6[J-1])                     
                        B=(XVIB6[J-1]*YVIB6[J]-XVIB6[J]*YVIB6[J-1])/(XVIB6[J-1]-XVIB6[J]) 
                        QIN[10][I]=(A*EN+B)
                        flag825=0
                  if(flag825):
                        QIN[10][I]=YVIB6[NVIB6]*(XVIB6[NVIB6]/EN)
                  QIN[10][I]=QIN[10][I]*APOPGS*1.E-16
                  if(EN <= 100.0):
                        PEQIN[10][I]=0.5+(1.0-RAT)
                  if(EN > 100.0):
                        PEQIN[10][I]=PQ1                      
            #                                                                       
            # TRIPLET NEUTRAL DISSOCIATION ELOSS=11.5 EV
            QIN[11][I]=0.0  
            PEQIN[11][I]=0.0                       
            if(EN <= EIN[11]):
                  pass                
            else:
                  flag902=1
                  flag9026=1
                  if(EN > XTR1[NTR1]):
                        pass
                  else:
                        for J in range(2,NTR1):                                                 
                              if(EN <= XTR1[J]):
                                    flag902=0                                       
                        if(flag902):
                              J=NTR1                                                           
                        A=(YTR1[J]-YTR1[J-1])/(XTR1[J]-XTR1[J-1])                         
                        B=(XTR1[J-1]*YTR1[J]-XTR1[J]*YTR1[J-1])/(XTR1[J-1]-XTR1[J])       
                        QIN[11][I]=(A*EN+B)*1.E-16
                        flag9026=0
                  if(flag9026):
                        QIN[11][I]=YTR1[NTR1]*(XTR1[NTR1]/EN)**2*1.E-16
                  if(EN <= (3.0*EIN[11])):
                        pass
                  else:
                        PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]                              
                  # SINGLET NEUTRAL DISSOCIATION  ELOSS=11.63 EV     F=0.0001893
            QIN[12][I]=0.0
            PEQIN[12][I]=0.0
            if(EN <= EIN[12]):
                  pass
            else:
                  QIN[12][I]=.0001893/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])*1.0107
                  if(QIN[12][I]< 0.0):
                        QIN[12][I]=0.0       
                  if(EN <= (3.0*EIN[12])):
                        pass
                  else:
                        PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
                  # SINGLET NEUTRAL DISSOCIATION   ELOSS=11.88 EV     F=0.001085
            QIN[13][I]=0.0
            PEQIN[13][I]=0.0
            if(EN <= EIN[13]):
                  pass
            else:
                  QIN[13][I]=0.001085/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[13]+E[3])*1.0105
                  if(QIN[13][I]< 0.0):
                        QIN[13][I]=0.0       
                  if(EN <= (3.0*EIN[13])):
                        pass
                  else:
                        PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=12.13 EV     F=0.004807
            QIN[14][I]=0.0
            PEQIN[14][I]=0.0
            if(EN <= EIN[14]):
                  pass
            else:
                  QIN[14][I]=0.004807/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[14]+E[3])*1.0103
                  if(QIN[14][I]< 0.0):
                        QIN[14][I]=0.0       
                  if(EN <= (3.0*EIN[14])):
                        pass
                  else:
                        PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=12.38 EV     F=0.008819
            QIN[15][I]=0.0
            PEQIN[15][I]=0.0
            if(EN <= EIN[15]):
                  pass
            else:
                  QIN[15][I]=0.008819/(EIN[15]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[15]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[15]+E[3])*1.0101
                  if(QIN[15][I]< 0.0):
                        QIN[15][I]=0.0       
                  if(EN <= (3.0*EIN[15])):
                        pass
                  else:
                        PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
                        # TRIPLET NEUTRAL DISSOCIATION ELOSS=12.5 EV
            QIN[16][I]=0.0  
            PEQIN[16][I]=0.0                       
            if(EN <= EIN[16]):
                  pass
            else:
                  flag909=1
                  flag9096=1
                  if(EN > XTR2[NTR2]):
                        pass
                  else:
                        for J in range(2,NTR2):
                              if(EN <= XTR2[J]):
                                    flag909=0                                       
                        if(flag909):
                              J=NTR2                                                            
                        A=(YTR2[J]-YTR2[J-1])/(XTR2[J]-XTR2[J-1])                         
                        B=(XTR2[J-1]*YTR2[J]-XTR2[J]*YTR2[J-1])/(XTR2[J-1]-XTR2[J])       
                        QIN[16][I]=(A*EN+B)*1.E-16
                        flag9096=0
                  if(flag9096):
                        QIN[16][I]=YTR2[NTR2]*(XTR2[NTR2]/EN)**2*1.E-16
                  if(EN <= (3.0*EIN[16])):
                        pass
                  else:
                        PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]                              
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=12.63 EV     F=0.008918
            QIN[17][I]=0.0
            PEQIN[17][I]=0.0
            if(EN <= EIN[17]):
                  pass
            else:
                  QIN[17][I]=0.008918/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])*1.0099
                  if(QIN[17][I]< 0.0):
                        QIN[17][I]=0.0       
                  if(EN <= (3.0*EIN[17])):
                        pass
                  else:
                        PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=12.88 EV     F=0.008420
            QIN[18][I]=0.0
            PEQIN[18][I]=0.0
            if(EN <= EIN[18]):
                  pass
            else:
                  QIN[18][I]=0.008420/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])*1.0097
                  if(QIN[18][I]< 0.0):
                        QIN[18][I]=0.0       
                  if(EN <= (3.0*EIN[18])):
                        pass
                  else:
                        PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=13.13 EV     F=0.02531 
            QIN[19][I]=0.0
            PEQIN[19][I]=0.0
            if(EN <= EIN[19]):
                  pass
            else:
                  QIN[19][I]=0.02531/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])*1.0095
                  if(QIN[19][I]< 0.0):
                        QIN[19][I]=0.0       
                  if(EN <= (3.0*EIN[19])):
                        pass
                  else:
                        PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=13.38 EV     F=0.09553 
            QIN[20][I]=0.0
            PEQIN[20][I]=0.0
            if(EN <= EIN[20]):
                  pass
            else:
                  QIN[20][I]=0.09553/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])*1.0093
                  if(QIN[20][I]< 0.0):
                        QIN[20][I]=0.0       
                  if(EN <= (3.0*EIN[20])):
                        pass
                  else:
                        PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=13.63 EV     F=0.11193 
            QIN[21][I]=0.0
            PEQIN[21][I]=0.0
            if(EN <= EIN[21]):
                  pass
            else:
                  QIN[21][I]=0.11193/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])*1.0092
                  if(QIN[21][I]< 0.0):
                        QIN[21][I]=0.0       
                  if(EN <= (3.0*EIN[21])):
                        pass
                  else:
                        PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=13.88 EV     F=0.10103 
            QIN[22][I]=0.0
            PEQIN[22][I]=0.0
            if(EN <= EIN[22]):
                  pass
            else:
                  QIN[22][I]=0.10103/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+E[3])*1.0090
                  if(QIN[22][I]< 0.0):
                        QIN[22][I]=0.0       
                  if(EN <= (3.0*EIN[22])):
                        pass
                  else:
                        PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
                        # TRIPLET NEUTRAL DISSOCIATION ELOSS=14.0 EV
            QIN[23][I]=0.0  
            PEQIN[23][I]=0.0                       
            if(EN <= EIN[23]):
                  pass
            else:
                  flag918=1
                  flag9186=1
                  if(EN > XTR3[NTR3]):
                        pass
                  else:
                        for J in range(2,NTR3):
                              if(EN <= XTR3[J]):
                                    flag918=0                                       
                        if(flag918):
                              J=NTR3                                                            
                        A=(YTR3[J]-YTR3[J-1])/(XTR3[J]-XTR3[J-1])                         
                        B=(XTR3[J-1]*YTR3[J]-XTR3[J]*YTR3[J-1])/(XTR3[J-1]-XTR3[J])       
                        QIN[23][I]=(A*EN+B)*1.E-16
                        flag9186=0
                  if(flag9186):
                        QIN[23][I]=YTR3[NTR3]*(XTR3[NTR3]/EN)**2*1.E-16
                  if(EN <= (3.0*EIN[23])):
                        pass
                  else:
                        PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]                              
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=14.13 EV     F=0.06902 
            QIN[24][I]=0.0
            PEQIN[24][I]=0.0
            if(EN <= EIN[24]):
                  pass
            else:
                  QIN[24][I]=0.06902/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])*1.0088
                  if(QIN[24][I]< 0.0):
                        QIN[24][I]=0.0       
                  if(EN <= (3.0*EIN[24])):
                        pass
                  else:
                        PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=14.38 EV     F=0.03968 
            QIN[25][I]=0.0
            PEQIN[25][I]=0.0
            if(EN <= EIN[25]):
                  pass
            else:
                  QIN[25][I]=0.03968/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+E[3])*1.0087
                  if(QIN[25][I]< 0.0):
                        QIN[25][I]=0.0       
                  if(EN <= (3.0*EIN[25])):
                        pass
                  else:
                        PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
                  # SINGLET NEUTRAL DISSOCIATION   ELOSS=14.63 EV     F=0.02584 
            QIN[26][I]=0.0
            PEQIN[26][I]=0.0
            if(EN <= EIN[26]):
                  pass
            else:
                  QIN[26][I]=0.02584/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])*1.0085
                  if(QIN[26][I]< 0.0):
                        QIN[26][I]=0.0       
                  if(EN <= (3.0*EIN[26])):
                        pass
                  else:
                        PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=14.88 EV     F=0.02071 
            QIN[27][I]=0.0
            PEQIN[27][I]=0.0
            if(EN <= EIN[27]):
                  pass
            else:
                  QIN[27][I]=0.02071/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])*1.0084
                  if(QIN[27][I]< 0.0):
                        QIN[27][I]=0.0       
                  if(EN <= (3.0*EIN[27])):
                        pass
                  else:
                        PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=15.13 EV     F=0.03122 
            QIN[28][I]=0.0
            PEQIN[28][I]=0.0
            if(EN <= EIN[28]):
                  pass
            else:
                  QIN[28][I]=0.03122/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])*1.0083
                  if(QIN[28][I]< 0.0):
                        QIN[28][I]=0.0       
                  if(EN <= (3.0*EIN[28])):
                        pass
                  else:
                        PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=15.38 EV     F=0.05580 
            QIN[29][I]=0.0
            PEQIN[29][I]=0.0
            if(EN <= EIN[29]):
                  pass
            else:
                  QIN[29][I]=0.05580/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])*1.0081
                  if(QIN[29][I]< 0.0):
                        QIN[29][I]=0.0       
                  if(EN <= (3.0*EIN[29])):
                        pass
                  else:
                        PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=15.63 EV     F=0.10187 
            QIN[30][I]=0.0
            PEQIN[30][I]=0.0
            if(EN <= EIN[30]):
                  pass
            else:
                  QIN[30][I]=0.10187/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])*1.0080
                  if(QIN[30][I]< 0.0):
                        QIN[30][I]=0.0       
                  if(EN <= (3.0*EIN[30])):
                        pass
                  else:
                        PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=15.88 EV     F=0.09427 
            QIN[31][I]=0.0
            PEQIN[31][I]=0.0
            if(EN <= EIN[31]):
                  pass
            else:
                  QIN[31][I]=0.09427/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])*1.0079
                  if(QIN[31][I]< 0.0):
                        QIN[31][I]=0.0       
                  if(EN <= (3.0*EIN[31])):
                        pass
                  else:
                        PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=16.13 EV     F=0.05853 
            QIN[32][I]=0.0
            PEQIN[32][I]=0.0
            if(EN <= EIN[32]):
                  pass
            else:
                  QIN[32][I]=0.05853/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])*1.0077
                  if(QIN[32][I]< 0.0):
                        QIN[32][I]=0.0       
                  if(EN <= (3.0*EIN[32])):
                        pass
                  else:
                        PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=16.38 EV     F=0.06002 
            QIN[33][I]=0.0
            PEQIN[33][I]=0.0
            if(EN <= EIN[33]):
                  pass
            else:
                  QIN[33][I]=0.06002/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])*1.0076
                  if(QIN[33][I]< 0.0):
                        QIN[33][I]=0.0       
                  if(EN <= (3.0*EIN[33])):
                        pass
                  else:
                        PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=16.63 EV     F=0.05647 
            QIN[34][I]=0.0
            PEQIN[34][I]=0.0
            if(EN <= EIN[34]):
                  pass
            else:
                  QIN[34][I]=0.05647/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])*1.0075
                  if(QIN[34][I]< 0.0):
                        QIN[34][I]=0.0       
                  if(EN <= (3.0*EIN[34])):
                        pass
                  else:
                        PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=16.88 EV     F=0.04885 
            QIN[35][I]=0.0
            PEQIN[35][I]=0.0
            if(EN <= EIN[35]):
                  pass
            else:
                  QIN[35][I]=0.04885/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])*1.0074
                  if(QIN[35][I]< 0.0):
                        QIN[35][I]=0.0       
                  if(EN <= (3.0*EIN[35])):
                        pass
                  else:
                        PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=17.13 EV     F=0.04036 
            QIN[36][I]=0.0
            PEQIN[36][I]=0.0
            if(EN <= EIN[36]):
                  pass
            else:
                  QIN[36][I]=0.04036/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])*1.0073
                  if(QIN[36][I]< 0.0):
                        QIN[36][I]=0.0       
                  if(EN <= (3.0*EIN[36])):
                        pass
                  else:
                        PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=17.38 EV     F=0.03298 
            QIN[37][I]=0.0
            PEQIN[37][I]=0.0
            if(EN <= EIN[37]):
                  pass
            else:
                  QIN[37][I]=0.03298/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])*1.0072
                  if(QIN[37][I]< 0.0):
                        QIN[37][I]=0.0       
                  if(EN <= (3.0*EIN[37])):
                        pass
                  else:
                        PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=17.63 EV     F=0.02593 
            QIN[38][I]=0.0
            PEQIN[38][I]=0.0
            if(EN <= EIN[38]):
                  pass
            else:
                  QIN[38][I]=0.02593/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])*1.0071
                  if(QIN[38][I]< 0.0):
                        QIN[38][I]=0.0       
                  if(EN <= (3.0*EIN[38])):
                        pass
                  else:
                        PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=17.88 EV     F=0.01802 
            QIN[39][I]=0.0
            PEQIN[39][I]=0.0
            if(EN <= EIN[39]):
                  pass
            else:
                  QIN[39][I]=0.01802/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+E[3])*1.0070
                  if(QIN[39][I]< 0.0):
                        QIN[39][I]=0.0       
                  if(EN <= (3.0*EIN[39])):
                        pass
                  else:
                        PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=18.13 EV     F=0.01287 
            QIN[40][I]=0.0
            PEQIN[40][I]=0.0
            if(EN <= EIN[40]):
                  pass
            else:
                  QIN[40][I]=0.01287/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+E[3])*1.0069
                  if(QIN[40][I]< 0.0):
                        QIN[40][I]=0.0       
                  if(EN <= (3.0*EIN[40])):
                        pass
                  else:
                        PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=18.38 EV     F=0.00830 
            QIN[41][I]=0.0
            PEQIN[41][I]=0.0
            if(EN <= EIN[41]):
                  pass
            else:
                  QIN[41][I]=0.00830/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3])*1.0068
                  if(QIN[41][I]< 0.0):
                        QIN[41][I]=0.0       
                  if(EN <= (3.0*EIN[41])):
                        pass
                  else:
                        PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=18.63 EV     F=0.00698 
            QIN[42][I]=0.0
            PEQIN[42][I]=0.0
            if(EN <= EIN[42]):
                  pass
            else:
                  QIN[42][I]=0.00698/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+E[3])*1.0067
                  if(QIN[42][I]< 0.0):
                        QIN[42][I]=0.0       
                  if(EN <= (3.0*EIN[42])):
                        pass
                  else:
                        PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=18.88 EV     F=0.00581 
            QIN[43][I]=0.0
            PEQIN[43][I]=0.0
            if(EN <= EIN[43]):
                  pass
            else:
                  QIN[43][I]=0.00581/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+E[3])*1.0066
                  if(QIN[43][I]< 0.0):
                        QIN[43][I]=0.0       
                  if(EN <= (3.0*EIN[43])):
                        pass
                  else:
                        PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=19.13 EV     F=0.00502 
            QIN[44][I]=0.0
            PEQIN[44][I]=0.0
            if(EN <= EIN[44]):
                  pass
            else:
                  QIN[44][I]=0.00502/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])*1.0065
                  if(QIN[44][I]< 0.0):
                        QIN[44][I]=0.0       
                  if(EN <= (3.0*EIN[44])):
                        pass
                  else:
                        PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=19.38 EV     F=0.00398 
            QIN[45][I]=0.0
            PEQIN[45][I]=0.0
            if(EN <= EIN[45]):
                  pass
            else:
                  QIN[45][I]=0.00398/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])*1.0064
                  if(QIN[45][I]< 0.0):
                        QIN[45][I]=0.0       
                  if(EN <= (3.0*EIN[45])):
                        pass
                  else:
                        PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
                        # SINGLET NEUTRAL DISSOCIATION   ELOSS=19.63 EV     F=0.00189 
            QIN[46][I]=0.0
            PEQIN[46][I]=0.0
            if(EN <= EIN[46]):
                  pass
            else:
                  QIN[46][I]=0.00198/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])*1.0064
                  if(QIN[46][I]< 0.0):
                        QIN[46][I]=0.0       
                  if(EN <= (3.0*EIN[46])):
                        pass
                  else:
                        PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
            # LOAD BREMSSTRAHLUNG X-SECTIONS
            QIN[47][I]=0.0
            QIN[48][I]=0.0
            if(EN <= 1000.):
                  pass
            else:
                  flag953=1
                  for J in range(2,NBREM):
                        if(EN <= EBRM[J]):
                              flag953=0
                  if(flag953):
                        J=NBREM
                  A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
                  B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
                  A1=(math.log(Z9T[J])-math.log(Z9T[J-1]))/(EBRM[J]-EBRM[J-1])
                  B1=(math.log(Z9T[J])*EBRM[J-1]-math.log(Z9T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
                  QIN[47][I]=math.exp(A*EN+B)*1.E-24
                  QIN[48][I]=math.exp(A1*EN+B1)*4.E-24 
            #  
            # COUNTING IONISATION SUM
            QIONSUM=0.0                    
            for J in range(1,12):
                  QIONSUM=QIONSUM+QION[J][I] 
            QSNGLSUM=0.0
            for J in range(11,46):
                  # SKIP TRIPLETS
                  if(J == 11 or J == 16 or J == 23):
                        break
                  else:
                        QSNGLSUM=QSNGLSUM+QIN[J][I]
            QTRIPSUM=QIN[11][I]+QIN[16][I]+QIN[23][I] 
            # VIBRATION SUM
            VSUM=0.0
            for J in range(1,10):
                  VSUM=VSUM+QIN[J][I] 
            # GROSS IONISATION SUM 
            QIONG=QIONSUM
            for J in range(6,12):
                  QIONG=QIONG+QION[J][I]

            #      
            DISTOT=QSNGLSUM+QTRIPSUM+QIONSUM               
            Q[1][I]=Q[2][I]+Q[4][I]+VSUM+DISTOT
            #     WRITE(6,444) EN,Q[1][I],Q[2][I],VSUM,QSNGLSUM,QTRIPSUM,QIONSUM,
            #    /QIONG,DISTOT
            # 444 print(' EN=',D12.6,' TOT=','%.4f' % ,' ELAS=','%.4f' % ,' VIB SUM=',
            #    /'%.4f' % ,/,' NEUTRAL DIP. DISS=','%.4f' % ,' TRIPLET DISS=','%.4f' % ,/,
            #    /' COUNT IONISATION=','%.4f' % ,/' GROSS IONISATION=','%.4f' % ,/,
            #    /' DISTOT=','%.4f' % )
      #  SAVE COMPUTE TIME 
      if(EFINAL > 1000.):
            NIN=48
      for J in range(11,46):
            if(EFINAL <= EIN[J]):
                  NIN=J-1
                  break
            # endif
      return                                                            
      # end 
def GAS2(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2 
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      # COMMON/MIX2/
      global EG,EROOT,QT1,QT2,QT3,QT4
      global DEN
      ECHARG=conf.ECHARG
      EMASS=conf.EMASS
      AMU=conf.AMU
      PIR2=conf.PIR2
      NGAS=conf.NGAS
      NSTEP=conf.NSTEP
      NANISO=conf.NANISO
      EFINAL=conf.EFINAL
      ESTEP=conf.ESTEP
      AKT=conf.AKT
      ARY=conf.ARY
      TEMPC=conf.TEMPC
      TORR=conf.TORR
      IPEN=conf.IPEN
      EG=conf.E
      EROOT=conf.EROOT
      QT1=conf.QT1
      QT2=conf.QT2
      QT3=conf.QT3
      QT4=conf.QT4
      DEN=conf.DEN
      # DIMENSION 
      QATT=numpy.reshape(QATT,(8+1,20000+1))
      QNULL=numpy.reshape(QNULL,(10+1,20000+1))
      SCLN=numpy.reshape(SCLN,(10+1))
      ESPLIT=numpy.reshape(ESPLIT,(5+1,20+1))
      PEQEL=numpy.reshape(PEQEL,(6+1,20000+1))
      PEQIN=numpy.reshape(PEQIN,(250+1,20000+1))
      KIN=numpy.reshape(KIN,(250+1))
      KEL=numpy.reshape(KEL,(6+1))
      QION=numpy.reshape(QION,(30+1,20000+1))
      PEQION=numpy.reshape(PEQION,(30+1,20000+1))
      EION=numpy.reshape(EION,(30+1))
      EOBY=numpy.reshape(EOBY,(30+1))
      NC0=numpy.reshape(NC0,(30+1))
      EC0=numpy.reshape(EC0,(30+1))
      WKLM=numpy.reshape(WKLM,(30+1))
      EFL=numpy.reshape(EFL,(30+1))
      NG1=numpy.reshape(NG1,(30+1))
      EG1=numpy.reshape(EG1,(30+1))
      NG2=numpy.reshape(NG2,(30+1))
      EG2=numpy.reshape(EG2,(30+1))
      IZBR=numpy.reshape(IZBR,(250+1))
      LEGAS=numpy.reshape(LEGAS,(30+1))
      ISHELL=numpy.reshape(ISHELL,(30+1))
      Q=numpy.zeros((6+1,20000+1))
      QIN=numpy.reshape(QIN,(250+1,20000+1))
      E=numpy.reshape(E,(6+1))
      EIN=numpy.reshape(EIN,(250+1))
      PENFRA=numpy.reshape(PENFRA,(3+1,250+1))
      XEN=numpy.zeros((117+1))
      YSEC=numpy.zeros((117+1))
      YEL=numpy.zeros((117+1))
      XEPS=numpy.zeros((217+1))
      YEPS=numpy.zeros((217+1))
      XENI=numpy.zeros((75+1))
      YENI=numpy.zeros((75+1))
      YENC=numpy.zeros((75+1))
      YEN1=numpy.zeros((75+1))
      XEN2=numpy.zeros((47+1))
      YEN2=numpy.zeros((47+1))
      XEN3=numpy.zeros((36+1))
      YEN3=numpy.zeros((36+1))
      XKSH=numpy.zeros((89+1))
      YKSH=numpy.zeros((89+1))
      XL1S=numpy.zeros((101+1))
      YL1S=numpy.zeros((101+1))
      XL2S=numpy.zeros((104+1))
      YL2S=numpy.zeros((104+1))
      XL3S=numpy.zeros((104+1))
      YL3S=numpy.zeros((104+1))
      X1S5=numpy.zeros((71+1))
      Y1S5=numpy.zeros((71+1))
      YEPS1=numpy.zeros((71+1))
      X1S4=numpy.zeros((79+1))
      Y1S4=numpy.zeros((79+1))
      YEPS2=numpy.zeros((79+1))
      X1S3=numpy.zeros((70+1))
      Y1S3=numpy.zeros((70+1))
      YEPS3=numpy.zeros((70+1))
      X1S2=numpy.zeros((70+1))
      Y1S2=numpy.zeros((70+1))
      YEPS4=numpy.zeros((70+1))
      X2P10=numpy.zeros((54+1))
      Y2P10=numpy.zeros((54+1))
      YEP2P10=numpy.zeros((54+1))
      X2P9=numpy.zeros((17+1))
      Y2P9=numpy.zeros((17+1))
      YEP2P9=numpy.zeros((17+1))
      X2P8=numpy.zeros((15))
      Y2P8=numpy.zeros((15))
      YEP2P8=numpy.zeros((15))
      X2P7=numpy.zeros((17+1))
      Y2P7=numpy.zeros((17+1))
      YEP2P7=numpy.zeros((17+1))
      X2P6=numpy.zeros((16+1))
      Y2P6=numpy.zeros((16+1))
      YEP2P6=numpy.zeros((16+1))
      X2P5=numpy.zeros((17+1))
      Y2P5=numpy.zeros((17+1))
      YEP2P5=numpy.zeros((17+1))
      X2P4=numpy.zeros((17+1))
      Y2P4=numpy.zeros((17+1))
      YEP2P4=numpy.zeros((17+1))
      X2P3=numpy.zeros((17+1))
      Y2P3=numpy.zeros((17+1))
      YEP2P3=numpy.zeros((17+1))
      X2P2=numpy.zeros((16+1))
      Y2P2=numpy.zeros((16+1))
      YEP2P2=numpy.zeros((16+1))
      X2P1=numpy.zeros((17+1))
      Y2P1=numpy.zeros((17+1))
      YEP2P1=numpy.zeros((17+1))
      X3D6=numpy.zeros((19+1))
      Y3D6=numpy.zeros((19+1))
      YEP3D6=numpy.zeros((19+1))
      X3D5=numpy.zeros((26+1))
      Y3D5=numpy.zeros((26+1))
      YEP3D5=numpy.zeros((26+1))
      X3D4P=numpy.zeros((20+1))
      Y3D4P=numpy.zeros((20+1))
      YEP3D4P=numpy.zeros((20+1))
      X3D4=numpy.zeros((23+1))
      Y3D4=numpy.zeros((23+1))
      YEP3D4=numpy.zeros((23+1))
      X3D3=numpy.zeros((20+1))
      Y3D3=numpy.zeros((20+1))
      YEP3D3=numpy.zeros((20+1))
      X3D1PP=numpy.zeros((19+1))
      Y3D1PP=numpy.zeros((19+1))
      YEP3D1PP=numpy.zeros((19+1))
      X3D1P=numpy.zeros((16+1))
      Y3D1P=numpy.zeros((16+1))
      YEP3D1P=numpy.zeros((16+1))
      X3S1PPPP=numpy.zeros((21+1))
      Y3S1PPPP=numpy.zeros((21+1))
      YEP3S1PPPP=numpy.zeros((21+1))
      X3S1PPP=numpy.zeros((16+1))
      Y3S1PPP=numpy.zeros((16+1))
      YEP3S1PPP=numpy.zeros((16+1))
      X3S1PP=numpy.zeros((21+1))
      Y3S1PP=numpy.zeros((21+1))
      YEP3S1PP=numpy.zeros((21+1))
      X2S5=numpy.zeros((19+1))
      Y2S5=numpy.zeros((19+1))
      YEP2S5=numpy.zeros((19+1))
      X2S3=numpy.zeros((19+1))
      Y2S3=numpy.zeros((19+1))
      YEP2S3=numpy.zeros((19+1))
      IOFFN=numpy.zeros((44+1))
      IOFFION=numpy.zeros((30+1))
      Z18T=numpy.zeros((25+1))
      EBRM=numpy.zeros((25+1))
      # CHARACTER*50 
      SCRPT=numpy.chararray((300+1),itemsize=50+1)
      SCRPTN=numpy.chararray((10+1),itemsize=50+1)
      # CHARACTER*25 
      NAME=numpy.zeros((25+1),dtype=str)
      #  ENERGY                                       
      XEN=[0]+[1.00,1.20,1.50,1.70,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,350.,400.,500.,600.,700.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,10000.,15000.,20000.,40000.,60000.,80000.,1.E5,1.25E5,1.5E5,1.75E5,2.E5,2.5E5,3.E5,3.5E5,4.E5,4.5E5,5.0E5,6.0E5,7.0E5,8.0E5,9.0E5,1.0E6,1.25E6,1.5E6,1.75E6,2.0E6,2.5E6,3.0E6,3.5E6,4.0E6,4.5E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.25E7,1.5E7,1.75E7,2.0E7,2.5E7,3.0E7,3.5E7,4.0E7,4.5E7,5.0E7,6.0E7,7.0E7,8.0E7,9.0E7,1.0E8,1.25E8,1.5E8,1.75E8,2.0E8,2.5E8,3.0E8,3.5E8,4.0E8,4.5E8,5.0E8,6.0E8,7.0E8,8.0E8,9.0E8,1.0E9]
      # ELASTIC MOMENTUM TRANSFER
      YSEC=[0]+[1.3913,1.66,2.05,2.33,2.70,3.43,4.20,5.70,7.60,9.60,11.5,13.1,14.7,16.2,16.8,16.6,15.9,15.1,14.2,13.3,11.5,10.0,7.75,6.25,4.45,3.50,2.80,2.25,2.00,1.70,1.50,1.22,1.00,0.78,0.64,0.55,0.48,0.43,.355,0.30,0.26,0.22,0.16,.095,.063,.033,.021,.0146,.0108,.00708,.00484,.00240,.00145,4.3E-4,2.1E-4,1.26E-4,8.64E-5,5.91E-5,4.35E-5,3.36E-5,2.70E-5,1.88E-5,1.41E-5,1.10E-5,8.94E-6,7.45E-6,6.34E-6,4.80E-6,3.80E-6,3.10E-6,2.59E-6,2.21E-6,1.56E-6,1.18E-6,9.32E-7,7.56E-7,5.30E-7,3.95E-7,3.07E-7,2.46E-7,2.02E-7,1.69E-7,1.24E-7,9.49E-8,7.52E-8,6.12E-8,5.08E-8,3.41E-8,2.46E-8,1.86E-8,1.46E-8,9.65E-9,6.88E-9,5.16E-9,4.01E-9,3.21E-9,2.62E-9,1.85E-9,1.37E-9,1.06E-9,8.37E-10,6.80E-10,4.37E-10,3.04E-10,2.23E-10,1.71E-10,1.10E-10,7.61E-11,5.59E-11,4.28E-11,3.38E-11,2.74E-11,1.90E-11,1.40E-11,1.07E-11,8.45E-12,6.84E-12]
      # ELASTIC           
      YEL=[0]+[1.4945,1.80,2.25,2.63,3.20,4.15,5.10,7.05,8.90,11.1,13.4,15.8,18.1,20.3,21.9,23.0,23.4,23.5,23.2,22.2,19.4,17.0,13.3,11.0,8.44,7.16,6.28,5.78,5.25,4.89,4.50,3.95,3.51,3.03,2.70,2.48,2.30,2.10,1.90,1.72,1.58,1.47,1.27,0.98,.818,.620,.510,.434,.380,.313,.250,.180,.138,.076,.056,.045,.0378,.0322,.0284,.0257,.0237,.0209,.0190,.0177,.0168,.0160,.0155,.0146,.0140,.0136,.0132,.0130,.0126,.0123,.0121,.0120,.0119,.0118,.0117,.0117,.0116,.0116,.0116,.0116,.0116,.0116,.0115,.0115,.0115,.0115,*27*[.0115]]
      # EPSILON FOR ELASTIC ANGULAR EISTRIBUTION
      XEPS=[0]+[.0,.0001,.0002,.0003,.0004,.0006,.0008,.001,.0012,.0014,.0017,.002,.0025,.003,.004,.005,.006,.008,.010,.012,.014,.017,.020,.025,.030,.035,.040,.045,.050,.055,.060,.065,.070,.075,.080,.085,.090,.095,.100,.110,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.20,0.21,0.22,0.23,0.24,0.25,0.26,0.27,0.28,0.29,0.30,0.31,0.32,0.33,0.34,0.35,0.36,0.37,0.38,0.39,0.40,0.41,0.42,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.50,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.60,0.61,0.62,0.63,0.65,0.67,0.70,0.75,0.80,0.85,0.90,0.95,1.00,1.20,1.50,1.70,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,350.,400.,500.,600.,700.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,10000.,15000.,20000.,40000.,60000.,80000.,1.E5,1.25E5,1.5E5,1.75E5,2.0E5,2.5E5,3.0E5,3.5E5,4.0E5,4.5E5,5.0E5,6.0E5,7.0E5,8.0E5,9.0E5,1.0E6,1.25E6,1.5E6,1.75E6,2.0E6,2.5E6,3.0E6,3.5E6,4.0E6,4.5E6,5.0E6,6.0E6,7.0E6,8.0E6,9.0E6,1.0E7,1.25E7,1.5E7,1.75E7,2.0E7,2.5E7,3.0E7,3.5E7,4.0E7,4.5E7,5.0E7,6.0E7,7.0E7,8.0E7,9.0E7,1.0E8,1.25E8,1.5E8,1.75E8,2.0E8,2.5E8,3.0E8,3.5E8,4.0E8,4.5E8,5.0E8,6.0E8,7.0E8,8.0E8,9.0E8,1.0E9]
      # EPSILON =1-YEPS
      YEPS=[0]+[1.0,.987,.9814,.977,.9734,.9673,.9619,.9572,.9530,.9492,.9433,.9384,.9304,.9234,.9103,.8988,.8879,.8681,.8501,.8332,.8173,.7947,.7727,.7395,.7071,.6770,.6469,.6187,.5909,.5642,.5379,.5119,.4866,.4623,.4384,.4154,.3932,.3716,.3505,.3108,.2745,.2414,.2118,.1859,.1637,.1452,.1304,.1195,.1123,.1089,.1093,.1140,.1231,.1369,.1559,.1802,.2104,.2465,.2882,.3353,     .3872,.4434,.5019,.5620,.6222,.6818,.7400,.7957,.8477,.8970,.9414,.982,1.019,1.0521,1.0812,1.107,1.1293,1.1487,1.1654,1.1796,1.191,1.2014,1.208,1.2137,1.2179,1.2205,1.222,1.222,1.2213,1.2194,1.2165,1.213,1.2035,1.192,1.171,1.1296,1.0836,1.0358,.9876,.9411,.8966,.8836,.8671,.8299,.7682,.7432,.7390,.7174,.7830,.7989,.7892,.7470,.7226,.7025,.6590,.5967,.5406,.4932,.4554,.4396,.4320,.4266,.4200,.4030,.3564,.3152,.3716,.2186,.2113,.1829,.1713,.1522,.1344,.1152,.1018,.0922,.0843,.0820,.0717,.0649, .0597,.0522,.0409,.0286,.0210,.0129,.0093,.0072,.0058,.0044,.0035,.0023,.00173,8.3E-4,5.1E-4,3.73E-4,2.919E-4,2.274E-4,1.847E-4,1.546E-4,1.322E-4,1.012E-4,8.095E-5,6.673E-5,5.621E-5,4.823E-5,4.197E-5,3.279E-5,2.647E-5,2.191E-5,1.848E-5,1.582E-5,1.123E-5,8.449E-6,7.602E-6,5.315E-6,3.660E-6,2.682E-6,2.050E-6,1.617E-6,1.310E-6,1.083E-6,7.762E-7,5.840E-7,4.551E-7,3.648E-7,2.990E-7,2.254E-7,1.376E-7,1.021E-7,7.88E-8,5.08E-8,3.55E-8,2.61E-8,2.00E-8,1.58E-8,1.28E-8,8.79E-9,6.41E-9,4.86E-9,3.81E-9,3.06E-9,1.92E-9,1.31E-9,9.50E-10,7.2E-10,4.5E-10,3.1E-10,2.2E-10,1.7E-10,1.31E-10,1.05E-10,7.2E-11,5.2E-11,3.9E-11,3.1E-11,2.5E-11]
      # IONISATION ( VALUES ABOVE 20KEV GENERATEE BY BORN BETHE IN SUB)
      XENI=[0]+[15.75961,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,250.,                300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,               1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,8000.,10000.,14000.,20000.]  
      # GROSS IONISATION      
      YENI=[0]+[0.00,.031,.094,.163,.235,.310,.386,.465,.546,.627,.713,.787,.858,.933,.994,1.06,1.12,1.18,1.24,1.30,1.35,1.41,1.60,1.80,1.96,2.11,2.24,2.33,2.39,2.49,                2.53,2.60,2.66,2.73,2.77,2.82,2.84,2.85,2.86,2.86,          2.85,2.83,2.81,2.76,2.73,2.68,2.62,2.52,2.39,2.17,                1.97,1.80,1.67,1.54,1.44,1.28,1.15,1.04,.971,.898,                .768,.688,.638,.576,.526,.446,.384,.340,.302,.255,.220,.172,.144,.110,.0825]
      # COUNTING IONISATION
      YENC=[0]+[0.00,.031,.094,.163,.235,.310,.386,.465,.546,.627,.713,.787,.858,.933,.994,1.06,1.12,1.18,1.24,1.30,1.35,1.41,1.60,1.80,1.96,2.11,2.24,2.33,2.39,2.49,2.52,2.56,2.58,2.62,2.63,2.67,2.68,2.68,2.69,2.69,2.68,2.66,2.64,2.59,2.56,2.52,2.46,2.37,2.24,2.04,1.85,1.69,1.57,1.45,1.35,1.21,1.08,.981,.912,.843,.721,.646,.599,.540,.494,.419,.361,.319,.283,.239,.206,.162,.136,.104,.0775] 
      # IONISATION FOR CHARGE STATE = 1
      YEN1=[0]+[0.00,.031,.094,.163,.235,.310,.386,.465,.546,.627,.713,.787,.858,.933,.994,1.06,1.12,1.18,1.24,1.30,1.35,1.41,1.60,1.80,1.96,2.11,2.24,2.33,2.39,2.49,2.51,2.52,2.50,2.50,2.50,2.52,2.52,2.52,2.52,2.50,2.49,2.47,2.45,2.41,2.38,2.33,2.29,2.20,2.10,1.91,1.74,1.59,1.48,1.37,1.28,1.14,1.02,.925,.863,.798,.682,.612,.567,.511,.468,.397,.342,.302,.268,.226,.195,.153,.129,.0984,.0734]
      # IONISATION FOR CHARGE STATE = 2
      XEN2=[0]+[43.38928,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,8000.,10000.,14000.,20000.]  
      YEN2=[0]+[0.00,.00045,.012,.0391,.0803,.114,.136,.148,.159,.165,.172,.175,.179,.180,.180,.176,.172,.167,.161,.153,.138,.121,.106,.093,.085,.076,.0667,.0568,.0518,.0453,.0418,.0375,.0321,.0287,.0266,.0240,.0234,.0186,.0161,.0142,.0126,.0106,.00916,.00681,.00574,.00438,.00326]
      # IONISATION FOR CHARGE STATE =3
      XEN3=[0]+[84.124,100.,110.,120.,130.,140.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,8000.,10000.,14000.,20000.]  
      YEN3=[0]+[0.0,.000972,.00209,.00311,.00400,.00481,.00520,.00541,.00552,.00532,.00504,.00489,.00607,.00673,.00751,.00823,.00903,.00890,.00887,.00825,.00832,.00711,.00636,.00590,.00532,.00486,.00413,.00355,.00314,.00278,.00236,.00203,.00160,.00134,.001024,.000764]
      # K-SHELL IONISATION
      XKSH=[0]+[3205.9,3283.,3378.,3475.,3576.,3680.,3786.,3896.,4009.,4125.,4368.,4625.,4898.,5186.,5492.,5816.,6159.,6522.,6907.,7314.,7971.,8688.,9468.,1.03E4,1.09E4,1.19E4,1.30E4,1.42E4,1.54E4,1.68E4,1.89E4,2.12E4,2.37E4,2.66E4,2.99E4,3.45E4,3.98E4,4.60E4,5.31E4,6.13E4,7.29E4,8.66E4,1.00E5,1.19E5,1.41E5,1.68E5,2.00E5,2.37E5,2.82E5,3.35E5,4.10E5,5.01E5,6.13E5,7.50E5,8.91E5,1.00E6,1.22E6,1.50E6,1.83E6,2.30E6,2.90E6,3.65E6,4.60E6,5.79E6,7.50E6,8.66E6,1.00E7,1.22E7,1.50E7,1.83E7,2.24E7,2.74E7,3.55E7,4.60E7,5.79E7,7.50E7,8.66E7,1.00E8,1.22E8,1.50E8,1.83E8,2.24E8,2.74E8,3.55E8,4.60E7,5.79E8,7.50E8,8.66E8,1.00E9]
      YKSH=[0]+[0.0,1.59E-6,3.44E-6,5.20E-6,6.89E-6,8.51E-6,1.01E-5,1.15E-5,1.29E-5,1.43E-5,1.68E-5,1.91E-5,2.11E-5,2.30E-5,2.46E-5,2.61E-5,2.74E-5,2.85E-5,2.95E-5,3.04E-5,3.14E-5,3.21E-5,3.25E-5,3.27E-5,3.27E-5,3.26E-5,3.23E-5,3.18E-5,3.12E-5,3.04E-5,2.93E-5,2.81E-5,2.68E-5,2.54E-5,2.40E-5,2.23E-5,2.07E-5,1.92E-5,1.77E-5,1.63E-5,1.48E-5,1.39E-5,1.24E-5,1.13E-5,1.04E-5,9.53E-6,8.82E-6,8.22E-6,7.72E-6,7.32E-6,6.94E-6,6.67E-6,6.48E-6,6.37E-6,6.33E-6,6.33E-6,6.36E-6,6.45E-6,6.57E-6,6.75E-6,6.97E-6,7.21E-6,7.47E-6,7.75E-6,8.08E-6,8.27E-6,8.46E-6,8.73E-6,9.01E-6,9.28E-6,9.56E-6,9.85E-6,1.02E-5,1.06E-5,1.09E-5,1.13E-5,1.15E-5,1.17E-5,1.20E-5,1.23E-5,1.25E-5,1.28E-5,1.31E-5,1.35E-5,1.39E-5,1.42E-5,1.46E-5,1.48E-5,1.50E-5]
      # L1 SHELL IONISATION
      XL1S=[0]+[326.3,329.0,338.3,347.8,357.5,367.6,378.0,388.6,399.6,410.9,422.5,447.,473.,500.,529.,559.,592.,626.,662.,701.,742.,807.,879.,957.,1013.,1103.,1203.,1313.,1423.,1553.,1693.,1893.,2123.,2383.,2673.,3003.,3463.,3993.,4613.,5323.,6143.,7303.,8673.,1.00E4,1.19E4,1.41E4,1.68E4,2.00E4,2.37E4,2.82E4,3.35E4,4.10E4,5.01E4,6.13E4,7.50E4,8.91E4,1.00E5,1.22E5,1.50E5,1.83E5,2.30E5,2.90E5,3.65E5,4.60E5,5.79E5,7.50E5,8.66E5,1.00E6,1.22E6,1.50E6,1.83E6,2.30E6,2.90E6,3.65E6,4.60E6,5.79E6,7.50E6,8.66E6,1.00E7,1.22E7,1.50E7,1.83E7,2.30E7,2.90E7,3.65E7,4.60E7,5.79E7,7.50E7,8.66E7,1.00E8,1.22E8,1.50E8,1.83E8,2.30E8,2.90E8,3.65E8,4.60E8,5.79E8,7.50E8,8.66E8,1.00E9]
      YL1S=[0]+[0.0,5.83E-5,2.39E-4,4.07E-4,5.63E-4,7.08E-4,8.43E-4,9.71E-4,1.09E-3,1.20E-3,1.31E-3,1.50E-3,1.68E-3,1.84E-3,1.98E-3,2.11E-3,2.22E-3,2.32E-3,2.41E-3,2.49E-3,2.55E-3,2.63E-3,2.68E-3,2.72E-3,2.73E-3,2.72E-3,2.71E-3,2.67E-3,2.62E-3,2.56E-3,2.49E-3,2.38E-3,2.27E-3,2.14E-3,2.02E-3,1.89E-3,1.74E-3,1.59E-3,1.44E-3,1.31E-3,1.19E-3,1.05E-3,9.22E-4,8.28E-4,7.26E-4,6.36E-4,5.57E-4,4.87E-4,4.26E-4,3.72E-4,3.26E-4,2.79E-4,2.40E-4,2.07E-4,1.79E-4,1.59E-4,1.48E-4,1.30E-4,1.15E-4,1.03E-4,9.19E-5,8.32E-5,7.66E-5,7.16E-5,6.81E-5,6.55E-5,6.45E-5,6.40E-5,6.36E-5,6.38E-5,6.44E-5,6.54E-5,6.67E-5,6.84E-5,7.02E-5,7.22E-5,7.45E-5,7.59E-5,7.72E-5,7.92E-5,8.12E-5,8.32E-5,8.55E-5,8.79E-5,9.03E-5,9.26E-5,9.50E-5,9.77E-5,9.92E-5,1.01E-4,1.03E-4,1.05E-4,1.07E-4,1.09E-4,1.12E-4,1.14E-4,1.17E-4,1.19E-4,1.22E-4,1.23E-4,1.25E-4]
      # L2 SHELL IONISATION
      XL2S=[0]+[250.6,252.3,260.3,267.3,275.3,283.3,291.3,300.3,308.3,317.3,326.3,346.3,366.3,388.3,411.3,435.3,461.3,488.3,517.3,547.3,580.3,614.3,650.3,689.3,751.3,819.3,892.3,1001.,1121.,1261.,1411.,1581.,1781.,1941.,2181.,2441.,2741.,3071.,3451.,3871.,4471.,5161.,5961.,6881.,7941.,8911.,1.00E4,1.19E4,1.41E4,1.68E4,2.05E4,2.44E4,2.90E4,3.45E4,4.10E4,4.87E4,5.79E4,6.88E4,8.18E4,1.00E5,1.22E5,1.50E5,1.83E5,2.24E5,2.74E5,3.35E5,4.10E5,5.01E5,6.13E5,7.50E5,1.00E6,1.22E6,1.50E6,1.83E6,2.30E6,2.90E6,3.65E6,4.60E6,5.79E6,7.50E6,8.66E6,1.00E7,1.22E7,1.50E7,1.83E7,2.30E7,2.90E7,3.65E7,4.60E7,5.79E7,7.50E7,8.66E7,1.00E8,1.22E8,1.50E8,1.83E8,2.30E8,2.90E8,3.65E8,4.60E8,5.79E8,7.50E8,8.66E8,1.00E9]
      YL2S=[0]+[0.00,9.77E-5,4.86E-4,8.50E-4,1.19E-3,1.51E-3,1.81E-3,2.10E-3,2.36E-3,2.62E-3, 2.85E-3,3.29E-3,3.67E-3,4.01E-3,4.32E-3,4.59E-3,4.83E-3,5.04E-3,5.22E-3,5.38E-3,5.52E-3,5.63E-3,5.72E-3,5.79E-3,5.86E-3,5.89E-3,5.88E-3,5.82E-3,5.70E-3,5.55E-3,5.36E-3,5.14E-3,4.90E-3,4.72E-3,4.46E-3,4.21E-3,3.95E-3,3.70E-3,3.47E-3,3.24E-3,2.96E-3,2.70E-3,2.46E-3,2.23E-3,2.01E-3,1.86E-3,1.71E-3,1.51E-3,1.33E-3,1.17E-3,1.01E-3,8.83E-4,7.77E-4,6.83E-4,6.02E-4,5.31E-4,4.69E-4,4.16E-4,3.70E-4,3.25E-4,2.87E-4,2.56E-4,2.30E-4,2.09E-4,1.92E-4,1.78E-4,1.68E-4,1.60E-4,1.54E-4,1.50E-4,1.48E-4,1.48E-4,1.49E-4,1.51E-4,1.54E-4,1.58E-4,1.63E-4,1.68E-4,1.73E-4,1.80E-4,1.83E-4,1.87E-4,1.93E-4,1.98E-4,2.04E-4,2.10E-4,2.16E-4,2.23E-4,2.29E-4,2.36E-4,2.43E-4,2.47E-4,2.52E-4,2.57E-4,2.63E-4,2.69E-4,2.75E-4,2.82E-4,2.89E-4,2.95E-4,3.02E-4,3.09E-4,3.13E-4,3.17E-4]
      # L3 SHELL IONISATION
      XL3S=[0]+[248.4,252.5,260.5,267.5,275.5,283.5,291.5,300.5,308.5,317.5,326.5,346.5,366.5,388.5,411.5,435.5,461.5,488.5,517.5,547.5,580.5,614.5,650.5,689.5,751.5,819.5,892.5,1001.,1121.,1261.,1411.,1581.,1781.,1941.,2181.,2441.,2741.,3071.,3451.,3871.,4471.,5161.,5961.,6881.,7941.,8911.,1.00E4,1.19E4,1.41E4,1.68E4,2.05E4,2.44E4,2.90E4,3.45E4,4.10E4,4.87E4,5.79E4,6.88E4,8.18E4,1.00E5,1.22E5,1.50E5,1.83E5,2.24E5,2.74E5,3.35E5,4.10E5,5.01E5,6.13E5,7.50E5,1.00E6,1.22E6,1.50E6,1.83E6,2.30E6,2.90E6,3.65E6,4.60E6,5.79E6,7.50E6,8.66E6,1.00E7,1.22E7,1.50E7,1.83E7,2.30E7,2.90E7,3.65E7,4.60E7,5.79E7,7.50E7,8.66E7,1.00E8,1.22E8,1.50E8,1.83E8,2.30E8,2.90E8,3.65E8,4.60E8,5.79E8,7.50E8,8.66E8,1.00E9]
      YL3S=[0]+[0.0,4.71E-4,1.25E-3,1.98E-3,2.67E-3,3.31E-3,3.92E-3,4.48E-3,5.02E-3,5.52E-3,6.00E-3,6.86E-3,7.63E-3,8.32E-3,8.93E-3,9.47E-3,9.95E-3,1.04E-2,1.07E-2,1.10E-2,1.13E-2,1.15E-2,1.17E-2,1.18E-2,1.20E-2,1.20E-2,1.20E-2,1.19E-2,1.16E-2,1.13E-2,1.09E-2,1.05E-2,9.97E-3,9.59E-3,9.07E-3,8.55E-3,8.03E-3,7.53E-3,7.04E-3,6.58E-3,6.02E-3,5.49E-3,4.99E-3,4.52E-3,4.09E-3,3.77E-3,3.47E-3,3.06E-3,2.69E-3,2.37E-3,2.04E-3,1.79E-3,1.58E-3,1.39E-3,1.22E-3,1.08E-3,9.52E-4,8.44E-4,7.51E-4,6.59E-4,5.82E-4,5.19E-4,4.66E-4,4.23E-4,3.89E-4,3.61E-4,3.40E-4,3.24E-4,3.12E-4,3.05E-4,3.00E-4,3.00E-4,3.02E-4,3.06E-4,3.12E-4,3.20E-4,3.30E-4,3.40E-4,3.51E-4,3.64E-4,3.72E-4,3.79E-4,3.90E-4,4.01E-4,4.13E-4,4.25E-4,4.39E-4,4.52E-4,4.65E-4,4.78E-4,4.93E-4,5.01E-4,5.10E-4,5.21E-4,5.33E-4,5.45E-4,5.58E-4,5.71E-4,5.85E-4,5.98E-4,6.11E-4,6.26E-4,6.35E-4,6.43E-4]
      # 1S5 METASTABLE SCALE BY 1]E**3 ABOVE 100 EV 
      X1S5=[0]+[11.548,11.60,11.63,11.64,11.66,11.70,11.75,11.80,11.82,11.83,11.84,11.86,11.88,11.90,11.93,12.00,12.10,12.20,12.30,12.40,12.50,12.60,12.70,12.80,12.83,12.86,12.90,12.91,12.93,12.96,13.00,13.03,13.05,13.08,13.10,13.12,13.15,13.18,13.20,13.26,13.28,13.29,13.35,13.40,13.45,13.47,13.50,13.60,13.70,13.80,14.0,14.5,15.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]                                               
      # UNITS 10-18 CM**2
      Y1S5=[0]+[0.00,0.70,1.22,1.22,1.01,0.88,0.83,0.90,1.13,1.69,2.27,1.64,1.13,1.04,0.99,1.10,1.31,1.64,2.05,2.47,2.86,3.20,3.40,3.40,3.33,3.19,2.77,3.28,2.56,2.27,2.27,3.89,5.20,3.89,2.72,2.14,1.75,1.96,1.69,1.53,2.03,1.76,1.94,2.09,2.18,2.52,2.36,2.56,2.80,3.10,3.85,4.40,4.94,5.58,6.16,6.44,6.20,4.90,3.80,3.20,2.50,2.00,1.15,0.80,0.52,0.37,0.24,.135,.088,.060,.042]                                                           
      YEPS1=[0]+[*71*[0.0]]
      # 1S4 RESONANCE RADIATION 106.66 NM WAVELENGTH
      # USE BEF SCALING ABOVE 1000EV  F=0.058
      X1S4=[0]+[11.624,11.65,11.66,11.67,11.68,11.69,11.70,11.74,11.75,11.77,11.79,11.82,11.84,11.87,11.88,11.90,11.95,12.00,12.05,12.10,12.20,12.30,12.40,12.50,12.60,12.70,12.80,12.85,12.90,12.905,12.91,12.93,12.97,13.00,13.03,13.05,13.06,13.07,13.09,13.10,13.15,13.18,13.20,13.21,13.23,13.26,13.30,13.35,13.40,13.45,13.47,13.49,13.60,13.70,13.80,14.0,15.0,16.0,17.0,18.0,19.0,20.0,24.0,27.0,30.0,40.0,50.0,60.0,80.0,100.,140.,200.,250.,300.,400.,500.,600.,800.,1000.]       
      # UNITS 10**-18 CM**2
      Y1S4=[0]+[0.00,0.90,1.48,1.57,1.57,1.55,1.48,1.10,1.05,1.14,1.22,1.30,1.42,0.90,0.81,.742,.761,.788,0.86,0.92,1.12,1.55,1.64,1.91,2.16,2.32,2.38,2.34,2.12,2.02,2.29,2.00,1.87,1.93,2.38,3.28,3.49,3.20,2.21,2.05,1.76,2.27,2.11,2.36,2.11,1.98,1.89,1.82,1.87,1.94,2.16,2.07,2.23,2.40,2.55,2.90,5.02,6.23,6.86,7.43,8.00,8.05,8.05,8.00,7.80,7.30,6.80,6.30,5.60,5.00,4.30,3.60,3.30,3.00,2.50,2.15,1.92,1.60,1.41]       
      YEPS2=[0]+[*79*[0.0]]
      # 1S3 METASTABLE SCALE BY 1]E**3 ABOVE 100 EV
      X1S3=[0]+[11.723,11.75,11.76,11.78,11.79,11.80,11.84,11.86,11.90,11.95,12.00,12.10,12.20,12.30,12.40,12.50,12.60,12.70,12.80,12.85,12.90,12.91,12.92,12.94,12.98,12.99,13.00,13.01,13.04,13.05,13.06,13.08,13.10,13.15,13.18,13.20,13.21,13.23,13.25,13.27,13.30,13.35,13.40,13.45,13.47,13.49,13.60,13.70,13.80,14.0,14.5,15.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]
      # UNITS 10**-18 CM**2
      Y1S3=[0]+[0.00,.176,0.38,0.45,0.45,0.43,0.23,0.23,.176,.155,.155,.171,.211,.259,.317,.389,.454,.509,.542,.535,.479,.373,.567,.486,.437,.639,.518,.461,.518,.752,.979,.873,.706,.535,.535,.826,1.12,.891,.720,.616,.461,.236,.243,.252,.445,.356,.405,.454,.486,0.56,0.80,0.99,1.12,1.23,1.29,1.24,0.98,0.76,0.64,0.50,0.40,0.23,0.16,.104,.074,.048,.027,.0176,.0120,.0084]
      YEPS3=[0]+[*70*[0.0]]
      # 1S2 RESONANCE RADIATION 104.82 NM WAVELENGTH
      # USE BEF SCALING ABOVE 400 EV F=0.2214
      X1S2=[0]+[11.828,11.85,11.86,11.88,11.90,11.93,11.96,12.00,12.05,12.10,12.20,12.30,12.40,12.50,12.60,12.70,12.80,12.85,12.90,12.91,12.93,12.95,13.00,13.02,13.06,13.10,13.13,13.15,13.17,13.20,13.21,13.23,13.25,13.27,13.30,13.35,13.40,13.45,13.46,13.48,13.50,13.60,13.70,13.80,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,24.0,26.0,28.0,30.0,35.0,40.0,50.0,60.0,80.0,100.,120.,140.,170.,200.,250.,300.,350.,400.]
      # UNITS 10**-18 CM**2
      Y1S2=[0]+[0.00,1.55,1.94,1.76,1.58,1.37,1.24,1.19,1.19,1.21,1.30,1.44,1.64,1.91,2.25,2.52,2.75,2.83,2.86,3.46,3.04,2.95,2.93,3.08,4.18,3.29,3.17,3.02,2.99,3.60,4.21,3.78,3.53,3.17,3.02,2.74,2.92,3.29,3.40,3.24,3.33,3.71,3.94,4.20,4.80,7.20,9.43,11.7,14.0,16.0,17.2,18.8,19.8,20.6,21.3,22.0,23.6,24.7,25.5,25.3,24.0,22.3,20.7,19.3,17.5,16.0,14.0,12.5,11.3,10.3]
      YEPS4=[0]+[*70*[0.0]]
      # 2P10 J=1  SCALED BY 1]E**2 ABOVE 100 EV
      X2P10=[0]+[12.907,12.912,12.922,12.934,12.949,12.966,13.00,13.012,13.035,13.042,13.053,13.064,13.068,13.075,13.089,13.107,13.141,13.154,13.162,13.170,13.180,13.190,13.202,13.214,13.220,13.234,13.239,13.265,13.271,13.276,13.300,13.400,13.445,13.458,13.467,13.480,13.50,13.60,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]                                
      Y2P10=[0]+[0.00,0.76,0.40,0.57,0.53,0.61,0.95,1.40,1.78,1.88,1.74,1.18,0.70,0.34,0.13,0.21,0.39,0.70,1.01,1.07,1.33,1.17,1.43,0.70,0.36,0.14,0.11,0.11,0.25,0.18,0.19,0.21,0.22,0.34,0.51,0.34,0.32,0.31,0.39,0.77,1.13,1.82,2.03,2.16,2.20,2.17,1.89,1.20,0.81,0.58,0.33,0.21,0.11,.065]                                  
      YEP2P10=[0]+[*54*[0.0]]
      # 2P9 J=3  SCALED BY 1]E**2 ABOVE 100 EV
      X2P9=[0]+[13.076,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P9=[0]+[0.00,0.55,1.23,1.90,2.75,2.94,3.00,2.98,2.92,2.55,1.73,1.19,0.85,0.50,0.32,0.17,0.11]               
      YEP2P9=[0]+[*17*[0.0]]
      # 2P8 J=2  SCALED BY 1]E ABOVE 100 EV
      X2P8=[0]+[13.095,14.0,15.0,16.0,18.0,20.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P8=[0]+[0.00,0.38,0.85,1.25,1.85,2.10,2.30,2.35,2.40,2.36,2.20,1.80,1.50,1.13,0.90]
      YEP2P8=[0]+[*15*[0.0]]
      # 2P7 J=1  SCALED BY 1]E**2 ABOVE 100 EV
      X2P7=[0]+[13.153,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P7=[0]+[0.00,0.20,0.56,0.92,1.56,1.74,1.81,1.81,1.76,1.60,1.25,1.00,0.84,0.61,0.44,0.27,0.19]
      YEP2P7=[0]+[*17*[0.0]]
      # 2P6 J=2  SCALED BY 1]E ABOVE 100 EV
      X2P6=[0]+[13.172,14.0,15.0,16.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P6=[0]+[0.00,0.36,0.81,1.24,1.84,2.04,2.10,2.20,2.18,1.95,1.80,1.65,1.42,1.27,1.04,0.87] 
      YEP2P6=[0]+[*16*[0.0]]
      # 2P5 J=0  SCALED BY 1]E ABOVE 100 EV
      X2P5=[0]+[13.273,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P5=[0]+[0.00,0.09,0.28,0.47,0.83,0.97,1.08,1.16,1.20,1.26,1.25,1.23,1.20,1.08,0.96,0.75,0.60]
      YEP2P5=[0]+[*17*[0.0]]
      # 2P4 J=1  SCALED BY 1]E**2 ABOVE 100 EV
      X2P4=[0]+[13.283,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P4=[0]+[0.00,0.18,0.55,0.90,1.53,1.71,1.77,1.77,1.72,1.57,1.23,0.98,0.82,0.60,0.43,0.26,0.18]
      YEP2P4=[0]+[*17*[0.0]]
      # 2P3 J=2  SCALED BY 1]E ABOVE 100 EV
      X2P3=[0]+[13.302,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P3=[0]+[0.00,.155,0.39,0.62,1.11,1.34,1.51,1.62,1.70,1.82,1.85,1.76,1.62,1.33,1.10,0.82,0.66]
      YEP2P3=[0]+[*17*[0.0]]
      # 2P2 J=1  SCALED BY 1]E**2 ABOVE 100 EV
      X2P2=[0]+[13.328,14.0,15.0,16.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P2=[0]+[0.00,0.20,0.46,0.60,0.74,0.77,.785,0.78,0.73,0.62,0.53,0.44,0.33,0.25,0.15,0.10] 
      YEP2P2=[0]+[*16*[0.0]]
      # 2P1 J=0  SCALED BY 1]E ABOVE 100 EV
      X2P1=[0]+[13.480,14.0,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P1=[0]+[0.00,0.29,0.94,1.58,2.75,3.22,3.60,3.85,4.00,4.20,4.15,4.10,4.00,3.60,3.20,2.50,2.00]
      YEP2P1=[0]+[*17*[0.0]]
      # 3D6 J=0 SCALED BY 1]E**3 ABOVE 100 EV
      X3D6=[0]+[13.845,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,100.]
      Y3D6=[0]+[0.00,0.11,0.64,0.92,1.05,1.10,1.10,1.07,0.97,0.79,0.56,0.39,0.28,0.21,0.16,.099,.065,.045,.024]
      YEP3D6=[0]+[*19*[0.0]]
      # 3D5 J=1 DIPOLE ALLOWED BEF SCALING USE BEF ABOVE 400EV F=0.0010
      X3D5=[0]+[13.864,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,100.,120.,140.,170.,200.,250.,300.,400.]
      #     Y3D5]0.00,0.40,3.00,4.50,5.25,5.50,5.50,5.35,4.90,4.00,
      #    =[0]+[2.80,2.05,1.50,1.15,0.98,0.65,0.46,0.35,0.19,0.14,
      #    =[0]+[.115,.095,.077,.065,.054,.037]
      Y3D5=[0]+[0.00,0.32,2.40,3.60,4.20,4.40,4.40,4.28,3.92,3.20,2.24,1.64,1.20,0.92,0.78,0.52,0.37,0.28,0.15,.112,.092,.076,.062,.052,.045,.037]
      YEP3D5=[0]+[*26*[0.0]]
      # 3D4' J=4 SCALED BY 1]E**3 ABOVE 100 EV
      X3D4P=[0]+[13.979,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,70.0,80.0,90.0,100.]
      Y3D4P=[0]+[0.00,2.16,3.31,3.88,4.11,4.14,4.04,3.68,3.03,2.12,1.50,1.09,.813,.619,.482,.381,.251,.173,.125,.092]
      YEP3D4P=[0]+[*20*[0.0]]
      # 3D4  J=3  SCALED BY 1]E**2 ABOVE 100 EV
      X3D4=[0]+[14.013,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,90.0,100.]                                   
      Y3D4=[0]+[0.00,0.63,1.05,1.31,1.48,1.57,1.62,1.63,1.62,1.52,1.28,1.06,0.88,0.73,0.62,0.53,0.46,0.40,0.35,0.31,0.28,.225,.186]                                      
      YEP3D4=[0]+[*23*[0.0]]
      # 3D3 J=2 SCALE BY 1]E**3 ABOVE 100 EV
      X3D3=[0]+[13.903,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]
      Y3D3=[0]+[0.00,0.15,1.60,3.00,3.70,4.30,4.50,4.40,4.20,3.60,2.63,1.86,1.35,1.00,0.76,0.47,0.31,0.21,0.15,.114]
      YEP3D3=[0]+[*20*[0.0]]
      # 3D1'' J=2 (ALSO 2S5 J=1 ) SCALE BY 1]E**2 ABOVE 100 EV
      X3D1PP=[0]+[14.063,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]     
      Y3D1PP=[0]+[0.00,0.60,1.10,1.50,1.70,1.80,1.85,1.85,1.65,1.35,1.00,0.73,0.57,0.45,0.32,0.23,0.18,.145,.120]      
      YEP3D1PP=[0]+[*19*[0.0]]
      # 3D1'  J=3 SCALE BY 1]E ABOVE 100 EV
      X3D1P=[0]+[14.099,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]                       
      Y3D1P=[0]+[0.00,0.08,0.18,0.33,0.40,0.45,0.48,0.50,0.54,0.55,0.52,0.48,0.40,0.33,0.24,0.20]                       
      YEP3D1P=[0]+[*16*[0.0]]
      # 3S1''''  J=2  SCALE BY 1]E**3 ABOVE 100 EV
      X3S1PPPP=[0]+[14.214,15.0,16.0,17.0,18.0,19.0,20.0,22.0,24.0,27.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,70.0,80.0,90.0,100.]                                                          
      Y3S1PPPP=[0]+[0.00,0.80,1.65,2.10,2.30,2.35,2.32,2.15,1.89,1.54,1.25,0.89,0.65,0.48,0.37,0.29,0.23,0.15,.103,.074,.055]                                                       
      YEP3S1PPPP=[*21*[0.0]]
      # 3S1'''  J=3  SCALE BY 1]E ABOVE 100 EV
      X3S1PPP=[0]+[14.236,15.0,16.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]                       
      Y3S1PPP=[0]+[0.00,0.12,0.27,0.50,0.60,0.68,0.72,0.75,0.81,0.82,0.78,0.72,0.60,0.52,0.36,0.30]                                  
      YEP3S1PPP=[0]+[*16*[0.0]]
      # 3S1''  J=2  SCALE BY 1]E**3 ABOVE 100 EV
      X3S1PP=[0]+[14.234,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,70.0,80.0,90.0,100.]                                                
      Y3S1PP=[0]+[0.00,0.55,1.06,1.31,1.42,1.44,1.42,1.37,1.31,1.09,0.77,0.55,0.40,0.30,0.23,0.18,0.14,.0918,.0635,.0456,.0339]                                                          
      YEP3S1PP=[0]+[*21*[0.0]]
      # 2S5  J=2  SCALE BY 1]E**2  ABOVE 100 EV
      X2S5=[0]+[14.068,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]      
      Y2S5=[0]+[0.00,0.60,1.10,1.50,1.70,1.80,1.85,1.85,1.65,1.35,1.00,0.73,0.57,0.45,0.32,0.23,0.18,.145,.120]      
      YEP2S5=[0]+[*19*[0.0]]
      # 2S3  J=0  SCALE BY 1]E**2  ABOVE 100 EV
      X2S3=[0]+[14.241,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.]       
      Y2S3=[0]+[0.00,0.12,0.22,0.30,0.34,0.36,0.37,0.37,0.33,0.27,0.20,.146,.114,.090,.064,.046,.036,.029,.024]     
      YEP2S3=[0]+[*19*[0.0]]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF
      # UNITS 10**-24 CM**2
      Z18T=[0]+[1518.,1035.,582.,355.,207.,99.5,58.9,37.1,24.7,21.9,21.9,22.3,22.6,22.9,23.1,23.4,23.7,24.0,24.2,24.4,24.6,24.7,24.7,24.8,24.9]
      EBRM=[0]+[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #----------------------------------------------------------------------
      #     NANISO=0
      if(NANISO == 0):
            NAME='ARGON ISOTROPIC      2014'       
      else:
            NAME='ARGON ANISOTROPIC    2014'
      # endif                                         
      # ----------------------------------------------------------------      
      #  MULTI-TERM CROSS-SECTION.                                            
      #  FOR PURE ARGON:                                                      
      #  ACCURACY OF DERIVED VELOCITY AND DIFFUSION COEFFICIENTS 0.5% BELOW   
      #  3000VOLTS . BELOW 20000VOLTS ACCURACY 1.0%. IONISATION COEFFICIENT   
      #  AND DRIFT VELOCITY ACCURACY BETTER THAN  5% BELOW 1,000,000 VOLTS
      #  ANISOTROPIC ELASTIC SCATTERING VERSION  
      #  2007:INCREASED BASE UPPER ENERGY TO 2MEV
      #  2007:INCLUDED NEW ANISTROPIC SCATTERING def
      #  2007:INCLUDED POSSIBLE PENNING TRANSFER FRACTION 
      #  2009:SPLIT EXCITATION X-SECTION INTO 44 LEVELS AND MODIFIED
      #       ELASTIC X-SECTION.  
      #  2011:INCREASED SCALING FACTOR FOR S LEVELS AT THRESHOLD FROM 
      #       0.5 TO 0.81 x (BARTSCHAT AND ZATSARINNY BSR MODEL)
      #       EXCITATION RATE STILL WITHIN 1 SIGMA OF TACHIBANAS MEASURED
      #       RATES FOR THE 1S LEVELS 
      #       AND SMALL INCREASE IN MOMENTUM TRANSFER X-SECTION AT THE
      #       PEAK( 11 EV) TO FIT DRIFT VELOCITY. 
      #  2013: INCLUDED K AND L SHELL IONISATIONS AND CHARGE STATES 1 2 AND 3    
      #  2014: UPDATE TO CORRECT THE BEF SCALING FORMULA 
      #-----------------------------------------------------------------------
      #        TOTAL OSCILLATOR SUM FOR EXCITED STATES F=0.860           
      #-----------------------------------------------------------------      
      #                                                                       
      #  PARAMETERS OF PHASE SHIFT ANALYSIS.                                  
      #                                                                       
      APOL=11.08                                                        
      LMAX=100                                                          
      AA=-1.459                                                         
      DD=68.93                                                          
      FF=-97.0                                                          
      A1=8.69       
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193 
      CONST=1.873884e-20
      EMASS2=1021997.804
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      CONST=1.873884e-20
      #
      AM2=3.593
      C=39.70  
      #
      PSCALE=0.90 
      #     
      #  AVERAGE AUGER EMISSIONS FROM EACH SHELL
      AUGL3=2.0
      AUGL2=1.0
      AUGL1=2.63
      AUGK=3.39
      #
      NION=7                
      NATT=1
      NIN=44
      NNULL=0 
      IONMODEL=0
      #
      NBREM=25
      for J in range(1,NIN+1):
            IZBR[J]=0
      # 6 CONTINUE
      IZBR[45]=18
      #
      for J in range(1,6+1):
            KEL[J]=NANISO
      for J in range(1,NIN+1):
            KIN[J]=NANISO
      #      
      NDATA=117
      NEPSI=217               
      NIDATA=75
      NION2=47
      NION3=36
      NKSH=89
      NL1S=101
      NL2S=104
      NL3S=104
      N1S5=71
      N1S4=79
      N1S3=70 
      N1S2=70
      N2P10=54
      N2P9=17 
      N2P8=15            
      N2P7=17            
      N2P6=16
      N2P5=17
      N2P4=17
      N2P3=17
      N2P2=16            
      N2P1=17
      N3D6=19
      N3D5=26
      N3D3=20
      N3D4P=20  
      N3D4=23   
      N3D1PP=19
      N2S5=19   
      N3D1P=16 
      N3S1PPPP=21 
      N3S1PP=21
      N3S1PPP=16
      N2S3=19
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(39.948*AMU)                                       
      E[3]=15.75961
      # EXCITATION X-SECTION AT 1.5MEV                                        
      E[4]=0.18E-18
      # IONISING X-SECTION AT 1.5MEV             
      E[5]=0.9204E-18   
      # OPAL BEATY FOR MINIMUM IONISING PARTICLE                              
      E[6]=15.0
      # OPAL BEATY AT LOW ENERGY
      EOBY[1]=9.5  
      EOBY[2]=18.0    
      EOBY[3]=34.0    
      # OPAL BEATY SPLITTING FOR SHELLS
      EOBY[4]=110.      
      EOBY[5]=110.0       
      EOBY[6]=150.0     
      EOBY[7]=1800.0        
      #
      EION[1]=15.75961
      EION[2]=43.38928
      EION[3]=84.124
      EION[4]=248.4
      EION[5]=250.6
      EION[6]=326.3
      EION[7]=3205.9
      LEGAS[1]=0
      LEGAS[2]=0
      LEGAS[3]=0
      LEGAS[4]=1
      LEGAS[5]=1
      LEGAS[6]=1
      LEGAS[7]=1
      ISHELL[1]=0
      ISHELL[2]=0
      ISHELL[3]=0
      ISHELL[4]=4
      ISHELL[5]=3
      ISHELL[6]=2
      ISHELL[7]=1
      # FLUORESCENCE AND AUGER DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1
      EC0[2]=6.0 
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      NC0[3]=2
      EC0[3]=12.0
      WKLM[3]=0.0
      EFL[3]=0.0
      NG1[3]=0
      EG1[3]=0.0
      NG2[3]=0
      NG2[3]=0.0
      NC0[4]=2
      EC0[4]=210.5
      WKLM[4]=0.00147
      EFL[4]=232.
      NG1[4]=1
      EG1[4]=210.5
      NG2[4]=1
      EG2[4]=5.0
      NC0[5]=2
      EC0[5]=202.2
      WKLM[5]=0.00147
      EFL[5]=235.
      NG1[5]=1
      EG1[5]=202.2
      NG2[5]=1
      EG2[5]=5.0
      NC0[6]=3
      EC0[6]=240.8
      WKLM[6]=0.00147
      EFL[6]=310.
      NG1[6]=2
      EG1[6]=240.8
      NG2[6]=1
      EG2[6]=5.0
      NC0[7]=4
      EC0[7]=3071.
      WKLM[7]=0.12
      EFL[7]=2957.
      NG1[7]=3
      EG1[7]=2850.
      NG2[7]=2
      EG2[7]=220.
      #
      for J in range(1,NION+1):
            for I in range(1,20000+1):
                  if(EG[I]> EION[J]):
                        IOFFION[J]=I-1
                        break
                  # endif
                  # 777 CONTINUE
      # 776 CONTINUE
      #
      EIN[1]=11.548
      EIN[2]=11.624
      EIN[3]=11.723
      EIN[4]=11.828
      EIN[5]=12.907
      EIN[6]=13.076
      EIN[7]=13.095
      EIN[8]=13.153
      EIN[9]=13.172
      EIN[10]=13.273
      EIN[11]=13.283
      EIN[12]=13.302
      EIN[13]=13.328
      EIN[14]=13.480
      EIN[15]=13.845
      EIN[16]=13.864
      EIN[17]=13.903
      EIN[18]=13.979
      EIN[19]=14.013
      EIN[20]=14.063
      EIN[21]=14.068
      EIN[22]=14.090
      EIN[23]=14.099
      EIN[24]=14.153
      EIN[25]=14.214
      EIN[26]=14.234
      EIN[27]=14.236
      EIN[28]=14.241
      EIN[29]=14.255
      EIN[30]=14.304
      EIN[31]=14.711
      EIN[32]=14.848
      EIN[33]=14.859
      EIN[34]=15.004
      EIN[35]=15.022
      EIN[36]=15.118
      EIN[37]=15.186
      EIN[38]=15.190
      EIN[39]=15.308
      EIN[40]=15.351
      EIN[41]=15.360
      EIN[42]=15.366
      EIN[43]=15.374
      EIN[44]=15.660
      EIN[45]=0.0
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # USE TRANSFER FRACTION IN RANGE BETWEEN 0.0 AND 0.2 FOR MOST MIXTURES
      for NL in range(1,NIN+1):
            PENFRA[1][NL]=0.2
            # PENNING TRANSFER DISTANCE MICRONS
            PENFRA[2][NL]=1.0
            # PENNING TRANSFER TIME PICOSECONDS
            PENFRA[3][NL]=1.0
      #**********************************************************************
      if(IPEN == 0):
            pass
      else:
            for KDUM in range(1,NIN+1):
                  if(PENFRA[1][KDUM] == 0.0):
                        continue
                  print(' GAS = %s ENERGY LEVEL = %.4f EV.\n PENNING PROBABILITY =%.3f ABS.LENGTH =%.2f DECAY TIME =%.1f\n'%(NAME,EIN[KDUM],PENFRA[1][KDUM],PENFRA[2][KDUM],PENFRA[3][KDUM]))
      # 4 
      for NL in range(1,NIN+1):
            for I in range(1,20000+1):
                  if(EG[I]> EIN[NL]):
                        IOFFN[NL]=I-1 
                        break
                  # endif
      #
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC ANISOTROPIC       ARGON                  '
      if(NANISO == 0):
            SCRPT[2]=' ELASTIC ISOTROPIC         ARGON                  '
      # endif
      SCRPT[3]=' IONISATION CHARGE STATE =1      ELOSS=   15.75961'
      SCRPT[4]=' IONISATION CHARGE STATE =2      ELOSS=   43.38928'
      SCRPT[5]=' IONISATION CHARGE STATE =3      ELOSS=   84.124  '
      SCRPT[6]=' IONISATION L3 SHELL             ELOSS=  248.4    '
      SCRPT[7]=' IONISATION L2 SHELL             ELOSS=  250.6    '
      SCRPT[8]=' IONISATION L1 SHELL             ELOSS=  326.3    '
      SCRPT[9]=' IONISATION K  SHELL             ELOSS= 3205.9    '
      SCRPT[10]=' ATTACHMENT                                       '
      SCRPT[11]='                                                  ' 
      SCRPT[12]='                                                  '
      SCRPT[13]=' EXC 1S5    J=2 METASTABLE         ELEVEL= 11.548 '
      SCRPT[14]=' EXC 1S4    J=1 RESONANT           ELEVEL= 11.624 '
      SCRPT[15]=' EXC 1S3    J=0 METASTABLE         ELEVEL= 11.723 '
      SCRPT[16]=' EXC 1S2    J=1 RESONANT           ELEVEL= 11.828 '
      SCRPT[17]=' EXC 2P10   J=1                    ELEVEL= 12.907 '
      SCRPT[18]=' EXC 2P9    J=3                    ELEVEL= 13.076 ' 
      SCRPT[19]=' EXC 2P8    J=2                    ELEVEL= 13.095 '
      SCRPT[20]=' EXC 2P7    J=1                    ELEVEL= 13.153 ' 
      SCRPT[21]=' EXC 2P6    J=2                    ELEVEL= 13.172 '
      SCRPT[22]=' EXC 2P5    J=0                    ELEVEL= 13.273 ' 
      SCRPT[23]=' EXC 2P4    J=1                    ELEVEL= 13.283 '
      SCRPT[24]=' EXC 2P3    J=2                    ELEVEL= 13.302 ' 
      SCRPT[25]=' EXC 2P2    J=1                    ELEVEL= 13.328 '
      SCRPT[26]=' EXC 2P1    J=0                    ELEVEL= 13.480 ' 
      SCRPT[27]=' EXC 3D6    J=0                    ELEVEL= 13.845 '
      SCRPT[28]=' EXC 3D5    J=1 RESONANT           ELEVEL= 13.864 ' 
      SCRPT[29]=' EXC 3D3    J=2                    ELEVEL= 13.903 ' 
      SCRPT[30]=' EXC 3D4#   J=4                    ELEVEL= 13.979 '
      SCRPT[31]=' EXC 3D4    J=3                    ELEVEL= 14.013 ' 
      SCRPT[32]=' EXC 3D1##  J=2                    ELEVEL= 14.063 '
      SCRPT[33]=' EXC 2S5    J=2                    ELEVEL= 14.068 '
      SCRPT[34]=' EXC 2S4    J=1 RESONANT           ELEVEL= 14.090 '
      SCRPT[35]=' EXC 3D1#   J=3                    ELEVEL= 14.099 '
      SCRPT[36]=' EXC 3D2    J=1 RESONANT           ELEVEL= 14.153 '
      SCRPT[37]=' EXC 3S1####J=2                    ELEVEL= 14.214 '
      SCRPT[38]=' EXC 3S1##  J=2                    ELEVEL= 14.234 '
      SCRPT[39]=' EXC 3S1### J=3                    ELEVEL= 14.236 '
      SCRPT[40]=' EXC 2S3    J=0                    ELEVEL= 14.241 '
      SCRPT[41]=' EXC 2S2    J=1 RESONANT           ELEVEL= 14.255 '
      SCRPT[42]=' EXC 3S1#   J=1 RESONANT           ELEVEL= 14.304 '
      SCRPT[43]=' EXC 4D5    J=1 RESONANT           ELEVEL= 14.711 '
      SCRPT[44]=' EXC 3S4    J=1 RESONANT           ELEVEL= 14.848 ' 
      SCRPT[45]=' EXC 4D2    J=1 RESONANT           ELEVEL= 14.859 '
      SCRPT[46]=' EXC 4S1#   J=1 RESONANT           ELEVEL= 15.004 '
      SCRPT[47]=' EXC 3S2    J=1 RESONANT           ELEVEL= 15.022 '
      SCRPT[48]=' EXC 5D5    J=1 RESONANT           ELEVEL= 15.118 '
      SCRPT[49]=' EXC 4S4    J=1 RESONANT           ELEVEL= 15.186 ' 
      SCRPT[50]=' EXC 5D2    J=1 RESONANT           ELEVEL= 15.190 '
      SCRPT[51]=' EXC 6D5    J=1 RESONANT           ELEVEL= 15.308 '
      SCRPT[52]=' EXC 5S1#   J=1 RESONANT           ELEVEL= 15.351 '
      SCRPT[53]=' EXC 4S2    J=1 RESONANT           ELEVEL= 15.360 '
      SCRPT[54]=' EXC 5S4    J=1 RESONANT           ELEVEL= 15.366 ' 
      SCRPT[55]=' EXC 6D2    J=1 RESONANT           ELEVEL= 15.374 '
      SCRPT[56]=' EXC HIGH   J=1 RESONANT           ELEVEL= 15.660 '
      SCRPT[57]=' BREMSSTRAHLUNG FROM ARGON ATOM                   '
      #
      #     EN=-ESTEP/2.0 
      def GOTO200():
            PQ1=0.5+(QELA-QMOM)/QELA
            flag202=1
            for J in range(2,NEPSI+1):
                  if(EN <= XEPS[J]):
                        flag202=0
                        break
            if(flag202):
                  J=NEPSI
            A=(YEPS[J]-YEPS[J-1])/(XEPS[J]-XEPS[J-1])
            B=(XEPS[J-1]*YEPS[J]-XEPS[J]*YEPS[J-1])/(XEPS[J-1]-XEPS[J])
            PQ2=A*EN+B
            # EPSILON =1-PQ2
            PQ2=1.00-PQ2
            if(NANISO == 0):
                  PEQEL[2][I]=0.5
            if(NANISO == 1):
                  PEQEL[2][I]=PQ1
            if(NANISO == 2):
                  PEQEL[2][I]=PQ2
            Q[2][I]=QELA
            if(NANISO == 0):
                  Q[2][I]=QMOM
            #   IONISATION FOR CHARGE =1                                               
            QION[1][I]=0.0
            PEQION[1][I]=0.50 
            if(NANISO == 2):
                  PEQION[1][I]=0.00                            
            if(EN <= EION[1]):
                  # GO TO 223  
                  pass
            else:
                  flag222=1
                  if(EN > XENI[NIDATA]):
                        pass
                  else:
                        flag220=1                           
                        for J in range(2,NI+1):
                              if(EN <= XENI[J]):
                                    flag220=0
                                    break                                       
                        if(flag220):
                              J=NI                                                         
                        A=(YEN1[J]-YEN1[J-1])/(XENI[J]-XENI[J-1])                       
                        B=(XENI[J-1]*YEN1[J]-XENI[J]*YEN1[J-1])/(XENI[J-1]-XENI[J])     
                        QION[1][I]=(A*EN+B)*1.0e-16
                        flag222=0
                        # USE BORN-BETHE X-SECTION ABOVE XENI[NIDATA] EV     
                  # 221 
                  if(flag222):
                        X2=1.00/BETA2
                        X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
                        QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.9466
                  # 222 CONTINUE                        
                  # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
                  # ENERGIES ABOVE 2 * IONISATION ENERGY
                  # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY
                  # IONISATION ENERGY
                  flag223=1
                  if(EN <= (2.0*EION[1])):
                        flag223=0
                  if(flag223):
                        PEQION[1][I]=PEQEL[2][I-IOFFION[1]]
                  #
                  # IONISATION FOR CHARGE =2
            # 223 
            QION[2][I]=0.0
            PEQION[2][I]=0.50 
            if(NANISO == 2):
                  PEQION[2][I]=0.00                            
            if(EN <= EION[2]):
                  pass
            else:
                  flag3222=1
                  if(EN > XEN2[NION2]):
                        pass
                  else:
                        flag3220=1
                        for J in range(2,NION2+1):
                              if(EN <= XEN2[J]):
                                    flag3220=0
                                    break

                        if(flag3220):
                              J=NION2                                                          
                        A=(YEN2[J]-YEN2[J-1])/(XEN2[J]-XEN2[J-1])                       
                        B=(XEN2[J-1]*YEN2[J]-XEN2[J]*YEN2[J-1])/(XEN2[J-1]-XEN2[J])     
                        QION[2][I]=(A*EN+B)*1.0e-16
                        if(QION[2][I]< 0.0):
                              QION[2][I]=0.0
                        flag3222=0
                        # USE BORN-BETHE X-SECTION ABOVE XEN2[NION2] EV     
                  if(flag3222):
                        X2=1.00/BETA2
                        X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
                        QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.04448
                  # 3222 CONTINUE                        
                  # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
                  # ENERGIES ABOVE 2 * IONISATION ENERGY
                  # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY
                  # IONISATION ENERGY
                  if(EN <= (2.0*EION[2])):
                        pass
                  else:
                        PEQION[2][I]=PEQEL[2][I-IOFFION[2]]
                  #
                  # IONISATION FOR CHARGE =3
            # 3223 
            QION[3][I]=0.0
            PEQION[3][I]=0.50 
            if(NANISO == 2):
                  PEQION[3][I]=0.00                            
            if(EN <= EION[3]):
                  pass
            else:
                  flag4222=1
                  if(EN > XEN3[NION3]):
                        pass
                  else:
                        flag4220=1
                        for J in range(2,NION3+1):
                              if(EN <= XEN3[J]):
                                    flag4220=0
                                    break                                      
                              # 4210 CONTINUE    
                        if(flag4220):                                                      
                              J=NION3                                                          
                        # 4220 
                        A=(YEN3[J]-YEN3[J-1])/(XEN3[J]-XEN3[J-1])                       
                        B=(XEN3[J-1]*YEN3[J]-XEN3[J]*YEN3[J-1])/(XEN3[J-1]-XEN3[J])     
                        QION[3][I]=(A*EN+B)*1.0e-16
                        if(QION[3][I]< 0.0):
                              QION[3][I]=0.0
                        flag4222=0
                        # USE BORN-BETHE X-SECTION ABOVE XEN3[NION3] EV     
                  if(flag4222):
                        # 4221 
                        X2=1.00/BETA2
                        X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
                        QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00987 
                  # 4222 CONTINUE                        
                  # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
                  # ENERGIES ABOVE 2 * IONISATION ENERGY
                  # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY
                  # IONISATION ENERGY
                  if(EN <= (2.0*EION[3])):
                        pass
                  else:
                        PEQION[3][I]=PEQEL[2][I-IOFFION[3]]
                  # CALCULATE L3 SHELL IONISATION
            # 4223 
            QION[4][I]=0.00
            PEQION[4][I]=0.5
            if(NANISO == 2):
                  PEQION[4][I]=0.0
            if(EN <= EION[4]):
                  pass
            else:
                  flag2232=1
                  for J in range(2,NL3S+1):
                        if(EN <= XL3S[J]):
                              flag2232=0
                              break
                  # 2231 CONTINUE
                  if(flag2232):
                        J=NL3S
                  # 2232 
                  A=(YL3S[J]-YL3S[J-1])/(XL3S[J]-XL3S[J-1])
                  B=(XL3S[J-1]*YL3S[J]-XL3S[J]*YL3S[J-1])/(XL3S[J-1]-XL3S[J])
                  QION[4][I]=(A*EN+B)*1.e-16
                  PEQION[4][I]=PEQEL[2][I-IOFFION[4]]
                  # CALCULATE L2 SHELL IONISATION
            # 224 
            QION[5][I]=0.00
            PEQION[5][I]=0.5
            if(NANISO == 2):
                  PEQION[5][I]=0.0
            if(EN <= EION[5]):
                  pass
            else:
                  flag2242=1
                  for J in range(2,NL2S+1):
                        if(EN <= XL2S[J]):
                              flag2242=0
                              break
                        # 2241 CONTINUE
                  if(flag2242):
                        J=NL2S
                  # 2242 
                  A=(YL2S[J]-YL2S[J-1])/(XL2S[J]-XL2S[J-1])
                  B=(XL2S[J-1]*YL2S[J]-XL2S[J]*YL2S[J-1])/(XL2S[J-1]-XL2S[J])
                  QION[5][I]=(A*EN+B)*1.e-16
                  PEQION[5][I]=PEQEL[2][I-IOFFION[5]]
                  # CALCULATE L1 SHELL IONISATION
            # 225 
            QION[6][I]=0.00
            PEQION[6][I]=0.5
            if(NANISO == 2):
                  PEQION[6][I]=0.0
            if(EN <= EION[6]):
                  pass
            else:
                  flag2252=1
                  for J in range(2,NL1S+1):
                        if(EN <= XL1S[J]):
                              flag2252=0
                              break
                  # 2251 CONTINUE
                  if(flag2252):
                        J=NL1S
                  # 2252 
                  A=(YL1S[J]-YL1S[J-1])/(XL1S[J]-XL1S[J-1])
                  B=(XL1S[J-1]*YL1S[J]-XL1S[J]*YL1S[J-1])/(XL1S[J-1]-XL1S[J])
                  QION[6][I]=(A*EN+B)*1.e-16
                  PEQION[6][I]=PEQEL[2][I-IOFFION[6]]
                  # CALCULATE K  SHELL IONISATION
            # 226 
            QION[7][I]=0.00
            PEQION[7][I]=0.5
            if(NANISO == 2):
                  PEQION[7][I]=0.0
            if(EN <= EION[7]):
                  pass
            else:    
                  flag2262=1  
                  for J in range(2,NKSH+1):
                        if(EN <= XKSH[J]):
                              flag2262=0
                              break
                  # 2261 CONTINUE
                  if(flag2262):
                        J=NKSH
                  # 2262 
                  A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])
                  B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
                  QION[7][I]=(A*EN+B)*1.e-16
                  PEQION[7][I]=PEQEL[2][I-IOFFION[7]]
                  # ATTACHMENT
            # 227 
            Q[4][I]=0.0    
            # COUNTING IONISATION        
            Q[5][I]=0.0            
            PEQEL[5][I]=0.50
            if(NANISO == 2):
                  PEQEL[5][I]=0.00
            if(EN <= E[3]):
                  pass
            else:
                  if(EN > XENI[NIDATA]):
                        pass
                  else:
                        flag250=1
                        flag240=1
                        for J in range(2,NIDATA+1):
                              if(EN <= XENI[J]):
                                    flag240=0
                                    break
                        if(flag240):
                              J=NIDATA
                        # 240 
                        A=(YENC[J]-YENC[J-1])/(XENI[J]-XENI[J-1])
                        B=(XENI[J-1]*YENC[J]-XENI[J]*YENC[J-1])/(XENI[J-1]-XENI[J])
                        Q[5][I]=(A*EN+B)*1.0e-16
                        flag250=0
                        # USE BORN-BETHE X-SECTION ABOVE XENI[NIDATA] EV
                  # 241 
                  if(flag250):
                        Q[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)         
            # 250 CONTINUE
            # CORRECTION TO CHARGE STATE 1 2 AND 3 X-SECTION FOR K AND L SHELLS
            # GIVES TOTAL IONISATION EQUAL TO OSCILLATOR SUM
            QTEMP=QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]
            if(Q[5][I]== 0.0):
                  QCORR=1.0
            else:
                  QCORR=(Q[5][I]-QTEMP)/Q[5][I]
            # endif
            QION[1][I]=QION[1][I]*QCORR
            QION[2][I]=QION[2][I]*QCORR
            QION[3][I]=QION[3][I]*QCORR 
            #      
            Q[6][I]=0.0                                                        
            #                                                                       
            for NL in range(1,NIN+1):
                  QIN[NL][I]=0.0
                  PEQIN[NL][I]=0.50
                  if(NANISO == 2):
                        PEQIN[NL][I]=0.00
                  # endif
                  # 251 CONTINUE
            # 1S5
            if(EN <= EIN[1]):
                  # GO TO 413   
                  pass
            else:
                  flag3112=1
                  if(EN > X1S5[N1S5]):
                        pass
                  else:
                        flag311=1                         
                        for J in range(2,N1S5+1):
                              if(EN <= X1S5[J]):
                                    flag311=0
                                    break
                        if(flag311):
                              J=N1S5                                                            
                        # 311 
                        A=(Y1S5[J]-Y1S5[J-1])/(X1S5[J]-X1S5[J-1])                         
                        B=(X1S5[J-1]*Y1S5[J]-X1S5[J]*Y1S5[J-1])/(X1S5[J-1]-X1S5[J])      
                        QIN[1][I]=(A*EN+B)*1.0e-18
                        flag3112=0
                        # IF ENERGY GT X1S5[N1S5] EV SCALE BY 1/E**3
                  if(flag3112):
                        # 3111 
                        QIN[1][I]=Y1S5[N1S5]*(X1S5[N1S5]/EN)**3*1.0e-18     
                  # 3112 
                  if(EN <= (2.0*EIN[1])):
                        # GO TO 312
                        pass
                  else:
                        PEQIN[1][I]=PEQEL[2][(I-IOFFN[1])]
                        # 1S4 F=0.0580
                  # 312 
                  if(EN <= EIN[2]):
                        # GO TO 413
                        pass
                  else:
                        flag3142=1
                        if(EN > X1S4[N1S4]):
                              pass
                        else:
                              flag314=1
                              for J in range(2,N1S4+1):                                                   
                                    if(EN <= X1S4[J]):
                                          flag314=0
                                          break
                              # 313 CONTINUE  
                              if(flag314):                                                        
                                    J=N1S4                                                            
                              # 314 
                              A=(Y1S4[J]-Y1S4[J-1])/(X1S4[J]-X1S4[J-1])                         
                              B=(X1S4[J-1]*Y1S4[J]-X1S4[J]*Y1S4[J-1])/(X1S4[J-1]-X1S4[J])      
                              QIN[2][I]=(A*EN+B)*1.0e-18
                              flag3142=0
                        if(flag3142):
                              # 3141 
                              QIN[2][I]=0.0580/(EIN[2]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[2]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[2])
                        # 3142 
                        if(EN <= (2.0*EIN[2])):
                              # GO TO 315
                              pass
                        else:
                              PEQIN[2][I]=PEQEL[2][(I-IOFFN[2])]# 1S3
                        # 315 
                        if(EN <= EIN[3]):
                              pass
                        else:
                              flag3172=1
                              if(EN > X1S3[N1S3]):
                                    pass
                              else:
                                    flag317=1
                                    for J in range(2,N1S3+1):
                                          if(EN <= X1S3[J]):
                                                flag317=0
                                                break
                                    if(flag317):                                      
                                          J=N1S3                                                            
                                    # 317 
                                    A=(Y1S3[J]-Y1S3[J-1])/(X1S3[J]-X1S3[J-1])                         
                                    B=(X1S3[J-1]*Y1S3[J]-X1S3[J]*Y1S3[J-1])/(X1S3[J-1]-X1S3[J])      
                                    QIN[3][I]=(A*EN+B)*1.0e-18
                                    flag3172=0
                                    # IF ENERGY GT X1S3[N1S3] EV SCALE BY 1/E**3
                              if(flag3172):
                                    # 3171 
                                    QIN[3][I]=Y1S3[N1S3]*(X1S3[N1S3]/EN)**3*1.e-18
                              # 3172 
                              if(EN <= (2.0*EIN[3])):
                                    pass
                              else:
                                    PEQIN[3][I]=PEQEL[2][(I-IOFFN[3])]# 1S2  F=0.2260
                              # 318 
                              if(EN <= EIN[4]):
                                    pass
                              else:
                                    flag3202=1
                                    if(EN > X1S2[N1S2]):
                                          pass
                                    else:
                                          flag320=1
                                          for J in range(2,N1S2+1):                                                   
                                                if(EN <= X1S2[J]):
                                                      flag320=0
                                                      break                                      
                                          if(flag320):
                                                J=N1S2                                                            
                                          # 320 
                                          A=(Y1S2[J]-Y1S2[J-1])/(X1S2[J]-X1S2[J-1])                         
                                          B=(X1S2[J-1]*Y1S2[J]-X1S2[J]*Y1S2[J-1])/(X1S2[J-1]-X1S2[J])      
                                          QIN[4][I]=(A*EN+B)*1.0e-18
                                          flag3202=0
                                    if(flag3202):
                                          # 3201 
                                          QIN[4][I]=0.2260/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[4])
                                    # 3202 
                                    if(EN <= (2.0*EIN[4])):
                                          pass
                                    else:
                                          PEQIN[4][I]=PEQEL[2][(I-IOFFN[4])]#         
                                          # P STATES
                                          #
                                          # 2P10
                                    # 321 
                                    if(EN <= EIN[5]):
                                          pass
                                    else:
                                          flag3232=1
                                          if(EN > X2P10[N2P10]):
                                                pass
                                          else:
                                                flag323=1
                                                for J in range(2,N2P10+1):
                                                      if(EN <= X2P10[J]):
                                                            flag323=0
                                                            break
                                                if(flag323):
                                                      J=N2P10
                                                # 323 
                                                A=(Y2P10[J]-Y2P10[J-1])/(X2P10[J]-X2P10[J-1])                    
                                                B=(X2P10[J-1]*Y2P10[J]-X2P10[J]*Y2P10[J-1])/(X2P10[J-1]-X2P10[J])
                                                QIN[5][I]=(A*EN+B)*1.e-18*PSCALE
                                                flag3232=0
                                                # IF ENERGY GT X2P10(N2P10) EV SCALE BY 1/E**2
                                          if(flag3232):
                                                # 3231 
                                                QIN[5][I]=Y2P10(N2P10)*(X2P10[N2P10]/EN)**2*1.0e-18*PSCALE
                                          # 3232 
                                          if(EN <= (2.0*EIN[5])):
                                                pass
                                          else:
                                                PEQIN[5][I]=PEQEL[2][(I-IOFFN[5])]# 2P9
                                          # 324 
                                          if(EN <= EIN[6]):
                                                pass
                                          else:
                                                flag3262=1
                                                if(EN > X2P9[N2P9]):
                                                      pass
                                                else:
                                                      flag326=1
                                                      for J in range(2,N2P9+1):
                                                            if(EN <= X2P9[J]):
                                                                  flag326=0
                                                                  break
                                                      if(flag326):
                                                            J=N2P9
                                                      # 326 
                                                      A=(Y2P9[J]-Y2P9[J-1])/(X2P9[J]-X2P9[J-1])                    
                                                      B=(X2P9[J-1]*Y2P9[J]-X2P9[J]*Y2P9[J-1])/(X2P9[J-1]-X2P9[J])
                                                      QIN[6][I]=(A*EN+B)*1.e-18*PSCALE
                                                      flag3262=0
                                                      # IF ENERGY GT X2P9[N2P9] EV SCALE BY 1/E**2
                                                if(flag3262):
                                                      # 3261 
                                                      QIN[6][I]=Y2P9[N2P9]*(X2P9[N2P9]/EN)**2*1.0e-18*PSCALE
                                                # 3262 
                                                if(EN <= (2.0*EIN[6])):
                                                      pass
                                                else:
                                                      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6])]# 2P8
                                                # 327 
                                                if(EN <= EIN[7]):
                                                      pass
                                                else:
                                                      flag3292=1
                                                      if(EN > X2P8[N2P8]):
                                                            pass
                                                      else:
                                                            flag329=1
                                                            for J in range(2,N2P8+1):
                                                                  if(EN <= X2P8[J]):
                                                                        flag329=0
                                                                        break
                                                            if(flag329):
                                                                  J=N2P8
                                                            # 329 
                                                            A=(Y2P8[J]-Y2P8[J-1])/(X2P8[J]-X2P8[J-1])                    
                                                            B=(X2P8[J-1]*Y2P8[J]-X2P8[J]*Y2P8[J-1])/(X2P8[J-1]-X2P8[J])
                                                            QIN[7][I]=(A*EN+B)*1.e-18*PSCALE
                                                            flag3292=0
                                                            # IF ENERGY GT X2P8[N2P8] EV SCALE BY 1/E
                                                      if(flag3292):
                                                            # 3291 
                                                            QIN[7][I]=Y2P8[N2P8]*(X2P8[N2P8]/EN)*1.0e-18*PSCALE
                                                      # 3292 
                                                      if(EN <= (2.0*EIN[7])):
                                                            pass
                                                      else:
                                                            PEQIN[7][I]=PEQEL[2][(I-IOFFN[7])]# 2P7
                                                      # 330 
                                                      if(EN <= EIN[8]):
                                                            pass
                                                      else:
                                                            flag3322=1
                                                            if(EN > X2P7[N2P7]):
                                                                  pass
                                                            else:
                                                                  flag332=1
                                                                  for J in range(2,N2P7+1):
                                                                        if(EN <= X2P7[J]):
                                                                              flag332=0
                                                                              break
                                                                  if(flag332):
                                                                        J=N2P7
                                                                  # 332 
                                                                  A=(Y2P7[J]-Y2P7[J-1])/(X2P7[J]-X2P7[J-1])                    
                                                                  B=(X2P7[J-1]*Y2P7[J]-X2P7[J]*Y2P7[J-1])/(X2P7[J-1]-X2P7[J])
                                                                  QIN[8][I]=(A*EN+B)*1.e-18*PSCALE
                                                                  flag3322=0
                                                                  # IF ENERGY GT X2P7[N2P7] EV SCALE BY 1/E**2
                                                            if(flag3322):
                                                                  # 3321 
                                                                  QIN[8][I]=Y2P7[N2P7]*(X2P7[N2P7]/EN)**2*1.0e-18*PSCALE
                                                            # 3322 
                                                            if(EN <= (2.0*EIN[8])):
                                                                  pass
                                                            else:
                                                                  PEQIN[8][I]=PEQEL[2][(I-IOFFN[8])]# 2P6
                                                            # 333 
                                                            if(EN <= EIN[9]):
                                                                  pass
                                                            else:
                                                                  flag3352=1
                                                                  if(EN > X2P6[N2P6]):
                                                                        pass
                                                                  else:
                                                                        flag335=1
                                                                        for J in range(2,N2P6+1):
                                                                              if(EN <= X2P6[J]):
                                                                                    flag335=0
                                                                                    break
                                                                        if(flag335):
                                                                              J=N2P6
                                                                        # 335 
                                                                        A=(Y2P6[J]-Y2P6[J-1])/(X2P6[J]-X2P6[J-1])                    
                                                                        B=(X2P6[J-1]*Y2P6[J]-X2P6[J]*Y2P6[J-1])/(X2P6[J-1]-X2P6[J])
                                                                        QIN[9][I]=(A*EN+B)*1.e-18*PSCALE
                                                                        flag3352=0
                                                                        # IF ENERGY GT X2P6[N2P6] EV SCALE BY 1/E
                                                                  if(flag3352):
                                                                        # 3351 
                                                                        QIN[9][I]=Y2P6[N2P6]*(X2P6[N2P6]/EN)*1.0e-18*PSCALE
                                                                  # 3352 
                                                                  if(EN <= (2.0*EIN[9])):
                                                                        pass
                                                                  else:
                                                                        PEQIN[9][I]=PEQEL[2][(I-IOFFN[9])]# 2P5
                                                                  # 336 
                                                                  if(EN <= EIN[10]):
                                                                        pass
                                                                  else:
                                                                        flag3382=1
                                                                        if(EN > X2P5[N2P5]):
                                                                              pass
                                                                        else:
                                                                              flag338=1
                                                                              for J in range(2,N2P5+1):
                                                                                    if(EN <= X2P5[J]):
                                                                                          flag338=0
                                                                              if(flag338):
                                                                                    J=N2P5
                                                                              # 338 
                                                                              A=(Y2P5[J]-Y2P5[J-1])/(X2P5[J]-X2P5[J-1])                    
                                                                              B=(X2P5[J-1]*Y2P5[J]-X2P5[J]*Y2P5[J-1])/(X2P5[J-1]-X2P5[J])
                                                                              QIN[10][I]=(A*EN+B)*1.e-18*PSCALE
                                                                              flag3382=0
                                                                              # IF ENERGY GT X2P5[N2P5] EV SCALE BY 1/E
                                                                        if(flag3382):
                                                                              # 3381 
                                                                              QIN[10][I]=Y2P5[N2P5]*(X2P5[N2P5]/EN)*1.0e-18*PSCALE
                                                                        # 3382 
                                                                        if(EN <= (2.0*EIN[10])):
                                                                              pass
                                                                        else:
                                                                              PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
                                                                        # 2P4
                                                                        # 339 
                                                                        if(EN <= EIN[11]):
                                                                              pass
                                                                        else:
                                                                              flag3412=1
                                                                              if(EN > X2P4[N2P4]):
                                                                                    pass
                                                                              else:
                                                                                    flag341=1
                                                                                    for J in range(2,N2P4+1):
                                                                                          if(EN <= X2P4[J]):
                                                                                                flag341=0
                                                                                                break
                                                                                    if(flag341):
                                                                                          J=N2P4
                                                                                    # 341 
                                                                                    A=(Y2P4[J]-Y2P4[J-1])/(X2P4[J]-X2P4[J-1])                    
                                                                                    B=(X2P4[J-1]*Y2P4[J]-X2P4[J]*Y2P4[J-1])/(X2P4[J-1]-X2P4[J])
                                                                                    QIN[11][I]=(A*EN+B)*1.e-18*PSCALE
                                                                                    flag3412=0
                                                                                    # IF ENERGY GT X2P4[N2P4] EV SCALE BY 1/E**2
                                                                              if(flag3412):
                                                                                    # 3411 
                                                                                    QIN[11][I]=Y2P4[N2P4]*(X2P4[N2P4]/EN)**2*1.0e-18*PSCALE
                                                                              # 3412 
                                                                              if(EN <= (2.0*EIN[11])):
                                                                                    pass
                                                                              else:
                                                                                    PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
                                                                              # 2P3
                                                                              # 342 
                                                                              if(EN <= EIN[12]):
                                                                                    pass
                                                                              else:
                                                                                    flag3442=1
                                                                                    if(EN > X2P3[N2P3]):
                                                                                          pass
                                                                                    else:
                                                                                          flag344=1
                                                                                          for J in range(2,N2P3+1):
                                                                                                if(EN <= X2P3[J]):
                                                                                                      flag344=0
                                                                                                      break
                                                                                          if(flag344):
                                                                                                J=N2P3
                                                                                          # 344 
                                                                                          A=(Y2P3[J]-Y2P3[J-1])/(X2P3[J]-X2P3[J-1])                    
                                                                                          B=(X2P3[J-1]*Y2P3[J]-X2P3[J]*Y2P3[J-1])/(X2P3[J-1]-X2P3[J])
                                                                                          QIN[12][I]=(A*EN+B)*1.e-18*PSCALE
                                                                                          flag3442=0
                                                                                          # IF ENERGY GT X2P3[N2P3] EV SCALE BY 1/E
                                                                                    if(flag3442):
                                                                                          # 3441 
                                                                                          QIN[12][I]=Y2P3[N2P3]*(X2P3[N2P3]/EN)*1.0e-18*PSCALE
                                                                                    # 3442 
                                                                                    if(EN <= (2.0*EIN[12])):
                                                                                          pass
                                                                                    else:
                                                                                          PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
                                                                                          # 2P2
                                                                                    # 345 
                                                                                    if(EN <= EIN[13]):
                                                                                          pass
                                                                                    else:
                                                                                          flag3472=1
                                                                                          if(EN > X2P2[N2P2]):
                                                                                                pass
                                                                                          else:
                                                                                                flag347=1
                                                                                                for J in range(2,N2P2+1):
                                                                                                      if(EN <= X2P2[J]):
                                                                                                            flag347=0
                                                                                                if(flag347):
                                                                                                      J=N2P2
                                                                                                # 347 
                                                                                                A=(Y2P2[J]-Y2P2[J-1])/(X2P2[J]-X2P2[J-1])                    
                                                                                                B=(X2P2[J-1]*Y2P2[J]-X2P2[J]*Y2P2[J-1])/(X2P2[J-1]-X2P2[J])
                                                                                                QIN[13][I]=(A*EN+B)*1.e-18*PSCALE
                                                                                                flag3472=0
                                                                                                # IF ENERGY GT X2P2[N2P2] EV SCALE BY 1/E**2
                                                                                          if(flag3472):
                                                                                                # 3471 
                                                                                                QIN[13][I]=Y2P2[N2P2]*(X2P2[N2P2]/EN)**2*1.0e-18*PSCALE
                                                                                          # 3472 
                                                                                          if(EN <= (2.0*EIN[13])):
                                                                                                pass
                                                                                          else:
                                                                                                PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
                                                                                          # 2P1
                                                                                          # 348 
                                                                                          if(EN <= EIN[14]):
                                                                                                pass
                                                                                          else:
                                                                                                flag3502=1
                                                                                                if(EN > X2P1[N2P1]):
                                                                                                      pass
                                                                                                else:
                                                                                                      flag350=1
                                                                                                      for J in range(2,N2P1+1):
                                                                                                            if(EN <= X2P1[J]):
                                                                                                                  flag350=0
                                                                                                                  break
                                                                                                      if(flag350):
                                                                                                            J=N2P1
                                                                                                      # 350 
                                                                                                      A=(Y2P1[J]-Y2P1[J-1])/(X2P1[J]-X2P1[J-1])                    
                                                                                                      B=(X2P1[J-1]*Y2P1[J]-X2P1[J]*Y2P1[J-1])/(X2P1[J-1]-X2P1[J])
                                                                                                      QIN[14][I]=(A*EN+B)*1.e-18*PSCALE
                                                                                                      flag3502=1
                                                                                                      # IF ENERGY GT X2P1[N2P1] EV SCALE BY 1/E
                                                                                                if(flag3502):
                                                                                                      # 3501 
                                                                                                      QIN[14][I]=Y2P1[N2P1]*(X2P1[N2P1]/EN)*1.0e-18*PSCALE
                                                                                                # 3502 
                                                                                                if(EN <= (2.0*EIN[14])):
                                                                                                      pass
                                                                                                else:
                                                                                                      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
                                                                                                # 3D6
                                                                                                # 351 
                                                                                                if(EN <= EIN[15]):
                                                                                                      pass
                                                                                                else:
                                                                                                      flag3532=1
                                                                                                      if(EN > X3D6[N3D6]):
                                                                                                            pass
                                                                                                      else:
                                                                                                            flag353=1
                                                                                                            for J in range(2,N3D6+1):
                                                                                                                  if(EN <= X3D6[J]):
                                                                                                                        flag353=0
                                                                                                                        break
                                                                                                            if(flag353):
                                                                                                                  J=N3D6
                                                                                                            # 353 
                                                                                                            A=(Y3D6[J]-Y3D6[J-1])/(X3D6[J]-X3D6[J-1])                    
                                                                                                            B=(X3D6[J-1]*Y3D6[J]-X3D6[J]*Y3D6[J-1])/(X3D6[J-1]-X3D6[J])
                                                                                                            QIN[15][I]=(A*EN+B)*1.e-18
                                                                                                            flag3532=0
                                                                                                            # IF ENERGY GT X3D6[N3D6] EV SCALE BY 1/E**3
                                                                                                      if(flag3532):
                                                                                                            # 3531 
                                                                                                            QIN[15][I]=Y3D6[N3D6]*(X3D6[N3D6]/EN)**3*1.0e-18
                                                                                                      # 3532 
                                                                                                      if(EN <= (2.0*EIN[15])):
                                                                                                            pass
                                                                                                      else:
                                                                                                            PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
                                                                                                      # 3D5 F=0.0010 
                                                                                                      # 354 
                                                                                                      if(EN <= EIN[16]):
                                                                                                            pass
                                                                                                      else:
                                                                                                            flag3562=1
                                                                                                            if(EN > X3D5[N3D5]):
                                                                                                                  pass
                                                                                                            else:
                                                                                                                  flag356=1
                                                                                                                  for J in range(2,N3D5+1):
                                                                                                                        if(EN <= X3D5[J]):
                                                                                                                              flag356=0
                                                                                                                              break
                                                                                                                  if(flag356):
                                                                                                                        J=N3D5
                                                                                                                  # 356 
                                                                                                                  A=(Y3D5[J]-Y3D5[J-1])/(X3D5[J]-X3D5[J-1])                    
                                                                                                                  B=(X3D5[J-1]*Y3D5[J]-X3D5[J]*Y3D5[J-1])/(X3D5[J-1]-X3D5[J])
                                                                                                                  QIN[16][I]=(A*EN+B)*1.e-18
                                                                                                                  flag3562=0
                                                                                                            if(flag3562):
                                                                                                                  # 3561 
                                                                                                                  QIN[16][I]=0.0010/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[16])
                                                                                                            if(QIN[16][I]< 0.0):
                                                                                                                  QIN[16][I]=0.0
                                                                                                            # 3562 
                                                                                                            if(EN <= (2.0*EIN[16])):
                                                                                                                  pass
                                                                                                            else:
                                                                                                                  PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
                                                                                                            # 3D3
                                                                                                            # 357 
                                                                                                            if(EN <= EIN[17]):
                                                                                                                  pass
                                                                                                            else:
                                                                                                                  flag3592=1
                                                                                                                  if(EN > X3D3[N3D3]):
                                                                                                                        pass
                                                                                                                  else:
                                                                                                                        flag359=1
                                                                                                                        for J in range(2,N3D3+1):
                                                                                                                              if(EN <= X3D3[J]):
                                                                                                                                    flag359=0
                                                                                                                                    break
                                                                                                                        if(flag359):
                                                                                                                              J=N3D3
                                                                                                                        # 359 
                                                                                                                        A=(Y3D3[J]-Y3D3[J-1])/(X3D3[J]-X3D3[J-1])                    
                                                                                                                        B=(X3D3[J-1]*Y3D3[J]-X3D3[J]*Y3D3[J-1])/(X3D3[J-1]-X3D3[J])
                                                                                                                        QIN[17][I]=(A*EN+B)*1.e-18
                                                                                                                        flag3592=0
                                                                                                                        # IF ENERGY GT X3D3[N3D3] EV SCALE BY 1/E**3
                                                                                                                  if(flag3592):
                                                                                                                        # 3591 
                                                                                                                        QIN[17][I]=Y3D3[N3D3]*(X3D3[N3D3]/EN)**3*1.0e-18
                                                                                                                  # 3592 
                                                                                                                  if(EN <= (2.0*EIN[17])):
                                                                                                                        pass
                                                                                                                  else:
                                                                                                                        PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
                                                                                                                  # 3D4'
                                                                                                                  # 360 
                                                                                                                  if(EN <= EIN[18]):
                                                                                                                        pass
                                                                                                                  else:
                                                                                                                        flag3622=1
                                                                                                                        if(EN > X3D4P[N3D4P]):
                                                                                                                              pass
                                                                                                                        else:
                                                                                                                              for J in range(2,N3D4P+1):
                                                                                                                                    if(EN <= X3D4P[J]):
                                                                                                                                          flag362=0
                                                                                                                                          break
                                                                                                                              if(flag362):
                                                                                                                                    J=N3D4P
                                                                                                                              # 362 
                                                                                                                              A=(Y3D4P[J]-Y3D4P[J-1])/(X3D4P[J]-X3D4P[J-1])                    
                                                                                                                              B=(X3D4P[J-1]*Y3D4P[J]-X3D4P[J]*Y3D4P[J-1])/(X3D4P[J-1]-X3D4P[J])
                                                                                                                              QIN[18][I]=(A*EN+B)*1.e-18
                                                                                                                              flag3622=0
                                                                                                                              # IF ENERGY GT X3D4P(N3D4P) EV SCALE BY 1/E**3
                                                                                                                        if(flag3622):
                                                                                                                              # 3621 
                                                                                                                              QIN[18][I]=Y3D4P[N3D4P]*(X3D4P[N3D4P]/EN)**3*1.0e-18
                                                                                                                        # 3622 
                                                                                                                        if(EN <= (2.0*EIN[18])):
                                                                                                                              pass
                                                                                                                        else:
                                                                                                                              PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
                                                                                                                        # 3D4 
                                                                                                                        # 363 
                                                                                                                        if(EN <= EIN[19]):
                                                                                                                              pass
                                                                                                                        else:
                                                                                                                              flag365=1
                                                                                                                              if(EN > X3D4[N3D4]):
                                                                                                                                    pass
                                                                                                                              else:
                                                                                                                                    flag365=1
                                                                                                                                    for J in range(2,N3D4+1):
                                                                                                                                          if(EN <= X3D4[J]):
                                                                                                                                                flag365=0
                                                                                                                                                break
                                                                                                                                    if(flag365):
                                                                                                                                          J=N3D4
                                                                                                                                    # 365 
                                                                                                                                    A=(Y3D4[J]-Y3D4[J-1])/(X3D4[J]-X3D4[J-1])                    
                                                                                                                                    B=(X3D4[J-1]*Y3D4[J]-X3D4[J]*Y3D4[J-1])/(X3D4[J-1]-X3D4[J])
                                                                                                                                    QIN[19][I]=(A*EN+B)*1.e-18
                                                                                                                                    flag3652=0
                                                                                                                                    # IF ENERGY GT X3D4[N3D4] EV SCALE BY 1/E**2
                                                                                                                              if(flag3652):
                                                                                                                                    # 3651 
                                                                                                                                    QIN[19][I]=Y3D4[N3D4]*(X3D4[N3D4]/EN)**2*1.0e-18
                                                                                                                              # 3652 
                                                                                                                              if(EN <= (2.0*EIN[19])):
                                                                                                                                    pass
                                                                                                                              else:
                                                                                                                                    PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
                                                                                                                                    # 3D1''
                                                                                                                              # 366 
                                                                                                                              if(EN <= EIN[20]):
                                                                                                                                    pass
                                                                                                                              else:
                                                                                                                                    flag3682=1
                                                                                                                                    if(EN > X3D1PP[N3D1PP]):
                                                                                                                                          pass
                                                                                                                                    else:
                                                                                                                                          flag368=1
                                                                                                                                          for J in range(2,N3D1PP+1):
                                                                                                                                                if(EN <= X3D1PP[J]):
                                                                                                                                                      flag368=0
                                                                                                                                                      break
                                                                                                                                          if(flag368):
                                                                                                                                                J=N3D1PP
                                                                                                                                          # 368 
                                                                                                                                          A=(Y3D1PP[J]-Y3D1PP[J-1])/(X3D1PP[J]-X3D1PP[J-1])               
                                                                                                                                          B=(X3D1PP[J-1]*Y3D1PP[J]-X3D1PP[J]*Y3D1PP[J-1])/(X3D1PP[J-1]-X3D1PP[J])
                                                                                                                                          QIN[20][I]=(A*EN+B)*1.e-18
                                                                                                                                          flag3682=0
                                                                                                                                          # IF EN GT X3D1PP(N3D1PP) EV  SCALE BY 1/E**2
                                                                                                                                    if(flag3682):
                                                                                                                                          # 3681 
                                                                                                                                          QIN[20][I]=Y3D1PP[N3D1PP]*(X3D1PP[N3D1PP]/EN)**2*1.0e-18
                                                                                                                                    # 3682 
                                                                                                                                    if(EN <= (2.0*EIN[20])):
                                                                                                                                          pass
                                                                                                                                    else:
                                                                                                                                          PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
                                                                                                                                    # 2S5 
                                                                                                                                    # 369 
                                                                                                                                    if(EN <= EIN[21]):
                                                                                                                                          pass
                                                                                                                                    else:
                                                                                                                                          flag3712=1
                                                                                                                                          if(EN > X2S5[N2S5]):
                                                                                                                                                pass
                                                                                                                                          else:
                                                                                                                                                flag371=1
                                                                                                                                                for J in range(2,N2S5+1):
                                                                                                                                                      if(EN <= X2S5[J]):
                                                                                                                                                            flag371=0
                                                                                                                                                            break
                                                                                                                                                if(flag371):
                                                                                                                                                      J=N2S5

                                                                                                                                                # 371 
                                                                                                                                                A=(Y2S5[J]-Y2S5[J-1])/(X2S5[J]-X2S5[J-1])                    
                                                                                                                                                B=(X2S5[J-1]*Y2S5[J]-X2S5[J]*Y2S5[J-1])/(X2S5[J-1]-X2S5[J])
                                                                                                                                                QIN[21][I]=(A*EN+B)*1.e-18
                                                                                                                                                flag3712=0
                                                                                                                                                # IF EN GT X2S5[N2S5] EV   SCALE BY 1/E**2
                                                                                                                                          if(flag3712):
                                                                                                                                                # 3711 
                                                                                                                                                QIN[21][I]=Y2S5[N2S5]*(X2S5[N2S5]/EN)**2*1.0e-18
                                                                                                                                          # 3712 
                                                                                                                                          if(EN <= (2.0*EIN[21])):
                                                                                                                                                pass
                                                                                                                                          else:
                                                                                                                                                PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
                                                                                                                                          # 2S4 F=0.0257
                                                                                                                                          # 372 
                                                                                                                                          if(EN <= EIN[22]):
                                                                                                                                                pass
                                                                                                                                          else:
                                                                                                                                                QIN[22][I]=0.0257/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[22])
                                                                                                                                                if(QIN[22][I]< 0.0):
                                                                                                                                                      QIN[22][I]=0.0
                                                                                                                                                if(EN <= (2.0*EIN[22])):
                                                                                                                                                      pass
                                                                                                                                                else:
                                                                                                                                                      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
                                                                                                                                                # 3D1' 
                                                                                                                                                # 375 
                                                                                                                                                if(EN <= EIN[23]):
                                                                                                                                                      pass
                                                                                                                                                else:
                                                                                                                                                      flag3772=1
                                                                                                                                                      if(EN > X3D1P[N3D1P]):
                                                                                                                                                            pass
                                                                                                                                                      else:
                                                                                                                                                            flag377=1
                                                                                                                                                            for J in range(2,N3D1P+1):
                                                                                                                                                                  if(EN <= X3D1P[J]):
                                                                                                                                                                        flag377=0
                                                                                                                                                                        break
                                                                                                                                                            if(flag377):
                                                                                                                                                                  J=N3D1P
                                                                                                                                                            # 377 
                                                                                                                                                            A=(Y3D1P[J]-Y3D1P[J-1])/(X3D1P[J]-X3D1P[J-1])                    
                                                                                                                                                            B=(X3D1P[J-1]*Y3D1P[J]-X3D1P[J]*Y3D1P[J-1])/(X3D1P[J-1]-X3D1P[J])
                                                                                                                                                            QIN[23][I]=(A*EN+B)*1.e-18
                                                                                                                                                            flag3772=0
                                                                                                                                                            # IF EN GT X3D1P(N3D1P) EV  SCALE BY 1/E
                                                                                                                                                      if(flag3772):
                                                                                                                                                            # 3771 
                                                                                                                                                            QIN[23][I]=Y3D1P[N3D1P]*(X3D1P[N3D1P]/EN)*1.0e-18
                                                                                                                                                      # 3772 
                                                                                                                                                      if(EN <= (2.0*EIN[23])):
                                                                                                                                                            pass
                                                                                                                                                      else:
                                                                                                                                                            PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
                                                                                                                                                      # 3D2  F=0.074
                                                                                                                                                      # 378 
                                                                                                                                                      if(EN <= EIN[24]):
                                                                                                                                                            pass
                                                                                                                                                      else:
                                                                                                                                                            QIN[24][I]=0.0740/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[24])
                                                                                                                                                            if(QIN[24][I]< 0.0):
                                                                                                                                                                  QIN[24][I]=0.0
                                                                                                                                                            if(EN <= (2.0*EIN[24])):
                                                                                                                                                                  pass
                                                                                                                                                            else:
                                                                                                                                                                  PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
                                                                                                                                                            # 3S1''''
                                                                                                                                                            # 381 
                                                                                                                                                            if(EN <= EIN[25]):
                                                                                                                                                                  pass
                                                                                                                                                            else:
                                                                                                                                                                  flag3832=1
                                                                                                                                                                  if(EN > X3S1PPPP[N3S1PPPP]):
                                                                                                                                                                        pass
                                                                                                                                                                  else:
                                                                                                                                                                        flag383=1
                                                                                                                                                                        for J in range(2,N3S1PPPP+1):
                                                                                                                                                                              if(EN <= X3S1PPPP[J]):
                                                                                                                                                                                    flag383=0
                                                                                                                                                                                    break
                                                                                                                                                                                    break
                                                                                                                                                                        if(flag383):
                                                                                                                                                                              J=N3S1PPPP
                                                                                                                                                                        # 383 
                                                                                                                                                                        A=(Y3S1PPPP[J]-Y3S1PPPP[J-1])/(X3S1PPPP[J]-X3S1PPPP[J-1])         
                                                                                                                                                                        B=(X3S1PPPP[J-1]*Y3S1PPPP[J]-X3S1PPPP[J]*Y3S1PPPP[J-1])/(X3S1PPPP[J-1]-X3S1PPPP[J])
                                                                                                                                                                        QIN[25][I]=(A*EN+B)*1.e-18
                                                                                                                                                                        flag3832=0
                                                                                                                                                                        # IF EN GT X3S1PPPP(N3S1PPPP) EV  SCALE BY 1/E**3
                                                                                                                                                                  if(flag3832):
                                                                                                                                                                        # 3831 
                                                                                                                                                                        QIN[25][I]=Y3S1PPPP[N3S1PPPP]*(X3S1PPPP[N3S1PPPP]/EN)**3*1.0e-18
                                                                                                                                                                  # 3832 
                                                                                                                                                                  if(EN <= (2.0*EIN[25])):
                                                                                                                                                                        pass
                                                                                                                                                                  else:
                                                                                                                                                                        PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
                                                                                                                                                                  # 3S1''  
                                                                                                                                                                  # 384 
                                                                                                                                                                  if(EN <= EIN[26]):
                                                                                                                                                                        pass
                                                                                                                                                                  else:
                                                                                                                                                                        flag3862=1
                                                                                                                                                                        if(EN > X3S1PP[N3S1PP]):
                                                                                                                                                                              pass
                                                                                                                                                                        else:
                                                                                                                                                                              flag386=1
                                                                                                                                                                              for J in range(2,N3S1PP+1):
                                                                                                                                                                                    if(EN <= X3S1PP[J]):
                                                                                                                                                                                          flag386=0
                                                                                                                                                                                          break
                                                                                                                                                                              if(flag386):
                                                                                                                                                                                    J=N3S1PP
                                                                                                                                                                              # 386 
                                                                                                                                                                              A=(Y3S1PP[J]-Y3S1PP[J-1])/(X3S1PP[J]-X3S1PP[J-1])         
                                                                                                                                                                              B=(X3S1PP[J-1]*Y3S1PP[J]-X3S1PP[J]*Y3S1PP[J-1])/(X3S1PP[J-1]-X3S1PP[J])
                                                                                                                                                                              QIN[26][I]=(A*EN+B)*1.e-18
                                                                                                                                                                              flag3862=0
                                                                                                                                                                        # IF EN GT X3S1PP(N3S1PP) EV  SCALE BY 1/E**3
                                                                                                                                                                        if(flag3862):
                                                                                                                                                                              # 3861 
                                                                                                                                                                              QIN[26][I]=Y3S1PP[N3S1PP]*(X3S1PP[N3S1PP]/EN)**3*1.0e-18
                                                                                                                                                                        # 3862 
                                                                                                                                                                        if(EN <= (2.0*EIN[26])):
                                                                                                                                                                              pass
                                                                                                                                                                        else:
                                                                                                                                                                              PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
                                                                                                                                                                        # 3S1'''
                                                                                                                                                                        # 387 
                                                                                                                                                                        if(EN <= EIN[27]):
                                                                                                                                                                              pass
                                                                                                                                                                        else:
                                                                                                                                                                              if(EN > X3S1PPP[N3S1PPP]):
                                                                                                                                                                                    pass
                                                                                                                                                                              else:
                                                                                                                                                                                    flag389=1
                                                                                                                                                                                    for J in range(2,N3S1PPP+1):
                                                                                                                                                                                          if(EN <= X3S1PPP[J]):
                                                                                                                                                                                                flag389=0
                                                                                                                                                                                                break
                                                                                                                                                                                    if(flag389):
                                                                                                                                                                                          J=N3S1PPP
                                                                                                                                                                                    # 389 
                                                                                                                                                                                    A=(Y3S1PPP[J]-Y3S1PPP[J-1])/(X3S1PPP[J]-X3S1PPP[J-1])         
                                                                                                                                                                                    B=(X3S1PPP[J-1]*Y3S1PPP[J]-X3S1PPP[J]*Y3S1PPP[J-1])/(X3S1PPP[J-1]-X3S1PPP[J])
                                                                                                                                                                                    QIN[27][I]=(A*EN+B)*1.e-18
                                                                                                                                                                                    flag3892=0
                                                                                                                                                                                    # IF EN GT X3S1PPP(N3S1PPP) EV  SCALE BY 1/E
                                                                                                                                                                              if(flag3892):
                                                                                                                                                                                    # 3891 
                                                                                                                                                                                    QIN[27][I]=Y3S1PPP[N3S1PPP]*(X3S1PPP[N3S1PPP]/EN)*1.0e-18
                                                                                                                                                                              # 3892 
                                                                                                                                                                              if(EN <= (2.0*EIN[27])):
                                                                                                                                                                                    pass
                                                                                                                                                                              else:
                                                                                                                                                                                    PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
                                                                                                                                                                              # 2S3 
                                                                                                                                                                              # 390 
                                                                                                                                                                              if(EN <= EIN[28]):
                                                                                                                                                                                    pass
                                                                                                                                                                              else:
                                                                                                                                                                                    flag3922=1
                                                                                                                                                                                    if(EN > X2S3[N2S3]):
                                                                                                                                                                                          pass
                                                                                                                                                                                    else:
                                                                                                                                                                                          for J in range(2,N2S3+1):
                                                                                                                                                                                                if(EN <= X2S3[J]):
                                                                                                                                                                                                      flag392=0
                                                                                                                                                                                                      break
                                                                                                                                                                                          if(flag392):
                                                                                                                                                                                                J=N2S3
                                                                                                                                                                                          # 392 
                                                                                                                                                                                          A=(Y2S3[J]-Y2S3[J-1])/(X2S3[J]-X2S3[J-1])                    
                                                                                                                                                                                          B=(X2S3[J-1]*Y2S3[J]-X2S3[J]*Y2S3[J-1])/(X2S3[J-1]-X2S3[J])
                                                                                                                                                                                          QIN[28][I]=(A*EN+B)*1.e-18
                                                                                                                                                                                          flag3922=0
                                                                                                                                                                                          # IF EN GT X2S3[N2S3] EV  SCALE BY 1/E**2
                                                                                                                                                                                    if(flag3922):
                                                                                                                                                                                          # 3921 
                                                                                                                                                                                          QIN[28][I]=Y2S3[N2S3]*(X2S3[N2S3]/EN)**2*1.0e-18
                                                                                                                                                                                    # 3922 
                                                                                                                                                                                    if(EN <= (2.0*EIN[28])):
                                                                                                                                                                                          pass
                                                                                                                                                                                    else:
                                                                                                                                                                                          PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
                                                                                                                                                                                    # 2S2  F=0.011
                                                                                                                                                                                    # 393 
                                                                                                                                                                                    if(EN <= EIN[29]):
                                                                                                                                                                                          pass
                                                                                                                                                                                    else:
                                                                                                                                                                                          QIN[29][I]=0.0110/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[29])
                                                                                                                                                                                          if(QIN[29][I]< 0.0):
                                                                                                                                                                                                QIN[29][I]=0.0
                                                                                                                                                                                          if(EN <= (2.0*EIN[29])):
                                                                                                                                                                                                pass
                                                                                                                                                                                          else:
                                                                                                                                                                                                PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
                                                                                                                                                                                          # 3S1' F=0.092
                                                                                                                                                                                          # 396 
                                                                                                                                                                                          if(EN <= EIN[30]):
                                                                                                                                                                                                pass
                                                                                                                                                                                          else:
                                                                                                                                                                                                QIN[30][I]=0.0920/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[30])
                                                                                                                                                                                                if(QIN[30][I]< 0.0):
                                                                                                                                                                                                      QIN[30][I]=0.0
                                                                                                                                                                                                if(EN <= (2.0*EIN[30])):
                                                                                                                                                                                                      pass
                                                                                                                                                                                                else:
                                                                                                                                                                                                      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
                                                                                                                                                                                                # 4D5 F=0.0019
                                                                                                                                                                                                # 399 
                                                                                                                                                                                                if(EN <= EIN[31]):
                                                                                                                                                                                                      pass
                                                                                                                                                                                                else:
                                                                                                                                                                                                      QIN[31][I]=0.0019/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[31])
                                                                                                                                                                                                      if(QIN[31][I]< 0.0):
                                                                                                                                                                                                            QIN[31][I]=0.0
                                                                                                                                                                                                      if(EN <= (2.0*EIN[31])):
                                                                                                                                                                                                            pass
                                                                                                                                                                                                      else:
                                                                                                                                                                                                            PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
                                                                                                                                                                                                      # 3S4 F=0.0144
                                                                                                                                                                                                      # 400 
                                                                                                                                                                                                      if(EN <= EIN[32]):
                                                                                                                                                                                                            pass
                                                                                                                                                                                                      else:
                                                                                                                                                                                                            QIN[32][I]=0.0144/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[32])
                                                                                                                                                                                                            if(QIN[32][I]< 0.0):
                                                                                                                                                                                                                  QIN[32][I]=0.0
                                                                                                                                                                                                            if(EN <= (2.0*EIN[32])):
                                                                                                                                                                                                                  pass
                                                                                                                                                                                                            else:
                                                                                                                                                                                                                  PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
                                                                                                                                                                                                            # 4D2 F=0.0484
                                                                                                                                                                                                            # 401 
                                                                                                                                                                                                            if(EN <= EIN[33]):
                                                                                                                                                                                                                  pass
                                                                                                                                                                                                            else:
                                                                                                                                                                                                                  QIN[33][I]=0.0484/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[33])
                                                                                                                                                                                                                  if(QIN[33][I]< 0.0):
                                                                                                                                                                                                                        QIN[33][I]=0.0
                                                                                                                                                                                                                  if(EN <= (2.0*EIN[33])):
                                                                                                                                                                                                                        pass
                                                                                                                                                                                                                  else:
                                                                                                                                                                                                                        PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
                                                                                                                                                                                                                  # 4S1' F=0.0209
                                                                                                                                                                                                                  # 402 
                                                                                                                                                                                                                  if(EN <= EIN[34]):
                                                                                                                                                                                                                        pass
                                                                                                                                                                                                                  else:
                                                                                                                                                                                                                        QIN[34][I]=0.0209/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[34])
                                                                                                                                                                                                                        if(QIN[34][I]< 0.0):
                                                                                                                                                                                                                              QIN[34][I]=0.0
                                                                                                                                                                                                                        if(EN <= (2.0*EIN[34])):
                                                                                                                                                                                                                              pass
                                                                                                                                                                                                                        else:
                                                                                                                                                                                                                              PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
                                                                                                                                                                                                                        # 3S2  F=0.0220
                                                                                                                                                                                                                        # 403 
                                                                                                                                                                                                                        if(EN <= EIN[35]):
                                                                                                                                                                                                                              pass
                                                                                                                                                                                                                        else:
                                                                                                                                                                                                                              QIN[35][I]=0.0220/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[35])
                                                                                                                                                                                                                              if(QIN[35][I]< 0.0):
                                                                                                                                                                                                                                    QIN[35][I]=0.0
                                                                                                                                                                                                                              if(EN <= (2.0*EIN[35])):
                                                                                                                                                                                                                                    pass
                                                                                                                                                                                                                              else:
                                                                                                                                                                                                                                    PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
                                                                                                                                                                                                                              # 5D5  F=0.0041
                                                                                                                                                                                                                              # 404 
                                                                                                                                                                                                                              if(EN <= EIN[36]):
                                                                                                                                                                                                                                    pass
                                                                                                                                                                                                                              else:
                                                                                                                                                                                                                                    QIN[36][I]=0.0041/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[36])
                                                                                                                                                                                                                                    if(QIN[36][I]< 0.0):
                                                                                                                                                                                                                                          QIN[36][I]=0.0
                                                                                                                                                                                                                                    if(EN <= (2.0*EIN[36])):
                                                                                                                                                                                                                                          pass
                                                                                                                                                                                                                                    else:
                                                                                                                                                                                                                                          PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
                                                                                                                                                                                                                                    # 4S4  F=0.0426
                                                                                                                                                                                                                                    # 405 
                                                                                                                                                                                                                                    if(EN <= EIN[37]):
                                                                                                                                                                                                                                          pass
                                                                                                                                                                                                                                    else:
                                                                                                                                                                                                                                          QIN[37][I]=0.0426/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[37])
                                                                                                                                                                                                                                          if(QIN[37][I]< 0.0):
                                                                                                                                                                                                                                                QIN[37][I]=0.0
                                                                                                                                                                                                                                          if(EN <= (2.0*EIN[37])):
                                                                                                                                                                                                                                                pass
                                                                                                                                                                                                                                          else:
                                                                                                                                                                                                                                                PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
                                                                                                                                                                                                                                          # 5D2  F=0.0426
                                                                                                                                                                                                                                          # 406 
                                                                                                                                                                                                                                          if(EN <= EIN[38]):
                                                                                                                                                                                                                                                pass
                                                                                                                                                                                                                                          else:
                                                                                                                                                                                                                                                QIN[38][I]=0.0426/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[38])
                                                                                                                                                                                                                                                if(QIN[38][I]< 0.0):
                                                                                                                                                                                                                                                      QIN[38][I]=0.0
                                                                                                                                                                                                                                                if(EN <= (2.0*EIN[38])):
                                                                                                                                                                                                                                                      pass
                                                                                                                                                                                                                                                else:
                                                                                                                                                                                                                                                      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
                                                                                                                                                                                                                                                # 6D5  F=0.00075
                                                                                                                                                                                                                                                # 407 
                                                                                                                                                                                                                                                if(EN <= EIN[39]):
                                                                                                                                                                                                                                                      pass
                                                                                                                                                                                                                                                else:
                                                                                                                                                                                                                                                      QIN[39][I]=.00075/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[39])
                                                                                                                                                                                                                                                      if(QIN[39][I]< 0.0):
                                                                                                                                                                                                                                                            QIN[39][I]=0.0
                                                                                                                                                                                                                                                      if(EN <= (2.0*EIN[39])):
                                                                                                                                                                                                                                                            pass
                                                                                                                                                                                                                                                      else:
                                                                                                                                                                                                                                                            PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
                                                                                                                                                                                                                                                      # 5S1' F=0.00051
                                                                                                                                                                                                                                                      # 408 
                                                                                                                                                                                                                                                      if(EN <= EIN[40]):
                                                                                                                                                                                                                                                            pass
                                                                                                                                                                                                                                                      else:
                                                                                                                                                                                                                                                            QIN[40][I]=.00051/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[40])
                                                                                                                                                                                                                                                            if(QIN[40][I]< 0.0):
                                                                                                                                                                                                                                                                  QIN[40][I]=0.0
                                                                                                                                                                                                                                                            if(EN <= (2.0*EIN[40])):
                                                                                                                                                                                                                                                                  pass
                                                                                                                                                                                                                                                            else:
                                                                                                                                                                                                                                                                  PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
                                                                                                                                                                                                                                                            # 4S2  F=0.00074
                                                                                                                                                                                                                                                            # 409 
                                                                                                                                                                                                                                                            if(EN <= EIN[41]):
                                                                                                                                                                                                                                                                  pass
                                                                                                                                                                                                                                                            else:
                                                                                                                                                                                                                                                                  QIN[41][I]=.00074/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[41])
                                                                                                                                                                                                                                                                  if(QIN[41][I]< 0.0):
                                                                                                                                                                                                                                                                        QIN[41][I]=0.0
                                                                                                                                                                                                                                                                  if(EN <= (2.0*EIN[41])):
                                                                                                                                                                                                                                                                        pass
                                                                                                                                                                                                                                                                  else:
                                                                                                                                                                                                                                                                        PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
                                                                                                                                                                                                                                                                  # 5S4  F=0.0130 
                                                                                                                                                                                                                                                                  # 410 
                                                                                                                                                                                                                                                                  if(EN <= EIN[42]):
                                                                                                                                                                                                                                                                        pass
                                                                                                                                                                                                                                                                  else:
                                                                                                                                                                                                                                                                        QIN[42][I]=0.0130/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[42])
                                                                                                                                                                                                                                                                        if(QIN[42][I]< 0.0):
                                                                                                                                                                                                                                                                              QIN[42][I]=0.0
                                                                                                                                                                                                                                                                        if(EN <= (2.0*EIN[42])):
                                                                                                                                                                                                                                                                              pass
                                                                                                                                                                                                                                                                        else:
                                                                                                                                                                                                                                                                              PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
                                                                                                                                                                                                                                                                        # 6D2  F=0.0290 
                                                                                                                                                                                                                                                                        # 411 
                                                                                                                                                                                                                                                                        if(EN <= EIN[43]):
                                                                                                                                                                                                                                                                              pass
                                                                                                                                                                                                                                                                        else:
                                                                                                                                                                                                                                                                              QIN[43][I]=0.0290/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[43])
                                                                                                                                                                                                                                                                              if(QIN[43][I]< 0.0):
                                                                                                                                                                                                                                                                                    QIN[43][I]=0.0
                                                                                                                                                                                                                                                                              if(EN <= (2.0*EIN[43])):
                                                                                                                                                                                                                                                                                    pass
                                                                                                                                                                                                                                                                              else:
                                                                                                                                                                                                                                                                                    PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
                                                                                                                                                                                                                                                                              # SUM HIGHER J=1 STATES F=0.1315
                                                                                                                                                                                                                                                                              # 412 
                                                                                                                                                                                                                                                                              if(EN <= EIN[44]):
                                                                                                                                                                                                                                                                                    pass
                                                                                                                                                                                                                                                                              else:
                                                                                                                                                                                                                                                                                    QIN[44][I]=0.1315/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[44])
                                                                                                                                                                                                                                                                                    if(QIN[44][I]< 0.0):
                                                                                                                                                                                                                                                                                          QIN[44][I]=0.0
                                                                                                                                                                                                                                                                                    if(EN <= (2.0*EIN[44])):
                                                                                                                                                                                                                                                                                          pass
                                                                                                                                                                                                                                                                                    else:
                                                                                                                                                                                                                                                                                          PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
                  globals().update(locals())
            # 413 CONTINUE
            # BREMSSTRAHLUNG X-SECTION
            QIN[45][I]=0.0
            if(EN <= 1000.):
                  pass
            else:
                  flag415=1
                  for J in range(2,NBREM+1):
                        if(EN <= EBRM[J]):
                              flag415=0
                              break
                  if(flag415):
                        J=NBREM
                  # 415 
                  A=(math.log(Z18T[J])-math.log(Z18T[J-1]))/(EBRM[J]-EBRM[J-1])
                  B=(math.log(Z18T[J])*EBRM[J-1]-math.log(Z18T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
                  QIN[45][I]=math.exp(A*EN+B)*1.e-24
            # 450 CONTINUE     
            Q1SSUM=QIN[1][I]+QIN[2][I]+QIN[3][I]+QIN[4][I] 
            QPSSUM=QIN[5][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]+QIN[9][I]+QIN[10][I]+QIN[11][I]+QIN[12][I]+QIN[13][I]+QIN[14][I]   
            QDSSUM=QIN[17][I]+QIN[18][I]+QIN[19][I]+QIN[20][I]+QIN[21][I]+QIN[22][I]+QIN[23][I]+QIN[24][I]+QIN[25][I]+QIN[26][I]+QIN[27][I]+QIN[28][I]+QIN[29][I]+QIN[30][I]+QIN[31][I]+QIN[32][I]+QIN[33][I]+QIN[34][I]+QIN[35][I]+QIN[36][I]+QIN[37][I]+QIN[38][I]+QIN[39][I]+QIN[40][I]+QIN[41][I]+QIN[42][I]+QIN[43][I]+QIN[44][I]+QIN[15][I]+QIN[16][I]
            TOTSUM=Q1SSUM+QPSSUM+QDSSUM    
            #     WRITE(6,997) EN,QIN[1][I],QIN[2][I],QIN[3][I],QIN[4][I],Q1SSUM,QPSSUM,
            #    /QDSSUM,TOTSUM
            # 997 print(' EN =',D12.5,' Q1S5 =','%.3f' %,' Q1S4 =','%.3f' %,' Q1S3 =',
            #    /'%.3f' %,' Q1S2 =','%.3f' %,/,'S1 =','%.3f' %,' P2=','%.3f' %,' D3 =','%.3f' %,
            #    /' QTOT=','%.3f' %)  
            #  TOTAL X-SECTION
            Q[1][I]=QELA+Q1SSUM+QPSSUM+QDSSUM+QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]+QIN[45][I]  
            globals().update(locals())
            return 1
      complete=0
      for I in range(1,NSTEP+1):
            EN=EG[I]
            #     EN=EN+ESTEP
            if(EN > EIN[1]):
                  GAMMA1=(EMASS2+2.00*EN)/EMASS2
                  GAMMA2=GAMMA1*GAMMA1
                  BETA=math.sqrt(1.00-1.00/GAMMA2)
                  BETA2=BETA*BETA
            # endif
            if(EN > 1.0):
                  # GO TO 100                                           
                  pass
            else:
                  if(EN == 0.0):
                        QELA=7.491E-16
                  if(EN == 0.0):
                        QMOM=7.491E-16
                  if(EN == 0.0):
                        complete=GOTO200()
                        if(complete):
                              break
                  # print(EN,ARY)                                           
                  AK=math.sqrt(EN/ARY)
                  AK2=AK*AK
                  AK3=AK2*AK  
                  AK4=AK3*AK      
                  # print(AK)
                  # sys.exit()                                          
                  AN0=-AA*AK*(1.0+(4.0*APOL/3.0)*AK2*math.log(AK))-(API*APOL/3.0)*AK2+ DD*AK3+FF*AK4                                                     
                  AN1=(API/15.0)*APOL*AK2-A1*AK3                                    
                  AN2=API*APOL*AK2/105.0                                            
                  AN0=math.atan(AN0)                                                    
                  AN1=math.atan(AN1)                                                    
                  AN2=math.atan(AN2)
                  ANHIGH=AN2                                                    
                  SUM=(numpy.sin(AN0-AN1))**2                                            
                  SUM=SUM+2.0*(numpy.sin(AN1-AN2))**2
                  SIGEL=(numpy.sin(AN0))**2+3.0*(numpy.sin(AN1))**2                           
                  for J in range(2,LMAX-1+1):
                        ANLOW=ANHIGH                                                  
                        SUMI=6.0/((2.0*J+5.0)*(2.0*J+3.0)*(2.0*J+1.0)*(2.0*J-1.0))        
                        SUM=SUM+(J+1.0)*(numpy.sin(math.atan(API*APOL*AK2*SUMI)))**2
                        ANHIGH=math.atan(API*APOL*AK2/((2.0*J+5.0)*(2.0*J+3.0)*(2.0*J+1.0)))
                        SIGEL=SIGEL+(2.0*J+1.0)*(numpy.sin(ANLOW))**2             
                  QELA=SIGEL*4.0*PIR2/AK2                                           
                  QMOM=SUM*4.0*PIR2/AK2   
                  complete=GOTO200()
                  if(complete):
                        break
            # 100 CONTINUE       
            flag120=1      
            for J in range(2,NDATA+1):
                  if(EN <= XEN[J]):
                        flag120=0
                        break
                  # 110 CONTINUE
            if(flag120):
                  J=NDATA
            A=(YEL[J]-YEL[J-1])/(XEN[J]-XEN[J-1])
            B=(XEN[J-1]*YEL[J]-XEN[J]*YEL[J-1])/(XEN[J-1]-XEN[J])
            QELA=(A*EN+B)*1.0e-16                             
            A=(YSEC[J]-YSEC[J-1])/(XEN[J]-XEN[J-1])                         
            B=(XEN[J-1]*YSEC[J]-XEN[J]*YSEC[J-1])/(XEN[J-1]-XEN[J])         
            QMOM=(A*EN+B)*1.0E-16  
            GOTO200()
      # 900 CONTINUE                                                          
      # SAVE COMPUTE TIME
      if(complete):
            pass
      else:
            for K in range(1,NIN+1):
                  if(EFINAL <= EIN[K]):
                        NIN=K-1
                        break
                  # endif
                  # 910 CONTINUE
            # 911 CONTINUE
            if(EFINAL > 1000.):
                  NIN=45
            #   
      conf.ECHARG=ECHARG
      conf.EMASS=EMASS
      conf.AMU=AMU
      conf.PIR2=PIR2
      conf.NGAS=NGAS
      conf.NSTEP=NSTEP
      conf.NANISO=NANISO
      conf.EFINAL=EFINAL
      conf.ESTEP=ESTEP
      conf.AKT=AKT
      conf.ARY=ARY
      conf.TEMPC=TEMPC
      conf.TORR=TORR
      conf.IPEN=IPEN
      conf.E=EG
      conf.EROOT=EROOT
      conf.QT1=QT1
      conf.QT2=QT2
      conf.QT3=QT3
      conf.QT4=QT4
      conf.DEN=DEN
      print("Gas2 NATT=",NATT)
      return Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT
      # end 
'''
def GAS3(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
      IMPLICIT #real*8 (A-H,O-Z)                                         
      IMPLICIT #integer*8 (I-N)
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]    
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]  
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(144),YEM(144),YEL(144),YEPS(144),XION(90),YION(90),YINC(90),X23S(139),Y23S(139),X21S(128),Y21S(128),X23P(128),Y23P(128),X21P(125),Y21P(125),X33S(106),Y33S(106),X31S(87),Y31S(87),X33P(91),Y33P(91),X33D[108],Y33D[108],X31D[94],Y31D[94],X31P(114),Y31P(114),X43S[59],Y43S[59],X41S[55],Y41S[55],X43P(76),Y43P(76),X43D[65],Y43D[65],X41D[53],Y41D[53],X43F[40],Y43F[40],X41F[57],Y41F[57],X41P(96),Y41P(96),IOFFN[49],IOFFION[2]  
      DIMENSION Z2T[25],EBRM[25] 
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME  
      # ELASTIC                            
      XEN=[0.00,.008,.009,0.01,.013,.017,.020,.025,0.03,0.04, 0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.15,0.18,0.20,                0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.20,                1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,                9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,25.0,30.0,                35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,6000.,8000.,10000.,1.25D4,1.5D4,2.0D4,2.5'%.3f' %.0D4,4.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MOMENTUM TRANSFER           
      YEM=[4.89,5.18,5.19,5.21,5.26,5.31,5.35,5.41,5.46,5.54,     5.62,5.68,5.74,5.79,5.83,5.86,5.94,6.04,6.12,6.16,                6.27,6.35,6.49,6.59,6.66,6.73,6.77,6.82,6.85,6.91,                6.96,6.98,6.99,6.96,6.89,6.62,6.31,6.00,5.68,5.35,                5.03,4.72,4.45,4.20,3.68,3.28,2.95,2.64,2.05,1.63,                1.33,1.09,.785,.590,.465,.375,.309,.262,.179,.132,.0807,.0549,.0400,.0242,.0164,.0119,.00716,.00482,.00234,.0014,.000676,4.03e-4,1.93e-4,1.15e-4,7.65e-5,5.10e-5,3.66e-5,2.17e-5,1.45e-5,1.04e-5,6.18e-6,2.99e-6,1.71e-6,1.21e-6,8.26e-7,6.05e-7,4.66e-7,3.73e-7,2.58e-7,1.92e-7,1.50e-7,1.22e-7,1.01e-7,8.59e-8,6.48e-8,5.11e-8,4.17e-8,3.48e-8,2.96e-8,2.10e-8,1.58e-8,1.24e-8,1.01e-8,7.05e-9,5.24e-9,4.07e-9,3.25e-9,2.67e-9,2.23e-9,1.63e-9,1.25e-9,9.89e-10,8.04e-10,6.67e-10,4.47e-10,3.22e-10,2.43e-10,1.91e-10,1.27e-10,9.04e-11,6.79e-11,5.29e-11,4.24e-11,3.48e-11,2.46e-11,1.84e-11,1.42e-11,1.13e-11,9.26e-12,6.00e-12,4.20e-12,3.10e-12,2.38e-12,1.53e-12,1.06e-12,7.82e-13,5.99e-13,4.74e-13,3.84e-13,2.67e-13,1.96e-13,1.50e-13,1.19e-13,9.62e-14]  
      # ELASTIC TOTAL                                 
      YEL=[4.89,5.19,5.20,5.21,5.26,5.29,5.33,5.37,5.41,5.47,5.53,5.58,5.62,5.66,5.69,5.70,5.76,5.83,5.88,5.90,5.96,6.01,6.08,6.12,6.14,6.16,6.16,6.17,6.16,6.16,6.14,6.11,6.09,6.01,5.90,5.60,5.36,5.10,4.91,4.70,4.51,4.32,4.21,4.10,3.75,3.49,3.27,3.03,2.54,2.14,1.83,1.61,1.27,1.06,.884,.746,.652,.580,.460,.355,.244,.194,.150,.117,.087,.071,.052,.041,.028,.022,.014,.0108,.00722,.00544,.00437,.00352,.00295,.00224,.00182,.00154,.00118,.000830,.000654,.000550,.000466,.000411,.000371,.000342,.000301,.000274,.000255,.000241,.000230,.000222,.000209,.000201,.000195,.000190,.000186,.000180,.000177,.000174,.000172,.000170,.000169,.000168,.000167,.000167,.000167,.000166,.000166,.000166,.000166,.000166,30*.000165]
      # ANGULAR DISTRIBUTION PARAMETER EPSILON
      # EPSILON = 1.0-YEPS
      YEPS=[1.0,.99711,.99712,1.0,1.0,1.00562,1.00565,1.01118,1.01386,1.01920,1.02440,1.02688,1.03202,1.03445,1.03689,1.04209,1.04686,1.05400,1.06119,1.06604,1.07792,1.08474,1.10094,1.11490,1.12663,1.13826,1.14789,1.15724,1.16707,1.18142,1.19873,1.21165,1.21951,1.23447,1.24855,1.26918,1.26215,1.26104,1.23265,1.20568,1.17192,1.13835,1.08539,1.03657,.97200,.90989,.85384,.80836,.71541,.65146,.60355,.53739,.46277,.38963,.35522,.32989,.29979,.27742,.21850,.20332,.16921,.13304,.12155,.08318,.07263,.06130,.04637,.03720,.02338,.016295,.011386,.008195,.005394,.004037,.003205,.002548,.002113,.001572,.001246,.001044,7.61e-4,4.925e-4,3.404e-4,2.803e-4,2.179e-4,1.766e-4,1.475e-4,1.258e-4,9.60e-5,7.65e-5,6.29e-5,5.29e-5,4.53e-5,3.93e-5,3.07e-5,2.47e-5,2.04e-5,1.72e-5,1.47e-5,1.05e-5,7.84e-6,6.12e-6,4.91e-6,3.373e-6,2.463e-6,1.881e-6,1.483e-6,1.200e-6,9.91e-7,7.09e-7,5.322e-7,4.146e-7,3.319e-7,2.718e-7,1.775e-7,1.249e-7,9.27e-8,7.15e-8,4.62e-8,3.23e-8,2.382e-8,1.828e-8,1.447e-8,1.173e-8,8.14e-9,5.97e-9,4.56e-9,3.59e-9,2.90e-9,1.83e-9,1.26e-9,9.10e-10,6.90e-10,4.40e-10,3.00e-10,2.16e-10,1.63e-10,1.27e-10,1.02e-10,7.0D-11,5.1D-11,3.8D-11,3.0D-11,2.4D-11]
      #  IONISATION (VALUES ABOVE 20KEV GENERATED BY BORN-BETHE IN SUB)
      XION=[24.58739,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0,30.5,31.0,31.5,32.0,32.5,33.0,33.5,34.0,    36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,170.,180.,190.,200., 225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,               650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,1.0D4,1.2D4,1.4D4,1.6D4,1.8D4,2.0D4]
      # GROSS IONISATION 
      YION=[.0,.0038,.0094,.0155,.0218,.0279,.0336,.0392,.0446,.0504,.0561,.0612,.0667,.0722,.0773,.0826,.0878,.0929,.0981,.103,.121,.138,.154,.188,.219,.242,.262,.276,.290,.301,.311,.319,.326,.333,.336,.338,.340,.341,.342,.342,.343,.342,.341,.340,.338,.335,.332,.326,.322,.316, .302,.290,.279,.268,.246,.231,.216,.203,.191,.180,              
      ..171,.163,.155,.148,.142,.136,.130,.125,.109,.097,.0872,.0795,.0729,.0608,.0524,.0458,.0410,.0368,.0336,.0311,.0293,.0255,.0229,.0206,.0192,.0164,.0147,.0130,.0119,.0108/
      # COUNTING IONISATION      
      YINC=[.0,.0038,.0094,.0155,.0218,.0279,.0336,.0392,.0446,.0504,.0561,.0612,.0667,.0722,.0773,.0826,.0878,.0929,.0981,.103,.121,.138,.154,.188,.219,.242,.262,.276,.290,.301,.311,.319,.326,.333,.336,.338,.340,.341,.341,.341,.342,.341,.340,.339,.337,.334,.331,.325,.321,.315,.301,.289,.278,.267,.245,.230,.215,.202,.190,.179,           .170,.162,.154,.147,.141,.135,.129,.124,.108,.096,.0867,.0791,.0725,.0605,.0522,.0456,.0408,.0367,.0335,.0310,.0292,.0254,.0228,.0205,.0191,.0163,.0146,.0129,.0118,.0107]
      #  ALL EXCITATIONS IN UNITS OF 10**-18
      #  2 3S J=1 METASTABLE
      X23S=[19.81961,19.83,19.85,19.88,19.9,19.95,20.0,20.05,20.1,20.15,20.2,20.25,20.3,20.35,20.4,20.45,20.50,20.55,20.6,20.63,20.66,20.7,20.75,20.8,20.85,20.90,20.94,20.97,21.0,21.05,21.1,21.15,21.2,21.25,21.3,21.4,21.5,22.0,22.2,22.25,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.52,22.55,22.6,22.62,22.64,22.66,22.68,22.7,22.71,22.72,22.75,22.8,22.85,22.88,22.9,22.95,22.97,23.0,23.05,23.1,23.3,23.4,23.5,23.6,23.8,24.0,24.5,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1500.,1600.,1700.,1800.,1900.,2000.]
      Y23S=[0.00,.780,1.16,1.64,1.98,2.81,3.53,4.13,4.61,4.96,5.20,5.35,5.41,5.36,5.21,4.95,4.63,4.23,3.66,3.16,3.04,3.13,3.41,3.77,4.14,4.44,4.54,4.43,4.27,3.96,3.69,3.48,3.32,3.21,3.15,3.08,3.06,3.09,3.08,3.04,2.97,2.84,2.25,1.58,1.83,4.91,4.45,4.13,3.95,3.79,3.60,3.51,3.07,2.45,2.61,2.67,2.36,2.97,3.01,2.96,2.87,2.61,3.04,2.75,3.16,3.06,2.90,2.79,2.81,2.86,2.75,2.80,2.71,2.65,2.58,2.48,2.39,2.30,2.19,2.09,1.98,1.84,1.73,1.53,1.36,1.22,1.09,.985,.892,.812,.742,.680,.555,.461,.389,.332,.287,.250,.220,.194,.154,.125,.103,.0861,.0726,.0617,.0529,.0397,.0305,.0239,.0191,.0154,.0126,.0105,.00740,.00542,.00407,.00314,.00247,.00187,.00145,.00115,9.23e-4,7.53e-4,6.22e-4,5.20e-4,4.39e-4,3.74e-4,3.21e-4,2.42e-4,1.86e-4,1.47e-4,1.18e-4,9.57e-5,7.89e-5,6.58e-5,5.54e-5,4.71e-5,4.04e-5]
      # 2 1S J=0 METASTABLE
      X21S=[20.61577,20.62,20.63,20.65,20.67,20.69,20.72,20.75,20.80,20.85,20.90,20.96,20.98,21.0,21.05,21.1,21.15,21.2,21.22,21.25,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.25,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.55,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.68,22.7,22.71,22.72,22.73,22.75,22.78,22.8,22.85,22.87,22.88,22.89,22.9,22.91,22.92,22.93,22.94,22.95,22.96,22.97,22.98,22.99,23.0,23.01,23.05,23.1,23.2,23.3,23.4,23.5,23.6,23.8,24.0,24.2,24.4,24.7,25.0,26.0,28.0,30.0,32.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,90.0,100.,110.,120.,140.,170.,200.,240.,280.,320.,360.,400.,450.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1400.,1600.,1800.,2000.,2200.,2400.,2700.,3000.]
      Y21S=[0.00,.406,.477,.664,.820,.946,1.10,1.24,1.47,1.72,2.03,2.52,2.40,2.39,2.39,2.42,2.46,2.53,2.55,2.53,2.52,2.53,2.57,2.59,2.62,2.64,2.65,2.65,2.65,2.62,2.59,2.53,2.42,2.14,1.86,2.17,3.35,3.01,2.79,2.34,1.80,1.88,2.53,3.37,3.64,3.55,3.42,3.23,2.95,2.45,1.84,2.32,2.49,2.60,2.62,2.57,2.40,2.57,2.59,2.32,1.73,2.55,2.36,2.35,2.32,2.23,2.50,2.64,2.61,1.86,2.28,2.53,2.35,2.39,2.44,2.51,2.48,2.45,2.44,2.49,2.57,2.63,2.56,2.54,2.53,2.51,2.45,2.35,2.21,2.05,1.88,1.75,1.65,1.56,1.48,1.41,1.30,1.21,1.14,1.08,1.03,.948,.850,.771,.686,.617,.560,.512,.471,.428,.392,.361,.335,.312,.292,.259,.233,.211,.193,.178,.154,.136,.121,.109,.0997,.0916,.0817,.0737]
      # 2 3P J=2,1,0 
      X23P=[20.96409,20.97,21.0,21.05,21.1,21.15,21.2,21.25,21.3,21.35,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.45,22.5,22.55,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.67,22.68,22.69,22.7,22.71,22.72,22.73,22.75,22.77,22.8,22.85,22.88,22.9,22.91,22.92,22.93,22.96,22.97,22.99,23.0,23.04,23.06,23.07,23.08,23.1,23.2,23.3,23.4,23.5,23.6,23.7,23.8,23.9,24.0,24.2,24.4,24.6,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2300.,2600.,3000.]
      Y23P=[0.00,.0936,.241,.442,.611,.761,.912,1.03,1.10,1.17,1.23,1.32,1.40,1.47,1.54,1.60,1.66,1.73,1.80,1.87,1.94,2.05,2.07,2.09,2.22,2.48,2.68,2.60,2.27,1.78,1.45,1.43,1.52,1.59,1.60,1.45,1.47,1.70,1.83,1.91,1.95,1.93,2.32,1.98,1.72,2.23,2.09,2.12,2.07,2.17,1.82,2.18,1.80,1.82,1.94,1.94,1.90,1.88,1.89,2.00,2.16,2.21,2.14,2.08,2.09,2.03,2.16,2.26,2.29,2.41,2.47,2.48,2.47,2.43,2.30,2.15,2.00,1.84,1.69,1.55,1.43,1.31,1.21,1.11,.907,.748,.622,.522,.441,.375,.322,.277,.241,.210,.162,.127,.101,.0812,.0663,.0547,.0455,.0382,.0324,.0277,.0206,.0156,.0121,.00961,.00772,.00518,.00363,.00264,.00197,.00151,.00118,8.48e-4,5.21e-4,3.42e-4,2.37e-4,1.70e-4,9.65e-5,5.99e-5,3.96e-5,2.76e-5,2.00e-5,1.30e-5,8.94e-6,5.78e-6]
      # 2 1P RESONANCE RADIATION J=1   58.434 NM       OSC STRENGTH F=0.27608  
      X21P=[21.21802,21.23,21.25,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.55,22.57,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.68,22.7,22.71,22.72,22.73,22.75,22.8,22.85,22.87,22.88,22.9,22.91,22.94,22.96,22.97,22.98,22.99,23.0,23.01,23.05,23.1,23.2,23.3,23.4,23.5,23.6,23.7,23.8,23.9,24.0,24.2,24.4,24.6,24.8,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,240.,280.,320.,360.,400.,450.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1300.,1400.]
      Y21P=[0.00,.0519,.0884,.163,.290,.397,.493,.582,.666,.748,.831,.914,.994,1.06,1.09,1.10,1.10,1.36,1.46,1.35,1.32,1.30,1.28,1.19,1.07,.943,.922,.941,.872,.751,.737,.959,1.13,1.17,.920,1.03,1.12,1.23,1.35,1.27,1.18,1.22,1.03,1.14,1.12,1.38,1.29,1.25,1.38,1.24,1.12,1.13,1.11,1.12,1.16,1.30,1.41,1.44,1.41,1.37,1.39,1.42,1.52,1.70,1.80,1.89,2.16,2.42,2.69,2.96,3.24,3.53,3.82,4.12,4.42,4.71,5.00,5.29,5.57,5.85,6.12,6.63,7.10,7.53,7.93,8.28,8.61,8.90,9.16,9.39,9.60,9.95,10.2,10.4,10.6,10.7,10.7,10.8,10.8,10.7,10.6,10.4,10.2,10.0,9.57,9.13,8.71,7.96,7.33,6.79,6.32,5.92,5.50,5.13,4.82,4.54,4.30,4.08,3.72,3.41,3.16,2.95,2.76,2.60,2.46]
      # 3 3S J=1 
      X33S=[22.71847,22.72,22.73,22.74,22.75,22.78,22.8,22.83,22.85,22.86,22.87,22.88,22.89,22.9,22.91,22.912,22.914,22.916,22.92,22.94,22.96,22.98,23.0,23.02,23.05,23.1,23.2,23.25,23.3,23.35,23.4,23.44,23.48,23.52,23.57,23.59,23.62,23.65,23.7,23.75,23.82,23.89,23.93,24.0,24.4,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.]
      Y33S=[0.00,.800,1.15,1.03,.985,.854,.812,.752,.644,.503,.277,1.79,1.17,1.06,1.32,1.51,1.57,1.37,.896,.848,.907,.816,.838,.656,.872,.859,.890,.900,.860,.750,.620,.810,.770,.960,.870,.870,.730,.710,.710,.730,.770,.690,.760,.742,.725,.694,.665,.635,.605,.577,.550,.524,.499,.452,.409,.370,.336,.305,.278,.253,.231,.212,.178,.151,.130,.112,.0968,.0817,.0696,.0597,.0516,.0449,.0393,.0306,.0242,.0195,.0160,.0132,.0111,.00938,.00800,.00596,.00456,.00356,.00284,.00230,.00188,.00131,9.53e-4,7.13e-4,5.47e-4,4.29e-4,3.25e-4,2.52e-4,1.99e-4,1.60e-4,1.31e-4,1.08e-4,9.02e-5,7.62e-5,6.49e-5,5.58e-5,4.20e-5,3.25e-5,2.56e-5,2.06e-5]
      # 3 1S J=0
      X31S=[22.92032,22.96,22.985,23.02,23.05,23.07,23.1,23.15,23.2,23.25,23.3,23.33,23.36,23.39,23.41,23.45,23.48,23.51,23.54,23.56,23.59,23.62,23.65,23.68,23.73,23.82,23.88,23.94,24.0,25.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,65.0,70.0,75.0,80.0,90.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.,1100.,1200.,1300.,1400.,1500.,1600.,1800.,2000.,2400.,2800.,3200.,3600.,4000.]
      Y31S=[0.00,.535,.457,.587,.490,.490,.478,.491,.506,.512,.501,.470,.418,.374,.351,.371,.520,.681,.520,.467,.496,.410,.442,.429,.416,.455,.377,.444,.422,.426,.428,.429,.425,.419,.412,.402,.396,.387,.370,.354,.338,.324,.311,.296,.283,.271,.260,.242,.226,.213,.203,.193,.185,.172,.161,.152,.144,.137,.131,.125,.120,.111,.103,.0957,.0894,.0839,.0778,.0725,.0678,.0636,.0599,.0566,.0509,.0462,.0423,.0389,.0361,.0336,.0315,.0296,.0264,.0238,.0199,.0171,.0150,.0133,.0120]
      # 3 3P J=2,1,0
      X33P=[23.00707,23.02,23.03,23.04,23.05,23.06,23.07,23.08,23.1,23.2,23.3,23.4,23.5,23.55,23.6,23.65,23.7,23.8,23.9,24.0,24.1,24.2,24.3,24.4,24.6,24.8,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y33P=[0.00,.387,.410,.179,.148,.335,.381,.282,.280,.309,.332,.359,.411,.416,.405,.448,.438,.467,.485,.493,.500,.515,.517,.513,.503,.508,.512,.516,.515,.524,.544,.539,.523,.500,.474,.446,.392,.342,.297,.259,.226,.197,.173,.152,.134,.118,.102,.0878,.0762,.0665,.0512,.0401,.0318,.0255,.0208,.0171,.0142,.0119,.00854,.00632,.00479,.00371,.00292,.00234,.00157,.00109,7.93e-4,5.92e-4,4.53e-4,3.34e-4,2.53e-4,1.96e-4,1.55e-4,1.24e-4,1.01e-4,8.37e-5,6.99e-5,5.89e-5,5.02e-5,3.72e-5,2.83e-5,2.21e-5,1.75e-5,1.16e-5,8.05e-6,5.82e-6,4.34e-6,3.32e-6,2.60e-6,2.07e-6,1.68e-6]
      # 3 3D J=3,2,1
      X33D=[23.07365,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.55,23.6,23.66,23.7,23.75,23.8,23.85,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.25,24.3,24.35,24.4,24.45,24.5,24.55,24.6,24.65,24.7,24.8,24.9,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,650.,700.,750.,800.,850.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y33D=[0.00,.00956,.0236,.0401,.0602,.0861,.120,.166,.222,.229,.238,.197,.123,.118,.110,.112,.104,.110,.099,.0985,.113,.107,.109,.114,.118,.119,.118,.116,.113,.105,.112,.116,.118,.119,.120,.120,.119,.115,.118,.121,.121,.120,.113,.105,.0958,.0867,.0780,.0701,.0628,.0563,.0505,.0453,.0407,.0366,.0330,.0298,.0269,.0221,.0183,.0152,.0127,.0107,.00868,.00712,.00588,.00490,.00347,.00252,.00188,.00142,.00110,8.64e-4,5.56e-4,3.76e-4,2.64e-4,1.92e-4,1.44e-4,1.10e-4,8.60e-5,6.84e-5,5.53e-5,4.53e-5,3.76e-5,3.15e-5,2.28e-5,1.70e-5,1.30e-5,1.02e-5,8.12e-6,6.25e-6,4.92e-6,3.94e-6,3.21e-6,2.64e-6,2.21e-6,1.58e-6,1.17e-6,8.95e-7,6.98e-7,5.55e-7,3.67e-7,2.56e-7,1.85e-7,1.38e-7,1.06e-7,8.32e-8,6.64e-8,5.38e-8]
      # 3 1D J=2
      X31D=[23.07407,23.08,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.55,23.6,23.66,23.7,23.75,23.8,23.85,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.25,24.3,24.35,24.4,24.45,24.5,24.6,24.7,24.8,25.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,90.0,100.,110.,120.,140.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,370.,400.,440.,480.,520.,560.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y31D=[0.00,.097,.0973,.110,.126,.148,.175,.200,.221,.237,.235,.198,.185,.192,.168,.181,.189,.172,.193,.184,.190,.209,.206,.211,.214,.215,.212,.206,.199,.191,.174,.177,.179,.180,.181,.180,.180,.188,.198,.209,.217,.224,.229,.232,.234,.235,.234,.233,.228,.222,.215,.207,.199,.190,.180,.163,.148,.135,.124,.105,.0913,.0803,.0715,.0643,.0584,.0534,.0492,.0456,.0424,.0397,.0361,.0332,.0299,.0272,.0249,.0230,.0213,.0196,.0181,.0156,.0138,.0124,.0112,.0102,.00938,.00868,.00756,.00669,.00600,.00544,.00497,.00458,.00425,.00396]
      # 3 1P  RESONANCE RADIATION J=1  53.703 NM     OSC STRENGTH F=0.07342
      X31P=[23.08702,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.54,23.56,23.60,23.64,23.68,23.7,23.75,23.80,23.88,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.3,24.4,24.5,24.6,24.7,24.8,25.0,25.2,25.4,25.6,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.,3400.,3800.,4200.,4600.,5000.,5500.,6000.,6500.,7000.,8000.,9000.,10000.]
      Y31P=[0.00,.114,.129,.137,.137,.134,.131,.130,.128,.129,.117,.127,.122,.163,.146,.150,.191,.180,.226,.224,.218,.230,.245,.253,.265,.274,.294,.308,.330,.360,.373,.382,.397,.409,.418,.423,.434,.469,.516,.577,.648,.723,.808,.941,1.07,1.20,1.32,1.43,1.54,1.64,1.74,1.82,1.90,1.97,2.04,2.10,2.15,2.27,2.35,2.42,2.47,2.50,2.52,2.53,2.53,2.52,2.50,2.47,2.42,2.33,2.24,2.14,2.06,1.97,1.90,1.82,1.76,1.64,1.53,1.44,1.36,1.29,1.21,1.15,1.08,1.03,.982,.938,.862,.799,.745,.699,.658,.623,.563,.514,.474,.440,.411,.386,.364,.344,.312,.285,.263,.244,.228,.211,.197,.184,.173,.155,.140,.128]
      # 4 3S J=1
      X43S=[23.59396,23.62,23.65,23.7,23.8,23.9,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.]
      Y43S=[0.0,.314,.304,.292,.276,.266,.260,.243,.238,.234,.227,.212,.195,.178,.162,.147,.133,.121,.110,.100,.0911,.0832,.0761,.0697,.0640,.0589,.0543,.0464,.0399,.0346,.0301,.0264,.0225,.0194,.0168,.0147,.0113,.00894,.00718,.00585,.00483,.00403,.00289,.00214,.00164,.00127,.00101,8.17e-4,6.69e-4,5.55e-4,4.66e-4,3.94e-4,3.37e-4,2.90e-4,2.19e-4,1.70e-4,1.34e-4,1.08e-4,8.81e-5]
      # 4 1S J=0
      X41S=[23.67357,23.7,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,65.0,70.0,75.0,80.0,90.0,100.,110.,120.,130.,140.,160.,180.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y41S=[0.0,.109,.110,.111,.112,.121,.128,.133,.138,.141,.143,.146,.148,.147,.146,.144,.139,.134,.129,.123,.118,.113,.108,.103,.0990,.0922,.0868,.0823,.0786,.0753,.0725,.0677,.0636,.0601,.0527,.0469,.0422,.0382,.0349,.0322,.0277,.0243,.0216,.0195,.0177,.0150,.0130,.0114,.0102,.00925,.00845,.00777,.00719,.00669,.00626]
      # 4 3P J=2,1,0
      X43P=[23.70789,23.75,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y43P=[0.0,.085,.110,.118,.152,.177,.194,.205,.211,.215,.215,.209,.200,.189,.178,.167,.156,.146,.136,.127,.110,.0962,.0840,.0736,.0647,.0553,.0475,.0410,.0356,.0310,.0271,.0210,.0165,.0132,.0106,.00865,.00713,.00593,.00498,.00421,.00359,.00266,.00202,.00156,.00123,9.88e-4,8.03e-4,6.60e-4,5.49e-4,4.61e-4,3.90e-4,2.87e-4,2.17e-4,1.67e-4,1.32e-4,1.06e-4,8.18e-5,6.46e-5,5.18e-5,4.22e-5,3.48e-5,2.90e-5,2.45e-5,2.08e-5,1.54e-5,1.17e-5,9.13e-6,7.25e-6,4.78e-6,3.32e-6,2.39e-6,1.78e-6,1.36e-6,1.07e-6,8.50e-7,6.88e-7]
      # 4 3D J=3,2,1
      X43D=[23.73609,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1500.,1600.]
      Y43D=[.0,.0288,.0363,.0407,.0575,.0646,.0681,.0692,.069,.0675,.0629,.0573,.0516,.0461,.0411,.0365,.0325,.0290,.0258,.0231,.0186,.0151,.0123,.0102,.00847,.00681,.00554,.00455,.00378,.00316,.00267,.00194,.00145,.00111,8.61e-4,6.81e-4,5.47e-4,3.66e-4,2.55e-4,1.84e-4,1.37e-4,1.04e-4,8.08e-5,6.39e-5,4.18e-5,2.87e-5,2.05e-5,1.51e-5,1.14e-5,8.32e-6,6.24e-6,4.79e-6,3.75e-6,3.00e-6,2.43e-6,1.99e-6,1.65e-6,1.39e-6,1.18e-6,8.66e-7,6.55e-7,5.08e-7,4.01e-7,3.22e-7,2.63e-7]
      # 4 1D J=2
      X41D=[23.73633,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.]
      Y41D=[0.0,.0791,.0799,.0846,.0902,.0959,.102,.107,.112,.120,.127,.131,.134,.136,.136,.134,.131,.126,.121,.116,.112,.107,.102,.0978,.0927,.0880,.0836,.0796,.0724,.0663,.0610,.0564,.0489,.0430,.0384,.0346,.0314,.0288,.0246,.0215,.0190,.0171,.0155,.0142,.0128,.0117,.0107,.00990,.00860,.00760,.00681,.00616,.00563]
      # 4 3F J=3,4,2
      X43F=[23.73701,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.]
      Y43F=[0.0,.0357,.0318,.0289,.0161,.0117,.00922,.00760,.00642,.00550,.00478,.00418,.00369,.00327,.00291,.00261,.00234,.00211,.00191,.00173,.00144,.00121,.00102,8.68e-4,7.44e-4,5.57e-4,4.25e-4,3.30e-4,2.61e-4,2.09e-4,1.61e-4,1.26e-4,9.98e-5,8.03e-5,6.53e-5,5.36e-5,3.72e-5,2.66e-5,1.96e-5,1.47e-5]
      # 4 1F J=3
      X41F=[23.73701,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.]
      Y41F=[0.0,.0175,.0172,.0160,.0149,.0139,.0130,.0122,.0114,.0108,.0102,.00909,.00819,.00742,.00677,.00619,.00569,.00525,.00487,.00452,.00393,.00346,.00307,.00274,.00246,.00217,.00193,.00173,.00156,.00142,.00129,.00108,9.24e-4,7.99e-4,6.99e-4,6.17e-4,5.50e-4,4.47e-4,3.73e-4,3.19e-4,2.77e-4,2.45e-4,2.19e-4,1.99e-4,1.67e-4,1.45e-4,1.28e-4,1.15e-4,1.04e-4,9.39e-5,8.55e-5,7.86e-5,7.27e-5,6.78e-5,6.35e-5,5.63e-5,5.07e-5]
      # 4 1P RESONANCE RADIATION J=1   52.222 NM    OSC STRENGTH F=0.02986
      X41P=[23.74207,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,640.,680.,720.,760.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.,3400.,3800.,4200.,4600.,5000.,5500.,6000.,6500.,7000.,7500.,8000.,9000.,10000.]
      Y41P=[0.00,.0147,.0242,.0334,.107,.158,.196,.227,.255,.281,.307,.333,.360,.387,.414,.442,.470,.498,.526,.553,.606,.657,.704,.748,.789,.826,.860,.891,.919,.944,.986,1.02,1.05,1.06,1.08,1.09,1.10,1.10,1.10,1.09,1.07,1.05,1.03,1.01,.985,.939,.896,.855,.817,.783,.751,.722,.695,.670,.646,.625,.605,.569,.537,.509,.484,.461,.441,.423,.406,.390,.376,.360,.345,.332,.320,.298,.279,.263,.248,.224,.205,.189,.175,.163,.153,.145,.137,.124,.113,.104,.0969,.0905,.0837,.0779,.0729,.0686,.0648,.0614,.0556,.0510]
      # 5 1P RESONANCE  RADIATION J=1  51.562 NM      F=0.01504
      # 6 1P RESONANCE  RADIATION J=1  51.210 NM      F=0.00863
      # 7 1P RESONANCE  RADIATION J=1  51.000 NM      F=0.00540
      # 8 1P RESONANCE  RADIATION J=1  50.865 NM      F=0.00362
      # 9 1P RESONANCE  RADIATION J=1  50.772 NM      F=0.00253
      # 10 1P RESONANCE RADIATION J=1  50.706 NM      F=0.00184
      # 11 1P RESONANCE RADIATION J=1  50.657 NM      F=0.00138
      # 12 1P RESONANCE RADIATION J=1  50.620 NM      F=0.00106
      # SUM HIGHER 1P LEVELS RESONANCE RADIATION J=1  F=0.00440
      # TOTAL SUM OSCILLATOR STRENGTH = 0.42326
      #
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF 
      Z2T=[42.1,23.5,10.7,5.88,3.25,1.50,.886,.582,.437,.429,.460,.484,.502,.515,.525,.540,.550,.566,.575,.585,.592,.596,.597,.598,.598]
      # UNITS 10**-24
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]

      # --------------------------------------------------------------------
      if(NANISO == 0):
      :
      NAME='HE4  ISOTROPIC   2014    '   
      else: 
      NAME='HE4 ANISOTROPIC  2014    '
      # endif                                         
      # --------------------------------------------------------------------  
      #  HELIUM 4 BEST KNOWN GAS USED AS STANDARD ACCURACY BETTER THAN 0.2%   
      #  AT ALL FIELDS.
      #  2002: UPDATED 1997 TO INCLUDE ANISOTROPIC ELASTIC SCATTTERING
      #  2007: INCREASED FILE UP TO 10 MEV 
      #  2007: NEW ANISTROPIC SCATTERING def INTRODUCED
      #  2007: PENNING FRACTION INTRODUCED
      #  2010: SPLIT EXCITATION INTO 49 LEVELS.
      #  2014: UPDATED IONISATION TO BE CONSISTENT WITH FURSA AND BRAY CCC
      # USED MAINLY THE FOLLOWING THEORETICAL EXCITATION X-SECTIONS:
      # AT RESONANCE ENERGIES USED RMPS CALCULATIONS OF 
      #  BARTSCHAT   J.PHYS B31(1998)L469
      # AT HIGHER ENERGIES USED RALCHENKO AT.NUCL TABLES 94(2008)603
      # AT HIGHEST ENERGIES FOR RESONANCE DIPOLE TRANSITIONS USED BEF SCALING
      # 2013: INTRODUCED IONISATION WITH CAHRGE STATE =2
      # -------------------------------------------------------------------- 
      #
      # BORN-BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=0.489
      C=5.50 
      #
      NION=2
      NATT=1
      NIN=49
      NNULL=0
      IONMODEL=0
      #    
      NBREM=25
      DO 6 J=1,NIN
      IZBR[J]=0
      6 CONTINUE
      IZBR[50]=2
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=NANISO
      NDATA=144
      NIOND=90                                                         
      N23S=139          
      N21S=128
      N23P=128          
      N21P=125                            
      N33S=106
      N31S=87
      N33P=91
      N33D=108
      N31D=94
      N31P=114
      N43S=59
      N41S=55
      N43P=76
      N43D=65
      N41D=53
      N43F=40
      N41F=57
      N41P=96
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(4.00260*AMU)                                      
      E[3]=24.58739
      # ENTER EXCITATION X-SECTION AT 1.4MEV                                   
      E[4]=0.5841e-19
      # ENTER IONISING X-SECTION AT 1.4MEV                            
      E[5]=0.1271e-18
      # ENTER EOBY FOR MINIMUM IONISING PARTICLE         
      E[6]=10.5
      # IONISATION ENERGIES
      EION[1]=24.58739
      EION[2]=79.00515
      LEGAS[1]=0
      LEGAS[2]=0
      ISHELL[1]=0
      ISHELL[2]=0
      # EOBY AT LOW ENERGY
      EOBY[1]=12.0       
      EOBY[2]=65.0       
      # FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1
      EC0[2]=10.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      #
      DO 776 J=1,NION
      DO 777 I=1,20000
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      #
      EIN[1]=19.81961                                                   
      EIN[2]=20.61577
      EIN[3]=20.96409
      EIN[4]=21.21802
      EIN[5]=22.71847
      EIN[6]=22.92032
      EIN[7]=23.00707
      EIN[8]=23.07365
      EIN[9]=23.07407
      EIN[10]=23.08702
      EIN[11]=23.59396
      EIN[12]=23.67357
      EIN[13]=23.70789
      EIN[14]=23.73609
      EIN[15]=23.73633
      EIN[16]=23.73701
      EIN[17]=23.73701
      EIN[18]=23.74207
      EIN[19]=23.97197
      EIN[20]=24.01121
      EIN[21]=24.02822
      EIN[22]=24.04266
      EIN[23]=24.04280
      EIN[24]=24.04315
      EIN[25]=24.04315
      EIN[26]=24.04580
      EIN[27]=24.16900
      EIN[28]=24.19116
      EIN[29]=24.20081
      EIN[30]=24.20916
      EIN[31]=24.20925
      EIN[32]=24.21100
      EIN[33]=24.28456
      EIN[34]=24.29828
      EIN[35]=24.30429
      EIN[36]=24.30954
      EIN[37]=24.30960
      EIN[38]=24.31071
      EIN[39]=24.35810
      EIN[40]=24.36718
      EIN[41]=24.37116
      EIN[42]=24.37468
      EIN[43]=24.37472
      EIN[44]=24.37547
      EIN[45]=24.41989
      EIN[46]=24.45168
      EIN[47]=24.47518
      EIN[48]=24.49308
      EIN[49]=24.50708
      EIN[50]=0.0
      #***********************************************************************
      # ENTER PENNING FRACTION FOR EACH LEVEL
      # PENNING FRACTION BETWEEN 0.9 AND 1.0 FOR ALL MIXTURES
      DO 50 NL=1,NIN
      PENFRA[1,NL]=1.00
      #  PENNING TRANSFER DISTANCE MICRONS
      PENFRA[2,NL]=1.0  
      # PENNING TRANSFER TIME PICOSECONDS
      50 PENFRA[3,NL]=1.0
      # HORNBECK MOLNAR MOD 
      # IF PURE GAS SET TO : 0 FOR FIRST 6 LEVELS 0.25 FOR OTHER LEVELS
      #     PENFRA(1,1)=0.0
      #     PENFRA(1,2)=0.0
      #     PENFRA(1,3)=0.0
      #     PENFRA(1,4)=0.0
      #     PENFRA(1,5)=0.0
      #     PENFRA(1,6)=0.0
      #***********************************************************************
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      4 DO 5 NL=1,NIN
      DO 651 I=1,20000
      if(EG[I]:
      > EIN[NL]) :
      IOFFN[NL]=I-1 
      GO TO 5
      # endif
      651 CONTINUE
      5 CONTINUE
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC            HELIUM 4         '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC   ISOTROPIC            HELIUM 4         '
      # endif
      SCRPT[3]=' IONISATION CHARGE STATE=1         ELOSS= 24.58739'
      SCRPT[4]=' IONISATION CHARGE STATE=2         ELOSS= 79.00515'
      SCRPT[5]=' ATTACHMENT                                       '
      SCRPT[6]='                                                  ' 
      SCRPT[7]='                                                  '
      SCRPT[8]=' EXC  23S J=1    METASTABLE        ELOSS= 19.81961'
      SCRPT[9]=' EXC  21S J=0    METASTABLE        ELOSS= 20.61577'
      SCRPT[10]=' EXC  23P J=2,1,0                  ELOSS= 20.96409'
      SCRPT[11]=' EXC  21P J=1    RESONANT          ELOSS= 21.21802'
      SCRPT[12]=' EXC  33S J=1                      ELOSS= 22.71847'
      SCRPT[13]=' EXC  31S J=0                      ELOSS= 22.92032'
      SCRPT[14]=' EXC  33P J=2,1,0                  ELOSS= 23.00707'
      SCRPT[15]=' EXC  33D J=3,2,1                  ELOSS= 23.07365'
      SCRPT[16]=' EXC  31D J=2                      ELOSS= 23.07407'
      SCRPT[17]=' EXC  31P J=1    RESONANT          ELOSS= 23.08702'
      SCRPT[18]=' EXC  43S J=1                      ELOSS= 23.59396'
      SCRPT[19]=' EXC  41S J=0                      ELOSS= 23.67357'
      SCRPT[20]=' EXC  43P J=2,1,0                  ELOSS= 23.70789'
      SCRPT[21]=' EXC  43D J=3,2,1                  ELOSS= 23.73609'
      SCRPT[22]=' EXC  41D J=2                      ELOSS= 23.73633'
      SCRPT[23]=' EXC  43F J=3,4,2                  ELOSS= 23.73701'
      SCRPT[24]=' EXC  41F J=3                      ELOSS= 23.73701'
      SCRPT[25]=' EXC  41P J=1    RESONANT          ELOSS= 23.74207'
      SCRPT[26]=' EXC  53S J=1                      ELOSS= 23.97197'
      SCRPT[27]=' EXC  51S J=0                      ELOSS= 24.01121'
      SCRPT[28]=' EXC  53P J=2,1,0                  ELOSS= 24.02822'
      SCRPT[29]=' EXC  53D J=3,2,1                  ELOSS= 24.04266'
      SCRPT[30]=' EXC  51D J=2                      ELOSS= 24.04280'
      SCRPT[31]=' EXC  53F J=3,4,2                  ELOSS= 24.04315'
      SCRPT[32]=' EXC  513 J=3                      ELOSS= 24.04315'
      SCRPT[33]=' EXC  51P J=1    RESONANT          ELOSS= 24.04580'
      SCRPT[34]=' EXC  63S J=1                      ELOSS= 24.16900'
      SCRPT[35]=' EXC  61S J=0                      ELOSS= 24.19116'
      SCRPT[36]=' EXC  63P J=2,1,0                  ELOSS= 24.20081'
      SCRPT[37]=' EXC  63D J=3,2,1                  ELOSS= 24.20916'
      SCRPT[38]=' EXC  61D J=2                      ELOSS= 24.20925'
      SCRPT[39]=' EXC  61P J=1    RESONANT          ELOSS= 24.21100'
      SCRPT[40]=' EXC  73S J=1                      ELOSS= 24.28456'
      SCRPT[41]=' EXC  71S J=0                      ELOSS= 24.29828'
      SCRPT[42]=' EXC  73P J=2,1,0                  ELOSS= 24.30429'
      SCRPT[43]=' EXC  73D J=3,2,1                  ELOSS= 24.30954'
      SCRPT[44]=' EXC  71D J=2                      ELOSS= 24.30960'
      SCRPT[45]=' EXC  71P J=1    RESONANT          ELOSS= 24.31071'
      SCRPT[46]=' EXC  N3S SUM HIGH                 ELOSS= 24.35810'
      SCRPT[47]=' EXC  N1S SUM HIGH                 ELOSS= 24.36718'
      SCRPT[48]=' EXC  N3P SUM HIGH                 ELOSS= 24.37116' 
      SCRPT[49]=' EXC  N3D SUM HIGH                 ELOSS= 24.37468'
      SCRPT[50]=' EXC  N1D SUM HIGH                 ELOSS= 24.37472'
      SCRPT[51]=' EXC  81P J=1    RESONANT          ELOSS= 24.37547'
      SCRPT[52]=' EXC  91P J=1    RESONANT          ELOSS= 24.41989'
      SCRPT[53]=' EXC 101P J=1    RESONANT          ELOSS= 24.45168'
      SCRPT[54]=' EXC 111P J=1    RESONANT          ELOSS= 24.47518'
      SCRPT[55]=' EXC 121P J=1    RESONANT          ELOSS= 24.49308'
      SCRPT[56]=' EXC  N1P SUM HI RESONANT          ELOSS= 24.50708'
      SCRPT[57]=' BREMSSTRAHLUNG FROM HELIUM ATOM                  '
      #     EN=-ESTEP/2.00   
      DO 9000 I=1,NSTEP    
      EN=EG[I]                                            
      #     EN=EN+ESTEP 
      if(EN > EIN[1]:
      ) :
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      # endif
      DO 10 J=2,N                                                  
      if(EN <= XEN[J]:
      ) GO TO 20                                         
      10 CONTINUE                                                          
      J=N                                                          
      20 A=(YEL[J]-YEL[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEL[J]-XEN[J]*YEL[J-1])/(XEN[J-1]-XEN[J])
      QELA=(A*EN+B)*1.0D-16
      #
      A=(YEM[J]-YEM[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEM[J]-XEN[J]*YEM[J-1])/(XEN[J-1]-XEN[J]) 
      QMOM=(A*EN+B)*1.0D-16
      PQ1=0.5+(QELA-QMOM)/QELA
      #
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=A*EN+B
      # EPSILON=1-PQ2
      PQ2=1.00-PQ2
      #
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      :
      Q[2][I]=QMOM
      PEQEL[2][I]=0.5
      # endif
      # GROSS IONISATION                                                      
      QION[1][I]=0.00
      PEQION[1][I]=0.50  
      if(NANISO == 2):
      PEQION[1][I]=0.00                               
      if(EN <= EION[1]:
      ) GO TO 200 
      if(EN > XION(NIOND):
      ) GO TO 121     
      DO 110 J=2,NIOND                                                  
      if(EN <= XION[J]:
      ) GO TO 120                                       
      110 CONTINUE                                                          
      J=NIOND                                                           
      120 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.e-16 
      GO TO 122
      # USE BORN-BETHE X-SECTION ABOVE XION(NIOND) EV
      121 AX2=1.00/BETA2
      AX1=AX2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)/0.995
      122 CONTINUE
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY 
      # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY 
      # IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
      )) GO TO 200
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])                               
      # ATTACHMENT                                                            
      200 Q[4][I]=0.00 
      # COUNTING IONISATION
      Q[5][I]=0.00
      PEQION[2][I]=0.50
      if(NANISO == 2):
      PEQION[2][I]=0.00
      if(EN <= EION[1]:
      ) GO TO 250
      if(EN > XION(NIOND):
      ) GO TO 241
      DO 230 J=2,NIOND
      if(EN <= XION[J]:
      ) GO TO 240
      230 CONTINUE
      J=NIOND
      240 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])      
      Q[5][I]=(A*EN+B)*1.0D-16
      GO TO 242
      # USE BORN-BETHE X-SECTION ABOVE XION(NIOND) EV
      241 Q[5][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)
      242 CONTINUE  
      if(EN <= (2.00*EION[2]:
      )) GO TO 250
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      250 Q[6][I]=0.00
      # CALCULATE CHARGE STATE 1 AND 2 FROM COUNT AND GROSS
      QTEMP1=2.00*Q[5][I]-QION[1][I]
      QTEMP2=QION[1][I]-Q[5][I]
      QION[1][I]=QTEMP1
      QION[2][I]=QTEMP2
      if(QION[2][I]:
      < 0.0) QION[2][I]=0.0
      #
      DO 251 NL=1,NIN+1
      QIN(NL,I)=0.00
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
      :
      PEQIN(NL,I)=0.00
      # endif
      251 CONTINUE
      #
      # 2 3S 
      if(EN <= EIN[1]:
      ) GO TO 2000  
      if(EN > X23S(N23S):
      ) GO TO 311                                  
      DO 300 J=2,N23S                                                   
      if(EN <= X23S[J]:
      ) GO TO 310                                       
      300 CONTINUE                                                          
      J=N23S                                                            
      310 A=(Y23S[J]-Y23S[J-1])/(X23S[J]-X23S[J-1])                         
      B=(X23S[J-1]*Y23S[J]-X23S[J]*Y23S[J-1])/(X23S[J-1]-X23S[J])       
      QIN[1][I]=(A*EN+B)*1.e-18 
      GO TO 312
      # IF ENERGY GT X23S(N23S) EV SCALE BY 1/E**3 
      311 QIN[1][I]=Y23S(N23S)*(X23S(N23S)/EN)**3*1.e-18
      312 if(EN <= (2.0*EIN[1])) GO TO 320   
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]
      #
      # 2 1S                                                                  
      320 if(EN <= EIN[2]) GO TO 2000
      if(EN > X21S(N21S):
      ) GO TO 341                         
      DO 330 J=2,N21S                                                   
      if(EN <= X21S[J]:
      ) GO TO 340                                       
      330 CONTINUE                                                          
      J=N21S                                                            
      340 A=(Y21S[J]-Y21S[J-1])/(X21S[J]-X21S[J-1])                         
      B=(X21S[J-1]*Y21S[J]-X21S[J]*Y21S[J-1])/(X21S[J-1]-X21S[J])       
      QIN[2][I]=(A*EN+B)*1.e-18
      GO TO 342
      # IF ENERGY GT X21S(N21S) EV SCALE BY 1/E
      341 QIN[2][I]=Y21S(N21S)*(X21S(N21S)/EN)*1.e-18   
      342 if(EN <= (2.0*EIN[2])) GO TO 350
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]#
      # 2 3P
      350 if(EN <= EIN[3]) GO TO 2000
      if(EN > X23P(N23P):
      ) GO TO 371
      DO 360 J=2,N23P
      if(EN <= X23P[J]:
      ) GO TO 370
      360 CONTINUE
      J=N23P
      370 A=(Y23P[J]-Y23P[J-1])/(X23P[J]-X23P[J-1])                         
      B=(X23P[J-1]*Y23P[J]-X23P[J]*Y23P[J-1])/(X23P[J-1]-X23P[J])       
      QIN[3][I]=(A*EN+B)*1.e-18
      GO TO 372
      # IF ENERGY GT X23P(N23P) EV SCALE BY 1/E**3
      371 QIN[3][I]=Y23P(N23P)*(X23P(N23P)/EN)**3*1.e-18   
      372 if(EN <= (2.0*EIN[3])) GO TO 380
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]#
      # 2 1P        OSC STRENGTH  F=0.27608
      380 if(EN <= EIN[4]) GO TO 2000
      if(EN > X21P(N21P):
      ) GO TO 401
      DO 390 J=2,N21P
      if(EN <= X21P[J]:
      ) GO TO 400
      390 CONTINUE
      J=N21P
      400 A=(Y21P[J]-Y21P[J-1])/(X21P[J]-X21P[J-1])                         
      B=(X21P[J-1]*Y21P[J]-X21P[J]*Y21P[J-1])/(X21P[J-1]-X21P[J])       
      QIN[4][I]=(A*EN+B)*1.e-18
      GO TO 402
      # IF ENERGY GT X21P(N21P) EV : USE BEF SCALING
      401 QIN[4][I]=0.27608/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[4]+E[3])
      402 if(EN <= (2.0*EIN[4])) GO TO 410
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]#
      # 3 3S
      410 if(EN <= EIN[5]) GO TO 2000
      if(EN > X33S(N33S):
      ) GO TO 431
      DO 420 J=2,N33S
      if(EN <= X33S[J]:
      ) GO TO 430
      420 CONTINUE
      J=N33S
      430 A=(Y33S[J]-Y33S[J-1])/(X33S[J]-X33S[J-1])                         
      B=(X33S[J-1]*Y33S[J]-X33S[J]*Y33S[J-1])/(X33S[J-1]-X33S[J])       
      QIN[5][I]=(A*EN+B)*1.e-18
      GO TO 432
      # IF ENERGY GT X33S(N33S) EV SCALE BY 1/E**3
      431 QIN[5][I]=Y33S(N33S)*(X33S(N33S)/EN)**3*1.e-18   
      432 if(EN <= (2.0*EIN[5])) GO TO 440
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]#
      # 3 1S
      440 if(EN <= EIN[6]) GO TO 2000
      if(EN > X31S(N31S):
      ) GO TO 461
      DO 450 J=2,N31S
      if(EN <= X31S[J]:
      ) GO TO 460
      450 CONTINUE
      J=N31S
      460 A=(Y31S[J]-Y31S[J-1])/(X31S[J]-X31S[J-1])                         
      B=(X31S[J-1]*Y31S[J]-X31S[J]*Y31S[J-1])/(X31S[J-1]-X31S[J])       
      QIN[6][I]=(A*EN+B)*1.e-18
      GO TO 462
      # IF ENERGY GT X31S(N31S) EV SCALE BY 1/E   
      461 QIN[6][I]=Y31S(N31S)*(X31S(N31S)/EN)*1.e-18   
      462 if(EN <= (2.0*EIN[6])) GO TO 470
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]#
      # 3 3P
      470 if(EN <= EIN[7]) GO TO 2000
      if(EN > X33P(N33P):
      ) GO TO 491
      DO 480 J=2,N33P
      if(EN <= X33P[J]:
      ) GO TO 490
      480 CONTINUE
      J=N33P
      490 A=(Y33P[J]-Y33P[J-1])/(X33P[J]-X33P[J-1])                         
      B=(X33P[J-1]*Y33P[J]-X33P[J]*Y33P[J-1])/(X33P[J-1]-X33P[J])       
      QIN[7][I]=(A*EN+B)*1.e-18
      GO TO 492
      # IF ENERGY GT X33P(N33P) EV SCALE BY 1/E**3
      491 QIN[7][I]=Y33P(N33P)*(X33P(N33P)/EN)*1.e-18   
      492 if(EN <= (2.0*EIN[7])) GO TO 500
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]#
      # 3 3D
      500 if(EN <= EIN[8]) GO TO 2000
      if(EN > X33D[N33D]):
      GO TO 521
      DO 510 J=2,N33D
      if(EN <= X33D[J]):
      GO TO 520
      510 CONTINUE
      J=N33D
      520 A=(Y33D[J]-Y33D[J-1])/(X33D[J]-X33D[J-1])                         
      B=(X33D[J-1]*Y33D[J]-X33D[J]*Y33D[J-1])/(X33D[J-1]-X33D[J])       
      QIN[8][I]=(A*EN+B)*1.e-18
      GO TO 522
      # IF ENERGY GT X33D[N33D] EV SCALE BY 1/E**3
      521 QIN[8][I]=Y33D[N33D]*(X33D[N33D]/EN)*1.e-18   
      522 if(EN <= (2.0*EIN[8])) GO TO 530
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]#
      # 3 1D
      530 if(EN <= EIN[9]) GO TO 2000
      if(EN > X31D[N31D]):
      GO TO 551
      DO 540 J=2,N31D
      if(EN <= X31D[J]):
      GO TO 550
      540 CONTINUE
      J=N31D
      550 A=(Y31D[J]-Y31D[J-1])/(X31D[J]-X31D[J-1])                         
      B=(X31D[J-1]*Y31D[J]-X31D[J]*Y31D[J-1])/(X31D[J-1]-X31D[J])       
      QIN[9][I]=(A*EN+B)*1.e-18
      GO TO 552
      # IF ENERGY GT X31D[N31D] EV SCALE BY 1/E   
      551 QIN[9][I]=Y31D[N31D]*(X31D[N31D]/EN)*1.e-18   
      552 if(EN <= (2.0*EIN[9])) GO TO 560
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]#
      # 3 1P        OSC STRENGTH F=0.07342
      560 if(EN <= EIN[10]) GO TO 2000
      if(EN > X31P(N31P):
      ) GO TO 581
      DO 570 J=2,N31P
      if(EN <= X31P[J]:
      ) GO TO 580
      570 CONTINUE
      J=N31P
      580 A=(Y31P[J]-Y31P[J-1])/(X31P[J]-X31P[J-1])                         
      B=(X31P[J-1]*Y31P[J]-X31P[J]*Y31P[J-1])/(X31P[J-1]-X31P[J])       
      QIN[10][I]=(A*EN+B)*1.e-18
      GO TO 582
      # IF ENERGY GT X31P(N31P) EV : USE BEF SCALING
      581 QIN[10][I]=0.07342/(EIN[10]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[10]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[10]+E[3])
      582 if(EN <= (2.0*EIN[10])) GO TO 590
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      #
      # 4 3S
      590 if(EN <= EIN[11]) GO TO 2000
      if(EN > X43S(N43S):
      ) GO TO 611
      DO 600 J=2,N43S
      if(EN <= X43S[J]:
      ) GO TO 610
      600 CONTINUE
      J=N43S
      610 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[11][I]=(A*EN+B)*1.e-18
      GO TO 612
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      611 QIN[11][I]=Y43S(N43S)*(X43S(N43S)/EN)**3*1.e-18
      612 if(EN <= (2.0*EIN[11])) GO TO 620
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      #
      # 4 1S
      620 if(EN <= EIN[12]) GO TO 2000
      if(EN > X41S(N41S):
      ) GO TO 641
      DO 630 J=2,N41S
      if(EN <= X41S[J]:
      ) GO TO 640
      630 CONTINUE
      J=N41S
      640 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[12][I]=(A*EN+B)*1.e-18
      GO TO 642
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      641 QIN[12][I]=Y41S(N41S)*(X41S(N41S)/EN)*1.e-18
      642 if(EN <= (2.0*EIN[12])) GO TO 650
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
      #
      # 4 3P
      650 if(EN <= EIN[13]) GO TO 2000
      if(EN > X43P(N43P):
      ) GO TO 671
      DO 660 J=2,N43P
      if(EN <= X43P[J]:
      ) GO TO 670
      660 CONTINUE
      J=N43P
      670 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[13][I]=(A*EN+B)*1.e-18
      GO TO 672
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      671 QIN[13][I]=Y43P(N43P)*(X43P(N43P)/EN)**3*1.e-18
      672 if(EN <= (2.0*EIN[13])) GO TO 680
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
      #
      # 4 3D
      680 if(EN <= EIN[14]) GO TO 2000
      if(EN > X43D[N43D]):
      GO TO 701
      DO 690 J=2,N43D
      if(EN <= X43D[J]):
      GO TO 700
      690 CONTINUE
      J=N43P
      700 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[14][I]=(A*EN+B)*1.e-18
      GO TO 702
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      701 QIN[14][I]=Y43D[N43D]*(X43D[N43D]/EN)**3*1.e-18
      702 if(EN <= (2.0*EIN[14])) GO TO 710
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
      #
      # 4 1D
      710 if(EN <= EIN[15]) GO TO 2000
      if(EN > X41D[N41D]):
      GO TO 731
      DO 720 J=2,N41D
      if(EN <= X41D[J]):
      GO TO 730
      720 CONTINUE
      J=N41D
      730 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[15][I]=(A*EN+B)*1.e-18
      GO TO 732
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      731 QIN[15][I]=Y41D[N41D]*(X41D[N41D]/EN)*1.e-18
      732 if(EN <= (2.0*EIN[15])) GO TO 740
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
      #
      # 4 3F
      740 if(EN <= EIN[16]) GO TO 2000
      if(EN > X43F(N43F):
      ) GO TO 761
      DO 750 J=2,N43F
      if(EN <= X43F[J]:
      ) GO TO 760
      750 CONTINUE
      J=N43F
      760 A=(Y43F[J]-Y43F[J-1])/(X43F[J]-X43F[J-1])                         
      B=(X43F[J-1]*Y43F[J]-X43F[J]*Y43F[J-1])/(X43F[J-1]-X43F[J])       
      QIN[16][I]=(A*EN+B)*1.e-18
      GO TO 762
      # IF ENERGY GT X43F(N43F) EV SCALE BY 1/E**4  
      761 QIN[16][I]=Y43F(N43F)*(X43F(N43F)/EN)**4*1.e-18
      762 if(EN <= (2.0*EIN[16])) GO TO 770
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
      #
      # 4 1F
      770 if(EN <= EIN[17]) GO TO 2000
      if(EN > X41F(N41F):
      ) GO TO 791
      DO 780 J=2,N41F
      if(EN <= X41F[J]:
      ) GO TO 790
      780 CONTINUE
      J=N41F
      790 A=(Y41F[J]-Y41F[J-1])/(X41F[J]-X41F[J-1])                         
      B=(X41F[J-1]*Y41F[J]-X41F[J]*Y41F[J-1])/(X41F[J-1]-X41F[J])       
      QIN[17][I]=(A*EN+B)*1.e-18
      GO TO 792
      # IF ENERGY GT X41F(N41F) EV SCALE BY 1/E     
      791 QIN[17][I]=Y41F(N41F)*(X41F(N41F)/EN)*1.e-18
      792 if(EN <= (2.0*EIN[17])) GO TO 800
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
      #
      # 4 1P       OSC STRENGTH  F=0.02986
      800 if(EN <= EIN[18]) GO TO 2000
      if(EN > X41P(N41P):
      ) GO TO 821
      DO 810 J=2,N41P
      if(EN <= X41P[J]:
      ) GO TO 820
      810 CONTINUE
      J=N41P
      820 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[18][I]=(A*EN+B)*1.e-18
      GO TO 822
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      821 QIN[18][I]=0.02986/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])
      822 if(EN <= (2.0*EIN[18])) GO TO 830
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      #
      # 5 3S SCALED FROM 4 3S
      830 if(EN <= EIN[19]) GO TO 2000
      ER=EIN[19]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 851
      DO 840 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 850
      840 CONTINUE
      J=N43S
      850 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[19][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 852
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      851 QIN[19][I]=0.512*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      852 if(EN <= (2.0*EIN[19])) GO TO 860
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
      #
      # 5 1S SCALED FROM 4 1S
      860 if(EN <= EIN[20]) GO TO 2000
      ER=EIN[20]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 881
      DO 870 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 880
      870 CONTINUE
      J=N41S
      880 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[20][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 882
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      881 QIN[20][I]=0.512*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      882 if(EN <= (2.0*EIN[20])) GO TO 890
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      #
      # 5 3P SCALED FROM 4 3P
      890 if(EN <= EIN[21]) GO TO 2000
      ER=EIN[21]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 911
      DO 900 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 910
      900 CONTINUE
      J=N43P
      910 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[21][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 912
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      911 QIN[21][I]=0.512*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      912 if(EN <= (2.0*EIN[21])) GO TO 920
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
      #
      # 5 3D SCALED FROM 4 3D
      920 if(EN <= EIN[22]) GO TO 2000
      ER=EIN[22]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 941
      DO 930 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 940
      930 CONTINUE
      J=N43P
      940 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[22][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 942
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      941 QIN[22][I]=0.512*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      942 if(EN <= (2.0*EIN[22])) GO TO 950
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
      #
      # 5 1D SCALED FROM 4 1D
      950 if(EN <= EIN[23]) GO TO 2000
      ER=EIN[23]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 971
      DO 960 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 970
      960 CONTINUE
      J=N41D
      970 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[23][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 972
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      971 QIN[23][I]=0.512*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      972 if(EN <= (2.0*EIN[23])) GO TO 980
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
      #
      # 5 3F SCALED FROM 4 3F
      980 if(EN <= EIN[24]) GO TO 2000
      ER=EIN[24]/EIN[16]
      ENP=EN/ER
      if(ENP > X43F(N43F):
      ) GO TO 1001
      DO 990 J=2,N43F
      if(ENP <= X43F[J]:
      ) GO TO 1000
      990 CONTINUE
      J=N43F
      1000 A=(Y43F[J]-Y43F[J-1])/(X43F[J]-X43F[J-1])                         
      B=(X43F[J-1]*Y43F[J]-X43F[J]*Y43F[J-1])/(X43F[J-1]-X43F[J])       
      QIN[24][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 1002
      # IF ENERGY GT X43F(N43F) EV SCALE BY 1/E**4  
      1001 QIN[24][I]=0.512*Y43F(N43F)*(X43F(N43F)/ENP)**4*1.e-18
      1002 if(EN <= (2.0*EIN[24])) GO TO 1010
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      #
      # 5 1F SCALED FROM 4 1F
      1010 if(EN <= EIN[25]) GO TO 2000
      ER=EIN[25]/EIN[17]
      ENP=EN/ER
      if(ENP > X41F(N41F):
      ) GO TO 1031
      DO 1020 J=2,N41F
      if(ENP <= X41F[J]:
      ) GO TO 1030
      1020 CONTINUE
      J=N41F
      1030 A=(Y41F[J]-Y41F[J-1])/(X41F[J]-X41F[J-1])                         
      B=(X41F[J-1]*Y41F[J]-X41F[J]*Y41F[J-1])/(X41F[J-1]-X41F[J])       
      QIN[25][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 1032
      # IF ENERGY GT X41F(N41F) EV SCALE BY 1/E     
      1031 QIN[25][I]=0.512*Y41F(N41F)*(X41F(N41F)/ENP)*1.e-18
      1032 if(EN <= (2.0*EIN[25])) GO TO 1040
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
      #
      # 5 1P   SCALED FROM 4 1P   OSC STRENGTH  F=0.01504
      1040 if(EN <= EIN[26]) GO TO 2000
      ER=EIN[26]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1061
      DO 1050 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1060
      1050 CONTINUE
      J=N41P
      1060 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[26][I]=0.01504/0.02986*(A*ENP+B)*1.e-18
      GO TO 1062
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1061 QIN[26][I]=0.01504/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])
      1062 if(EN <= (2.0*EIN[26])) GO TO 1070
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
      #
      # 6 3S SCALED FROM 4 3S
      1070 if(EN <= EIN[27]) GO TO 2000
      ER=EIN[27]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1091
      DO 1080 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1090
      1080 CONTINUE
      J=N43S
      1090 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[27][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1092
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1091 QIN[27][I]=0.296*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1092 if(EN <= (2.0*EIN[27])) GO TO 1100
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
      #
      # 6 1S SCALED FROM 4 1S
      1100 if(EN <= EIN[28]) GO TO 2000
      ER=EIN[28]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1121
      DO 1110 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1120
      1110 CONTINUE
      J=N41S
      1120 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[28][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1122
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1121 QIN[28][I]=0.296*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1122 if(EN <= (2.0*EIN[28])) GO TO 1130
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
      #
      # 6 3P SCALED FROM 4 3P
      1130 if(EN <= EIN[29]) GO TO 2000
      ER=EIN[29]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1151
      DO 1140 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1150
      1140 CONTINUE
      J=N43P
      1150 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[29][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1152
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1151 QIN[29][I]=0.296*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1152 if(EN <= (2.0*EIN[29])) GO TO 1160
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
      #
      # 6 3D SCALED FROM 4 3D
      1160 if(EN <= EIN[30]) GO TO 2000
      ER=EIN[30]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1181
      DO 1170 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1180
      1170 CONTINUE
      J=N43P
      1180 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[30][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1182
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1181 QIN[30][I]=0.296*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1182 if(EN <= (2.0*EIN[30])) GO TO 1190
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      #
      # 6 1D SCALED FROM 4 1D
      1190 if(EN <= EIN[31]) GO TO 2000
      ER=EIN[31]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1211
      DO 1200 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1210
      1200 CONTINUE
      J=N41D
      1210 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[31][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1212
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1211 QIN[31][I]=0.296*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1212 if(EN <= (2.0*EIN[31])) GO TO 1220
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
      #
      # 6 1P  SCALED FROM 4 1P    OSC STRENGTH  F=0.00863 
      1220 if(EN <= EIN[32]) GO TO 2000
      ER=EIN[32]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1241
      DO 1230 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1240
      1230 CONTINUE
      J=N41P
      1240 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[32][I]=0.00863/0.02986*(A*ENP+B)*1.e-18
      GO TO 1242
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1241 QIN[32][I]=0.00863/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])
      1242 if(EN <= (2.0*EIN[32])) GO TO 1250 
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
      #
      # 7 3S SCALED FROM 4 3S
      1250 if(EN <= EIN[33]) GO TO 2000
      ER=EIN[33]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1271
      DO 1260 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1270
      1260 CONTINUE
      J=N43S
      1270 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[33][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1272
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1271 QIN[33][I]=0.187*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1272 if(EN <= (2.0*EIN[33])) GO TO 1280
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
      #
      # 7 1S SCALED FROM 4 1S
      1280 if(EN <= EIN[34]) GO TO 2000
      ER=EIN[34]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1301
      DO 1290 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1300
      1290 CONTINUE
      J=N41S
      1300 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[34][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1302
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1301 QIN[34][I]=0.187*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1302 if(EN <= (2.0*EIN[34])) GO TO 1310
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      #
      # 7 3P SCALED FROM 4 3P
      1310 if(EN <= EIN[35]) GO TO 2000
      ER=EIN[35]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1331
      DO 1320 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1330
      1320 CONTINUE
      J=N43P
      1330 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[35][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1332
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1331 QIN[35][I]=0.187*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1332 if(EN <= (2.0*EIN[35])) GO TO 1340
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      #
      # 7 3D SCALED FROM 4 3D
      1340 if(EN <= EIN[36]) GO TO 2000
      ER=EIN[36]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1361
      DO 1350 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1360
      1350 CONTINUE
      J=N43P
      1360 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[36][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1362
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1361 QIN[36][I]=0.187*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1362 if(EN <= (2.0*EIN[36])) GO TO 1370
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      #
      # 7 1D SCALED FROM 4 1D
      1370 if(EN <= EIN[37]) GO TO 2000
      ER=EIN[37]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1391
      DO 1380 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1390
      1380 CONTINUE
      J=N41D
      1390 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[37][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1392
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1391 QIN[37][I]=0.187*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1392 if(EN <= (2.0*EIN[37])) GO TO 1400
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      #
      # 7 1P  SCALED FROM 4 1P   OSC STRENGTH  F=0.00540 
      1400 if(EN <= EIN[38]) GO TO 2000
      ER=EIN[38]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1421
      DO 1410 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1420
      1410 CONTINUE
      J=N41P
      1420 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[38][I]=0.00540/0.02986*(A*ENP+B)*1.e-18
      GO TO 1422
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1421 QIN[38][I]=0.00540/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])
      1422 if(EN <= (2.0*EIN[38])) GO TO 1430 
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      #
      # SUM 3S LEVELS FROM 8 3S HIGHER AND SCALED FROM 4 3S
      1430 if(EN <= EIN[39]) GO TO 2000
      ER=EIN[39]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1451
      DO 1440 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1450
      1440 CONTINUE
      J=N43S
      1450 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[39][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1452
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1451 QIN[39][I]=0.553*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1452 if(EN <= (2.0*EIN[39])) GO TO 1460
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      #
      # SUM 1S LEVELS FROM 8 1S HIGHER AND SCALED FROM 4 1S
      1460 if(EN <= EIN[40]) GO TO 2000
      ER=EIN[40]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1481
      DO 1470 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1480
      1470 CONTINUE
      J=N41S
      1480 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[40][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1482
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1481 QIN[40][I]=0.553*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1482 if(EN <= (2.0*EIN[40])) GO TO 1490
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      #
      # SUM 3P LEVELS FROM  8 3P HIGHER AND SCALED FROM 4 3P
      1490 if(EN <= EIN[41]) GO TO 2000
      ER=EIN[41]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1511
      DO 1500 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1510
      1500 CONTINUE
      J=N43P
      1510 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[41][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1512
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1511 QIN[41][I]=0.553*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1512 if(EN <= (2.0*EIN[41])) GO TO 1520
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      #
      # SUM 3D LEVELS FROM 8 3D HIGHER AND SCALED FROM 4 3D
      1520 if(EN <= EIN[42]) GO TO 2000
      ER=EIN[42]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1541
      DO 1530 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1540
      1530 CONTINUE
      J=N43P
      1540 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[42][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1542
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1541 QIN[42][I]=0.553*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1542 if(EN <= (2.0*EIN[42])) GO TO 1550
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      #
      # SUM 1D LEVELS FROM 8 1D HIGHER AND SCALED FROM 4 1D
      1550 if(EN <= EIN[43]) GO TO 2000
      ER=EIN[43]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1571
      DO 1560 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1570
      1560 CONTINUE
      J=N41D
      1570 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[43][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1572
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1571 QIN[43][I]=0.553*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1572 if(EN <= (2.0*EIN[43])) GO TO 1580
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      #
      # 8 1P SCALED FROM 4 1P   OSC STRENGTH  F=0.00362 
      1580 if(EN <= EIN[44]) GO TO 2000
      ER=EIN[44]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1601
      DO 1590 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1600
      1590 CONTINUE
      J=N41P
      1600 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[44][I]=0.00362/0.02986*(A*ENP+B)*1.e-18
      GO TO 1602
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1601 QIN[44][I]=0.00362/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])
      1602 if(EN <= (2.0*EIN[44])) GO TO 1610 
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      #
      # 9 1P SCALED FROM 4 1P   OSC STRENGTH  F=0.00253 
      1610 if(EN <= EIN[45]) GO TO 2000
      ER=EIN[45]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1631
      DO 1620 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1630
      1620 CONTINUE
      J=N41P
      1630 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[45][I]=0.00253/0.02986*(A*ENP+B)*1.e-18
      GO TO 1632
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1631 QIN[45][I]=0.00253/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      1632 if(EN <= (2.0*EIN[45])) GO TO 1640 
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      #
      # 10 1P SCALED FROM 4 1P    OSC STRENGTH F=0.00184
      1640 if(EN <= EIN[46]) GO TO 2000
      ER=EIN[46]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1661
      DO 1650 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1660
      1650 CONTINUE
      J=N41P
      1660 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[46][I]=0.00184/0.02986*(A*ENP+B)*1.e-18
      GO TO 1662
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1661 QIN[46][I]=0.00184/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      1662 if(EN <= (2.0*EIN[46])) GO TO 1670 
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
      #
      # 11 1P SCALED FROM 4 1P   OSC STRENGTH F=0.00138
      1670 if(EN <= EIN[47]) GO TO 2000
      ER=EIN[47]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1691
      DO 1680 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1690
      1680 CONTINUE
      J=N41P
      1690 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[47][I]=0.00138/0.02986*(A*ENP+B)*1.e-18
      GO TO 1692
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1691 QIN[47][I]=0.00138/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+E[3])
      1692 if(EN <= (2.0*EIN[47])) GO TO 1700 
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
      #
      # 12 1P SCALED FROM 4 1P   OSC STRENGTH F=0.00106
      1700 if(EN <= EIN[48]) GO TO 2000
      ER=EIN[48]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1721
      DO 1710 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1720
      1710 CONTINUE
      J=N41P
      1720 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[48][I]=0.00106/0.02986*(A*ENP+B)*1.e-18
      GO TO 1722
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1721 QIN[48][I]=0.00106/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      1722 if(EN <= (2.0*EIN[48])) GO TO 1730 
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
      #
      # SUM HIGHER 1P LEVELS     OSC STRENGTH F=0.00440
      1730 if(EN <= EIN[49]) GO TO 2000
      ER=EIN[49]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1751
      DO 1740 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1750
      1740 CONTINUE
      J=N41P
      1750 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[49][I]=0.00440/0.02986*(A*ENP+B)*1.e-18
      GO TO 1752
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1751 QIN[49][I]=0.00440/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      1752 if(EN <= (2.0*EIN[49])) GO TO 1760 
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      1760 CONTINUE
      #  LOAD BREMSSTRAHLUNG X-SECTIONS
      if(EN <= 1000.):
      GO TO 2000
      DO 1780 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 1790
      1780 CONTINUE
      J=NBREM
      1790 A=(math.log(Z2T[J])-math.log(Z2T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z2T[J])*EBRM[J-1]-math.log(Z2T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[50][I]=math.exp(A*EN+B)*1.e-24
      #
      2000 CONTINUE                                                          
      #     
      QMET=QIN[1][I]+QIN[2][I]
      QDIP=QIN[4][I]+QIN[10][I]+QIN[18][I]+QIN[26][I]+QIN[32][I]+QIN[38][I]+QIN[44][I]+QIN[45][I]+QIN[46][I]+QIN[47][I]+QIN[48][I]+QIN[49][I]
      QTRP=QIN[1][I]+QIN[3][I]+QIN[5][I]+QIN[7][I]+QIN[8][I]+QIN[11][I]+QIN[13][I]+QIN[14][I]+QIN[16][I]+QIN[19][I]+QIN[21][I]+QIN[22][I]+QIN[24][I]+QIN[27][I]+QIN[29][I]+QIN[30][I]+QIN[33][I]+QIN[35][I]+QIN[36][I]+QIN[39][I]+QIN[41][I]+QIN[42][I] 
      QSNG=QIN[2][I]+QIN[4][I]+QIN[6][I]+QIN[9][I]+QIN[10][I]+QIN[12][I]+QIN[15][I]+QIN[17][I]+QIN[18][I]+QIN[20][I]+QIN[23][I]+QIN[25][I]+QIN[26][I]+QIN[28][I]+QIN[31][I]+QIN[32][I]+QIN[34][I]+QIN[37][I]+QIN[38][I]+QIN[40][I]+QIN[43][I]+QIN[44][I]+QIN[45][I]+QIN[46][I]+QIN[47][I]+QIN[48][I]+QIN[49][I]
      QINEL=QSNG+QTRP+QION[1][I]+QION[2][I]
      Q[1][I]=QELA+QINEL+QIN[50][I]                            
      # EXAMINE X-SECTION 
      #     WRITE(6,986) EN,QIN[4][I],QIN[10][I],QIN[18][I],QIN[26][I],QIN[32][I],
      #    /QIN[38][I],QIN[44][I],QIN[45][I],QIN[46][I],QIN[47][I],QIN[48][I],
      #    /QIN[49][I] 
      # 986 print(' EN=',D11.5,' 21P=','%.3f' %,' 31P=','%.3f' %,' 41P=','%.3f' %,' 51
      #    /P=','%.3f' %,' 61P=','%.3f' %,' 71P=','%.3f' %,/,8X,' 81P=','%.3f' %,' 91P=',D
      #    /11.3,' 101P=','%.3f' %,' 111P=','%.3f' %,' 121P=','%.3f' %,' HIP=','%.3f' %)
      #     WRITE(6,987) EN,QMET,QDIP,QSNG,QTRP,QINEL,Q[1][I]
      # 987 print(' EN=',D12.5,' QMET=','%.3f' %,' QDIP=','%.3f' %,' QSNG=','%.3f' %,
      #    /'QTRP=','%.3f' %,' QINL=','%.4f' % ,' QTOT=','%.4f' % ) 
      9000 CONTINUE                                                          
      #  SAVE COMPUTE TIME                                                    
      DO 9001 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :                                        
      NIN=K-1
      GO TO 9011
      # endif
      9001 CONTINUE
      9011 CONTINUE 
      if(EN > 1000.):
      NIN=50                                         
      return                                                            
      # end
def GAS4(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN) 
      IMPLICIT #real*8 (A-H,O-Z)                                         
      IMPLICIT #integer*8 (I-N)
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]    
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(144),YEM(144),YEL(144),YEPS(144),XION(90),YION(90),YINC(90),X23S(139),Y23S(139),X21S(128),Y21S(128),X23P(128),Y23P(128),X21P(125),Y21P(125),X33S(106),Y33S(106),X31S(87),Y31S(87),X33P(91),Y33P(91),X33D[108],Y33D[108],X31D[94],Y31D[94],X31P(114),Y31P(114),X43S[59],Y43S[59],X41S[55],Y41S[55],X43P(76),Y43P(76),X43D[65],Y43D[65],X41D[53],Y41D[53],X43F[40],Y43F[40],X41F[57],Y41F[57],X41P(96),Y41P(96),IOFFN[49],IOFFION[2]   
      DIMENSION Z2T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME  
      # ELASTIC                            
      XEN=[0.00,.008,.009,0.01,.013,.017,.020,.025,0.03,0.04, 0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.15,0.18,0.20,                0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.20,                1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,                9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,25.0,30.0,                35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,6000.,8000.,10000.,1.25D4,1.5D4,2.0D4,2.5'%.3f' %.0D4,4.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MOMENTUM TRANSFER           
      YEM=[4.89,5.18,5.19,5.21,5.26,5.31,5.35,5.41,5.46,5.54,     5.62,5.68,5.74,5.79,5.83,5.86,5.94,6.04,6.12,6.16,                6.27,6.35,6.49,6.59,6.66,6.73,6.77,6.82,6.85,6.91,                6.96,6.98,6.99,6.96,6.89,6.62,6.31,6.00,5.68,5.35,                5.03,4.72,4.45,4.20,3.68,3.28,2.95,2.64,2.05,1.63,                1.33,1.09,.785,.590,.465,.375,.309,.262,.179,.132,.0807,.0549,.0400,.0242,.0164,.0119,.00716,.00482,.00234,.0014,.000676,4.03e-4,1.93e-4,1.15e-4,7.65e-5,5.10e-5,3.66e-5,2.17e-5,1.45e-5,1.04e-5,6.18e-6,2.99e-6,1.71e-6,1.21e-6,8.26e-7,6.05e-7,4.66e-7,3.73e-7,2.58e-7,1.92e-7,1.50e-7,1.22e-7,1.01e-7,8.59e-8,6.48e-8,5.11e-8,4.17e-8,3.48e-8,2.96e-8,2.10e-8,1.58e-8,1.24e-8,1.01e-8,7.05e-9,5.24e-9,4.07e-9,3.25e-9,2.67e-9,2.23e-9,1.63e-9,1.25e-9,9.89e-10,8.04e-10,6.67e-10,4.47e-10,3.22e-10,2.43e-10,1.91e-10,1.27e-10,9.04e-11,6.79e-11,5.29e-11,4.24e-11,3.48e-11,2.46e-11,1.84e-11,1.42e-11,1.13e-11,9.26e-12,6.00e-12,4.20e-12,3.10e-12,2.38e-12,1.53e-12,1.06e-12,7.82e-13,5.99e-13,4.74e-13,3.84e-13,2.67e-13,1.96e-13,1.50e-13,1.19e-13,9.62e-14]  
      # ELASTIC TOTAL                                 
      YEL=[4.89,5.19,5.20,5.21,5.26,5.29,5.33,5.37,5.41,5.47,5.53,5.58,5.62,5.66,5.69,5.70,5.76,5.83,5.88,5.90,5.96,6.01,6.08,6.12,6.14,6.16,6.16,6.17,6.16,6.16,6.14,6.11,6.09,6.01,5.90,5.60,5.36,5.10,4.91,4.70,4.51,4.32,4.21,4.10,3.75,3.49,3.27,3.03,2.54,2.14,1.83,1.61,1.27,1.06,.884,.746,.652,.580,.460,.355,.244,.194,.150,.117,.087,.071,.052,.041,.028,.022,.014,.0108,.00722,.00544,.00437,.00352,.00295,.00224,.00182,.00154,.00118,.000830,.000654,.000550,.000466,.000411,.000371,.000342,.000301,.000274,.000255,.000241,.000230,.000222,.000209,.000201,.000195,.000190,.000186,.000180,.000177,.000174,.000172,.000170,.000169,.000168,.000167,.000167,.000167,.000166,.000166,.000166,.000166,.000166,30*.000165]
      # ANGULAR DISTRIBUTION PARAMETER EPSILON
      # EPSILON = 1.0-YEPS
      YEPS=[1.0,.99711,.99712,1.0,1.0,1.00562,1.00565,1.01118,1.01386,1.01920,1.02440,1.02688,1.03202,1.03445,1.03689,1.04209,1.04686,1.05400,1.06119,1.06604,1.07792,1.08474,1.10094,1.11490,1.12663,1.13826,1.14789,1.15724,1.16707,1.18142,1.19873,1.21165,1.21951,1.23447,1.24855,1.26918,1.26215,1.26104,1.23265,1.20568,1.17192,1.13835,1.08539,1.03657,.97200,.90989,.85384,.80836,.71541,.65146,.60355,.53739,.46277,.38963,.35522,.32989,.29979,.27742,.21850,.20332,.16921,.13304,.12155,.08318,.07263,.06130,.04637,.03720,.02338,.016295,.011386,.008195,.005394,.004037,.003205,.002548,.002113,.001572,.001246,.001044,7.61e-4,4.925e-4,3.404e-4,2.803e-4,2.179e-4,1.766e-4,1.475e-4,1.258e-4,9.60e-5,7.65e-5,6.29e-5,5.29e-5,4.53e-5,3.93e-5,3.07e-5,2.47e-5,2.04e-5,1.72e-5,1.47e-5,1.05e-5,7.84e-6,6.12e-6,4.91e-6,3.373e-6,2.463e-6,1.881e-6,1.483e-6,1.200e-6,9.91e-7,7.09e-7,5.322e-7,4.146e-7,3.319e-7,2.718e-7,1.775e-7,1.249e-7,9.27e-8,7.15e-8,4.62e-8,3.23e-8,2.382e-8,1.828e-8,1.447e-8,1.173e-8,8.14e-9,5.97e-9,4.56e-9,3.59e-9,2.90e-9,1.83e-9,1.26e-9,9.10e-10,6.90e-10,4.40e-10,3.00e-10,2.16e-10,1.63e-10,1.27e-10,1.02e-10,7.0D-11,5.1D-11,3.8D-11,3.0D-11,2.4D-11]
      #  IONISATION (VALUES ABOVE 20KEV GENERATED BY BORN-BETHE IN SUB)
      XION=[24.58739,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0,30.5,31.0,31.5,32.0,32.5,33.0,33.5,34.0,    36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,170.,180.,190.,200., 225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,               650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,1.0D4,1.2D4,1.4D4,1.6D4,1.8D4,2.0D4]
      # GROSS IONISATION 
      YION=[.0,.0038,.0094,.0155,.0218,.0279,.0336,.0392,.0446,.0504,.0561,.0612,.0667,.0722,.0773,.0826,.0878,.0929,.0981,.103,.121,.138,.154,.188,.219,.242,.262,.276,.290,.301,.311,.319,.326,.333,.336,.338,.340,.341,.342,.342,.343,.342,.341,.340,.338,.335,.332,.326,.322,.316, .302,.290,.279,.268,.246,.231,.216,.203,.191,.180,              
      ..171,.163,.155,.148,.142,.136,.130,.125,.109,.097,.0872,.0795,.0729,.0608,.0524,.0458,.0410,.0368,.0336,.0311,.0293,.0255,.0229,.0206,.0192,.0164,.0147,.0130,.0119,.0108/
      # COUNTING IONISATION      
      YINC=[.0,.0038,.0094,.0155,.0218,.0279,.0336,.0392,.0446,.0504,.0561,.0612,.0667,.0722,.0773,.0826,.0878,.0929,.0981,.103,.121,.138,.154,.188,.219,.242,.262,.276,.290,.301,.311,.319,.326,.333,.336,.338,.340,.341,.341,.341,.342,.341,.340,.339,.337,.334,.331,.325,.321,.315,.301,.289,.278,.267,.245,.230,.215,.202,.190,.179,           .170,.162,.154,.147,.141,.135,.129,.124,.108,.096,.0867,.0791,.0725,.0605,.0522,.0456,.0408,.0367,.0335,.0310,.0292,.0254,.0228,.0205,.0191,.0163,.0146,.0129,.0118,.0107]
      #  ALL EXCITATIONS IN UNITS OF 10**-18
      #  2 3S J=1 METASTABLE
      X23S=[19.81961,19.83,19.85,19.88,19.9,19.95,20.0,20.05,20.1,20.15,20.2,20.25,20.3,20.35,20.4,20.45,20.50,20.55,20.6,20.63,20.66,20.7,20.75,20.8,20.85,20.90,20.94,20.97,21.0,21.05,21.1,21.15,21.2,21.25,21.3,21.4,21.5,22.0,22.2,22.25,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.52,22.55,22.6,22.62,22.64,22.66,22.68,22.7,22.71,22.72,22.75,22.8,22.85,22.88,22.9,22.95,22.97,23.0,23.05,23.1,23.3,23.4,23.5,23.6,23.8,24.0,24.5,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1500.,1600.,1700.,1800.,1900.,2000.]
      Y23S=[0.00,.780,1.16,1.64,1.98,2.81,3.53,4.13,4.61,4.96,5.20,5.35,5.41,5.36,5.21,4.95,4.63,4.23,3.66,3.16,3.04,3.13,3.41,3.77,4.14,4.44,4.54,4.43,4.27,3.96,3.69,3.48,3.32,3.21,3.15,3.08,3.06,3.09,3.08,3.04,2.97,2.84,2.25,1.58,1.83,4.91,4.45,4.13,3.95,3.79,3.60,3.51,3.07,2.45,2.61,2.67,2.36,2.97,3.01,2.96,2.87,2.61,3.04,2.75,3.16,3.06,2.90,2.79,2.81,2.86,2.75,2.80,2.71,2.65,2.58,2.48,2.39,2.30,2.19,2.09,1.98,1.84,1.73,1.53,1.36,1.22,1.09,.985,.892,.812,.742,.680,.555,.461,.389,.332,.287,.250,.220,.194,.154,.125,.103,.0861,.0726,.0617,.0529,.0397,.0305,.0239,.0191,.0154,.0126,.0105,.00740,.00542,.00407,.00314,.00247,.00187,.00145,.00115,9.23e-4,7.53e-4,6.22e-4,5.20e-4,4.39e-4,3.74e-4,3.21e-4,2.42e-4,1.86e-4,1.47e-4,1.18e-4,9.57e-5,7.89e-5,6.58e-5,5.54e-5,4.71e-5,4.04e-5]
      # 2 1S J=0 METASTABLE
      X21S=[20.61577,20.62,20.63,20.65,20.67,20.69,20.72,20.75,20.80,20.85,20.90,20.96,20.98,21.0,21.05,21.1,21.15,21.2,21.22,21.25,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.25,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.55,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.68,22.7,22.71,22.72,22.73,22.75,22.78,22.8,22.85,22.87,22.88,22.89,22.9,22.91,22.92,22.93,22.94,22.95,22.96,22.97,22.98,22.99,23.0,23.01,23.05,23.1,23.2,23.3,23.4,23.5,23.6,23.8,24.0,24.2,24.4,24.7,25.0,26.0,28.0,30.0,32.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,90.0,100.,110.,120.,140.,170.,200.,240.,280.,320.,360.,400.,450.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1400.,1600.,1800.,2000.,2200.,2400.,2700.,3000.]
      Y21S=[0.00,.406,.477,.664,.820,.946,1.10,1.24,1.47,1.72,2.03,2.52,2.40,2.39,2.39,2.42,2.46,2.53,2.55,2.53,2.52,2.53,2.57,2.59,2.62,2.64,2.65,2.65,2.65,2.62,2.59,2.53,2.42,2.14,1.86,2.17,3.35,3.01,2.79,2.34,1.80,1.88,2.53,3.37,3.64,3.55,3.42,3.23,2.95,2.45,1.84,2.32,2.49,2.60,2.62,2.57,2.40,2.57,2.59,2.32,1.73,2.55,2.36,2.35,2.32,2.23,2.50,2.64,2.61,1.86,2.28,2.53,2.35,2.39,2.44,2.51,2.48,2.45,2.44,2.49,2.57,2.63,2.56,2.54,2.53,2.51,2.45,2.35,2.21,2.05,1.88,1.75,1.65,1.56,1.48,1.41,1.30,1.21,1.14,1.08,1.03,.948,.850,.771,.686,.617,.560,.512,.471,.428,.392,.361,.335,.312,.292,.259,.233,.211,.193,.178,.154,.136,.121,.109,.0997,.0916,.0817,.0737]
      # 2 3P J=2,1,0 
      X23P=[20.96409,20.97,21.0,21.05,21.1,21.15,21.2,21.25,21.3,21.35,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.4,22.45,22.5,22.55,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.67,22.68,22.69,22.7,22.71,22.72,22.73,22.75,22.77,22.8,22.85,22.88,22.9,22.91,22.92,22.93,22.96,22.97,22.99,23.0,23.04,23.06,23.07,23.08,23.1,23.2,23.3,23.4,23.5,23.6,23.7,23.8,23.9,24.0,24.2,24.4,24.6,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2300.,2600.,3000.]
      Y23P=[0.00,.0936,.241,.442,.611,.761,.912,1.03,1.10,1.17,1.23,1.32,1.40,1.47,1.54,1.60,1.66,1.73,1.80,1.87,1.94,2.05,2.07,2.09,2.22,2.48,2.68,2.60,2.27,1.78,1.45,1.43,1.52,1.59,1.60,1.45,1.47,1.70,1.83,1.91,1.95,1.93,2.32,1.98,1.72,2.23,2.09,2.12,2.07,2.17,1.82,2.18,1.80,1.82,1.94,1.94,1.90,1.88,1.89,2.00,2.16,2.21,2.14,2.08,2.09,2.03,2.16,2.26,2.29,2.41,2.47,2.48,2.47,2.43,2.30,2.15,2.00,1.84,1.69,1.55,1.43,1.31,1.21,1.11,.907,.748,.622,.522,.441,.375,.322,.277,.241,.210,.162,.127,.101,.0812,.0663,.0547,.0455,.0382,.0324,.0277,.0206,.0156,.0121,.00961,.00772,.00518,.00363,.00264,.00197,.00151,.00118,8.48e-4,5.21e-4,3.42e-4,2.37e-4,1.70e-4,9.65e-5,5.99e-5,3.96e-5,2.76e-5,2.00e-5,1.30e-5,8.94e-6,5.78e-6]
      # 2 1P RESONANCE RADIATION J=1   58.434 NM       OSC STRENGTH F=0.27608  
      X21P=[21.21802,21.23,21.25,21.3,21.4,21.5,21.6,21.7,21.8,21.9,22.0,22.1,22.2,22.3,22.35,22.4,22.42,22.44,22.46,22.48,22.5,22.55,22.57,22.59,22.6,22.61,22.62,22.63,22.64,22.65,22.66,22.68,22.7,22.71,22.72,22.73,22.75,22.8,22.85,22.87,22.88,22.9,22.91,22.94,22.96,22.97,22.98,22.99,23.0,23.01,23.05,23.1,23.2,23.3,23.4,23.5,23.6,23.7,23.8,23.9,24.0,24.2,24.4,24.6,24.8,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,240.,280.,320.,360.,400.,450.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1300.,1400.]
      Y21P=[0.00,.0519,.0884,.163,.290,.397,.493,.582,.666,.748,.831,.914,.994,1.06,1.09,1.10,1.10,1.36,1.46,1.35,1.32,1.30,1.28,1.19,1.07,.943,.922,.941,.872,.751,.737,.959,1.13,1.17,.920,1.03,1.12,1.23,1.35,1.27,1.18,1.22,1.03,1.14,1.12,1.38,1.29,1.25,1.38,1.24,1.12,1.13,1.11,1.12,1.16,1.30,1.41,1.44,1.41,1.37,1.39,1.42,1.52,1.70,1.80,1.89,2.16,2.42,2.69,2.96,3.24,3.53,3.82,4.12,4.42,4.71,5.00,5.29,5.57,5.85,6.12,6.63,7.10,7.53,7.93,8.28,8.61,8.90,9.16,9.39,9.60,9.95,10.2,10.4,10.6,10.7,10.7,10.8,10.8,10.7,10.6,10.4,10.2,10.0,9.57,9.13,8.71,7.96,7.33,6.79,6.32,5.92,5.50,5.13,4.82,4.54,4.30,4.08,3.72,3.41,3.16,2.95,2.76,2.60,2.46]
      # 3 3S J=1 
      X33S=[22.71847,22.72,22.73,22.74,22.75,22.78,22.8,22.83,22.85,22.86,22.87,22.88,22.89,22.9,22.91,22.912,22.914,22.916,22.92,22.94,22.96,22.98,23.0,23.02,23.05,23.1,23.2,23.25,23.3,23.35,23.4,23.44,23.48,23.52,23.57,23.59,23.62,23.65,23.7,23.75,23.82,23.89,23.93,24.0,24.4,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.]
      Y33S=[0.00,.800,1.15,1.03,.985,.854,.812,.752,.644,.503,.277,1.79,1.17,1.06,1.32,1.51,1.57,1.37,.896,.848,.907,.816,.838,.656,.872,.859,.890,.900,.860,.750,.620,.810,.770,.960,.870,.870,.730,.710,.710,.730,.770,.690,.760,.742,.725,.694,.665,.635,.605,.577,.550,.524,.499,.452,.409,.370,.336,.305,.278,.253,.231,.212,.178,.151,.130,.112,.0968,.0817,.0696,.0597,.0516,.0449,.0393,.0306,.0242,.0195,.0160,.0132,.0111,.00938,.00800,.00596,.00456,.00356,.00284,.00230,.00188,.00131,9.53e-4,7.13e-4,5.47e-4,4.29e-4,3.25e-4,2.52e-4,1.99e-4,1.60e-4,1.31e-4,1.08e-4,9.02e-5,7.62e-5,6.49e-5,5.58e-5,4.20e-5,3.25e-5,2.56e-5,2.06e-5]
      # 3 1S J=0
      X31S=[22.92032,22.96,22.985,23.02,23.05,23.07,23.1,23.15,23.2,23.25,23.3,23.33,23.36,23.39,23.41,23.45,23.48,23.51,23.54,23.56,23.59,23.62,23.65,23.68,23.73,23.82,23.88,23.94,24.0,25.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,65.0,70.0,75.0,80.0,90.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.,1100.,1200.,1300.,1400.,1500.,1600.,1800.,2000.,2400.,2800.,3200.,3600.,4000.]
      Y31S=[0.00,.535,.457,.587,.490,.490,.478,.491,.506,.512,.501,.470,.418,.374,.351,.371,.520,.681,.520,.467,.496,.410,.442,.429,.416,.455,.377,.444,.422,.426,.428,.429,.425,.419,.412,.402,.396,.387,.370,.354,.338,.324,.311,.296,.283,.271,.260,.242,.226,.213,.203,.193,.185,.172,.161,.152,.144,.137,.131,.125,.120,.111,.103,.0957,.0894,.0839,.0778,.0725,.0678,.0636,.0599,.0566,.0509,.0462,.0423,.0389,.0361,.0336,.0315,.0296,.0264,.0238,.0199,.0171,.0150,.0133,.0120]
      # 3 3P J=2,1,0
      X33P=[23.00707,23.02,23.03,23.04,23.05,23.06,23.07,23.08,23.1,23.2,23.3,23.4,23.5,23.55,23.6,23.65,23.7,23.8,23.9,24.0,24.1,24.2,24.3,24.4,24.6,24.8,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y33P=[0.00,.387,.410,.179,.148,.335,.381,.282,.280,.309,.332,.359,.411,.416,.405,.448,.438,.467,.485,.493,.500,.515,.517,.513,.503,.508,.512,.516,.515,.524,.544,.539,.523,.500,.474,.446,.392,.342,.297,.259,.226,.197,.173,.152,.134,.118,.102,.0878,.0762,.0665,.0512,.0401,.0318,.0255,.0208,.0171,.0142,.0119,.00854,.00632,.00479,.00371,.00292,.00234,.00157,.00109,7.93e-4,5.92e-4,4.53e-4,3.34e-4,2.53e-4,1.96e-4,1.55e-4,1.24e-4,1.01e-4,8.37e-5,6.99e-5,5.89e-5,5.02e-5,3.72e-5,2.83e-5,2.21e-5,1.75e-5,1.16e-5,8.05e-6,5.82e-6,4.34e-6,3.32e-6,2.60e-6,2.07e-6,1.68e-6]
      # 3 3D J=3,2,1
      X33D=[23.07365,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.55,23.6,23.66,23.7,23.75,23.8,23.85,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.25,24.3,24.35,24.4,24.45,24.5,24.55,24.6,24.65,24.7,24.8,24.9,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,650.,700.,750.,800.,850.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y33D=[0.00,.00956,.0236,.0401,.0602,.0861,.120,.166,.222,.229,.238,.197,.123,.118,.110,.112,.104,.110,.099,.0985,.113,.107,.109,.114,.118,.119,.118,.116,.113,.105,.112,.116,.118,.119,.120,.120,.119,.115,.118,.121,.121,.120,.113,.105,.0958,.0867,.0780,.0701,.0628,.0563,.0505,.0453,.0407,.0366,.0330,.0298,.0269,.0221,.0183,.0152,.0127,.0107,.00868,.00712,.00588,.00490,.00347,.00252,.00188,.00142,.00110,8.64e-4,5.56e-4,3.76e-4,2.64e-4,1.92e-4,1.44e-4,1.10e-4,8.60e-5,6.84e-5,5.53e-5,4.53e-5,3.76e-5,3.15e-5,2.28e-5,1.70e-5,1.30e-5,1.02e-5,8.12e-6,6.25e-6,4.92e-6,3.94e-6,3.21e-6,2.64e-6,2.21e-6,1.58e-6,1.17e-6,8.95e-7,6.98e-7,5.55e-7,3.67e-7,2.56e-7,1.85e-7,1.38e-7,1.06e-7,8.32e-8,6.64e-8,5.38e-8]
      # 3 1D J=2
      X31D=[23.07407,23.08,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.55,23.6,23.66,23.7,23.75,23.8,23.85,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.25,24.3,24.35,24.4,24.45,24.5,24.6,24.7,24.8,25.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,90.0,100.,110.,120.,140.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,370.,400.,440.,480.,520.,560.,600.,650.,700.,800.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y31D=[0.00,.097,.0973,.110,.126,.148,.175,.200,.221,.237,.235,.198,.185,.192,.168,.181,.189,.172,.193,.184,.190,.209,.206,.211,.214,.215,.212,.206,.199,.191,.174,.177,.179,.180,.181,.180,.180,.188,.198,.209,.217,.224,.229,.232,.234,.235,.234,.233,.228,.222,.215,.207,.199,.190,.180,.163,.148,.135,.124,.105,.0913,.0803,.0715,.0643,.0584,.0534,.0492,.0456,.0424,.0397,.0361,.0332,.0299,.0272,.0249,.0230,.0213,.0196,.0181,.0156,.0138,.0124,.0112,.0102,.00938,.00868,.00756,.00669,.00600,.00544,.00497,.00458,.00425,.00396]
      # 3 1P  RESONANCE RADIATION J=1  53.703 NM     OSC STRENGTH F=0.07342
      X31P=[23.08702,23.1,23.15,23.2,23.25,23.3,23.35,23.4,23.45,23.5,23.54,23.56,23.60,23.64,23.68,23.7,23.75,23.80,23.88,23.9,23.95,24.0,24.05,24.1,24.15,24.2,24.3,24.4,24.5,24.6,24.7,24.8,25.0,25.2,25.4,25.6,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.,3400.,3800.,4200.,4600.,5000.,5500.,6000.,6500.,7000.,8000.,9000.,10000.]
      Y31P=[0.00,.114,.129,.137,.137,.134,.131,.130,.128,.129,.117,.127,.122,.163,.146,.150,.191,.180,.226,.224,.218,.230,.245,.253,.265,.274,.294,.308,.330,.360,.373,.382,.397,.409,.418,.423,.434,.469,.516,.577,.648,.723,.808,.941,1.07,1.20,1.32,1.43,1.54,1.64,1.74,1.82,1.90,1.97,2.04,2.10,2.15,2.27,2.35,2.42,2.47,2.50,2.52,2.53,2.53,2.52,2.50,2.47,2.42,2.33,2.24,2.14,2.06,1.97,1.90,1.82,1.76,1.64,1.53,1.44,1.36,1.29,1.21,1.15,1.08,1.03,.982,.938,.862,.799,.745,.699,.658,.623,.563,.514,.474,.440,.411,.386,.364,.344,.312,.285,.263,.244,.228,.211,.197,.184,.173,.155,.140,.128]
      # 4 3S J=1
      X43S=[23.59396,23.62,23.65,23.7,23.8,23.9,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.]
      Y43S=[0.0,.314,.304,.292,.276,.266,.260,.243,.238,.234,.227,.212,.195,.178,.162,.147,.133,.121,.110,.100,.0911,.0832,.0761,.0697,.0640,.0589,.0543,.0464,.0399,.0346,.0301,.0264,.0225,.0194,.0168,.0147,.0113,.00894,.00718,.00585,.00483,.00403,.00289,.00214,.00164,.00127,.00101,8.17e-4,6.69e-4,5.55e-4,4.66e-4,3.94e-4,3.37e-4,2.90e-4,2.19e-4,1.70e-4,1.34e-4,1.08e-4,8.81e-5]
      # 4 1S J=0
      X41S=[23.67357,23.7,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,65.0,70.0,75.0,80.0,90.0,100.,110.,120.,130.,140.,160.,180.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y41S=[0.0,.109,.110,.111,.112,.121,.128,.133,.138,.141,.143,.146,.148,.147,.146,.144,.139,.134,.129,.123,.118,.113,.108,.103,.0990,.0922,.0868,.0823,.0786,.0753,.0725,.0677,.0636,.0601,.0527,.0469,.0422,.0382,.0349,.0322,.0277,.0243,.0216,.0195,.0177,.0150,.0130,.0114,.0102,.00925,.00845,.00777,.00719,.00669,.00626]
      # 4 3P J=2,1,0
      X43P=[23.70789,23.75,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.]
      Y43P=[0.0,.085,.110,.118,.152,.177,.194,.205,.211,.215,.215,.209,.200,.189,.178,.167,.156,.146,.136,.127,.110,.0962,.0840,.0736,.0647,.0553,.0475,.0410,.0356,.0310,.0271,.0210,.0165,.0132,.0106,.00865,.00713,.00593,.00498,.00421,.00359,.00266,.00202,.00156,.00123,9.88e-4,8.03e-4,6.60e-4,5.49e-4,4.61e-4,3.90e-4,2.87e-4,2.17e-4,1.67e-4,1.32e-4,1.06e-4,8.18e-5,6.46e-5,5.18e-5,4.22e-5,3.48e-5,2.90e-5,2.45e-5,2.08e-5,1.54e-5,1.17e-5,9.13e-6,7.25e-6,4.78e-6,3.32e-6,2.39e-6,1.78e-6,1.36e-6,1.07e-6,8.50e-7,6.88e-7]
      # 4 3D J=3,2,1
      X43D=[23.73609,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1500.,1600.]
      Y43D=[.0,.0288,.0363,.0407,.0575,.0646,.0681,.0692,.069,.0675,.0629,.0573,.0516,.0461,.0411,.0365,.0325,.0290,.0258,.0231,.0186,.0151,.0123,.0102,.00847,.00681,.00554,.00455,.00378,.00316,.00267,.00194,.00145,.00111,8.61e-4,6.81e-4,5.47e-4,3.66e-4,2.55e-4,1.84e-4,1.37e-4,1.04e-4,8.08e-5,6.39e-5,4.18e-5,2.87e-5,2.05e-5,1.51e-5,1.14e-5,8.32e-6,6.24e-6,4.79e-6,3.75e-6,3.00e-6,2.43e-6,1.99e-6,1.65e-6,1.39e-6,1.18e-6,8.66e-7,6.55e-7,5.08e-7,4.01e-7,3.22e-7,2.63e-7]
      # 4 1D J=2
      X41D=[23.73633,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,44.0,48.0,52.0,56.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,160.,180.,200.,220.,240.,260.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,800.,900.,1000.,1100.,1200.]
      Y41D=[0.0,.0791,.0799,.0846,.0902,.0959,.102,.107,.112,.120,.127,.131,.134,.136,.136,.134,.131,.126,.121,.116,.112,.107,.102,.0978,.0927,.0880,.0836,.0796,.0724,.0663,.0610,.0564,.0489,.0430,.0384,.0346,.0314,.0288,.0246,.0215,.0190,.0171,.0155,.0142,.0128,.0117,.0107,.00990,.00860,.00760,.00681,.00616,.00563]
      # 4 3F J=3,4,2
      X43F=[23.73701,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.]
      Y43F=[0.0,.0357,.0318,.0289,.0161,.0117,.00922,.00760,.00642,.00550,.00478,.00418,.00369,.00327,.00291,.00261,.00234,.00211,.00191,.00173,.00144,.00121,.00102,8.68e-4,7.44e-4,5.57e-4,4.25e-4,3.30e-4,2.61e-4,2.09e-4,1.61e-4,1.26e-4,9.98e-5,8.03e-5,6.53e-5,5.36e-5,3.72e-5,2.66e-5,1.96e-5,1.47e-5]
      # 4 1F J=3
      X41F=[23.73701,23.8,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,58.0,62.0,66.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,340.,380.,420.,460.,500.,550.,600.,650.,700.,750.,800.,900.,1000.]
      Y41F=[0.0,.0175,.0172,.0160,.0149,.0139,.0130,.0122,.0114,.0108,.0102,.00909,.00819,.00742,.00677,.00619,.00569,.00525,.00487,.00452,.00393,.00346,.00307,.00274,.00246,.00217,.00193,.00173,.00156,.00142,.00129,.00108,9.24e-4,7.99e-4,6.99e-4,6.17e-4,5.50e-4,4.47e-4,3.73e-4,3.19e-4,2.77e-4,2.45e-4,2.19e-4,1.99e-4,1.67e-4,1.45e-4,1.28e-4,1.15e-4,1.04e-4,9.39e-5,8.55e-5,7.86e-5,78.27e-5,6.78e-5,6.35e-5,5.63e-5,5.07e-5]
      # 4 1P RESONANCE RADIATION J=1   52.222 NM    OSC STRENGTH F=0.02986
      X41P=[23.74207,23.8,23.9,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,56.0,58.0,60.0,64.0,68.0,72.0,76.0,80.0,85.0,90.0,95.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,220.,240.,260.,280.,300.,320.,340.,360.,380.,400.,440.,480.,520.,560.,600.,640.,680.,720.,760.,800.,850.,900.,950.,1000.,1100.,1200.,1300.,1400.,1600.,1800.,2000.,2200.,2400.,2600.,2800.,3000.,3400.,3800.,4200.,4600.,5000.,5500.,6000.,6500.,7000.,7500.,8000.,9000.,10000.]
      Y41P=[0.00,.0147,.0242,.0334,.107,.158,.196,.227,.255,.281,.307,.333,.360,.387,.414,.442,.470,.498,.526,.553,.606,.657,.704,.748,.789,.826,.860,.891,.919,.944,.986,1.02,1.05,1.06,1.08,1.09,1.10,1.10,1.10,1.09,1.07,1.05,1.03,1.01,.985,.939,.896,.855,.817,.783,.751,.722,.695,.670,.646,.625,.605,.569,.537,.509,.484,.461,.441,.423,.406,.390,.376,.360,.345,.332,.320,.298,.279,.263,.248,.224,.205,.189,.175,.163,.153,.145,.137,.124,.113,.104,.0969,.0905,.0837,.0779,.0729,.0686,.0648,.0614,.0556,.0510]
      # 5 1P RESONANCE  RADIATION J=1  51.562 NM      F=0.01504
      # 6 1P RESONANCE  RADIATION J=1  51.210 NM      F=0.00863
      # 7 1P RESONANCE  RADIATION J=1  51.000 NM      F=0.00540
      # 8 1P RESONANCE  RADIATION J=1  50.865 NM      F=0.00362
      # 9 1P RESONANCE  RADIATION J=1  50.772 NM      F=0.00253
      # 10 1P RESONANCE RADIATION J=1  50.706 NM      F=0.00184
      # 11 1P RESONANCE RADIATION J=1  50.657 NM      F=0.00138
      # 12 1P RESONANCE RADIATION J=1  50.620 NM      F=0.00106
      # SUM HIGHER 1P LEVELS RESONANCE RADIATION J=1  F=0.00440
      # TOTAL SUM OSCILLATOR STRENGTH = 0.42326
      #
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF
      Z2T=[42.1,23.5,10.7,5.88,3.25,1.50,.886,.582,.437,.429,.460,.484,.502,.515,.525,.540,.550,.566,.575,.585,.592,.596,.597,.598,.598]
      # UNITS 10**-24
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      # --------------------------------------------------------------------
      if(NANISO == 0):
      :
      NAME='HE3    ISOTROPIC   2014  '   
      else: 
      NAME='HE3  ANISOTROPIC   2014  '
      # endif                                         
      # --------------------------------------------------------------------  
      #  HELIUM 3 USES SAME X-SECTIONS AS HE 4 WITH CORRECT ATOMIC MASS
      #  HELIUM 4 BEST KNOWN GAS USED AS STANDARD ACCURACY BETTER THAN 0.2%   
      #  AT ALL FIELDS.
      #  2002: UPDATED 1997 TO INCLUDE ANISOTROPIC ELASTIC SCATTTERING
      #  2007: INCREASED FILE UP TO 10 MEV 
      #  2007: NEW ANISTROPIC SCATTERING def INTRODUCED
      #  2007: PENNING FRACTION INTRODUCED
      #  2010: SPLIT EXCITATION INTO 49 LEVELS.
      #  2014: UPDATED IONISATION TO BE CONSISTENT WITH FURSA AND BRAY CCC
      # USED MAINLY THE FOLLOWING THEORETICAL EXCITATION X-SECTIONS:
      # AT RESONANCE ENERGIES USED RMPS CALCULATIONS OF 
      #  BARTSCHAT   J.PHYS B31(1998)L469
      # AT HIGHER ENERGIES USED RALCHENKO AT.NUCL TABLES 94(2008)603
      # AT HIGHEST ENERGIES FOR RESONANCE DIPOLE TRANSITIONS USED BEF SCALING
      # 2013: INTRODUCED IONISATION WITH CHARGE STATE =2
      # -------------------------------------------------------------------- 
      #
      # BORN-BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=0.489
      C=5.50 
      #
      NION=2 
      NATT=1 
      NIN=49 
      NNULL=0   
      IONMODEL=0
      #
      NBREM=25
      DO 6 J=1,NIN
      IZBR[J]=0
      6 CONTINUE
      IZBR[50]=2
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=NANISO
      NDATA=144
      NIOND=90                                                          
      N23S=139          
      N21S=128
      N23P=128          
      N21P=125                            
      N33S=106
      N31S=87
      N33P=91
      N33D=108
      N31D=94
      N31P=114
      N43S=59
      N41S=55
      N43P=76
      N43D=65
      N41D=53
      N43F=40
      N41F=57
      N41P=96
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(3.01600*AMU)                                      
      E[3]=24.58739
      # ENTER EXCITATION X-SECTION AT 1.4MEV                                   
      E[4]=0.5841e-19
      # ENTER IONISING X-SECTION AT 1.4MEV                            
      E[5]=0.1271e-18
      # ENTER EOBY FOR MINIMUM IONISING PARTICLE         
      E[6]=10.5
      # EOBY AT LOW ENERGY
      EOBY[1]=12.0    
      EOBY[2]=65.0    
      # IONISATION ENERGIES 
      EION[1]=24.58739
      EION[2]=79.00515
      LEGAS[1]=0
      LEGAS[2]=0
      ISHELL[1]=0
      ISHELL[2]=0
      # AUGER AND FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1
      EC0[2]=10.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      #
      DO 776 J=1,NION
      DO 777 I=1,20000
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      #
      EIN[1]=19.81961                                                   
      EIN[2]=20.61577
      EIN[3]=20.96409
      EIN[4]=21.21802
      EIN[5]=22.71847
      EIN[6]=22.92032
      EIN[7]=23.00707
      EIN[8]=23.07365
      EIN[9]=23.07407
      EIN[10]=23.08702
      EIN[11]=23.59396
      EIN[12]=23.67357
      EIN[13]=23.70789
      EIN[14]=23.73609
      EIN[15]=23.73633
      EIN[16]=23.73701
      EIN[17]=23.73701
      EIN[18]=23.74207
      EIN[19]=23.97197
      EIN[20]=24.01121
      EIN[21]=24.02822
      EIN[22]=24.04266
      EIN[23]=24.04280
      EIN[24]=24.04315
      EIN[25]=24.04315
      EIN[26]=24.04580
      EIN[27]=24.16900
      EIN[28]=24.19116
      EIN[29]=24.20081
      EIN[30]=24.20916
      EIN[31]=24.20925
      EIN[32]=24.21100
      EIN[33]=24.28456
      EIN[34]=24.29828
      EIN[35]=24.30429
      EIN[36]=24.30954
      EIN[37]=24.30960
      EIN[38]=24.31071
      EIN[39]=24.35810
      EIN[40]=24.36718
      EIN[41]=24.37116
      EIN[42]=24.37468
      EIN[43]=24.37472
      EIN[44]=24.37547
      EIN[45]=24.41989
      EIN[46]=24.45168
      EIN[47]=24.47518
      EIN[48]=24.49308
      EIN[49]=24.50708
      EIN[50]=0.0
      #***********************************************************************
      # ENTER PENNING FRACTION FOR EACH LEVEL
      # PENNING FRACTION BETWEEN 0.9 AND 1.0 FOR ALL MIXTURES
      DO 50 NL=1,NIN
      PENFRA[1,NL]=1.00
      #  PENNING TRANSFER DISTANCE MICRONS
      PENFRA[2,NL]=1.0  
      # PENNING TRANSFER TIME PICOSECONDS
      50 PENFRA[3,NL]=1.0
      # HORNBECK MOLNAR MOD 
      # IF PURE GAS SET TO : 0 FOR FIRST 6 LEVELS 0.25 FOR OTHER LEVELS
      #     PENFRA(1,1)=0.0
      #     PENFRA(1,2)=0.0
      #     PENFRA(1,3)=0.0
      #     PENFRA(1,4)=0.0
      #     PENFRA(1,5)=0.0
      #     PENFRA(1,6)=0.0
      #***********************************************************************
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      4 DO 5 NL=1,NIN
      DO 651 I=1,20000
      if(EG[I]:
      > EIN[NL]) :
      IOFFN[NL]=I-1
      GO TO 5
      # endif
      651 CONTINUE
      5 CONTINUE
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC        HELIUM 3             '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC   ISOTROPIC         HELIUM 3             '
      # endif
      SCRPT[3]=' IONISATION CHARGE STATE=1         ELOSS= 24.58739'
      SCRPT[4]=' IONISATION CHARGE STATE=2         ELOSS= 79.00515'
      SCRPT[5]=' ATTACHMENT                                       '
      SCRPT[6]='                                                  ' 
      SCRPT[7]='                                                  '
      SCRPT[8]=' EXC  23S J=1    METASTABLE        ELOSS= 19.81961'
      SCRPT[9]=' EXC  21S J=0    METASTABLE        ELOSS= 20.61577'
      SCRPT[10]=' EXC  23P J=2,1,0                  ELOSS= 20.96409'
      SCRPT[11]=' EXC  21P J=1    RESONANT          ELOSS= 21.21802'
      SCRPT[12]=' EXC  33S J=1                      ELOSS= 22.71847'
      SCRPT[13]=' EXC  31S J=0                      ELOSS= 22.92032'
      SCRPT[14]=' EXC  33P J=2,1,0                  ELOSS= 23.00707'
      SCRPT[15]=' EXC  33D J=3,2,1                  ELOSS= 23.07365'
      SCRPT[16]=' EXC  31D J=2                      ELOSS= 23.07407'
      SCRPT[17]=' EXC  31P J=1    RESONANT          ELOSS= 23.08702'
      SCRPT[18]=' EXC  43S J=1                      ELOSS= 23.59396'
      SCRPT[19]=' EXC  41S J=0                      ELOSS= 23.67357'
      SCRPT[20]=' EXC  43P J=2,1,0                  ELOSS= 23.70789'
      SCRPT[21]=' EXC  43D J=3,2,1                  ELOSS= 23.73609'
      SCRPT[22]=' EXC  41D J=2                      ELOSS= 23.73633'
      SCRPT[23]=' EXC  43F J=3,4,2                  ELOSS= 23.73701'
      SCRPT[24]=' EXC  41F J=3                      ELOSS= 23.73701'
      SCRPT[25]=' EXC  41P J=1    RESONANT          ELOSS= 23.74207'
      SCRPT[26]=' EXC  53S J=1                      ELOSS= 23.97197'
      SCRPT[27]=' EXC  51S J=0                      ELOSS= 24.01121'
      SCRPT[28]=' EXC  53P J=2,1,0                  ELOSS= 24.02822'
      SCRPT[29]=' EXC  53D J=3,2,1                  ELOSS= 24.04266'
      SCRPT[30]=' EXC  51D J=2                      ELOSS= 24.04280'
      SCRPT[31]=' EXC  53F J=3,4,2                  ELOSS= 24.04315'
      SCRPT[32]=' EXC  513 J=3                      ELOSS= 24.04315'
      SCRPT[33]=' EXC  51P J=1    RESONANT          ELOSS= 24.04580'
      SCRPT[34]=' EXC  63S J=1                      ELOSS= 24.16900'
      SCRPT[35]=' EXC  61S J=0                      ELOSS= 24.19116'
      SCRPT[36]=' EXC  63P J=2,1,0                  ELOSS= 24.20081'
      SCRPT[37]=' EXC  63D J=3,2,1                  ELOSS= 24.20916'
      SCRPT[38]=' EXC  61D J=2                      ELOSS= 24.20925'
      SCRPT[39]=' EXC  61P J=1    RESONANT          ELOSS= 24.21100'
      SCRPT[40]=' EXC  73S J=1                      ELOSS= 24.28456'
      SCRPT[41]=' EXC  71S J=0                      ELOSS= 24.29828'
      SCRPT[42]=' EXC  73P J=2,1,0                  ELOSS= 24.30429'
      SCRPT[43]=' EXC  73D J=3,2,1                  ELOSS= 24.30954'
      SCRPT[44]=' EXC  71D J=2                      ELOSS= 24.30960'
      SCRPT[45]=' EXC  71P J=1    RESONANT          ELOSS= 24.31071'
      SCRPT[46]=' EXC  N3S SUM HIGH                 ELOSS= 24.35810'
      SCRPT[47]=' EXC  N1S SUM HIGH                 ELOSS= 24.36718'
      SCRPT[48]=' EXC  N3P SUM HIGH                 ELOSS= 24.37116' 
      SCRPT[49]=' EXC  N3D SUM HIGH                 ELOSS= 24.37468'
      SCRPT[50]=' EXC  N1D SUM HIGH                 ELOSS= 24.37472'
      SCRPT[51]=' EXC  81P J=1    RESONANT          ELOSS= 24.37547'
      SCRPT[52]=' EXC  91P J=1    RESONANT          ELOSS= 24.41989'
      SCRPT[53]=' EXC 101P J=1    RESONANT          ELOSS= 24.45168'
      SCRPT[54]=' EXC 111P J=1    RESONANT          ELOSS= 24.47518'
      SCRPT[55]=' EXC 121P J=1    RESONANT          ELOSS= 24.49308'
      SCRPT[56]=' EXC  N1P SUM HI RESONANT          ELOSS= 24.50708'
      SCRPT[57]=' BREMSSTRAHLUNG FROM HELIUM ATOM                  '
      #      EN=-ESTEP/2.00    
      DO 9000 I=1,NSTEP   
      EN=EG[I]                                             
      #      EN=EN+ESTEP 
      if(EN > EIN[1]:
      ) :
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      # endif
      DO 10 J=2,N                                                  
      if(EN <= XEN[J]:
      ) GO TO 20                                         
      10 CONTINUE                                                          
      J=N                                                          
      20 A=(YEL[J]-YEL[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEL[J]-XEN[J]*YEL[J-1])/(XEN[J-1]-XEN[J])
      QELA=(A*EN+B)*1.0D-16
      #
      A=(YEM[J]-YEM[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEM[J]-XEN[J]*YEM[J-1])/(XEN[J-1]-XEN[J]) 
      QMOM=(A*EN+B)*1.0D-16
      PQ1=0.5+(QELA-QMOM)/QELA
      #
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=A*EN+B
      # EPSILON = 1-YEPS
      PQ2=1.00-PQ2
      #
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      :
      Q[2][I]=QMOM
      PEQEL[2][I]=0.5
      # endif
      # GROSS IONISATION                                                      
      QION[1][I]=0.00
      PEQION[1][I]=0.50  
      if(NANISO == 2):
      PEQION[1][I]=0.00                               
      if(EN <= EION[1]:
      ) GO TO 200 
      if(EN > XION(NIOND):
      ) GO TO 121     
      DO 110 J=2,NIOND                                                  
      if(EN <= XION[J]:
      ) GO TO 120                                       
      110 CONTINUE                                                          
      J=NIOND                                                           
      120 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.e-16 
      GO TO 122
      # USE BORN-BETHE X-SECTION ABOVE XION(NIOND) EV
      121 AX2=1.00/BETA2
      AX1=AX2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)/0.995
      122 CONTINUE
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY 
      # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY 
      # IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
      )) GO TO 200
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])                               
      # ATTACHMENT                                                            
      200 Q[4][I]=0.00 
      # COUNTING IONISATION
      Q[5][I]=0.00
      PEQION[2][I]=0.50
      if(NANISO == 2):
      PEQION[2][I]=0.00
      if(EN <= EION[1]:
      ) GO TO 250
      if(EN > XION(NIOND):
      ) GO TO 241
      DO 230 J=2,NIOND
      if(EN <= XION[J]:
      ) GO TO 240
      230 CONTINUE
      J=NIOND
      240 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])      
      Q[5][I]=(A*EN+B)*1.0D-16
      GO TO 242
      # USE BORN-BETHE X-SECTION ABOVE XION(NIOND) EV
      241 Q[5][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)
      242 CONTINUE  
      if(EN <= (2.00*EION[2]:
      )) GO TO 250
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      250 Q[6][I]=0.00                                                      
      #
      QTEMP1=2.0*Q[5][I]-QION[1][I]
      QTEMP2=QION[1][I]-Q[5][I]
      QION[1][I]=QTEMP1
      QION[2][I]=QTEMP2
      if(QION[2][I]:
      < 0.0) QION[2][I]=0.0
      #
      DO 251 NL=1,NIN+1
      QIN(NL,I)=0.00
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
      :
      PEQIN(NL,I)=0.00
      # endif
      251 CONTINUE
      #
      # 2 3S 
      if(EN <= EIN[1]:
      ) GO TO 2000  
      if(EN > X23S(N23S):
      ) GO TO 311                                  
      DO 300 J=2,N23S                                                   
      if(EN <= X23S[J]:
      ) GO TO 310                                       
      300 CONTINUE                                                          
      J=N23S                                                            
      310 A=(Y23S[J]-Y23S[J-1])/(X23S[J]-X23S[J-1])                         
      B=(X23S[J-1]*Y23S[J]-X23S[J]*Y23S[J-1])/(X23S[J-1]-X23S[J])       
      QIN[1][I]=(A*EN+B)*1.e-18 
      GO TO 312
      # IF ENERGY GT X23S(N23S) EV SCALE BY 1/E**3 
      311 QIN[1][I]=Y23S(N23S)*(X23S(N23S)/EN)**3*1.e-18
      312 if(EN <= (2.0*EIN[1])) GO TO 320   
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]
      #
      # 2 1S                                                                  
      320 if(EN <= EIN[2]) GO TO 2000
      if(EN > X21S(N21S):
      ) GO TO 341                         
      DO 330 J=2,N21S                                                   
      if(EN <= X21S[J]:
      ) GO TO 340                                       
      330 CONTINUE                                                          
      J=N21S                                                            
      340 A=(Y21S[J]-Y21S[J-1])/(X21S[J]-X21S[J-1])                         
      B=(X21S[J-1]*Y21S[J]-X21S[J]*Y21S[J-1])/(X21S[J-1]-X21S[J])       
      QIN[2][I]=(A*EN+B)*1.e-18
      GO TO 342
      # IF ENERGY GT X21S(N21S) EV SCALE BY 1/E
      341 QIN[2][I]=Y21S(N21S)*(X21S(N21S)/EN)*1.e-18   
      342 if(EN <= (2.0*EIN[2])) GO TO 350
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]#
      # 2 3P
      350 if(EN <= EIN[3]) GO TO 2000
      if(EN > X23P(N23P):
      ) GO TO 371
      DO 360 J=2,N23P
      if(EN <= X23P[J]:
      ) GO TO 370
      360 CONTINUE
      J=N23P
      370 A=(Y23P[J]-Y23P[J-1])/(X23P[J]-X23P[J-1])                         
      B=(X23P[J-1]*Y23P[J]-X23P[J]*Y23P[J-1])/(X23P[J-1]-X23P[J])       
      QIN[3][I]=(A*EN+B)*1.e-18
      GO TO 372
      # IF ENERGY GT X23P(N23P) EV SCALE BY 1/E**3
      371 QIN[3][I]=Y23P(N23P)*(X23P(N23P)/EN)**3*1.e-18   
      372 if(EN <= (2.0*EIN[3])) GO TO 380
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]#
      # 2 1P        OSC STRENGTH  F=0.27608
      380 if(EN <= EIN[4]) GO TO 2000
      if(EN > X21P(N21P):
      ) GO TO 401
      DO 390 J=2,N21P
      if(EN <= X21P[J]:
      ) GO TO 400
      390 CONTINUE
      J=N21P
      400 A=(Y21P[J]-Y21P[J-1])/(X21P[J]-X21P[J-1])                         
      B=(X21P[J-1]*Y21P[J]-X21P[J]*Y21P[J-1])/(X21P[J-1]-X21P[J])       
      QIN[4][I]=(A*EN+B)*1.e-18
      GO TO 402
      # IF ENERGY GT X21P(N21P) EV : USE BEF SCALING
      401 QIN[4][I]=0.27608/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[4]+E[3])
      402 if(EN <= (2.0*EIN[4])) GO TO 410
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]#
      # 3 3S
      410 if(EN <= EIN[5]) GO TO 2000
      if(EN > X33S(N33S):
      ) GO TO 431
      DO 420 J=2,N33S
      if(EN <= X33S[J]:
      ) GO TO 430
      420 CONTINUE
      J=N33S
      430 A=(Y33S[J]-Y33S[J-1])/(X33S[J]-X33S[J-1])                         
      B=(X33S[J-1]*Y33S[J]-X33S[J]*Y33S[J-1])/(X33S[J-1]-X33S[J])       
      QIN[5][I]=(A*EN+B)*1.e-18
      GO TO 432
      # IF ENERGY GT X33S(N33S) EV SCALE BY 1/E**3
      431 QIN[5][I]=Y33S(N33S)*(X33S(N33S)/EN)**3*1.e-18   
      432 if(EN <= (2.0*EIN[5])) GO TO 440
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]#
      # 3 1S
      440 if(EN <= EIN[6]) GO TO 2000
      if(EN > X31S(N31S):
      ) GO TO 461
      DO 450 J=2,N31S
      if(EN <= X31S[J]:
      ) GO TO 460
      450 CONTINUE
      J=N31S
      460 A=(Y31S[J]-Y31S[J-1])/(X31S[J]-X31S[J-1])                         
      B=(X31S[J-1]*Y31S[J]-X31S[J]*Y31S[J-1])/(X31S[J-1]-X31S[J])       
      QIN[6][I]=(A*EN+B)*1.e-18
      GO TO 462
      # IF ENERGY GT X31S(N31S) EV SCALE BY 1/E   
      461 QIN[6][I]=Y31S(N31S)*(X31S(N31S)/EN)*1.e-18   
      462 if(EN <= (2.0*EIN[6])) GO TO 470
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]#
      # 3 3P
      470 if(EN <= EIN[7]) GO TO 2000
      if(EN > X33P(N33P):
      ) GO TO 491
      DO 480 J=2,N33P
      if(EN <= X33P[J]:
      ) GO TO 490
      480 CONTINUE
      J=N33P
      490 A=(Y33P[J]-Y33P[J-1])/(X33P[J]-X33P[J-1])                         
      B=(X33P[J-1]*Y33P[J]-X33P[J]*Y33P[J-1])/(X33P[J-1]-X33P[J])       
      QIN[7][I]=(A*EN+B)*1.e-18
      GO TO 492
      # IF ENERGY GT X33P(N33P) EV SCALE BY 1/E**3
      491 QIN[7][I]=Y33P(N33P)*(X33P(N33P)/EN)*1.e-18   
      492 if(EN <= (2.0*EIN[7])) GO TO 500
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]#
      # 3 3D
      500 if(EN <= EIN[8]) GO TO 2000
      if(EN > X33D[N33D]):
      GO TO 521
      DO 510 J=2,N33D
      if(EN <= X33D[J]):
      GO TO 520
      510 CONTINUE
      J=N33D
      520 A=(Y33D[J]-Y33D[J-1])/(X33D[J]-X33D[J-1])                         
      B=(X33D[J-1]*Y33D[J]-X33D[J]*Y33D[J-1])/(X33D[J-1]-X33D[J])       
      QIN[8][I]=(A*EN+B)*1.e-18
      GO TO 522
      # IF ENERGY GT X33D[N33D] EV SCALE BY 1/E**3
      521 QIN[8][I]=Y33D[N33D]*(X33D[N33D]/EN)*1.e-18   
      522 if(EN <= (2.0*EIN[8])) GO TO 530
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]#
      # 3 1D
      530 if(EN <= EIN[9]) GO TO 2000
      if(EN > X31D[N31D]):
      GO TO 551
      DO 540 J=2,N31D
      if(EN <= X31D[J]):
      GO TO 550
      540 CONTINUE
      J=N31D
      550 A=(Y31D[J]-Y31D[J-1])/(X31D[J]-X31D[J-1])                         
      B=(X31D[J-1]*Y31D[J]-X31D[J]*Y31D[J-1])/(X31D[J-1]-X31D[J])       
      QIN[9][I]=(A*EN+B)*1.e-18
      GO TO 552
      # IF ENERGY GT X31D[N31D] EV SCALE BY 1/E   
      551 QIN[9][I]=Y31D[N31D]*(X31D[N31D]/EN)*1.e-18   
      552 if(EN <= (2.0*EIN[9])) GO TO 560
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]#
      # 3 1P        OSC STRENGTH F=0.07342
      560 if(EN <= EIN[10]) GO TO 2000
      if(EN > X31P(N31P):
      ) GO TO 581
      DO 570 J=2,N31P
      if(EN <= X31P[J]:
      ) GO TO 580
      570 CONTINUE
      J=N31P
      580 A=(Y31P[J]-Y31P[J-1])/(X31P[J]-X31P[J-1])                         
      B=(X31P[J-1]*Y31P[J]-X31P[J]*Y31P[J-1])/(X31P[J-1]-X31P[J])       
      QIN[10][I]=(A*EN+B)*1.e-18
      GO TO 582
      # IF ENERGY GT X31P(N31P) EV : USE BEF SCALING
      581 QIN[10][I]=0.07342/(EIN[10]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[10]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[10]+E[3])
      582 if(EN <= (2.0*EIN[10])) GO TO 590
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      #
      # 4 3S
      590 if(EN <= EIN[11]) GO TO 2000
      if(EN > X43S(N43S):
      ) GO TO 611
      DO 600 J=2,N43S
      if(EN <= X43S[J]:
      ) GO TO 610
      600 CONTINUE
      J=N43S
      610 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[11][I]=(A*EN+B)*1.e-18
      GO TO 612
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      611 QIN[11][I]=Y43S(N43S)*(X43S(N43S)/EN)**3*1.e-18
      612 if(EN <= (2.0*EIN[11])) GO TO 620
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      #
      # 4 1S
      620 if(EN <= EIN[12]) GO TO 2000
      if(EN > X41S(N41S):
      ) GO TO 641
      DO 630 J=2,N41S
      if(EN <= X41S[J]:
      ) GO TO 640
      630 CONTINUE
      J=N41S
      640 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[12][I]=(A*EN+B)*1.e-18
      GO TO 642
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      641 QIN[12][I]=Y41S(N41S)*(X41S(N41S)/EN)*1.e-18
      642 if(EN <= (2.0*EIN[12])) GO TO 650
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
      #
      # 4 3P
      650 if(EN <= EIN[13]) GO TO 2000
      if(EN > X43P(N43P):
      ) GO TO 671
      DO 660 J=2,N43P
      if(EN <= X43P[J]:
      ) GO TO 670
      660 CONTINUE
      J=N43P
      670 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[13][I]=(A*EN+B)*1.e-18
      GO TO 672
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      671 QIN[13][I]=Y43P(N43P)*(X43P(N43P)/EN)**3*1.e-18
      672 if(EN <= (2.0*EIN[13])) GO TO 680
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
      #
      # 4 3D
      680 if(EN <= EIN[14]) GO TO 2000
      if(EN > X43D[N43D]):
      GO TO 701
      DO 690 J=2,N43D
      if(EN <= X43D[J]):
      GO TO 700
      690 CONTINUE
      J=N43P
      700 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[14][I]=(A*EN+B)*1.e-18
      GO TO 702
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      701 QIN[14][I]=Y43D[N43D]*(X43D[N43D]/EN)**3*1.e-18
      702 if(EN <= (2.0*EIN[14])) GO TO 710
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
      #
      # 4 1D
      710 if(EN <= EIN[15]) GO TO 2000
      if(EN > X41D[N41D]):
      GO TO 731
      DO 720 J=2,N41D
      if(EN <= X41D[J]):
      GO TO 730
      720 CONTINUE
      J=N41D
      730 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[15][I]=(A*EN+B)*1.e-18
      GO TO 732
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      731 QIN[15][I]=Y41D[N41D]*(X41D[N41D]/EN)*1.e-18
      732 if(EN <= (2.0*EIN[15])) GO TO 740
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
      #
      # 4 3F
      740 if(EN <= EIN[16]) GO TO 2000
      if(EN > X43F(N43F):
      ) GO TO 761
      DO 750 J=2,N43F
      if(EN <= X43F[J]:
      ) GO TO 760
      750 CONTINUE
      J=N43F
      760 A=(Y43F[J]-Y43F[J-1])/(X43F[J]-X43F[J-1])                         
      B=(X43F[J-1]*Y43F[J]-X43F[J]*Y43F[J-1])/(X43F[J-1]-X43F[J])       
      QIN[16][I]=(A*EN+B)*1.e-18
      GO TO 762
      # IF ENERGY GT X43F(N43F) EV SCALE BY 1/E**4  
      761 QIN[16][I]=Y43F(N43F)*(X43F(N43F)/EN)**4*1.e-18
      762 if(EN <= (2.0*EIN[16])) GO TO 770
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
      #
      # 4 1F
      770 if(EN <= EIN[17]) GO TO 2000
      if(EN > X41F(N41F):
      ) GO TO 791
      DO 780 J=2,N41F
      if(EN <= X41F[J]:
      ) GO TO 790
      780 CONTINUE
      J=N41F
      790 A=(Y41F[J]-Y41F[J-1])/(X41F[J]-X41F[J-1])                         
      B=(X41F[J-1]*Y41F[J]-X41F[J]*Y41F[J-1])/(X41F[J-1]-X41F[J])       
      QIN[17][I]=(A*EN+B)*1.e-18
      GO TO 792
      # IF ENERGY GT X41F(N41F) EV SCALE BY 1/E     
      791 QIN[17][I]=Y41F(N41F)*(X41F(N41F)/EN)*1.e-18
      792 if(EN <= (2.0*EIN[17])) GO TO 800
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
      #
      # 4 1P       OSC STRENGTH  F=0.02986
      800 if(EN <= EIN[18]) GO TO 2000
      if(EN > X41P(N41P):
      ) GO TO 821
      DO 810 J=2,N41P
      if(EN <= X41P[J]:
      ) GO TO 820
      810 CONTINUE
      J=N41P
      820 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[18][I]=(A*EN+B)*1.e-18
      GO TO 822
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      821 QIN[18][I]=0.02986/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])
      822 if(EN <= (2.0*EIN[18])) GO TO 830
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      #
      # 5 3S SCALED FROM 4 3S
      830 if(EN <= EIN[19]) GO TO 2000
      ER=EIN[19]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 851
      DO 840 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 850
      840 CONTINUE
      J=N43S
      850 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[19][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 852
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      851 QIN[19][I]=0.512*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      852 if(EN <= (2.0*EIN[19])) GO TO 860
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
      #
      # 5 1S SCALED FROM 4 1S
      860 if(EN <= EIN[20]) GO TO 2000
      ER=EIN[20]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 881
      DO 870 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 880
      870 CONTINUE
      J=N41S
      880 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[20][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 882
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      881 QIN[20][I]=0.512*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      882 if(EN <= (2.0*EIN[20])) GO TO 890
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      #
      # 5 3P SCALED FROM 4 3P
      890 if(EN <= EIN[21]) GO TO 2000
      ER=EIN[21]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 911
      DO 900 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 910
      900 CONTINUE
      J=N43P
      910 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[21][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 912
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      911 QIN[21][I]=0.512*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      912 if(EN <= (2.0*EIN[21])) GO TO 920
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
      #
      # 5 3D SCALED FROM 4 3D
      920 if(EN <= EIN[22]) GO TO 2000
      ER=EIN[22]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 941
      DO 930 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 940
      930 CONTINUE
      J=N43P
      940 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[22][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 942
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      941 QIN[22][I]=0.512*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      942 if(EN <= (2.0*EIN[22])) GO TO 950
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
      #
      # 5 1D SCALED FROM 4 1D
      950 if(EN <= EIN[23]) GO TO 2000
      ER=EIN[23]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 971
      DO 960 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 970
      960 CONTINUE
      J=N41D
      970 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[23][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 972
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      971 QIN[23][I]=0.512*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      972 if(EN <= (2.0*EIN[23])) GO TO 980
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
      #
      # 5 3F SCALED FROM 4 3F
      980 if(EN <= EIN[24]) GO TO 2000
      ER=EIN[24]/EIN[16]
      ENP=EN/ER
      if(ENP > X43F(N43F):
      ) GO TO 1001
      DO 990 J=2,N43F
      if(ENP <= X43F[J]:
      ) GO TO 1000
      990 CONTINUE
      J=N43F
      1000 A=(Y43F[J]-Y43F[J-1])/(X43F[J]-X43F[J-1])                         
      B=(X43F[J-1]*Y43F[J]-X43F[J]*Y43F[J-1])/(X43F[J-1]-X43F[J])       
      QIN[24][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 1002
      # IF ENERGY GT X43F(N43F) EV SCALE BY 1/E**4  
      1001 QIN[24][I]=0.512*Y43F(N43F)*(X43F(N43F)/ENP)**4*1.e-18
      1002 if(EN <= (2.0*EIN[24])) GO TO 1010
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      #
      # 5 1F SCALED FROM 4 1F
      1010 if(EN <= EIN[25]) GO TO 2000
      ER=EIN[25]/EIN[17]
      ENP=EN/ER
      if(ENP > X41F(N41F):
      ) GO TO 1031
      DO 1020 J=2,N41F
      if(ENP <= X41F[J]:
      ) GO TO 1030
      1020 CONTINUE
      J=N41F
      1030 A=(Y41F[J]-Y41F[J-1])/(X41F[J]-X41F[J-1])                         
      B=(X41F[J-1]*Y41F[J]-X41F[J]*Y41F[J-1])/(X41F[J-1]-X41F[J])       
      QIN[25][I]=0.512*(A*ENP+B)*1.e-18
      GO TO 1032
      # IF ENERGY GT X41F(N41F) EV SCALE BY 1/E     
      1031 QIN[25][I]=0.512*Y41F(N41F)*(X41F(N41F)/ENP)*1.e-18
      1032 if(EN <= (2.0*EIN[25])) GO TO 1040
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
      #
      # 5 1P   SCALED FROM 4 1P   OSC STRENGTH  F=0.01504
      1040 if(EN <= EIN[26]) GO TO 2000
      ER=EIN[26]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1061
      DO 1050 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1060
      1050 CONTINUE
      J=N41P
      1060 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[26][I]=0.01504/0.02986*(A*ENP+B)*1.e-18
      GO TO 1062
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1061 QIN[26][I]=0.01504/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])
      1062 if(EN <= (2.0*EIN[26])) GO TO 1070
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
      #
      # 6 3S SCALED FROM 4 3S
      1070 if(EN <= EIN[27]) GO TO 2000
      ER=EIN[27]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1091
      DO 1080 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1090
      1080 CONTINUE
      J=N43S
      1090 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[27][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1092
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1091 QIN[27][I]=0.296*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1092 if(EN <= (2.0*EIN[27])) GO TO 1100
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
      #
      # 6 1S SCALED FROM 4 1S
      1100 if(EN <= EIN[28]) GO TO 2000
      ER=EIN[28]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1121
      DO 1110 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1120
      1110 CONTINUE
      J=N41S
      1120 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[28][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1122
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1121 QIN[28][I]=0.296*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1122 if(EN <= (2.0*EIN[28])) GO TO 1130
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
      #
      # 6 3P SCALED FROM 4 3P
      1130 if(EN <= EIN[29]) GO TO 2000
      ER=EIN[29]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1151
      DO 1140 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1150
      1140 CONTINUE
      J=N43P
      1150 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[29][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1152
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1151 QIN[29][I]=0.296*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1152 if(EN <= (2.0*EIN[29])) GO TO 1160
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
      #
      # 6 3D SCALED FROM 4 3D
      1160 if(EN <= EIN[30]) GO TO 2000
      ER=EIN[30]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1181
      DO 1170 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1180
      1170 CONTINUE
      J=N43P
      1180 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[30][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1182
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1181 QIN[30][I]=0.296*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1182 if(EN <= (2.0*EIN[30])) GO TO 1190
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      #
      # 6 1D SCALED FROM 4 1D
      1190 if(EN <= EIN[31]) GO TO 2000
      ER=EIN[31]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1211
      DO 1200 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1210
      1200 CONTINUE
      J=N41D
      1210 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[31][I]=0.296*(A*ENP+B)*1.e-18
      GO TO 1212
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1211 QIN[31][I]=0.296*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1212 if(EN <= (2.0*EIN[31])) GO TO 1220
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
      #
      # 6 1P  SCALED FROM 4 1P    OSC STRENGTH  F=0.00863 
      1220 if(EN <= EIN[32]) GO TO 2000
      ER=EIN[32]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1241
      DO 1230 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1240
      1230 CONTINUE
      J=N41P
      1240 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[32][I]=0.00863/0.02986*(A*ENP+B)*1.e-18
      GO TO 1242
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1241 QIN[32][I]=0.00863/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])
      1242 if(EN <= (2.0*EIN[32])) GO TO 1250 
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
      #
      # 7 3S SCALED FROM 4 3S
      1250 if(EN <= EIN[33]) GO TO 2000
      ER=EIN[33]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1271
      DO 1260 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1270
      1260 CONTINUE
      J=N43S
      1270 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[33][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1272
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1271 QIN[33][I]=0.187*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1272 if(EN <= (2.0*EIN[33])) GO TO 1280
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
      #
      # 7 1S SCALED FROM 4 1S
      1280 if(EN <= EIN[34]) GO TO 2000
      ER=EIN[34]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1301
      DO 1290 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1300
      1290 CONTINUE
      J=N41S
      1300 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[34][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1302
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1301 QIN[34][I]=0.187*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1302 if(EN <= (2.0*EIN[34])) GO TO 1310
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      #
      # 7 3P SCALED FROM 4 3P
      1310 if(EN <= EIN[35]) GO TO 2000
      ER=EIN[35]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1331
      DO 1320 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1330
      1320 CONTINUE
      J=N43P
      1330 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[35][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1332
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1331 QIN[35][I]=0.187*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1332 if(EN <= (2.0*EIN[35])) GO TO 1340
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      #
      # 7 3D SCALED FROM 4 3D
      1340 if(EN <= EIN[36]) GO TO 2000
      ER=EIN[36]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1361
      DO 1350 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1360
      1350 CONTINUE
      J=N43P
      1360 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[36][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1362
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1361 QIN[36][I]=0.187*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1362 if(EN <= (2.0*EIN[36])) GO TO 1370
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      #
      # 7 1D SCALED FROM 4 1D
      1370 if(EN <= EIN[37]) GO TO 2000
      ER=EIN[37]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1391
      DO 1380 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1390
      1380 CONTINUE
      J=N41D
      1390 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[37][I]=0.187*(A*ENP+B)*1.e-18
      GO TO 1392
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1391 QIN[37][I]=0.187*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1392 if(EN <= (2.0*EIN[37])) GO TO 1400
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      #
      # 7 1P  SCALED FROM 4 1P   OSC STRENGTH  F=0.00540 
      1400 if(EN <= EIN[38]) GO TO 2000
      ER=EIN[38]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1421
      DO 1410 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1420
      1410 CONTINUE
      J=N41P
      1420 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[38][I]=0.00540/0.02986*(A*ENP+B)*1.e-18
      GO TO 1422
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1421 QIN[38][I]=0.00540/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])
      1422 if(EN <= (2.0*EIN[38])) GO TO 1430 
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      #
      # SUM 3S LEVELS FROM 8 3S HIGHER AND SCALED FROM 4 3S
      1430 if(EN <= EIN[39]) GO TO 2000
      ER=EIN[39]/EIN[11]
      ENP=EN/ER
      if(ENP > X43S(N43S):
      ) GO TO 1451
      DO 1440 J=2,N43S
      if(ENP <= X43S[J]:
      ) GO TO 1450
      1440 CONTINUE
      J=N43S
      1450 A=(Y43S[J]-Y43S[J-1])/(X43S[J]-X43S[J-1])                         
      B=(X43S[J-1]*Y43S[J]-X43S[J]*Y43S[J-1])/(X43S[J-1]-X43S[J])       
      QIN[39][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1452
      # IF ENERGY GT X43S(N43S) EV SCALE BY 1/E**3
      1451 QIN[39][I]=0.553*Y43S(N43S)*(X43S(N43S)/ENP)**3*1.e-18
      1452 if(EN <= (2.0*EIN[39])) GO TO 1460
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      #
      # SUM 1S LEVELS FROM 8 1S HIGHER AND SCALED FROM 4 1S
      1460 if(EN <= EIN[40]) GO TO 2000
      ER=EIN[40]/EIN[12]
      ENP=EN/ER
      if(ENP > X41S(N41S):
      ) GO TO 1481
      DO 1470 J=2,N41S
      if(ENP <= X41S[J]:
      ) GO TO 1480
      1470 CONTINUE
      J=N41S
      1480 A=(Y41S[J]-Y41S[J-1])/(X41S[J]-X41S[J-1])                         
      B=(X41S[J-1]*Y41S[J]-X41S[J]*Y41S[J-1])/(X41S[J-1]-X41S[J])       
      QIN[40][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1482
      # IF ENERGY GT X41S(N41S) EV SCALE BY 1/E     
      1481 QIN[40][I]=0.553*Y41S(N41S)*(X41S(N41S)/ENP)*1.e-18
      1482 if(EN <= (2.0*EIN[40])) GO TO 1490
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      #
      # SUM 3P LEVELS FROM  8 3P HIGHER AND SCALED FROM 4 3P
      1490 if(EN <= EIN[41]) GO TO 2000
      ER=EIN[41]/EIN[13]
      ENP=EN/ER
      if(ENP > X43P(N43P):
      ) GO TO 1511
      DO 1500 J=2,N43P
      if(ENP <= X43P[J]:
      ) GO TO 1510
      1500 CONTINUE
      J=N43P
      1510 A=(Y43P[J]-Y43P[J-1])/(X43P[J]-X43P[J-1])                         
      B=(X43P[J-1]*Y43P[J]-X43P[J]*Y43P[J-1])/(X43P[J-1]-X43P[J])       
      QIN[41][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1512
      # IF ENERGY GT X43P(N43P) EV SCALE BY 1/E**3  
      1511 QIN[41][I]=0.553*Y43P(N43P)*(X43P(N43P)/ENP)**3*1.e-18
      1512 if(EN <= (2.0*EIN[41])) GO TO 1520
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      #
      # SUM 3D LEVELS FROM 8 3D HIGHER AND SCALED FROM 4 3D
      1520 if(EN <= EIN[42]) GO TO 2000
      ER=EIN[42]/EIN[14]
      ENP=EN/ER
      if(ENP > X43D[N43D]):
      GO TO 1541
      DO 1530 J=2,N43D
      if(ENP <= X43D[J]):
      GO TO 1540
      1530 CONTINUE
      J=N43P
      1540 A=(Y43D[J]-Y43D[J-1])/(X43D[J]-X43D[J-1])                         
      B=(X43D[J-1]*Y43D[J]-X43D[J]*Y43D[J-1])/(X43D[J-1]-X43D[J])       
      QIN[42][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1542
      # IF ENERGY GT X43D[N43D] EV SCALE BY 1/E**3  
      1541 QIN[42][I]=0.553*Y43D[N43D]*(X43D[N43D]/ENP)**3*1.e-18
      1542 if(EN <= (2.0*EIN[42])) GO TO 1550
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      #
      # SUM 1D LEVELS FROM 8 1D HIGHER AND SCALED FROM 4 1D
      1550 if(EN <= EIN[43]) GO TO 2000
      ER=EIN[43]/EIN[15]
      ENP=EN/ER
      if(ENP > X41D[N41D]):
      GO TO 1571
      DO 1560 J=2,N41D
      if(ENP <= X41D[J]):
      GO TO 1570
      1560 CONTINUE
      J=N41D
      1570 A=(Y41D[J]-Y41D[J-1])/(X41D[J]-X41D[J-1])                         
      B=(X41D[J-1]*Y41D[J]-X41D[J]*Y41D[J-1])/(X41D[J-1]-X41D[J])       
      QIN[43][I]=0.553*(A*ENP+B)*1.e-18
      GO TO 1572
      # IF ENERGY GT X41D[N41D] EV SCALE BY 1/E     
      1571 QIN[43][I]=0.553*Y41D[N41D]*(X41D[N41D]/ENP)*1.e-18
      1572 if(EN <= (2.0*EIN[43])) GO TO 1580
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      #
      # 8 1P SCALED FROM 4 1P   OSC STRENGTH  F=0.00362 
      1580 if(EN <= EIN[44]) GO TO 2000
      ER=EIN[44]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1601
      DO 1590 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1600
      1590 CONTINUE
      J=N41P
      1600 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[44][I]=0.00362/0.02986*(A*ENP+B)*1.e-18
      GO TO 1602
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1601 QIN[44][I]=0.00362/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])
      1602 if(EN <= (2.0*EIN[44])) GO TO 1610 
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      #
      # 9 1P SCALED FROM 4 1P   OSC STRENGTH  F=0.00253 
      1610 if(EN <= EIN[45]) GO TO 2000
      ER=EIN[45]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1631
      DO 1620 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1630
      1620 CONTINUE
      J=N41P
      1630 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[45][I]=0.00253/0.02986*(A*ENP+B)*1.e-18
      GO TO 1632
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1631 QIN[45][I]=0.00253/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      1632 if(EN <= (2.0*EIN[45])) GO TO 1640 
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      #
      # 10 1P SCALED FROM 4 1P    OSC STRENGTH F=0.00184
      1640 if(EN <= EIN[46]) GO TO 2000
      ER=EIN[46]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1661
      DO 1650 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1660
      1650 CONTINUE
      J=N41P
      1660 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[46][I]=0.00184/0.02986*(A*ENP+B)*1.e-18
      GO TO 1662
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1661 QIN[46][I]=0.00184/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      1662 if(EN <= (2.0*EIN[46])) GO TO 1670 
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
      #
      # 11 1P SCALED FROM 4 1P   OSC STRENGTH F=0.00138
      1670 if(EN <= EIN[47]) GO TO 2000
      ER=EIN[47]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1691
      DO 1680 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1690
      1680 CONTINUE
      J=N41P
      1690 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[47][I]=0.00138/0.02986*(A*ENP+B)*1.e-18
      GO TO 1692
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1691 QIN[47][I]=0.00138/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+E[3])
      1692 if(EN <= (2.0*EIN[47])) GO TO 1700 
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
      #
      # 12 1P SCALED FROM 4 1P   OSC STRENGTH F=0.00106
      1700 if(EN <= EIN[48]) GO TO 2000
      ER=EIN[48]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1721
      DO 1710 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1720
      1710 CONTINUE
      J=N41P
      1720 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[48][I]=0.00106/0.02986*(A*ENP+B)*1.e-18
      GO TO 1722
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1721 QIN[48][I]=0.00106/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      1722 if(EN <= (2.0*EIN[48])) GO TO 1730 
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
      #
      # SUM HIGHER 1P LEVELS     OSC STRENGTH F=0.00440
      1730 if(EN <= EIN[49]) GO TO 2000
      ER=EIN[49]/EIN[18]
      ENP=EN/ER
      if(ENP > X41P(N41P):
      ) GO TO 1751
      DO 1740 J=2,N41P
      if(ENP <= X41P[J]:
      ) GO TO 1750
      1740 CONTINUE
      J=N41P
      1750 A=(Y41P[J]-Y41P[J-1])/(X41P[J]-X41P[J-1])                         
      B=(X41P[J-1]*Y41P[J]-X41P[J]*Y41P[J-1])/(X41P[J-1]-X41P[J])       
      QIN[49][I]=0.00440/0.02986*(A*ENP+B)*1.e-18
      GO TO 1752
      # IF ENERGY GT X41P(N41P) EV USE BEF SCALING  
      1751 QIN[49][I]=0.00440/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      1752 if(EN <= (2.0*EIN[49])) GO TO 1760 
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      1760 CONTINUE
      # LOAD BREMSSTRAHLUNG X-SECTION
      if(EN <= 1000.):
      GO TO 2000
      DO 1780 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 1790
      1780 CONTINUE
      J=NBREM
      1790 A=(math.log(Z2T[J])-math.log(Z2T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z2T[J])*EBRM[J-1]-math.log(Z2T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])  
      QIN[50][I]=math.exp(A*EN+B)*1.e-24
      #
      2000 CONTINUE                                                          
      #     
      QMET=QIN[1][I]+QIN[2][I]
      QDIP=QIN[4][I]+QIN[10][I]+QIN[18][I]+QIN[26][I]+QIN[32][I]+QIN[38][I]+QIN[44][I]+QIN[45][I]+QIN[46][I]+QIN[47][I]+QIN[48][I]+QIN[49][I]
      QTRP=QIN[1][I]+QIN[3][I]+QIN[5][I]+QIN[7][I]+QIN[8][I]+QIN[11][I]+QIN[13][I]+QIN[14][I]+QIN[16][I]+QIN[19][I]+QIN[21][I]+QIN[22][I]+QIN[24][I]+QIN[27][I]+QIN[29][I]+QIN[30][I]+QIN[33][I]+QIN[35][I]+QIN[36][I]+QIN[39][I]+QIN[41][I]+QIN[42][I] 
      QSNG=QIN[2][I]+QIN[4][I]+QIN[6][I]+QIN[9][I]+QIN[10][I]+QIN[12][I]+QIN[15][I]+QIN[17][I]+QIN[18][I]+QIN[20][I]+QIN[23][I]+QIN[25][I]+QIN[26][I]+QIN[28][I]+QIN[31][I]+QIN[32][I]+QIN[34][I]+QIN[37][I]+QIN[38][I]+QIN[40][I]+QIN[43][I]+QIN[44][I]+QIN[45][I]+QIN[46][I]+QIN[47][I]+QIN[48][I]+QIN[49][I]
      QINEL=QSNG+QTRP+QION[1][I]+QION[2][I]
      Q[1][I]=QELA+QINEL+QIN[50][I]                            
      # EXAMINE X-SECTION 
      #     WRITE(6,986) EN,QIN[4][I],QIN[10][I],QIN[18][I],QIN[26][I],QIN[32][I],
      #    /QIN[38][I],QIN[44][I],QIN[45][I],QIN[46][I],QIN[47][I],QIN[48][I],
      #    /QIN[49][I] 
      # 986 print(' EN=',D11.5,' 21P=','%.3f' %,' 31P=','%.3f' %,' 41P=','%.3f' %,' 51
      #    /P=','%.3f' %,' 61P=','%.3f' %,' 71P=','%.3f' %,/,8X,' 81P=','%.3f' %,' 91P=',D
      #    /11.3,' 101P=','%.3f' %,' 111P=','%.3f' %,' 121P=','%.3f' %,' HIP=','%.3f' %)
      #     WRITE(6,987) EN,QMET,QDIP,QSNG,QTRP,QINEL,Q[1][I]
      # 987 print(' EN=',D12.5,' QMET=','%.3f' %,' QDIP=','%.3f' %,' QSNG=','%.3f' %,
      #    /'QTRP=','%.3f' %,' QINL=','%.4f' % ,' QTOT=','%.4f' % ) 
      9000 CONTINUE                                                          
      #  SAVE COMPUTE TIME                                                    
      DO 9001 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :                                        
      NIN=K-1
      GO TO 9011
      # endif
      9001 CONTINUE
      9011 CONTINUE  
      if(EFINAL > 1000.):
      NIN=50                                        
      return                                                            
      # end
def GAS5(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN) 
      IMPLICIT #real*8 (A-H,O-Z)                                         
      IMPLICIT #integer*8 (I-N)
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)  
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]     
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(125),YXSEC(125),XEL(120),YEL(120),XEPS(196),YEPS(196),XION(74),YION(74),YINC(74),YIN1(74),XIN2[49],YIN2[49],XIN3[41],YIN3[41],XKSH(99),YKSH(99),X1S5(111),Y1S5(111),X1S4(137),Y1S4(137),X1S3(117),Y1S3(117),X1S2(119),Y1S2(119),X2P10(73),Y2P10(73),X2P9(70),Y2P9(70),X2P8(72),Y2P8(72),X2P7(65),Y2P7(65),X2P6[59],Y2P6[59],X2P5[63],Y2P5[63],X2P4(66),Y2P4(66),X2P3[62],Y2P3[62],X2P2[62],Y2P2[62],X2P1[59],Y2P1[59],X2S5[19],Y2S5[19],X2S3[19],Y2S3[19],X3D6[12],Y3D6[12],X3D4P[12],Y3D4P[12],X3D4[12],Y3D4[12],X3D3[12],Y3D3[12],X3D1PP[12],Y3D1PP[12],X3D1P[12],Y3D1P[12],X3S1PPPP[12],Y3S1PPPP[12],X3S1PPP[12],Y3S1PPP[12],X3S1PP[12],Y3S1PP[12],X3P106[16],Y3P106[16],X3P52[16],Y3P52[16],X3P1[16],Y3P1[16],IOFFN[45],IOFFION[10]
      DIMENSION Z10T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME  
      # ELASTIC MOMENTUM TRANSFER                          
      XEN=[1.00,1.20,1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,       7.00,8.00,8.71,9.00,10.0,11.0,13.6,15.0,16.5,19.6,                20.0,30.0,40.0,50.0,60.0,70.0,77.0,100.,130.,150.,                170.,200.,250.,300.,350.,400.,500.,600.,700.,800.,900.,1000.,1500.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.5D4,2.0D4,2.5'%.3f' %.0D4,4.0D4,5.0D4,  6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      YXSEC=[1.6178,1.69,1.75,1.79,1.82,1.86,1.91,1.98,2.07,2.14,   2.21,2.29,2.35,2.37,2.44,2.51,2.66,2.71,2.76,2.83,                2.84,2.84,2.78,2.58,2.30,2.12,2.03,1.53,1.21,1.03,                0.90,.756,.585,.474,.385,.321,.234,.180,.143,.117,.0977,.0830,.0435,.0271,.0187,.0137,.0105,.00833,.00565,.00410, .00312,.00246,.0020,.00166,.0008,.000478,.00032,.000231,.000138,9.28e-5,  6.72e-5,5.12e-5,4.05e-5,3.30e-5,2.75e-5,1.88e-5,1.38e-5,1.06e-5,8.54e-6,5.9D-6,4.43e-6,3.46e-6,2.81e-6,2.34e-6,1.99e-6,1.50e-6,1.19e-6,9.71e-7,8.12e-7,6.91e-7,4.95e-7,3.74e-7,2.94e-7,2.38e-7,1.67e-7,1.24e-7,9.66e-8,7.74e-8,6.35e-8,5.31e-8,3.89e-8,2.98e-8,2.36e-8,1.92e-8,1.59e-8,1.07e-8,7.71e-9,5.83e-9,4.57e-9,3.03e-9,2.16e-9,1.62e-9,1.26e-9,1.01e-9,8.29e-10,5.86e-10,4.36e-10,3.36e-10,2.67e-10,2.18e-10,1.40e-10,9.78e-11,7.20e-11,5.52e-11,3.54e-11,2.46e-11,1.81e-11,1.38e-11,1.09e-11,8.86e-12,6.15e-12,4.52e-12,3.46e-12,2.73e-12,2.21e-12]
      # ELASTIC TOTAL
      XEL=[1.00,1.20,1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,       8.00,10.0,12.0,14.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,                300.,350.,400.,500.,600.,700.,800.,900.,1000.,1200.,              1500.,2000.,2500.,3000.,4000.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.5D4,2.0D4,2.5'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,5.0D7,6.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      YEL=[1.5667,1.68,1.82,1.94,2.01,2.16,2.30,2.55,2.80,2.98,3.23,3.39,3.54,3.63,3.67,3.68,3.69,3.61,3.50,3.27,3.09,2.90,2.72,2.54,2.40,2.25,1.96,1.74,1.39,1.21,1.06,.997,.893,.799,.693,.640,.565,.545,.483,.433,.359,.284,.223,.191,.156,.125,.109,.096,.0850,.0770,.0710,.0500,.0389,.0317,.0269,.0208,.0172,.0147,.0129,.0116,.0106,.00977,.00829,.00731,.00661,.00608,.00536,.00488,.00455,.00430,.00411,.00396,.00374,.00358,.00347,.00339,.00333,.00322,.00315,.00310,.00307,.00303,.00301,.00299,.00298,.00298,.00297,.00296,.00296,.00296,.00295,.00295,28*.002945]
      # ANGULAR DISTRIBUTION PARAMETER EPSILON
      XEPS=[0.0,.0001,.0002,.0003,.0004,.0005,.0006,.0008,.001,.0012,.0014,.0016,.0018,.0020,.0024,.0028,.0032,.0036,.0040,.0045,.0050,.0055,.0060,.0070,.0080,.0090,.0100,.0120,.0140,.0160,.0180,.0200,.0240,.0280,.0320,.0360,.0400,.0450,.0500,.0550,0.060,0.070,0.080,0.090,0.100,0.120,0.140,0.160,0.180,0.200,0.24,0.28,0.32,0.36,0.40,0.45,0.50,0.55,0.60,0.70,0.80,0.90,1.00,1.20,1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,8.71,9.00,10.0,11.0,12.0,13.6,14.0,15.0,16.0,16.5,18.0,19.6,20.0,25.0,30.0,40.0,50.0,60.0,70.0,77.0,80.0,90.0,100.,125.,130.,150.,170.,200.,250.,300.,350.,400.,500.,600.,700.,800.,900.,1000.,1200.,1500.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.5D4,2.0D4,2.5'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC ANGULAR DISTRIBUTION PARAMETER EPSILON
      # EPSILON =1.0-YEPS
      YEPS=[1.0,1.02100,1.02805,1.03494,1.03914,1.04259,1.04678,1.05337,1.05831,1.06325,1.06804,1.07208,1.07522,1.07761,1.08388,1.09015,1.09478,1.09866,1.10254,1.10730,1.11177,1.11579,1.11891,1.12531,1.13154,1.13659,1.14163,1.14918,1.15613,1.16248,1.16779,1.17310,1.18075,1.18722,1.19324,1.19778,1.20202,1.20656,1.21006,1.21313,1.21604,1.22041,1.22362,1.22580,1.22725,1.22929,1.22929,1.22856,1.22711,1.22478,1.21852,1.21196,1.20422,1.19734,1.18766,1.17649,1.16544,1.15332,1.14133,1.11787,1.09463,1.07058,1.04888,1.00900,0.94235,0.88434,0.85878,0.79346,0.74891,0.67211,.62059,.59185,.58330,.57958,.58757,.58901,.59407,.60031,.60172,.61669,.61697,.62494,.63173,.63741,.64807,.65936,.66256,.68649,.72161,.77748,.75543,.69554,.67623,.68068,.66811,.60509,.54128,.49618,.47938,.43104,.39642,.37516,.30964,.27292,.21586,.19276,.14022,.11680,.09323,.08333,.06753,.06353,.05492,.03879,.02796,.02349,.01908,.01656,.01297,.01046,.00828,.00689,.00595,.00520,.00457,.00287,.00209,.001374,.001360,.000953,7.88e-4,6.50e-4,5.51e-4,4.75e-4,4.16e-4,3.71e-4,2.89e-4,2.34e-4,1.96e-4,1.67e-4,1.278e-4,1.020e-4,8.40e-5,7.07e-5,6.06e-5,5.27e-5,4.11e-5,3.33e-5,2.74e-5,2.31e-5,1.975e-5,1.418e-5,1.065e-5,8.32e-6,6.69e-6,4.60e-6,3.36e-6,2.57e-6,2.03e-6,1.64e-6,1.355e-6,9.70e-7,7.29e-7,5.68e-7,4.55e-7,3.73e-7,2.43e-7,1.71e-7,1.27e-7,9.80e-8,6.33e-8,4.42e-8,3.26e-8,2.49e-8,1.97e-8,1.60e-8,1.10e-8,8.10e-9,6.14e-9,4.82e-9,3.88e-9,2.44e-9,1.67e-9,1.21e-9,9.1D-10,5.7D-10,3.9D-10,2.8D-10,2.1D-10,1.7D-10,1.3D-10,9.1D-11,6.6D-11,5.0D-11,3.9D-11,3.1D-11]
      # IONISATION (VALUES ABOVE 20KEV GENERATED BY BORN-BETHE IN SUB)  
      XION=[21.56454,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0, 26.5,27.0,27.5,28.0,29.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,90.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,225.,250.,275.,300.,350.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]               
      # GROSS IONISATION
      YION=[0.00,.0031,.0085,.0139,.0192,.0248,.0306,.0362,.0417,.0474,  .0540,.0602,.0664,.0726,.0847,.0971,.122,.147,.170,.217,.269,.322,.372,.414,.454,.490,.521,.549,.598,.635,.667,.690,.707,.721,.735,.746,.747,.748,.746,.745,.737,.723,.703,.682,.648,.607,.549,.501,.457,.420,.387,.363,.320,.287,.261,.239,.222,.186,.163,.143,.130,.117,.108,.100,.0937,.0826,.0742,.0678,.0623,.0540, .0475,.0426,.0389,.0357]            
      # COUNTING IONISATION
      YINC=[0.00,.0031,.0085,.0139,.0192,.0248,.0306,.0362,.0417,.0474,  .0540,.0602,.0664,.0726,.0847,.0971,.122,.147,.170,.217,.269,.322,.372,.414,.454,.490,.521,.548,.595,.630,.657,.678,.692,.703,.714,.721,.721,.720,.717,.715,.705,.690,.670,.650,.616,.577,.522,.476,.435,.400,.369,.345,.305,.273,.248,.228,.211,.177,.155,.136,.124,.111,.103,.0951,.0891,.0786,.0706,.0645,.0592,.0513, .0451,.0406,.0370,.0340]   
      # IONISATION FOR CHARGE STATE =1
      YIN1=[0.00,.0031,.0085,.0139,.0192,.0248,.0306,.0362,.0417,.0474,  .0540,.0602,.0664,.0726,.0847,.0971,.122,.147,.170,.217,.269,.322,.372,.414,.454,.490,.521,.547,.592,.624,.648,.666,.677,.684,.693,.698,.696,.693,.689,.685,.673,.658,.637,.619,.586,.548,.496,.454,.416,.383,.354,.331,.293,.262,.238,.219,.202,.170,.149,.130,.119,.106,.0988,.0912,.0855,.0754,.0677,.0619,.0568,.0492, .0433,.0390,.0355,.0326]   
      # IONISATION FOR CHARGE STATE =2
      XIN2=[62.5275,75.0,80.0,90.0,100.,110.,120.,130.,140.,150.,160.,170.,180.,190.,200.,225.,250.,275.,300.,350.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]      
      YIN2=[0.0,.0005,.00127,.00319,.00586,.0094,.0121,.0155,.0187,.0214,.0240,.0254,.0272,.0280,.0294,.0316,.0315,.0315,.0301,.0291,.0269,.0243,.0212,.0185,.0164,.0148,.0134,.0118,.0106,.00962,.00885,.00819,.00687,.00601,.00528,.00481,.00431,.0040,.00369,.00346,.00305,.00274,.0025,.0023,.0020,.00175,.00158,.00144,.00132]   
      # IONISATION FOR CHARGE STATE =3
      XIN3=[125.9508,150.,160.,170.,180.,190.,200.,225.,250.,275.,300.,350.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]               
      YIN3=[0.00,.00005,.000118,.000173,.000263,.000377,.000476,.00072,.00104,.00126,.00138,.00156,.00158,.00143,.00132,.00121,.00103,.000852,.000741,.000656,.000587,.000533,.000490,.000454,.000381,.000333,.000292,.000267,.000239,.000221,.000204,.000192,.000169,.000146,.000139,.000127,.000110,.0000970,.0000873,.0000796,.0000731]   
      # K-SHELL IONISATION X-SECTION
      XKSH=[870.2,874.7,900.,926.,953.,981.,1009.,1038.,1068.,1099.,1131.,1164.,1232.,1305.,1381.,1463.,1594.,1737.,1948.,2122.,2313.,2521.,2747.,2994.,3264.,3557.,3877.,4226.,4606.,5021.,5473.,5966.,6503.,7088.,7727.,8423.,9182.,1.0D4,1.12D4,1.26D4,1.41D4,1.59D4,1.78D4,2.00D4,2.24D4,2.51D4,2.82'%.3f' %.16'%.3f' %.55'%.3f' %.98D4,4.47D4,5.01D4,5.62D4,6.31D4,7.08D4,7.94D4,8.91D4,1.00D5,1.12D5,1.30D5,1.50D5,1.73D5,2.00D5,2.30D5,2.66'%.3f' %.07'%.3f' %.55D5,4.22D5,5.01D5,6.13D5,7.50D5,1.00D6,1.22D6,1.45D6,1.73D6,2.00D6,2.51'%.3f' %.07D6,4.00D6,5.01D6,6.13D6,8.18D6,1.00D7,1.50D7,2.05'%.3f' %.07'%.3f' %.98D7,5.01D7,6.13D7,8.18D7,1.00D8,1.50D8,2.05'%.3f' %.07'%.3f' %.98D8,5.01D8,6.13D8,8.18D8,1.00D9]
      YKSH=[0.0,7.15e-6,2.96e-5,5.13e-5,7.23e-5,9.26e-5,1.12e-4,1.31e-4,1.49e-4,1.67e-4,1.84e-4,2.00e-4,2.31e-4,2.59e-4,2.84e-4,3.08e-4,3.39e-4,3.65e-4,3.94e-4,4.10e-4,4.22e-4,4.31e-4,4.36e-4,4.38e-4,4.37e-4,4.34e-4,4.28e-4,4.20e-4,4.11e-4,4.00e-4,3.88e-4,3.75e-4,3.61e-4,3.47e-4,3.33e-4,3.18e-4,3.04e-4,2.90e-4,2.71e-4,2.53e-4,2.36e-4,2.19e-4,2.04e-4,1.89e-4,1.75e-4,1.62e-4,1.50e-4,1.38e-4,1.28e-4,1.18e-4,1.09e-4,1.01e-4,9.32e-5,8.63e-5,8.00e-5,7.43e-5,6.90e-5,6.43e-5,6.00e-5,5.51e-5,5.09e-5,4.73e-5,4.41e-5,4.13e-5,3.89e-5,3.69e-5,3.52e-5,3.36e-5,3.23e-5,3.12e-5,3.05e-5,3.01e-5,3.01e-5,3.04e-5,3.07e-5,3.11e-5,3.19e-5,3.27e-5,3.39e-5,3.50e-5,3.60e-5,3.76e-5,3.87e-5,4.11e-5,4.30e-5,4.54e-5,4.69e-5,4.83e-5,4.96e-5,5.13e-5,5.25e-5,5.50e-5,5.69e-5,5.94e-5,6.10e-5,6.24e-5,6.36e-5,6.54e-5,6.66e-5]
      #            
      # 1S5 METASTABLE J=2  UNITS 10**-18 SCALED BY 1/E**3 ABOVE 50 EV
      X1S5=[16.61907,16.625,16.63,16.64,16.65,16.66,16.67,16.68,16.69,16.70,16.71,16.73,16.75,16.79,16.80,16.81,16.82,16.84,16.85,16.86,16.87,16.88,16.89,16.90,16.91,16.92,16.93,16.94,16.95,16.96,16.97,16.98,16.99,17.00,17.02,17.04,17.06,17.08,17.10,17.20,17.30,17.40,17.50,17.60,17.70,17.80,17.90,18.00,18.10,18.20,18.30,18.40,18.41,18.43,18.45,18.47,18.50,18.53,18.55,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.625,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.73,18.75,18.78,18.80,18.90,18.96,18.97,18.98,18.99,19.00,19.05,19.10,19.20,19.50,19.58,19.60,19.61,19.63,19.65,19.70,19.80,19.90,20.00,21.0,22.0,23.0,24.0,26.0,28.0,30.0,35.0,40.0,45.0,50.0]
      Y1S5=[0.0,.114,.142,.190,.228,.256,.275,.304,.342,.399,.446,.532,.598,.646,.665,.674,.693,.750,.788,.845,.902,1.09,1.27,1.47,1.59,1.65,1.65,1.59,1.52,1.44,1.35,1.28,1.20,1.16,1.03,.988,.931,.893,.864,.807,.807,.826,.864,.912,.978,1.03,1.11,1.19,1.26,1.34,1.40,1.42,1.30,1.21,1.15,1.12,1.07,1.02,1.24,1.55,2.13,2.02,1.64,1.23,1.12,1.56,1.70,1.55,1.10,1.28,1.58,1.72,1.65,1.42,1.25,1.10,.988,.959,.883,.827,.817,.836,.779,.931,1.21,1.14,1.02,1.01,1.04,1.08,1.15,1.07,1.01,1.33,1.27,1.23,1.21,1.17,1.14,1.03,1.04,1.04,1.03,1.02,.998,.959,.902,.760,.608,.475,.361]
      # 1S4 RESONANCE LEVEL J=1 F=0.0118  UNITS 10**-18  74.3724 NM.
      X1S4=[16.67083,16.675,16.68,16.69,16.70,16.71,16.72,16.73,16.74,16.75,16.76,16.77,16.78,16.79,16.80,16.81,16.82,16.83,16.84,16.85,16.86,16.87,16.88,16.89,16.90,16.91,16.92,16.93,16.94,16.95,16.96,16.97,16.98,16.99,17.00,17.02,17.04,17.06,17.08,17.10,17.20,17.30,17.40,17.50,17.60,17.70,17.80,17.90,18.00,18.10,18.20,18.30,18.40,18.41,18.42,18.43,18.44,18.45,18.47,18.50,18.52,18.525,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.73,18.74,18.75,18.76,18.78,18.80,18.90,18.94,18.96,18.98,18.99,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.7,19.9,20.0,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,170.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.]
      Y1S4=[0.,.082,.109,.149,.192,.239,.295,.364,.439,.510,.572,.623,.665,.697,.728,.762,.798,.845,.900,.959,1.04,1.13,1.21,1.23,1.23,1.18,1.11,1.04,.978,.918,.852,.824,.784,.750,.722,.674,.646,.608,.598,.580,.541,.541,.551,.570,.598,.627,.665,.712,.760,.807,.855,.893,.893,.855,.836,.807,.798,.798,.779,.760,.760,.874,.770,.788,.836,.978,1.26,1.29,.978,.760,.788,1.08,.864,.770,.940,1.19,1.41,1.33,1.16,1.04,.959,.931,.827,.779,.732,.693,.646,.617,.589,.560,.570,.817,.712,.684,.693,.712,.741,.760,.779,.798,.817,.808,.770,.810,.850,.890,.920,.940,.960,.990,1.00,1.02,1.04,1.05,1.06,1.06,1.05,1.04,1.02,.990,.950,.880,.800,.730,.670,.600,.530,.460,.410,.370,.338,.310,.270,.239,.217,.198,.184]
      # 1S3 METASTABLE LEVEL  J=0   UNITS 10**-18 SCALED BY 1/E**3 ABOVE 50 EV
      X1S3=[16.71538,16.72,16.73,16.74,16.75,16.76,16.77,16.78,16.79,16.80,16.81,16.82,16.83,16.84,16.85,16.86,16.87,16.88,16.89,16.90,16.91,16.92,16.93,16.94,16.95,16.96,16.97,16.98,17.00,17.02,17.04,17.06,17.08,17.10,17.12,17.14,17.16,17.18,17.20,17.22,17.26,17.34,17.40,17.45,17.50,17.60,17.70,17.80,17.90,18.00,18.10,18.20,18.30,18.40,18.41,18.43,18.45,18.47,18.50,18.52,18.525,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.73,18.74,18.75,18.76,18.78,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.95,18.96,18.97,18.98,18.99,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.60,19.65,19.70,19.80,19.9,20.0,25.0,30.0,35.0,40.0,50.0]
      Y1S3=[0.,.025,.038,.046,.054,.063,.078,.095,.117,.144,.175,.205,.238,.274,.311,.350,.387,.415,.420,.408,.387,.361,.341,.319,.298,.284,.268,.251,.229,.201,.197,.186,.176,.170,.165,.161,.159,.157,.155,.153,.152,.152,.154,.157,.161,.168,.178,.190,.203,.217,.231,.243,.256,.255,.244,.229,.226,.225,.218,.210,.335,.220,.218,.226,.253,.343,.427,.315,.230,.235,.325,.260,.223,.247,.376,.537,.524,.457,.402,.365,.328,.299,.274,.251,.229,.201,.179,.166,.158,.154,.150,.146,.141,.130,.126,.134,.214,.249,.199,.189,.188,.194,.204,.212,.218,.223,.226,.219,.213,.232,.228,.221,.210,.175,.145,.125,.085]
      # 1S2 RESONANCE LEVEL J=1 F=0.159   UNITS 10**-18  73.5901 NM.
      X1S2=[16.84805,16.86,16.87,16.88,16.89,16.90,16.91,16.92,16.93,16.94,16.95,16.96,16.98,17.00,17.05,17.10,17.20,17.30,17.40,17.50,17.60,17.70,17.80,17.90,18.00,18.10,18.20,18.30,18.40,18.42,18.44,18.46,18.49,18.51,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.73,18.74,18.76,18.78,18.80,18.85,18.90,18.92,18.94,18.95,18.96,18.97,18.98,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.60,19.70,19.80,19.90,20.00,20.50,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,38.0,39.0,40.0,41.0,42.0,43.0,45.0,50.0,60.0,70.0,80.0,100.,120.,150.,180.,200.,240.,280.,320.,360.,400.]
      Y1S2=[0.,.230,.513,.864,1.23,1.59,1.83,2.00,2.10,2.16,2.18,2.15,2.12,2.04,1.86,1.73,1.57,1.49,1.46,1.45,1.46,1.50,1.54,1.60,1.67,1.75,1.82,1.89,1.99,2.01,2.03,2.05,2.06,2.11,2.05,1.97,2.06,2.15,2.14,2.01,1.96,2.02,2.00,1.98,1.94,2.03,2.25,2.37,2.30,2.21,2.13,2.09,2.04,2.01,1.99,1.95,1.91,1.88,1.88,1.91,2.01,2.11,2.27,2.29,1.96,1.86,1.93,1.96,1.99,2.01,2.06,2.10,2.15,2.18,2.25,2.29,2.28,2.32,2.36,2.56,2.66,2.80,3.07,3.63,4.22,4.88,5.45,6.00,6.57,7.07,7.52,7.90,8.28,8.60,8.87,9.10,9.30,9.48,9.63,9.76,9.87,9.96,10.0,10.1,10.2,10.3,10.4,10.3,10.0,9.45,9.00,8.00,7.20,6.80,6.10,5.50,5.05,4.73,4.45]
      # 2P10 J=1   UNITS 10**-18   SCALE 1/E**2 ABOVE 100 EV
      X2P10=[18.38162,18.39,18.40,18.42,18.43,18.44,18.46,18.47,18.48,18.49,18.50,18.509,18.51,18.52,18.53,18.54,18.55,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.74,18.80,18.90,18.92,18.95,18.96,18.97,19.00,19.10,19.20,19.30,19.40,19.50,19.56,19.57,19.58,19.59,19.60,19.70,19.80,19.90,20.0,21.0,22.0,23.0,24.0,25.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,50.0,60.0,75.0,100.]
      Y2P10=[0.00,.060,.091,.201,.261,.287,.310,.328,.354,.389,.440,.589,.394,.574,.716,.960,1.23,1.03,.440,.229,.481,1.16,.777,.606,.863,1.03,1.08,.690,.346,.191,.117,.085,.081,.074,.068,.062,.064,.095,.597,.580,.278,.164,.143,.138,.136,.135,.136,.147,.163,.201,.142,.135,.123,.120,.142,.153,.200,.237,.275,.294,.309,.318,.328,.332,.328,.323,.313,.304,.285,.200,.140,.090,.049]
      # 2P9 J=3  UNITS 10**-18    SCALE 1/E**2 ABOVE 100 EV
      X2P9=[18.55511,18.56,18.57,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.73,18.74,18.75,18.77,18.80,18.82,18.85,18.88,18.90,18.92,18.94,18.96,18.97,18.98,18.99,19.00,19.10,19.20,19.30,19.40,19.50,19.55,19.59,19.60,19.70,19.80,19.90,20.00,20.10,20.20,20.30,20.40,20.6,20.8,21.0,22.0,24.0,26.0,28.0,30.0,32.0,34.0,38.0,42.0,46.0,50.0,55.0,60.0,70.0,80.0,90.0,100.]
      Y2P9=[0.0,.093,.157,.233,.183,.114,.092,.132,.102,.116,.164,.322,.472,.392,.286,.218,.175,.148,.133,.123,.119,.116,.120,.124,.131,.139,.147,.163,.193,.300,.320,.180,.128,.131,.135,.142,.151,.159,.171,.179,.213,.143,.178,.195,.215,.205,.222,.242,.257,.268,.286,.307,.328,.418,.465,.503,.513,.503,.484,.456,.404,.332,.285,.256,.204,.171,.128,.097,.078,.062]
      # 2P8 J=2  UNITS 10**-18    SCALE BY 1/E ABOVE 60 EV
      X2P8=[18.57583,18.58,18.59,18.60,18.61,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.74,18.76,18.78,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.96,18.98,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.58,19.60,19.62,19.65,19.68,19.70,19.80,19.90,20.00,20.10,20.20,20.40,20.60,20.80,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,55.0,60.0]
      Y2P8=[0.0,.142,.198,.206,.250,.193,.158,.172,.403,.506,.467,.420,.381,.353,.326,.308,.275,.249,.229,.214,.201,.195,.192,.192,.194,.200,.215,.271,.206,.177,.177,.179,.185,.192,.200,.207,.205,.243,.228,.224,.228,.192,.218,.239,.260,.272,.289,.315,.339,.364,.385,.437,.475,.513,.537,.546,.551,.551,.546,.532,.513,.494,.475,.456,.437,.423,.408,.394,.385,.370,.337,.313]
      # 2P7 J=1  UNITS 10**-18    SCALE BY 1/E**2 ABOVE 60 EV
      X2P7=[18.61270,18.62,18.63,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.74,18.76,18.80,18.85,18.90,18.92,18.93,18.94,18.95,18.96,18.97,18.98,18.99,19.00,19.05,19.10,19.20,19.30,19.50,19.60,19.68,18.70,19.80,19.90,20.00,20.10,20.20,20.30,20.4,20.6,20.8,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,54.0,60.0]
      Y2P7=[0.0,.123,.127,.095,.145,.153,.126,.104,.091,.085,.080,.077,.072,.067,.061,.060,.066,.071,.076,.082,.096,.118,.112,.074,.066,.067,.070,.075,.084,.088,.099,.101,.115,.101,.114,.122,.126,.117,.124,.134,.141,.154,.164,.177,.198,.215,.232,.244,.252,.252,.250,.248,.243,.233,.218,.201,.184,.169,.156,.144,.134,.124,.117,.103,.081]
      # 2P6 J=2  UNITS 10**-18   SCALE BY 1/E ABOVE 60 EV
      X2P6=[18.63679,18.64,18.65,18.66,18.67,18.68,18.69,18.70,18.71,18.72,18.74,18.76,18.78,18.80,18.82,18.84,18.86,18.90,18.94,18.96,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.60,19.70,19.80,19.90,20.00,20.10,20.20,20.30,20.40,20.60,20.80,21.00,21.50,22.0,23.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0]
      Y2P6=[0.0,.113,.103,.135,.310,.442,.466,.449,.441,.436,.434,.432,.427,.419,.410,.401,.391,.376,.368,.374,.333,.319,.317,.321,.330,.339,.349,.388,.369,.362,.388,.404,.423,.437,.447,.466,.489,.513,.532,.556,.579,.603,.622,.646,.656,.656,.646,.632,.617,.603,.589,.575,.561,.546,.532,.518,.503,.489,.475]
      # 2P5 J=1  UNITS 10**-18   SCALE BY 1/E**2 ABOVE 60 EV
      X2P5=[18.69336,18.70,18.71,18.72,18.73,18.74,18.75,18.76,18.78,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.96,18.98,19.00,19.05,19.10,19.20,19.30,19.40,19.50,19.60,19.67,19.70,19.80,19.9,20.0,20.1,20.2,20.3,20.4,20.5,20.6,20.8,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0]
      Y2P5=[0.0,.029,.045,.054,.061,.066,.067,.069,.068,.067,.066,.066,.067,.068,.071,.074,.081,.095,.078,.079,.087,.096,.112,.125,.134,.142,.156,.161,.146,.163,.174,.175,.168,.168,.174,.182,.192,.201,.219,.233,.237,.239,.242,.242,.239,.235,.229,.228,.228,.228,.224,.211,.204,.196,.187,.181,.173,.166,.159,.151,.144,.138,.117]
      # 2P4 J=2  UNITS 10**-18   SCALE BY 1/E ABOVE 60 EV
      X2P4=[18.70407,18.71,18.72,18.73,18.74,18.75,18.76,18.77,18.78,18.79,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.96,18.98,19.00,19.02,19.10,19.20,19.30,19.40,19.50,19.58,19.60,19.68,19.70,19.80,19.90,20.00,20.10,20.20,20.30,20.40,20.60,20.80,21.0,21.5,22.0,22.5,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,31.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0]
      Y2P4=[0.0,.140,.180,.208,.229,.247,.263,.278,.291,.302,.313,.318,.332,.333,.332,.330,.329,.336,.371,.313,.287,.275,.263,.264,.270,.278,.289,.312,.291,.293,.326,.310,.326,.343,.363,.380,.404,.419,.447,.476,.504,.532,.551,.570,.580,.599,.608,.614,.612,.605,.594,.580,.564,.546,.513,.485,.461,.440,.423,.408,.395,.384,.374,.366,.358,.323]
      # 2P3 J=0  UNITS 10**-18   SCALE BY 1/E ABOVE 60 EV
      X2P3=[18.71138,18.72,18.73,18.74,18.75,18.76,18.77,18.78,18.79,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.95,18.96,18.97,18.98,19.00,19.10,19.20,19.30,19.40,19.50,19.60,19.70,19.80,19.9,20.0,20.1,20.2,20.3,20.4,20.6,20.8,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0]
      Y2P3=[0.0,.028,.037,.046,.054,.062,.068,.073,.078,.082,.087,.090,.092,.095,.098,.104,.124,.139,.142,.083,.064,.068,.065,.066,.069,.072,.076,.078,.086,.087,.097,.095,.101,.110,.116,.119,.125,.133,.139,.143,.149,.152,.153,.151,.150,.149,.146,.142,.137,.127,.120,.112,.107,.104,.100,.097,.094,.091,.088,.085,.081,.072]
      # 2P2 J=1  UNITS 10**-18   SCALE BY 1/E**2 ABOVE 60 EV
      X2P2=[18.72638,18.73,18.74,18.75,18.76,18.77,18.78,18.79,18.80,18.82,18.84,18.86,18.88,18.90,18.92,18.94,18.95,18.96,18.97,18.98,19.00,19.10,19.20,19.30,19.40,19.50,19.58,19.60,19.70,19.80,19.9,20.0,20.1,20.2,20.3,20.4,20.6,20.8,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0]
      Y2P2=[0.0,.006,.025,.046,.063,.078,.090,.099,.109,.122,.128,.131,.133,.137,.134,.143,.154,.179,.163,.137,.125,.128,.140,.150,.159,.166,.183,.163,.187,.187,.198,.201,.204,.203,.204,.207,.209,.211,.215,.223,.228,.233,.238,.238,.235,.226,.219,.214,.207,.192,.178,.163,.150,.140,.129,.122,.115,.108,.103,.096,.090,.078]
      # 2P1 J=0 UNITS 10**-18   SCALE BY 1/E ABOVE 100 EV
      X2P1=[18.96595,18.97,18.98,18.99,19.00,19.01,19.02,19.03,19.04,19.06,19.08,19.10,19.15,19.20,19.30,19.40,19.50,19.57,19.58,19.60,19.66,19.70,19.80,19.90,20.00,20.10,20.20,20.30,20.40,20.60,20.8,21.0,21.5,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,32.0,34.0,36.0,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0,54.0,60.0,70.0,80.0,90.0,100.]
      Y2P1=[0.0,.134,.170,.194,.206,.216,.223,.230,.235,.243,.250,.256,.269,.280,.303,.327,.345,.279,.437,.411,.342,.352,.371,.394,.418,.442,.461,.480,.499,.541,         .580,.618,.722,.826,.969,1.17,1.35,1.48,1.60,1.73,1.81,1.90,1.97,1.98,1.99,1.99,1.98,1.97,1.97,1.96,1.95,1.94,1.92,1.90,1.86,1.75,1.61,1.48,1.38]
      #                                                      
      # 2S5 J=2  UNITS 10**-18    SCALE BY 1/E**2 ABOVE 50 EV
      X2S5=[19.66403,19.8,19.9,20.0,20.5,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,36.0,40.0,44.0,50.0]
      Y2S5=[0.0,.0217,.0374,.0526,.121,.178,.263,.319,.355,.376,.387,.390,.388,.375,.355,.309,.266,.229,.184]
      # 2S4 J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.0128     62.9743 NM 
      #
      # 2S3 J=0  UNITS 10**-18    SCALE BY 1/E**2 ABOVE 50 EV 
      X2S3=[19.76060,19.8,19.9,20.0,20.5,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,36.0,40.0,44.0,50.0]
      Y2S3=[0.0,.0088,.0245,.0376,.0870,.122,.168,.195,.209,.215,.216,.214,.209,.196,.181,.151,.126,.105,.081]
      # 2S2 J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.0166     62.6827 NM
      #
      # 3D6 J=0  UNITS 10**-18   SCALE BY 1/E**2 ABOVE 50 EV 
      X3D6=[20.02464,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D6=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3D5 J=1 RESONANCE LEVEL  USE BEF SCALING      F=0.0048     61.9106 NM
      #
      # 3D4# J=4  UNITS 10**-18   SCALE BY 1/E**2 ABOVE 50 EV
      X3D4P=[20.03465,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D4P=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3D4  J=3  UNITS 10**-18   SCALE BY 1/E**2 ABOVE 50 EV
      X3D4=[20.03487,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D4=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3D3  J=2  UNITS 10**-18  SCALE BY 1/E**2 ABOVE  50 EV
      X3D3=[20.03675,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D3=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3D2 J=1 RESONANCE LEVEL   USE BEF SCALING      F=0.0146    61.8676 NM
      #
      # 3D1## J=2  UNITS 10**-18  SCALE BY 1/E**2 ABOVE 50 EV
      X3D1PP=[20.04820,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D1PP=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3D1# J=3  UNITS 10**-18  SCALE BY 1/E**2 ABOVE 50 EV
      X3D1P=[20.04842,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3D1P=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3S1#### J=2  UNITS 10**-18 SCALE BY 1/E**2 ABOVE 50 EV
      X3S1PPPP=[20.13611,22.,24.,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3S1PPPP=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3S1### J=3   UNITS 10**-18 SCALE BY 1/E**2 ABOVE 50 EV
      X3S1PPP=[20.13629,22.,24.,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3S1PPP=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3S1## J=2    UNITS 10**-18 SCALE BY 1/E**2 ABOVE 50 EV
      X3S1PP=[20.13751,22.,24.,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0]
      Y3S1PP=[0.0,.013,.022,.029,.032,.033,.032,.030,.025,.020,.016,.011]
      # 3S1# J=1 RESONANCE LEVEL  USE BEF SCALING      F=0.00676   61.5632 NM
      #
      # 3P SUM 3P10-3P6  UNITS 10**-18  SCALE BY 1/E**1.5  ABOVE 50 EV
      X3P106=[20.14965,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,50.0]
      Y3P106=[0.0,.110,.178,.242,.275,.320,.363,.418,.450,.500,.500,.480,.460,.440,.410,.330]
      # 3P SUM 3P5-3P2  UNITS 10**-18  SCALE BY 1/E**1.5  ABOVE 50 EV
      X3P52=[20.25918,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,50.0]
      Y3P52=[0.0,.088,.142,.194,.220,.256,.290,.335,.360,.400,.400,.380,.370,.350,.330,.270]
      # 3P1 J=0  UNITS 10**-18   SCALE 1/E  BY ABOVE 50 EV
      X3P1=[20.36885,21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,50.0]
      Y3P1=[0.0,.050,.100,.125,.145,.165,.175,.185,.192,.200,.205,.207,.207,.205,.205,.190]
      #  HIGH RESONANCE LEVELS :
      #
      # 3S4  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00635   60.2730 NM 
      # 3S2  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.0044    60.0041 NM
      # 4D5  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00705   59.8895 NM
      # 4D2  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00235   59.8710 NM
      # 4S1# J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00435   59.5924 NM
      # 4S4  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00325   59.1834 NM
      # 5D5  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00383   59.0015 NM
      # 5D2  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00127   58.9915 NM
      # 4S2  J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.00165   58.9183 NM
      # 5S1# J=1  RESONANCE LEVEL  USE BEF SCALING     F=0.0025    58.7217 NM
      # SUM S STATES 5-INFINITY USE BEF SCALING        F=0.00962
      # SUM D STATES 6-INFINITY USE BEF SCALING        F=0.01695  
      #  TOTAL OSCILLATOR SUM  F = 0.2926
      #
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF
      Z10T=[671.,424.,215.,123.,69.3,32.5,18.8,11.8,7.95,7.19,7.27,7.42,7.59,7.71,7.80,7.94,8.05,8.19,8.29,8.40,8.47,8.51,8.52,8.56,8.57]
      # UNITS 10**-24
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      # ---------------------------------------------------------------------
      if(NANISO == 0):
      :
      NAME='NEON ISOTROPIC     2013  '       
      else:     
      NAME='NEON ANISOTROPIC   2013  '      
      # endif
      # ---------------------------------------------------------------------
      # UPDATE OF 2002 FILE USES MORE DETAILED EXCITATION X-SECTIONS FOR USE
      # IN PENNING CALCULATIONS. 
      # SHAPE 0F EXCITATION defS CLOSE TO THRESHOLD GUIDED BY 
      # ZEMAN AND BARTSCHAT J.PHYS. B 30(1997)4609
      # ALL X-SECTIONS CONSISTENT WITH PUBLISHED ELECTRON SCATTERING UP 
      # TO 2003
      # FIT TO RATE COEFICIENTS OF :
      #  TACHIBANA AN PHELPS : PHYS REV.A36(1987)999
      #  TACHIBANA AND HARIMA J.PHYS.B 17(1984)879
      # GOOD FIT TO DRIFT DIFFUSION OF ROBERTSON AND ALSO OF
      #  LUCAS AND SAELEE . CLOSE FIT TO TOWNS# end OF CHANIN AND RORK 
      # 2007: INCREASED BASE UP TO 10MEV ENERGY                       
      # 2007: INTRODUCED NEW ANGULAR DISTRIBUTION def
      # 2007: INTRODUCED PENNING TRANSFER FRACTION
      # 2010: INTRODUCED MORE DETAILED RMPS CALCULATION OF ZATSARINNY AND
      #       BARTSCHAT FROM THRESHOLD TO 20EV FOR THE FIRST S AND P STATES
      #       WHICH ARE IN AGREEMENT WITH ALLANS PRECISE MEASUREMENTS
      #       J.PHYS.B 42(2009)044009
      #       SCALED ZATSARINNY AND BARTSCHAT BY 0.95 TO BRING INTO EXACT 
      #       AGREEMENT WITH ALLANS MEASUREMENTS
      #       NOW CLEAR EVIDENCE THAT THE TOWNS# end EXPERIMENTS ARE 
      #       INACCURATE ESPECIALLY AT LOW FIELDS DUE TO PENNING TRANFERS
      #       TO IMPURITIES AT THE LEVEL OF 30PPM . NEED MODERN EXPERIMENTS
      #       WITH LESS THAN 1PPM IMPURITIES TO GIVE ACCURATE TOWNS# end COEF.
      # 2013: INTRODUCED K-SHELL IONISATION AND CHARGE STATES 1 2 AND 3
      #
      # ---------------------------------------------------------------------
      # 
      # BORN BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=1.69 
      C=17.80  
      # AVERAGE AUGER EMISSION FOR EACH SHELL
      AUGK=1.99
      #
      NION=4                             
      NATT=1              
      NIN=45
      NNULL=0 
      IONMODEL=0
      #
      NBREM=25
      DO 55 J=1,NIN
      IZBR[J]=0
      55 CONTINUE
      IZBR[46]=10
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO 
      DO 2 J=1,NIN
      2 KIN[J]=NANISO
      #       
      NEL=120                                                       
      NDATA=125 
      NEPSI=196                                                        
      NIOND=74 
      NION2=49
      NION3=41
      NKSH=99             
      N1S5=111
      N1S4=137
      N1S3=117
      N1S2=119
      N2P10=73
      N2P9=70
      N2P8=72
      N2P7=65
      N2P6=59
      N2P5=63
      N2P4=66
      N2P3=62
      N2P2=62
      N2P1=59
      N2S5=19
      N2S3=19
      N3D6=12
      N3D4P=12
      N3D4=12
      N3D3=12
      N3D1PP=12
      N3D1P=12
      N3S1PPPP=12
      N3S1PPP=12
      N3S1PP=12
      N3P106=16
      N3P52=16
      N3P1=16
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(20.1797*AMU)                                     
      E[3]=21.56454
      # EXCITATION X=SECTION AT 1.3MEV                                    
      E[4]=0.492e-19
      # ENTER IONISING X-SECTION AT 1.3MEV         
      E[5]=0.415e-18
      # ENTER EOBY FOR MINIMUM IONISING PARTICLE          
      E[6]=19.5
      # OPAL BEATY AT LOW ENERGY
      EOBY[1]=17.4      
      EOBY[2]=36.0     
      EOBY[3]=73.0     
      # OPAL BEATY SPLITTING FOR K SHELL
      EOBY[4]=500.0       
      #
      EION[1]=21.56454
      EION[2]=62.5275
      EION[3]=125.9508
      EION[4]=870.2
      LEGAS[1]=0
      LEGAS[2]=0
      LEGAS[3]=0
      LEGAS[4]=1
      ISHELL[1]=0
      ISHELL[2]=0
      ISHELL[3]=0
      ISHELL[4]=1
      # AUGER AND FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1 
      EC0[2]=5.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      NC0[3]=2
      EC0[3]=10.0
      WKLM[3]=0.0
      EFL[3]=0.0
      NG1[3]=0
      EG1[3]=0.0
      NG2[3]=0
      EG2[3]=0.0
      NC0[4]=2
      EC0[4]=806.6
      WKLM[4]=0.015
      EFL[4]=849.
      NG1[4]=2
      EG1[4]=801.
      NG2[4]=1
      EG2[4]=5.0
      #
      DO 776 J=1,NION
      DO 777 I=1,20000
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      #
      EIN[1]=16.61907
      EIN[2]=16.67083
      EIN[3]=16.71538
      EIN[4]=16.84805
      EIN[5]=18.38162
      EIN[6]=18.55511
      EIN[7]=18.57583
      EIN[8]=18.61270
      EIN[9]=18.63679
      EIN[10]=18.69336
      EIN[11]=18.70407
      EIN[12]=18.71138
      EIN[13]=18.72638
      EIN[14]=18.96595
      EIN[15]=19.66403
      EIN[16]=19.68819
      EIN[17]=19.76060
      EIN[18]=19.77977
      EIN[19]=20.02464
      EIN[20]=20.02644
      EIN[21]=20.03465
      EIN[22]=20.03487
      EIN[23]=20.03675
      EIN[24]=20.04039
      EIN[25]=20.04820
      EIN[26]=20.04842
      EIN[27]=20.13611
      EIN[28]=20.13629
      EIN[29]=20.13751
      EIN[30]=20.13946
      EIN[31]=20.14965
      EIN[32]=20.25918
      EIN[33]=20.36885
      EIN[34]=20.57056
      EIN[35]=20.66277
      EIN[36]=20.70230
      EIN[37]=20.70871
      EIN[38]=20.80551
      EIN[39]=20.94928
      EIN[40]=21.01388
      EIN[41]=21.01743
      EIN[42]=21.04354
      EIN[43]=21.11401
      EIN[44]=21.14638
      EIN[45]=21.18286
      EIN[46]=0.0
      #*****************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # PENNING TRANSFER EFFICIENCY IN NEON MIXTURES BETWEEN 0.3 AND 0.6
      DO 50 NL=1,NIN
      PENFRA[1,NL]=0.5
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2,NL]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      50 PENFRA[3,NL]=1.0
      #----------------------------------------------------------------
      # HORNBECK MOLNAR MOD  (THRESHOLD 20.3 EV)
      # IF PURE GAS SET TO 0.0 FOR FIRST 32 LEVELS 0.3 FOR OTHER LEVELS
      #     DO 51 NL=1,32  
      #  51 PENFRA(1,NL)=0.0
      #*****************************************************************
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      #*****************************************************************
      4 DO 5 NL=1,NIN
      DO 651 I=1,20000
      if(EG[I]:
      > EIN[NL]) :
      IOFFN[NL]=I-1
      GO TO 5
      # endif
      651 CONTINUE
      5 CONTINUE
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC    ANISOTROPIC         NEON              '     
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC   ISOTROPIC           NEON              '     
      # endif
      SCRPT[3]=' IONISATION CHARGE STATE=1         ELOSS= 21.56454'
      SCRPT[4]=' IONISATION CHARGE STATE=2         ELOSS= 62.5275 '
      SCRPT[5]=' IONISATION CHARGE STATE=3         ELOSS=125.9508 '
      SCRPT[6]=' IONISATION   NEON   K-SHELL       ELOSS=870.2    '
      SCRPT[7]=' ATTACHMENT                                       ' 
      SCRPT[8]='                                                  '
      SCRPT[9]='                                                  '
      SCRPT[10]='EX   1S5      J=2    METASTABLE     ELVL= 16.61907'
      SCRPT[11]='EX   1S4      J=1    RESONANT       ELVL= 16.67083'
      SCRPT[12]='EX   1S3      J=0    METASTABLE     ELVL= 16.71538'
      SCRPT[13]='EX   1S2      J=1    RESONANT       ELVL= 16.84805'
      SCRPT[14]='EX   2P10     J=1                   ELVL= 18.38162'
      SCRPT[15]='EX   2P9      J=3                   ELVL= 18.55511'
      SCRPT[16]='EX   2P8      J=2                   ELVL= 18.57583'
      SCRPT[17]='EX   2P7      J=1                   ELVL= 18.61270'
      SCRPT[18]='EX   2P6      J=2                   ELVL= 18.63679'
      SCRPT[19]='EX   2P5      J=1                   ELVL= 18.69336'
      SCRPT[20]='EX   2P4      J=2                   ELVL= 18.70407'
      SCRPT[21]='EX   2P3      J=0                   ELVL= 18.71138'
      SCRPT[22]='EX   2P2      J=1                   ELVL= 18.72638'
      SCRPT[23]='EX   2P1      J=0                   ELVL= 18.96595'
      SCRPT[24]='EX   2S5      J=2                   ELVL= 19.66403'
      SCRPT[25]='EX   2S4      J=1   RESONANT        ELVL= 19.68819'
      SCRPT[26]='EX   2S3      J=0                   ELVL= 19.76060'
      SCRPT[27]='EX   2S2      J=1   RESONANT        ELVL= 19.77977'
      SCRPT[28]='EX   3D6      J=0                   ELVL= 20.02464'
      SCRPT[29]='EX   3D5      J=1   RESONANT        ELVL= 20.02644'
      SCRPT[30]='EX   3D4#     J=4                   ELVL= 20.03465'
      SCRPT[31]='EX   3D4      J=3                   ELVL= 20.03487'
      SCRPT[32]='EX   3D3      J=2                   ELVL= 20.03675'
      SCRPT[33]='EX   3D2      J=1   RESONANT        ELVL= 20.04039'
      SCRPT[34]='EX   3D1##    J=2                   ELVL= 20.04820'
      SCRPT[35]='EX   3D1#     J=3                   ELVL= 20.04842'
      SCRPT[36]='EX   3S1####  J=2                   ELVL= 20.13611'
      SCRPT[37]='EX   3S1###   J=3                   ELVL= 20.13629'
      SCRPT[38]='EX   3S1##    J=2                   ELVL= 20.13751'
      SCRPT[39]='EX   3S1#     J=1   RESONANT        ELVL= 20.13946'
      SCRPT[40]='EX SUM OF  3P10-6                   ELVL= 20.14965'
      SCRPT[41]='EX SUM OF  3P5-2                    ELVL= 20.25918'
      SCRPT[42]='EX   3P1      J=0                   ELVL= 20.36885'
      SCRPT[43]='EX   3S4      J=1   RESONANT        ELVL= 20.57056'
      SCRPT[44]='EX   3S2      J=1   RESONANT        ELVL= 20.66277'
      SCRPT[45]='EX   4D5      J=1   RESONANT        ELVL= 20.70230'
      SCRPT[46]='EX   4D2      J=1   RESONANT        ELVL= 20.70871'
      SCRPT[47]='EX   4S1#     J=1   RESONANT        ELVL= 20.80551'
      SCRPT[48]='EX   4S4      J=1   RESONANT        ELVL= 20.94928'
      SCRPT[49]='EX   5D5      J=1   RESONANT        ELVL= 21.01388'
      SCRPT[50]='EX   5D2      J=1   RESONANT        ELVL= 21.01743'
      SCRPT[51]='EX   4S2      J=1   RESONANT        ELVL= 21.04354'
      SCRPT[52]='EX   5S1#     J=1   RESONANT        ELVL= 21.11401'
      SCRPT[53]='EX SUM HIGHER S     RESONANT        ELVL= 21.14638'
      SCRPT[54]='EX SUM HIGHER D     RESONANT        ELVL= 21.18286'
      SCRPT[55]=' BREMSSTRAHLUNG FROM NEON ATOM                    '
      # PARAMETERS OF PHASE SHIFT ANALYSIS                         
      APOL=2.672                                                        
      LMAX=100                                                          
      AA=0.2135                                                         
      DD=3.86                                                           
      FF=-2.656                                                         
      A1=1.846                                                          
      B1=3.29                                                           
      A2=-0.037
      #       
      #     EN=-ESTEP/2.00                                    
      DO 9000 I=1,NSTEP 
      EN=EG[I]                                                
      #     EN=EN+ESTEP
      if(EN > EIN[1]:
      ) :
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      # endif                                                       
      if(EN > 1.0):
      GO TO 7                                           
      if(EN == 0.0):
      QELA=0.161e-16                                    
      if(EN == 0.0):
      QMOM=0.161e-16                                    
      if(EN == 0.0):
      GO TO 12                                            
      AK=math.sqrt(EN/ARY)
      AK2=AK*AK
      AK3=AK2*AK
      AK4=AK3*AK
      AK5=AK4*AK                                                   
      AN0=-AA*AK*(1.0+(4.0*APOL/3.0)*AK2*math.log(AK))-(API*APOL/3.0)*AK2+DD*AK3+FF*AK4                                               
      AN1=((API/15.0)*APOL*AK2-A1*AK3)/(1.0+B1*AK2)
      AN2=API*APOL*AK2/105.0-A2*AK5                
      ANHIGH=AN2      
      SUM=(numpy.sin(AN0-AN1))**2                                            
      SUM=SUM+2.0*(numpy.sin(AN1-AN2))**2               
      SIGEL=(numpy.sin(AN0))**2+3.0*(numpy.sin(AN1))**2                      
      DO 6 J=2,LMAX-1                             
      ANLOW=ANHIGH
      ANHIGH=API*APOL*AK2/((2.*J+5.0)*(2.*J+3.0)*(2.*J+1.0))            
      SUMI=6.0/((2.0*J+5.0)*(2.0*J+3.0)*(2.0*J+1.0)*(2.0*J-1.0))        
      SUM=SUM+(J+1.0)*(numpy.sin(API*APOL*AK2*SUMI))**2 
      SIGEL=SIGEL+(2.0*J+1.0)*(numpy.sin(ANLOW))**2                    
      6 CONTINUE
      QELA=SIGEL*4.0*PIR2/AK2                                           
      QMOM=SUM*4.0*PIR2/AK2                                       
      GO TO 12   
      7 CONTINUE):

      if(EN <= XEL[J]:
      ) GO TO 9                                        
      8 CONTINUE                                                          
      J=NEL                                                             
      9 A=(YEL[J]-YEL[J-1])/(XEL[J]-XEL[J-1])                         
      B=(XEL[J-1]*YEL[J]-XEL[J]*YEL[J-1])/(XEL[J-1]-XEL[J])         
      QELA=(A*EN+B)*1.0D-16                                           
      DO 10 J=2,N                                                 
      if(EN <= XEN[J]:
      ) GO TO 11                                        
      10 CONTINUE                                                          
      J=N                                                          
      11 A=(YXSEC[J]-YXSEC[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YXSEC[J]-XEN[J]*YXSEC[J-1])/(XEN[J-1]-XEN[J])         
      QMOM=(A*EN+B)*1.0D-16                                           
      12 CONTINUE         
      PQ1=0.5+(QELA-QMOM)/QELA
      DO 13 J=2,NEPSI
      if(EN <= XEPS[J]:
      ) GO TO 14
      13 CONTINUE
      J=NEPSI
      14 A=(YEPS[J]-YEPS[J-1])/(XEPS[J]-XEPS[J-1])
      B=(XEPS[J-1]*YEPS[J]-XEPS[J]*YEPS[J-1])/(XEPS[J-1]-XEPS[J])
      PQ2=A*EN+B
      # EPSILON =1.0-YEPS
      PQ2=1.00-PQ2
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA                   
      if(NANISO == 0):
      :
      Q[2][I]=QMOM
      PEQEL[2][I]=0.5
      # endif   
      #
      # IONISATION FOR CHARGE STATE =1
      QION[1][I]=0.00    
      PEQION[1][I]=0.50   
      if(NANISO == 2):
      PEQION[1][I]=0.00                                
      if(EN <= EION[1]:
      ) GO TO 129 
      if(EN > XION(NIOND):
      ) GO TO 121 
      DO 110 J=2,NIOND                                                  
      if(EN <= XION[J]:
      ) GO TO 120                                       
      110 CONTINUE                                                          
      J=NIOND                                                           
      120 A=(YIN1[J]-YIN1[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN1[J]-XION[J]*YIN1[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.0D-16               
      GO TO 122
      # USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
      121 AX2=1.00/BETA2
      AX1=AX2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)*0.9594
      122 CONTINUE                     
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY
      # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
      # THE IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
      )) GO TO 129
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
      #
      # IONISATION FOR CHARGE STATE =2
      129 QION[2][I]=0.00    
      PEQION[2][I]=0.50   
      if(NANISO == 2):
      PEQION[2][I]=0.00                                
      if(EN <= EION[2]:
      ) GO TO 149 
      if(EN > XIN2(NION2):
      ) GO TO 141 
      DO 130 J=2,NION2                                                  
      if(EN <= XIN2[J]:
      ) GO TO 140                                       
      130 CONTINUE                                                          
      J=NION2                                                           
      140 A=(YIN2[J]-YIN2[J-1])/(XIN2[J]-XIN2[J-1])                         
      B=(XIN2[J-1]*YIN2[J]-XIN2[J]*YIN2[J-1])/(XIN2[J-1]-XIN2[J])       
      QION[2][I]=(A*EN+B)*1.0D-16               
      GO TO 142
      # USE BORN BETHE X-SECTION ABOVE XIN2(NION2) EV
      141 AX2=1.00/BETA2
      AX1=AX2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[2][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)*0.0388
      142 CONTINUE                     
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY
      # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
      # THE IONISATION ENERGY
      if(EN <= (2.0*EION[2]:
      )) GO TO 149
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      #
      # IONISATION FOR CHARGE STATE =3
      149 QION[3][I]=0.00    
      PEQION[3][I]=0.50   
      if(NANISO == 2):
      PEQION[3][I]=0.00                                
      if(EN <= EION[3]:
      ) GO TO 169 
      if(EN > XIN3(NION3):
      ) GO TO 161 
      DO 150 J=2,NION3                                                  
      if(EN <= XIN3[J]:
      ) GO TO 160                                       
      150 CONTINUE                                                          
      J=NION3                                                           
      160 A=(YIN3[J]-YIN3[J-1])/(XIN3[J]-XIN3[J-1])                         
      B=(XIN3[J-1]*YIN3[J]-XIN3[J]*YIN3[J-1])/(XIN3[J-1]-XIN3[J])       
      QION[3][I]=(A*EN+B)*1.0D-16               
      GO TO 162
      # USE BORN BETHE X-SECTION ABOVE XIN3(NION3) EV
      161 AX2=1.00/BETA2
      AX1=AX2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[3][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)*0.00215
      162 CONTINUE                     
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY
      # ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
      # THE IONISATION ENERGY
      if(EN <= (2.0*EION[3]:
      )) GO TO 169
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
      #
      # CALCULATE K-SHELL IONISATION
      169 QION[4][I]=0.00
      PEQION[4][I]=0.50
      if(NANISO == 2):
      PEQION[4][I]=0.0
      if(EN <= EION[4]:
      ) GO TO 198
      DO 192 J=2,NKSH
      if(EN <= XKSH[J]:
      ) GO TO 193
      192 CONTINUE
      J=NKSH
      193 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
      QION[4][I]=(A*EN+B)*1.e-16
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
      198 CONTINUE
      # ATTACHMENT             
      Q[4][I]=0.00 
      # COUNTING IONISATION                                                     
      Q[5][I]=0.00   
      PEQEL[5][I]=0.50
      if(NANISO == 2):
      PEQEL[5][I]=0.00
      if(EN <= E[3]:
      ) GO TO 242
      if(EN > XION(NIOND):
      ) GO TO 241
      DO 230 J=2,NIOND
      if(EN <= XION[J]:
      ) GO TO 240
      230 CONTINUE
      J=NIOND
      240 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])
      Q[5][I]=(A*EN+B)*1.0D-16
      GO TO 242
      # USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
      241 Q[5][I]=CONST*(AM2*(AX1-DEN[I]/2.0)+C*AX2)
      242 CONTINUE  
      # CORRECTION TO CHARGE STATE 1 2 AND 3 X-SECTION FOR K SHELL 
      # GIVES TOTAL IONISATION EQUAL TO OSCILLATOR SUM
      if(Q[5][I]:
      == 0.0) :
      QCORR=1.0
      else:
      QCORR=(Q[5][I]-QION[4][I])/Q[5][I]
      # endif                           
      QION[1][I]=QION[1][I]*QCORR
      QION[2][I]=QION[2][I]*QCORR
      QION[3][I]=QION[3][I]*QCORR 
      #                     
      Q[6][I]=0.00     
      #
      DO 251 NL=1,NIN+1
      QIN(NL,I)=0.00
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
      :
      PEQIN(NL,I)=0.00
      # endif
      251 CONTINUE
      #                                                 
      # 1S5 METASTABLE LEVEL                                                      
      if(EN <= EIN[1]:
      ) GO TO 2000  
      if(EN > X1S5(N1S5):
      ) GO TO 311                                 
      DO 300 J=2,N1S5                                                  
      if(EN <= X1S5[J]:
      ) GO TO 310                                       
      300 CONTINUE                                                          
      J=N1S5                                                           
      310 A=(Y1S5[J]-Y1S5[J-1])/(X1S5[J]-X1S5[J-1])                         
      B=(X1S5[J-1]*Y1S5[J]-X1S5[J]*Y1S5[J-1])/(X1S5[J-1]-X1S5[J])       
      QIN[1][I]=(A*EN+B)*1.0D-18
      GO TO 312 
      # IF ENERGY GT X1S5(N1S5) EV SCALE BY 1/E**3
      311 QIN[1][I]=Y1S5(N1S5)*(X1S5(N1S5)/EN)**3*1.0D-18  
      312 if(EN <= (2.0*EIN[1])) GO TO 320
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]#
      # 1S4 RESONANCE LEVEL  F=0.0118
      320 if(EN <= EIN[2]) GO TO 2000  
      if(EN > X1S4(N1S4):
      ) GO TO 341                                   
      DO 330 J=2,N1S4                                                 
      if(EN <= X1S4[J]:
      ) GO TO 340                                       
      330 CONTINUE                                                          
      J=N1S4                                                           
      340 A=(Y1S4[J]-Y1S4[J-1])/(X1S4[J]-X1S4[J-1])                         
      B=(X1S4[J-1]*Y1S4[J]-X1S4[J]*Y1S4[J-1])/(X1S4[J-1]-X1S4[J])       
      QIN[2][I]=(A*EN+B)*1.0D-18
      GO TO 342
      # IF ENERGY GT X1S4(N1S4) EV USE BEF SCALING
      341 QIN[2][I]=0.0118/(EIN[2]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[2]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[2]+E[3])   
      QIN[2][I]=abs(QIN[2][I])
      342 if(EN <= (2.0*EIN[2])) GO TO 350 
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]                        
      # 1S3 METASTABLE LEVEL
      350 if(EN <= EIN[3]) GO TO 2000 
      if(EN > X1S3(N1S3):
      ) GO TO 371  
      DO 360 J=2,N1S3                                                   
      if(EN <= X1S3[J]:
      ) GO TO 370                                       
      360 CONTINUE                                                          
      J=N1S3                                                           
      370 A=(Y1S3[J]-Y1S3[J-1])/(X1S3[J]-X1S3[J-1])                         
      B=(X1S3[J-1]*Y1S3[J]-X1S3[J]*Y1S3[J-1])/(X1S3[J-1]-X1S3[J])       
      QIN[3][I]=(A*EN+B)*1.0D-18
      GO TO 372
      # IF ENERGY GT X1S3(N1S3) EV SCALE BY 1/E**3
      371 QIN[3][I]=Y1S3(N1S3)*(X1S3(N1S3)/EN)**3*1.e-18 
      372 if(EN <= (2.0*EIN[3])) GO TO 380
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]   
      # 1S2 RESONANCE LEVEL F=0.159
      380 if(EN <= EIN[4]) GO TO 2000 
      if(EN > X1S2(N1S2):
      ) GO TO 401
      DO 390 J=2,N1S2                                                   
      if(EN <= X1S2[J]:
      ) GO TO 400                                       
      390 CONTINUE                                                          
      J=N1S2                                                           
      400 A=(Y1S2[J]-Y1S2[J-1])/(X1S2[J]-X1S2[J-1])                         
      B=(X1S2[J-1]*Y1S2[J]-X1S2[J]*Y1S2[J-1])/(X1S2[J-1]-X1S2[J])       
      QIN[4][I]=(A*EN+B)*1.0D-18
      GO TO 402
      # IF ENERGY GT X1S2(N1S2) EV USE BEF SCALING
      401 QIN[4][I]=0.1590/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[4]+E[3])  
      QIN[4][I]=abs(QIN[4][I])
      402 if(EN <= (2.0*EIN[4])) GO TO 410
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]                               
      # 2P10 
      410 if(EN <= EIN[5]) GO TO 2000   
      if(EN > X2P10(N2P10):
      ) GO TO 431
      DO 420 J=2,N2P10                                                  
      if(EN <= X2P10[J]:
      ) GO TO 430                                 
      420 CONTINUE                                                          
      J=N2P10                                                           
      430 A=(Y2P10[J]-Y2P10[J-1])/(X2P10[J]-X2P10[J-1])                   
      B=(X2P10[J-1]*Y2P10[J]-X2P10[J]*Y2P10[J-1])/(X2P10[J-1]-X2P10[J])
      QIN[5][I]=(A*EN+B)*1.0D-18       
      GO TO 432
      # IF ENERGY GT X2P10(N2P10) EV SCALE BY 1/E**2
      431 QIN[5][I]=Y2P10(N2P10)*(X2P10(N2P10)/EN)**2*1.e-18       
      432 if(EN <= (2.0*EIN[5])) GO TO 440
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]                         
      # 2P9
      440 if(EN <= EIN[6]) GO TO 2000  
      if(EN > X2P9(N2P9):
      ) GO TO 461                           
      DO 450 J=2,N2P9                                                  
      if(EN <= X2P9[J]:
      ) GO TO 460                                       
      450 CONTINUE                                                          
      J=N2P9                                                           
      460 A=(Y2P9[J]-Y2P9[J-1])/(X2P9[J]-X2P9[J-1])                         
      B=(X2P9[J-1]*Y2P9[J]-X2P9[J]*Y2P9[J-1])/(X2P9[J-1]-X2P9[J])       
      QIN[6][I]=(A*EN+B)*1.0D-18        
      GO TO 462
      # IF ENERGY GT X2P9(N2P9) EV  SCALE BY 1/E**2
      461 QIN[6][I]=Y2P9(N2P9)*(X2P9(N2P9)/EN)**2*1.e-18       
      462 if(EN <= (2.0*EIN[6])) GO TO 470
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]                              
      # 2P8
      470 if(EN <= EIN[7]) GO TO 2000 
      if(EN > X2P8(N2P8):
      ) GO TO 491                                   
      DO 480 J=2,N2P8                                                  
      if(EN <= X2P8[J]:
      ) GO TO 490                                      
      480 CONTINUE                                                          
      J=N2P8                                                          
      490 A=(Y2P8[J]-Y2P8[J-1])/(X2P8[J]-X2P8[J-1])                         
      B=(X2P8[J-1]*Y2P8[J]-X2P8[J]*Y2P8[J-1])/(X2P8[J-1]-X2P8[J])       
      QIN[7][I]=(A*EN+B)*1.0D-18          
      GO TO 492
      # IF ENERGY GT X2P8(N2P8) EV  SCALE BY 1/E
      491 QIN[7][I]=Y2P8(N2P8)*(X2P8(N2P8)/EN)*1.e-18       
      492 if(EN <= (2.0*EIN[7])) GO TO 500 
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]                   
      # 2P7
      500 if(EN <= EIN[8]) GO TO 2000 
      if(EN > X2P7(N2P7):
      ) GO TO 521                                  
      DO 510 J=2,N2P7                                                  
      if(EN <= X2P7[J]:
      ) GO TO 520                                       
      510 CONTINUE                                                          
      J=N2P7                                                           
      520 A=(Y2P7[J]-Y2P7[J-1])/(X2P7[J]-X2P7[J-1])                         
      B=(X2P7[J-1]*Y2P7[J]-X2P7[J]*Y2P7[J-1])/(X2P7[J-1]-X2P7[J])       
      QIN[8][I]=(A*EN+B)*1.0D-18           
      GO TO 522
      # IF ENERGY GT X2P7(N2P7) EV SCALE BY 1/E**2
      521 QIN[8][I]=Y2P7(N2P7)*(X2P7(N2P7)/EN)**2*1.e-18          
      522 if(EN <= (2.0*EIN[8])) GO TO 530
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]                               
      # 2P6
      530 if(EN <= EIN[9]) GO TO 2000   
      if(EN > X2P6(N2P6):
      ) GO TO 551                                 
      DO 540 J=2,N2P6                                                  
      if(EN <= X2P6[J]:
      ) GO TO 550                                       
      540 CONTINUE                                                          
      J=N2P6                                                           
      550 A=(Y2P6[J]-Y2P6[J-1])/(X2P6[J]-X2P6[J-1])                         
      B=(X2P6[J-1]*Y2P6[J]-X2P6[J]*Y2P6[J-1])/(X2P6[J-1]-X2P6[J])       
      QIN[9][I]=(A*EN+B)*1.0D-18          
      GO TO 552
      # IF ENERGY GT X2P6(N2P6) EV   SCALE BY 1/E
      551 QIN[9][I]=Y2P6(N2P6)*(X2P6(N2P6)/EN)*1.e-18         
      552 if(EN <= (2.0*EIN[9])) GO TO 560
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]                                 
      # 2P5
      560 if(EN <= EIN[10]) GO TO 2000   
      if(EN > X2P5(N2P5):
      ) GO TO 581                                 
      DO 570 J=2,N2P5                                                  
      if(EN <= X2P5[J]:
      ) GO TO 580                                       
      570 CONTINUE                                                          
      J=N2P5                                                           
      580 A=(Y2P5[J]-Y2P5[J-1])/(X2P5[J]-X2P5[J-1])                         
      B=(X2P5[J-1]*Y2P5[J]-X2P5[J]*Y2P5[J-1])/(X2P5[J-1]-X2P5[J])       
      QIN[10][I]=(A*EN+B)*1.0D-18         
      GO TO 582
      # IF ENERGY GT X2P5(N2P5) EV   SCALE BY 1/E**2
      581 QIN[10][I]=Y2P5(N2P5)*(X2P5(N2P5)/EN)**2*1.e-18         
      582 if(EN <= (2.0*EIN[10])) GO TO 590
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]                                
      # 2P4 
      590 if(EN <= EIN[11]) GO TO 2000   
      if(EN > X2P4(N2P4):
      ) GO TO 611                                 
      DO 600 J=2,N2P4                                                  
      if(EN <= X2P4[J]:
      ) GO TO 610                                       
      600 CONTINUE                                                          
      J=N2P4                                                           
      610 A=(Y2P4[J]-Y2P4[J-1])/(X2P4[J]-X2P4[J-1])                         
      B=(X2P4[J-1]*Y2P4[J]-X2P4[J]*Y2P4[J-1])/(X2P4[J-1]-X2P4[J])       
      QIN[11][I]=(A*EN+B)*1.0D-18          
      GO TO 612
      # IF ENERGY GT X2P4(N2P4) EV   SCALE BY 1/E   
      611 QIN[11][I]=Y2P4(N2P4)*(X2P4(N2P4)/EN)*1.e-18           
      612 if(EN <= (2.0*EIN[11])) GO TO 620
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]                                
      # 2P3 
      620 if(EN <= EIN[12]) GO TO 2000   
      if(EN > X2P3(N2P3):
      ) GO TO 641                                 
      DO 630 J=2,N2P3                                                  
      if(EN <= X2P3[J]:
      ) GO TO 640                                       
      630 CONTINUE                                                          
      J=N2P3                                                           
      640 A=(Y2P3[J]-Y2P3[J-1])/(X2P3[J]-X2P3[J-1])                         
      B=(X2P3[J-1]*Y2P3[J]-X2P3[J]*Y2P3[J-1])/(X2P3[J-1]-X2P3[J])       
      QIN[12][I]=(A*EN+B)*1.0D-18          
      GO TO 642
      # IF ENERGY GT X2P3(N2P3) EV   SCALE BY 1/E   
      641 QIN[12][I]=Y2P3(N2P3)*(X2P3(N2P3)/EN)*1.e-18         
      642 if(EN <= (2.0*EIN[12])) GO TO 650
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]                                
      # 2P2 
      650 if(EN <= EIN[13]) GO TO 2000   
      if(EN > X2P2(N2P2):
      ) GO TO 671                                 
      DO 660 J=2,N2P2                                                  
      if(EN <= X2P2[J]:
      ) GO TO 670                                       
      660 CONTINUE                                                          
      J=N2P2                                                           
      670 A=(Y2P2[J]-Y2P2[J-1])/(X2P2[J]-X2P2[J-1])                         
      B=(X2P2[J-1]*Y2P2[J]-X2P2[J]*Y2P2[J-1])/(X2P2[J-1]-X2P2[J])       
      QIN[13][I]=(A*EN+B)*1.0D-18            
      GO TO 672
      # IF ENERGY GT X2P2(N2P2) EV   SCALE BY 1/E**2
      671 QIN[13][I]=Y2P2(N2P2)*(X2P2(N2P2)/EN)**2*1.e-18         
      672 if(EN <= (2.0*EIN[13])) GO TO 680
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]                                
      # 2P1 
      680 if(EN <= EIN[14]) GO TO 2000   
      if(EN > X2P1(N2P1):
      ) GO TO 701                                 
      DO 690 J=2,N2P1                                                  
      if(EN <= X2P1[J]:
      ) GO TO 700                                       
      690 CONTINUE                                                          
      J=N2P1                                                           
      700 A=(Y2P1[J]-Y2P1[J-1])/(X2P1[J]-X2P1[J-1])                         
      B=(X2P1[J-1]*Y2P1[J]-X2P1[J]*Y2P1[J-1])/(X2P1[J-1]-X2P1[J])       
      QIN[14][I]=(A*EN+B)*1.0D-18           
      GO TO 702
      # IF ENERGY GT X2P1(N2P1) EV   SCALE BY 1/E   
      701 QIN[14][I]=Y2P1(N2P1)*(X2P1(N2P1)/EN)*1.e-18          
      702 if(EN <= (2.0*EIN[14])) GO TO 710
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]                                
      # 2S5  
      710 if(EN <= EIN[15]) GO TO 2000   
      if(EN > X2S5(N2S5):
      ) GO TO 731                                 
      DO 720 J=2,N2S5                                                  
      if(EN <= X2S5[J]:
      ) GO TO 730                                       
      720 CONTINUE                                                          
      J=N2S5                                                           
      730 A=(Y2S5[J]-Y2S5[J-1])/(X2S5[J]-X2S5[J-1])                         
      B=(X2S5[J-1]*Y2S5[J]-X2S5[J]*Y2S5[J-1])/(X2S5[J-1]-X2S5[J])       
      QIN[15][I]=(A*EN+B)*1.0D-18
      GO TO 732
      # IF ENERGY GT X2S5(N2S5) EV   SCALE BY 1/E**2
      731 QIN[15][I]=Y2S5(N2S5)*(X2S5(N2S5)/EN)**2*1.e-18
      732 if(EN <= (2.0*EIN[15])) GO TO 740
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]                                
      # 2S4   BEF SCALING
      740 if(EN <= EIN[16]) GO TO 2000
      QIN[16][I]=0.0128/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])   
      QIN[16][I]=abs(QIN[16][I])
      if(EN <= (2.0*EIN[16]:
      )) GO TO 750 
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
      # 2S3
      750 if(EN <= EIN[17]) GO TO 2000   
      if(EN > X2S3(N2S3):
      ) GO TO 771                                 
      DO 760 J=2,N2S3                                                  
      if(EN <= X2S3[J]:
      ) GO TO 770                                       
      760 CONTINUE                                                          
      J=N2S3                                                           
      770 A=(Y2S3[J]-Y2S3[J-1])/(X2S3[J]-X2S3[J-1])                         
      B=(X2S3[J-1]*Y2S3[J]-X2S3[J]*Y2S3[J-1])/(X2S3[J-1]-X2S3[J])       
      QIN[17][I]=(A*EN+B)*1.0D-18
      GO TO 772
      # IF ENERGY GT X2S3(N2S3) EV   SCALE BY 1/E**2
      771 QIN[17][I]=Y2S3(N2S3)*(X2S3(N2S3)/EN)**2*1.e-18
      772 if(EN <= (2.0*EIN[17])) GO TO 780
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]                                
      # 2S2   BEF SCALING
      780 if(EN <= EIN[18]) GO TO 2000
      QIN[18][I]=0.0166/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3]) 
      QIN[18][I]=abs(QIN[18][I])  
      if(EN <= (2.0*EIN[18]:
      )) GO TO 790 
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      # 3D6
      790 if(EN <= EIN[19]) GO TO 2000   
      if(EN > X3D6(N3D6):
      ) GO TO 811                                 
      DO 800 J=2,N3D6                                                  
      if(EN <= X3D6[J]:
      ) GO TO 810                                       
      800 CONTINUE                                                          
      J=N3D6                                                           
      810 A=(Y3D6[J]-Y3D6[J-1])/(X3D6[J]-X3D6[J-1])                         
      B=(X3D6[J-1]*Y3D6[J]-X3D6[J]*Y3D6[J-1])/(X3D6[J-1]-X3D6[J])       
      QIN[19][I]=(A*EN+B)*1.0D-18
      GO TO 812
      # IF ENERGY GT X3D6(N3D6) EV   SCALE BY 1/E**2
      811 QIN[19][I]=Y3D6(N3D6)*(X3D6(N3D6)/EN)**2*1.e-18
      812 if(EN <= (2.0*EIN[19])) GO TO 820
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]                                
      # 3D5   BEF SCALING
      820 if(EN <= EIN[20]) GO TO 2000
      QIN[20][I]=0.0048/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3]) 
      QIN[20][I]=abs(QIN[20][I])  
      if(EN <= (2.0*EIN[20]:
      )) GO TO 830 
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      # 3D4#
      830 if(EN <= EIN[21]) GO TO 2000   
      if(EN > X3D4P(N3D4P):
      ) GO TO 851                                 
      DO 840 J=2,N3D4P                                                  
      if(EN <= X3D4P[J]:
      ) GO TO 850                                    
      840 CONTINUE                                                          
      J=N3D4P                                                           
      850 A=(Y3D4P[J]-Y3D4P[J-1])/(X3D4P[J]-X3D4P[J-1])                    
      B=(X3D4P[J-1]*Y3D4P[J]-X3D4P[J]*Y3D4P[J-1])/(X3D4P[J-1]-X3D4P[J])
      QIN[21][I]=(A*EN+B)*1.0D-18
      GO TO 852
      # IF ENERGY GT X3D4P(N3D4P) EV   SCALE BY 1/E**2
      851 QIN[21][I]=Y3D4P(N3D4P)*(X3D4P(N3D4P)/EN)**2*1.e-18
      852 if(EN <= (2.0*EIN[21])) GO TO 860
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]                                
      # 3D4
      860 if(EN <= EIN[22]) GO TO 2000   
      if(EN > X3D4(N3D4):
      ) GO TO 881                                 
      DO 870 J=2,N3D4                                                  
      if(EN <= X3D4[J]:
      ) GO TO 880                                    
      870 CONTINUE                                                          
      J=N3D4                                                           
      880 A=(Y3D4[J]-Y3D4[J-1])/(X3D4[J]-X3D4[J-1])                    
      B=(X3D4[J-1]*Y3D4[J]-X3D4[J]*Y3D4[J-1])/(X3D4[J-1]-X3D4[J])
      QIN[22][I]=(A*EN+B)*1.0D-18
      GO TO 882
      # IF ENERGY GT X3D4(N3D4) EV   SCALE BY 1/E**2
      881 QIN[22][I]=Y3D4(N3D4)*(X3D4(N3D4)/EN)**2*1.e-18
      882 if(EN <= (2.0*EIN[22])) GO TO 890
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]                                
      # 3D3
      890 if(EN <= EIN[23]) GO TO 2000   
      if(EN > X3D3(N3D3):
      ) GO TO 911                                 
      DO 900 J=2,N3D3                                                  
      if(EN <= X3D3[J]:
      ) GO TO 910                                    
      900 CONTINUE                                                          
      J=N3D3                                                           
      910 A=(Y3D3[J]-Y3D3[J-1])/(X3D3[J]-X3D3[J-1])                    
      B=(X3D3[J-1]*Y3D3[J]-X3D3[J]*Y3D3[J-1])/(X3D3[J-1]-X3D3[J])
      QIN[23][I]=(A*EN+B)*1.0D-18
      GO TO 912
      # IF ENERGY GT X3D3(N3D3) EV   SCALE BY 1/E**2
      911 QIN[23][I]=Y3D3(N3D3)*(X3D3(N3D3)/EN)**2*1.e-18
      912 if(EN <= (2.0*EIN[23])) GO TO 920
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]                                
      # 3D2     BEF SCALING
      920 if(EN <= EIN[24]) GO TO 2000
      QIN[24][I]=0.0146/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3]) 
      QIN[24][I]=abs(QIN[24][I])  
      if(EN <= (2.0*EIN[24]:
      )) GO TO 930 
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      # 3D1##
      930 if(EN <= EIN[25]) GO TO 2000   
      if(EN > X3D1PP(N3D1PP):
      ) GO TO 951                           
      DO 940 J=2,N3D1PP                                                
      if(EN <= X3D1PP[J]:
      ) GO TO 950                                    
      940 CONTINUE                                                          
      J=N3D1PP                                                         
      950 A=(Y3D1PP[J]-Y3D1PP[J-1])/(X3D1PP[J]-X3D1PP[J-1])                
      B=(X3D1PP[J-1]*Y3D1PP[J]-X3D1PP[J]*Y3D1PP[J-1])/(X3D1PP[J-1]-X3D1PP[J])
      QIN[25][I]=(A*EN+B)*1.0D-18
      GO TO 952
      # IF ENERGY GT X3D1PP(N3D1PP) EV   SCALE BY 1/E**2
      951 QIN[25][I]=Y3D1PP(N3D1PP)*(X3D1PP(N3D1PP)/EN)**2*1.e-18
      952 if(EN <= (2.0*EIN[25])) GO TO 960
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]                                
      # 3D1#
      960 if(EN <= EIN[26]) GO TO 2000   
      if(EN > X3D1P(N3D1P):
      ) GO TO 981                           
      DO 970 J=2,N3D1P                                                
      if(EN <= X3D1P[J]:
      ) GO TO 980                                    
      970 CONTINUE                                                          
      J=N3D1P                                                         
      980 A=(Y3D1P[J]-Y3D1P[J-1])/(X3D1P[J]-X3D1P[J-1])                
      B=(X3D1P[J-1]*Y3D1P[J]-X3D1P[J]*Y3D1P[J-1])/(X3D1P[J-1]-X3D1P[J])
      QIN[26][I]=(A*EN+B)*1.0D-18
      GO TO 982
      # IF ENERGY GT X3D1P(N3D1P) EV   SCALE BY 1/E**2
      981 QIN[26][I]=Y3D1P(N3D1P)*(X3D1P(N3D1P)/EN)**2*1.e-18
      982 if(EN <= (2.0*EIN[26])) GO TO 990
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]                                
      # 3S1####
      990 if(EN <= EIN[27]) GO TO 2000   
      if(EN > X3S1PPPP(N3S1PPPP):
      ) GO TO 1011                      
      DO 1000 J=2,N3S1PPPP                                              
      if(EN <= X3S1PPPP[J]:
      ) GO TO 1010                                  
      1000 CONTINUE                                                          
      J=N3S1PPPP                                                       
      1010 A=(Y3S1PPPP[J]-Y3S1PPPP[J-1])/(X3S1PPPP[J]-X3S1PPPP[J-1])       
      B=(X3S1PPPP[J-1]*Y3S1PPPP[J]-X3S1PPPP[J]*Y3S1PPPP[J-1])/(X3S1PPPP[J-1]-X3S1PPPP[J])
      QIN[27][I]=(A*EN+B)*1.0D-18
      GO TO 1012
      # IF ENERGY GT X3S1PPPP(N3S1PPPP) EV   SCALE BY 1/E**2
      1011 QIN[27][I]=Y3S1PPPP(N3S1PPPP)*(X3S1PPPP(N3S1PPPP)/EN)**2*1.e-18
      1012 if(EN <= (2.0*EIN[27])) GO TO 1020
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]                                
      # 3S1###
      1020 if(EN <= EIN[28]) GO TO 2000   
      if(EN > X3S1PPP(N3S1PPP):
      ) GO TO 1041                           
      DO 1030 J=2,N3S1PPP                                             
      if(EN <= X3S1PPP[J]:
      ) GO TO 1040                                 
      1030 CONTINUE                                                          
      J=N3S1PPP                                                         
      1040 A=(Y3S1PPP[J]-Y3S1PPP[J-1])/(X3S1PPP[J]-X3S1PPP[J-1])            
      B=(X3S1PPP[J-1]*Y3S1PPP[J]-X3S1PPP[J]*Y3S1PPP[J-1])/(X3S1PPP[J-1]-X3S1PPP[J])
      QIN[28][I]=(A*EN+B)*1.0D-18
      GO TO 1042
      # IF ENERGY GT X3S1PPP(N3S1PPP) EV   SCALE BY 1/E**2
      1041 QIN[28][I]=Y3S1PPP(N3S1PPP)*(X3S1PPP(N3S1PPP)/EN)**2*1.e-18
      1042 if(EN <= (2.0*EIN[28])) GO TO 1050
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]                                
      # 3S1##
      1050 if(EN <= EIN[29]) GO TO 2000   
      if(EN > X3S1PP(N3S1PP):
      ) GO TO 1071                           
      DO 1060 J=2,N3S1PP                                              
      if(EN <= X3S1PP[J]:
      ) GO TO 1070                                    
      1060 CONTINUE                                                          
      J=N3S1PP                                                         
      1070 A=(Y3S1PP[J]-Y3S1PP[J-1])/(X3S1PP[J]-X3S1PP[J-1])                
      B=(X3S1PP[J-1]*Y3S1PP[J]-X3S1PP[J]*Y3S1PP[J-1])/(X3S1PP[J-1]-X3S1PP[J])
      QIN[29][I]=(A*EN+B)*1.0D-18
      GO TO 1072
      # IF ENERGY GT X3S1PP(N3S1PP) EV   SCALE BY 1/E**2
      1071 QIN[29][I]=Y3S1PP(N3S1PP)*(X3S1PP(N3S1PP)/EN)**2*1.e-18
      1072 if(EN <= (2.0*EIN[29])) GO TO 1080
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]                                
      # 3S1#   BEF SCALING
      1080 if(EN <= EIN[30]) GO TO 2000
      QIN[30][I]=0.00676/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])  
      QIN[30][I]=abs(QIN[30][I]) 
      if(EN <= (2.0*EIN[30]:
      )) GO TO 1090 
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      # SUM 3P10--3P6
      1090 if(EN <= EIN[31]) GO TO 2000   
      if(EN > X3P106(N3P106):
      ) GO TO 1111                              
      DO 1100 J=2,N3P106                                               
      if(EN <= X3P106[J]:
      ) GO TO 1110                                  
      1100 CONTINUE                                                          
      J=N3P106                                                          
      1110 A=(Y3P106[J]-Y3P106[J-1])/(X3P106[J]-X3P106[J-1])                
      B=(X3P106[J-1]*Y3P106[J]-X3P106[J]*Y3P106[J-1])/(X3P106[J-1]-X3P106[J])       
      QIN[31][I]=(A*EN+B)*1.0D-18
      GO TO 1112
      # IF ENERGY GT X3P106(N3P106) EV   SCALE BY 1/E**1.5   
      1111 QIN[31][I]=Y3P106(N3P106)*(X3P106(N3P106)/EN)**1.5*1.e-18
      1112 if(EN <= (2.0*EIN[31])) GO TO 1120
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]                                
      # SUM 3P5--3P2
      1120 if(EN <= EIN[32]) GO TO 2000   
      if(EN > X3P52(N3P52):
      ) GO TO 1141                              
      DO 1130 J=2,N3P52                                               
      if(EN <= X3P52[J]:
      ) GO TO 1140                                  
      1130 CONTINUE                                                          
      J=N3P52                                                          
      1140 A=(Y3P52[J]-Y3P52[J-1])/(X3P52[J]-X3P52[J-1])                
      B=(X3P52[J-1]*Y3P52[J]-X3P52[J]*Y3P52[J-1])/(X3P52[J-1]-X3P52[J])
      QIN[32][I]=(A*EN+B)*1.0D-18
      GO TO 1142
      # IF ENERGY GT X3P52(N3P52) EV   SCALE BY 1/E**1.5   
      1141 QIN[32][I]=Y3P52(N3P52)*(X3P52(N3P52)/EN)**1.5*1.e-18
      1142 if(EN <= (2.0*EIN[32])) GO TO 1150
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]                                
      # 3P1
      1150 if(EN <= EIN[33]) GO TO 2000   
      if(EN > X3P1(N3P1):
      ) GO TO 1171                              
      DO 1160 J=2,N3P1                                               
      if(EN <= X3P1[J]:
      ) GO TO 1170                                  
      1160 CONTINUE                                                          
      J=N3P1                                                          
      1170 A=(Y3P1[J]-Y3P1[J-1])/(X3P1[J]-X3P1[J-1])                
      B=(X3P1[J-1]*Y3P1[J]-X3P1[J]*Y3P1[J-1])/(X3P1[J-1]-X3P1[J])
      QIN[33][I]=(A*EN+B)*1.0D-18
      GO TO 1172
      # IF ENERGY GT X3P1(N3P1) EV   SCALE BY 1/E   
      1171 QIN[33][I]=Y3P1(N3P1)*(X3P1(N3P1)/EN)*1.e-18
      1172 if(EN <= (2.0*EIN[33])) GO TO 1180
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]                                
      # 3S4     BEF SCALING
      1180 if(EN <= EIN[34]) GO TO 2000
      QIN[34][I]=0.00635/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])   
      QIN[34][I]=abs(QIN[34][I])
      if(EN <= (2.0*EIN[34]:
      )) GO TO 1190
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      # 3S2     BEF SCALING
      1190 if(EN <= EIN[35]) GO TO 2000
      QIN[35][I]=0.00440/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])
      QIN[35][I]=abs(QIN[35][I])   
      if(EN <= (2.0*EIN[35]:
      )) GO TO 1200
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      # 4D5     BEF SCALING
      1200 if(EN <= EIN[36]) GO TO 2000
      QIN[36][I]=0.00705/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])
      QIN[36][I]=abs(QIN[36][I])   
      if(EN <= (2.0*EIN[36]:
      )) GO TO 1210
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      # 4D2     BEF SCALING
      1210 if(EN <= EIN[37]) GO TO 2000
      QIN[37][I]=0.00235/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3]) 
      QIN[37][I]=abs(QIN[37][I])  
      if(EN <= (2.0*EIN[37]:
      )) GO TO 1220
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      # 4S1#    BEF SCALING
      1220 if(EN <= EIN[38]) GO TO 2000
      QIN[38][I]=0.00435/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3]) 
      QIN[38][I]=abs(QIN[38][I])  
      if(EN <= (2.0*EIN[38]:
      )) GO TO 1230
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      # 4S4     BEF SCALING
      1230 if(EN <= EIN[39]) GO TO 2000
      QIN[39][I]=0.00325/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+E[3])
      QIN[39][I]=abs(QIN[39][I])   
      if(EN <= (2.0*EIN[39]:
      )) GO TO 1240
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      # 5D5     BEF SCALING
      1240 if(EN <= EIN[40]) GO TO 2000
      QIN[40][I]=0.00383/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+E[3]) 
      QIN[40][I]=abs(QIN[40][I])  
      if(EN <= (2.0*EIN[40]:
      )) GO TO 1250
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      # 5D2     BEF SCALING
      1250 if(EN <= EIN[41]) GO TO 2000
      QIN[41][I]=0.00127/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3]) 
      QIN[41][I]=abs(QIN[41][I])  
      if(EN <= (2.0*EIN[41]:
      )) GO TO 1260
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      # 4S2     BEF SCALING
      1260 if(EN <= EIN[42]) GO TO 2000
      QIN[42][I]=0.00165/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+E[3]) 
      QIN[42][I]=abs(QIN[42][I])  
      if(EN <= (2.0*EIN[42]:
      )) GO TO 1270
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      # 5S1#    BEF SCALING
      1270 if(EN <= EIN[43]) GO TO 2000
      QIN[43][I]=0.00250/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+E[3])   
      QIN[43][I]=abs(QIN[43][I])
      if(EN <= (2.0*EIN[43]:
      )) GO TO 1280
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      # SUM HIGHER RESONANCE S STATES
      1280 if(EN <= EIN[44]) GO TO 2000
      QIN[44][I]=0.00962/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])  
      QIN[44][I]=abs(QIN[44][I]) 
      if(EN <= (2.0*EIN[44]:
      )) GO TO 1290
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      # SUM HIGHER RESONANCE S STATES
      1290 if(EN <= EIN[45]) GO TO 2000
      QIN[45][I]=0.01695/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])   
      QIN[45][I]=abs(QIN[45][I])
      if(EN <= (2.0*EIN[45]:
      )) GO TO 2000
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      # LOAD BREMSSTRAHLUNG X-SECTIONS
      if(EN < 1000.):
      GO TO 2000
      DO 1300 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 1310
      1300 CONTINUE
      J=NBREM
      1310 A=(math.log(Z10T[J])-math.log(Z10T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z10T[J])*EBRM[J-1]-math.log(Z10T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[46][I]=math.exp(A*EN+B)*1.e-24
      2000 CONTINUE 
      QINEL=0.0
      DO 8000 ILVL=1,NIN
      8000 QINEL=QINEL+QIN(ILVL,I)
      Q[1][I]=QELA+QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QINEL+QIN[46][I]
      # WRITE TOTAL, COUNTING IONISATION, INELASTIC AND ELASTIC X-SECTIONS
      #     WRITE(6,8001) EN,Q[1][I],Q[5][I],QINEL,QELA
      #8001 print(3X,' EN=','%.4f' % ,' QTOT=','%.4f' % ,' QION=','%.4f' % ,' QINEL=',
      #    /'%.4f' % ,' QELA=','%.4f' % )
      9000 CONTINUE
      #  SAVE COMPUTING TIME
      DO 9001 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 9011
      # endif
      9001 CONTINUE
      9011 CONTINUE
      if(EFINAL > 1000.):
      NIN=46
      return                                                            
      # end
def GAS6(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(162),YXSEC(162),XEL(151),YEL(151),XEPS(186),YEPS(186),XION(65),YION(65),YINC(65),YIN1(65),XIN2[41],YIN2[41],XIN3[35],YIN3[35],XIN4[32],YIN4[32],XKSH(74),YKSH(74),XL1S(83),YL1S(83),XL2S(82),YL2S(82),XL3S(84),YL3S(84),XM1S(91),YM1S(91),XM2S(98),YM2S(98),XM3S(99),YM3S(99),XM4S(105),YM4S(105),XM5S(106),YM5S(106),XEXC1(105),YEXC1(105),XEXC2(86),YEXC2(86),X1S5(169),Y1S5(169),YP1S5(169),X1S4(130),Y1S4(130),YP1S4(130),X1S3(168),Y1S3(168),YP1S3(168),X1S2(150),Y1S2(150),YP1S2(150),X2P10(142),Y2P10(142),YP2P10(142),X2P9(117),Y2P9(117),YP2P9(117),X2P8(120),Y2P8(120),YP2P8(120),X2P7(111),Y2P7(111),YP2P7(111),X2P6(100),Y2P6(100),YP2P6(100),X2P5(102),Y2P5(102),YP2P5(102),X3D6(69),Y3D6(69),YP3D6(69),X3D5(75),Y3D5(75),YP3D5(75),X2P4[64],Y2P4[64],YP2P4[64],X3D3(74),Y3D3(74),YP3D3(74),X3D4P(73),Y3D4P(73),YP3D4P(73),X2P3(73),Y2P3(73),YP2P3(73),X2P2(75),Y2P2(75),YP2P2(75),X3D4[59],Y3D4[59],YP3D4[59],X2P1[51],Y2P1[51],YP2P1[51],X3D1PP[48],Y3D1PP[48],YP3D1PP[48],X3D1P[41],Y3D1P[41],YP3D1P[41],X2S5[44],Y2S5[44],YP2S5[44],X3P10[20],Y3P10[20],YP3P10[20],X3P9[20],Y3P9[20],YP3P9[20],X3P8[20],Y3P8[20],YP3P8[20],X3S1PP[20],Y3S1PP[20],YP3S1PP[20],X3P7[20],Y3P7[20],YP3P7[20],X3P6[20],Y3P6[20],YP3P6[20],X3S1PPPP[20],Y3S1PPPP[20],YP3S1PPPP[20],X3S1PPP[20],Y3S1PPP[20],YP3S1PPP[20],X3P5[20],Y3P5[20],YP3P5[20],X4D6[20],Y4D6[20],YP4D6[20],X4D4P[20],Y4D4P[20],YP4D4P[20],X4D4[19],Y4D4[19],YP4D4[19],X4D3[19],Y4D3[19],YP4D3[19],X2S3[19],Y2S3[19],YP2S3[19],X4D1PP[19],Y4D1PP[19],YP4D1PP[19],X4D1P[19],Y4D1P[19],YP4D1P[19],X3S5[19],Y3S5[19],YP3S5[19],X4FS[19],Y4FS[19],YP4FS[19],IOFFN[51],IOFFION[11]   
      DIMENSION Z36T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10]
      CHARACTER*25 NAME 
      # ELASTIC MOMENTUM TRANSFER                                       
      XEN=[1.e-6,.001,.003,.005,.007,0.01,.015,0.02,0.03,0.04,      0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.14,0.17,0.20,                0.25,0.30,0.35,0.40,0.45,0.50,0.52,0.54,0.56,0.60, 0.70,0.80,0.90,1.00,1.20,1.40,1.75,2.00,2.50,3.00,               3.30,3.60,4.00,4.40,4.80,5.20,5.60,6.00,6.50,7.00,      7.50,8.00,8.50,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,20.0,30.0,40.0,50.0,60.0,75.0,100.,150.,200.,300.,400.,500.,700.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELFORD UP TO 2.0 EV : FIT TO NAKAMURA DRIFT VELOCITY
      YXSEC=[37.4,33.1,30.0,27.9,26.2,24.2,21.6,19.5,16.3,13.9,     12.1,10.6,9.30,8.27,7.29,6.55,5.27,4.30,3.18,2.37,                1.47,.908,.548,.321,.184,.111,.0956,.0870,.0844,.0945,.187,.339,.525,.729,1.15,1.63,2.60,3.38,4.75,6.35,                7.32,8.28,9.51,10.7,11.9,13.2,14.3,15.3,16.6,17.7,      18.6,19.0,18.9,18.7,18.1,17.1,15.7,14.2,12.7,11.1,9.60,6.50,2.95,1.95,1.40,1.25,1.20,1.18,0.94,0.80,0.64,0.54,0.48,0.41,.340,.270,.222,.183,.154,.113,.0881,.0711,.0591,.0501,.0432,.033,.026,.0212,.0176,.0149,.0104,.00778,.00605,.00486,.00336,.00248,.00192,.00153,.00105,.000773,4.76e-4,3.28e-4,2.26e-4,1.68e-4,1.30e-4,1.05e-4,7.35e-5,5.51e-5,4.33e-5,3.53e-5,2.94e-5,2.51e-5,1.90e-5,1.51e-5,1.23e-5,1.03e-5,8.81e-6,6.19e-6,4.68e-6,3.69e-6,2.99e-6,2.10e-6,1.57e-6,1.22e-6,9.76e-7,8.02e-7,6.71e-7,4.92e-7,3.77e-7,2.99e-7,2.43e-7,2.02e-7,1.35e-7,9.74e-8,7.36e-8,5.76e-8,3.81e-8,2.71e-8,2.02e-8,1.57e-8,1.25e-8,1.02e-8,7.13e-9,5.26e-9,4.03e-9,3.19e-9,2.58e-9,1.65e-9,1.14e-9,8.40e-10,6.43e-10,4.11e-10,2.85e-10,2.09e-10,1.60e-10,1.26e-10,1.02e-10,7.10e-11,5.21e-11,3.99e-11,3.15e-11,2.55e-11]
      # ELASTIC   CONSISTENT WITHIN 1% OF TOTAL X-SECTION SUM
      XEL=[1.e-6,.001,.003,.005,.007,0.01,.015,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.14,0.17,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65,0.70,0.72,0.74,0.76,0.80,0.85,0.90,0.95,1.00,1.10,1.20,1.30,1.40,1.50,1.75,2.00,2.25,2.50,3.00,3.50,4.00,5.00,6.00,7.00,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.5,25.0,27.5,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,1000.,1200.,1500.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6.0D3,7.0D3,8.0D3,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,1.D9]
      YEL=[37.4,34.6,31.8,29.9,28.4,26.6,24.1,22.2,19.1,16.8,14.9,13.4,12.1,11.0,10.0,9.15,7.71,6.56,5.21,4.38,3.22,2.31,1.75,1.30,1.04,0.83,0.65,0.60,0.58,0.58,0.59,0.60,0.62,0.66,0.73,0.81,0.90,0.98,1.17,1.41,1.66,1.96,2.25,3.14,3.99,4.74,5.62,7.66,9.59,12.0,16.0,20.1,23.0,25.9,27.2,28.1,28.2,28.2,27.5,26.6,25.7,24.2,22.0,20.5,19.3,17.4,15.8,14.9,12.9,11.7,10.8,9.88,8.85,8.00,7.12,6.44,5.84,5.08,4.38,4.15,3.70,3.56,3.15,2.90,2.62,2.44,2.25,2.20,1.92,1.72,1.61,1.41,1.40,1.28,1.13,1.06,.951,.895,.826,.798,.744,.668,.617,.526,.450,.396,.354,.321,.272,.237,
      # SMOOTH JOIN TO SALVAT BETWEEN E=10**5 AND 2*10**5 EV.211,.191,.161,.141,.114,.0973,.0817,.0709,.0630,.0568,.0504,.0461,.0430,.0408,.0390,.0376,.0356,.0342,.0332,.0324,.0318,.0308,.0301,.0297,.0294,.0290,.0288,.0286,.0285,.0284,.0284,.0283,.0283,.0283,.0282,.0282,.0282,.0282,.0282,.0282,.0282/
      # ELASTIC ANGULAR DISTRIBUTION (EPSILON)
      XEPS=[0.00,.001,.003,.005,.007,.010,.015,.020,.030,.040,0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.14,0.17,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.52,0.54,0.55,0.56,0.60,0.65,0.70,0.72,0.74,0.76,0.80,0.85,0.90,0.95,1.00,1.10,1.20,1.30,1.40,1.50,1.75,2.00,2.25,2.50,3.00,3.50,4.00,5.20,5.60,6.00,6.50,7.00,7.50,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,22.5,25.0,27.5,30.0,35.0,40.0,45.0,50.0,60.0,70.0,75.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,1000.,1200.,1250.,1500.,1750.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC ANGULAR DISTRIBUTION PARAMETER EPSILON
      # EPSILON= 1.0-YEPS
      YEPS=[1.,.935,.9152,.8999,.8841,.8652,.8452,.8187,.7822,.7445,.7225,.6926,.6611,.6378,.6066,.5887,.5459,.5096,.4533,.3720,.2822,.2221,.1554,.1082,.0662,.0445,.0416,.0417,.0432,.0442,.0561,.0948,.1626,.1941,.2313,.2662,.3416,.4243,.5002,.5662,.6269,.6968,.7276,.7502,.7506,.7627,.7454,.7730,.7714,.7703, .7468,.7483,.6947,.6838,.6672,.6508,.6610,.6625,.6480,.6128,.5511,.4952,.4485,.3897,.3447,.3034,.2581,.2253,.1925,.1585,.1198,.1009,.0890,.0780,.0712,.0608,.0537,.0483,.0480,.0536,   .0567,.0618,.0706,.0804,.0796,.0878,.0848,.0888,.0784,.0810,.0713,.0697,.0695,.0691,.0694,.0663,.0578,.0560,.0481,.0407, .0394,.0346,.0244,.0213,.0177,.0157,.0139,.0126,.0110,.0090,  .0086,.0074,.0065,.0058,.0045,.0037,.0031,.0027,.0023,.0017,.0015,.00126,9.84e-4,8.03e-4,5.85e-4,4.56e-4,3.64e-4,3.04e-4,2.60e-4,2.28e-4,1.746e-4,1.395e-4,1.149e-4,9.68e-5,8.30e-5,7.22e-5,5.64e-5,4.55e-5,3.76e-5,3.17e-5,2.72e-5,1.91e-5,1.43e-5,1.12e-5,9.02e-6,6.21e-6,4.54e-6,3.47e-6,2.74e-6,2.22e-6,1.83e-6,1.31e-6,9.90e-7,7.67e-7,6.15e-7,5.03e-7,3.28e-7,2.31e-7,1.71e-7,1.32e-7,8.46e-8,5.88e-8,4.31e-8,3.29e-8,2.58e-8,2.08e-8,1.43e-8,1.03e-8,7.80e-9,6.10e-9,4.87e-9,3.04e-9,2.07e-9,1.49e-9,1.12e-9,7.0D-10,4.8D-10,3.5D-10,2.6D-10,2.0D-10,1.6D-10,1.1D-10,8.1D-11,6.1D-11,4.7D-11,3.8D-11]
      # IONISATION ( VALUES ABOVE 1OKEV GENERATED BY BORN BETHE IN SUB)        
      XION=[13.9996,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,   19.0,19.5,20.0,21.0,22.0,23.0,24.0,26.0,28.0,30.0,                32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,                70.0,80.0,90.0,100.,120.,140.,160.,180.,200.,250.,                300.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,             1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.]                                   
      # GROSS IONISATION
      YION=[0.00,.078,.160,.255,.360,.450,.552,.655,.766,.878,      .980,1.09,1.20,1.34,1.53,1.63,1.84,2.19,2.43,2.66,                2.86,3.02,3.15,3.27,3.37,3.55,3.73,3.86,3.96,4.06,                4.09,4.15,4.13,4.09,3.97,3.79,3.63,3.47,3.34,3.02,                2.76,2.37,2.07,1.86,1.69,1.53,1.42,1.31,1.15,1.03,                .930,.854,.781,.667,.579,.510,.458,.415,.387,.356,.332,.293,.264,.240,.219]
      # COUNTING IONISATION 
      YINC=[0.00,.078,.160,.255,.360,.450,.552,.655,.766,.878,      .980,1.09,1.20,1.34,1.53,1.63,1.84,2.19,2.43,2.66,                2.86,3.02,3.15,3.27,3.37,3.53,3.64,3.72,3.77,3.83,                3.83,3.84,3.81,3.76,3.62,3.46,3.31,3.17,3.05,2.75,                2.50,2.12,1.84,1.65,1.49,1.34,1.25,1.14,.995,.886,                .795,.726,.664,.567,.492,.434,.389,.353,.329,.303,.282,.249,.224,.204,.186]
      # IONISATION CHARGE STATE =1
      YIN1=[0.00,.078,.160,.255,.360,.450,.552,.655,.766,.878,      .980,1.09,1.20,1.34,1.53,1.63,1.84,2.19,2.43,2.66,                2.86,3.02,3.15,3.27,3.37,3.51,3.55,3.58,3.57,3.60,                3.57,3.53,3.49,3.44,3.30,3.16,3.02,2.90,2.79,2.51,                2.29,1.93,1.67,1.49,1.34,1.21,1.12,1.03,.896,.798,                .716,.654,.598,.511,.443,.391,.350,.318,.296,.273,.254,.224,.202,.184,.168]
      # IONISATION CHARGE STATE =2
      XIN2=[38.35944,45.0,50.0,55.0,60.0,65.0,70.0,80.0,90.0,100.,120.,140.,160.,180.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.]                                   
      YIN2=[0.0,.0256,.0850,.141,.194,.233,.262,.307,.315,.318,.311,.283,.265,.246,.230,.197,.173,.143,.120,.106,.0958,.0850,.0790,.0699,.0610,.0543,.0487,.0445,.0407,.0348,.0302,.0266,.0238,.0216,.0202,.0186,.0173,.0153,.0137,.0125,.0114]
      # IONISATION CHARGE STATE =3
      XIN3=[74.029,80.0,90.0,100.,120.,140.,160.,180.,200.,250.,    300.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,             1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.]                                   
      YIN3=[0.0,.001,.0036,.0071,.0168,.0216,.0258,.0287,.0303,.0343,.0364,.0390,.0393,.0383,.0382,.0360,.0351,.0332,.0290,.0258,     .0231,.0211,.0193,.0165,.0143,.0126,.0113,.0103,.00957,.00882,.00821,.00725,.00652,.00594,.00541]
      # IONISATION CHARGE STATE =4
      XIN4=[124.88,140.,160.,180.,190.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.]                                   
      YIN4=[0.0,.000001,.0001,.0004,.00083,.00123,.00332,.00506,.00835,.00938,.0102,.0101,.00991,.00984,.00940,.00816,.00727,.00652,.00595,.00544,.00465,.00403,.00356,.00319,.00289,.00270,.00248,.00231,.00204,.00184,.00167,.00153]
      # K-SHELL IONISATION
      XKSH=[14327.26,14585.,15010.,15447.,15896.,16360.,16835.,17325.,17830.,18349.,18882.,19432.,2.00D4,2.06D4,2.18D4,2.31D4,2.45D4,2.59D4,2.74D4,2.91'%.3f' %.08'%.3f' %.26'%.3f' %.55'%.3f' %.87D4,4.22D4,4.60D4,5.02D4,5.47D4,6.13D4,6.88D4,7.72D4,8.66D4,1.00D5,1.15D5,1.33D5,1.54D5,1.78D5,2.05D5,2.37D5,2.74'%.3f' %.16'%.3f' %.76D5,4.47D5,5.31D5,7.08D5,8.17D5,1.00D6,1.22D6,1.45D6,1.73D6,2.00D6,2.51'%.3f' %.07D6,4.00D6,5.01D6,6.13D6,8.18D6,1.00D7,1.45D7,2.05D7,2.99D7,4.10D7,5.01D7,6.13D7,8.18D7,1.00D8,1.45D8,2.05D8,2.99D8,4.10D8,5.01D8,6.13D8,8.18D8,1.00D9]
      YKSH=[0.0,6.61e-8,1.68e-7,2.66e-7,3.58e-7,4.46e-7,5.30e-7,6.10e-7,6.86e-7,7.57e-7,8.26e-7,8.91e-7,9.52e-7,1.01e-6,1.12e-6,1.21e-6,1.30e-6,1.37e-6,1.44e-6,1.50e-6,1.55e-6,1.59e-6,1.64e-6,1.68e-6,1.71e-6,1.72e-6,1.73e-6,1.72e-6,1.70e-6,1.67e-6,1.64e-6,1.60e-6,1.54e-6,1.47e-6,1.41e-6,1.35e-6,1.29e-6,1.24e-6,1.19e-6,1.15e-6,1.11e-6,1.08e-6,1.05e-6,1.03e-6,1.02e-6,1.02e-6,1.03e-6,1.04e-6,1.06e-6,1.09e-6,1.11e-6,1.16e-6,1.20e-6,1.25e-6,1.31e-6,1.36e-6,1.43e-6,1.48e-6,1.58e-6,1.68e-6,1.78e-6,1.87e-6,1.92e-6,1.98e-6,2.06e-6,2.11e-6,2.22e-6,2.31e-6,2.41e-6,2.50e-6,2.56e-6,2.61e-6,2.69e-6,2.75e-6]
      # L1-SHELL IONISATION
      XL1S=[1921.0,1956.6,2013.2,2071.4,2131.4,2193.,2256.,2322.,2389.,2458.,2530.,2680.,2837.,3004.,3181.,3369.,3567.,3777.,4000.,4236.,4616.,5031.,5483.,5976.,6513.,7098.,7737.,8433.,9192.,1.00D4,1.15D4,1.33D4,1.54D4,1.78D4,2.05D4,2.44D4,2.90'%.3f' %.45D4,4.10D4,5.01D4,6.13D4,7.50D4,8.91D4,1.00D5,1.22D5,1.50D5,1.83D5,2.24D5,2.82'%.3f' %.55D5,4.47D5,5.79D5,7.50D5,1.00D6,1.22D6,1.45D6,1.73D6,2.00D6,2.51'%.3f' %.07D6,4.00D6,5.01D6,6.13D6,8.18D6,1.00D7,1.50D7,2.05D7,2.51'%.3f' %.07D7,4.10D7,5.16D7,6.13D7,8.18D7,1.00D8,1.50D8,2.05D8,2.51'%.3f' %.07D8,4.10D8,5.16D8,6.13D8,8.18D8,1.00D9]
      YL1S=[0.0,3.47e-6,8.56e-6,1.34e-5,1.80e-5,2.23e-5,2.65e-5,3.04e-5,3.41e-5,3.76e-5,4.10e-5,4.71e-5,5.27e-5,5.76e-5,6.19e-5,6.58e-5,6.91e-5,7.20e-5,7.44e-5,7.65e-5,7.88e-5,8.04e-5,8.12e-5,8.15e-5,8.11e-5,8.03e-5,7.90e-5,7.74e-5,7.55e-5,7.33e-5,6.93e-5,6.49e-5,6.04e-5,5.59e-5,5.14e-5,4.64e-5,4.17e-5,3.74e-5,3.35e-5,2.94e-5,2.59e-5,2.28e-5,2.05e-5,1.91e-5,1.70e-5,1.52e-5,1.38e-5,1.26e-5,1.14e-5,1.06e-5,9.97e-6,9.49e-6,9.21e-6,9.08e-6,9.10e-6,9.16e-6,9.27e-6,9.39e-6,9.62e-6,9.86e-6,1.02e-5,1.05e-5,1.09e-5,1.13e-5,1.17e-5,1.24e-5,1.29e-5,1.33e-5,1.36e-5,1.42e-5,1.46e-5,1.49e-5,1.54e-5,1.58e-5,1.65e-5,1.71e-5,1.74e-5,1.78e-5,1.83e-5,1.88e-5,1.91e-5,1.96e-5,2.00e-5]
      # L2-SHELL IONISATION
      XL2S=[1730.9,1780.7,1832.6,1886.,1941.,1998.,2056.,2116.,2178.,2241.,2306.,2373.,2443.,2514.,2663.,2820.,2987.,3164.,3352.,3550.,3870.,4219.,4734.,5311.,5959.,6685.,7500.,8660.,1.00D4,1.15D4,1.33D4,1.54D4,1.78D4,2.05D4,2.44D4,2.90'%.3f' %.45D4,4.10D4,5.01D4,6.13D4,7.50D4,8.91D4,1.00D5,1.22D5,1.50D5,1.83D5,2.24D5,2.82'%.3f' %.55D5,4.47D5,5.79D5,7.50D5,1.00D6,1.22D6,1.45D6,1.73D6,2.00D6,2.51'%.3f' %.07D6,4.00D6,5.01D6,6.13D6,8.18D6,1.00D7,1.45D7,2.05D7,2.51'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,8.18D7,1.00D8,1.45D8,2.05D8,2.51'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,8.18D8,1.00D9]
      YL2S=[0.0,9.21e-6,1.81e-5,2.65e-5,3.45e-5,4.20e-5,4.92e-5,5.59e-5,6.22e-5,6.81e-5,7.36e-5,7.88e-5,8.37e-5,8.82e-5,9.63e-5,1.03e-4,1.09e-4,1.14e-4,1.18e-4,1.22e-4,1.26e-4,1.28e-4,1.30e-4,1.30e-4,1.29e-4,1.26e-4,1.23e-4,1.17e-4,1.11e-4,1.04e-4,9.74e-5,9.04e-5,8.35e-5,7.69e-5,6.95e-5,6.27e-5,5.64e-5,5.06e-5,4.46e-5,3.93e-5,3.47e-5,3.12e-5,2.92e-5,2.60e-5,2.33e-5,2.11e-5,1.93e-5,1.77e-5,1.64e-5,1.55e-5,1.48e-5,1.44e-5,1.42e-5,1.43e-5,1.44e-5,1.46e-5,1.48e-5,1.52e-5,1.57e-5,1.63e-5,1.69e-5,1.74e-5,1.82e-5,1.88e-5,1.99e-5,2.09e-5,2.15e-5,2.21e-5,2.30e-5,2.36e-5,2.43e-5,2.51e-5,2.58e-5,2.69e-5,2.80e-5,2.86e-5,2.92e-5,3.01e-5,3.08e-5,3.14e-5,3.23e-5,3.29e-5]
      # L3-SHELL IONISATION
      XL3S=[1678.4,1684.5,1733.6,1784.,1836.,1889.,1944.,2001.,2059.,2119.,2181.,2244.,2310.,2377.,2447.,2518.,2667.,2824.,2991.,3168.,3356.,3554.,3874.,4223.,4738.,5315.,5963.,6689.,7506.,8666.,1.00D4,1.15D4,1.33D4,1.54D4,1.78D4,2.05D4,2.44D4,2.90'%.3f' %.45D4,4.10D4,5.01D4,6.13D4,7.50D4,8.91D4,1.00D5,1.22D5,1.50D5,1.83D5,2.24D5,2.82'%.3f' %.55D5,4.47D5,5.79D5,7.50D5,1.00D6,1.22D6,1.45D6,1.73D6,2.00D6,2.51'%.3f' %.07D6,4.00D6,5.01D6,6.13D6,8.18D6,1.00D7,1.50D7,2.05D7,2.51'%.3f' %.07D7,4.10D7,5.16D7,6.31D7,8.18D7,1.00D8,1.50D8,2.05D8,2.51'%.3f' %.07D8,4.10D8,5.16D8,6.31D8,8.18D8,1.00D9]
      YL3S=[0.0,2.31e-6,2.23e-5,4.13e-5,5.91e-5,7.64e-5,9.25e-5,1.08e-4,1.22e-4,1.36e-4,1.48e-4,1.60e-4,1.71e-4,1.82e-4,1.91e-4,2.00e-4,2.16e-4,2.30e-4,2.42e-4,2.52e-4,2.60e-4,2.66e-4,2.73e-4,2.78e-4,2.80e-4,2.79e-4,2.75e-4,2.69e-4,2.61e-4,2.49e-4,2.35e-4,2.21e-4,2.06e-4,1.91e-4,1.76e-4,1.62e-4,1.46e-4,1.32e-4,1.18e-4,1.06e-4,9.34e-5,8.22e-5,7.25e-5,6.53e-5,6.10e-5,5.43e-5,4.88e-5,4.41e-5,4.03e-5,3.69e-5,3.42e-5,3.22e-5,3.08e-5,2.99e-5,2.96e-5,2.97e-5,3.00e-5,3.04e-5,3.08e-5,3.17e-5,3.25e-5,3.38e-5,3.50e-5,3.61e-5,3.77e-5,3.89e-5,4.13e-5,4.33e-5,4.46e-5,4.58e-5,4.77e-5,4.91e-5,5.04e-5,5.21e-5,5.34e-5,5.59e-5,5.80e-5,5.93e-5,6.06e-5,6.24e-5,6.39e-5,6.52e-5,6.68e-5,6.81e-5]
      # M1-SHELL IONISATION
      XM1S=[292.8,295.7,303.9,312.4,321.1,330.1,339.3,348.8,358.6,368.7,389.7,412.0,435.5,460.5,487.0,515.0,544.7,576.1,609.5,644.8,682.0,742.0,808.0,880.0,1014.,1164.,1344.,1554.,1794.,2064.,2454.,2914.,3464.,4234.,5174.,6324.,7514.,8674.,1.00D4,1.22D4,1.50D4,1.88D4,2.37D4,2.99'%.3f' %.87D4,4.87D4,5.96D4,7.08D4,8.66D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37D5,2.99'%.3f' %.87D5,4.87D5,5.96D5,7.08D5,8.66D5,1.00D6,1.22D6,1.50D6,1.88D6,2.37D6,2.99'%.3f' %.87D6,4.87D6,5.96D6,7.08D6,8.66D6,1.00D7,1.22D7,1.63D7,2.05D7,2.51'%.3f' %.07D7,4.10D7,5.16D7,6.31D7,8.66D7,1.00D8,1.50D8,2.05D8,2.51'%.3f' %.07D8,4.10D8,5.16D8,6.31D8,8.66D8,1.00D9]
      YM1S=[0.0,3.29e-5,1.10e-4,1.89e-4,2.72e-4,3.57e-4,4.44e-4,5.32e-4,6.20e-4,7.09e-4,8.86e-4,1.06e-3,1.23e-3,1.39e-3,1.54e-3,1.67e-3,1.80e-3,1.91e-3,2.02e-3,2.10e-3,2.18e-3,2.27e-3,2.33e-3,2.37e-3,2.38e-3,2.35e-3,2.27e-3,2.17e-3,2.04e-3,1.91e-3,1.75e-3,1.58e-3,1.42e-3,1.25e-3,1.09e-3,9.49e-4,8.38e-4,7.53e-4,6.77e-4,5.80e-4,4.96e-4,4.15e-4,3.46e-4,2.89e-4,2.37e-4,1.99e-4,1.71e-4,1.51e-4,1.31e-4,1.19e-4,1.05e-4,9.27e-5,8.16e-5,7.29e-5,6.60e-5,6.02e-5,5.65e-5,5.41e-5,5.26e-5,5.15e-5,5.09e-5,5.06e-5,5.07e-5,5.11e-5,5.19e-5,5.29e-5,5.43e-5,5.57e-5,5.70e-5,5.82e-5,5.96e-5,6.07e-5,6.22e-5,6.43e-5,6.61e-5,6.76e-5,6.92e-5,7.14e-5,7.32e-5,7.48e-5,7.72e-5,7.84e-5,8.15e-5,8.40e-5,8.56e-5,8.72e-5,8.95e-5,9.13e-5,9.29e-5,9.54e-5,9.65e-5]
      # M2-SHELL IONISATION
      XM2S=[222.2,224.1,230.5,237.0,243.7,250.7,257.8,265.1,272.7,280.5,288.4,305.1,322.8,341.6,361.4,382.4,404.7,428.3,453.3,479.8,508.0,553.0,602.0,656.0,715.0,778.0,848.0,924.0,1007.,1157.,1337.,1547.,1787.,2057.,2377.,2747.,3167.,3767.,4607.,5627.,6687.,7727.,8667.,1.00D4,1.22D4,1.50D4,1.83D4,2.37D4,2.90'%.3f' %.76D4,5.01D4,6.49D4,7.72D4,8.66D4,1.00D5,1.22D5,1.50D5,1.78D5,2.05D5,2.37D5,2.74'%.3f' %.25'%.3f' %.98D5,4.87D5,5.96D5,7.29D5,8.66D5,1.00D6,1.22D6,1.50D6,2.05D6,2.99'%.3f' %.87D6,4.87D6,5.96D6,7.08D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.99'%.3f' %.87D7,4.87D7,5.96D7,7.08D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.99'%.3f' %.87D8,4.87D8,5.96D8,7.08D8,8.66D8,1.00D9]
      YM2S=[0.0,4.89e-5,1.82e-4,3.18e-4,4.56e-4,5.95e-4,7.35e-4,8.75e-4,1.01e-3,1.15e-3,1.29e-3,1.56e-3,1.82e-3,2.07e-3,2.31e-3,2.53e-3,2.74e-3,2.93e-3,3.11e-3,3.27e-3,3.41e-3,3.59e-3,3.74e-3,3.84e-3,3.92e-3,3.96e-3,3.97e-3,3.96e-3,3.92e-3,3.81e-3,3.65e-3,3.46e-3,3.25e-3,3.02e-3,2.80e-3,2.57e-3,2.35e-3,2.10e-3,1.83e-3,1.58e-3,1.39e-3,1.25e-3,1.14e-3,1.02e-3,8.74e-4,7.46e-4,6.36e-4,5.18e-4,4.42e-4,3.61e-4,2.90e-4,2.39e-4,2.12e-4,1.95e-4,1.77e-4,1.56e-4,1.38e-4,1.25e-4,1.16e-4,1.08e-4,1.02e-4,9.52e-5,8.89e-5,8.42e-5,8.06e-5,7.82e-5,7.68e-5,7.60e-5,7.56e-5,7.57e-5,7.68e-5,7.91e-5,8.13e-5,8.34e-5,8.54e-5,8.72e-5,8.94e-5,9.10e-5,9.32e-5,9.55e-5,9.91e-5,1.04e-4,1.07e-4,1.09e-4,1.12e-4,1.14e-4,1.16e-4,1.18e-4,1.20e-4,1.23e-4,1.26e-4,1.31e-4,1.34e-4,1.37e-4,1.39e-4,1.41e-4,1.44e-4,1.45e-4]
      # M3-SHELL IONISATION
      XM3S=[214.4,218.8,225.0,231.3,237.9,244.6,251.5,258.6,266.0,273.5,281.3,289.3,306.0,323.7,342.4,362.3,383.3,405.6,429.2,454.2,481.0,509.0,554.0,603.0,657.0,715.0,779.0,849.0,925.0,1007.,1157.,1337.,1547.,1787.,2057.,2377.,2747.,3167.,3767.,4607.,5627.,6687.,7727.,8667.,1.00D4,1.22D4,1.50D4,1.83D4,2.37D4,2.90'%.3f' %.76D4,5.01D4,6.49D4,7.72D4,8.66D4,1.00D5,1.22D5,1.50D5,1.78D5,2.05D5,2.37D5,2.74'%.3f' %.25'%.3f' %.98D5,4.87D5,5.96D5,7.29D5,8.66D5,1.00D6,1.22D6,1.50D6,2.05D6,2.99'%.3f' %.87D6,4.87D6,5.96D6,7.08D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.99'%.3f' %.87D7,4.87D7,5.96D7,7.08D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.99'%.3f' %.87D8,4.87D8,5.96D8,7.08D8,8.66D8,1.00D9]
      YM3S=[0.0,2.05e-4,4.91e-4,7.83e-4,1.08e-3,1.38e-3,1.68e-3,1.98e-3,2.28e-3,2.58e-3,2.87e-3,3.17e-3,3.74e-3,4.29e-3,4.81e-3,5.31e-3,5.78e-3,6.21e-3,6.61e-3,6.98e-3,7.31e-3,7.60e-3,7.97e-3,8.27e-3,8.48e-3,8.62e-3,8.70e-3,8.71e-3,8.66e-3,8.56e-3,8.30e-3,7.94e-3,7.51e-3,7.04e-3,6.55e-3,6.04e-3,5.55e-3,5.08e-3,4.53e-3,3.94e-3,3.40e-3,3.00e-3,2.69e-3,2.46e-3,2.20e-3,1.88e-3,1.61e-3,1.37e-3,1.12e-3,9.53e-4,7.79e-4,6.26e-4,5.17e-4,4.57e-4,4.22e-4,3.83e-4,3.37e-4,2.98e-4,2.71e-4,2.52e-4,2.35e-4,2.20e-4,2.06e-4,1.93e-4,1.82e-4,1.75e-4,1.69e-4,1.66e-4,1.65e-4,1.64e-4,1.64e-4,1.67e-4,1.72e-4,1.77e-4,1.81e-4,1.86e-4,1.90e-4,1.95e-4,1.98e-4,2.03e-4,2.08e-4,2.16e-4,2.26e-4,2.32e-4,2.38e-4,2.44e-4,2.48e-4,2.54e-4,2.57e-4,2.63e-4,2.68e-4,2.76e-4,2.86e-4,2.93e-4,2.99e-4,3.04e-4,3.09e-4,3.14e-4,3.18e-4]
      # M4-SHELL IONISATION
      XM4S=[95.0,96.83,99.67,102.6,105.6,108.7,111.9,115.2,118.5,122.0,125.6,133.0,141.0,149.3,158.2,167.5,177.5,188.0,199.2,211.0,223.5,243.7,265.7,289.8,315.9,344.4,375.5,409.4,446.4,486.7,546.1,612.8,687.6,771.5,866.0,1000.,1150.,1330.,1540.,1780.,2050.,2370.,2740.,3160.,3760.,4600.,5620.,6680.,7720.,8660.,1.00D4,1.22D4,1.50D4,1.83D4,2.37D4,2.90'%.3f' %.76D4,5.01D4,6.49D4,7.72D4,8.66D4,1.00D5,1.22D5,1.50D5,1.78D5,2.05D5,2.37D5,2.74'%.3f' %.25'%.3f' %.98D5,4.87D5,5.96D5,7.29D5,8.66D5,1.00D6,1.22D6,1.50D6,2.05D6,2.99'%.3f' %.87D6,4.87D6,5.96D6,7.08D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.99'%.3f' %.87D7,4.87D7,5.96D7,7.08D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.99'%.3f' %.87D8,4.87D8,5.96D8,7.08D8,8.66D8,1.00D9]
      YM4S=[0.0,1.08e-3,2.62e-3,4.04e-3,5.37e-3,6.62e-3,7.79e-3,8.90e-3,9.96e-3,1.10e-2,1.20e-2,1.38e-2,1.56e-2,1.73e-2,1.90e-2,2.06e-2,2.22e-2,2.37e-2,2.52e-2,2.67e-2,2.80e-2,3.00e-2,3.18e-2,3.34e-2,3.47e-2,3.58e-2,3.66e-2,3.72e-2,3.76e-2,3.77e-2,3.74e-2,3.69e-2,3.60e-2,3.48e-2,3.35e-2,3.17e-2,2.98e-2,2.78e-2,2.58e-2,2.39e-2,2.20e-2,2.02e-2,1.85e-2,1.68e-2,1.49e-2,1.30e-2,1.12e-2,9.90e-3,8.90e-3,8.16e-3,7.32e-3,6.28e-3,5.38e-3,4.60e-3,3.77e-3,3.23e-3,2.66e-3,2.15e-3,1.79e-3,1.58e-3,1.47e-3,1.33e-3,1.18e-3,1.05e-3,9.54e-4,8.87e-4,8.30e-4,7.82e-4,7.33e-4,6.88e-4,6.54e-4,6.29e-4,6.12e-4,6.03e-4,5.99e-4,5.99e-4,6.02e-4,6.15e-4,6.39e-4,6.60e-4,6.81e-4,6.99e-4,7.16e-4,7.37e-4,7.52e-4,7.73e-4,7.94e-4,8.28e-4,8.69e-4,8.98e-4,9.24e-4,9.46e-4,9.65e-4,9.88e-4,1.00e-3,1.03e-3,1.05e-3,1.08e-3,1.13e-3,1.16e-3,1.18e-3,1.20e-3,1.22e-3,1.25e-3,1.26e-3]
      # M5-SHELL IONISATION
      XM5S=[93.8,94.3,97.0,99.9,102.8,105.8,108.9,112.1,115.3,118.7,122.2,125.8,133.2,141.1,149.5,158.4,167.8,177.7,188.2,199.4,211.2,223.7,243.9,266.0,290.0,316.0,345.0,376.0,410.0,446.0,487.0,546.0,613.0,688.0,772.0,866.0,1000.,1150.,1330.,1540.,1780.,2050.,2370.,2740.,3160.,3760.,4600.,5620.,6680.,7720.,8660.,1.00D4,1.22D4,1.50D4,1.83D4,2.37D4,2.90'%.3f' %.76D4,5.01D4,6.49D4,7.72D4,8.66D4,1.00D5,1.22D5,1.50D5,1.78D5,2.05D5,2.37D5,2.74'%.3f' %.25'%.3f' %.98D5,4.87D5,5.96D5,7.29D5,8.66D5,1.00D6,1.22D6,1.50D6,2.05D6,2.99'%.3f' %.87D6,4.87D6,5.96D6,7.08D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.99'%.3f' %.87D7,4.87D7,5.96D7,7.08D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.99'%.3f' %.87D8,4.87D8,5.96D8,7.08D8,8.66D8,1.00D9]
      YM5S=[0.0,4.52e-4,2.91e-3,5.18e-3,7.29e-3,9.26e-3,1.11e-2,1.29e-2,1.45e-2,1.61e-2,1.76e-2,1.91e-2,2.19e-2,2.46e-2,2.72e-2,2.97e-2,3.22e-2,3.46e-2,3.69e-2,3.92e-2,4.14e-2,4.35e-2,4.65e-2,4.92e-2,5.15e-2,5.35e-2,5.52e-2,5.64e-2,5.73e-2,5.77e-2,5.78e-2,5.74e-2,5.65e-2,5.51e-2,5.33e-2,5.13e-2,4.85e-2,4.55e-2,4.25e-2,3.95e-2,3.66e-2,3.37e-2,3.08e-2,2.82e-2,2.56e-2,2.28e-2,1.98e-2,1.71e-2,1.51e-2,1.36e-2,1.24e-2,1.11e-2,9.56e-3,8.19e-3,7.01e-3,5.74e-3,4.92e-3,4.05e-3,3.27e-3,2.72e-3,2.41e-3,2.23e-3,2.03e-3,1.79e-3,1.59e-3,1.45e-3,1.35e-3,1.26e-3,1.19e-3,1.11e-3,1.05e-3,9.94e-4,9.56e-4,9.31e-4,9.18e-4,9.12e-4,9.10e-4,9.16e-4,9.36e-4,9.72e-4,1.00e-3,1.03e-3,1.06e-3,1.09e-3,1.12e-3,1.14e-3,1.17e-3,1.21e-3,1.26e-3,1.32e-3,1.37e-3,1.40e-3,1.44e-3,1.47e-3,1.50e-3,1.53e-3,1.56e-3,1.59e-3,1.65e-3,1.71e-3,1.76e-3,1.80e-3,1.83e-3,1.86e-3,1.89e-3,1.92e-3]
      # 1S5  METASTABLE   E=9.91523166 EV  J=2
      #      SHAPE def BELOW 50 EV FROM BARTSCHAT AND ZATSARINNY
      #      ABOVE 50 EV SCALED BY 1/E**3
      X1S5=[9.9152,9.932,9.959,9.973,9.987,10.000,10.027,10.034,10.041,10.048,10.055,10.068,10.082,10.095,10.109,10.123,10.136,10.150,10.163,10.177,10.184,10.191,10.204,10.218,10.231,10.245,10.259,10.313,10.367,10.422,10.476,10.531,10.585,10.612,10.640,10.646,10.653,10.667,10.680,10.694,10.708,10.816,10.925,11.034,11.089,11.143,11.197,11.225,11.252,11.263,11.265,11.268,11.271,11.272,11.274,11.275,11.276,11.279,11.282,11.284,11.287,11.293,11.295,11.298,11.301,11.306,11.309,11.313,11.320,11.327,11.334,11.340,11.347,11.354,11.361,11.367,11.374,11.381,11.388,11.395,11.402,11.415,11.429,11.442,11.456,11.470,11.483,11.497,11.510,11.524,11.538,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.701,11.755,11.796,11.851,11.905,11.959,11.973,11.976,11.980,11.984,11.986,11.989,11.993,12.000,12.007,12.014,12.017,12.021,12.027,12.041,12.068,12.095,12.150,12.204,12.259,12.304,12.367,12.422,12.476,12.531,12.585,12.640,12.694,12.748,12.803,12.871,12.925,12.993,13.075,13.197,13.334,13.470,13.578,13.742,14.014,14.558,15.102,15.646,16.191,16.735,17.279,17.959,19.048,20.0,21.0,22.0,24.0,27.0,30.0,35.0,40.0,50.0]
      Y1S5=[0.00,1.10,2.18,2.87,3.63,4.38,5.69,6.09,6.58,4.84,3.88,3.18,2.69,2.46,2.40,2.44,2.62,3.01,4.01,6.71,7.86,6.60,3.55,2.67,2.42,2.35,2.35,2.54,2.84,3.19,3.58,4.02,4.42,4.70,5.05,5.19,5.39,5.33,5.29,5.42,5.54,6.42,7.20,7.63,7.68,7.57,7.21,6.83,6.10,5.64,5.66,6.12,7.67,8.69,9.58,9.36,9.07,8.29,7.66,7.20,6.87,6.53,6.64,7.25,8.85,9.99,8.47,7.04,5.99,5.69,5.16,5.23,5.49,6.00,6.85,8.06,9.28,9.92,9.98,9.87,9.62,8.49,7.26,6.26,5.51,4.81,4.19,3.61,3.03,2.59,2.39,3.10,3.69,3.90,3.97,3.97,3.95,4.03,4.40,5.31,5.79,5.91,5.89,5.71,5.34,5.01,4.83,4.93,5.11,5.21,5.28,5.30,5.04,4.80,4.81,5.16,5.83,5.86,5.72,5.48,5.13,4.97,5.85,6.50,7.12,7.16,6.71,6.28,5.89,5.52,5.65,5.63,5.67,5.41,5.29,5.41,5.60,5.77,5.95,6.00,5.83,5.56,5.55,5.74,5.91,5.94,5.99,6.06,6.11,6.16,6.14,6.01,5.80,6.07,6.73,7.37,7.84,8.23,8.57,8.64,8.20,7.60,7.00,6.04,4.70,3.60,2.30,1.45,0.70]
      YP1S5=[169*0.0]
      # 1S4  E=10.032400 EV  J=1    RESONANCE RADIATION  123.585 NM 
      #     USED  BEF SCALING ABOVE  20 EV    OSC STRENGTH=0.203 
      #     SHAPE def BELOW 20 EV FROM BARTSCHAT AND ZATSARINNY
      X1S4=[10.0324,10.034,10.041,10.048,10.055,10.068,10.082,10.095,10.109,10.123,10.136,10.150,10.163,10.204,10.218,10.231,10.245,10.259,10.286,10.354,10.422,10.490,10.558,10.626,10.680,10.748,10.816,10.884,10.953,11.021,11.089,11.157,11.238,11.252,11.265,11.271,11.274,11.276,11.282,11.287,11.295,11.301,11.306,11.309,11.313,11.320,11.334,11.347,11.361,11.374,11.381,11.388,11.395,11.402,11.415,11.429,11.442,11.456,11.483,11.510, 11.538,11.565,11.592,11.619,11.633,11.644,11.649,11.660,11.674,11.701,11.728,11.755,11.776,11.796,11.823,11.851,11.878,11.905,11.932,11.959,11.976,11.984,11.989,12.000,12.014,12.021,12.041,12.068,12.095,12.191,12.245,12.300,12.354,12.408,12.463,12.517,12.572,12.626,12.680,12.735,12.803,12.871,12.925,12.966,13.061,13.157,13.225,13.279,13.347,13.402,13.497,13.606,13.878,14.150,14.422,14.694,14.966,15.238,15.510,15.783,16.055,16.327,16.599,16.871,17.143,17.415,17.687,17.959,19.048,20.000]
      Y1S4=[0.00,0.69,2.81,5.49,8.19,6.82,5.53,5.15,5.23,5.74,6.94,9.75,17.4,17.8,9.03,5.97,4.62,3.93,3.42,2.97,3.07,3.35,3.74,4.37,4.81,5.24,5.75,6.37,6.89,7.33,7.66,7.83,7.61,7.46,7.20,7.79,8.62,8.45,8.03,7.78,7.78,8.89,9.48,8.73,8.03,7.38,7.09,7.08,7.79,9.35,9.77,9.75,9.60,9.37,8.58,7.64,6.70,6.56,6.73,6.48,6.23,7.15,7.57,7.95,8.35,8.28,8.02,7.80,7.88,8.06,8.16,8.25,8.31,8.36,8.43,8.49,8.55,8.59,8.62,8.60,9.09,9.57,9.09,8.89,10.0,10.2,9.21,8.96,8.70,9.02,9.25,9.71,9.84,9.76,9.75,9.90,10.1,10.3,10.4,10.8,10.6,10.8,10.8,10.8,10.7,11.0,11.2,11.4,11.5,11.6,11.6,11.8,11.7,11.5,11.4,11.6,12.0,12.5,13.1,13.8,14.5,15.2,15.8,16.4,17.0,17.9,18.9,20.1,22.4,23.7]
      YP1S4=[130*0.0]
      # 1S3  METASTABLE E=10.56241436 EV J=0 
      #      SHAPE def BELOW  50 EV FROM BARTSCHAT AND ZATSARINNY
      #      SCALED BY 1/E**3 ABOVE 50 EV
      X1S3=[10.5624,10.572,10.585,10.599,10.612,10.626,10.640,10.646,10.653,10.667,10.680,10.694,10.708,10.735,10.762,10.789,10.816,10.844,10.871,10.898,10.925,10.953,10.980,11.007,11.034,11.061,11.089,11.116,11.143,11.170,11.197,11.225,11.252,11.263,11.265,11.268,11.271,11.272,11.274,11.275,11.276,11.279,11.282,11.284,11.287,11.293,11.295,11.298,11.301,11.306,11.309,11.313,11.320,11.327,11.334,11.340,11.347,11.354,11.361,11.367,11.374,11.381,11.388,11.395,11.402,11.415,11.429,11.442,11.456,11.470,11.483,11.497,11.510,11.524,11.538,11.551,11.578,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.701,11.728,11.755,11.776,11.796,11.823,11.851,11.878,11.905,11.932,11.959,11.980,11.993,12.000,12.007,12.014,12.017,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.110,12.150,12.163,12.177,12.204,12.231,12.259,12.286,12.313,12.340,12.354,12.381,12.435,12.490,12.544,12.599,12.653,12.708,12.762,12.803,12.871,12.993,13.089,13.157,13.225,13.279,13.347,13.374,13.388,13.402,13.415,13.429,13.470,13.497,13.551,13.878,14.422,14.966,15.510,16.055,16.599,17.143,17.687,19.048,20.408,21.089,22.177,23.130,24.490,26.123,28.572,32.654,38.096,43.538,50.0] 
      Y1S3=[0.00,.255,.560,.671,.508,.377,.265,.211,.263,.459,.428,.360,.330,.316,.320,.330,.344,.362,.375,.392,.411,.428,.448,.468,.488,.509,.529,.547,.564,.577,.581,.568,.511,.555,.674,1.01,1.74,2.09,2.21,2.11,1.91,1.53,1.27,1.11,1.00,.875,.848,.865,.979,1.17,1.07,.944,.815,.921,.792,.744,.718,.702,.698,.717,.780,.891,1.04,1.18,1.28,1.31,1.22,1.14,1.10,1.11,1.13,1.15,1.18,1.24,1.29,1.30,1.27,1.28,1.29,1.29,1.26,1.19,1.16,1.15,1.16,1.18,1.21,1.24,1.24,1.25,1.25,1.25,1.25,1.25,1.24,1.23,1.21,1.18,1.13,1.06,.978,.885,.806,.806,1.15,1.36,1.52,1.47,1.26,1.15,1.04,.937,.816,.706,.412,.403,.444,.520,.609,.644,.686,.687,.729,.782,.840,.889,.919,.939,.951,.934,.915,.916,.921,.969,.993,.914,.919,.956,.989,1.02,1.04,1.05,1.06,1.05,1.02,.936,.938,.947,1.00,1.07,1.07,1.12,1.23,1.30,1.38,1.57,1.86,1.77,1.68,1.54,1.41,1.25,1.10,.906,.656,.422,.275,.172]
      YP1S3=[168*0.0]
      # 1S2  E=10.6436342 EV  J=1   RESONANCE RADIATION  116.487 NM  
      #      USED BEF SCALING ABOVE 20 EV      OSC STRENGTH=0.182    
      #      SHAPE def BELOW 20 EV FROM BARTSCHAT AND ZATSARINNY
      X1S2=[10.6436,10.646,10.653,10.667,10.680,10.694,10.708,10.721,10.748,10.816,10.884,10.953,11.021,11.089,11.157,11.225,11.238,11.252,11.263,11.265,11.268,11.271,11.272,11.274,11.275,11.276,11.279,11.282,11.284,11.287,11.293,11.295,11.298,11.301,11.306,11.309,11.313,11.334,11.367,11.381,11.388,11.395,11.402,11.415,11.429,11.456,11.483,11.510,11.538,11.565,11.592,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.714,11.742,11.762,11.783,11.810,11.837,11.864,11.891,11.918,11.946,11.973,11.980,11.986,11.993,12.000,12.007,12.014,12.017,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.286,12.340,12.395,12.449,12.504,12.558,12.612,12.667,12.721,12.735,12.748,12.762,12.769,12.776,12.789,12.803,12.871,12.884,12.898,12.912,12.925,12.966,12.993,13.061,13.075,13.089,13.129,13.170,13.197,13.238,13.265,13.293,13.334,13.361,13.388,13.402,13.415,13.429,13.470,13.497,13.551,13.606,13.878,14.150,14.422,14.694,14.966,15.238,15.510,15.783,16.055,16.327,16.599,17.959,19.048,20.000] 
      Y1S2=[0.00,.367,1.32,4.25,3.25,2.45,2.09,1.91,1.74,1.66,1.70,1.81,1.98,2.20,2.45,2.72,2.79,2.89,3.35,3.81,4.80,6.47,7.04,6.96,6.49,5.87,4.90,4.36,4.08,3.94,3.91,4.02,4.24,4.53,3.87,3.48,3.28,3.18,3.37,3.58,3.84,4.15,4.40,4.50,4.37,4.26,4.48,4.70,5.09,5.29,5.41,5.58,5.61,5.57,5.35,5.21,5.18,5.18,5.23,5.35,5.46,5.52,5.58,5.66,5.74,5.79,5.83,5.88,5.91,5.91,5.89,5.83,5.69,5.45,5.36,5.18,5.04,4.81,4.67,5.39,5.96,6.52,6.55,6.08,5.77,5.48,5.14,4.66,4.28,3.67,3.80,4.01,4.29,4.50,5.24,5.49,5.77,5.97,6.14,6.27,6.37,6.45,6.53,6.55,6.47,6.32,6.27,6.22,6.16,6.33,6.39,6.50,6.79,6.95,6.97,6.99,6.88,6.76,6.71,6.74,6.86,6.98,7.06,7.18,7.26,7.35,7.49,7.54,7.65,7.68,7.67,7.54,7.44,7.45,7.52,7.58,7.87,8.18,8.29,8.28,8.35,8.58,8.97,9.50,10.1,10.7,11.2,14.3,16.8,18.0]
      YP1S2=[150*0.0]
      # 2P10 E=11.3034545 EV  J=1
      # SHAPE def FROM B  AND Z ABOVE 30 EV SCALED BY 1/E**3
      X2P10=[11.3035,11.306,11.309,11.313,11.320,11.327,11.333,11.340,11.347,11.354,11.361,11.367,11.374,11.381,11.388,11.395,11.402,11.415,11.429,11.442,11.456,11.470,11.483,11.497,11.510,11.524,11.538,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.782,11.796,11.810,11.823,11.837,11.850,11.864,11.878,11.891,11.905,11.919,11.932,11.946,11.959,11.973,11.976,11.980,11.984,11.987,11.989,11.993,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.558,12.612,12.653,12.708,12.748,12.803,12.912,12.966,13.061,13.129,13.252,13.347,13.606,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.0]
      Y2P10=[0.00,0.64,0.96,1.18,1.48,1.74,2.14,2.61,3.13,3.72,4.35,4.87,5.00,4.66,4.16,3.59,2.85,1.39,0.71,0.58,0.52,0.54,0.57,0.62,0.69,0.76,0.78,0.78,0.76,0.75,0.76,0.80,0.92,1.11,1.54,2.19,2.35,2.27,2.12,1.86,1.52,1.29,1.20,1.15,1.11,1.08,1.06,1.04,1.03,1.03,1.02,1.02,1.02,1.01,1.01,1.01,1.02,1.02,1.03,1.04,1.05,1.06,1.08,1.12,1.22,1.70,1.75,1.63,1.22,1.11,1.13,1.22,1.44,1.75,1.84,1.62,1.21,0.87,0.82,0.86,0.91,0.95,1.02,1.12,1.18,1.17,1.14,1.08,1.05,1.06,1.10,1.15,1.15,1.17,1.17,1.18,1.16,1.14,1.12,1.17,1.14,1.13,1.05,1.01,1.01,1.01,1.02,1.04,1.05,1.06,1.07,1.09,1.10,1.16,1.44,1.11,1.11,1.13,1.07,1.16,1.20,1.25,1.29,1.21,1.23,1.60,1.91,2.64,3.57,4.38,5.45,6.53,7.73,8.54,8.17,7.21,6.26,5.26,4.25,3.39,2.45,2.05]
      YP2P10=[142*0.0]
      # 2P9 E=11.4430466 EV J=3
      # SHAPE def FROM B  AND Z ABOVE 30 EV SCALED BY 1/E**3
      X2P9=[11.4430,11.456,11.470,11.483,11.497,11.510,11.524,11.538,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.782,11.796,11.810,11.823,11.837,11.850,11.864,11.878,11.891,11.905,11.919,11.932,11.946,11.959,11.973,11.976,11.980, 11.984,11.987,11.989,11.993,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.558,12.612,12.653,12.748,12.803,12.898,13.061,13.157,13.252,13.497,13.742,14.014,14.996,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000]
      Y2P9=[0.00,0.42,0.67,0.75,0.78,0.83,0.95,1.03,1.09,1.02,1.00,1.02,1.08,1.23,1.38,1.59,1.69,1.54,1.40,1.26,1.10,0.97,0.93,0.96,0.99,1.01,1.02,1.04,1.05,1.06,1.06,1.07,1.07,1.08,1.09,1.10,1.11,1.12,1.13,1.14,1.17,1.16,1.18,1.19,1.21,1.23,1.32,1.35,1.39,1.42,1.44,1.47,1.56,1.90,2.82,4.49,4.71,4.20,3.05,2.15,1.92,1.84,1.82,1.80,1.74,1.98,1.94,1.60,1.64,1.73,1.79,1.86,1.85,1.86,1.84,1.80,1.86,1.96,2.05,2.19,1.86,1.68,1.61,1.60,1.57,1.57,1.58,1.60,1.62,1.64,1.66,1.68,1.76,1.82,1.80,1.76,2.00,1.93,1.92,2.08,2.12,2.13,2.16,2.22,3.50,5.50,6.90,7.83,8.15,7.72,6.77,5.84,4.92,4.03,3.31,2.47,2.11]
      YP2P9=[117*0.0]
      # 2P8 E=11.4446556 EV J=2
      # SHAPE def FROM B  AND Z ABOVE 30 EV SCALED BY 1/E
      X2P8=[11.4447,11.456,11.470,11.483,11.497,11.510,11.524,11.538,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.782,11.796,11.810,11.823,11.837,11.850,11.864,11.878,11.891,11.905,11.919,11.932,11.946,11.959,11.973,11.976,11.980,11.984,11.987,11.989,11.993,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.558,12.599,12.653,12.708,12.762,12.803,12.898,12.993,13.252,13.497,13.742,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.0]
      Y2P8=[0.00,0.36,0.72,1.01,1.22,1.36,1.45,1.43,1.35,1.29,1.30,1.33,1.38,1.45,1.50,1.59,1.64,1.61,1.57,1.53,1.48,1.44,1.42,1.41,1.43,1.45,1.47,1.48,1.50,1.52,1.53,1.54,1.55,1.57,1.58,1.60,1.61,1.63,1.64,1.66,1.73,1.68,1.69,1.69,1.70,1.71,1.55,1.67,2.20,2.64,2.50,2.31,2.11,1.98,2.05,2.34,2.44,2.45,2.30,2.15,2.09,2.06,2.04,2.06,2.07,1.97,1.97,1.92,1.92,1.95,2.00,2.07,2.12,2.09,2.12,2.16,2.21,2.25,2.33,2.49,2.26,2.08,2.02,2.03,2.02,1.99,1.97,1.96,1.95,1.96,1.97,1.98,2.03,2.06,1.97,2.43,2.30,2.22,2.24,2.36,2.34,2.43,2.51,2.61,3.01,3.52,4.27,4.97,5.45,5.98,6.96,7.70,7.85,7.66,7.37,7.03,6.65,6.30,5.82,5.55]
      YP2P8=[120*0.0]
      # 2P7 E=11.5261152 EV J=1
      # SHAPE def FROM B  AND Z ABOVE 30 EV SCALED BY 1/E**3
      X2P7=[11.5261,11.538,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.782,11.796,11.810,11.823,11.837,11.850,11.864,11.878,11.891,11.905,11.919,11.932,11.946,11.959,11.973,11.976,11.980,11.984,11.987,11.989,11.993,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.463,12.504,12.558,12.612,12.653,12.694,12.708,12.735,12.762,12.993,13.197,13.293,13.497,13.742,14.014,14.558,14.966,15.510,16.055,16.599,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.0]
      Y2P7=[0.00,0.21,0.44,0.45,0.45,0.45,0.46,0.49,0.51,0.55,0.57,0.55,0.53,0.51,0.50,0.49,0.50,0.52,0.57,0.60,0.62,0.65,0.66,0.67,0.68,0.68,0.69,0.69,0.70,0.70,0.71,0.71,0.72,0.72,0.72,0.73,0.74,0.74,0.75,0.73,0.78,0.92,1.00,0.80,0.68,0.64,0.62,0.60,0.53,0.51,0.56,0.66,0.74,0.75,0.76,0.74,0.70,0.65,0.81,0.88,0.98,1.20,1.16,1.18,1.23,1.28,1.35,1.31,1.24,1.15,1.10,1.02,0.99,0.99,0.97,0.94,0.88,0.91,0.88,0.86,0.82,0.83,0.87,0.91,0.95,1.05,1.48,1.17,0.99,1.07,1.03,1.06,1.06,1.09,1.19,1.50,1.81,2.33,2.78,3.11,3.25,3.32,3.08,2.76,2.38,2.07,1.80,1.54,1.31,1.03,0.90] 
      YP2P7=[111*0.0]
      # 2P6 E=11.5458220 EV J=2
      # SHAPE def FROM B  AND Z   SCALED BY 1/E  ABOVE  30 EV
      X2P6=[11.5458,11.551,11.565,11.578,11.592,11.606,11.619,11.626,11.633,11.640,11.644,11.646,11.649,11.653,11.660,11.665,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.837,11.905,11.959,11.973,11.976,11.987,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.558,12.599,12.653,12.708,12.762,12.803,12.898,12.993,13.129,13.252,13.497,13.742,14.014,14.558,14.966,15.510,16.055,16.599,17.007,17.415,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000]
      Y2P6=[0.00,0.27,0.84,1.06,1.15,1.20,1.23,1.25,1.28,1.29,1.29,1.28,1.27,1.26,1.26,1.25,1.24,1.23,1.23,1.24,1.25,1.25,1.26,1.26,1.27,1.28,1.27,1.24,1.52,1.49,1.50,1.36,1.45,1.80,1.93,1.97,1.83,1.68,1.62,1.60,1.65,1.91,2.49,2.06,2.00,1.94,1.82,1.75,1.69,1.59,1.51,1.54,1.64,1.83,1.83,1.84,1.80,1.78,1.73,1.68,1.62,1.63,1.60,1.58,1.56,1.53,1.51,1.49,1.48,1.47,1.46,1.49,1.54,1.50,1.66,1.57,1.50,1.45,1.47,1.46,1.39,1.39,1.45,1.70,1.84,2.17,2.53,2.83,3.05,3.16,3.25,3.21,3.07,3.01,2.97,2.93,2.86,2.76,2.55,2.43]
      YP2P6=[100*0.0]  
      # 2P5 E=11.6660274 EV J=0
      # SHAPE def FROM B  AND Z   SCALED BY 1/E ABOVE 108.84 EV
      X2P5=[11.6660,11.674,11.687,11.701,11.714,11.728,11.742,11.755,11.762,11.776,11.782,11.796,11.810,11.823,11.837,11.850,11.864,11.878,11.891,11.905,11.919,11.932,11.946,11.959,11.973,11.976,11.980,11.984,11.987,11.989,11.993,12.000,12.007,12.014,12.016,12.021,12.027,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.504,12.558,12.599,12.694,12.708,12.748,12.803,12.912,12.993,13.089,13.252,13.497,13.742,14.014,14.558,14.966,15.510,16.055,16.599,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634,95.239,108.84]
      Y2P5=[0.00,0.52,0.75,0.87,0.94,0.99,1.03,1.06,1.08,1.11,1.12,1.14,1.16,1.18,1.21,1.23,1.25,1.27,1.30,1.32,1.35,1.38,1.42,1.46,1.33,1.30,1.28,1.43,1.57,1.66,1.76,1.96,2.22,2.24,2.02,1.66,1.40,1.42,1.48,1.54,1.60,1.67,1.89,2.24,2.28,2.26,2.25,2.26,2.25,2.19,2.12,2.16,2.11,2.02,1.86,1.66,1.59,1.74,2.21,2.19,2.18,2.12,2.09,2.10,2.14,2.19,2.24,2.03,2.21,2.74,2.71,2.65,2.52,2.98,2.93,2.87,3.09,3.48,4.86,6.32,8.30,9.88,10.9,10.7,10.7,9.74,8.95,8.27,7.85,7.76,7.21,6.91,6.59,6.42,6.19,5.82,5.54,5.00,4.42,3.92,3.51,3.16]
      YP2P5=[102*0.0]
      # 3D6 E=11.998135 J=0
      #  SHAPE def FRONM B AND Z SCALED BY 1/E**3 ABOVE 54.422 EV
      X3D6=[11.9981,12.014,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.449,12.463,12.476,12.490,12.504,12.517,12.558,12.599,12.626,12.640,12.653,12.694,12.748,12.871,12.993,13.129,13.197,13.293,13.402,13.524,13.606,14.014,14.422,14.966,15.510,16.055,16.599,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,25.851,28.572,30.000,32.653,38.096,43.538,54.422]
      Y3D6=[0.00,.053,.058,.069,.088,.119,.155,.155,.157,.136,.135,.136,.149,.118,.112,.113,.117,.120,.120,.117,.126,.147,.140,.136,.126,.123,.123,.122,.121,.119,.118,.117,.117,.118,.117,.113,.107,.124,.157,.151,.163,.194,.230,.245,.248,.265,.280,.344,.442,.548,.802,1.09,1.38,1.61,1.87,2.25,2.53,2.55,2.45,2.33,2.16,1.94,1.79,1.48,1.35,1.14,.765,.539,.269]
      YP3D6=[69*0.0] 
      # 3D5 E=12.037029 J=1  RESONANCE RADIATION  103.003 NM   F=0.0053
      # SHAPE def FROM B AND Z UP TO 68 EV 
      # ABOVE  68 EV USE BEF SCALING 
      X3D5=[12.0370,12.041,12.055,12.068,12.082,12.095,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.558,12.612,12.653,12.708,12.762,12.803,12.898,13.061,13.252,13.524,13.742,14.014,14.286,14.558,14.830,14.966,15.238,15.510,15.783,16.055,16.327,16.599,16.871,17.007,17.279,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028]                            
      Y3D5=[0.00,.084,.113,.139,.173,.216,.238,.352,.381,.395,.409,.439,.505,.568,.427,.392,.403,.407,.390,.348,.353,.369,.431,.417,.412,.393,.397,.406,.414,.420,.423,.425,.426,.427,.429,.434,.416,.476,.492,.548,.581,.646,.773,.851,.955,1.08,1.27,1.50,1.67,1.80,2.16,2.53,2.88,3.27,3.74,4.17,4.63,4.79,5.23,5.61,6.40,7.40,7.54,7.31,6.96,6.48,5.90,5.37,4.63,4.25,3.66,2.73,2.05,1.28,.812]                         
      YP3D5=[75*0.0]    
      # 2P4 E=12.1003506  J=1
      #  SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE 30.0 EV
      X2P4=[12.1004,12.109,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.449,12.463,12.476,12.490,12.504,12.517,12.531,12.544,12.558,12.599,12.653,12.708,12.762,12.803,12.898,12.993,13.089,13.197,13.293,13.402,13.497,13.606,13.878,14.014,14.558,14.966,15.238,15.510,15.919,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.0]
      Y2P4=[0.00,.121,.308,.308,.320,.339,.352,.369,.395,.408,.435,.454,.453,.456,.473,.510,.552,.531,.482,.459,.463,.465,.467,.469,.471,.475,.479,.483,.488,.493,.499,.519,.571,.625,.633,.617,.822,.739,.627,.671,.706,.800,.781,.785,.831,.854,.904,1.09,1.26,1.50,1.80,2.27,2.62,2.88,3.20,3.49,3.48,3.15,2.76,2.34,1.93,1.54,1.17,1.00]
      YP2P4=[64*0.0]
      # 3D3 E=12.111740 J=2
      # SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE 95.239 EV
      X3D3=[12.1117,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.517,12.531,12.558,12.572,12.612,12.626,12.640,12.653,12.667,12.694,12.748,12.803,12.898,12.993,13.061,13.129,13.197,13.293,13.402,13.606,13.878,14.150,14.558,14.966,15.510,16.055,16.599,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634,95.239]
      Y3D3=[0.00,.573,.543,.494,.395,.352,.346,.389,.400,.364,.352,.345,.335,.318,.269,.246,.325,.343,.389,.413,.420,.432,.447,.460,.472,.480,.486,.490,.492,.494,.496,.496,.495,.493,.488,.482,.476,.447,.584,.610,.616,.578,.663,.735,.815,.860,.870,.949,1.12,1.33,1.85,2.49,3.35,4.06,4.96,5.51,6.45,7.54,8.83,9.11,8.82,8.32,7.70,6.95,6.18,5.19,4.70,3.89,2.63,1.79,.876,.409,.215,.126]
      YP3D3=[74*0.0]
      # 3D4# E=12.125317  J=4
      # SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE  81.634 EV
      X3D4P=[12.1253,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.517,12.531,12.558,12.572,12.612,12.626,12.640,12.653,12.667,12.694,12.748,12.803,12.898,12.993,13.061,13.129,13.197,13.293,13.402,13.606,13.878,14.150,14.558,14.966,15.510,16.055,16.599,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634]
      Y3D4P=[0.00,.057,.081,.179,.137,.150,.184,.210,.245,.290,.328,.327,.324,.305,.285,.303,.318,.296,.313,.330,.334,.349,.363,.373,.380,.385,.390,.393,.397,.401,.408,.412,.424,.427,.430,.447,.498,.525,.571,.713,.691,.640,.702,.790,.836,.889,.944,1.02,1.20,1.47,1.99,2.69,3.74,4.77,5.64,6.27,7.23,7.37,8.24,8.35,7.91,7.30,6.58,5.73,4.92,3.88,3.41,2.69,1.68,1.09,.508,.232,.122]
      YP3D4P=[73*0.0]
      # 2P3 E=12.1404262  J=1
      # SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE  81.634 EV
      X2P3=[12.1404,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.517,12.531,12.558,12.572,12.612,12.626,12.640,12.653,12.667,12.694,12.748,12.803,12.898,12.993,13.061,13.129,13.197,13.293,13.402,13.606,13.878,14.150,14.558,14.966,15.510,16.055,16.599,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634]
      Y2P3=[0.00,.108,.284,.400,.456,.485,.496,.544,.568,.536,.506,.485,.484,.495,.509,.559,.593,.581,.576,.562,.559,.551,.543,.537,.533,.532,.532,.534,.536,.540,.551,.557,.580,.586,.591,.613,.729,.777,.646,.678,.873,.725,.672,.632,.644,.667,.723,.657,.690,.652,.676,.818,1.07,1.26,1.74,2.23,2.61,2.94,3.35,3.27,2.86,2.50,2.40,1.75,1.42,1.05,.890,.665,.384,.249,.138,.080,.048]
      YP2P3=[73*0.0]
      # 2P2 E=12.1436522  J=2
      # SHAPE def FROM B AND Z  SCALED BY 1/E  ABOVE  108.84 EV
      X2P2=[12.1437,12.150,12.163,12.177,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.490,12.504,12.517,12.531,12.558,12.572,12.612,12.626,12.640,12.653,12.667,12.694,12.748,12.803,12.898,12.993,13.061,13.129,13.197,13.293,13.402,13.606,13.878,14.150,14.558,14.966,15.510,16.055,16.599,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634,95.239,108.84]
      Y2P2=[0.00,.181,.402,.577,.690,.760,.798,.852,.876,.915,.965,1.01,1.02,1.05,1.09,1.17,1.17,1.15,1.15,1.14,1.12,1.11,1.11,1.11,1.12,1.12,1.14,1.15,1.16,1.18,1.21,1.22,1.27,1.28,1.29,1.29,1.35,1.49,1.43,1.66,1.53,1.76,1.52,1.45,1.50,1.56,1.75,1.70,1.64,1.71,1.91,2.24,2.93,3.26,3.79,4.23,4.62,5.05,5.59,5.74,5.62,5.34,5.00,4.65,4.29,3.88,3.66,3.31,2.76,2.38,1.90,1.53,1.28,1.10,.962]
      YP2P2=[75*0.0]
      # 3D4 E=12.178504  J=3
      # SHAPE def FROM B AND Z  SCALED  BY 1/E  ABOVE 108.84 EV
      X3D4=[12.1785,12.191,12.204,12.218,12.231,12.245,12.259,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.395,12.408,12.422,12.436,12.449,12.463,12.476,12.558,12.653,12.748,12.803,12.993,13.089,13.388,13.606,14.014,14.286,14.558,14.830,15.102,15.510,15.919,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634,95.239,108.84]
      Y3D4=[0.00,.363,.381,.395,.437,.491,.560,.630,.684,.700,.655,.613,.672,.717,.706,.725,.735,.718,.702,.693,.691,.691,.693,.717,.890,.870,.844,.734,.831,.857,.864,.976,1.20,1.52,1.88,2.20,2.69,3.08,3.67,3.93,4.10,4.36,4.66,4.67,4.50,4.26,3.97,3.62,3.28,2.84,2.63,2.31,1.83,1.52,1.21,1.01,.878,.781,.704]
      YP3D4=[59*0.0]
      # 2P1 E=12.2564658  J=0
      # SHAPE def FROM B AND Z  SCALED BY 1/E ABOVE 108.84 EV
      X2P1=[12.2565,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.463,12.504,12.558,12.612,12.653,12.708,12.762,12.803,12.898,12.966,13.061,13.197,13.402,13.551,13.742,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028,81.634,95.239,108.84]
      Y2P1=[0.00,.200,.261,.282,.298,.321,.378,.554,.540,.517,.478,.489,.518,.560,.508,.642,.789,.647,1.01,.822,.922,.866,.995,1.06,1.11,1.20,1.59,2.23,3.27,4.28,4.85,5.41,5.75,5.98,5.74,5.35,4.96,4.70,4.49,4.30,4.14,3.95,3.86,3.73,3.53,3.38,3.09,2.75,2.46,2.20,2.00]
      YP2P1=[51*0.0]   
      # 3D1## E=12.257998  J=2  
      # SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE 68.028 EV
      X3D1PP=[12.2580,12.272,12.286,12.299,12.313,12.327,12.340,12.354,12.367,12.381,12.463,12.504,12.558,12.612,12.653,12.708,12.762,12.803,12.898,12.966,13.061,13.197,13.402,13.551,13.742,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028]
      Y3D1PP=[0.00,.038,.055,.073,.093,.107,.125,.158,.178,.204,.231,.253,.283,.319,.380,.368,.399,.473,.318,.348,.450,.455,.524,.516,.552,.631,.926,1.24,1.54,1.75,1.99,2.41,2.63,2.60,2.66,2.63,2.50,2.35,2.18,1.97,1.79,1.48,1.33,1.08,.689,.444,.221,.116]
      YP3D1PP=[48*0.0]
      # 3D1# E=12.284275  J=3
      # SHAPE def FROM B AND Z  SCALED BY 1/E ABOVE  38 EV
      X3D1P=[12.2843,12.327,12.340,12.354,12.367,12.381,12.463,12.504,12.558,12.612,12.653,12.708,12.762,12.803,12.898,12.966,13.061,13.197,13.402,13.551,13.742,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096]
      Y3D1P=[0.00,.313,.357,.448,.451,.465,.527,.568,.604,.637,.685,.742,.625,.781,.553,.538,.588,.591,.606,.566,.535,.529,.688,.891,1.24,1.50,1.53,1.59,1.78,1.68,1.56,1.47,1.42,1.41,1.40,1.40,1.37,1.29,1.23,1.11,.913]
      YP3D1P=[41*0.0]
      # 2S5 E=12.352158  J=2
      # SHAPE def FROM B AND Z  SCALED BY 1/E**3 ABOVE 68  EV
      X2S5=[12.3522,12.367,12.381,12.395,12.408,12.422,12.463,12.504,12.558,12.612,12.653,12.708,12.762,12.803,12.898,12.966,13.061,13.197,13.402,13.551,13.742,14.014,14.558,14.966,15.510,16.055,16.463,17.007,17.551,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,32.653,38.096,43.538,54.422,68.028]
      Y2S5=[0.00,.235,.250,.475,.598,.674,.773,.845,.945,1.04,1.06,1.18,.748,.861,1.05,1.05,1.17,1.14,1.12,1.07,1.03,.989,1.09,1.22,1.49,1.76,1.85,1.93,1.98,2.03,1.89,1.73,1.55,1.41,1.28,1.12,.995,.812,.725,.586,.377,.246,.119,.058]
      YP2S5=[44*0.0]
      # 3D2 E=12.354555  J=1 RESONANCE RADIATION  100.356 NM  F=0.082
      #       USE BEF SCALING
      #
      # 2S4 E=12.3852827 J=1 RESONANCE RADIATION  100.107 NM  F=0.154
      #        USE BEF SCALING
      #
      # 3P10 E=12.7563854 EV J=1  
      #       SHAPE def FROM B AND Z SCALED BY 1/E**3 ABOVE 68 EV
      X3P10=[12.7564,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P10=[0.00,.459,.956,1.41,2.20,2.55,3.05,2.96,2.74,2.38,2.04,1.70,1.36,1.07,0.75,0.61,0.23,0.14,.078,.046]
      YP3P10=[20*0.0]
      # 3P9  E=12.7847085 EV J=3  
      #       SHAPE def FROM B AND Z SCALED BY 1/E**3 ABOVE 68 EV
      X3P9=[12.7847,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P9=[0.00,.511,1.48,2.40,3.02,3.44,3.57,3.57,3.36,2.94,2.54,2.12,1.72,1.40,1.02,0.86,0.38,0.24,.122,.061]
      YP3P9=[20*0.0]
      # 3P8  E=12.7853913 EV J=2  
      #       SHAPE def FROM B AND Z SCALED BY 1/EN  ABOVE 68 EV
      X3P8=[12.7854,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P8=[0.00,.575,1.19,2.00,2.64,2.86,3.08,3.11,3.06,2.91,2.74,2.56,2.36,2.17,1.95,1.83,1.38,1.19,0.94,0.75]
      YP3P8=[20*0.0]
      # 3S1PP E=12.8033935 EV J=2 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3 ABOVE 68 EV
      X3S1PP=[12.8034,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3S1PP=[0.00,.328,0.84,1.39,2.05,3.41,4.82,6.11,6.68,6.68,6.40,5.94,5.36,4.81,4.05,3.69,2.14,1.49,0.76,0.36]
      YP3S1PP=[20*0.0]
      # 3P7 E=12.8092373 EV J=1 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3 ABOVE 68 EV
      X3P7=[12.8092,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P7=[0.00,0.29,0.64,1.05,1.31,1.26,1.27,1.10,0.96,0.81,0.70,0.60,0.51,0.44,0.35,0.31,0.17,0.12,.088,.067]
      YP3P7=[20*0.0]
      # 3P6 E=12.8153298 EV J=2 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN ABOVE 68 EV
      X3P6=[12.8153,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P6=[0.00,0.33,1.18,1.44,1.73,1.98,1.95,1.71,1.50,1.34,1.23,1.14,1.04,0.95,0.81,0.75,0.51,0.42,0.32,0.25]
      YP3P6=[20*0.0]
      # 3S1PPPP E=12.8252582 EV J=2 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3 ABOVE 68 EV
      X3S1PPPP=[12.8253,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3S1PPPP=[0.00,0.16,0.41,0.83,1.71,2.50,3.10,3.56,3.83,3.78,3.57,3.26,2.89,2.45,1.97,1.75,0.89,0.58,0.27,0.13]
      YP3S1PPPP=[20*0.0]
      # 3S1PPP E=12.8573390 EV J=3 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN ABOVE 68 EV
      X3S1PPP=[12.8573,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3S1PPP=[0.00,0.29,0.54,0.99,2.02,2.69,3.38,3.90,4.10,4.05,3.84,3.55,3.20,2.80,2.33,2.11,1.27,0.98,0.67,0.50]
      YP3S1PPP=[20*0.0]
      # 3P5 E=12.8648022 EV J=0 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN ABOVE 68 EV
      X3P5=[12.8648,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3P5=[0.00,0.56,2.30,4.54,6.23,6.30,6.01,5.23,4.62,4.10,3.79,3.71,3.29,3.07,2.86,2.75,2.39,2.25,2.02,1.79]
      YP3P5=[20*0.0]
      # 4D5 E=12.8698 EV J=1 RESONANCE RADIATION   96.3338NM  F=0.0140
      #       USE BEF SCALING
      # 4D6 E=12.9034651 EV J=0 
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3 ABOVE 68 EV
      X4D6=[12.9035,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D6=[0.00,0.07,0.21,0.32,0.57,0.76,1.09,1.24,1.30,1.28,1.22,1.12,0.98,0.90,0.74,0.67,0.34,0.25,0.12,.056]
      YP4D6=[20*0.0]
      # 4D4P E=12.972537 EV J=4
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3 ABOVE 68 EV
      X4D4P=[12.9725,12.993,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D4P=[0.00,0.14,0.89,1.48,2.18,3.01,3.72,4.15,4.25,4.08,3.81,3.48,3.07,2.64,2.09,1.84,0.92,0.60,0.28,0.13]
      YP4D4P=[20*0.0]
      # 3S1P E=13.0043688 EV J=1 RESONANCE RADIATION 95.341 NM F=0.0435
      #       USE BEF SCALING
      # 
      # 4D4 E=13.0079847 EV J=3
      #        SHAPE def FROM B AND Z SCALED BY 1/EN  ABOVE 68 EV
      X4D4=[13.0080,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D4=[0.00,1.10,1.37,1.85,2.26,2.34,2.14,1.95,1.78,1.67,1.56,1.46,1.38,1.26,1.20,0.95,0.90,0.84,0.78]
      YP4D4=[19*0.0]
      # 4D3 E=13.0192383 EV J=2
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3  ABOVE 68 EV
      X4D3=[13.0192,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D3=[0.00,0.65,1.06,1.66,2.16,2.15,2.16,2.08,1.91,1.74,1.58,1.41,1.29,1.05,0.94,0.48,0.32,0.16,0.09]
      YP4D3=[19*0.0]
      # 2S3 E=13.029666  EV J=0
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3  ABOVE 68 EV
      X2S3=[13.0297,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y2S3=[0.00,0.13,0.13,0.17,0.27,0.29,0.29,0.27,0.25,0.23,0.21,0.19,0.17,0.15,0.14,.073,.054,.028,.015]
      YP2S3=[19*0.0]
      # 2S2  E=13.036483  EV J=1 RESONANCE RADIATION 95.106 NM F=0.0105
      #       USE BEF SCALING
      # 
      # 4D1PP E=13.0386113  J=2
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3  ABOVE 68 EV
      X4D1PP=[13.0386,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D1PP=[0.00,0.50,0.80,1.12,1.46,1.64,1.49,1.40,1.29,1.19,1.17,1.02,0.94,0.80,0.73,0.32,0.22,.109,.059]
      YP4D1PP=[19*0.0]
      # 4D1P E=13.0441877  J=3
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3  ABOVE 68 EV
      X4D1P=[13.0442,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4D1P=[0.00,0.63,0.92,1.47,1.58,1.70,1.50,1.30,1.13,1.02,0.95,0.88,0.84,0.71,0.64,0.33,0.22,.123,.084]
      YP4D1P=[19*0.0]
      # 3S5  E=13.0986140  J=2
      #        SHAPE def FROM B AND Z SCALED BY 1/EN**3  ABOVE 68 EV
      X3S5=[13.0986,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y3S5=[0.00,0.88,1.56,1.89,1.82,2.08,2.37,2.40,2.21,1.96,1.65,1.30,1.02,0.69,0.57,0.22,0.13,.058,.027]
      YP3S5=[19*0.0]
      # 4D2  E=13.0987356 EV J=1 RESONANCE RADIATION 94.654 NM F=0.0970
      #       USE BEF SCALING
      #
      # 3S4  E=13.1138948 EV J=1 RESONANCE RADIATION 94.545 NM F=0.0808
      #       USE BEF SCALING
      #
      # SUM 4F STATES   E=13.14  J=1,2,5,4,3,2,4,4
      #        SHAPE def FROM B AND Z SCALED BY 1/EN  ABOVE 68 EV
      X4FS=[13.14,14.014,14.966,16.055,17.007,17.959,19.048,20.000,21.089,22.041,23.130,24.490,26.123,28.572,30.000,38.096,43.538,54.422,68.028]
      Y4FS=[0.00,1.58,3.51,4.86,4.89,4.50,3.60,2.89,2.24,1.85,1.49,1.19,0.93,0.69,0.59,0.32,0.25,0.18,0.14]
      YP4FS=[19*0.0]
      # 5D5  E=13.3501402 EV J=1 RESONANCE RADIATION 92.872 NM F=0.0015
      #       USE BEF SCALING
      #
      # 5D2  E=13.4223741 EV J=1 RESONANCE RADIATION 92.372 NM F=0.0439
      #         USE BEF SCALING
      #
      # 4S4  E=13.4365439 EV J=1 RESONANCE RADIATION 92.274 NM F=0.0203
      #         USE BEF SCALING
      #
      # HIGH E=13.6 EV  SUM OF HIGHER DIPOLE STATES            F=0.168
      #         USE BEF SCALING 
      # 
      #    TOTAL OSCILLATOR STRENGTH =1.1258 1.1058
      #
      #  BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24
      Z36T=[3500.,2633.,1689.,1126.,708.,367.,226.,146.,97.2,84.6,82.1,82.5,83.1,83.6,84.0,84.5,85.1,86.0,86.5,87.3,87.4,87.8,88.0,88.3,88.4]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #----------------------------------------------------------------------
      #     NANISO=0
      if(NANISO == 0):
      :                                         
      NAME='KRYPTON 2013   ISOTROPIC '
      else:
      NAME='KRYPTON 2013  ANISOTROPIC'
      # endif
      #                                                                       
      # --------------------------------------------------------------------  
      #  ON KRYPTON NOT AS GOOD AS ARGON . FIT TO HUNTERS DRIFT VELOCITY 
      #  AND DIFFUSION OF KOZUMI .TOWNS# end COEFFICIENT                        
      #   OF KRUITOFF,HEYLEN AND BHATTACHYRA CONSISENT SO AVERAGED AND GOOD   
      #   AGREEMENT OBTAINED WITH CALCULATED VALUES.
      # 2007: INCREASED UPPER ENERGY LIMIT TO 2MEV
      # 2007: INCLUDED NEW ANGULAR DISTRIBUTION def
      # 2007: INCLUDED PENNING TRANSFER FRACTION 
      # 2011: 51 EXCITATION LEVELS : USED BEF SCALED VALUES FOR DIPOLE STATES
      #       THE 1S2 AND 1S4 DIPOLE STATES INCLUDE THE RESONANCE STRUCTURE 
      #       CALCULATED BY BARTSCHAT AND ZATSARINNY DBSR MODEL SCALED BY 0.87
      #       THE 2P AND HIGHER TRIPLET STATES CALCULATED IN THE DBSR MODEL 
      #       ARE ALSO SCALED TO AGREE WITH ELECTRON SCATTERING AND FIT TO THE 
      #       TO THE TOWNS# end GAIN MEASUREMENTS. 
      #       DRIFT VELOCITY AT HIGH FIELD FROM NAKAMURA IS FIITED BY THE
      #       MOMENTUM TRANSFER X-SECTION. 
      #       EXPERIMENTAL AND TOTAL X-SECTIONS AGREE TO 1%.
      #       THE DRIFT VELOCITY FIT IS BETTER THAN 1% .
      #       TOWNS# end CALC IS IN GOOD AGREEMENT WITH JACQUES ET AL AT LOW
      #       ELECTRIC FIELD BUT NOW ABOUT 8% BELOW KRUITOFF AT HIGH FIELD.  
      # 2013: INTRODUCED K,L AND M SHELL AND CHARGE 1 2 3 AND 4 IONISATIONS
      # --------------------------------------------------------------------  
      #
      #  BORN BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      AM2=4.65 
      C=52.7 
      # BORN BETHE CONSTANT
      A0=0.52917720859e-8
      RY=13.60569193
      API=numpy.arccos(-1.00)
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      # SCALING CONSTANTS 
      AN1S=0.87
      AN2P10=0.4 
      AN2P5=0.4 
      AN2P1=0.4 
      AN2P=0.75
      AN3P=0.60
      AN3P5=0.4 
      AN3D=0.65
      AN4D=0.4
      # AVERAGE AUGER EMISSIONS FROM EACH SHELL
      AUGM5=2.0
      AUGM4=2.0
      AUGM3=3.43
      AUGM2=2.0
      AUGM1=3.81
      AUGL3=4.85
      AUGL2=4.41
      AUGL1=6.47
      AUGK=5.91
      #
      NION=11
      NATT=1 
      NIN=51
      NNULL=0 
      IONMODEL=0
      #
      NBREM=25
      DO 6 J=1,NIN
      IZBR[J]=0
      6 CONTINUE
      IZBR[52]=36
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=NANISO
      #                              
      NEL=151                      
      NDATA=162 
      NEPSI=186                                                        
      NIONG=65
      NION2=41
      NION3=35
      NION4=32 
      NKSH=74
      NL1S=83
      NL2S=82
      NL3S=84
      NM1S=91
      NM2S=98
      NM3S=99
      NM4S=105
      NM5S=106
      N1S5=169
      N1S4=130
      N1S3=168
      N1S2=150
      N2P10=142
      N2P9=117
      N2P8=120
      N2P7=111
      N2P6=100
      N2P5=102
      N3D6=69
      N3D5=75
      N2P4=64
      N3D3=74
      N3D4P=73
      N2P3=73
      N2P2=75
      N3D4=59
      N2P1=51
      N3D1PP=48
      N3D1P=41
      N2S5=44
      N3P10=20
      N3P9=20
      N3P8=20
      N3S1PP=20
      N3P7=20
      N3P6=20
      N3S1PPPP=20
      N3S1PPP=20
      N3P5=20
      N4D6=20
      N4D4P=20
      N4D4=19
      N4D3=19
      N2S3=19
      N4D1PP=19
      N4D1P=19
      N3S5=19
      N4FS=19
      #
      E[1]=0.0                                                      
      E[2]=2.0*EMASS/(83.798*AMU)                                     
      E[3]=13.9996  
      # EXCITATION X-SECTION AT 1.4MEV                   
      E[4]=0.296e-18
      #  IONISING X-SECTION AT 1.4MEV                                 
      E[5]=0.1217e-17
      # EOBY AT MINIMUM IONISING                          
      E[6]=23.0
      # EOBY AT LOW ENERGY
      EOBY[1]=10.0
      EOBY[2]=30.0
      EOBY[3]=60.0
      EOBY[4]=100.
      # EOBY FOR SHELLS
      EOBY[5]=175.0
      EOBY[6]=180.0
      EOBY[7]=250.0
      EOBY[8]=1678.4
      EOBY[9]=1730.9
      EOBY[10]=1921.0
      EOBY[11]=14327.26
      # AUGER AND FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1
      EC0[2]=5.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      NC0[3]=2
      EC0[3]=10.0
      WKLM[3]=0.0
      EFL[3]=0.0
      NG1[3]=0
      EG1[3]=0.0
      NG2[3]=0
      EG2[3]=0.0
      NC0[4]=3
      EC0[4]=15.
      WKLM[4]=0.0
      EFL[4]=0.0
      NG1[4]=0
      EG1[4]=0.0
      NG2[4]=0
      EG2[4]=0.0
      NC0[5]=3
      EC0[5]=135.1
      WKLM[5]=0.0
      EFL[5]=0.0
      NG1[5]=0
      EG1[5]=0.0
      NG2[5]=0
      EG2[5]=0.0
      NC0[6]=2
      EC0[6]=186.8
      WKLM[6]=0.0
      EFL[6]=0.0
      NG1[6]=0
      EG1[6]=0.0
      NG2[6]=0
      EG2[6]=0.0
      NC0[7]=4
      EC0[7]=200.9
      WKLM[7]=0.0
      EFL[7]=0.0
      NG1[7]=0
      EG1[7]=0.0
      NG2[7]=0
      EG2[7]=0.0
      NC0[8]=5
      EC0[8]=1555.
      WKLM[8]=0.0216
      EFL[8]=1584.
      NG1[8]=3
      EG1[8]=1490.
      NG2[8]=2
      EG2[8]=54.
      NC0[9]=4
      EC0[9]=1619.9
      WKLM[9]=0.0211
      EFL[9]=1636.
      NG1[9]=3
      EG1[9]=1580.
      NG2[9]=2
      EG2[9]=60.
      NC0[10]=7
      EC0[10]=1698.4
      WKLM[10]=0.0022
      EFL[10]=1700.
      NG1[10]=5
      EG1[10]=1538.
      NG2[10]=2
      EG2[10]=160.
      NC0[11]=10
      EC0[11]=13993.
      WKLM[11]=0.65
      EFL[11]=12649.
      NG1[11]=5
      EG1[11]=12438.
      NG2[11]=5
      EG2[11]=1555.
      #
      EION[1]=13.99960
      EION[2]=38.35944
      EION[3]=74.029
      EION[4]=124.88
      EION[5]=214.4
      EION[6]=222.2
      EION[7]=292.8
      EION[8]=1678.4
      EION[9]=1730.9
      EION[10]=1921.0
      EION[11]=14327.26
      LEGAS[1]=0
      LEGAS[2]=0
      LEGAS[3]=0
      LEGAS[4]=0
      LEGAS[5]=1
      LEGAS[6]=1
      LEGAS[7]=1
      LEGAS[8]=1
      LEGAS[9]=1
      LEGAS[10]=1
      LEGAS[11]=1
      ISHELL[1]=0
      ISHELL[2]=0
      ISHELL[3]=0
      ISHELL[4]=0
      ISHELL[5]=7
      ISHELL[6]=6
      ISHELL[7]=5
      ISHELL[8]=4
      ISHELL[9]=3
      ISHELL[10]=2
      ISHELL[11]=1
      #
      DO 776 J=1,NION
      DO 777 I=1,20000
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      #                                   
      EIN[1]=9.9152
      EIN[2]=10.0324
      EIN[3]=10.5624
      EIN[4]=10.6436
      EIN[5]=11.3035
      EIN[6]=11.4430
      EIN[7]=11.4447
      EIN[8]=11.5261
      EIN[9]=11.5458
      EIN[10]=11.6660
      EIN[11]=11.9981
      EIN[12]=12.0370
      EIN[13]=12.1004
      EIN[14]=12.1117
      EIN[15]=12.1253
      EIN[16]=12.1404
      EIN[17]=12.1437
      EIN[18]=12.1785
      EIN[19]=12.2565
      EIN[20]=12.2580
      EIN[21]=12.2843
      EIN[22]=12.3522
      EIN[23]=12.3546
      EIN[24]=12.3853
      EIN[25]=12.7564
      EIN[26]=12.7847
      EIN[27]=12.7854
      EIN[28]=12.8034
      EIN[29]=12.8092
      EIN[30]=12.8153
      EIN[31]=12.8253
      EIN[32]=12.8573
      EIN[33]=12.8648
      EIN[34]=12.8698
      EIN[35]=12.9035
      EIN[36]=12.9725
      EIN[37]=13.0044
      EIN[38]=13.0080
      EIN[39]=13.0192
      EIN[40]=13.0297
      EIN[41]=13.0365
      EIN[42]=13.0386
      EIN[43]=13.0442
      EIN[44]=13.0986
      EIN[45]=13.0987
      EIN[46]=13.1139
      EIN[47]=13.14
      EIN[48]=13.3501
      EIN[49]=13.4224
      EIN[50]=13.4365
      EIN[51]=13.6
      EIN[52]=0.0
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # USE PENNING TRANSFER FRACTION BETWEEN 0.0 AND 0.2 
      DO 50 NL=1,NIN
      PENFRA[1,NL]=0.0
      # PENNING TRANSFER DISTANCE MICRONS
      PENFRA[2,NL]=1.0
      # PENNING TRANSFER TIME
      50 PENFRA[3,NL]=1.0
      #**********************************************************************
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      4 DO 5 NL=1,NIN
      DO 651 I=1,20000
      if(EG[I]:
      > EIN[NL]) :
      IOFFN[NL]=I-1
      GO TO 5
      # endif
      651 CONTINUE
      5 CONTINUE
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC ANISOTROPIC        KRYPTON               '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC ISOTROPIC          KRYPTON               '
      # endif
      SCRPT[3]=' IONISATION CHARGE STATE=1      ELOSS=    13.99960'
      SCRPT[4]=' IONISATION CHARGE STATE=2      ELOSS=    38.35944'
      SCRPT[5]=' IONISATION CHARGE STATE=3      ELOSS=    74.029  '
      SCRPT[6]=' IONISATION CHARGE STATE=4      ELOSS=   124.88   '
      SCRPT[7]=' IONISATION    M3 SHELL         ELOSS=   214.4    '
      SCRPT[8]=' IONISATION    M2 SHELL         ELOSS=   222.2    '
      SCRPT[9]=' IONISATION    M1 SHELL         ELOSS=   292.8    '
      SCRPT[10]=' IONISATION    L3 SHELL         ELOSS=  1678.4    '
      SCRPT[11]=' IONISATION    L2 SHELL         ELOSS=  1730.9    '
      SCRPT[12]=' IONISATION    L1 SHELL         ELOSS=  1921.0    '
      SCRPT[13]=' IONISATION    K  SHELL         ELOSS= 14327.26   '
      SCRPT[14]=' ATTACHMENT                                       ' 
      SCRPT[15]='                                                  '
      SCRPT[16]='                                                  '
      SCRPT[17]=' EXC 1S5     J=2 METASTABLE       ELEVEL=   9.9152'
      SCRPT[18]=' EXC 1S4     J=1 RESONANT         ELEVEL=  10.0324'
      SCRPT[19]=' EXC 1S3     J=0 METASTABLE       ELEVEL=  10.5624'
      SCRPT[20]=' EXC 1S2     J=1 RESONANT         ELEVEL=  10.6436'
      SCRPT[21]=' EXC 2P10    J=1                  ELEVEL=  11.3035'
      SCRPT[22]=' EXC 2P9     J=3                  ELEVEL=  11.4430'
      SCRPT[23]=' EXC 2P8     J=2                  ELEVEL=  11.4447'
      SCRPT[24]=' EXC 2P7     J=1                  ELEVEL=  11.5261'
      SCRPT[25]=' EXC 2P6     J=2                  ELEVEL=  11.5458'
      SCRPT[26]=' EXC 2P5     J=0                  ELEVEL=  11.6660'
      SCRPT[27]=' EXC 3D6     J=0                  ELEVEL=  11.9981'
      SCRPT[28]=' EXC 3D5     J=1 RESONANT         ELEVEL=  12.0370'
      SCRPT[29]=' EXC 2P4     J=1                  ELEVEL=  12.1004'
      SCRPT[30]=' EXC 3D3     J=2                  ELEVEL=  12.1117'
      SCRPT[31]=' EXC 3D4#    J=4                  ELEVEL=  12.1253'
      SCRPT[32]=' EXC 2P3     J=1                  ELEVEL=  12.1404'
      SCRPT[33]=' EXC 2P2     J=2                  ELEVEL=  12.1437'
      SCRPT[34]=' EXC 3D4     J=3                  ELEVEL=  12.1785'
      SCRPT[35]=' EXC 2P1     J=0                  ELEVEL=  12.2565'
      SCRPT[36]=' EXC 3D1##   J=2                  ELEVEL=  12.2580'
      SCRPT[37]=' EXC 3D1#    J=3                  ELEVEL=  12.2843'
      SCRPT[38]=' EXC 2S5     J=2                  ELEVEL=  12.3522'
      SCRPT[39]=' EXC 3D2     J=1 RESONANT         ELEVEL=  12.3546'
      SCRPT[40]=' EXC 2S4     J=1 RESONANT         ELEVEL=  12.3853'
      SCRPT[41]=' EXC 3P10    J=1                  ELEVEL=  12.7564'
      SCRPT[42]=' EXC 3P9     J=3                  ELEVEL=  12.7847'
      SCRPT[43]=' EXC 3P8     J=2                  ELEVEL=  12.7854'
      SCRPT[44]=' EXC 3S1##   J=2                  ELEVEL=  12.8034'
      SCRPT[45]=' EXC 3P7     J=1                  ELEVEL=  12.8092'
      SCRPT[46]=' EXC 3P6     J=2                  ELEVEL=  12.8153'
      SCRPT[47]=' EXC 3S1#### J=2                  ELEVEL=  12.8253'
      SCRPT[48]=' EXC 3S1###  J=3                  ELEVEL=  12.8573'
      SCRPT[49]=' EXC 3P5     J=0                  ELEVEL=  12.8648'
      SCRPT[50]=' EXC 4D5     J=1 RESONANT         ELEVEL=  12.8698'
      SCRPT[51]=' EXC 4D6     J=0                  ELEVEL=  12.9035'
      SCRPT[52]=' EXC 4D4#    J=4                  ELEVEL=  12.9725'
      SCRPT[53]=' EXC 3S1#    J=1 RESONANT         ELEVEL=  13.0044'
      SCRPT[54]=' EXC 4D4     J=3                  ELEVEL=  13.0080'
      SCRPT[55]=' EXC 4D3     J=2                  ELEVEL=  13.0192'
      SCRPT[56]=' EXC 2S3     J=0                  ELEVEL=  13.0297'
      SCRPT[57]=' EXC 3S2     J=1 RESONANT         ELEVEL=  13.0365'
      SCRPT[58]=' EXC 4D1##   J=2                  ELEVEL=  13.0386'
      SCRPT[59]=' EXC 4D1#    J=3                  ELEVEL=  13.0442'
      SCRPT[60]=' EXC 3S5     J=2                  ELEVEL=  13.0986'
      SCRPT[61]=' EXC 4D2     J=1 RESONANT         ELEVEL=  13.0987'
      SCRPT[62]=' EXC 3S4     J=1 RESONANT         ELEVEL=  13.1139'
      SCRPT[63]=' EXC 4F   SUM                     ELEVEL=  13.14  '
      SCRPT[64]=' EXC 5D5     J=1 RESONANT         ELEVEL=  13.3501'
      SCRPT(65)=' EXC 5D2     J=1 RESONANT         ELEVEL=  13.4224'
      SCRPT(66)=' EXC 4S4     J=1 RESONANT         ELEVEL=  13.4365'
      SCRPT(67)=' EXC HIGH    J=1 RESONANT         ELEVEL=  13.6   '
      SCRPT(68)=' BREMSSTRAHLUNG FROM KRYPTON ATOM                 '
      #      EN=-ESTEP/2.0
      DO 900 I=1,NSTEP      
      EN=EG[I]                           
      #      EN=EN+ESTEP
      if(EN > EIN[1]:
      ) :
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      # endif                                                       
      if(EN == 0.0):
      :
      QELA=37.8D-16
      QMOM=37.8D-16        
      GO TO 200
      # endif 
      DO 110 J=2,NEL                                                    
      if(EN <= XEL[J]:
      ) GO TO 120                                        
      110 CONTINUE                                                          
      J=NEL      
      # USE LOG INTERPOLATION 
      120 Y1=math.log(YEL[J-1])
      Y2=math.log(YEL[J])       
      X1=math.log(XEL[J-1])
      X2=math.log(XEL[J])                                                   
      A=(Y2-Y1)/(X2-X1)                         
      B=(X1*Y2-X2*Y1)/(X1-X2)   
      QELA=math.exp((A*math.log(EN)+B))*1.0D-16
      DO 150 J=2,N                                                 
      if(EN <= XEN[J]:
      ) GO TO 160                                        
      150 CONTINUE                                                          
      J=NDATA
      # USE LOG INTERPOLATION 
      160 Y1=math.log(YXSEC[J-1])
      Y2=math.log(YXSEC[J])       
      X1=math.log(XEN[J-1])
      X2=math.log(XEN[J])                                                   
      A=(Y2-Y1)/(X2-X1)                         
      B=(X1*Y2-X2*Y1)/(X1-X2)   
      QMOM=math.exp((A*math.log(EN)+B))*1.0D-16
      200 CONTINUE
      PQ1=0.5+(QELA-QMOM)/QELA
      DO 201 J=2,NEPSI
      if(EN <= XEPS[J]:
      ) GO TO 202
      201 CONTINUE
      J=NEPSI
      202 A=(YEPS[J]-YEPS[J-1])/(XEPS[J]-XEPS[J-1])
      B=(XEPS[J-1]*YEPS[J]-XEPS[J]*YEPS[J-1])/(XEPS[J-1]-XEPS[J])
      PQ2=A*EN+B
      # EPSILON =1.0-YEPS
      PQ2=1.00-PQ2
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      :
      Q[2][I]=QMOM
      PEQEL[2][I]=0.5
      # endif
      # IONISATION FOR CHARGE =1                                      
      QION[1][I]=0.0 
      PEQION[1][I]=0.50
      if(NANISO == 2):
      PEQION[1][I]=0.00                                 
      if(EN <= EION[1]:
      ) GO TO 225
      if(EN > XION(NIONG):
      ) GO TO 221                               
      DO 210 J=2,NIONG                                                  
      if(EN <= XION[J]:
      ) GO TO 220                                       
      210 CONTINUE                                                          
      J=NIONG                                                           
      220 A=(YIN1[J]-YIN1[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN1[J]-XION[J]*YIN1[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.0D-16
      GO TO 222
      # USE BORN BETHE ABOVE XION(NIONG) EV.
      221 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.9009 
      222 CONTINUE
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
      # ENERGIES ABOVE 2 * IONISATION ENERGY
      # ANISOTROPIC DISTRIBUTION SAME AS ELASTIC AT ENERGY OFFSET BY
      # IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
      )) GO TO 225
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
      # IONISATION FOR CHARGE =2
      225 QION[2][I]=0.00
      PEQION[2][I]=0.50
      if(NANISO == 2):
      PEQION[2][I]=0.00
      if(EN <= EION[2]:
      ) GO TO 2253
      if(EN > XIN2(NION2):
      ) GO TO 1251
      DO 2251 J=2,NION2
      if(EN <= XIN2[J]:
      ) GO TO 2252
      2251 CONTINUE
      J=NION2
      2252 A=(YIN2[J]-YIN2[J-1])/(XIN2[J]-XIN2[J-1])
      B=(XIN2[J-1]*YIN2[J]-XIN2[J]*YIN2[J-1])/(XIN2[J-1]-XIN2[J])
      QION[2][I]=(A*EN+B)*1.e-16
      GO TO 1252
      # USE BORN BETHE ABOVE XIN2(NION2)
      1251 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0613
      1252 CONTINUE
      if(EN <= (2.0*EION[2]:
      )) GO TO 2253
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      # IONISATION FOR CHARGE =3
      2253 QION[3][I]=0.00
      PEQION[3][I]=0.50
      if(NANISO == 2):
      PEQION[3][I]=0.00
      if(EN <= EION[3]:
      ) GO TO 3256
      if(EN > XIN3(NION3):
      ) GO TO 1253
      DO 2254 J=2,NION3
      if(EN <= XIN3[J]:
      ) GO TO 2255
      2254 CONTINUE
      J=NION3
      2255 A=(YIN3[J]-YIN3[J-1])/(XIN3[J]-XIN3[J-1])
      B=(XIN3[J-1]*YIN3[J]-XIN3[J]*YIN3[J-1])/(XIN3[J-1]-XIN3[J])
      QION[3][I]=(A*EN+B)*1.e-16
      GO TO 1254
      # USE BORN BETHE ABOVE XIN3(NION3) EV
      1253 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0291 
      1254 CONTINUE
      if(EN <= (2.0*EION[3]:
      )) GO TO 3256
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
      # IONISATION FOR CHARGE STATE =4
      3256 QION[4][I]=0.00
      PEQION[4][I]=0.50
      if(NANISO == 2):
      PEQION[4][I]=0.00
      if(EN <= EION[4]:
      ) GO TO 2256
      if(EN > XIN4(NION4):
      ) GO TO 3253
      DO 3254 J=2,NION4
      if(EN <= XIN4[J]:
      ) GO TO 3255
      3254 CONTINUE
      J=NION4
      3255 A=(YIN4[J]-YIN4[J-1])/(XIN4[J]-XIN4[J-1])
      B=(XIN4[J-1]*YIN4[J]-XIN4[J]*YIN4[J-1])/(XIN4[J-1]-XIN4[J])
      QION[4][I]=(A*EN+B)*1.e-16
      GO TO 1255
      # USE BORN BETHE ABOBVE XIN4(NION4) EV
      3253 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0082 
      1255 CONTINUE
      if(EN <= (2.0*EION[4]:
      )) GO TO 2256
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
      #
      # M3 SHELL IONISATION
      2256 QION[5][I]=0.00
      PEQION[5][I]=0.50
      if(NANISO == 2):
      PEQION[5][I]=0.00
      if(EN <= EION[5]:
      ) GO TO 2259
      DO 2257 J=2,NM3S
      if(EN <= XM3S[J]:
      ) GO TO 2258
      2257 CONTINUE
      J=NM3S
      2258 A=(YM3S[J]-YM3S[J-1])/(XM3S[J]-XM3S[J-1])
      B=(XM3S[J-1]*YM3S[J]-XM3S[J]*YM3S[J-1])/(XM3S[J-1]-XM3S[J])
      QION[5][I]=(A*EN+B)*1.e-16
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
      # M2 SHELL IONISATION
      2259 QION[6][I]=0.00
      PEQION[6][I]=0.50
      if(NANISO == 2):
      PEQION[6][I]=0.00
      if(EN <= EION[6]:
      ) GO TO 2262
      DO 2260 J=2,NM2S
      if(EN <= XM2S[J]:
      ) GO TO 2261
      2260 CONTINUE
      J=NM2S
      2261 A=(YM2S[J]-YM2S[J-1])/(XM2S[J]-XM2S[J-1])
      B=(XM2S[J-1]*YM2S[J]-XM2S[J]*YM2S[J-1])/(XM2S[J-1]-XM2S[J])
      QION[6][I]=(A*EN+B)*1.e-16
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])
      # M1 SHELL IONISATION
      2262 QION[7][I]=0.00
      PEQION[7][I]=0.50
      if(NANISO == 2):
      PEQION[7][I]=0.00
      if(EN <= EION[7]:
      ) GO TO 2265
      DO 2263 J=2,NM1S
      if(EN <= XM1S[J]:
      ) GO TO 2264
      2263 CONTINUE
      J=NM1S
      2264 A=(YM1S[J]-YM1S[J-1])/(XM1S[J]-XM1S[J-1])
      B=(XM1S[J-1]*YM1S[J]-XM1S[J]*YM1S[J-1])/(XM1S[J-1]-XM1S[J])
      QION[7][I]=(A*EN+B)*1.e-16
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
      # L3 SHELL IONISATION
      2265 QION[8][I]=0.00
      PEQION[8][I]=0.50
      if(NANISO == 2):
      PEQION[8][I]=0.00
      if(EN <= EION[8]:
      ) GO TO 2268
      DO 2266 J=2,NL3S
      if(EN <= XL3S[J]:
      ) GO TO 2267
      2266 CONTINUE
      J=NL3S
      2267 A=(YL3S[J]-YL3S[J-1])/(XL3S[J]-XL3S[J-1])
      B=(XL3S[J-1]*YL3S[J]-XL3S[J]*YL3S[J-1])/(XL3S[J-1]-XL3S[J])
      QION[8][I]=(A*EN+B)*1.e-16
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
      # L2 SHELL IONISATION
      2268 QION[9][I]=0.00
      PEQION[9][I]=0.50
      if(NANISO == 2):
      PEQION[9][I]=0.00
      if(EN <= EION[9]:
      ) GO TO 2271
      DO 2269 J=2,NL2S
      if(EN <= XL2S[J]:
      ) GO TO 2270
      2269 CONTINUE
      J=NL2S
      2270 A=(YL2S[J]-YL2S[J-1])/(XL2S[J]-XL2S[J-1])
      B=(XL2S[J-1]*YL2S[J]-XL2S[J]*YL2S[J-1])/(XL2S[J-1]-XL2S[J])
      QION[9][I]=(A*EN+B)*1.e-16
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
      # L1 SHELL IONISATION
      2271 QION[10][I]=0.00
      PEQION[10][I]=0.50
      if(NANISO == 2):
      PEQION[10][I]=0.00
      if(EN <= EION[10]:
      ) GO TO 2274
      DO 2272 J=2,NL1S
      if(EN <= XL1S[J]:
      ) GO TO 2273
      2272 CONTINUE
      J=NL1S
      2273 A=(YL1S[J]-YL1S[J-1])/(XL1S[J]-XL1S[J-1])
      B=(XL1S[J-1]*YL1S[J]-XL1S[J]*YL1S[J-1])/(XL1S[J-1]-XL1S[J])
      QION[10][I]=(A*EN+B)*1.e-16
      PEQION[10][I]=PEQEL[2][(I-IOFFION[10]))
      #  K SHELL IONISATION
      2274 QION[11][I]=0.00
      PEQION[11][I]=0.50
      if(NANISO == 2):
      PEQION[11][I]=0.00
      if(EN <= EION[11]:
      ) GO TO 2277
      DO 2275 J=2,NKSH
      if(EN <= XKSH[J]:
      ) GO TO 2276
      2275 CONTINUE
      J=NKSH
      2276 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
      QION[11][I]=(A*EN+B)*1.e-16
      PEQION[11][I]=PEQEL[2][(I-IOFFION[11]))
      #  ATTACHMENT                                                    
      2277 Q[4][I]=0.0
      # COUNTING IONISATION                                         
      Q[5][I]=0.0
      PEQEL[5][I]=0.50
      if(NANISO == 2):
      PEQEL[5][I]=0.00
      if(EN <= E[3]:
      ) GO TO 242
      if(EN > XION(NIONG):
      ) GO TO 241
      DO 231 J=2,NIONG
      if(EN <= XION[J]:
      ) GO TO 240
      231 CONTINUE
      J=NIONG
      240 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])
      Q[5][I]=(A*EN+B)*1.e-16
      GO TO 242
      # USE BORN BETHE X-SECTION ABOVE XION(NIONG) EV.
      241 Q[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2) 
      242 CONTINUE                                                       
      # CORRECTION TO SHARGE STATE 1 2 3 AND 4 X-SECTION FOR K L AND M SHELLS
      # GIVES TOTAL IONISATION EQUAL TO OSCILLATOR SUM
      QTEMP=QION[5][I]+QION[6][I]+QION[7][I]+QION[8][I]+QION[9][I]+QION[10][I]+QION[11][I]
      if(Q[5][I]:
      == 0.0) :
      QCORR=1.0
      else:
      QCORR=(Q[5][I]-QTEMP)/Q[5][I]
      # endif
      QION[1][I]=QION[1][I]*QCORR
      QION[2][I]=QION[2][I]*QCORR
      QION[3][I]=QION[3][I]*QCORR
      QION[4][I]=QION[4][I]*QCORR
      #
      Q[6][I]=0.0 
      #
      DO 251 NL=1,NIN+1
      QIN(NL,I)=0.00
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
      :
      PEQIN(NL,I)=0.00
      # endif
      251 CONTINUE                                                
      # 1S5                                
      if(EN <= EIN[1]:
      ) GO TO 899
      if(EN > X1S5(N1S5):
      ) GO TO 352                                
      DO 350 J=2,N1S5                                                  
      if(EN <= X1S5[J]:
      ) GO TO 351                                      
      350 CONTINUE                                                          
      J=N1S5                                                           
      351 A=(Y1S5[J]-Y1S5[J-1])/(X1S5[J]-X1S5[J-1])                     
      B=(X1S5[J-1]*Y1S5[J]-X1S5[J]*Y1S5[J-1])/(X1S5[J-1]-X1S5[J]) 
      QIN[1][I]=(A*EN+B)*1.0D-18*AN1S
      GO TO 353
      # SCALED X-SECTION ABOVE X1S5(N1S5) EV BY 1/E**3
      352 QIN[1][I]=Y1S5(N1S5)*(X1S5(N1S5)/EN)**3*1.0D-18*AN1S
      353 if(EN <= (2.0*EIN[1])) GO TO 354
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]# 1S4                                                 F=0.203
      354 if(EN <= EIN[2]) GO TO 899
      if(EN > X1S4(N1S4):
      ) GO TO 357
      DO 355 J=2,N1S4
      if(EN <= X1S4[J]:
      ) GO TO 356
      355 CONTINUE
      J=N1S4
      356 A=(Y1S4[J]-Y1S4[J-1])/(X1S4[J]-X1S4[J-1])                     
      B=(X1S4[J-1]*Y1S4[J]-X1S4[J]*Y1S4[J-1])/(X1S4[J-1]-X1S4[J]) 
      QIN[2][I]=(A*EN+B)*1.0D-18*AN1S
      GO TO 358
      357 QIN[2][I]=0.203/(EIN[2]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[2]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[2]+E[3])
      358 if(EN <= (2.0*EIN[2])) GO TO 359
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]# 1S3
      359 if(EN <= EIN[3]) GO TO 899
      if(EN > X1S3(N1S3):
      ) GO TO 362                                
      DO 360 J=2,N1S3                                                  
      if(EN <= X1S3[J]:
      ) GO TO 361                                      
      360 CONTINUE                                                          
      J=N1S3                                                           
      361 A=(Y1S3[J]-Y1S3[J-1])/(X1S3[J]-X1S3[J-1])                     
      B=(X1S3[J-1]*Y1S3[J]-X1S3[J]*Y1S3[J-1])/(X1S3[J-1]-X1S3[J]) 
      QIN[3][I]=(A*EN+B)*1.0D-18*AN1S
      GO TO 363
      # SCALED X-SECTION ABOVE X1S3(N1S3) EV BY 1/E**3
      362 QIN[3][I]=Y1S3(N1S3)*(X1S3(N1S3)/EN)**3*1.0D-18*AN1S
      363 if(EN <= (2.0*EIN[3])) GO TO 364
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]# 1S2                                                 F=0.182
      364 if(EN <= EIN[4]) GO TO 899
      if(EN > X1S2(N1S2):
      ) GO TO 367
      DO 365 J=2,N1S2
      if(EN <= X1S2[J]:
      ) GO TO 366
      365 CONTINUE
      J=N1S2
      366 A=(Y1S2[J]-Y1S2[J-1])/(X1S2[J]-X1S2[J-1])                     
      B=(X1S2[J-1]*Y1S2[J]-X1S2[J]*Y1S2[J-1])/(X1S2[J-1]-X1S2[J]) 
      QIN[4][I]=(A*EN+B)*1.0D-18*AN1S
      GO TO 368
      367 QIN[4][I]=0.182/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[4]+E[3])
      368 if(EN <= (2.0*EIN[4])) GO TO 369
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]# 2P10
      369 if(EN <= EIN[5]) GO TO 899
      if(EN > X2P10(N2P10):
      ) GO TO 372                                
      DO 370 J=2,N2P10                                                  
      if(EN <= X2P10[J]:
      ) GO TO 371                                      
      370 CONTINUE                                                          
      J=N2P10                                                           
      371 A=(Y2P10[J]-Y2P10[J-1])/(X2P10[J]-X2P10[J-1])                     
      B=(X2P10[J-1]*Y2P10[J]-X2P10[J]*Y2P10[J-1])/(X2P10[J-1]-X2P10[J]) 
      QIN[5][I]=(A*EN+B)*1.0D-18*AN2P10
      GO TO 373
      # SCALED X-SECTION ABOVE X2P10(N2P10) EV BY 1/E**3
      372 QIN[5][I]=Y2P10(N2P10)*(X2P10(N2P10)/EN)**3*1.0D-18*AN2P10
      373 if(EN <= (2.0*EIN[5])) GO TO 374
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]# 2P9
      374 if(EN <= EIN[6]) GO TO 899
      if(EN > X2P9(N2P9):
      ) GO TO 377                                
      DO 375 J=2,N2P9                                                  
      if(EN <= X2P9[J]:
      ) GO TO 376                                      
      375 CONTINUE                                                          
      J=N2P9                                                           
      376 A=(Y2P9[J]-Y2P9[J-1])/(X2P9[J]-X2P9[J-1])                     
      B=(X2P9[J-1]*Y2P9[J]-X2P9[J]*Y2P9[J-1])/(X2P9[J-1]-X2P9[J]) 
      QIN[6][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 378
      # SCALED X-SECTION ABOVE X2P9(N2P9) EV BY 1/E**3
      377 QIN[6][I]=Y2P9(N2P9)*(X2P9(N2P9)/EN)**3*1.0D-18*AN2P
      378 if(EN <= (2.0*EIN[6])) GO TO 379
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]# 2P8
      379 if(EN <= EIN[7]) GO TO 899
      if(EN > X2P8(N2P8):
      ) GO TO 382                                
      DO 380 J=2,N2P8                                                  
      if(EN <= X2P8[J]:
      ) GO TO 381                                      
      380 CONTINUE                                                          
      J=N2P8                                                           
      381 A=(Y2P8[J]-Y2P8[J-1])/(X2P8[J]-X2P8[J-1])                     
      B=(X2P8[J-1]*Y2P8[J]-X2P8[J]*Y2P8[J-1])/(X2P8[J-1]-X2P8[J]) 
      QIN[7][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 383
      # SCALED X-SECTION ABOVE X2P8(N2P8) EV BY 1/E   
      382 QIN[7][I]=Y2P8(N2P8)*(X2P8(N2P8)/EN)*1.0D-18*AN2P
      383 if(EN <= (2.0*EIN[7])) GO TO 384
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]# 2P7
      384 if(EN <= EIN[8]) GO TO 899
      if(EN > X2P7(N2P7):
      ) GO TO 387                                
      DO 385 J=2,N2P7                                                  
      if(EN <= X2P7[J]:
      ) GO TO 386                                      
      385 CONTINUE                                                          
      J=N2P7                                                           
      386 A=(Y2P7[J]-Y2P7[J-1])/(X2P7[J]-X2P7[J-1])                     
      B=(X2P7[J-1]*Y2P7[J]-X2P7[J]*Y2P7[J-1])/(X2P7[J-1]-X2P7[J]) 
      QIN[8][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 388
      # SCALED X-SECTION ABOVE X2P7(N2P7) EV BY 1/E**3
      387 QIN[8][I]=Y2P7(N2P7)*(X2P7(N2P7)/EN)**3*1.0D-18*AN2P
      388 if(EN <= (2.0*EIN[8])) GO TO 389
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]# 2P6
      389 if(EN <= EIN[9]) GO TO 899
      if(EN > X2P6(N2P6):
      ) GO TO 392                                
      DO 390 J=2,N2P6                                                  
      if(EN <= X2P6[J]:
      ) GO TO 391                                      
      390 CONTINUE                                                          
      J=N2P6                                                           
      391 A=(Y2P6[J]-Y2P6[J-1])/(X2P6[J]-X2P6[J-1])                     
      B=(X2P6[J-1]*Y2P6[J]-X2P6[J]*Y2P6[J-1])/(X2P6[J-1]-X2P6[J]) 
      QIN[9][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 393
      # SCALED X-SECTION ABOVE X2P6(N2P6) EV BY 1/E   
      392 QIN[9][I]=Y2P6(N2P6)*(X2P6(N2P6)/EN)*1.0D-18*AN2P
      393 if(EN <= (2.0*EIN[9])) GO TO 394
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]# 2P5
      394 if(EN <= EIN[10]) GO TO 899
      if(EN > X2P5(N2P5):
      ) GO TO 397                                
      DO 395 J=2,N2P5                                                  
      if(EN <= X2P5[J]:
      ) GO TO 396                                      
      395 CONTINUE                                                          
      J=N2P5                                                           
      396 A=(Y2P5[J]-Y2P5[J-1])/(X2P5[J]-X2P5[J-1])                     
      B=(X2P5[J-1]*Y2P5[J]-X2P5[J]*Y2P5[J-1])/(X2P5[J-1]-X2P5[J]) 
      QIN[10][I]=(A*EN+B)*1.0D-18*AN2P5
      GO TO 398
      # SCALED X-SECTION ABOVE X2P5(N2P5) EV BY 1/E   
      397 QIN[10][I]=Y2P5(N2P5)*(X2P5(N2P5)/EN)*1.0D-18*AN2P5
      398 if(EN <= (2.0*EIN[10])) GO TO 399
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      # 3D6
      399 if(EN <= EIN[11]) GO TO 899
      if(EN > X3D6(N3D6):
      ) GO TO 402                                
      DO 400 J=2,N3D6                                                  
      if(EN <= X3D6[J]:
      ) GO TO 401                                      
      400 CONTINUE                                                          
      J=N3D6                                                           
      401 A=(Y3D6[J]-Y3D6[J-1])/(X3D6[J]-X3D6[J-1])                     
      B=(X3D6[J-1]*Y3D6[J]-X3D6[J]*Y3D6[J-1])/(X3D6[J-1]-X3D6[J]) 
      QIN[11][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 403
      # SCALED X-SECTION ABOVE X3D6(N3D6) EV BY 1/E**3
      402 QIN[11][I]=Y3D6(N3D6)*(X3D6(N3D6)/EN)**3*1.0D-18*AN3D
      403 if(EN <= (2.0*EIN[11])) GO TO 404
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      # 3D5
      404 if(EN <= EIN[12]) GO TO 899
      if(EN > X3D5(N3D5):
      ) GO TO 407                                
      DO 405 J=2,N3D5                                                  
      if(EN <= X3D5[J]:
      ) GO TO 406                                      
      405 CONTINUE                                                          
      J=N3D5                                                           
      406 A=(Y3D5[J]-Y3D5[J-1])/(X3D5[J]-X3D5[J-1])                     
      B=(X3D5[J-1]*Y3D5[J]-X3D5[J]*Y3D5[J-1])/(X3D5[J-1]-X3D5[J]) 
      QIN[12][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 408
      # USE BEF SCALING ABOVE X3D5(N3D5) EV                      F=0.0053
      407 QIN[12][I]=0.0053/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])     
      if(QIN[12][I]:
      < 0.0) QIN[12][I]=0.00
      408 if(EN <= (2.0*EIN[12])) GO TO 409
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
      # 2P4
      409 if(EN <= EIN[13]) GO TO 899
      if(EN > X2P4(N2P4):
      ) GO TO 412                                
      DO 410 J=2,N2P4                                                  
      if(EN <= X2P4[J]:
      ) GO TO 411                                      
      410 CONTINUE                                                          
      J=N2P4                                                           
      411 A=(Y2P4[J]-Y2P4[J-1])/(X2P4[J]-X2P4[J-1])                     
      B=(X2P4[J-1]*Y2P4[J]-X2P4[J]*Y2P4[J-1])/(X2P4[J-1]-X2P4[J]) 
      QIN[13][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 413
      # SCALED X-SECTION ABOVE X2P4(N2P4) EV BY 1/E**3
      412 QIN[13][I]=Y2P4(N2P4)*(X2P4(N2P4)/EN)**3*1.0D-18*AN2P
      413 if(EN <= (2.0*EIN[13])) GO TO 414
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
      # 3D3
      414 if(EN <= EIN[14]) GO TO 899
      if(EN > X3D3(N3D3):
      ) GO TO 417                                
      DO 415 J=2,N3D3                                                  
      if(EN <= X3D3[J]:
      ) GO TO 416                                      
      415 CONTINUE                                                          
      J=N3D3                                                           
      416 A=(Y3D3[J]-Y3D3[J-1])/(X3D3[J]-X3D3[J-1])                     
      B=(X3D3[J-1]*Y3D3[J]-X3D3[J]*Y3D3[J-1])/(X3D3[J-1]-X3D3[J]) 
      QIN[14][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 418
      # SCALED X-SECTION ABOVE X3D3(N3D3) EV BY 1/E**3
      417 QIN[14][I]=Y3D3(N3D3)*(X3D3(N3D3)/EN)**3*1.0D-18*AN3D
      418 if(EN <= (2.0*EIN[14])) GO TO 419
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
      # 3D4P
      419 if(EN <= EIN[15]) GO TO 899
      if(EN > X3D4P(N3D4P):
      ) GO TO 422                                
      DO 420 J=2,N3D4P                                                  
      if(EN <= X3D4P[J]:
      ) GO TO 421                                      
      420 CONTINUE                                                          
      J=N3D4P                                                           
      421 A=(Y3D4P[J]-Y3D4P[J-1])/(X3D4P[J]-X3D4P[J-1])                     
      B=(X3D4P[J-1]*Y3D4P[J]-X3D4P[J]*Y3D4P[J-1])/(X3D4P[J-1]-X3D4P[J]) 
      QIN[15][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 423
      # SCALED X-SECTION ABOVE X3D4P(N3D4P) EV BY 1/E**3
      422 QIN[15][I]=Y3D4P(N3D4P)*(X3D4P(N3D4P)/EN)**3*1.0D-18*AN3D
      423 if(EN <= (2.0*EIN[15])) GO TO 424
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
      # 2P3 
      424 if(EN <= EIN[16]) GO TO 899
      if(EN > X2P3(N2P3):
      ) GO TO 427                                
      DO 425 J=2,N2P3                                                  
      if(EN <= X2P3[J]:
      ) GO TO 426                                      
      425 CONTINUE                                                          
      J=N2P3                                                           
      426 A=(Y2P3[J]-Y2P3[J-1])/(X2P3[J]-X2P3[J-1])                     
      B=(X2P3[J-1]*Y2P3[J]-X2P3[J]*Y2P3[J-1])/(X2P3[J-1]-X2P3[J]) 
      QIN[16][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 428
      # SCALED X-SECTION ABOVE X2P3(N2P3) EV BY 1/E**3
      427 QIN[16][I]=Y2P3(N2P3)*(X2P3(N2P3)/EN)**3*1.0D-18*AN2P
      428 if(EN <= (2.0*EIN[16])) GO TO 429
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
      # 2P2 
      429 if(EN <= EIN[17]) GO TO 899
      if(EN > X2P2(N2P2):
      ) GO TO 432                                
      DO 430 J=2,N2P2                                                  
      if(EN <= X2P2[J]:
      ) GO TO 431                                      
      430 CONTINUE                                                          
      J=N2P2                                                           
      431 A=(Y2P2[J]-Y2P2[J-1])/(X2P2[J]-X2P2[J-1])                     
      B=(X2P2[J-1]*Y2P2[J]-X2P2[J]*Y2P2[J-1])/(X2P2[J-1]-X2P2[J]) 
      QIN[17][I]=(A*EN+B)*1.0D-18*AN2P
      GO TO 433
      # SCALED X-SECTION ABOVE X2P2(N2P2) EV BY 1/E   
      432 QIN[17][I]=Y2P2(N2P2)*(X2P2(N2P2)/EN)*1.0D-18*AN2P
      433 if(EN <= (2.0*EIN[17])) GO TO 434
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
      # 3D4 
      434 if(EN <= EIN[18]) GO TO 899
      if(EN > X3D4(N3D4):
      ) GO TO 437                                
      DO 435 J=2,N3D4                                                  
      if(EN <= X3D4[J]:
      ) GO TO 436                                      
      435 CONTINUE                                                          
      J=N3D4                                                           
      436 A=(Y3D4[J]-Y3D4[J-1])/(X3D4[J]-X3D4[J-1])                     
      B=(X3D4[J-1]*Y3D4[J]-X3D4[J]*Y3D4[J-1])/(X3D4[J-1]-X3D4[J]) 
      QIN[18][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 438
      # SCALED X-SECTION ABOVE X3D4(N3D4) EV BY 1/E   
      437 QIN[18][I]=Y3D4(N3D4)*(X3D4(N3D4)/EN)*1.0D-18*AN3D
      438 if(EN <= (2.0*EIN[18])) GO TO 439
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      # 2P1 
      439 if(EN <= EIN[19]) GO TO 899
      if(EN > X2P1(N2P1):
      ) GO TO 442                                
      DO 440 J=2,N2P1                                                  
      if(EN <= X2P1[J]:
      ) GO TO 441                                      
      440 CONTINUE                                                          
      J=N2P1                                                           
      441 A=(Y2P1[J]-Y2P1[J-1])/(X2P1[J]-X2P1[J-1])                     
      B=(X2P1[J-1]*Y2P1[J]-X2P1[J]*Y2P1[J-1])/(X2P1[J-1]-X2P1[J]) 
      QIN[19][I]=(A*EN+B)*1.0D-18*AN2P1
      GO TO 443
      # SCALED X-SECTION ABOVE X2P1(N2P1) EV BY 1/E   
      442 QIN[19][I]=Y2P1(N2P1)*(X2P1(N2P1)/EN)*1.0D-18*AN2P1
      443 if(EN <= (2.0*EIN[19])) GO TO 444
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
      # 3D1PP
      444 if(EN <= EIN[20]) GO TO 899
      if(EN > X3D1PP(N3D1PP):
      ) GO TO 447                                
      DO 445 J=2,N3D1PP                                                
      if(EN <= X3D1PP[J]:
      ) GO TO 446
      445 CONTINUE                                    
      J=N3D1PP                                                         
      446 A=(Y3D1PP[J]-Y3D1PP[J-1])/(X3D1PP[J]-X3D1PP[J-1])                
      B=(X3D1PP[J-1]*Y3D1PP[J]-X3D1PP[J]*Y3D1PP[J-1])/(X3D1PP[J-1]-X3D1PP[J]) 
      QIN[20][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 448
      # SCALED X-SECTION ABOVE X3D1PP(N3D1PP) EV BY 1/E**3   
      447 QIN[20][I]=Y3D1PP(N3D1PP)*(X3D1PP(N3D1PP)/EN)**3*1.0D-18*AN3D
      448 if(EN <= (2.0*EIN[20])) GO TO 449
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      # 3D1P 
      449 if(EN <= EIN[21]) GO TO 899
      if(EN > X3D1P(N3D1P):
      ) GO TO 452                                
      DO 450 J=2,N3D1P                                                
      if(EN <= X3D1P[J]:
      ) GO TO 451
      450 CONTINUE                                    
      J=N3D1P                                                         
      451 A=(Y3D1P[J]-Y3D1P[J-1])/(X3D1P[J]-X3D1P[J-1])                
      B=(X3D1P[J-1]*Y3D1P[J]-X3D1P[J]*Y3D1P[J-1])/(X3D1P[J-1]-X3D1P[J]) 
      QIN[21][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 453
      # SCALED X-SECTION ABOVE X3D1P(N3D1P) EV BY 1/E  
      452 QIN[21][I]=Y3D1P(N3D1P)*(X3D1P(N3D1P)/EN)*1.0D-18*AN3D
      453 if(EN <= (2.0*EIN[21])) GO TO 454
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
      # 2S5  
      454 if(EN <= EIN[22]) GO TO 899
      if(EN > X2S5(N2S5):
      ) GO TO 457                                
      DO 455 J=2,N2S5                                                
      if(EN <= X2S5[J]:
      ) GO TO 456
      455 CONTINUE                                    
      J=N2S5                                                         
      456 A=(Y2S5[J]-Y2S5[J-1])/(X2S5[J]-X2S5[J-1])                
      B=(X2S5[J-1]*Y2S5[J]-X2S5[J]*Y2S5[J-1])/(X2S5[J-1]-X2S5[J]) 
      QIN[22][I]=(A*EN+B)*1.0D-18*AN1S    
      GO TO 458
      # SCALED X-SECTION ABOVE X2S5(N2S5) EV BY 1/E**3  
      457 QIN[22][I]=Y2S5(N2S5)*(X2S5(N2S5)/EN)**3*1.0D-18*AN1S
      458 if(EN <= (2.0*EIN[22])) GO TO 459
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
      # 3D2  BEF SCALED                                         F=0.082
      459 if(EN <= EIN[23]) GO TO 899
      QIN[23][I]=0.082/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+E[3])
      if(QIN[23][I]:
      < 0.0) QIN[23][I]=0.00
      if(EN <= (2.0*EIN[23]:
      )) GO TO 460
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
      # 2S4  BEF SCALED                                         F=0.154
      460 if(EN <= EIN[24]) GO TO 899
      QIN[24][I]=0.154/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])
      if(QIN[24][I]:
      < 0.0) QIN[24][I]=0.0
      if(EN <= (2.0*EIN[24]:
      )) GO TO 461
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      # 3P10 
      461 if(EN <= EIN[25]) GO TO 899
      if(EN > X3P10(N3P10):
      ) GO TO 464                                
      DO 462 J=2,N3P10                                                
      if(EN <= X3P10[J]:
      ) GO TO 463
      462 CONTINUE                                    
      J=N3P10                                                         
      463 A=(Y3P10[J]-Y3P10[J-1])/(X3P10[J]-X3P10[J-1])                
      B=(X3P10[J-1]*Y3P10[J]-X3P10[J]*Y3P10[J-1])/(X3P10[J-1]-X3P10[J]) 
      QIN[25][I]=(A*EN+B)*1.0D-18*AN3P
      GO TO 465
      # SCALED X-SECTION ABOVE X3P10(N3P10) EV BY 1/E**3  
      464 QIN[25][I]=Y3P10(N3P10)*(X3P10(N3P10)/EN)**3*1.0D-18*AN3P
      465 if(EN <= (2.0*EIN[25])) GO TO 466
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
      # 3P9  
      466 if(EN <= EIN[26]) GO TO 899
      if(EN > X3P9(N3P9):
      ) GO TO 469                                
      DO 467 J=2,N3P9                                                
      if(EN <= X3P9[J]:
      ) GO TO 468
      467 CONTINUE                                    
      J=N3P9                                                         
      468 A=(Y3P9[J]-Y3P9[J-1])/(X3P9[J]-X3P9[J-1])                
      B=(X3P9[J-1]*Y3P9[J]-X3P9[J]*Y3P9[J-1])/(X3P9[J-1]-X3P9[J]) 
      QIN[26][I]=(A*EN+B)*1.0D-18*AN3P
      GO TO 470
      # SCALED X-SECTION ABOVE X3P9(N3P9) EV BY 1/E**3  
      469 QIN[26][I]=Y3P9(N3P9)*(X3P9(N3P9)/EN)**3*1.0D-18*AN3P
      470 if(EN <= (2.0*EIN[26])) GO TO 471
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
      # 3P8  
      471 if(EN <= EIN[27]) GO TO 899
      if(EN > X3P8(N3P8):
      ) GO TO 474                                
      DO 472 J=2,N3P8                                                
      if(EN <= X3P8[J]:
      ) GO TO 473
      472 CONTINUE                                    
      J=N3P8                                                         
      473 A=(Y3P8[J]-Y3P8[J-1])/(X3P8[J]-X3P8[J-1])                
      B=(X3P8[J-1]*Y3P8[J]-X3P8[J]*Y3P8[J-1])/(X3P8[J-1]-X3P8[J]) 
      QIN[27][I]=(A*EN+B)*1.0D-18*AN3P
      GO TO 475
      # SCALED X-SECTION ABOVE X3P8(N3P8) EV BY 1/E     
      474 QIN[27][I]=Y3P8(N3P8)*(X3P8(N3P8)/EN)*1.0D-18*AN3P
      475 if(EN <= (2.0*EIN[27])) GO TO 476
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
      # 3S1PP  
      476 if(EN <= EIN[28]) GO TO 899
      if(EN > X3S1PP(N3S1PP):
      ) GO TO 479                                
      DO 477 J=2,N3S1PP                                                
      if(EN <= X3S1PP[J]:
      ) GO TO 478
      477 CONTINUE                                    
      J=N3S1PP                                                        
      478 A=(Y3S1PP[J]-Y3S1PP[J-1])/(X3S1PP[J]-X3S1PP[J-1])                
      B=(X3S1PP[J-1]*Y3S1PP[J]-X3S1PP[J]*Y3S1PP[J-1])/(X3S1PP[J-1]-X3S1PP[J]) 
      QIN[28][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 480
      # SCALED X-SECTION ABOVE X3S1PP(N3S1PP) EV BY 1/E**3     
      479 QIN[28][I]=Y3S1PP(N3S1PP)*(X3S1PP(N3S1PP)/EN)**3*1.0D-18*AN3D
      480 if(EN <= (2.0*EIN[28])) GO TO 481
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
      # 3P7    
      481 if(EN <= EIN[29]) GO TO 899
      if(EN > X3P7(N3P7):
      ) GO TO 484                                
      DO 482 J=2,N3P7                                                
      if(EN <= X3P7[J]:
      ) GO TO 483
      482 CONTINUE                                    
      J=N3P7                                                        
      483 A=(Y3P7[J]-Y3P7[J-1])/(X3P7[J]-X3P7[J-1])                
      B=(X3P7[J-1]*Y3P7[J]-X3P7[J]*Y3P7[J-1])/(X3P7[J-1]-X3P7[J]) 
      QIN[29][I]=(A*EN+B)*1.0D-18*AN3P
      GO TO 485
      # SCALED X-SECTION ABOVE X3P7(N3P7) EV BY 1/E**3     
      484 QIN[29][I]=Y3P7(N3P7)*(X3P7(N3P7)/EN)**3*1.0D-18*AN3P
      485 if(EN <= (2.0*EIN[29])) GO TO 486
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
      # 3P6    
      486 if(EN <= EIN[30]) GO TO 899
      if(EN > X3P6(N3P6):
      ) GO TO 489                                
      DO 487 J=2,N3P6                                                
      if(EN <= X3P6[J]:
      ) GO TO 488
      487 CONTINUE                                    
      J=N3P6                                                        
      488 A=(Y3P6[J]-Y3P6[J-1])/(X3P6[J]-X3P6[J-1])                
      B=(X3P6[J-1]*Y3P6[J]-X3P6[J]*Y3P6[J-1])/(X3P6[J-1]-X3P6[J]) 
      QIN[30][I]=(A*EN+B)*1.0D-18*AN3P
      GO TO 490
      # SCALED X-SECTION ABOVE X3P6(N3P6) EV BY 1/E        
      489 QIN[30][I]=Y3P6(N3P6)*(X3P6(N3P6)/EN)*1.0D-18*AN3P
      490 if(EN <= (2.0*EIN[30])) GO TO 491
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      # 3S1PPPP    
      491 if(EN <= EIN[31]) GO TO 899
      if(EN > X3S1PPPP(N3S1PPPP):
      ) GO TO 494                            
      DO 492 J=2,N3S1PPPP                                            
      if(EN <= X3S1PPPP[J]:
      ) GO TO 493
      492 CONTINUE                                    
      J=N3S1PPPP                                                        
      493 A=(Y3S1PPPP[J]-Y3S1PPPP[J-1])/(X3S1PPPP[J]-X3S1PPPP[J-1])       
      B=(X3S1PPPP[J-1]*Y3S1PPPP[J]-X3S1PPPP[J]*Y3S1PPPP[J-1])/(X3S1PPPP[J-1]-X3S1PPPP[J]) 
      QIN[31][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 495
      # SCALED X-SECTION ABOVE X3S1PPPP(N3S1PPPP) EV BY 1/E**3        
      494 QIN[31][I]=Y3S1PPPP(N3S1PPPP)*(X3S1PPPP(N3S1PPPP)/EN)**3*1.0D-18*AN3D
      495 if(EN <= (2.0*EIN[31])) GO TO 496
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
      # 3S1PPP    
      496 if(EN <= EIN[32]) GO TO 899
      if(EN > X3S1PPP(N3S1PPP):
      ) GO TO 499                            
      DO 497 J=2,N3S1PPP                                            
      if(EN <= X3S1PPP[J]:
      ) GO TO 498
      497 CONTINUE                                    
      J=N3S1PPP                                                        
      498 A=(Y3S1PPP[J]-Y3S1PPP[J-1])/(X3S1PPP[J]-X3S1PPP[J-1])       
      B=(X3S1PPP[J-1]*Y3S1PPP[J]-X3S1PPP[J]*Y3S1PPP[J-1])/(X3S1PPP[J-1]-X3S1PPP[J]) 
      QIN[32][I]=(A*EN+B)*1.0D-18*AN3D
      GO TO 500
      # SCALED X-SECTION ABOVE X3S1PPP(N3S1PPP) EV BY 1/E        
      499 QIN[32][I]=Y3S1PPP(N3S1PPP)*(X3S1PPP(N3S1PPP)/EN)*1.0D-18*AN3D
      500 if(EN <= (2.0*EIN[32])) GO TO 501
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
      # 3P5    
      501 if(EN <= EIN[33]) GO TO 899
      if(EN > X3P5(N3P5):
      ) GO TO 504                            
      DO 502 J=2,N3P5                                            
      if(EN <= X3P5[J]:
      ) GO TO 503
      502 CONTINUE                                    
      J=N3P5                                                        
      503 A=(Y3P5[J]-Y3P5[J-1])/(X3P5[J]-X3P5[J-1])       
      B=(X3P5[J-1]*Y3P5[J]-X3P5[J]*Y3P5[J-1])/(X3P5[J-1]-X3P5[J]) 
      QIN[33][I]=(A*EN+B)*1.0D-18*AN3P5
      GO TO 505
      # SCALED X-SECTION ABOVE X3P5(N3P5) EV BY 1/E        
      504 QIN[33][I]=Y3P5(N3P5)*(X3P5(N3P5)/EN)*1.0D-18*AN3P5
      505 if(EN <= (2.0*EIN[33])) GO TO 506
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
      # 4D5  BEF SCALED                                          F=0.0140
      506 if(EN <= EIN[34]) GO TO 899
      QIN[34][I]=0.014/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])
      if(QIN[34][I]:
      < 0.0) QIN[34][I]=0.00
      if(EN <= (2.0*EIN[34]:
      )) GO TO 507
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      # 4D6    
      507 if(EN <= EIN[35]) GO TO 899
      if(EN > X4D6(N4D6):
      ) GO TO 510                            
      DO 508 J=2,N4D6                                            
      if(EN <= X4D6[J]:
      ) GO TO 509
      508 CONTINUE                                    
      J=N4D6                                                        
      509 A=(Y4D6[J]-Y4D6[J-1])/(X4D6[J]-X4D6[J-1])       
      B=(X4D6[J-1]*Y4D6[J]-X4D6[J]*Y4D6[J-1])/(X4D6[J-1]-X4D6[J]) 
      QIN[35][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 511
      # SCALED X-SECTION ABOVE X4D6(N4D6) EV BY 1/E**3     
      510 QIN[35][I]=Y4D6(N4D6)*(X4D6(N4D6)/EN)**3*1.0D-18*AN4D
      511 if(EN <= (2.0*EIN[35])) GO TO 512
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      # 4D4P   
      512 if(EN <= EIN[36]) GO TO 899
      if(EN > X4D4P(N4D4P):
      ) GO TO 515                            
      DO 513 J=2,N4D4P                                            
      if(EN <= X4D4P[J]:
      ) GO TO 514
      513 CONTINUE                                    
      J=N4D4P                                                       
      514 A=(Y4D4P[J]-Y4D4P[J-1])/(X4D4P[J]-X4D4P[J-1])       
      B=(X4D4P[J-1]*Y4D4P[J]-X4D4P[J]*Y4D4P[J-1])/(X4D4P[J-1]-X4D4P[J]) 
      QIN[36][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 516
      # SCALED X-SECTION ABOVE X4D4P(N4D4P) EV BY 1/E**3     
      515 QIN[36][I]=Y4D4P(N4D4P)*(X4D4P(N4D4P)/EN)**3*1.0D-18*AN4D
      516 if(EN <= (2.0*EIN[36])) GO TO 517
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      # 3S1P        BEF SCALED                                     F=0.0435
      517 if(EN <= EIN[37]) GO TO 899
      QIN[37][I]=0.0435/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])
      if(QIN[37][I]:
      < 0.0) QIN[37][I]=0.00
      if(EN <= (2.0*EIN[37]:
      )) GO TO 518
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      # 4D4    
      518 if(EN <= EIN[38]) GO TO 899
      if(EN > X4D4(N4D4):
      ) GO TO 521                          
      DO 519 J=2,N4D4                                            
      if(EN <= X4D4[J]:
      ) GO TO 520
      519 CONTINUE                                    
      J=N4D4                                                       
      520 A=(Y4D4[J]-Y4D4[J-1])/(X4D4[J]-X4D4[J-1])       
      B=(X4D4[J-1]*Y4D4[J]-X4D4[J]*Y4D4[J-1])/(X4D4[J-1]-X4D4[J]) 
      QIN[38][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 522
      # SCALED X-SECTION ABOVE X4D4(N4D4) EV BY 1/E     
      521 QIN[38][I]=Y4D4(N4D4)*(X4D4(N4D4)/EN)*1.0D-18*AN4D
      522 if(EN <= (2.0*EIN[38])) GO TO 523
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      # 4D3    
      523 if(EN <= EIN[39]) GO TO 899
      if(EN > X4D3(N4D3):
      ) GO TO 526                            
      DO 524 J=2,N4D3                                            
      if(EN <= X4D3[J]:
      ) GO TO 525
      524 CONTINUE                                    
      J=N4D3                                                       
      525 A=(Y4D3[J]-Y4D3[J-1])/(X4D3[J]-X4D3[J-1])       
      B=(X4D3[J-1]*Y4D3[J]-X4D3[J]*Y4D3[J-1])/(X4D3[J-1]-X4D3[J]) 
      QIN[39][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 527
      # SCALED X-SECTION ABOVE X4D3(N4D3) EV BY 1/E**3  
      526 QIN[39][I]=Y4D3(N4D3)*(X4D3(N4D3)/EN)**3*1.0D-18*AN4D
      527 if(EN <= (2.0*EIN[39])) GO TO 528
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      # 2S3    
      528 if(EN <= EIN[40]) GO TO 899
      if(EN > X2S3(N2S3):
      ) GO TO 531                        
      DO 529 J=2,N2S3                                            
      if(EN <= X2S3[J]:
      ) GO TO 530
      529 CONTINUE                                    
      J=N2S3                                                       
      530 A=(Y2S3[J]-Y2S3[J-1])/(X2S3[J]-X2S3[J-1])       
      B=(X2S3[J-1]*Y2S3[J]-X2S3[J]*Y2S3[J-1])/(X2S3[J-1]-X2S3[J]) 
      QIN[40][I]=(A*EN+B)*1.0D-18*AN1S     
      GO TO 532
      # SCALED X-SECTION ABOVE X2S3(N2S3) EV BY 1/E**3  
      531 QIN[40][I]=Y2S3(N2S3)*(X2S3(N2S3)/EN)**3*1.0D-18*AN1S
      532 if(EN <= (2.0*EIN[40])) GO TO 533
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      # 2S2         BEF SCALED                                 F=0.0105
      533 if(EN <= EIN[41]) GO TO 899
      QIN[41][I]=0.0105/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3])
      if(QIN[41][I]:
      < 0.0) QIN[41][I]=0.00
      if(EN <= (2.0*EIN[41]:
      )) GO TO 534
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      # 4D1PP    
      534 if(EN <= EIN[42]) GO TO 899
      if(EN > X4D1PP(N4D1PP):
      ) GO TO 537                            
      DO 535 J=2,N4D1PP                                            
      if(EN <= X4D1PP[J]:
      ) GO TO 536
      535 CONTINUE                                    
      J=N4D1PP                                                       
      536 A=(Y4D1PP[J]-Y4D1PP[J-1])/(X4D1PP[J]-X4D1PP[J-1])       
      B=(X4D1PP[J-1]*Y4D1PP[J]-X4D1PP[J]*Y4D1PP[J-1])/(X4D1PP[J-1]-X4D1PP[J]) 
      QIN[42][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 538
      # SCALED X-SECTION ABOVE X4D1PP(N4D1PP) EV BY 1/E**3  
      537 QIN[42][I]=Y4D1PP(N4D1PP)*(X4D1PP(N4D1PP)/EN)**3*1.0D-18*AN4D
      538 if(EN <= (2.0*EIN[42])) GO TO 539
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      # 4D1P   
      539 if(EN <= EIN[43]) GO TO 899
      if(EN > X4D1P(N4D1P):
      ) GO TO 542                            
      DO 540 J=2,N4D1P                                            
      if(EN <= X4D1P[J]:
      ) GO TO 541
      540 CONTINUE                                    
      J=N4D1P                                                       
      541 A=(Y4D1P[J]-Y4D1P[J-1])/(X4D1P[J]-X4D1P[J-1])       
      B=(X4D1P[J-1]*Y4D1P[J]-X4D1P[J]*Y4D1P[J-1])/(X4D1P[J-1]-X4D1P[J]) 
      QIN[43][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 543
      # SCALED X-SECTION ABOVE X4D1P(N4D1P) EV BY 1/E**3  
      542 QIN[43][I]=Y4D1P(N4D1P)*(X4D1P(N4D1P)/EN)**3*1.0D-18*AN4D
      543 if(EN <= (2.0*EIN[43])) GO TO 544
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      # 3S5    
      544 if(EN <= EIN[44]) GO TO 899
      if(EN > X3S5(N3S5):
      ) GO TO 547                            
      DO 545 J=2,N3S5                                           
      if(EN <= X3S5[J]:
      ) GO TO 546
      545 CONTINUE                                    
      J=N3S5                                                       
      546 A=(Y3S5[J]-Y3S5[J-1])/(X3S5[J]-X3S5[J-1])       
      B=(X3S5[J-1]*Y3S5[J]-X3S5[J]*Y3S5[J-1])/(X3S5[J-1]-X3S5[J]) 
      QIN[44][I]=(A*EN+B)*1.0D-18*AN1S
      GO TO 548
      # SCALED X-SECTION ABOVE X3S5(N3S5) EV BY 1/E**3  
      547 QIN[44][I]=Y3S5(N3S5)*(X3S5(N3S5)/EN)**3*1.0D-18*AN1S
      548 if(EN <= (2.0*EIN[44])) GO TO 549
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      # 4D2         BEF SCALED                                   F=0.0970
      549 if(EN <= EIN[45]) GO TO 899
      QIN[45][I]=0.0970/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      if(QIN[45][I]:
      < 0.0) QIN[45][I]=0.00
      if(EN <= (2.0*EIN[45]:
      )) GO TO 550
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      # 3S4         BEF SCALED                                   F=0.0808
      550 if(EN <= EIN[46]) GO TO 899
      QIN[46][I]=0.0808/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      if(QIN[46][I]:
      < 0.0) QIN[46][I]=0.00
      if(EN <= (2.0*EIN[46]:
      )) GO TO 551 
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
      # 4FS   
      551 if(EN <= EIN[47]) GO TO 899
      if(EN > X4FS(N4FS):
      ) GO TO 554                            
      DO 552 J=2,N4FS                                           
      if(EN <= X4FS[J]:
      ) GO TO 553
      552 CONTINUE                                    
      J=N4FS                                                       
      553 A=(Y4FS[J]-Y4FS[J-1])/(X4FS[J]-X4FS[J-1])       
      B=(X4FS[J-1]*Y4FS[J]-X4FS[J]*Y4FS[J-1])/(X4FS[J-1]-X4FS[J]) 
      QIN[47][I]=(A*EN+B)*1.0D-18*AN4D
      GO TO 555
      # SCALED X-SECTION ABOVE X4FS(N4FS) EV BY 1/E  
      554 QIN[47][I]=Y4FS(N4FS)*(X4FS(N4FS)/EN)*1.0D-18*AN4D
      555 if(EN <= (2.0*EIN[47])) GO TO 556
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
      # 5D5         BEF SCALED                                  F=0.0015
      556 if(EN <= EIN[48]) GO TO 899
      QIN[48][I]=0.0015/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      if(QIN[48][I]:
      < 0.0) QIN[48][I]=0.00
      if(EN <= (2.0*EIN[48]:
      )) GO TO 557
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
      # 5D2         BEF SCALED                                   F=0.0439
      557 if(EN <= EIN[49]) GO TO 899
      QIN[49][I]=0.0439/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      if(QIN[49][I]:
      < 0.0) QIN[49][I]=0.00
      if(EN <= (2.0*EIN[49]:
      )) GO TO 558
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      # 4S4         BEF SCALED                                   F=0.0203
      558 if(EN <= EIN[50]) GO TO 899
      QIN[50][I]=0.0203/(EIN[50]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[50]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[50]+E[3])
      if(QIN[50][I]:
      < 0.0) QIN[50][I]=0.00
      if(EN <= (2.0*EIN[50]:
      )) GO TO 559
      PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])]
      # SUM OF HIGHER DIPOLE STATES       BEF SCALED              F=0.1680
      559 if(EN <= EIN[51]) GO TO 899
      QIN[51][I]=0.1680/(EIN[51]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[51]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[51]+E[3])
      if(QIN[51][I]:
      < 0.0) QIN[51][I]=0.00
      if(EN <= (2.0*EIN[51]:
      )) GO TO 899
      PEQIN[51][I]=PEQEL[2][(I-IOFFN[51])]
      # LOAD BREMSSTRAHLUNG X-SECTIONS
      if(EN <= 1000.):
      GO TO 899
      DO 600 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 610
      600 CONTINUE
      J=NBREM
      610 A=(math.log(Z36T[J])-math.log(Z36T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z36T[J])*EBRM[J-1]-math.log(Z36T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[52][I]=math.exp(A*EN+B)*1.e-24
      899 CONTINUE  
      # 
      # CALCULATE TOTAL X-SECTION                           
      Q1SUM=QIN[1][I]+QIN[2][I]+QIN[3][I]+QIN[4][I] 
      Q2SUM=QIN[5][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]+QIN[9][I]+QIN[10][I]
      Q3SUM=0.0
      Q4SUM=0.0
      DO 700 JK=11,24
      700 Q3SUM=Q3SUM+QIN(JK,I)
      DO 701 JK=25,51
      701 Q4SUM=Q4SUM+QIN(JK,I)
      QINEL=Q1SUM+Q2SUM+Q3SUM+Q4SUM
      Q[1][I]=QELA+QINEL+QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]+QION[8][I]+QION[9][I]+QION[10][I]+QION[11][I]+QIN[52][I]
      #     WRITE(6,8976) EN,Q1SUM,Q2SUM,Q3SUM,Q4SUM,QINEL
      #8976 print(' EN=',F9.1,' Q1=','%.3f' %,' Q2=','%.3f' %,' Q3=','%.3f' %,' Q4=',
      #    /'%.3f' %,' QSUM=','%.3f' %)       
      900 CONTINUE  
      #  SAVE COMPUTE TIME 
      DO 910 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 911
      # endif 
      910 CONTINUE
      911 CONTINUE
      if(EFINAL > 1000.):
      NIN=52
      return                                                            
      # end
def GAS7(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN) 
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]         
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]   
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION XEN(182),YMOM(182),XEL(153),YEL(153),XEPS(182),YEPS(182)
      DIMENSION XION(76),YION(76),YINC(76),YIN1(76),XIN2[54],YIN2[54],XIN3[47],YIN3[47],XIN4[42],YIN4[42],XIN5[37],YIN5[37],XIN6[35],YIN6[35],XKSH[60],YKSH[60],XL1S(76),YL1S(76),XL2S(76),YL2S(76),XL3S(76),YL3S(76),XM1S(79),YM1S(79),XM2S(80),YM2S(80),XM3S(80),YM3S(80),XM4S(82),YM4S(82),XM5S(83),YM5S(83)
      DIMENSION X1S5(70),Y1S5(70),YP1S5(70),X1S4[38],Y1S4[38],YP1S4[38],X1S3[46],Y1S3[46],YP1S3[46],X1S2[20],Y1S2[20],YP1S2[20],X2P10[22],Y2P10[22],YP2P10[22],X2P9[21],Y2P9[21],YP2P9[21],X2P8[22],Y2P8[22],YP2P8[22],X2P7[22],Y2P7[22],YP2P7[22],X2P6[22],Y2P6[22],YP2P6[22],X3D6[24],Y3D6[24],YP3D6[24],X2P5[15],Y2P5[15],YP2P5[15],X3D4P[24],Y3D4P[24],YP3D4P[24],X3D3[24],Y3D3[24],YP3D3[24],X3D4[26],Y3D4[26],YP3D4[26],X3D1PP[23],Y3D1PP[23],YP3D1PP[23],X3D1P[22],Y3D1P[22],YP3D1P[22],X2S5[18],Y2S5[18],YP2S5[18],X3P105[18],Y3P105[18],YP3P105[18],X2P4[14],Y2P4[14],YP2P4[14],X4DSUM[16],Y4DSUM[16],YP4DSUM[16],X2P3[14],Y2P3[14],YP2P3[14],X2P2[14],Y2P2[14],YP2P2[14],X2P1[15],Y2P1[15],YP2P1[15],IOFFN[50],IOFFION[12] 
      DIMENSION Z54T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      #   ELASTIC MOMENTUM TRANSFER                                           
      XEN=[0.00,.001,.005,.007,0.01,.015,0.02,.025,0.03,0.04,0.05,0.06,0.07,0.08,0.10,0.12,0.14,0.17,0.20,0.25, 0.27,0.30,0.32,0.35,0.37,0.40,0.42,0.44,0.46,0.48,0.50,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.60,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.70,.715,0.73,0.75,0.77,0.80,0.83,0.85,0.87,0.90,1.00,1.08,1.14,1.20,1.30,1.40,1.50,1.70,2.00,2.50,  3.00,3.50,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,                9.00,10.0,12.0,15.0,18.0,20.0,25.0,30.0,40.0,50.0,                60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,                400.,500.,600.,700.,800.,1000.,1500.,2000.,3000.,4000.,           5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,     8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      YMOM=[131.,115.,97.0,91.1,83.9,74.6,67.3,61.2,56.1,47.9,41.4,36.2,31.8,28.2,22.5,18.1,14.8,11.1,8.36,5.33,4.47,3.43,2.88,2.22,1.86,1.43,1.20,1.01,.844,.708,.596,.548,.504,.465,.430,.399,.372,.348,.328,.310,.296,.285,.276,.270,.266,.265,.266,.270,.276,.287,.306,.341,.377,.427,.479,.562,.651,.713,.778,.880,1.26,1.62,1.92,2.25,2.85,3.51,4.22,5.73,7.97,11.8,15.8,20.4,24.4,28.0,30.7,31.5,32.3,31.6,31.0,27.8,                23.5,19.8,15.0,10.9,8.40,7.25,5.65,5.00,4.50,3.10,                2.42,2.17,2.00,1.89,1.80,1.73,1.65,1.50,1.39,1.26,                1.09,0.94,0.84,0.75,0.68,0.56,0.38,0.26,.155,.105,                .076,.059,.038,.027,.0148,.0094,.0050,.0031,.0022,.00163,.001024,.000714,.000498,.000372,.000291,.000236,.000166,.000125,9.90e-5,8.08e-5,6.76e-5,5.77e-5,4.38e-5,3.48e-5,2.85e-5,2.39e-5,2.04e-5,1.43e-5,1.08e-5,8.52e-6,6.91e-6,4.85e-6,3.62e-6,2.81e-6,2.25e-6,1.85e-6,1.55e-6,1.13e-6,8.67e-7,6.86e-7,5.58e-7,4.63e-7,3.10e-7,2.23e-7,1.68e-7,1.31e-7,8.64e-8,6.11e-8,4.54e-8,3.51e-8,2.78e-8,2.26e-8,1.57e-8,1.15e-8,8.79e-9,6.93e-9,5.60e-9,3.57e-9,2.47e-9,1.81e-9,1.38e-9,8.82e-10,6.11e-10,4.48e-10,3.43e-10,2.71e-10,2.19e-10,1.52e-10,1.12e-10,8.55e-11,6.75e-11,5.47e-11]
      # ELASTIC TOTAL
      XEL=[0.00,.001,.005,.007,0.01,.015,0.02,.025,0.03,0.04,0.05,0.06,0.07,0.08,0.10,0.12,0.14,0.17,0.20,0.25, 0.27,0.30,0.32,0.35,0.37,0.40,0.42,0.44,0.46,0.48,0.50,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.60,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.70,0.75,0.80,0.85,0.90,1.00,1.20,1.50,1.75,2.00,2.50,2.75,3.00,3.75,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,9.00,10.0,12.0,15.0,18.0,20.0,25.0,30.0,                40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,                250.,300.,400.,500.,600.,700.,800.,1000.,1500.,2000.,             3000.,4000.,5000.,6000.,8000.,1.0D4,1.5D4,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,7.0D7,1.D9]  
      YEL=[131.,117.,101.,95.4,88.8,80.1,73.3,67.5,62.6,54.7,48.4,43.2,38.8,35.2,29.4,24.7,21.2,17.1,14.0,10.3,9.10,7.75,6.94,5.95,5.40,4.50,4.25,3.95,3.65,3.45,3.20,3.11,3.00,2.90,2.79,2.69,2.59,2.48,2.37,2.25,2.14,2.02,1.92,1.80,1.69,1.58,1.48,1.40,1.32,1.28,1.26,1.24,1.30,1.45,1.50,1.87,2.80,4.76,6.68,8.85,13.7,16.3,18.7,24.5,29.0,32.7,36.8,39.3,41.7,41.7,41.8,41.8,41.0,40.0,37.4,34.2,32.4,30.8,21.9,14.1,                8.58,6.78,5.97,5.49,5.29,5.21,5.10,4.66,4.58,4.67,                4.53,4.35,4.12,3.77,3.58,3.30,3.12,2.80,2.36,2.07,                1.72,1.52,1.34,1.13,.937,.817,.632,.523,.397,.326,.279,.246,.203,.175,.152,.136,.124,.116,.103,.0946,.0886,.0841,.0807,.0779,.0739,.0711,.0690,.0674,.0662,.0640,.0627,.0618,.0612,.0604,.0599,.0596,.0594,.0593,.0592,.0590,.0589,.0589,.0588,.0588,.0587,.0587,.0587,.0587,.0587,.05867,.05866,.05865,.05865]
      # ELASTIC ANGULAR DISTRIBUTION ( EPSILON) 
      XEPS=[0.00,.001,.005,.007,.010,.015,.020,.025,.030,.040,0.05,0.06,0.07,0.08,0.10,0.12,0.14,0.17,0.20,0.25,0.27,0.30,0.32,0.35,0.37,0.40,0.42,0.44,0.46,0.48,0.50,0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.60,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.70,0.71,0.72,0.73,0.75,0.77,0.80,0.83,0.85,0.87,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.70,2.00,2.50,3.00,3.50,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,9.00,10.0,12.0,15.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,200.,250.,300.,400.,500.,600.,700.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,10000.,15000.,2.0'%.3f' %.0D4,4.0D4,5.0D4,6.0D4,8.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC ANGULAR DISTRIBUTION PARAMETER EPSILON
      #  YEPS=1.0-EPSILON
      YEPS=[1.,.9744,.9406,.9325,.9173,.8972,.8776,.8606,.845,.8148,.7851,.7598,.7333,.7069,.6565,.6117,.5651,.5015,.4373,.3459,.3177,.2684,.2421,.2044,.1803,.1590,.1326,.1141,.0981,.0822,.0714,.0659,.0615,.0575,.0544,.0515,.0492,.0476,.0467,.0464,.0467,.0480,.0493,.0523,.0560,.0614,.0678,.0751,.0845,.0937,.1056,.1183,.1321,.1471,.1802,.2095,.2585,.2944,.3183,.3588,.4247,.5332,.6259,.7104,.7648,.8047,.8308,.8717,.8515,.7938,.7699,.7682,.7647,.7864,.7544,.7075,.6695,.6461,.6238,.5219,.4088,.3217,.2293,.1597,.1165,.1011,.1156,.1887,.3535,.2829,.2332,.2240,.2087,.1956,.1873,.2028,.1934,.1617,.1506,.1379,.1201,.1098,.1003,.0956,.0899,.0792,.0579,.0408,.0259,.0182,.0140,.0126,.0091,.0070,.0046,.00331,.00215,.00154,.00123,.00100,7.30e-4,5.69e-4,4.42e-4,3.59e-4,3.00e-4,2.56e-4,1.96e-4,1.57e-4,1.29e-4,1.09e-4,9.34e-5,8.12e-5,6.34e-5,5.12e-5,4.23e-5,3.563e-5,3.048e-5,2.134e-5,1.607e-5,1.255e-5,1.009e-5,6.944e-6,5.077e-6,3.875e-6,3.056e-6,2.473e-6,2.043e-6,1.461e-6,1.097e-6,8.531e-7,6.826e-7,5.583e-7,3.635e-7,2.550e-7,1.885e-7,1.447e-7,9.266e-8,6.407e-8,4.674e-8,3.548e-8,2.775e-8,2.224e-8,1.512e-8,1.089e-8,8.19e-9,6.36e-9,5.08e-9,3.16e-8,2.14e-9,1.54e-9,1.163e-9,7.25e-10,4.93e-10,3.56e-10,2.69e-10,2.10e-10,1.68e-10,1.15e-10,8.3D-11,6.3D-11,4.9D-11,3.9D-11]
      # IONISATION (VALUES ABOVE 20KEV GENERATED BY BORN BETHE IN SUB)  
      XION=[12.129843,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,26.0,28.0,                30.0,32.0,34.0,36.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,90.0,100.,110.,120.,130.,140.,150.,160.,                180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,         3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      # GROSS IONISATION
      YION=[0.00,.137,.344,.549,.748,.939,1.12,1.29,1.46,1.62,      1.77,2.04,2.30,2.52,2.73,2.93,3.10,3.27,3.56,3.82,                4.06,4.27,4.42,4.53,4.73,4.94,5.11,5.21,5.31,5.36,5.40,5.46,5.56,5.68,5.75,5.75,5.70,5.58,5.48,5.35,                5.11,4.83,4.36,4.02,3.72,3.46,3.24,3.06,2.87,2.72,2.49,2.26,2.10,1.94,1.68,1.48,1.35,1.23,1.13,.964,                .836,.736,.663,.602,.555,.515,.480,.424,.382,.346,.319,.273,.242,.218,.200,.186]      
      # COUNTING IONISATION
      YINC=[0.00,.137,.344,.549,.748,.939,1.12,1.29,1.46,1.62, 1.77,2.04,2.30,2.52,2.73,2.93,3.10,3.27,3.56,3.82,                4.06,4.27,4.42,4.53,4.66,4.77,4.84,4.89,4.95,4.99,5.02,5.04,5.03,5.02,4.98,4.90,4.80,4.69,4.60,4.49,4.27,4.01,3.58,3.27,3.00,2.76,2.57,2.41,2.25,2.12,1.93,1.75,1.62,1.49,1.28,1.12,1.03,.923,.855,.731,.632,.557,.501,.455,.420,.389,.364,.320,.289,.262,.241,.206,.183,.165,.152,.141]
      # IONISATION CHARGE STATE =1
      YIN1=[0.00,.137,.344,.549,.748,.939,1.12,1.29,1.46,1.62, 1.77,2.04,2.30,2.52,2.73,2.93,3.10,3.27,3.56,3.82,                4.06,4.27,4.42,4.51,4.59,4.60,4.58,4.60,4.62,4.64,4.67,4.64,4.53,4.44,4.33,4.21,4.08,4.01,3.93,3.85,3.65,3.44,3.06,2.77,2.48,2.31,2.15,2.00,1.87,1.75,1.58,1.42,1.32,1.21,1.03,.903,.830,.744,.689,.589,.509,.449,.404,.367,.339,.314,.293,.258,.233,.211,.194,.166,.148,.133,.123,.114]
      # IONISATION CHARGE STATE =2
      XIN2=[33.105,36.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,80.0,90.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      YIN2=[0.0,0.02,.0688,.174,.257,.318,.363,.376,.386,.398,.461,.503,.534,.533,.521,.495,.470,.447,.405,.373,.325,.305,.294,.267,.253,.240,.230,.220,.204,.190,.175,.170,.145,.127,.117,.105,.0969,.0828,.0716,.0631,.0568,.0516,.0476,.0441,.0412,.0363,.0327,.0297,.0220,.0188,.0176,.0151,.0139,.0129]
      # IONISATION CHARGE STATE =3
      XIN3=[64.15,70.0,80.0,90.0,100.,110.,120.,130.,140.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      YIN3=[0.0,.001,.010,.0324,.0764,.122,.159,.184,.190,.189,.180,.169,.158,.142,.140,.137,.129,.123,.118,.112,.107,.102,.0921,.0844,.0825,.0703,.0616,.0566,.0507,.0470,.0402,.0347,.0306,.0275,.0250,.0231,.0214,.0200,.0176,.0159,.0144,.0132,.0113,.0101,.00907,.00835,.00775]
      # IONISATION CHARGE STATE =4
      XIN4=[106.35,120.,130.,140.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      YIN4=[0.0,.0002,.00098,.0033,.0103,.0157,.0279,.0426,.0483,.0421,.0425,.0409,.0402,.0395,.0382,.0369,.0348,.0339,.0319,.0294,.0251,.0219,.0202,.0181,.0167,.0143,.0124,.0109,.00981,.00891,.00823,.00762,.00713,.00627,.00566,.00513,.00472,.00404,.00358,.00323,.00298,.00276]
      # IONISATION CHARGE STATE =5
      XIN5=[160.45,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      YIN5=[0.0,.00013,.0018,.0062,.0101,.0113,.0106,.0108,.0109,.0104,.0098,.0089,.0078,.0073,.0069,.059,.051,.0047,.0042,.0039,.0034,.0029,.0026,.0023,.0021,.00193,.00179,.00167,.00147,.00133,.00120,.00111,.00095,.00084,.00076,.00070,.00065]
      # IONISATION CHARGE STATE =6
      XIN6=[227.2,250.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]        
      YIN6=[0.0,.00005,.00036,.00082,.00128,.00140,.00153,.00162,.00171,.00188,.00182,.00191,.00188,.00160,.00140,.00129,.00116,.00107,.00092,.00079,.00070,.00063,.00057,.00053,.00049,.00046,.00040,.00036,.00033,.00030,.00026,.00023,.00021,.00019,.00018]
      # K-SHELL IONISATION
      XKSH=[34561.,35490.,36526.,37592.,38690.,39819.,40982.,42178.,43410.,45981.,48706.,51591.,54648.,57885.,64947.,72871.,81761.,1.00D5,1.22D5,1.50D5,1.83D5,2.24D5,2.82'%.3f' %.65D5,4.87D5,6.49D5,8.66D5,1.00D6,1.22D6,1.50D6,1.83D6,2.24D6,2.82'%.3f' %.65D6,4.87D6,6.49D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.51'%.3f' %.07D7,4.10D7,5.16D7,6.31D7,7.50D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.51'%.3f' %.07D8,4.10D8,5.16D8,6.31D8,7.50D8,8.66D8,1.00D9] 
      YKSH=[0.0,1.74e-8,3.56e-8,5.30e-8,6.98e-8,8.58e-8,1.01e-7,1.16e-7,1.29e-7,1.55e-7,1.78e-7,1.99e-7,2.17e-7,2.34e-7,2.62e-7,2.84e-7,3.00e-7,3.20e-7,3.31e-7,3.35e-7,3.34e-7,3.31e-7,3.26e-7,3.21e-7,3.20e-7,3.23e-7,3.29e-7,3.34e-7,3.43e-7,3.55e-7,3.68e-7,3.83e-7,4.01e-7,4.23e-7,4.50e-7,4.77e-7,5.05e-7,5.20e-7,5.40e-7,5.61e-7,5.93e-7,6.14e-7,6.35e-7,6.65e-7,6.89e-7,7.10e-7,7.28e-7,7.43e-7,7.58e-7,7.79e-7,7.99e-7,8.32e-7,8.53e-7,8.74e-7,9.03e-7,9.27e-7,9.47e-7,9.65e-7,9.79e-7,9.94e-7]
      # L1-SHELL IONISATION
      XL1S=[5453.,5499.2,5658.7,5823.,5992.,6166.,6345.,6529.,6719.,6914.,7321.,7753.,8210.,8695.,9208.,1.00D4,1.09D4,1.19D4,1.30D4,1.41D4,1.58D4,1.78D4,2.00D4,2.24D4,2.51D4,2.90'%.3f' %.35'%.3f' %.87D4,4.47D4,5.16D4,6.13D4,7.29D4,8.66D4,1.00D5,1.22D5,1.54D5,2.00D5,2.59'%.3f' %.35D5,4.47D5,5.96D5,8.66D5,1.00D6,1.22D6,1.50D6,1.83D6,2.30D6,2.90'%.3f' %.65D6,4.60D6,5.79D6,7.50D6,8.66D6,1.00D7,1.22D7,1.50D7,1.83D7,2.30D7,2.90'%.3f' %.65D7,4.60D7,5.79D7,7.29D7,8.66D7,1.00D8,1.22D8,1.50D8,1.83D8,2.30D8,2.90'%.3f' %.65D8,4.60D8,5.79D8,7.29D8,8.66D8,1.00D9]
      YL1S=[0.0,2.21e-7,9.39e-7,1.62e-6,2.26e-6,2.86e-6,3.43e-6,3.96e-6,4.47e-6,4.95e-6,5.82e-6,6.59e-6,7.26e-6,7.86e-6,8.37e-6,9.02e-6,9.52e-6,9.89e-6,1.02e-5,1.03e-5,1.04e-5,1.04e-5,1.02e-5,9.98e-6,9.68e-6,9.23e-6,8.73e-6,8.20e-6,7.66e-6,7.14e-6,6.53e-6,5.97e-6,5.46e-6,5.06e-6,4.57e-6,4.08e-6,3.64e-6,3.30e-6,3.04e-6,2.84e-6,2.71e-6,2.64e-6,2.64e-6,2.66e-6,2.69e-6,2.74e-6,2.82e-6,2.90e-6,3.00e-6,3.11e-6,3.23e-6,3.36e-6,3.44e-6,3.52e-6,3.63e-6,3.74e-6,3.85e-6,3.98e-6,4.12e-6,4.25e-6,4.38e-6,4.51e-6,4.65e-6,4.75e-6,4.83e-6,4.95e-6,5.06e-6,5.18e-6,5.32e-6,5.45e-6,5.58e-6,5.72e-6,5.85e-6,5.99e-6,6.09e-6,6.17e-6]
      # L2-SHELL IONISATION
      XL2S=[5107.,5160.6,5311.3,5466.,5626.,5790.,5959.,6133.,6312.,6686.,7081.,7501.,7945.,8416.,9175.,1.00D4,1.09D4,1.19D4,1.30D4,1.41D4,1.58D4,1.78D4,2.00D4,2.24D4,2.51D4,2.90'%.3f' %.35'%.3f' %.87D4,4.47D4,5.16D4,6.13D4,7.29D4,8.66D4,1.00D5,1.22D5,1.54D5,2.00D5,2.59'%.3f' %.35D5,4.47D5,5.96D5,8.66D5,1.00D6,1.22D6,1.50D6,1.83D6,2.30D6,2.90'%.3f' %.65D6,4.60D6,5.79D6,7.50D6,8.66D6,1.00D7,1.22D7,1.50D7,2.05D7,2.59'%.3f' %.16D7,4.10D7,5.16D7,6.31D7,7.50D7,8.66D7,1.00D8,1.22D8,1.50D8,2.05D8,2.59'%.3f' %.16D8,4.10D8,5.16D8,6.31D8,7.50D8,8.66D8,1.00D9]
      YL2S=[0.0,4.47e-7,1.62e-6,2.72e-6,3.76e-6,4.73e-6,5.64e-6,6.49e-6,7.28e-6,8.71e-6,9.94e-6,1.10e-5,1.19e-5,1.27e-5,1.36e-5,1.43e-5,1.47e-5,1.50e-5,1.52e-5,1.52e-5,1.51e-5,1.49e-5,1.45e-5,1.41e-5,1.36e-5,1.29e-5,1.21e-5,1.13e-5,1.06e-5,9.81e-6,8.97e-6,8.20e-6,7.49e-6,6.96e-6,6.29e-6,5.63e-6,5.03e-6,4.55e-6,4.19e-6,3.92e-6,3.75e-6,3.66e-6,3.66e-6,3.69e-6,3.74e-6,3.82e-6,3.93e-6,4.06e-6,4.20e-6,4.36e-6,4.52e-6,4.72e-6,4.83e-6,4.94e-6,5.10e-6,5.26e-6,5.52e-6,5.71e-6,5.88e-6,6.09e-6,6.28e-6,6.45e-6,6.59e-6,6.71e-6,6.83e-6,7.00e-6,7.17e-6,7.43e-6,7.63e-6,7.79e-6,8.01e-6,8.20e-6,8.37e-6,8.51e-6,8.63e-6,8.75e-6]
      # L3-SHELL IONISATION
      XL3S=[4786.,4881.6,5023.7,5170.,5321.,5476.,5635.,5800.,5968.,6321.,6695.,7091.,7511.,8187.,8924.,1.00D4,1.09D4,1.19D4,1.30D4,1.41D4,1.58D4,1.78D4,2.00D4,2.24D4,2.51D4,2.90'%.3f' %.35'%.3f' %.87D4,4.47D4,5.16D4,6.13D4,7.29D4,8.66D4,1.00D5,1.22D5,1.54D5,2.00D5,2.59'%.3f' %.35D5,4.47D5,5.96D5,8.66D5,1.00D6,1.22D6,1.50D6,1.83D6,2.30D6,2.90'%.3f' %.65D6,4.60D6,5.79D6,7.50D6,8.66D6,1.00D7,1.22D7,1.50D7,1.83D7,2.30D7,2.90'%.3f' %.65D7,4.60D7,5.79D7,7.50D7,8.66D7,1.00D8,1.22D8,1.50D8,1.83D8,2.30D8,2.90'%.3f' %.65D8,4.60D8,5.79D8,7.50D8,8.66D8,1.00D9]
      YL3S=[0.0,1.94e-6,4.64e-6,7.17e-6,9.54e-6,1.18e-5,1.38e-5,1.58e-5,1.76e-5,2.08e-5,2.36e-5,2.60e-5,2.80e-5,3.05e-5,3.23e-5,3.40e-5,3.48e-5,3.52e-5,3.54e-5,3.53e-5,3.48e-5,3.41e-5,3.31e-5,3.19e-5,3.06e-5,2.86e-5,2.70e-5,2.52e-5,2.34e-5,2.17e-5,1.98e-5,1.81e-5,1.65e-5,1.53e-5,1.38e-5,1.23e-5,1.09e-5,9.89e-6,9.10e-6,8.49e-6,8.10e-6,7.90e-6,7.89e-6,7.93e-6,8.04e-6,8.19e-6,8.41e-6,8.67e-6,8.97e-6,9.29e-6,9.63e-6,1.00e-5,1.03e-5,1.05e-5,1.08e-5,1.12e-5,1.15e-5,1.19e-5,1.23e-5,1.27e-5,1.31e-5,1.35e-5,1.39e-5,1.42e-5,1.45e-5,1.48e-5,1.52e-5,1.55e-5,1.59e-5,1.63e-5,1.67e-5,1.71e-5,1.75e-5,1.80e-5,1.82e-5,1.85e-5]
      # M1-SHELL IONISATION
      XM1S=[1148.7,1180.9,1214.7,1249.4,1285.1,1321.8,1359.7,1398.6,1438.7,1479.9,1566.,1657.,1754.,1856.,1965.,2140.,2330.,2538.,2765.,3012.,3376.,3784.,4243.,4758.,5335.,6157.,7105.,8201.,1.00D4,1.22D4,1.50D4,1.88D4,2.37'%.3f' %.00'%.3f' %.76D4,4.87D4,6.31D4,8.41D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37'%.3f' %.00'%.3f' %.76D5,4.87D5,6.31D5,8.41D5,1.00D6,1.22D6,1.50D6,1.88D6,2.37'%.3f' %.00'%.3f' %.76D6,4.87D6,6.31D6,8.41D6,1.00D7,1.22D7,1.50D7,1.88D7,2.37D7,2.99'%.3f' %.76D7,4.87D7,6.31D7,8.41D7,1.00D8,1.22D8,1.50D8,1.88D8,2.37D8,2.99'%.3f' %.76D8,4.87D8,6.31D8,8.41D8,1.00D9] 
      YM1S=[0.0,2.13e-5,4.08e-5,5.85e-5,7.47e-5,8.95e-5,1.03e-4,1.16e-4,1.27e-4,1.37e-4,1.56e-4,1.71e-4,1.84e-4,1.95e-4,2.04e-4,2.15e-4,2.23e-4,2.28e-4,2.30e-4,2.31e-4,2.29e-4,2.24e-4,2.18e-4,2.10e-4,2.01e-4,1.88e-4,1.75e-4,1.62e-4,1.44e-4,1.27e-4,1.12e-4,9.60e-5,8.20e-5,6.83e-5,5.92e-5,4.93e-5,4.11e-5,3.38e-5,3.03e-5,2.67e-5,2.38e-5,2.10e-5,1.88e-5,1.71e-5,1.58e-5,1.47e-5,1.40e-5,1.35e-5,1.34e-5,1.33e-5,1.34e-5,1.35e-5,1.37e-5,1.40e-5,1.44e-5,1.48e-5,1.53e-5,1.59e-5,1.62e-5,1.66e-5,1.70e-5,1.75e-5,1.80e-5,1.85e-5,1.90e-5,1.96e-5,2.01e-5,2.08e-5,2.11e-5,2.16e-5,2.20e-5,2.25e-5,2.30e-5,2.35e-5,2.40e-5,2.46e-5,2.52e-5,2.58e-5,2.62e-5]
      # M2-SHELL IONISATION
      XM2S=[1002.1,1012.5,1041.7,1071.7,1102.6,1134.5,1167.2,1201.,1236.,1271.,1346.,1425.,1509.,1597.,1691.,1843.,2008.,2188.,2384.,2598.,2913.,3267.,3664.,4109.,4744.,5635.,6695.,7730.,8925.,1.00D4,1.22D4,1.50D4,1.88D4,2.37'%.3f' %.00'%.3f' %.76D4,4.87D4,6.31D4,8.41D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37'%.3f' %.00'%.3f' %.76D5,4.87D5,6.31D5,8.41D5,1.00D6,1.22D6,1.50D6,1.88D6,2.37'%.3f' %.00'%.3f' %.76D6,4.87D6,6.31D6,8.41D6,1.00D7,1.22D7,1.50D7,1.88D7,2.37D7,2.99'%.3f' %.76D7,4.87D7,6.31D7,8.41D7,1.00D8,1.22D8,1.50D8,1.88D8,2.37D8,2.99'%.3f' %.76D8,4.87D8,6.31D8,8.41D8,1.00D9]
      YM2S=[0.0,1.17e-5,4.18e-5,6.88e-5,9.29e-5,1.15e-4,1.34e-4,1.52e-4,1.68e-4,1.83e-4,2.08e-4,2.30e-4,2.49e-4,2.64e-4,2.78e-4,2.95e-4,3.09e-4,3.19e-4,3.27e-4,3.31e-4,3.34e-4,3.32e-4,3.27e-4,3.19e-4,3.06e-4,2.86e-4,2.64e-4,2.45e-4,2.26e-4,2.11e-4,1.86e-4,1.63e-4,1.39e-4,1.19e-4,1.01e-4,8.55e-5,7.12e-5,5.94e-5,4.90e-5,4.38e-5,3.87e-5,3.45e-5,3.05e-5,2.74e-5,2.50e-5,2.31e-5,2.16e-5,2.06e-5,1.99e-5,1.98e-5,1.97e-5,1.98e-5,2.01e-5,2.05e-5,2.10e-5,2.16e-5,2.23e-5,2.31e-5,2.40e-5,2.46e-5,2.52e-5,2.59e-5,2.67e-5,2.75e-5,2.83e-5,2.91e-5,3.00e-5,3.09e-5,3.20e-5,3.26e-5,3.33e-5,3.40e-5,3.48e-5,3.56e-5,3.65e-5,3.73e-5,3.82e-5,3.91e-5,4.01e-5,4.08e-5]
      # M3-SHELL IONISATION
      XM3S=[940.6,958.1,985.7,1014.1,1043.3,1073.3,1104.3,1136.1,1168.9,1202.6,1273.,1348.,1427.,1510.,1599.,1693.,1844.,2009.,2189.,2385.,2599.,2915.,3269.,3666.,4111.,4746.,5637.,6697.,7732.,8927.,1.00D4,1.22D4,1.50D4,1.88D4,2.37'%.3f' %.00'%.3f' %.76D4,4.87D4,6.31D4,8.41D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37'%.3f' %.00'%.3f' %.76D5,4.87D5,6.31D5,8.41D5,1.00D6,1.22D6,1.88D6,2.37'%.3f' %.00'%.3f' %.76D6,4.87D6,6.31D6,8.41D6,1.00D7,1.22D7,1.50D7,1.88D7,2.37D7,2.99'%.3f' %.76D7,4.87D7,6.31D7,8.41D7,1.00D8,1.22D8,1.50D8,1.88D8,2.37D8,2.99'%.3f' %.76D8,4.87D8,6.31D8,8.41D8,1.00D9]
      YM3S=[0.0,5.19e-5,1.24e-4,1.88e-4,2.44e-4,2.95e-4,3.40e-4,3.81e-4,4.18e-4,4.51e-4,5.10e-4,5.59e-4,6.01e-4,6.37e-4,6.68e-4,6.96e-4,7.29e-4,7.56e-4,7.75e-4,7.88e-4,7.96e-4,7.96e-4,7.88e-4,7.72e-4,7.50e-4,7.15e-4,6.66e-4,6.12e-4,5.66e-4,5.20e-4,4.85e-4,4.27e-4,3.74e-4,3.19e-4,2.72e-4,2.31e-4,1.96e-4,1.63e-4,1.36e-4,1.12e-4,1.00e-4,8.86e-5,7.89e-5,6.99e-5,6.27e-5,5.71e-5,5.29e-5,4.94e-5,4.71e-5,4.57e-5,4.53e-5,4.52e-5,4.61e-5,4.71e-5,4.82e-5,4.96e-5,5.13e-5,5.31e-5,5.52e-5,5.65e-5,5.81e-5,5.97e-5,6.15e-5,6.34e-5,6.53e-5,6.71e-5,6.93e-5,7.14e-5,7.38e-5,7.52e-5,7.69e-5,7.86e-5,8.05e-5,8.24e-5,8.43e-5,8.62e-5,8.84e-5,9.05e-5,9.29e-5,9.43e-5]
      # M4-SHELL IONISATION
      XM4S=[689.0,706.2,726.8,748.1,770.0,792.6,815.7,839.6,864.2,889.5,942.3,998.2,1057.,1120.,1187.,1294.,1411.,1538.,1677.,1828.,2052.,2302.,2583.,2899.,3253.,3756.,4338.,5010.,5786.,6681.,7716.,8911.,1.00D4,1.22D4,1.50D4,1.88D4,2.37'%.3f' %.00'%.3f' %.76D4,4.87D4,6.31D4,8.41D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37'%.3f' %.00'%.3f' %.76D5,4.87D5,6.31D5,8.41D5,1.00D6,1.22D6,1.88D6,2.37'%.3f' %.00'%.3f' %.76D6,4.87D6,6.31D6,8.41D6,1.00D7,1.22D7,1.50D7,1.88D7,2.37D7,2.99'%.3f' %.76D7,4.87D7,6.31D7,8.41D7,1.00D8,1.22D8,1.50D8,1.88D8,2.37D8,2.99'%.3f' %.76D8,4.87D8,6.31D8,8.41D8,1.00D9]
      YM4S=[0.0,1.79e-4,3.69e-4,5.38e-4,6.89e-4,8.24e-4,9.45e-4,1.05e-3,1.15e-3,1.24e-3,1.39e-3,1.52e-3,1.62e-3,1.71e-3,1.79e-3,1.88e-3,1.95e-3,2.00e-3,2.03e-3,2.05e-3,2.06e-3,2.05e-3,2.01e-3,1.97e-3,1.91e-3,1.82e-3,1.72e-3,1.61e-3,1.50e-3,1.39e-3,1.29e-3,1.18e-3,1.11e-3,9.84e-4,8.68e-4,7.49e-4,6.43e-4,5.51e-4,4.71e-4,3.96e-4,3.33e-4,2.77e-4,2.50e-4,2.22e-4,1.99e-4,1.77e-4,1.60e-4,1.47e-4,1.37e-4,1.29e-4,1.24e-4,1.21e-4,1.21e-4,1.21e-4,1.25e-4,1.29e-4,1.33e-4,1.38e-4,1.43e-4,1.49e-4,1.56e-4,1.61e-4,1.66e-4,1.71e-4,1.77e-4,1.83e-4,1.89e-4,1.96e-4,2.03e-4,2.10e-4,2.18e-4,2.22e-4,2.28e-4,2.33e-4,2.40e-4,2.46e-4,2.52e-4,2.58e-4,2.65e-4,2.73e-4,2.80e-4,2.85e-4]
      # M5-SHELL IONISATION
      XM5S=[676.4,686.9,707.0,727.7,748.9,770.8,793.4,816.6,840.4,865.0,916.3,970.7,1028.,1089.,1154.,1258.,1372.,1495.,1630.,1777.,1994.,2238.,2511.,2817.,3161.,3651.,4216.,4869.,5622.,6493.,7717.,8911.,1.00D4,1.22D4,1.50D4,1.88D4,2.37'%.3f' %.00'%.3f' %.76D4,4.87D4,6.31D4,8.41D4,1.00D5,1.22D5,1.50D5,1.88D5,2.37'%.3f' %.00'%.3f' %.76D5,4.87D5,6.31D5,8.41D5,1.00D6,1.22D6,1.50D6,1.88D6,2.37'%.3f' %.00'%.3f' %.76D6,4.87D6,6.31D6,8.41D6,1.00D7,1.22D7,1.50D7,1.88D7,2.37D7,2.99'%.3f' %.76D7,4.87D7,6.31D7,8.41D7,1.00D8,1.22D8,1.50D8,1.88D8,2.37D8,2.99'%.3f' %.76D8,4.87D8,6.31D8,8.41D8,1.00D9]
      YM5S=[0.0,1.84e-4,4.98e-4,7.77e-4,1.02e-3,1.25e-3,1.44e-3,1.62e-3,1.78e-3,1.92e-3,2.16e-3,2.37e-3,2.53e-3,2.67e-3,2.79e-3,2.93e-3,3.04e-3,3.12e-3,3.18e-3,3.21e-3,3.23e-3,3.21e-3,3.16e-3,3.09e-3,2.99e-3,2.86e-3,2.70e-3,2.53e-3,2.36e-3,2.19e-3,1.99e-3,1.83e-3,1.71e-3,1.52e-3,1.34e-3,1.16e-3,9.92e-4,8.50e-4,7.27e-4,6.10e-4,5.14e-4,4.28e-4,3.85e-4,3.42e-4,3.06e-4,2.73e-4,2.47e-4,2.26e-4,2.11e-4,1.98e-4,1.91e-4,1.86e-4,1.86e-4,1.87e-4,1.89e-4,1.93e-4,1.98e-4,2.04e-4,2.11e-4,2.20e-4,2.29e-4,2.40e-4,2.47e-4,2.55e-4,2.63e-4,2.72e-4,2.81e-4,2.91e-4,3.00e-4,3.11e-4,3.22e-4,3.34e-4,3.41e-4,3.50e-4,3.58e-4,3.68e-4,3.77e-4,3.87e-4,3.97e-4,4.08e-4,4.18e-4,4.31e-4,4.38e-4]
      #
      # EXCITATION  UNITS OF 10**-18CM**2
      # 
      # 1S5 METASTABLE E=8.3153155 EV  J=2        
      # SHAPE def BELOW 11EV FROM BARTSCHAT AND ZATSARINNY
      # ABOVE 100EV SCALED BY 1/E**3
      X1S5=[8.3153,8.35,8.40,8.44,8.48,8.52,8.56,8.60,8.65,8.70,8.75,8.80,8.85,8.90,8.95,9.00,9.05,9.10,9.15,9.20,9.25,9.30,9.35,9.40,9.45,9.50,9.516,9.52,9.525,9.53,9.54,9.545,9.55,9.555,9.56,9.57,9.58,9.59,9.60,9.61,9.615,9.62,9.625,9.63,9.64,9.65,9.66,9.67,9.68,9.70,9.75,10.0,10.5,11.0,11.5,12.0,12.5,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y1S5=[0.00,2.38,4.93,6.41,3.42,2.84,3.00,3.33,3.89,4.59,5.45,6.48,7.72,9.05,10.4,11.5,12.3,12.2,10.8,9.45,8.84,9.04,9.18,9.18,9.11,9.32,23.6,15.7,12.1,10.7,9.79,11.4,15.8,18.0,15.9,13.1,13.6,12.6,10.4,12.1,14.9,20.5,21.5,18.5,17.2,16.9,15.9,13.8,12.4,11.1,10.1,10.0,9.90,9.80,9.70,9.60,9.30,8.80,8.10,7.45,6.80,5.50,4.40,2.20,1.10,.500,.230,.150,.065,.034]
      YP1S5=[70*0.0]
      # 1S4 E=8.4365236 EV J=1  RESONANCE RADIATION 146.96 NM       F=0.260 
      #    USED BEF SCALING ABOVE 11.0EV
      # SHAPE def BELOW 11EV FROM BARTSCHAT AND ZATSARINNY        
      X1S4=[8.4365,8.45,8.46,8.47,8.48,8.49,8.50,8.52,8.54,8.56,8.60,8.65,8.70,8.75,8.80,8.85,8.90,8.95,9.00,9.05,9.10,9.15,9.20,9.25,9.30,9.35,9.40,9.45,9.50,9.55,9.60,9.62,9.65,9.70,9.75,9.80,10.0,11.0]
      Y1S4=[0.00,2.60,5.60,6.09,5.50,4.72,4.27,3.70,3.42,3.24,3.10,3.02,3.34,3.70,4.25,5.03,6.00,7.23,8.70,9.67,10.3,10.1,9.37,9.00,8.70,8.55,8.62,8.77,9.00,10.1,10.5,10.7,10.2,9.22,9.40,9.60,10.8,16.87]
      YP1S4=[38*0.0]
      # 1S3  METASTABLE   E=9.4471945 EV J=0 
      # SHAPE def BELOW 11EV FROM BARTSCAT AND ZATSARINNY
      # ABOVE 100EV SCALED BY 1/E**3
      X1S3=[9.4472,9.45,9.47,9.48,9.49,9.50,9.506,9.51,9.52,9.525,9.53,9.54,9.55,9.555,9.56,9.57,9.58,9.60,9.62,9.64,9.67,9.68,9.69,9.70,9.71,9.72,9.73,9.74,9.75,9.80,10.0,11.0,12.0,13.0,14.0,15.0,16.0,18.0,20.0,24.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y1S3=[0.00,.313,.324,.230,.360,1.67,3.78,2.57,1.26,1.71,1.80,1.78,2.23,2.70,2.43,.635,1.14,1.04,1.49,1.59,1.62,2.77,3.89,6.21,9.38,8.28,6.75,4.29,3.97,.556,0.77,3.30,4.30,4.50,4.30,3.70,3.30,2.65,2.25,1.50,0.80,0.32,0.17,0.10,.040,.021]
      YP1S3=[46*0.0]
      # 1S2 E=9.5697248 EV J=1 RESONANCE RADIATION 129.56 NM        F=0.183
      #   USED BEF SCALING ABOVE 11.0EV
      # SHAPE def BELOW 11EV FROM BARTSCHAT AND ZATSARINNY
      X1S2=[9.5697,9.58,9.59,9.60,9.61,9.62,9.63,9.64,9.65,9.67,9.68,9.69,9.70,9.75,9.77,9.80,9.85,9.90,10.0,11.0]
      Y1S2=[0.00,1.21,1.32,1.41,1.41,1.30,1.88,2.00,2.02,2.02,2.83,2.11,2.07,1.78,2.10,1.96,1.75,1.87,2.17,5.305]
      YP1S2=[20*0.0]
      # 2P10 E=9.5801524 EV  J=1 
      # ABOVE 100EV SCALED BY 1/E**3
      X2P10=[9.5802,9.80,10.0,10.5,11.0,11.5,12.0,12.5,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P10=[0.00,0.69,1.23,2.34,3.15,3.73,4.14,4.41,4.59,4.76,4.74,4.63,4.26,3.84,2.91,2.23,1.75,1.40,0.95,0.69,.406,.267]
      YP2P10=[22*0.0]
      # 2P9 E=9.6856199 EV  J=2
      # ABOVE 100EV SCALED BY 1/E
      X2P9=[9.6856,10.0,10.5,11.0,11.5,12.0,12.5,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P9=[0.00,1.50,3.37,4.49,5.47,6.04,6.48,6.91,7.41,7.49,7.41,6.98,6.26,5.04,4.17,3.52,3.09,2.52,2.08,1.58,1.22]
      YP2P9=[21*0.0]
      # 2P8 E=9.7207401 EV  J=3
      # ABOVE 100EV SCALED BY 1/E**3
      X2P8=[9.7207,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P8=[0.00,1.16,2.78,3.88,4.86,5.44,5.83,6.02,6.35,6.41,6.48,6.33,4.89,3.24,1.51,0.72,0.43,0.26,0.11,.061,.021,.0093]
      YP2P8=[22*0.0]
      # 2P7 E=9.7892996 EV  J=1
      # ABOVE 100EV SCALED BY 1/E**2
      X2P7=[9.7893,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P7=[0.00,0.66,1.68,2.52,3.12,3.48,3.72,3.90,4.02,4.14,4.20,4.20,3.90,3.48,2.64,1.80,1.26,0.96,0.63,0.42,0.24,0.15]
      YP2P7=[22*0.0]
      # 2P6 E=9.8210934 EV  J=2
      # ABOVE 100EV SCALED BY 1/E
      X2P6=[9.8211,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P6=[0.00,0.26,1.05,1.47,1.92,2.19,2.32,2.43,2.53,2.62,2.64,2.88,3.06,2.94,2.70,2.10,1.68,1.53,1.26,1.02,0.78,0.60]
      YP2P6=[22*0.0]
      # 3D6 E=9.8903760 EV  J=0
      # ABOVE 100EV SCALED BY 1/E**1.5
      X3D6=[9.8904,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,17.0,18.0,20.0,22.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y3D6=[0.00,0.23,0.83,1.50,2.17,2.77,3.22,3.60,3.90,4.20,4.42,4.65,4.80,5.02,5.02,4.80,4.50,3.90,2.78,1.87,1.35,1.01,0.66,0.48]
      YP3D6=[24*0.0]
      #
      # 3D5 E=9.9170761 EV J=1 RESONACE RADIATION 125.02 NM         F=0.010
      #
      # 2P5 E=9.9334847 EV  J=0 
      # ABOVE 100EV SCALED BY 1/E
      X2P5=[9.9335,13.0,16.0,17.5,20.0,24.0,26.0,28.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P5=[0.00,1.60,2.16,2.70,4.26,7.32,8.46,8.88,8.70,8.40, 7.50,5.70,4.80,3.60,3.00]
      YP2P5=[15*0.0]
      # 3D4# E=9.9431141 EV  J=4
      # ABOVE 100EV SCALED BY 1/E**1.5
      X3D4P=[9.9431,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,17.0,18.0,20.0,22.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y3D4P=[0.00,0.45,1.65,3.00,4.35,5.55,6.45,7.20,7.80,8.40,8.85,9.30,9.60,10.1,10.1,9.60,9.00,7.80,5.77,3.75,2.70,2.03,1.32,0.96]
      YP3D4P=[24*0.0]
      # 3D3 E=9.9587506 EV  J=2
      # ABOVE 100EV SCALED BY 1/E**1.5
      X3D3=[9.9588,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,17.0,18.0,20.0,22.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y3D3=[0.00,0.48,1.76,3.20,4.64,5.92,6.88,7.68,8.32,8.96,9.44,9.92,10.2,10.7,10.7,10.2,9.60,8.32,5.92,4.00,2.88,2.16,1.41,1.03]
      YP3D3=[24*0.0]
      # 3D4 E=10.039054 EV  J=3
      # ABOVE 100EV SCALED BY 1/E**2
      X3D4=[10.0391,10.2,10.5,10.7,11.0,11.2,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,18.0,20.0,22.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y3D4=[0.00,0.50,1.50,2.20,3.30,4.00,5.00,6.90,8.70,10.7,12.2,13.3,13.6,13.6,12.8,10.2,9.00,7.30,5.70,3.40,2.90,2.20,1.45,1.00,0.56,0.36]
      YP3D4=[26*0.0]
      # 3D1## E=10.157469 EV  J=2
      # ABOVE 100EV SCALED BY 1/E**3
      X3D1PP=[10.1575,10.5,10.7,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,18.0,20.0,22.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y3D1PP=[0.00,0.70,1.30,2.00,3.20,4.50,5.70,6.80,7.80,8.30,8.50,8.50,8.20,6.70,5.30,3.80,2.90,1.55,0.67,0.35,0.20,.085,.044]
      YP3D1PP=[23*0.0]
      # 3D1# E=10.220042  J=3
      # ABOVE 100EV SCALED BY 1/E
      X3D1P=[10.2200,10.7,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,18.0,20.0,22.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y3D1P=[0.00,0.60,1.04,1.83,2.39,3.00,3.39,3.65,3.83,3.94,4.00,4.00,3.95,3.85,3.70,3.45,2.90,2.15,1.70,1.45,1.08,.875]
      YP3D1P=[22*0.0]
      #
      # 3D2 E=10.401030  J=1 RESONANCE RADIATION  119.20 NM         F=0.379
      #
      # 2S5  E=10.562062 EV  J=2 NOT OBSERVED  USE 1S5 SCALED BY 0.25
      # ABOVE 100EV SCALED BY 1/E**3
      X2S5=[10.5621,11.0,11.5,12.0,12.5,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y2S5=[0.00,0.10,0.25,0.50,1.00,1.50,2.02,1.75,1.70,1.37,1.10,.550,.275,.125,.057,.037,.016,.0085]
      YP2S5=[18*0.0]
      #
      # 2S4  E=10.593211 EV  J=1  RESONANCE RADIATION 117.04 NM     F=0.086  
      #
      # 3P10+3P9+3P8+3P7+3P6+3P5  E=10.9016 EV SCALED SUM OF 2P10--2P5 BY 0.25
      # ABOVE 100EV SCALED BY 1/E
      X3P105=[10.9016,11.50,12.0,12.5,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y3P105=[0.00,1.00,2.70,3.42,4.20,5.10,5.70,5.94,5.93,5.52,5.31,4.71,4.09,3.54,2.68,2.18,1.59,1.26]
      YP3P105=[18*0.0]
      # 2P4 E=10.957614 J=1 
      # ABOVE 100EV SCALED BY 1/E**2
      X2P4=[10.9576,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y2P4=[0.00,0.75,1.10,1.20,1.10,0.75,0.60,0.38,0.25,.145,.095,.065,.037,.025]
      YP2P4=[14*0.0]
      # 4D6+4D3+4D4#+4D4+4D1##+4D1#  SUM 4D  E=10.9715
      #       SHAPE FROM PETROV NORMALISED TO HAYASHI TOTAL
      # ABOVE 100EV SCALED BY 1/E**3
      X4DSUM=[10.9715,12.0,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y4DSUM=[0.00,1.50,4.35,4.65,4.50,4.05,3.00,2.25,0.96,0.57,0.36,0.21,.099,.060,.024,.011]
      YP4DSUM=[16*0.0]
      #
      # 4D5 E=10.978772 J=1 RESONANCE RADIATION AT 112.93 NM        F=0.001
      # 
      # 2P3 E=11.054723  J=2
      # ABOVE 100 EV SCALED BY 1/E
      X2P3=[11.0547,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y2P3=[0.00,2.20,3.00,3.50,3.60,3.50,3.20,2.60,2.20,1.65,1.35,1.10,0.83,0.65]
      YP2P3=[14*0.0]
      # 2P2 E=11.069148  J=1
      # ABOVE 100EV SCALED BY 1/E**2
      X2P2=[11.0691,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]
      Y2P2=[0.00,0.75,1.00,1.08,1.08,0.97,0.85,0.56,0.40,0.22,.145,.100,.054,.035]
      YP2P2=[14*0.0]
      # 2P1 E=11.141221  J=0
      # ABOVE 100EV SCALED BY 1/E
      X2P1=[11.1412,13.0,14.0,15.0,16.0,18.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,80.0,100.]
      Y2P1=[0.00,0.80,1.50,1.90,1.90,1.80,1.60,1.30,1.05,0.91,0.77,0.64,0.52,0.39,0.31]
      YP2P1=[15*0.0]
      #                          
      # 4D2 E=11.162564 EV  J=1 RESONANCE RADIATION AT 111.07 NM    F=0.0835
      # 3S4 E=11.274184 EV  J=1 RESONANCE RADIATION AT 109.97 NM    F=0.0225
      # 5D5 E=11.422451 EV  J=1 RESONANCE RADIATION AT 108.55 NM    F=0.0227 
      # 5D2 E=11.495075 EV  J=1 RESONANCE RADIATION AT 107.86 NM    F=0.002  
      # 4S4 E=11.582864 EV  J=1 RESONANCE RADIATION AT 107.04 NM    F=0.0005 
      # 3S1# E=11.60718 EV  J=1 RESONANCE RADIATION AT 106.82 NM    F=0.1910
      # 6D5 E=11.682783 EV  J=1 RESONANCE RADIATION AT 106.13 NM    F=0.0088 
      # 6D2 E=11.739501 EV  J=1 RESONANCE RADIATION AT 105.61 NM    F=0.0967
      # 5S4 E=11.752100 EV  J=1 RESONANCE RADIATION AT 105.50 NM    F=0.0288
      # 7D5 E=11.806816 EV  J=1 RESONANCE RADIATION AT 105.01 NM    F=0.0042 
      # 7D2 E=11.84030  EV  J=1 RESONANCE RADIATION AT 104.71 NM    F=0.0625
      # 6S4 E=11.85177  EV  J=1 RESONANCE RADIATION AT 104.61 NM    F=0.0025 
      # 2S2 E=11.877758 EV  J=1 RESONANCE RADIATION AT 104.38 NM    F=0.029  
      # 8D5 E=11.891681 EV  J=1 RESONANCE RADIATION AT 104.26 NM    F=0.0035 
      # 8D2 E=11.90816  EV  J=1 RESONANCE RADIATION AT 104.12 NM    F=0.0386 
      # 7S4 E=11.91770  EV  J=1 RESONANCE RADIATION AT 104.03 NM    F=0.005 
      # 9D5 E=11.94156  EV  J=1 RESONANCE RADIATION AT 103.83 NM    F=0.0005 
      # 9D2 E=11.95502  EV  J=1 RESONANCE RADIATION AT 103.71 NM    F=0.025  
      # 8S4 E=11.96207  EV  J=1 RESONANCE RADIATION AT 103.64 NM    F=0.0023 
      # 10D5 E=11.978893 EV J=1 RESONANCE RADIATION AT 103.50 NM    F=0.0005 
      # 10D2 E=11.98858 EV  J=1 RESONANCE RADIATION AT 103.42 NM    F=0.0164     
      # 9S4 E=11.993947 EV  J=1 RESONANCE RADIATION AT 103.37 NM    F=0.0014  
      # SUM HIGHER STATES E=12.0 EV                                 F=0.0831 
      #
      # TOTAL OSCILLATOR SUM =1.650
      #
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24
      Z54T=[4948.,4086.,2921.,2088.,1396.,776.,492.,328.,220.,189.,179.7,178.6,179.0,179.3,179.6,180.2,180.3,181.5,182.1,182.7,183.6,184.4,184.7,185.5,185.7]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #-----------------------------------------------------------------------
      if(NANISO == 0):
            NAME='XENON 2013     ISOTROPIC '
      else:
            NAME='XENON 2013   ANISOTROPIC '
      # endif                                            
      #                                                                       
      # --------------------------------------------------------------------  
      # ON XENON NOT AS GOOD AS ARGON . 
      # USED MOMENTUM TRANSFER X-SECTION FROM SCHMIDT UP TO 2 EV. 
      # FIT TO TOWNS# end COEFFICIENT OF JACQUES ET AL J.PHYS D19(1986)1731
      # AND KRUITHOF TO OBTAIN INELASTIC X-SECTIONS. 
      # 2013: INCLUDED SHELL IONISATION X-SECTIONS
      # 2010: UPDATED IONISATION X-SECTIONS
      # 2009: INCLUDED ALL RESONANCE STATES AND SOME P AND D STATES
      # 2007: INCREASED ENERGY RANGE TO 2MEV
      # 2007: INCLUDED NEW ANGULAR DISTRIBUTION
      # 2007: INCLUDED PENNING TRANSFER FRACTION
      # 2013: INTRODUCED K L AND M SHELL AND CHARGE 1 2 AND (3+4+5) IONISATION
      # --------------------------------------------------------------------  
      #                                                                       
      #  BORN BETHE VALUES FOR IONISATION                               
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=8.04
      C=75.25
      #   
      # AVERAGE AUGER EMISSIONS FROM EACH SHELL
      AUGM5=4.34
      AUGM4=4.43
      AUGM3=6.79
      AUGM2=6.85
      AUGM1=7.94
      AUGL3=8.21
      AUGL2=8.45
      AUGL1=9.39
      AUGK=8.49
      IONMODEL=0
      #
      NION=12
      NATT=1
      NIN=50
      NNULL=0 
      #
      NBREM=25
      DO 6 J=1,NIN
      IZBR[J]=0
      6 CONTINUE
      IZBR[51]=54
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=NANISO   
      #                                                                      
      NDATA=182 
      NEL=153  
      NEPSI=182                                                       
      NIONG=76
      NION2=54
      NION3=47
      NION4=42
      NION5=37
      NION6=35
      NIONK=60
      NIONL1=76
      NIONL2=76
      NIONL3=76
      NIONM1=79
      NIONM2=80
      NIONM3=80
      NIONM4=82
      NIONM5=83
      N1S5=70
      N1S4=38
      N1S3=46
      N1S2=20
      N2P10=22
      N2P9=21
      N2P8=22
      N2P7=22
      N2P6=22
      N3D6=24
      N2P5=15
      N3D4P=24
      N3D3=24
      N3D4=26
      N3D1PP=23
      N3D1P=22
      N2S5=18
      N3PSUM=18
      N2P4=14
      N4DSUM=16
      N2P3=14
      N2P2=14
      N2P1=15  
      #                                                         
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(131.30*AMU)                                       
      E[3]=12.129843
      # EXCITATION X-SECTION AT 1.3 MEV                                      
      E[4]=0.511e-18
      # IONISING X-SECTION AT 1.3 MEV      
      E[5]=0.1782e-17      
      # EOBY FOR MINIMUM IONISING PARTICLE
      E[6]=23.7
      # EOBY AT LOW ENERGY
      EOBY[1]=8.7
      EOBY[2]=20.0 
      EOBY[3]=38.0
      # EOBY FOR SHELLS
      EOBY[4]=400.             
      EOBY[5]=410.             
      EOBY[6]=750.0  
      EOBY[7]=800.0 
      EOBY[8]=920.0 
      EOBY[9]=3850.
      EOBY[10]=4100.
      EOBY[11]=4400.
      EOBY[12]=34561.
      # 
      EION[1]=12.129843
      EION[2]=33.105
      EION[3]=64.155
      EION[4]=676.4 
      EION[5]=689.0 
      EION[6]=940.6 
      EION[7]=1002.1
      EION[8]=1148.7
      EION[9]=4786. 
      EION[10]=5107.
      EION[11]=5453. 
      EION[12]=34561.
      LEGAS[1]=0
      LEGAS[2]=0
      LEGAS[3]=0
      LEGAS[4]=1
      LEGAS[5]=1
      LEGAS[6]=1
      LEGAS[7]=1
      LEGAS[8]=1
      LEGAS[9]=1
      LEGAS[10]=1
      LEGAS[11]=1
      LEGAS[12]=1
      ISHELL[1]=0
      ISHELL[2]=0
      ISHELL[3]=0
      ISHELL[4]=9
      ISHELL[5]=8
      ISHELL[6]=7
      ISHELL[7]=6
      ISHELL[8]=5
      ISHELL[9]=4
      ISHELL[10]=3
      ISHELL[11]=2
      ISHELL[12]=1
      # FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=1
      EC0[2]=5.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      NC0[3]=2
      EC0[3]=10.0
      WKLM[3]=0.0
      EFL[3]=0.0
      NG1[3]=0
      EG1[3]=0.0
      NG2[3]=0
      EG2[3]=0.0
      NC0[4]=4
      EC0[4]=593.7
      WKLM[4]=0.0
      EFL[4]=0.0
      NG1[4]=0
      EG1[4]=0.0
      NG2[4]=0
      EG2[4]=0.0
      NC0[5]=4
      EC0[5]=604.0
      WKLM[5]=0.0
      EFL[5]=0.0
      NG1[5]=0
      EG1[5]=0.0
      NG2[5]=0
      EG2[5]=0.0
      NC0[6]=7
      EC0[6]=782.2
      WKLM[6]=0.0
      EFL[6]=0.0
      NG1[6]=0
      EG1[6]=0.0
      NG2[6]=0
      EG2[6]=0.0
      NC0[7]=7
      EC0[7]=839.7
      WKLM[7]=0.0
      EFL[7]=0.0
      NG1[7]=0
      EG1[7]=0.0
      NG2[7]=0
      EG2[7]=0.0
      NC0[8]=8
      EC0[8]=911.4
      WKLM[8]=0.0
      EFL[8]=0.0
      NG1[8]=0
      EG1[8]=0.0
      NG2[8]=0
      EG2[8]=0.0
      NC0[9]=9
      EC0[9]=4494.3
      WKLM[9]=0.0942
      EFL[9]=4106.
      NG1[9]=5
      EG1[9]=3900.
      NG2[9]=4
      EG2[9]=594.
      NC0[10]=9
      EC0[10]=4774.8
      WKLM[10]=0.093
      EFL[10]=4427.
      NG1[10]=5
      EG1[10]=4181.
      NG2[10]=4
      EG2[10]=594.
      NC0[11]=10
      EC0[11]=5015.2
      WKLM[11]=0.0475
      EFL[11]=4483.
      NG1[11]=5
      EG1[11]=4233.
      NG2[11]=6
      EG2[11]=782.
      NC0[12]=17
      EC0[12]=33900.
      WKLM[12]=0.89
      EFL[12]=29775.
      NG1[12]=8
      EG1[12]=29406.
      NG2[12]=9
      EG2[12]=4494.
      #
      DO 776 J=1,NION
      DO 777 I=1,20000
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE  
      #                               
      EIN[1]=8.3153 
      EIN[2]=8.4365
      EIN[3]=9.4472
      EIN[4]=9.5697
      EIN[5]=9.5802
      EIN[6]=9.6856
      EIN[7]=9.7207
      EIN[8]=9.7893
      EIN[9]=9.8211
      EIN[10]=9.8904
      EIN[11]=9.9171
      EIN[12]=9.9335
      EIN[13]=9.9431
      EIN[14]=9.9588
      EIN[15]=10.0391
      EIN[16]=10.1575
      EIN[17]=10.2200
      EIN[18]=10.4010
      EIN[19]=10.5621
      EIN[20]=10.5932
      EIN[21]=10.9016
      EIN[22]=10.9576
      EIN[23]=10.9715
      EIN[24]=10.9788
      EIN[25]=11.0547
      EIN[26]=11.0691
      EIN[27]=11.1412
      EIN[28]=11.1626
      EIN[29]=11.2742
      EIN[30]=11.4225
      EIN[31]=11.4951
      EIN[32]=11.5829
      EIN[33]=11.6072
      EIN[34]=11.6828
      EIN[35]=11.7395
      EIN[36]=11.7521
      EIN[37]=11.8068
      EIN[38]=11.8403
      EIN[39]=11.8518
      EIN[40]=11.8778
      EIN[41]=11.8917
      EIN[42]=11.9082
      EIN[43]=11.9177
      EIN[44]=11.9416
      EIN[45]=11.9550
      EIN[46]=11.9621
      EIN[47]=11.9789
      EIN[48]=11.9886
      EIN[49]=11.9939
      EIN[50]=12.0
      EIN[51]=0.0
      #***********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # USE TRANSFER FRACTION BETWEEN 0.0 AND 0.1 FOR XENON
      DO 50 NL=1,NIN
      PENFRA[1,NL]=0.0
      # PENNING TRANSFER DISTANCE MICRONS
      PENFRA[2,NL]=1.0
      # PENNING TRANSFER TIME PICOSECONDS
      50 PENFRA[3,NL]=1.0
      #***********************************************************************  
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      4 DO 5 NL=1,NIN
      DO 555 I=1,20000
      if(EG[I]:
      > EIN[NL]) :
      IOFFN[NL]=I-1
      GO TO 5
      # endif
      555 CONTINUE
      5 CONTINUE
      #  
      SCRPT[1]='                                                  '
      SCRPT[2]='ELASTIC ANISOTROPIC      XENON                    '
      if(NANISO == 0):
      :
      SCRPT[2]='ELASTIC ISOTROPIC        XENON                    '
      # endif
      SCRPT[3]='IONISATION CHARGE STATE=1       ELOSS=    12.12984'
      SCRPT[4]='IONISATION CHARGE STATE=2       ELOSS=    33.105  '
      SCRPT[5]='IONISATION CHARGE STATE=3+4+5+6 ELOSS=    64.155  '
      SCRPT[6]='IONISATION  M5-SHELL            ELOSS=   676.4    '
      SCRPT[7]='IONISATION  M4-SHELL            ELOSS=   689.0    '
      SCRPT[8]='IONISATION  M3-SHELL            ELOSS=   940.6    '
      SCRPT[9]='IONISATION  M2-SHELL            ELOSS=  1002.1    '
      SCRPT[10]='IONISATION  M1-SHELL            ELOSS=  1148.7    '
      SCRPT[11]='IONISATION  L3-SHELL            ELOSS=  4786.     '
      SCRPT[12]='IONISATION  L2-SHELL            ELOSS=  5107.     '
      SCRPT[13]='IONISATION  L1-SHELL            ELOSS=  5453.     '
      SCRPT[14]='IONISATION   K-SHELL            ELOSS= 34561.     '
      SCRPT[15]='ATTACHMENT                                        '
      SCRPT[16]='                                                  ' 
      SCRPT[17]='                                                  '
      SCRPT[18]=' EXC  1S5      J=2 METASTABLE   ELOSS=     8.3153 '
      SCRPT[19]=' EXC  1S4      J=1 RESONANT     ELOSS=     8.4365 '
      SCRPT[20]=' EXC  1S3      J=0 METASTABLE   ELOSS=     9.4472 '
      SCRPT[21]=' EXC  1S2      J=1 RESONANT     ELOSS=     9.5697 '
      SCRPT[22]=' EXC  2P10     J=1              ELOSS=     9.5802 '
      SCRPT[23]=' EXC  2P9      J=2              ELOSS=     9.6856 '
      SCRPT[24]=' EXC  2P8      J=3              ELOSS=     9.7207 '
      SCRPT[25]=' EXC  2P7      J=1              ELOSS=     9.7893 '
      SCRPT[26]=' EXC  2P6      J=2              ELOSS=     9.8211 '
      SCRPT[27]=' EXC  3D6      J=0              ELOSS=     9.8904 '
      SCRPT[28]=' EXC  3D5      J=1 RESONANT     ELOSS=     9.9171 '
      SCRPT[29]=' EXC  2P5      J=0              ELOSS=     9.9335 '
      SCRPT[30]=' EXC  3D4#     J=4              ELOSS=     9.9431 '
      SCRPT[31]=' EXC  3D3      J=2              ELOSS=     9.9588 '
      SCRPT[32]=' EXC  3D4      J=3              ELOSS=    10.0391 '
      SCRPT[33]=' EXC  3D1##    J=2              ELOSS=    10.1575 '
      SCRPT[34]=' EXC  3D1#     J=3              ELOSS=    10.2200 '
      SCRPT[35]=' EXC  3D2      J=1 RESONANT     ELOSS=    10.4010 '
      SCRPT[36]=' EXC  2S5      J=2              ELOSS=    10.5621 '
      SCRPT[37]=' EXC  2S4      J=1 RESONANT     ELOSS=    10.5932 '
      SCRPT[38]=' EXC  SUM 3P10-5                ELOSS=    10.9016 '
      SCRPT[39]=' EXC  2P4      J=1              ELOSS=    10.9576 '
      SCRPT[40]=' EXC  SUM 4D                    ELOSS=    10.9715 '
      SCRPT[41]=' EXC  4D5      J=1 RESONANT     ELOSS=    10.9788 '
      SCRPT[42]=' EXC  2P3      J=2              ELOSS=    11.0547 '
      SCRPT[43]=' EXC  2P2      J=1              ELOSS=    11.0691 '
      SCRPT[44]=' EXC  2P1      J=0              ELOSS=    11.1412 '
      SCRPT[45]=' EXC  4D2      J=1 RESONANT     ELOSS=    11.1626 '
      SCRPT[46]=' EXC  3S4      J=1 RESONANT     ELOSS=    11.2742 '
      SCRPT[47]=' EXC  5D5      J=1 RESONANT     ELOSS=    11.4225 '
      SCRPT[48]=' EXC  5D2      J=1 RESONANT     ELOSS=    11.4951 '
      SCRPT[49]=' EXC  4S4      J=1 RESONANT     ELOSS=    11.5829 '
      SCRPT[50]=' EXC  3S1#     J=1 RESONANT     ELOSS=    11.6072 '
      SCRPT[51]=' EXC  6D5      J=1 RESONANT     ELOSS=    11.6828 '
      SCRPT[52]=' EXC  6D2      J=1 RESONANT     ELOSS=    11.7395 '
      SCRPT[53]=' EXC  5S4      J=1 RESONANT     ELOSS=    11.7521 '
      SCRPT[54]=' EXC  7D5      J=1 RESONANT     ELOSS=    11.8068 '
      SCRPT[55]=' EXC  7D2      J=1 RESONANT     ELOSS=    11.8403 '
      SCRPT[56]=' EXC  6S4      J=1 RESONANT     ELOSS=    11.8518 '
      SCRPT[57]=' EXC  2S2      J=1 RESONANT     ELOSS=    11.8778 '
      SCRPT[58]=' EXC  8D5      J=1 RESONANT     ELOSS=    11.8917 '
      SCRPT[59]=' EXC  8D2      J=1 RESONANT     ELOSS=    11.9082 '
      SCRPT[60]=' EXC  7S4      J=1 RESONANT     ELOSS=    11.9177 '
      SCRPT[61]=' EXC  9D5      J=1 RESONANT     ELOSS=    11.9416 '
      SCRPT[62]=' EXC  9D2      J=1 RESONANT     ELOSS=    11.9550 '
      SCRPT[63]=' EXC  8S4      J=1 RESONANT     ELOSS=    11.9621 '
      SCRPT[64]=' EXC  10D5     J=1 RESONANT     ELOSS=    11.9789 '
      SCRPT(65)=' EXC  10D2     J=1 RESONANT     ELOSS=    11.9886 '
      SCRPT(66)=' EXC  9S4      J=1 RESONANT     ELOSS=    11.9939 '
      SCRPT(67)=' EXC  HIGH     J=1 RESONANT     ELOSS=    12.0    '
      SCRPT(68)=' BREMSSTRAHLUNG FROM XENON ATOM                   '
#     EN=-ESTEP/2.0  
      DO 900 I=1,NSTEP    
      EN=EG[I]                                           
#     EN=EN+ESTEP  
      if(EN > EIN[1]:
) :
       GAMMA1=(EMASS2+2.00*EN)/EMASS2
       GAMMA2=GAMMA1*GAMMA1
       BETA=math.sqrt(1.00-1.00/GAMMA2)
       BETA2=BETA*BETA
      # endif                                                     
      if(EN <= XEN[2]:
) : 
       QELA=122.e-16  
       QMOM=122.e-16      
       GO TO 200
      # endif 
      DO 110 J=2,NEL                                                    
      if(EN <= XEL[J]:
) GO TO 120                                        
  110 CONTINUE                                                          
      J=NEL   
  120 YXJ=math.log(YEL[J])
      YXJ1=math.log(YEL[J-1])
      XNJ=math.log(XEL[J])
      XNJ1=math.log(XEL[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QELA=math.exp(A*math.log(EN)+B)*1.e-16                                    
      DO 150 J=2,N                                                 
      if(EN <= XEN[J]:
) GO TO 160                                        
  150 CONTINUE                                                          
      J=N
  160 YXJ=math.log(YMOM[J])
      YXJ1=math.log(YMOM[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMOM=math.exp(A*math.log(EN)+B)*1.e-16                                    
  200 CONTINUE
      PQ1=0.5+(QELA-QMOM)/QELA
      DO 201 J=2,NEPSI                                                  
      if(EN <= XEPS[J]:
) GO TO 202                                       
  201 CONTINUE                                                          
      J=NEPSI                                                           
  202 A=(YEPS[J]-YEPS[J-1])/(XEPS[J]-XEPS[J-1])                         
      B=(XEPS[J-1]*YEPS[J]-XEPS[J]*YEPS[J-1])/(XEPS[J-1]-XEPS[J])       
      PQ2=A*EN+B
# EPSILON =1.0-YEPS
      PQ2=1.00-PQ2
      if(NANISO == 0):
 PEQEL[2][I]=0.5
      if(NANISO == 1):
 PEQEL[2][I]=PQ1
      if(NANISO == 2):
 PEQEL[2][I]=PQ2 
      Q[2][I]=QELA       
      if(NANISO == 0):
 Q[2][I]=QMOM
# IONISATION CHARGE STATE =1                          
      QION[1][I]=0.0
      PEQION[1][I]=0.50
      if(NANISO == 2):
 PEQION[1][I]=0.00                            
      if(EN <= EION[1]:
) GO TO 3200
      if(EN > XION(NIONG):
) GO TO 221                                   
      DO 210 J=2,NIONG                                                  
      if(EN <= XION[J]:
) GO TO 220                                       
  210 CONTINUE                                                          
      J=NIONG                                                           
  220 A=(YIN1[J]-YIN1[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN1[J]-XION[J]*YIN1[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.0D-16           
      GO TO 222
# USE BORN-BETHE X-SECTION ABOVE XION(NIONG) EV
  221 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.8061
  222 CONTINUE  
# USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
# ENERGIES ABOVE 2 * IONISATION ENERGY  
# ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
# IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
)) GO TO 3200
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
# IONISATION CHARGE STATE =2                          
 3200 QION[2][I]=0.0
      PEQION[2][I]=0.50
      if(NANISO == 2):
 PEQION[2][I]=0.00                            
      if(EN <= EION[2]:
) GO TO 3350    
      if(EN > XIN2(NION2):
) GO TO 3221                                 
      DO 3210 J=2,NION2                                                 
      if(EN <= XIN2[J]:
) GO TO 3220                                      
 3210 CONTINUE                                                          
      J=NION2                                                           
 3220 A=(YIN2[J]-YIN2[J-1])/(XIN2[J]-XIN2[J-1])                         
      B=(XIN2[J-1]*YIN2[J]-XIN2[J]*YIN2[J-1])/(XIN2[J-1]-XIN2[J])       
      QION[2][I]=(A*EN+B)*1.0D-16           
      GO TO 3222
# USE BORN-BETHE X-SECTION ABOVE XIN2(NION2) EV
 3221 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.1133
 3222 CONTINUE  
# USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
# ENERGIES ABOVE 2 * IONISATION ENERGY  
# ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
# IONISATION ENERGY
      if(EN <= (2.0*EION[2]:
)) GO TO 3250
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
# IONISATION CHARGE STATE =3                          
 3250 QION[3][I]=0.0
      PEQION[3][I]=0.50
      if(NANISO == 2):
 PEQION[3][I]=0.00                            
      if(EN <= EION[3]:
) GO TO 3300    
      if(EN > XIN3(NION3):
) GO TO 3271                                 
      DO 3265 J=2,NION3                                                 
      if(EN <= XIN3[J]:
) GO TO 3270                                      
 3265 CONTINUE                                                          
      J=NION3                                                           
 3270 A=(YIN3[J]-YIN3[J-1])/(XIN3[J]-XIN3[J-1])                         
      B=(XIN3[J-1]*YIN3[J]-XIN3[J]*YIN3[J-1])/(XIN3[J-1]-XIN3[J])       
      QION[3][I]=(A*EN+B)*1.0D-16           
      GO TO 3272
# USE BORN-BETHE X-SECTION ABOVE XIN3(NION3) EV
 3271 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.05496
 3272 CONTINUE  
# USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON FOR
# ENERGIES ABOVE 2 * IONISATION ENERGY  
# ANISOTROPIC ANGULAR DISTRIBUTION SAME AS ELASTIC AT ENERGY OFF SET BY
# IONISATION ENERGY
      if(EN <= (2.0*EION[3]:
)) GO TO 3300
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
# GROSS SUM OF IONISATION STATE =4+5+6
 3300 Q456=0.0
      if(EN <= 106.35):
 GO TO 3350
      if(EN > XIN4(NION4):
) GO TO 3349
      DO 3310 J=2,NION4
      if(EN <= XIN4[J]:
) GO TO 3325
 3310 CONTINUE
      J=NION4
 3325 A=(YIN4[J]-YIN4[J-1])/(XIN4[J]-XIN4[J-1])                         
      B=(XIN4[J-1]*YIN4[J]-XIN4[J]*YIN4[J-1])/(XIN4[J-1]-XIN4[J])       
      Q456=(A*EN+B)*1.0D-16 
      Q456=Q456*4.0/3.0
      if(EN <= 160.45):
 GO TO 3350
      if(EN > XIN5(NION5):
) GO TO 3349
      DO 3377 J=2,NION5
      if(EN <= XIN5[J]:
) GO TO 3322
 3377 CONTINUE
      J=NION5
 3322 A=(YIN5[J]-YIN5[J-1])/(XIN5[J]-XIN5[J-1])                         
      B=(XIN5[J-1]*YIN5[J]-XIN5[J]*YIN5[J-1])/(XIN5[J-1]-XIN5[J])       
      Q456=Q456+(A*EN+B)*1.0D-16*5.0/3.0
      if(EN <= 227.2):
 GO TO 3350
      if(EN > XIN6(NION6):
) GO TO 3349
      DO 3323 J=2,NION6
      if(EN <= XIN6[J]:
) GO TO 3324
 3323 CONTINUE
      J=NION6
 3324 A=(YIN6[J]-YIN6[J-1])/(XIN6[J]-XIN6[J-1])                         
      B=(XIN6[J-1]*YIN6[J]-XIN6[J]*YIN6[J-1])/(XIN6[J-1]-XIN6[J])       
      Q456=Q456+(A*EN+B)*1.0D-16*6.0/3.0
      GO TO 3350   
# USE BORN BETHE X-SECTION ABOVE XIN4(NION4) EV
 3349 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
# 0.3629 = .01959*4/3 + .004597*5/3  + .002504*6/3
      Q456=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.03629
# SUM 3 + 456
 3350 QION[3][I]=QION[3][I]+Q456     
# M5-SHELL IONISATION      
      QION[4][I]=0.00
      PEQION[4][I]=0.50
      if(NANISO == 2):
 PEQION[4][I]=0.00                            
      if(EN <= EION[4]:
) GO TO 2233
      DO 2231 J=2,NIONM5
      if(EN <= XM5S[J]:
) GO TO 2232
 2231 CONTINUE
      J=NIONM5
 2232 A=(YM5S[J]-YM5S[J-1])/(XM5S[J]-XM5S[J-1])
      B=(XM5S[J-1]*YM5S[J]-XM5S[J]*YM5S[J-1])/(XM5S[J-1]-XM5S[J])
      QION[4][I]=(A*EN+B)*1.e-16
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
# M4-SHELL IONISATION
 2233 QION[5][I]=0.00
      PEQION[5][I]=0.50
      if(NANISO == 2):
 PEQION[5][I]=0.00                            
      if(EN <= EION[5]:
) GO TO 2236
      DO 2234 J=2,NIONM4
      if(EN <= XM4S[J]:
) GO TO 2235
 2234 CONTINUE
      J=NIONM4
 2235 A=(YM4S[J]-YM4S[J-1])/(XM4S[J]-XM4S[J-1])
      B=(XM4S[J-1]*YM4S[J]-XM4S[J]*YM4S[J-1])/(XM4S[J-1]-XM4S[J])
      QION[5][I]=(A*EN+B)*1.e-16
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
# M3-SHELL IONISATION
 2236 QION[6][I]=0.00
      PEQION[6][I]=0.50
      if(NANISO == 2):
 PEQION[6][I]=0.00                            
      if(EN <= EION[6]:
) GO TO 2239
      DO 2237 J=2,NIONM3
      if(EN <= XM3S[J]:
) GO TO 2238
 2237 CONTINUE
      J=NIONM3
 2238 A=(YM3S[J]-YM3S[J-1])/(XM3S[J]-XM3S[J-1])
      B=(XM3S[J-1]*YM3S[J]-XM3S[J]*YM3S[J-1])/(XM3S[J-1]-XM3S[J])
      QION[6][I]=(A*EN+B)*1.e-16
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])
# M2-SHELL IONISATION
 2239 QION[7][I]=0.00
      PEQION[7][I]=0.50
      if(NANISO == 2):
 PEQION[7][I]=0.00                            
      if(EN <= EION[7]:
) GO TO 2242
      DO 2240 J=2,NIONM2
      if(EN <= XM2S[J]:
) GO TO 2241
 2240 CONTINUE
      J=NIONM2
 2241 A=(YM2S[J]-YM2S[J-1])/(XM2S[J]-XM2S[J-1])
      B=(XM2S[J-1]*YM2S[J]-XM2S[J]*YM2S[J-1])/(XM2S[J-1]-XM2S[J])
      QION[7][I]=(A*EN+B)*1.e-16
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
# M1-SHELL IONISATION
 2242 QION[8][I]=0.00
      PEQION[8][I]=0.50
      if(NANISO == 2):
 PEQION[8][I]=0.00                            
      if(EN <= EION[8]:
) GO TO 2245
      DO 2243 J=2,NIONM1
      if(EN <= XM1S[J]:
) GO TO 2244
 2243 CONTINUE
      J=NIONM1
 2244 A=(YM1S[J]-YM1S[J-1])/(XM1S[J]-XM1S[J-1])
      B=(XM1S[J-1]*YM1S[J]-XM1S[J]*YM1S[J-1])/(XM1S[J-1]-XM1S[J])
      QION[8][I]=(A*EN+B)*1.e-16
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
# L3-SHELL IONISATION
 2245 QION[9][I]=0.00
      PEQION[9][I]=0.50
      if(NANISO == 2):
 PEQION[9][I]=0.00                            
      if(EN <= EION[9]:
) GO TO 2248
      DO 2246 J=2,NIONL3
      if(EN <= XL3S[J]:
) GO TO 2247
 2246 CONTINUE
      J=NIONL3
 2247 A=(YL3S[J]-YL3S[J-1])/(XL3S[J]-XL3S[J-1])
      B=(XL3S[J-1]*YL3S[J]-XL3S[J]*YL3S[J-1])/(XL3S[J-1]-XL3S[J])
      QION[9][I]=(A*EN+B)*1.e-16
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
# L2-SHELL IONISATION
 2248 QION[10][I]=0.00
      PEQION[10][I]=0.50
      if(NANISO == 2):
 PEQION[10][I]=0.00                            
      if(EN <= EION[10]:
) GO TO 2251
      DO 2249 J=2,NIONL2
      if(EN <= XL2S[J]:
) GO TO 2250
 2249 CONTINUE
      J=NIONL2
 2250 A=(YL2S[J]-YL2S[J-1])/(XL2S[J]-XL2S[J-1])
      B=(XL2S[J-1]*YL2S[J]-XL2S[J]*YL2S[J-1])/(XL2S[J-1]-XL2S[J])
      QION[10][I]=(A*EN+B)*1.e-16
      PEQION[10][I]=PEQEL[2][(I-IOFFION[10]))
# L1-SHELL IONISATION
 2251 QION[11][I]=0.00
      PEQION[11][I]=0.50
      if(NANISO == 2):
 PEQION[11][I]=0.00                            
      if(EN <= EION[11]:
) GO TO 2254
      DO 2252 J=2,NIONL1
      if(EN <= XL1S[J]:
) GO TO 2253
 2252 CONTINUE
      J=NIONL1
 2253 A=(YL1S[J]-YL1S[J-1])/(XL1S[J]-XL1S[J-1])
      B=(XL1S[J-1]*YL1S[J]-XL1S[J]*YL1S[J-1])/(XL1S[J-1]-XL1S[J])
      QION[11][I]=(A*EN+B)*1.e-16
      PEQION[11][I]=PEQEL[2][(I-IOFFION[11]))
#  K-SHELL IONISATION
 2254 QION[12][I]=0.00
      PEQION[12][I]=0.50
      if(NANISO == 2):
 PEQION[12][I]=0.00                            
      if(EN <= EION[12]:
) GO TO 2257
      DO 2255 J=2,NIONK 
      if(EN <= XKSH[J]:
) GO TO 2256
 2255 CONTINUE
      J=NIONK 
 2256 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
      QION[12][I]=(A*EN+B)*1.e-16
      PEQION[12][I]=PEQEL[2][(I-IOFFION[12]))
 2257 CONTINUE
# ATTACHMENT
      Q[4][I]=0.0
# COUNTING IONISATION                                   
      Q[5][I]=0.0     
      PEQEL[5][I]=0.50
      if(NANISO == 2):
 PEQEL[5][I]=0.00                                  
      if(EN <= EION[1]:
) GO TO 242     
      if(EN > XION(NIONG):
) GO TO 241                                
      DO 231 J=2,NIONG                                                 
      if(EN <= XION[J]:
) GO TO 240                                       
  231 CONTINUE                                                          
      J=NIONG                                                          
  240 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])       
      Q[5][I]=(A*EN+B)*1.0D-16 
      GO TO 242
# USE BORN-BETHE X-SECTION ABOVE XION(NION) EV
  241 Q[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
  242 CONTINUE   
# CORRECTION TO CHARGE STATE 1 2 3+4+5+6 X-SECTION FOR K L AND M SHELLS
# CORRECTION GIVES TOTAL IONISATION EQUAL TO OSCILLATOR SUM
      QTEMP=QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]+QION[8][I]+QION[9][I]+QION[10][I]+QION[11][I]+QION[12][I]
      if(Q[5][I]:
 == 0.0) :
       QCORR=1.0
      else:
       QCORR=(Q[5][I]-QTEMP)/Q[5][I]
      # endif
      QION[1][I]=QION[1][I]*QCORR
      QION[2][I]=QION[2][I]*QCORR
      QION[3][I]=QION[3][I]*QCORR
#
      Q[6][I]=0.0                                                        
#     
      DO 251 NL=1,NIN+1
      QIN(NL,I)=0.0
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
 :
       PEQIN(NL,I)=0.00
      # endif
  251 CONTINUE 
# 1S5                                                    
      if(EN <= EIN[1]:
) GO TO 413     
      if(EN > X1S5(N1S5):
) GO TO 3110                                   
      DO 310 J=2,N1S5                                                   
      if(EN <= X1S5[J]:
) GO TO 311                                      
  310 CONTINUE                                                          
      J=N1S5                                                           
  311 A=(Y1S5[J]-Y1S5[J-1])/(X1S5[J]-X1S5[J-1])                     
      B=(X1S5[J-1]*Y1S5[J]-X1S5[J]*Y1S5[J-1])/(X1S5[J-1]-X1S5[J]) 
      QIN[1][I]=(A*EN+B)*1.0D-18 
      GO TO 3111
 3110 QIN[1][I]=Y1S5(N1S5)*(X1S5(N1S5)/EN)**3*1.0D-18
 3111 if(EN <= (2.0*EIN[1])) GO TO 312
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]      
# 1S4 F=0.260                   
  312 if(EN <= EIN[2]) GO TO 413                    
      if(EN > X1S4(N1S4):
) GO TO 3141                    
      DO 313 J=2,N1S4                                                  
      if(EN <= X1S4[J]:
) GO TO 314
  313 CONTINUE                                                          
      J=N1S4                                                           
  314 A=(Y1S4[J]-Y1S4[J-1])/(X1S4[J]-X1S4[J-1])                     
      B=(X1S4[J-1]*Y1S4[J]-X1S4[J]*Y1S4[J-1])/(X1S4[J-1]-X1S4[J]) 
      QIN[2][I]=(A*EN+B)*1.0D-18
      GO TO 3142
 3141 QIN[2][I]=0.260/(EIN[2]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[2]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[2]+E[3])
 3142 if(EN <= (2.0*EIN[2])) GO TO 315
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]  
# 1S3                                  
  315 if(EN <= EIN[3]) GO TO 413  
      if(EN > X1S3(N1S3):
) GO TO 3170                              
      DO 316 J=2,N1S3                                                  
      if(EN <= X1S3[J]:
) GO TO 317                                      
  316 CONTINUE                                                          
      J=N1S3                                                           
  317 A=(Y1S3[J]-Y1S3[J-1])/(X1S3[J]-X1S3[J-1])                     
      B=(X1S3[J-1]*Y1S3[J]-X1S3[J]*Y1S3[J-1])/(X1S3[J-1]-X1S3[J]) 
      QIN[3][I]=(A*EN+B)*1.0D-18  
      GO TO 3171
 3170 QIN[3][I]=Y1S3(N1S3)*(X1S3(N1S3)/EN)**3*1.0D-18
 3171 if(EN <= (2.0*EIN[3])) GO TO 318
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]  
# 1S2 F=0.183                   
  318 if(EN <= EIN[4]) GO TO 413                
      if(EN > X1S2(N1S2):
) GO TO 3201       
      DO 319 J=2,N1S2                                                  
      if(EN <= X1S2[J]:
) GO TO 320                               
  319 CONTINUE                                                          
      J=N1S2                                                           
  320 A=(Y1S2[J]-Y1S2[J-1])/(X1S2[J]-X1S2[J-1])                     
      B=(X1S2[J-1]*Y1S2[J]-X1S2[J]*Y1S2[J-1])/(X1S2[J-1]-X1S2[J]) 
      QIN[4][I]=(A*EN+B)*1.0D-18
      GO TO 3202
 3201 QIN[4][I]=0.183/(EIN[4]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[4]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[4]+E[3])
 3202 if(EN <= (2.0*EIN[4])) GO TO 321
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]#
# P STATES
#
# 2P10    
  321 if(EN <= EIN[5]) GO TO 413 
      if(EN > X2P10(N2P10):
) GO TO 3230                                
      DO 322 J=2,N2P10                                                 
      if(EN <= X2P10[J]:
) GO TO 323                                      
  322 CONTINUE                                                          
      J=N2P10                                                           
  323 A=(Y2P10[J]-Y2P10[J-1])/(X2P10[J]-X2P10[J-1])                     
      B=(X2P10[J-1]*Y2P10[J]-X2P10[J]*Y2P10[J-1])/(X2P10[J-1]-X2P10[J]) 
      QIN[5][I]=(A*EN+B)*1.0D-18         
      GO TO 3231
 3230 QIN[5][I]=Y2P10(N2P10)*(X2P10(N2P10)/EN)**3*1.0D-18 
 3231 if(EN <= (2.0*EIN[5])) GO TO 324
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]# 2P9    
  324 if(EN <= EIN[6]) GO TO 413                        
      if(EN > X2P9(N2P9):
) GO TO 3260                
      DO 325 J=2,N2P9                                                 
      if(EN <= X2P9[J]:
) GO TO 326                                      
  325 CONTINUE                                                          
      J=N2P9                                                           
  326 A=(Y2P9[J]-Y2P9[J-1])/(X2P9[J]-X2P9[J-1])                     
      B=(X2P9[J-1]*Y2P9[J]-X2P9[J]*Y2P9[J-1])/(X2P9[J-1]-X2P9[J]) 
      QIN[6][I]=(A*EN+B)*1.0D-18      
      GO TO 3261
 3260 QIN[6][I]=Y2P9(N2P9)*(X2P9(N2P9)/EN)*1.0D-18
 3261 if(EN <= (2.0*EIN[6])) GO TO 327
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]# 2P8    
  327 if(EN <= EIN[7]) GO TO 413                 
      if(EN > X2P8(N2P8):
) GO TO 3290                       
      DO 328 J=2,N2P8                                                 
      if(EN <= X2P8[J]:
) GO TO 329                                      
  328 CONTINUE                                                          
      J=N2P8                                                           
  329 A=(Y2P8[J]-Y2P8[J-1])/(X2P8[J]-X2P8[J-1])                     
      B=(X2P8[J-1]*Y2P8[J]-X2P8[J]*Y2P8[J-1])/(X2P8[J-1]-X2P8[J]) 
      QIN[7][I]=(A*EN+B)*1.0D-18      
      GO TO 3291  
 3290 QIN[7][I]=Y2P8(N2P8)*(X2P8(N2P8)/EN)**3*1.0D-18  
 3291 if(EN <= (2.0*EIN[7])) GO TO 330
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]# 2P7    
  330 if(EN <= EIN[8]) GO TO 413                    
      if(EN > X2P7(N2P7):
) GO TO 3320                    
      DO 331 J=2,N2P7                                                 
      if(EN <= X2P7[J]:
) GO TO 332                                      
  331 CONTINUE                                                          
      J=N2P7                                                           
  332 A=(Y2P7[J]-Y2P7[J-1])/(X2P7[J]-X2P7[J-1])                     
      B=(X2P7[J-1]*Y2P7[J]-X2P7[J]*Y2P7[J-1])/(X2P7[J-1]-X2P7[J]) 
      QIN[8][I]=(A*EN+B)*1.0D-18      
      GO TO 3321 
 3320 QIN[8][I]=Y2P7(N2P7)*(X2P7(N2P7)/EN)**2*1.0D-18   
 3321 if(EN <= (2.0*EIN[8])) GO TO 333
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]# 2P6    
  333 if(EN <= EIN[9]) GO TO 413                    
      if(EN > X2P6(N2P6):
) GO TO 3355                    
      DO 334 J=2,N2P6                                                 
      if(EN <= X2P6[J]:
) GO TO 335                                      
  334 CONTINUE                                                          
      J=N2P6                                                           
  335 A=(Y2P6[J]-Y2P6[J-1])/(X2P6[J]-X2P6[J-1])                     
      B=(X2P6[J-1]*Y2P6[J]-X2P6[J]*Y2P6[J-1])/(X2P6[J-1]-X2P6[J]) 
      QIN[9][I]=(A*EN+B)*1.0D-18      
      GO TO 3356   
 3355 QIN[9][I]=Y2P6(N2P6)*(X2P6(N2P6)/EN)*1.0D-18
 3356 if(EN <= (2.0*EIN[9])) GO TO 336
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]# 3D6    
  336 if(EN <= EIN[10]) GO TO 413                
      if(EN > X3D6(N3D6):
) GO TO 3380                    
      DO 337 J=2,N3D6                                                 
      if(EN <= X3D6[J]:
) GO TO 338                                      
  337 CONTINUE                                                          
      J=N3D6                                                           
  338 A=(Y3D6[J]-Y3D6[J-1])/(X3D6[J]-X3D6[J-1])                     
      B=(X3D6[J-1]*Y3D6[J]-X3D6[J]*Y3D6[J-1])/(X3D6[J-1]-X3D6[J]) 
      QIN[10][I]=(A*EN+B)*1.0D-18     
      GO TO 3381  
 3380 QIN[10][I]=Y3D6(N3D6)*(X3D6(N3D6)/EN)**1.5*1.0D-18 
 3381 if(EN <= (2.0*EIN[10])) GO TO 339
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
# 3D5 J=1 F=0.0100   
  339 if(EN <= EIN[11]) GO TO 413 
      QIN[11][I]=0.0100/(EIN[11]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[11]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[11]+E[3])
      if(QIN[11][I]:
 < 0.0) QIN[11][I]=0.0
      if(EN <= (2.0*EIN[11]:
)) GO TO 340
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
# 2P5 
  340 if(EN <= EIN[12]) GO TO 413
      if(EN > X2P5(N2P5):
) GO TO 3420
      DO 341 J=2,N2P5                                                 
      if(EN <= X2P5[J]:
) GO TO 342                                      
  341 CONTINUE                                                          
      J=N2P5                                                           
  342 A=(Y2P5[J]-Y2P5[J-1])/(X2P5[J]-X2P5[J-1])                     
      B=(X2P5[J-1]*Y2P5[J]-X2P5[J]*Y2P5[J-1])/(X2P5[J-1]-X2P5[J]) 
      QIN[12][I]=(A*EN+B)*1.0D-18     
      GO TO 3421
 3420 QIN[12][I]=Y2P5(N2P5)*(X2P5(N2P5)/EN)*1.0D-18   
 3421 if(EN <= (2.0*EIN[12])) GO TO 343
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
# 3D4#
  343 if(EN <= EIN[13]) GO TO 413
      if(EN > X3D4P(N3D4P):
) GO TO 3450
      DO 344 J=2,N3D4P                                                
      if(EN <= X3D4P[J]:
) GO TO 345                                      
  344 CONTINUE                                                          
      J=N3D4P                                                           
  345 A=(Y3D4P[J]-Y3D4P[J-1])/(X3D4P[J]-X3D4P[J-1])                     
      B=(X3D4P[J-1]*Y3D4P[J]-X3D4P[J]*Y3D4P[J-1])/(X3D4P[J-1]-X3D4P[J]) 
      QIN[13][I]=(A*EN+B)*1.0D-18       
      GO TO 3451 
 3450 QIN[13][I]=Y3D4P(N3D4P)*(X3D4P(N3D4P)/EN)**1.5*1.0D-18 
 3451 if(EN <= (2.0*EIN[13])) GO TO 346
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
# 3D3 
  346 if(EN <= EIN[14]) GO TO 413
      if(EN > X3D3(N3D3):
) GO TO 3480
      DO 347 J=2,N3D3                                                
      if(EN <= X3D3[J]:
) GO TO 348                                      
  347 CONTINUE                                                          
      J=N3D3                                                           
  348 A=(Y3D3[J]-Y3D3[J-1])/(X3D3[J]-X3D3[J-1])                     
      B=(X3D3[J-1]*Y3D3[J]-X3D3[J]*Y3D3[J-1])/(X3D3[J-1]-X3D3[J]) 
      QIN[14][I]=(A*EN+B)*1.0D-18     
      GO TO 3481
 3480 QIN[14][I]=Y3D3(N3D3)*(X3D3(N3D3)/EN)**1.5*1.0D-18    
 3481 if(EN <= (2.0*EIN[14])) GO TO 349
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
# 3D4 
  349 if(EN <= EIN[15]) GO TO 413
      if(EN > X3D4(N3D4):
) GO TO 3510
      DO 350 J=2,N3D4                                                
      if(EN <= X3D4[J]:
) GO TO 351                                      
  350 CONTINUE                                                          
      J=N3D4                                                           
  351 A=(Y3D4[J]-Y3D4[J-1])/(X3D4[J]-X3D4[J-1])                     
      B=(X3D4[J-1]*Y3D4[J]-X3D4[J]*Y3D4[J-1])/(X3D4[J-1]-X3D4[J]) 
      QIN[15][I]=(A*EN+B)*1.0D-18  
      GO TO 3511
 3510 QIN[15][I]=Y3D4(N3D4)*(X3D4(N3D4)/EN)**2*1.0D-18
 3511 if(EN <= (2.0*EIN[15])) GO TO 352
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
# 3D1##
  352 if(EN <= EIN[16]) GO TO 413
      if(EN > X3D1PP(N3D1PP):
) GO TO 3540
      DO 353 J=2,N3D1PP                                              
      if(EN <= X3D1PP[J]:
) GO TO 354                                
  353 CONTINUE                                                          
      J=N3D1PP                                                        
  354 A=(Y3D1PP[J]-Y3D1PP[J-1])/(X3D1PP[J]-X3D1PP[J-1])               
      B=(X3D1PP[J-1]*Y3D1PP[J]-X3D1PP[J]*Y3D1PP[J-1])/(X3D1PP[J-1]-X3D1PP[J]) 
      QIN[16][I]=(A*EN+B)*1.0D-18  
      GO TO 3541
 3540 QIN[16][I]=Y3D1PP(N3D1PP)*(X3D1PP(N3D1PP)/EN)**3*1.0D-18
 3541 if(EN <= (2.0*EIN[16])) GO TO 355
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
# 3D1#
  355 if(EN <= EIN[17]) GO TO 413
      if(EN > X3D1P(N3D1P):
) GO TO 3570
      DO 356 J=2,N3D1P                                              
      if(EN <= X3D1P[J]:
) GO TO 357                                
  356 CONTINUE                                                          
      J=N3D1P                                                        
  357 A=(Y3D1P[J]-Y3D1P[J-1])/(X3D1P[J]-X3D1P[J-1])               
      B=(X3D1P[J-1]*Y3D1P[J]-X3D1P[J]*Y3D1P[J-1])/(X3D1P[J-1]-X3D1P[J]) 
      QIN[17][I]=(A*EN+B)*1.0D-18  
      GO TO 3571
 3570 QIN[17][I]=Y3D1P(N3D1P)*(X3D1P(N3D1P)/EN)*1.0D-18
 3571 if(EN <= (2.0*EIN[17])) GO TO 358
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
# 3D2 J=1 F=0.379
  358 if(EN <= EIN[18]) GO TO 413 
      QIN[18][I]=0.3790/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])
      if(QIN[18][I]:
 < 0.0) QIN[18][I]=0.0
      if(EN <= (2.0*EIN[18]:
)) GO TO 359
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
# 2S5
  359 if(EN <= EIN[19]) GO TO 413
      if(EN > X2S5(N2S5):
) GO TO 3610
      DO 360 J=2,N2S5                                               
      if(EN <= X2S5[J]:
) GO TO 361                                
  360 CONTINUE                                                          
      J=N2S5                                                        
  361 A=(Y2S5[J]-Y2S5[J-1])/(X2S5[J]-X2S5[J-1])               
      B=(X2S5[J-1]*Y2S5[J]-X2S5[J]*Y2S5[J-1])/(X2S5[J-1]-X2S5[J]) 
      QIN[19][I]=(A*EN+B)*1.0D-18  
      GO TO 3611
 3610 QIN[19][I]=Y2S5(N2S5)*(X2S5(N2S5)/EN)**3*1.0D-18
 3611 if(EN <= (2.0*EIN[19])) GO TO 362
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
# 2S4 J=1 F=0.086
  362 if(EN <= EIN[20]) GO TO 413 
      QIN[20][I]=0.086/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])
      if(QIN[20][I]:
 < 0.0) QIN[20][I]=0.0
      if(EN <= (2.0*EIN[20]:
)) GO TO 363
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
# SUM 3P10+3P9+3P8+3P7+3P6+3P5
  363 if(EN <= EIN[21]) GO TO 413
      if(EN > X3P105(N3PSUM):
) GO TO 3650
      DO 364 J=2,N3PSUM                                             
      if(EN <= X3P105[J]:
) GO TO 365                                
  364 CONTINUE                                                          
      J=N3PSUM                                                      
  365 A=(Y3P105[J]-Y3P105[J-1])/(X3P105[J]-X3P105[J-1])               
      B=(X3P105[J-1]*Y3P105[J]-X3P105[J]*Y3P105[J-1])/(X3P105[J-1]-X3P105[J]) 
      QIN[21][I]=(A*EN+B)*1.0D-18
      GO TO 3651
 3650 QIN[21][I]=Y3P105(N3PSUM)*(X3P105(N3PSUM)/EN)*1.0D-18
 3651 if(EN <= (2.0*EIN[21])) GO TO 366
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
# 2P4                           
  366 if(EN <= EIN[22]) GO TO 413
      if(EN > X2P4(N2P4):
) GO TO 3680
      DO 367 J=2,N2P4                                               
      if(EN <= X2P4[J]:
) GO TO 368                                
  367 CONTINUE                                                          
      J=N2P4                                                      
  368 A=(Y2P4[J]-Y2P4[J-1])/(X2P4[J]-X2P4[J-1])               
      B=(X2P4[J-1]*Y2P4[J]-X2P4[J]*Y2P4[J-1])/(X2P4[J-1]-X2P4[J]) 
      QIN[22][I]=(A*EN+B)*1.0D-18  
      GO TO 3681
 3680 QIN[22][I]=Y2P4(N2P4)*(X2P4(N2P4)/EN)**2*1.0D-18
 3681 if(EN <= (2.0*EIN[22])) GO TO 369
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
# SUM 4D6+4D3+4D4P+4D4+4D1PP+4D1P
  369 if(EN <= EIN[23]) GO TO 413
      if(EN > X4DSUM(N4DSUM):
) GO TO 3710
      DO 370 J=2,N4DSUM                                              
      if(EN <= X4DSUM[J]:
) GO TO 371                                
  370 CONTINUE                                                          
      J=N4DSUM                                                      
  371 A=(Y4DSUM[J]-Y4DSUM[J-1])/(X4DSUM[J]-X4DSUM[J-1])               
      B=(X4DSUM[J-1]*Y4DSUM[J]-X4DSUM[J]*Y4DSUM[J-1])/(X4DSUM[J-1]-X4DSUM[J]) 
      QIN[23][I]=(A*EN+B)*1.0D-18
      GO TO 3711
 3710 QIN[2][I]=Y4DSUM(N4DSUM)*(X4DSUM(N4DSUM)/EN)**3*1.0D-18
 3711 if(EN <= (2.0*EIN[23])) GO TO 372
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
# 4D5 J=1 F=0.0010
  372 if(EN <= EIN[24]) GO TO 413 
      QIN[24][I]=0.0010/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])
      if(QIN[24][I]:
 < 0.0) QIN[24][I]=0.0
      if(EN <= (2.0*EIN[24]:
)) GO TO 373
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
# 2P3                           
  373 if(EN <= EIN[25]) GO TO 413
      if(EN > X2P3(N2P3):
) GO TO 3750
      DO 374 J=2,N2P3                                               
      if(EN <= X2P3[J]:
) GO TO 375                                
  374 CONTINUE                                                          
      J=N2P3                                                      
  375 A=(Y2P3[J]-Y2P3[J-1])/(X2P3[J]-X2P3[J-1])               
      B=(X2P3[J-1]*Y2P3[J]-X2P3[J]*Y2P3[J-1])/(X2P3[J-1]-X2P3[J]) 
      QIN[25][I]=(A*EN+B)*1.0D-18  
      GO TO 3751
 3750 QIN[25][I]=Y2P3(N2P3)*(X2P3(N2P3)/EN)*1.e-18
 3751 if(EN <= (2.0*EIN[25])) GO TO 376
# 2P2                           
  376 if(EN <= EIN[26]) GO TO 413
      if(EN > X2P2(N2P2):
) GO TO 3780
      DO 377 J=2,N2P2                                               
      if(EN <= X2P2[J]:
) GO TO 378                                
  377 CONTINUE                                                          
      J=N2P2                                                      
  378 A=(Y2P2[J]-Y2P2[J-1])/(X2P2[J]-X2P2[J-1])               
      B=(X2P2[J-1]*Y2P2[J]-X2P2[J]*Y2P2[J-1])/(X2P2[J-1]-X2P2[J]) 
      QIN[26][I]=(A*EN+B)*1.0D-18  
      GO TO 3781
 3780 QIN[26][I]=Y2P2(N2P2)*(X2P2(N2P2)/EN)**2*1.0D-18
 3781 if(EN <= (2.0*EIN[26])) GO TO 379
# 2P1                           
  379 if(EN <= EIN[27]) GO TO 413
      if(EN > X2P1(N2P1):
) GO TO 3810
      DO 380 J=2,N2P1                                               
      if(EN <= X2P1[J]:
) GO TO 381                                
  380 CONTINUE                                                          
      J=N2P1                                                      
  381 A=(Y2P1[J]-Y2P1[J-1])/(X2P1[J]-X2P1[J-1])               
      B=(X2P1[J-1]*Y2P1[J]-X2P1[J]*Y2P1[J-1])/(X2P1[J-1]-X2P1[J]) 
      QIN[27][I]=(A*EN+B)*1.0D-18  
      GO TO 3811
 3810 QIN[27][I]=Y2P1(N2P1)*(X2P1(N2P1)/EN)*1.e-18
 3811 if(EN <= (2.0*EIN[27])) GO TO 382
# 4D2 J=1 F=0.0835
  382 if(EN <= EIN[28]) GO TO 413 
      QIN[28][I]=0.0835/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])
      if(QIN[28][I]:
 < 0.0) QIN[28][I]=0.0
      if(EN <= (2.0*EIN[28]:
)) GO TO 383
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
# 3S4 J=1 F=0.0225
  383 if(EN <= EIN[29]) GO TO 413 
      QIN[29][I]=0.0225/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])
      if(QIN[29][I]:
 < 0.0) QIN[29][I]=0.0
      if(EN <= (2.0*EIN[29]:
)) GO TO 384
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
# 5D5 J=1 F=0.0227
  384 if(EN <= EIN[30]) GO TO 413 
      QIN[30][I]=0.0227/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])
      if(QIN[30][I]:
 < 0.0) QIN[30][I]=0.0
      if(EN <= (2.0*EIN[30]:
)) GO TO 385
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
# 5D2 J=1 F=0.0020
  385 if(EN <= EIN[31]) GO TO 413 
      QIN[31][I]=0.0020/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])
      if(QIN[31][I]:
 < 0.0) QIN[31][I]=0.0
      if(EN <= (2.0*EIN[31]:
)) GO TO 386
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
# 4S4 J=1 F=0.0005
  386 if(EN <= EIN[32]) GO TO 413 
      QIN[32][I]=0.0005/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])
      if(QIN[32][I]:
 < 0.0) QIN[32][I]=0.0
      if(EN <= (2.0*EIN[32]:
)) GO TO 387
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
# 3S1# J=1 F=0.1910
  387 if(EN <= EIN[33]) GO TO 413 
      QIN[33][I]=0.1910/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])
      if(QIN[33][I]:
 < 0.0) QIN[33][I]=0.0
      if(EN <= (2.0*EIN[33]:
)) GO TO 388
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
# 6D5 J=1 F=0.0088 
  388 if(EN <= EIN[34]) GO TO 413 
      QIN[34][I]=0.0088/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])
      if(QIN[34][I]:
 < 0.0) QIN[34][I]=0.0
      if(EN <= (2.0*EIN[34]:
)) GO TO 389
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
# 6D2 J=1 F=0.0967 
  389 if(EN <= EIN[35]) GO TO 413 
      QIN[35][I]=0.0967/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])
      if(QIN[35][I]:
 < 0.0) QIN[35][I]=0.0
      if(EN <= (2.0*EIN[35]:
)) GO TO 390
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
# 5S4 J=1 F=0.0288 
  390 if(EN <= EIN[36]) GO TO 413 
      QIN[36][I]=0.0288/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])
      if(QIN[36][I]:
 < 0.0) QIN[36][I]=0.0
      if(EN <= (2.0*EIN[36]:
)) GO TO 391
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
# 7D5 J=1 F=0.0042 
  391 if(EN <= EIN[37]) GO TO 413 
      QIN[37][I]=0.0042/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])
      if(QIN[37][I]:
 < 0.0) QIN[37][I]=0.0
      if(EN <= (2.0*EIN[37]:
)) GO TO 392
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
# 7D2 J=1 F=0.0625 
  392 if(EN <= EIN[38]) GO TO 413 
      QIN[38][I]=0.0625/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])
      if(QIN[38][I]:
 < 0.0) QIN[38][I]=0.0
      if(EN <= (2.0*EIN[38]:
)) GO TO 393
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
# 6S4 J=1 F=0.0025 
  393 if(EN <= EIN[39]) GO TO 413 
      QIN[39][I]=0.0025/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+E[3])
      if(QIN[39][I]:
 < 0.0) QIN[39][I]=0.0
      if(EN <= (2.0*EIN[39]:
)) GO TO 394
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
# 2S2 J=1 F=0.0290 
  394 if(EN <= EIN[40]) GO TO 413 
      QIN[40][I]=0.0290/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+E[3])
      if(QIN[40][I]:
 < 0.0) QIN[40][I]=0.0
      if(EN <= (2.0*EIN[40]:
)) GO TO 395
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
# 8D5 J=1 F=0.0035 
  395 if(EN <= EIN[41]) GO TO 413 
      QIN[41][I]=0.0035/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3])
      if(QIN[41][I]:
 < 0.0) QIN[41][I]=0.0
      if(EN <= (2.0*EIN[41]:
)) GO TO 396
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
# 8D2 J=1 F=0.0386 
  396 if(EN <= EIN[42]) GO TO 413 
      QIN[42][I]=0.0386/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+E[3])
      if(QIN[42][I]:
 < 0.0) QIN[42][I]=0.0
      if(EN <= (2.0*EIN[42]:
)) GO TO 397
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
# 7S4 J=1 F=0.0050 
  397 if(EN <= EIN[43]) GO TO 413 
      QIN[43][I]=0.0050/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+E[3])
      if(QIN[43][I]:
 < 0.0) QIN[43][I]=0.0
      if(EN <= (2.0*EIN[43]:
)) GO TO 398
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
# 9D5 J=1 F=0.0005 
  398 if(EN <= EIN[44]) GO TO 413 
      QIN[44][I]=0.0005/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])
      if(QIN[44][I]:
 < 0.0) QIN[44][I]=0.0
      if(EN <= (2.0*EIN[44]:
)) GO TO 399
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
# 9D2 J=1 F=0.0250 
  399 if(EN <= EIN[45]) GO TO 413 
      QIN[45][I]=0.0250/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      if(QIN[45][I]:
 < 0.0) QIN[45][I]=0.0
      if(EN <= (2.0*EIN[45]:
)) GO TO 400
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
# 8S4 J=1 F=0.0023 
  400 if(EN <= EIN[46]) GO TO 413 
      QIN[46][I]=0.0023/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      if(QIN[46][I]:
 < 0.0) QIN[46][I]=0.0
      if(EN <= (2.0*EIN[46]:
)) GO TO 401
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
# 10D5 J=1 F=0.0005 
  401 if(EN <= EIN[47]) GO TO 413 
      QIN[47][I]=0.0005/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+E[3])
      if(QIN[47][I]:
 < 0.0) QIN[47][I]=0.0
      if(EN <= (2.0*EIN[47]:
)) GO TO 402
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
# 10D2 J=1 F=0.0164 
  402 if(EN <= EIN[48]) GO TO 413 
      QIN[48][I]=0.0164/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      if(QIN[48][I]:
 < 0.0) QIN[48][I]=0.0
      if(EN <= (2.0*EIN[48]:
)) GO TO 403
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
# 9S4  J=1 F=0.0014 
  403 if(EN <= EIN[49]) GO TO 413 
      QIN[49][I]=0.0014/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      if(QIN[49][I]:
 < 0.0) QIN[49][I]=0.0
      if(EN <= (2.0*EIN[49]:
)) GO TO 404
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
# HIGH J=1 F=0.0831
  404 if(EN <= EIN[50]) GO TO 413 
      QIN[50][I]=0.0831/(EIN[50]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[50]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[50]+E[3])
      if(QIN[50][I]:
 < 0.0) QIN[50][I]=0.0
      if(EN <= (2.0*EIN[50]:
)) GO TO 405
      PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])]
  405 CONTINUE
      if(EN <= 1000.):
 GO TO 413
      DO 500 J=2,NBREM
      if(EN <= EBRM[2]:
) GO TO 510
  500 CONTINUE
      J=NBREM
  510 A=(math.log(Z54T[J])-math.log(Z54T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z54T[J])*EBRM[J-1]-math.log(Z54T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[51][I]=math.exp(A*EN+B)*1.e-24
#
# CALCULATE TOTAL X-SECTION
  413 QEXC=0.0
      DO 414 NLEV=1,NIN
  414 QEXC=QEXC+QIN(NLEV,I) 
      Q[1][I]=QELA+QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]+QION[8][I]+QION[9][I]+QION[10][I]+QION[11][I]+QION[12][I]+QEXC+QIN[51][I]
#
#     WRITE(6,997) EN,Q[1][I],QEXC,Q[5][I],QELA
# 997 print(' EN =','%.4f' % ,' QTOT =','%.3f' %,' QEXC =','%.3f' %,' QION =',D12
#    /.3,' QELA = ','%.3f' %)  
#
  900 CONTINUE       
# SAVE COMPUTE TIME
      DO 910 K=1,NIN
      if(EFINAL <= EIN[K]:
) :
       NIN=K-1
       GO TO 911
      # endif
  910 CONTINUE
  911 CONTINUE
      if(EFINAL > 1000.):
 NIN=51
      return                                                            
      # end 
def GAS8(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN) 
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(153),YELM(153),YELT(153),YEPS(153),XATT[6],YATT[6], XVBV4[26],YVBV4[26],XVBV2[29],YVBV2[29],XVBV1[30],YVBV1[30],XVBV3[25],YVBV3[25],XVBH1[14],YVBH1[14],XVBH2[14],YVBH2[14],XION(70),YION(70),YINC(70),XINF(70),YINF(70),XINF1(68),YINF1(68),XINF2(66),YINF2(66),XINF3[53],YINF3[53],XINF4[51],YINF4[51],XINF5[50],YINF5[50],XIN'%.4f' %8),YIN'%.4f' %8),XINPP[49],YINPP[49],XDET[9],YDET[9],XTR1[12],YTR1[12],XTR2[11],YTR2[11],XTR3[11],YTR3[11],XCHD[32],YCHD[32],XCHB[35],YCHB[35],XHAL[34],YHAL[34],XHBE[34],YHBE[34],XKSH(83),YKSH(83),IOFFN[34],IOFFION[10]
      DIMENSION Z1T[25],Z6T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      XEN=[0.00,.0001,.001,.002,.004,.007,0.01,.012,.014,.017,0.02,.025,0.03,.035,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.14,0.17,0.20,0.24,0.28,0.32,0.36,0.40,0.45,0.50,0.60,0.70,0.80,1.00,1.20,1.40,1.70,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.,150.,200.,300.,400.,500.,600.,800.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,7000.,8000.,9000.,1.D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D9,9.0D8,1.0D9]
# ELASTIC MOMENTUM TRANSFER X-SECTION     
      YELM=[26.7,25.4,22.6,21.0,18.8,16.5,14.8,13.9,13.0,12.0,11.2,10.05,9.05,8.20,7.50,6.25,5.30,4.60,3.88,3.22,2.60,1.74,1.19,0.70,.440,.290,.270,.270,.325,.410,.540,.645,.850,1.08,1.30,1.75,2.25,2.70,3.50,4.35,6.00,7.70,9.70,11.7,14.9,17.0,18.4,18.6,18.6,17.7,14.6,10.6,6.90,4.80,3.90,2.75,2.15,1.75,1.24,0.96,0.59,.400,.235,0.16,.115,0.09,0.06,.045,.0223,.0134,.00654,.0039,.00261,.00188,.00142,.00112,9.01e-4,7.44e-4,4.96e-4,3.56e-4,2.69e-4,2.11e-4,1.41e-4,1.01e-4,7.67e-5,6.03e-5,4.88e-5,4.04e-5,2.92e-5,2.22e-5,1.76e-5,1.43e-5,1.19e-5,8.09e-6,5.93e-6,4.57e-6,3.66e-6,2.54e-6,1.89e-6,1.48e-6,1.20e-6,9.96e-7,8.45e-7,6.38e-7,5.04e-7,4.11e-7,3.43e-7,2.92e-7,2.09e-7,1.58e-7,1.24e-7,1.00e-7,7.01e-8,5.21e-8,4.04e-8,3.24e-8,2.66e-8,2.22e-8,1.62e-8,1.24e-8,9.84e-9,8.00e-9,6.64e-9,4.45e-9,3.20e-9,2.42e-9,1.90e-9,1.26e-9,8.98e-10,6.74e-10,5.25e-10,4.21e-10,3.45e-10,2.44e-10,1.82e-10,1.40e-10,1.12e-10,9.11e-11,5.89e-11,4.11e-11,3.03e-11,2.32e-11,1.49e-11,1.04e-11,7.63e-12,5.84e-12,4.62e-12,3.74e-12,2.60e-12,1.91e-12,1.46e-12,1.16e-12,9.36e-13]
# ELASTIC TOTAL X-SECTION               
      YELT=[26.7,25.6,23.3,22.0,19.9,17.9,16.4,15.5,14.8,13.8,12.9,11.6,10.6,9.67,8.89,7.60,6.57,5.70,4.90,4.20,3.70,2.80,2.20,1.62,1.23,0.95,0.82,0.75,0.72,0.71,0.73,0.77,0.95,1.10,1.28,1.72,2.25,3.00,3.96,5.05,6.93,8.93,11.2,13.4,17.9,21.5,23.3,24.0,24.1,24.0,22.2,19.9,16.0,13.4,11.6,8.94,7.57,6.46,5.11,4.24,2.79,2.21,1.56,1.06,0.80,0.63,0.50,0.40,0.31,.252,.202,.167,.147,.123,.106,.093,.083,.075,.060,.051,.044,.039,.0315,.0266,.0231,.0205,.0185,.0169,.0144,.0127,.0117,.0104,.00957,.00812,.00715,.00647,.00595,.00524,.00477,.00444,.00420,.00401,.00387,.00365,.00350,.00340,.00331,.00325,.00314,.00308,.00303,.00300,.00296,.00294,.00293,.00292,.00291,.00290,.00290,.00289,.00289,.00289,.00289,.00288,.00288,.00288,.00288,26*.002879]
# EPSILON FOR ELASTIC ANGULAR DISTRIBUTION  
#  EPSILON=1.0-YEPS
      YEPS=[1.00,.9883,.9550,.9319,.9172,.8830,.8543,.8459,.8188,.8058,.8039,.8012,.7827,.7743,.7680,.7373,.7149,.7153,.6937,.6584,.5712,.4669,.3718,.2583,.1913,.1495,.1680,.1932,.2771,.4139,.6212,.7594,.8429,.9727,1.0234,1.0262,1.000,.8507,.8268,.7939,.8003,.7951,.8007,.8111,.7518,.6921,.6907,.6700,.6655,.6181,.5124,.3626,.2575,.1917,.1736,.1512,.1338,.1245,.1054,.0951,.0859,.0685,.0526,.0528,.0493,.0488,.0383,.0350,.0192,.0129,.0069,.0046,.00326,.00272,.00232,.00204,.00180,.00162,.00130,.00107,.00091,.000791,.000634,.000523,.000448,.000390,.000344,.000307,.000254,.000215,1.81e-4,1.63e-4,1.46e-4,1.14e-4,9.23e-5,7.71e-5,6.60e-5,5.06e-5,4.04e-5,3.33e-5,2.81e-5,2.41e-5,2.09e-5,1.63e-5,1.32e-5,1.09e-5,9.17e-6,7.85e-6,5.64e-6,4.24e-6,3.31e-6,2.66e-6,1.83e-6,1.37e-6,1.03e-6,8.09e-7,6.55e-7,5.41e-7,3.88e-7,2.92e-7,2.27e-7,1.82e-7,1.49e-7,9.75e-8,6.87e-8,5.10e-8,3.93e-8,2.54e-8,1.78e-8,1.31e-8,1.01e-8,7.97e-9,6.46e-9,4.48e-9,3.28e-9,2.50e-9,1.97e-9,1.59e-9,1.00e-9,6.86e-10,4.98e-10,3.77e-10,2.37e-10,1.62e-10,1.17e-10,8.90e-11,6.90e-11,5.60e-11,3.80e-11,2.70e-11,2.10e-11,1.60e-11,1.30e-11]
# V4 DIPOLE PART AS ANALYTIC def IN def
# ABOVE 100 EV SCALED BY 1/E**2 
      XVBV4=[.1625135,0.20,0.30,0.40,0.50,0.60,0.80,1.00,1.50,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,20.0,30.0,40.0,50.0,60.0,80.0,100.]
      YVBV4=[0.00,.0001,.060,.057,.055,.050,.040,.035,.041,.056,.082,.278,.406,0.47,0.44,.383,.323,.266,.201,.126,.056,.031,.020,.014,.0079,.005] 
# V2       
      XVBV2=[.1901087,.195,0.20,0.21,0.22,0.23,0.24,0.26,0.28,0.30,0.40,0.50,0.60,0.80,1.00,1.50,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,20.0,30.0,40.0]
      YVBV2=[0.00,.028,.038,.051,.060,.066,.071,.075,.076,.077,  .080,.081,.082,.082,.083,.084,.086,.118,.308,.446,0.49,0.46,.403,.333,.217,.171,.102,.045,.025]
# V1  
      XVBV1=[.3615974,.363,.365,.367,0.37,.375,0.38,0.39,0.40,0.42,0.45,0.50,0.60,0.70,0.80,1.00,1.50,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,20.0,30.0,40.0]
      YVBV1=[.0,.0028,.0043,.0054,.0066,.0083,.0095,.0115,.013,.015,.017,.019,0.02,0.02,.021,.022,.023,.025,.042,.157,.226,.260,.260,.215,.190,.151,.120,.085,.038,.021]
# V3 DIPOLE PART AS ANALYTIC def
      XVBV3=[.3743690,0.40,0.50,0.60,0.70,0.80,1.00,1.50,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,20.0,30.0,40.0,50.0,60.0,80.0,100.]
      YVBV3=[.0,.004,0.01,.011,.011,.011,.011,.015,.019,.105,.458,.596,.680,.680,.593,.433,.300,.241,.142,.063,.0355,.0227,.0158,.0089,.0057]
# VIBRATION HARMONIC 
      XVBH1=[.544,1.00,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,17.5,20.0]
      YVBH1=[0.00,.0007,.0028,.014,.053,.068,.075,.075,.061,.044,.031,.021,.015,.011]
# VIBRATION HARMONIC
      XVBH2=[.736,1.00,2.00,3.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,17.5,20.0]
      YVBH2=[0.00,.0005,.0022,.0135,.044,.058,.064,.064,.053,.039,.024,.014,.010,.006]
# IONISATION  X-SECTION ABOVE 1KEV GIVEN BY BORN-BETHE         
      XION=[12.65,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,     18.0,18.5,19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
# GROSS IONISATION  WEIGHTED AVERAGE OF: RAP AND ENGLANDER, 
#                LINDSAY AND STEBBINGS, AND NISHIMURA
      YION=[0.00,.035,.075,.132,.201,.282,.366,.451,.538,.625,      .715,.803,.892,.990,1.26,1.36,1.44,1.52,1.60,1.68,1.75,2.00,2.23,2.41,2.58,2.72,2.83,2.95,3.06,3.25,3.41,3.52,3.61,3.66,3.71,3.73,3.74,3.75,3.74,3.73,3.71,3.68,3.66,3.63,3.60,3.57,3.53,3.50,3.46,3.42,3.36,3.27,3.12,3.00,2.69,2.40,2.22,2.04,1.88,1.74,1.64,1.53,1.44,1.36,1.30,1.25,1.19,1.15,1.10,1.053]
# COUNTING IONISATION
      YINC=[0.00,.035,.075,.132,.201,.282,.366,.451,.538,.625,      .715,.803,.892,.990,1.26,1.36,1.44,1.52,1.60,1.68,1.75,2.00,2.22,2.40,2.57,2.71,2.82,2.93,3.04,3.23,3.38,3.49,3.57,3.62,3.67,3.69,3.70,3.71,3.70,3.69,3.67,3.64,3.62,3.59,3.56,3.53,3.49,3.46,3.43,3.39,3.33,3.24,3.09,2.97,2.66,2.38,2.20,2.02,1.86,1.72,1.62,1.52,1.43,1.35,1.29,1.24,1.18,1.14,1.09,1.042]
# IONISATION TO DOUBLE CHARGE FINAL STATES
      XINPP=[27.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINPP=[0.00,.005,.005,.005,.005,.005,0.01,0.01,0.01,.015,.015,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,.015,.015,.015,.015,.015,.015,.015,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
# IONISATION TO CH4 +
      XINF=[12.65,13.5,14.0,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF=[0.0,.035,.075,.119,.169,.228,.284,.335,.383,.425,.479,.529,.579,.632,.773,.824,.862,.899,.938,.976,1.008,1.114,1.199,1.254,1.308,1.342,1.363,1.389,1.412,1.443,1.477,1.497,1.502,1.508,1.514,1.514,1.510,1.508,1.499,1.494,1.485,1.470,1.459,1.446,1.434,1.422,1.409,1.401,1.392,1.380,1.359,1.325,1.269,1.227,1.119,1.016,.9535,.8886,.8206,.7609,.7199,.6785,.6419,.6094,.5824,.5599,.5355,.5200,.4990,.4787]
# IONISATION TO CH3 +
      XINF1=[14.25,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF1=[0.0,.013,.032,.054,.081,.114,.152,.195,.230,.267,.304,.347,.471,.517,.557,.598,.633,.668,.700,.808,.896,.968,1.017,1.052,1.073,1.092,1.110,1.145,1.178,1.205,1.221,1.227,1.233,1.232,1.227,1.230,1.226,1.220,1.211,1.201,1.194,1.188,1.181,1.175,1.163,1.153,1.144,1.132,1.113,1.088,1.047,1.011,.9249,.8351,.7766,.7171,.6676,.6240,.5890,.5539,.5237,.4968,.4769,.4605,.4381,.4232,.4048,.3872]
# IONISATION TO CH2 +
      XINF2=[15.2,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF2=[0.0,.0004,.0010,.0019,.0030,.0044,.0058,.0073,.0089,.0108,.0166,.0189,.0209,.0231,.0273,.0318,.0363,.0593,.0888,.1208,.1499,.1797,.2034,.2220,.2415,.2684,.2781,.2866,.2926,.2953,.2980,.3008,.3029,.3001,.2958,.2968,.2969,.2949,.2937,.2902,.2868,.2834,.2790,.2755,.2720,.2677,.2619,.2528,.2381,.2286,.1971,.1729,.1554,.1386,.1268,.1164,.1091,.1019,.0942,.0874,.0839,.0809,.0764,.0732,.0694,.0658]
# IONISATION TO H +
      XINF3=[22.2,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF3=[0.0,.00104,.00218,.00341,.00962,.0176,.0265,.0419,.0585,.0782,.1016,.1266,.1885,.2404,.2799,.3187,.3435,.3688,.3845,.3992,.4088,.4166,.4188,.4198,.4193,.4200,.4154,.4112,.4067,.4003,.3951,.3896,.3834,.3750,.3622,.3405,.3219,.2655,.2247,.2000,.1765,.1570,.1398,.1291,.1187,.1083,.0990,.0933,.0883,.0824,.0780,.0735,.0692]
# IONISATION TO CH+ NOTE THRESHOLD INCREASED FROM 22.3 DUE TO EXC. STATE
      XINF4=[23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF4=[0.0,.00112,.00758,.0166,.0269,.0438,.0621,.0785,.0933,.1090,.1308,.1391,.1490,.1579,.1629,.1679,.1680,.1675,.1689,.1693,.1665,.1631,.1611,.1596,.1570,.1545,.1520,.1491,.1467,.1443,.1415,.1378,.1320,.1220,.1138,.0971,.0824,.0730,.0641,.0573,.0513,.0471,.0430,.0399,.0370,.0349,.0332,.0315,.0304,.0289,.0274]
# IONISATION TO C +
      XINF5=[25.2,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF5=[0.0,.00092,.0018,.0028,.0068,.0112,.0160,.0212,.0267,.0331,.0412,.0446,.0477,.0508,.0539,.0561,.0581,.0581,.0578,.0579,.0578,.0581,.0585,.0581,.0576,.0571,.0561,.0553,.0546,.0536,.0524,.0501,.0463,.0436,.0352,.0303,.0256,.0213,.0188,.0166,.0154,.0142,.0131,.0122,.0106,.0099,.0095,.0093,.0088,.0083]
# IONISATION TO H2 +
      XINF6=[27.9,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YINF6=[0.0,.0010,.0028,.0047,.0074,.0109,.0146,.0214,.0259,.0286,.0311,.0326,.0342,.0349,.0354,.0359,.0361,.0361,.0360,.0356,.0352,.0348,.0344,.0341,.0336,.0332,.0328,.0324,.0317,.0300,.0272,.0248,.0212,.0185,.0160,.0138,.0122,.0109,.0103,.0098,.0089,.0082,.0077,.0073,.0065,.0059,.0057,.0054]
# K-SHELL IONISATION X-SECTION CARBON  
      XKSH=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.0D6,1.26D6,1.5D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.0D7,1.26D7,1.5D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.0D8,1.26D8,1.5D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.0D9]
      YKSH=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
# ATTACHMENT  - DEATTACHMENT VIA H- 9.8 EV RESONANCE (RAWAT ET AL)
      XDET=[7.80,8.00,9.00,9.80,10.0,11.0,12.0,13.0,14.0]
      YDET=[0.00,.0049,.0134,.0153,.0150,.0113,.0038,.0095,0.00]
# ATTACHMENT  VIA CH2- ONLY (RAWAT ET AL)
      XATT=[9.00,10.0,10.4,11.0,12.0,13.0]                          
      YATT=[0.00,0.00092,.00112,.00089,.00027,0.00]                 
# DISSOCIATION TRIPLET + SINGLETS ( SINGLETS GIVEN ANALYTICALLY)
# TRIPLETS  
      XTR1=[7.50,8.50,10.0,11.0,12.0,13.0,15.0,17.0,20.0,23.0,27.0,30.0]
      YTR1=[0.00,.015,.050,.075,.084,.090,.098,.100,.090,.075,.055,.043]
      XTR2=[8.50,10.0,11.0,12.0,13.0,15.0,17.0,20.0,23.0,27.0,30.0]
      YTR2=[0.00,.088,.161,.185,.198,.216,.220,.198,.165,.121,.095]
      XTR3=[10.0,11.0,12.0,13.0,15.0,17.0,20.0,23.0,27.0,30.0,35.0]
      YTR3=[0.00,.245,.504,.588,.665,.700,.700,.665,.525,.406,.301]
# LIGHT EMISSION FROM CH(A2DELTA TO X2PI) 
      XCHD=[13.4,13.5,14.5,18.5,20.6,21.6,22.5,23.6,27.7,31.8,33.5,33.9,35.4,37.5,39.2,40.0,44.0,49.1,55.6,58.3,60.1,63.2,67.0,71.3,76.3,80.3,100.,150.,200.,400.,700.,1000.]
      YCHD=[0.00,.0041,.0065,.0116,.0169,.0205,.0232,.0261,.0299,.0327,.0339,.0355,.0363,.0392,.0411,.0441,.0462,.0469,.0476,.0479,.0481,.0485,.0489,.0491,.0487,.0477,.0403,.0292,.0232,.0131,.0082,.0060]
# LIGHT EMISSION FROM CH(B2SIGMA- TO X2PI)
      XCHB=[13.7,13.8,14.8,18.8,20.9,21.9,22.8,23.9,28.0,32.1,33.8,34.2,35.7,37.8,39.5,42.1,43.4,44.3,49.4,56.0,58.6,60.4,63.5,67.3,71.6,76.6,80.6,100.,150.,200.,400.,700.,1000.,1500.,2000.]
      YCHB=[0.00,2.44e-4,3.91e-4,6.96e-4,.00102,.00123,.0014,.00157,.0018,.00197,.00204,.00214,.00219,.00236,.00248,.00259,.00265,.00278,.00283,.00286,.00289,.00290,.00292,.00295,.00296,.00293,.00287,.00242,.00176,.00139,7.88e-4,4.93e-4,3.63e-4,2.57e-4,2.00e-4]
# LIGHT EMISSION FROM H(ALPHA)
      XHAL=[16.14,16.3,16.6,16.9,17.2,18.1,19.2,20.0,20.8,22.6,25.2,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,144.,185.,200.,224.,245.,284.,364.,453.,500.,600.,700.,800.,1000.,1500.,2000.]
      YHAL=[0.00,2.54e-4,3.80e-4,5.05e-4,6.60e-4,.00101,.00142,.00175,.00209,.00288,.00431,.00686,.01225,.0156,.0181,.0195,.0204,.0203,.0200,.0181,.0148,.0134,.0127,.0119,.0103,.00789,.00598,.00529,.00425,.00357,.00309,.00227,.0016,.00125]
# LIGHT EMISSION FROM H(BETA)
      XHBE=[16.8,18.0,21.9,23.4,24.5,25.5,26.4,28.2,30.0,33.7,37.2,40.0,50.0,57.7,80.0,100.,141.,169.,200.,226.,247.,284.,340.,363.,398.,455.,500.,550.,654.,700.,800.,999.,1500.,2000.]
      YHBE=[0.00,1.53e-4,5.44e-4,7.19e-4,8.85e-4,.00114,.00128,.00159,.00194,.00228,.00269,.00316,.00374,.00419,.00481,.00463,.00419,.00374,.00314,.00288,.00269,.00227,.00194,.00179,.00160,.00140,.00128,.00114,9.5D-4,8.85e-4,7.19e-4,5.45e-4,3.84e-4,3.00e-4]
# BREMSSTRAHLUNG X-SECTION WITH CUT UNITS 10**-24
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
#-----------------------------------------------------------------------
# 2015: INCLUDED IMPLICIT IONISATION DISSOCIATION CHANNELS AND
#        REMOVED IONISATION-EXCITATION (DISSOCIATION) CHANNEL.
#        ADDED ENERGY LOSS TO EXCITED ION LEVELS AS AN 
#        APPROXIMATE CROSS SECTION WITH ENERGY LOSS 16 EV
#-----------------------------------------------------------------------
# 2013: UPDATE INCLUDES USE OF OSCILLATOR STRENGTHS FOR DIPOLE SINGLET
#       DISSOCIATION X-SECTION. USED OSCILLATOR STRENGTH FROM 
#       AN AVERAGE OF BRION AND KATEMA WITH HIGH ENERGY VALUES FROM 
#       BERKOWITZ. 1-2% SCALING FACTOR AT # end OF BEF FORMULA IS FROM
#       INCREASED ENERGY LOSS FROM THRESHOLD ENERGY TO AVERAGE ENERGY 
#       FOR THE DIPOLE STATES. 
#       3 TRIPLET STATE DISSOCIATION X-SECTIONS ALLOWED TO VARY IN ORDER
#       TO GIVE FIT TO TOWNS# end COEFICIENT AT LOW FIELD.
#       INTRODUCED DISSOCIATIVE IONISATION X-SECTION OF APPROXIMATELY
#       50% OF TOTAL IONISATION X-SECTION .  AGREES WITH EXPERIMENTAL 
#       FRAGMENT YIELD FROM LINDSAY AND IMPROVES AGREEMENT WITH WINTERS 
#       TOTAL DISSOCIATION X-SECTION.
#       K-SHELL IONISATION INTRODUCED FOR DE/DX AND FANO CALCULATIONS. 
# ---------------------------------------------------------------------
# 2007: UPDATE OF 2004 DATABASE 
# NOW SPLIT V24 AND V13 VIBRATIONS INTO V1 V2 V3 AND V4 X-SECTIONS
#  SHAPE OF VIBRATIONS GIVEN BY SHAPE defS FROM THEORETICAL 
#  PREDICTIONS BY GIANTURCO ET AL. AND EXPERIMENT BY ALLAN.
#  VIBRATION ANGULAR DISTRIBUTIONS MODELLED BY MODIFIED CAPITELLI/LONGO
#  ELASTIC ANGULAR DISTRIBUTIONS CAN BE EITHER ISOTROPIC OR MODELLED
#  BY OKHRIMOVSKYY ET AL ALGORITHM
# IONISATION AND DISSOCIATION ANGULAR DISTRIBUTIONS GIVEN BY ELASTIC 
# ANGULAR DISTRIBUTION WITH ENERGY OFFSET GIVEN BY THRESHOLD ENERGY.
#  DATABASE EXT# endED TO MIP REGION.
# NOW INCLUDES LIGHT EMISSION X-SECTIONS FROM 
# SASIC ,PETROVIC ET AL NEW JOURNAL OF PHYSICS 6(2004)74
#----------------------------------------------------------------------
# ATTACHMENT CROSS-SECTION OF RAWAT ET AL : JOURNAL OF PHYSICS:
# CONFERENCE SERIES 80(2007)012018 NOW USED INSTEAD OF SHARP AND DOWELL
# DE-ATTACHMENT FOR PART OF ATTACHMENT TO H- ION ASSUMED DUE TO 
# HIGH COLLISIONAL ENERGY printION.
# --------------------------------------------------------------------- 
#  FIT TO METHANE DRIFT VELOCITY OF HADDAD AND SCHMIDT AT LOW FIELD 
#  AND HUNTER AND KLINE AND YOSHIDA AT HIGH FIELD.
#  CALCULATED DRIFT VELOCITY IS WITHIN 1% AT ALL FIELDS UP TO 1000 TD 
#  TRANSVERSE AND LONGITUDINAL DIFFUSION WITHIN 3% AT ALL FIELDS
#  TOWNS# end COEFICIENT WITHIN 3% AT ALL FIELDS  
# REPRODUCES DRIFT VELOCITY AND LORENTZ ANGLES IN ARGON METHANE MIXTURES
# LORENTZ ANGLE ACCURACY LESS THAN 1 DEGREE IN ARGON MIXTURES
# DRIFT VELOCITY BETTER THAN 0.75% IN ARGON MIXTURES.
# ALL ENERGY DEP# endENT FANO FACTORS WITHIN EXPERIMENTAL ERRORS OF 5%  
#-----------------------------------------------------------------------
#     NANISO=0
      if(NANISO == 0):
 :
       NAME=' CH4 2015    ISOTROPIC  '
      else:
       NAME=' CH4 2015  ANISOTROPIC  '
      # endif
#-----------------------------------------------------------------------
# BORN BETHE CONSTANTS
      A0=0.52917720859e-08
      RY=13.60569193
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      BBCONST=16.00*API*A0*A0*RY*RY/EMASS2
#
# BORN BETHE VALUES FOR IONISATION
      AM2=3.75
      C=42.5 
# BORN BETHE FOR EXCITATION
      AM2EXC=1.40
      CEXC=19.0 
#  ARRAY SIZE
      NASIZE=20000
# 
      NION=9
      NATT=1
      NIN=34
      NNULL=0 
      IONMODEL=0
#
      NBREM=25
      DO 8 J=1,NIN
      IZBR[J]=0
    8 CONTINUE
      IZBR[35]=6
      IZBR[36]=1
#
      DO 1 J=1,6
    1 KEL[J]=NANISO
# SUPERELASTIC, V2 V1 AND HARMONIC VIBRATIONS ASSUMED ISOTROPIC
      KIN[1]=0
      KIN[3]=0
      KIN[4]=0
      KIN[5]=0
      KIN[7]=0
      KIN[8]=0
# V4 AND V3 VIBRATIONS ANISOTROPIC ( CAPITELLI-LONGO)
      KIN[2]=1
      KIN[6]=1
# ANGULAR DISTRIBUTION FOR DISSOCIATIVE EXCITATION IS OKHRIMOVSKYY TYPE 
      DO 2 J=9,NIN
    2 KIN[J]=2
#
#  RAT IS MOMENTUM TRANSFER TO TOTAL RATIO FOR VIBRATIONS IN THE
#  RESONANCE REGION AND ALSO FOR THE VIBRATIONS V1 AND V2 .     
#  USED DIPOLE ANGULAR DISTRIBUTION FOR V3 AND V4 NEAR THRESHOLD.
      RAT=1.0  
#                                                         
      NDATA=153 
      NVIBV4=26
      NVIBV2=29
      NVIBV1=30
      NVIBV3=25
      NVIBH1=14
      NVIBH2=14                                                        
      NIOND=70
      NIONF=70
      NIONF1=68
      NIONF2=66
      NIONF3=53
      NIONF4=51
      NIONF5=50
      NION'%.4f' %8
      NIONPP=49
      NKSH=83                                                        
      NATT1=6    
      NDET=9   
      NTRP1=12
      NTRP2=11
      NTRP3=11                                                    
      NCHD=32
      NCHB=35
      NHAL=34
      NHBE=34
# VIBRATIONAL DEGENERACY
      DEGV4=3.0
      DEGV2=2.0
      DEGV1=1.0
      DEGV3=3.0
#
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(16.0426*AMU)                                      
      E[3]=12.65                      
      E[4]=0.0                                      
      E[5]=0.0                                            
      E[6]=0.0 
# 
      EION[1]=12.65
      EION[2]=14.25
      EION[3]=15.2
      EION[4]=22.2
      EION[5]=23.5
      EION[6]=25.2
      EION[7]=27.0
      EION[8]=27.9
      EION[9]=285.0
# OPAL BEATY 
      SCLOBY=0.475      
      EOBY[1]=EION[1]*SCLOBY
      EOBY[2]=EION[2]*SCLOBY
      EOBY[3]=EION[3]*SCLOBY
      EOBY[4]=EION[4]*SCLOBY
      EOBY[5]=EION[5]*SCLOBY
      EOBY[6]=EION[6]*SCLOBY
      EOBY[7]=EION[7]*SCLOBY
      EOBY[8]=EION[8]*SCLOBY
      EOBY[9]=EION[9]*0.63
#
      DO 44 JK=1,8
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
   44 CONTINUE
# DOUBLE CAHRGED IONS STATES (EXTRA ELECTRON)
      NC0[7]=1
      EC0[7]=6.0
# FLUORESCENCE DATA
      LEGAS[9]=1
      ISHELL[9]=1
      NC0[9]=2
      EC0[9]=253.
      WKLM[9]=0.0026
      EFL[9]=273.
      NG1[9]=1
      EG1[9]=253.
      NG2[9]=2
      EG2[9]=5.
# OFFSET ENERGY FOR IONISATION ELECTRON ANGULAR DISTRIBUTION
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
 > EION[J]) :
       IOFFION[J]=I-1
       GO TO 776
      # endif
  777 CONTINUE
  776 CONTINUE
#
      EIN[1]=-0.1625135 
      EIN[2]=0.1625135
      EIN[3]=-0.1901087
      EIN[4]=0.1901087
      EIN[5]=0.3615974 
      EIN[6]=0.3743690
      EIN[7]=0.544
      EIN[8]=0.736
      EIN[9]=7.50  
      EIN[10]=7.80                                               
      EIN[11]=8.50                                                      
      EIN[12]=8.75
      EIN[13]=9.25
      EIN[14]=9.75
      EIN[15]=10.0
      EIN[16]=10.25
      EIN[17]=10.75
      EIN[18]=11.25
      EIN[19]=11.75
      EIN[20]=12.25
      EIN[21]=12.75
      EIN[22]=13.25
      EIN[23]=13.4 
      EIN[24]=13.7  
      EIN[25]=13.75
      EIN[26]=14.25
      EIN[27]=14.75
      EIN[28]=15.25
      EIN[29]=15.75
      EIN[30]=16.0
      EIN[31]=16.14
      EIN[32]=16.8
      EIN[33]=20.5
      EIN[34]=22.0
      EIN[35]=0.0
      EIN[36]=0.0
# OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      DO 3 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
 > abs(EIN[NL])) :
       IOFFN[NL]=I-1
       GO TO 3
      # endif
  651 CONTINUE
    3 CONTINUE
#***********************************************************************
# ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL 
# LEVELS ARE DISSOCIATIVE SO DO NOT  GIVE PENNING TRANSFERS
      for 4 K in range(1,34):
      DO 4 L=1,3
    4 PENFRA[L,K]=0.0
      if(IPEN == 0):
 GO TO 6
      DO 5 KDUM=10,14
      if(PENFRA[1,KDUM] == 0.0):
 GO TO 5
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
  999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)
    5 CONTINUE
#***********************************************************************
#
    6 SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC   ANISOTROPIC      METHANE               '
      if(NANISO == 0):
 :
      SCRPT[2]=' ELASTIC     ISOTROPIC      METHANE               '
      # endif
      SCRPT[3]=' IONISATION   CH4 +                ELOSS= 12.65   '
      SCRPT[4]=' IONISATION   CH3 +                ELOSS= 14.25   '
      SCRPT[5]=' IONISATION   CH2 +                ELOSS= 15.2    '
      SCRPT[6]=' IONISATION   H   +                ELOSS= 22.2    '
      SCRPT[7]=' IONISATION   CH  +                ELOSS= 23.5    '
      SCRPT[8]=' IONISATION   C   +                ELOSS= 25.2    '
      SCRPT[9]=' IONISATION     2(+)               ELOSS= 27.0    '
      SCRPT[10]=' IONISATION   H2  +                ELOSS= 27.9    '
      SCRPT[11]=' IONISATION CARBON K-SHELL         ELOSS=285.0    '
      SCRPT[12]=' ATTACHMENT (CH2- ION  ONLY)                      '
      SCRPT[13]='                                                  ' 
      SCRPT[14]='                                                  ' 
      SCRPT[15]=' VIBRATION V4 SUPERELASTIC         ELOSS=-0.162513'
      SCRPT[16]=' VIBRATION V4                      ELOSS= 0.162513'
      SCRPT[17]=' VIBRATION V2 SUPERELASTIC         ELOSS=-0.190109'
      SCRPT[18]=' VIBRATION V2                      ELOSS= 0.190109'
      SCRPT[19]=' VIBRATION V1                      ELOSS= 0.361597'
      SCRPT[20]=' VIBRATION V3                      ELOSS= 0.374369'
      SCRPT[21]=' VIBRATION  HARMONICS NV1+NV3      ELOSS=  0.544  '
      SCRPT[22]=' VIBRATION  HARMONICS NV2+NV3      ELOSS=  0.736  '
      SCRPT[23]=' EXCITATION TRIPLET  DISSOCIATION  ELOSS=  7.5    '
      SCRPT[24]=' ATTACHMENT - DEATTACHMENT         ELOSS=  7.8    '
      SCRPT[25]=' EXCITATION TRIPLET  DISSOCIATION  ELOSS=  8.5    '  
      SCRPT[26]=' EXCITATION SINGLET  DISSOCIATION  ELOSS=  8.75   '
      SCRPT[27]=' EXCITATION SINGLET  DISSOCIATION  ELOSS=  9.25   '
      SCRPT[28]=' EXCITATION SINGLET  DISSOCIATION  ELOSS=  9.75   '
      SCRPT[29]=' EXCITATION TRIPLET  DISSOCIATION  ELOSS= 10.0    '
      SCRPT[30]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 10.25   '
      SCRPT[31]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 10.75   '
      SCRPT[32]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 11.25   '
      SCRPT[33]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 11.75   '
      SCRPT[34]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 12.25   '
      SCRPT[35]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 12.75   '
      SCRPT[36]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 13.25   '
      SCRPT[37]=' EXCITATION A2D TO GROUND STATE.   ELOSS= 13.4    '
      SCRPT[38]=' EXCITATION B2PI TO GROUND STATE   ELOSS= 13.7    '
      SCRPT[39]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 13.75   '
      SCRPT[40]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 14.25   '
      SCRPT[41]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 14.75   '
      SCRPT[42]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 15.25   '
      SCRPT[43]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 15.75   '
      SCRPT[44]=' EXC. OF POSITIVE ION LEVELS       ELOSS= 16.0    '
      SCRPT[45]=' EXCITATION  H(ALPHA)              ELOSS= 16.14   '
      SCRPT[46]=' EXCITATION  H(BETA)               ELOSS= 16.8    '
      SCRPT[47]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 20.25   '
      SCRPT[48]=' EXCITATION SINGLET  DISSOCIATION  ELOSS= 22.0    '
      SCRPT[49]=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT[50]=' BREMSSTRAHLUNG FROM HYDROGEN ATOM                '
# CALC LEVEL POPULATIONS
      APOPV4=DEGV4*math.exp(EIN[1]/AKT)
      APOPV2=DEGV2*math.exp(EIN[3]/AKT)
      APOPGS=1.0
      APOPSUM=APOPGS+APOPV4+APOPV2
      APOPGS=1.0/APOPSUM
      APOPV4=APOPV4/APOPSUM
      APOPV2=APOPV2/APOPSUM
#  RENORMALISE GROUND STATE TO ALLOW FOR INCREASED EXCITATION X-SEC 
#  FROM EXCITED VIBRATIONAL STATE ( EXACT FOR TWICE GROUND STATE XSEC) 
      APOPGS=1.0
#
#     EN=-ESTEP/2.0  
      DO 1000 I=1,NSTEP 
      EN=EG[I]                                             
#     EN=EN+ESTEP   
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
# USE LOG INTERPOLATION FOR ELASTIC      
      if(EN <= XEN[2]:
) : 
       QELA=26.7D-16
       QMOM=26.7D-16
       PQ2=0.0
       GO TO 30 
      # endif                                                    
      DO 10 J=2,N
      if(EN <= XEN[J]:
) GO TO 11                                        
   10 CONTINUE                                                          
      J=N                                                          
   11 YXJ=math.log(YELT[J])
      YXJ1=math.log(YELT[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QELA=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YELM[J])
      YXJ1=math.log(YELM[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMOM=math.exp(A*math.log(EN)+B)*1.e-16
# 
      YXJ=math.log(YEPS[J])
      YXJ1=math.log(YEPS[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      PQ2=math.exp(A*math.log(EN)+B)
#  EPSILON =1-YEPS
      PQ2=1.00-PQ2
   30 CONTINUE
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
 PEQEL[2][I]=0.5
      if(NANISO == 1):
 PEQEL[2][I]=PQ1
      if(NANISO == 2):
 PEQEL[2][I]=PQ2
      Q[2][I]=QELA 
      if(NANISO == 0):
 Q[2][I]=QMOM
# IONISATION TO CH4 +                                                     
      QION[1][I]=0.0             
      PEQION[1][I]=0.5   
      if(NANISO == 2):
 PEQION[1][I]=0.0                                   
      if(EN < EION[1]:
) GO TO 110   
      if(EN > XINF(NIONF):
) GO TO 103                                   
      DO 101 J=2,NIONF                                                  
      if(EN <= XINF[J]:
) GO TO 102                                       
  101 CONTINUE                                                          
      J=NIONF                                                  
  102 A=(YINF[J]-YINF[J-1])/(XINF[J]-XINF[J-1])                         
      B=(XINF[J-1]*YINF[J]-XINF[J]*YINF[J-1])/(XINF[J-1]-XINF[J])       
      QION[1][I]=(A*EN+B)*1.e-16
      GO TO 104
# USE BORN BETHE X-SECTION ABOVE XINF(NIONF) EV
  103 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.4594
  104 CONTINUE        
      if(EN <= (2.0*EION[1]:
)) GO TO 110
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
# IONISATION TO CH3 +                                                     
  110 QION[2][I]=0.0             
      PEQION[2][I]=0.5   
      if(NANISO == 2):
 PEQION[2][I]=0.0                                   
      if(EN < EION[2]:
) GO TO 120   
      if(EN > XINF1(NIONF1):
) GO TO 113                               
      DO 111 J=2,NIONF1                                                 
      if(EN <= XINF1[J]:
) GO TO 112                                     
  111 CONTINUE                                                          
      J=NIONF1                                                  
  112 A=(YINF1[J]-YINF1[J-1])/(XINF1[J]-XINF1[J-1])                    
      B=(XINF1[J-1]*YINF1[J]-XINF1[J]*YINF1[J-1])/(XINF1[J-1]-XINF1[J])
      QION[2][I]=(A*EN+B)*1.e-16
      GO TO 114
# USE BORN BETHE X-SECTION ABOVE XINF1(NIONF1) EV
  113 QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.3716
  114 CONTINUE        
      if(EN <= (2.0*EION[2]:
)) GO TO 120
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
# IONISATION TO CH2 +                                                     
  120 QION[3][I]=0.0             
      PEQION[3][I]=0.5   
      if(NANISO == 2):
 PEQION[3][I]=0.0                                   
      if(EN < EION[3]:
) GO TO 130   
      if(EN > XINF2(NIONF2):
) GO TO 123                               
      DO 121 J=2,NIONF2                                                 
      if(EN <= XINF2[J]:
) GO TO 122                                     
  121 CONTINUE                                                          
      J=NIONF2                                                  
  122 A=(YINF2[J]-YINF2[J-1])/(XINF2[J]-XINF2[J-1])                    
      B=(XINF2[J-1]*YINF2[J]-XINF2[J]*YINF2[J-1])/(XINF2[J-1]-XINF2[J])
      QION[3][I]=(A*EN+B)*1.e-16
      GO TO 124
# USE BORN BETHE X-SECTION ABOVE XINF2(NIONF2) EV
  123 QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.06312
  124 CONTINUE        
      if(EN <= (2.0*EION[3]:
)) GO TO 130
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
# IONISATION TO H +                                                         
  130 QION[4][I]=0.0             
      PEQION[4][I]=0.5   
      if(NANISO == 2):
 PEQION[4][I]=0.0                                   
      if(EN < EION[4]:
) GO TO 140   
      if(EN > XINF3(NIONF3):
) GO TO 133                               
      DO 131 J=2,NIONF3                                                
      if(EN <= XINF3[J]:
) GO TO 132                                     
  131 CONTINUE                                                          
      J=NIONF3                                                  
  132 A=(YINF3[J]-YINF3[J-1])/(XINF3[J]-XINF3[J-1])                    
      B=(XINF3[J-1]*YINF3[J]-XINF3[J]*YINF3[J-1])/(XINF3[J-1]-XINF3[J])
      QION[4][I]=(A*EN+B)*1.e-16
      GO TO 134
# USE BORN BETHE X-SECTION ABOVE XINF3(NIONF3) EV
  133 QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0664
  134 CONTINUE        
      if(EN <= (2.0*EION[4]:
)) GO TO 140
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
# IONISATION TO CH +                                                         
  140 QION[5][I]=0.0             
      PEQION[5][I]=0.5   
      if(NANISO == 2):
 PEQION[5][I]=0.0                                   
      if(EN < EION[5]:
) GO TO 150   
      if(EN > XINF4(NIONF4):
) GO TO 143                               
      DO 141 J=2,NIONF4                                                
      if(EN <= XINF4[J]:
) GO TO 142                                     
  141 CONTINUE                                                          
      J=NIONF4                                                 
  142 A=(YINF4[J]-YINF4[J-1])/(XINF4[J]-XINF4[J-1])                    
      B=(XINF4[J-1]*YINF4[J]-XINF4[J]*YINF4[J-1])/(XINF4[J-1]-XINF4[J])
      QION[5][I]=(A*EN+B)*1.e-16
      GO TO 144
# USE BORN BETHE X-SECTION ABOVE XINF4(NIONF4) EV
  143 QION[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.02625
  144 CONTINUE        
      if(EN <= (2.0*EION[5]:
)) GO TO 150
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
# IONISATION TO C +                                                         
  150 QION[6][I]=0.0             
      PEQION[6][I]=0.5   
      if(NANISO == 2):
 PEQION[6][I]=0.0                                   
      if(EN < EION[6]:
) GO TO 160   
      if(EN > XINF5(NIONF5):
) GO TO 153                               
      DO 151 J=2,NIONF5                                                
      if(EN <= XINF5[J]:
) GO TO 152                                     
  151 CONTINUE                                                          
      J=NIONF5                                                 
  152 A=(YINF5[J]-YINF5[J-1])/(XINF5[J]-XINF5[J-1])                    
      B=(XINF5[J-1]*YINF5[J]-XINF5[J]*YINF5[J-1])/(XINF5[J-1]-XINF5[J])
      QION[6][I]=(A*EN+B)*1.e-16
      GO TO 154
# USE BORN BETHE X-SECTION ABOVE XINF5(NIONF5) EV
  153 QION[6][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00798
  154 CONTINUE        
      if(EN <= (2.0*EION[6]:
)) GO TO 160
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])
# IONISATION TO DOUBLY POSITIVE CHARGED FINAL STATES             
  160 QION[7][I]=0.0             
      PEQION[7][I]=0.5   
      if(NANISO == 2):
 PEQION[7][I]=0.0                                   
      if(EN < EION[7]:
) GO TO 170   
      if(EN > XINPP(NIONPP):
) GO TO 163                               
      DO 161 J=2,NIONPP                                                
      if(EN <= XINPP[J]:
) GO TO 162                                     
  161 CONTINUE                                                          
      J=NIONPP                                                 
  162 A=(YINPP[J]-YINPP[J-1])/(XINPP[J]-XINPP[J-1])                    
      B=(XINPP[J-1]*YINPP[J]-XINPP[J]*YINPP[J-1])/(XINPP[J-1]-XINPP[J])
      QION[7][I]=(A*EN+B)*1.e-16
      GO TO 164
# USE BORN BETHE X-SECTION ABOVE XINPP(NIONPP) EV
  163 QION[7][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0095969
  164 CONTINUE        
      if(EN <= (2.0*EION[7]:
)) GO TO 170
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
# IONISATION TO H2 +          
  170 QION[8][I]=0.0             
      PEQION[8][I]=0.5   
      if(NANISO == 2):
 PEQION[8][I]=0.0                                   
      if(EN < EION[8]:
) GO TO 180   
      if(EN > XINF6(NIONF6):
) GO TO 173                               
      DO 171 J=2,NIONF6                                                
      if(EN <= XINF6[J]:
) GO TO 172                                     
  171 CONTINUE                                                          
      J=NIONF6                                                 
  172 A=(YINF6[J]-YINF6[J-1])/(XINF6[J]-XINF6[J-1])                    
      B=(XINF6[J-1]*YINF6[J]-XINF6[J]*YINF6[J-1])/(XINF6[J-1]-XINF6[J])
      QION[8][I]=(A*EN+B)*1.e-16
      GO TO 174
# USE BORN BETHE X-SECTION ABOVE XINF6(NIONF6) EV
  173 QION[8][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00523
  174 CONTINUE        
      if(EN <= (2.0*EION[8]:
)) GO TO 180
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
# CALCULATE K-SHELL IONISATION
  180 QION[9][I]=0.00
      PEQION[9][I]=0.5   
      if(NANISO == 2):
 PEQION[9][I]=0.0                                   
      if(EN <= EION[9]:
) GO TO 200     
      DO 192 J=2,NKSH                                                   
      if(EN <= XKSH[J]:
) GO TO 193                                       
  192 CONTINUE                                                          
      J=NKSH                                                   
  193 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])                         
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])       
      QION[9][I]=(A*EN+B)*1.e-16     
      if(EN <= (2.0*EION[9]:
)) GO TO 194
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
# COORECT IONISATION FOR SPLIT INTO K-SHELL
  194 QSUM=0.0
      DO 195 L=1,8
  195 QSUM=QSUM+QION(L,I)
      if(QSUM == 0.0):
 GO TO 200
      FAC=(QSUM-QION[9][I])/QSUM
      DO 196 L=1,8
  196 QION(L,I)=QION(L,I)*FAC
#                                      
# ATTACHMENT                                               
  200 Q[4][I]=0.0                                                        
      if(EN < XATT[1]:
) GO TO 250                                       
      if(EN > XATT[NATT1]:
) GO TO 250                                   
      DO 210 J=2,NATT1                                                  
      if(EN <= XATT[J]:
) GO TO 220                                       
  210 CONTINUE                                                          
      J=NATT1                                                          
  220 A=(YATT[J]-YATT[J-1])/(XATT[J]-XATT[J-1])                         
      B=(XATT[J-1]*YATT[J]-XATT[J]*YATT[J-1])/(XATT[J-1]-XATT[J])       
      Q[4][I]=(A*EN+B)*1.e-16 
# COUNTING IONISATION                                           
  250 Q[5][I]=0.0     
#     PEQEL[5][I]=0.5
#     IF(NANISO == 2) PEQEL[5][I]=0.0                              
#     IF(EN <= E(3)) GO TO 300
#     IF(EN > XION(NIOND)) GO TO 280 
#     DO 260 J=2,NIOND
#     IF(EN <= XION[J]) GO TO 270
# 260 CONTINUE
#     J=NIOND
# 270 A=(YINC[J]-YINC[J-1])/(XION[J]-XION[J-1])
#     B=(XION[J-1]*YINC[J]-XION[J]*YINC[J-1])/(XION[J-1]-XION[J])
#     Q[5][I]=(A*EN+B)*1.e-16
#     GO TO 290
# USE BORN-BETHE X-SECTION ABOVE XION(NIOND) EV
# 280 Q[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
# 290 CONTINUE
#     IF(EN <= (2.0*E(3))) GO TO 295
#     PEQEL[5][I]=PEQEL[2][(I-IOFFION[1]])
# 295 CONTINUE      
# 
  300 Q[6][I]=0.0                                                        
# V4  SUPERELASTIC ISOTROPIC
      QIN[1][I]=0.0
      PEQIN[1][I]=0.50
      if(EN <= 0.0):
 GO TO 350    
      if((EN+EIN[2]:
) > XVBV4(NVIBV4)) GO TO 325                        
      DO 310 J=2,NVIBV4                                                 
      if((EN+EIN[2]:
) <= XVBV4[J]) GO TO 320                             
  310 CONTINUE                                                          
      J=NVIBV4                                                          
  320 A=(YVBV4[J]-YVBV4[J-1])/(XVBV4[J]-XVBV4[J-1])                     
      B=(XVBV4[J-1]*YVBV4[J]-XVBV4[J]*YVBV4[J-1])/(XVBV4[J-1]-XVBV4[J])
      QIN[1][I]=(EN+EIN[2])*(A*(EN+EIN[2])+B)/EN
      GO TO 326
  325 QIN[1][I]=YVBV4(NVIBV4)*(XVBV4(NVIBV4)/(EN+EIN[2]))**2
  326 EFAC=math.sqrt(1.0-(EIN[1]/EN))
      QIN[1][I]=QIN[1][I]+0.076*math.log((EFAC+1.0)/(EFAC-1.0))/EN  
      QIN[1][I]=QIN[1][I]*APOPV4*1.e-16 
      QIN[1][I]=QIN[1][I]/DEGV4         
  350 CONTINUE                                                          
# V4   ANISOTROPIC                                                    
      QIN[2][I]=0.0   
       PEQIN[2][I]=0.50                                              
      if(EN <= EIN[2]:
) GO TO 400 
      if(EN > XVBV4(NVIBV4):
) GO TO 375                         
      DO 360 J=2,NVIBV4                                                
      if(EN <= XVBV4[J]:
) GO TO 370                                      
  360 CONTINUE                                                          
      J=NVIBV4                                                         
  370 A=(YVBV4[J]-YVBV4[J-1])/(XVBV4[J]-XVBV4[J-1])                     
      B=(XVBV4[J-1]*YVBV4[J]-XVBV4[J]*YVBV4[J-1])/(XVBV4[J-1]-XVBV4[J])
      QIN[2][I]=A*EN+B
      GO TO 376
  375 QIN[2][I]=YVBV4(NVIBV4)*(XVBV4(NVIBV4)/EN)**2 
  376 EFAC=math.sqrt(1.0-(EIN[2]/EN))
      ADIP=0.076*math.log((1.0+EFAC)/(1.0-EFAC))/EN     
      ELF=EN-EIN[2]
      FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
      BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
# RATIO OF MT TO TOTAL X-SECT FOR RESONANCE PART =RAT
      XMT=((1.5-FWD/(FWD+BCK))*ADIP+RAT*QIN[2][I])*APOPGS*1.e-16
      QIN[2][I]=(QIN[2][I]+ADIP)*APOPGS*1.e-16      
       PEQIN[2][I]=0.5+(QIN[2][I]-XMT)/QIN[2][I]
# V2 SUPERELASTIC ISOTROPIC
  400 QIN[3][I]=0.0
      PEQIN[3][I]=0.50
      if(EN <= 0.0):
 GO TO 450
      if((EN+EIN[4]:
) > XVBV2(NVIBV2)) GO TO 421
      DO 410 J=2,NVIBV2
      if((EN+EIN[4]:
) <= XVBV2[J]) GO TO 420
  410 CONTINUE
      J=NVIBV2
  420 A=(YVBV2[J]-YVBV2[J-1])/(XVBV2[J]-XVBV2[J-1])                     
      B=(XVBV2[J-1]*YVBV2[J]-XVBV2[J]*YVBV2[J-1])/(XVBV2[J-1]-XVBV2[J])
      QIN[3][I]=(EN+EIN[4])*(A*(EN+EIN[4])+B)/EN
      QIN[3][I]=QIN[3][I]*APOPV2*1.e-16
      QIN[3][I]=QIN[3][I]/DEGV2
      GO TO 450
# SCALE BY 1/E**2 ABOVE XVBV2(NVIBV2) EV
  421 QIN[3][I]=YVBV2(NVIBV2)*(XVBV2(NVIBV2)/(EN+EIN[4]))**2*APOPV2*1.e-16/DEGV2
# V2 ISOTROPIC
  450 QIN[4][I]=0.0
      PEQIN[4][I]=0.50
      if(EN <= EIN[4]:
) GO TO 500
      if(EN > XVBV2(NVIBV2):
) GO TO 471
      DO 460 J=2,NVIBV2
      if(EN <= XVBV2[J]:
) GO TO 470
  460 CONTINUE
      J=NVIBV2
  470 A=(YVBV2[J]-YVBV2[J-1])/(XVBV2[J]-XVBV2[J-1])                     
      B=(XVBV2[J-1]*YVBV2[J]-XVBV2[J]*YVBV2[J-1])/(XVBV2[J-1]-XVBV2[J]) 
      QIN[4][I]=(A*EN+B)*APOPGS*1.e-16
      GO TO 500
# SCALE BY 1/E**2 ABOVE XVBV2(NVIBV2) EV
  471 QIN[4][I]=YVBV2(NVIBV2)*(XVBV2(NVIBV2)/EN)**2*APOPGS*1.e-16
# V1  ISOTROPIC                                                        
  500 QIN[5][I]=0.0
      PEQIN[5][I]=0.50                                                 
      if(EN <= EIN[5]:
) GO TO 550
      if(EN > XVBV1(NVIBV1):
) GO TO 521                               
      DO 510 J=2,NVIBV1                                                 
      if(EN <= XVBV1[J]:
) GO TO 520                                      
  510 CONTINUE                                                          
      J=NVIBV1                                                          
  520 A=(YVBV1[J]-YVBV1[J-1])/(XVBV1[J]-XVBV1[J-1])                     
      B=(XVBV1[J-1]*YVBV1[J]-XVBV1[J]*YVBV1[J-1])/(XVBV1[J-1]-XVBV1[J])
      QIN[5][I]=(A*EN+B)*1.e-16
      GO TO 550 
# SCALE BY 1/E**2 ABOVE XVBV1(NVIBV1) EV
  521 QIN[5][I]=YVBV1(NVIBV1)*(XVBV1(NVIBV1)/EN)**2*1.e-16 
# V3  ANISOTROPIC                                                       
  550 QIN[6][I]=0.0    
      PEQIN[6][I]=0.50                
#     PEQIN[6][I]=0.00                                  
      if(EN <= EIN[6]:
) GO TO 600     
      if(EN > XVBV3(NVIBV3):
) GO TO 575                               
      DO 560 J=2,NVIBV3                                                 
      if(EN <= XVBV3[J]:
) GO TO 570                                      
  560 CONTINUE                                                          
      J=NVIBV3                                                          
  570 A=(YVBV3[J]-YVBV3[J-1])/(XVBV3[J]-XVBV3[J-1])                     
      B=(XVBV3[J-1]*YVBV3[J]-XVBV3[J]*YVBV3[J-1])/(XVBV3[J-1]-XVBV3[J])
      QIN[6][I]=A*EN+B
      GO TO 576
  575 QIN[6][I]=YVBV3(NVIBV3)*(XVBV3(NVIBV3)/EN)**2
  576 EFAC=math.sqrt(1.0-(EIN[6]/EN))
      ADIP=0.076*math.log((1.0+EFAC)/(1.0-EFAC))/EN
      ELF=EN-EIN[6]
      FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
      BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
# RATIO OF MT TO TOTAL X-SECT FOR RESONANCE PART =RAT
      XMT=((1.5-FWD/(FWD+BCK))*ADIP+RAT*QIN[6][I])*1.e-16
      QIN[6][I]=(ADIP+QIN[6][I])*1.e-16      
      PEQIN[6][I]=0.5+(QIN[6][I]-XMT)/QIN[6][I]
#  VIBRATION HARMONICS 1 ISOTROPIC                                    
  600 QIN[7][I]=0.0
      PEQIN[7][I]=0.50               
      if(EN <= EIN[7]:
) GO TO 650    
      if(EN > XVBH1(NVIBH1):
) GO TO 621
      DO 610 J=2,NVIBH1                                                 
      if(EN <= XVBH1[J]:
) GO TO 620                                      
  610 CONTINUE                                                          
      J=NVIBH1                                                          
  620 A=(YVBH1[J]-YVBH1[J-1])/(XVBH1[J]-XVBH1[J-1])                     
      B=(XVBH1[J-1]*YVBH1[J]-XVBH1[J]*YVBH1[J-1])/(XVBH1[J-1]-XVBH1[J]) 
      QIN[7][I]=(A*EN+B)*1.e-16   
      GO TO 650
# SCALE BY 1/E**2 ABOVE XVBH1(NVBH1) EV
  621 QIN[7][I]=YVBH1(NVIBH1)*(XVBH1(NVIBH1)/EN)**2*1.e-16
#  VIBRATION HARMONICS 2  ISOTROPIC                                     
  650 QIN[8][I]=0.0                   
      PEQIN[8][I]=0.50                                  
      if(EN <= EIN[8]:
) GO TO 700    
      if(EN > XVBH2(NVIBH2):
) GO TO 671                                
      DO 660 J=2,NVIBH2                                                 
      if(EN <= XVBH2[J]:
) GO TO 670                                      
  660 CONTINUE                                                          
      J=NVIBH2                                                          
  670 A=(YVBH2[J]-YVBH2[J-1])/(XVBH2[J]-XVBH2[J-1])                     
      B=(XVBH2[J-1]*YVBH2[J]-XVBH2[J]*YVBH2[J-1])/(XVBH2[J-1]-XVBH2[J]) 
      QIN[8][I]=(A*EN+B)*1.e-16 
      GO TO 700
# SCALE BY 1/E**2 ABOVE XVBH2(NVIBH2) EV
  671 QIN[8][I]=YVBH2(NVIBH2)*(XVBH2(NVIBH2)/EN)**2*1.e-16
# TRIPLET DISSOCIATION 7.5EV
  700 QIN[9][I]=0.0
      PEQIN[9][I]=0.0
      if(EN <= EIN[9]:
) GO TO 705
      if(EN > XTR1(NTRP1):
) GO TO 703
      DO 701 J=2,NTRP1
      if(EN <= XTR1[J]:
) GO TO 702
  701 CONTINUE
      J=NTRP1
  702 A=(YTR1[J]-YTR1[J-1])/(XTR1[J]-XTR1[J-1])
      B=(XTR1[J-1]*YTR1[J]-XTR1[J]*YTR1[J-1])/(XTR1[J-1]-XTR1[J])
      QIN[9][I]=(A*EN+B)*1.e-16
      GO TO 704
# SCALE BY 1/E**2 ABOVE XTR1(NTRP1) EV
  703 QIN[9][I]=YTR1(NTRP1)*(XTR1(NTRP1)/EN)**2*1.e-16
  704 if(EN <= (3.0*EIN[9])) GO TO 705
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]                                
# ATTACHMENT - DEATTACHMENT RESONANCE VIA H- AT 9.8EV RESONANCE
  705 QIN[10][I]=0.0
      PEQIN[10][I]=0.0
      if(EN <= EIN[10]:
) GO TO 708
      if(EN > XDET(NDET):
) GO TO 708
      DO 706 J=2,NDET
      if(EN <= XDET[J]:
) GO TO 707
  706 CONTINUE
      J=NDET
  707 A=(YDET[J]-YDET[J-1])/(XDET[J]-XDET[J-1])
      B=(XDET[J-1]*YDET[J]-XDET[J]*YDET[J-1])/(XDET[J-1]-XDET[J])
      QIN[10][I]=(A*EN+B)*1.e-16
      if(EN <= (3.0*EIN[10]:
)) GO TO 708
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
# TRIPLET DISSOCIATION  AT 8.5 EV
  708 QIN[11][I]=0.0
      PEQIN[11][I]=0.0
      if(EN <= EIN[11]:
) GO TO 713
      if(EN > XTR2(NTRP2):
) GO TO 711
      DO 709 J=2,NTRP2
      if(EN <= XTR2[J]:
) GO TO 710
  709 CONTINUE
      J=NTRP2
  710 A=(YTR2[J]-YTR2[J-1])/(XTR2[J]-XTR2[J-1])
      B=(XTR2[J-1]*YTR2[J]-XTR2[J]*YTR2[J-1])/(XTR2[J-1]-XTR2[J])
      QIN[11][I]=(A*EN+B)*1.e-16
      GO TO 712
# SCALE BY 1/E**2 ABOVE XTR2(NTRP2) EV
  711 QIN[11][I]=YTR2(NTRP2)*(XTR2(NTRP2)/EN)**2*1.e-16
  712 if(EN <= (3.0*EIN[11])) GO TO 713
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]                               
# SINGLET DISSOCIATION AT 8.75 EV USE BEF SCALING WITH F=0.0271
  713 QIN[12][I]=0.0
      PEQIN[12][I]=0.0
      if(EN <= EIN[12]:
) GO TO 714
      QIN[12][I]=0.0271/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])*1.029
      if(QIN[12][I]:
 < 0.0) QIN[12][I]=0.0       
      if(EN <= (3.0*EIN[12]:
)) GO TO 714
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
# SINGLET DISSOCIATION AT 9.25 EV USE BEF SCALING WITH F=0.0442
  714 QIN[13][I]=0.0
      PEQIN[13][I]=0.0
      if(EN <= EIN[13]:
) GO TO 715
      QIN[13][I]=0.0442/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[13]+E[3])*1.027
      if(QIN[13][I]:
 < 0.0) QIN[13][I]=0.0       
      if(EN <= (3.0*EIN[13]:
)) GO TO 715
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
# SINGLET DISSOCIATION AT 9.75 EV USE BEF SCALING WITH F=0.0859
  715 QIN[14][I]=0.0
      PEQIN[14][I]=0.0
      if(EN <= EIN[14]:
) GO TO 716
      QIN[14][I]=0.0859/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[14]+E[3])*1.026
      if(QIN[14][I]:
 < 0.0) QIN[14][I]=0.0       
      if(EN <= (3.0*EIN[14]:
)) GO TO 716
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
# TRIPLET DISSOCIATION  AT 10.0EV
  716 QIN[15][I]=0.0
      PEQIN[15][I]=0.0
      if(EN <= EIN[15]:
) GO TO 721
      if(EN > XTR3(NTRP3):
) GO TO 719
      DO 717 J=2,NTRP3
      if(EN <= XTR3[J]:
) GO TO 718
  717 CONTINUE
      J=NTRP3
  718 A=(YTR3[J]-YTR3[J-1])/(XTR3[J]-XTR3[J-1])
      B=(XTR3[J-1]*YTR3[J]-XTR3[J]*YTR3[J-1])/(XTR3[J-1]-XTR3[J])
      QIN[15][I]=(A*EN+B)*1.e-16
      GO TO 720
# SCALE BY 1/E**2 ABOVE XTR3(NTRP3) EV
  719 QIN[15][I]=YTR3(NTRP3)*(XTR3(NTRP3)/EN)**2*1.e-16
  720 if(EN <= (3.0*EIN[15])) GO TO 721
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]                               
# SINGLET DISSOCIATION AT 10.25 EV USE BEF SCALING WITH F=0.0906
  721 QIN[16][I]=0.00
      PEQIN[16][I]=0.0
      if(EN <= EIN[16]:
) GO TO 722
      QIN[16][I]=0.0906/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])*1.024
      if(QIN[16][I]:
 < 0.0) QIN[16][I]=0.0       
      if(EN <= (3.0*EIN[16]:
)) GO TO 722
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
# SINGLET DISSOCIATION AT 10.75 EV USE BEF SCALING WITH F=0.0841
  722 QIN[17][I]=0.0
      PEQIN[17][I]=0.0
      if(EN <= EIN[17]:
) GO TO 723
      QIN[17][I]=0.0841/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])*1.023
      if(QIN[17][I]:
 < 0.0) QIN[17][I]=0.0       
      if(EN <= (3.0*EIN[17]:
)) GO TO 723
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
# SINGLET DISSOCIATION AT 11.25 EV USE BEF SCALING WITH F=0.1036
  723 QIN[18][I]=0.0
      PEQIN[18][I]=0.0
      if(EN <= EIN[18]:
) GO TO 724
      QIN[18][I]=0.1036/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])*1.022
      if(QIN[18][I]:
 < 0.0) QIN[18][I]=0.0       
      if(EN <= (3.0*EIN[18]:
)) GO TO 724
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
# SINGLET DISSOCIATION AT 11.75 EV USE BEF SCALING WITH F=0.1460
  724 QIN[19][I]=0.0
      PEQIN[19][I]=0.0
      if(EN <= EIN[19]:
) GO TO 725
      QIN[19][I]=0.1460/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])*1.021
      if(QIN[19][I]:
 < 0.0) QIN[19][I]=0.0       
      if(EN <= (3.0*EIN[19]:
)) GO TO 725
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
# SINGLET DISSOCIATION AT 12.25 EV USE BEF SCALING WITH F=0.1548
  725 QIN[20][I]=0.0
      PEQIN[20][I]=0.0
      if(EN <= EIN[20]:
) GO TO 726
      QIN[20][I]=0.1548/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])*1.020
      if(QIN[20][I]:
 < 0.0) QIN[20][I]=0.0       
      if(EN <= (3.0*EIN[20]:
)) GO TO 726
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
# SINGLET DISSOCIATION AT 12.75 EV USE BEF SCALING WITH F=0.1927
  726 QIN[21][I]=0.0
      PEQIN[21][I]=0.0
      if(EN <= EIN[21]:
) GO TO 727
      QIN[21][I]=0.1927/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])*1.020
      if(QIN[21][I]:
 < 0.0) QIN[21][I]=0.0       
      if(EN <= (3.0*EIN[21]:
)) GO TO 727
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
# SINGLET DISSOCIATION AT 13.25 EV USE BEF SCALING WITH F=0.1981
  727 QIN[22][I]=0.0
      PEQIN[22][I]=0.0
      if(EN <= EIN[22]:
) GO TO 728
      QIN[22][I]=0.1981/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+E[3])*1.019
      if(QIN[22][I]:
 < 0.0) QIN[22][I]=0.0       
      if(EN <= (3.0*EIN[22]:
)) GO TO 728
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
#  DISSOCIATIVE EXC TO STATES DECAYING VIA CH(A2DELTA TO G.S.)           
  728 QIN[23][I]=0.0
      PEQIN[23][I]=0.0                             
      if(EN <= EIN[23]:
) GO TO 731 
      if(EN > XCHD[NCHD]):
 GO TO 7311                                   
      DO 729 J=2,NCHD                                                  
      if(EN <= XCHD[J]):
 GO TO 730                                      
  729 CONTINUE                                                          
      J=NCHD                                                            
  730 A=(YCHD[J]-YCHD[J-1])/(XCHD[J]-XCHD[J-1])                     
      B=(XCHD[J-1]*YCHD[J]-XCHD[J]*YCHD[J-1])/(XCHD[J-1]-XCHD[J]) 
      QIN[23][I]=(A*EN+B)*1.e-16 
      GO TO 7312
# ABOVE XCHD[NCHD] EV SCALE BY 1/E
 7311 QIN[23][I]=YCHD[NCHD]*(XCHD[NCHD]/EN)*1.e-16
 7312 if(EN <= (3.0*EIN[23])) GO TO 731
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]                               
#  DISSOCIATIVE EXC TO STATES DECAYING VIA CH(B2SIGMA- TO G.S.)          
  731 QIN[24][I]=0.0
      PEQIN[24][I]=0.0                               
      if(EN <= EIN[24]:
) GO TO 734  
      if(EN > XCHB[NCHB]):
 GO TO 7341                                   
      DO 732  J=2,NCHB                                                  
      if(EN <= XCHB[J]):
 GO TO 733                                      
  732 CONTINUE                                                          
      J=NCHB                                                            
  733 A=(YCHB[J]-YCHB[J-1])/(XCHB[J]-XCHB[J-1])                     
      B=(XCHB[J-1]*YCHB[J]-XCHB[J]*YCHB[J-1])/(XCHB[J-1]-XCHB[J]) 
      QIN[24][I]=(A*EN+B)*1.e-16
      GO TO 7342
# ABOVE XCHB[NCHB] EV SCALE BY 1/E
 7341 QIN[24][I]=YCHB[NCHB]*(XCHB[NCHB]/EN)*1.0D-16
 7342 if(EN <= (3.0*EIN[24])) GO TO 734 
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]                                
# SINGLET DISSOCIATION AT 13.75 EV USE BEF SCALING WITH F=0.1628
  734 QIN[25][I]=0.0
       PEQIN[25][I]=0.0
      if(EN <= EIN[25]:
) GO TO 735
      QIN[25][I]=0.1628/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+E[3])*1.018
      if(QIN[25][I]:
 < 0.0) QIN[25][I]=0.0       
      if(EN <= (3.0*EIN[25]:
)) GO TO 735
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
# SINGLET DISSOCIATION AT 14.25 EV USE BEF SCALING WITH F=0.1093
  735 QIN[26][I]=0.0
      PEQIN[26][I]=0.0
      if(EN <= EIN[26]:
) GO TO 736
      QIN[26][I]=0.1093/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])*1.018
      if(QIN[26][I]:
 < 0.0) QIN[26][I]=0.0       
      if(EN <= (3.0*EIN[26]:
)) GO TO 736
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
# SINGLET DISSOCIATION AT 14.75 EV USE BEF SCALING WITH F=0.0628
  736 QIN[27][I]=0.0
      PEQIN[27][I]=0.0
      if(EN <= EIN[27]:
) GO TO 737
      QIN[27][I]=0.0628/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])*1.017
      if(QIN[27][I]:
 < 0.0) QIN[27][I]=0.0       
      if(EN <= (3.0*EIN[27]:
)) GO TO 737
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
# SINGLET DISSOCIATION AT 15.25 EV USE BEF SCALING WITH F=0.0297
  737 QIN[28][I]=0.0
      PEQIN[28][I]=0.0
      if(EN <= EIN[28]:
) GO TO 738
      QIN[28][I]=0.0297/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])*1.016
      if(QIN[28][I]:
 < 0.0) QIN[28][I]=0.0       
      if(EN <= (3.0*EIN[28]:
)) GO TO 738
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
# SINGLET DISSOCIATION AT 15.75 EV USE BEF SCALING WITH F=0.0074
  738 QIN[29][I]=0.0
      PEQIN[29][I]=0.0
      if(EN <= EIN[29]:
) GO TO 7381
      QIN[29][I]=0.0074/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])*1.016
      if(QIN[29][I]:
 < 0.0) QIN[29][I]=0.0       
      if(EN <= (3.0*EIN[29]:
)) GO TO 7381
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
# ENERGY LOSS TO EXCITED POSITIVE IONS NOT ALREADY INCLUDED
 7381 QIN[30][I]=0.0
      PEQIN[30][I]=0.0
      if(EN <= EIN[30]:
) GO TO 739      
      QIN[30][I]=0.5000/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])
      if(QIN[30][I]:
 < 0.0) QIN[30][I]=0.0
      if(EN <= (3.0*EIN[30]:
)) GO TO 739
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])] 
#  DISSOCIATIVE EXC TO STATES DECAYING VIA H(ALPHA) 
  739 QIN[31][I]=0.0  
      PEQIN[31][I]=0.0                       
      if(EN <= EIN[31]:
) GO TO 742    
      if(EN > XHAL(NHAL):
) GO TO 7421                                   
      DO 740  J=2,NHAL                                                  
      if(EN <= XHAL[J]:
) GO TO 741                                      
  740 CONTINUE                                                          
      J=NHAL                                                            
  741 A=(YHAL[J]-YHAL[J-1])/(XHAL[J]-XHAL[J-1])                     
      B=(XHAL[J-1]*YHAL[J]-XHAL[J]*YHAL[J-1])/(XHAL[J-1]-XHAL[J]) 
      QIN[31][I]=(A*EN+B)*1.e-16
      GO TO 7422
# ABOVE XHAL(NHAL) EV SCALE BY 1/E
 7421 QIN[31][I]=YHAL(NHAL)*(XHAL(NHAL)/EN)*1.e-16
 7422 if(EN <= (3.0*EIN[31])) GO TO 742 
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]                               
#  DISSOCIATIVE EXC TO STATES DECAYING VIA H(BETA)                     
  742 QIN[32][I]=0.0                               
      PEQIN[32][I]=0.0            
      if(EN <= EIN[32]:
) GO TO 745  
      if(EN > XHBE(NHBE):
) GO TO 7451                                  
      DO 743  J=2,NHBE                                                  
      if(EN <= XHBE[J]:
) GO TO 744                                      
  743 CONTINUE                                                          
      J=NHBE                                                            
  744 A=(YHBE[J]-YHBE[J-1])/(XHBE[J]-XHBE[J-1])                     
      B=(XHBE[J-1]*YHBE[J]-XHBE[J]*YHBE[J-1])/(XHBE[J-1]-XHBE[J]) 
      QIN[32][I]=(A*EN+B)*1.e-16  
      GO TO 7452
# ABOVE XHBE(NHBE) EV SCALE BY 1/E
 7451 QIN[32][I]=YHBE(NHBE)*(XHBE(NHBE)/EN)*1.0D-16
 7452 if(EN <= (3.0*EIN[32])) GO TO 745  
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]      
# SINGLET DISSOCIATION AT 20.50 EV USE BEF SCALING WITH F=0.0045
  745 QIN[33][I]=0.0
      PEQIN[33][I]=0.0
      if(EN <= EIN[33]:
) GO TO 746
      QIN[33][I]=0.0045/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])*1.037
      if(QIN[33][I]:
 < 0.0) QIN[33][I]=0.0       
      if(EN <= (3.0*EIN[33]:
)) GO TO 746
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
# SINGLET DISSOCIATION AT 22.00 EV USE BEF SCALING WITH F=0.0045
  746 QIN[34][I]=0.0
      PEQIN[34][I]=0.0
      if(EN <= EIN[34]:
) GO TO 747
      QIN[34][I]=0.0045/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])*1.034
      if(QIN[34][I]:
 < 0.0) QIN[34][I]=0.0       
      if(EN <= (3.0*EIN[34]:
)) GO TO 747
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
  747 CONTINUE
# LOAD BREMSSTRAHLUNG X-SECTIONS
      QIN[35][I]=0.0
      QIN[36][I]=0.0
      if(EN <= 1000.):
 GO TO 800
      DO 780 J=2,NBREM
      if(EN <= EBRM[J]:
) GO TO 790
  780 CONTINUE
      J=NBREM
  790 A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A1=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[35][I]=math.exp(A*EN+B)*1.e-24
      QIN[36][I]=math.exp(A1*EN+B1)*4.e-24
  800 CONTINUE
#     WRITE(6,881) EN
# 881 print('EN=',D14.6)
#     WRITE(6,882) QIN[1][I],QIN[2][I],QIN[3][I],QIN[4][I],QIN[5][I]
#     WRITE(6,882) QIN[6][I],QIN[7][I],QIN[8][I],QIN[9][I],QIN[10][I]
#     WRITE(6,882) QIN[11][I],QIN[12][I],QIN[13][I],QIN[14][I],QIN[15][I]
#     WRITE(6,882) QIN[16][I],QIN[17][I],QIN[18][I],QIN[19][I],QIN[20][I]
#     WRITE(6,882) QIN[21][I],QIN[22][I],QIN[23][I],QIN[24][I],QIN[25][I]
#     WRITE(6,882) QIN[26][I],QIN[27][I],QIN[28][I],QIN[29][I],QIN[30][I]
#     WRITE(6,882) QIN[31][I],QIN[32][I],QIN[33][I],QIN[34][I],QIN[35][I]
# 882 print(' QIN ',5'%.4f' % )
#     WRITE(6,883) Q[2][I],Q[3][I],Q[4][I],Q[5][I]
# 883 print(' Q 2 3 4 5',4'%.4f' % )
#     WRITE(6,884) QION[1][I],QION[2][I],QION[3][I]
# 884 print('QION 1 2 3 ',3'%.4f' % )
#
      QSUP=QIN[1][I]+QIN[3][I]
      QVIB=QIN[2][I]+QIN[4][I]+QIN[5][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]
      QDATT=QIN[10][I]
      QSING=QIN[12][I]+QIN[13][I]+QIN[14][I]+QIN[16][I]+QIN[17][I]+QIN[18][I]+QIN[19][I]+QIN[20][I]+QIN[21][I]+QIN[22][I]+QIN[25][I]+QIN[26][I]+QIN[27][I]+QIN[28][I]+QIN[29][I]+QIN[30][I]+QIN[33][I]+QIN[34][I]
      QTRIP=QIN[9][I]+QIN[11][I]+QIN[15][I]
      QEXC=QIN[23][I]+QIN[24][I]+QIN[31][I]+QIN[32][I] 
      QTTT=QEXC+QTRIP+QSING+QDATT  
      QWINT=QION[2][I]+QTTT
      QINEL=QSUP+QVIB+QDATT+QSING+QTRIP+QEXC+Q[5][I]+Q[4][I]      
      Q[1][I]=Q[2][I]+Q[5][I]+Q[4][I]+QTTT+QSUP+QVIB 
      QIONSUM=QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]+QION[8][I]+QION[8][I]+QION[9][I]               
#     Q[1][I]=Q[2][I]+Q[5][I]+Q[4][I]+QTTT+QSUP+QVIB+QIN[34][I]+QIN[35][I]
#     WRITE(6,767) EN,Q[1][I],QSUP,QVIB,QDATT,QSING,QTRIP,QEXC,QTTT,QINEL
#767  print(' EN=',F9.2,' QTOT=','%.3f' %,' QSUP=','%.3f' %,' QVIB=','%.3f' %,/,
#    /' QDATT=','%.3f' %,' QSING=','%.3f' %,' QTRIP=','%.3f' %,' QEXC=','%.3f' %,/,
#    /' QTTT=','%.3f' %,' QINELSUM=','%.3f' %,/)
c     WRITE(6,768) EN,QIONSUM
c 768 print(' EN=',F9.2,' QIONSUM=','%.3f' %)
# 
 1000 CONTINUE
#  SAVE COMPUTE TIME
      DO 1010 K=1,NIN
      if(EFINAL <= EIN[K]:
) :
       NIN=K-1
       GO TO 1011
      # endif
 1010 CONTINUE
 1011 CONTINUE
      if(EFINAL > 1000.):
 NIN=36
#
      return
      # end    
def GAS9(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)  
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      DIMENSION XEN(164),YMT(164),YEL(164),YEPS(164),XATT1[11],YATT1[11],XATT2[9],YATT2[9],XVIB1[29],YVIB1[29],XVIB2[28],YVIB2[28],XVIB3[28],YVIB3[28],XVIB4[46],YVIB4[46],XVIB5[16],YVIB5[16],XTR1[12],YTR1[12],XTR2[11],YTR2[11],XTR3[11],YTR3[11],IOFFN(250)
      DIMENSION XNUL1[25],YNUL1[25],XNUL2[13],YNUL2[13],XNUL3[14],YNUL3[14]
      DIMENSION XION1[31],YION1[31],XION2[31],YION2[31],XION3[31],YION3[31],XION4[30],YION4[30],XION5[29],YION5[29],XION6[29],YION6[29],XION7[26],YION7[26],XION8[26],YION8[26],XION9[25],YION9[25],XION10[24],YION10[24],XION11[24],YION11[24],XION12[24],YION12[24],XION13[23],YION13[23],XION14[21],YION14[21],XION15[21],YION15[21],XION16(83),YION16(83),XION[50],YIONG[50],YIONC[50],IOFFION[16]
      DIMENSION Z1T[25],Z6T[25],EBRM[25]  
      CHARACTER*50 SCRPT(300),SCRPTN[10]       
      CHARACTER*25 NAME                                                 
      XEN=[0.00,.001,.002,.003,.004,.005,.007,0.01,.014,0.02,.025,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,                0.13,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.40,0.50,0.60,0.70,0.80,1.00,1.50,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,14.0,16.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      YMT=[32.0,31.0,29.0,27.0,26.0,25.0,23.0,20.0,17.6,15.2,13.0,11.2,7.25,4.70,3.25,2.40,1.80,1.40,1.15,1.10,1.08, 1.08,1.10,1.25,1.50,1.85,2.40,3.15,4.10,4.85,6.10,6.90,7.15,7.30,7.70,8.45,9.10,10.3,11.6,13.9,17.8,20.7,21.4,21.3,20.0,17.6,13.9,11.3,9.40,8.00,7.20,5.75,4.90,3.76,3.00,2.50,2.15,1.80,1.41,1.10,0.91,.770,.680,.540,.440,.370,.325,.280,.252,.200,.159,          .127,.104,.0870,.0592,.0431,.0329,.0260,.0175,.0127,.00961,.00756,.00612,.00506,.00364,.00276,.00216,.00175,.00144,9.62e-4,6.91e-4,5.22e-4,4.10e-4,2.74e-4,1.97e-4,1.49e-4,1.17e-4,9.48e-5,7.85e-5,5.67e-5,4.31e-5,3.41e-5,2.77e-5,2.31e-5,1.57e-5,1.15e-5,8.88e-6,7.11e-6,4.93e-6,3.67e-6,2.87e-6,2.33e-6,1.94e-6,1.64e-6,1.24e-6,9.79e-7,7.98e-7,6.67e-7,5.68e-7,4.06e-7,3.06e-7,2.41e-7,1.95e-7,1.36e-7,1.01e-7,7.87e-8,6.30e-8,5.17e-8,4.32e-8,3.16e-8,2.42e-8,1.92e-8,1.56e-8,1.29e-8,8.67e-9,6.23e-9,4.71e-9,3.69e-9,2.45e-9,1.75e-9,1.31e-9,1.02e-9,8.19e-10,6.71e-10,4.75e-10,3.53e-10,2.73e-10,2.18e-10,1.77e-10,1.14e-10,7.99e-11,5.89e-11,4.52e-11,2.90e-11,2.02e-11,1.48e-11,1.14e-11,8.98e-12,7.28e-12,5.06e-12,3.71e-12,2.85e-12,2.25e-12,1.82e-12]
# ASSUME ELASTIC = MOMENTUM TRANSFER UP TO 3.0 EV (NO GOOD ELASTIC DATA)
      YEL=[32.0,31.0,29.0,27.0,26.0,25.0,23.0,20.0,17.6,15.2,13.0,11.2,7.25,4.70,3.25,2.40,1.80,1.40,1.15,1.10,1.08, 1.08,1.10,1.25,1.50,1.85,2.40,3.15,4.10,4.85,6.10,6.90,7.15,7.30,7.70,8.45,9.10,10.3,15.2,18.9,23.4,27.2,29.6,31.9,31.0,30.1,27.7,25.9,24.1,23.3,22.1,20.0,17.3,13.4,11.9,10.7,9.85,9.02,7.40,6.25,5.50,4.95,4.50,3.90,3.43,3.04,2.74,2.49,2.29,1.97,1.73,1.54,1.39,1.27,1.04,.877,.760,.671,.544,.458,.395,.348,.311,.281,.235,.203,.178,.159,.144,.116,.0978,.0845,.0745,.0605,.0512,.0445,.0395,.0356,.0325,.0278,.0244,.0226,.0200,.0184,.0156,.0138,.0124,.0115,.0101,.00918,.00855,.00808,.00772,.00744,.00702,.00674,.00653,.00637,.00625,.00605,.00592,.00584,.00578,.00570,.00566,.00563,.00561,.00560,.00559,.00557,.00556,.00556,.00555,.00555,.00555,29*.00554]
      YEPS=[38*1.0,.65352,.61534,.65007,.65056,.59839,.52532,.49651,.42242,.32895,.26232,.21931,.17939,.16529,.13630,.13322,.13133,.11165,.09963,.09005,.07893,.07377,.06576,.06017,.05510,.05287,.04673,.04198,.03896,.03770,.03497,.03403,.03050,.02667,.02302,.02024,.01805,.01418,.01167,.00990,.00860,.00681,.00563,.00480,.00418,.00370,.00332,.00276,.00235,.00205,.00182,.00163,.00130,.00108,.000924,.000806,.000641,.000531,.000452,.000393,.000348,3.11e-4,2.56e-4,2.17e-4,1.82e-4,1.65e-4,1.47e-4,1.15e-4,9.32e-5,7.80e-5,6.67e-5,5.10e-5,4.08e-5,3.36e-5,2.83e-5,2.43e-5,2.11e-5,1.65e-5,1.33e-5,1.10e-5,9.27e-6,7.94e-6,5.71e-6,4.29e-6,3.35e-6,2.69e-6,1.86e-6,1.36e-6,1.04e-6,8.19e-7,6.63e-7,5.48e-7,3.93e-7,2.95e-7,2.30e-7,1.84e-7,1.57e-7,9.87e-8,6.96e-8,5.16e-8,3.98e-8,2.58e-8,1.80e-8,1.33e-8,1.02e-8,8.06e-9,6.54e-9,4.53e-9,3.32e-9,2.53e-9,1.99e-9,1.61e-9,1.01e-9,6.94e-10,5.04e-10,3.82e-10,2.40e-10,1.64e-10,1.19e-10,9.0D-11,7.00e-11,5.6D-11,3.8D-11,2.8D-11,2.1D-11,1.6D-11,1.3D-11]
#
      XVIB1=[.117,0.13,0.15,0.17,0.20,0.23,0.25,0.30,0.40,0.50,0.60,0.70,0.85,1.00,1.50,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,15.0,20.0,30.0,40.0]                   
      YVIB1=[0.00,.070,.105,.126,.135,.140,.140,.129,.105,.082,.067,.057,.049,.049,.064,.087,.108,.129,.152,.187,.246,.316,.433,.433,.351,.246,.164,.073,.042]                     
      XVIB2=[.148,0.16,0.17,0.20,0.23,0.25,0.30,0.40,0.50,0.60,0.70,0.85,1.00,1.50,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,15.0,20.0,30.0,40.0]                    
      YVIB2=[0.00,.044,.077,.108,.115,.123,.123,.108,.092,.077,.065,.055,.054,.062,.077,.096,.115,.139,.169,.223,.293,.370,.370,.308,.216,.142,.065,.037]                    
      XVIB3=[.182,0.19,0.20,0.23,0.25,0.30,0.35,0.40,0.50,0.60,0.70,0.85,1.00,1.50,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,15.0,20.0,30.0,40.0]                
      YVIB3=[0.00,.070,.091,.189,.231,.259,.266,.259,.224,.182,.164,.154,.157,.171,.189,.210,.252,.301,.364,.490,.623,.805,.805,.665,.434,.294,.133,.077]                       
      XVIB4=[.366,.367,.368,.370,.375,.380,.385,.390,.395,.400,.410,.420,.430,.440,.450,.460,.480,.500,.520,.550,.600,.650,.700,.800,.900,1.00,1.10,1.20,1.30,1.40,1.50,1.70,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,15.0,20.0,30.0,40.0]               
      YVIB4=[0.00,.03782,.05336,.07494,.1107,.1361,.1561,.1727,.1864,.2002,.2210,.2382,.2520,.2641,.2728,.2814,.2952,.3056,.3125,.3194,.3246,.3246,.3229,.3143,.3026,.3026,.3048,.3071,.3115,.3160,.320,.329,.343,.387,.472,.570,.694,.908,1.16,1.32,1.16,.935,.507,.289,.129,.715]               
      XVIB5=[.548,1.00,1.50,2.00,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,15.0,20.0,30.0,40.0]               
      YVIB5=[0.00,.001,.002,.003,.0055,.011,.044,.094,.134,.143,.134,.116,.068,.0383,.0171,.0096]   
# GROSS IONISATION X-SECTION  AVERAGE OF TIAN AND VIDAL AND 
# NISHIMURA AND TAWARA  (WITHIN 4% OF EACH OTHER) TYPICALLY REDUCE 
# NISHIMURA BY 2% ...
# BELOW 20 EV USE AVERAGE OVER ALL 
# ABOVE 3 KEV USE SCALED SCHRAM TO 60 KEV : SMOOTH JOIN 
# TO MATRIX ELEMENT FIT OF BY  RIEKE AND PREPJCHAL      
      XION=[11.52,12.0,12.5,13.0,14.0,15.0,16.0,17.0,18.0,19.0,     20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,4000.,7000.,10000.,60000.]
# GROSS IONISATION 
      YIONG=[0.00,.017,.038,.061,.270,.518,0.87,1.28,1.62,1.95,     2.24,3.48,4.45,4.96,5.54,5.87,6.09,6.63,6.80,6.78,                6.82,6.83,6.46,6.18,5.86,5.57,5.31,4.96,4.71,4.51,4.08,3.80,3.44,3.28,3.13,2.94,2.66,2.33,2.21,1.99,1.72,1.49,1.34,1.20,1.06,.881,.657,.411,.290,.0599]
# COUNTING IONISATION
      YIONC=[0.0,.017,.038,.061,.270,.518,0.87,1.28,1.62,1.95,2.24,3.48,4.45,4.94,5.47,5.65,5.78,6.27,6.42,6.39,6.44,6.45,6.07,5.79,5.47,5.18,4.94,4.61,4.38,4.19,3.80,3.53,3.20,3.05,2.91,2.74,2.47,2.17,2.06,1.85,1.60,1.39,1.25,1.12,.986,.820,.611,.382,.270,.0557]
# ALL INDIVIDUAL BREAKUP CHANNELS FROM TIAN AND VIDAL
# CORRECTED BY WANG AND VIDAL FOR DISSOCIATION OF C2H6++ 
#
#   C2H6+   
      XION1=[11.52,13.0,14.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION1=[0.0,.055,.095,.130,.215,.366,.566,.664,.684,.747,.734,.724,.773,.768,.758,.749,.751,.717,.692,.665,.642,.618,.583,.560,.544,.499,.473,.430,.417,.401,.377]
#  C2H4+
      XION2=[12.05,13.0,14.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION2=[.0,.005,.140,.290,.672,1.068,1.705,2.240,2.350,2.461,2.481,2.473,2.607,2.568,2.517,2.510,2.492,2.346,2.273,2.179,2.103,2.031,1.925,1.841,1.777,1.635,1.542,1.408,1.352,1.301,1.226]
# C2H5+
      XION3=[12.65,13.0,14.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION3=[0.0,.001,.034,.070,.156,.266,.412,.507,.556,.568,.569,.565,.597,.603,.589,.595,.588,.566,.546,.529,.514,.490,.468,.451,.432,.401,.381,.349,.337,.321,.302]
#  CH3+
      XION4=[13.65,14.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION4=[0.0,.001,.018,.051,.070,.083,.095,.104,.120,.114,.130,.176,.203,.216,.218,.218,.197,.178,.159,.138,.130,.114,.106,.099,.084,.071,.063,.058,.051,.047]
#  C2H3+
      XION5=[14.8,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION5=[0.0,.005,.175,.294,.432,.553,.709,.814,.836,.827,.882,.889,.862,.855,.847,.786,.746,.702,.658,.630,.586,.564,.540,.489,.455,.415,.391,.373,.351]
#  C2H2+
      XION6=[14.8,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION6=[0.0,.005,.118,.174,.268,.322,.394,.503,.550,.578,.614,.626,.611,.609,.600,.543,.500,.459,.426,.396,.364,.338,.324,.289,.259,.232,.217,.206,.192]
#  H+
      XION7=[20.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION7=[0.0,.011,.041,.053,.055,.001,.001,.001,.062,.111,.166,.189,.189,.166,.135,.094,.080,.063,.046,.035,.014,.004,.001,.0003,.0001,.00003]
#  H2+
      XION8=[21.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION8=[0.0,.002,.007,.013,.015,.020,.008,.023,.039,.041,.048,.050,.042,.034,.028,.023,.020,.014,.012,.010,.006,.004,.003,.002,.0015,.001]
#  CH2+
      XION9=[25.8,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION9=[0.0,.020,.036,.056,.054,.065,.098,.109,.110,.117,.117,.106,.094,.083,.069,.064,.057,.051,.048,.040,.034,.026,.023,.020,.018]
#  C2H+
      XION10=[26.2,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION10=[0.0,.021,.044,.059,.074,.096,.109,.113,.114,.116,.105,.092,.081,.070,.064,.053,.050,.043,.036,.031,.025,.022,.019,.017]
#  C2H6++
      XION11=[32.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION11=[0.0,.019,.074,.219,.313,.360,.380,.385,.383,.384,.385,.390,.390,.389,.370,.347,.331,.315,.285,.265,.240,.228,.217,.204]
#  H3+
      XION12=[32.5,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION12=[0.0,.001,.002,.001,.001,.011,.012,.017,.015,.015,.013,.011,.008,.006,.005,.003,.002,.001,.0005,.00025,.00013,.000062,.000045,.00003]
#  CH+
      XION13=[36.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION13=[0.0,.006,.012,.016,.026,.038,.041,.046,.047,.043,.036,.029,.025,.023,.019,.015,.014,.010,.007,.005,.003,.002,.0015]
#  C2+
      XION14=[37.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION14=[0.0,.001,.003,.007,.011,.014,.017,.017,.015,.013,.011,.009,.007,.006,.005,.003,.0017,.0007,.0003,.00017,.00009]
#  C+
      XION15=[37.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.]
      YION15=[0.0,.001,.004,.008,.011,.015,.016,.017,.015,.013,.011,.010,.008,.007,.006,.005,.004,.003,.0018,.0009,.0005]
# K-SHELL IONISATION X-SECTION CARBON (SCALED BY 2 IN def) 
      XION16=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.0D6,1.26D6,1.5D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.0D7,1.26D7,1.5D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.0D8,1.26D8,1.5D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.0D9]
      YION16=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
# ATTACHMENT  H-  EXCLUDING ION PAIRS
      XATT1=[7.00,7.50,8.00,8.50,9.00,9.18,9.50,10.0,10.5,11.0,     11.5]                   
      YATT1=[0.00,7.65e-5,2.52e-4,8.42e-4,1.55e-3,1.70e-3,1.50e-3,8.33e-4,2.50e-4,7.65e-5,0.00]  
# ATTACHMENT CH2- EXCLUDING ION PAIRS
      XATT2=[7.90,8.40,8.90,9.40,9.90,10.1,10.4,10.9,11.4]          
      YATT2=[0.00,1.53e-5,5.04e-5,1.68e-4,3.10e-4,3.40e-4,3.00e-4,1.67e-4,0.0]                    
#                
# NON DIPOLE AT 6.85 EV
      XTR1=[6.85,8.00,9.00,10.0,11.0,12.0,14.0,16.0,19.0,22.0,26.0,30.0]                     
      YTR1=[0.00,.030,.042,.048,.054,.057,.060,.060,.054,.048,  .036,.026]
c NON DIPOLE AT 8.00 EV               
      XTR2=[8.00,9.50,10.5,11.5,12.5,14.5,16.5,19.5,22.5,26.5,30.0]
      YTR2=[0.00,.205,.295,.336,.353,.369,.369,.344,.295,.230,.181]
c NON DIPOLE AT 10.0 EV                        
      XTR3=[10.0,11.0,12.0,13.0,14.0,17.0,20.0,23.0,27.0,30.0,35.0]                             
      YTR3=[0.00,.331,.680,.794,.898,.945,.945,.898,.777,.675,.513]
#                                      
# BREMSSTRAHLUNG X-SECTION WITH CUT UNITS 10**-24
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
# WINTERS CHEM.PHYS.36(1979)353  (NULL COLLISION)  
#   REDUCED  BY 0.9 IN def
      XNUL1=[8.4,10.3,15.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,550.,600.]
      YNUL1=[0.0,0.20,1.30,3.20,4.00,5.60,6.40,7.00,7.40,7.60,7.65,7.60,7.50,7.30,7.10,6.90,6.70,6.40,6.00,5.60,5.30,4.90,4.60,4.30,4.10]
# LIGHT EMISSION FROM H ALPHA     
#  MOHLMANN  CHEM PHYS 19(1977)233
      XNUL2=[20.0,40.0,60.0,80.0,100.,150.,200.,300.,500.,1000.,1300.,1700.,2000.]
      YNUL2=[0.0,.0116,.0196,.0241,.0250,.0222,.0186,.0121,.007,.0034,.0026,.0020,.0017]
# LIGHT EMISSION FROM CH2(A2DELTA -X2PI)
#  MOHLMANN  CHEM PHYS 19(1977)233
      XNUL3=[16.0,20.0,40.0,60.0,80.0,100.,150.,200.,300.,500.,1000.,1300.,1700.,2000.]
      YNUL3=[0.0,.0011,.0041,.0057,.0062,.0061,.0050,.0041,.0028,.0017,.0008,.0006,.0005,.0004]
# --------------------------------------------------------------------- 
# UPDATED TO DEC 1994 . INCLUDES LATEST ELECTRON SCATTERING RESULTS     
# GIVES BETTER FIT THAN PREVIOUS SET
# 1999 MOD USES VIBRATION AT 35.8 MV AND ALSO SUPER ELASTICS.
#          ALSO MOD TO ELASTIC AT LOW ENERGY BELOW 20 MV
# ---------------------------------------------------------------------
c     NANISO=0
      if(NANISO == 0):
 :
       NAME=' C2H6 2016   ISOTROPIC  '
      else:
       NAME=' C2H6 2016  ANISOTROPIC '
      # endif 
#-----------------------------------------------------------------------
# BORN-BETHE CONSTANTS
      A0=0.52917720859e-08
      RY=13.60569193
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      BBCONST=16.00*API*A0*A0*RY*RY/EMASS2
#
# BORN BETHE FOR IONISATION 
      AM2=7.21
      C=70.5
#
# ARRAY SIZE
      NASIZE=20000
#
      NION=16
      NATT=2
      NIN=55  
      NNULL=3
      IONMODEL=1
#
      NBREM=25
      DO 8 J=1,NIN
      IZBR[J]=0
    8 CONTINUE
      IZBR(NIN+1)=6
      IZBR(NIN+2)=1
#
      DO 1 J=1,6
    1 KEL[J]=NANISO
#  SET VIBRATIONAL ANGULAR DISTRIBUTIONS TO ANISOTROPIC
      for 2 J in range(1,10):
    2 KIN[J]=NANISO
# SET ANG DISTRIBUTION FOR DISSOCIATIVE EXCITATIONS TO OKHRIMOVSKYY TYPE
      DO 31 J=11,NIN
   31 KIN[J]=2

      NDATA=164
#                                                        
      NIOND=50
      NION1=31
      NION2=31
      NION3=31
      NION4=30
      NION5=29
      NION6=29
      NION7=26
      NION8=26
      NION9=25
      NION10=24
      NION11=24
      NION12=24
      NION13=23
      NION14=21
      NION15=21
      NION16=83
#
      NATT1=11
      NATT2=9                                                         
      NVIB1=29                                                         
      NVIB2=28                                                          
      NVIB3=28
      NVIB4=46
      NVIB5=16
      NTR1=12                                                         
      NTR2=11                                                          
      NTR3=11
      NUL1=25
      NUL2=13
      NUL3=14
# SCALING OF NULL CROSS-SECTIONS
      SCLN[1]=1.0 
      SCLN[2]=1.0  
      SCLN[3]=1.0      
#
#
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(30.06964*AMU)                                     
      E[3]=11.52                                                        
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0
#
      EION[1]=11.52
      EION[2]=12.05
      EION[3]=12.65
      EION[4]=13.65
      EION[5]=14.8
      EION[6]=14.8
      EION[7]=20.5
      EION[8]=21.5
      EION[9]=25.8
      EION[10]=26.2
      EION[11]=32.0
      EION[12]=32.5
      EION[13]=36.0
      EION[14]=37.0
      EION[15]=37.0
      EION[16]=285.0
# OPAL BEATY
      SCLOBY=0.6
      SCLOBY=1.0
#     SCLOBY=1.0
      DO 33 J=1,NION
      EOBY[J]=EION[J]*SCLOBY
   33 CONTINUE
      EOBY(NION)=EION(NION)*0.63
#
      ESPLIT(1,1)=0.99*EION[2]
      ESPLIT(1,2)=0.76*EION[2] 
#
      DO 44 JK=1,15
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
   44 CONTINUE
# DOUBLE CHARGE , ++ ION STATES ( EXTRA ELECTRON )
      NC0[11]=1
      EC0[11]=6.0
# FLUORESCENCE  (KSHELL)
      LEGAS[16]=1
      ISHELL[16]=1
      NC0[16]=2
      EC0[16]=253.
      WKLM[16]=0.0026
      EFL[16]=273.
      NG1[16]=1
      EG1[16]=253.
      NG2[16]=2
      EG2[16]=5.
# OFFSET ENERGY FOR IONISATION ELECTRON ANGULAR DISTRIBUTION
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
 > EION[J]) :
       IOFFION[J]=I-1
       GO TO 776
      # endif
  777 CONTINUE
  776 CONTINUE
#
      EIN[1]=-0.0358
      EIN[2]=0.0358 
      EIN[3]=-0.117                                                     
      EIN[4]=0.117
      EIN[5]=-0.148                      
      EIN[6]=0.148 
      EIN[7]=-0.182                                                     
      EIN[8]=0.182
      EIN[9]=0.366                                                      
      EIN[10]=0.548
      EIN[11]=6.85
      EIN[12]=7.93
      EIN[13]=8.00
      EIN[14]=8.15
      EIN[15]=8.48
      EIN[16]=8.723
      EIN[17]=8.865
      EIN[18]=9.007
      EIN[19]=9.149
      EIN[20]=9.291
      EIN[21]=9.433
      EIN[22]=9.575
      EIN[23]=9.717
      EIN[24]=9.859
      EIN[25]=10.0
      EIN[26]=10.115
      EIN[27]=10.45
      EIN[28]=10.672
      EIN[29]=10.816
      EIN[30]=10.960
      EIN[31]=11.104
      EIN[32]=11.248
      EIN[33]=11.392
      EIN[34]=11.732
      EIN[35]=12.4
      EIN[36]=13.0
      EIN[37]=13.5
      EIN[38]=14.1
      EIN[39]=14.7
      EIN[40]=15.3
      EIN[41]=15.9
      EIN[42]=16.5
      EIN[43]=17.1
      EIN[44]=17.7
      EIN[45]=18.5
      EIN[46]=19.5
      EIN[47]=20.5
      EIN[48]=21.5
      EIN[49]=22.5
      EIN[50]=23.5
      EIN[51]=24.5
      EIN[52]=25.5
      EIN[53]=26.5
      EIN[54]=27.5
      EIN[55]=28.5
      EIN[56]=0.0
      EIN[57]=0.0
# OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      DO 3 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
 > abs(EIN[NL])) : 
       IOFFN[NL]=I-1
       GO TO 3
      # endif
  651 CONTINUE
    3 CONTINUE 
#*****************************************************************
# ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
# LEVELS THAT ARE DISSOCIATIVE DO NOT GIVE PENNING TRANSFERS
      DO 4 K=1,NIN
      DO 4 L=1,3
    4 PENFRA[L,K]=0.0
# ENTER PENNING CONSTANTS IN PREVIOUS LINE
      if(IPEN == 0):
 GO TO 6
# PRINT OUT PENNING CONSTANTS
      DO 5 KDUM=10,NIN
      if(PENFRA[1,KDUM] == 0.0):
 GO TO 5
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
  999 print(' GAS = ',A25,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)
    5 CONTINUE
#********************************************************************* 
#
    6 SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC   ANISOTROPIC   ETHANE 2016              '
      if(NANISO == 0):
 :
      SCRPT[2]=' ELASTIC     ISOTROPIC   ETHANE 2016              '
      # endif
      SCRPT[3]=' IONISATION     C2H6+               ELOSS= 11.52  '
      SCRPT[4]=' IONISATION     C2H4+               ELOSS= 12.05  ' 
      SCRPT[5]=' IONISATION     C2H5+               ELOSS= 12.65  '
      SCRPT[6]=' IONISATION     CH3+                ELOSS= 13.65  ' 
      SCRPT[7]=' IONISATION     C2H3+               ELOSS= 14.8   '
      SCRPT[8]=' IONISATION     C2H2+               ELOSS= 14.8   ' 
      SCRPT[9]=' IONISATION     H+                  ELOSS= 20.5   '
      SCRPT[10]=' IONISATION     H2+                 ELOSS= 21.5   ' 
      SCRPT[11]=' IONISATION     CH2+                ELOSS= 25.8   ' 
      SCRPT[12]=' IONISATION     C2H+                ELOSS= 26.2   ' 
      SCRPT[13]=' ION-DISS       C2H6++ (100% DISS)  ELOSS= 32.0   ' 
      SCRPT[14]=' IONISATION     H3+                 ELOSS= 32.5   ' 
      SCRPT[15]=' IONISATION     CH+                 ELOSS= 36.0   ' 
      SCRPT[16]=' IONISATION     C2+                 ELOSS= 37.0   '
      SCRPT[17]=' IONISATION     C+                  ELOSS= 37.0   '
      SCRPT[18]=' IONISATION   CARBON K-SHELL        ELOSS=285.0   ' 
      SCRPT[19]=' ATTACHMENT H-                                    '
      SCRPT[20]=' ATTACHMENT CH2-                                  ' 
      SCRPT[21]='                                                  ' 
      SCRPT[22]='                                                  '
      SCRPT[23]=' TORSION V4     SUPERELASTIC       ELOSS= -0.0358 ' 
      SCRPT[24]=' TORSION V4                        ELOSS=  0.0358 ' 
      SCRPT[25]=' V12+V3 ROCKING SUPERELASTIC       ELOSS= -0.117  ' 
      SCRPT[26]=' V12+V3 ROCKING VIBRATIONS         ELOSS=  0.117  '
      SCRPT[27]=' V9 ROCKING     SUPERELASTIC       ELOSS= -0.148  '
      SCRPT[28]=' V9 ROCKING                        ELOSS=  0.148  '
      SCRPT[29]=' V2+V6+V8+V11  SUPERELASTIC        ELOSS= -0.182  '
      SCRPT[30]=' V2+V6+V8+V11  B# end    VIBRATION   ELOSS=  0.182  '
      SCRPT[31]=' V1+V5+V7+V10  STRETCH VIBRATION   ELOSS=  0.366  '
      SCRPT[32]=' VIBRATION    HARMONICS            ELOSS=  0.548  '
      SCRPT[33]=' TRIPLET DISSOCIATION              ELOSS=  6.85   '
      SCRPT[34]=' SINGLET DISSOC.    F = 0.000136   ELOSS=  7.93   '
      SCRPT[35]=' TRIPLET DISSOCIATION              ELOSS=  8.00   '
      SCRPT[36]=' SINGLET DISSOC.    F = 0.001744   ELOSS=  8.15   '
      SCRPT[37]=' SINGLET DISSOC.    F = 0.008187   ELOSS=  8.48   '
      SCRPT[38]=' SINGLET DISSOC.    F = 0.006312   ELOSS=  8.723  '
      SCRPT[39]=' SINGLET DISSOC.    F = 0.011877   ELOSS=  8.865  '
      SCRPT[40]=' SINGLET DISSOC.    F = 0.020856   ELOSS=  9.007  '
      SCRPT[41]=' SINGLET DISSOC.    F = 0.031444   ELOSS=  9.149  '
      SCRPT[42]=' SINGLET DISSOC.    F = 0.039549   ELOSS=  9.291  '
      SCRPT[43]=' SINGLET DISSOC.    F = 0.042350   ELOSS=  9.433  '
      SCRPT[44]=' SINGLET DISSOC.    F = 0.041113   ELOSS=  9.575  '
      SCRPT[45]=' SINGLET DISSOC.    F = 0.038256   ELOSS=  9.717  '
      SCRPT[46]=' SINGLET DISSOC.    F = 0.036556   ELOSS=  9.859  '
      SCRPT[47]=' TRIPLET DISSOCIATION              ELOSS= 10.0    '
      SCRPT[48]=' SINGLET DISSOC.    F = 0.096232   ELOSS= 10.115  '
      SCRPT[49]=' SINGLET DISSOC.    F = 0.083738   ELOSS= 10.450  '
      SCRPT[50]=' SINGLET DISSOC.    F = 0.043456   ELOSS= 10.672  '
      SCRPT[51]=' SINGLET DISSOC.    F = 0.047436   ELOSS= 10.816  '
      SCRPT[52]=' SINGLET DISSOC.    F = 0.047800   ELOSS= 10.960  '
      SCRPT[53]=' SINGLET DISSOC.    F = 0.048914   ELOSS= 11.104  '
      SCRPT[54]=' SINGLET DISSOC.    F = 0.054353   ELOSS= 11.248  '
      SCRPT[55]=' SINGLET DISSOC.    F = 0.061019   ELOSS= 11.392  '
      SCRPT[56]=' SINGLET DISSOC.    F = 0.24443    ELOSS= 11.732  '
      SCRPT[57]=' SINGLET DISSOC.    F = 0.28479    ELOSS= 12.4    '
      SCRPT[58]=' SINGLET DISSOC.    F = 0.095973   ELOSS= 13.0    '
      SCRPT[59]=' SINGLET DISSOC.    F = 0.090728   ELOSS= 13.5    '
      SCRPT[60]=' SINGLET DISSOC.    F = 0.071357   ELOSS= 14.1    '
      SCRPT[61]=' SINGLET DISSOC.    F = 0.074875   ELOSS= 14.7    '
      SCRPT[62]=' SINGLET DISSOC.    F = 0.054542   ELOSS= 15.3    '
      SCRPT[63]=' SINGLET DISSOC.    F = 0.022479   ELOSS= 15.9    '
      SCRPT[64]=' SINGLET DISSOC.    F = 0.008585   ELOSS= 16.5    '
      SCRPT(65)=' SINGLET DISSOC.    F = 0.004524   ELOSS= 17.1    '
      SCRPT(66)=' SINGLET DISSOC.    F = 0.004982   ELOSS= 17.7    '
      SCRPT(67)=' SINGLET DISSOC.    F = 0.01013    ELOSS= 18.5    '
      SCRPT(68)=' SINGLET DISSOC.    F = 0.01332    ELOSS= 19.5    '
      SCRPT(69)=' SINGLET DISSOC.    F = 0.01331    ELOSS= 20.5    '
      SCRPT(70)=' SINGLET DISSOC.    F = 0.01076    ELOSS= 21.5    '
      SCRPT(71)=' SINGLET DISSOC.    F = 0.009797   ELOSS= 22.5    '
      SCRPT(72)=' SINGLET DISSOC.    F = 0.009198   ELOSS= 23.5    '
      SCRPT(73)=' SINGLET DISSOC.    F = 0.008312   ELOSS= 24.5    '
      SCRPT(74)=' SINGLET DISSOC.    F = 0.007139   ELOSS= 25.5    '
      SCRPT(75)=' SINGLET DISSOC.    F = 0.004715   ELOSS= 26.5    '
      SCRPT(76)=' SINGLET DISSOC.    F = 0.002137   ELOSS= 27.5    '
      SCRPT(77)=' SINGLET DISSOC.    F = 0.000662   ELOSS= 28.5    '
      SCRPT(78)=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT(79)=' BREMSSTRAHLUNG FROM HYDROGEN ATOM                '
# NULL COLLISIONS
      SCRPTN[1]=' C2H6:DISSOCIATION : WINTERS CHEM.PHYS 36(1979)353'
      SCRPTN[2]=' C2H6: LIGHT EMISSION: Halpha                     '
      SCRPTN[3]=' C2H6: LIGHT EMISSION: CH2(A2DELTA - X2PI)        '
#
# CALC LEVEL POPULATIONS
      APOP1=math.exp(EIN[1]/AKT)
      APOP2=math.exp(EIN[3]/AKT)
      APOP3=math.exp(EIN[5]/AKT)
      APOP4=math.exp(EIN[7]/AKT)
# 
#
#     EN=-ESTEP/2.0                                      
      DO 1000 I=1,NSTEP 
      EN=EG[I]
      ENLG=math.log(EN)                                             
#     EN=EN+ESTEP    
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
#                                                   
      DO 10 J=2,N      
      if(EN > 10.0):
 GO TO 21                                           
      if(EN <= XEN[J]:
) GO TO 20                                         
   10 CONTINUE                                                          
      J=N                                                          
   20 A=(YMT[J]-YMT[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YMT[J]-XEN[J]*YMT[J-1])/(XEN[J-1]-XEN[J])   
      QMT=(A*EN+B)*1.e-16
      A=(YEL[J]-YEL[J-1])/(XEN[J]-XEN[J-1])
      B=(XEN[J-1]*YEL[J]-XEN[J]*YEL[J-1])/(XEN[J-1]-XEN[J])
      QEL=(A*EN+B)*1.e-16
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=A*EN+B
      GO TO 30
# USE LOG INTERPOLATION ABOVE 10 EV
   21 DO 22 J=2,NDATA
      if(EN <= XEN[J]:
) GO TO 23
   22 CONTINUE
      J=NDATA
   23 YXJ=math.log(YEL[J])
      YXJ1=math.log(YEL[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QEL=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YMT[J])
      YXJ1=math.log(YMT[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMT=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YEPS[J])
      YXJ1=math.log(YEPS[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      PQ2=math.exp(A*math.log(EN)+B)
   30 CONTINUE
# EPSILON= 1-YEPS
      PQ2=1.00-PQ2 
      PQ1=0.5+(QEL-QMT)/QEL 
# CALCULATE PQ1 AND PQ2
      if(NANISO == 0):
 PEQEL[2][I]=0.5
      if(NANISO == 1):
 PEQEL[2][I]=PQ1
      if(NANISO == 2):
 PEQEL[2][I]=PQ2
      Q[2][I]=QEL
      if(NANISO == 0):
 Q[2][I]=QMT 
#
# IONISATION 
#
      Q[3][I]=0.0 
      DO 100 J=L,NION
      QION(L,I)=0.00
      PEQION(L,I)=0.5
      if(NANISO == 2):
 PEQION(L,I)=0.0
  100 CONTINUE
#  C2H6+                                                                     
      if(EN <= EION[1]:
) GO TO 110         
      if(EN > XION1(NION1):
) GO TO 103
      DO 101 J=2,NION1                                                  
      if(EN <= XION1[J]:
) GO TO 102                                     
  101 CONTINUE                                                          
      J=NION1                                                           
  102 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])                    
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J]) 
      QION[1][I]=(A*EN+B)*1.e-16               
      GO TO 107 
  103 if(EN > XION(NIOND)) GO TO 106
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# USE LOG INTERPOLATION 
      DO 104 J=2,NIOND
      if(EN <= XION[J]:
) GO TO 105
  104 CONTINUE
      J=NIOND
  105 YXJ=math.log(YIONC[J])
      YXJ1=math.log(YIONC[J-1])
      XNJ=math.log(XION[J])
      XNJ1=math.log(XION[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QCOUNT=math.exp(A*math.log(EN)+B)*1.e-16
# FRACTION OF QCOUNT
      QION[1][I]=QCOUNT*0.1378
      GO TO 107
# USE BORN BETHE ABOVE XION(NIOND) EV
  106 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QBB=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
      QION[1][I]=QBB*0.1378
  107 CONTINUE
      if(EN < (2.0*EION[1]:
)) GO TO 110
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
# C2H4+ 
  110 if(EN <= EION[2]) GO TO 120         
      if(EN > XION2(NION2):
) GO TO 113
      DO 111 J=2,NION2                                                  
      if(EN <= XION2[J]:
) GO TO 112                                     
  111 CONTINUE                                                          
      J=NION2                                                           
  112 A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])                    
      B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J]) 
      QION[2][I]=(A*EN+B)*1.e-16               
      GO TO 117 
  113 if(EN > XION(NIOND)) GO TO 116
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[2][I]=QCOUNT*0.4481
      GO TO 117
# USE BORN BETHE ABOVE XION(NIOND) EV
  116 QION[2][I]=QBB*0.4481
  117 CONTINUE
      if(EN < (2.0*EION[2]:
)) GO TO 120
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
# C2H5+ 
  120 if(EN <= EION[3]) GO TO 130         
      if(EN > XION3(NION3):
) GO TO 123
      DO 121 J=2,NION3                                                  
      if(EN <= XION3[J]:
) GO TO 122                                     
  121 CONTINUE                                                          
      J=NION3                                                           
  122 A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])                    
      B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J]) 
      QION[3][I]=(A*EN+B)*1.e-16               
      GO TO 127 
  123 if(EN > XION(NIOND)) GO TO 126
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[3][I]=QCOUNT*0.1104
      GO TO 127
# USE BORN BETHE ABOVE XION(NIOND) EV
  126 QION[3][I]=QBB*0.1104
  127 CONTINUE
      if(EN < (2.0*EION[3]:
)) GO TO 130
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
# CH3+ 
  130 if(EN <= EION[4]) GO TO 140         
      if(EN > XION4(NION4):
) GO TO 133
      DO 131 J=2,NION4                                                  
      if(EN <= XION4[J]:
) GO TO 132                                     
  131 CONTINUE                                                          
      J=NION4                                                           
  132 A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])                    
      B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J]) 
      QION[4][I]=(A*EN+B)*1.e-16               
      GO TO 137 
  133 if(EN > XION(NIOND)) GO TO 136
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[4][I]=QCOUNT*0.01718
      GO TO 137
# USE BORN BETHE ABOVE XION(NIOND) EV
  136 QION[4][I]=QBB*0.01718
  137 CONTINUE
      if(EN < (2.0*EION[4]:
)) GO TO 140
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
# C2H3+ 
  140 if(EN <= EION[5]) GO TO 150         
      if(EN > XION5(NION5):
) GO TO 143
      DO 141 J=2,NION5                                                  
      if(EN <= XION5[J]:
) GO TO 142                                     
  141 CONTINUE                                                          
      J=NION5                                                           
  142 A=(YION5[J]-YION5[J-1])/(XION5[J]-XION5[J-1])                    
      B=(XION5[J-1]*YION5[J]-XION5[J]*YION5[J-1])/(XION5[J-1]-XION5[J]) 
      QION[5][I]=(A*EN+B)*1.e-16               
      GO TO 147 
  143 if(EN > XION(NIOND)) GO TO 146
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[5][I]=QCOUNT*0.1283 
      GO TO 147
# USE BORN BETHE ABOVE XION(NIOND) EV
  146 QION[5][I]=QBB*0.1283 
  147 CONTINUE
      if(EN < (2.0*EION[5]:
)) GO TO 150
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
# C2H2+ 
  150 if(EN <= EION[6]) GO TO 160         
      if(EN > XION6(NION6):
) GO TO 153
      DO 151 J=2,NION6                                                  
      if(EN <= XION6[J]:
) GO TO 152                                     
  151 CONTINUE                                                          
      J=NION6                                                           
  152 A=(YION6[J]-YION6[J-1])/(XION6[J]-XION6[J-1])                    
      B=(XION6[J-1]*YION6[J]-XION6[J]*YION6[J-1])/(XION6[J-1]-XION6[J]) 
      QION[6][I]=(A*EN+B)*1.e-16               
      GO TO 157 
  153 if(EN > XION(NIOND)) GO TO 156
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[6][I]=QCOUNT*0.0700 
      GO TO 157
# USE BORN BETHE ABOVE XION(NIOND) EV
  156 QION[6][I]=QBB*0.0700 
  157 CONTINUE
      if(EN < (2.0*EION[6]:
)) GO TO 160
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])
# H+ 
  160 if(EN <= EION[7]) GO TO 170         
      if(EN > XION7(NION7):
) GO TO 163
      DO 161 J=2,NION7                                                  
      if(EN <= XION7[J]:
) GO TO 162                                     
  161 CONTINUE                                                          
      J=NION7                                                           
  162 A=(YION7[J]-YION7[J-1])/(XION7[J]-XION7[J-1])                    
      B=(XION7[J-1]*YION7[J]-XION7[J]*YION7[J-1])/(XION7[J-1]-XION7[J]) 
      QION[7][I]=(A*EN+B)*1.e-16               
      GO TO 167 
  163 if(EN > XION(NIOND)) GO TO 166
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[7][I]=QCOUNT*0.000011
      GO TO 167
# USE BORN BETHE ABOVE XION(NIOND) EV
  166 QION[7][I]=QBB*0.000011
  167 CONTINUE
      if(EN < (2.0*EION[7]:
)) GO TO 170
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
# H2+ 
  170 if(EN <= EION[8]) GO TO 180         
      if(EN > XION8(NION8):
) GO TO 173
      DO 171 J=2,NION8                                                  
      if(EN <= XION8[J]:
) GO TO 172                                     
  171 CONTINUE                                                          
      J=NION8                                                           
  172 A=(YION8[J]-YION8[J-1])/(XION8[J]-XION8[J-1])                    
      B=(XION8[J-1]*YION8[J]-XION8[J]*YION8[J-1])/(XION8[J-1]-XION8[J]) 
      QION[8][I]=(A*EN+B)*1.e-16               
      GO TO 177 
  173 if(EN > XION(NIOND)) GO TO 176
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[8][I]=QCOUNT*0.00036  
      GO TO 177
# USE BORN BETHE ABOVE XION(NIOND) EV
  176 QION[8][I]=QBB*0.00036 
  177 CONTINUE
      if(EN < (2.0*EION[8]:
)) GO TO 180
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
# CH2+ 
  180 if(EN <= EION[9]) GO TO 190         
      if(EN > XION9(NION9):
) GO TO 183
      DO 181 J=2,NION9                                                  
      if(EN <= XION9[J]:
) GO TO 182                                     
  181 CONTINUE                                                          
      J=NION9                                                           
  182 A=(YION9[J]-YION9[J-1])/(XION9[J]-XION9[J-1])                    
      B=(XION9[J-1]*YION9[J]-XION9[J]*YION9[J-1])/(XION9[J-1]-XION9[J]) 
      QION[9][I]=(A*EN+B)*1.e-16               
      GO TO 187 
  183 if(EN > XION(NIOND)) GO TO 186
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[9][I]=QCOUNT*0.0066  
      GO TO 187
# USE BORN BETHE ABOVE XION(NIOND) EV
  186 QION[9][I]=QBB*0.0066
  187 CONTINUE
      if(EN < (2.0*EION[9]:
)) GO TO 190
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
# C2H+
  190 if(EN <= EION[10]) GO TO 200         
      if(EN > XION10(NION10):
) GO TO 193
      DO 191 J=2,NION10                                                 
      if(EN <= XION10[J]:
) GO TO 192                                     
  191 CONTINUE                                                          
      J=NION10                                                          
  192 A=(YION10[J]-YION10[J-1])/(XION10[J]-XION10[J-1])                
      B=(XION10[J-1]*YION10[J]-XION10[J]*YION10[J-1])/(XION10[J-1]-XION10[J]) 
      QION[10][I]=(A*EN+B)*1.e-16               
      GO TO 197 
  193 if(EN > XION(NIOND)) GO TO 196
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[10][I]=QCOUNT*0.0062
      GO TO 197
# USE BORN BETHE ABOVE XION(NIOND) EV
  196 QION[10][I]=QBB*0.0062    
  197 CONTINUE
      if(EN < (2.0*EION[10]:
)) GO TO 200
      PEQION[10][I]=PEQEL[2][(I-IOFFION[10]))
# C2H6++
  200 if(EN <= EION[11]) GO TO 210         
      if(EN > XION11(NION11):
) GO TO 203
      DO 201 J=2,NION11                                                 
      if(EN <= XION11[J]:
) GO TO 202                                     
  201 CONTINUE                                                          
      J=NION11                                                          
  202 A=(YION11[J]-YION11[J-1])/(XION11[J]-XION11[J-1])                
      B=(XION11[J-1]*YION11[J]-XION11[J]*YION11[J-1])/(XION11[J-1]-XION11[J]) 
      QION[11][I]=(A*EN+B)*1.e-16               
      GO TO 207 
  203 if(EN > XION(NIOND)) GO TO 206
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[11][I]=QCOUNT*0.0745
      GO TO 207
# USE BORN BETHE ABOVE XION(NIOND) EV
  206 QION[11][I]=QBB*0.0745  
  207 CONTINUE
      if(EN < (2.0*EION[11]:
)) GO TO 210
      PEQION[11][I]=PEQEL[2][(I-IOFFION[11]))
# H3+
  210 if(EN <= EION[12]) GO TO 220         
      if(EN > XION12(NION12):
) GO TO 213
      DO 211 J=2,NION12                                                 
      if(EN <= XION12[J]:
) GO TO 212                                     
  211 CONTINUE                                                          
      J=NION12                                                          
  212 A=(YION12[J]-YION12[J-1])/(XION12[J]-XION12[J-1])                
      B=(XION12[J-1]*YION12[J]-XION12[J]*YION12[J-1])/(XION12[J-1]-XION12[J]) 
      QION[12][I]=(A*EN+B)*1.e-16               
      GO TO 217 
  213 if(EN > XION(NIOND)) GO TO 216
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[12][I]=QCOUNT*0.0000055
      GO TO 217
# USE BORN BETHE ABOVE XION(NIOND) EV
  216 QION[12][I]=QBB*0.0000055   
  217 CONTINUE
      if(EN < (2.0*EION[12]:
)) GO TO 220
      PEQION[12][I]=PEQEL[2][(I-IOFFION[12]))
# CH+
  220 if(EN <= EION[13]) GO TO 230         
      if(EN > XION13(NION13):
) GO TO 223
      DO 221 J=2,NION13                                                 
      if(EN <= XION13[J]:
) GO TO 222                                     
  221 CONTINUE                                                          
      J=NION13                                                          
  222 A=(YION13[J]-YION13[J-1])/(XION13[J]-XION13[J-1])                
      B=(XION13[J-1]*YION13[J]-XION13[J]*YION13[J-1])/(XION13[J-1]-XION13[J]) 
      QION[13][I]=(A*EN+B)*1.e-16               
      GO TO 227 
  223 if(EN > XION(NIOND)) GO TO 226
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[13][I]=QCOUNT*0.00037
      GO TO 227
# USE BORN BETHE ABOVE XION(NIOND) EV
  226 QION[13][I]=QBB*0.00037
  227 CONTINUE
      if(EN < (2.0*EION[13]:
)) GO TO 230
      PEQION[13][I]=PEQEL[2][(I-IOFFION[13]))
# C2+
  230 if(EN <= EION[14]) GO TO 240         
      if(EN > XION14(NION14):
) GO TO 233
      DO 231 J=2,NION14                                                 
      if(EN <= XION14[J]:
) GO TO 232                                     
  231 CONTINUE                                                          
      J=NION14                                                          
  232 A=(YION14[J]-YION14[J-1])/(XION14[J]-XION14[J-1])                
      B=(XION14[J-1]*YION14[J]-XION14[J]*YION14[J-1])/(XION14[J-1]-XION14[J]) 
      QION[14][I]=(A*EN+B)*1.e-16               
      GO TO 237 
  233 if(EN > XION(NIOND)) GO TO 236
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[14][I]=QCOUNT*0.000022
      GO TO 237
# USE BORN BETHE ABOVE XION(NIOND) EV
  236 QION[14][I]=QBB*0.000022
  237 CONTINUE
      if(EN < (2.0*EION[14]:
)) GO TO 240
      PEQION[14][I]=PEQEL[2][(I-IOFFION[14]))
# C+ 
  240 if(EN <= EION[15]) GO TO 250         
      if(EN > XION15(NION15):
) GO TO 243
      DO 241 J=2,NION15                                                 
      if(EN <= XION15[J]:
) GO TO 242                                     
  241 CONTINUE                                                          
      J=NION15                                                          
  242 A=(YION15[J]-YION15[J-1])/(XION15[J]-XION15[J-1])                
      B=(XION15[J-1]*YION15[J]-XION15[J]*YION15[J-1])/(XION15[J-1]-XION15[J]) 
      QION[15][I]=(A*EN+B)*1.e-16               
      GO TO 247 
  243 if(EN > XION(NIOND)) GO TO 246
# USE FRACTION OF COUNTING IONISATION ABOVE 600 EV
# FRACTION OF QCOUNT
      QION[15][I]=QCOUNT*0.00011 
      GO TO 247
# USE BORN BETHE ABOVE XION(NIOND) EV
  246 QION[15][I]=QBB*0.00011 
  247 CONTINUE
      if(EN < (2.0*EION[15]:
)) GO TO 250
      PEQION[15][I]=PEQEL[2][(I-IOFFION[15]))
# CARBON K-SHELL 
  250 if(EN <= EION[16]) GO TO 260         
      DO 251 J=2,NION16                                                 
      if(EN <= XION16[J]:
) GO TO 252                                     
  251 CONTINUE                                                          
      J=NION16                                                          
  252 A=(YION16[J]-YION16[J-1])/(XION16[J]-XION16[J-1])                
      B=(XION16[J-1]*YION16[J]-XION16[J]*YION16[J-1])/(XION16[J-1]-XION16[J]) 
      QION[16][I]=(A*EN+B)*1.e-16               
      if(EN < (2.0*EION[16]:
)) GO TO 255
      PEQION[16][I]=PEQEL[2][(I-IOFFION[16]))
# CORRECTION TO INISATION FOR SPLIT OFF KSHELL
  255 QSUM=0.00
      DO 256 L=1,15
  256 QSUM=QSUM+QION(L,I)
      if(QSUM == 0.0):
 GO TO 260
      FAC=(QSUM-QION[16][I])/QSUM
      DO 257 L=1,15
  257 QION(L,I)=QION(L,I)*FAC
# 
# ATTACHMENT TO H-
# 
  260 Q[4][I]=0.0
      QATT[1][I]=0.0
      if(EN < XATT1[1]:
) GO TO 290                                      
      if(EN >= XATT1(NATT1):
) GO TO 290                                
      DO 270 J=2,NATT1                                                  
      if(EN <= XATT1[J]:
) GO TO 280                                     
  270 CONTINUE                                                          
      J=NATT1                                                          
  280 A=(YATT1[J]-YATT1[J-1])/(XATT1[J]-XATT1[J-1])                     
      B=(XATT1[J-1]*YATT1[J]-XATT1[J]*YATT1[J-1])/(XATT1[J-1]-XATT1[J])
      QATT[1][I]=(A*EN+B)*1.e-16  
# ATTACHMENT TO CH2- 
  290 QATT[2][I]=0.0
      if(EN < XATT2[1]:
) GO TO 300                                      
      if(EN >= XATT2(NATT2):
) GO TO 300                                
      DO 291 J=2,NATT2                                                  
      if(EN <= XATT2[J]:
) GO TO 292                                     
  291 CONTINUE                                                          
      J=NATT2                                                          
  292 A=(YATT2[J]-YATT2[J-1])/(XATT2[J]-XATT2[J-1])                     
      B=(XATT2[J-1]*YATT2[J]-XATT2[J]*YATT2[J-1])/(XATT2[J-1]-XATT2[J])
      QATT[2][I]=(A*EN+B)*1.e-16  
#                                     
  300 Q[5][I]=0.0
      Q[6][I]=0.0
# SET ZEROS
      DO 310 L=1,NIN
      QIN(L,I)=0.00
  310 PEQIN(L,I)=0.00
#
# SUPERELASTIC VIBRATION-TORSION         ANISOTROPIC ABOVE 10 EV
      if(EN <= 0.0):
 GO TO 350
      EFAC=math.sqrt(1.0-(EIN[1]/EN))
      QIN[1][I]=0.0045*math.log((EFAC+1.0)/(EFAC-1.0))/EN
      QIN[1][I]=QIN[1][I]*APOP1/(1.0+APOP1)*1.e-16
      if(EN > 10.0):
 PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]#
# VIBRATION-TORSION                      ANISOTROPIC ABOVE 10 EV
  350 if(EN <= EIN[2]) GO TO 351
      EFAC=math.sqrt(1.0-(EIN[2]/EN))
      QIN[2][I]=0.0045*math.log((1.0+EFAC)/(1.0-EFAC))/EN
      QIN[2][I]=QIN[2][I]*1.0/(1.0+APOP1)*1.e-16
      if(EN > 10.0):
 PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]#
# SUPERELASTIC VIB1                     ANISOTROPIC ABOVE 10 EV
  351 if(EN <= 0.0) GO TO 356
      if((EN+EIN[4]:
) > XVIB1(NVIB1)) GO TO 354
      DO 352 J=2,NVIB1
      if((EN+EIN[4]:
) <= XVIB1[J]) GO TO 353
  352 CONTINUE
      J=NVIB1
  353 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J])
      QIN[3][I]=(EN+EIN[4])*(A*(EN+EIN[4])+B)/EN
      GO TO 355
  354 QIN[3][I]=YVIB1(NVIB1)*(XVIB1(NVIB1)/(EN+EIN[4]))**2
  355 QIN[3][I]=QIN[3][I]*APOP2/(1.0+APOP2)*1.e-16
      if(EN > 10.0):
 PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]#  VIB1                           ANISOTROPIC ABOVE 10 EV               
  356 if(EN <= EIN[4]) GO TO 361  
      if(EN > XVIB1(NVIB1):
) GO TO 359
      DO 357 J=2,NVIB1                                                  
      if(EN <= XVIB1[J]:
) GO TO 358                                      
  357 CONTINUE                                                          
      J=NVIB1                                                           
  358 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN[4][I]=(A*EN+B)
      GO TO 360 
  359 QIN[4][I]=YVIB1(NVIB1)*(XVIB1(NVIB1)/EN)**2
  360 QIN[4][I]=QIN[4][I]/(1.0+APOP2)*1.e-16   
      if(EN > 10.0):
 PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))] 
# SUPERELASTIC VIB2                       ANISOTROPIC ABOVE 10 EV
  361 if(EN <= 0.0) GO TO 366
      if((EN+EIN[6]:
) > XVIB2(NVIB2)) GO TO 364
      DO 362 J=2,NVIB2
      if((EN+EIN[6]:
) <= XVIB2[J]) GO TO 363  
  362 CONTINUE
      J=NVIB2
  363 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J])
      QIN[5][I]=(EN+EIN[6])*(A*(EN+EIN[6])+B)/EN
      GO TO 365
  364 QIN[5][I]=YVIB2(NVIB2)*(XVIB2(NVIB2)/(EN+EIN[6]))**2
  365 QIN[5][I]=QIN[5][I]*APOP3/(1.0+APOP3)*1.e-16
      if(EN > 10.0):
 PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]# VIB2                                  ANISOTROPIC ABOVE 10 EV
  366 if(EN <= EIN[6]) GO TO 371
      if(EN > XVIB2(NVIB2):
) GO TO 369                                 
      DO 367 J=2,NVIB2                                                  
      if(EN <= XVIB2[J]:
) GO TO 368                                      
  367 CONTINUE                                                          
      J=NVIB2                                                           
  368 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[6][I]=(A*EN+B)
      GO TO 370
  369 QIN[6][I]=YVIB2(NVIB2)*(XVIB2(NVIB2)/EN)**2
  370 QIN[6][I]=QIN[6][I]/(1.0+APOP3)*1.e-16
      if(EN > 10.0):
 PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]      
# SUPERELASTIC VIB3                       ANISOTROPIC ABOVE 10 EV
  371 if(EN <= 0.0) GO TO 376
      if((EN+EIN[8]:
) > XVIB3(NVIB3)) GO TO 374
      DO 372 J=2,NVIB3
      if((EN+EIN[8]:
) <= XVIB3[J]) GO TO 373  
  372 CONTINUE
      J=NVIB3
  373 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J])
      QIN[7][I]=(EN+EIN[8])*(A*(EN+EIN[8])+B)/EN
      GO TO 375
  374 QIN[7][I]=YVIB3(NVIB3)*(XVIB3(NVIB3)/(EN+EIN[8]))**2
  375 QIN[7][I]=QIN[7][I]*APOP4/(1.0+APOP4)*1.e-16
      if(EN > 10.0):
 PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]# VIB3                                  ANISOTROPIC ABOBE 10 EV
  376 if(EN <= EIN[8]) GO TO 381   
      if(EN > XVIB3(NVIB3):
) GO TO 379
      DO 377 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
) GO TO 378                                      
  377 CONTINUE                                                          
      J=NVIB3                                                           
  378 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[8][I]=(A*EN+B)
      GO TO 380
  379 QIN[8][I]=YVIB3(NVIB3)*(XVIB3(NVIB3)/EN)**2    
  380 QIN[8][I]=QIN[8][I]/(1.0+APOP4)*1.e-16
      if(EN > 10.0):
 PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]   
# VIB4                                      ANISOTROPIC ABOVE 10 EV
  381 if(EN <= EIN[9]) GO TO 386 
      if(EN > XVIB4(NVIB4):
) GO TO 384        
      DO 382 J=2,NVIB4                                                  
      if(EN <= XVIB4[J]:
) GO TO 383                                      
  382 CONTINUE                                                          
      J=NVIB4                                                           
  383 A=(YVIB4[J]-YVIB4[J-1])/(XVIB4[J]-XVIB4[J-1])                     
      B=(XVIB4[J-1]*YVIB4[J]-XVIB4[J]*YVIB4[J-1])/(XVIB4[J-1]-XVIB4[J]) 
      QIN[9][I]=(A*EN+B)*1.e-16
      GO TO 385
  384 QIN[9][I]=YVIB4(NVIB4)*(XVIB4(NVIB4)/EN)**2*1.e-16
  385 if(EN > 10.0) PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]    
# VIB HARMONICS                           ANISOTROPIC ABOVE 10 EV   
  386 if(EN <= EIN[10]) GO TO 391   
      if(EN > XVIB5[NVIB5]:
) GO TO 389    
      DO 387 J=2,NVIB5                                                  
      if(EN <= XVIB5[J]:
) GO TO 388                                      
  387 CONTINUE                                                          
      J=NVIB5                                                           
  388 A=(YVIB5[J]-YVIB5[J-1])/(XVIB5[J]-XVIB5[J-1])                     
      B=(XVIB5[J-1]*YVIB5[J]-XVIB5[J]*YVIB5[J-1])/(XVIB5[J-1]-XVIB5[J]) 
      QIN[10][I]=(A*EN+B)*1.e-16 
      GO TO 390 
  389 QIN[10][I]=YVIB5[NVIB5]*(XVIB5[NVIB5]/EN)**2*1.e-16        
  390 if(EN > 10.0) PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
  391 CONTINUE 
#  
# EXCITATION TO TRIPLET AND SINGLET LEVELS
#
# FIRST TRIPLET AT  6.85 EV
      if(EN <= EIN[11]:
) GO TO 405
      if(EN > XTR1[NTR1]:
) GO TO 403                                   
      DO 401 J=2,NTR1                                              
      if(EN <= XTR1[J]:
) GO TO 402                                  
  401 CONTINUE                                                          
      J=NTR1                                       
  402 A=(YTR1[J]-YTR1[J-1])/(XTR1[J]-XTR1[J-1])                    
      B=(XTR1[J-1]*YTR1[J]-XTR1[J]*YTR1[J-1])/(XTR1[J-1]-XTR1[J])       
      QIN[11][I]=(A*EN+B)*1.e-16     
      GO TO 404
# SCALE BY 1/E**2 ABOVE XTR1[NTR1] EV
  403 QIN[11][I]=YTR1[NTR1]*(XTR1[NTR1]/EN)**2*1.e-16
  404 if(EN <= (3.0*EIN[11])) GO TO 405
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
#
# SINGLET DISSOCIATION AT  7.93  EV     BEF SCALING F=.000136          
  405 if(EN <= (EIN[12])) GO TO 406
      QIN[12][I]=0.000136/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])
      if(QIN[12][I]:
 < 0.0) QIN[12][I]=0.0
      if(EN <= (3.0*EIN[12]:
)) GO TO 406
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
# 
# SECOND TRIPLET AT  8.00 EV                                   
  406 if(EN <= EIN[13]) GO TO 411
      if(EN > XTR2[NTR2]:
) GO TO 409  
      DO 407 J=2,NTR2                                                  
      if(EN <= XTR2[J]:
) GO TO 408                                      
  407 CONTINUE                                                          
      J=NTR2                                                           
  408 A=(YTR2[J]-YTR2[J-1])/(XTR2[J]-XTR2[J-1])                     
      B=(XTR2[J-1]*YTR2[J]-XTR2[J]*YTR2[J-1])/(XTR2[J-1]-XTR2[J]) 
      QIN[13][I]=(A*EN+B)*1.e-16
      GO TO 410
# SCALE BY 1/E**2 ABOVE XTR2[NTR2] EV
  409 QIN[13][I]=YTR2[NTR2]*(XTR2[NTR2]/EN)**2*1.e-16
  410 if(EN <= (3.0*EIN[13])) GO TO 411
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
#
# SINGLET DISSOCIATION AT  8.15  EV     BEF SCALING F=.001744
  411 if(EN <= (EIN[14])) GO TO 412
      QIN[14][I]=0.001744/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[14]+E[3])
      if(QIN[14][I]:
 < 0.0) QIN[14][I]=0.0
      if(EN <= (3.0*EIN[14]:
)) GO TO 412
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
# SINGLET DISSOCIATION AT  8.48  EV     BEF SCALING F=.008187
  412 if(EN <= (EIN[15])) GO TO 413
      QIN[15][I]=0.008187/(EIN[15]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[15]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[15]+E[3])
      if(QIN[15][I]:
 < 0.0) QIN[15][I]=0.0
      if(EN <= (3.0*EIN[15]:
)) GO TO 413
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
# SINGLET DISSOCIATION AT  8.723 EV     BEF SCALING F=.006312
  413 if(EN <= (EIN[16])) GO TO 414
      QIN[16][I]=0.006312/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])
      if(QIN[16][I]:
 < 0.0) QIN[16][I]=0.0
      if(EN <= (3.0*EIN[16]:
)) GO TO 414
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
# SINGLET DISSOCIATION AT  8.865 EV     BEF SCALING F=.011877
  414 if(EN <= (EIN[17])) GO TO 415
      QIN[17][I]=0.011877/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])
      if(QIN[17][I]:
 < 0.0) QIN[17][I]=0.0
      if(EN <= (3.0*EIN[17]:
)) GO TO 415
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
# SINGLET DISSOCIATION AT  9.007 EV     BEF SCALING F=.020856
  415 if(EN <= (EIN[18])) GO TO 416
      QIN[18][I]=0.020856/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])
      if(QIN[18][I]:
 < 0.0) QIN[18][I]=0.0
      if(EN <= (3.0*EIN[18]:
)) GO TO 416
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
# SINGLET DISSOCIATION AT  9.149 EV     BEF SCALING F=.031444
  416 if(EN <= (EIN[19])) GO TO 417
      QIN[19][I]=0.031444/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])
      if(QIN[19][I]:
 < 0.0) QIN[19][I]=0.0
      if(EN <= (3.0*EIN[19]:
)) GO TO 417
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
# SINGLET DISSOCIATION AT  9.291 EV     BEF SCALING F=.039549
  417 if(EN <= (EIN[21])) GO TO 418
      QIN[20][I]=0.039549/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])
      if(QIN[20][I]:
 < 0.0) QIN[20][I]=0.0
      if(EN <= (3.0*EIN[20]:
)) GO TO 418
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
# SINGLET DISSOCIATION AT  9.433 EV     BEF SCALING F=.042350
  418 if(EN <= (EIN[21])) GO TO 419
      QIN[21][I]=0.042350/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])
      if(QIN[21][I]:
 < 0.0) QIN[21][I]=0.0
      if(EN <= (3.0*EIN[21]:
)) GO TO 419
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
# SINGLET DISSOCIATION AT  9.575 EV     BEF SCALING F=.041113
  419 if(EN <= (EIN[22])) GO TO 420
      QIN[22][I]=0.041113/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+E[3])
      if(QIN[22][I]:
 < 0.0) QIN[22][I]=0.0
      if(EN <= (3.0*EIN[22]:
)) GO TO 420
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
# SINGLET DISSOCIATION AT  9.717 EV     BEF SCALING F=.038256
  420 if(EN <= (EIN[23])) GO TO 421
      QIN[23][I]=0.038256/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+E[3])
      if(QIN[23][I]:
 < 0.0) QIN[23][I]=0.0
      if(EN <= (3.0*EIN[23]:
)) GO TO 421
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
# SINGLET DISSOCIATION AT  9.859 EV     BEF SCALING F=.036556
  421 if(EN <= (EIN[24])) GO TO 422
      QIN[24][I]=0.036556/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])
      if(QIN[24][I]:
 < 0.0) QIN[24][I]=0.0
      if(EN <= (3.0*EIN[24]:
)) GO TO 422
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
#
# THIRD TRIPLET AT 10.0 EV                                   
  422 if(EN <= EIN[25]) GO TO 427
      if(EN > XTR3[NTR3]:
) GO TO 425  
      DO 423 J=2,NTR3                                                  
      if(EN <= XTR3[J]:
) GO TO 424                                      
  423 CONTINUE                                                          
      J=NTR3                                                           
  424 A=(YTR3[J]-YTR3[J-1])/(XTR3[J]-XTR3[J-1])                     
      B=(XTR3[J-1]*YTR3[J]-XTR3[J]*YTR3[J-1])/(XTR3[J-1]-XTR3[J]) 
      QIN[25][I]=(A*EN+B)*1.e-16
      GO TO 426
# SCALE BY 1/E**2 ABOVE XTR2[NTR2] EV
  425 QIN[25][I]=YTR3[NTR3]*(XTR3[NTR3]/EN)**2*1.e-16
  426 if(EN <= (3.0*EIN[25])) GO TO 427
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
#
# SINGLET DISSOCIATION AT 10.115 EV     BEF SCALING F=.096232
  427 if(EN <= (EIN[26])) GO TO 428
      QIN[26][I]=0.096232/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])
      if(QIN[26][I]:
 < 0.0) QIN[26][I]=0.0
      if(EN <= (3.0*EIN[26]:
)) GO TO 428
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
# SINGLET DISSOCIATION AT 10.45  EV     BEF SCALING F=.083738
  428 if(EN <= (EIN[27])) GO TO 429
      QIN[27][I]=0.083738/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])
      if(QIN[27][I]:
 < 0.0) QIN[27][I]=0.0
      if(EN <= (3.0*EIN[27]:
)) GO TO 429
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
# SINGLET DISSOCIATION AT 10.672 EV     BEF SCALING F=.043456
  429 if(EN <= (EIN[28])) GO TO 430
      QIN[28][I]=0.043456/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])
      if(QIN[28][I]:
 < 0.0) QIN[28][I]=0.0
      if(EN <= (3.0*EIN[28]:
)) GO TO 430
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
# SINGLET DISSOCIATION AT 10.816 EV     BEF SCALING F=.047436
  430 if(EN <= (EIN[29])) GO TO 431
      QIN[29][I]=0.047436/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])
      if(QIN[29][I]:
 < 0.0) QIN[29][I]=0.0
      if(EN <= (3.0*EIN[29]:
)) GO TO 431
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
# SINGLET DISSOCIATION AT 10.960 EV     BEF SCALING F=.047800
  431 if(EN <= (EIN[30])) GO TO 432
      QIN[30][I]=0.047800/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])
      if(QIN[30][I]:
 < 0.0) QIN[30][I]=0.0
      if(EN <= (3.0*EIN[30]:
)) GO TO 432
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
# SINGLET DISSOCIATION AT 11.104 EV     BEF SCALING F=.048914
  432 if(EN <= (EIN[31])) GO TO 433
      QIN[31][I]=0.048914/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])
      if(QIN[31][I]:
 < 0.0) QIN[31][I]=0.0
      if(EN <= (3.0*EIN[31]:
)) GO TO 433
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
# SINGLET DISSOCIATION AT 11.248 EV     BEF SCALING F=.054353
  433 if(EN <= (EIN[32])) GO TO 434
      QIN[32][I]=0.054353/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])
      if(QIN[32][I]:
 < 0.0) QIN[32][I]=0.0
      if(EN <= (3.0*EIN[32]:
)) GO TO 434
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
# SINGLET DISSOCIATION AT 11.392 EV     BEF SCALING F=.061019
  434 if(EN <= (EIN[33])) GO TO 435
      QIN[33][I]=0.061019/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])
      if(QIN[33][I]:
 < 0.0) QIN[33][I]=0.0
      if(EN <= (3.0*EIN[33]:
)) GO TO 435
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
# SINGLET DISSOCIATION AT 11.732 EV     BEF SCALING F=.244430
  435 if(EN <= (EIN[34])) GO TO 436
      QIN[34][I]=0.244430/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])
      if(QIN[34][I]:
 < 0.0) QIN[34][I]=0.0
      if(EN <= (3.0*EIN[34]:
)) GO TO 436
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
# SINGLET DISSOCIATION AT 12.4   EV     BEF SCALING F=.284790
  436 if(EN <= (EIN[35])) GO TO 437
      QIN[35][I]=0.284790/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])
      if(QIN[35][I]:
 < 0.0) QIN[35][I]=0.0
      if(EN <= (2.0*EIN[35]:
)) GO TO 437
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
# SINGLET DISSOCIATION AT 13.0   EV     BEF SCALING F=.095973
  437 if(EN <= (EIN[36])) GO TO 438
      QIN[36][I]=0.095973/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])
      if(QIN[36][I]:
 < 0.0) QIN[36][I]=0.0
      if(EN <= (2.0*EIN[36]:
)) GO TO 438
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
# SINGLET DISSOCIATION AT 13.5   EV     BEF SCALING F=.090728
  438 if(EN <= (EIN[37])) GO TO 439
      QIN[37][I]=0.090728/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])
      if(QIN[37][I]:
 < 0.0) QIN[37][I]=0.0
      if(EN <= (2.0*EIN[37]:
)) GO TO 439
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
# SINGLET DISSOCIATION AT 14.1   EV     BEF SCALING F=.071357
  439 if(EN <= (EIN[38])) GO TO 440
      QIN[38][I]=0.071357/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])
      if(QIN[38][I]:
 < 0.0) QIN[38][I]=0.0
      if(EN <= (2.0*EIN[38]:
)) GO TO 440
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
# SINGLET DISSOCIATION AT 14.7   EV     BEF SCALING F=.074875
  440 if(EN <= (EIN[39])) GO TO 441
      QIN[39][I]=0.074875/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+E[3])
      if(QIN[39][I]:
 < 0.0) QIN[39][I]=0.0
      if(EN <= (2.0*EIN[39]:
)) GO TO 441
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
# SINGLET DISSOCIATION AT 15.3   EV     BEF SCALING F=.054542
  441 if(EN <= (EIN[40])) GO TO 442
      QIN[40][I]=0.054542/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+E[3])
      if(QIN[40][I]:
 < 0.0) QIN[40][I]=0.0
      if(EN <= (2.0*EIN[40]:
)) GO TO 442
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
# SINGLET DISSOCIATION AT 15.9   EV     BEF SCALING F=.022479
  442 if(EN <= (EIN[41])) GO TO 443
      QIN[41][I]=0.022479/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3])
      if(QIN[41][I]:
 < 0.0) QIN[41][I]=0.0
      if(EN <= (2.0*EIN[41]:
)) GO TO 443
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
# SINGLET DISSOCIATION AT 16.5   EV     BEF SCALING F=.008585
  443 if(EN <= (EIN[42])) GO TO 444
      QIN[42][I]=0.008585/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+E[3])
      if(QIN[42][I]:
 < 0.0) QIN[42][I]=0.0
      if(EN <= (2.0*EIN[42]:
)) GO TO 444
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
# SINGLET DISSOCIATION AT 17.1   EV     BEF SCALING F=.004524
  444 if(EN <= (EIN[43])) GO TO 445
      QIN[43][I]=0.004524/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+E[3])
      if(QIN[43][I]:
 < 0.0) QIN[43][I]=0.0
      if(EN <= (2.0*EIN[43]:
)) GO TO 445
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
# SINGLET DISSOCIATION AT 17.7   EV     BEF SCALING F=.004982
  445 if(EN <= (EIN[44])) GO TO 446
      QIN[44][I]=0.004982/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])
      if(QIN[44][I]:
 < 0.0) QIN[44][I]=0.0
      if(EN <= (2.0*EIN[44]:
)) GO TO 446
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
# SINGLET DISSOCIATION AT 18.5   EV     BEF SCALING F=.010130
  446 if(EN <= (EIN[45])) GO TO 447
      QIN[45][I]=0.010130/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      if(QIN[45][I]:
 < 0.0) QIN[45][I]=0.0
      if(EN <= (2.0*EIN[45]:
)) GO TO 447
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
# SINGLET DISSOCIATION AT 19.5   EV     BEF SCALING F=.013320
  447 if(EN <= (EIN[46])) GO TO 448
      QIN[46][I]=0.013320/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      if(QIN[46][I]:
 < 0.0) QIN[46][I]=0.0
      if(EN <= (2.0*EIN[46]:
)) GO TO 448
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
# SINGLET DISSOCIATION AT 20.5   EV     BEF SCALING F=.013310
  448 if(EN <= (EIN[47])) GO TO 449
      QIN[47][I]=0.013310/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+E[3])
      if(QIN[47][I]:
 < 0.0) QIN[47][I]=0.0
      if(EN <= (2.0*EIN[47]:
)) GO TO 449
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
# SINGLET DISSOCIATION AT 21.5   EV     BEF SCALING F=.010760
  449 if(EN <= (EIN[48])) GO TO 450
      QIN[48][I]=0.010760/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      if(QIN[48][I]:
 < 0.0) QIN[48][I]=0.0
      if(EN <= (2.0*EIN[48]:
)) GO TO 450
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
# SINGLET DISSOCIATION AT 22.5   EV     BEF SCALING F=.009797
  450 if(EN <= (EIN[49])) GO TO 451
      QIN[49][I]=0.009797/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      if(QIN[49][I]:
 < 0.0) QIN[49][I]=0.0
      if(EN <= (2.0*EIN[49]:
)) GO TO 451
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
# SINGLET DISSOCIATION AT 23.5   EV     BEF SCALING F=.009198
  451 if(EN <= (EIN[50])) GO TO 452
      QIN[50][I]=0.009198/(EIN[50]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[50]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[50]+E[3])
      if(QIN[50][I]:
 < 0.0) QIN[50][I]=0.0
      if(EN <= (2.0*EIN[50]:
)) GO TO 452
      PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])]
# SINGLET DISSOCIATION AT 24.5   EV     BEF SCALING F=.008312
  452 if(EN <= (EIN[51])) GO TO 453
      QIN[51][I]=0.008312/(EIN[51]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[51]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[51]+E[3])
      if(QIN[51][I]:
 < 0.0) QIN[51][I]=0.0
      if(EN <= (2.0*EIN[51]:
)) GO TO 453
      PEQIN[51][I]=PEQEL[2][(I-IOFFN[51])]
# SINGLET DISSOCIATION AT 25.5   EV     BEF SCALING F=.007139
  453 if(EN <= (EIN[52])) GO TO 454
      QIN[52][I]=0.007139/(EIN[52]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[52]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[52]+E[3])
      if(QIN[52][I]:
 < 0.0) QIN[52][I]=0.0
      if(EN <= (2.0*EIN[52]:
)) GO TO 454
      PEQIN[52][I]=PEQEL[2][(I-IOFFN[52])]
# SINGLET DISSOCIATION AT 26.5   EV     BEF SCALING F=.004715
  454 if(EN <= (EIN[53])) GO TO 455
      QIN[53][I]=0.004715/(EIN[53]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[53]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[53]+E[3])
      if(QIN[53][I]:
 < 0.0) QIN[53][I]=0.0
      if(EN <= (2.0*EIN[53]:
)) GO TO 455
      PEQIN[53][I]=PEQEL[2][(I-IOFFN[53])]
# SINGLET DISSOCIATION AT 27.5   EV     BEF SCALING F=.002137
  455 if(EN <= (EIN[54])) GO TO 456
      QIN[54][I]=0.002137/(EIN[54]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[54]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[54]+E[3])
      if(QIN[54][I]:
 < 0.0) QIN[54][I]=0.0
      if(EN <= (2.0*EIN[54]:
)) GO TO 456
      PEQIN[54][I]=PEQEL[2][(I-IOFFN[54])]
# SINGLET DISSOCIATION AT 28.5   EV     BEF SCALING F=.000662
  456 if(EN <= (EIN[55])) GO TO 457
      QIN[55][I]=0.000662/(EIN[55]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[55]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[55]+E[3])
      if(QIN[55][I]:
 < 0.0) QIN[55][I]=0.0
      if(EN <= (2.0*EIN[55]:
)) GO TO 457
      PEQIN[55][I]=PEQEL[2][(I-IOFFN[55])]
  457 CONTINUE
# LOAD BREMSSTRAHLUNG X-SECTION
      QIN[56][I]=0.0
      QIN[57][I]=0.0
      if(EN <= 1000.):
 GO TO 800
      DO 780 J=2,NBRM
      if(EN <= EBRM[J]:
) GO TO 790
  780 CONTINUE
      J=NBREM
  790 A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A1=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[56][I]=math.exp(A*EN+B)*2.e-24
      QIN[57][I]=math.exp(A1*EN+B1)*6.e-24
  800 CONTINUE
#
#  LOAD NULL COLLISIONS
#
# WINTERS DISSOCIATION X-SECTION       REDUCED BY * 0.9
c WINTERS  CHEM.PHYS. 36(1979)353
      QNULL[1][I]=0.0
      if(EN <= XNUL1[1]:
) GO TO 805
      if(EN > XNUL1(NUL1):
) GO TO 803
      DO 801 J=2,NUL1
      if(EN <= XNUL1[J]:
) GO TO 802
  801 CONTINUE
      J=NUL1
  802 A=(YNUL1[J]-YNUL1[J-1])/(XNUL1[J]-XNUL1[J-1])
      B=(XNUL1[J-1]*YNUL1[J]-XNUL1[J]*YNUL1[J-1])/(XNUL1[J-1]-XNUL1[J])
      QNULL[1][I]=(A*EN+B)*1.e-16*0.9*SCLN[1]    
      GO TO 805
# SCALE BY 1/E ABOVE XNUL1(NUL1)) EV
  803 QNULL[1][I]=YNUL1(NUL1)*(XNUL1(NUL1)/EN)*1.e-16*0.9*SCLN[1]    
#
# LIGHT EMISSION FROM H ALPHA   
#  MOHLMANN AND DE HEER  CHEM.PHYS.19(1979)233 
#  
  805 QNULL[2][I]=0.0
      if(EN <= XNUL2[1]:
) GO TO 810
      if(EN > XNUL2(NUL2):
) GO TO 808
      DO 806 J=2,NUL2
      if(EN <= XNUL2[J]:
) GO TO 807
  806 CONTINUE
      J=NUL2
  807 A=(YNUL2[J]-YNUL2[J-1])/(XNUL2[J]-XNUL2[J-1])
      B=(XNUL2[J-1]*YNUL2[J]-XNUL2[J]*YNUL2[J-1])/(XNUL2[J-1]-XNUL2[J])
      QNULL[2][I]=(A*EN+B)*1.e-16*SCLN[2]
      GO TO 810
# SCALE BY 1/E ABOVE XNUL2(NUL2)) EV
  808 QNULL[2][I]=YNUL2(NUL2)*(XNUL2(NUL2)/EN)*1.e-16*SCLN[2]  
#  
# LIGHT EMISSION FROM CH2(A2DELTA - X2PI)
#  MOHLMANN AND DE HEER  CHEM.PHYS.19(1979)233 
#  
  810 QNULL[3][I]=0.0
      if(EN <= XNUL3[1]:
) GO TO 815
      if(EN > XNUL3(NUL3):
) GO TO 813
      DO 811 J=2,NUL3
      if(EN <= XNUL3[J]:
) GO TO 812
  811 CONTINUE
      J=NUL3
  812 A=(YNUL3[J]-YNUL3[J-1])/(XNUL3[J]-XNUL3[J-1])
      B=(XNUL3[J-1]*YNUL3[J]-XNUL3[J]*YNUL3[J-1])/(XNUL3[J-1]-XNUL3[J])
      QNULL[3][I]=(A*EN+B)*1.e-16*SCLN[3]
      GO TO 815
# SCALE BY 1/E ABOVE XNUL3(NUL3)) EV
  813 QNULL[3][I]=YNUL3(NUL3)*(XNUL3(NUL3)/EN)*1.e-16*SCLN[3]    
#
  815 CONTINUE
      SUMEXC=0.0
      DO 850 J=1,NIN
  850 SUMEXC=SUMEXC+QIN[J][I]
      SUMION=0.0
      DO 851 J=1,NION
  851 SUMION=SUMION+QION[J][I]
      SUMATT=0.0
#     DO 852 J=1,NATT
# 852 SUMATT=SUMATT+QATT[J][I]
      SUMINEL=SUMEXC+SUMION+SUMATT
c     WRITE(6,888) EN,SUMEXC,SUMION,SUMINEL
c 888 print(' EN=','%.3f' %,' SUMEXC=','%.3f' %,' SUMION=','%.3f' %,'SUMINEL=',
c    /'%.3f' %)
 1000 CONTINUE                                                          
#  SAVE COMPUTE TIME 
      DO 1010 K=1,NIN
      if(EFINAL <= EIN[K]:
) :
       NIN=K-1
       GO TO 1011
      # endif
 1010 CONTINUE
 1011 CONTINUE
      if(EFINAL > 1000.):
 NIN=57
#                                      
      return  
      # end  
def GAS10(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]       
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      #
      DIMENSION XEN(166),YMT(166),YEL(166),YEPS(166),XION[45],YIONG[45],YIONC[45],XION1[45],YION1[45],XION2[45],YION2[45],XION3[45],YION3[45],XION4[45],YION4[45],XION5[45],YION5[45],XION6[44],YION6[44],XION7[44],YION7[44],XION8[44],YION8[44],XION9[44],YION9[44],XION10[44],YION10[44],XION11[43],YION11[43],XION12[41],YION12[41],XION13[41],YION13[41],XION14[40],YION14[40],XION15[39],YION15[39],XION16[39],YION16[39],XION17[39],YION17[39],XION18[38],YION18[38],XION19[39],YION19[39],XION20[38],YION20[38],XION21[36],YION21[36],XION22[36],YION22[36],XION23[36],YION23[36],XION24(83),YION24(83),XATT1[9],YATT1[9],XATT2[9],YATT2[9],  XVIB1[25],YVIB1[25],XVIB2[24],YVIB2[24],XVIB3[25],YVIB3[25],      XVIB4[17],YVIB4[17],XTR1[14],YTR1[14],XTR2[11],YTR2[11],XTR3[11],YTR3[11],XTR4[11],YTR4[11],IOFFION[24],IOFFN(250)
      DIMENSION XNUL1[14],YNUL1[14],XNUL2[14],YNUL2[14]
      DIMENSION Z1T[25],Z6T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10]
      CHARACTER*25 NAME                                                 
      XEN=[0.00,0.001,0.002,0.003,0.004,0.005,0.007,0.01,0.014,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,                0.13,0.14,0.16,0.18,0.20,0.22,0.24,0.27,0.30,0.35,0.40,0.50,0.60,0.80,1.00,1.40,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.00,7.50,8.50,10.0,12.5,15.0,17.5,20.0,25.0,30.0,35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MT : ABOVE 250EV FROM THEORY
      #              BELOW 250EV FIT TO TRANSPORT DATA
      YMT=[50.9,50.9,42.6,37.0,33.3,29.6,25.5,20.8,18.0,15.3,13.1,11.6,10.4,9.08,7.79,6.36,5.03,3.61,2.85,2.52,2.47,2.47,2.75,3.23,3.94,4.80,5.40,6.45,7.35,8.35,9.07,10.05,10.9,11.8,12.3,12.8,13.6,14.4,15.7,17.5,19.5,23.3,27.2,29.0,29.0,28.0,25.5,21.5,18.5,17.0,15.5,12.8,11.0,9.50,8.40,6.90,5.80,5.00,4.40,4.00,3.60,2.85,2.27,1.85,1.59,1.22,.921,.725,.587,.486,.410,.304,.236,.188,.154,.129,.0878,.0639,.0488,.0386,.0260,.0188,.0143,.0112,9.08e-3,7.51e-3,5.41e-3,4.09e-3,3.21e-3,2.59e-3,2.14e-3,1.43e-3,1.03e-3,7.76e-4,6.08e-4,4.06e-4,2.92e-4,2.21e-4,1.74e-4,1.41e-4,1.17e-4,8.42e-5,6.41e-5,5.06e-5,4.12e-5,3.43e-5,2.33e-5,1.71e-5,1.32e-5,1.06e-5,7.32e-6,5.45e-6,4.26e-6,3.46e-6,2.87e-6,2.44e-6,1.84e-6,1.45e-6,1.19e-6,9.91e-7,8.44e-7,6.04e-7,4.55e-7,3.58e-7,2.90e-7,2.03e-7,1.51e-7,1.17e-7,9.36e-8,7.68e-8,6.42e-8,4.70e-8,3.60e-8,2.85e-8,2.31e-8,1.92e-8,1.29e-8,9.27e-9,7.01e-9,5.49e-9,3.64e-9,2.60e-9,1.95e-9,1.52e-9,1.22e-9,9.98e-10,7.06e-10,5.25e-10,4.06e-10,3.23e-10,2.63e-10,1.70e-10,1.19e-10,8.76e-11,6.72e-11,4.31e-11,3.00e-11,2.20e-11,1.69e-11,1.33e-11,1.08e-11,7.51e-12,5.52e-12,4.23e-12,3.34e-12,2.71e-12]
      # ELASTIC: ABOVE 150EV FROM THEORY 
      #            BETWEEN 0.5 AND 150 EV FROM CONSISTENCY IN TOTAL X-SECTION
      #           BELOW 0.5EV SIMILAR TO MERZ AND  LINDER
      YEL=[50.9,50.9,42.6,37.0,33.0,29.6,25.5,20.8,18.4,16.4,14.2,12.6,11.4,10.5,9.70,9.00,8.30,7.70,7.10,6.60,6.20,5.80,5.50,6.15,6.85,7.60,8.20,9.00,9.70,10.5,11.3,12.1,12.7,13.1,14.1,15.5,17.4,18.7,20.5,22.0,24.6,30.8,37.7,41.2,42.9,44.6,42.8,38.5,35.8,33.4,31.3,27.5,24.7,22.8,21.3,19.1,17.2,15.5,14.0,13.0,11.9,9.90,8.50,7.57,6.86,5.80,5.05,4.48,4.03,3.67,3.37,2.90,2.55,2.27,2.05,1.87,1.53,1.30,1.12,.993,.805,.677,.585,.515,.460,.416,.349,.301,.264,.236,.213,.172,.145,.125,.110,.0896,.0758,.0659,.0585,.0527,.0480,.0411,.0362,.0334,.0296,.0273,.0231,.0204,.0184,.0169,.0149,.0136,.0127,.0120,.0114,.0110,.0104,.00997,.00970,.00944,.00926,.00895,.00877,.00864,.00855,.00844,.00838,.00833,.00831,.00829,.00827,.00825,.00824,.00823,.00822,.00822,.00821,.00821,.00821,.00820,.00820,.00820,.00820,23*0.00820]
      YEPS=[1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,.96740,.89959,.88412,.88129,.86888,.79880,.70972,.57649,.44800,.29459,.22957,.21203,.22682,.25233,.32703,.35433,.41118,.47945,.51353,.58989,.64598,.69856,.70909,.74912,.78931,.85180,.80991,.74224,.67932,.66312,.65727,.69887,.69494,.66427,.59639,.57278,.53606,.47475,.43564,.39174,.34508,.33665,.32195,.29117,.27113,.24366,.22319,.19428,.17440,.16276,.15632,.15128,.14738,.13657,.12181,.10656,.09845,.08527,.06923,.05829,.05019,.04390,.039014,.031780,.026828,.023104,.020285,.018120,.014236,.011650,9.981e-3,8.631e-3,6.832e-3,5.656e-3,4.828e-3,4.180e-3,3.711e-3,3.327e-3,2.765e-3,2.358e-3,2.063e-3,1.824e-3,1.642e-3,1.311e-3,1.089e-3,9.288e-4,8.106e-4,6.428e-4,5.323e-4,4.534e-4,3.948e-4,3.495e-4,3.140e-4,2.573e-4,2.179e-4,1.824e-4,1.657e-4,1.475e-4,1.151e-4,9.342e-5,7.843e-5,6.746e-5,5.133e-5,4.090e-5,3.356e-5,2.837e-5,2.439e-5,2.122e-5,1.653e-5,1.332e-5,1.105e-5,9.308e-6,7.972e-6,5.738e-6,4.306e-6,3.371e-6,2.711e-6,1.867e-6,1.365e-6,1.043e-6,8.219e-7,6.658e-7,5.504e-7,3.946e-7,2.968e-7,2.313e-7,1.849e-7,1.517e-7,9.933e-8,6.983e-8,5.185e-8,4.003e-8,2.586e-8,1.810e-8,1.334e-8,1.025e-8,8.120e-9,6.566e-9,4.555e-9,3.332e-9,2.541e-9,1.997e-9,1.608e-9,1.016e-9,6.98e-10,5.06e-10,3.83e-10,2.40e-10,1.64e-10,1.19e-10,9.0D-11,7.0D-11,5.6D-11,3.8D-11,2.8D-11,2.1D-11,1.6D-11,1.3D-11]
      # GROSS IONISATION X-SECTION AVERAGE OF 1) WANG AND VIDAL 
      #  And 2) TAWARA AND NISHIMURA
      # ABOVE 2KEV USE SCHRAM NORMALISED TO 2KEV POINT OF TAWARA
      # ABOVE 10KEV USE UPDATED FIT TO RIEKE AND PREPJCHAL WITH CORRECTED
      # IONISATION OSCILLATOR STRENGTH
      #  
      XION=[11.12,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      # GROSS IONISATION
      YIONG=[0.00,.206,1.14,2.30,3.31,5.21,6.47,7.37,8.00,8.54,9.22,9.79,10.09,10.20,10.24,10.23,9.90,9.36,8.84,8.35,7.80,6.84,6.25,5.78,5.26,4.93,4.33,3.99,3.67,3.27,3.05,2.64,2.27,2.06,1.88,1.57,1.35,1.19,1.06,.887,.764,.673,.603,.548,.5024]
      # COUNTING IONISATION
      YIONC=[0.00,.206,1.14,2.30,3.31,5.21,6.47,7.32,7.81,8.00,8.43,8.83,9.019,9.118,9.154,9.145,8.85,8.37,7.90,7.46,6.97,6.11,5.59,5.17,4.70,4.41,3.87,3.57,3.28,2.92,2.73,2.36,2.03,1.84,1.68,1.40,1.21,1.06,.952,.793,.683,.602,.539,.490,.4491]
      # BREAKUP CHANNELS FROM SCALED WANG AND VIDAL CORRECTED FOR DISSOCIATION
      # FROM ++ STATES
      #
      #  C3H8+
      XION1=[11.11,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION1=[0.00,.055,.213,.337,.456,.722,.854,.877,.960,.920,.931,.964,.936,.945,.949,.948,.917,.867,.819,.773,.722,.634,.579,.535,.487,.457,.401,.370,.340,.303,.282,.245,.210,.191,.174,.145,.125,.110,.0987,.0822,.0708,.0624,.0559,.0508,.0465]
      #  C3H7+
      XION2=[11.55,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION2=[0.00,.020,.126,.219,.295,.468,.579,.634,.649,.634,.646,.662,.666,.673,.675,.675,.653,.617,.583,.551,.514,.451,.412,.381,.347,.325,.286,.263,.242,.216,.201,.174,.150,.136,.124,.103,.0893,.0782,.0702,.0585,.0504,.0444,.0398,.0361,.0331]
      #  C3H6+ 
      XION3=[11.75,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION3=[0.00,.003,.031,.051,.071,.113,.140,.153,.157,.153,.156,.160,.161,.162,.163,.163,.157,.149,.140,.133,.124,.109,.0993,.0919,.0836,.0784,.0688,.0634,.0583,.0520,.0485,.0420,.0361,.0327,.0299,.0249,.0215,.0188,.0169,.0141,.0121,.0107,.00958,.00871,.00798]
      #  C2H4+
      XION4=[11.75,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION4=[0.00,.027,.257,.444,.604,.957,1.188,1.298,1.330,1.300,1.324,1.356,1.366,1.379,1.385,1.383,1.339,1.266,1.195,1.129,1.055,.9248,.8451,.7816,.7112,.6666,.5855,.5396,.4963,.4421,.4123,.3570,.3069,.2785,.2543,.2118,.1830,.1603,.1440,.1200,.1033,.0911,.0815,.0741,.0679]
      #  C2H5+
      XION5=[11.91,12.0,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION5=[0.00,.016,.394,.684,.954,1.512,1.877,2.050,2.100,2.053,2.091,2.141,2.156,2.178,2.186,2.184,2.114,1.998,1.887,1.783,1.665,1.460,1.334,1.234,1.123,1.053,.9245,.8519,.7836,.6981,.6511,.5637,.4846,.4397,.4015,.3344,.2890,.2532,.2274,.1894,.1631,.1438,.1287,.1170,.1073]
      #  C3H5+
      XION6=[13.48,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION6=[0.00,.044,.107,.163,.259,.321,.351,.359,.351,.358,.366,.369,.373,.374,.374,.362,.342,.323,.305,.285,.250,.228,.211,.192,.180,.158,.146,.134,.119,.111,.0964,.0829,.0752,.0687,.0572,.0494,.0433,.0389,.0324,.0279,.0246,.0220,.0200,.0184]
      #  CH3+ 
      XION7=[13.65,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION7=[0.00,.019,.049,.078,.123,.153,.167,.171,.167,.170,.174,.175,.177,.177,.177,.171,.162,.153,.145,.135,.118,.108,.100,.0911,.0854,.0750,.0691,.0636,.0566,.0528,.0457,.0393,.0357,.0326,.0271,.0234,.0205,.0184,.0154,.0132,.0117,.0104,.00949,.00870]
      #  C3H4+
      XION8=[13.79,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION8=[0.00,.0061,.0171,.0270,.0406,.0525,.0670,.0672,.0674,.0686,.0702,.0708,.0715,.0718,.0717,.0694,.0656,.0620,.0585,.0547,.0479,.0438,.0405,.0369,.0346,.0304,.0280,.0257,.0229,.0214,.0185,.0159,.0144,.0132,.0110,.00949,.00831,.00747,.00622,.00536,.00472,.00423,.00384,.00352]
      #  C2H2+
      XION9=[14.1,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION9=[0.00,.013,.047,.078,.117,.151,.193,.223,.223,.226,.234,.229,.231,.232,.232,.224,.212,.200,.189,.177,.155,.142,.131,.119,.112,.0981,.0904,.0832,.0741,.0691,.0598,.0514,.0467,.0426,.0355,.0307,.0269,.0241,.0201,.173,.0153,.0137,.0124,.0114]
      #  C2H3+
      XION10=[14.5,15.0,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION10=[0.00,.038,.219,.387,.582,.742,.964,.987,.965,.983,1.006,1.013,1.024,1.028,1.027,.9934,.9392,.8870,.8379,.7826,.6863,.6272,.5800,.5278,.4947,.4345,.4004,.3683,.3281,.3060,.2649,.2278,.2067,.1887,.1572,.1358,.1190,.1069,.0890,.0767,.0676,.0605,.0550,.0504]
      #  C3H3+
      XION11=[16.5,17.5,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION11=[0.00,.125,.197,.312,.387,.423,.434,.424,.432,.442,.446,.450,.452,.451,.437,.413,.390,.368,.344,.302,.276,.255,.232,.218,.191,.176,.162,.144,.135,.116,.1001,.0909,.0830,.0691,.0597,.0523,.0470,.0391,.0337,.0297,.0266,.0242,.0222]
      #  H+
      XION12=[20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION12=[0.00,.00175,.00656,.00845,.00879,.00016,.00016,.00016,.0093,.0172,.0173,.0173,.0167,.0158,.0149,.0141,.0131,.0115,.0105,.00973,.00886,.00830,.00729,.00672,.00618,.00551,.00514,.00445,.00382,.00347,.00317,.00264,.00228,.00200,.00179,.00149,.00129,.00113,.00102,.000923,.000846]
      #  H2+ AND H3+
      XION13=[21.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION13=[0.00,.00070,.00246,.00455,.00527,.00685,.00710,.00784,.00916,.00925,.00929,.00928,.00898,.00849,.00802,.00758,.00708,.00621,.00567,.00524,.00477,.00447,.00393,.00362,.00333,.00297,.00277,.00240,.00206,.00187,.00171,.00142,.00123,.00108,.000966,.000805,.000693,.000611,.000547,.000497,.000456]
      #  CH2+
      XION14=[25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION14=[0.00,.0146,.0262,.0409,.0385,.0475,.0527,.0573,.0578,.0581,.0580,.0561,.0531,.0501,.0473,.0442,.0388,.0354,.0328,.0298,.0279,.0245,.0226,.0208,.0185,.0173,.0150,.0129,.0117,.0107,.00888,.00767,.00672,.00604,.00503,.00433,.00382,.00342,.00311,.00285]
      #  C3H2+
      XION15=[26.5,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION15=[0.00,.032,.067,.088,.113,.116,.121,.128,.123,.123,.119,.112,.106,.100,.0934,.0819,.0749,.0692,.0630,.0591,.0519,.0478,.0440,.0392,.0365,.0316,.0272,.0247,.0225,.0188,.0162,.0142,.0128,.0106,.00915,.00807,.00722,.00657,.00602]
      #  C3H+
      XION16=[29.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION16=[0.00,.0196,.0412,.0539,.0694,.0724,.0744,.0751,.0754,.0754,.0729,.0689,.0651,.0615,.0574,.0504,.0460,.0426,.0387,.0363,.0319,.0294,.0270,.0241,.0225,.0194,.0167,.0152,.0139,.0115,.00997,.00873,.00784,.00653,.00563,.00496,.00444,.00404,.00370]
      #  C2H+
      XION17=[30.4,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION17=[0.00,.0048,.0121,.0131,.0169,.0176,.0181,.0183,.0183,.0183,.0177,.0168,.0158,.0150,.0140,.0123,.0112,.0104,.00942,.00883,.00776,.00715,.00658,.00586,.00546,.00473,.00407,.00369,.00337,.00281,.00242,.00212,.00191,.00159,.00137,.00121,.00108,.000982,.000900]
      # ALL STABLE  ++ STATES
      XION18=[32.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION18=[0.00,.0062,.0178,.0262,.0321,.0369,.0372,.0374,.0374,.0362,.0342,.0323,.0305,.0285,.0250,.0228,.0211,.0192,.0180,.0158,.0146,.0134,.0119,.0111,.00964,.00829,.00752,.00687,.00572,.00494,.00433,.00389,.00324,.00279,.00246,.00220,.00200,.00183]
      #  ALL DISSOCIATING ++ STATES
      XION19=[32.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION19=[0.00,.0460,.1797,.5189,.7608,.9316,1.0718,1.0824,1.0867,1.0856,1.0506,.9933,.9381,.8861,.8277,.7258,.6633,.6134,.5582,.5232,.4595,.4235,.3895,.3470,.3236,.2802,.2409,.2186,.1996,.1662,.1436,.1258,.1130,.0941,.0811,.0715,.0640,.0582,.0533]
      #  CH+
      XION20=[36.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION20=[0.00,.0040,.0077,.0106,.0145,.0187,.0189,.0189,.0189,.0183,.0173,.0164,.0155,.0144,.0127,.0116,.0107,.00973,.00912,.00801,.00738,.00679,.00605,.00564,.00489,.00420,.00381,.00348,.00290,.00250,.00219,.00197,.00164,.00141,.00125,.00112,.00101,.000930]
      #  C+
      XION21=[39.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION21=[0.00,.00080,.00388,.00756,.00763,.00766,.00765,.00741,.00700,.00661,.00625,.00584,.00512,.00468,.00432,.00394,.00369,.00324,.00299,.00275,.00245,.00228,.00198,.00170,.00154,.00141,.00117,.00101,.000887,.000797,.000664,.000572,.000504,.000451,.000410,.000376]
      #  C2+
      XION22=[39.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION22=[0.00,.000054,.000264,.000515,.000520,.000522,.000521,.000504,.000477,.000450,.000425,.000397,.000348,.000318,.000295,.000268,.000251,.000221,.000203,.000187,.000167,.000155,.000135,.000116,.000105,.000096,.000080,.000069,.000060,.000054,.000045,.000039,.000034,.000031,.000028,.0000256]
      #  C3+ 
      XION23=[39.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.]
      YION23=[0.00,.00099,.00481,.00934,.00943,.00947,.00946,.00915,.00865,.00817,.00772,.00721,.00632,.00578,.00534,.00486,.00456,.00400,.00369,.00339,.00302,.00282,.00244,.00210,.00190,.00174,.00145,.00125,.00110,.00098,.00082,.00071,.00062,.00056,.00051,.000464]
# K-SHELL IONISATION X-SECTION CARBON (SCALED BY 3 IN def) 
      XION24=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.0D6,1.26D6,1.5D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.0D7,1.26D7,1.5D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.0D8,1.26D8,1.5D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.0D9]
      YION24=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
      #
      # CH3-  ATTACHMENT
      XATT1=[7.60,8.00,8.50,9.00,9.50,10.0,10.5,11.0,11.5]
      YATT1=[0.00,2.4D-6,1.1D-5,5.1D-5,6.0D-5,5.1D-5,1.1D-5,2.4D-6,0.0]
      # H- ATTACHMENT
      XATT2=[7.80,8.00,8.50,9.00,9.50,10.0,10.5,11.0,11.5]
      YATT2=[0.00,1.6D-5,7.2D-5,2.8D-4,4.0D-4,2.8D-4,7.2D-5,1.6D-5,0.0]
      #
      XVIB1=[.108,.125,0.14,0.15,.175,0.20,.225,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.50,8.50,10.0,12.5,15.0,20.0]             
      YVIB1=[0.00,.137,.222,.265,.312,.359,.368,.368,.333,.282,.248,.205,.162,.162,.197,.291,.432,.567,.731,.957,1.02,.787,.585,.475,.325]              
      XVIB2=[.173,0.18,0.19,0.20,.215,0.23,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.50,8.50,10.0,12.5,15.0,20.0]               
      YVIB2=[0.00,.085,.180,.248,.299,.325,.351,.368,.351,.325,.274,.222,.205,.214,.332,.493,.647,.835,1.09,1.16,.898,.665,.531,.370]                 
      XVIB3=[.363,0.38,0.40,.425,0.45,.475,0.50,0.55,0.60,0.65,0.70,0.80,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.50,10.0,12.5,15.0,20.0]                                   
      YVIB3=[0.00,.226,.314,.379,.420,.446,.465,.485,.493,.493,.489,.474,.437,.418,.456,.665,.950,1.23,1.65,2.00,1.70,1.32,1.02,0.80,0.56]                              
      XVIB4=[.519,1.00,1.25,1.50,2.00,2.50,3.00,3.50,4.00,5.00,6.00,7.50,8.50,10.0,12.5,15.0,20.0]             
      YVIB4=[0.00,.000,.005,.0075,.0163,.030,.0513,.080,.118,.218,.363,.613,.625,.500,.350,.269,.175]
      # EFFECTIVE TRIPLET LEVELS
      # NON DIPOLE LEVEL AT 6.60 EV
      XTR1=[6.60,7.15,7.70,8.00,8.70,9.70,10.7,11.7,13.7,15.7,18.7,21.7,25.7,29.7]
      YTR1=[0.00,.072,.216,.304,.384,.409,.424,.432,.424,.408,.352,.296,.216,.160] 
      # NON DIPOLE LEVEL AT 7.70 EV
      XTR2=[7.70,9.20,10.2,11.2,12.2,14.2,16.2,19.2,22.2,26.2,29.7]
      YTR2=[0.00,.164,.236,.265,.282,.295,.295,.275,.235,.175,.140]
      # NON DIPOLE LEVEL AT 9.60 EV
      XTR3=[9.60,10.6,11.6,12.6,13.6,16.6,19.6,22.6,26.6,29.6,34.6]
      YTR3=[0.00,.298,.614,.716,.810,.853,.853,.810,.702,.610,.464]    
      # NON DIPOLE LEVEL AT 26.0 EV
      XTR4=[26.0,27.0,28.0,29.0,30.0,33.0,36.0,39.0,43.0,46.0,51.0]
      YTR4=[0.00,1.43,2.95,3.44,3.89,4.08,4.08,3.89,3.37,2.93,2.22]    
      #                                      
      # BREMSSTRAHLUNG X-SECTION WITH CUT UNITS 10**-24
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      # LIGHT EMISSION FROM H ALPHA     
      #  MOHLMANN  CHEM PHYS 19(1977)233
      XNUL1=[18.0,20.0,40.0,60.0,80.0,100.,150.,200.,300.,500.,1000.,1300.,1700.,2000.]
      YNUL1=[0.0,.0019,.0073,.0140,.0162,.0178,.0181,.0144,.0093,.0053,.0025,.0019,.0014,.0012]
      # LIGHT EMISSION FROM CH2(A2DELTA -X2PI)
      #  MOHLMANN  CHEM PHYS 19(1977)233
      XNUL2=[16.0,20.0,40.0,60.0,80.0,100.,150.,200.,300.,500.,1000.,1300.,1700.,2000.]
      YNUL2=[0.0,.000,.0037,.0054,.0056,.0053,.0048,.0041,.0028,.0016,.0007,.0005,.0004,.0003]
      # --------------------------------------------------------------------- 
      # ----------------------------------------------------------------------
      # UPDATE OF PROPANE TO INCLUDE DISSOCIATIVE IONISATION AND
      # OSCILLATOR STRENGTH FOR NEUTRAL DISSOCIATION .
      # EXT# endED BASE TO HIGH ENERGY TO ALLOW USE IN DEGRAD
      # 
      #     NANISO=0
      if(NANISO == 0):
      :                                           
      NAME=' C3H8 2017   ISOTROPIC   '  
      else:
      NAME=' C3H8 2017  ANISOTROPIC  '
      # endif                  
      # ---------------------------------------------------------------------
      # BORN-BETHE CONSTANTS
      A0=0.52917720859e-08
      RY=13.60569193
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      BBCONST=16.00*API*A0*A0*RY*RY/EMASS2
      #
      # BORN BETHE FOR IONISATION
      AM2=10.52
      C=125.50
      # ARRAY SIZE
      NASIZE=4000
      #
      NION=24 
      NATT=2 
      NIN=64
      NNULL=2
      IONMODEL=1
      #
      NBREM=25
      DO 8 J=1,NIN
      IZBR[J]=0
      8 CONTINUE
      IZBR(NIN+1)=6
      IZBR(NIN+2)=1
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      # SET VIBRATIONAL ANGULAR DISTRIBUTIONS TO ANISOTROPIC
      DO 2 J=1,8
      2 KIN[J]=NANISO      
      # SET ANG DITRIBUTIONS FOR DISSOCIATIVE EXCITATIONS TO OKHRIMOVSKYY TYPE
      DO 31 J=9,NIN
      31 KIN[J]=2
      #
      NDATA=166                             
      NIONG=46  
      NION1=45
      NION2=45
      NION3=45
      NION4=45
      NION5=45
      NION6=44
      NION7=44
      NION8=44
      NION9=44
      NION10=44
      NION11=43
      NION12=41
      NION13=41
      NION14=40
      NION15=39
      NION16=39
      NION17=39
      NION18=38
      NION19=39
      NION20=38
      NION21=36
      NION22=36
      NION23=36
      NION24=83
      #                                                        
      NATT1=9 
      NATT2=9                                             
      NVIB1=25                                                          
      NVIB2=24                                                          
      NVIB3=25
      NVIB4=17
      NTR1=14
      NTR2=11
      NTR3=11                             
      NTR4=11                             
      NUL1=14
      NUL2=14      
      # SCALING OF NULL CROSS-SECTION
      SCLN[1]=1.0
      SCLN[2]=1.0
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(44.09652*AMU)                                     
      E[3]=11.05                                                      
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0
      #
      EION[1]=11.11
      EION[2]=11.55
      EION[3]=11.75
      EION[4]=11.75
      EION[5]=11.91
      EION[6]=13.48
      EION[7]=13.65
      EION[8]=13.79
      EION[9]=14.1
      EION[10]=14.5
      EION[11]=16.5
      EION[12]=20.0
      EION[13]=21.5
      EION[14]=25.0
      EION[15]=26.5
      EION[16]=29.0
      EION[17]=30.4
      EION[18]=32.0
      EION[19]=32.0
      EION[20]=36.0
      EION[21]=39.0
      EION[22]=39.0
      EION[23]=39.0
      EION[24]=285.0
      # OPAL BEATY
      SCLOBY=1.0
      DO 33 J=1,NION
      EOBY[J]=EION[J]*SCLOBY
      33 CONTINUE
      EOBY(NION)=EOBY(NION)*0.63
      #
      ESPLIT(1,1)=0.80*EION[2]
      ESPLIT(1,2)=0.58*EION[2]
      #
      DO 44 JK=1,23
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
      44 CONTINUE
      # DOUBLE CHARGE , ++ ION STATES ( EXTRA ELECTRON )
      NC0[18]=1
      EC0[18]=4.0
      NC0[19]=1
      EC0[19]=4.0 
      # FLUORESCENCE (KSHELL)
      LEGAS[24]=1
      ISHELL[24]=1
      NC0[24]=2
      EC0[24]=253.0
      WKLM[24]=0.0026
      EFL[24]=273.0
      NG1[24]=1
      EG1[24]=253.0
      NG2[24]=2
      EG2[24]=5.
      # OFFSET ENERGY FOR IONISATION ELECTRON ANGULAR DISTRIBUTION
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE      
      #
      EIN[1]=-0.036
      EIN[2]=0.036
      EIN[3]=-0.108                                            
      EIN[4]=0.108    
      EIN[5]=-0.173                                                  
      EIN[6]=0.173                                                      
      EIN[7]=0.363
      EIN[8]=0.519
      EIN[9]=6.60                                                      
      EIN[10]=7.65                                                      
      EIN[11]=7.70
      EIN[12]=7.95
      EIN[13]=8.25                                                      
      EIN[14]=8.55
      EIN[15]=8.85
      EIN[16]=9.15                                                      
      EIN[17]=9.45
      EIN[18]=9.60
      EIN[19]=9.75                                                      
      EIN[20]=10.05
      EIN[21]=10.35
      EIN[22]=10.65
      EIN[23]=10.9 
      EIN[24]=11.1 
      EIN[25]=11.3 
      EIN[26]=11.5 
      EIN[27]=11.7 
      EIN[28]=11.9 
      EIN[29]=12.1 
      EIN[30]=12.3
      EIN[31]=12.5
      EIN[32]=12.7
      EIN[33]=12.9
      EIN[34]=13.1
      EIN[35]=13.3
      EIN[36]=13.5
      EIN[37]=13.7
      EIN[38]=13.9
      EIN[39]=14.1
      EIN[40]=14.3
      EIN[41]=14.5
      EIN[42]=14.7
      EIN[43]=14.9
      EIN[44]=15.2
      EIN[45]=15.6
      EIN[46]=16.0
      EIN[47]=16.4
      EIN[48]=16.8
      EIN[49]=17.25
      EIN[50]=17.75
      EIN[51]=18.25
      EIN[52]=18.75
      EIN[53]=19.25
      EIN[54]=19.75
      EIN[55]=20.25
      EIN[56]=20.75
      EIN[57]=21.5
      EIN[58]=22.5 
      EIN[59]=23.5 
      EIN[60]=24.5 
      EIN[61]=25.5
      EIN[62]=26.0 
      EIN[63]=26.5 
      EIN[64]=27.5
      EIN(65)=0.0
      EIN(66)=0.0
      # OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      DO 3 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 3
      # endif
      651 CONTINUE
      3 CONTINUE
      #***********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # LEVELS THAT ARE DISSOCIATIVE DO NOT GIVE PENNING TRANSFERS
      DO 4 K=1,NIN
      DO 4 L=1,3
      4 PENFRA[L,K]=0.0
      # ENTER PENNING CONSTANTS IN PREVIOUS LINE
      if(IPEN == 0):
      GO TO 6
      # PRINT OUT PENNING CONSTANTS
      DO 5 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 5
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A25,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/) 
      5 CONTINUE 
      #***********************************************************************
      #

      6 SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC      ANISOTROPIC   PROPANE 2017          '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC        ISOTROPIC   PROPANE 2017          '
      # endif
      SCRPT[3]=' IONISATION    C3H8+               ELOSS=11.11    '
      SCRPT[4]=' IONISATION    C3H7+               ELOSS=11.55    '
      SCRPT[5]=' IONISATION    C3H6+               ELOSS=11.75    '
      SCRPT[6]=' IONISATION    C2H4+               ELOSS=11.75    '
      SCRPT[7]=' IONISATION    C2H5+               ELOSS=11.91    '
      SCRPT[8]=' IONISATION    C3H5+               ELOSS=13.48    '
      SCRPT[9]=' IONISATION    CH3+                ELOSS=13.65    '
      SCRPT[10]=' IONISATION    C3H4+               ELOSS=13.79    '
      SCRPT[11]=' IONISATION    C2H2+               ELOSS=14.1     '
      SCRPT[12]=' IONISATION    C2H3+               ELOSS=14.5     '
      SCRPT[13]=' IONISATION    C3H3+               ELOSS=16.5     '
      SCRPT[14]=' IONISATION    H+                  ELOSS=20.0     '
      SCRPT[15]=' IONISATION    H2+ AND H3+         ELOSS=21.5     '
      SCRPT[16]=' IONISATION    CH2+                ELOSS=25.0     '
      SCRPT[17]=' IONISATION    C3H2+               ELOSS=26.5     '
      SCRPT[18]=' IONISATION    C3H+                ELOSS=29.0     '
      SCRPT[19]=' IONISATION    C2H+                ELOSS=30.4     '
      SCRPT[20]=' IONISATION    ++ STATES STABLE    ELOSS=32.0     '
      SCRPT[21]=' IONISATION    ++ STATES DISSOC.   ELOSS=32.0     '
      SCRPT[22]=' IONISATION    CH+                 ELOSS=36.0     '
      SCRPT[23]=' IONISATION    C+                  ELOSS=39.0     '
      SCRPT[24]=' IONISATION    C2+                 ELOSS=39.0     '
      SCRPT[25]=' IONISATION    C3+                 ELOSS=39.0     '
      SCRPT[26]=' IONISATION  CARBON K-SHELL        ELOSS=285.0    ' 
      SCRPT[27]=' ATTACHMENT CH3-                                  '
      SCRPT[28]=' ATTACHMENT H-                                    '
      SCRPT[29]='                                                  '
      SCRPT[30]='                                                  '
      SCRPT[31]=' TORSION              SUPERELASTIC ELOSS= -0.036  '
      SCRPT[32]=' TORSION                           ELOSS=  0.036  '
      SCRPT[33]=' VIB ROCK AND STRETCH SUPERELASTIC ELOSS= -0.108  '
      SCRPT[34]=' VIB ROCK AND STRETCH              ELOSS=  0.108  '
      SCRPT[35]=' VIB DEprintION      SUPERELASTIC ELOSS= -0.173  '
      SCRPT[36]=' VIB DEprintION                   ELOSS=  0.173  '
      SCRPT[37]=' VIB STRETCH                       ELOSS=  0.363  '
      SCRPT[38]=' VIB HARMONICS                     ELOSS=  0.519  '
      SCRPT[39]=' TRIPLET DISSOCIATION              ELOSS=  6.60   '
      SCRPT[40]=' SINGLET DISSOC.    F=0.000339     ELOSS=  7.65   ' 
      SCRPT[41]=' TRIPLET DISSOCIATION              ELOSS=  7.70   '
      SCRPT[42]=' SINGLET DISSOC.    F=0.004660     ELOSS=  7.95   '
      SCRPT[43]=' SINGLET DISSOC.    F=0.012816     ELOSS=  8.25   '
      SCRPT[44]=' SINGLET DISSOC.    F=0.037747     ELOSS=  8.55   '
      SCRPT[45]=' SINGLET DISSOC.    F=0.081783     ELOSS=  8.85   '
      SCRPT[46]=' SINGLET DISSOC.    F=0.084248     ELOSS=  9.15   '
      SCRPT[47]=' SINGLET DISSOC.    F=0.090347     ELOSS=  9.45   '
      SCRPT[48]=' TRIPLET DISSOCIATION              ELOSS=  9.60   '
      SCRPT[49]=' SINGLET DISSOC.    F=0.098580     ELOSS=  9.75   '
      SCRPT[50]=' SINGLET DISSOC.    F=0.10415      ELOSS= 10.05   '
      SCRPT[51]=' SINGLET DISSOC.    F=0.11379      ELOSS= 10.35   '
      SCRPT[52]=' SINGLET DISSOC.    F=0.12674      ELOSS= 10.65   '
      SCRPT[53]=' SINGLET DISSOC.    F=0.096356     ELOSS= 10.9    '
      SCRPT[54]=' SINGLET DISSOC.    F=0.10387      ELOSS= 11.1    '
      SCRPT[55]=' SINGLET DISSOC.    F=0.10183      ELOSS= 11.3    '
      SCRPT[56]=' SINGLET DISSOC.    F=0.096718     ELOSS= 11.5    '
      SCRPT[57]=' SINGLET DISSOC.    F=0.090149     ELOSS= 11.7    '
      SCRPT[58]=' SINGLET DISSOC.    F=0.086661     ELOSS= 11.9    '
      SCRPT[59]=' SINGLET DISSOC.    F=0.086097     ELOSS= 12.1    '
      SCRPT[60]=' SINGLET DISSOC.    F=0.083324     ELOSS= 12.3    '
      SCRPT[61]=' SINGLET DISSOC.    F=0.079943     ELOSS= 12.5    '
      SCRPT[62]=' SINGLET DISSOC.    F=0.077210     ELOSS= 12.7    '
      SCRPT[63]=' SINGLET DISSOC.    F=0.070368     ELOSS= 12.9    '
      SCRPT[64]=' SINGLET DISSOC.    F=0.061365     ELOSS= 13.1    '
      SCRPT(65)=' SINGLET DISSOC.    F=0.053208     ELOSS= 13.3    '
      SCRPT(66)=' SINGLET DISSOC.    F=0.046320     ELOSS= 13.5    '
      SCRPT(67)=' SINGLET DISSOC.    F=0.042827     ELOSS= 13.7    '
      SCRPT(68)=' SINGLET DISSOC.    F=0.038898     ELOSS= 13.9    '
      SCRPT(69)=' SINGLET DISSOC.    F=0.035930     ELOSS= 14.1    '
      SCRPT(70)=' SINGLET DISSOC.    F=0.033632     ELOSS= 14.3    '
      SCRPT(71)=' SINGLET DISSOC.    F=0.030562     ELOSS= 14.5    '
      SCRPT(72)=' SINGLET DISSOC.    F=0.028559     ELOSS= 14.7    '
      SCRPT(73)=' SINGLET DISSOC.    F=0.027052     ELOSS= 14.9    '
      SCRPT(74)=' SINGLET DISSOC.    F=0.048051     ELOSS= 15.2    '
      SCRPT(75)=' SINGLET DISSOC.    F=0.036375     ELOSS= 15.6    '
      SCRPT(76)=' SINGLET DISSOC.    F=0.020165     ELOSS= 16.0    '
      SCRPT(77)=' SINGLET DISSOC.    F=0.010038     ELOSS= 16.4    '
      SCRPT(78)=' SINGLET DISSOC.    F=0.0054441    ELOSS= 16.8    '
      SCRPT(79)=' SINGLET DISSOC.    F=0.0050790    ELOSS= 17.25   '
      SCRPT(80)=' SINGLET DISSOC.    F=0.0057699    ELOSS= 17.75   '
      SCRPT(81)=' SINGLET DISSOC.    F=0.0072715    ELOSS= 18.25   '
      SCRPT(82)=' SINGLET DISSOC.    F=0.010296     ELOSS= 18.75   '
      SCRPT(83)=' SINGLET DISSOC.    F=0.014152     ELOSS= 19.25   '
      SCRPT(84)=' SINGLET DISSOC.    F=0.013698     ELOSS= 19.75   '
      SCRPT(85)=' SINGLET DISSOC.    F=0.010362     ELOSS= 20.25   '
      SCRPT(86)=' SINGLET DISSOC.    F=0.0088401    ELOSS= 20.75   '
      SCRPT(87)=' SINGLET DISSOC.    F=0.022195     ELOSS= 21.5    '
      SCRPT(88)=' SINGLET DISSOC.    F=0.0191721    ELOSS= 22.5    '
      SCRPT(89)=' SINGLET DISSOC.    F=0.011553     ELOSS= 23.5    '
      SCRPT(90)=' SINGLET DISSOC.    F=0.0089679    ELOSS= 24.5    '
      SCRPT(91)=' SINGLET DISSOC.    F=0.0064815    ELOSS= 25.5    '
      SCRPT(92)=' TRIPLET DISSOCIATION              ELOSS= 26.0    '
      SCRPT(93)=' SINGLET DISSOC.    F=0.0035484    ELOSS= 26.5    '
      SCRPT(94)=' SINGLET DISSOC.    F=0.0010872    ELOSS= 27.5    '
      SCRPT(95)=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT(96)=' BREMSSTRAHLUNG FROM HYDROGEN ATOM                '
      # NULL COLLISIONS
      SCRPTN[1]=' C3H8: LIGHT EMISSION : Halpha                    '
      SCRPTN[2]=' C3H8: LIGHT EMISSION : CH2(A2DELTA-X2PI)         '
      #
      # CALC LEVEL POPULATIONS
      APOP1=math.exp(EIN[1]/AKT)
      APOP2=math.exp(EIN[3]/AKT)
      APOP3=math.exp(EIN[5]/AKT)  
      #
      #     EN=-ESTEP/2.0                                      
      DO 1000 I=1,NSTEP
      EN=EG[I]
      ENLG=math.log(EN)                                              
      #     EN=EN+ESTEP    
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)           
      BETA2=BETA*BETA
      #                   
      DO 10 J=2,N       
      if(EN > 10.0):
      GO TO 21                                           
      if(EN <= XEN[J]:
      ) GO TO 20                                         
      10 CONTINUE                                                          
      J=N                                                          
      20 A=(YMT[J]-YMT[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YMT[J]-XEN[J]*YMT[J-1])/(XEN[J-1]-XEN[J])
      QMT=(A*EN+B)*1.e-16
      A=(YEL[J]-YEL[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEL[J]-XEN[J]*YEL[J-1])/(XEN[J-1]-XEN[J])
      QEL=(A*EN+B)*1.e-16
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=A*EN+B
      GO TO 30
      # USE LOG INTERPOLATION ABOVE 10 EV
      21 DO 22 J=2,NDATA
      if(EN <= XEN[J]:
      ) GO TO 23
      22 CONTINUE
      J=NDATA
      23 YXJ=math.log(YEL[J])
      YXJ1=math.log(YEL[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QEL=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YMT[J])
      YXJ1=math.log(YMT[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMT=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YEPS[J])
      YXJ1=math.log(YEPS[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      PQ2=math.exp(A*math.log(EN)+B)
      30 CONTINUE
      # EPSILON = 1-YEPS
      PQ2=1.00-PQ2
      PQ1=0.5+(QEL-QMT)/QEL
      # CALCULATE PQ1 AND PQ2
      if(NANISO == 0):
      PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QEL  
      if(NANISO == 0):
      Q[2][I]=QMT  
      #
      # IONISATION 
      # 
      Q[3][I]=0.0
      DO 40 L=1,NION
      QION(L,I)=0.00
      PEQION(L,I)=0.5
      if(NANISO == 2):
      PEQION(L,I)=0.0
      40 CONTINUE
      # CALCULATE GROSS AND COUNTING IONISATIONS
      # NOT USED: ONLY FOR COMPARISON TO TOTAL OF SUMMED IONISATION CHANNELS
      #
      #     GROSS AND COUNTING IONISATIONS:
      #
      if(EN <= EION[1]:
      ) GO TO 50
      if(EN > XION(NIONG):
      ) GO TO 43
      DO 41 J=2,NIONG
      if(EN <= XION[J]:
      ) GO TO 42
      41 CONTINUE
      J=NION
      42 A=(YIONG[J]-YIONG[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YIONG[J]-XION[J]*YIONG[J-1])/(XION[J-1]-XION[J])
      QIONG=(A*EN+B)*1.e-16
      A=(YIONC[J]-YIONC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YIONC[J]-XION[J]*YIONC[J-1])/(XION[J-1]-XION[J])
      QIONC=(A*EN+B)*1.e-16
      GO TO 50
      # USE BORN-BETHE ABOVE XION(NIONG) EV
      43 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QBB=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
      QIONC=QBB
      QIONG=QIONC/0.8939
      50 CONTINUE
      #
      #  C3H8+                                                                     
      if(EN <= EION[1]:
      ) GO TO 65         
      if(EN > XION1(NION1):
      ) GO TO 63
      DO 61 J=2,NION1                                                  
      if(EN <= XION1[J]:
      ) GO TO 62                                     
      61 CONTINUE                                                          
      J=NION1                                                           
      62 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])                    
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J]) 
      QION[1][I]=(A*EN+B)*1.e-16               
      GO TO 64 
      # USE BORN BETHE ABOVE XION1(NION1) EV
      63 QION[1][I]=QIONC*0.103628
      64 CONTINUE
      if(EN < (2.0*EION[1]:
      )) GO TO 65
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
      # C3H7+ 
      65 if(EN <= EION[2]) GO TO 70         
      if(EN > XION2(NION2):
      ) GO TO 68
      DO 66 J=2,NION2                                                  
      if(EN <= XION2[J]:
      ) GO TO 67                                     
      66 CONTINUE                                                          
      J=NION2                                                           
      67 A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])                    
      B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J]) 
      QION[2][I]=(A*EN+B)*1.e-16               
      GO TO 69
      # USE BORN BETHE ABOVE XION2(NION2) EV
      68 QION[2][I]=QIONC*0.073774
      69 CONTINUE
      if(EN < (2.0*EION[2]:
      )) GO TO 70
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      # C3H6+ 
      70 if(EN <= EION[3]) GO TO 75         
      if(EN > XION3(NION3):
      ) GO TO 73
      DO 71 J=2,NION3                                                  
      if(EN <= XION3[J]:
      ) GO TO 72                                     
      71 CONTINUE                                                          
      J=NION3                                                           
      72 A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])                    
      B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J]) 
      QION[3][I]=(A*EN+B)*1.e-16               
      GO TO 74
      # USE BORN BETHE ABOVE XION3(NION3) EV
      73 QION[3][I]=QIONC*0.017780
      74 CONTINUE
      if(EN < (2.0*EION[3]:
      )) GO TO 75
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
      # C2H4+ 
      75 if(EN <= EION[4]) GO TO 80         
      if(EN > XION4(NION4):
      ) GO TO 78
      DO 76 J=2,NION4                                                  
      if(EN <= XION4[J]:
      ) GO TO 77                                     
      76 CONTINUE                                                          
      J=NION4                                                           
      77 A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])                    
      B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J]) 
      QION[4][I]=(A*EN+B)*1.e-16               
      GO TO 79
      # USE BORN BETHE ABOVE XION4(NION4) EV
      78 QION[4][I]=QIONC*0.151263
      79 CONTINUE
      if(EN < (2.0*EION[4]:
      )) GO TO 80
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
      # C2H5+ 
      80 if(EN <= EION[5]) GO TO 85         
      if(EN > XION5(NION5):
      ) GO TO 83
      DO 81 J=2,NION5                                                  
      if(EN <= XION5[J]:
      ) GO TO 82                                     
      81 CONTINUE                                                          
      J=NION5                                                           
      82 A=(YION5[J]-YION5[J-1])/(XION5[J]-XION5[J-1])                    
      B=(XION5[J-1]*YION5[J]-XION5[J]*YION5[J-1])/(XION5[J-1]-XION5[J]) 
      QION[5][I]=(A*EN+B)*1.e-16
      GO TO 84               
      # USE BORN BETHE ABOVE XION5(NION5) EV
      83 QION[5][I]=QIONC*0.238836
      84 CONTINUE
      if(EN < (2.0*EION[5]:
      )) GO TO 85
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
      # C3H5+ 
      85 if(EN <= EION[6]) GO TO 90         
      if(EN > XION6(NION6):
      ) GO TO 88
      DO 86 J=2,NION6                                                  
      if(EN <= XION6[J]:
      ) GO TO 87                                     
      86 CONTINUE                                                          
      J=NION6                                                           
      87 A=(YION6[J]-YION6[J-1])/(XION6[J]-XION6[J-1])                    
      B=(XION6[J-1]*YION6[J]-XION6[J]*YION6[J-1])/(XION6[J-1]-XION6[J]) 
      QION[6][I]=(A*EN+B)*1.e-16               
      GO TO 89
      # USE BORN BETHE ABOVE XION6(NION6) EV
      88 QION[6][I]=QIONC*0.040867 
      89 CONTINUE
      if(EN < (2.0*EION[6]:
      )) GO TO 90
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])
      # CH3+
      90 if(EN <= EION[7]) GO TO 95         
      if(EN > XION7(NION7):
      ) GO TO 93
      DO 91 J=2,NION7                                                  
      if(EN <= XION7[J]:
      ) GO TO 92                                     
      91 CONTINUE                                                          
      J=NION7                                                           
      92 A=(YION7[J]-YION7[J-1])/(XION7[J]-XION7[J-1])                    
      B=(XION7[J-1]*YION7[J]-XION7[J]*YION7[J-1])/(XION7[J-1]-XION7[J]) 
      QION[7][I]=(A*EN+B)*1.e-16               
      GO TO 94
      # USE BORN BETHE ABOVE XION7(NION7) EV
      93 QION[7][I]=QIONC*0.019372
      94 CONTINUE
      if(EN < (2.0*EION[7]:
      )) GO TO 95
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
      # C3H4+
      95 if(EN <= EION[8]) GO TO 100         
      if(EN > XION8(NION8):
      ) GO TO 98
      DO 96 J=2,NION8                                                  
      if(EN <= XION8[J]:
      ) GO TO 97                                     
      96 CONTINUE                                                          
      J=NION8                                                           
      97 A=(YION8[J]-YION8[J-1])/(XION8[J]-XION8[J-1])                    
      B=(XION8[J-1]*YION8[J]-XION8[J]*YION8[J-1])/(XION8[J-1]-XION8[J]) 
      QION[8][I]=(A*EN+B)*1.e-16               
      GO TO 99
      # USE BORN BETHE ABOVE XION8(NION8) EV
      98 QION[8][I]=QIONC*0.007842
      99 CONTINUE
      if(EN < (2.0*EION[8]:
      )) GO TO 100
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
      # C2H2+ 
      100 if(EN <= EION[9]) GO TO 105         
      if(EN > XION9(NION9):
      ) GO TO 103
      DO 101 J=2,NION9                                                  
      if(EN <= XION9[J]:
      ) GO TO 102                                     
      101 CONTINUE                                                          
      J=NION9                                                           
      102 A=(YION9[J]-YION9[J-1])/(XION9[J]-XION9[J-1])                    
      B=(XION9[J-1]*YION9[J]-XION9[J]*YION9[J-1])/(XION9[J-1]-XION9[J]) 
      QION[9][I]=(A*EN+B)*1.e-16               
      GO TO 104
      # USE BORN BETHE ABOVE XION9(NION9) EV
      103 QION[9][I]=QIONC*0.025343
      104 CONTINUE
      if(EN < (2.0*EION[9]:
      )) GO TO 105
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
      # C2H3+
      105 if(EN <= EION[10]) GO TO 110         
      if(EN > XION10(NION10):
      ) GO TO 108
      DO 106 J=2,NION10                                                 
      if(EN <= XION10[J]:
      ) GO TO 107                                     
      106 CONTINUE                                                          
      J=NION10                                                          
      107 A=(YION10[J]-YION10[J-1])/(XION10[J]-XION10[J-1])                
      B=(XION10[J-1]*YION10[J]-XION10[J]*YION10[J-1])/(XION10[J-1]-XION10[J]) 
      QION[10][I]=(A*EN+B)*1.e-16               
      GO TO 109
      # USE BORN BETHE ABOVE XION10(NION10) EV
      108 QION[10][I]=QIONC*0.112253    
      109 CONTINUE
      if(EN < (2.0*EION[10]:
      )) GO TO 110
      PEQION[10][I]=PEQEL[2][(I-IOFFION[10]))
      # C3H3+
      110 if(EN <= EION[11]) GO TO 115         
      if(EN > XION11(NION11):
      ) GO TO 113
      DO 111 J=2,NION11                                                 
      if(EN <= XION11[J]:
      ) GO TO 112                                     
      111 CONTINUE                                                          
      J=NION11                                                          
      112 A=(YION11[J]-YION11[J-1])/(XION11[J]-XION11[J-1])                
      B=(XION11[J-1]*YION11[J]-XION11[J]*YION11[J-1])/(XION11[J-1]-XION11[J]) 
      QION[11][I]=(A*EN+B)*1.e-16               
      GO TO 114
      # USE BORN BETHE ABOVE XION11(NION11) EV
      113 QION[11][I]=QIONC*0.049359
      114 CONTINUE
      if(EN < (2.0*EION[11]:
      )) GO TO 115
      PEQION[11][I]=PEQEL[2][(I-IOFFION[11]))
      # H+
      115 if(EN <= EION[12]) GO TO 120         
      if(EN > XION12(NION12):
      ) GO TO 118
      DO 116 J=2,NION12                                                 
      if(EN <= XION12[J]:
      ) GO TO 117                                     
      116 CONTINUE                                                          
      J=NION12                                                          
      117 A=(YION12[J]-YION12[J-1])/(XION12[J]-XION12[J-1])                
      B=(XION12[J-1]*YION12[J]-XION12[J]*YION12[J-1])/(XION12[J-1]-XION12[J]) 
      QION[12][I]=(A*EN+B)*1.e-16               
      GO TO 119
      # USE BORN BETHE ABOVE XION12(NION12) EV
      118 QION[12][I]=QIONC*0.001884
      119 CONTINUE
      if(EN < (2.0*EION[12]:
      )) GO TO 120
      PEQION[12][I]=PEQEL[2][(I-IOFFION[12]))
      # H2+  AND H3+
      120 if(EN <= EION[13]) GO TO 125         
      if(EN > XION13(NION13):
      ) GO TO 123
      DO 121 J=2,NION13                                                 
      if(EN <= XION13[J]:
      ) GO TO 122                                     
      121 CONTINUE                                                          
      J=NION13                                                          
      122 A=(YION13[J]-YION13[J-1])/(XION13[J]-XION13[J-1])                
      B=(XION13[J-1]*YION13[J]-XION13[J]*YION13[J-1])/(XION13[J-1]-XION13[J]) 
      QION[13][I]=(A*EN+B)*1.e-16               
      GO TO 124
      # USE BORN BETHE ABOVE XION13(NION13) EV
      123 QION[13][I]=QIONC*0.001015
      124 CONTINUE
      if(EN < (2.0*EION[13]:
      )) GO TO 125
      PEQION[13][I]=PEQEL[2][(I-IOFFION[13]))
      # CH2+
      125 if(EN <= EION[14]) GO TO 130         
      if(EN > XION14(NION14):
      ) GO TO 128
      DO 126 J=2,NION14                                                 
      if(EN <= XION14[J]:
      ) GO TO 127                                     
      126 CONTINUE                                                          
      J=NION14                                                          
      127 A=(YION14[J]-YION14[J-1])/(XION14[J]-XION14[J-1])                
      B=(XION14[J-1]*YION14[J]-XION14[J]*YION14[J-1])/(XION14[J-1]-XION14[J]) 
      QION[14][I]=(A*EN+B)*1.e-16               
      GO TO 129
      # USE BORN BETHE ABOVE XION14(NION14) EV
      128 QION[14][I]=QIONC*0.006342
      129 CONTINUE
      if(EN < (2.0*EION[14]:
      )) GO TO 130
      PEQION[14][I]=PEQEL[2][(I-IOFFION[14]))
      # C3H2+
      130 if(EN <= EION[15]) GO TO 135         
      if(EN > XION15(NION15):
      ) GO TO 133
      DO 131 J=2,NION15                                                 
      if(EN <= XION15[J]:
      ) GO TO 132                                     
      131 CONTINUE                                                          
      J=NION15                                                          
      132 A=(YION15[J]-YION15[J-1])/(XION15[J]-XION15[J-1])                
      B=(XION15[J-1]*YION15[J]-XION15[J]*YION15[J-1])/(XION15[J-1]-XION15[J]) 
      QION[15][I]=(A*EN+B)*1.e-16               
      GO TO 134
      # USE BORN BETHE ABOVE XION15(NION15) EV
      133 QION[15][I]=QIONC*0.013401
      134 CONTINUE
      if(EN < (2.0*EION[15]:
      )) GO TO 135
      PEQION[15][I]=PEQEL[2][(I-IOFFION[15]))
      # C3H+
      135 if(EN <= EION[16]) GO TO 140         
      if(EN > XION16(NION16):
      ) GO TO 138
      DO 136 J=2,NION16                                                 
      if(EN <= XION16[J]:
      ) GO TO 137                                     
      136 CONTINUE                                                          
      J=NION16                                                          
      137 A=(YION16[J]-YION16[J-1])/(XION16[J]-XION16[J-1])                
      B=(XION16[J-1]*YION16[J]-XION16[J]*YION16[J-1])/(XION16[J-1]-XION16[J]) 
      QION[16][I]=(A*EN+B)*1.e-16               
      GO TO 139
      # USE BORN BETHE ABOVE XION16(NION16) EV
      138 QION[16][I]=QIONC*0.008240
      139 CONTINUE
      if(EN < (2.0*EION[16]:
      )) GO TO 140
      PEQION[16][I]=PEQEL[2][(I-IOFFION[16]))
      # C2H+
      140 if(EN <= EION[17]) GO TO 145         
      if(EN > XION17(NION17):
      ) GO TO 143
      DO 141 J=2,NION17                                                 
      if(EN <= XION17[J]:
      ) GO TO 142                                     
      141 CONTINUE                                                          
      J=NION17                                                          
      142 A=(YION17[J]-YION17[J-1])/(XION17[J]-XION17[J-1])                
      B=(XION17[J-1]*YION17[J]-XION17[J]*YION17[J-1])/(XION17[J-1]-XION17[J]) 
      QION[17][I]=(A*EN+B)*1.e-16               
      GO TO 144
      # USE BORN BETHE ABOVE XION17(NION17) EV
      143 QION[17][I]=QIONC*0.002004
      144 CONTINUE
      if(EN < (2.0*EION[17]:
      )) GO TO 145
      PEQION[17][I]=PEQEL[2][(I-IOFFION[17])]
      # ++ DOUBLE CHARGED STABLE IONS
      145 if(EN <= EION[18]) GO TO 150         
      if(EN > XION18(NION18):
      ) GO TO 148
      DO 146 J=2,NION18                                                 
      if(EN <= XION18[J]:
      ) GO TO 147                                     
      146 CONTINUE                                                          
      J=NION18                                                          
      147 A=(YION18[J]-YION18[J-1])/(XION18[J]-XION18[J-1])                
      B=(XION18[J-1]*YION18[J]-XION18[J]*YION18[J-1])/(XION18[J-1]-XION18[J]) 
      QION[18][I]=(A*EN+B)*1.e-16               
      GO TO 149
      # USE BORN BETHE ABOVE XION18(NION18) EV
      148 QION[18][I]=QIONC*0.004085
      149 CONTINUE
      if(EN < (2.0*EION[18]:
      )) GO TO 150
      PEQION[18][I]=PEQEL[2][(I-IOFFION[18])]
      # ++ DOUBLE CHARGED UNSTABLE IONS (DISSOCIATIVE)
      150 if(EN <= EION[19]) GO TO 155         
      if(EN > XION19(NION19):
      ) GO TO 153
      DO 151 J=2,NION19                                                 
      if(EN <= XION19[J]:
      ) GO TO 152                                     
      151 CONTINUE                                                          
      J=NION19                                                         
      152 A=(YION19[J]-YION19[J-1])/(XION19[J]-XION19[J-1])                
      B=(XION19[J-1]*YION19[J]-XION19[J]*YION19[J-1])/(XION19[J-1]-XION19[J]) 
      QION[19][I]=(A*EN+B)*1.e-16               
      GO TO 154
      # USE BORN BETHE ABOVE XION19(NION19) EV
      153 QION[19][I]=QIONC*0.118714
      154 CONTINUE
      if(EN < (2.0*EION[19]:
      )) GO TO 155
      PEQION[19][I]=PEQEL[2][(I-IOFFION[19])]
      # CH+
      155 if(EN <= EION[20]) GO TO 160         
      if(EN > XION20(NION20):
      ) GO TO 158
      DO 156 J=2,NION20                                                 
      if(EN <= XION20[J]:
      ) GO TO 157                                     
      156 CONTINUE                                                          
      J=NION20                                                         
      157 A=(YION20[J]-YION20[J-1])/(XION20[J]-XION20[J-1])                
      B=(XION20[J-1]*YION20[J]-XION20[J]*YION20[J-1])/(XION20[J-1]-XION20[J]) 
      QION[20][I]=(A*EN+B)*1.e-16               
      GO TO 159
      # USE BORN BETHE ABOVE XION20(NION20) EV
      158 QION[20][I]=QIONC*0.002070
      159 CONTINUE
      if(EN < (2.0*EION[20]:
      )) GO TO 160
      PEQION[20][I]=PEQEL[2][(I-IOFFION[20])]
      # C+ 
      160 if(EN <= EION[21]) GO TO 165         
      if(EN > XION21(NION21):
      ) GO TO 163
      DO 161 J=2,NION21                                                 
      if(EN <= XION21[J]:
      ) GO TO 162                                     
      161 CONTINUE                                                          
      J=NION21                                                         
      162 A=(YION21[J]-YION21[J-1])/(XION21[J]-XION21[J-1])                
      B=(XION21[J-1]*YION21[J]-XION21[J]*YION21[J-1])/(XION21[J-1]-XION21[J]) 
      QION[21][I]=(A*EN+B)*1.e-16               
      GO TO 164
      # USE BORN BETHE ABOVE XION21(NION21) EV
      163 QION[21][I]=QIONC*0.000837
      164 CONTINUE
      if(EN < (2.0*EION[21]:
      )) GO TO 165
      PEQION[21][I]=PEQEL[2][(I-IOFFION[21])]
      # C2+
      165 if(EN <= EION[22]) GO TO 170         
      if(EN > XION22(NION22):
      ) GO TO 168
      DO 166 J=2,NION22                                                 
      if(EN <= XION22[J]:
      ) GO TO 167                                     
      166 CONTINUE                                                          
      J=NION22                                                         
      167 A=(YION22[J]-YION22[J-1])/(XION22[J]-XION22[J-1])                
      B=(XION22[J-1]*YION22[J]-XION22[J]*YION22[J-1])/(XION22[J-1]-XION22[J]) 
      QION[22][I]=(A*EN+B)*1.e-16               
      GO TO 169
      # USE BORN BETHE ABOVE XION22(NION22) EV
      168 QION[22][I]=QIONC*0.000057
      169 CONTINUE
      if(EN < (2.0*EION[22]:
      )) GO TO 170
      PEQION[22][I]=PEQEL[2][(I-IOFFION[22])]
      # C3+
      170 if(EN <= EION[23]) GO TO 175         
      if(EN > XION23(NION23):
      ) GO TO 173
      DO 171 J=2,NION23                                                 
      if(EN <= XION23[J]:
      ) GO TO 172                                     
      171 CONTINUE                                                          
      J=NION23                                                         
      172 A=(YION23[J]-YION23[J-1])/(XION23[J]-XION23[J-1])                
      B=(XION23[J-1]*YION23[J]-XION23[J]*YION23[J-1])/(XION23[J-1]-XION23[J]) 
      QION[23][I]=(A*EN+B)*1.e-16               
      GO TO 174
      # USE BORN BETHE ABOVE XION23(NION23) EV
      173 QION[23][I]=QIONC*0.001034
      174 CONTINUE
      if(EN < (2.0*EION[23]:
      )) GO TO 175
      PEQION[23][I]=PEQEL[2][(I-IOFFION[23])]
      # CARBON K-SHELL 
      175 if(EN <= EION[24]) GO TO 180         
      DO 176 J=2,NION24                                                 
      if(EN <= XION24[J]:
      ) GO TO 177                                     
      176 CONTINUE                                                          
      J=NION24                                                          
      177 A=(YION24[J]-YION24[J-1])/(XION24[J]-XION24[J-1])                
      B=(XION24[J-1]*YION24[J]-XION24[J]*YION24[J-1])/(XION24[J-1]-XION24[J]) 
      # FACTOR 3 FOR 3 CARBON ATOMS
      QION[24][I]=3.0*(A*EN+B)*1.e-16               
      if(EN < (2.0*EION[24]:
      )) GO TO 180
      PEQION[24][I]=PEQEL[2][(I-IOFFION[24])]
      # CORRECTION TO TOTAL I0NISATION DUE TO SPLIT OFF KSHELL
      180 QSUM=0.00
      DO 181 L=1,23
      181 QSUM=QSUM+QION(L,I)
      if(QSUM == 0.0):
      GO TO 200
      FAC=(QSUM-QION[24][I])/QSUM
      DO 182 L=1,23
      182 QION(L,I)=QION(L,I)*FAC 
      #
      # DISSOCIATIVE ATTACHMENT TO CH3-
      #
      200 Q[4][I]=0.0
      QATT[1][I]=0.0
      if(EN <= XATT1[1]:
      ) GO TO 230                                     
      if(EN >= XATT1(NATT1):
      ) GO TO 230                                  
      DO 210 J=2,NATT1                                                  
      if(EN <= XATT1[J]:
      ) GO TO 220                                     
      210 CONTINUE                                                          
      J=NATT1                                                          
      220 A=(YATT1[J]-YATT1[J-1])/(XATT1[J]-XATT1[J-1])                    
      B=(XATT1[J-1]*YATT1[J]-XATT1[J]*YATT1[J-1])/(XATT1[J-1]-XATT1[J]) 
      QATT[1][I]=(A*EN+B)*1.e-16
      # DISSOCIATIVE ATTACHMENT  TO H-
      230 QATT[2][I]=0.0
      if(EN <= XATT2[1]:
      ) GO TO 300                                     
      if(EN >= XATT2(NATT2):
      ) GO TO 300                                  
      DO 240 J=2,NATT2                                                  
      if(EN <= XATT2[J]:
      ) GO TO 250                                     
      240 CONTINUE                                                          
      J=NATT2                                                          
      250 A=(YATT2[J]-YATT2[J-1])/(XATT2[J]-XATT2[J-1])                    
      B=(XATT2[J-1]*YATT2[J]-XATT2[J]*YATT2[J-1])/(XATT2[J-1]-XATT2[J]) 
      QATT[2][I]=(A*EN+B)*1.e-16
      #                                    
      300 Q[5][I]=0.0                                                        
      Q[6][I]=0.0                                                        
      # SET ZEROS 
      DO 301 L=1,NIN
      QIN(L,I)=0.00
      301 PEQIN(L,I)=0.00
      #          
      # SUPERELASTIC VIBRATION TORSION           ANISOTROPIC ABOVE 10EV
      if(EN <= 0.0):
      GO TO 302
      EFAC=math.sqrt(1.0-(EIN[1]/EN))
      QIN[1][I]=0.00536*math.log((EFAC+1.0)/(EFAC-1.0))/EN 
      QIN[1][I]=QIN[1][I]*APOP1/(1.0+APOP1)*1.e-16    
      if(EN > 10.0):
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1])]      #   VIBRATION TORSION                      ANISOTROPIC ABOVE 10EV
      302 if(EN <= EIN[2]) GO TO 303
      EFAC=math.sqrt(1.0-(EIN[2]/EN))
      QIN[2][I]=0.00536*math.log((1.0+EFAC)/(1.0-EFAC))/EN
      QIN[2][I]=QIN[2][I]*1.0/(1.0+APOP1)*1.e-16    
      if(EN > 10.0):
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2])]      #
      # VIBRATION SUPERELASTIC                   ANISOTROPIC ABOVE 10EV
      303 if(EN <= 0.0) GO TO 316
      if((EN+EIN[4]:
      ) > XVIB1(NVIB1)) GO TO 314 
      DO 312 J=2,NVIB1
      if((EN+EIN[4]:
      ) <= XVIB1[J]) GO TO 313
      312 CONTINUE
      J=NVIB1
      313 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J])
      QIN[3][I]=(EN+EIN[4])*(A*(EN+EIN[4])+B)/EN
      GO TO 315
      314 QIN[3][I]=YVIB1(NVIB1)*(XVIB1(NVIB1)/(EN+EIN[4]))**2
      315 QIN[3][I]=QIN[3][I]*APOP2/(1.0+APOP2)*1.e-16        
      if(EN > 10.0):
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3])]      #     
      # VIBRATION INELASTIC                    ANISOTROPIC ABOVE 10EV 
      316 if(EN <= EIN[4]) GO TO 321                   
      if(EN > XVIB1(NVIB1):
      ) GO TO 319                      
      DO 317 J=2,NVIB1                                                  
      if(EN <= XVIB1[J]:
      ) GO TO 318                                     
      317 CONTINUE                                                          
      J=NVIB1                                                           
      318 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN[4][I]=(A*EN+B)
      GO TO 320
      319 QIN[4][I]=YVIB1(NVIB1)*(XVIB1(NVIB1)/EN)**2
      320 QIN[4][I]=QIN[4][I]/(1.0+APOP2)*1.e-16           
      if(EN > 10.0):
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4])]   
      #               
      #  SUPERELASTIC VIBRATION                  ANISOTROPIC ABOVE 10EV                          
      321 if(EN <= 0.0) GO TO 326   
      if((EN+EIN[6]:
      ) > XVIB2(NVIB2)) GO TO 324                         
      DO 322 J=2,NVIB2
      if((EN+EIN[6]:
      ) <= XVIB2[J]) GO TO 323                             
      322 CONTINUE                                                          
      J=NVIB2                                                           
      323 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[5][I]=(EN+EIN[6])*(A*(EN+EIN[6])+B)/EN
      GO TO 325
      324 QIN[5][I]=YVIB2(NVIB2)*(XVIB2(NVIB2)/(EN+EIN[6]))**2
      325 QIN[5][I]=QIN[5][I]*APOP3/(1.0+APOP3)*1.e-16           
      if(EN > 10.0):
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5])]                
      #                                                       
      #  VIBRATION                              ANISOTROPIC ABOVE 10EV                          
      326 if(EN <= EIN[6]) GO TO 331  
      if(EN > XVIB2(NVIB2):
      ) GO TO 329                                  
      DO 327 J=2,NVIB2                                                  
      if(EN <= XVIB2[J]:
      ) GO TO 328                                      
      327 CONTINUE                                                          
      J=NVIB2                                                           
      328 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[6][I]=(A*EN+B)
      GO TO 330
      329 QIN[6][I]=YVIB2(NVIB2)*(XVIB2(NVIB2)/EN)**2
      330 QIN[6][I]=QIN[6][I]/(1.0+APOP3)*1.e-16          
      if(EN > 10.0):
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6])]            
      #                                                          
      # VIBRATION INELASTIC                 
      331 if(EN <= EIN[7]) GO TO 341 
      if(EN > XVIB3(NVIB3):
      ) GO TO 334 
      DO 332 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
      ) GO TO 333                                      
      332 CONTINUE                                                          
      J=NVIB3                                                           
      333 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[7][I]=(A*EN+B)        
      GO TO 335
      334 QIN[7][I]=YVIB3(NVIB3)*(XVIB3(NVIB3)/EN)**2
      335 QIN[7][I]=QIN[7][I]*1.e-16         
      if(EN > 10.0):
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7])]                  
      #                                                                       
      # VIBRATION INELASTIC                                               
      341 if(EN <= EIN[8]) GO TO 351    
      if(EN > XVIB4(NVIB4):
      ) GO TO 344
      DO 342 J=2,NVIB4                                                  
      if(EN <= XVIB4[J]:
      ) GO TO 343                                      
      342 CONTINUE                                                          
      J=NVIB4                                                           
      343 A=(YVIB4[J]-YVIB4[J-1])/(XVIB4[J]-XVIB4[J-1])                     
      B=(XVIB4[J-1]*YVIB4[J]-XVIB4[J]*YVIB4[J-1])/(XVIB4[J-1]-XVIB4[J]) 
      QIN[8][I]=(A*EN+B)           
      GO TO 345
      344 QIN[8][I]=YVIB4(NVIB4)*(XVIB4(NVIB4)/EN)**2
      345 QIN[8][I]=QIN[8][I]*1.e-16
      if(QIN[8][I]:
      < 0.0) QIN[8][I]=0.0
      if(EN > 10.0):
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8])]
      351 CONTINUE    
      #
      # EXCITATIONS
      #
      #  
      # EXCITATION TO TRIPLET AND SINGLET LEVELS
      #
      # FIRST TRIPLET AT  6.57 EV
      if(EN <= EIN[9]:
      ) GO TO 405
      if(EN > XTR1[NTR1]:
      ) GO TO 403                                   
      DO 401 J=2,NTR1                                              
      if(EN <= XTR1[J]:
      ) GO TO 402                                  
      401 CONTINUE                                                          
      J=NTR1                                       
      402 A=(YTR1[J]-YTR1[J-1])/(XTR1[J]-XTR1[J-1])                    
      B=(XTR1[J-1]*YTR1[J]-XTR1[J]*YTR1[J-1])/(XTR1[J-1]-XTR1[J])       
      QIN[9][I]=(A*EN+B)*1.e-16     
      GO TO 404
      # SCALE BY 1/E**2 ABOVE XTR1[NTR1] EV
      403 QIN[9][I]=YTR1[NTR1]*(XTR1[NTR1]/EN)**2*1.e-16
      404 if(EN <= (3.0*EIN[9])) GO TO 405
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9])]      #
      # SINGLET DISSOCIATION AT  7.65  EV     BEF SCALING F=.000339          
      405 if(EN <= (EIN[10])) GO TO 406
      QIN[10][I]=0.000339/(EIN[10]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[10]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[10]+E[3])
      if(QIN[10][I]:
      < 0.0) QIN[10][I]=0.0
      if(EN <= (3.0*EIN[10]:
      )) GO TO 406
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      # 
      # SECOND TRIPLET AT  7.67 EV                                   
      406 if(EN <= EIN[11]) GO TO 411
      if(EN > XTR2[NTR2]:
      ) GO TO 409  
      DO 407 J=2,NTR2                                                  
      if(EN <= XTR2[J]:
      ) GO TO 408                                      
      407 CONTINUE                                                          
      J=NTR2                                                           
      408 A=(YTR2[J]-YTR2[J-1])/(XTR2[J]-XTR2[J-1])                     
      B=(XTR2[J-1]*YTR2[J]-XTR2[J]*YTR2[J-1])/(XTR2[J-1]-XTR2[J]) 
      QIN[11][I]=(A*EN+B)*1.e-16
      GO TO 410
      # SCALE BY 1/E**2 ABOVE XTR2[NTR2] EV
      409 QIN[11][I]=YTR2[NTR2]*(XTR2[NTR2]/EN)**2*1.e-16
      410 if(EN <= (3.0*EIN[11])) GO TO 411
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      #
      # SINGLET DISSOCIATION AT  7.95  EV     BEF SCALING F=.004660
      411 if(EN <= (EIN[12])) GO TO 412
      QIN[12][I]=0.004660/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])
      if(QIN[12][I]:
      < 0.0) QIN[12][I]=0.0
      if(EN <= (3.0*EIN[12]:
      )) GO TO 412
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
      # SINGLET DISSOCIATION AT  8.25  EV     BEF SCALING F=.012816
      412 if(EN <= (EIN[13])) GO TO 413
      QIN[13][I]=0.012816/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[13]+E[3])
      if(QIN[13][I]:
      < 0.0) QIN[13][I]=0.0
      if(EN <= (3.0*EIN[13]:
      )) GO TO 413
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
      # SINGLET DISSOCIATION AT  8.55  EV     BEF SCALING F=.037747
      413 if(EN <= (EIN[14])) GO TO 414
      QIN[14][I]=0.037747/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[14]+E[3])
      if(QIN[14][I]:
      < 0.0) QIN[14][I]=0.0
      if(EN <= (3.0*EIN[14]:
      )) GO TO 414
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
      # SINGLET DISSOCIATION AT  8.85  EV     BEF SCALING F=.081783
      414 if(EN <= (EIN[15])) GO TO 415
      QIN[15][I]=0.081783/(EIN[15]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[15]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[15]+E[3])
      if(QIN[15][I]:
      < 0.0) QIN[15][I]=0.0
      if(EN <= (3.0*EIN[15]:
      )) GO TO 415
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
      # SINGLET DISSOCIATION AT  9.15  EV     BEF SCALING F=.084248
      415 if(EN <= (EIN[16])) GO TO 416
      QIN[16][I]=0.084248/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])
      if(QIN[16][I]:
      < 0.0) QIN[16][I]=0.0
      if(EN <= (3.0*EIN[16]:
      )) GO TO 416
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
      # SINGLET DISSOCIATION AT  9.45  EV     BEF SCALING F=.090347
      416 if(EN <= (EIN[17])) GO TO 422
      QIN[17][I]=0.090347/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])
      if(QIN[17][I]:
      < 0.0) QIN[17][I]=0.0
      if(EN <= (3.0*EIN[17]:
      )) GO TO 422
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
      #
      # THIRD TRIPLET AT 9.59 EV                                   
      422 if(EN <= EIN[18]) GO TO 417
      if(EN > XTR3[NTR3]:
      ) GO TO 425  
      DO 423 J=2,NTR3                                                  
      if(EN <= XTR3[J]:
      ) GO TO 424                                      
      423 CONTINUE                                                          
      J=NTR3                                                           
      424 A=(YTR3[J]-YTR3[J-1])/(XTR3[J]-XTR3[J-1])                     
      B=(XTR3[J-1]*YTR3[J]-XTR3[J]*YTR3[J-1])/(XTR3[J-1]-XTR3[J]) 
      QIN[18][I]=(A*EN+B)*1.e-16
      GO TO 426
      # SCALE BY 1/E**2 ABOVE XTR3[NTR3] EV
      425 QIN[18][I]=YTR3[NTR3]*(XTR3[NTR3]/EN)**2*1.e-16     
      426 if(EN <= (3.0*EIN[18])) GO TO 417
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      #
      # SINGLET DISSOCIATION AT  9.75  EV     BEF SCALING F=.098580
      417 if(EN <= (EIN[19])) GO TO 418
      QIN[19][I]=0.098580/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])
      if(QIN[19][I]:
      < 0.0) QIN[19][I]=0.0
      if(EN <= (3.0*EIN[19]:
      )) GO TO 418
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
      # SINGLET DISSOCIATION AT  10.05 EV     BEF SCALING F=.10415 
      418 if(EN <= (EIN[20])) GO TO 419
      QIN[20][I]=0.104150/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])
      if(QIN[20][I]:
      < 0.0) QIN[20][I]=0.0
      if(EN <= (3.0*EIN[20]:
      )) GO TO 419
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      # SINGLET DISSOCIATION AT  10.35 EV     BEF SCALING F=.11379 
      419 if(EN <= (EIN[21])) GO TO 420
      QIN[21][I]=0.113790/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])
      if(QIN[21][I]:
      < 0.0) QIN[21][I]=0.0
      if(EN <= (3.0*EIN[21]:
      )) GO TO 420
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
      # SINGLET DISSOCIATION AT  10.65 EV     BEF SCALING F=.12674 
      420 if(EN <= (EIN[22])) GO TO 421
      QIN[22][I]=0.126740/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+E[3])
      if(QIN[22][I]:
      < 0.0) QIN[22][I]=0.0
      if(EN <= (3.0*EIN[22]:
      )) GO TO 421
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
      # SINGLET DISSOCIATION AT  10.9  EV     BEF SCALING F=.096356
      421 if(EN <= (EIN[23])) GO TO 427
      QIN[23][I]=0.096356/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+E[3])
      if(QIN[23][I]:
      < 0.0) QIN[23][I]=0.0
      if(EN <= (3.0*EIN[23]:
      )) GO TO 427
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
      # SINGLET DISSOCIATION AT 11.1   EV     BEF SCALING F=.10387 
      427 if(EN <= (EIN[24])) GO TO 428
      QIN[24][I]=0.103870/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])
      if(QIN[24][I]:
      < 0.0) QIN[24][I]=0.0
      if(EN <= (3.0*EIN[24]:
      )) GO TO 428
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      # SINGLET DISSOCIATION AT 11.3   EV     BEF SCALING F=.10183 
      428 if(EN <= (EIN[25])) GO TO 429
      QIN[25][I]=0.101830/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+E[3])
      if(QIN[25][I]:
      < 0.0) QIN[25][I]=0.0
      if(EN <= (3.0*EIN[25]:
      )) GO TO 429
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
      # SINGLET DISSOCIATION AT 11.5   EV     BEF SCALING F=.096718
      429 if(EN <= (EIN[26])) GO TO 430
      QIN[26][I]=0.096718/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])
      if(QIN[26][I]:
      < 0.0) QIN[26][I]=0.0
      if(EN <= (3.0*EIN[26]:
      )) GO TO 430
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
      # SINGLET DISSOCIATION AT 11.7   EV     BEF SCALING F=.090149
      430 if(EN <= (EIN[27])) GO TO 431
      QIN[27][I]=0.090149/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])
      if(QIN[27][I]:
      < 0.0) QIN[27][I]=0.0
      if(EN <= (3.0*EIN[27]:
      )) GO TO 431
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
      # SINGLET DISSOCIATION AT 11.9   EV     BEF SCALING F=.086661
      431 if(EN <= (EIN[28])) GO TO 432
      QIN[28][I]=0.086661/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])
      if(QIN[28][I]:
      < 0.0) QIN[28][I]=0.0
      if(EN <= (3.0*EIN[28]:
      )) GO TO 432
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
      # SINGLET DISSOCIATION AT 12.1   EV     BEF SCALING F=.086097
      432 if(EN <= (EIN[29])) GO TO 433
      QIN[29][I]=0.086097/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])
      if(QIN[29][I]:
      < 0.0) QIN[29][I]=0.0
      if(EN <= (3.0*EIN[29]:
      )) GO TO 433
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
      # SINGLET DISSOCIATION AT 12.3   EV     BEF SCALING F=.083324
      433 if(EN <= (EIN[30])) GO TO 434
      QIN[30][I]=0.083324/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])
      if(QIN[30][I]:
      < 0.0) QIN[30][I]=0.0
      if(EN <= (3.0*EIN[30]:
      )) GO TO 434
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      # SINGLET DISSOCIATION AT 12.5   EV     BEF SCALING F=.079943
      434 if(EN <= (EIN[31])) GO TO 435
      QIN[31][I]=0.079943/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])
      if(QIN[31][I]:
      < 0.0) QIN[31][I]=0.0
      if(EN <= (3.0*EIN[31]:
      )) GO TO 435
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
      # SINGLET DISSOCIATION AT 12.7   EV     BEF SCALING F=.077210
      435 if(EN <= (EIN[32])) GO TO 436
      QIN[32][I]=0.077210/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])
      if(QIN[32][I]:
      < 0.0) QIN[32][I]=0.0
      if(EN <= (3.0*EIN[32]:
      )) GO TO 436
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
      # SINGLET DISSOCIATION AT 12.9   EV     BEF SCALING F=.070368
      436 if(EN <= (EIN[33])) GO TO 437
      QIN[33][I]=0.070368/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])
      if(QIN[33][I]:
      < 0.0) QIN[33][I]=0.0
      if(EN <= (2.0*EIN[33]:
      )) GO TO 437
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
      # SINGLET DISSOCIATION AT 13.1   EV     BEF SCALING F=.061365
      437 if(EN <= (EIN[34])) GO TO 438
      QIN[34][I]=0.061365/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])
      if(QIN[34][I]:
      < 0.0) QIN[34][I]=0.0
      if(EN <= (2.0*EIN[34]:
      )) GO TO 438
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      # SINGLET DISSOCIATION AT 13.3   EV     BEF SCALING F=.053208
      438 if(EN <= (EIN[35])) GO TO 439
      QIN[35][I]=0.053208/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])
      if(QIN[35][I]:
      < 0.0) QIN[35][I]=0.0
      if(EN <= (2.0*EIN[35]:
      )) GO TO 439
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      # SINGLET DISSOCIATION AT 13.5   EV     BEF SCALING F=.046320
      439 if(EN <= (EIN[36])) GO TO 440
      QIN[36][I]=0.046320/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])
      if(QIN[36][I]:
      < 0.0) QIN[36][I]=0.0
      if(EN <= (2.0*EIN[36]:
      )) GO TO 440
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      # SINGLET DISSOCIATION AT 13.7   EV     BEF SCALING F=.042827
      440 if(EN <= (EIN[37])) GO TO 441
      QIN[37][I]=0.042827/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])
      if(QIN[37][I]:
      < 0.0) QIN[37][I]=0.0
      if(EN <= (2.0*EIN[37]:
      )) GO TO 441
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      # SINGLET DISSOCIATION AT 13.9   EV     BEF SCALING F=.038898
      441 if(EN <= (EIN[38])) GO TO 442
      QIN[38][I]=0.038898/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+E[3])
      if(QIN[38][I]:
      < 0.0) QIN[38][I]=0.0
      if(EN <= (2.0*EIN[38]:
      )) GO TO 442
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      # SINGLET DISSOCIATION AT 14.1   EV     BEF SCALING F=.035930
      442 if(EN <= (EIN[39])) GO TO 443
      QIN[39][I]=0.035930/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+E[3])
      if(QIN[39][I]:
      < 0.0) QIN[39][I]=0.0
      if(EN <= (2.0*EIN[39]:
      )) GO TO 443
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      # SINGLET DISSOCIATION AT 14.3   EV     BEF SCALING F=.033632
      443 if(EN <= (EIN[40])) GO TO 444
      QIN[40][I]=0.033632/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+E[3])
      if(QIN[40][I]:
      < 0.0) QIN[40][I]=0.0
      if(EN <= (2.0*EIN[40]:
      )) GO TO 444
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      # SINGLET DISSOCIATION AT 14.5   EV     BEF SCALING F=.030562
      444 if(EN <= (EIN[41])) GO TO 445
      QIN[41][I]=0.030562/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+E[3])
      if(QIN[41][I]:
      < 0.0) QIN[41][I]=0.0
      if(EN <= (2.0*EIN[41]:
      )) GO TO 445
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      # SINGLET DISSOCIATION AT 14.7   EV     BEF SCALING F=.028559
      445 if(EN <= (EIN[42])) GO TO 446
      QIN[42][I]=0.028559/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+E[3])
      if(QIN[42][I]:
      < 0.0) QIN[42][I]=0.0
      if(EN <= (2.0*EIN[42]:
      )) GO TO 446
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      # SINGLET DISSOCIATION AT 14.9   EV     BEF SCALING F=.027052
      446 if(EN <= (EIN[43])) GO TO 447
      QIN[43][I]=0.027052/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+E[3])
      if(QIN[43][I]:
      < 0.0) QIN[43][I]=0.0
      if(EN <= (2.0*EIN[43]:
      )) GO TO 447
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      # SINGLET DISSOCIATION AT 15.2   EV     BEF SCALING F=.048051
      447 if(EN <= (EIN[44])) GO TO 448
      QIN[44][I]=0.048051/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+E[3])
      if(QIN[44][I]:
      < 0.0) QIN[44][I]=0.0
      if(EN <= (2.0*EIN[44]:
      )) GO TO 448
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      # SINGLET DISSOCIATION AT 15.6   EV     BEF SCALING F=.036375
      448 if(EN <= (EIN[45])) GO TO 449
      QIN[45][I]=0.036375/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+E[3])
      if(QIN[45][I]:
      < 0.0) QIN[45][I]=0.0
      if(EN <= (2.0*EIN[45]:
      )) GO TO 449
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      # SINGLET DISSOCIATION AT 16.0   EV     BEF SCALING F=.020165
      449 if(EN <= (EIN[46])) GO TO 450
      QIN[46][I]=0.020165/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+E[3])
      if(QIN[46][I]:
      < 0.0) QIN[46][I]=0.0
      if(EN <= (2.0*EIN[46]:
      )) GO TO 450
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
      # SINGLET DISSOCIATION AT 16.4   EV     BEF SCALING F=.010038
      450 if(EN <= (EIN[47])) GO TO 451
      QIN[47][I]=0.010038/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+E[3])
      if(QIN[47][I]:
      < 0.0) QIN[47][I]=0.0
      if(EN <= (2.0*EIN[47]:
      )) GO TO 451
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
      # SINGLET DISSOCIATION AT 16.8   EV     BEF SCALING F=.0054441
      451 if(EN <= (EIN[48])) GO TO 452
      QIN[48][I]=0.0054441/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+E[3])
      if(QIN[48][I]:
      < 0.0) QIN[48][I]=0.0
      if(EN <= (2.0*EIN[48]:
      )) GO TO 452
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
      # SINGLET DISSOCIATION AT 17.25   EV     BEF SCALING F=.0050790
      452 if(EN <= (EIN[49])) GO TO 453
      QIN[49][I]=0.0050790/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+E[3])
      if(QIN[49][I]:
      < 0.0) QIN[49][I]=0.0
      if(EN <= (2.0*EIN[49]:
      )) GO TO 453
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      # SINGLET DISSOCIATION AT 17.75   EV     BEF SCALING F=.0057699
      453 if(EN <= (EIN[50])) GO TO 454
      QIN[50][I]=0.0057699/(EIN[50]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[50]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[50]+E[3])
      if(QIN[50][I]:
      < 0.0) QIN[50][I]=0.0
      if(EN <= (2.0*EIN[50]:
      )) GO TO 454
      PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])]
      # SINGLET DISSOCIATION AT 18.25   EV     BEF SCALING F=.0072715
      454 if(EN <= (EIN[51])) GO TO 455
      QIN[51][I]=0.0072715/(EIN[51]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[51]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[51]+E[3])
      if(QIN[51][I]:
      < 0.0) QIN[51][I]=0.0
      if(EN <= (2.0*EIN[51]:
      )) GO TO 455
      PEQIN[51][I]=PEQEL[2][(I-IOFFN[51])]
      # SINGLET DISSOCIATION AT 18.75   EV     BEF SCALING F=.010296
      455 if(EN <= (EIN[52])) GO TO 456
      QIN[52][I]=0.010296/(EIN[52]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[52]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[52]+E[3])
      if(QIN[52][I]:
      < 0.0) QIN[52][I]=0.0
      if(EN <= (2.0*EIN[52]:
      )) GO TO 456
      PEQIN[52][I]=PEQEL[2][(I-IOFFN[52])]
      # SINGLET DISSOCIATION AT 19.25   EV     BEF SCALING F=.014152
      456 if(EN <= (EIN[53])) GO TO 457
      QIN[53][I]=0.014152/(EIN[53]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[53]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[53]+E[3])
      if(QIN[53][I]:
      < 0.0) QIN[53][I]=0.0
      if(EN <= (2.0*EIN[53]:
      )) GO TO 457
      PEQIN[53][I]=PEQEL[2][(I-IOFFN[53])]
      # SINGLET DISSOCIATION AT 19.75   EV     BEF SCALING F=.013698
      457 if(EN <= (EIN[54])) GO TO 458
      QIN[54][I]=0.013698/(EIN[54]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[54]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[54]+E[3])
      if(QIN[54][I]:
      < 0.0) QIN[54][I]=0.0
      if(EN <= (2.0*EIN[54]:
      )) GO TO 458
      PEQIN[54][I]=PEQEL[2][(I-IOFFN[54])]
      # SINGLET DISSOCIATION AT 20.25   EV     BEF SCALING F=.010362
      458 if(EN <= (EIN[55])) GO TO 459
      QIN[55][I]=0.010362/(EIN[55]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[55]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[55]+E[3])
      if(QIN[55][I]:
      < 0.0) QIN[55][I]=0.0
      if(EN <= (2.0*EIN[55]:
      )) GO TO 459
      PEQIN[55][I]=PEQEL[2][(I-IOFFN[55])]
      # SINGLET DISSOCIATION AT 20.75   EV     BEF SCALING F=.0088401
      459 if(EN <= (EIN[56])) GO TO 460
      QIN[56][I]=0.0088401/(EIN[56]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[56]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[56]+E[3])
      if(QIN[56][I]:
      < 0.0) QIN[56][I]=0.0
      if(EN <= (2.0*EIN[56]:
      )) GO TO 460
      PEQIN[56][I]=PEQEL[2][(I-IOFFN[56])]
      # SINGLET DISSOCIATION AT 21.5    EV     BEF SCALING F=.022195
      460 if(EN <= (EIN[57])) GO TO 461
      QIN[57][I]=0.022195/(EIN[57]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[57]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[57]+E[3])
      if(QIN[57][I]:
      < 0.0) QIN[57][I]=0.0
      if(EN <= (2.0*EIN[57]:
      )) GO TO 461
      PEQIN[57][I]=PEQEL[2][(I-IOFFN[57])]
      # SINGLET DISSOCIATION AT 22.5    EV     BEF SCALING F=.019172
      461 if(EN <= (EIN[58])) GO TO 462
      QIN[58][I]=0.019172/(EIN[58]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[58]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[58]+E[3])
      if(QIN[58][I]:
      < 0.0) QIN[58][I]=0.0
      if(EN <= (2.0*EIN[58]:
      )) GO TO 462
      PEQIN[58][I]=PEQEL[2][(I-IOFFN[58])]
      # SINGLET DISSOCIATION AT 23.5    EV     BEF SCALING F=.011553
      462 if(EN <= (EIN[59])) GO TO 463
      QIN[59][I]=0.011553/(EIN[59]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[59]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[59]+E[3])
      if(QIN[59][I]:
      < 0.0) QIN[59][I]=0.0
      if(EN <= (2.0*EIN[59]:
      )) GO TO 463
      PEQIN[59][I]=PEQEL[2][(I-IOFFN[59])] 
      # SINGLET DISSOCIATION AT 24.5    EV     BEF SCALING F=.0089679
      463 if(EN <= (EIN[60])) GO TO 464
      QIN[60][I]=0.0089679/(EIN[60]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[60]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[60]+E[3])
      if(QIN[60][I]:
      < 0.0) QIN[60][I]=0.0
      if(EN <= (2.0*EIN[60]:
      )) GO TO 464
      PEQIN[60][I]=PEQEL[2][(I-IOFFN[60])] 
      # SINGLET DISSOCIATION AT 25.5    EV     BEF SCALING F=.0064815
      464 if(EN <= (EIN[61])) GO TO 465
      QIN[61][I]=0.0064815/(EIN[61]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[61]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[61]+E[3])
      if(QIN[61][I]:
      < 0.0) QIN[61][I]=0.0
      if(EN <= (2.0*EIN[61]:
      )) GO TO 465
      PEQIN[61][I]=PEQEL[2][(I-IOFFN[61])] 
      # 
      # FOURTH TRIPLET AT  26.0 EV                                   
      465 if(EN <= EIN[62]) GO TO 470
      if(EN > XTR4(NTR4):
      ) GO TO 468  
      DO 466 J=2,NTR4                                                  
      if(EN <= XTR4[J]:
      ) GO TO 467                                      
      466 CONTINUE                                                          
      J=NTR4                                                           
      467 A=(YTR4[J]-YTR4[J-1])/(XTR4[J]-XTR4[J-1])                     
      B=(XTR4[J-1]*YTR4[J]-XTR4[J]*YTR4[J-1])/(XTR4[J-1]-XTR4[J]) 
      QIN[62][I]=(A*EN+B)*1.e-16
      GO TO 469
      # SCALE BY 1/E**2 ABOVE XTR4(NTR4) EV
      468 QIN[62][I]=YTR4(NTR4)*(XTR4(NTR4)/EN)**2*1.e-16
      469 if(EN <= (3.0*EIN[62])) GO TO 470
      PEQIN[62][I]=PEQEL[2][(I-IOFFN[62])]
      #
      # SINGLET DISSOCIATION AT 26.5    EV     BEF SCALING F=.0035484
      470 if(EN <= (EIN[63])) GO TO 471
      QIN[63][I]=0.0035484/(EIN[63]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[63]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[63]+E[3])
      if(QIN[63][I]:
      < 0.0) QIN[63][I]=0.0
      if(EN <= (2.0*EIN[63]:
      )) GO TO 471
      PEQIN[63][I]=PEQEL[2][(I-IOFFN[63])] 
      # SINGLET DISSOCIATION AT 27.5    EV     BEF SCALING F=.0010872
      471 if(EN <= (EIN[64])) GO TO 472
      QIN[64][I]=0.0010872/(EIN[64]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[64]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[64]+E[3])
      if(QIN[64][I]:
      < 0.0) QIN[64][I]=0.0
      if(EN <= (2.0*EIN[64]:
      )) GO TO 472
      PEQIN[64][I]=PEQEL[2][(I-IOFFN[64])] 
      472 CONTINUE
      # LOAD BREMSSTRAHLUNG X-SECTION
      QIN[65][I]=0.0
      QIN[66][I]=0.0
      if(EN <= 1000.):
      GO TO 800
      DO 780 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 790
      780 CONTINUE
      J=NBREM
      790 A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A1=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[65][I]=math.exp(A*EN+B)*3.e-24
      QIN[66][I]=math.exp(A1*EN+B1)*8.e-24
      800 CONTINUE
      #
      #  LOAD NULL COLLISIONS
      #
      # LIGHT EMISSION FROM H ALPHA
      # MOHLMANN AND DE HEER CHEM.PHYS.19(1979)233
      QNULL[1][I]=0.0
      if(EN <= XNUL1[1]:
      ) GO TO 805
      if(EN > XNUL1(NUL1):
      ) GO TO 803
      DO 801 J=2,NUL1
      if(EN <= XNUL1[J]:
      ) GO TO 802
      801 CONTINUE
      J=NUL1
      802 A=(YNUL1[J]-YNUL1[J-1])/(XNUL1[J]-XNUL1[J-1])
      B=(XNUL1[J-1]*YNUL1[J]-XNUL1[J]*YNUL1[J-1])/(XNUL1[J-1]-XNUL1[J])
      QNULL[1][I]=(A*EN+B)*1.e-16*SCLN[1]    
      GO TO 805
      # SCALE BY 1/E ABOVE XNUL1(NUL1)) EV
      803 QNULL[1][I]=YNUL1(NUL1)*(XNUL1(NUL1)/EN)*1.e-16*SCLN[1]    
      #
      # LIGHT EMISSION FROM CH2(A2DELTA - X2PI)
      #  MOHLMANN AND DE HEER  CHEM.PHYS.19(1979)233 
      #  
      805 QNULL[2][I]=0.0
      if(EN <= XNUL2[1]:
      ) GO TO 810
      if(EN > XNUL2(NUL2):
      ) GO TO 808
      DO 806 J=2,NUL2
      if(EN <= XNUL2[J]:
      ) GO TO 807
      806 CONTINUE
      J=NUL2
      807 A=(YNUL2[J]-YNUL2[J-1])/(XNUL2[J]-XNUL2[J-1])
      B=(XNUL2[J-1]*YNUL2[J]-XNUL2[J]*YNUL2[J-1])/(XNUL2[J-1]-XNUL2[J])
      QNULL[2][I]=(A*EN+B)*1.e-16*SCLN[2]
      GO TO 810
      # SCALE BY 1/E ABOVE XNUL2(NUL2)) EV
      808 QNULL[2][I]=YNUL2(NUL2)*(XNUL2(NUL2)/EN)*1.e-16*SCLN[2]  
      #  
      810 CONTINUE
      #
      815 CONTINUE
      SUMEXC=0.0
      DO 850 J=9,NIN
      850 SUMEXC=SUMEXC+QIN[J][I]
      SUMION=0.0
      DO 851 J=1,NION
      851 SUMION=SUMION+QION[J][I]
      SUMATT=0.0
      DO 852 J=1,NATT
      852 SUMATT=SUMATT+QATT[J][I]
      SUMVIB=0.0
      DO 853 J=1,8
      853 SUMVIB=SUMVIB+QIN[J][I]
      SUMELMT=QMT
      SUMEL=QEL
      SUMTOTM=SUMVIB+SUMEXC+SUMION+SUMATT+SUMELMT
      SUMTOT=SUMVIB+SUMEXC+SUMION+SUMATT+SUMEL
      SUMNONEL=SUMVIB+SUMEXC+SUMION+SUMATT
      SUMTRIPLET=QIN[9][I]+QIN[11][I]+QIN[18][I]+QIN[62][I]
      SUMDIPOLE=SUMEXC-SUMTRIPLET
      #
      #     WRITE(6,887) EN,QIN[1][I],QIN[2][I]
      # 887 print(' EN = ','%.4f' % ,' TORS SUP = ','%.4f' % ,' TORSION = ','%.4f' % )
      #     WRITE(6,888) EN,QMT,SUMVIB,SUMEXC,SUMION,SUMATT,SUMNONEL,SUMTOTM,
      #    /SUMTRIPLET,SUMDIPOLE
      # 888 print(' EN=','%.4f' % ,' QMT =','%.3f' %,' SUMVIB=','%.3f' %,' SUMEXC =',
      #    /'%.3f' %,' SUMION =','%.3f' %,' SUMATT =','%.3f' %,' SUMNONEL =','%.3f' %,
      #    /' SUMTOTM =','%.3f' %,/,' SUMTRIPLET =','%.3f' %,' SUMDIPOLE =','%.3f' %) 
      #
      1000 CONTINUE                                                          
      #  SAVE COMPUTE TIME            
      DO 1010 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 1011
      # endif      
      1010 CONTINUE
      1011 CONTINUE
      if(EFINAL > 1000.):
      NIN=66
      #                               
      return                                                            
      # end
def GAS11(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NCO,ECO,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]    
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]     
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      DIMENSION XEN(157),YELM(157),YELT(157),YEPS(157),XION[42],YION[42],YINC[42],XATT[10],YATT[10],XKSH(83),YKSH(83),  XVIB1[30],YVIB1[30],XVIB2[24],YVIB2[24],XVIB3[24],YVIB3[24],      XVIB4[29],YVIB4[29],XVIB5[15],YVIB5[15],XEXC1[16],YEXC1[16],XEXC2[16],YEXC2[16],IOFFN[24],IOFFION[10]
      DIMENSION Z6T[25],Z1T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME     
      # ELASTIC                                          
      XEN=[0.00,0.001,0.002,0.003,0.004,0.005,0.007,0.01,0.014,0.02,.025,0.03,.035,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,0.13,0.14,0.16,0.18,0.20,0.23,0.26,0.30,0.35,0.40,0.50,0.60,0.80,1.00,1.40,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.5,15.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,100.,120.,140.,170.,200.,250.,300.,400.,500.,750.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.D4,1.25D4,1.5D4,1.75D4,2.D4,2.5'%.3f' %.'%.3f' %.5D4,4.D4,4.5D4,5.D4,6.D4,7.D4,8.D4,9.D4,1.D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.'%.3f' %.5D5,4.D5,4.5D5,5.D5,6.D5,7.D5,8.D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MOMENTUM TRANSFER X-SECTION
      YELM=[255.,255.,255.,255.,255.,210.,150.,105.,74.5,52.0,     41.4,34.5,29.6,25.9,20.7,17.2,14.8,13.0,11.7,10.8,10.0,9.30,8.60,8.00,7.00,5.50,3.50,3.60,4.80,7.50,9.60,11.2,12.9,13.8,14.7,15.3,16.1,17.3,19.8,23.2,27.8,32.3,35.0,35.0,33.0,30.0,25.0,21.5,17.0,13.7,11.5,9.00,7.30,6.10,5.20,4.50,3.50,2.80,2.21,1.72,1.40,1.10,0.87,0.61,0.47,0.28,.171,.116,.0848,.0648,.0505,.0345,.0249,.0189,.0149,.0120,.00996,.00717,.00542,.00426,.00344,.00284,.00190,.00136,.00103,.000807,.000539,.000387,.000293,.000231,1.87e-4,1.55e-4,1.12e-4,8.50e-5,6.72e-5,5.46e-5,4.55e-5,3.10e-5,2.27e-5,1.75e-5,1.40e-5,9.71e-6,7.24e-6,5.66e-6,4.59e-6,3.81e-6,3.24e-6,2.44e-6,1.93e-6,1.57e-6,1.31e-6,1.12e-6,8.01e-7,6.04e-7,4.75e-7,3.84e-7,2.69e-7,2.00e-7,1.55e-7,1.24e-7,1.02e-7,8.52e-8,6.23e-8,4.77e-8,3.78e-8,3.07e-8,2.55e-8,1.71e-8,1.23e-8,9.30e-9,7.28e-9,4.83e-9,3.45e-9,2.59e-9,2.02e-9,1.61e-9,1.32e-9,9.36e-10,6.97e-10,5.39e-10,4.29e-10,3.50e-10,2.26e-10,1.58e-10,1.16e-10,8.92e-11,5.72e-11,3.98e-11,2.92e-11,2.24e-11,1.77e-11,1.44e-11,9.97e-12,7.33e-12,5.61e-12,4.43e-12,3.59e-12]
      # ELASTIC X-SECTION ASSUMED ISOTROPIC BELOW     2.0 EV
      YELT=[255.,255.,255.,255.,255.,210.,150.,105.,74.5,52.0,     41.4,34.5,29.6,25.9,20.7,17.2,14.8,13.0,11.7,10.8,10.0,9.30,8.60,8.00,7.00,5.50,3.50,3.60,4.80,7.50,9.60,11.2,12.9,13.8,14.7,15.3,16.1,17.3,25.0,32.0,39.0,43.0,46.0,48.0,48.0,46.0,43.5,41.5,37.0,32.0,27.5,22.5,19.0,16.5,14.7,13.3,11.0,9.60,8.40,7.20,6.40,5.30,4.60,3.65,3.05,2.20,1.72,1.42,1.21,1.08,0.96,0.80,.690,.600,.545,.490,.450,.385,.335,.305,.275,.250,.210,.180,.158,.142,.119,.100,.0873,.0774,.0698,.0636,.0545,.0479,.0443,.0392,.0361,.0306,.0270,.0244,.0225,.0198,.0180,.0168,.0158,.0151,.0146,.0138,.0132,.0128,.0125,.0123,.0119,.0116,.0114,.0113,.0112,.0111,.0110,.0110,.0110,.0110,.0109,.0109,.0109,.0109,.0109,30*.01086]
      # EPSILON FOR ELASTIC ANGULAR DISTRIBUTION
      # EPSILON=1.0-YEPS
      YEPS=[38*1.0,.6940,.6011,.5847,.6369,.6507,.6068,.5511,.5054,.4106,.3465,.2851,.2545,.2451,.2283,.2141,.2015,.1880,.1753,.1593,.1393,.1191,.1030,.0903,.0836,.0730,.0610,.0544,.0415,.0296,.0227,.0185,.0151,.01272,.00985,.00786,.00662,.00555,.00484,.00427,.00346,.00291,.00244,.00213,.00190,.001449,.001171,9.84e-4,8.38e-4,6.43e-4,5.35e-4,4.54e-4,3.97e-4,3.50e-4,3.14e-4,2.58e-4,2.19e-4,1.83e-4,1.658e-4,1.481e-4,1.157e-4,9.37e-5,7.84e-5,6.69e-5,5.12e-5,4.11e-5,3.37e-5,2.86e-5,2.45e-5,2.12e-5,1.65e-5,1.34e-5,1.11e-5,9.33e-6,7.99e-6,5.75e-6,4.32e-6,3.37e-6,2.71e-6,1.87e-6,1.37e-6,1.04e-6,8.24e-7,6.67e-7,5.52e-7,3.95e-7,2.97e-7,2.32e-7,1.86e-7,1.52e-7,9.94e-8,7.00e-8,5.20e-8,4.01e-8,2.59e-8,1.81e-8,1.34e-8,1.03e-8,8.12e-9,6.58e-9,4.56e-9,3.34e-9,2.55e-9,2.00e-9,1.62e-9,1.02e-9,7.00e-10,5.07e-10,3.84e-10,2.41e-10,1.65e-10,1.19e-10,9.00e-11,7.1D-11,5.7D-11,3.9D-11,2.8D-11,2.1D-11,1.6D-11,1.3D-11]
      # IONISATION
      XION=[10.67,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,75.0,85.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      # GROSS IONISATION
      YION=[0.00,.004,.070,0.18,0.37,0.59,0.84,1.10,1.60,2.20,3.00,5.11,6.71,8.00,8.82,9.51,10.0,10.5,10.7,10.8,10.7,10.5,10.0,9.41,8.87,8.33,7.29,6.51,5.90,5.40,4.99,4.65,4.36,4.11,3.88,3.69,3.52,3.36,3.22,3.09,2.98,2.872]
      # K-SHELL IONISATION X-SECTION CARBON (MUTILPY BY 4 FOR MOLECULE)  
      XKSH=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.0D6,1.26D6,1.5D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.0D7,1.26D7,1.5D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.0D8,1.26D8,1.5D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.0D9]
      YKSH=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
      # COUNTING IONISATION
      YINC=[42*0.0]
      # ATTACHMENT
      XATT=[10*0.0]         
      YATT=[10*0.0] 
      # VIBRATION/TORSION
      # ABOVE 40EV SCALE BY 1/E                                   
      XVIB1=[.052,.055,.060,.065,.070,.075,0.08,0.10,0.12,0.14,     0.20,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0]                
      YVIB1=[0.00,.014,.021,.024,.026,.027,.028,.028,.027,.025,     .021,.018,.016,.014,.012,.009,.008,.012,.015,.024,.036,.047,.060,.079,.079,.065,.038,.025,.012,.008]
      # VIBRATION                          
      # ABOVE 40EV SCALE BY 1/E             
      XVIB2=[.108,.125,0.15,0.20,0.23,0.25,0.30,0.40,0.50,0.70,     1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,                15.0,20.0,30.0,40.0]               
      YVIB2=[0.00,0.27,0.52,0.71,0.73,0.73,0.66,0.56,0.49,0.41,     0.32,0.32,0.39,0.63,0.93,1.22,1.57,2.06,2.06,1.69,                1.00,0.66,0.35,0.22]
      # VIBRATION              
      # ABOVE 40EV SCALE BY 1/E         
      XVIB3=[.173,0.18,0.19,0.20,0.23,0.25,0.30,0.40,0.50,0.70,     1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,                15.0,20.0,30.0,40.0]               
      YVIB3=[0.00,0.13,0.27,0.38,0.49,0.53,0.56,0.53,0.49,0.42,     0.34,0.31,0.33,0.48,0.72,0.94,1.21,1.59,1.59,1.35,                0.80,0.52,0.28,.175]
      # VIBRATION     
      # ABOVE 40EV SCALE BY 1/E                  
      XVIB4=[.363,.365,0.37,0.38,0.39,0.40,0.42,0.45,0.50,0.55,0.60,0.70,0.80,0.90,1.00,1.20,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0]            
      YVIB4=[0.00,.108,.198,.299,.366,.416,.487,.555,.615,.645,     .655,.650,.630,.605,.580,0.55,0.57,0.67,1.05,1.50,2.00,2.45,2.70,2.70,2.10,1.15,0.76,0.42,0.27] 
      # VIBRATION HARMONICS         
      # ABOVE 40EV SCALE BY 1/E                             
      XVIB5=[.519,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,     10.0,15.0,20.0,30.0,40.0]    
      YVIB5=[0.00,.001,0.01,.033,.085,0.16,0.20,0.27,0.30,0.30,     0.23,.125,.085,.047,.032]
      # EXCITATION TRIPLET               
      XEXC1=[7.20,8.00,9.00,10.0,12.0,14.0,16.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,100.]                  
      YEXC1=[0.00,0.10,0.30,0.45,0.52,0.55,0.51,0.45,0.30,0.20,0.10,0.06,.037,.026,.019,.011]                             
      # EXCITATION  TRIPLET                                     
      XEXC2=[8.60,9.40,10.4,11.4,13.4,15.4,17.4,21.4,26.0,30.0,40.0,50.0,60.0,70.0,80.0,100.] 
      YEXC2=[0.00,0.10,0.30,0.45,0.52,0.55,0.51,0.45,0.30,0.20,0.10,0.06,.037,.026,.019,.011] 
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF  UNITS 10**-24 CM**2
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #**********************************************************************
      # 2014 UPDATE INCLUDES CORRECT OSCILLATOR STRENGTH AND FIT TO NEW 
      #       TOWNS# end DATA
      # 2012 UPDATE INCLUDES K-SHELL IONISATION
# 2009 UPDATE OF 1999 def
      #      VERSION INCLUDES ANISOTROPIC SCATTERING. USED ISOTROPIC ELASTIC
      #      SCATTERING BELOW 2 EV DUE TO LACK OF EXPERIMENTAL ELECTRON 
      #      SCATTERING DATA.
      #      ALSO INCLUDES BETTER TREATMENT OF TORSIONAL EXCITATION (USED A 
      #      2-LEVEL APPROXIMATION FOR TORSION)
      #      IMPROVED FANO FACTOR AND W FROM BETTER EXCITATION/DISSOCIATION
      #      X-SECTIONS . PUBLISHED ELECTRON SCATTERING UP TO 2009 IS
      #      INCLUDED IN ANALYSIS. GOOD FIT +-1% TO SCHMIDTS HE/ISO .
      #      SCHMIDT AND MARTENS : HEIDELBERG PREPRINT :HD-PY 92/02
      #      STILL SOME PROBLEMS WITH AR/ISO FITS +-2% BUT PROBABLY CAUSED
      #      BY POOR QUALITY EXPERIMENTAL DRIFT VELOCITY DATA.
      #      E.G. NO CONSISTANCY AT 3% LEVEL BETWEEN : 
      #      FUJII ET AL:  NIM A245(1986)35
      #      AND BECKER : HTTP://CYCLO.MIT.EDU/DRIFT/WWW 
      #      FUTURE IMPROVEMENT: INCLUDE EFFECTIVE ROTATIONAL STATE AT 0.005EV
      #***********************************************************************
      #--------------------------------------------------------
      if(NANISO == 0):
      :
      NAME='ISO-C4H10 2014 ISOTROPIC '
      else:
      NAME='ISO-C4H10 2014 ANISOTRPIC'
      # endif                                            
      # ---------------------------------------------------------------------
      # 
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      CONST=1.873884e-20
      EMASS2=1021997.804
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      # BORN BETHE VALUES FOR IONISATION
      AM2=14.8
      C=141.9
      #
      # AVERAGE AUGER EMISSIONS FROM K-SHELL
      AUGK=2.0
      #
      # ARRAY SIZE
      NASIZE=20000
      # SCALE SINGLET X-SECTIONS TO ALLOW FOR INCREASED ENERGY LOSS DUE TO 5%
      #   STEP IN ENERGY BETWEEN SINGLET LEVELS.
      ASING=1.02
      #
      NION=3
      NATT=1
      NIN=24
      NNULL=0 
      IONMODEL=0
      #     
      NBREM=25
      DO 18 J=1,NIN
      IZBR[J]=0
      18 CONTINUE
      IZBR[25]=6
      IZBR[26]=1
      #
      # USE NANISO=2 ONLY (OKHRIMOVSKY)
      DO 1 J=1,6 
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=2
      #                                                                  
      NDATA=157                                                         
      NIOND=42                                                       
      NATT1=10                                                         
      NVIB1=30
      NVIB2=24                                                          
      NVIB3=24                                                          
      NVIB4=29
      NVIB5=15
      NEXC1=16                                                         
      NEXC2=16                                                 
      NKSH=83
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(58.1234*AMU)                                      
      E[3]=10.67    
      # EXCITATION X-SECTION AT 1.2 MEV          
      E[4]=0.0145e-16
      # IONISATION X-SECTION AT 1.2 MEV                               
      E[5]=0.0374e-16
      # OPAL BEATY IONISATION ENERGY SPLITTING AT 1.2 MEV                 
      E[6]=7.00 
      # OPAL BEATY IONISATION  AT LOW ENERGY
      EOBY[1]=6.8  
      # OPAL BEATY FOR DISSOCIATION AND K-SHELL
      EOBY[2]=6.8  
      EOBY[3]=180.0

      #  
      EION[1]=10.67
      EION[2]=17.0
      EION[3]=285.0
      LEGAS[1]=0
      LEGAS[2]=0
      LEGAS[3]=1
      ISHELL[1]=0
      ISHELL[2]=0
      ISHELL[3]=1
      # FLUORESCENCE DATA
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      NC0[2]=0
      EC0[2]=0.0
      WKLM[2]=0.0
      EFL[2]=0.0
      NG1[2]=0
      EG1[2]=0.0
      NG2[2]=0
      EG2[2]=0.0
      NC0[3]=2
      EC0[3]=253.
      WKLM[3]=0.0026
      EFL[3]=273.
      NG1[3]=1
      EG1[3]=253.
      NG2[3]=2
      EG2[3]=5.0
      #
      EIN[1]=-0.032                                            
      EIN[2]=0.032 
      EIN[3]=-0.108
      EIN[4]=0.108  
      EIN[5]=-0.173                                                    
      EIN[6]=0.173
      EIN[7]=-0.363                                                    
      EIN[8]=0.363
      EIN[9]=0.519
      EIN[10]=7.2
      EIN[11]=8.6                                               
      EIN[12]=7.50                     
      EIN[13]=8.0
      EIN[14]=8.5
      EIN[15]=9.0
      EIN[16]=9.5
      EIN[17]=10.0
      EIN[18]=10.5
      EIN[19]=11.0
      EIN[20]=11.5
      EIN[21]=12.0
      EIN[22]=12.5
      EIN[23]=13.0
      EIN[24]=13.5
      EIN[25]=0.0
      EIN[26]=0.0
      #  
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      #
      DO 652 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 652
      # endif
      651 CONTINUE
      652 CONTINUE
      #***********************************************************************
      # PENNING TRANSFER FRACTION FOR EACH LEVEL
      for 5 K in range(1,24):
      DO 5 L=1,3
      5 PENFRA[L,K]=0.0
      PENSUM=0.0
      # PENNING TRANSFER FRACTION FOR EXCITATION LEVELS ONLY
      DO 555 K=10,24
      PENFRA[1][K]=0.0
      PENSUM=PENSUM+PENFRA[1][K]
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2][K]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      PENFRA[3][K]=1.0
      555 CONTINUE
      if(IPEN == 0):
      GO TO 8
      if((PENSUM):
      == 0.0) GO TO 8
      DO 6 K=10,24
      6 WRITE(6,999) NAME,EIN[K],PENFRA[1][K],PENFRA[2][K],PENFRA[3][K]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY = ','%.3f' % ,' ABS.LENGTH = ',F7.2,' DECAY TIME = ',F7.1,/)
      8 CONTINUE
      #***********************************************************************
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC      ISOBUTANE              '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC  ISOTROPIC        ISOBUTANE              '
      # endif
      SCRPT[3]=' IONISATION                       ELOSS=  10.67   '
      SCRPT[4]=' IONISATION-EXCITATION (BREAKUP)  ELOSS=  17.0    '
      SCRPT[5]=' IONISATION  K-SHELL              ELOSS= 285.0    '
      SCRPT[6]=' ATTACHMENT                                       '
      SCRPT[7]='                                                  '
      SCRPT[8]='                                                  '
      SCRPT[9]=' TORSION                          ELOSS=  -0.032  '
      SCRPT[10]=' TORSION                          ELOSS=   0.032  '
      SCRPT[11]=' VIBRATION  B# end                  ELOSS=  -0.108  '
      SCRPT[12]=' VIBRATION  B# end                  ELOSS=   0.108  '
      SCRPT[13]=' VIBRATION  STRETCH               ELOSS=  -0.173  '
      SCRPT[14]=' VIBRATION  STRETCH               ELOSS=   0.173  '
      SCRPT[15]=' VIBRATION  STRETCH               ELOSS=  -0.363  '
      SCRPT[16]=' VIBRATION  STRETCH               ELOSS=   0.363  ' 
      SCRPT[17]=' VIBRATION  STRETCH               ELOSS=   0.519  '
      SCRPT[18]=' EXC.  TRIPLET                    ELOSS=   7.2    '
      SCRPT[19]=' EXC.  TRIPLET                    ELOSS=   8.6    '
      SCRPT[20]=' EXC. SINGLET         F=.0013     ELOSS=   7.5    '
      SCRPT[21]=' EXC. SINGLET         F=.0150     ELOSS=   8.0    '
      SCRPT[22]=' EXC. SINGLET         F=.1140     ELOSS=   8.5    '
      SCRPT[23]=' EXC. SINGLET         F=.1570     ELOSS=   9.0    '
      SCRPT[24]=' EXC. SINGLET         F=.1710     ELOSS=   9.5    '
      SCRPT[25]=' EXC. SINGLET         F=.1880     ELOSS=  10.0    '
      SCRPT[26]=' EXC. SINGLET         F=.2050     ELOSS=  10.5    '
      SCRPT[27]=' EXC. SINGLET         F=.1930     ELOSS=  11.0    '
      SCRPT[28]=' EXC. SINGLET         F=.1620     ELOSS=  11.5    '
      SCRPT[29]=' EXC. SINGLET         F=.1030     ELOSS=  12.0    '
      SCRPT[30]=' EXC. SINGLET         F=.0670     ELOSS=  12.5    '
      SCRPT[31]=' EXC. SINGLET         F=.0640     ELOSS=  13.0    '
      SCRPT[32]=' EXC. SINGLET         F=.0280     ELOSS=  13.5    '
      SCRPT[33]=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT[34]=' BREMSSTRAHLUNG FROM HYDROGEN ATOM                '
      # CALCULATE POPULATION OF TORSIONAL STATES
      APOP1=math.exp(EIN[1]/AKT)
      APOP2=math.exp(2.0*EIN[1]/AKT)
      APOP3=math.exp(3.0*EIN[1]/AKT)
      APOP4=math.exp(4.0*EIN[1]/AKT)
      APOP5=math.exp(5.0*EIN[1]/AKT)
      APOP6=math.exp(6.0*EIN[1]/AKT)
      APOP7=math.exp(7.0*EIN[1]/AKT)
      APOP8=math.exp(8.0*EIN[1]/AKT)
      APOP9=math.exp(9.0*EIN[1]/AKT)
      APOP10=math.exp(10.0*EIN[1]/AKT)
      APOPGST=1.0
      APOPSUM=APOPGST+APOP1+APOP2+APOP3+APOP4+APOP5+APOP6+APOP7+APOP8+APOP9+APOP10
      APOPGST=1.0/APOPSUM
      APOP1=APOP1/APOPSUM
      APOP2=APOP2/APOPSUM
      APOP3=APOP3/APOPSUM
      APOP4=APOP4/APOPSUM
      APOP5=APOP5/APOPSUM
      APOP6=APOP6/APOPSUM
      APOP7=APOP7/APOPSUM
      APOP8=APOP8/APOPSUM
      APOP9=APOP9/APOPSUM
      APOP10=APOP10/APOPSUM
      #  USE 2 LEVEL APPROXIMATION FOR TORSION
      APOP1=APOP1+APOP2+APOP3+APOP4+APOP5+APOP6+APOP7+APOP8+APOP9+APOP10
      APOPGST=1.0 
      # CALCULATE POPULATION  OF VIBRATIONAL STATES
      # ASSUME ALL STATE DEGENERACIES ARE EQUAL
      APOPV2=math.exp(EIN[3]/AKT)
      APOPV3=math.exp(EIN[5]/AKT)
      APOPV4=math.exp(EIN[7]/AKT)
      APOPGS=1.0+APOPV2+APOPV3+APOPV4
      APOPV2=APOPV2/APOPGS
      APOPV3=APOPV3/APOPGS
      APOPV4=APOPV4/APOPGS
      APOPGS=1.0/APOPGS
      # RENORMALISE GROUND STATE POPULATION ( GIVES CORRECTION THAT
      # ALLOWS FOR VIBRATIONAL EXCITATION FROM EXCITED VIBRATIONAL STATES)
      APOPGS=1.0
      #
      #     EN=-ESTEP/2.0   
      DO 1000 I=1,NSTEP  
      EN=EG[I]                                            
      #     EN=EN+ESTEP    
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      #                                             
      DO 10 J=2,N                                                  
      if(EN <= XEN[J]:
      ) GO TO 20                                         
      10 CONTINUE                                                          
      J=N                                                          
      20 A=(YELM[J]-YELM[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YELM[J]-XEN[J]*YELM[J-1])/(XEN[J-1]-XEN[J])   
      QMOM=(A*EN+B)*1.e-16  
      A=(YELT[J]-YELT[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YELT[J]-XEN[J]*YELT[J-1])/(XEN[J-1]-XEN[J]) 
      QELA=(A*EN+B)*1.e-16
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])                         
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=(A*EN+B)
      # EPSILON = 1.0-YEPS
      PQ2=1.00-PQ2
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
      PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA            
      if(NANISO == 0):
      Q[2][I]=QMOM
      # GROSS IONISATION                                         
      QION[1][I]=0.0
      PEQION[1][I]=0.5
      if(NANISO == 2):
      PEQION[1][I]=0.0 
      if(EN < EION[1]:
      ) GO TO 150
      if(EN > XION(NIOND):
      ) GO TO 123                                
      DO 100 J=2,NIOND                                                  
      if(EN <= XION[J]:
      ) GO TO 110                                       
      100 CONTINUE                                                          
      J=NIOND                                                           
      110 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J]) 
      QION[1][I]=(A*EN+B)*1.e-16 
      GO TO 124
      # USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
      123 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
      124 CONTINUE
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON AT
      # ENERGIES ABOVE  2 * IONISATION ENERGY
      # ANISOTROPIC ANGULAR DISTRIBUTION EQUAL TO ELASTIC ANGULAR DISTRIBUTION
      # AT AN ENERGY OFFSET BY THE IONISATION ENERGY
      if(EN <= (2.0*EION[1]:
      )) GO TO 150
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
      # CALCULATE IONISATION-EXCITATION AND SPLIT IONISATION INTO
      # IONISATION ONLY AND IONISATION +EXCITATION
      150 QION[2][I]=0.0
      PEQION[2][I]=0.50
      if(NANISO == 2):
      PEQIN[2][I]=0.0
      if(EN <= EION[2]:
      ) GO TO 160
      QION[2][I]=12.00/(EION[2]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EION[2]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EION[2]+E[3])
      if(QION[2][I]:
      < 0.0) QION[2][I]=0.0
      # FIND IONISATION ONLY
      QION[1][I]=QION[1][I]-QION[2][I]
      if(EN <= (2.0*EION[2]:
      )) GO TO 160
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      # K-SHELL IONISATION
      160 QION[3][I]=0.0
      PEQION[3][I]=0.5
      if(NANISO == 2):
      PEQION[3][I]=0.0 
      if(EN < EION[3]:
      ) GO TO 170
      DO 161 J=2,NKSH                                                  
      if(EN <= XKSH[J]:
      ) GO TO 162                                       
      161 CONTINUE                                                          
      J=NKSH                                                           
      162 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])                         
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J]) 
      # FACTOR OF 4 FROM NUMBER OF ATOMS ON MOLECULE
      QION[3][I]=4.0*(A*EN+B)*1.e-16 
      # USE ANISOTROPIC SCATTERING FOR PRIMARY IONISATION ELECTRON AT
      # ENERGIES ABOVE  2 * IONISATION ENERGY
      # ANISOTROPIC ANGULAR DISTRIBUTION EQUAL TO ELASTIC ANGULAR DISTRIBUTION
      # AT AN ENERGY OFFSET BY THE IONISATION ENERGY
      if(EN <= (2.0*EION[3]:
      )) GO TO 170
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
      # CORRECT DISSOCIATIVE IONISATION FOR SPLIT INTO K-SHELL
      170 QION[2][I]=QION[2][I]-QION[3][I]
      # ATTACHMENT (NO ATTACHMENT)                                          
      Q[4][I]=0.0                                                        
      # COUNTING IONISATION                                          
      200 Q[5][I]=0.0     
      PEQEL[5][I]=0.5
      if(NANISO == 2):
      PEQEL[5][I]=0.0
      if(EN <= E[3]:
      ) GO TO 210
      # SET COUNTING IONISATION = GROSS IONISATION (LACK OF EXPERIMENTAL DATA)
      Q[5][I]=QION[1][I]+AUGK*QION[3][I]
      Q[5][I]=Q[5][I]-QION[3][I]
      if(EN <= (2.0*E[3]:
      )) GO TO 210
      PEQEL[5][I]=PEQEL[2][(I-IOFFION[1]])
      210 CONTINUE
      #**********************************************************************
      # TEMPORARY MOD FOR RANGE PARAMETERS 
      #      IF(EN > 1000.) QION[1][I]=Q[5][I]
      #********************************************************************* 
      Q[6][I]=0.0                                                        
      # SUPERELASTIC TORSION
      QIN[1][I]=0.0
      PEQIN[1][I]=0.5
      if(NANISO == 2):
      PEQIN[1][I]=0.0
      if(EN == 0.0):
      GO TO 305
      EFAC=math.sqrt(1.0-(EIN[1]/EN))
      QIN[1][I]=0.009*math.log((EFAC+1.0)/(EFAC-1.0))/EN
      QIN[1][I]=APOP1*QIN[1][I]*1.e-16
      if(EN < (5.0*abs(EIN[1]:
      ))) GO TO 305
      if(NANISO == 2):
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]      # TORSION           
      305 QIN[2][I]=0.0
      PEQIN[2][I]=0.5  
      if(NANISO == 2):
      PEQIN[2][I]=0.0                               
      if(EN <= EIN[2]:
      ) GO TO 400   
      EFAC=math.sqrt(1.0-(EIN[2]/EN))
      QIN[2][I]=0.009*math.log((1.0+EFAC)/(1.0-EFAC))/EN
      QIN[2][I]=APOPGST*QIN[2][I]*1.e-16
      if(EN < (5.0*abs(EIN[2]:
      ))) GO TO 400
      if(NANISO == 2):
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]      # SUPERELASTIC VIB B# end MODES
      400 QIN[3][I]=0.0
      PEQIN[3][I]=0.5
      if(NANISO == 2):
      PEQIN[3][I]=0.0
      if(EN == 0.0):
      GO TO 450 
      if((EN+EIN[4]:
      ) > XVIB2(NVIB2)) GO TO 425
      DO 410 J=2,NVIB2
      if((EN+EIN[4]:
      ) <= XVIB2[J]) GO TO 420
      410 CONTINUE
      J=NVIB2
      420 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[3][I]=APOPV2*(EN+EIN[4])*(A*(EN+EIN[4])+B)*1.e-16/EN  
      GO TO 426
      425 QIN[3][I]=APOPV2*YVIB2(NVIB2)*(XVIB2(NVIB2)/EN)*1.e-16
      426 if(EN < (3.0*abs(EIN[3]))) GO TO 450
      if(NANISO == 2):
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]      # VIB B# end MODES 
      450 QIN[4][I]=0.0  
      PEQIN[4][I]=0.5                
      if(NANISO == 2):
      PEQIN[4][I]=0.0                                    
      if(EN <= EIN[4]:
      ) GO TO 500                           
      if(EN > XVIB2(NVIB2):
      ) GO TO 475              
      DO 460 J=2,NVIB2                                                  
      if(EN <= XVIB2[J]:
      ) GO TO 470                                      
      460 CONTINUE                                                          
      J=NVIB2                                                           
      470 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[4][I]=APOPGS*(A*EN+B)*1.e-16   
      GO TO 476 
      475 QIN[4][I]=APOPGS*YVIB2(NVIB2)*(XVIB2(NVIB2)/EN)*1.e-16
      476 if(EN < (3.0*abs(EIN[4]))) GO TO 500
      if(NANISO == 2):
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]      # SUPERELASTIC VIB STRETCH MODES
      500 CONTINUE 
      QIN[5][I]=0.0
      PEQIN[5][I]=0.5
      if(NANISO == 2):
      PEQIN[5][I]=0.0
      if(EN == 0.0):
      GO TO 550
      if((EN+EIN[6]:
      ) > XVIB3(NVIB3)) GO TO 525
      DO 510  J=2,NVIB3
      if((EN+EIN[6]:
      ) <= XVIB3[J]) GO TO 520 
      510 CONTINUE
      J=NVIB3
      520 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[5][I]=APOPV3*(EN+EIN[6])*(A*(EN+EIN[6])+B)*1.e-16/EN  
      GO TO 526
      525 QIN[5][I]=APOPV3*YVIB3(NVIB3)*(XVIB3(NVIB3)/EN)*1.e-16
      526 if(EN < (3.0*abs(EIN[5]))) GO TO 550
      if(NANISO == 2):
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]      # VIB STRETCH MODES
      550 CONTINUE                                                          
      QIN[6][I]=0.0  
      PEQIN[6][I]=0.5
      if(NANISO == 2):
      PEQIN[6][I]=0.0                             
      if(EN <= EIN[6]:
      ) GO TO 600                           
      if(EN > XVIB3(NVIB3):
      ) GO TO 575             
      DO 560 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
      ) GO TO 570                                      
      560 CONTINUE                                                          
      J=NVIB3                                                           
      570 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[6][I]=APOPGS*(A*EN+B)*1.e-16 
      GO TO 576 
      575 QIN[6][I]=APOPGS*YVIB3(NVIB3)*(XVIB3(NVIB3)/EN)*1.e-16  
      576 if(EN < (3.0*abs(EIN[6]))) GO TO 600
      if(NANISO == 2):
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]      # SUPERELASTIC VIB STRETCH MODES
      600 CONTINUE 
      QIN[7][I]=0.0
      PEQIN[7][I]=0.5
      if(NANISO == 2):
      PEQIN[7][I]=0.0
      if(EN == 0.0):
      GO TO 650
      if((EN+EIN[8]:
      ) > XVIB4(NVIB4)) GO TO 625
      DO 610  J=2,NVIB4
      if((EN+EIN[8]:
      ) <= XVIB4[J]) GO TO 620 
      610 CONTINUE
      J=NVIB4
      620 A=(YVIB4[J]-YVIB4[J-1])/(XVIB4[J]-XVIB4[J-1])                     
      B=(XVIB4[J-1]*YVIB4[J]-XVIB4[J]*YVIB4[J-1])/(XVIB4[J-1]-XVIB4[J]) 
      QIN[7][I]=APOPV4*(EN+EIN[8])*(A*(EN+EIN[8])+B)*1.e-16/EN 
      GO TO 626
      625 QIN[7][I]=APOPV4*YVIB4(NVIB4)*(XVIB4(NVIB4)/EN)*1.e-16
      626 if(EN < (3.0*abs(EIN[7]))) GO TO 650
      if(NANISO == 2):
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]      #  VIB STRETCH MODES         
      650 CONTINUE                                                          
      QIN[8][I]=0.0  
      PEQIN[8][I]=0.5 
      if(NANISO == 2):
      PEQIN[8][I]=0.0                         
      if(EN <= EIN[8]:
      ) GO TO 700                           
      if(EN > XVIB4(NVIB4):
      ) GO TO 675           
      DO 660 J=2,NVIB4                                                  
      if(EN <= XVIB4[J]:
      ) GO TO 670                                      
      660 CONTINUE                                                          
      J=NVIB4                                                           
      670 A=(YVIB4[J]-YVIB4[J-1])/(XVIB4[J]-XVIB4[J-1])                     
      B=(XVIB4[J-1]*YVIB4[J]-XVIB4[J]*YVIB4[J-1])/(XVIB4[J-1]-XVIB4[J]) 
      QIN[8][I]=APOPGS*(A*EN+B)*1.e-16 
      GO TO 676   
      675 QIN[8][I]=APOPGS*YVIB4(NVIB4)*(XVIB4(NVIB4)/EN)*1.e-16             
      676 if(EN < (3.0*abs(EIN[8]))) GO TO 700
      if(NANISO == 2):
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]      
      # HIGHER VIBRATIONAL MODES                                              
      700 QIN[9][I]=0.0  
      PEQIN[9][I]=0.5       
      if(NANISO == 2):
      PEQIN[9][I]=0.0                            
      if(EN <= EIN[9]:
      ) GO TO 800                           
      if(EN > XVIB5[NVIB5]:
      ) GO TO 725             
      DO 710 J=2,NVIB5                                                  
      if(EN <= XVIB5[J]:
      ) GO TO 720                                      
      710 CONTINUE                                                          
      J=NVIB5                                                           
      720 A=(YVIB5[J]-YVIB5[J-1])/(XVIB5[J]-XVIB5[J-1])                     
      B=(XVIB5[J-1]*YVIB5[J]-XVIB5[J]*YVIB5[J-1])/(XVIB5[J-1]-XVIB5[J]) 
      QIN[9][I]=(A*EN+B)*1.e-16
      GO TO 726
      725 QIN[9][I]=YVIB5[NVIB5]*(XVIB5[NVIB5]/EN)*1.e-16
      726 if(EN < (3.0*abs(EIN[9]))) GO TO 800
      if(NANISO == 2):
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]      # EXCITATION    TRIPLET  ABOVE XEXC1(NEXC1) SCALE BY 1/EN**3           
      800 QIN[10][I]=0.0 
      PEQIN[10][I]=0.5  
      if(NANISO == 2):
      PEQIN[10][I]=0.0                             
      if(EN <= EIN[10]:
      ) GO TO 850     
      if(EN > XEXC1(NEXC1):
      ) GO TO 830                                  
      DO 810 J=2,NEXC1                                                  
      if(EN <= XEXC1[J]:
      ) GO TO 820                                      
      810 CONTINUE                                                          
      J=NEXC1                                                           
      820 A=(YEXC1[J]-YEXC1[J-1])/(XEXC1[J]-XEXC1[J-1])                     
      B=(XEXC1[J-1]*YEXC1[J]-XEXC1[J]*YEXC1[J-1])/(XEXC1[J-1]-XEXC1[J]) 
      QIN[10][I]=(A*EN+B)*1.e-16  
      GO TO 840
      # SCALE BY 1/E**3
      830 QIN[10][I]=YEXC1(NEXC1)*(XEXC1(NEXC1)/EN)**3*1.e-16
      840 if(EN <= (2.0*EIN[10])) GO TO 850
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      # EXCITATION  TRIPLET ABOVE XEXC2(NEXC2) SCALE BY 1/E**3
      850 QIN[11][I]=0.0 
      PEQIN[11][I]=0.5              
      if(NANISO == 2):
      PEQIN[11][I]=0.0                                   
      if(EN <= EIN[11]:
      ) GO TO 900    
      if(EN > XEXC2(NEXC2):
      ) GO TO 880                                  
      DO 860 J=2,NEXC2                                                  
      if(EN <= XEXC2[J]:
      ) GO TO 870                                      
      860 CONTINUE                                                          
      J=NEXC2                                                           
      870 A=(YEXC2[J]-YEXC2[J-1])/(XEXC2[J]-XEXC2[J-1])                     
      B=(XEXC2[J-1]*YEXC2[J]-XEXC2[J]*YEXC2[J-1])/(XEXC2[J-1]-XEXC2[J]) 
      QIN[11][I]=(A*EN+B)*1.e-16
      GO TO 890                                         
      #  SCALE BY 1/E**3
      880 QIN[11][I]=YEXC2(NEXC2)*(XEXC2(NEXC2)/EN)**3*1.e-16
      890 if(EN <= (2.0*EIN[11])) GO TO 900
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]   
      # EXCITATION   F=0.00131                                      
      900 QIN[12][I]=0.0              
      PEQIN[12][I]=0.0                                   
      if(EN <= EIN[12]:
      ) GO TO 905
      QIN[12][I]=.00131/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[12])*ASING
      if(QIN[12][I]:
      < 0.0) QIN[12][I]=0.0
      if(EN <= (2.0*EIN[12]:
      )) GO TO 905
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]     
      # EXCITATION   F=0.0150                                       
      905 QIN[13][I]=0.0              
      PEQIN[13][I]=0.0                                   
      if(EN <= EIN[13]:
      ) GO TO 910
      QIN[13][I]=.01500/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[13])*ASING
      if(QIN[13][I]:
      < 0.0) QIN[13][I]=0.0
      if(EN <= (2.0*EIN[13]:
      )) GO TO 910
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]     
      # EXCITATION   F=0.11400                                      
      910 QIN[14][I]=0.0              
      PEQIN[14][I]=0.0                                   
      if(EN <= EIN[14]:
      ) GO TO 915
      QIN[14][I]=.11400/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[14])*ASING
      if(QIN[14][I]:
      < 0.0) QIN[14][I]=0.0
      if(EN <= (2.0*EIN[14]:
      )) GO TO 915
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]     
      # EXCITATION   F=0.15700                                      
      915 QIN[15][I]=0.0              
      PEQIN[15][I]=0.0                                   
      if(EN <= EIN[15]:
      ) GO TO 920
      QIN[15][I]=.15700/(EIN[15]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[15]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[15])*ASING
      if(QIN[15][I]:
      < 0.0) QIN[15][I]=0.0
      if(EN <= (2.0*EIN[15]:
      )) GO TO 920
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
      # EXCITATION   F=0.17100                                      
      920 QIN[16][I]=0.0              
      PEQIN[16][I]=0.0                                   
      if(EN <= EIN[16]:
      ) GO TO 925
      QIN[16][I]=.17100/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[16])*ASING
      if(QIN[16][I]:
      < 0.0) QIN[16][I]=0.0
      if(EN <= (2.0*EIN[16]:
      )) GO TO 925
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]     
      # EXCITATION   F=0.18800                                      
      925 QIN[17][I]=0.0              
      PEQIN[17][I]=0.0                                   
      if(EN <= EIN[17]:
      ) GO TO 930
      QIN[17][I]=.18800/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[17])*ASING
      if(QIN[17][I]:
      < 0.0) QIN[17][I]=0.0
      if(EN <= (2.0*EIN[17]:
      )) GO TO 930
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]    
      # EXCITATION   F=0.20500                                      
      930 QIN[18][I]=0.0              
      PEQIN[18][I]=0.0                                   
      if(EN <= EIN[18]:
      ) GO TO 935
      QIN[18][I]=.20500/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[18])*ASING
      if(QIN[18][I]:
      < 0.0) QIN[18][I]=0.0
      if(EN <= (2.0*EIN[18]:
      )) GO TO 935
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]    
      # EXCITATION   F=0.19300                                      
      935 QIN[19][I]=0.0              
      PEQIN[19][I]=0.0                                   
      if(EN <= EIN[19]:
      ) GO TO 940
      QIN[19][I]=.19300/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[19])*ASING
      if(QIN[19][I]:
      < 0.0) QIN[19][I]=0.0
      if(EN <= (2.0*EIN[19]:
      )) GO TO 940
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]    
      # EXCITATION   F=0.16200                                      
      940 QIN[20][I]=0.0              
      PEQIN[20][I]=0.0                                   
      if(EN <= EIN[20]:
      ) GO TO 945
      QIN[20][I]=.16200/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[20])*ASING
      if(QIN[20][I]:
      < 0.0) QIN[20][I]=0.0
      if(EN <= (2.0*EIN[20]:
      )) GO TO 945
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]    
      # EXCITATION   F=0.10300                                      
      945 QIN[21][I]=0.0              
      PEQIN[21][I]=0.0                                   
      if(EN <= EIN[21]:
      ) GO TO 950
      QIN[21][I]=.10300/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[21])*ASING
      if(QIN[21][I]:
      < 0.0) QIN[21][I]=0.0
      if(EN <= (2.0*EIN[21]:
      )) GO TO 950
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]    
      # EXCITATION   F=0.06700                                      
      950 QIN[22][I]=0.0              
      PEQIN[22][I]=0.0                                   
      if(EN <= EIN[22]:
      ) GO TO 955
      QIN[22][I]=.06700/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[22])*ASING
      if(QIN[22][I]:
      < 0.0) QIN[22][I]=0.0
      if(EN <= (2.0*EIN[22]:
      )) GO TO 955
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]    
      # EXCITATION   F=0.06400                                      
      955 QIN[23][I]=0.0              
      PEQIN[23][I]=0.0                                   
      if(EN <= EIN[23]:
      ) GO TO 960
      QIN[23][I]=.06400/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[23])*ASING
      if(QIN[23][I]:
      < 0.0) QIN[23][I]=0.0
      if(EN <= (2.0*EIN[23]:
      )) GO TO 960
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]    
      # EXCITATION   F=0.02800                                      
      960 QIN[24][I]=0.0              
      PEQIN[24][I]=0.0                                   
      if(EN <= EIN[24]:
      ) GO TO 965
      QIN[24][I]=.02800/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN[24])*ASING
      if(QIN[24][I]:
      < 0.0) QIN[24][I]=0.0
      if(EN <= (2.0*EIN[24]:
      )) GO TO 965
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      965 CONTINUE    
      # LOAD BREMSSTRAHLUNG X-SECTIONS
      QIN[25][I]=0.0
      QIN[26][I]=0.0
      if(EN <= 1000.):
      GO TO 990
      DO 972 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 973
      972 CONTINUE
      J=NBREM
      973 A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])            
      A1=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])                                
      QIN[25][I]=math.exp(A*EN+B)*4.0*1.e-24
      QIN[26][I]=math.exp(A1*EN+B1)*10.0*1.e-24
      990 CONTINUE
      #
      QSNG=QIN[12][I]+QIN[13][I]+QIN[14][I]+QIN[15][I]+QIN[16][I]+QIN[17][I]+QIN[18][I]+QIN[19][I]+QIN[20][I]+QIN[21][I]+QIN[22][I]+QIN[23][I]+QIN[24][I]
      QTRP=QIN[10][I]+QIN[11][I] 
      QTOTEXC=QTRP+QSNG
      Q[1][I]=Q[2][I]+Q[5][I]+Q[4][I]+QIN[1][I]+QIN[2][I]+QIN[3][I]+QIN[4][I]+  QIN[5][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]+QIN[9][I]+QEXCTOT
      #    /QIN[5][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]+QIN[9][I]+QEXCTOT+
      #    /QIN[25][I]+QIN[26][I]
      #     WRITE(6,991) EN,QTRP,QSNG,QTOTEXC
      # 991 print(' EN=','%.4f' % ,' QTRP=','%.4f' % ,' QSNG=','%.4f' % ,' QEXCTOT=',
      #    /'%.4f' % )
      c     WRITE(6,992) EN,QION[1][I],QION[2][I],QION[3][I]
      # 992 print(' EN=','%.4f' % ,' ION1=','%.4f' % ,' ION2=','%.4f' % ,' ION3=','%.4f' % )
      1000 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      DO 997 K=14,NIN
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 998
      # endif
      997 CONTINUE
      998 CONTINUE
      if(EFINAL > 1000.):
      NIN=NIN+2 
      return                                                            
      # end    
'''
def GAS12(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT, QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4
      global DEN
      ECHARG=conf.ECHARG
      EMASS=conf.EMASS
      AMU=conf.AMU
      PIR2=conf.PIR2
      NGAS=conf.NGAS
      NSTEP=conf.NSTEP
      NANISO=conf.NANISO
      EFINAL=conf.EFINAL
      ESTEP=conf.ESTEP
      AKT=conf.AKT
      ARY=conf.ARY
      TEMPC=conf.TEMPC
      TORR=conf.TORR
      IPEN=conf.IPEN
      EG=conf.E
      EROOT=conf.EROOT
      QT1=conf.QT1
      QT2=conf.QT2
      QT3=conf.QT3
      QT4=conf.QT4
      DEN=conf.DEN

      QATT=numpy.reshape(QATT,(8+1,20000+1))
      QNULL=numpy.reshape(QNULL,(10+1,20000+1))
      SCLN=numpy.reshape(SCLN,(10+1))
      ESPLIT=numpy.reshape(ESPLIT,(5+1,20+1))
      PEQEL=numpy.reshape(PEQEL,(6+1,20000+1))
      PEQIN=numpy.reshape(PEQIN,(250+1,20000+1))
      KIN=numpy.reshape(KIN,(250+1))
      KEL=numpy.reshape(KEL,(6+1))
      QION=numpy.reshape(QION,(30+1,20000+1))
      PEQION=numpy.reshape(PEQION,(30+1,20000+1))
      EION=numpy.reshape(EION,(30+1))
      EOBY=numpy.reshape(EOBY,(30+1))
      NC0=numpy.reshape(NC0,(30+1))
      EC0=numpy.reshape(EC0,(30+1))
      WKLM=numpy.reshape(WKLM,(30+1))
      EFL=numpy.reshape(EFL,(30+1))
      NG1=numpy.reshape(NG1,(30+1))
      EG1=numpy.reshape(EG1,(30+1))
      NG2=numpy.reshape(NG2,(30+1))
      EG2=numpy.reshape(EG2,(30+1))
      IZBR=numpy.reshape(IZBR,(250+1))
      LEGAS=numpy.reshape(LEGAS,(30+1))
      ISHELL=numpy.reshape(ISHELL,(30+1))
      Q=numpy.zeros((6+1,20000+1))
      QIN=numpy.reshape(QIN,(250+1,20000+1))
      E=numpy.reshape(E,(6+1))
      EIN=numpy.reshape(EIN,(250+1))
      PENFRA=numpy.reshape(PENFRA,(3+1,250+1))
      PJ=numpy.zeros((220+1))
      XEN=numpy.zeros((158+1))
      YMOM=numpy.zeros((158+1))
      YEL=numpy.zeros((158+1))
      YVBMOM=numpy.zeros((158+1))
      YVBEL=numpy.zeros((158+1))
      YEPS=numpy.zeros((158+1))
      XION1=numpy.zeros((63+1))
      YION1=numpy.zeros((63+1))
      XION2=numpy.zeros((66+1))
      YION2=numpy.zeros((66+1))
      XION3=numpy.zeros((66+1))
      YION3=numpy.zeros((66+1))
      XION4=numpy.zeros((41+1))
      YION4=numpy.zeros((41+1))
      XION5=numpy.zeros((41+1))
      YION5=numpy.zeros((41+1))
      XION6=numpy.zeros((40+1))
      YION6=numpy.zeros((40+1))
      XION7=numpy.zeros((37+1))
      YION7=numpy.zeros((37+1))
      XION8=numpy.zeros((30+1))
      YION8=numpy.zeros((30+1))
      XION9=numpy.zeros((27+1))
      YION9=numpy.zeros((27+1))
      XATT=numpy.zeros((68+1))
      YATT=numpy.zeros((68+1))
      XV2=numpy.zeros((17+1))
      YV2=numpy.zeros((17+1))
      X2V2=numpy.zeros((19+1))
      Y2V2=numpy.zeros((19+1))
      XV1=numpy.zeros((26+1))
      YV1=numpy.zeros((26+1))
      X3V2=numpy.zeros((11+1))
      Y3V2=numpy.zeros((11+1))
      XV3=numpy.zeros((11+1))
      YV3=numpy.zeros((11+1))
      XVPD3=numpy.zeros((14+1))
      YVPD3=numpy.zeros((14+1))
      XV130=numpy.zeros((12+1))
      YV130=numpy.zeros((12+1))
      XVPD4=numpy.zeros((14+1))
      YVPD4=numpy.zeros((14+1))
      XVPD5=numpy.zeros((11+1))
      YVPD5=numpy.zeros((11+1))
      XVPD6=numpy.zeros((11+1))
      YVPD6=numpy.zeros((11+1))
      XVPD7=numpy.zeros((11+1))
      YVPD7=numpy.zeros((11+1))
      XVPD8=numpy.zeros((11+1))
      YVPD8=numpy.zeros((11+1))
      XVPD9=numpy.zeros((11+1))
      YVPD9=numpy.zeros((11+1))
      XVPDH=numpy.zeros((9+1))
      YVPDH=numpy.zeros((9+1))
      XTRP1=numpy.zeros((11+1))
      YTRP1=numpy.zeros((11+1))
      XTRP2=numpy.zeros((11+1))
      YTRP2=numpy.zeros((11+1))
      XKSHC=numpy.zeros((83+1))
      YKSHC=numpy.zeros((83+1))
      XKSHO=numpy.zeros((81+1))
      YKSHO=numpy.zeros((81+1))
      IOFFN=numpy.zeros((144+1))
      IOFFION=numpy.zeros((11+1))
      Z6T=numpy.zeros((25+1))
      Z8T=numpy.zeros((25+1))
      EBRM=numpy.zeros((25+1))
      # CHARACTER*50 SCRPT(300),SCRPTN[10]                                
      # CHARACTER*25 NAME 
      # ELASTIC +ROTATIONAL                                                
      XEN=[0]+[1.e-6,.001,.002,.004,.007,.010,.014,.020,.030,.040,     0.05,0.06,0.08,0.10,.125,.150,.175,0.20,0.25,0.30,                0.35,0.40,0.50,0.60,0.70,0.85,1.00,1.25,1.50,1.70,                1.90,2.10,2.30,2.50,2.80,3.00,3.30,3.60,3.80,4.00,                4.50,5.00,5.50,6.00,7.00,8.00,10.0,12.0,15.0,17.0,                20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,120.,150.,170.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1500.,2000.,3000.,4000.,5000.,6000.,8000.,1.0e4,1.25e4,1.5e4,1.75e4,2.0e4,2.5e4,3.0e4,3.5e4,4.0e4,4.5e4,5.0e4,6.0e4,7.0e4,8.0e4,9.0e4,1.0e5,1.25e5,1.5e5,1.75e5,2.0e5,2.5e5,3.0e5,3.5e5,4.0e5,4.5e5,5.0e5,6.0e5,7.0e5,8.0e5,9.0e5,1.0e6,1.25e6,1.5e6,1.75e6,2.0e6,2.5e6,3.0e6,3.5e6,4.0e6,4.5e6,5.0e6,6.0e6,7.0e6,8.0e6,9.0e6,1.0e7,1.25e7,1.5e7,1.75e7,2.0e7,2.5e7,3.0e7,3.5e7,4.0e7,4.5e7,5.0e7,6.0e7,7.0e7,8.0e7,9.0e7,1.0e8,1.25e8,1.5e8,1.75e8,2.0e8,2.5e8,3.0e8,3.5e8,4.0e8,4.5e8,5.0e8,6.0e8,7.0e8,8.0e8,9.0e8,1.0e9]
      # GROUND STATE AND BEND MODE ELASTIC + ROTATION.  MOMENTUM TRANSFER
      #  AT 293.15 KELVIN     
      YMOM=[0]+[148.,148.,146.,141.,134.,128.,119.,109.,95.0,85.0,      76.5,69.5,59.0,52.5,47.5,41.0,36.0,30.0,22.0,16.2, 12.8,10.6,8.20,6.45,5.35,4.30,3.90,3.65,3.60,3.65,                3.75,3.85,4.00,4.20,4.60,4.90,5.30,5.80,6.00,6.00,                5.50,5.10,5.00,5.20,6.10,7.30,8.80,9.80,10.5,10.5,                9.80,8.50,7.00,5.10,4.00,3.50,3.10,2.90,2.70,2.50,2.20,1.88,1.67,1.50,1.25,1.04,.832,.682,.571,.486,.367,.287,.232,.192,.161,.0819,.0501,.0247,.0149,.0100, .00721,.00430,.00288,.00192,.00138,.00105,8.23e-4,5.5e-4,3.96e-4,3.0e-4,2.36e-4,1.91e-4,1.59e-4,1.15e-4,8.73e-5,6.90e-5,5.62e-5,4.68e-5,3.19e-5,2.34e-5,1.81e-5,1.45e-5,1.00e-5,7.48e-6,5.86e-6,4.75e-6,3.95e-6,3.36e-6,2.54e-6,2.00e-6,1.63e-6,1.37e-6,1.16e-6,8.32e-7,6.28e-7,4.94e-7,4.00e-7,2.80e-7,2.08e-7,1.62e-7,1.30e-7,1.06e-7,8.89e-8,6.51e-8,4.98e-8,3.95e-8,3.21e-8,2.66e-8,1.79e-8,1.29e-8,9.73e-9,7.63e-9,5.06e-9,3.61e-9,2.71e-9,2.11e-9,1.69e-9,1.38e-9,9.79e-10,7.28e-10,5.63e-10,4.48e-10,3.65e-10,2.35e-10,1.64e-10,1.21e-10,9.27e-11,5.95e-11,4.13e-11,3.04e-11,2.33e-11,1.84e-11,1.49e-11,1.03e-11,7.61e-12,5.83e-12,4.60e-12,3.73e-12]
      # GROUND STATE AND BEND MODE ELASTIC + ROTATION.  AT 293.15 KELVIN     
      YEL=[0]+[148.,148.,146.,141.,135.,129.,120.,110.,96.0,86.0,      77.5,70.5,60.0,53.5,48.5,42.0,37.0,31.5,24.8,20.4, 17.4,15.5,13.0,10.7,9.20,7.50,6.30,5.30,4.65,4.46,                4.45,4.45,4.60,4.75,5.10,5.55,6.80,7.90,8.50,7.80,                6.25,6.15,6.60,7.10,8.20,9.60,11.5,13.1,14.0,14.2,                14.3,14.4,14.0,12.2,10.4,9.20,8.20,7.75,7.40,7.00,6.25,5.50,5.10,4.75,4.25,3.85,3.56,3.24,2.99,2.77,2.42,2.16,1.95,1.78,1.63,1.16,.907,.630,.484,.393,.331,.252,.204,.165,.139,.120,.106,.0865,.0731,.0636,.0565,.0509,.0465,.0398,.0350,.0317,.0286,.0264,.0224,.0197,.0178,.0164,.0145,.0132,.0123,.0116,.0111,.0107,.0101,.00967,.00937,.00915,.00897,.00868,.00849,.00837,.00829,.00818,.00812,.00808,.00805,.00803,.00801,.00799,.00798,.00797,.00797,.007965,.007957,.007954,.007951,.007951,.007948,.007948,.007948,.007948,.007946,.007945,*20*[.007945]]
      # ELASTIC FOR BEND MODE VIBRATIONS.   MOMENTUM TRANSFER     
      YVBMOM=[0]+[148.,148.,146.,141.,134.,128.,119.,109.,95.0,85.0,    76.5,69.5,59.0,53.5,50.0,46.5,45.5,45.0,43.0,37.0, 28.5,22.5,16.0,11.5,8.95,6.80,5.80,5.05,4.80,4.65,                4.65,4.70,4.80,5.00,5.35,5.65,6.00,6.20,6.20,6.10, 5.50,5.10,5.00,5.20,6.10,7.30,8.80,9.80,10.5,10.5,                9.80,8.50,7.00,5.10,4.00,3.50,3.10,2.90,2.70,2.50,2.20,1.88,1.67,1.50,1.25,1.04,.832,.682,.571,.486,.367,.287,.232,.192,.161,.0819,.0501,.0247,.0149,.0100, .00721,.00430,.00288,.00192,.00138,.00105,8.23e-4,5.5e-4,3.96e-4,3.0e-4,2.36e-4,1.91e-4,1.59e-4,1.15e-4,8.73e-5,6.90e-5,5.62e-5,4.68e-5,3.19e-5,2.34e-5,1.81e-5,1.45e-5,1.00e-5,7.48e-6,5.86e-6,4.75e-6,3.95e-6,3.36e-6,2.54e-6,2.00e-6,1.63e-6,1.37e-6,1.16e-6,8.32e-7,6.28e-7,4.94e-7,4.00e-7,2.80e-7,2.08e-7,1.62e-7,1.30e-7,1.06e-7,8.89e-8,6.51e-8,4.98e-8,3.95e-8,3.21e-8,2.66e-8,1.79e-8,1.29e-8,9.73e-9,7.63e-9,5.06e-9,3.61e-9,2.71e-9,2.11e-9,1.69e-9,1.38e-9,9.79e-10,7.28e-10,5.63e-10,4.48e-10,3.65e-10,2.35e-10,1.64e-10,1.21e-10,9.27e-11,5.95e-11,4.13e-11,3.04e-11,2.33e-11,1.84e-11,1.49e-11,1.03e-11,7.61e-12,5.83e-12,4.60e-12,3.73e-12]
      # ELASTIC FOR BEND MODE VIBRATIONS.      
      YVBEL=[0]+[148.,148.,146.,141.,135.,129.,120.,110.,96.0,86.0,     77.5,70.5,60.0,54.5,51.1,47.6,46.8,47.2,48.5,46.6, 38.7,32.9,25.4,19.1,15.4,11.9,9.37,7.33,6.20,5.68,                5.52,5.43,5.52,5.65,5.93,6.40,7.70,8.44,8.78,7.93,     6.25,6.15,6.60,7.10,8.20,9.60,11.5,13.1,14.0,14.2,                14.3,14.4,14.0,12.2,10.4,9.20,8.20,7.75,7.40,7.00,6.25,5.50,5.10,4.75,4.25,3.85,3.56,3.24,2.99,2.77,2.42,2.16,1.95,1.78,1.63,1.16,.907,.630,.484,.393,.331,.252,.204,.165,.139,.120,.106,.0865,.0731,.0636,.0565,.0509,.0465,.0398,.0350,.0317,.0286,.0264,.0224,.0197,.0178,.0164,.0145,.0132,.0123,.0116,.0111,.0107,.0101,.00967,.00937,.00915,.00897,.00868,.00849,.00837,.00829,.00818,.00812,.00808,.00805,.00803,.00801,.00799,.00798,.00797,.00797,.007965,.007957,.007954,.007951,.007951,.007948,.007948,.007948,.007948,.007946,.007945,*20*[.007945]]
      # EPSILON FOR ELASTIC ANGULAR DISTRIBUTION
      # EPSILON= 1.0-YEPS
      YEPS=[0]+[1.0,.99999,.9999,.999,.98889,.98838,.98751,.98637,.98437,.98256,.98065,.97873,.97500,.97197,.96908,.96429,.95947,.92864,.83162,.69698,.61559,.54634,.47845,.44409,.41864,.40901,.46393,.55266,.66891,.73158,.76665,.79940,.80584,.82736,.85357,.82540,.67623,.61361,.57544,.66197,.82116,.74722,.64577,.61117,.62691,.64971,.65638,.63267,.63530,.62080,.54823,.42904,.32703,.24494,.21449,.21081,.20872,.20537,.19735,.19081,.18652,.17814,.16660,.15748,.14114,.12395,.099839,.085294,.074236,.065563,.052933,.044215,.037873,.033074,.029321,.018575,.013522,.008720,.006419,.005074,.00419,.00311,.00247,.00196,.001619,.001393,.001209,.000954,7.917e-4,6.736e-4,5.847e-4,5.164e-4,4.637e-4,3.818e-4,3.224e-4,2.758e-4,2.454e-4,2.182e-4,1.701e-4,1.385e-4,1.162e-4,9.92e-5,7.50e-5,6.02e-5,4.96e-5,4.19e-5,3.58e-5,3.12e-5,2.44e-5,1.97e-5,1.63e-5,1.37e-5,1.17e-5,8.44e-6,6.34e-6,4.95e-6,3.98e-6,2.74e-6,2.00e-6,1.53e-6,1.21e-6,9.78e-7,8.09e-7,5.79e-7,4.36e-7,3.39e-7,2.72e-7,2.23e-7,1.46e-7,1.026e-7,7.610e-8,5.868e-8,3.796e-8,2.652e-8,1.955e-8,1.499e-8,1.186e-8,9.60e-9,6.65e-9,4.87e-9,3.71e-9,2.91e-9,2.35e-9,1.48e-9,1.01e-9,7.34e-10,5.55e-10,3.48e-10,2.38e-10,1.72e-10,1.30e-10,1.02e-10,8.2e-11,5.6e-11,4.0e-11,3.0e-11,2.4e-11,1.9e-11]
      #      
      # V(010)  BEND MODE  ( ANALYTICAL DIPOLE FUNCTION AT THRESHOLD)
      # ABOVE 70EV SCALED BY 1/E
      XV2=[0]+[.08275,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,8.00,10.0,15.0,20.0,30.0,50.0,70.0]
      YV2=[0]+[0.00,0.00,0.24,0.48,1.29,1.70,1.70,1.17,0.74,0.42,0.01,0.08,0.05,0.08,0.12,0.07,.001]
      # V(020)  BEND MODE HARMONIC  RESONANCE    ABOVE 70EV SCALED BY 1/E
      X2V2=[0]+[.15937,0.18,0.50,1.00,2.00,3.00,3.50,3.80,4.00,4.50,5.00,6.00,8.00,10.0,15.0,20.0,30.0,50.0,70.0]
      Y2V2=[0]+[0.00,0.02,0.01,.003,.025,0.09,0.31,0.44,0.56,0.49,0.35,0.17,0.08,0.10,0.02,.008,.015,.008,.001]
      # V(100) SYMMETRIC STRETCH                ABOVE 70EV SCALED BY 1/E   
      XV1=[0]+[.17211,0.18,0.20,0.23,0.25,0.30,0.40,0.50,0.60,1.00,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,8.00,10.0,15.0,20.0,30.0,50.0,70.0]
      YV1=[0]+[0.00,.475,.790,0.91,0.91,0.82,0.58,0.43,0.34,0.32,0.38,0.66,0.89,1.27,1.32,1.04,0.53,0.18,.084,.075,            .077,.030,.009,.030,.008,.001]
      # V(030) + V(110)                          ABOVE 10EV SCALED BY 1/E  
      X3V2=[0]+[.251,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      Y3V2=[0]+[0.00,0.00,0.01,0.17,0.36,0.58,0.58,0.36,0.17,0.01,.001]
      # V(001) ASYMMETRIC STRETCH  (ANALYTICAL DIPOLE FUNCTION AT THRESHOLD)
      # ABOVE 10EV SCALED BY 1/E 
      XV3=[0]+[.29126,2.00,3.00,3.50,3.80,4.00,4.50,5.00,6.00,8.00,10.0]
      YV3=[0]+[0.00,0.00,.002,.005,.010,.005,.002,.001,.001,.001,.001]
      # V(040) + V(120) + V(200)  POLYAD 3        ABOVE 10EV SCALED BY 1/E
      XVPD3=[0]+[.335,0.35,0.50,0.80,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]
      YVPD3=[0]+[0.00,0.09,.035,0.02,0.02,0.02,0.21,0.43,0.70,0.70,0.43,0.21,0.05,.020]
      #  V(130) + V(210)                          ABOVE 20EV SCALED BY 1/E  
      XV130=[0]+[0.422,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0,20.0]               
      YV130=[0]+[0.00,0.00,.005,0.10,0.22,0.35,0.35,0.22,0.10,.025,.005,.002]
      #  POLYAD 4                                ABOVE 10EV SCALED BY 1/E
      XVPD4=[0]+[0.505,0.55,0.65,1.00,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]          
      YVPD4=[0]+[0.00,.0017,.0005,.0001,.0001,.005,0.12,0.24,0.40,0.40,0.24,0.13,0.01,.001]
      #  POLYAD 5                                ABOVE 10EV SCALED BY 1/E 
      XVPD5=[0]+[0.685,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      YVPD5=[0]+[0.00,0.00,.003,0.07,0.14,0.24,0.24,0.14,0.08,.006,.001]
      #  POLYAD 6                                ABOVE 10EV SCALED BY 1/E 
      XVPD6=[0]+[0.825,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      YVPD6=[0]+[0.00,0.00,.001,0.05,0.10,0.16,0.16,0.10,0.05,.004,.001]
      #  POLYAD 7                                ABOVE 10EV SCALED BY 1/E
      XVPD7=[0]+[0.995,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      YVPD7=[0]+[0.00,0.00,.001,0.03,0.06,0.10,0.10,0.06,0.03,.003,.001]
      #  POLYAD 8                                ABOVE 10EV SCALED BY 1/E
      XVPD8=[0]+[1.160,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      YVPD8=[0]+[0.00,0.00,.001,0.03,0.06,0.10,0.10,0.06,0.03,.003,.001]
      #  POLYAD 9                                ABOVE 10EV SCALED BY 1/E
      XVPD9=[0]+[1.320,2.00,2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0]                         
      YVPD9=[0]+[0.00,0.00,.001,0.03,0.06,0.10,0.10,0.06,0.03,.003,.001]
      #  SUM HIGHER POLYADS                      ABOVE 10EV SCALED BY 1/E
      XVPDH=[0]+[2.50,3.00,3.50,3.80,4.00,4.50,5.00,6.00,10.0] 
      YVPDH=[0]+[0.00,0.01,0.36,0.58,0.58,0.36,0.16,.045,.001]
      # FROM RAP AND BRIGLIA ( SCALED BY 1.031 FROM INCREASE IN CO2
      #                              IONISATION X-SEC)
      # ABOVE 10EV SCALED BY 1/E**3
      XATT=[0]+[3.30,3.40,3.50,3.60,3.70,3.80,3.90,4.00,4.10,4.20,4.30,4.40,4.50,4.60,4.70,4.80,4.90,5.00,5.10,5.20,5.30,5.40,5.50,5.60,5.70,5.80,5.90,6.00,6.10,6.20,6.30,6.40,6.50,6.60,6.70,6.80,6.90,7.00,7.10,7.20,  7.30,7.40,7.50,7.60,7.70,7.80,7.90,8.00,8.10,8.20, 8.30,8.40,8.50,8.60,8.70,8.80,8.90,9.00,9.10,9.20, 9.30,9.40,9.50,9.60,9.70,9.80,9.90,10.0]
      YATT=[0]+[.0,1.81e-5,6.35e-5,1.45e-4,2.81e-4,5.44e-4,8.43e-4,1.09e-3,1.32e-3,1.45e-3,1.53e-3,1.40e-3,1.25e-3,1.01e-3,7.98e-4,6.17e-4,4.54e-4,2.91e-4,2.00e-4,1.36e-4,9.98e-5,6.35e-5,2.72e-5,1.81e-5,9.07e-6,1.00e-6,9.07e-6,1.81e-5,2.72e-5,4.54e-5,6.35e-5,1.09e-4,1.45e-4,2.08e-4,2.99e-4,3.99e-4,5.44e-4,9.25e-4,9.25e-4,1.18e-3,1.49e-3,1.84e-3,2.23e-3,2.75e-3,3.22e-3,3.68e-3,4.08e-3,4.37e-3,4.41e-3,4.26e-3,3.92e-3,3.46e-3,2.92e-3,2.22e-3,1.77e-3,1.40e-3,1.05e-3,8.07e-4,6.35e-4,4.99e-4,3.80e-4,2.99e-4,2.36e-4,1.81e-4,1.36e-4,1.09e-4,8.17e-5,1.00e-6]
      # USE 1/EN**2 EXTRAPOLATION ABOVE 30EV
      XTRP1=[0]+[8.89,10.0,11.0,12.0,13.0,15.0,17.0,20.0,23.0,27.0,30.0]
      YTRP1=[0]+[0.00,.110,.201,.231,.248,.270,.275,.248,.206,.151,.122]
      #  USE 1/E**2 EXTRAPOLATION ABOVE 36EV
      XTRP2=[0]+[11.3,12.0,13.0,14.0,16.0,18.0,21.0,24.0,28.0,31.0,36.0]
      YTRP2=[0]+[0.00,.322,.662,.772,.873,.919,.919,.873,.689,.562,.417]
      # IONISATION VALUES ABOVE 1KEV GENERATED BY BORN BETHE IN SUB)   
      # FROM RAPP, LINDSAY AND RIEKE ALSO BB THEORY
      #C    XION/13.776,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,
      #    /19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,      
      #    /28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,
      #    /60.0,65.0,70.0,75.0,80.0,85.0,90.0,100.,110.,130.,
      #    /140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,
      #    /450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,
      #    /950.,1000./                                           
      # GROSS IONISATION  
      #     YION/0.00,.055,.097,.135,.174,.215,.255,.293,.333,.373,
      #    /.428,.452,.577,.623,.676,.727,.777,.828,.880,1.14,      
      #    /1.37,1.54,1.70,1.84,1.96,2.07,2.19,2.45,2.67,2.84,         
      #    /3.02,3.16,3.27,3.36,3.45,3.51,3.56,3.64,3.66,3.65,
      #    /3.63,3.52,3.43,3.32,3.21,3.05,2.97,2.82,2.58,2.43,
      #    /2.23,2.09,1.96,1.85,1.77,1.68,1.61,1.53,1.45,1.41,                
      #    /1.36,1.30/                                      
      # COUNTING IONISATION
      #     YINC/0.00,.055,.097,.135,.174,.215,.255,.293,.333,.373,
      #    /.428,.452,.577,.623,.676,.727,.777,.828,.880,1.14,      
      #    /1.37,1.54,1.70,1.84,1.96,2.07,2.19,2.45,2.67,2.84,         
      #    /3.01,3.14,3.26,3.33,3.43,3.48,3.54,3.62,3.63,3.62,
      #    /3.60,3.48,3.40,3.29,3.17,3.02,2.94,2.79,2.55,2.41,
      #    /2.21,2.08,1.94,1.84,1.75,1.66,1.60,1.51,1.44,1.40,                
      #    /1.35,1.29/ 
      # 
      # IONISATION VALUES ABOVE 1KEV GENERATED BY BORN BETHE IN SUB)   
      # FROM RAPP, LINDSAY AND RIEKE ALSO BB THEORY
      XION1=[13.776,14.5,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,26.0,      28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]                                           
      # IONISATION CO2+ ( INCLUDING EXCITED STATES A2PIu and B2SIGMA+u )
      YION1=[0.00,.056,.100,.139,.179,.221,.263,.302,.343,.384,.441,.466,.594,.642,.696,.749,.800,.853,.906,1.05,1.21,1.32,1.40,1.47,1.55,1.63,1.70,1.84,1.94,2.00,2.06,2.10,2.13,2.15,2.19,2.20,2.22,2.23,2.25,2.23, 2.23,2.19,2.12,2.08,2.01,1.95,1.87,1.83,1.75,1.62,1.54,1.43,1.35,1.27,1.21,1.16,1.10,1.06,1.01,.964,.941,.909,.876]  
      # IONISATION EXCITATION CO2+(A2PIu) 17.314ev
      # ITIKAWA THEN SCALED CO2+ BY 38.5% ABOVE 400EV
      XION2=[17.314,18.8,19.9,21.1,22.4,23.7,25.1,26.6,28.2,29.8,31.6,33.5,35.4,37.5,39.8,42.1,44.6,47.2,50.0,53.0,56.1,59.5,63.0,66.7,70.7,74.8,79.3,88.9,94.2,99.8,106.,112.,119.,126.,133.,141.,149.,158.,167.,177.,188.,199.,211.,223.,236.,250.,265.,281.,298.,315.,334.,354.,375.,397.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.] 
      YION2=[0.0,.0314,.0494,.0682,.0873,.107,.128,.150,.168,.191,.214,.233,.256,.280,.304,.331,.356,.388,.416,.445,.476,.508,.541,.579,.615,.646,.675,.723,.740,.754,.767,.776,.784,.790,.796,.796,.798,.796,.796,.791,.784,.775,.763,.750,.734,.718,.702,.687,.671,.656,.640,.624,.609,.593,.551,.520,.489,.466,.447,.423,.408,.389,.371,.362,.350,.337]                            
      # IONISATION EXCITATION CO2+(B2SIGMA+u) 18.077ev  
      # ITIKAWA THEN SCALED CO2+ BY 22.0% ABOVE 400EV
      XION3=[18.077,18.8,19.9,21.1,22.4,23.7,25.1,26.6,28.2,29.8,31.6,33.5,35.4,37.5,39.8,42.1,44.6,47.2,50.0,53.0,56.1,59.5,63.0,66.7,70.7,74.8,79.3,88.9,94.2,99.8,106.,112.,119.,126.,133.,141.,149.,158.,167.,177.,188.,199.,211.,223.,236.,250.,265.,281.,298.,315.,334.,354.,375.,397.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.] 
      YION3=[0.0,.0121,.0247,.0384,.0517,.0653,.0797,.0932,.106,.120,.134,.147,.162,.176,.191,.207,.222,.239,.256,.272,.288,.304,.321,.337,.353,.371,.386,.415,.425,.434,.443,.451,.457,.462,.466,.468,.469,.467,.466,.462,.457,.449,.441,.432,.423,.414,.404,.395,.386,.377,.368,.357,.348,.339,.315,.297,.279,.266,.255,.242,.233,.222,.212,.207,.200,.193]                            
      # IONISATION O+
      XION4=[19.07,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION4=[0.0,.0419,.0986,.150,.195,.245,.299,.352,.407,.452,.485,.526,.556,.584,.606,.622,.640,.663,.671,.680,.670,.647,.631,.606,.572,.553,.524,.470,.433,.388,.361,.339,.311,.299,.283,.268,.252,.238,.229,.222,.209]
      # IONISATION CO+
      XION5=[19.47,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION5=[0.0,.0279,.139,.247,.281,.299,.319,.339,.362,.369,.379,.380,.386,.389,.390,.390,.389,.386,.378,.365,.340,.333,.314,.300,.278,.269,.250,.226,.211,.193,.178,.165,.154,.145,.139,.132,.124,.119,.113,.110,.103]
      # IONISATION C+
      XION6=[27.82,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION6=[0.0,.0024,.028,.0782,.121,.149,.178,.208,.229,.246,.261,.278,.285,.296,.306,.310,.322,.323,.331,.321,.309,.301,.288,.273,.260,.245,.215,.202,.183,.169,.154,.145,.136,.127,.123,.116,.108,.105,.101,.0964]
      # IONISATION CO2++
      XION7=[37.4,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION7=[0.0,.00166,.00399,.00686,.0106,.0126,.0159,.0172,.0206,.0219,.0227,.0246,.0265,.0285,.0290,.0294,.0290,.0285,.0272,.0257,.0232,.0231,.0203,.0183,.0175,.0165,.0141,.0128,.0125,.0113,.0106,.00986,.00961,.00883,.00823,.00741,.00723]
      # IONISATION C++
      XION8=[72.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION8=[0.0,.000179,.000215,.000311,.000506,.000520,.000751,.00108,.00157,.00186,.00249,.00279,.00256,.00291,.00247,.00252,.00216,.00224,.00198,.00177,.00184,.00145,.00169,.00147,.00157,.00139,.00129,.000965,.000897,.000984]
      # IONISATION O++
      XION9=[74.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.]
      YION9=[0.0,.000169,.000197,.000324,.000721,.00133,.00159,.00217,.00233,.00271,.00286,.00304,.00276,.00249,.00215,.00193,.00192,.00168,.00156,.00142,.00176,.00147,.00127,.00127,.00100,.00116,.00103]
      # CARBON K-SHELL IONISATION X-SECTION  
      XKSHC=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0e4,1.50e4,2.05e4,2.51e4,3.07e4,4.10e4,5.01e4,6.13e4,7.08e4,8.18e4,1.0e5,1.54e5,2.05e5,2.99e5,4.10e5,5.01e5,6.13e5,7.08e5,8.18e5,1.0e6,1.26e6,1.5e6,2.05e6,3.07e6,4.10e6,5.01e6,6.13e6,7.08e6,8.18e6,1.0e7,1.26e7,1.5e7,2.05e7,3.07e7,4.10e7,5.01e7,6.13e7,7.08e7,8.18e7,1.0e8,1.26e8,1.5e8,2.05e8,3.07e8,4.10e8,5.01e8,6.13e8,7.08e8,8.18e8,1.0e9]
      YKSHC=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
      # OXYGEN K-SHELL IONISATION X-SECTION (MULTIPLY BY 2 FOR MOLECULE)
      XKSHO=[532.,541.,557.,574.,591.,609.,627.,646.,665.,685.,706.,727.,749.,793.,841.,891.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.00e4,1.50e4,2.05e4,2.51e4,3.07e4,4.10e4,5.01e4,6.13e4,7.08e4,8.18e4,1.00e5,1.54e5,2.05e5,2.99e5,4.10e5,5.01e5,6.13e5,7.08e5,8.18e5,1.00e6,1.25e6,1.50e6,2.05e6,3.07e6,4.10e6,5.01e6,6.13e6,7.08e6,8.18e6,1.00e7,1.26e7,1.50e7,2.05e7,3.07e7,4.10e7,5.01e7,6.13e7,7.08e7,8.18e7,1.00e8,1.26e8,1.50e8,2.05e8,3.07e8,4.10e8,5.01e8,6.13e8,7.08e8,8.18e8,1.00e9]
      YKSHO=[0.00,3.31e-5,8.86e-5,1.42e-4,1.95e-4,2.45e-4,2.94e-4,3.41e-4,3.87e-4,4.31e-4,4.73e-4,5.14e-4,5.53e-4,6.27e-4,6.95e-4,7.56e-4,8.13e-4,8.63e-4,9.29e-4,9.84e-4,1.03e-3,1.08e-3,1.10e-3,1.11e-3,1.11e-3,1.10e-3,1.08e-3,1.03e-3,9.24e-4,8.27e-4,6.81e-4,5.49e-4,4.18e-4,3.35e-4,2.90e-4,2.50e-4,2.04e-4,1.77e-4,1.53e-4,1.39e-4,1.26e-4,1.11e-4,8.62e-5,7.45e-5,6.36e-5,5.75e-5,5.48e-5,5.29e-5,5.20e-5,5.13e-5,5.08e-5,5.08e-5,5.12e-5,5.24e-5,5.47e-5,5.68e-5,5.84e-5,6.00e-5,6.13e-5,6.26e-5,6.44e-5,6.65e-5,6.81e-5,7.11e-5,7.50e-5,7.78e-5,7.97e-5,8.17e-5,8.31e-5,8.45e-5,8.65e-5,8.87e-5,9.04e-5,9.36e-5,9.75e-5,1.00e-4,1.02e-4,1.04e-4,1.06e-4,1.07e-4,1.09e-4]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24 CM**2
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      Z8T=[477.,294.,145.,81.6,45.8,21.2,12.2,7.69,5.22,4.76,4.84,4.99,5.10,5.20,5.27,5.38,5.46,5.58,5.65,5.72,5.77,5.80,5.81,5.83,5.84]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]

      # ---------------------------------------------------------------------
      # 2015: UPGRADE INCLUDES :
      #      1) OSCILLATOR STRENGTH FROM ANALYSIS OF FROM
      #         BRION GROUP AND SHAW ET AL . OSCILLATOR SUM S(0)=21.9856
      #         S(-1)i=5.372
      #      2) USED STRAUB FOR DISSOCIATIVE IONISATION ABOVE 30EV
      #         AND   RAP AND ENGLADER-GOLDEN  AT LOW ENERGY
      #      3) IONISATION-EXCITATION FROM ITIKAWA REVIEW
      #
      # ANGULAR DISTRIBUTION ONLY ALLOWED FOR ELASTIC , IONISATION AND 
      # EXCITATION ABOVE 10EV. 
      #  
      # ---------------------------------------------------------------------
      #     NANISO=0
      if(NANISO == 0):
            NAME='CO2  2015   ISOTROPIC    '
      else:
            NAME='CO2  2015 ANISOTROPIC    '
      # endif
      #  --------------------------------------------------------------------
      # ---------------------------------------------------------------------
      #    BORN-BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=5.38
      C=57.0 
      EOBFAC=0.56
      #     
      # AVERAGE AUGER EMISSIONS FROM EACH SHELL
      AUGKC=2.0
      AUGKO=1.99
      # ARRAY SIZE
      NASIZE=20000
      #
      NION=11
      NATT=1 
      NIN=144 
      NNULL=0 
      IONMODEL=0  
      #
      NBREM=25
      for J in range(1,NIN+1):
            IZBR[J]=0
      IZBR[145]=6
      IZBR[146]=8
      #
      for J in range(1,6+1):
            KEL[J]=NANISO
      for J in range(1,NIN+1):
            KIN[J]=NANISO
      #                 
      NEL=158                                                           
      NV2=17                                                          
      N2V2=19                                                           
      NV1=26                                                            
      N3V2=11
      NV3=11
      NPD3=14                                                           
      NV130=12                                                          
      NPD4=14  
      NPD5=11
      NPD6=11
      NPD7=11
      NPD8=11
      NPD9=11
      NPDH=9                                                          
      NATT1=68
      NTRP1=11
      NTRP2=11
      NION1=63
      NION2=66
      NION3=66
      NION4=41
      NION5=41
      NION6=40
      NION7=37
      NION8=30
      NION9=27 
      NKSHC=83
      NKSHO=81 
      #                                                     
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(44.0095*AMU)                                      
      E[3]=13.776                          
      E[4]=0.0                   
      E[5]=0.0 
      E[6]=0.0 
      #     
      EION[1]=13.776
      EION[2]=17.314
      EION[3]=18.077
      EION[4]=19.07
      EION[5]=19.47
      EION[6]=27.82
      EION[7]=37.4
      EION[8]=72.0
      EION[9]=74.0
      EION[10]=285.0
      EION[11]=532.0
      # OPAL AND BEATY       
      #     DO 90 JK=1,9
      for JK in range(1,11+1):
            EOBY[JK]=EION[JK]*EOBFAC
            EOBY[JK]=13.8
      # OPAL BEATY FOR CARBON AND OXYGEN K-SHELLS
      #     EOBY[10]=200.0
      #     EOBY[11]=375.0
      #
      for JK in range(1,9+1):
            LEGAS[JK]=0
            ISHELL[JK]=0
            NC0[JK]=0
            EC0[JK]=0.0
            WKLM[JK]=0.0
            EFL[JK]=0.0
            NG1[JK]=0
            EG1[JK]=0.0
            NG2[JK]=0
            EG2[JK]=0.0
      # DOUBLE CHARGE ++ ION STATES (EXTRA ELECTRON)
      NC0[7]=1
      EC0[7]=1.0
      NC0[8]=1
      EC0[8]=1.0
      NC0[9]=1
      EC0[9]=1.0  
      # FLUORESCENCE K SHELLS   
      LEGAS[10]=1
      LEGAS[11]=2
      ISHELL[10]=1
      ISHELL[11]=1
      #
      NC0[10]=2
      EC0[10]=253.
      WKLM[10]=0.0026
      EFL[10]=273.
      NG1[10]=1
      EG1[10]=253.
      NG2[10]=2
      EG2[10]=5.
      NC0[11]=3
      EC0[11]=485.
      WKLM[11]=0.0069
      EFL[11]=518.
      NG1[11]=1
      EG1[11]=480.
      NG2[11]=2
      EG2[11]=5.0
      #     
      for J in range(1,NION+1):
            for I in range(1,NASIZE+1):
                  if(EG[I]> EION[J]):
                        IOFFION[J]=I-1
                  break
                  # endif 
      # DIPOLE TRANSITION STRENGTH FOR VIBRATIONS V010 AND V001      
      AMPV2=0.1703
      AMPV3=0.3922
      #-----------------------------------------------------------------------
      #  B0 IS ROTATIONAL CONSTANT
      #  QBQA IS QUADRUPOLE MOMENT       
      B0=4.838e-5
      A0=0.5291772083e-8
      QBQA=3.24
      QBK=1.67552*(QBQA*A0)**2
      #--------------------------------------------------------------------- 
      # CALC FRACTIONAL POPULATION DENSITY OF ROTATIONAL STATES
      PJ[1]=1.0
      for L in range(2,31 +1):
            J=(2*L)-2
            PJ[L]=(2*J+1)*math.exp(-J*(J+1)*B0/AKT)
      SUM=0.0
      for L in range(1,31+1):
            SUM=SUM+PJ[L]
      for L in range(1,31+1):
            PJ[L]=PJ[L]/SUM
      #--------------------------------------------------------------------- 
      # CALC ROTATIONAL TRANSITION ENERGIES
      for K in range(1,59+1,2-1 +1):
            EIN[K]=B0*(4*K+2)
            EIN[K+1]=-EIN[K]   
      EIN[61]  = -0.08275                                               
      EIN[62]  =  0.08275
      EIN[63]  = -0.15937                                               
      EIN[64]  =  0.15937 
      EIN[65]  = -0.17211
      EIN[66]  =  0.17211
      EIN[67]  = -0.251  
      EIN[68]  =  0.251 
      EIN[69]  = -0.29126
      EIN[70]  =  0.29126  
      EIN[71]  =  0.335                                                 
      EIN[72]  =  0.422                                                 
      EIN[73]  =  0.505 
      EIN[74]  =  0.685 
      EIN[75]  =  0.825
      EIN[76]  =  0.995
      EIN[77]  =  1.160
      EIN[78]  =  1.320                                                 
      EIN[79]  =  2.500                                                 
      EIN[80]  =  6.50                                                  
      EIN[81]  =  6.75
      EIN[82]  = 7.00
      EIN[83]  = 7.25
      EIN[84]  = 7.50
      EIN[85]  = 7.75
      EIN[86]  = 8.00
      EIN[87]  = 8.25
      EIN[88]  = 8.50
      EIN[89]  = 8.75
      EIN[90]  = 8.89                                                   
      EIN[91]  = 8.90 
      EIN[92]  = 9.15
      EIN[93]  = 9.40
      EIN[94]  = 9.65
      EIN[95]  = 9.90
      EIN[96]  =10.15
      EIN[97]  =10.7 
      EIN[98]  =11.048
      EIN[99]  =11.3
      EIN[100] =11.385                                                 
      EIN[101] =11.543
      EIN[102] =11.608
      EIN[103] =11.683
      EIN[104] =11.758
      EIN[105] =11.826
      EIN[106] =11.971
      EIN[107] =12.142
      EIN[108] =12.301
      EIN[109] =12.469
      EIN[110] =12.627                                                 
      EIN[111] =12.75 
      EIN[112] =12.901
      EIN[113] =13.01 
      EIN[114] =13.15 
      EIN[115] =13.28 
      EIN[116] =13.39 
      EIN[117] =13.51 
      EIN[118] =13.68 
      EIN[119] =13.78 
      EIN[120] =14.0                                                   
      EIN[121] =14.25 
      EIN[122] =14.5  
      EIN[123] =14.75 
      EIN[124] =15.0  
      EIN[125] =15.25 
      EIN[126] =15.5  
      EIN[127] =15.75 
      EIN[128] =16.0  
      EIN[129] =16.25 
      EIN[130] =16.5                                                   
      EIN[131] =16.75 
      EIN[132] =17.0  
      EIN[133] =17.25 
      EIN[134] =17.5  
      EIN[135] =17.75 
      EIN[136] =18.0
      EIN[137] =18.25
      EIN[138] =18.50
      EIN[139] =18.75
      EIN[140] =19.0
      EIN[141] =19.25
      EIN[142] =19.50
      EIN[143] =19.75
      EIN[144] =25.0
      EIN[145] = 0.0
      EIN[146] = 0.0      
      #  OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      for NL in range(1,144+1):
            for I in range(1,NASIZE+1):
                  if(EG[I]> abs(EIN[NL])):
                        IOFFN[NL]=I-1
                        break
                  # endif
      # 551 CONTINUE
      #***********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # FIRST 81 LEVELS UNLIKELY TO HAVE ENOUGH ENERGY
      for K in range(1,81+1):
            for L in range(1,3+1):
                  PENFRA[L][K]=0.0
      # PENNING TRANSFER FRACTION FOR LEVELS 
      for K in range(82,NIN+1):
            PENFRA[1][K]=0.0
            # PENNING TRANSFER DISTANCE IN MICRONS
            PENFRA[2][K]=1.0
            # PENNING TRANSFER TIME IN PICOSECONDS
            PENFRA[3][K]=1.0
      # 7000 CONTINUE
      if(IPEN == 0):
            # GO TO 9
            pass
      else:
            for KDUM in range(82,NIN+1):
                  if(PENFRA[1][KDUM] == 0.0):
                        # GO TO 8
                        break
                  # WRITE(6,999) NAME,EIN[KDUM],PENFRA[1][KDUM],PENFRA[2][KDUM],PENFRA[3][KDUM]
                  print(' GAS = %s ENERGY LEVEL = %.4f EV. \n PENNING PROBABILITY =%.3f ABS.LENGTH =%.2f DECAY TIME =%.1f'%(NAME,EIN[KDUM],PENFRA[1][KDUM],PENFRA[2][KDUM],PENFRA[3][KDUM]))
            # 8 CONTINUE
            #***********************************************************************
            # 
            # DEGENERACY OF VIBRATIONAL STATES
      # 9 
      DEGV1=1.0
      DEGV2=2.0
      DEGV3=1.0
      DEG2V2=3.0
      # 3V2 === SUM (3V2 + V12) =   4+2
      DEG3V2=6.0 
      #----------------------------------------------------         
      # CALC POPULATION OF VIBRATIONAL STATES    
      SUM=0.0   
      APOPV2=DEGV2*math.exp(EIN[61]/AKT)   
      APOP2V2=DEG2V2*math.exp(EIN[63]/AKT)
      APOPV1=DEGV1*math.exp(EIN[65]/AKT)  
      APOP3V2=DEG3V2*math.exp(EIN[67]/AKT)
      APOPV3=DEGV3*math.exp(EIN[69]/AKT)
      SUM=1.0+APOPV2+APOP2V2+APOPV1+APOP3V2+APOPV3
      APOPGS=1.0/SUM
      APOPV2=APOPV2/SUM
      APOP2V2=APOP2V2/SUM
      APOPV1=APOPV1/SUM
      APOP3V2=APOP3V2/SUM
      APOPV3=APOPV3/SUM
      APBEND=APOPV2+APOP2V2+APOP3V2
      #     WRITE(6,865) APOPGS,APOPV2,APOP2V2,APOPV1,APOP3V2,APOPV3,APB# end
      # 865 print(' APOPGS=',F8.6,' APOPV2=',F8.6,' APOP2V2=',F8.6,' APOPV1='
      #    /,F8.6,' APOP3V2=',F8.6,' APOPV3=',F8.6,/,' APB# end=',F12.10)
      #     
      # RENORMALISE VIBRATIONAL GROUND STATE POPULATION IN ORDER TO ACCOUNT 
      # FOR EXCITATION FROM VIBRATIONALLY EXCITED STATES  
      APOPGS=1.0
      # B# end MODE AND EFFECTIVE GROUND STATE POPULATION AT 293.15 KELVIN      
      AEXT20=7.51373753e-2
      AGST20=1.0-AEXT20  
      #     WRITE(6,866) APOPGS,AEXT20 
      # 866 print(' RENORMALISED GS POPULATION=', '%.4f' %,' AEXT20=',F12.10)  
      #------------------------------------------------------            
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC          CO2                '
      if(NANISO == 0):
            SCRPT[2]=' ELASTIC    ISOTROPIC          CO2                '  
      # endif
      SCRPT[3]=' IONISATION        CO2+           ELOSS=  13.776  '
      SCRPT[4]=' IONISATION-EXC    CO2+(A2PIu)    ELOSS=  17.314  '
      SCRPT[5]=' IONISATION-EXC    CO2+(B2SIG+u)  ELOSS=  18.077  '
      SCRPT[6]=' DISSOCIATIVE ION  O+             ELOSS=  19.07   '
      SCRPT[7]=' DISSOCIATIVE ION  CO+            ELOSS=  19.47   '
      SCRPT[8]=' DISSOCIATIVE ION  C+             ELOSS=  27.82   '
      SCRPT[9]=' DISSOCIATIVE ION  CO2++          ELOSS=  37.4    '
      SCRPT[10]=' DISSOCIATIVE ION  C++            ELOSS=  72.0    '
      SCRPT[11]=' DISSOCIATIVE ION  O++            ELOSS=  74.0    '
      SCRPT[12]=' IONISATION CARBON K-SHELL        ELOSS= 285.0    '
      SCRPT[13]=' IONISATION OXYGEN K-SHELL        ELOSS= 532.0    '
      SCRPT[14]=' ATTACHMENT                                       '
      SCRPT[15]='                                                  '
      SCRPT[16]='                                                  '
      SCRPT[17]=' ROTATION  0-2                    ELOSS=  0.00029 '
      SCRPT[18]=' ROTATION  2-0                    ELOSS= -0.00029 '
      SCRPT[19]=' ROTATION  2-4                    ELOSS=  0.00068 '
      SCRPT[20]=' ROTATION  4-2                    ELOSS= -0.00068 '
      SCRPT[21]=' ROTATION  4-6                    ELOSS=  0.00106 '
      SCRPT[22]=' ROTATION  6-4                    ELOSS= -0.00106 '
      SCRPT[23]=' ROTATION  6-8                    ELOSS=  0.00145 '
      SCRPT[24]=' ROTATION  8-6                    ELOSS= -0.00145 '
      SCRPT[25]=' ROTATION  8-10                   ELOSS=  0.00184 '
      SCRPT[26]=' ROTATION 10-8                    ELOSS= -0.00184 '
      SCRPT[27]=' ROTATION 10-12                   ELOSS=  0.00223 '
      SCRPT[28]=' ROTATION 12-10                   ELOSS= -0.00223 '
      SCRPT[29]=' ROTATION 12-14                   ELOSS=  0.00261 '
      SCRPT[30]=' ROTATION 14-12                   ELOSS= -0.00261 '
      SCRPT[31]=' ROTATION 14-16                   ELOSS=  0.00300 '
      SCRPT[32]=' ROTATION 16-14                   ELOSS= -0.00300 '
      SCRPT[33]=' ROTATION 16-18                   ELOSS=  0.00339 '
      SCRPT[34]=' ROTATION 18-16                   ELOSS= -0.00339 '
      SCRPT[35]=' ROTATION 18-20                   ELOSS=  0.00377 '
      SCRPT[36]=' ROTATION 20-18                   ELOSS= -0.00377 '
      SCRPT[37]=' ROTATION 20-22                   ELOSS=  0.00416 '
      SCRPT[38]=' ROTATION 22-20                   ELOSS= -0.00416 '
      SCRPT[39]=' ROTATION 22-24                   ELOSS=  0.00455 '
      SCRPT[40]=' ROTATION 24-22                   ELOSS= -0.00455 '
      SCRPT[41]=' ROTATION 24-26                   ELOSS=  0.00493 '
      SCRPT[42]=' ROTATION 26-24                   ELOSS= -0.00493 '
      SCRPT[43]=' ROTATION 26-28                   ELOSS=  0.00532 '
      SCRPT[44]=' ROTATION 28-26                   ELOSS= -0.00532 '
      SCRPT[45]=' ROTATION 28-30                   ELOSS=  0.00571 '
      SCRPT[46]=' ROTATION 30-28                   ELOSS= -0.00571 '
      SCRPT[47]=' ROTATION 30-32                   ELOSS=  0.00610 '
      SCRPT[48]=' ROTATION 32-30                   ELOSS= -0.00610 '
      SCRPT[49]=' ROTATION 32-34                   ELOSS=  0.00648 '
      SCRPT[50]=' ROTATION 34-32                   ELOSS= -0.00648 '
      SCRPT[51]=' ROTATION 34-36                   ELOSS=  0.00687 '
      SCRPT[52]=' ROTATION 36-34                   ELOSS= -0.00687 '
      SCRPT[53]=' ROTATION 36-38                   ELOSS=  0.00726 '
      SCRPT[54]=' ROTATION 38-36                   ELOSS= -0.00726 '
      SCRPT[55]=' ROTATION 38-40                   ELOSS=  0.00764 '
      SCRPT[56]=' ROTATION 40-38                   ELOSS= -0.00764 '
      SCRPT[57]=' ROTATION 40-42                   ELOSS=  0.00803 '
      SCRPT[58]=' ROTATION 42-40                   ELOSS= -0.00803 '
      SCRPT[59]=' ROTATION 42-44                   ELOSS=  0.00842 '
      SCRPT[60]=' ROTATION 44-42                   ELOSS= -0.00842 '
      SCRPT[61]=' ROTATION 44-46                   ELOSS=  0.00881 '
      SCRPT[62]=' ROTATION 46-44                   ELOSS= -0.00881 '
      SCRPT[63]=' ROTATION 46-48                   ELOSS=  0.00919 '
      SCRPT[64]=' ROTATION 48-46                   ELOSS= -0.00919 '
      SCRPT[65]=' ROTATION 48-50                   ELOSS=  0.00958 '
      SCRPT[66]=' ROTATION 50-48                   ELOSS= -0.00958 '
      SCRPT[67]=' ROTATION 50-52                   ELOSS=  0.00997 '
      SCRPT[68]=' ROTATION 52-50                   ELOSS= -0.00997 '
      SCRPT[69]=' ROTATION 52-54                   ELOSS=  0.01035 '
      SCRPT[70]=' ROTATION 54-52                   ELOSS= -0.01035 '
      SCRPT[71]=' ROTATION 54-56                   ELOSS=  0.01074 '
      SCRPT[72]=' ROTATION 56-54                   ELOSS= -0.01074 '
      SCRPT[73]=' ROTATION 56-58                   ELOSS=  0.01113 '
      SCRPT[74]=' ROTATION 58-56                   ELOSS= -0.01113 '
      SCRPT[75]=' ROTATION 58-60                   ELOSS=  0.01151 '
      SCRPT[76]=' ROTATION 60-58                   ELOSS= -0.01151 '
      SCRPT[77]=' VIBRATION  (010)                 ELOSS= -0.08275 '
      SCRPT[78]=' VIBRATION (010)                  ELOSS=  0.08275 '
      SCRPT[79]=' VIBRATION (020)                  ELOSS= -0.15937 '
      SCRPT[80]=' VIBRATION (020)                  ELOSS=  0.15937 '
      SCRPT[81]=' VIBRATION (100)                  ELOSS= -0.17211 '
      SCRPT[82]=' VIBRATION (100)                  ELOSS=  0.17211 '
      SCRPT[83]=' VIBRATION (030)+(110)            ELOSS= -0.251   '
      SCRPT[84]=' VIBRATION (030)+(110)            ELOSS=  0.251   '
      SCRPT[85]=' VIBRATION (001)                  ELOSS= -0.29126 '
      SCRPT[86]=' VIBRATION (001)                  ELOSS=  0.29126 '
      SCRPT[87]=' VIBRATION  POLYAD 3              ELOSS=  0.335   '
      SCRPT[88]=' VIBRATION (130)+(210)            ELOSS=  0.422   '
      SCRPT[89]=' VIBRATION  POLYAD 4              ELOSS=  0.505   '
      SCRPT[90]=' VIBRATION  POLYAD 5              ELOSS=  0.685   '
      SCRPT[91]=' VIBRATION  POLYAD 6              ELOSS=  0.825   '
      SCRPT[92]=' VIBRATION  POLYAD 7              ELOSS=  0.995   '
      SCRPT[93]=' VIBRATION  POLYAD 8              ELOSS=  1.160   '
      SCRPT[94]=' VIBRATION  POLYAD 9              ELOSS=  1.320   '
      SCRPT[95]=' VIBRATION  POLYAD HIGH SUM       ELOSS=  2.50    '
      SCRPT[96]=' 1DEL DISSOC CO + O   F=.0000698  ELOSS=  6.50    '
      SCRPT[97]=' 1DEL DISSOC CO + 0   F=.0000630  ELOSS=  6.75    '
      SCRPT[98]=' 1DEL DISSOC CO + O   F=.0000758  ELOSS=  7.00    '
      SCRPT[99]=' 1DEL DISSOC CO + O   F=.0001638  ELOSS=  7.25    '
      SCRPT[100]=' 1DEL DISSOC CO + O   F=.0003356  ELOSS=  7.50    '
      SCRPT[101]=' 1DEL DISSOC CO + 0   F=.0007378  ELOSS=  7.75    '
      SCRPT[102]=' 1DEL DISSOC CO + 0   F=.001145   ELOSS=  8.00    '
      SCRPT[103]=' 1DEL DISSOC CO + O   F=.001409   ELOSS=  8.25    '
      SCRPT[104]=' 1DEL DISSOC CO + O   F=.001481   ELOSS=  8.50    '
      SCRPT[105]=' 1DEL DISSOC CO + O   F=.000859   ELOSS=  8.75    '
      SCRPT[106]=' TRIPLET                          ELOSS=  8.89    '
      SCRPT[107]=' 1PI  DISSOC CO + O   F=.001687   ELOSS=  8.90    '
      SCRPT[108]=' 1PI  DISSOC CO + O   F=.002115   ELOSS=  9.15    '
      SCRPT[109]=' 1PI  DISSOC CO + O   F=.001920   ELOSS=  9.40    '
      SCRPT[110]=' 1PI  DISSOC CO + O   F=.001180   ELOSS=  9.65    '
      SCRPT[111]=' 1PI  DISSOC CO + 0   F=.000683   ELOSS=  9.90    '
      SCRPT[112]=' 1PI  DISSOC CO + O   F=.000456   ELOSS= 10.15    '
      SCRPT[113]=' SOME RA:AU BANDS  F=.004361   ELOSS= 10.7     '
      SCRPT[114]=' 1SIG# + 1SIG + C#    F=.1718     ELOSS= 11.048   '
      SCRPT[115]=' TRIPLETS                         ELOSS= 11.3     '
      SCRPT[116]=' 1PIu                 F=.06242    ELOSS= 11.385   '
      SCRPT[117]=' RYDBERG      DIPOLE  F=.01852    ELOSS= 11.543   '
      SCRPT[118]=' RYDBERG      DIPOLE  F=.01125    ELOSS= 11.608   '
      SCRPT[119]=' RYDBERG      DIPOLE  F=.01535    ELOSS= 11.683   '
      SCRPT[120]=' RYDBERG      DIPOLE  F=.01009    ELOSS= 11.758   '
      SCRPT[121]=' RYDBERG      DIPOLE  F=.01940    ELOSS= 11.826   '
      SCRPT[122]=' RYDBERG      DIPOLE  F=.03817    ELOSS= 11.971   '
      SCRPT[123]=' RYDBERG      DIPOLE  F=.05814    ELOSS= 12.142   '
      SCRPT[124]=' RYDBERG      DIPOLE  F=.04769    ELOSS= 12.301   '
      SCRPT[125]=' RYDBERG      DIPOLE  F=.09315    ELOSS= 12.469   '
      SCRPT[126]=' RYDBERG      DIPOLE  F=.06305    ELOSS= 12.627   '
      SCRPT[127]=' CONTINUUM    DIPOLE  F=.02477    ELOSS= 12.75    '
      SCRPT[128]=' RYDBERG      DIPOLE  F=.06231    ELOSS= 12.901   '
      SCRPT[129]=' SUM RYDBERGS DIPOLE  F=.06696    ELOSS= 13.01    '
      SCRPT[130]=' SUM RYDBERGS DIPOLE  F=.09451    ELOSS= 13.15    '
      SCRPT[131]=' SUM RYDBERGS DIPOLE  F=.04986    ELOSS= 13.28    '
      SCRPT[132]=' SUM RYDBERGS DIPOLE  F=.09029    ELOSS= 13.39    '
      SCRPT[133]=' SUM RYDBERGS DIPOLE  F=.07431    ELOSS= 13.51    '
      SCRPT[134]=' SUM RYDBERGS DIPOLE  F=.15625    ELOSS= 13.68    '
      SCRPT[135]=' NEUTRAL DISS DIPOLE  F=.08084    ELOSS= 13.78    '
      SCRPT[136]=' NEUTRAL DISS DIPOLE  F=.02662    ELOSS= 14.00    '
      SCRPT[137]=' NEUTRAL DISS DIPOLE  F=.01062    ELOSS= 14.25    '
      SCRPT[138]=' NEUTRAL DISS DIPOLE  F=.00644    ELOSS= 14.50    '
      SCRPT[139]=' NEUTRAL DISS DIPOLE  F=.00484    ELOSS= 14.75    '
      SCRPT[140]=' NEUTRAL DISS DIPOLE  F=.00880    ELOSS= 15.00    '
      SCRPT[141]=' NEUTRAL DISS DIPOLE  F=.01522    ELOSS= 15.25    '
      SCRPT[142]=' NEUTRAL DISS DIPOLE  F=.01683    ELOSS= 15.50    '
      SCRPT[143]=' NEUTRAL DISS DIPOLE  F=.02135    ELOSS= 15.75    '
      SCRPT[144]=' NEUTRAL DISS DIPOLE  F=.03232    ELOSS= 16.00    '
      SCRPT[145]=' NEUTRAL DISS DIPOLE  F=.02534    ELOSS= 16.25    '
      SCRPT[146]=' NEUTRAL DISS DIPOLE  F=.01433    ELOSS= 16.50    '
      SCRPT[147]=' NEUTRAL DISS DIPOLE  F=.00965    ELOSS= 16.75    '
      SCRPT[148]=' NEUTRAL DISS DIPOLE  F=.01481    ELOSS= 17.00    '
      SCRPT[149]=' NEUTRAL DISS DIPOLE  F=.01148    ELOSS= 17.25    '
      SCRPT[150]=' NEUTRAL DISS DIPOLE  F=.00885    ELOSS= 17.50    '
      SCRPT[151]=' NEUTRAL DISS DIPOLE  F=.00931    ELOSS= 17.75    '
      SCRPT[152]=' NEUTRAL DISS DIPOLE  F=.00666    ELOSS= 18.00    '
      SCRPT[153]=' NEUTRAL DISS DIPOLE  F=.00443    ELOSS= 18.25    '
      SCRPT[154]=' NEUTRAL DISS DIPOLE  F=.00371    ELOSS= 18.50    '
      SCRPT[155]=' NEUTRAL DISS DIPOLE  F=.00344    ELOSS= 18.75    '
      SCRPT[156]=' NEUTRAL DISS DIPOLE  F=.00357    ELOSS= 19.00    '
      SCRPT[157]=' NEUTRAL DISS DIPOLE  F=.00530    ELOSS= 19.25    '
      SCRPT[158]=' NEUTRAL DISS DIPOLE  F=.00621    ELOSS= 19.50    '
      SCRPT[159]=' NEUTRAL DISS DIPOLE  F=.00619    ELOSS= 19.75    '
      SCRPT[160]=' SUM OF HIGH TRIPLETS             ELOSS= 25.00    '
      SCRPT[161]=' BREMSSTRAHLUNG FROM CARBON ATOM                  '
      SCRPT[162]=' BREMSSTRAHLUNG FROM OXYGEN ATOMS                 '
      #     EN=-ESTEP/2.0
      for I in range(1,NSTEP+1):
            EN=EG[I]       
            # print("GASN EN=",EN)                                            
            #     EN=EN+ESTEP 
            GAMMA1=(EMASS2+2.00*EN)/EMASS2
            GAMMA2=GAMMA1*GAMMA1
            BETA=math.sqrt(1.00-1.00/GAMMA2)
            BETA2=BETA*BETA
            # ELASTIC USE LOG INTERPOLATION
            if(EN <= XEN[1]): 
                  QMOM=YMOM[1]*1.e-16
                  QELA=YEL[1]*1.e-16
                  QBMOM=QMOM
                  QBELA=QELA
                  PQ2=0.0
                  pass
            else:
                  # endif  
                  flag15=1                                                           
                  for J in range(2,NEL+1):
                        if(EN <= XEN[J]):
                              flag15=0
                              break
                  # 10 CONTINUE    
                  if(flag15):                                                      
                        J=NEL 
                  # 15 
                  YXJ=math.log(YMOM[J])
                  YXJ1=math.log(YMOM[J-1])
                  XNJ=math.log(XEN[J])   
                  XNJ1=math.log(XEN[J-1])                                               
                  A=(YXJ-YXJ1)/(XNJ-XNJ1)                                           
                  B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)                                  
                  QMOM=math.exp(A*math.log(EN)+B)*1.e-16
                  YXJ=math.log(YEL[J])
                  YXJ1=math.log(YEL[J-1])
                  A=(YXJ-YXJ1)/(XNJ-XNJ1)                                           
                  B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)                                  
                  QELA=math.exp(A*math.log(EN)+B)*1.e-16
                  YXJ=math.log(YVBMOM[J])
                  YXJ1=math.log(YVBMOM[J-1])
                  A=(YXJ-YXJ1)/(XNJ-XNJ1)                                           
                  B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)                                  
                  QBMOM=math.exp(A*math.log(EN)+B)*1.e-16
                  YXJ=math.log(YVBEL[J])
                  YXJ1=math.log(YVBEL[J-1])
                  A=(YXJ-YXJ1)/(XNJ-XNJ1)                                           
                  B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)                                  
                  QBELA=math.exp(A*math.log(EN)+B)*1.e-16
                  YXJ=math.log(YEPS[J])
                  YXJ1=math.log(YEPS[J-1])
                  A=(YXJ-YXJ1)/(XNJ-XNJ1)                                           
                  B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)                                  
                  PQ2=math.exp(A*math.log(EN)+B)
                  # EPSILON=1.0-YEPS
                  PQ2=1.00-PQ2
            # 20 CONTINUE
            # CALC CHANGE IN ELASTIC CROSS SECTION DUE TO CHANGE IN ELASTIC
            # SCATTERING FROM B# end MODES ( CHANGE RELATIVE TO X-SECTION AT 293.15K)
            # B# end MODE POPULATION AT 293.15K == AEXT20,GROUND STATE POP. == AGST20
            #
            QMOM=(1.0-APBEND)*(QMOM-AEXT20*QBMOM)/AGST20+APBEND*QBMOM 
            QELA=(1.0-APBEND)*(QELA-AEXT20*QBELA)/AGST20+APBEND*QBELA
            PQ1=0.5+(QELA-QMOM)/QELA
            #                                      
            if(NANISO == 2):
                  Q[2][I]=QELA
                  PEQEL[2][I]=PQ2
                  if(EN < 10.0):
                        PEQEL[2][I]=0.0
                  if(EN < 10.0):
                        Q[2][I]=QMOM
            # endif
            if(NANISO == 1):
                  Q[2][I]=QELA
                  PEQEL[2][I]=PQ1
                  if(EN < 10.0):
                        PEQEL[2][I]=0.5
                  if(EN < 10.0):
                        Q[2][I]=QMOM
            # endif
            if(NANISO == 0):
                  PEQEL[2][I]=0.5
                  Q[2][I]=QMOM
            # endif
            #
            #  IONISATION CO2+
            QION[1][I]=0.0 
            PEQION[1][I]=0.5  
            if(NANISO == 2):
                  PEQION[1][I]=0.0                                   
            if(EN <= EION[1]):
                  pass
            else:
                  flag24=1
                  if(EN > XION1[NION1]):
                        pass
                  else:
                        flag22         
                        for J in range(2,NION1+1):
                              if(EN <= XION1[J]):
                                    flag22=0
                                    break                                   
                        if(flag22):
                              J=NION1                                                           
                        # 22 
                        A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])                
                        B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
                        QION[1][I]=1.0e-16*(A*EN+B) 
                        flag24=0
                        # USE BORN-BETHE X-SECTION ABOVE XION1[NION1] EV
                  if(flag24): 
                        X2=1.00/BETA2
                        X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
                        QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.67716
                  # 24 
                  if(EN <= (2.0*EION[1])):
                        pass
                  else:
                        PEQION[1][I]=PEQEL[2][I-IOFFION[1]]
                  #  IONISATION CO2+(A2PIu)
            # 1025 
            QION[2][I]=0.0 
            PEQION[2][I]=0.5  
            if(NANISO == 2):
                  PEQION[2][I]=0.0                                   
            if(EN <= EION[2]):
                  pass
            else:
                  flag1029=1
                  if(EN > XION2[NION2]):
                        pass
                  else:
                        for J in range(2,NION2+1):
                              if(EN <= XION2[J]):
                                    flag1027=0
                                    break
                              # 1026 CONTINUE                                                          
                        if(flag1027):
                              J=NION2                                                           
                        # 1027 
                        A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])                
                        B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J])
                        QION[2][I]=1.0e-16*(A*EN+B) 
                        flag1029=0
                        # USE BORN-BETHE X-SECTION ABOVE XION2[NION2] EV
                  if(flag1029):
                        QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.67716*0.385
                  # 1029 
                  if(EN <= (2.0*EION[2])):
                        pass
                  else:
                        PEQION[2][I]=PEQEL[2][I-IOFFION[2]]
                  #  IONISATION CO2+(B2SIGMA+u)
            # 1030 
            QION[3][I]=0.0 
            PEQION[3][I]=0.5  
            if(NANISO == 2):
                  PEQION[3][I]=0.0                                   
            if(EN <= EION[3]):
                  pass
            else:
                  flag1034=1
                  if(EN > XION3[NION3]):
                        pass
                  else:
                        flag1032=1
                        for J in range(2,NION3+1):
                              if(EN <= XION3[J]):
                                    flag1032=0
                                    break
                        if(flag1032):
                              J=NION3                                                           
                        # 1032 
                        A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])                
                        B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J])
                        QION[3][I]=1.0e-16*(A*EN+B) 
                        flag1034=0
                        # USE BORN-BETHE X-SECTION ABOVE XION3[NION3] EV
                  # 1033
                  if(flag1034): 
                        QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.67716*0.220
                  # 1034 
                  if(EN <= (2.0*EION[3])):
                        pass
                  else:
                        PEQION[3][I]=PEQEL[2][I-IOFFION[3]]
                  #  DISSOCIATIVE IONISATION O+
            # 1035 
            QION[4][I]=0.0 
            PEQION[4][I]=0.5  
            if(NANISO == 2):
                  PEQION[4][I]=0.0                                   
            if(EN <= EION[4]):
                  pass
            else:
                  flag1039=1
                  if(EN > XION4[NION4]):
                        pass
                  else:
                        flag1037=1
                        for J in range(2,NION4+1):
                              if(EN <= XION4[J]):
                                    flag1037=0
                                    break
                              # 1036 CONTINUE     
                        if(flag1037):                                                     
                              J=NION4                                                           
                        # 1037 
                        A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])                
                        B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J])
                        QION[4][I]=1.0e-16*(A*EN+B) 
                        flag1039=0
                        # USE BORN-BETHE X-SECTION ABOVE XION4[NION4] EV
                  if(flag1039):
                        # 1038 
                        QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.16156
                  # 1039 
                  if(EN <= (2.0*EION[4])):
                        pass
                  else:
                        PEQION[4][I]=PEQEL[2][I-IOFFION[4]]
                  #  DISSOCIATIVE IONISATION CO+
            # 1040 
            QION[5][I]=0.0 
            PEQION[5][I]=0.5  
            if(NANISO == 2):
                  PEQION[5][I]=0.0                                   
            if(EN <= EION[5]):
                  pass
            else:
                  flag1044=1
                  if(EN > XION5[NION5]):
                        pass
                  else:
                        flag1042=1
                        for J in range(2,NION5+1):
                              if(EN <= XION5[J]):
                                    flag1042=0
                                    break
                        if(flag1042):
                              J=NION5                                                           
                        # 1042 
                        A=(YION5[J]-YION5[J-1])/(XION5[J]-XION5[J-1])                
                        B=(XION5[J-1]*YION5[J]-XION5[J]*YION5[J-1])/(XION5[J-1]-XION5[J])
                        QION[5][I]=1.0e-16*(A*EN+B) 
                        flag1044=0
                        # USE BORN-BETHE X-SECTION ABOVE XION5[NION5] EV
                  if(flag1044):
                        # 1043 
                        QION[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.07962
                  # 1044 
                  if(EN <= (2.0*EION[5])):
                        pass
                  else:
                        PEQION[5][I]=PEQEL[2][I-IOFFION[5]]
                  #  DISSOCIATIVE IONISATION C+ 
            # 1045 
            QION[6][I]=0.0 
            PEQION[6][I]=0.5  
            if(NANISO == 2):
                  PEQION[6][I]=0.0                                   
            if(EN <= EION[6]):
                  # GO TO 1050
                  pass
            else:
                  flag1049=1
                  flag1047=1
                  if(EN > XION6[NION6]):
                        pass
                  else:             
                        for J in range(2,NION6+1):
                              if(EN <= XION6[J]):
                                    flag1047=0
                                    break
                        if(flag1047):
                              J=NION6                                                           
                        # 1047 
                        A=(YION6[J]-YION6[J-1])/(XION6[J]-XION6[J-1])                
                        B=(XION6[J-1]*YION6[J]-XION6[J]*YION6[J-1])/(XION6[J-1]-XION6[J])
                        QION[6][I]=1.0e-16*(A*EN+B) 
                        flag1049=0
                        # USE BORN-BETHE X-SECTION ABOVE XION6[NION6] EV
                  if(flag1049):
                        QION[6][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.07452
                  # 1049 
                  if(EN <= (2.0*EION[6])):
                        pass
                  else:
                        PEQION[6][I]=PEQEL[2][(I-IOFFION[6])]
                  #   IONISATION CO2++ 
            # 1050 
            QION[7][I]=0.0 
            PEQION[7][I]=0.5  
            if(NANISO == 2):
                  PEQION[7][I]=0.0                                   
            if(EN <= EION[7]):
                  pass
            else:
                  flag1054=1
                  if(EN > XION7[NION7]):
                        pass
                  else:
                        flag1052=1
                        for J in range(2,NION7+1):                                                
                              if(EN <= XION7[J]):
                                    flag1052=0
                                    break
                        if(flag1052):
                              J=NION7                                                           
                        # 1052 
                        A=(YION7[J]-YION7[J-1])/(XION7[J]-XION7[J-1])                
                        B=(XION7[J-1]*YION7[J]-XION7[J]*YION7[J-1])/(XION7[J-1]-XION7[J])
                        QION[7][I]=1.0e-16*(A*EN+B) 
                        flag1054=0
                        # USE BORN-BETHE X-SECTION ABOVE XION7[NION7] EV
                  if(flag1054):
                        QION[7][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00559
                  # 1054 
                  if(EN <= (2.0*EION[7])):
                        pass
                  else:
                        PEQION[7][I]=PEQEL[2][(I-IOFFION[7])]
                  #   DISSOCIATIVE IONISATION C++ 
            # 1055 
            QION[8][I]=0.0 
            PEQION[8][I]=0.5  
            if(NANISO == 2):
                  PEQION[8][I]=0.0                                   
            if(EN <= EION[8]):
                  pass
            else:
                  flag1059=1
                  if(EN > XION8[NION8]):
                        pass
                  else:
                        flag1057=1
                        for J in range(2,NION8+1):                                                
                              if(EN <= XION8[J]):
                                    flag1057=0
                                    break
                        if(flag1057):
                              J=NION8                                                           
                        # 1057 
                        A=(YION8[J]-YION8[J-1])/(XION8[J]-XION8[J-1])                
                        B=(XION8[J-1]*YION8[J]-XION8[J]*YION8[J-1])/(XION8[J-1]-XION8[J])
                        QION[8][I]=1.0e-16*(A*EN+B) 
                        flag1059=0
                        # USE BORN-BETHE X-SECTION ABOVE XION8[NION8] EV
                  if(flag1059):
                        # 1058 
                        QION[8][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00076
                  # 1059 
                  if(EN <= (2.0*EION[8])):
                        pass
                  else:
                        PEQION[8][I]=PEQEL[2][(I-IOFFION[8])]
                  #   DISSOCIATIVE IONISATION O++ 
            # 1060 
            QION[9][I]=0.0 
            PEQION[9][I]=0.5  
            if(NANISO == 2):
                  PEQION[9][I]=0.0                                   
            if(EN <= EION[9]):
                  pass
            else:
                  flag1062=1
                  if(EN > XION9[NION9]):
                        pass
                  else:
                        for J in range(2,NION9+1):                                                
                              if(EN <= XION9[J]):
                                    flag1062=0
                                    break
                        if(flag1062):
                              J=NION9                                                           
                        # 1062 
                        A=(YION9[J]-YION9[J-1])/(XION9[J]-XION9[J-1])                
                        B=(XION9[J-1]*YION9[J]-XION9[J]*YION9[J-1])/(XION9[J-1]-XION9[J])
                        QION[9][I]=1.0e-16*(A*EN+B) 
                        flag1064=0
                        # USE BORN-BETHE X-SECTION ABOVE XION9[NION9] EV
                  if(flag1064):
                        QION[9][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.00080
                  # 1064 
                  if(EN <= (2.0*EION[9])):
                        pass
                  else:
                        PEQION[9][I]=PEQEL[2][(I-IOFFION[9])]
                  # CARBON K-SHELL IONISATION
            # 25 
            QION[10][I]=0.0 
            PEQION[10][I]=0.5  
            if(NANISO == 2):
                  PEQION[10][I]=0.0                                  
            if(EN <= EION[10]):
                  pass
            else:
                  flag27=1
                  for J in range(2,NKSHC+1):
                        if(EN <= XKSHC[J]):
                              flag27=0
                              break
                  if(flag27):
                        J=NKSHC                                                           
                  # 27 
                  A=(YKSHC[J]-YKSHC[J-1])/(XKSHC[J]-XKSHC[J-1])                    
                  B=(XKSHC[J-1]*YKSHC[J]-XKSHC[J]*YKSHC[J-1])/(XKSHC[J-1]-XKSHC[J])
                  QION[10][I]=1.0e-16*(A*EN+B) 
                  if(EN <= (2.0*EION[10])):
                        pass
                  else:
                        PEQION[10][I]=PEQEL[2][(I-IOFFION[10])]
                  # OXYGEN K-SHELL IONISATION
            # 28 
            QION[11][I]=0.0 
            PEQION[11][I]=0.5  
            if(NANISO == 2):
                  PEQION[11][I]=0.0                                  
            if(EN <= EION[11]):
                  pass
            else:
                  for J in range(2,NKSHO+1):
                        if(EN <= XKSHO[J]):
                              flag30=0
                              break
                  if(flag30):
                        J=NKSHO                                                           
                  # 30 
                  A=(YKSHO[J]-YKSHO[J-1])/(XKSHO[J]-XKSHO[J-1])                    
                  B=(XKSHO[J-1]*YKSHO[J]-XKSHO[J]*YKSHO[J-1])/(XKSHO[J-1]-XKSHO[J])
                  # SCALING FACTOR 2 FOR NUMBER OF OXYGENS PER MOLECULE
                  QION[11][I]=2.0e-16*(A*EN+B) 
                  if(EN <= (2.0*EION[11])):
                        pass
                  else:
                        PEQION[11][I]=PEQEL[2][(I-IOFFION[11])]
                  #
                  # FIX CO2+ X-SECTION FOR SPLIT INTO CO2+ EXCITED STATES
            # 301 
            QION[1][I]=QION[1][I]-QION[2][I]-QION[3][I]
            # ATTACHMENT                                                            
            Q[4][I]=0.0                                                        
            if(EN <= XATT[1]):
                  pass
            else:
                  flag40=1
                  flag32=1
                  if(EN > XATT[NATT1]):
                        pass
                  else:
                        for J in range(2,NATT1+1):
                              if(EN <= XATT[J]):
                                    flag32=0
                                    break
                        if(flag32):
                              J=NATT1                                                          
                        # 32 
                        A=(YATT[J]-YATT[J-1])/(XATT[J]-XATT[J-1])                         
                        B=(XATT[J-1]*YATT[J]-XATT[J]*YATT[J-1])/(XATT[J-1]-XATT[J])       
                        Q[4][I]=1.0e-16*(A*EN+B)
                        flag40=0
                  # 33
                  if(flag40): 
                        Q[4][I]=YATT[NATT1]*(XATT[NATT1]/EN)**3*1.e-16
                  #
            # 40 
            Q[5][I]=0.0                                                     
            Q[6][I]=0.0   
            # ----------------------------------------------------------------------
            #  QUADRUPOLE BORN ROTATIONAL STATES (GERJUOY AND STEIN)
            # ----------------------------------------------------------------------
            # SUPERELASTIC ROTATION
            for K in range(2,60+1,2-1+1): 
                  AJ=float(K)
                  L=(K/2)+1
                  PEQIN[K][I]=0.5
                  if(NANISO == 2):
                        PEQIN[K][I]=0.0
                  if(EN < (4.0*abs(EIN[K]))):
                        pass
                  else:
                        if(NANISO > 0):
                              # print("line 18695 ",K,I,I-IOFFN[K])
                              PEQIN[K][I]=PEQEL[2][int(I-IOFFN[K])]      
                  # 50 CONTINUE
                  # 51 
                  # print("index",K,1.0-EIN[K]/EN,EIN[K],EN)
                  QIN[K][I]=PJ[int(L)]*QBK*math.sqrt(1.0-EIN[K]/EN)*AJ*(AJ-1.0)/((2.0*AJ+1.0)*(2.0*AJ-1.0))
            # ROTATION                 
            for K in range(1,59+1,2-1+1):
                  QIN[K][I]=0.0
                  PEQIN[K][I]=0.5
                  if(NANISO == 2):
                        PEQIN[K][I]=0.0
                  if(EN <= EIN[K]):
                        continue
                  AJ=float(K-1)
                  L=(K+1)/2
                  # print("line 18710 QIN[",K,"][",I,"]=",QIN[K][I]," PJ[",L,"]= "," EIN[",K,"]=",EIN[K])
                  QIN[K][I]=PJ[int(L)]*QBK*math.sqrt(1.0-EIN[K]/EN)*(AJ+2.0)*(AJ+1.0)/((2.0*AJ+3.0)*(2.0*AJ+1.0))
                  if(EN < (4.0*abs(EIN[K]))):
                        continue
                  if(NANISO > 0):
                        PEQIN[K][I]=PEQEL[2][int(I-IOFFN[K])]      
                  # 52 CONTINUE
            # BORN (1/E) FALL OFF IN ROTATONAL X-SEC ABOVE 6.0 EV .
            if(EN < 6.0):
                  pass
            else:
                  for K in range(1,60+1):
                        QIN[K][I]=QIN[K][I]*6.0/EN
                  # 70 CONTINUE
            # 80 CONTINUE   
            #                                                                        
            #  SUPERELASTIC V2  B# end MODE                                            
            QIN[61][I]=0.0 
            PEQIN[61][I]=0.50
            if(NANISO == 2):
                  PEQIN[61][I]=0.00
            if(EN <= 0.0):
                  pass
            else:
                  flag126=1
                  EFAC=math.sqrt(1.0-(EIN[61]/EN))
                  QIN[61][I]=AMPV2*math.log((EFAC+1.0)/(EFAC-1.0))/EN 
                  if((EN+EIN[62]) > XV2[NV2]):
                        pass
                  else:
                        flag120=1
                        for J in range(2,NV2+1):
                              if((EN+EIN[62]) <= XV2[J]):
                                    flag120=0
                                    break
                        if(flag120):
                              J=NV2                                                             
                        # 120 
                        A=(YV2[J]-YV2[J-1])/(XV2[J]-XV2[J-1])                     
                        B=(XV2[J-1]*YV2[J]-XV2[J]*YV2[J-1])/(XV2[J-1]-XV2[J]) 
                        QIN[61][I]=QIN[61][I]+(EN+EIN[62])*(A*(EN+EIN[62])+B)/EN
                        flag126=0
                  if(flag126): 
                        QIN[61][I]=QIN[61][I]+YV2[NV2]*XV2[NV2]*(EN+EIN[62])/(EN*EN)
                  # 126 
                  QIN[61][I]=QIN[61][I]*APOPV2/DEGV2*1.e-16
                  if(EN < (3.0*abs(EIN[61]))):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[61][I]=PEQEL[2][int(I-IOFFN[61])]
                  # V2  B# end MODE                                                             
            # 150 
            QIN[62][I]=0.0                        
            PEQIN[62][I]=0.50
            if(NANISO == 2):
                  PEQIN[62][I]=0.00
            if(EN <= EIN[62]):
                  pass
            else:
                  flag176=1
                  EFAC=math.sqrt(1.0-(EIN[62]/EN))
                  QIN[62][I]=AMPV2*math.log((1.0+EFAC)/(1.0-EFAC))/EN
                  if(EN > XV2[NV2]):
                        pass
                  else:
                        flag170=1
                        for J in range(2,NV2+1):
                              if(EN <= XV2[J]):
                                    flag170=0
                                    break
                        if(flag170):
                              J=NV2                                                             
                        # 170 
                        A=(YV2[J]-YV2[J-1])/(XV2[J]-XV2[J-1])                     
                        B=(XV2[J-1]*YV2[J]-XV2[J]*YV2[J-1])/(XV2[J-1]-XV2[J]) 
                        QIN[62][I]=QIN[62][I]+(A*EN+B)
                        flag176=0
                  if(flag176): 
                        QIN[62][I]=QIN[62][I]+YV2[NV2]*XV2[NV2]/EN
                  # 176 
                  QIN[62][I]=QIN[62][I]*APOPGS*1.e-16
                  if(EN < (3.0*EIN[62])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[62][I]=PEQEL[2][int(I-IOFFN[62])]
                  #     
                  #  SUPERELASTIC 2V2 B# end MODE HARMONIC                                               
            # 200 CONTINUE                                                          
            QIN[63][I]=0.0  
            PEQIN[63][I]=0.50
            if(NANISO == 2):
                  PEQIN[63][I]=0.00
            if(EN <= 0.0):
                  pass
            else:
                  flag226=1
                  if((EN+EIN[64]) > X2V2[N2V2]):
                        pass
                  else:
                        flag220=1
                        for J in range(2,N2V2+1):                                                   
                              if((EN+EIN[64]) <= X2V2[J]):
                                    flag220=0
                                    break                              
                        if(flag220):
                              J=N2V2                                                            
                        # 220 
                        A=(Y2V2[J]-Y2V2[J-1])/(X2V2[J]-X2V2[J-1])                     
                        B=(X2V2[J-1]*Y2V2[J]-X2V2[J]*Y2V2[J-1])/(X2V2[J-1]-X2V2[J]) 
                        QIN[63][I]=(EN+EIN[64])*(A*(EN+EIN[64])+B)/EN
                        flag226=0
                  if(flag226):
                        QIN[63][I]=Y2V2[N2V2]*X2V2[N2V2]*(EN+EIN[64])/(EN*EN)
                  # 226 
                  QIN[63][I]=QIN[63][I]*APOP2V2/DEG2V2*1.e-16      
                  if(EN < (3.0*abs(EIN[63]))):
                        pass
                  else:
                        if(NANISO > 0):
                              # print("line 18829 ",I-IOFFN[63],I,IOFFN[63])
                              PEQIN[63][I]=PEQEL[2][int(I-IOFFN[63])]          
                        #  2V2 B# end MODE HARMONIC                                               
            # 250 CONTINUE                                                          
            QIN[64][I]=0.0  
            PEQIN[64][I]=0.50
            if(NANISO == 2):
                  PEQIN[64][I]=0.00
            if(EN <= EIN[64]):
                  pass
            else:
                  flag270=1
                  flag276=1
                  if(EN > X2V2[N2V2]):
                        pass
                  else:
                        for J in range(2,N2V2+1):
                              if(EN <= X2V2[J]):
                                    flag270=0
                                    break
                        if(flag270):
                              J=N2V2                                                            
                        # 270 
                        A=(Y2V2[J]-Y2V2[J-1])/(X2V2[J]-X2V2[J-1])                     
                        B=(X2V2[J-1]*Y2V2[J]-X2V2[J]*Y2V2[J-1])/(X2V2[J-1]-X2V2[J]) 
                        QIN[64][I]=(A*EN+B)
                        flag276=0
                  if(flag276):
                        QIN[64][I]=Y2V2[N2V2]*X2V2[N2V2]/EN  
                  # 276 
                  QIN[64][I]=QIN[64][I]*APOPGS*1.e-16  
                  if(EN < (3.0*EIN[64])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[64][I]=PEQEL[2][int(I-IOFFN[64])]                
                  #  
                  # SUPERELASTIC V1 SYMMETRIC STRETCH                                
            # 300 CONTINUE                                                          
            QIN[65][I]=0.0  
            PEQIN[65][I]=0.50
            if(NANISO == 2):
                  PEQIN[65][I]=0.00
            if(EN <= 0.0):
                  pass
            else:
                  if((EN+EIN[66]) > XV1[NV1]):
                        pass
                  else:
                        flag320=1
                        for J in range(2,NV1+1):
                              if((EN+EIN[66]) <= XV1[J]):
                                    flag320=0
                                    break                               
                        if(flag320):
                              J=NV1                                                             
                        # 320 
                        A=(YV1[J]-YV1[J-1])/(XV1[J]-XV1[J-1])                     
                        B=(XV1[J-1]*YV1[J]-XV1[J]*YV1[J-1])/(XV1[J-1]-XV1[J]) 
                        QIN[65][I]=(EN+EIN[66])*(A*(EN+EIN[66])+B)/EN
                        flag326=0
                  if(flag326):
                        QIN[65][I]=YV1[NV1]*XV1[NV1]*(EN+EIN[66])/(EN*EN)
                  # 326 
                  QIN[65][I]=QIN[65][I]*APOPV1/DEGV1*1.e-16   
                  if(EN < (3.0*abs(EIN[65]))):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[65][I]=PEQEL[2][int(I-IOFFN[65])]               
                  # V1 SYMMETRIC STRETCH                                                 
            # 350 CONTINUE                                                          
            QIN[66][I]=0.0  
            PEQIN[66][I]=0.50
            if(NANISO == 2):
                  PEQIN[66][I]=0.00
            if(EN <= EIN[66]):
                  pass
            else:
                  flag376=1
                  if(EN > XV1[NV1]):
                        pass
                  else:
                        flag370=1
                        for J in range(2,NV1+1):
                              if(EN <= XV1[J]):
                                    flag370=0
                                    break                                       
                        if(flag370):
                              J=NV1                                                             
                        # 370 
                        A=(YV1[J]-YV1[J-1])/(XV1[J]-XV1[J-1])                     
                        B=(XV1[J-1]*YV1[J]-XV1[J]*YV1[J-1])/(XV1[J-1]-XV1[J]) 
                        QIN[66][I]=(A*EN+B)
                        flag376=0 
                  if(flag376):
                        QIN[66][I]=YV1[NV1]*XV1[NV1]/EN
                  # 376 
                  QIN[66][I]=QIN[66][I]*APOPGS*1.e-16
                  if(EN < (3.0*EIN[66])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[66][I]=PEQEL[2][int(I-IOFFN[66])]             
                  #  
                  # SUPERELASTIC 3V2 + V12                                                
            # 400 CONTINUE                                                          
            QIN[67][I]=0.0  
            PEQIN[67][I]=0.50
            if(NANISO == 2):
                  PEQIN[67][I]=0.00
            if(EN <= 0.0):
                  pass
            else:
                  if((EN+EIN[68]> X3V2[N3V2])):
                        pass
                  else:
                        flag420=1
                        for J in range(2,N3V2+1):
                              if((EN+EIN[68]<= X3V2[J])):
                                    flag420=0
                                    break                              
                        # 410 CONTINUE                 
                        if(flag420):                                         
                              J=N3V2                                                            
                        # 420 
                        A=(Y3V2[J]-Y3V2[J-1])/(X3V2[J]-X3V2[J-1])                     
                        B=(X3V2[J-1]*Y3V2[J]-X3V2[J]*Y3V2[J-1])/(X3V2[J-1]-X3V2[J])
                        QIN[67][I]=(EN+EIN[68])*(A*(EN+EIN[68])+B)/EN
                        flag426=0
                  if(flag426):
                        QIN[67][I]=Y3V2[N3V2]*X3V2[N3V2]*(EN+EIN[68])/(EN*EN) 
                  # 426
                  QIN[67][I]=QIN[67][I]*APOP3V2/DEG3V2*1.e-16  
                  if(EN < (3.0*abs(EIN[68]))):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[67][I]=PEQEL[2][int(I-IOFFN[67])]                
                  # 3V2 + V12                                                             
            # 450 CONTINUE                                                          
            QIN[68][I]=0.0  
            PEQIN[68][I]=0.50
            if(NANISO == 2):
                  PEQIN[68][I]=0.00
            if(EN <= EIN[68]):
                  pass
            else:
                  if(EN > X3V2[N3V2]):
                        pass
                  else:
                        flag470=1
                        for J in range(2,N3V2+1):
                              if(EN <= X3V2[J]):
                                    flag470=0
                                    break                                       
                        # 460 CONTINUE   
                        if(flag470):                                                       
                              J=N3V2                                                            
                        # 470 
                        A=(Y3V2[J]-Y3V2[J-1])/(X3V2[J]-X3V2[J-1])                     
                        B=(X3V2[J-1]*Y3V2[J]-X3V2[J]*Y3V2[J-1])/(X3V2[J-1]-X3V2[J]) 
                        QIN[68][I]=(A*EN+B)  
                        flag476=0
                  if(flag476):
                        QIN[68][I]=Y3V2[N3V2]*X3V2[N3V2]/EN
                  # 476 
                  QIN[68][I]=QIN[68][I]*APOPGS*1.e-16
                  if(EN < (3.0*EIN[68])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[68][I]=PEQEL[2][int(I-IOFFN[68])]               
                  #
                  #  SUPERELASTIC V3 ASYMMETRIC STRETCH                                                     
            # 500 
            QIN[69][I]=0.0  
            PEQIN[69][I]=0.50
            if(NANISO == 2):
                  PEQIN[69][I]=0.00
            if(EN <= 0.0):
                  pass
            else:
                  EFAC=math.sqrt(1.0-(EIN[69]/EN))
                  QIN[69][I]=AMPV3*math.log((EFAC+1.0)/(EFAC-1.0))/EN    
                  if((EN+EIN[70] > XV3[NV3])):
                        pass
                  else:
                        flag520=1
                        for J in range(2,NV3+1):
                              if((EN+EIN[70] <= XV3[J])):
                                    flag520=0
                                    break
                        # 510 CONTINUE     
                        if(flag520):                                                     
                              J=NV3                                                             
                        # 520 
                        A=(YV3[J]-YV3[J-1])/(XV3[J]-XV3[J-1])                     
                        B=(XV3[J-1]*YV3[J]-XV3[J]*YV3[J-1])/(XV3[J-1]-XV3[J]) 
                        QIN[69][I]=QIN[69][I]+(EN+EIN[70])*(A*(EN+EIN[70])+B)/EN
                        flag526=0
                  if(flag526):
                        QIN[69][I]=QIN[69][I]+YV3[NV3]*XV3[NV3]*(EN+EIN[70])/(EN*EN)
                  # 526 
                  QIN[69][I]=QIN[69][I]*APOPV3/DEGV3*1.e-16
                  if(EN < (3.0*abs(EIN[69]))):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[69][I]=PEQEL[2][int(I-IOFFN[69])]
                  # V3  ASYMMETRIC STRETCH                                                    
            # 550 
            QIN[70][I]=0.0  
            PEQIN[70][I]=0.50
            if(NANISO == 2):
                  PEQIN[70][I]=0.00
            if(EN <= EIN[70]):
                  pass
            else:
                  flag576=1
                  EFAC=math.sqrt(1.0-(EIN[70]/EN))
                  QIN[70][I]=AMPV3*math.log((1.0+EFAC)/(1.0-EFAC))/EN  
                  if(EN > XV3[NV3]):
                        pass
                  else:
                        flag570=1
                        for J in range(2,NV3+1):
                              if(EN <= XV3[J]):
                                    flag570=0
                                    break
                        if(flag570):
                              J=NV3                                                             
                        # 570 
                        A=(YV3[J]-YV3[J-1])/(XV3[J]-XV3[J-1])                     
                        B=(XV3[J-1]*YV3[J]-XV3[J]*YV3[J-1])/(XV3[J-1]-XV3[J]) 
                        QIN[70][I]=QIN[70][I]+(A*EN+B)
                        flag576=0
                  if(flag576):
                        QIN[70][I]=QIN[70][I]+YV3[NV3]*XV3[NV3]/EN
                  # 576 
                  QIN[70][I]=QIN[70][I]*APOPGS*1.e-16
                  if(EN < (3.0*EIN[70])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[70][I]=PEQEL[2][int(I-IOFFN[70])]
                  #     
                  #  4V2 + 2V1 + V12V2  POLYAD 3                                                 
            # 600 CONTINUE                                                          
            QIN[71][I]=0.0  
            PEQIN[71][I]=0.50
            if(NANISO == 2):
                  PEQIN[71][I]=0.00
            if(EN <= EIN[71]):
                  pass
            else:
                  if(EN > XVPD3[NPD3]):
                        pass
                  else:
                        flag20=1
                        for J in range(2,NPD3+1):
                              if(EN <= XVPD3[J]):
                                    flag20=0
                                    break
                        if(flag20):
                              J=NPD3                                                           
                        # 620 
                        A=(YVPD3[J]-YVPD3[J-1])/(XVPD3[J]-XVPD3[J-1])                     
                        B=(XVPD3[J-1]*YVPD3[J]-XVPD3[J]*YVPD3[J-1])/(XVPD3[J-1]-XVPD3[J]) 
                        QIN[71][I]=(A*EN+B)*1.e-16             
                        flag626=0
                  if(flag626):
                        QIN[71][I]=YVPD3[NPD3]*XVPD3[NPD3]/EN*1.e-16       
                  # 626 
                  if(EN < (3.0*EIN[71])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[71][I]=PEQEL[2][int(I-IOFFN[71])]
                  #                                      
                  #       3V2V1  + 2V1V2                                                   
            # 650 CONTINUE                                                          
            QIN[72][I]=0.0  
            PEQIN[72][I]=0.50
            if(NANISO == 2):
                  PEQIN[72][I]=0.00
            if(EN <= EIN[72]):
                  pass
            else:
                  flag676=1
                  if(EN > XV130[NV130]):
                        pass
                  else:
                        flag670=1
                        for J in range(2,NV130+1):
                              if(EN <= XV130[J]):
                                    flag670=0
                                    break                                       
                        if(flag670):
                              J=NV130                                                           
                        # 670 
                        A=(YV130[J]-YV130[J-1])/(XV130[J]-XV130[J-1])                     
                        B=(XV130[J-1]*YV130[J]-XV130[J]*YV130[J-1])/(XV130[J-1]-XV130[J]) 
                        QIN[72][I]=(A*EN+B)*1.e-16       
                        flag676=0
                  if(flag676):
                        QIN[72][I]=YV130[NV130]*XV130[NV130]/EN*1.e-16   
                  # 676 
                  if(EN < (3.0*EIN[72])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[72][I]=PEQEL[2][int(I-IOFFN[72])]
                  #                                      
                  #   POLYAD 4                                                                    
            # 700 CONTINUE                                                          
            QIN[73][I]=0.0  
            PEQIN[73][I]=0.50
            if(NANISO == 2):
                  PEQIN[73][I]=0.00
            if(EN <= EIN[73]):
                  pass
            else:
                  flag726=1
                  if(EN > XVPD4[NPD4]):
                        pass
                  else:
                        flag720=1
                        for J in range(2,NPD4+1):                                                   
                              if(EN <= XVPD4[J]):
                                    flag720=0
                                    break
                        if(flag720):
                              J=NPD4                                                            
                        # 720 
                        A=(YVPD4[J]-YVPD4[J-1])/(XVPD4[J]-XVPD4[J-1])                     
                        B=(XVPD4[J-1]*YVPD4[J]-XVPD4[J]*YVPD4[J-1])/(XVPD4[J-1]-XVPD4[J]) 
                        QIN[73][I]=(A*EN+B)*1.e-16      
                        flag726=0
                  if(flag726):
                        QIN[73][I]=YVPD4[NPD4]*XVPD4[NPD4]/EN*1.e-16     
                  # 726 
                  if(EN < (3.0*EIN[73])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[73][I]=PEQEL[2][int(I-IOFFN[73])]
                  #
                  #  PLOYAD 5     
            # 750 CONTINUE                                                          
            QIN[74][I]=0.0  
            PEQIN[74][I]=0.50
            if(NANISO == 2):
                  PEQIN[74][I]=0.00
            if(EN <= EIN[74]):
                  pass
            else:
                  flag770=1
                  flag779=1
                  if(EN > XVPD5[NPD5]):
                        pass
                  else:
                        for J in range(2,NPD5+1):
                              if(EN <= XVPD5[J]):
                                    flag770=0
                                    break                                       
                        # 760 CONTINUE                 
                        if(flag770):                                         
                              J=NPD5                                                            
                        # 770 
                        A=(YVPD5[J]-YVPD5[J-1])/(XVPD5[J]-XVPD5[J-1])                     
                        B=(XVPD5[J-1]*YVPD5[J]-XVPD5[J]*YVPD5[J-1])/(XVPD5[J-1]-XVPD5[J]) 
                        QIN[74][I]=(A*EN+B)*1.e-16  
                        flag799=0
                  if(flag779):
                        QIN[74][I]=YVPD5[NPD5]*XVPD5[NPD5]/EN*1.e-16
                  # 799 
                  if(EN < (3.0*EIN[74])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[74][I]=PEQEL[2][int(I-IOFFN[74])]
                  #                                              
                  #   POLYAD 6                                                                    
            # 800 CONTINUE                                                          
            QIN[75][I]=0.0  
            PEQIN[75][I]=0.50
            if(NANISO == 2):
                  PEQIN[75][I]=0.00
            if(EN <= EIN[75]):
                  pass
            else:
                  flag826=1
                  if(EN > XVPD6[NPD6]):
                        pass
                  else:
                        flag820=1
                        for J in range(2,NPD6+1):
                              if(EN <= XVPD6[J]):
                                    flag820=0
                                    break                                       
                        # 810 CONTINUE                                                          
                        if(flag820):
                              J=NPD6                                                            
                        # 820 
                        A=(YVPD6[J]-YVPD6[J-1])/(XVPD6[J]-XVPD6[J-1])                     
                        B=(XVPD6[J-1]*YVPD6[J]-XVPD6[J]*YVPD6[J-1])/(XVPD6[J-1]-XVPD6[J]) 
                        QIN[75][I]=(A*EN+B)*1.e-16 
                        flag826=0
                  if(flag826):
                        QIN[75][I]=YVPD6[NPD6]*XVPD6[NPD6]/EN*1.e-16
                  # 826 
                  if(EN < (3.0*EIN[75])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[75][I]=PEQEL[2][int(I-IOFFN[75])]
                  #                                             
                  #   POLYAD 7                                                                    
            # 850 CONTINUE                                                          
            QIN[76][I]=0.0  
            PEQIN[76][I]=0.50
            if(NANISO == 2):
                  PEQIN[76][I]=0.00
            if(EN <= EIN[76]):
                  pass
            else:
                  flag876=1
                  if(EN > XVPD7[NPD7]):
                        pass
                  else:
                        flag870=1
                        for J in range(2,NPD7+1):
                              if(EN <= XVPD7[J]):
                                    flag870=0
                                    break
                        # 860 CONTINUE                                                          
                        if(flag870):
                              J=NPD7                                                            
                        # 870 
                        A=(YVPD7[J]-YVPD7[J-1])/(XVPD7[J]-XVPD7[J-1])                     
                        B=(XVPD7[J-1]*YVPD7[J]-XVPD7[J]*YVPD7[J-1])/(XVPD7[J-1]-XVPD7[J]) 
                        QIN[76][I]=(A*EN+B)*1.e-16 
                        flag876=0
                  if(flag876):
                        QIN[76][I]=YVPD7[NPD7]*XVPD7[NPD7]/EN*1.e-16
                  # 876 
                  if(EN < (3.0*EIN[76])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[76][I]=PEQEL[2][int(I-IOFFN[76])]
                  #                                              
                  #   POLYAD 8                                                                    
            # 900 CONTINUE                                                          
            QIN[77][I]=0.0  
            PEQIN[77][I]=0.50
            if(NANISO == 2):
                  PEQIN[77][I]=0.00
            if(EN <= EIN[77]):
                  pass
            else:
                  flag926=1
                  if(EN > XVPD8[NPD8]):
                        pass
                  else:
                        flag920=1
                        for J in range(2,NPD8+1):
                              if(EN <= XVPD8[J]):
                                    flag920=0
                                    break
                        if(flag920):
                              J=NPD8                                                            
                        # 920 
                        A=(YVPD8[J]-YVPD8[J-1])/(XVPD8[J]-XVPD8[J-1])                     
                        B=(XVPD8[J-1]*YVPD8[J]-XVPD8[J]*YVPD8[J-1])/(XVPD8[J-1]-XVPD8[J]) 
                        QIN[77][I]=(A*EN+B)*1.e-16
                        flag926=0
                  if(flag926):
                        QIN[77][I]=YVPD8[NPD8]*XVPD8[NPD8]/EN*1.e-16
                  # 926 
                  if(EN < (3.0*EIN[77])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[77][I]=PEQEL[2][int(I-IOFFN[77])]
                  #                                               
                  #   POLYAD 9                                                                    
            # 950 CONTINUE                                                          
            QIN[78][I]=0.0  
            PEQIN[78][I]=0.50
            if(NANISO == 2):
                  PEQIN[78][I]=0.00
            if(EN <= EIN[78]):
                  pass
            else:
                  flag976=1
                  if(EN > XVPD9[NPD9]):
                        pass
                  else:
                        flag970=1
                        for J in range(2,NPD9+1):
                              if(EN <= XVPD9[J]):
                                    flag970=0
                                    break                                       
                        if(flag970):
                              J=NPD9                                                            
                        # 970 
                        A=(YVPD9[J]-YVPD9[J-1])/(XVPD9[J]-XVPD9[J-1])                     
                        B=(XVPD9[J-1]*YVPD9[J]-XVPD9[J]*YVPD9[J-1])/(XVPD9[J-1]-XVPD9[J]) 
                        QIN[78][I]=(A*EN+B)*1.e-16     
                        flag976=0 
                  if(flag976):
                        QIN[78][I]=YVPD9[NPD9]*XVPD9[NPD9]/EN*1.e-16
                  # 976 
                  if(EN < (3.0*EIN[78])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[78][I]=PEQEL[2][int(I-IOFFN[78])]
                  #                                          
                  #   SUM OF HIGHER POLYADS                                                       
            # 1000 CONTINUE                                                          
            QIN[79][I]=0.0   
            PEQIN[79][I]=0.50
            if(NANISO == 2):
                  PEQIN[79][I]=0.00
            if(EN <= EIN[79]):
                  pass
            else:
                  flag1006=1
                  if(EN > XVPDH[NPDH]):
                        pass
                  else:
                        flag1002=1
                        for J in range(2,NPDH+1):
                              if(EN <= XVPDH[J]):
                                    flag1002=0
                                    break
                        if(flag1002):
                              J=NPDH                                                            
                        # 1002 
                        A=(YVPDH[J]-YVPDH[J-1])/(XVPDH[J]-XVPDH[J-1])                     
                        B=(XVPDH[J-1]*YVPDH[J]-XVPDH[J]*YVPDH[J-1])/(XVPDH[J-1]-XVPDH[J]) 
                        QIN[79][I]=(A*EN+B)*1.e-16       
                        flag1006=0
                  if(flag1006):
                        QIN[79][I]=YVPDH[NPDH]*XVPDH[NPDH]/EN*1.e-16   
                  # 1006 
                  if(EN < (3.0*EIN[79])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[79][I]=PEQEL[2][int(I-IOFFN[79])]
                  #  1DELu  6.50ev                      
            # 1080 CONTINUE                                                          
            QIN[80][I]=0.0  
            PEQIN[80][I]=0.5
            if(NANISO == 2):
                  PEQIN[80][I]=0.0  
            if(EN <= EIN[80]):
                  pass
            else:
                  QIN[80][I]=.0000698/(EIN[80]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[80]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[80]+E[3])*1.0192
                  if(QIN[80][I]< 0.0):
                        QIN[80][I]=0.0
                  if(EN <= (2.0*EIN[80])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[80][I]=PEQEL[2][int(I-IOFFN[80])]               
                  # 1DELu 6.75 ev                                                        
            # 1081 CONTINUE                                                          
            QIN[81][I]=0.0   
            PEQIN[81][I]=0.5  
            if(NANISO == 2):
                  PEQIN[81][I]=0.0                                  
            if(EN <= EIN[81]):
                  pass
            else:
                  QIN[81][I]=.0000630/(EIN[81]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[81]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[81]+E[3])*1.0185
                  if(QIN[81][I]< 0.0):
                        QIN[81][I]=0.0
                  if(EN <= (2.0*EIN[81])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[81][I]=PEQEL[2][int(I-IOFFN[81])]           
                  #   1DELu  7.00ev                                            
            # 1082 CONTINUE                                                          
            QIN[82][I]=0.0
            PEQIN[82][I]=0.5 
            if(NANISO == 2):
                  PEQIN[82][I]=0.0                                 
            if(EN <= EIN[82]):
                  pass
            else:
                  QIN[82][I]=.0000758/(EIN[82]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[82]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[82]+E[3])*1.0179
                  if(QIN[82][I]< 0.0):
                        QIN[82][I]=0.0
                  if(EN <= (2.0*EIN[82])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[82][I]=PEQEL[2][int(I-IOFFN[82])] 
                  #   1DELu 7.25ev
            # 1083 CONTINUE                                                          
            QIN[83][I]=0.0
            PEQIN[83][I]=0.5
            if(NANISO == 2):
                  PEQIN[83][I]=0.0                                  
            if(EN <= EIN[83]):
                  pass
            else:
                  QIN[83][I]=.0001638/(EIN[83]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[83]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[83]+E[3])*1.0172
                  if(QIN[83][I]< 0.0):
                        QIN[83][I]=0.0
                  if(EN <= (2.0*EIN[83])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[83][I]=PEQEL[2][int(I-IOFFN[83])]       
                  # 1DELu  7.5ev   
            # 1084 CONTINUE                                                          
            QIN[84][I]=0.0 
            PEQIN[84][I]=0.5
            if(NANISO == 2):
                  PEQIN[84][I]=0.0                                  
            if(EN <= EIN[84]):
                  pass
            else:
                  QIN[84][I]=.0003356/(EIN[84]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[84]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[84]+E[3])*1.0167
                  if(QIN[84][I]< 0.0):
                        QIN[84][I]=0.0
                  if(EN <= (2.0*EIN[84])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[84][I]=PEQEL[2][int(I-IOFFN[84])]           
                  #  1DELu 7.75ev                                
            # 1085 CONTINUE           
            QIN[85][I]=0.0
            PEQIN[85][I]=0.5
            if(NANISO == 2):
                  PEQIN[85][I]=0.0                              
            if(EN <= EIN[85]):
                  pass
            else:
                  QIN[85][I]=.0007378/(EIN[85]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[85]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[85]+E[3])*1.0161
                  if(QIN[85][I]< 0.0):
                        QIN[85][I]=0.0
                  if(EN <= (2.0*EIN[85])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[85][I]=PEQEL[2][int(I-IOFFN[85])] 
                  #  1DELu 8.0ev   
            # 1086 CONTINUE                                                          
            QIN[86][I]=0.0
            PEQIN[86][I]=0.5
            if(NANISO == 2):
                  PEQIN[86][I]=0.0                              
            if(EN <= EIN[86]):
                  pass
            else:
                  QIN[86][I]=.001145/(EIN[86]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[86]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[86]+E[3])*1.0156
                  if(QIN[86][I]< 0.0):
                        QIN[86][I]=0.0
                  if(EN <= (2.0*EIN[86])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[86][I]=PEQEL[2][int(I-IOFFN[86])] 
                  # 1DELu 8.25ev    
            # 1087 CONTINUE                                                          
            QIN[87][I]=0.0
            PEQIN[87][I]=0.5
            if(NANISO == 2):
                  PEQIN[87][I]=0.0                              
            if(EN <= EIN[87]):
                  pass
            else:
                  QIN[87][I]=.001409/(EIN[87]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[87]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[87]+E[3])*1.0152
                  if(QIN[85][I]< 0.0):
                        QIN[87][I]=0.0
                  if(EN <= (2.0*EIN[87])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[87][I]=PEQEL[2][int(I-IOFFN[87])] 
                  #  1DELu 8.50ev   
            # 1088 CONTINUE                                                          
            QIN[88][I]=0.0
            PEQIN[88][I]=0.5
            if(NANISO == 2):
                  PEQIN[88][I]=0.0                              
            if(EN <= EIN[88]):
                  pass
            else:
                  QIN[88][I]=.001481/(EIN[88]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[88]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[88]+E[3])*1.0147
                  if(QIN[88][I]< 0.0):
                        QIN[88][I]=0.0
                  if(EN <= (2.0*EIN[88])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[88][I]=PEQEL[2][int(I-IOFFN[88])] 
                  # 1DELu 8.75ev   
            # 1089 CONTINUE                                                          
            QIN[89][I]=0.0
            PEQIN[89][I]=0.5
            if(NANISO == 2):
                  PEQIN[89][I]=0.0                              
            if(EN <= EIN[89]):
                  pass
            else:
                  QIN[89][I]=.000859/(EIN[89]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[89]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[89]+E[3])*1.0143
                  if(QIN[89][I]< 0.0):
                        QIN[89][I]=0.0
                  if(EN <= (2.0*EIN[89])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[89][I]=PEQEL[2][int(I-IOFFN[89])] 
                  # TRIPLET
            # 1090 CONTINUE                                                          
            QIN[90][I]=0.0
            PEQIN[90][I]=0.5
            if(NANISO == 2):
                  PEQIN[90][I]=0.0                              
            if(EN <= EIN[90]):
                  pass
            else:
                  if(EN > XTRP1[NTRP1]):
                        pass
                  else:
                        for J in range(2,NTRP1+1):
                              if(EN <= (XTRP1[J])):
                                    flag2082=0
                                    break
                        else:
                              J=NTRP1
                        # 2082 
                        A=(YTRP1[J]-YTRP1[J-1])/(XTRP1[J]-XTRP1[J-1])
                        B=(XTRP1[J-1]*YTRP1[J]-XTRP1[J]*YTRP1[J-1])/(XTRP1[J-1]-XTRP1[J])
                        QIN[90][I]=(A*EN+B)*1.e-16                
                        flag2084=0
                        # SCALE BY 1/E**2 ABOVE XTRP1[NTRP1] EV
                  if(flag2084):
                        QIN[90][I]=YTRP1[NTRP1]*(XTRP1[NTRP1]/EN)**2*1.e-16                
                  # 2084 
                  if(EN <= (2.0*EIN[90])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[90][I]=PEQEL[2][int(I-IOFFN[90])] 
                  #  1PIg  8.90ev                                            
            # 1091 CONTINUE                                                          
            QIN[91][I]=0.0
            PEQIN[91][I]=0.5
            if(NANISO == 2):
                  PEQIN[91][I]=0.0                              
            if(EN <= EIN[91]):
                  pass
            else:
                  QIN[91][I]=.001687/(EIN[91]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[91]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[91]+E[3])*1.0140
                  if(QIN[91][I]< 0.0):
                        QIN[91][I]=0.0
                  if(EN <= (2.0*EIN[91])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[91][I]=PEQEL[2][int(I-IOFFN[91])] 
                  #  1PIg 9.15ev   
            # 1092 CONTINUE                                                          
            QIN[92][I]=0.0
            PEQIN[92][I]=0.5
            if(NANISO == 2):
                  PEQIN[92][I]=0.0                              
            if(EN <= EIN[92]):
                  pass
            else:
                  QIN[92][I]=.002115/(EIN[92]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[92]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[92]+E[3])*1.0137
                  if(QIN[92][I]< 0.0):
                        QIN[92][I]=0.0
                  if(EN <= (2.0*EIN[92])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[92][I]=PEQEL[2][int(I-IOFFN[92])] 
                  #  1PIg  9.4ev   
            # 1093 CONTINUE                                                          
            QIN[93][I]=0.0
            PEQIN[93][I]=0.5
            if(NANISO == 2):
                  PEQIN[93][I]=0.0                              
            if(EN <= EIN[93]):
                  pass
            else:
                  QIN[93][I]=.001920/(EIN[93]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[93]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[93]+E[3])*1.0133
                  if(QIN[93][I]< 0.0):
                        QIN[93][I]=0.0
                  if(EN <= (2.0*EIN[93])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[93][I]=PEQEL[2][int(I-IOFFN[93])] 
                  #  1PIg  9.65ev   
            # 1094 CONTINUE                                                          
            QIN[94][I]=0.0
            PEQIN[94][I]=0.5
            if(NANISO == 2):
                  PEQIN[94][I]=0.0                              
            if(EN <= EIN[94]):
                  pass
            else:
                  QIN[94][I]=.001180/(EIN[94]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[94]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[94]+E[3])*1.0130
                  if(QIN[94][I]< 0.0):
                        QIN[94][I]=0.0
                  if(EN <= (2.0*EIN[94])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[94][I]=PEQEL[2][int(I-IOFFN[94])] 
                  #  1PIg  9.9ev   
            # 1095 CONTINUE                                                          
            QIN[95][I]=0.0
            PEQIN[95][I]=0.5
            if(NANISO == 2):
                  PEQIN[95][I]=0.0                              
            if(EN <= EIN[95]):
                  pass
            else:
                  QIN[95][I]=.000683/(EIN[95]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[95]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[95]+E[3])*1.0126
                  if(QIN[95][I]< 0.0):
                        QIN[95][I]=0.0
                  if(EN <= (2.0*EIN[95])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[95][I]=PEQEL[2][int(I-IOFFN[95])] 
                  #  1PIg 10.15ev   
            # 1096 CONTINUE                                                          
            QIN[96][I]=0.0
            PEQIN[96][I]=0.5
            if(NANISO == 2):
                  PEQIN[96][I]=0.0                              
            if(EN <= EIN[96]):
                  pass
            else:
                  QIN[96][I]=.000456/(EIN[96]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[96]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[96]+E[3])*1.0123
                  if(QIN[96][I]< 0.0):
                        QIN[96][I]=0.0
                  if(EN <= (2.0*EIN[96])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[96][I]=PEQEL[2][int(I-IOFFN[96])] 
                  #   RA:AU  10.7ev                                                     
            # 1097 CONTINUE                                                          
            QIN[97][I]=0.0
            PEQIN[97][I]=0.5
            if(NANISO == 2):
                  PEQIN[97][I]=0.0                              
            if(EN <= EIN[97]):
                  pass
            else:
                  QIN[97][I]=.004361/(EIN[97]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[97]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[97]+E[3])
                  if(QIN[97][I]< 0.0):
                        QIN[97][I]=0.0
                  if(EN <= (2.0*EIN[97])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[97][I]=PEQEL[2][int(I-IOFFN[97])] 
                  #  1SIGu+'  1SIGu+  C'   11.048ev                               
            # 1098 CONTINUE                                                          
            QIN[98][I]=0.0
            PEQIN[98][I]=0.5
            if(NANISO == 2):
                  PEQIN[98][I]=0.0                              
            if(EN <= EIN[98]):
                  pass
            else:
                  QIN[98][I]=.1718/(EIN[98]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[98]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[98]+E[3])
                  if(QIN[98][I]< 0.0):
                        QIN[98][I]=0.0
                  if(EN <= (2.0*EIN[98])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[98][I]=PEQEL[2][int(I-IOFFN[98])] 
                  #  TRIPLET                                                                
            # 1099 CONTINUE                                                          
            QIN[99][I]=0.0
            PEQIN[99][I]=0.5
            if(NANISO == 2):
                  PEQIN[99][I]=0.0                              
            if(EN <= EIN[99]):
                  pass
            else:
                  if(EN > XTRP2[NTRP2]):
                        pass
                  else:
                        for J in range(2,NTRP2+1):
                              if(EN <= (XTRP2[J])):
                                    flag2092=0
                                    break
                        if(flag2092):
                              J=NTRP2
                        # 2092 
                        A=(YTRP2[J]-YTRP2[J-1])/(XTRP2[J]-XTRP2[J-1])
                        B=(XTRP2[J-1]*YTRP2[J]-XTRP2[J]*YTRP2[J-1])/(XTRP2[J-1]-XTRP2[J])
                        QIN[99][I]=(A*EN+B)*1.e-16             
                        flag2094=0
                        # SCALE BY 1/E**2 ABOVE XTRP2[NTRP2] EV
                  if(flag2094):
                        QIN[99][I]=YTRP2[NTRP2]*(XTRP2[NTRP2]/EN)**2*1.e-16           
                  # 2094 
                  if(EN <= (2.0*EIN[99])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[99][I]=PEQEL[2][int(I-IOFFN[99])] 
                  # 1PIu  11.385ev                                                  
            # 1100 CONTINUE                                                          
            QIN[100][I]=0.0
            PEQIN[100][I]=0.5
            if(NANISO == 2):
                  PEQIN[100][I]=0.0                              
            if(EN <= EIN[100]):
                  pass
            else:
                  QIN[100][I]=.06242/(EIN[100]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[100]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[100]+E[3])
                  if(QIN[100][I]< 0.0):
                        QIN[100][I]=0.0
                  if(EN <= (2.0*EIN[100])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[100][I]=PEQEL[2][(I-IOFFN[100])]
                  #  RYDBERG  11.543ev                                                  
            # 1101 CONTINUE                                                          
            QIN[101][I]=0.0
            PEQIN[101][I]=0.5
            if(NANISO == 2):
                  PEQIN[101][I]=0.0                              
            if(EN <= EIN[101]):
                  pass
            else:
                  QIN[101][I]=.01852/(EIN[101]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[101]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[101]+E[3])
                  if(QIN[101][I]< 0.0):
                        QIN[101][I]=0.0
                  if(EN <= (2.0*EIN[101])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[101][I]=PEQEL[2][(I-IOFFN[101])]
                  #   RYDBERG 11.608ev                                               
            # 1102 CONTINUE                                                          
            QIN[102][I]=0.0
            PEQIN[102][I]=0.5
            if(NANISO == 2):
                  PEQIN[102][I]=0.0                              
            if(EN <= EIN[102]):
                  pass

            else:
                  QIN[102][I]=.01125/(EIN[102]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[102]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[102]+E[3])
                  if(QIN[102][I]< 0.0):
                        QIN[102][I]=0.0
                  if(EN <= (2.0*EIN[102])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[102][I]=PEQEL[2][(I-IOFFN[102])] 
                  #   RYDBERG 11.683ev                    
            # 1103 CONTINUE                                                          
            QIN[103][I]=0.0
            PEQIN[103][I]=0.5
            if(NANISO == 2):
                  PEQIN[103][I]=0.0                              
            if(EN <= EIN[103]):
                  pass
            else:
                  QIN[103][I]=.01535/(EIN[103]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[103]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[103]+E[3])
                  if(QIN[103][I]< 0.0):
                        QIN[103][I]=0.0
                  if(EN <= (2.0*EIN[103])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[103][I]=PEQEL[2][(I-IOFFN[103])]
                  #   RYDBERG  11.758ev                                             
            # 1104 CONTINUE                                                          
            QIN[104][I]=0.0
            PEQIN[104][I]=0.5
            if(NANISO == 2):
                  PEQIN[104][I]=0.0                              
            if(EN <= EIN[104]):
                  pass
            else:
                  QIN[104][I]=.01009/(EIN[104]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[104]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[104]+E[3])
                  if(QIN[104][I]< 0.0):
                        QIN[104][I]=0.0
                  if(EN <= (2.0*EIN[104])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[104][I]=PEQEL[2][(I-IOFFN[104])]
                  #   RYDBERG  11.826ev                                               
            # 1105 CONTINUE                                                          
            QIN[105][I]=0.0
            PEQIN[105][I]=0.5
            if(NANISO == 2):
                  PEQIN[105][I]=0.0                              
            if(EN <= EIN[105]):
                  pass
            else:
                  QIN[105][I]=.01940/(EIN[105]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[105]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[105]+E[3])
                  if(QIN[105][I]< 0.0):
                        QIN[105][I]=0.0
                  if(EN <= (2.0*EIN[105])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[105][I]=PEQEL[2][(I-IOFFN[105])] 
                  #   RYDBERG  11.971ev                                               
            # 1106 CONTINUE                                                          
            QIN[106][I]=0.0
            PEQIN[106][I]=0.5
            if(NANISO == 2):
                  PEQIN[106][I]=0.0                              
            if(EN <= EIN[106]):
                  pass
            else:
                  QIN[106][I]=.03817/(EIN[106]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[106]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[106]+E[3])
                  if(QIN[106][I]< 0.0):
                        QIN[106][I]=0.0
                  if(EN <= (2.0*EIN[106])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[106][I]=PEQEL[2][(I-IOFFN[106])] 
            #  RYDBERG  12.142ev                                                
            # 1107 CONTINUE                                                          
            QIN[107][I]=0.0
            PEQIN[107][I]=0.5
            if(NANISO == 2):
                  PEQIN[107][I]=0.0                              
            if(EN <= EIN[107]):
                  pass
            else:
                  QIN[107][I]=.05814/(EIN[107]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[107]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[107]+E[3])
                  if(QIN[107][I]< 0.0):
                        QIN[107][I]=0.0
                  if(EN <= (2.0*EIN[107])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[107][I]=PEQEL[2][(I-IOFFN[107])]
                  #  RYDBERG  12.301ev                                                 
            # 1108 CONTINUE                                                          
            QIN[108][I]=0.0
            PEQIN[108][I]=0.5
            if(NANISO == 2):
                  PEQIN[108][I]=0.0                              
            if(EN <= EIN[108]):
                  pass
            else:
                  QIN[108][I]=.04769/(EIN[108]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[108]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[108]+E[3])
                  if(QIN[108][I]< 0.0):
                        QIN[108][I]=0.0
                  if(EN <= (2.0*EIN[108])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[108][I]=PEQEL[2][(I-IOFFN[108])] 
                  #  RYDBERG   12.469ev                                               
            # 1109 CONTINUE                                                          
            QIN[109][I]=0.0
            PEQIN[109][I]=0.5
            if(NANISO == 2):
                  PEQIN[109][I]=0.0                              
            if(EN <= EIN[109]):
                  pass
            else:
                  QIN[109][I]=.09315/(EIN[109]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[109]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[109]+E[3])
                  if(QIN[109][I]< 0.0):
                        QIN[109][I]=0.0
                  if(EN <= (2.0*EIN[109])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[109][I]=PEQEL[2][(I-IOFFN[109])] 
                  #  RYDBERG 12.627ev                                                  
            # 1110 CONTINUE                                                          
            QIN[110][I]=0.0
            PEQIN[110][I]=0.5
            if(NANISO == 2):
                  PEQIN[110][I]=0.0                              
            if(EN <= EIN[110]):
                  pass
            else:
                  QIN[110][I]=.06305/(EIN[110]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[110]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[110]+E[3])
                  if(QIN[110][I]< 0.0):
                        QIN[110][I]=0.0
                  if(EN <= (2.0*EIN[110])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[110][I]=PEQEL[2][(I-IOFFN[110])] 
            #  CONTINUUM  12.75ev                                                   
            # 1111 CONTINUE                                                          
            QIN[111][I]=0.0
            PEQIN[111][I]=0.5
            if(NANISO == 2):
                  PEQIN[111][I]=0.0                              
            if(EN <= EIN[111]):
                  pass
            else:
                  QIN[111][I]=.02477/(EIN[111]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[111]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[111]+E[3])
                  if(QIN[111][I]< 0.0):
                        QIN[111][I]=0.0
                  if(EN <= (2.0*EIN[111])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[111][I]=PEQEL[2][(I-IOFFN[111])] 
                  #  RYDBERG  12.901ev                                                      
            # 1112 CONTINUE                                                          
            QIN[112][I]=0.0
            PEQIN[112][I]=0.5
            if(NANISO == 2):
                  PEQIN[112][I]=0.0                              
            if(EN <= EIN[112]):
                  pass
            else:
                  QIN[112][I]=.06231/(EIN[112]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[112]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[112]+E[3])
                  if(QIN[112][I]< 0.0):
                        QIN[112][I]=0.0
                  if(EN <= (2.0*EIN[112])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[112][I]=PEQEL[2][(I-IOFFN[112])] 
                  #  SUM RYDBERGS 13.01ev                                                    
            # 1113 CONTINUE                                                          
            QIN[113][I]=0.0
            PEQIN[113][I]=0.5
            if(NANISO == 2):
                  PEQIN[113][I]=0.0                              
            if(EN <= EIN[113]):
                  pass
            else:
                  QIN[113][I]=.06696/(EIN[113]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[113]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[113]+E[3])
                  if(QIN[113][I]< 0.0):
                        QIN[113][I]=0.0
                  if(EN <= (2.0*EIN[113])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[113][I]=PEQEL[2][(I-IOFFN[113])] 
                  #  SUM RYDBERGS 13.15ev                                                    
            # 1114 CONTINUE                                                          
            QIN[114][I]=0.0
            PEQIN[114][I]=0.5
            if(NANISO == 2):
                  PEQIN[114][I]=0.0                              
            if(EN <= EIN[114]):
                  pass
            else:
                  QIN[114][I]=.09451/(EIN[114]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[114]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[114]+E[3])
                  if(QIN[114][I]< 0.0):
                        QIN[114][I]=0.0
                  if(EN <= (2.0*EIN[114])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[114][I]=PEQEL[2][(I-IOFFN[114])] 
                  #  SUM RYDBERGS  13.28ev                                                   
            # 1115 CONTINUE                                                          
            QIN[115][I]=0.0
            PEQIN[115][I]=0.5
            if(NANISO == 2):
                  PEQIN[115][I]=0.0                              
            if(EN <= EIN[115]):
                  pass
            else:
                  QIN[115][I]=.04986/(EIN[115]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[115]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[115]+E[3])
                  if(QIN[115][I]< 0.0):
                        QIN[115][I]=0.0
                  if(EN <= (2.0*EIN[115])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[115][I]=PEQEL[2][(I-IOFFN[115])]
                  #  SUM RYDBERGS  13.39ev                                                  
            # 1116 CONTINUE                                                          
            QIN[116][I]=0.0
            PEQIN[116][I]=0.5
            if(NANISO == 2):
                  PEQIN[116][I]=0.0                              
            if(EN <= EIN[116]):
                  pass
            else:
                  QIN[116][I]=.09029/(EIN[116]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[116]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[116]+E[3])
                  if(QIN[116][I]< 0.0):
                        QIN[116][I]=0.0
                  if(EN <= (2.0*EIN[116])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[116][I]=PEQEL[2][(I-IOFFN[116])]
                  #  SUM RYDBERGS   13.51ev                                                 
            # 1117 CONTINUE                                                          
            QIN[117][I]=0.0
            PEQIN[117][I]=0.5
            if(NANISO == 2):
                  PEQIN[117][I]=0.0                              
            if(EN <= EIN[117]):
                  pass
            else:
                  QIN[117][I]=.07431/(EIN[117]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[117]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[117]+E[3])
                  if(QIN[117][I]< 0.0):
                        QIN[117][I]=0.0
                  if(EN <= (2.0*EIN[117])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[117][I]=PEQEL[2][(I-IOFFN[117])] 
                  #  SUM RYDBERGS   13.68ev                                               
            # 1118 CONTINUE                                                          
            QIN[118][I]=0.0
            PEQIN[118][I]=0.5
            if(NANISO == 2):
                  PEQIN[118][I]=0.0                              
            if(EN <= EIN[118]):
                  pass
            else:
                  QIN[118][I]=.15625/(EIN[118]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[118]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[118]+E[3])
                  if(QIN[118][I]< 0.0):
                        QIN[118][I]=0.0
                  if(EN <= (2.0*EIN[118])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[118][I]=PEQEL[2][(I-IOFFN[118])] 
                  #  NEUTRAL DISSOCIATION 13.78ev                                            
            # 1119 CONTINUE                                                          
            QIN[119][I]=0.0
            PEQIN[119][I]=0.5
            if(NANISO == 2):
                  PEQIN[119][I]=0.0                              
            if(EN <= EIN[119]):
                  pass
            else:
                  QIN[119][I]=.08084/(EIN[119]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[119]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[119]+E[3])*1.0075
                  if(QIN[119][I]< 0.0):
                        QIN[119][I]=0.0
                  if(EN <= (2.0*EIN[119])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[119][I]=PEQEL[2][(I-IOFFN[119])]
                  #  NEUTRAL DISSOCIATION  14.0ev                                            
            # 1120 CONTINUE                                                          
            QIN[120][I]=0.0
            PEQIN[120][I]=0.5
            if(NANISO == 2):
                  PEQIN[120][I]=0.0                              
            if(EN <= EIN[120]):
                  pass
            else:
                  QIN[120][I]=.02662/(EIN[120]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[120]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[120]+E[3])*1.0089
                  if(QIN[120][I]< 0.0):
                        QIN[120][I]=0.0
                  if(EN <= (2.0*EIN[120])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[120][I]=PEQEL[2][(I-IOFFN[120])] 
                  #  NEUTRAL DISSOCIATION  14.25ev 
            # 1121 CONTINUE                                                          
            QIN[121][I]=0.0
            PEQIN[121][I]=0.5
            if(NANISO == 2):
                  PEQIN[121][I]=0.0                              
            if(EN <= EIN[121]):
                  pass
            else:
                  QIN[121][I]=.01062/(EIN[121]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[121]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[121]+E[3])*1.0088
                  if(QIN[121][I]< 0.0):
                        QIN[121][I]=0.0
                  if(EN <= (2.0*EIN[121])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[121][I]=PEQEL[2][(I-IOFFN[121])]
                  #   NEUTRAL DISSOCIATION  14.5ev 
            # 1122 CONTINUE                                                          
            QIN[122][I]=0.0
            PEQIN[122][I]=0.5
            # print(QIN.shape)
            if(NANISO == 2):
                  PEQIN[122][I]=0.0                              
            if(EN <= EIN[122]):
                  pass
            else:
                  QIN[122][I]=.00644/(EIN[122]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[122]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[122]+E[3])*1.0086
                  if(QIN[122][I]< 0.0):
                        QIN[122][I]=0.0
                  if(EN <= (2.0*EIN[122])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[122][I]=PEQEL[2][(I-IOFFN[122])]
                  #  NEUTRAL DISSOCIATION  14.75ev  
            # 1123 CONTINUE  
            QIN[123][I]= 0.0
            PEQIN[123][I]= 0.5
            if(NANISO == 2):
                  PEQIN[123][I]=0.0                              
            if(EN <= EIN[123]):
                  pass
            else:
                  QIN[123][I]=.00485/(EIN[123]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[123]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[123]+E[3])*1.0085
                  if(QIN[123][I]< 0.0):
                        QIN[123][I]=0.0
                  if(EN <= (2.0*EIN[123])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[123][I]=PEQEL[2][I-IOFFN[123]] 
                  #  NEUTRAL DISSOCIATION  15.0ev 
            # 1124 CONTINUE                                                          
            QIN[124][I]=0.0
            PEQIN[124][I]=0.5
            if(NANISO == 2):
                  PEQIN[124][I]=0.0                              
            if(EN <= EIN[124]):
                  pass
            else:
                  QIN[124][I]=.00880/(EIN[124]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[124]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[124]+E[3])*1.0083
                  if(QIN[124][I]< 0.0):
                        QIN[124][I]=0.0
                  if(EN <= (2.0*EIN[124])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[124][I]=PEQEL[2][(I-IOFFN[124])]
                  #  NEUTRAL DISSOCIATION  15.25ev 
            # 1125 CONTINUE                                                          
            QIN[125][I]=0.0
            PEQIN[125][I]=0.5
            if(NANISO == 2):
                  PEQIN[125][I]=0.0                              
            if(EN <= EIN[125]):
                  pass
            else:
                  QIN[125][I]=.01522/(EIN[125]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[125]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[125]+E[3])*1.0082
                  if(QIN[125][I]< 0.0):
                        QIN[125][I]=0.0
                  if(EN <= (2.0*EIN[125])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[125][I]=PEQEL[2][(I-IOFFN[125])] 
                  #  NEUTRAL DISSOCIATION  15.5ev 
            # 1126 CONTINUE                                                          
            QIN[126][I]=0.0
            PEQIN[126][I]=0.5
            if(NANISO == 2):
                  PEQIN[126][I]=0.0                              
            if(EN <= EIN[126]):
                  pass
            else:
                  QIN[126][I]=.01683/(EIN[126]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[126]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[126]+E[3])*1.0081
                  if(QIN[126][I]< 0.0):
                        QIN[126][I]=0.0
                  if(EN <= (2.0*EIN[126])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[126][I]=PEQEL[2][(I-IOFFN[126])] 
                  #  NEUTRAL DISSOCIATION  15.75ev 
            # 1127 CONTINUE                                                          
            QIN[127][I]=0.0
            PEQIN[127][I]=0.5
            if(NANISO == 2):
                  PEQIN[127][I]=0.0                              
            if(EN <= EIN[127]):
                  pass
            else:
                  QIN[127][I]=.02135/(EIN[127]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[127]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[127]+E[3])*1.0079
                  if(QIN[127][I]< 0.0):
                        QIN[127][I]=0.0
                  if(EN <= (2.0*EIN[127])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[127][I]=PEQEL[2][(I-IOFFN[127])] 
                  #  NEUTRAL DISSOCIATION  16.0ev 
            # 1128 CONTINUE                                                          
            QIN[128][I]=0.0
            PEQIN[128][I]=0.5
            if(NANISO == 2):
                  PEQIN[128][I]=0.0                              
            if(EN <= EIN[128]):
                  pass
            else:
                  QIN[128][I]=.03232/(EIN[128]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[128]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[128]+E[3])*1.0078
                  if(QIN[128][I]< 0.0):
                        QIN[128][I]=0.0
                  if(EN <= (2.0*EIN[128])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[128][I]=PEQEL[2][(I-IOFFN[128])]
                  # NEUTRAL DISSOCIATION  16.25ev 
            # 1129 CONTINUE                                                          
            QIN[129][I]=0.0
            PEQIN[129][I]=0.5
            if(NANISO == 2):
                  PEQIN[129][I]=0.0                              
            if(EN <= EIN[129]):
                  pass
            else:
                  QIN[129][I]=.02534/(EIN[129]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[129]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[129]+E[3])*1.0077
                  if(QIN[129][I]< 0.0):
                        QIN[129][I]=0.0
                  if(EN <= (2.0*EIN[129])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[129][I]=PEQEL[2][(I-IOFFN[129])] 
                  #  NEUTRAL DISSOCIATION  16.5ev 
            # 1130 CONTINUE                                                          
            QIN[130][I]=0.0
            PEQIN[130][I]=0.5
            if(NANISO == 2):
                  PEQIN[130][I]=0.0                              
            if(EN <= EIN[130]):
                  pass
            else:
                  QIN[130][I]=.01433/(EIN[130]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[130]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[130]+E[3])*1.0076
                  if(QIN[130][I]< 0.0):
                        QIN[130][I]=0.0
                  if(EN <= (2.0*EIN[130])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[130][I]=PEQEL[2][(I-IOFFN[130])]
                  # NEUTRAL DISSOCIATION  16.75ev 
            # 1131 CONTINUE                                                          
            QIN[131][I]=0.0
            PEQIN[131][I]=0.5
            if(NANISO == 2):
                  PEQIN[131][I]=0.0                              
            if(EN <= EIN[131]):
                  pass
            else:
                  QIN[131][I]=.00965/(EIN[131]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[131]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[131]+E[3])*1.0075
                  if(QIN[131][I]< 0.0):
                        QIN[131][I]=0.0
                  if(EN <= (2.0*EIN[131])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[131][I]=PEQEL[2][(I-IOFFN[131])]
                  #  NEUTRAL DISSOCIATION  17.0ev 
            # 1132 CONTINUE                                                          
            QIN[132][I]=0.0
            PEQIN[132][I]=0.5
            if(NANISO == 2):
                  PEQIN[132][I]=0.0                              
            if(EN <= EIN[132]):
                  pass
            else:
                  QIN[132][I]=.01481/(EIN[132]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[132]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[132]+E[3])*1.0074
                  if(QIN[132][I]< 0.0):
                        QIN[132][I]=0.0
                  if(EN <= (2.0*EIN[132])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[132][I]=PEQEL[2][(I-IOFFN[132])] 
                  #  NEUTRAL DISSOCIATION  17.25ev 
            # 1133 CONTINUE                                                          
            QIN[133][I]=0.0
            PEQIN[133][I]=0.5
            if(NANISO == 2):
                  PEQIN[133][I]=0.0                              
            if(EN <= EIN[133]):
                  pass
            else:
                  QIN[133][I]=.01148/(EIN[133]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[133]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[133]+E[3])*1.0072
                  if(QIN[133][I]< 0.0):
                        QIN[133][I]=0.0
                  if(EN <= (2.0*EIN[133])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[133][I]=PEQEL[2][(I-IOFFN[133])]
                  #  NEUTRAL DISSOCIATION  17.5ev 
            # 1134 CONTINUE                                                          
            QIN[134][I]=0.0
            PEQIN[134][I]=0.5
            if(NANISO == 2):
                  PEQIN[134][I]=0.0                              
            if(EN <= EIN[134]):
                  pass
            else:
                  QIN[134][I]=.00885/(EIN[134]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[134]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[134]+E[3])*1.0071
                  if(QIN[134][I]< 0.0):
                        QIN[134][I]=0.0
                  if(EN <= (2.0*EIN[134])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[134][I]=PEQEL[2][(I-IOFFN[134])] 
                  # NEUTRAL DISSOCIATION  17.75ev 
            # 1135 CONTINUE                                                          
            QIN[135][I]=0.0
            PEQIN[135][I]=0.5
            if(NANISO == 2):
                  PEQIN[135][I]=0.0                              
            if(EN <= EIN[135]):
                  pass
            else:
                  QIN[135][I]=.00931/(EIN[135]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[135]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[135]+E[3])*1.0070
                  if(QIN[135][I]< 0.0):
                        QIN[135][I]=0.0
                  if(EN <= (2.0*EIN[135])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[135][I]=PEQEL[2][(I-IOFFN[135])]
                  # NEUTRAL DISSOCIATION  18.00ev 
            # 1136 CONTINUE                                                          
            QIN[136][I]=0.0
            PEQIN[136][I]=0.5
            if(NANISO == 2):
                  PEQIN[136][I]=0.0                              
            if(EN <= EIN[136]):
                  pass
            else:
                  QIN[136][I]=.00666/(EIN[136]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[136]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[136]+E[3])*1.0069
                  if(QIN[136][I]< 0.0):
                        QIN[136][I]=0.0
                  if(EN <= (2.0*EIN[136])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[136][I]=PEQEL[2][(I-IOFFN[136])]
                  # NEUTRAL DISSOCIATION  18.25ev 
            # 1137 CONTINUE                                                          
            QIN[137][I]=0.0
            PEQIN[137][I]=0.5
            if(NANISO == 2):
                  PEQIN[137][I]=0.0                              
            if(EN <= EIN[137]):
                  pass
            else:
                  QIN[137][I]=.00443/(EIN[137]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[137]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[137]+E[3])*1.0068
                  if(QIN[137][I]< 0.0):
                        QIN[137][I]=0.0
                  if(EN <= (2.0*EIN[137])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[137][I]=PEQEL[2][(I-IOFFN[137])] 
                  # NEUTRAL DISSOCIATION  18.50ev 
            # 1138 CONTINUE                                                          
            QIN[138][I]=0.0
            PEQIN[138][I]=0.5
            if(NANISO == 2):
                  PEQIN[138][I]=0.0                              
            if(EN <= EIN[138]):
                  pass
            else:
                  QIN[138][I]=.00371/(EIN[138]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[138]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[138]+E[3])*1.0068
                  if(QIN[138][I]< 0.0):
                        QIN[138][I]=0.0
                  if(EN <= (2.0*EIN[138])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[138][I]=PEQEL[2][(I-IOFFN[138])]
                  # NEUTRAL DISSOCIATION  18.75ev 
            # 1139 CONTINUE                                                          
            QIN[139][I]=0.0
            PEQIN[139][I]=0.5
            if(NANISO == 2):
                  PEQIN[139][I]=0.0                              
            if(EN <= EIN[139]):
                  pass
            else:
                  QIN[139][I]=.00344/(EIN[139]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[139]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[139]+E[3])*1.0067
                  if(QIN[139][I]< 0.0):
                        QIN[139][I]=0.0
                  if(EN <= (2.0*EIN[139])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[139][I]=PEQEL[2][(I-IOFFN[139])]
                  # NEUTRAL DISSOCIATION  19.00ev 
            # 1140 CONTINUE                                                          
            QIN[140][I]=0.0
            PEQIN[140][I]=0.5
            if(NANISO == 2):
                  PEQIN[140][I]=0.0                              
            if(EN <= EIN[140]):
                  pass
            else:
                  QIN[140][I]=.00356/(EIN[140]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[140]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[140]+E[3])*1.0066
                  if(QIN[140][I]< 0.0):
                        QIN[140][I]=0.0
                  if(EN <= (2.0*EIN[140])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[140][I]=PEQEL[2][(I-IOFFN[140])]
                  # NEUTRAL DISSOCIATION  19.25ev 
            # 1141 CONTINUE                                                          
            QIN[141][I]=0.0
            PEQIN[141][I]=0.5
            if(NANISO == 2):
                  PEQIN[141][I]=0.0                              
            if(EN <= EIN[141]):
                  pass
            else:
                  QIN[141][I]=.00530/(EIN[141]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[141]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[141]+E[3])*1.0065
                  if(QIN[141][I]< 0.0):
                        QIN[141][I]=0.0
                  if(EN <= (2.0*EIN[141])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[141][I]=PEQEL[2][(I-IOFFN[141])] 
                  # NEUTRAL DISSOCIATION  19.50ev 
            # 1142 CONTINUE                                                          
            QIN[142][I]=0.0
            PEQIN[142][I]=0.5
            if(NANISO == 2):
                  PEQIN[142][I]=0.0                              
            if(EN <= EIN[142]):
                  pass
            else:
                  QIN[142][I]=.00621/(EIN[142]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[142]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[142]+E[3])*1.0064
                  if(QIN[142][I]< 0.0):
                        QIN[142][I]=0.0
                  if(EN <= (2.0*EIN[142])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[142][I]=PEQEL[2][(I-IOFFN[142])]
                  # NEUTRAL DISSOCIATION  19.75ev 
            # 1143 CONTINUE                                                          
            QIN[143][I]=0.0
            PEQIN[143][I]=0.5
            if(NANISO == 2):
                  PEQIN[143][I]=0.0                              
            if(EN <= EIN[143]):
                  pass
            else:
                  QIN[143][I]=.00619/(EIN[143]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[143]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[143]+E[3])*1.0070
                  if(QIN[143][I]< 0.0):
                        QIN[143][I]=0.0
                  if(EN <= (2.0*EIN[143])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[143][I]=PEQEL[2][(I-IOFFN[143])]
                  #  TRIPLET SUM OF HIGH LYING TRIPLETS                                         
            # 1144 CONTINUE                                                          
            QIN[144][I]=0.0
            PEQIN[144][I]=0.5
            if(NANISO == 2):
                  PEQIN[144][I]=0.0                              
            if(EN <= EIN[144]):
                  pass
            else:
                  QIN[144][I]=3.6000/(EIN[144]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[144]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[144]+E[3])      
                  if(QIN[144][I]< 0.0):
                        QIN[144][I]=0.0
                  if(EN > 60.0):
                        QIN[144][I]=QIN[144][I]*math.sqrt(60.0/EN)
                  if(EN <= (2.0*EIN[144])):
                        pass
                  else:
                        if(NANISO > 0):
                              PEQIN[144][I]=PEQEL[2][(I-IOFFN[144])]
                  #
            # 1145 CONTINUE
            # LOAD BREMSSTRAHLUNG X-SECTIONS
            QIN[145][I]=0.0
            QIN[146][I]=0.0
            if(EN <= 1000.):
                  pass
            else:
                  flag1420=1
                  for J in range(2,NBREM+1):
                        if(EN <= EBRM[J]):
                              flag1420=0
                              break
                  if(flag1420):
                        J=NBREM
                  # 1420 
                  A=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
                  B=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
                  A1=(math.log(Z8T[J])-math.log(Z8T[J-1]))/(EBRM[J]-EBRM[J-1])
                  B1=(math.log(Z8T[J])*EBRM[J-1]-math.log(Z8T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
                  QIN[145][I]=math.exp(A*EN+B)*1.e-24
                  QIN[146][I]=math.exp(A1*EN+B1)*2.e-24
            # 1440 CONTINUE
            # SUM ROTATION 
            SUMR=0.0
            for K in range(1,60+1):
                  SUMR=SUMR+QIN[K][I]
            # 1450 CONTINUE   
            # SUM VIBRATION 
            SUMV=0.0
            for K in range(61,79+1):
                  SUMV=SUMV+QIN[K][I]
            # 1455 CONTINUE  
            # SUM DIPOLE +TRIPLET EXCITATION  
            SUME=0.0
            for K in range(80,144+1):
                  SUME=SUME+QIN[K][I]
            # 1460 CONTINUE  
            # SUM TRIPLET EXCITATION
            SUMTRP=QIN[90][I]+QIN[99][I]+QIN[144][I]
            # GET SUM DIPOLE
            SUME=SUME-SUMTRP
            SUMEXC=SUME+SUMTRP
            # SUM IONISATION
            SUMION=0.0
            for K in range(1,11+1):
                  SUMION=SUMION+QION[K][I]
            # 1470 CONTINUE
            # GET CORRECT ELASTIC X-SECTION
            Q[2][I]=Q[2][I]-SUMR
            # Q[1][I] TOTAL USED FOR INprintION ONLY          
            Q[1][I]=QELA+Q[4][I]+SUMV+SUME+SUMTRP+SUMION    
            #     WRITE(6,991) EN,SUME,SUMTRP,SUMEXC,SUMION,Q[1][I]  
            # 991 print(' EN=','%.4f' % ,' SUMDIPOLE=','%.4f' % ,' SUM TRIPLT=','%.4f' % ,
            #    //,'    SUMEXC=','%.4f' % ,' SUMION=','%.4f' % ,' TOT=','%.4f' % )  
            # 9000 CONTINUE                                                          
      #                                                                       
      #     SAVE ON COMPUTING TIME                                            
      #
      for K in range(1,74+1):
            J=145-K   
            if(EFINAL <= EIN[J]):
                  NIN=J-1
            # 2000 CONTINUE
      if(EFINAL > 1000.):
            NIN=146
      #       
      conf.ECHARG=ECHARG
      conf.EMASS=EMASS
      conf.AMU=AMU
      conf.PIR2=PIR2
      conf.NGAS=NGAS
      conf.NSTEP=NSTEP
      conf.NANISO=NANISO
      conf.EFINAL=EFINAL
      conf.ESTEP=ESTEP
      conf.AKT=AKT
      conf.ARY=ARY
      conf.TEMPC=TEMPC
      conf.TORR=TORR
      conf.IPEN=IPEN
      conf.E=EG
      conf.EROOT=EROOT 
      conf.QT1=QT1
      conf.QT2=QT2
      conf.QT3=QT3
      conf.QT4=QT4
      conf.DEN=DEN                                                         
      # print("gasn  ----------- \n")
      # print("Q ",Q)
      # print("QIN ",QIN)
      # print("NIN ",NIN)
      # print("E ",E)
      # print("EIN ",EIN)
      # print("NAME ",NAME)
      # print("VIRIAL ",VIRIAL)
      # print("EOBY ",EOBY)
      # print("PEQEL ",PEQEL)
      # print("PEQIN ",PEQIN)
      # print("PENFRA ",PENFRA)
      # print("KEL ",KEL)
      # print("KIN ",KIN)
      # print("QION ",QION)
      # print("PEQION ",PEQION)
      # print("EION ",EION)
      # print("NION ",NION)
      # print("QATT ",QATT)
      # print("NATT ",NATT)
      # print(" QNULL ", QNULL)
      # print("NNULL ",NNULL)
      # print("SCLN ",SCLN)
      # print("NC0 ",NC0)
      # print("EC0 ",EC0)
      # print("WKLM ",WKLM)
      # print("EFL ",EFL)
      # print("NG1 ",NG1)
      # print("EG1 ",EG1)
      # print("NG2 ",NG2)
      # print("EG2 ",EG2)
      # print("IZBR ",IZBR)
      # print("LEGAS ",LEGAS)
      # print("ISHELL ",ISHELL)
      # print("IONMODEL ",IONMODEL)
      # print("ESPLIT ",ESPLIT)
      # print("SCRPT ",SCRPT)
      # print("SCRPTN ",SCRPTN)
      # print("\n--------------------------")
      return Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT, QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT
      # end     
'''      
def GAS13(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end
def GAS14(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY   ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]        
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250] 
      DIMENSION ELEV[100],AJL(100),PJ(100) 
      DIMENSION SALPHA[105],EROT(105),AJIN(210),IMAP(210)   
      DIMENSION XEL(159),YEL(159),XMT(156),YMT(156),XEPS(156),YEPS(156),XVIB1[17],YVIB1[17],XVIB2[18],YVIB2[18],XVIB3[12],YVIB3[12],XION[55],YIONC[55],YIONG[55],XION1[31],YION1[31],XION2[28],YION2[28],XION3[28],YION3[28],XION4[26],YION4[26],XION5[25],YION5[25],XION6[23],YION6[23],XION7[21],YION7[21],XION8[17],YION8[17],XKSH(81),YKSH(81),XATT1[38],YATT1[38],XATT2[30],YATT2[30],XATT3[28],YATT3[28],XTRP1[11],YTRP1[11],XTRP2[10],YTRP2[10],XTRP3[10],YTRP3[10],XTRP4[9],YTRP4[9],XNUL1[12],YNUL1[12],XNUL2[33],YNUL2[33],XNUL3[20],YNUL3[20],XNUL4[18],YNUL4[18],IOFFN(250),IOFFION[9],XSECDUM(210)
      DIMENSION ENROT(145),ENRTS(145),YEPSR(145),YMTRT(145)
      DIMENSION Z1T[25],Z8T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10]             
      CHARACTER*25 NAME
      # ENERGY LEVELS OF WATER ( UP TO J=9) IN MILLIVOLTS
      ELEV=[0.0,2.950,4.604,5.253,8.690,9.856,11.800,16.726,16.882,16.956,17.640,21.946,25.578,26.304,35.363,35.387,27.531,27.876,34.157,37.240,39.152,47.426,47.590,60.518,60.521,40.338,40.496,49.526,51.603,55.360,62.484,63.085,75.645,75.673,92.005,92.006,55.383,55.452,67.312,68.552,74.734,80.463,82.022,93.822,93.953,110.172,110.176,129.571,129.571,72.685,72.714,87.311,87.98,97.006,101.26,104.44,115.03,115.46,131.38,131.40,150.79,150.79,172.94,172.94,92.252,92.264,109.46,109.80,121.87,124.74,130.20,139.20,140.32,155.62,155.71,175.02,175.02,197.22,197.22,221.81,221.81,114.09,114.09,133.79,133.95,149.02,150.79,159.06,166.25,168.65,182.87,183.16,202.25,202.27,224.48,224.48,249.18,249.18,275.92,275.92]
      #  J VALUE OF WATER LEVELS
      AJL=[0.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,2.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0]
      #  TRANSITION AMPLITUDES FOR 210 TRANSITIONS
      SALPHA=[1.50,1.259,1.092,1.088,1.101,2.074,2.543,2.166,2.066,2.181,3.655,3.446,2.037,4.224,1.899,4.218,5.660,1.841,4.140,1.850,.8333,1.036,1.083,1.297,1.850,2.025,2.085,1.566,2.494,2.881,1.709,2.965,1.778,1.860,1.000,1.500,2.157,3.007,3.977,4.984,5.970,6.980,7.990,1.500,1.667,1.971,2.445,3.131,3.970,4.940,2.395,2.319,2.322,2.449,2.800,3.290,3.393,3.270,3.153,3.090,3.100,4.397,4.267,4.120,4.000,5.400,5.250,5.120,1.244,2.336,3.390,4.397,5.400,6.400,.9225,2.165,3.251,4.265,5.250,.6050,1.840,3.068,4.090,.3804,1.402,2.750,.2494,1.090,0.197,.7557,1.744,2.837,3.918,4.965,5.960,6.980,7.990,.3003,.8347,1.641,2.681,3.710,4.820,5.900,1.550]
      # TRANSITION J(INITIAL) VALUES FOR 210 TRANSITIONS
      AJIN=[1.0,1.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,3.0,3.0,4.0,4.0,5.0,5.0,4.0,4.0,5.0,5.0,5.0,5.0,6.0,6.0,7.0,7.0,6.0,6.0,7.0,7.0,7.0,7.0,2.0,2.0,3.0,3.0,4.0,4.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,4.0,4.0,5.0,5.0,6.0,6.0,5.0,5.0,6.0,6.0,6.0,6.0,6.0,6.0,0.0,1.0,1.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,8.0,9.0,1.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,5.0,6.0,6.0,7.0,7.0,8.0,1.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,4.0,5.0,5.0,6.0,6.0,7.0,5.0,6.0,6.0,7.0,6.0,7.0,1.0,2.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,8.0,9.0,2.0,3.0,3.0,4.0,4.0,5.0,5.0,6.0,6.0,7.0,7.0,8.0,8.0,9.0,6.0,7.0]
      # TRANSITION ENERGIES FOR 210 TRANSITIONS IN MILIVOLTS
      EROT=[2.303,5.082,9.083,12.93,16.33,3.110,4.809,8.439,12.59,4.538,4.994,7.724,6.626,5.834,9.188,7.423,7.433,11.93,9.695,14.63,6.869,9.785,13.09,7.938,10.19,13.16,16.35,9.364,10.88,13.36,11.11,11.91,13.10,17.54,4.604,6.906,8.950,10.92,12.97,15.11,17.33,19.58,21.84,11.47,13.78,15.75,17.45,19.03,20.67,22.49,18.48,21.12,23.33,25.10,26.52,27.74,25.13,28.05,30.74,33.00,34.76,31.48,34.50,37.43,40.16,37.56,40.61,43.62,12.28,18.66,25.16,31.49,37.57,43.36,16.45,22.01,28.25,34.53,40.62,21.51,25.84,31.47,37.58,27.48,30.42,35.00,34.24,35.89,41.55,4.086,7.100,9.891,12.46,14.89,17.23,19.54,21.82,4.769,8.579,12.29,15.71,18.76,21.48,23.99,16.54]
      # MAP OF TRANSITION NO TO LEVEL POPULATION
      IMAP=[2,4,7,9,14,16,23,25,34,36,5,7,12,14,21,23,32,34,10,12,19,21,30,32,17,19,28,30,26,28,39,41,54,56,37,39,52,54,50,52,6,8,13,15,22,24,11,13,20,22,31,33,44,46,18,20,29,31,42,44,27,29,40,42,38,40,66,68,1,3,2,6,5,11,10,18,17,27,26,38,37,51,50,66,65,83,4,8,7,13,12,20,19,29,28,40,39,53,52,68,9,15,14,22,21,31,30,42,41,55,54,70,16,24,23,33,32,44,43,57,56,72,25,35,34,46,45,59,58,74,36,48,47,61,60,76,3,9,8,16,15,25,24,36,35,49,48,64,6,14,13,23,22,34,33,47,46,62,11,21,20,32,31,45,44,60,18,30,29,43,42,58,27,41,40,56,38,54,3,5,6,10,11,17,18,26,27,37,38,50,51,65,66,82,8,12,13,19,20,28,29,39,40,52,53,67,68,84,42,54]             
      # ELASTIC MOMENTUM TRANSFER ( NO ROTATION EXCEPT ABOVE 2000EV)                       
      XMT=[.0001,.001,.002,.003,.004,.005,.006,.007,.008,.009,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.15,0.20,0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.30,1.50,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,60.0,80.0,100.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,
      # ABOVE 2000 EV USE SUM OF ROTATION AND ELASTIC 2000.0001,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.D4,1.25D4,1.5D4,1.75D4,2.D4,2.5'%.3f' %.'%.3f' %.5D4,4.D4,4.5D4,5.D4,6.D4,7.D4,8.D4,9.D4,1.D5,1.25D5,1.5D5,1.75D5,2.D5,2.5'%.3f' %.'%.3f' %.5D5,4.D5,4.5D5,5.D5,6.D5,7.D5,8.D5,9.D5,1.D6,1.25D6,1.5D6,1.75D6,2.D6,2.5'%.3f' %.'%.3f' %.5D6,4.D6,4.5D6,5.D6,6.D6,7.D6,8.D6,9.D6,1.D7,1.25D7,1.5D7,1.75D7,2.D7,2.5'%.3f' %.'%.3f' %.5D7,4.D7,4.5D7,5.D7,6.D7,7.D7,8.D7,9.D7,1.D8,1.25D8,1.5D8,1.75D8,2.D8,2.5'%.3f' %.'%.3f' %.5D8,4.D8,4.5D8,5.D8,6.D8,7.D8,8.D8,9.D8,1.D9/
      YMT=[38000.,35880.,17360.,11167.,8216.,6392.,5418.,4361.,3706.,3237.,2842.,1151.,671.,465.,353.,287.,224.,178.,146.,125.,70.6,45.2,31.0,22.0,12.8,8.30,6.00,3.80,2.70,2.00,1.50,0.85,0.85,1.02,1.45,1.95,2.80,3.60,4.30,4.85,5.30,5.65,5.95,6.20,5.95,5.15,4.55,4.00,3.30,2.35,1.88,1.47,1.21,.951,.772,.642,.466,.356,.228,.160,.118,.0908,.0718,.0581,.0479,.0314,.0219,.0159,.0119,
      # ABOVE 2000EV USE SUM OF ROTATION AND ELASTIC.0200,.0136,.00990,.00755,.00596,.00484,.00401,.00290,.00220,.00173,.00140,.00116,7.74e-4,5.56e-4,4.21e-4,3.31e-4,2.21e-4,1.59e-4,1.21e-4,9.5D-5,7.70e-5,6.38e-5,4.61e-5,3.51e-5,2.78e-5,2.26e-5,1.88e-5,1.28e-5,9.41e-6,7.27e-6,5.82e-6,4.04e-6,3.01e-6,2.36e-6,1.91e-6,1.59e-6,1.35e-6,1.02e-6,8.06e-7,6.58e-7,5.50e-7,4.68e-7,3.35e-7,2.53e-7,1.99e-7,1.61e-7,1.13e-7,8.38e-8,6.51e-8,5.21e-8,4.27e-8,3.58e-8,2.62e-8,2.01e-8,1.59e-8,1.29e-8,1.07e-8,7.19e-9,5.18e-9,3.92e-9,3.07e-9,2.04e-9,1.45e-9,1.09e-9,8.49e-10,6.80e-10,5.57e-10,3.94e-10,2.93e-10,2.26e-10,1.80e-10,1.47e-10,9.46e-11,6.60e-11,4.86e-11,3.73e-11,2.39e-11,1.66e-11,1.22e-11,9.36e-12,7.40e-12,5.99e-12,4.16e-12,3.06e-12,2.34e-12,1.85e-12,1.50e-12/
      # ELASTIC X-SECTION (WITHOUT ROTATION)
      XEL=[.0001,.001,.002,.003,.004,.005,.006,.007,.008,.009,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.15,0.20,0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.30,1.50,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,
      c ABOVE 2000EV USE ELASTIC + ROTATION2000.0001,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.D4,1.25D4,1.5D4,1.75D4,2.D4,2.5'%.3f' %.'%.3f' %.5D4,4.D4,4.5D4,5.D4,6.D4,7.D4,8.D4,9.D4,1.D5,1.25D5,1.5D5,1.75D5,2.D5,2.5'%.3f' %.'%.3f' %.5D5,4.D5,4.5D5,5.D5,6.D5,7.D5,8.D5,9.D5,1.D6,1.25D6,1.5D6,1.75D6,2.D6,2.5'%.3f' %.'%.3f' %.5D6,4.D6,4.5D6,5.D6,6.D6,7.D6,8.D6,9.D6,1.D7,1.25D7,1.5D7,1.75D7,2.D7,2.5'%.3f' %.'%.3f' %.5D7,4.D7,4.5D7,5.D7,6.D7,7.D7,8.D7,9.D7,1.D8,1.25D8,1.5D8,1.75D8,2.D8,2.5'%.3f' %.'%.3f' %.5D8,4.D8,4.5D8,5.D8,6.D8,7.D8,8.D8,9.D8,1.D9/
      YEL=[38000.,35880.,17360.,11200.,8700.,7000.,6000.,5000.,4300.,3800.,3600.,1630.,1010.,780.,640.,530.,460.,405.,365.,317.,215.,150.,112.,83.0,52.7,37.0,28.5,21.5,17.0,13.5,10.9,6.50,5.00,2.65,2.45,2.60,3.60,5.00,6.00,7.00,8.00,8.70,9.20,9.90,9.50,8.80,7.80,6.80,5.60,4.50,4.00,3.55,3.20,2.85,2.50,2.05,1.75,1.55,1.40,1.20,1.00,.795,.655,.570,.505,.450,.415,.385,.325,.285,.250,.226,
      # ABOVE 2000EV USE ELASTIC + ROTATION.336,.275,.234,.203,.180,.161,.146,.123,.107,.0940,.0841,.0761,.0617,.0519,.0450,.0397,.0323,.0273,.0238,.0211,.0190,.0174,.0149,.0131,.0117,.0107,.00987,.00837,.00738,.00667,.00614,.00541,.00493,.00459,.00433,.00414,.00399,.00377,.00361,.00350,.00342,.00336,.00324,.00318,.00313,.00310,.00306,.00304,.00302,.00301,.00300,.00300,.00299,.00299,.00298,.00298,.00298,30*.00297/
      #
      #  OKHRIMOVSKY                 1.0 - EPSILON
#  ANGULAR DISTRIBUTION def FOR ELASTIC 
      XEPS=[.0001,.001,.002,.003,.004,.005,.006,.007,.008,.009,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.15,0.20,0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.30,1.50,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,60.0,80.0,100.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,
      #2000.0001,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.D4,1.25D4,1.5D4,1.75D4,2.D4,2.5'%.3f' %.'%.3f' %.5D4,4.D4,4.5D4,5.D4,6.D4,7.D4,8.D4,9.D4,1.D5,1.25D5,1.5D5,1.75D5,2.D5,2.5'%.3f' %.'%.3f' %.5D5,4.D5,4.5D5,5.D5,6.D5,7.D5,8.D5,9.D5,1.D6,1.25D6,1.5D6,1.75D6,2.D6,2.5'%.3f' %.'%.3f' %.5D6,4.D6,4.5D6,5.D6,6.D6,7.D6,8.D6,9.D6,1.D7,1.25D7,1.5D7,1.75D7,2.D7,2.5'%.3f' %.'%.3f' %.5D7,4.D7,4.5D7,5.D7,6.D7,7.D7,8.D7,9.D7,1.D8,1.25D8,1.5D8,1.75D8,2.D8,2.5'%.3f' %.'%.3f' %.5D8,4.D8,4.5D8,5.D8,6.D8,7.D8,8.D8,9.D8,1.D9/
      YEPS=[1.00,1.00,1.00,.99565,.91672,.87009,.85511,.80970,.79461,.77988,.69030,.57574,.52106,.43613,.38391,.37247,.31332,.26543,.22829,.22313,.16735,.14647,.12863,.12046,.10559,.09376,.08536,.06614,.05674,.05139,.04633,.04315,.06256,.21475,.43086,.63530,.67397,.59438,.58994,.55822,.51861,.50188,.49846,.47289,.47289,.42300,.42075,.42656,.42787,.42573,.42573,.42633,.42609,.37461,.32511,.28396,.21779,.18960,.13624,.10619,.08339,.06771,.05713,.04747,4.025e-2,2.844e-2,2.100e-2,1.628e-2,1.273e-2,
      #1.497e-2,1.172e-2,9.620e-3,8.153e-3,7.066e-3,6.235e-3,5.577e-3,4.601e-3,3.914e-3,3.404e-3,3.011e-3,2.699e-3,2.141e-3,1.772e-3,1.510e-3,1.315e-3,1.043e-3,8.624e-4,7.336e-4,6.375e-4,5.631e-4,5.035e-4,4.143e-4,3.507e-4,3.035e-4,2.667e-4,2.374e-4,1.848e-4,1.501e-4,1.255e-4,1.073e-4,8.205e-5,6.555e-5,5.398e-5,4.540e-5,3.900e-5,3.390e-5,2.646e-5,2.135e-5,1.765e-5,1.487e-5,1.273e-5,9.143e-6,6.867e-6,5.363e-6,4.309e-6,2.967e-6,2.169e-6,1.656e-6,1.308e-6,1.059e-6,8.748e-7,6.267e-7,4.711e-7,3.671e-7,2.942e-7,2.408e-7,1.574e-7,1.109e-7,8.227e-8,6.344e-8,4.103e-8,2.866e-8,2.112e-8,1.620e-8,1.281e-8,1.038e-8,7.187e-9,5.257e-9,4.004e-9,3.147e-9,2.533e-9,1.596e-9,1.093e-9,7.92e-10,5.99e-10,3.76e-10,2.57e-10,1.86e-10,1.41e-10,1.10e-10,8.8D-11,6.0D-11,4.4D-11,3.3D-11,2.6D-11,2.1D-11/
      # INELASTIC ANGULAR DISTRIBUTION  DIPOLE FORM
      # ENERGY IN UNITS OF THE ROTATIONAL ENERGY LEVEL. 
      # ENRTS FOR SUPER ELASTIC
      # ENROT FOR NORMAL ELASTIC
      ENRTS=[0.00,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,0.13,0.14,0.16,0.18,0.20,0.22,0.25,0.28,0.31,0.34,0.37,0.40,0.44,0.48,0.52,0.56,0.60,0.65,0.70,0.75,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.60,1.80,2.00,2.20,2.40,2.60,2.80,3.00,3.50,4.00,4.50,5.00,5.50,6.00,7.00,8.00,9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,160.,180.,200.,250.,300.,350.,400.,500.,600.,700.,800.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,5000.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.,25000.,30000.,35000.,40000.,50000.,60000.,80000.,1.0D5,1.5D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.2D6,1.4D6,1.6D6,1.8D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7]
      ENROT=[1.0,1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.10,1.11,1.12,1.13,1.14,1.16,1.18,1.20,1.22,1.25,1.28,1.31,1.34,1.37,1.40,1.44,1.48,1.52,1.56,1.60,1.65,1.70,1.75,1.80,1.90,2.00,2.10,2.20,2.30,2.40,2.60,2.80,3.00,3.20,3.40,3.60,3.80,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,9.00,10.0,11.0,12.0,13.0,15.0,17.0,19.0,21.0,23.0,26.0,31.0,36.0,41.0,46.0,51.0,61.0,71.0,81.0,91.0,101.,121.,141.,161.,181.,201.,251.,301.,351.,401.,501.,601.,701.,801.,1001.,1201.,1401.,1601.,1801.,2001.,2501.,3001.,3501.,4001.,5001.,6001.,7001.,8001.,9001.,10001.,12001.,14001.,16001.,18001.,20001.,25001.,30001.,35001.,40001.,50001.,60001.,80001.,1.0D5,1.5D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.2D6,1.4D6,1.6D6,1.8D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7]
      # OKRIMOVSKKY   1.0-EPSILON
      YEPSR=[1.0,.90060,.86030,.83000,.80486,.78309,.76390,.74641,.73054,.71571,.70205,.68931,.67720,.66584,.65510,.63516,.61705,.60056,.58510,.56417,.54521,.52802,.51233,.49782,.48448,.46818,.45320,.43962,.42704,.41555,.40221,.39009,.37891,.36854,.35015,.33409,.32004,.30760,.29649,.28657,.26933,.25493,.24266,.23212,.22286,.21483,.20763,.20114,.18760,.17674,.16791,.16044,.15403,.14857,.13951,.13226,.12637,.12143,.11718,.11346,.10742,.10255,.09859,.09519,.09234,.08867,.08387,.08017,.07716,.07465,.07252,.06913,.06641,.06426,.06240,.06087,.05833,.05628,.05467,.05327,.05208,.04973,.04794,.04652,.04534,.04347,.04210,.04096,.04001,.03854,.03740,.03648,.03570,.03506,.03450,.03336,.03248,.03173,.03115,.03021,.02946,.02886,.02835,.02792,.02754,.02692,.02641,.02597,.02561,.02529,.02463,.02411,.02369,.02334,.02277,.02232,.02165,.02115,.02030,.01973,.01931,.01898,.01870,.01847,.01810,.01780,.01756,.01735,.01718,.01702,.01675,.01654,.01635,.01620,.01606,.01576,.01553,.01534,.01518,.01490,.01472,.01456,.01440,.01427,.01418]
      # RATIO OF MT/TOT
      YMTRT=[0.0,.9336,.9065,.8860,.8689,.8540,.8408,.8287,.8176,.8073,.7977,.7887,.7801,.7720,.7643,.7499,.7367,.7245,.7131,.6974,.6830,.6698,.6576,.6462,.6356,.6225,.6103,.5991,.5886,.5789, .5675,.5570,.5472,.5380,.5214,.5066,.4934,.4815,.4707,.4609,.4435,.4286,.4156,.4042,.3940,.3850,.3768,.3693,.3533,.3401,.3291,.3196,.3113,.3041,.2919,.2819,.2736,.2665,.2603,.2548,.2457,.2382,.2320,.2266,.2220,.2160,.2080,.2017,.1965,.1921,.1883,.1822,.1772,.1732,.1697,.1668,.1619,.1579,.1547,.1519,.1495,.1447,.1410,.1380,.1355,.1315,.1285,.1260,.1239,.1206,.1180,.1159,.1141,.1126,.1113,.1086,.1065,.1047,.1033,.1010,.09915,.09766,.09640,.09532,.09437,.09277,.09147,.09036,.08941,.08858,.08686,.08550,.08439,.08345,.08193,.08072,.07889,.07752,.07516,.07357,.07238,.07144,.07066,.07000,.06892,.06807,.06736,.06676,.06624,.06578,.06500,.06436,.06381,.06334,.06292,.06204,.06133,.06078,.06027,.05944,.05889,.05839,.05790,.05749,.05723]
      # VIBRATION      
      #  B# end MODE 010                                                 
      XVIB1=[.1977,0.30,0.34,0.39,0.60,0.86,1.00,2.00,2.20,3.00,4.00,5.00,6.00,8.00,10.0,15.0,20.0]                               
      YVIB1=[0.00,1.47,1.56,1.51,0.68,.344,.318,.172,.163,.138,    .129,.135,.140,.146,.155,.112,.086]                               
      # SUM OF STRETCH MODES 001 AND 100                                
      XVIB2=[.4535,0.53,0.58,0.63,0.80,1.00,2.10,3.00,4.00,5.00,6.00,7.00,7.50,8.00,9.00,10.0,15.0,20.0]                     
      YVIB2=[0.00,1.93,2.00,1.95,.516,.430,.275,.267,.331,.370,.421,.447,.455,.426,.361,.280,.163,.069]                     
      # SUM OF VIBRATION HARMONICS
      XVIB3=[.919,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,15.0,20.0]
      YVIB3=[0.00,.001,.009,.017,.034,.040,.042,.042,.039,.034,.017,.009]
      # 
      # IONISATION    ABOVE 5000 EV USE IONISATION OSCILLATOR STRENGTH
      #
      XION=[12.617,13.5,15.0,17.5,20.0,22.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.,1100.,1200.,1300.,1400.,1500.,1600.,1700.,1800.,1900.,2000.,2100.,2200.,2300.,2400.,2500.,2600.,2700.,2800.,2900.,3000.,3500.,4000.,4500.,5000.]
      # COUNTING IONISATION
      YIONC=[0.0,.028,.124,.271,.427,.600,.752,1.017,1.248,1.431,1.577,1.701,1.865,1.964,2.052,2.082,2.104,2.094,2.069,1.994,1.931,1.860,1.691,1.534,1.315,1.138,1.005,0.893,0.811,0.744,0.681,0.634,0.595,0.559,0.528,0.501,0.476,0.454,0.434,0.416,0.399,0.384,0.369,0.356,0.344,0.333,0.323,0.313,0.304,0.295,0.287,0.253,0.226,0.205,0.1873]
      # GROSS IONISATION
      YIONG=[0.0,.028,.124,.271,.427,.600,.752,1.017,1.248,1.431,1.579,1.705,1.875,1.981,2.076,2.111,2.138,2.132,2.111,2.037,1.975,1.903,1.732,1.571,1.346,1.163,1.028,0.913,0.829,0.761,0.696,0.648,0.608,0.571,0.540,0.512,0.486,0.464,0.444,0.425,0.408,0.392,0.377,0.364,0.352,0.340,0.330,0.320,0.311,0.301,0.293,0.259,0.231,0.210,0.1914]
      # IONISATION TO H2O +           ELOSS=12.617 EV
      XION1=[12.617,13.5,15.0,17.5,20.0,22.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION1=[0.0,.028,.124,.271,.410,.542,.646,.811,.948,1.047,1.117,1.176,1.241,1.271,1.302,1.304,1.305,1.288,1.266,1.214,1.168,1.129,1.022,0.932,0.803,0.702,0.625,0.555,0.504,0.466,0.429]
      # IONISATION TO OH +            ELOSS=18.1 EV
      XION2=[18.1,20.0,22.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION2=[0.0,.0145,.0493,.0847,.159,.220,.263,.298,.325,.355,.374,.388,.388,.392,.389,.384,.367,.358,.342,.315,.294,.253,.216,.191,.173,.159,.145,.132]
      # IONISATION TO H +             ELOSS=18.72 EV
      XION3=[18.72,20.0,22.5,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION3=[.0,.0021,.0089,.0194,.0433,.0724,.1068,.1398,.169,.220,.255,.284,.301,.312,.317,.315,.309,.303,.291,.265,.229,.195,.165,.143,.124,.112,.0997,.0904]
      # IONISATION TO O +             ELOSS=21.0 EV    
      XION4=[21.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION4=[0.0,.0022,.0037,.0069,.0132,.0206,.0273,.0383,.0456,.0538,.0587,.0594,.0619,.0617,.0596,.0576,.0550,.0481,.0418,.0332,.0282,.0237,.0203,.0181,.0165,.0145]
      # IONISATION TO H2 +            ELOSS=23.0
      XION5=[23.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.] 
      YION5=[0.0,.00018,.00039,.00057,.00070,.00065,.00066,.00069,.00063,.00078,.00075,.00073,.00064,.00077,.00071,.00054,.00050,.00045,.00040,.00032,.00029,.00033,.00022,.00032,.00024]
      # IONISATION TO (H + ,OH +)     ELOSS=35.4 EV  DOUBLE IONISATION
      XION6=[35.4,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION6=[0.0,.00045,.0013,.0034,.0091,.0145,.0188,.0216,.0244,.0254,.0268,.0266,.0258,.0244,.0226,.0211,.0182,.0155,.0137,.0124,.0114,.0105,.0095]
      # IONISATION TO (H + ,O +)      ELOSS=45.0 EV  DOUBLE IONISATION
      XION7=[45.0,50.0,60.0,70.0,80.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION7=[0.0,.0001,.0011,.0028,.0052,.0076,.0098,.0118,.0144,.0158,.0160,.0163,.0161,.0139,.0111,.0094,.0079,.0068,.0060,.0055,.0048]
      # IONISATION TO O ++             ELOSS=70.0 EV  DOUBLE IONISATION
      XION8=[70.0,90.0,100.,110.,125.,150.,175.,200.,250.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YION8=[0.0,.00010,.00022,.00049,.00068,.00106,.00165,.00173,.00180,.00172,.00128,.00108,.00090,.00078,.00069,.00061,.00058] 
      # OXYGEN ATOM K-SHELL IONISATION X-SECTION 
      XKSH=[532.,541.,557.,574.,591.,609.,627.,646.,665.,685.,706.,727.,749.,793.,841.,891.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.00D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.00D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.25D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YKSH=[0.00,3.31e-5,8.86e-5,1.42e-4,1.95e-4,2.45e-4,2.94e-4,3.41e-4,3.87e-4,4.31e-4,4.73e-4,5.14e-4,5.53e-4,6.27e-4,6.95e-4,7.56e-4,8.13e-4,8.63e-4,9.29e-4,9.84e-4,1.03e-3,1.08e-3,1.10e-3,1.11e-3,1.11e-3,1.10e-3,1.08e-3,1.03e-3,9.24e-4,8.27e-4,6.81e-4,5.49e-4,4.18e-4,3.35e-4,2.90e-4,2.50e-4,2.04e-4,1.77e-4,1.53e-4,1.39e-4,1.26e-4,1.11e-4,8.62e-5,7.45e-5,6.36e-5,5.75e-5,5.48e-5,5.29e-5,5.20e-5,5.13e-5,5.08e-5,5.08e-5,5.12e-5,5.24e-5,5.47e-5,5.68e-5,5.84e-5,6.00e-5,6.13e-5,6.26e-5,6.44e-5,6.65e-5,6.81e-5,7.11e-5,7.50e-5,7.78e-5,7.97e-5,8.17e-5,8.31e-5,8.45e-5,8.65e-5,8.87e-5,9.04e-5,9.36e-5,9.75e-5,1.00e-4,1.02e-4,1.04e-4,1.06e-4,1.07e-4,1.09e-4]
      #
      # ALL ATTACHMENT  SCALED BY 10[21]
      #    H-  + OH     FEDOR WITH THRESHOLD AT 5.6EV AND SCALED TO FIT 
      #                   THE EXPERIMENTAL ATTACHMENT RATE 
      XATT1=[5.60,5.75,6.00,6.25,6.40,6.50,6.75,7.00,7.25,7.50,7.75,8.00,8.25,8.40,8.50,8.75,9.00,9.25,9.50,9.75,10.0,10.25,10.5,10.75,11.0,11.25,11.50,11.75,12.00,12.25,12.5,12.75,13.0,13.5,14.0,14.5,15.0,15.5]
      YATT1=[8.7,383.,2262.,5368.,5742.,5629.,4019.,2314.,1192.,655.,572.,727.,930.9,1018.,1001.,878.7,690.,435.,231.,127.,66.3,49.0,43.2,47.1,47.1,49.0,47.1,45.1,43.2,41.2,37.2,33.5,27.8,19.6,15.5,11.7,8.79,0.59] 
      # O-  + H  + H    FEDOR SCALED TO MELTON AND CHRISTOPHOROU
      XATT2=[6.00,6.25,6.50,6.75,7.00,7.25,7.50,7.75,8.00,8.25,8.50,9.00,9.50,10.0,10.25,10.5,10.75,11.0,11.25,11.50,11.75,12.0,12.25,12.5,12.75,13.0,13.5,14.0,14.5,15.0]  
      YATT2=[2.50,7.20,17.8,35.0,59.0,45.0,16.8,11.5,22.1,46.5,80.0,142.,128.,113.,112.,141.,180.,213.,240.,260.,269.,268.,243.,221.,188.,151.,81.0,39.0,18.5,4.5]
      #  OH-  +   H     FEDOR NORMALISED TO MELTON
      XATT3=[6.00,6.25,6.50,6.75,7.00,7.25,7.50,7.75,8.00,8.25,8.50,8.75,9.00,9.25,9.50,9.75,10.0,10.25,10.5,10.75,11.0,11.25,11.50,11.75,12.0,12.25,12.5,12.75]
      YATT3=[0.30,0.70,1.00,1.50,1.45,0.90,0.40,0.30,0.40,0.58,0.70,0.70,0.50,0.40,0.25,0.10,0.10,0.30,0.45,0.58,0.72,0.80,0.80,0.75,0.65,0.50,0.42,0.25]               
      # TRIPLET EXCITATIONS
      XTRP1=[7.04,7.50,8.00,8.50,9.00,10.0,12.0,15.0,20.0,25.0,30.0]          
      YTRP1=[.0001,.075,0.15,0.24,0.33,0.23,0.16,0.14,0.11,.087,.070]       
      XTRP2=[9.10,10.0,11.0,12.0,15.0,20.0,25.0,30.0,40.0,50.0]   
      YTRP2=[.0001,0.06,0.12,0.16,0.18,0.15,.122,0.10,.075,.055]  
      XTRP3=[9.95,11.5,13.0,15.0,17.5,20.0,25.0,30.0,40.0,50.0]
      YTRP3=[.0001,0.10,.190,.235,.250,.235,.205,.170,.130,.100]
      XTRP4=[13.0,15.0,16.0,18.0,22.0,26.0,30.0,40.0,50.0]
      YTRP4=[.0002,.242,.420,.525,.557,.536,.504,.389,.284]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24 CM**2
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      Z8T=[477.,294.,145.,81.6,45.8,21.2,12.2,7.69,5.22,4.76,4.84,4.99,5.10,5.20,5.27,5.38,5.46,5.58,5.65,5.72,5.77,5.80,5.81,5.83,5.84]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      # FOLLOWING ARE NULL COLLISIONS :
      # OH PRODUCTION FROM HARB ET AL J.CHEM.PHYS. 115(2001)5507
      XNUL1=[6.60,10.0,15.0,20.0,30.0,50.0,75.0,100.,150.,200.,250.,300.]
      YNUL1=[0.0,0.15,0.48,0.75,1.32,1.90,2.10,2.05,1.98,1.75,1.60,1.40]
      # OH(A-X) 306-250 NM EMISSION  BEENAKKER ET AL CHEM.PHYS.6(1974)445
      XNUL2=[9.20,10.0,12.5,15.0,17.5,20.0,22.5,25.0,27.5,30.0,35.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,120.,140.,170.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.]
      YNUL2=[0.00,.0187,.0733,.0919,.0932,.0911,.0845,.0797,.0767,.0745,.0698,.0663,.0603,.0566,.0535,.0508,.0483,.0464,.0432,.0400,.0364,.0339,.0297,.0266,.0240,.0224,.0206,.0196,.0179,.0158,.0149,.0131,.0121]
      # H ALPHA 3-2   656.3 NM MOHLMANN AND DEHEER  CHEM.PHYS. 40(1979)157 
      XNUL3=[18.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,150.,200.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YNUL3=[0.0,.00204,.0105,.0169,.0224,.0291,.0326,.0346,.0354,.0355,.0311,.0269,.0204,.0162,.0132,.0114,.0101,.00892,.00814,.00734]
      # H ALPHA 2-1 121.6 NM ITIKAWA AND MASON J.PHYS.CHEM.REF.34 (2005)1
      # MORGAN AND MENTAL USED BELOW 24 EV
      XNUL4=[15.4,15.6,24.0,25.0,37.5,50.0,62.5,75.0,87.5,100.,112.5,125.,137.5,150.,175.,200.,225.,250.]
      YNUL4=[0.0,.0030,.0040,.00601,.0227,.0405,.059,.0727,.0823,.0845,.0839,.0829,.0812,.0799,.0764,.0733,.0698,.0665]
      # ---------------------------------------------------------------------
      #***********************************************************************
      #                                 
      NAME='H2O  ANISOTRPIC     2017 '                              
      #***********************************************************************
      # --------------------------------------------------------------------  
      #  EXPERIMENTAL NOT ACCURATE IN WATER VAPOUR. ELECTRON SCATTERING  
      #  USED IN ANALYSIS REPRODUCES DRIFT VELOCITY AND DIFFUSION       
      #  COEFFICIENTS TO AN  ACCURACY OF  2%.                               
      # ---------------------------------------------------------------------
      # BORN BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      # FIT OF IONISATION OSCILLATOR STRENGTH TO RIEKE AND PREJECHAL
      AM2=2.895
      C=30.7
      # AVERAGE AUGER EMISSION FROM OXYGEN KSHELL
      AUGK=2.0
      #
      AMPROT=0.98
      NION=9 
      NATT=3
      NIN=248
      NASIZE=20000
      NBREM=25
      NNULL=4
      IONMODEL=0
      NRTANG=145
      # 
      DO 11 J=1,NIN
      IZBR[J]=0
      11 CONTINUE
      IZBR(NIN+1)=8
      IZBR(NIN+2)=1
      #
      # USE  OKHRIMOVSKKY TYPE ANGULAR DISTRIBUTION   
      DO 1 J=1,6
      1 KEL[J]=2
      # USE OKRIMOVSKKY
      DO 2 J=1,NIN
      2 KIN[J]=2
      #     
      NELA=159
      NMMT=156
      NEPS=156        
      NVIB1=17                                                          
      NVIB2=18
      NVIB3=12                                                          
      NIONC=55
      NION1=31
      NION2=28
      NION3=28
      NION4=26
      NION5=25
      NION6=23
      NION7=21
      NION8=17
      NKSH=81                                                         
      NATT1=38 
      NATT2=30
      NATT3=28                             
      NTRP1=11                                                          
      NTRP2=10                                                          
      NTRP3=10 
      NTRP4=9  
      NUL1=12
      NUL2=33
      NUL3=20
      NUL4=18
      # SCALING OF NULL COLLISIONS
      SCLN[1]=1.0
      SCLN[2]=1.0
      SCLN[3]=1.0
      SCLN[4]=1.0
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(18.01528*AMU)                                     
      E[3]=12.617                                                      
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0
      # 
      EION[1]=12.617
      EION[2]=18.1
      EION[3]=18.72
      EION[4]=21.0
      EION[5]=23.0
      EION[6]=35.4
      EION[7]=45.0
      EION[8]=70.0
      EION[9]=532.0
      #
      #-----------------------------------------------------------------      
      # DBA IS DIPOLE MOMENT 
      # DRAT IS RATIO OF MOMENTUM TRANSFER TO TOTAL X-SECTION FOR DIPOLE      
      # -----------------------------------------------------------------
      GPARA=1.0
      GORTHO=3.0
      DBA=0.728 
      DRAT=0.07  
      A0=0.5291772083e-8
      RY=13.60569172
      DBK=8.37758*RY*(DBA*A0)**2
      #------------------------------------------------------------------      
      # CALCULATE POPULATION DENSITIES OF ROTATIONAL LEVELS      
      for 3 J in range(1,99,2):
      3 PJ[J]=GPARA*(2.0*AJL[J]+1.0)*math.exp(-ELEV[J]*1.e-3/AKT)
      for 4 J in range(2,100,2):
      4 PJ[J]=GORTHO*(2.0*AJL[J]+1.0)*math.exp(-ELEV[J]*1.e-3/AKT)
      RSUM=0.0
      for 5 J in range(1,100):
      5 RSUM=RSUM+PJ[J]
      for 6 J in range(1,100):
      6 PJ[J]=PJ[J]/RSUM   
      for 7 J in range(1,105  ):
      EIN(2*J-1)=EROT[J]*1.e-3
      7 EIN(2*J)=-EROT[J]*1.e-3
      #
      EIN(211)=-0.1977     
      EIN(212)=0.1977                                                   
      EIN(213)=0.4535                                                   
      EIN(214)=0.919                                                    
      EIN(215)=7.04                                                 
      EIN(216)=6.8425
      EIN(217)=7.2675
      EIN(218)=7.7725
      EIN(219)=8.3575
      EIN(220)=9.1
      EIN(221)=8.91
      EIN(222)=9.43
      EIN(223)=9.95
      EIN(224)=10.47
      EIN(225)=9.95
      EIN(226)=9.994
      EIN(227)=10.172
      EIN(228)=10.39
      EIN(229)=10.575
      EIN(230)=10.78
      EIN(231)=11.01
      EIN(232)=11.122
      EIN(233)=11.377
      EIN(234)=11.525
      EIN(235)=11.75
      EIN(236)=11.94
      EIN(237)=12.08
      EIN(238)=12.24
      EIN(239)=12.34
      EIN(240)=12.45
      EIN(241)=13.0
      EIN(242)=13.117
      EIN(243)=14.117
      EIN(244)=15.117
      EIN(245)=16.117
      EIN(246)=17.117
      EIN(247)=18.438
      EIN(248)=20.316 
      #  OPAL BEATY
      #     SCLOBY=0.8
      DO 8 J=1,NION
      #      EOBY[J]=EION[J]*SCLOBY
      EOBY[J]=EION[1]*0.93  
      8 CONTINUE
      #
      DO 9 JK=1,NION
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
      9 CONTINUE
      # DOUBLE CHARGED STATES
      NC0[6]=1
      EC0[6]=6.0
      NC0[7]=1
      EC0[7]=6.0
      NC0[8]=1
      EC0[8]=6.0
      # FLUORESCENCE DATA
      LEGAS[9]=1
      ISHELL[9]=1
      NC0[9]=3
      EC0[9]=485.
      WKLM[9]=0.0069
      EFL[9]=518.
      NG1[9]=1
      EG1[9]=480.
      NG2[9]=2
      EG2[9]=5.0
      # OFFSET ENERGY FOR IONISATION ELECTRON ANGULAR DISTRIBUTION
      DO 12 J=1,NION
      DO 10 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 12
      # endif
      10 CONTINUE
      12 CONTINUE
      # OFFSET ENERGY FOR EXCITATION ANGULAR DISTRIBUTION
      DO 14 NL=1,NIN
      DO 13 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 14
      # endif
      13 CONTINUE
      14 CONTINUE
      #
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # SET PENNING TRANSFER FRACTION TO ZERO FOR LOW ENERGY LEVELS
      DO 21 K=1,NIN
      DO 21 L=1,3
      PENFRA[1][K]=0.0
      21 CONTINUE
      #---------------------------------------
      # PENNING TRANSFER FRACTION FOR LEVELS ABOVE 6.0EV
      DO 22 K=215,NIN
      PENFRA[1][K]=0.0
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2][K]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      PENFRA[3][K]=1.0
      if(IPEN == 0):
      GO TO 22
      WRITE(6,999) NAME,EIN[K],PENFRA[1][K],PENFRA[2][K],PENFRA[3][K]
      999 print(' GAS = ',A25,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY = ','%.3f' % ,' ABS.LENGTH = ',F7.2,' DECAY TIME = ',F7.1,/)
      22 CONTINUE
      #**********************************************************************
      #
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC ANISOTROPIC     H2O                      '
      SCRPT[3]=' IONISATION   H2O+                  ELOSS= 12.617 '
      SCRPT[4]=' DISSOC ION    OH+                  ELOSS= 18.1   '
      SCRPT[5]=' DISSOC ION     H+                  ELOSS= 18.72  '
      SCRPT[6]=' DISSOC ION     O+                  ELOSS= 21.0   '
      SCRPT[7]=' DISSOC ION    H2+                  ELOSS= 23.0   '
      SCRPT[8]=' DISSOC ION     H+ + OH+            ELOSS= 35.4   '
      SCRPT[9]=' DISSOC ION     H+ + O+             ELOSS= 45.0   '
      SCRPT[10]=' DISSOC ION     O++                 ELOSS= 70.0   '
      SCRPT[11]=' IONISATION  O K-SHELL              ELOSS=532.0   ' 
      SCRPT[12]=' ATTACHMENT  H-                                   '
      SCRPT[13]=' ATTACHMENT  O-                                   '
      SCRPT[14]=' ATTACHMENT  OH-                                  '
      SCRPT[15]='                                                  ' 
      SCRPT[16]='                                                  ' 
      SCRPT[17]=' ROTATION   101--110               ELOSS= 0.002303'
      SCRPT[18]=' ROTATION   110--101               ELOSS=-0.002303'
      SCRPT[19]=' ROTATION   211--220               ELOSS= 0.005082'
      SCRPT[20]=' ROTATION   220--211               ELOSS=-0.005082'
      SCRPT[21]=' ROTATION   321--330               ELOSS= 0.009083'
      SCRPT[22]=' ROTATION   330--321               ELOSS=-0.009083'
      SCRPT[23]=' ROTATION   431--440               ELOSS= 0.01293 '
      SCRPT[24]=' ROTATION   440--431               ELOSS=-0.01293 '
      SCRPT[25]=' ROTATION   541--550               ELOSS= 0.01633 '
      SCRPT[26]=' ROTATION   550--541               ELOSS=-0.01633 '
      SCRPT[27]=' ROTATION   202--211               ELOSS= 0.00311 '
      SCRPT[28]=' ROTATION   211--202               ELOSS=-0.00311 '
      SCRPT[29]=' ROTATION   312--321               ELOSS= 0.004809'
      SCRPT[30]=' ROTATION   321--312               ELOSS=-0.004809'
      SCRPT[31]=' ROTATION   422--431               ELOSS= 0.008439'
      SCRPT[32]=' ROTATION   431--422               ELOSS=-0.008439'
      SCRPT[33]=' ROTATION   532--541               ELOSS= 0.01259 '
      SCRPT[34]=' ROTATION   541--532               ELOSS=-0.01259 '
      SCRPT[35]=' ROTATION   303--312               ELOSS= 0.004538'
      SCRPT[36]=' ROTATION   312--303               ELOSS=-0.004538'
      SCRPT[37]=' ROTATION   413--422               ELOSS= 0.004994'
      SCRPT[38]=' ROTATION   422--413               ELOSS=-0.004994'
      SCRPT[39]=' ROTATION   523--532               ELOSS= 0.007724'
      SCRPT[40]=' ROTATION   532--523               ELOSS=-0.007724'
      SCRPT[41]=' ROTATION   404--413               ELOSS= 0.006626'
      SCRPT[42]=' ROTATION   413--404               ELOSS=-0.006626'
      SCRPT[43]=' ROTATION   514--523               ELOSS= 0.005834'
      SCRPT[44]=' ROTATION   523--514               ELOSS=-0.005834'
      SCRPT[45]=' ROTATION   505--514               ELOSS= 0.009188'
      SCRPT[46]=' ROTATION   514--505               ELOSS=-0.009188'
      SCRPT[47]=' ROTATION   615--624               ELOSS= 0.007423'
      SCRPT[48]=' ROTATION   624--615               ELOSS=-0.007423'
      SCRPT[49]=' ROTATION   725--734               ELOSS= 0.007433'
      SCRPT[50]=' ROTATION   734--725               ELOSS=-0.007433'
      SCRPT[51]=' ROTATION   606--615               ELOSS= 0.01193 '
      SCRPT[52]=' ROTATION   615--606               ELOSS=-0.01193 '
      SCRPT[53]=' ROTATION   716--725               ELOSS= 0.009695'
      SCRPT[54]=' ROTATION   725--716               ELOSS=-0.009695'
      SCRPT[55]=' ROTATION   707--716               ELOSS= 0.01463 '
      SCRPT[56]=' ROTATION   716--707               ELOSS=-0.01463 '
      SCRPT[57]=' ROTATION   212--221               ELOSS= 0.006869'
      SCRPT[58]=' ROTATION   221--212               ELOSS=-0.006869'
      SCRPT[59]=' ROTATION   322--331               ELOSS= 0.009785'
      SCRPT[60]=' ROTATION   331--322               ELOSS=-0.009785'
      SCRPT[61]=' ROTATION   432--441               ELOSS= 0.01309 '
      SCRPT[62]=' ROTATION   441--432               ELOSS=-0.01309 '
      SCRPT[63]=' ROTATION   313--322               ELOSS= 0.007938'
      SCRPT[64]=' ROTATION   322--313               ELOSS=-0.007938'
      SCRPT(65)=' ROTATION   423--432               ELOSS= 0.01019 '
      SCRPT(66)=' ROTATION   432--423               ELOSS=-0.01019 '
      SCRPT(67)=' ROTATION   533--542               ELOSS= 0.01316 '
      SCRPT(68)=' ROTATION   542--533               ELOSS=-0.01316 '
      SCRPT(69)=' ROTATION   643--652               ELOSS= 0.01635 '
      SCRPT(70)=' ROTATION   652--643               ELOSS=-0.01635 '
      SCRPT(71)=' ROTATION   414--423               ELOSS= 0.009364'
      SCRPT(72)=' ROTATION   423--414               ELOSS=-0.009364'
      SCRPT(73)=' ROTATION   524--533               ELOSS= 0.01088 '
      SCRPT(74)=' ROTATION   533--524               ELOSS=-0.01088 '
      SCRPT(75)=' ROTATION   634--643               ELOSS= 0.01336 '
      SCRPT(76)=' ROTATION   643--634               ELOSS=-0.01336 '
      SCRPT(77)=' ROTATION   515--524               ELOSS= 0.01111 '
      SCRPT(78)=' ROTATION   524--515               ELOSS=-0.01111 '
      SCRPT(79)=' ROTATION   625--634               ELOSS= 0.01191 '
      SCRPT(80)=' ROTATION   634--625               ELOSS=-0.01191 '
      SCRPT(81)=' ROTATION   616--625               ELOSS= 0.01310 '
      SCRPT(82)=' ROTATION   625--616               ELOSS=-0.01310 '
      SCRPT(83)=' ROTATION   818--827               ELOSS= 0.01754 '
      SCRPT(84)=' ROTATION   827--818               ELOSS=-0.01754 '
      SCRPT(85)=' ROTATION   000--111               ELOSS= 0.004604'
      SCRPT(86)=' ROTATION   111--000               ELOSS=-0.004604'
      SCRPT(87)=' ROTATION   101--212               ELOSS= 0.006906'
      SCRPT(88)=' ROTATION   212--101               ELOSS=-0.006906'
      SCRPT(89)=' ROTATION   202--313               ELOSS= 0.008950'
      SCRPT(90)=' ROTATION   313--202               ELOSS=-0.008950'
      SCRPT(91)=' ROTATION   303--414               ELOSS= 0.01092 '
      SCRPT(92)=' ROTATION   414--303               ELOSS=-0.01092 '
      SCRPT(93)=' ROTATION   404--515               ELOSS= 0.01297 '
      SCRPT(94)=' ROTATION   515--404               ELOSS=-0.01297 '
      SCRPT(95)=' ROTATION   505--616               ELOSS= 0.01511 '
      SCRPT(96)=' ROTATION   616--505               ELOSS=-0.01511 '
      SCRPT(97)=' ROTATION   606--717               ELOSS= 0.01733 '
      SCRPT(98)=' ROTATION   717--606               ELOSS=-0.01733 '
      SCRPT(99)=' ROTATION   707--818               ELOSS= 0.01958 '
      SCRPT(100)=' ROTATION   818--707               ELOSS=-0.01958 '
      SCRPT(101)=' ROTATION   808--919               ELOSS= 0.02184 '
      SCRPT(102)=' ROTATION   919--808               ELOSS=-0.02184 '
      SCRPT(103)=' ROTATION   110--221               ELOSS= 0.01147 '
      SCRPT(104)=' ROTATION   221--110               ELOSS=-0.01147 '
      SCRPT(105)=' ROTATION   211--322               ELOSS= 0.01378 '
      SCRPT(106)=' ROTATION   322--211               ELOSS=-0.01378 '
      SCRPT(107)=' ROTATION   312--423               ELOSS= 0.01575 '
      SCRPT(108)=' ROTATION   423--312               ELOSS=-0.01575 '
      SCRPT(109)=' ROTATION   413--524               ELOSS= 0.01745 '
      SCRPT(110)=' ROTATION   524--413               ELOSS=-0.01745 '
      SCRPT(111)=' ROTATION   514--625               ELOSS= 0.01903 '
      SCRPT(112)=' ROTATION   625--514               ELOSS=-0.01903 '
      SCRPT(113)=' ROTATION   615--726               ELOSS= 0.02067 '
      SCRPT(114)=' ROTATION   726--615               ELOSS=-0.02067 '
      SCRPT(115)=' ROTATION   716--827               ELOSS= 0.02249 '
      SCRPT(116)=' ROTATION   827--716               ELOSS=-0.02249 '
      SCRPT(117)=' ROTATION   220--331               ELOSS= 0.01848 '
      SCRPT(118)=' ROTATION   331--220               ELOSS=-0.01848 '
      SCRPT(119)=' ROTATION   321--432               ELOSS= 0.02112 '
      SCRPT(120)=' ROTATION   432--321               ELOSS=-0.02112 '
      SCRPT(121)=' ROTATION   422--533               ELOSS= 0.02333 '
      SCRPT(122)=' ROTATION   533--422               ELOSS=-0.02333 '
      SCRPT(123)=' ROTATION   523--634               ELOSS= 0.02510 '
      SCRPT(124)=' ROTATION   634--523               ELOSS=-0.02510 '
      SCRPT(125)=' ROTATION   624--735               ELOSS= 0.02652 '
      SCRPT(126)=' ROTATION   735--624               ELOSS=-0.02652 '
      SCRPT(127)=' ROTATION   725--836               ELOSS= 0.02774 '
      SCRPT(128)=' ROTATION   836--725               ELOSS=-0.02774 '
      SCRPT(129)=' ROTATION   330--441               ELOSS= 0.02513 '
      SCRPT(130)=' ROTATION   441--330               ELOSS=-0.02513 '
      SCRPT(131)=' ROTATION   431--542               ELOSS= 0.02805 '
      SCRPT(132)=' ROTATION   542--431               ELOSS=-0.02805 '
      SCRPT(133)=' ROTATION   532--643               ELOSS= 0.03074 '
      SCRPT(134)=' ROTATION   643--532               ELOSS=-0.03074 '
      SCRPT(135)=' ROTATION   633--744               ELOSS= 0.03300 '
      SCRPT(136)=' ROTATION   744--633               ELOSS=-0.03300 '
      SCRPT(137)=' ROTATION   734--845               ELOSS= 0.03476 '
      SCRPT(138)=' ROTATION   845--734               ELOSS=-0.03476 '
      SCRPT(139)=' ROTATION   440--551               ELOSS= 0.03148 '
      SCRPT(140)=' ROTATION   551--440               ELOSS=-0.03148 '
      SCRPT(141)=' ROTATION   541--652               ELOSS= 0.03450 '
      SCRPT(142)=' ROTATION   652--541               ELOSS=-0.03450 '
      SCRPT(143)=' ROTATION   642--753               ELOSS= 0.03743 '
      SCRPT(144)=' ROTATION   753--642               ELOSS=-0.03743 '
      SCRPT(145)=' ROTATION   743--854               ELOSS= 0.04016 '
      SCRPT(146)=' ROTATION   854--743               ELOSS=-0.04016 '
      SCRPT(147)=' ROTATION   550--661               ELOSS= 0.03757 '
      SCRPT(148)=' ROTATION   661--550               ELOSS=-0.03757 '
      SCRPT(149)=' ROTATION   651--762               ELOSS= 0.04061 '
      SCRPT(150)=' ROTATION   762--651               ELOSS=-0.04061 '
      SCRPT(151)=' ROTATION   752--863               ELOSS= 0.04361 '
      SCRPT(152)=' ROTATION   863--752               ELOSS=-0.04361 '
      SCRPT(153)=' ROTATION   111--220               ELOSS= 0.01228 '
      SCRPT(154)=' ROTATION   220--111               ELOSS=-0.01228 '
      SCRPT(155)=' ROTATION   221--330               ELOSS= 0.01866 '
      SCRPT(156)=' ROTATION   330--221               ELOSS=-0.01866 '
      SCRPT(157)=' ROTATION   331--440               ELOSS= 0.02516 '
      SCRPT(158)=' ROTATION   440--331               ELOSS=-0.02516 '
      SCRPT(159)=' ROTATION   441--550               ELOSS= 0.03149 '
      SCRPT(160)=' ROTATION   550--441               ELOSS=-0.03149 '
      SCRPT(161)=' ROTATION   551--660               ELOSS= 0.03757 '
      SCRPT(162)=' ROTATION   660--551               ELOSS=-0.03757 '
      SCRPT(163)=' ROTATION   661--770               ELOSS= 0.04336 '
      SCRPT(164)=' ROTATION   770--661               ELOSS=-0.04336 '
      SCRPT(165)=' ROTATION   212--321               ELOSS= 0.01645 '
      SCRPT(166)=' ROTATION   321--212               ELOSS=-0.01645 '
      SCRPT(167)=' ROTATION   322--431               ELOSS= 0.02201 '
      SCRPT(168)=' ROTATION   431--322               ELOSS=-0.02201 '
      SCRPT(169)=' ROTATION   432--541               ELOSS= 0.02825 '
      SCRPT(170)=' ROTATION   541--432               ELOSS=-0.02825 '
      SCRPT(171)=' ROTATION   542--651               ELOSS= 0.03453 '
      SCRPT(172)=' ROTATION   651--542               ELOSS=-0.03453 '
      SCRPT(173)=' ROTATION   652--761               ELOSS= 0.04062 '
      SCRPT(174)=' ROTATION   761--652               ELOSS=-0.04062 '
      SCRPT(175)=' ROTATION   313--422               ELOSS= 0.02151 '
      SCRPT(176)=' ROTATION   422--313               ELOSS=-0.02151 '
      SCRPT(177)=' ROTATION   423--532               ELOSS= 0.02584 '
      SCRPT(178)=' ROTATION   532--423               ELOSS=-0.02584 '
      SCRPT(179)=' ROTATION   533--642               ELOSS= 0.03147 '
      SCRPT(180)=' ROTATION   642--533               ELOSS=-0.03147 '
      SCRPT(181)=' ROTATION   643--752               ELOSS= 0.03758 '
      SCRPT(182)=' ROTATION   752--643               ELOSS=-0.03758 '
      SCRPT(183)=' ROTATION   414--523               ELOSS= 0.02748 '
      SCRPT(184)=' ROTATION   523--414               ELOSS=-0.02748 '
      SCRPT(185)=' ROTATION   524--633               ELOSS= 0.03042 '
      SCRPT(186)=' ROTATION   633--524               ELOSS=-0.03042 '
      SCRPT(187)=' ROTATION   634--743               ELOSS= 0.03500 '
      SCRPT(188)=' ROTATION   743--634               ELOSS=-0.03500 '
      SCRPT(189)=' ROTATION   515--624               ELOSS= 0.03424 '
      SCRPT(190)=' ROTATION   624--515               ELOSS=-0.03424 '
      SCRPT(191)=' ROTATION   625--734               ELOSS= 0.03589 '
      SCRPT(192)=' ROTATION   734--625               ELOSS=-0.03589 '
      SCRPT(193)=' ROTATION   616--725               ELOSS= 0.04155 '
      SCRPT(194)=' ROTATION   725--616               ELOSS=-0.04155 '
      SCRPT(195)=' ROTATION   111--202               ELOSS= 0.004086'
      SCRPT(196)=' ROTATION   202--111               ELOSS=-0.004086'
      SCRPT(197)=' ROTATION   212--303               ELOSS= 0.007100'
      SCRPT(198)=' ROTATION   303--212               ELOSS=-0.007100'
      SCRPT(199)=' ROTATION   313--404               ELOSS= 0.009891'
      SCRPT(200)=' ROTATION   404--313               ELOSS=-0.009891'
      SCRPT(201)=' ROTATION   414--505               ELOSS= 0.01246 '
      SCRPT(202)=' ROTATION   505--414               ELOSS=-0.01246 '
      SCRPT(203)=' ROTATION   515--606               ELOSS= 0.01489 '
      SCRPT(204)=' ROTATION   606--515               ELOSS=-0.01489 '
      SCRPT(205)=' ROTATION   616--707               ELOSS= 0.01723 '
      SCRPT(206)=' ROTATION   707--616               ELOSS=-0.01723 '
      SCRPT(207)=' ROTATION   717--808               ELOSS= 0.01954 '
      SCRPT(208)=' ROTATION   808--717               ELOSS=-0.01954 '
      SCRPT(209)=' ROTATION   818--909               ELOSS= 0.02182 '
      SCRPT(210)=' ROTATION   909--818               ELOSS=-0.02182 '
      SCRPT(211)=' ROTATION   221--312               ELOSS= 0.004769'
      SCRPT(212)=' ROTATION   312--221               ELOSS=-0.004769'
      SCRPT(213)=' ROTATION   322--413               ELOSS= 0.008579'
      SCRPT(214)=' ROTATION   413--322               ELOSS=-0.008579'
      SCRPT(215)=' ROTATION   423--514               ELOSS= 0.01229 '
      SCRPT(216)=' ROTATION   514--423               ELOSS=-0.01229 '
      SCRPT(217)=' ROTATION   524--615               ELOSS= 0.01571 '
      SCRPT(218)=' ROTATION   615--524               ELOSS=-0.01571 '
      SCRPT(219)=' ROTATION   625--716               ELOSS= 0.01876 '
      SCRPT(220)=' ROTATION   716--625               ELOSS=-0.01876 '
      SCRPT(221)=' ROTATION   726--817               ELOSS= 0.02148 '
      SCRPT(222)=' ROTATION   817--726               ELOSS=-0.02148 '
      SCRPT(223)=' ROTATION   827--918               ELOSS= 0.02399 '
      SCRPT(224)=' ROTATION   918--827               ELOSS=-0.02399 '
      SCRPT(225)=' ROTATION   634--725               ELOSS= 0.01654 '
      SCRPT(226)=' ROTATION   725--634               ELOSS=-0.01654 '
      SCRPT(227)=' VIBRATION V2 B# end SUPERELASTIC    ELOSS=-0.1977  '
      SCRPT(228)=' VIBRATION  V2 B# end                ELOSS= 0.1977  '
      SCRPT(229)=' VIBRATION  V1+V3 STRETCH          ELOSS= 0.4535  '
      SCRPT(230)=' VIBRATION  HARMONICS NV1+NV2+NV3  ELOSS= 0.919   '
      SCRPT(231)=' TRIPLET 3B1                       ELOSS=  7.04   '
      SCRPT(232)=' DIPOLE  1B1 (PART1)  F=0.003437   ELOSS=  6.8425 '
      SCRPT(233)=' DIPOLE  1B1 (PART2)  F=0.017166   ELOSS=  7.2675 '
      SCRPT(234)=' DIPOLE  1B1 (PART3)  F=0.019703   ELOSS=  7.7725 '
      SCRPT(235)=' DIPOLE  1B1 (PART4)  F=0.005486   ELOSS=  8.3575 '
      SCRPT(236)=' TRIPLET SUM 3A2 + 1A2 + 3A1       ELOSS=  9.1    '
      SCRPT(237)=' DIPOLE  1A1 (PART1)  F=0.006609   ELOSS=  8.91   '
      SCRPT(238)=' DIPOLE  1A1 (PART2)  F=0.030025   ELOSS=  9.43   '
      SCRPT(239)=' DIPOLE  1A1 (PART3)  F=0.030025   ELOSS=  9.95   '
      SCRPT(240)=' DIPOLE  1A1 (PART4)  F=0.006609   ELOSS= 10.47   '
      SCRPT(241)=' TRIPLET 3B1                       ELOSS=  9.95   '
      SCRPT(242)=' DIPOLE  1B1 (3pa1)   F=0.005200   ELOSS=  9.994  '
      SCRPT(243)=' DIPOLE  1A1 (3pb1)   F=0.014000   ELOSS= 10.172  '
      SCRPT(244)=' DIPOLE  3pa1+3pb1    F=0.010700   ELOSS= 10.39   '
      SCRPT(245)=' DIPOLE  3pa1+3pb1    F=0.009200   ELOSS= 10.575  '
      SCRPT(246)=' DIPOLE 3pa1+3pb1     F=0.006900   ELOSS= 10.78   '
      SCRPT(247)=' DIPOLE 3da1+3sa2+3db1F=0.021800   ELOSS= 11.01   '
      SCRPT(248)=' DIPOLE 3da1          F=0.023900   ELOSS= 11.122  '
      SCRPT(249)=' DIPOLE 4pa1          F=0.013991   ELOSS= 11.377  '
      SCRPT(250)=' DIPOLE 4pb1          F=0.009905   ELOSS= 11.525  '
      SCRPT(251)=' DIPOLE 4da1+4db1     F=0.023551   ELOSS= 11.75   '
      SCRPT(252)=' DIPOLE 5p            F=0.007967   ELOSS= 11.94   '
      SCRPT(253)=' DIPOLE 5d            F=0.018315   ELOSS= 12.08   '
      SCRPT(254)=' DIPOLE 6d            F=0.011109   ELOSS= 12.24   '
      SCRPT(255)=' DIPOLE 7d            F=0.008591   ELOSS= 12.34   '
      SCRPT(256)=' DIPOLE 8d+9d+10d     F=0.028137   ELOSS= 12.50   '
      SCRPT(257)=' SUM HIGHER TRIPLETS               ELOSS= 13.0    '
      SCRPT(258)=' DIPOLE NEUTRAL DISS  F=0.119100   ELOSS= 13.117  '
      SCRPT(259)=' DIPOLE NEUTRAL DISS  F=0.097947   ELOSS= 14.117  '
      SCRPT(260)=' DIPOLE NEUTRAL DISS  F=0.039540   ELOSS= 15.117  '
      SCRPT(261)=' DIPOLE NEUTRAL DISS  F=0.042191   ELOSS= 16.117  '
      SCRPT(262)=' DIPOLE NEUTRAL DISS  F=0.059428   ELOSS= 17.117  '
      SCRPT(263)=' DIPOLE NEUTRAL DISS  F=0.077707   ELOSS= 18.438  '
      SCRPT(264)=' DIPOLE NEUTRAL DISS  F=0.013138   ELOSS= 20.316  '
      SCRPT(265)=' BREMSSTRAHLUNG FROM OXYGEN ATOM                  '
      SCRPT(266)=' BREMSSTRAHLUNG FROM HYDROGEN ATOMS               '
      #  NULL COLLISIONS
      SCRPTN[1]=' H2O: OH(X)  GROUND STATE DISSOCIATION            '
      SCRPTN[2]=' H2O: OH(A-X) 306-350 NM EMISSION                 '
      SCRPTN[3]=' H2O: H ALPHA 3-2 (BALMER)  656.3 NM. EMISSION    '
      SCRPTN[4]=' H2O: H ALPHA 2-1 (LYMAN)   121.6 NM. EMISSION    '
      # CALC POPULATION OF LOW ENERGY VIBRATIONAL STATE
      APOPV1=math.exp(EIN(211)/AKT)
      APOPGS=1.0
      APOPSUM=APOPGS+APOPV1
      APOPV1=APOPV1/APOPSUM
      # KEEP APOPGS=1 TO ALLOW FOR EXCITATIONS FROM UPPER STATE   
      #                                          
      DO 900 I=1,NSTEP                                               
      EN=EG[I]
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      #
      # ELASTIC
      if(EN <= XEL[1]:
      ) :
      QELA=YEL[1]*1.e-16
      GO TO 32
      # endif                                             
      DO 30 J=2,NELA                                                    
      if(EN <= XEL[J]:
      ) GO TO 31                                         
      30 CONTINUE                                                          
      J=NELA    
      31 Y1=math.log(YEL[J])
      Y2=math.log(YEL[J-1]) 
      X1=math.log(XEL[J])
      X2=math.log(XEL[J-1])                                                 
      A=(Y1-Y2)/(X1-X2)                                                 
      B=(X2*Y1-X1*Y2)/(X2-X1)                                           
      QELA=math.exp(A*math.log(EN)+B)*1.0D-16    
      # MOMENTUM TRANSFER ELASTIC
      32 if(EN <= XMT[1]) :
      QMMT=YMT[1]*1.e-16
      GO TO 35
      # endif
      DO 33 J=2,NMMT
      if(EN <= XMT[J]:
      ) GO TO 34
      33 CONTINUE
      J=NMMT
      34 Y1=math.log(YMT[J])
      Y2=math.log(YMT[J-1])
      X1=math.log(XMT[J])
      X2=math.log(XMT[J-1])  
      A=(Y1-Y2)/(X1-X2)
      B=(X2*Y1-X1*Y2)/(X2-X1)
      QMMT=math.exp(A*math.log(EN)+B)*1.e-16
# ANGULAR DISTRIBUTION def OKHRIMOVSKY
      35 if(EN <= XEPS[1]) :
      EPS=YEPS[1]
      GO TO 38
      # endif
      DO 36 J=2,NEPS
      if(EN <= XEPS[J]:
      ) GO TO 37
      36 CONTINUE
      J=NEPS
      37 A=(YEPS[J]-YEPS[J-1])/(XEPS[J]-XEPS[J-1])
      B=(XEPS[J-1]*YEPS[J]-XEPS[J]*YEPS[J-1])/(XEPS[J-1]-XEPS[J])
      EPS=A*EN+B
      # CONVERT TO  (1.0-EPS)
      38 EPS=1.0-EPS
      # USE ELASTIC                  
      Q[2][I]=QELA         
      PEQEL[2][I]=EPS
      #      
      # IONISATION CALCULATION                                                                 
      40 DO 41 J=1,NION
      PEQION[J][I]=0.0
      41 QION[J][I]=0.0
      # IF ENERGY LESS THAN 5KEV CALCULATE TOTAL COUNTING AND GROSS IONISATION
      if (EN > 5000.):
      GO TO 44 
      if(EN <= EION[1]:
      ) GO TO 90
      DO 42 J=2,NIONC
      if(EN <= XION[J]:
      ) GO TO 43
      42 CONTINUE
      J=NIONC
      43 A=(YIONC[J]-YIONC[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YIONC[J]-XION[J]*YIONC[J-1])/(XION[J-1]-XION[J])
      QCOUNT=(A*EN+B)*1.e-16
      A=(YIONG[J]-YIONG[J-1])/(XION[J]-XION[J-1])
      B=(XION[J-1]*YIONG[J]-XION[J]*YIONG[J-1])/(XION[J-1]-XION[J])
      QGROSS=(A*EN+B)*1.e-16
      GO TO 45
      # CALCULATE TOTAL COUNTING AND GROSS IONISATION FROM BORN BETHE FIT   
      44 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QCOUNT=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
      QGROSS=QCOUNT*1.022
      45 CONTINUE
      #
      # IONISATION TO H2O+
      if(EN > XION1(NION1):
      ) GO TO 52
      if(EN <= XION1[1]:
      ) GO TO 90
      DO 50 J=2,NION1
      if(EN <= XION1[J]:
      ) GO TO 51
      50 CONTINUE
      J=NION1
      51 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
      QION[1][I]=(A*EN+B)*1.e-16
      GO TO 53
      52 QION[1][I]=QCOUNT*0.62996
      # IONISATION TO OH+
      53 if(EN > XION2(NION2)) GO TO 56
      if(EN <= XION2[1]:
      ) GO TO 90
      DO 54 J=2,NION2
      if(EN <= XION2[J]:
      ) GO TO 55
      54 CONTINUE
      J=NION2
      55 A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])
      B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J])
      QION[2][I]=(A*EN+B)*1.e-16
      GO TO 57
      56 QION[2][I]=QCOUNT*0.19383
      # IONISATION TO  H+
      57 if(EN > XION3(NION3)) GO TO 60
      if(EN <= XION3[1]:
      ) GO TO 90
      DO 58 J=2,NION3
      if(EN <= XION3[J]:
      ) GO TO 59
      58 CONTINUE
      J=NION3
      59 A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])
      B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J])
      QION[3][I]=(A*EN+B)*1.e-16
      GO TO 61
      60 QION[3][I]=QCOUNT*0.13275
      # IONISATION TO  O+
      61 if(EN > XION4(NION4)) GO TO 64
      if(EN <= XION4[1]:
      ) GO TO 90
      DO 62 J=2,NION4
      if(EN <= XION4[J]:
      ) GO TO 63
      62 CONTINUE
      J=NION4
      63 A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])
      B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J])
      QION[4][I]=(A*EN+B)*1.e-16
      GO TO 65
      64 QION[4][I]=QCOUNT*0.02129
      # IONISATION TO  H2+
      65 if(EN > XION5(NION5)) GO TO 68
      if(EN <= XION5[1]:
      ) GO TO 90
      DO 66 J=2,NION5
      if(EN <= XION5[J]:
      ) GO TO 67
      66 CONTINUE
      J=NION5
      67 A=(YION5[J]-YION5[J-1])/(XION5[J]-XION5[J-1])
      B=(XION5[J-1]*YION5[J]-XION5[J]*YION5[J-1])/(XION5[J-1]-XION5[J])
      QION[5][I]=(A*EN+B)*1.e-16
      GO TO 73
      68 QION[5][I]=QCOUNT*0.00035
      # IONISATION TO  H+ + OH+
      73 if(EN > XION6(NION6)) GO TO 76
      if(EN <= XION6[1]:
      ) GO TO 90
      DO 74 J=2,NION6
      if(EN <= XION6[J]:
      ) GO TO 75
      74 CONTINUE
      J=NION6
      75 A=(YION6[J]-YION6[J-1])/(XION6[J]-XION6[J-1])
      B=(XION6[J-1]*YION6[J]-XION6[J]*YION6[J-1])/(XION6[J-1]-XION6[J])
      QION[6][I]=(A*EN+B)*1.e-16
      GO TO 77
      76 QION[6][I]=QCOUNT*0.01395
      # IONISATION TO  H+ + O+
      77 if(EN > XION7(NION7)) GO TO 80
      if(EN <= XION7[1]:
      ) GO TO 90
      DO 78 J=2,NION7
      if(EN <= XION7[J]:
      ) GO TO 79
      78 CONTINUE
      J=NION7
      79 A=(YION7[J]-YION7[J-1])/(XION7[J]-XION7[J-1])
      B=(XION7[J-1]*YION7[J]-XION7[J]*YION7[J-1])/(XION7[J-1]-XION7[J])
      QION[7][I]=(A*EN+B)*1.e-16
      GO TO 81
      80 QION[7][I]=QCOUNT*0.00705
      # IONISATION TO  O++
      81 if(EN > XION8(NION8)) GO TO 84
      if(EN <= XION8[1]:
      ) GO TO 90
      DO 82 J=2,NION8
      if(EN <= XION8[J]:
      ) GO TO 83
      82 CONTINUE
      J=NION8
      83 A=(YION8[J]-YION8[J-1])/(XION8[J]-XION8[J-1])
      B=(XION8[J-1]*YION8[J]-XION8[J]*YION8[J-1])/(XION8[J-1]-XION8[J])
      QION[8][I]=(A*EN+B)*1.e-16
      GO TO 85
      84 QION[8][I]=QCOUNT*0.00085
      # IONISATION TO OXYGEN K-SHELL
      85 if(EN <= XKSH[1]) GO TO 90
      DO 86 J=2,NKSH 
      if(EN <= XKSH[J]:
      ) GO TO 87
      86 CONTINUE
      J=NKSH
      87 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
      QION[9][I]=(A*EN+B)*1.e-16
      #
      90 DO 98 J=1,NION     
      if(EN <= (2.0*EION[J]:
      )) GO TO 98
      PEQION[J][I]=PEQEL[2][(I-IOFFION[J]])
      98 CONTINUE
      #
      #  ATTACHMENT    H-
      Q[4][I]=0.0                 
      QATT[1][I]=0.0                                       
      if(EN <= XATT1[1]:
      or EN >= XATT1(NATT1)) GO TO 103               
      DO 101  J=2,NATT1                                                
      if(EN <= XATT1[J]:
      ) GO TO 102                                      
      101 CONTINUE                                                          
      J=NATT1     
      102 YJ=math.log(YATT1[J])
      YJ1=math.log(YATT1[J-1])
      XJ=math.log(XATT1[J])
      XJ1=math.log(XATT1[J-1])                                             
      A=(YJ-YJ1)/(XJ-XJ1)                     
      B=(XJ1*YJ-XJ*YJ1)/(XJ1-XJ) 
      QATT[1][I]=math.exp(A*math.log(EN)+B)*1.e-21         
      #  ATTACHMENT    O-
      103 QATT[2][I]=0.0
      if(EN <= XATT2[1]:
      or EN >= XATT2(NATT2)) GO TO 106               
      DO 104  J=2,NATT2                                                
      if(EN <= XATT2[J]:
      ) GO TO 105                                      
      104 CONTINUE                                                          
      J=NATT2     
      105 YJ=math.log(YATT2[J])
      YJ1=math.log(YATT2[J-1])
      XJ=math.log(XATT2[J])
      XJ1=math.log(XATT2[J-1])                                             
      A=(YJ-YJ1)/(XJ-XJ1)                     
      B=(XJ1*YJ-XJ*YJ1)/(XJ1-XJ) 
      QATT[2][I]=math.exp(A*math.log(EN)+B)*1.e-21  
      #  ATTACHMENT    OH-
      106 QATT[3][I]=0.0
      if(EN <= XATT3[1]:
      or EN >= XATT3(NATT3)) GO TO 109               
      DO 107  J=2,NATT3                                                
      if(EN <= XATT3[J]:
      ) GO TO 108                                      
      107 CONTINUE                                                          
      J=NATT3     
      108 YJ=math.log(YATT3[J])
      YJ1=math.log(YATT3[J-1])
      XJ=math.log(XATT3[J])
      XJ1=math.log(XATT3[J-1])                                             
      A=(YJ-YJ1)/(XJ-XJ1)                     
      B=(XJ1*YJ-XJ*YJ1)/(XJ1-XJ) 
      QATT[3][I]=math.exp(A*math.log(EN)+B)*1.e-21  
      #   
      109 Q[4][I]=0.0                                             
      Q[5][I]=0.0                                                        
      Q[6][I]=0.0 
      #
      #  ZERO INELASTIC ARRAYS
      DO 130 L=1,NIN
      QIN(L,I)=0.00
      PEQIN(L,I)=0.00
      130 CONTINUE
      # ----------------------------------------------------------------      
      #  DIPOLE BORN ROTATIONAL STATES                                 
      #----------------------------------------------------------------
      ENRT=math.sqrt(EN)
      #      
      #  SUPER ELASTIC ROTATIONAL COLLISIONS
      DO 140 L=2,210,2
      AL=AJIN(L)
      L2=L/2
      QIN(L,I)=DBK*SALPHA[L2]*PJ(IMAP(L))*math.log((ENRT+math.sqrt(EN-EIN(L)))/(math.sqrt(EN-EIN(L))-ENRT))/((2.0*AL+1.0)*EN)*AMPROT       
      # IF ENERGY GT 200OEV SET ROTATION TO 0.0 AND USE AS MOD ELASTIC
      if(EN > 2000.0):
      :
      QIN(L,I)=0.0
      GO TO 140
      # endif
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(L))
      if(EPOINT > ENRTS(NRTANG):
      ) :
      WRITE(6,922) EPOINT,ENRTS(NRTANG),EN
      922  print(' ENERGY ERROR IN ROT SUPER ANG CALC  EPOINT=','%.4f' % ,' ENRTS=','%.4f' % ,' EN=','%.4f' % )
      # endif
      DO 131 M=1,NRTANG
      if(EPOINT <= ENRTS(M):
      ) GO TO 132 
      131 CONTINUE
      M=NRTANG
      132 A=(YEPSR(M)-YEPSR(M-1))/(ENRTS(M)-ENRTS(M-1))
      B=(ENRTS(M-1)*YEPSR(M)-ENRTS(M)*YEPSR(M-1))/(ENRTS(M-1)-ENRTS(M))
      EPSIL=A*EPOINT+B
      PEQIN(L,I)=1.0-EPSIL
      # CALCULATE USED MT XSEC
      A=(YMTRT(M)-YMTRT(M-1))/(ENRTS(M)-ENRTS(M-1))
      B=(ENRTS(M-1)*YMTRT(M)-ENRTS(M)*YMTRT(M-1))/(ENRTS(M-1)-ENRTS(M))
      XSECDUM(L)=A*EPOINT+B
      XSECDUM(L)=XSECDUM(L)*QIN(L,I)
      140 CONTINUE
      # 
      # ROTATIONAL COLLISIONS
      DO 150 L=1,209,2
      QIN(L,I)=0.0
      if(EN <= EIN(L):
      ) GO TO 150
      AL=AJIN(L)
      L2=(L+1)/2
      QIN(L,I)=DBK*SALPHA[L2]*PJ(IMAP(L))*math.log((ENRT+math.sqrt(EN-EIN(L)))/(ENRT-math.sqrt(EN-EIN(L))))/((2.0*AL+1.0)*EN)*AMPROT       
      # IF ENERGY GT 2000EV SET TO 0.0 AND USE MOD ELASTIC
      if(EN > 2000.0):
      :
      QIN(L,I)=0.0
      GO TO 150
      # endif
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(L))
      if(EPOINT > ENROT(NRTANG):
      ) :
      WRITE(6,923) EPOINT,ENROT(NRTANG),EN
      923  print(' ENERGY ERROR IN ROT ANG CALC  EPOINT=','%.4f' % ,' ENROT=','%.4f' % ,' EN=','%.4f' % )
      # endif
      DO 141 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 142 
      141 CONTINUE
      M=NRTANG
      142 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(L,I)=1.0-EPSIL
      # CALCULATE USED MT XSEC
      A=(YMTRT(M)-YMTRT(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YMTRT(M)-ENROT(M)*YMTRT(M-1))/(ENROT(M-1)-ENROT(M))
      XSECDUM(L)=A*EPOINT+B
      XSECDUM(L)=XSECDUM(L)*QIN(L,I)
      150 CONTINUE  
      # CALCULATE TOTAL AND MT SUMS OVER ROTATIONS
      #     QSUPTT=0.0
      #     QSUPMT=0.0
      #     DO 160 L=2,210,2
      #     QSUPTT=QSUPTT+QIN(L,I)
      #     QSUPMT=QSUPMT+XSECDUM(L)
      # 160 CONTINUE
      #     QTOTTT=0.0
      #     QTOTMT=0.0
      #     DO 161 L=1,209,2
      #     QTOTTT=QTOTTT+QIN(L,I)
      #     QTOTMT=QTOTMT+XSECDUM(L)
      #     QTSMT=QSUPMT+QTOTMT
      #     QTSEL=QSUPTT+QTOTTT
      # 161 CONTINUE
      #     WRITE(6,944) EN,QSUPTT,QSUPMT,QTOTTT,QTOTMT,QTSEL,QTSMT
      # 944 print(' CROSS SECTION ROTATIONAL SUMS AT ENERGY =','%.4f' % ,/,
      #    /' TOTAL SUPER =','%.4f' % ,'  MT SUPER =','%.4f' % ,/,' TOTAL ROTAT =',
      #    /'%.4f' % ,'  MT ROTAT =','%.4f' % ,/,' TOT ROT=','%.4f' % ,' TOT ROT MT=',
      #    /'%.4f' % )
      # 
      # VIBRATION B# end V2 SUPERELASTIC (DIPOLE 1/E FALL OFF ABOVE ENERGY OF
      # XVIB1(NVIB1) EV ) 
      QIN(211,I)=0.0
      if(EN <= 0.0):
      GO TO 180
      if((EN+EIN(212):
      ) > XVIB1(NVIB1)) GO TO 173
      DO 171 J=2,NVIB1
      if((EN+EIN(212):
      ) <= XVIB1[J]) GO TO 172
      171 CONTINUE
      J=NVIB1
      172 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J])
      QIN(211,I)=(EN+EIN(212))*(A*(EN+EIN(212))+B)/EN
      GOTO 174
      173 QIN(211,I)=YVIB1(NVIB1)*(XVIB1(NVIB1)/(EN+EIN(212)))/EN
      174 QIN(211,I)=QIN(211,I)*APOPV1*1.e-16        
      PEQIN(211,I)=PEQEL[2][(I-IOFFN(211)])
      180 CONTINUE
      #  VIBRATION   B# end  V2 (DIPOLE 1/E FALL OFF ABOVE ENERGY OF
      #  XVIB1(NVIB1) EV )
      QIN(212,I)=0.0                                                 
      if(EN <= EIN(212):
      ) GO TO 210   
      if(EN > XVIB1(NVIB1):
      ) GO TO 203                                
      DO 201 J=2,NVIB1                                                  
      if(EN <= XVIB1[J]:
      ) GO TO 202                                      
      201 CONTINUE                                                          
      J=NVIB1                                                           
      202 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN(212,I)=(A*EN+B)       
      GO TO 204
      203 QIN(212,I)=YVIB1(NVIB1)*(XVIB1(NVIB1)/EN)  
      204 QIN(212,I)=QIN(212,I)*APOPGS*1.e-16 
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(212))
      if(EPOINT > 500.):
      GO TO 2043
      DO 2041 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 2042
      2041 CONTINUE
      M=NRTANG
      2042 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(212,I)=1.0-EPSIL
      GO TO 210
      2043 PEQIN(212,I)=PEQEL[2][(I-IOFFN(212)])
      210 CONTINUE      
      #  VIBRATION STRETCH V1+V3                                           
      QIN(213,I)=0.0                                                    
      if(EN <= EIN(213):
      ) GO TO 220                    
      if(EN > XVIB2(NVIB2):
      ) GO TO 213                  
      DO 211 J=2,NVIB2                                                  
      if(EN <= XVIB2[J]:
      ) GO TO 212                                      
      211 CONTINUE                                                          
      J=NVIB2                                                           
      212 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN(213,I)=(A*EN+B)*1.e-16 
      GO TO 214
      213 QIN(213,I)=YVIB2(NVIB2)*(XVIB2(NVIB2)/EN)**1.5*1.e-16   
      214 CONTINUE 
      if(EN < 1.5):
      :
      # USE FLAT ANGULAR DISTRIBUTION AT THRESHOLD FOR STRETCH TRANSITION
      PEQIN(213,I)=0.0
      GO TO 220
      # endif    
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(213))
      if(EPOINT > 500.):
      GO TO 2143
      DO 2141 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 2142
      2141 CONTINUE
      M=NRTANG
      2142 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(213,I)=1.0-EPSIL
      GO TO 220
      2143 PEQIN(213,I)=PEQEL[2][(I-IOFFN(213)])
      220 CONTINUE                                                          
      #  VIBRATION HARMONICS NV2 + NV1 +NV3                                                                     
      QIN(214,I)=0.0                                                    
      if(EN <= EIN(214):
      ) GO TO 230               
      if(EN > XVIB3(NVIB3):
      ) GO TO 223                       
      DO 221 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
      ) GO TO 222                                      
      221 CONTINUE                                                          
      J=NVIB3                                                           
      222 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN(214,I)=(A*EN+B)*1.e-16 
      GO TO 224
      223 QIN(214,I)=YVIB3(NVIB3)*(XVIB3(NVIB3)/EN)**1.5*1.e-16
      224 CONTINUE
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(214))
      if(EPOINT > 500.):
      GO TO 2243
      DO 2241 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 2242
      2241 CONTINUE
      M=NRTANG
      2242 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(214,I)=1.0-EPSIL
      GO TO 230
      2243 PEQIN(214,I)=PEQEL[2][(I-IOFFN(214)])
      230 CONTINUE    
      # TRIPLET 3B1                                    
      QIN(215,I)=0.0                                                    
      if(EN <= EIN(215):
      ) GO TO 310   
      if(EN > XTRP1(NTRP1):
      ) GO TO 302                                  
      DO 300 J=2,NTRP1                                           
      if(EN <= XTRP1[J]:
      ) GO TO 301                                      
      300 CONTINUE                                                          
      J=NTRP1                                                          
      301 Y1=math.log(YTRP1[J])
      Y2=math.log(YTRP1[J-1])
      X1=math.log(XTRP1[J])
      X2=math.log(XTRP1[J-1])
      A=(Y1-Y2)/(X1-X2)
      B=(X2*Y1-X1*Y2)/(X2-X1)                   
      QIN(215,I)=math.exp(A*math.log(EN)+B)*1.e-16            
      GO TO 303
      302 QIN(215,I)=YTRP1(NTRP1)*(XTRP1(NTRP1)/EN)**1.5*1.e-16          
      303 if(EN <= (2.0*EIN(215))) GO TO 310
      PEQIN(215,I)=PEQEL[2][(I-IOFFN(215)])
      # EXCITATION  1B1 (7.48EV LEVEL SPLIT INTO 4 GROUPS)
      310 if(EN <= EIN(216)) GO TO 311
      QIN(216,I)=0.003437/(EIN(216)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(216)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(216))
      if(QIN(216,I):
      < 0.0) QIN(216,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(216))
      if(EPOINT > 500.):
      GO TO 3103
      DO 3101 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3102
      3101 CONTINUE
      M=NRTANG
      3102 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(216,I)=1.0-EPSIL
      GO TO 311
      3103 PEQIN(216,I)=PEQEL[2][(I-IOFFN(216)])
      # EXCITATION  1B1 (7.48EV LEVEL SPLIT INTO 4 GROUPS)
      311 if(EN <= EIN(217)) GO TO 312
      QIN(217,I)=0.017166/(EIN(217)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(217)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(217))
      if(QIN(217,I):
      < 0.0) QIN(217,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(217))
      if(EPOINT > 500.):
      GO TO 3113
      DO 3111 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3112
      3111 CONTINUE
      M=NRTANG
      3112 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(217,I)=1.0-EPSIL
      GO TO 312
      3113 PEQIN(217,I)=PEQEL[2][(I-IOFFN(217)])
      # EXCITATION  1B1 (7.48EV LEVEL SPLIT INTO 4 GROUPS)
      312 if(EN <= EIN(218)) GO TO 313
      QIN(218,I)=0.019703/(EIN(218)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(218)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(218))
      if(QIN(218,I):
      < 0.0) QIN(218,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(218))
      if(EPOINT > 500.):
      GO TO 3123
      DO 3121 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3122
      3121 CONTINUE
      M=NRTANG
      3122 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(218,I)=1.0-EPSIL
      GO TO 313
      3123 PEQIN(218,I)=PEQEL[2][(I-IOFFN(218)])
      # EXCITATION  1B1 (7.48EV LEVEL SPLIT INTO 4 GROUPS)
      313 if(EN <= EIN(219)) GO TO 314
      QIN(219,I)=0.005486/(EIN(219)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(219)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(219))
      if(QIN(219,I):
      < 0.0) QIN(219,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(219))
      if(EPOINT > 500.):
      GO TO 3133
      DO 3131 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3132
      3131 CONTINUE
      M=NRTANG
      3132 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(219,I)=1.0-EPSIL
      GO TO 314
      3133 PEQIN(219,I)=PEQEL[2][(I-IOFFN(219)])
      # TRIPLET ( 3A2 + 1A2 + 3A1) 9.1EV                                   
      314 QIN(220,I)=0.0                                                    
      if(EN <= EIN(220):
      ) GO TO 322   
      if(EN > XTRP2(NTRP2):
      ) GO TO 317                                 
      DO 315 J=2,NTRP2                                           
      if(EN <= XTRP2[J]:
      ) GO TO 316                                      
      315 CONTINUE                                                          
      J=NTRP2                                                          
      316 Y1=math.log(YTRP2[J])
      Y2=math.log(YTRP2[J-1])
      X1=math.log(XTRP2[J])
      X2=math.log(XTRP2[J-1])
      A=(Y1-Y2)/(X1-X2)
      B=(X2*Y1-X1*Y2)/(X2-X1)
      QIN(220,I)=math.exp(A*math.log(EN)+B)*1.e-16                 
      GO TO 318
      317 QIN(220,I)=YTRP2(NTRP2)*(XTRP2(NTRP2)/EN)**1.5*1.e-16          
      318 if(EN <= (2.0*EIN(220))) GO TO 322
      PEQIN(220,I)=PEQEL[2][(I-IOFFN(220)])             
      # EXCITATION  1A1 (9.69EV LEVEL SPLIT INTO 4 GROUPS)
      322 if(EN <= EIN(221)) GO TO 323
      QIN(221,I)=0.006609/(EIN(221)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(221)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(221))
      if(QIN(221,I):
      < 0.0) QIN(221,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(221))
      if(EPOINT > 500.):
      GO TO 3223
      DO 3221 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3222
      3221 CONTINUE
      M=NRTANG
      3222 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(221,I)=1.0-EPSIL
      GO TO 323
      3223 PEQIN(221,I)=PEQEL[2][(I-IOFFN(221)])
      # EXCITATION  1A1 (9.69EV LEVEL SPLIT INTO 4 GROUPS)
      323 if(EN <= EIN(222)) GO TO 324
      QIN(222,I)=0.030025/(EIN(222)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(222)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(222))
      if(QIN(222,I):
      < 0.0) QIN(222,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(222))
      if(EPOINT > 500.):
      GO TO 3233
      DO 3231 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3232
      3231 CONTINUE
      M=NRTANG
      3232 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(222,I)=1.0-EPSIL
      GO TO 324
      3233 PEQIN(222,I)=PEQEL[2][(I-IOFFN(222)])
      # EXCITATION  1A1 (9.69EV LEVEL SPLIT INTO 4 GROUPS)
      324 if(EN <= EIN(223)) GO TO 325
      QIN(223,I)=0.030025/(EIN(223)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(223)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(223))
      if(QIN(223,I):
      < 0.0) QIN(223,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(223))
      if(EPOINT > 500.):
      GO TO 3243
      DO 3241 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3242
      3241 CONTINUE
      M=NRTANG
      3242 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(223,I)=1.0-EPSIL
      GO TO 325
      3243 PEQIN(223,I)=PEQEL[2][(I-IOFFN(223)])
      # EXCITATION  1A1 (9.69EV LEVEL SPLIT INTO 4 GROUPS)
      325 if(EN <= EIN(224)) GO TO 326
      QIN(224,I)=0.006609/(EIN(224)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(224)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(224))
      if(QIN(224,I):
      < 0.0) QIN(224,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(224))
      if(EPOINT > 500.):
      GO TO 3253
      DO 3251 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3252
      3251 CONTINUE
      M=NRTANG
      3252 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(224,I)=1.0-EPSIL
      GO TO 326
      3253 PEQIN(224,I)=PEQEL[2][(I-IOFFN(224)])
      # TRIPLET 3B1 9.95 EV                                                
      326 QIN(225,I)=0.0                                                    
      if(EN <= EIN(225):
      ) GO TO 332     
      if(EN > XTRP3(NTRP3):
      ) GO TO 329                                 
      DO 327 J=2,NTRP3                                           
      if(EN <= XTRP3[J]:
      ) GO TO 328                                      
      327 CONTINUE                                                          
      J=NTRP3                                                          
      328 Y1=math.log(YTRP3[J])
      Y2=math.log(YTRP3[J-1])
      X1=math.log(XTRP3[J])
      X2=math.log(XTRP3[J-1]) 
      A=(Y1-Y2)/(X1-X2)                     
      B=(X2*Y1-X1*Y2)/(X2-X1)
      QIN(225,I)=math.exp(A*math.log(EN)+B)*1.e-16              
      GO TO 330
      329 QIN(225,I)=YTRP3(NTRP3)*(XTRP3(NTRP3)/EN)**1.5*1.e-16          
      330 if(EN <= (2.0*EIN(225))) GO TO 332
      PEQIN(225,I)=PEQEL[2][(I-IOFFN(225)])
      # EXCITATION   1B1 (3pa1)     9.994 EV                      
      332 if(EN <= EIN(226)) GO TO 333
      QIN(226,I)=0.005200/(EIN(226)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(226)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(226))
      if(QIN(226,I):
      < 0.0) QIN(226,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(226))
      if(EPOINT > 500.):
      GO TO 3323
      DO 3321 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3322
      3321 CONTINUE
      M=NRTANG
      3322 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(226,I)=1.0-EPSIL
      GO TO 333
      3323 PEQIN(226,I)=PEQEL[2][(I-IOFFN(226)])
      # EXCITATION   1A1 (3pa1+3pb1)  10.172 EV                      
      333 if(EN <= EIN(227)) GO TO 334
      QIN(227,I)=0.014000/(EIN(227)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(227)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(227))
      if(QIN(227,I):
      < 0.0) QIN(227,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(227))
      if(EPOINT > 500.):
      GO TO 3333
      DO 3331 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3332
      3331 CONTINUE
      M=NRTANG
      3332 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(227,I)=1.0-EPSIL
      GO TO 334
      3333 PEQIN(227,I)=PEQEL[2][(I-IOFFN(227)])
      # EXCITATION    3pa1+3pb1       10.39 EV                      
      334 if(EN <= EIN(228)) GO TO 335
      QIN(228,I)=0.010700/(EIN(228)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(228)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(228))
      if(QIN(228,I):
      < 0.0) QIN(228,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(228))
      if(EPOINT > 500.):
      GO TO 3343
      DO 3341 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3342
      3341 CONTINUE
      M=NRTANG
      3342 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(228,I)=1.0-EPSIL
      GO TO 335
      3343 PEQIN(228,I)=PEQEL[2][(I-IOFFN(228)])
      # EXCITATION    3pa1+3pb1       10.575EV                      
      335 if(EN <= EIN(229)) GO TO 336
      QIN(229,I)=0.009200/(EIN(229)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(229)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(229))
      if(QIN(229,I):
      < 0.0) QIN(229,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(229))
      if(EPOINT > 500.):
      GO TO 3353
      DO 3351 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3352
      3351 CONTINUE
      M=NRTANG
      3352 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(229,I)=1.0-EPSIL
      GO TO 336
      3353 PEQIN(229,I)=PEQEL[2][(I-IOFFN(229)])
      # EXCITATION    3pa1+3pb1       10.78 EV                      
      336 if(EN <= EIN(230)) GO TO 337
      QIN(230,I)=0.006900/(EIN(230)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(230)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(230))
      if(QIN(230,I):
      < 0.0) QIN(230,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(230))
      if(EPOINT > 500.):
      GO TO 3363
      DO 3361 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3362
      3361 CONTINUE
      M=NRTANG
      3362 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(230,I)=1.0-EPSIL
      GO TO 337
      3363 PEQIN(230,I)=PEQEL[2][(I-IOFFN(230)])
      # EXCITATION    3da1+3da2+3db1  11.01 EV                      
      337 if(EN <= EIN(231)) GO TO 338
      QIN(231,I)=0.021800/(EIN(231)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(231)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(231))
      if(QIN(231,I):
      < 0.0) QIN(231,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(231))
      if(EPOINT > 500.):
      GO TO 3373
      DO 3371 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3372
      3371 CONTINUE
      M=NRTANG
      3372 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(231,I)=1.0-EPSIL
      GO TO 338
      3373 PEQIN(231,I)=PEQEL[2][(I-IOFFN(231)])
      # EXCITATION    3da1  11.122 EV                     
      338 if(EN <= EIN(232)) GO TO 339
      QIN(232,I)=0.023900/(EIN(232)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(232)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(232))
      if(QIN(232,I):
      < 0.0) QIN(232,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(232))
      if(EPOINT > 500.):
      GO TO 3383
      DO 3381 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3382
      3381 CONTINUE
      M=NRTANG
      3382 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(232,I)=1.0-EPSIL
      GO TO 339
      3383 PEQIN(232,I)=PEQEL[2][(I-IOFFN(232)])
      # EXCITATION    4pa1  11.377 EV                     
      339 if(EN <= EIN(233)) GO TO 340
      QIN(233,I)=0.013991/(EIN(233)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(233)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(233))
      if(QIN(233,I):
      < 0.0) QIN(233,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(233))
      if(EPOINT > 500.):
      GO TO 3393
      DO 3391 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3392
      3391 CONTINUE
      M=NRTANG
      3392 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(233,I)=1.0-EPSIL
      GO TO 340
      3393 PEQIN(233,I)=PEQEL[2][(I-IOFFN(233)])
      # EXCITATION    4pb1  11.525 EV                     
      340 if(EN <= EIN(234)) GO TO 341
      QIN(234,I)=0.009905/(EIN(234)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(234)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(234))
      if(QIN(234,I):
      < 0.0) QIN(234,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(234))
      if(EPOINT > 500.):
      GO TO 3403
      DO 3401 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3402
      3401 CONTINUE
      M=NRTANG
      3402 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(234,I)=1.0-EPSIL
      GO TO 341
      3403 PEQIN(234,I)=PEQEL[2][(I-IOFFN(234)])
      # EXCITATION    4da1+4db1  11.75 EV                 
      341 if(EN <= EIN(235)) GO TO 342
      QIN(235,I)=0.023551/(EIN(235)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(235)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(235))
      if(QIN(235,I):
      < 0.0) QIN(235,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(235))
      if(EPOINT > 500.):
      GO TO 3413
      DO 3411 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3412
      3411 CONTINUE
      M=NRTANG
      3412 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(235,I)=1.0-EPSIL
      GO TO 342
      3413 PEQIN(235,I)=PEQEL[2][(I-IOFFN(235)])
      # EXCITATION    5p         11.94 EV                 
      342 if(EN <= EIN(236)) GO TO 343
      QIN(236,I)=0.007967/(EIN(236)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(236)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(236))
      if(QIN(236,I):
      < 0.0) QIN(236,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(236))
      if(EPOINT > 500.):
      GO TO 3423
      DO 3421 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3422
      3421 CONTINUE
      M=NRTANG
      3422 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(236,I)=1.0-EPSIL
      GO TO 343
      3423 PEQIN(236,I)=PEQEL[2][(I-IOFFN(236)])
      # EXCITATION    5d         12.08 EV                 
      343 if(EN <= EIN(237)) GO TO 344
      QIN(237,I)=0.018315/(EIN(237)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(237)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(237))
      if(QIN(237,I):
      < 0.0) QIN(237,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(237))
      if(EPOINT > 500.):
      GO TO 3433
      DO 3431 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3432
      3431 CONTINUE
      M=NRTANG
      3432 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(237,I)=1.0-EPSIL
      GO TO 344
      3433 PEQIN(237,I)=PEQEL[2][(I-IOFFN(237)])
      # EXCITATION    6d         12.24 EV                 
      344 if(EN <= EIN(238)) GO TO 345
      QIN(238,I)=0.011109/(EIN(238)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(238)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(238))
      if(QIN(238,I):
      < 0.0) QIN(238,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(238))
      if(EPOINT > 500.):
      GO TO 3443
      DO 3441 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3442
      3441 CONTINUE
      M=NRTANG
      3442 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(238,I)=1.0-EPSIL
      GO TO 345
      3443 PEQIN(238,I)=PEQEL[2][(I-IOFFN(238)])
      # EXCITATION    7d         12.34 EV                 
      345 if(EN <= EIN(239)) GO TO 346
      QIN(239,I)=0.008591/(EIN(239)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(239)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(239))
      if(QIN(239,I):
      < 0.0) QIN(239,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(239))
      if(EPOINT > 500.):
      GO TO 3453
      DO 3451 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3452
      3451 CONTINUE
      M=NRTANG
      3452 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(239,I)=1.0-EPSIL
      GO TO 346
      3453 PEQIN(239,I)=PEQEL[2][(I-IOFFN(239)])
      # EXCITATION    8d+9d+10d  12.50 EV                 
      346 if(EN <= EIN(240)) GO TO 347
      QIN(240,I)=0.028137/(EIN(240)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(240)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(240))
      if(QIN(240,I):
      < 0.0) QIN(240,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(240))
      if(EPOINT > 500.):
      GO TO 3463
      DO 3461 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3462
      3461 CONTINUE
      M=NRTANG
      3462 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(240,I)=1.0-EPSIL
      GO TO 347
      3463 PEQIN(240,I)=PEQEL[2][(I-IOFFN(240)])
      # TRIPLET SUM OF HIGHER TRIPLETS   13.0 EV                                            
      347 QIN(241,I)=0.0                                                    
      if(EN <= EIN(241):
      ) GO TO 353
      if(EN > XTRP4(NTRP4):
      ) GO TO 350                                
      DO 348 J=2,NTRP4                                           
      if(EN <= XTRP4[J]:
      ) GO TO 349                                      
      348 CONTINUE                                                          
      J=NTRP4                                                          
      349 Y1=math.log(YTRP4[J])
      Y2=math.log(YTRP4[J-1])
      X1=math.log(XTRP4[J])
      X2=math.log(XTRP4[J-1])
      A=(Y1-Y2)/(X1-X2)                     
      B=(X2*Y1-X1*Y2)/(X2-X1)
      QIN(241,I)=math.exp(A*math.log(EN)+B)*1.e-16         
      GO TO 351
      350 QIN(241,I)=YTRP4(NTRP4)*(XTRP4(NTRP4)/EN)**1.5*1.e-16            
      351 if(EN <= (2.0*EIN(241))) GO TO 353
      PEQIN(241,I)=PEQEL[2][(I-IOFFN(241)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=13.117 
      353 if(EN <= EIN(242)) GO TO 354
      QIN(242,I)=0.119100/(EIN(242)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(242)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(242))
      if(QIN(242,I):
      < 0.0) QIN(242,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(242))
      if(EPOINT > 500.):
      GO TO 3533
      DO 3531 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3532
      3531 CONTINUE
      M=NRTANG
      3532 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(242,I)=1.0-EPSIL
      GO TO 354
      3533 PEQIN(242,I)=PEQEL[2][(I-IOFFN(242)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=14.117 
      354 if(EN <= EIN(243)) GO TO 355
      QIN(243,I)=0.097947/(EIN(243)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(243)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(243))
      if(QIN(243,I):
      < 0.0) QIN(243,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(243))
      if(EPOINT > 500.):
      GO TO 3543
      DO 3541 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3542
      3541 CONTINUE
      M=NRTANG
      3542 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(243,I)=1.0-EPSIL
      GO TO 355
      3543 PEQIN(243,I)=PEQEL[2][(I-IOFFN(243)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=15.117 
      355 if(EN <= EIN(244)) GO TO 356 
      QIN(244,I)=0.039540/(EIN(244)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(244)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(244))
      if(QIN(244,I):
      < 0.0) QIN(244,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(244))
      if(EPOINT > 500.):
      GO TO 3553
      DO 3551 M=1,NRTANG
      if(EPOINT <= ENROT(M):
      ) GO TO 3552
      3551 CONTINUE
      M=NRTANG
      3552 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(244,I)=1.0-EPSIL
      GO TO 356
      3553 PEQIN(244,I)=PEQEL[2][(I-IOFFN(244)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=16.117 
      356 if(EN <= EIN(245)) GO TO 357 
      QIN(245,I)=0.042191/(EIN(245)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(245)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(245))
      if(QIN(245,I):
      < 0.0) QIN(245,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(245))
      if(EPOINT > 500.):
      GO TO 3563
      DO 3561 M=1,NRTANG 
      if(EPOINT <= ENROT(M):
      ) GO TO 3562
      3561 CONTINUE
      M=NRTANG
      3562 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(245,I)=1.0-EPSIL
      GO TO 357
      3563 PEQIN(245,I)=PEQEL[2][(I-IOFFN(245)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=17.117 
      357 if(EN <= EIN(246)) GO TO 358 
      QIN(246,I)=0.059428/(EIN(246)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(246)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(246))
      if(QIN(246,I):
      < 0.0) QIN(246,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(246))
      if(EPOINT > 500.):
      GO TO 3573
      DO 3571 M=1,NRTANG 
      if(EPOINT <= ENROT(M):
      ) GO TO 3572
      3571 CONTINUE
      M=NRTANG
      3572 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(246,I)=1.0-EPSIL
      GO TO 358
      3573 PEQIN(246,I)=PEQEL[2][(I-IOFFN(246)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=18.438 
      358 if(EN <= EIN(247)) GO TO 359 
      QIN(247,I)=0.077707/(EIN(247)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(247)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(247))
      if(QIN(247,I):
      < 0.0) QIN(247,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(247))
      if(EPOINT > 500.):
      GO TO 3583
      DO 3581 M=1,NRTANG 
      if(EPOINT <= ENROT(M):
      ) GO TO 3582
      3581 CONTINUE
      M=NRTANG
      3582 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(247,I)=1.0-EPSIL
      GO TO 359
      3583 PEQIN(247,I)=PEQEL[2][(I-IOFFN(247)])
      # EXCITATION    NEUTRAL DISSOCIATION   ELOSS=20.316 
      359 if(EN <= EIN(248)) GO TO 360 
      QIN(248,I)=0.013838/(EIN(248)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(248)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+E[3]+EIN(248))
      if(QIN(248,I):
      < 0.0) QIN(248,I)=0.0
      # CALCULATE DIPOLE ANGULAR DISTRIBUTION FACTOR FOR TRANSITION
      EPOINT=EN/abs(EIN(248))
      if(EPOINT > 500.):
      GO TO 3593
      DO 3591 M=1,NRTANG 
      if(EPOINT <= ENROT(M):
      ) GO TO 3592
      3591 CONTINUE
      M=NRTANG
      3592 A=(YEPSR(M)-YEPSR(M-1))/(ENROT(M)-ENROT(M-1))
      B=(ENROT(M-1)*YEPSR(M)-ENROT(M)*YEPSR(M-1))/(ENROT(M-1)-ENROT(M))
      EPSIL=A*EPOINT+B
      PEQIN(248,I)=1.0-EPSIL
      GO TO 360
      3593 PEQIN(248,I)=PEQEL[2][(I-IOFFN(248)])
      360 CONTINUE                                  
      #
      # LOAD BREMSSTRAHLUNG X-SECTION
      QIN(249,I)=0.0
      QIN(250,I)=0.0
      if(EN <= 1000.):
      GO TO 800
      DO 780 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 790
      780 CONTINUE
      J=NBREM
      790 A=(math.log(Z8T[J])-math.log(Z8T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z8T[J])*EBRM[J-1]-math.log(Z8T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN(249,I)=math.exp(A*EN+B)*1.e-24
      A=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN(250,I)=math.exp(A*EN+B)*2.e-24
      800 CONTINUE
      #----------------------------------------------------------------------
      # LOAD NULL COLLISIONS 
      #  OH PRODUCTION FROM DISSOCIATION HARB ET AL J.CHEM.PHYS. 115(1001)5507
      # SCALED ABOVE 200EV BY 1/ENERGY
      QNULL[1][I]=0.0
      if(EN <= XNUL1[1]:
      ) GO TO 805
      if(EN > XNUL1(NUL1):
      ) GO TO 803
      DO 801 J=2,NUL1
      if(EN <= XNUL1[J]:
      ) GO TO 802
      801 CONTINUE
      J=NUL1
      802 A=(YNUL1[J]-YNUL1[J-1])/(XNUL1[J]-XNUL1[J-1])
      B=(XNUL1[J-1]*YNUL1[J]-XNUL1[J]*YNUL1[J-1])/(XNUL1[J-1]-XNUL1[J])
      QNULL[1][I]=(A*EN+B)*1.e-16*SCLN[1]
      GO TO 805
      # SCALE BY 1/E ABOVE XNUL1(NUL1) EV
      803 QNULL[1][I]=YNUL1(NUL1)*(XNUL1(NUL1)/EN)*1.e-16*SCLN[1]
      #  LIGHT EMISSION FROM OH(A-X) MOHLMANN AND DEHEER CHEM.PHYS.19(1979)233 
      805 QNULL[2][I]=0.0
      if(EN <= XNUL2[1]:
      ) GO TO 810
      if(EN > XNUL2(NUL2):
      ) GO TO 808
      DO 806 J=2,NUL2
      if(EN <= XNUL2[J]:
      ) GO TO 807
      806 CONTINUE
      J=NUL2
      807 A=(YNUL2[J]-YNUL2[J-1])/(XNUL2[J]-XNUL2[J-1])
      B=(XNUL2[J-1]*YNUL2[J]-XNUL2[J]*YNUL2[J-1])/(XNUL2[J-1]-XNUL2[J])
      QNULL[2][I]=(A*EN+B)*1.e-16*SCLN[2]
      GO TO 810
      # SCALE BY 1/E ABOVE XNUL2(NUL2) EV
      808 QNULL[2][I]=YNUL2(NUL2)*(XNUL2(NUL2)/EN)*1.e-16*SCLN[2]
      #  LIGHT EMISSION FROM H(3-2)  MOHLMANN AND DEHEER CHEM.PHYS.19(1979)233 
      810 QNULL[3][I]=0.0
      if(EN <= XNUL3[1]:
      ) GO TO 815
      if(EN > XNUL3(NUL3):
      ) GO TO 813
      DO 811 J=2,NUL3
      if(EN <= XNUL3[J]:
      ) GO TO 812
      811 CONTINUE
      J=NUL3
      812 A=(YNUL3[J]-YNUL3[J-1])/(XNUL3[J]-XNUL3[J-1])
      B=(XNUL3[J-1]*YNUL3[J]-XNUL3[J]*YNUL3[J-1])/(XNUL3[J-1]-XNUL3[J])
      QNULL[3][I]=(A*EN+B)*1.e-16*SCLN[3]
      GO TO 815
      # SCALE BY 1/E ABOVE XNUL3(NUL3) EV
      813 QNULL[3][I]=YNUL3(NUL3)*(XNUL3(NUL3)/EN)*1.e-16*SCLN[3]
      #  LIGHT EMISSION FROM H(2-1)  MOHLMANN AND DEHEER CHEM.PHYS.19(1979)233 
      815 QNULL[4][I]=0.0
      if(EN <= XNUL4[1]:
      ) GO TO 820
      if(EN > XNUL4(NUL4):
      ) GO TO 818
      DO 816 J=2,NUL4
      if(EN <= XNUL4[J]:
      ) GO TO 817
      816 CONTINUE
      J=NUL4
      817 A=(YNUL4[J]-YNUL4[J-1])/(XNUL4[J]-XNUL4[J-1])
      B=(XNUL4[J-1]*YNUL4[J]-XNUL4[J]*YNUL4[J-1])/(XNUL4[J-1]-XNUL4[J])
      QNULL[4][I]=(A*EN+B)*1.e-16*SCLN[4]
      GO TO 820
      # SCALE BY 1/E ABOVE XNUL4(NUL4) EV
      818 QNULL[4][I]=YNUL4(NUL4)*(XNUL4(NUL4)/EN)*1.e-16*SCLN[4]
      #
      820 CONTINUE
      # CALC  X-SEC SUMS
      SUMROT=0.0
      DO 850 K=1,210
      SUMROT=SUMROT+QIN(K,I)
      850 CONTINUE
      SUMVIB=0.0
      DO 851 K=211,214 
      SUMVIB=SUMVIB+QIN(K,I)
      851 CONTINUE
      SUMINEL=0.0
      DO 852 K=215,250
      SUMINEL=SUMINEL+QIN(K,I)
      852 CONTINUE
      #
      SUMTRP=QIN(215,I)+QIN(220,I)+QIN(225,I)+QIN(230,I)
      SUMSNG=SUMINEL-SUMTRP
      #
      SUMATT=0.0
      DO 855 K=1,NATT
      SUMATT=SUMATT+QATT(K,I)
      855 CONTINUE
      SUMION=0.0
      DO 856 K=1,NION
      SUMION=SUMION+QION(K,I)
      856 CONTINUE
      SUMTOT=SUMION+SUMSNG+SUMTRP+SUMATT+SUMVIB+SUMROT
      #---------------------------------------------------------------------
      #  print out some x-secs
      #     WRITE(6,991) EN,SUMROT,SUMVIB,SUMATT,SUMTRP,SUMSNG,SUMION,SUMTOT
      # 991 print(' EN=','%.3f' % ,' ROT=','%.3f' %,' VIB=','%.3f' %,' SUMATT=','%.3f' %,
      #    /' SUMTRP=','%.3f' %,' SUMSNG=','%.3f' %,' SUMION=','%.3f' %,' SUMTOT=',
      #    /'%.3f' %)         
      #   
      #-------------------------------------------------------------
      # SET ELASTIC MT TO BE ISOTROPIC
      #     PEQEL[2][I]=0.0
      #----------------------------------------------------------------------
      #
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      DO 1000 K=1,NIN            
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 1001
      # endif
      1000 CONTINUE   
      1001 CONTINUE
      if(EFINAL > 1000.):
      NIN=250    
      #                                                                       
      return  
      # end  
def GAS15(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN) 
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30] 
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      DIMENSION XELA[153],YELA[153],YMOM(153),YEPS(153),XROT13[63],YROT13[63],XROT35[55],YROT35[55],XROT57[55],YROT57[55],XROT79[50],YROT79[50],XROT911[48],YROT911[48],XROT1113[46],YROT1113[46],XROT1315[45],YROT1315[45],XROT1517[44],YROT1517[44],XROT1719[43],YROT1719[43],XROT1921[41],YROT1921[41],XROT2123[40],YROT2123[40],XROT2325[39],YROT2325[39],XROT2527[38],YROT2527[38],XROT2729[37],YROT2729[37],XROT2931[36],YROT2931[36],XROT3133[34],YROT3133[34],XROT3335[33],YROT3335[33],XROT3537[32],YROT3537[32],XROT3739[32],YROT3739[32],XROT3941[31],YROT3941[31],XROT4143[31],YROT4143[31],XROT4345[30],YROT4345[30],XROT4547[30],YROT4547[30],XROT4749[29],YROT4749[29],XVIB[60],YVIB1[60],YVIB2[60],YVIB3[60],YVIB4[60],YVIB5[60],YVIB6[60],YVIB7[60],YVIB8[60],YVIB9[60],YVIB10[60],YVIB11[60],YVIB12[60],YVIB13[60],YVIB14[60],YVIB15[60],YVIB16[60],YVIB17[60],YVIB18[60],YVIB19[60],YVIB20[60],YVIB21[60],X3ATT[32],Y3ATT[32],XATT[31],YATT[31],XEXC1[40],YEXC1[40],XEXC2[31],YEXC2[31],XEXC3[16],YEXC3[16],    XEXC4[15],YEXC4[15],XEXC5[14],YEXC5[14],XEXC6[14],YEXC6[14],      XEXC7[14],YEXC7[14],XEXC8[15],YEXC8[15],XEXC9[14],YEXC9[14],XROT[48],YROT[48],XIONC(85),YIONC(85),XION1(85),YION1(85),XION2(70),YION2(70),XION3[50],YION3[50],XION4[47],YION4[47],XION5[44],YION5[44],XKSH(81),YKSH(81),IOFFN(150),IOFFION[8],PJ[50]
      DIMENSION Z8T[25],EBRM[25]                          
      CHARACTER*50 SCRPT(300),SCRPTN[10]                          
      CHARACTER*25 NAME                                                 
      #  ELASTIC  X-SECTIONS  ASSUMED ISOTROPIC BELOW 2.0EV
      XELA=[0.00,.001,.003,.005,.007,.010,.015,.020,.025,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.11,0.12,0.14,0.17,0.20,0.30,0.40,0.50,0.60,0.80,1.00,1.20,1.50,2.00,2.50,3.00,4.00,5.00,6.00,8.00,10.0,12.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MOMENTUM TRANSFER
      YMOM=[0.15,0.17,0.18,0.19,0.21,0.24,0.31,0.45,0.70,1.20,2.35,3.00,3.40,3.60,3.65,3.70,3.73,3.77,3.79,3.83,3.86,3.90,3.95,4.00,4.02,4.21,4.86,5.74,6.44,6.80,6.58,6.37,6.05,5.80,5.70,5.65,5.60,5.55,5.50,5.45,5.40,5.30,5.15,4.85,4.50,4.10,3.55,3.05,2.43,1.94,1.60,1.34,.991,.768,.616,.507,.426,.364,.275,.216,.175,.145,.122,.0847,.0625,.0481,.0383,.0261,.0190,.0145,.0114,.00929,.00770,.00556,.00422,.00332,.00269,.00222,.00149,.00107,8.10e-4,6.37e-4,4.26e-4,3.07e-4,2.32e-4,1.83e-4,1.48e-4,1.23e-4,8.88e-5,6.77e-5,5.35e-5,4.36e-5,3.63e-5,2.47e-5,1.81e-5,1.40e-5,1.12e-5,7.79e-6,5.81e-6,4.55e-6,3.69e-6,3.07e-6,2.61e-6,1.97e-6,1.56e-6,1.27e-6,1.06e-6,9.04e-7,6.46e-7,4.88e-7,3.84e-7,3.11e-7,2.18e-7,1.62e-7,1.26e-7,1.01e-7,8.26e-8,6.91e-8,5.06e-8,3.88e-8,3.07e-8,2.50e-8,2.07e-8,1.39e-8,1.00e-8,7.57e-9,5.93e-9,3.94e-9,2.81e-9,2.11e-9,1.64e-9,1.31e-9,1.08e-9,7.61e-10,5.66e-10,4.38e-10,3.48e-10,2.83e-10,1.83e-10,1.27e-10,9.39e-11,7.20e-11,4.62e-11,3.21e-11,2.36e-11,1.81e-11,1.43e-11,1.16e-11,8.04e-12,5.91e-12,4.52e-12,3.57e-12,2.90e-12]
      # ELASTIC 
      YELA=[0.15,0.17,0.18,0.19,0.21,0.24,0.31,0.45,0.70,1.20,2.35,3.00,3.40,3.60,3.65,3.70,3.73,3.77,3.79,3.83,3.86,3.90,3.95,4.00,4.02,4.21,4.86,5.74,6.44,6.80,6.58,6.37,6.21,6.58,7.03,7.48,7.96,8.82,9.31,9.34,9.11,9.36,9.15,8.46,7.66,6.85,5.96,5.20,4.50,3.92,3.56,3.27,2.84,2.53,2.29,2.09,1.93,1.80,1.59,1.42,1.29,1.18,1.09,.910,.784,.689,.614,.506,.430,.374,.331,.297,.269,.227,.197,.174,.155,.141,.114,.0961,.0832,.0735,.0598,.0506,.0440,.0391,.0352,.0322,.0275,.0242,.0217,.0198,.0183,.0155,.0137,.0124,.0114,.0100,.00913,.00850,.00803,.00767,.00739,.00698,.00670,.00649,.00634,.00622,.00601,.00588,.00580,.00574,.00567,.00562,.00560,.00558,.00556,.00555,.00554,.00553,.00552,.00552,.00552,.00551,.00551,.00551,.00551,.00551,.00551,.00551,.00551,22*.00550]
      YEPS=[30*1.0,1.0000,1.0000,.96137,.82331,.72073,.64268,.57229,.47655,.42962,.42099, .43201,.40075,.39681,.40896,.42569,.43895,.43546,.42459,.37079,.32162,.27516,.23726,.18398,.14816,.12316,.10538,.09155,.08026,.06441,.05351,.04563,.03969,.03507,.02705,.02196,.01844,.01587,.01240,.010154,.008595,.007441,.006561,.005865,.004834,.004110,.003572,.003159,.002830,.002244,.001857,.001582,.001378,.001092,.0009027,.0007678,.0006671,.0005892,5.269e-4,4.335e-4,3.669e-4,3.176e-4,2.790e-4,2.484e-4,1.933e-4,1.571e-4,1.313e-4,1.122e-4,8.584e-5,6.857e-5,5.647e-5,4.759e-5,4.079e-5,3.547e-5,2.768e-5,2.233e-5,1.847e-5,1.556e-5,1.331e-5,9.559e-6,7.186e-6,5.613e-6,4.510e-6,3.105e-6,2.270e-6,1.734e-6,1.369e-6,1.108e-6,9.156e-7,6.559e-7,4.931e-7,3.842e-7,3.079e-7,2.520e-7,1.648e-7,1.161e-7,8.6108e-8,6.6395e-8,4.2939e-8,2.9994e-8,2.2104e-8,1.6952e-8,1.3407e-8,1.0856e-8,7.519e-9,5.500e-9,4.188e-9,3.290e-9,2.648e-9,1.669e-9,1.142e-9,8.28e-10,6.26e-10,3.93e-10,2.68e-10,1.94e-10,1.47e-10,1.15e-10,9.1D-11,6.3D-11,4.5D-11,3.4D-11,2.7D-11,2.2D-11]
      XROT13=[.00178301,.001986,.002055,.002191,.002395,.002558,.002871,.003116,.003442,.003796,.004082,.004368,.004626,.004966,.005347,.005823,.006422,.007334,.008164,.009524,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      # NOTE ALL ROTATIONAL X-SECTIONS IN ARRAYS BELOW ARE  
#             SCALED BY 0.75 IN def
      YROT13=[1.e-5,.00476,.00505,.00536,.00545,.00550,.00550,.00545,.00524,.00505,.00485,.00462,.00481,.00550,.00677,.00944,.0129,.0191,.0235,.0308,.0392,.0462,.0532,.0616,.0728,.0826,.0924,.1022,.1148,.1260,.1400,.1540,.1680,.1904,.2184,.2464,.2856,.3304,.4200,.5180,.6160,.7140,.8960,1.064,1.232,1.358,1.498,1.646,1.826,1.957,2.055,2.204,2.248,2.299,2.299,2.220,2.094,1.982,1.851,1.728,1.610,1.534,1.263]
      XROT35=[.00320941,.003333,.003470,.004055,.004544,.005048,.005497,.005769,.006368,.007143,.008014,.009347,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT35=[1.e-5,.00196,.00415,.00411,.00407,.00411,.00454,.00540,.00767,.01146,.01658,.02407,.02940,.03556,.04200,.04900,.05600,.06300,.07000,.07700,.08540,.09380,.1022,.1120,.1232,.1372,.1568,.1848,.2128,.2324,.2940,.3640,.4396,.5236,.6440,.7700,.8820,.9940,1.064,1.170,1.299,1.394,1.462,1.568,1.602,1.635,1.635,1.579,1.490,1.411,1.316,1.229,1.145,1.092,.8988]
      XROT57=[.00463581,.004762,.004898,.005170,.005442,.005783,.006123,.006803,.007483,.008164,.008844,.009524,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT57=[1.e-5,.00280,.00286,.00308,.00330,.00356,.00420,.00588,.00812,.01092,.01344,.01680,.02296,.02884,.03416,.03920,.04536,.05180,.05880,.06580,.07280,.08120,.0882,.0952,.1036,.1232,.1400,.1596,.1932,.2100,.2839,.3500,.4144,.4844,.6048,.7196,.8316,.9184,1.011,1.112,1.235,1.322,1.389,1.490,1.520,1.554,1.554,1.501,1.414,1.338,1.252,1.168,1.089,1.036,.8540]
      XROT79=[.00606221,.006259,.006803,.007483,.008164,.008844,.009524,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT79=[1.e-5,.00280,.00350,.00490,.00658,.00840,.01064,.01596,.02156,.02632,.03080,.03696,.04340,.04900,.05600,.06160,.06860,.07560,.08260,.0896,.1050,.1260,.1512,.1764,.1988,.2688,.3321,.3940,.4578,.5743,.6821,.7899,.8705,.9601,1.055,1.170,1.255,1.319,1.413,1.442,1.474,1.474,1.423,1.343,1.271,1.186,1.107,1.032,.9836,.8095]
      XROT911=[.00748861,.007619,.008164,.008844,.009524,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT911=[1.e-5,.00280,.00336,.00420,.00546,.00910,.01316,.01764,.02100,.02632,.03136,.04077,.04200,.04760,.05600,.06160,.06720,.07560,.09240,.1148,.1344,.1568,.1820,.2436,.3136,.3780,.4379,.5496,.6524,.7557,.8330,.9190,1.010,1.120,1.201,1.261,1.352,1.379,1.410,1.410,1.362,1.285,1.216,1.135,1.060,.9878,.9411,.7748]
      XROT1113=[.00891501,.009456,.009524,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT1113=[1.e-5,.00280,.00308,.00616,.01036,.01372,.01736,.02156,.02604,.03080,.03724,.04200,.04760,.05320,.06020,.06720,.08120,.1036,.1232,.1456,.1680,.2296,.2884,.3461,.4012,.5034,.5978,.6922,.7630,.8585,.9248,1.026,1.100,1.155,1.238,1.263,1.291,1.291,1.247,1.177,1.114,1.040,.9705,.9044,.8621,.7095]
      XROT1315=[.01034141,.01061,.01088,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT1315=[1.e-5,.00280,.00364,.00700,.01036,.01344,.01708,.02100,.02576,.03024,.03500,.04060,.04620,.05096,.05712,.07420,.09240,.1120,.1316,.1512,.2100,.2660,.3192,.3699,.4642,.5513,.6384,.7036,.7762,.8532,.9458,1.014,1.065,1.142,1.165,1.191,1.191,1.151,1.085,1.027,.9590,.8952,.8341,.7949,.6544]
      XROT1517=[.01176781,.01197,.01225,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT1517=[1.e-5,.00280,.00350,.00560,.00840,.01148,.01512,.02044,.02464,.02968,.03416,.03780,.04340,.04900,.06300,.08120,.09880,.1176,.1372,.1904,.2436,.2962,.3433,.4308,.5115,.5923,.6529,.7202,.7916,.8778,.9411,.9881,1.060,1.081,1.105,1.105,1.068,1.007,.9531,.8898,.8305,.7739,.7378,.6070]
      XROT1719=[.01319421,.01333,.01361,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT1719=[1.e-5,.00280,.00336,.00518,.00770,.01022,.01400,.01764,.02128,.02548,.03080,.03556,.04200,.05460,.07000,.08680,.1064,.1274,.1736,.2226,.2762,.3202,.4018,.4771,.5525,.6090,.6717,.7383,.8187,.8777,.9216,.9881,1.008,1.031,1.031,.9957,.9392,.8890,.8299,.7747,.7220,.6881,.5663]
      XROT1921=[.01462061,.01497,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT1921=[1.e-5,.00280,.00476,.00678,.01036,.01358,.01680,.01988,.02492,.03080,.03640,.04760,.06300,.07980,.09800,.1190,.1652,.2128,.2588,.3000,.3765,.4470,.5176,.5706,.6294,.6918,.7671,.8224,.8635,.9259,.9447,.9659,.9659,.9329,.8800,.8329,.7776,.7259,.6765,.6447,.5306]
      XROT2123=[.01604701,.01633,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT2123=[1.e-5,.00280,.00448,.00700,.00980,.01288,.01624,.02016,.02464,.02940,.03920,.05320,.06720,.08960,.1106,.1554,.2017,.2435,.2822,.3541,.4206,.4869,.5368,.5921,.6507,.7216,.7736,.8123,.8711,.8887,.9086,.9086,.8775,.8280,.7834,.7316,.6829,.6364,.6065,.4992]
      XROT2325=[.01747341,.01769,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT2325=[1.e-5,.00280,.00504,.00784,.01064,.01456,.01904,.02380,.02884,.03836,.05209,.06580,.08792,.1084,.1523,.1977,.2388,.2768,.3472,.4124,.4774,.5264,.5807,.6381,.7076,.7585,.7966,.8540,.8714,.8910,.8910,.8607,.8117,.7683,.7174,.6695,.6241,.5947,.4894]
      XROT2527=[.01889981,.01905,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT2527=[1.e-5,.00280,.00504,.00868,.01288,.01568,.02072,.02576,.03752,.05096,.06468,.08624,.1064,.1495,.1939,.2342,.2715,.3408,.4046,.4684,.5163,.5696,.6261,.6941,.7442,.7815,.8378,.8548,.8742,.8742,.8442,.7963,.7538,.7036,.6569,.6121,.5835,.4802]
      XROT2729=[.02032621,.02041,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT2729=[1.e-5,.00280,.00490,.00980,.01344,.01904,.02296,.03360,.04900,.06300,.08459,.1044,.1467,.1903,.2299,.2664,.3343,.3970,.4598,.5068,.5589,.6143,.6812,.7302,.7669,.8224,.8389,.8576,.8576,.8285,.7815,.7398,.6905,.6446,.6009,.5726,.4712]
      XROT2931=[.02175261,.02177,.02313,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT2931=[1.e-5,.00280,.00378,.01008,.01456,.01904,.03136,.04704,.06104,.08305,.1025,.1440,.1868,.2257,.2615,.3282,.3898,.4514,.4976,.5488,.6031,.6686,.7168,.7529,.8072,.8235,.8420,.8420,.8134,.7672,.7260,.6779,.6328,.5897,.5620,.4626]
      XROT3133=[.02317901,.02449,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT3133=[1.e-5,.00280,.00784,.01232,.03080,.04620,.05995,.08156,.1007,.1414,.1835,.2216,.2568,.3223,.3828,.4432,.4886,.5390,.5922,.6566,.7039,.7392,.7927,.8086,.8268,.8268,.7988,.7535,.7132,.6658,.6213,.5790,.5519,.4542]
      XROT3335=[.02460541,.02585,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT3335=[1.e-5,.00280,.00518,.02800,.04480,.05656,.07700,.09887,.1389,.1802,.2177,.2523,.3167,.3760,.4355,.4799,.5258,.5818,.6451,.6916,.7263,.7787,.7944,.8123,.8123,.7846,.7400,.7006,.6541,.6104,.5690,.5421,.4463]
      XROT3537=[.02603181,.02721,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT3537=[1.e-5,.00280,.02576,.04200,.05488,.07566,.09717,.1365,.1771,.2139,.2479,.3111,.3696,.4278,.4715,.5167,.5718,.6339,.6796,.7137,.7652,.7806,.7983,.7983,.7708,.7272,.6882,.6427,.5998,.5592,.5328,.4385]
      XROT3739=[.02745821,.02857,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT3739=[1.e-5,.00280,.02532,.04127,.05396,.07437,.09551,.1342,.1741,.2103,.2437,.3058,.3632,.4206,.4634,.5079,.5620,.6230,.6681,.7014,.7521,.7675,.7846,.7846,.7577,.7148,.6765,.6317,.5897,.5494,.5236,.4309]
      XROT3941=[.02888461,.02993,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT3941=[1.e-5,.00280,.03780,.05306,.07311,.09391,.1320,.1712,.2067,.2396,.3007,.3570,.4136,.4556,.4995,.5524,.6126,.6569,.6896,.7395,.7546,.7714,.7714,.7451,.7028,.6653,.6210,.5796,.5404,.5149,.4236]
      XROT4143=[.03031101,.03129,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT4143=[1.e-5,.00280,.03500,.05219,.07190,.09237,.1298,.1683,.2033,.2357,.2957,.3511,.4068,.4480,.4914,.5435,.6026,.6460,.6782,.7272,.7420,.7588,.7588,.7328,.6913,.6544,.6110,.5701,.5314,.5065,.4166]
      XROT4345=[.03173741,.03265,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT4345=[1.e-5,.00280,.05040,.07073,.09086,.1277,.1656,.2000,.2318,.2909,.3455,.4001,.4407,.4836,.5345,.5928,.6353,.6672,.7154,.7300,.7465,.7465,.7210,.6801,.6437,.6009,.5608,.5228,.4981,.4099]
      XROT4547=[.03316381,.03402,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT4547=[1.e-5,.00280,.04760,.06961,.08940,.1256,.1630,.1968,.2281,.2862,.3399,.3937,.4337,.4757,.5261,.5832,.6252,.6566,.7039,.7182,.7344,.7344,.7095,.6692,.6334,.5914,.5519,.5144,.4903,.4035]
      XROT4749=[.03459021,.03538,.03810,.04082,.04762,.05442,.06123,.06803,.08164,.09524,.1088,.1225,.1361,.1537,.1796,.2027,.2340,.2721,.3129,.3578,.4177,.4830,.5810,.6626,.7837,.9279,1.029,1.105,1.361]
      YROT4749=[1.e-5,.00280,.04480,.08800,.1236,.1604,.1937,.2246,.2817,.3346,.3875,.4270,.4682,.5177,.5740,.6154,.6462,.6930,.7070,.7230,.7230,.6983,.6586,.6233,.5821,.5432,.5062,.4824,.3970]
      XVIB=[.193,0.20,0.21,0.23,0.32,0.33,0.35,0.44,0.45,0.47,0.56,0.57,0.59,0.68,0.69,0.71,0.79,0.80,0.82,0.90,           0.91,0.93,1.02,1.03,1.05,1.13,1.14,1.16,1.23,1.24,           1.26,1.34,1.35,1.37,1.44,1.45,1.47,1.54,1.55,1.57,           1.63,1.65,1.67,3.00,4.00,5.00,6.00,7.00,8.00,9.00,           9.50,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0]    
      #       
      YVIB1=[0.00,.050,.050,0.00,0.00,.800,0.00,0.00,1.00,0.00,0.00,1.35,0.00,0.00,1.32,0.00,0.00,1.02,0.00,0.00,           .611,0.00,0.00,.290,0.00,0.00,.115,0.00,0.00,.049,           0.00,0.00,.017,0.00,0.00,.0056,0.00,0.00,.0019,0.00,         0.00,.0006,0.00,.027,.033,.055,.115,.220,.321,.412,          .458,.458,.366,.266,.179,.119,.078,.046,.023,.011]
      YVIB2=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,     0.00,.142,0.00,0.00,.422,0.00,0.00,.544,0.00,0.00,                .473,0.00,0.00,.321,0.00,0.00,.204,0.00,0.00,.097,                0.00,0.00,.041,0.00,0.00,.018,0.00,0.00,.008,0.00,                0.00,.003,0.00,.0110,.0128,.0220,.0458,.0879,.128,.165,.183,.183,.147,.106,.071,.048,.032,.018,.0092,.0046]             
      YVIB3=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,     0.00,0.00,0.00,0.00,.0038,0.00,0.00,.0219,0.0,0.0,                .092,0.00,0.00,.122,0.00,0.00,.117,0.00,0.00,.097,                0.00,0.00,.056,0.00,0.00,.031,0.00,0.00,.0168,0.00,               0.00,.008,0.00,.0043,.0063,.0108,.0224,.0429,.0627,.0806,       .090,.090,.0716,.0519,.0349,.0233,.0153,.0090,.0047,.0022] 
      YVIB4=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,     0.00,0.00,0.00,0.00,0.00,0.00,0.00,.0015,0.00,0.0,                .0056,0.00,0.0,.0097,0.00,0.0,.0168,0.00,0.0,.0321,               0.00,0.00,.0341,0.0,0.00,.0290,0.00,0.0,.0219,0.00,               0.00,.0168,0.00,.00258,.00376,.00645,.0134,.0257,.0376,.0483,  .0537,.0537,.0429,.0311,.0210,.0139,.0092,.00537,.00269,.00134]  
      YVIB5=[40*0.0,0.00,0.00,0.00,.00172,.00250,.00429,.00895,.0172,.0250,.0323,.0358,.0358,.0287,.0208,.0139,.00931,.00608,.00358,.00179,.00090]
      YVIB6=[40*0.0,0.0,0.0,0.0,.00108,.00157,.00269,.00560,.0108,.0157,.0201,.0224,.0224,.0179,.0130,.00873,.00582,.00381,.00224,.00112,.00056]
      YVIB7=[40*0.0,0.0,0.0,0.0,.000738,.00108,.00184,.00385,.00738,.0108,.0138,.0154,.0154,.0123,.00891,.00599,.00400,.00261,.00154,.000768,.000385]
      YVIB8=[40*0.0,0.0,0.0,0.0,.000572,.000833,.00142,.00298,.00572,.00833,.0107,.0119,.0119,.00952,.00691,.00464,.00309,.00202,.00119,.000595,.000297]
      YVIB9=[40*0.0,0.0,0.0,0.0,.000459,.000670,.00115,.00239,.00459,.00670,.00858,.00956,.00956,.00765,.00555,.00373,.00248,.00163,.000956,.000478,.000239]
      YVIB10=[40*0.0,0.0,0.0,0.0,.000368,.000537,.000921,.00192,.00368,.00537,.00691,.00767,.00767,.00614,.00445,.00299,.00199,.00130,.000767,.000384,.000192]
      YVIB11=[40*0.0,0.0,0.0,0.0,.000209,.000304,.000521,.00109,.00209,.00304,.00391,.00434,.00434,.00348,.00252,.00170,.00113,.000739,.000434,.000218,.000109]
      YVIB12=[40*0.0,0.0,0.0,0.0,.000153,.000224,.000384,.000799,.00154,.00224,.00288,.00319,.00319,.00255,.00185,.00124,.000830,.000543,.000319,.000160,.0000799]
      YVIB13=[40*0.0,0.0,0.0,0.0,.000123,.000179,.000306,.000638,.00122,.00179,.00230,.00255,.00255,.00205,.00149,.000996,.000664,.000434,.000255,.000127,.0000639]
      YVIB14=[40*0.0,0.0,0.0,0.0,.000086,.000125,.000215,.000448,.000860,.00125,.00161,.00179,.00179,.00143,.00104,.000698,.000466,.000304,.000179,.000090,.000045]
      YVIB15=[40*0.0,.0,0.0,0.0,6.16e-5,8.97e-5,.000154,.000321,.000616,.000897,.00115,.00128,.00128,.00103,.000744,.000500,.000334,.000218,.000128,.000064,.0000321]
      YVIB16=[40*0.0,.0,0.0,0.0,5.51e-5,8.05e-5,.000138,.000287,.000551,.000805,.00104,.00115,.00115,.000920,.000666,.000449,.000299,.000195,.000115,.0000575,.0000288]
      YVIB17=[40*0.0,.0,.0,0.0,4.93e-5,7.19e-5,.000123,.000257,.000493,.000719,.000925,.00103,.00103,.000822,.000596,.000401,.000268,.000175,.000103,.0000514,.0000257]
      YVIB18=[40*0.0,.0,.0,0.0,4.34e-5,6.34e-5,.000109,.000227,.000434,.000634,.000815,.000906,.000906,.000724,.000525,.000353,.000235,.000154,.0000906,.0000453,.0000226]
      YVIB19=[40*0.0,.0,.0,0.0,3.66e-5,5.34e-5,9.16e-5,.000191,.000366,.000534,.000687,.000763,.000763,.000611,.000443,.000297,.000198,.000129,.0000763,.0000382,.0000191]
      YVIB20=[40*0.0,.0,.0,0.0,3.07e-5,4.49e-5,7.69e-5,.000160,.000307,.000449,.000577,.000641,.000641,.000513,.000371,.000250,.000167,.000109,.0000641,.0000321,.0000160]
      YVIB21=[40*0.0,0.0,0.0,0.0,.000116,.000170,.000292,.000607,.00117,.00170,.00219,.00243,.00243,.00194,.00141,.000948,.000632,.000413,.000243,.000121,.0000607]
      # USED RAPP NORMALISED TO LINDSAY AT MAXIMUM (110EV)  : ABOVE
      # MAXIMUM USED LINDSAY TO 1KEV : NORMALISED SCHRAM TO 16KEV
      # : MATRIX ELEMENTS FROM RIEKE AND BERKOWITZ ANALYSIS 
      # NB.ALL CROSS SECTIONS ADJUSTED TO GIVE COUNTING IONISATION. 
      XIONC=[12.071,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,   17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,                22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,                50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,108.,118.,138.,158.,178.,198.,223.,248.,273.,                298.,348.,398.,448.,498.,548.,598.,648.,698.,748.,  798.,848.,898.,948.,998.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.] 
      # COUNTING IONISATION   
      YIONC=[0.0,.0052,.0117,.024,.034,.047,.061,.073,.087,.105,    .124,.143,.164,.184,.205,.225,.247,.269,.290,.312,                .336,.435,.538,.641,.754,.873,.981,1.09,1.26,1.49,                1.69,1.84,1.97,2.07,2.16,2.23,2.28,2.34,2.37,2.40,2.42,2.45,2.45,2.42,2.40,2.34,2.28,2.19,2.12,2.01,1.94,1.80,1.68,1.56,1.46,1.38,1.30,1.24,1.19,1.12,1.06,1.03,.987,.950,.922,.805,.718,.645,.587,.540,                .457,.393,.347,.310,.284,.262,.240,.224,.196,.178,.162,.149,.127,.112,.101]    
      # IONISATION TO O2+   ASYMPTOTIC 64.75% OF COUNTING IONISATION
      XION1=[12.071,12.5,13.0,13.5,14.0,14.5,15.0,15.5,16.0,16.5,  17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,108.,118.,138.,158.,178.,198.,223.,248.,273.,                298.,348.,398.,448.,498.,548.,598.,648.,698.,748.,  798.,848.,898.,948.,998.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.] 
      YION1=[0.0,.0052,.0117,.024,.034,.047,.061,.073,.087,.105,    .124,.143,.164,.184,.205,.225,.247,.269,.288,.306,   .326,.406,.486,.563,.640,.723,.795,.872,.980,1.12,                1.25,1.32,1.39,1.43,1.47,1.50,1.51,1.53,1.53,1.53,1.54,1.54,1.53,1.50,1.48,1.53,1.39,1.34,1.31,1.24,1.20,1.13,1.05,.983,.923,.882,.827,.800,.761,.720,.686,.671,.643,.617,.597,.522,.465,.418,.380,.350,.296,.255,.225,.201,.184,.170,.155,.145,.127,.115,                .105,.0965,.0823,.0726,.0654]
      # SINGLE IONISATION TO O+ ASYMPTOTIC 29.93% OF COUNTING IONISATION
      XION2=[20.701,21.0,21.5,22.0,22.5,23.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,108.,118.,138.,158.,178.,198.,223.,248.,273.,298.,348.,398.,448.,498.,548.,598.,648.,698.,748.,798.,848.,898.,948.,998.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]
      YION2=[0.0,.00218,.00582,.0094,.0131,.0167,.0287,.0531,.0781,.114,.151,.186,.222,.281,.353,.428,.486,.541,.593,.633,.661,.692,.723,.741,.758,.767,.785,.786,.780,.770,.759,.736,.709,.680,.648,.620,.570,.530,.490,.459,.426,.398,.376,.361,.338,.321,.309,.292,.284,.276,.241,.215,.193,.176,.162,.137,.118,.104,.0928,.0850,.0784,.0718,.0670,.0587,.0533,.0485,.0446,.0380,.0335,.0302]
      # DOUBLE IONISATION TO O+ + O+ FROM  TIAN AND VIDAL 
      # ASYMPTOTIC EXTENSION  4.46% OF COUNTING IONISATION.
      XION3=[38.46,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]
      YION3=[0.0,.0099,.0207,.0409,.0615,.0793,.0966,.110,.129,.136,.132,.128,.121,.113,.106,.100,.0885,.0804,.0718,.0667,.0607,.0592,.0560,.0538,.0504,.0478,.0460,.0435,.0423,.0411,.0359,.0320,.0288,.0262,.0241,.0204,.0176,.0155,.0138,.0127,.0117,.0107,.00998,.00875,.00794,.00723,.00665,.00566,.00499,.00450]
      # DOUBLE IONISATION TO O++ + O   FROM TIAN AND VIDAL AND LINDSAY
      # ASYMTOTIC EXTENSION 0.61% OF COUNTING IONISATION
      XION4=[68.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]
      YION4=[0.0,.000561,.00176,.00453,.00568,.0106,.0128,.0141,.0152,.0149,.0144,.0140,.0129,.0122,.0113,.0103,.00932,.00837,.00805,.00762,.00732,.00685,.00650,.00626,.00592,.00575,.00559,.00488,.00435,.00392,.00356,.00328,.00277,.00239,.00211,.00188,.00173,.00159,.00146,.00136,.00119,.00108,.000983,.000904,.000770,.000679,.000612]     
      # TREBLE IONISATION TO  O++ + O+  FROM TIAN AND VIDAL
      # ASYMPTOTIC EXTENSION 0.25% OF COUNTING IONISATION
      XION5=[90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]
      YION5=[0.0,.000565,.00248,.00466,.00619,.00712,.00761,.00763,.00733,.00711,.00627,.00554,.00477,.00414,.00371,.00329,.00311,.00299,.00280,.00266,.00256,.00242,.00235,.00228,.00199,.00178,.00160,.00145,.00134,.00113,.000977,.000862,.000768,.000707,.000650,.000597,.000556,.000486,.000441,.000402,.000369,.000315,.000278,.000250]  
      # OXYGEN K-SHELL IONISATION X-SECTION (MULTIPLY BY 2 FOR MOLECULE)
      XKSH=[532.,541.,557.,574.,591.,609.,627.,646.,665.,685.,706.,727.,749.,793.,841.,891.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.00D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.00D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.25D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YKSH=[0.00,3.31e-5,8.86e-5,1.42e-4,1.95e-4,2.45e-4,2.94e-4,3.41e-4,3.87e-4,4.31e-4,4.73e-4,5.14e-4,5.53e-4,6.27e-4,6.95e-4,7.56e-4,8.13e-4,8.63e-4,9.29e-4,9.84e-4,1.03e-3,1.08e-3,1.10e-3,1.11e-3,1.11e-3,1.10e-3,1.08e-3,1.03e-3,9.24e-4,8.27e-4,6.81e-4,5.49e-4,4.18e-4,3.35e-4,2.90e-4,2.50e-4,2.04e-4,1.77e-4,1.53e-4,1.39e-4,1.26e-4,1.11e-4,8.62e-5,7.45e-5,6.36e-5,5.75e-5,5.48e-5,5.29e-5,5.20e-5,5.13e-5,5.08e-5,5.08e-5,5.12e-5,5.24e-5,5.47e-5,5.68e-5,5.84e-5,6.00e-5,6.13e-5,6.26e-5,6.44e-5,6.65e-5,6.81e-5,7.11e-5,7.50e-5,7.78e-5,7.97e-5,8.17e-5,8.31e-5,8.45e-5,8.65e-5,8.87e-5,9.04e-5,9.36e-5,9.75e-5,1.00e-4,1.02e-4,1.04e-4,1.06e-4,1.07e-4,1.09e-4]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24 CM**2
      Z8T=[477.,294.,145.,81.6,45.8,21.2,12.2,7.69,5.22,4.76,4.84,4.99,5.10,5.20,5.27,5.38,5.46,5.58,5.65,5.72,5.77,5.80,5.81,5.83,5.84]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #  THREE BODY ATTACHMENT 
      #  TABLE IN UNITS OF 10**-16 FOR P=760 TORR AND T=20 CELSIUS               
      X3ATT=[0.058,.065,.073,.083,.089,.095,.103,.109,0.20,0.21,0.23,0.32,0.33,0.35,0.44,0.45,0.47,0.56,0.57,0.59,0.68,0.69,0.71,0.79,0.80,0.82,0.90,0.91,0.93,1.02,1.03,1.05]
      Y3ATT=[.000,.0704,.1394,.4477,.1042,.2091,.4477,.000,.000,.0934,.000,.000,.0602,.000,.000,.0380,.000,.000,.0288,.000,.000,.0210,.000,.000,.0184,.000,.000,.0144,.000,.000,.0110,.000]    
      #  DISSOCIATIVE ATTACHMENT    RAPP AND BRIGLIA 
      #    SCALED BY *0.72 AND ENERGY OFFSET BY -0.3EV
      XATT=[3.90,4.10,4.30,4.50,4.70,4.90,5.10,5.30,5.50,5.70,      5.90,6.00,6.10,6.20,6.30,6.40,6.50,6.70,6.90,7.10,                7.30,7.50,7.70,7.90,8.10,8.30,8.50,8.70,9.10,9.70,                11.7]                                                
      YATT=[0.00,.000187,.000504,.000950,.00158,.00259,.00386,.00538,.00690,.00821,                                            .00943,.00979,.01008,.01015,.01008,.00986,.00965,.00864,.00763,.00646,     .00531,.00411,.00323,.00240,.00171,.00120,.000886,.000634,.000382,.000202,.000072]                                  
      #  EXCITATION TO VIBRATIONALLY SUMMED A1 DELTA G   ALLAN 1995
      # SCALED BY 1/E**2 ABOVE 40 EV
      XEXC1=[.977,0.982,1.20,1.50,2.00,2.50,3.00,3.50,4.00,4.50,5.00,5.50,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,16.0,17.0,18.0,20.0,22.0,25.0,28.0,31.0,35.0,40.0]
      YEXC1=[0.00,.00102,.00407,.00712,.0122,.0168,.0265,.0397,.0539,.0661,.0783,.0906,.0977,.0997,.0987,.0967,.0936,.0906,.0865,.0834,.0794,.0763,.0743,.0722,.0692,.0682,.0651,.0621,.0605,.0539,.0488,.0448,.0407,.0346,.0305,.0249,.0214,.0188,.0153,.0122]
      #  EXCITATION TO VIBRATIONALLY SUMMED  B1 SIGMA G+  ALLAN 1995  
      # SCALED BY 1/E**2 ABOVE 17 EV     
      XEXC2=[1.627,1.640,2.00,2.50,3.00,3.50,4.00,4.50,5.00,5.50,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.0,10.5,11.0,12.0,13.0,14.0,15.0,17.0,20.0,25.0,30.0,35.0,40.0]
      YEXC2=[0.0,.00102,.00214,.00407,.00651,.00916,.0116,.0153,.0198,.0234,.0254,.0244,.0224,.0214,.0204,.0193,.0188,.0183,.0178,.0173,.0168,.0163,.0153,.0148,.0142,.0132,.0112,.00906,.00733,.00631,.00519]
      # EXCITATION SUM OF C1SIGMA A#3DELTA AND A3SIGMA  HERZBERG CONTINUUM
      # SPLIT INTO THREE ENERGY LOSSES AT 5.5 6.0 AND 6.5 EV
      # PART1
      XEXC3=[5.50,6.00,6.50,7.00,7.50,8.00,9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,30.0,45.0]
      YEXC3=[0.00,.0224,.0224,.0244,.0285,.0305,.0356,.0366,.0366,.0356,.0326,.0305,.0295,.0265,.0163,.0116]
      # PART 2
      XEXC4=[6.00,6.50,7.00,7.50,8.00,9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,30.0,45.0]
      YEXC4=[0.00,.0448,.0549,.0560,.0611,.0712,.0733,.0733,.0733,.0672,.0631,.0590,.0539,.0315,.0234]
      # PART 3
      XEXC5=[6.50,7.00,7.50,8.00,9.00,10.0,11.0,12.0,14.0,16.0,18.0,20.0,30.0,45.0]
      YEXC5=[0.00,.0183,.0254,.0305,.0356,.0366,.0366,.0356,.0326,.0305,.0295,.0265,.0163,.0116]  
      # SUM OF TRIPLET STATES AT 8.20 EV AND RESONANT PART OF S-R CONTINUUM
      XEXC6=[8.20,10.0,11.0,12.0,13.0,15.0,17.0,20.0,23.0,27.0,30.0,40.0,50.0,80.0]
      YEXC6=[0.00,0.21,0.36,0.46,0.50,0.52,0.52,0.46,0.39,0.32,0.29,0.24,.205,.135]
      # RESONANT PART OF LONG BAND
      XEXC7=[9.972,11.0,12.0,14.0,16.0,18.0,20.0,24.0,28.0,32.0,36.0,40.0,60.0,80.0]
      YEXC7=[0.00,.022,.038,.050,.053,.055,.056,.051,.042,.035,.030,.026,.017,.013]
      # TRIPLET STATE SUM BELOW IONISATION
      XEXC8=[10.6,12.0,13.0,14.0,16.0,18.0,20.0,24.0,28.0,32.0,36.0,40.0,50.0,60.0,80.0]         
      YEXC8=[0.0,.0878,.130,.145,.159,.169,.173,.156,.135,.111, .097,.087,.067,.055,.040]       
      # TRIPLET STATE SUM ABOVE IONISATION
      XEXC9=[13.1,14.0,15.0,16.0,18.0,20.0,24.0,28.0,32.0,36.0,40.0,50.0,60.0,80.0]       
      YEXC9=[0.0,.0658,.122,.142,.157,.169,.174,.163,.146,.125,.111,.087,.073,.054]          
      # ROTATIONAL RESONANCE FROM VIBRATIONS (PHELPS)                      
      XROT=[.020,.021,.025,0.07,0.08,0.10,0.20,0.21,0.22,0.32,0.33,0.35,0.44,0.45,0.47,0.56,0.57,0.59,0.68,0.69,0.71,0.79,0.80,0.82,0.90,0.91,0.93,1.02,1.03,1.05,1.13,1.14,1.16,1.23,1.24,1.26,1.34,1.35,1.37,1.44,1.45,1.47,1.54,1.55,1.57,1.64,1.65,1.67]                         
      YROT=[0.00,0.00,0.00,0.00,.0054,.00,0.00,.0216,.00,.000,.0384,.00,0.00,.054,0.00,0.00,.067,0.00,0.00,0.08,0.00,0.00,.094,0.00,0.00,.084,0.00,0.00,.072,0.00,0.00,.047,0.00,0.00,.040,0.00,0.00,.036,0.00,0.00,.024,0.00,0.00,.012,0.00,0.00,.0048,0.00]
      # ----------------------------------------------------------------------
      # 2005:
      #--------
      #  X-SECTIONS DERIVED FROM LAWTON AND PHELPS : J.CHEM.PHYS. 69(1978)1055
      #  VIBRATIONAL X-SECTION ADJUSTED TO FIT ARGON MIXTURE OF:
      #  JEON AND NAKAMURA  J.APPL.PHYS D 31(1998) 2145-2150
      #  ELASTIC X-SECTION DERIVED FROM FIT TO PURE OXYGEN OF:
      #  JEON AND NAKAMURA  (AS ABOVE)  AT HIGH FIELD ,
      #  AND THE AT LOW FIELD OF :
      #  CROMPTON AND ELFORD AUST. J. PHYS. 26(1973)771-782
      #  REID AND CROMPTON   AUST. J. PHYS. 33(1980)215-216  
#  N.B THE 3-BODY ATTACHMENT X-SECTION IS INCLUDED IN THE def.           
      #  ------------------------------------------------------------------
      # 2015:
      #-------
      #  UPDATED FIT TO ABOVE NOW ALSO  INCLUDES TOWNS# end UP TO 
      #  2000TD FROM :
      #  YOSHIDA ET AL  J.PHYS.D.29(1996)2124
      #
      #  ALSO USED OSCILLATOR STRENGTH FOR DIPOLE STATES FROM BRION BASE
      #  AND IONISATION EFFICIENCY FROM :
      #  HOLLAND ET AL  CHEM. PHYS 173(1993)315
      #
      #  IN ORDER TO EXTRACT NEUTRAL DISSOCIATION X-SECTION FOR DIPOLE STATES.
      #  THE 3-BODY X-SECTION SHAPE IS SIMILAR TO THAT USED IN 2005 FROM:
      #  SPENCE AND SHULTZ  PHYS REV A5(1972)724 
      #
      #  THE FIT TO THE TOWNS# end REQUIRED THE INTRODUCTION OF TWO EFFECTIVE
      #  NON DIPOLE STATES ABOVE AND BELOW THE IONISATION ENERGY THAT CONTAIN
      #  THE SUM OF ALL NON DIPOLE STATES IN THESE ENERGY REGIONS.
      #
      # THE IONISATION HAS BEEN SPLIT INTO DISSOCIATIVE AND NON DISSOCIATIVE
      # IONISATION CHANNELS. THE TOTAL IONISATION X-SECTION SUM IS MADE 
      # CONSISTENT WITH :
      # STRAUB ET AL : WEB SITE AND ALSO PHYS REV A54(1996)2146
      # 
      # THE TOTAL X-SECTION SUM IS WITHIN THE 1 TO 2% EXPERIMENTAL ENERGY
      # MEASUREMENT ERRORS
      #
      # GENERALLY THE CALCULATED DRIFT VELOCITY AND DIFFUSION IS WITHIN
      # 1 TO 2% OF THE EXPERIMENTAL VALUES IN PURE GAS AND ARGON MIXTURES.
      # THE TOWNS# end IS WITHIN 5% OF THE MEASUREMENTS OF YOSHIDA UP TO 2000TD
      #
      # THE X-SECTION BASE HAS BEEN EXT# endED TO 1 GEV. 
      # ----------------------------------------------------------------------
      # 2016:
      #------
      # REANALYSIS USING ROTATIONAL X-SECTION OF GELTMAN AND TAKAYANGI
      #  NOTE : 
      #     SCALED ESTIMATED X-SECTION OF GELTMAN AND TAKAYANGI
#     IN THE  def (ROTATIONAL IN ARRAYS NEED SCALED
#         BY 0.75 TO GIVE THE VALUES USED IN def)     
      # ----------------------------------------------------------------------
      #
      #      NANISO=0  
      if(NANISO == 0):
      :
      NAME='OXYGEN  2016  ISOTROPIC  '
      else: 
      NAME='OXYGEN  2016 ANISOTROPIC ' 
      # endif
      #----------------------------------------------------------------------
      # BORN BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      # AVERAGE OF CORRECTED RIEKE AND (HOLLAND +BERKOWITZ) 
      AM2=4.00
      C=43.4
      # AVERAGE AUGER EMISSION FROM KSHELL
      AUGK=2.0
      # SCALE ROTATION X-SECTIONS BY ROTSCALE
      ROTSCALE=0.75
      # CALC FRACTIONAL POPULATION DENSITY OF ROTATIONAL STATES
      B0=1.783e-4
      # ROTATIONAL QUADRUPOLE MOMENT
      QBQA=0.90
      QBK=1.67552*(QBQA*A0)**2
      DO 103 K=2,48,2
      AK=float[K]
      103 PJ[K]=0.0
      DO 104 K=1,49,2
      AK=float[K]
      104 PJ[K]=3.0*(2.0*AK+1.0)*math.exp(-AK*(AK+1.0)*B0/AKT)
      ASUM=0.0
      DO 105 K=1,49
      105 ASUM=ASUM+PJ[K]
      DO 106 K=1,49
      106 PJ[K]=PJ[K]/ASUM
      # CALC ROTATIONAL TRANSITION ENERGIES
      EIN[1]=-10.0*B0
      EIN[25]=-EIN[1]
      DO 107 K=2,24
      J=K-1
      AJ=float[J]
      EIN(K+24)=EIN[25]+AJ*8.0*B0
      107 EIN[K]=-EIN(K+24)
      #  
      NION=8
      NATT=1
      NIN=148
      NNULL=0  
      IONMODEL=0
      #
      NASIZE=20000
      NBREM=25
      # 
      DO 11 J=1,NIN
      IZBR[J]=0
      11 CONTINUE
      IZBR(NIN+1)=8
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=1,NIN
      2 KIN[J]=NANISO
      #                                                          
      NROT=48
      NROT13=63
      NROT35=55
      NROT57=55
      NROT79=50
      NROT911=48
      NROT1113=46
      NROT1315=45
      NROT1517=44
      NROT1719=43
      NROT1921=41
      NROT2123=40
      NROT2325=39
      NROT2527=38
      NROT2729=37
      NROT2931=36
      NROT3133=34
      NROT3335=33
      NROT3537=32
      NROT3739=32
      NROT3941=31
      NROT4143=31
      NROT4345=30
      NROT4547=30
      NROT4749=29
      NELA=153                                          
      NVIB=60 
      NATT1=31   
      N3ATT=32                                                      
      NEXC1=40                                                          
      NEXC2=31                                                          
      NEXC3=16                                                          
      NEXC4=15                                                          
      NEXC5=14          
      NEXC6=14
      NEXC7=14  
      NEXC8=15
      NEXC9=14                          
      NIONC=85
      NION1=85
      NION2=70
      NION3=50
      NION4=47
      NION5=44  
      NKSH=81
      #                                                        
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(31.9988*AMU)                                      
      E[3]=12.071                                                       
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      #
      EION[1]=12.071
      EION[2]=16.104
      EION[3]=18.171
      EION[4]=20.701
      EION[5]=38.46
      EION[6]=68.0
      EION[7]=90.0
      EION[8]=532.0
      #
      EIN[49]=-0.193                                                  
      EIN[50]=0.193                                                     
      EIN[51]=0.385                                                     
      EIN[52]=0.568                                                    
      EIN[53]=0.749 
      EIN[54]=0.929                                                     
      EIN[55]=0.977
      EIN[56]=1.108
      EIN[57]=1.282      
      EIN[58]=1.458                                            
      EIN[59]=1.627 
      EIN[60]=1.629
      EIN[61]=1.798
      EIN[62]=1.965
      EIN[63]=2.127
      EIN[64]=2.283
      EIN(65)=2.430
      EIN(66)=2.585
      EIN(67)=2.739
      EIN(68)=2.883
      EIN(69)=3.023
      EIN(70)=3.168
      EIN(71)=3.316  
      EIN(72)=3.46                                                   
      EIN(73)=5.50
      EIN(74)=6.00
      EIN(75)=6.50
      EIN(76)=6.98               
      EIN(77)=7.08
      EIN(78)=7.25
      EIN(79)=7.35
      EIN(80)=7.45
      EIN(81)=7.55
      EIN(82)=7.65
      EIN(83)=7.75
      EIN(84)=7.85
      EIN(85)=7.95
      EIN(86)=8.05
      EIN(87)=8.15
      EIN(88)=8.20
      EIN(89)=8.25
      EIN(90)=8.35
      EIN(91)=8.45
      EIN(92)=8.55
      EIN(93)=8.65
      EIN(94)=8.75
      EIN(95)=8.85
      EIN(96)=8.95
      EIN(97)=9.05
      EIN(98)=9.15
      EIN(99)=9.25
      EIN(100)=9.35
      EIN(101)=9.45
      EIN(102)=9.55
      EIN(103)=9.675  
      EIN(104)=9.972
      EIN(105)=10.288
      EIN(106)=10.570
      EIN(107)=10.60
      EIN(108)=10.665
      EIN(109)=10.760
      EIN(110)=10.915
      EIN(111)=11.05
      EIN(112)=11.25
      EIN(113)=11.46
      EIN(114)=11.56
      EIN(115)=11.65
      EIN(116)=11.83
      EIN(117)=11.98
      EIN(118)=12.2
      EIN(119)=12.4
      EIN(120)=12.6
      EIN(121)=12.8
      EIN(122)=13.0
      EIN(123)=13.1
      EIN(124)=13.2
      EIN(125)=13.4
      EIN(126)=13.6
      EIN(127)=13.8
      EIN(128)=14.0
      EIN(129)=14.2
      EIN(130)=14.4
      EIN(131)=14.6
      EIN(132)=14.8
      EIN(133)=15.0
      EIN(134)=15.2
      EIN(135)=15.4
      EIN(136)=15.6
      EIN(137)=15.8
      EIN(138)=16.0
      EIN(139)=16.2
      EIN(140)=16.4
      EIN(141)=16.6
      EIN(142)=16.8
      EIN(143)=17.0
      EIN(144)=17.2
      EIN(145)=17.4
      EIN(146)=17.6
      EIN(147)=17.8
      EIN(148)=18.0
      #
      DO 5 J=1,NION
      EOBY[J]=12.9
      5 CONTINUE
      #
      DO 7 JK=1,NION
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
      7 CONTINUE
      # DOUBLE CHARGED STATES
      NC0[5]=1
      EC0[5]=6.0
      NC0[6]=1
      EC0[6]=6.0
      # TRIPLE CHARGED STATES
      NC0[7]=2
      EC0[7]=6.0
      # FLUORESCENCE DATA
      LEGAS[8]=1
      ISHELL[8]=1
      NC0[8]=3
      EC0[8]=485.
      WKLM[8]=0.0069
      EFL[8]=518.
      NG1[8]=1
      EG1[8]=480.
      NG2[8]=2
      EG2[8]=5.0
      #
      DO 9 J=1,NION
      DO 8 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 9
      # endif
      8 CONTINUE
      9 CONTINUE
      #
      DO 19 NL=1,NIN
      DO 18 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 19
      # endif
      18 CONTINUE
      19 CONTINUE
      #
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # SET PENNING TRANSFER FRACTION TO ZERO FOR LOW ENERGY LEVELS
      DO 21 K=1,76
      DO 21 L=1,3
      21 CONTINUE
      #---------------------------------------
      # PENNING TRANSFER FRACTION FOR LEVELS ABOVE 6.0EV
      DO 22 K=76,NIN
      PENFRA[1][K]=0.0
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2][K]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      PENFRA[3][K]=1.0
      if(IPEN == 0):
      GO TO 22
      WRITE(6,999) NAME,EIN[K],PENFRA[1][K],PENFRA[2][K],PENFRA[3][K]
      999 print(' GAS = ',A25,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY = ','%.3f' % ,' ABS.LENGTH = ',F7.2,' DECAY TIME = ',F7.1,/)
      22 CONTINUE
      #**********************************************************************
      #
      SCRPT[1]='                                                  '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC  ISOTROPIC      OXYGEN                   '
      else:
      SCRPT[2]=' ELASTIC ANISOTROPIC     OXYGEN                   '
      # endif
      SCRPT[3]=' IONISATION  O2+ X2PI              ELOSS= 12.072  '
      SCRPT[4]=' IONISATION  O2+ A4PI              ELOSS= 16.104  '
      SCRPT[5]=' IONISATION  O2+ B4SIGMA           ELOSS= 18.171  '
      SCRPT[6]=' DISSOC ION  O+  + O               ELOSS= 20.701  '
      SCRPT[7]=' DISSOC ION  O+  + O+              ELOSS= 38.46   '
      SCRPT[8]=' DISSOC ION  O++ + O               ELOSS= 68.0    '
      SCRPT[9]=' DISSOC ION  O++ + O+              ELOSS= 90.0    '
      SCRPT[10]=' IONISATION K-SHELL                ELOSS=532.0    '
      SCRPT[11]=' ATTACHMENT 2+3 BODY                              '
      SCRPT[12]='                                                  '
      SCRPT[13]='                                                  '
      SCRPT[14]=' ROTATION 3-1                    ELOSS= -0.0017830'
      SCRPT[15]=' ROTATION 5-3                    ELOSS= -0.0032094'
      SCRPT[16]=' ROTATION 7-5                    ELOSS= -0.0046358'
      SCRPT[17]=' ROTATION 9-7                    ELOSS= -0.0060622'
      SCRPT[18]=' ROTATION 11-9                   ELOSS= -0.0074886'
      SCRPT[19]=' ROTATION 13-11                  ELOSS= -0.0089150'
      SCRPT[20]=' ROTATION 15-13                  ELOSS= -0.0103414'
      SCRPT[21]=' ROTATION 17-15                  ELOSS= -0.0117678'
      SCRPT[22]=' ROTATION 19-17                  ELOSS= -0.0131942'
      SCRPT[23]=' ROTATION 21-19                  ELOSS= -0.0146206'
      SCRPT[24]=' ROTATION 23-21                  ELOSS= -0.0160470'
      SCRPT[25]=' ROTATION 25-23                  ELOSS= -0.0174734'
      SCRPT[26]=' ROTATION 27-25                  ELOSS= -0.0188998'
      SCRPT[27]=' ROTATION 29-27                  ELOSS= -0.0203262'
      SCRPT[28]=' ROTATION 31-29                  ELOSS= -0.0217526'
      SCRPT[29]=' ROTATION 33-31                  ELOSS= -0.0231790'
      SCRPT[30]=' ROTATION 35-33                  ELOSS= -0.0246054'
      SCRPT[31]=' ROTATION 37-35                  ELOSS= -0.0260318'
      SCRPT[32]=' ROTATION 39-37                  ELOSS= -0.0274582'
      SCRPT[33]=' ROTATION 41-39                  ELOSS= -0.0288846'
      SCRPT[34]=' ROTATION 43-41                  ELOSS= -0.0303110'
      SCRPT[35]=' ROTATION 45-43                  ELOSS= -0.0317374'
      SCRPT[36]=' ROTATION 47-45                  ELOSS= -0.0331638'
      SCRPT[37]=' ROTATION 49-47                  ELOSS= -0.0345902'
      SCRPT[38]=' ROTATION 1-3                    ELOSS=  0.0017830'
      SCRPT[39]=' ROTATION 3-5                    ELOSS=  0.0032094'
      SCRPT[40]=' ROTATION 5-7                    ELOSS=  0.0046358'
      SCRPT[41]=' ROTATION 7-9                    ELOSS=  0.0060622'
      SCRPT[42]=' ROTATION 9-11                   ELOSS=  0.0074886'
      SCRPT[43]=' ROTATION 11-13                  ELOSS=  0.0089150'
      SCRPT[44]=' ROTATION 13-15                  ELOSS=  0.0103414'
      SCRPT[45]=' ROTATION 15-17                  ELOSS=  0.0117678'
      SCRPT[46]=' ROTATION 17-19                  ELOSS=  0.0131942'
      SCRPT[47]=' ROTATION 19-21                  ELOSS=  0.0146206'
      SCRPT[48]=' ROTATION 21-23                  ELOSS=  0.0160470'
      SCRPT[49]=' ROTATION 23-25                  ELOSS=  0.0174734'
      SCRPT[50]=' ROTATION 25-27                  ELOSS=  0.0188998'
      SCRPT[51]=' ROTATION 27-29                  ELOSS=  0.0203262'
      SCRPT[52]=' ROTATION 29-31                  ELOSS=  0.0217526'
      SCRPT[53]=' ROTATION 31-33                  ELOSS=  0.0231790'
      SCRPT[54]=' ROTATION 33-35                  ELOSS=  0.0246054'
      SCRPT[55]=' ROTATION 35-37                  ELOSS=  0.0260318'
      SCRPT[56]=' ROTATION 37-39                  ELOSS=  0.0274582'
      SCRPT[57]=' ROTATION 39-41                  ELOSS=  0.0288846'
      SCRPT[58]=' ROTATION 41-43                  ELOSS=  0.0303110'
      SCRPT[59]=' ROTATION 43-45                  ELOSS=  0.0317374'
      SCRPT[60]=' ROTATION 45-47                  ELOSS=  0.0331638'
      SCRPT[61]=' ROTATION 47-49                  ELOSS=  0.0345902'
      SCRPT[62]=' VIB V1                            ELOSS= -0.193  '
      SCRPT[63]=' VIB V1                            ELOSS=  0.193  '
      SCRPT[64]=' VIB 2V1                           ELOSS=  0.385  '
      SCRPT(65)=' VIB 3V1                           ELOSS=  0.568  '
      SCRPT(66)=' VIB 4V1                           ELOSS=  0.749  '
      SCRPT(67)=' VIB 5V1                           ELOSS=  0.929  '
      SCRPT(68)=' A1(DEL)G VIB SUMMED               ELOSS=  0.977  '
      SCRPT(69)=' VIB 6V1                           ELOSS=  1.108  '
      SCRPT(70)=' VIB 7V1                           ELOSS=  1.282  '
      SCRPT(71)=' VIB 8V1                           ELOSS=  1.458  '
      SCRPT(72)=' B1(SIG)G VIB SUMMED               ELOSS=  1.627  '
      SCRPT(73)=' VIB 9V1                           ELOSS=  1.629  '
      SCRPT(74)=' VIB 10V1                          ELOSS=  1.798  '
      SCRPT(75)=' VIB 11V1                          ELOSS=  1.965  '
      SCRPT(76)=' VIB 12V1                          ELOSS=  2.127  '
      SCRPT(77)=' VIB 13V1                          ELOSS=  2.283  '
      SCRPT(78)=' VIB 14V1                          ELOSS=  2.430  '
      SCRPT(79)=' VIB 15V1                          ELOSS=  2.585  '
      SCRPT(80)=' VIB 16V1                          ELOSS=  2.739  '
      SCRPT(81)=' VIB 17V1                          ELOSS=  2.883  '
      SCRPT(82)=' VIB 18V1                          ELOSS=  3.023  '
      SCRPT(83)=' VIB 19V1                          ELOSS=  3.168  '
      SCRPT(84)=' VIB 20V1                          ELOSS=  3.316  '
      SCRPT(85)=' VIB SUM 21V1-30V1                 ELOSS=  3.46   '
      SCRPT(86)=' C1SIG + A#3DEL + A3SIG            ELOSS=  5.50   '
      SCRPT(87)=' C1SIG + A#3DEL + A3SIG            ELOSS=  6.00   '
      SCRPT(88)=' C1SIG + A#3DEL + A3SIG            ELOSS=  6.50   '
      SCRPT(89)=' B3SIG SUMMED V=7-20 F=.000262     EL0SS=  6.98   '
      SCRPT(90)=' DISSOCIATION  S-R  F=0.000408     ELOSS=  7.08   '
      SCRPT(91)=' DISSOCIATION  S-R  F=0.000623     ELOSS=  7.25   '
      SCRPT(92)=' DISSOCIATION  S-R  F=0.001016     ELOSS=  7.35   '
      SCRPT(93)=' DISSOCIATION  S-R  F=0.001562     ELOSS=  7.45   '
      SCRPT(94)=' DISSOCIATION  S-R  F=0.002312     ELOSS=  7.55   '
      SCRPT(95)=' DISSOCIATION  S-R  F=0.003234     ELOSS=  7.65   '
      SCRPT(96)=' DISSOCIATION  S-R  F=0.004362     ELOSS=  7.75   '
      SCRPT(97)=' DISSOCIATION  S-R  F=0.005573     ELOSS=  7.85   '
      SCRPT(98)=' DISSOCIATION  S-R  F=0.006930     ELOSS=  7.95   '
      SCRPT(99)=' DISSOCIATION  S-R  F=0.008342     ELOSS=  8.05   '
      SCRPT(100)=' DISSOCIATION  S-R  F=0.009692     ELOSS=  8.15   '
      SCRPT(101)=' DISSOCIATION  S-R NON-DIPOLE      ELOSS=  8.20   '
      SCRPT(102)=' DISSOCIATION  S-R  F=0.010816     ELOSS=  8.25   '
      SCRPT(103)=' DISSOCIATION  S-R  F=0.011839     ELOSS=  8.35   '
      SCRPT(104)=' DISSOCIATION  S-R  F=0.012580     ELOSS=  8.45   '
      SCRPT(105)=' DISSOCIATION  S-R  F=0.013160     ELOSS=  8.55   '
      SCRPT(106)=' DISSOCIATION  S-R  F=0.013432     ELOSS=  8.65   '
      SCRPT(107)=' DISSOCIATION  S-R  F=0.013571     ELOSS=  8.75   '
      SCRPT(108)=' DISSOCIATION  S-R  F=0.013425     ELOSS=  8.85   '
      SCRPT(109)=' DISSOCIATION  S-R  F=0.012948     ELOSS=  8.95   '
      SCRPT(110)=' DISSOCIATION  S-R  F=0.010892     ELOSS=  9.05   '
      SCRPT(111)=' DISSOCIATION  S-R  F=0.006688     ELOSS=  9.15   '
      SCRPT(112)=' DISSOCIATION  S-R  F=0.002784     ELOSS=  9.25   '
      SCRPT(113)=' DISSOCIATION  S-R  F=0.001767     ELOSS=  9.35   '
      SCRPT(114)=' DISSOCIATION  S-R  F=0.000633     ELOSS=  9.45   '
      SCRPT(115)=' DISSOCIATION  S-R  F=0.000438     ELOSS=  9.55   '
      SCRPT(116)=' DISSOCIATION  S-R  F=0.000465     ELOSS=  9.675  '
      SCRPT(117)=' DISSOC E3SIGMA V=0 F=0.008432     ELOSS=  9.972  '
      SCRPT(118)=' DISSOC E3SIGMA V=1 F=0.007598     ELOSS= 10.288  '
      SCRPT(119)=' DISSOC E3SIGMA V=2 F=0.000829     ELOSS= 10.570  '
      SCRPT(120)=' DISSOC TRIPLET SUM BELOW IP       ELOSS= 10.60   '
      SCRPT(121)=' DISSOC             F=0.000644     ELOSS= 10.665  '
      SCRPT(122)=' DISSOC             F=0.001460     ELOSS= 10.760  '
      SCRPT(123)=' DISSOC             F=0.000818     ELOSS= 10.915  '
      SCRPT(124)=' DISSOC             F=0.000736     ELOSS= 11.05   '
      SCRPT(125)=' DISSOC             F=0.000598     ELOSS= 11.25   '
      SCRPT(126)=' DISSOC             F=0.001482     ELOSS= 11.46   '
      SCRPT(127)=' DISSOC             F=0.000425     ELOSS= 11.56   '
      SCRPT(128)=' DISSOC             F=0.001669     ELOSS= 11.65   '
      SCRPT(129)=' DISSOC             F=0.001766     ELOSS= 11.83   '
      SCRPT(130)=' DISSOC             F=0.001613     ELOSS= 11.98   '
      SCRPT(131)=' DISSOC             F=0.001746     ELOSS= 12.20   '
      SCRPT(132)=' DISSOC             F=0.003329     ELOSS= 12.40   '
      SCRPT(133)=' DISSOC             F=0.006264     ELOSS= 12.60   '
      SCRPT(134)=' DISSOC             F=0.013580     ELOSS= 12.80   '
      SCRPT(135)=' DISSOC             F=0.011373     ELOSS= 13.00   '
      SCRPT(136)=' DISSOC TRIPLET SUM ABOVE IP       ELOSS= 13.1    '
      SCRPT(137)=' DISSOC             F=0.006052     ELOSS= 13.20   '
      SCRPT(138)=' DISSOC             F=0.006051     ELOSS= 13.40   '
      SCRPT(139)=' DISSOC             F=0.004993     ELOSS= 13.60   '
      SCRPT(140)=' DISSOC             F=0.005045     ELOSS= 13.80   '
      SCRPT(141)=' DISSOC             F=0.004962     ELOSS= 14.00   '
      SCRPT(142)=' DISSOC             F=0.006520     ELOSS= 14.20   '
      SCRPT(143)=' DISSOC             F=0.008432     ELOSS= 14.40   '
      SCRPT(144)=' DISSOC             F=0.011304     ELOSS= 14.60   '
      SCRPT(145)=' DISSOC             F=0.015172     ELOSS= 14.80   '
      SCRPT(146)=' DISSOC             F=0.022139     ELOSS= 15.00   '
      SCRPT(147)=' DISSOC             F=0.032682     ELOSS= 15.20   '
      SCRPT(148)=' DISSOC             F=0.039457     ELOSS= 15.40   '
      SCRPT(149)=' DISSOC             F=0.029498     ELOSS= 15.60   '
      SCRPT(150)=' DISSOC             F=0.018923     ELOSS= 15.80   '
      SCRPT(151)=' DISSOC             F=0.017762     ELOSS= 16.00   '
      SCRPT(152)=' DISSOC             F=0.015115     ELOSS= 16.20   '
      SCRPT(153)=' DISSOC             F=0.013220     ELOSS= 16.40   '
      SCRPT(154)=' DISSOC             F=0.009540     ELOSS= 16.60   '
      SCRPT(155)=' DISSOC             F=0.005854     ELOSS= 16.80   '
      SCRPT(156)=' DISSOC             F=0.008733     ELOSS= 17.00   '
      SCRPT(157)=' DISSOC             F=0.007914     ELOSS= 17.20   '
      SCRPT(158)=' DISSOC             F=0.008002     ELOSS= 17.40   '
      SCRPT(159)=' DISSOC             F=0.006519     ELOSS= 17.60   '
      SCRPT(160)=' DISSOC             F=0.003528     ELOSS= 17.80   '
      SCRPT(161)=' DISSOC             F=0.001469     ELOSS= 18.00   '
      SCRPT(162)=' BREMSSTRAHLUNG FROM OXYGEN ATOMS                 '
      # CALCULATE DENSITY CORRECTION FOR THREE BODY ATTACHMENT CROSS-SECTION  
      FAC=273.15*TORR/((TEMPC+273.15)*760.0)                            
      # FIRST VIBRATIONAL LEVEL POPULATION
      APOP2=math.exp(EIN[49]/AKT)                                           
      #     EN=-ESTEP/2.0                                      
      DO 9900 I=1,NSTEP    
      EN=EG[I]                            
      #     EN=EN+ESTEP   
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      #
      # ELASTIC
      DO 12 J=2,NELA
      if(EN <= XELA[J]):
      GO TO 23 
      12 CONTINUE
      J=NELA
      23 A=(YELA[J]-YELA[J-1])/(XELA[J]-XELA[J-1])
      B=(XELA[J-1]*YELA[J]-XELA[J]*YELA[J-1])/(XELA[J-1]-XELA[J])
      # ELASTIC
      QELA=(A*EN+B)*1.e-16
      A=(YMOM[J]-YMOM[J-1])/(XELA[J]-XELA[J-1])
      B=(XELA[J-1]*YMOM[J]-XELA[J]*YMOM[J-1])/(XELA[J-1]-XELA[J])
      # MOMENTUM TRANSFER
      QMOM=(A*EN+B)*1.e-16
      A=(YEPS[J]-YEPS[J-1])/(XELA[J]-XELA[J-1])
      B=(XELA[J-1]*YEPS[J]-XELA[J]*YEPS[J-1])/(XELA[J-1]-XELA[J])
# ANISOTROPY defS
      PQ2=A*EN+B
      # EPSILON =1.0-YEPS
      PQ2=1.00-PQ2
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
      PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      Q[2][I]=QMOM
      #                                         
      # IONISATION CALCULATION

      DO 50 J=1,NION
      PEQION[J][I]=0.5
      if(NANISO == 2):
      PEQION[J][I]=0.0
      50 QION[J][I]=0.0  
      # IONISATION TO ALL CHANNELS WITH O2+
      # IONISATION TO O2+ X2PI
      if(EN <= EION[1]:
      ) GO TO 54
      if(EN > XION1(NION1):
      ) GO TO 53 
      DO 51 J=2,NION1
      if(EN <= XION1[J]:
      ) GO TO 52
      51 CONTINUE
      J=NION1
      52 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
      QION[1][I]=(A*EN+B)*1.e-16
      GO TO 54
      # USE BORN BETHE ABOVE XION1(NION1) EV
      53 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.6475*0.558
      # IONISATION TO O2+ A4PI
      54 if(EN <= EION[2]) GO TO 58
      if(EN > XION1(NION1):
      ) GO TO 57
      EOFF=EN-(EION[2]-EION[1])
      DO 55 J=1,NION1
      if(EOFF <= XION1[J]:
      ) GO TO 56
      55 CONTINUE
      J=NION1
      56 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
      QION[2][I]=(A*EOFF+B)*1.e-16*0.308
      # CORRECT QION[1][I]
      QION[1][I]=QION[1][I]-QION[2][I]
      GO TO 58
      # USE BORN BETHE ABOVE XION1(NION1) EV
      57 QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.6475*0.308
      # IONISATION TO O2+ B4SIGMA
      58 if(EN <= EION[3]) GO TO 62
      if(EN > XION1(NION1):
      ) GO TO 61
      EOFF=EN-(EION[3]-EION[1])
      DO 59 J=1,NION1
      if(EOFF <= XION1[J]:
      ) GO TO 60
      59 CONTINUE
      J=NION1
      60 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
      QION[3][I]=(A*EOFF+B)*1.e-16*0.136
      # CORRECT QION[1][I]
      QION[1][I]=QION[1][I]-QION[3][I]
      GO TO 62
      # USE BORN BETHE ABOVE XION1(NION1) EV
      61 QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.6475*0.136
      #
      #  DISSOCIATIVE IONISATION TO O+ + O
      62 if(EN <= EION[4]) GO TO 66  
      if(EN > XION2(NION2):
      ) GO TO 65                                   
      DO 63 J=2,NION2                                                  
      if(EN <= XION2[J]:
      ) GO TO 64                                   
      63 CONTINUE                                                          
      J=NION2                                                         
      64 A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])                    
      B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J])
      QION[4][I]=(A*EN+B)*1.e-16       
      GO TO 66                      
      # USE BORN BETHE ABOVE XION2(NION2) EV    
      65 QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.2993
      #
      # DISSOCIATIVE DOUBLE IONISATION TO O+ + O+ 
      66 if(EN <= EION[5]) GO TO 70  
      if(EN > XION3(NION3):
      ) GO TO 69                                   
      DO 67 J=2,NION3                                                  
      if(EN <= XION3[J]:
      ) GO TO 68                                   
      67 CONTINUE                                                          
      J=NION3                                                        
      68 A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])                    
      B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J])
      QION[5][I]=(A*EN+B)*1.e-16       
      GO TO 70                      
      # USE BORN BETHE ABOVE XION3(NION3) EV    
      69 QION[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0446
      #
      # DISSOCIATIVE DOUBLE IONISATION TO O++ + O 
      70 if(EN <= EION[6]) GO TO 74  
      if(EN > XION4(NION4):
      ) GO TO 73                                   
      DO 71 J=2,NION4                                                  
      if(EN <= XION4[J]:
      ) GO TO 72                                   
      71 CONTINUE                                                          
      J=NION4                                                        
      72 A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])                    
      B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J])
      QION[6][I]=(A*EN+B)*1.e-16       
      GO TO 74                      
      # USE BORN BETHE ABOVE XION4(NION4) EV    
      73 QION[6][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0061
      #
      # DISSOCIATIVE TREBLE IONISATION TO O++ + O+ 
      74 if(EN <= EION[7]) GO TO 78  
      if(EN > XION5(NION5):
      ) GO TO 77                                   
      DO 75 J=2,NION5                                                  
      if(EN <= XION5[J]:
      ) GO TO 76                                   
      75 CONTINUE                                                          
      J=NION5                                                        
      76 A=(YION5[J]-YION5[J-1])/(XION5[J]-XION5[J-1])                    
      B=(XION5[J-1]*YION5[J]-XION5[J]*YION5[J-1])/(XION5[J-1]-XION5[J])
      QION[7][I]=(A*EN+B)*1.e-16       
      GO TO 78                      
      # USE BORN BETHE ABOVE XION5(NION5) EV    
      77 QION[7][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0025
      #
      # K-SHELL IONISATION
      78 if(EN <= EION[8]) GO TO 81  
      DO 79 J=2,NKSH                                                  
      if(EN <= XKSH[J]:
      ) GO TO 80                                   
      79 CONTINUE                                                          
      J=NKSH                                                       
      80 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])                    
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J])
      # SCALE BY 2 ATMOS PER MOLECULE
      QION[8][I]=2.0*(A*EN+B)*1.e-16            
      #
      81 DO 85 J=1,NION
      if(EN <= (2.0*EION[J]:
      )) GO TO 85
      PEQION[J][I]=PEQEL[2][(I-IOFFION[J]])
      85 CONTINUE   
      # CORRECTION TO IONISATION FOR AUGER EMISSION FROM KSHELL
      QION[1][I]=QION[1][I]-AUGK*QION[8][I] 
      #
      #  TWO BODY ATTACHMENT                                                       
      SINGLE=0.0       
      # OFFSET FOR ENERGY SCALE
      if(EN < XATT[1]:
      ) GO TO 250                                
      if(EN > XATT[NATT1]:
      ) GO TO 230                             
      DO 210 J=2,NATT1                                                 
      if(EN <= XATT[J]:
      ) GO TO 220                                
      210 CONTINUE                                                          
      J=NATT1                                                          
      220 A=(YATT[J]-YATT[J-1])/(XATT[J]-XATT[J-1])          
      B=(XATT[J-1]*YATT[J]-XATT[J]*YATT[J-1])/(XATT[J-1]-XATT[J])       
      SINGLE=(A*EN+B)*1.e-16                    
      GO TO 250
      # SCALE BY 1/E**3 ABOVE XATT[NATT1]
      230 SINGLE=YATT[NATT1]*(XATT[NATT1]/EN)**3*1.e-16    
      #
      #  
      #  THREE BODY ATTACHMENT    
      # ***************************************************************
      #  ENTER HERE SCALING FACTOR FOR THREE BODY ATTACHMENT IN MIXTURES:
      #  FOR NORMAL SCALING T3B=1.0
      T3B=1.0
      #    SCALING FACTOR NORMALLY PROPORTIONAL TO OXYGEN FRACTION 
      #    IN RARE GAS MIXTURES
      # 
      #***********************************************************  
      #              
      250 THREEB=0.0                                                    
      if(EN < X3ATT[1]:
      ) GO TO 300                                      
      if(EN > X3ATT(N3ATT):
      ) GO TO 300                                  
      DO 260 J=2,N3ATT                                                  
      if(EN <= X3ATT[J]:
      ) GO TO 270                                      
      260 CONTINUE                                                          
      J=N3ATT                                                           
      270 A=(Y3ATT[J]-Y3ATT[J-1])/(X3ATT[J]-X3ATT[J-1])
      B=(X3ATT[J-1]*Y3ATT[J]-X3ATT[J]*Y3ATT[J-1])/(X3ATT[J-1]-X3ATT[J])
      THREEB=FAC*(A*EN+B)*1.e-16*T3B  
      300 Q[4][I]=SINGLE+THREEB     
      Q[5][I]=0.0                                                        
      Q[6][I]=0.0
      # SET ZERO
      DO 310 JK=1,NIN
      QIN(JK,I)=0.00
      PEQIN(JK,I)=0.50
      if(NANISO == 2):
      PEQIN(JK,I)=0.00         
      310 CONTINUE   
      #                    
      # SUPERELASTIC ROTATION   
      DO 311 K=1,24
      # STATISTICAL FACTOR
      AK=float[K]
      SFAC=(4.0*AK-1.0)/(4.0*AK+3.0) 
      QIN(K,I)=0.0
      PEQIN(K,I)=0.50
      if(NANISO == 2):
      PEQIN(K,I)=0.00                      
      if(EN <= 0.0):
      GO TO 311 
      #
      if(K == 1):
      :
      if((EN-EIN[K]:
      ) > XROT13(NROT13)) GO TO 3213
      DO 3211 J=2,NROT13
      if((EN-EIN[K]:
      ) <= XROT13[J]) GO TO 3212
      3211 CONTINUE
      J=NROT13
      3212 YXJ=math.log(YROT13[J])
      YXJ1=math.log(YROT13[J-1])
      XNJ=math.log(XROT13[J])
      XNJ1=math.log(XROT13[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3214
      3213 QIN(K,I)=PJ(2*K+1)*SFAC*YROT13(NROT13)*XROT13(NROT13)/(EN-EIN[K])*1.e-16
      3214 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 2) :
      if((EN-EIN[K]:
      ) > XROT35(NROT35)) GO TO 3217
      DO 3215 J=2,NROT35
      if((EN-EIN[K]:
      ) <= XROT35[J]) GO TO 3216
      3215 CONTINUE
      J=NROT35
      3216 YXJ=math.log(YROT35[J])
      YXJ1=math.log(YROT35[J-1])
      XNJ=math.log(XROT35[J])
      XNJ1=math.log(XROT35[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3218
      3217 QIN(K,I)=PJ(2*K+1)*SFAC*YROT35(NROT35)*XROT35(NROT35)/(EN-EIN[K])*1.e-16      
      3218 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 3) :
      if((EN-EIN[K]:
      ) > XROT57(NROT57)) GO TO 3221
      DO 3219 J=2,NROT57
      if((EN-EIN[K]:
      ) <= XROT57[J]) GO TO 3220
      3219 CONTINUE
      J=NROT57
      3220 YXJ=math.log(YROT57[J])
      YXJ1=math.log(YROT57[J-1])
      XNJ=math.log(XROT57[J])
      XNJ1=math.log(XROT57[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3222
      3221 QIN(K,I)=PJ(2*K+1)*SFAC*YROT57(NROT57)*XROT57(NROT57)/(EN-EIN[K])*1.e-16      
      3222 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 4) :
      if((EN-EIN[K]:
      ) > XROT79(NROT79)) GO TO 3225
      DO 3223 J=2,NROT79
      if((EN-EIN[K]:
      ) <= XROT79[J]) GO TO 3224
      3223 CONTINUE
      J=NROT79
      3224 YXJ=math.log(YROT79[J])
      YXJ1=math.log(YROT79[J-1])
      XNJ=math.log(XROT79[J])
      XNJ1=math.log(XROT79[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3226
      3225 QIN(K,I)=PJ(2*K+1)*SFAC*YROT79(NROT79)*XROT79(NROT79)/(EN-EIN[K])*1.e-16      
      3226 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 5) :
      if((EN-EIN[K]:
      ) > XROT911(NROT911)) GO TO 3229
      DO 3227 J=2,NROT911
      if((EN-EIN[K]:
      ) <= XROT911[J]) GO TO 3228
      3227 CONTINUE
      J=NROT911
      3228 YXJ=math.log(YROT911[J])
      YXJ1=math.log(YROT911[J-1])
      XNJ=math.log(XROT911[J])
      XNJ1=math.log(XROT911[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3230
      3229 QIN(K,I)=PJ(2*K+1)*SFAC*YROT911(NROT911)*XROT911(NROT911)/(EN-EIN[K])*1.e-16      
      3230 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 6) :
      if((EN-EIN[K]:
      ) > XROT1113(NROT1113)) GO TO 3233
      DO 3231 J=2,NROT1113
      if((EN-EIN[K]:
      ) <= XROT1113[J]) GO TO 3232
      3231 CONTINUE
      J=NROT1113
      3232 YXJ=math.log(YROT1113[J])
      YXJ1=math.log(YROT1113[J-1])
      XNJ=math.log(XROT1113[J])
      XNJ1=math.log(XROT1113[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3234
      3233 QIN(K,I)=PJ(2*K+1)*SFAC*YROT1113(NROT1113)*XROT1113(NROT1113)/(EN-EIN[K])*1.e-16      
      3234 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 7) :
      if((EN-EIN[K]:
      ) > XROT1315(NROT1315)) GO TO 3237
      DO 3235 J=2,NROT1315
      if((EN-EIN[K]:
      ) <= XROT1315[J]) GO TO 3236
      3235 CONTINUE
      J=NROT1315
      3236 YXJ=math.log(YROT1315[J])
      YXJ1=math.log(YROT1315[J-1])
      XNJ=math.log(XROT1315[J])
      XNJ1=math.log(XROT1315[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3238
      3237 QIN(K,I)=PJ(2*K+1)*SFAC*YROT1315(NROT1315)*XROT1315(NROT1315)/(EN-EIN[K])*1.e-16      
      3238 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 8) :
      if((EN-EIN[K]:
      ) > XROT1517(NROT1517)) GO TO 3241
      DO 3239 J=2,NROT1517
      if((EN-EIN[K]:
      ) <= XROT1517[J]) GO TO 3240
      3239 CONTINUE
      J=NROT1517
      3240 YXJ=math.log(YROT1517[J])
      YXJ1=math.log(YROT1517[J-1])
      XNJ=math.log(XROT1517[J])
      XNJ1=math.log(XROT1517[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3242
      3241 QIN(K,I)=PJ(2*K+1)*SFAC*YROT1517(NROT1517)*XROT1517(NROT1517)/(EN-EIN[K])*1.e-16      
      3242 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 9) :
      if((EN-EIN[K]:
      ) > XROT1719(NROT1719)) GO TO 3245
      DO 3243 J=2,NROT1719
      if((EN-EIN[K]:
      ) <= XROT1719[J]) GO TO 3244
      3243 CONTINUE
      J=NROT1719
      3244 YXJ=math.log(YROT1719[J])
      YXJ1=math.log(YROT1719[J-1])
      XNJ=math.log(XROT1719[J])
      XNJ1=math.log(XROT1719[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3246
      3245 QIN(K,I)=PJ(2*K+1)*SFAC*YROT1719(NROT1719)*XROT1719(NROT1719)/(EN-EIN[K])*1.e-16      
      3246 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 10) :
      if((EN-EIN[K]:
      ) > XROT1921(NROT1921)) GO TO 3249
      DO 3247 J=2,NROT1921
      if((EN-EIN[K]:
      ) <= XROT1921[J]) GO TO 3248
      3247 CONTINUE
      J=NROT1921
      3248 YXJ=math.log(YROT1921[J])
      YXJ1=math.log(YROT1921[J-1])
      XNJ=math.log(XROT1921[J])
      XNJ1=math.log(XROT1921[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3250
      3249 QIN(K,I)=PJ(2*K+1)*SFAC*YROT1921(NROT1921)*XROT1921(NROT1921)/(EN-EIN[K])*1.e-16      
      3250 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 11) :
      if((EN-EIN[K]:
      ) > XROT2123(NROT2123)) GO TO 3253
      DO 3251 J=2,NROT2123
      if((EN-EIN[K]:
      ) <= XROT2123[J]) GO TO 3252
      3251 CONTINUE
      J=NROT2123
      3252 YXJ=math.log(YROT2123[J])
      YXJ1=math.log(YROT2123[J-1])
      XNJ=math.log(XROT2123[J])
      XNJ1=math.log(XROT2123[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3254
      3253 QIN(K,I)=PJ(2*K+1)*SFAC*YROT2123(NROT2123)*XROT2123(NROT2123)/(EN-EIN[K])*1.e-16      
      3254 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 12) :
      if((EN-EIN[K]:
      ) > XROT2325(NROT2325)) GO TO 3257
      DO 3255 J=2,NROT2325
      if((EN-EIN[K]:
      ) <= XROT2325[J]) GO TO 3256
      3255 CONTINUE
      J=NROT2325
      3256 YXJ=math.log(YROT2325[J])
      YXJ1=math.log(YROT2325[J-1])
      XNJ=math.log(XROT2325[J])
      XNJ1=math.log(XROT2325[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3258
      3257 QIN(K,I)=PJ(2*K+1)*SFAC*YROT2325(NROT2325)*XROT2325(NROT2325)/(EN-EIN[K])*1.e-16      
      3258 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 13) :
      if((EN-EIN[K]:
      ) > XROT2527(NROT2527)) GO TO 3261
      DO 3259 J=2,NROT2527
      if((EN-EIN[K]:
      ) <= XROT2527[J]) GO TO 3260
      3259 CONTINUE
      J=NROT2527
      3260 YXJ=math.log(YROT2527[J])
      YXJ1=math.log(YROT2527[J-1])
      XNJ=math.log(XROT2527[J])
      XNJ1=math.log(XROT2527[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3262
      3261 QIN(K,I)=PJ(2*K+1)*SFAC*YROT2527(NROT2527)*XROT2527(NROT2527)/(EN-EIN[K])*1.e-16      
      3262 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 14) :
      if((EN-EIN[K]:
      ) > XROT2729(NROT2729)) GO TO 3265
      DO 3263 J=2,NROT2729
      if((EN-EIN[K]:
      ) <= XROT2729[J]) GO TO 3264
      3263 CONTINUE
      J=NROT2729
      3264 YXJ=math.log(YROT2729[J])
      YXJ1=math.log(YROT2729[J-1])
      XNJ=math.log(XROT2729[J])
      XNJ1=math.log(XROT2729[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3266
      3265 QIN(K,I)=PJ(2*K+1)*SFAC*YROT2729(NROT2729)*XROT2729(NROT2729)/(EN-EIN[K])*1.e-16      
      3266 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 15) :
      if((EN-EIN[K]:
      ) > XROT2931(NROT2931)) GO TO 3269
      DO 3267 J=2,NROT2931
      if((EN-EIN[K]:
      ) <= XROT2931[J]) GO TO 3268
      3267 CONTINUE
      J=NROT2931
      3268 YXJ=math.log(YROT2931[J])
      YXJ1=math.log(YROT2931[J-1])
      XNJ=math.log(XROT2931[J])
      XNJ1=math.log(XROT2931[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3270
      3269 QIN(K,I)=PJ(2*K+1)*SFAC*YROT2931(NROT2931)*XROT2931(NROT2931)/(EN-EIN[K])*1.e-16      
      3270 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 16) :
      if((EN-EIN[K]:
      ) > XROT3133(NROT3133)) GO TO 3273
      DO 3271 J=2,NROT3133
      if((EN-EIN[K]:
      ) <= XROT3133[J]) GO TO 3272
      3271 CONTINUE
      J=NROT3133
      3272 YXJ=math.log(YROT3133[J])
      YXJ1=math.log(YROT3133[J-1])
      XNJ=math.log(XROT3133[J])
      XNJ1=math.log(XROT3133[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3274
      3273 QIN(K,I)=PJ(2*K+1)*SFAC*YROT3133(NROT3133)*XROT3133(NROT3133)/(EN-EIN[K])*1.e-16      
      3274 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 17) :
      if((EN-EIN[K]:
      ) > XROT3335(NROT3335)) GO TO 3277
      DO 3275 J=2,NROT3335
      if((EN-EIN[K]:
      ) <= XROT3335[J]) GO TO 3276
      3275 CONTINUE
      J=NROT3335
      3276 YXJ=math.log(YROT3335[J])
      YXJ1=math.log(YROT3335[J-1])
      XNJ=math.log(XROT3335[J])
      XNJ1=math.log(XROT3335[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3278
      3277 QIN(K,I)=PJ(2*K+1)*SFAC*YROT3335(NROT3335)*XROT3335(NROT3335)/(EN-EIN[K])*1.e-16      
      3278 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 18) :
      if((EN-EIN[K]:
      ) > XROT3537(NROT3537)) GO TO 3281
      DO 3279 J=2,NROT3537
      if((EN-EIN[K]:
      ) <= XROT3537[J]) GO TO 3280
      3279 CONTINUE
      J=NROT3537
      3280 YXJ=math.log(YROT3537[J])
      YXJ1=math.log(YROT3537[J-1])
      XNJ=math.log(XROT3537[J])
      XNJ1=math.log(XROT3537[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3282
      3281 QIN(K,I)=PJ(2*K+1)*SFAC*YROT3537(NROT3537)*XROT3537(NROT3537)/(EN-EIN[K])*1.e-16      
      3282 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 19) :
      if((EN-EIN[K]:
      ) > XROT3739(NROT3739)) GO TO 3285
      DO 3283 J=2,NROT3739
      if((EN-EIN[K]:
      ) <= XROT3739[J]) GO TO 3284
      3283 CONTINUE
      J=NROT3739
      3284 YXJ=math.log(YROT3739[J])
      YXJ1=math.log(YROT3739[J-1])
      XNJ=math.log(XROT3739[J])
      XNJ1=math.log(XROT3739[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3286
      3285 QIN(K,I)=PJ(2*K+1)*SFAC*YROT3739(NROT3739)*XROT3739(NROT3739)/(EN-EIN[K])*1.e-16      
      3286 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 20) :
      if((EN-EIN[K]:
      ) > XROT3941(NROT3941)) GO TO 3289
      DO 3287 J=2,NROT3941
      if((EN-EIN[K]:
      ) <= XROT3941[J]) GO TO 3288
      3287 CONTINUE
      J=NROT3941
      3288 YXJ=math.log(YROT3941[J])
      YXJ1=math.log(YROT3941[J-1])
      XNJ=math.log(XROT3941[J])
      XNJ1=math.log(XROT3941[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3290
      3289 QIN(K,I)=PJ(2*K+1)*SFAC*YROT3941(NROT3941)*XROT3941(NROT3941)/(EN-EIN[K])*1.e-16      
      3290 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 21) :
      if((EN-EIN[K]:
      ) > XROT4143(NROT4143)) GO TO 3293
      DO 3291 J=2,NROT4143
      if((EN-EIN[K]:
      ) <= XROT4143[J]) GO TO 3292
      3291 CONTINUE
      J=NROT4143
      3292 YXJ=math.log(YROT4143[J])
      YXJ1=math.log(YROT4143[J-1])
      XNJ=math.log(XROT4143[J])
      XNJ1=math.log(XROT4143[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3294
      3293 QIN(K,I)=PJ(2*K+1)*SFAC*YROT4143(NROT4143)*XROT4143(NROT4143)/(EN-EIN[K])*1.e-16      
      3294 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 22) :
      if((EN-EIN[K]:
      ) > XROT4345(NROT4345)) GO TO 3297
      DO 3295 J=2,NROT4345
      if((EN-EIN[K]:
      ) <= XROT4345[J]) GO TO 3296
      3295 CONTINUE
      J=NROT4345
      3296 YXJ=math.log(YROT4345[J])
      YXJ1=math.log(YROT4345[J-1])
      XNJ=math.log(XROT4345[J])
      XNJ1=math.log(XROT4345[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3298
      3297 QIN(K,I)=PJ(2*K+1)*SFAC*YROT4345(NROT4345)*XROT4345(NROT4345)/(EN-EIN[K])*1.e-16      
      3298 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 23) :
      if((EN-EIN[K]:
      ) > XROT4547(NROT4547)) GO TO 3301
      DO 3299 J=2,NROT4547
      if((EN-EIN[K]:
      ) <= XROT4547[J]) GO TO 3300
      3299 CONTINUE
      J=NROT4547
      3300 YXJ=math.log(YROT4547[J])
      YXJ1=math.log(YROT4547[J-1])
      XNJ=math.log(XROT4547[J])
      XNJ1=math.log(XROT4547[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3302
      3301 QIN(K,I)=PJ(2*K+1)*SFAC*YROT4547(NROT4547)*XROT4547(NROT4547)/(EN-EIN[K])*1.e-16      
      3302 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      #
      else if (K == 24) :
      if((EN-EIN[K]:
      ) > XROT4749(NROT4749)) GO TO 3305
      DO 3303 J=2,NROT4749
      if((EN-EIN[K]:
      ) <= XROT4749[J]) GO TO 3304
      3303 CONTINUE
      J=NROT4749
      3304 YXJ=math.log(YROT4749[J])
      YXJ1=math.log(YROT4749[J-1])
      XNJ=math.log(XROT4749[J])
      XNJ1=math.log(XROT4749[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K+1)*SFAC*(EN-EIN[K])*math.exp(A*math.log(EN-EIN[K])+B)/EN*1.e-16
      GO TO 3306
      3305 QIN(K,I)=PJ(2*K+1)*SFAC*YROT4749(NROT4749)*XROT4749(NROT4749)/(EN-EIN[K])*1.e-16      
      3306 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      else:
      WRITE(6,997) K
997 print(' ERROR IN INDEX IN OXYGEN def K=',I3)
      # endif
      # CALCULATE ENHANCEMENT OF ROTATION DUE TO VIBRATIONAL RESONANCES
      QRES1=0.0
      if((EN-EIN[K]:
      ) > XROT(NROT)) GO TO 3333
      if((EN-EIN[K]:
      ) <= XROT[1]) GO TO 3333
      DO 3331 L=1,NROT
      if((EN-EIN[K]:
      ) <= XROT(L)) GO TO 3332 
      3331 CONTINUE     
      L=NROT
      3332 A=(YROT(L)-YROT(L-1))/(XROT(L)-XROT(L-1))
      B=(XROT(L-1)*YROT(L)-XROT(L)*YROT(L-1))/(XROT(L-1)-XROT(L))
      QRES1=(EN-EIN[K])*(A*(EN-EIN[K])+B)/EN
      QRES1=QRES1*PJ(2*K+1)*1.e-16                        
      3333 QIN(K,I)=QIN(K,I)+QRES1
      311 CONTINUE 
      # INELASTIC ROTATION
      DO 312 K=25,48
      QIN(K,I)=0.0
      PEQIN(K,I)=0.50
      if(NANISO == 2):
      PEQIN(K,I)=0.00
      if(EN <= 0.0):
      GO TO 312
      if(EN <= EIN[K]:
      ) GO TO 312
      if(K == 25):
      :
      if(EN < XROT13[1]:
      ) GO TO 312
      if(EN > XROT13(NROT13):
      ) GO TO 3336
      DO 3334 J=2,NROT13 
      if(EN <= XROT13[J]:
      ) GO TO 3335
      3334 CONTINUE    
      J=NROT13
      3335 YXJ=math.log(YROT13[J])
      YXJ1=math.log(YROT13[J-1])
      XNJ=math.log(XROT13[J])
      XNJ1=math.log(XROT13[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3337
      3336 QIN(K,I)=PJ(2*K-49)*YROT13(NROT13)*XROT13(NROT13)/EN*1.e-16     
      3337 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 26) :
      if(EN < XROT35[1]:
      ) GO TO 312
      if(EN > XROT35(NROT35):
      ) GO TO 3340
      DO 3338 J=2,NROT35 
      if(EN <= XROT35[J]:
      ) GO TO 3339
      3338 CONTINUE    
      J=NROT35
      3339 YXJ=math.log(YROT35[J])
      YXJ1=math.log(YROT35[J-1])
      XNJ=math.log(XROT35[J])
      XNJ1=math.log(XROT35[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3341
      3340 QIN(K,I)=PJ(2*K-49)*YROT35(NROT35)*XROT35(NROT35)/EN*1.e-16     
      3341 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 27) :
      if(EN < XROT57[1]:
      ) GO TO 312
      if(EN > XROT57(NROT57):
      ) GO TO 3344
      DO 3342 J=2,NROT57 
      if(EN <= XROT57[J]:
      ) GO TO 3343
      3342 CONTINUE    
      J=NROT57
      3343 YXJ=math.log(YROT57[J])
      YXJ1=math.log(YROT57[J-1])
      XNJ=math.log(XROT57[J])
      XNJ1=math.log(XROT57[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3345
      3344 QIN(K,I)=PJ(2*K-49)*YROT57(NROT57)*XROT57(NROT57)/EN*1.e-16     
      3345 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 28) :
      if(EN < XROT79[1]:
      ) GO TO 312
      if(EN > XROT79(NROT79):
      ) GO TO 3348
      DO 3346 J=2,NROT79 
      if(EN <= XROT79[J]:
      ) GO TO 3347
      3346 CONTINUE    
      J=NROT79
      3347 YXJ=math.log(YROT79[J])
      YXJ1=math.log(YROT79[J-1])
      XNJ=math.log(XROT79[J])
      XNJ1=math.log(XROT79[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3349
      3348 QIN(K,I)=PJ(2*K-49)*YROT79(NROT79)*XROT79(NROT79)/EN*1.e-16     
      3349 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 29) :
      if(EN < XROT911[1]:
      ) GO TO 312
      if(EN > XROT911(NROT911):
      ) GO TO 3352
      DO 3350 J=2,NROT911 
      if(EN <= XROT911[J]:
      ) GO TO 3351
      3350 CONTINUE    
      J=NROT911
      3351 YXJ=math.log(YROT911[J])
      YXJ1=math.log(YROT911[J-1])
      XNJ=math.log(XROT911[J])
      XNJ1=math.log(XROT911[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3353
      3352 QIN(K,I)=PJ(2*K-49)*YROT911(NROT911)*XROT911(NROT911)/EN*1.e-16   
      3353 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 30) :
      if(EN < XROT1113[1]:
      ) GO TO 312
      if(EN > XROT1113(NROT1113):
      ) GO TO 3356
      DO 3354 J=2,NROT1113 
      if(EN <= XROT1113[J]:
      ) GO TO 3355
      3354 CONTINUE    
      J=NROT1113
      3355 YXJ=math.log(YROT1113[J])
      YXJ1=math.log(YROT1113[J-1])
      XNJ=math.log(XROT1113[J])
      XNJ1=math.log(XROT1113[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3357
      3356 QIN(K,I)=PJ(2*K-49)*YROT1113(NROT1113)*XROT1113(NROT1113)/EN*1.e-16   
      3357 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 31) :
      if(EN < XROT1315[1]:
      ) GO TO 312
      if(EN > XROT1315(NROT1315):
      ) GO TO 3360
      DO 3358 J=2,NROT1315 
      if(EN <= XROT1315[J]:
      ) GO TO 3359
      3358 CONTINUE    
      J=NROT1315
      3359 YXJ=math.log(YROT1315[J])
      YXJ1=math.log(YROT1315[J-1])
      XNJ=math.log(XROT1315[J])
      XNJ1=math.log(XROT1315[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3361
      3360 QIN(K,I)=PJ(2*K-49)*YROT1315(NROT1315)*XROT1315(NROT1315)/EN*1.e-16   
      3361 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 32) :
      if(EN < XROT1517[1]:
      ) GO TO 312
      if(EN > XROT1517(NROT1517):
      ) GO TO 3364
      DO 3362 J=2,NROT1517 
      if(EN <= XROT1517[J]:
      ) GO TO 3363
      3362 CONTINUE    
      J=NROT1517
      3363 YXJ=math.log(YROT1517[J])
      YXJ1=math.log(YROT1517[J-1])
      XNJ=math.log(XROT1517[J])
      XNJ1=math.log(XROT1517[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3365
      3364 QIN(K,I)=PJ(2*K-49)*YROT1517(NROT1517)*XROT1517(NROT1517)/EN*1.e-16   
      3365 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 33) :
      if(EN < XROT1719[1]:
      ) GO TO 312
      if(EN > XROT1719(NROT1719):
      ) GO TO 3368
      DO 3366 J=2,NROT1719 
      if(EN <= XROT1719[J]:
      ) GO TO 3367
      3366 CONTINUE    
      J=NROT1719
      3367 YXJ=math.log(YROT1719[J])
      YXJ1=math.log(YROT1719[J-1])
      XNJ=math.log(XROT1719[J])
      XNJ1=math.log(XROT1719[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3369
      3368 QIN(K,I)=PJ(2*K-49)*YROT1719(NROT1719)*XROT1719(NROT1719)/EN*1.e-16   
      3369 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 34) :
      if(EN < XROT1921[1]:
      ) GO TO 312
      if(EN > XROT1921(NROT1921):
      ) GO TO 3372
      DO 3370 J=2,NROT1921 
      if(EN <= XROT1921[J]:
      ) GO TO 3371
      3370 CONTINUE    
      J=NROT1921
      3371 YXJ=math.log(YROT1921[J])
      YXJ1=math.log(YROT1921[J-1])
      XNJ=math.log(XROT1921[J])
      XNJ1=math.log(XROT1921[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3373
      3372 QIN(K,I)=PJ(2*K-49)*YROT1921(NROT1921)*XROT1921(NROT1921)/EN*1.e-16   
      3373 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 35) :
      if(EN < XROT2123[1]:
      ) GO TO 312
      if(EN > XROT2123(NROT2123):
      ) GO TO 3376
      DO 3374 J=2,NROT2123 
      if(EN <= XROT2123[J]:
      ) GO TO 3375
      3374 CONTINUE    
      J=NROT2123
      3375 YXJ=math.log(YROT2123[J])
      YXJ1=math.log(YROT2123[J-1])
      XNJ=math.log(XROT2123[J])
      XNJ1=math.log(XROT2123[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3377
      3376 QIN(K,I)=PJ(2*K-49)*YROT2123(NROT2123)*XROT2123(NROT2123)/EN*1.e-16   
      3377 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 36) :
      if(EN < XROT2325[1]:
      ) GO TO 312
      if(EN > XROT2325(NROT2325):
      ) GO TO 3380
      DO 3378 J=2,NROT2325 
      if(EN <= XROT2325[J]:
      ) GO TO 3379
      3378 CONTINUE    
      J=NROT2325
      3379 YXJ=math.log(YROT2325[J])
      YXJ1=math.log(YROT2325[J-1])
      XNJ=math.log(XROT2325[J])
      XNJ1=math.log(XROT2325[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3381
      3380 QIN(K,I)=PJ(2*K-49)*YROT2325(NROT2325)*XROT2325(NROT2325)/EN*1.e-16   
      3381 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 37) :
      if(EN < XROT2527[1]:
      ) GO TO 312
      if(EN > XROT2527(NROT2527):
      ) GO TO 3384
      DO 3382 J=2,NROT2527 
      if(EN <= XROT2527[J]:
      ) GO TO 3383
      3382 CONTINUE    
      J=NROT2527
      3383 YXJ=math.log(YROT2527[J])
      YXJ1=math.log(YROT2527[J-1])
      XNJ=math.log(XROT2527[J])
      XNJ1=math.log(XROT2527[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3385
      3384 QIN(K,I)=PJ(2*K-49)*YROT2527(NROT2527)*XROT2527(NROT2527)/EN*1.e-16   
      3385 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 38) :
      if(EN < XROT2729[1]:
      ) GO TO 312
      if(EN > XROT2729(NROT2729):
      ) GO TO 3388
      DO 3386 J=2,NROT2729 
      if(EN <= XROT2729[J]:
      ) GO TO 3387
      3386 CONTINUE    
      J=NROT2729
      3387 YXJ=math.log(YROT2729[J])
      YXJ1=math.log(YROT2729[J-1])
      XNJ=math.log(XROT2729[J])
      XNJ1=math.log(XROT2729[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3389
      3388 QIN(K,I)=PJ(2*K-49)*YROT2729(NROT2729)*XROT2729(NROT2729)/EN*1.e-16   
      3389 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 39) :
      if(EN < XROT2931[1]:
      ) GO TO 312
      if(EN > XROT2931(NROT2931):
      ) GO TO 3392
      DO 3390 J=2,NROT2931 
      if(EN <= XROT2931[J]:
      ) GO TO 3391
      3390 CONTINUE    
      J=NROT2931
      3391 YXJ=math.log(YROT2931[J])
      YXJ1=math.log(YROT2931[J-1])
      XNJ=math.log(XROT2931[J])
      XNJ1=math.log(XROT2931[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3393
      3392 QIN(K,I)=PJ(2*K-49)*YROT2931(NROT2931)*XROT2931(NROT2931)/EN*1.e-16   
      3393 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 40) :
      if(EN < XROT3133[1]:
      ) GO TO 312
      if(EN > XROT3133(NROT3133):
      ) GO TO 3396
      DO 3394 J=2,NROT3133 
      if(EN <= XROT3133[J]:
      ) GO TO 3395
      3394 CONTINUE    
      J=NROT3133
      3395 YXJ=math.log(YROT3133[J])
      YXJ1=math.log(YROT3133[J-1])
      XNJ=math.log(XROT3133[J])
      XNJ1=math.log(XROT3133[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3397
      3396 QIN(K,I)=PJ(2*K-49)*YROT3133(NROT3133)*XROT3133(NROT3133)/EN*1.e-16   
      3397 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 41) :
      if(EN < XROT3335[1]:
      ) GO TO 312
      if(EN > XROT3335(NROT3335):
      ) GO TO 3400
      DO 3398 J=2,NROT3335 
      if(EN <= XROT3335[J]:
      ) GO TO 3399
      3398 CONTINUE    
      J=NROT3335
      3399 YXJ=math.log(YROT3335[J])
      YXJ1=math.log(YROT3335[J-1])
      XNJ=math.log(XROT3335[J])
      XNJ1=math.log(XROT3335[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3401
      3400 QIN(K,I)=PJ(2*K-49)*YROT3335(NROT3335)*XROT3335(NROT3335)/EN*1.e-16   
      3401 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 42) :
      if(EN < XROT3537[1]:
      ) GO TO 312
      if(EN > XROT3537(NROT3537):
      ) GO TO 3404
      DO 3402 J=2,NROT3537 
      if(EN <= XROT3537[J]:
      ) GO TO 3403
      3402 CONTINUE    
      J=NROT3537
      3403 YXJ=math.log(YROT3537[J])
      YXJ1=math.log(YROT3537[J-1])
      XNJ=math.log(XROT3537[J])
      XNJ1=math.log(XROT3537[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3405
      3404 QIN(K,I)=PJ(2*K-49)*YROT3537(NROT3537)*XROT3537(NROT3537)/EN*1.e-16   
      3405 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 43) :
      if(EN < XROT3739[1]:
      ) GO TO 312
      if(EN > XROT3739(NROT3739):
      ) GO TO 3408
      DO 3406 J=2,NROT3739 
      if(EN <= XROT3739[J]:
      ) GO TO 3407 
      3406 CONTINUE    
      J=NROT3739
      3407 YXJ=math.log(YROT3739[J])
      YXJ1=math.log(YROT3739[J-1])
      XNJ=math.log(XROT3739[J])
      XNJ1=math.log(XROT3739[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3409
      3408 QIN(K,I)=PJ(2*K-49)*YROT3739(NROT3739)*XROT3739(NROT3739)/EN*1.e-16   
      3409 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 44) :
      if(EN < XROT3941[1]:
      ) GO TO 312
      if(EN > XROT3941(NROT3941):
      ) GO TO 3412
      DO 3410 J=2,NROT3941 
      if(EN <= XROT3941[J]:
      ) GO TO 3411 
      3410 CONTINUE    
      J=NROT3941
      3411 YXJ=math.log(YROT3941[J])
      YXJ1=math.log(YROT3941[J-1])
      XNJ=math.log(XROT3941[J])
      XNJ1=math.log(XROT3941[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3413
      3412 QIN(K,I)=PJ(2*K-49)*YROT3941(NROT3941)*XROT3941(NROT3941)/EN*1.e-16   
      3413 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 45) :
      if(EN < XROT4143[1]:
      ) GO TO 312
      if(EN > XROT4143(NROT4143):
      ) GO TO 3416
      DO 3414 J=2,NROT4143 
      if(EN <= XROT4143[J]:
      ) GO TO 3415 
      3414 CONTINUE    
      J=NROT4143
      3415 YXJ=math.log(YROT4143[J])
      YXJ1=math.log(YROT4143[J-1])
      XNJ=math.log(XROT4143[J])
      XNJ1=math.log(XROT4143[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3417
      3416 QIN(K,I)=PJ(2*K-49)*YROT4143(NROT4143)*XROT4143(NROT4143)/EN*1.e-16   
      3417 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 46) :
      if(EN < XROT4345[1]:
      ) GO TO 312
      if(EN > XROT4345(NROT4345):
      ) GO TO 3420
      DO 3418 J=2,NROT4345 
      if(EN <= XROT4345[J]:
      ) GO TO 3419 
      3418 CONTINUE    
      J=NROT4345
      3419 YXJ=math.log(YROT4345[J])
      YXJ1=math.log(YROT4345[J-1])
      XNJ=math.log(XROT4345[J])
      XNJ1=math.log(XROT4345[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3421
      3420 QIN(K,I)=PJ(2*K-49)*YROT4345(NROT4345)*XROT4345(NROT4345)/EN*1.e-16   
      3421 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 47) :
      if(EN < XROT4547[1]:
      ) GO TO 312
      if(EN > XROT4547(NROT4547):
      ) GO TO 3424
      DO 3422 J=2,NROT4547 
      if(EN <= XROT4547[J]:
      ) GO TO 3423 
      3422 CONTINUE    
      J=NROT4547
      3423 YXJ=math.log(YROT4547[J])
      YXJ1=math.log(YROT4547[J-1])
      XNJ=math.log(XROT4547[J])
      XNJ1=math.log(XROT4547[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3425
      3424 QIN(K,I)=PJ(2*K-49)*YROT4547(NROT4547)*XROT4547(NROT4547)/EN*1.e-16   
      3425 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      # 
      else if(K == 48) :
      if(EN < XROT4749[1]:
      ) GO TO 312
      if(EN > XROT4749(NROT4749):
      ) GO TO 3428
      DO 3426 J=2,NROT4749 
      if(EN <= XROT4749[J]:
      ) GO TO 3427 
      3426 CONTINUE    
      J=NROT4749
      3427 YXJ=math.log(YROT4749[J])
      YXJ1=math.log(YROT4749[J-1])
      XNJ=math.log(XROT4749[J])
      XNJ1=math.log(XROT4749[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QIN(K,I)=PJ(2*K-49)*math.exp(A*math.log(EN)+B)*1.e-16
      GO TO 3429
      3428 QIN(K,I)=PJ(2*K-49)*YROT4749(NROT4749)*XROT4749(NROT4749)/EN*1.e-16   
      3429 if(EN > 3.0) PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      else:
      WRITE(6,997) K
      # endif
      # CALCULATE ENHANCEMENT OF ROTATION DUE TO VIBRATIONAL RESONANCES
      QRES=0.0
      if(EN > XROT(NROT):
      ) GO TO 3113
      if(EN <= XROT[1]:
      ) GO TO 3113
      DO 3111 L=1,NROT
      if(EN <= XROT(L):
      ) GO TO 3112
      3111 CONTINUE
      L=NROT
      3112 A=(YROT(L)-YROT(L-1))/(XROT(L)-XROT(L-1))
      B=(XROT(L-1)*YROT(L)-XROT(L)*YROT(L-1))/(XROT(L-1)-XROT(L))
      QRES=(A*EN+B)*PJ(2*K-49)*1.e-16                          
      3113 QIN(K,I)=QIN(K,I)+QRES   
      QRSUM=QRSUM+QRES  
      312 CONTINUE
      # FORCE ROTATIONAL X-SECTION TO FALL AS 1/E**2 ABOVE 3 EV
      c NB 1/E ALREADY USED SO ONLY 1/E EXTRA
      if(EN < 3.0):
      GO TO 379
      DO 315 K=1,48
      315 QIN(K,I)=QIN(K,I)*(3.0/EN)
      #
      # SCALE ROTATIONAL X-SECTIONS BY ROTSCALE
      379 DO 3456 K=1,48
      3456 QIN(K,I)=QIN(K,I)*ROTSCALE
      #  SUPERELASTIC V1
      #  379 IF(EN == 0.0) GO TO 400
      if(EN == 0.0):
      GO TO 400
      if((EN+EIN[50]:
      ) > XVIB[NVIB]) GO TO 382 
      DO 380 J=2,NVIB
      if((EN+EIN[50]:
      ) <= XVIB[J]) GO TO 381
      380 CONTINUE
      J=NVIB
      381 A=(YVIB1[J]-YVIB1[J-1])/(XVIB[J]-XVIB[J-1])
      B=(XVIB[J-1]*YVIB1[J]-XVIB[J]*YVIB1[J-1])/(XVIB[J-1]-XVIB[J])
      QIN[49][I]=(A*(EN+EIN[50])+B)*(EN+EIN[50])/EN
      QIN[49][I]=QIN[49][I]*APOP2/(1.0+APOP2)*1.e-16
      GO TO 383
      382 QIN[49][I]=YVIB1(NVIB)*(XVIB[NVIB]/EN)*APOP2/(1.0+APOP2)*1.e-16
      383 if(EN > 6.0) PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      #  VIB1                     
      400 if(EN <= EIN[50]) GO TO 450    
      if(EN > XVIB[NVIB]):
      GO TO 430                                
      DO 410 J=2,NVIB                                                  
      if(EN <= XVIB[J]):
      GO TO 420                                      
      410 CONTINUE                                                          
      J=NVIB                                                           
      420 A=(YVIB1[J]-YVIB1[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB1[J]-XVIB[J]*YVIB1[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[50][I]=(A*EN+B)/(1.0+APOP2)*1.e-16
      GO TO 440
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      430 QIN[50][I]=YVIB1(NVIB)*(XVIB[NVIB]/EN)/(1.0+APOP2)*1.e-16
      440 if(EN > 6.0) PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])] 
      #                                                                       
      450 if(EN <= EIN[51]) GO TO 500                     
      if(EN > XVIB[NVIB]):
      GO TO 480                   
      DO 460 J=2,NVIB                                                  
      if(EN <= XVIB[J]):
      GO TO 470                                      
      460 CONTINUE                                                          
      J=NVIB                                                           
      470 A=(YVIB2[J]-YVIB2[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB2[J]-XVIB[J]*YVIB2[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[51][I]=(A*EN+B)*1.e-16
      GO TO 490
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      480 QIN[51][I]=YVIB2(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      490 if(EN > 6.0) PEQIN[51][I]=PEQEL[2][(I-IOFFN[51])]              
      #                                                                       
      500 if(EN <= EIN[52]) GO TO 550 
      if(EN > XVIB[NVIB]):
      GO TO 530                           
      DO 510 J=2,NVIB                                                  
      if(EN <= XVIB[J]):
      GO TO 520                                      
      510 CONTINUE                                                          
      J=NVIB                                                           
      520 A=(YVIB3[J]-YVIB3[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB3[J]-XVIB[J]*YVIB3[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[52][I]=(A*EN+B)*1.e-16    
      GO TO 540
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      530 QIN[52][I]=YVIB3(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      540 if(EN > 6.0) PEQIN[52][I]=PEQEL[2][(I-IOFFN[52])]
      #                                                                       
      550 if(EN <= EIN[53]) GO TO 600   
      if(EN > XVIB[NVIB]):
      GO TO 580                                   
      DO 560 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 570                                      
      560 CONTINUE                                                          
      J=NVIB                                                           
      570 A=(YVIB4[J]-YVIB4[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB4[J]-XVIB[J]*YVIB4[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[53][I]=(A*EN+B)*1.e-16   
      GO TO 590
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      580 QIN[53][I]=YVIB4(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      590 if(EN > 6.0) PEQIN[53][I]=PEQEL[2][(I-IOFFN[53])]     
      #                                                                       
      600 if(EN <= EIN[54]) GO TO 605   
      if(EN > XVIB[NVIB]):
      GO TO 603                                   
      DO 601 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 602                                      
      601 CONTINUE                                                          
      J=NVIB                                                           
      602 A=(YVIB5[J]-YVIB5[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB5[J]-XVIB[J]*YVIB5[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[54][I]=(A*EN+B)*1.e-16   
      GO TO 604
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      603 QIN[54][I]=YVIB5(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      604 if(EN > 6.0) PEQIN[54][I]=PEQEL[2][(I-IOFFN[54])]                  
      # A1 DELTA                                                                   
      605 if(EN <= EIN[55]) GO TO 610
      if(EN > XEXC1(NEXC1):
      ) GO TO 608                                 
      DO 606 J=2,NEXC1                                                  
      if(EN <= XEXC1[J]:
      ) GO TO 607                                      
      606 CONTINUE                                                          
      J=NEXC1                                                           
      607 A=(YEXC1[J]-YEXC1[J-1])/(XEXC1[J]-XEXC1[J-1])                     
      B=(XEXC1[J-1]*YEXC1[J]-XEXC1[J]*YEXC1[J-1])/(XEXC1[J-1]-XEXC1[J]) 
      QIN[55][I]=(A*EN+B)*1.e-16     
      GO TO 609   
      # SCALE BY 1/E**2 ABOVE XEXC1(NEXC1) EV                                       
      608 QIN[55][I]=YEXC1(NEXC1)*(XEXC1(NEXC1)/EN)**2*1.e-16        
      609 if(EN > 6.0) PEQIN[55][I]=PEQEL[2][(I-IOFFN[55])] 
      #              
      610 if(EN <= EIN[56]) GO TO 615   
      if(EN > XVIB[NVIB]):
      GO TO 613                                   
      DO 611 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 612                                      
      611 CONTINUE                                                          
      J=NVIB                                                           
      612 A=(YVIB6[J]-YVIB6[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB6[J]-XVIB[J]*YVIB6[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[56][I]=(A*EN+B)*1.e-16   
      GO TO 614
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      613 QIN[56][I]=YVIB6(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      614 if(EN > 6.0) PEQIN[56][I]=PEQEL[2][(I-IOFFN[56])]                 
      #              
      615 if(EN <= EIN[57]) GO TO 620   
      if(EN > XVIB[NVIB]):
      GO TO 618                                   
      DO 616 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 617                                      
      616 CONTINUE                                                          
      J=NVIB                                                           
      617 A=(YVIB7[J]-YVIB7[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB7[J]-XVIB[J]*YVIB7[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[57][I]=(A*EN+B)*1.e-16   
      GO TO 619
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      618 QIN[57][I]=YVIB7(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      619 if(EN > 6.0) PEQIN[57][I]=PEQEL[2][(I-IOFFN[57])]                 
      #              
      620 if(EN <= EIN[58]) GO TO 625   
      if(EN > XVIB[NVIB]):
      GO TO 623                                   
      DO 621 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 622                                      
      621 CONTINUE                                                          
      J=NVIB                                                           
      622 A=(YVIB8[J]-YVIB8[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB8[J]-XVIB[J]*YVIB8[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[58][I]=(A*EN+B)*1.e-16   
      GO TO 624
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      623 QIN[58][I]=YVIB8(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      624 if(EN > 6.0) PEQIN[58][I]=PEQEL[2][(I-IOFFN[58])]                 
      # B1 SIGMA                                                                  
      625 if(EN <= EIN[59]) GO TO 630 
      if(EN > XEXC2(NEXC2):
      ) GO TO 628                  
      DO 626 J=2,NEXC2                                                  
      if(EN <= XEXC2[J]:
      ) GO TO 627                                      
      626 CONTINUE                                                          
      J=NEXC2                                                           
      627 A=(YEXC2[J]-YEXC2[J-1])/(XEXC2[J]-XEXC2[J-1])                     
      B=(XEXC2[J-1]*YEXC2[J]-XEXC2[J]*YEXC2[J-1])/(XEXC2[J-1]-XEXC2[J]) 
      QIN[59][I]=(A*EN+B)*1.e-16        
      GO TO 629   
      # SCALE BY 1/E**2 ABOVE XEXC2(NEXC2) EV                                     
      628 QIN[59][I]=YEXC2(NEXC2)*(XEXC2(NEXC2)/EN)**2*1.e-16      
      629 if(EN > (3.0*EIN[59])) PEQIN[61][I]=PEQEL[2][(I-IOFFN[59])]  
      #              
      630 if(EN <= EIN[60]) GO TO 635   
      if(EN > XVIB[NVIB]):
      GO TO 633                                   
      DO 631 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 632                                      
      631 CONTINUE                                                          
      J=NVIB                                                           
      632 A=(YVIB9[J]-YVIB9[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB9[J]-XVIB[J]*YVIB9[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[60][I]=(A*EN+B)*1.e-16   
      GO TO 634
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      633 QIN[60][I]=YVIB9(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      634 if(EN > 6.0) PEQIN[60][I]=PEQEL[2][(I-IOFFN[60])]                 
      #              
      635 if(EN <= EIN[61]) GO TO 640   
      if(EN > XVIB[NVIB]):
      GO TO 638                                   
      DO 636 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 637                                      
      636 CONTINUE                                                          
      J=NVIB                                                           
      637 A=(YVIB10[J]-YVIB10[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB10[J]-XVIB[J]*YVIB10[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[61][I]=(A*EN+B)*1.e-16   
      GO TO 639
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      638 QIN[61][I]=YVIB10(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      639 if(EN > 6.0) PEQIN[61][I]=PEQEL[2][(I-IOFFN[61])]                 
      #              
      640 if(EN <= EIN[62]) GO TO 645   
      if(EN > XVIB[NVIB]):
      GO TO 643                                   
      DO 641 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 642                                      
      641 CONTINUE                                                          
      J=NVIB                                                           
      642 A=(YVIB11[J]-YVIB11[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB11[J]-XVIB[J]*YVIB11[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[62][I]=(A*EN+B)*1.e-16   
      GO TO 644
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      643 QIN[62][I]=YVIB11(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      644 if(EN > 6.0) PEQIN[62][I]=PEQEL[2][(I-IOFFN[62])]                 
      #              
      645 if(EN <= EIN[63]) GO TO 650   
      if(EN > XVIB[NVIB]):
      GO TO 648                                   
      DO 646 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 647                                      
      646 CONTINUE                                                          
      J=NVIB                                                           
      647 A=(YVIB12[J]-YVIB12[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB12[J]-XVIB[J]*YVIB12[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[63][I]=(A*EN+B)*1.e-16   
      GO TO 649
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      648 QIN[63][I]=YVIB12(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      649 if(EN > 6.0) PEQIN[63][I]=PEQEL[2][(I-IOFFN[63])]                 
      #              
      650 if(EN <= EIN[64]) GO TO 655   
      if(EN > XVIB[NVIB]):
      GO TO 653                                   
      DO 651 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 652                                      
      651 CONTINUE                                                          
      J=NVIB                                                           
      652 A=(YVIB13[J]-YVIB13[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB13[J]-XVIB[J]*YVIB13[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[64][I]=(A*EN+B)*1.e-16   
      GO TO 654
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      653 QIN[64][I]=YVIB13(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      654 if(EN > 6.0) PEQIN[64][I]=PEQEL[2][(I-IOFFN[64])]                 
      #              
      655 if(EN <= EIN(65)) GO TO 660   
      if(EN > XVIB[NVIB]):
      GO TO 658                                   
      DO 656 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 657                                      
      656 CONTINUE                                                          
      J=NVIB                                                           
      657 A=(YVIB14[J]-YVIB14[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB14[J]-XVIB[J]*YVIB14[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[65][I]=(A*EN+B)*1.e-16   
      GO TO 659
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      658 QIN[65][I]=YVIB14(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      659 if(EN > 6.0) PEQIN[65][I]=PEQEL[2][(I-IOFFN(65))]                 
      #              
      660 if(EN <= EIN(66)) GO TO 665   
      if(EN > XVIB[NVIB]):
      GO TO 663                                   
      DO 661 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 662                                      
      661 CONTINUE                                                          
      J=NVIB                                                           
      662 A=(YVIB15[J]-YVIB15[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB15[J]-XVIB[J]*YVIB15[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[66][I]=(A*EN+B)*1.e-16   
      GO TO 664
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      663 QIN[66][I]=YVIB15(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      664 if(EN > 6.0) PEQIN[66][I]=PEQEL[2][(I-IOFFN(66))]                 
      #              
      665 if(EN <= EIN(67)) GO TO 670   
      if(EN > XVIB[NVIB]):
      GO TO 668                                   
      DO 666 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 667                                      
      666 CONTINUE                                                          
      J=NVIB                                                           
      667 A=(YVIB16[J]-YVIB16[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB16[J]-XVIB[J]*YVIB16[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[67][I]=(A*EN+B)*1.e-16   
      GO TO 669
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      668 QIN[67][I]=YVIB16(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      669 if(EN > 6.0) PEQIN[67][I]=PEQEL[2][(I-IOFFN(67))]                 
      #              
      670 if(EN <= EIN(68)) GO TO 675   
      if(EN > XVIB[NVIB]):
      GO TO 673                                   
      DO 671 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 672                                      
      671 CONTINUE                                                          
      J=NVIB                                                           
      672 A=(YVIB17[J]-YVIB17[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB17[J]-XVIB[J]*YVIB17[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[68][I]=(A*EN+B)*1.e-16   
      GO TO 674
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      673 QIN[68][I]=YVIB17(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      674 if(EN > 6.0) PEQIN[68][I]=PEQEL[2][(I-IOFFN(68))]                 
      #              
      675 if(EN <= EIN(69)) GO TO 680   
      if(EN > XVIB[NVIB]):
      GO TO 678                                   
      DO 676 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 677                                      
      676 CONTINUE                                                          
      J=NVIB                                                           
      677 A=(YVIB18[J]-YVIB18[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB18[J]-XVIB[J]*YVIB18[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[69][I]=(A*EN+B)*1.e-16   
      GO TO 679
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      678 QIN[69][I]=YVIB18(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      679 if(EN > 6.0) PEQIN[69][I]=PEQEL[2][(I-IOFFN(69))]                 
      #              
      680 if(EN <= EIN(70)) GO TO 685   
      if(EN > XVIB[NVIB]):
      GO TO 683                                   
      DO 681 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 682                                      
      681 CONTINUE                                                          
      J=NVIB                                                           
      682 A=(YVIB19[J]-YVIB19[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB19[J]-XVIB[J]*YVIB19[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[70][I]=(A*EN+B)*1.e-16   
      GO TO 684
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      683 QIN[70][I]=YVIB19(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      684 if(EN > 6.0) PEQIN[70][I]=PEQEL[2][(I-IOFFN(70))]                 
      #              
      685 if(EN <= EIN(71)) GO TO 690   
      if(EN > XVIB[NVIB]):
      GO TO 688                                   
      DO 686 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 687                                      
      686 CONTINUE                                                          
      J=NVIB                                                           
      687 A=(YVIB20[J]-YVIB20[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB20[J]-XVIB[J]*YVIB20[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[71][I]=(A*EN+B)*1.e-16   
      GO TO 689
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      688 QIN[71][I]=YVIB20(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      689 if(EN > 6.0) PEQIN[71][I]=PEQEL[2][(I-IOFFN(71))]                 
      #              
      690 if(EN <= EIN(72)) GO TO 1000  
      if(EN > XVIB[NVIB]):
      GO TO 693                                   
      DO 691 J=2,NVIB                                                 
      if(EN <= XVIB[J]):
      GO TO 692                                      
      691 CONTINUE                                                          
      J=NVIB                                                           
      692 A=(YVIB21[J]-YVIB21[J-1])/(XVIB[J]-XVIB[J-1])                     
      B=(XVIB[J-1]*YVIB21[J]-XVIB[J]*YVIB21[J-1])/(XVIB[J-1]-XVIB[J]) 
      QIN[72][I]=(A*EN+B)*1.e-16   
      GO TO 694
      # SCALE BY 1/E ABOVE XVIB[NVIB]
      693 QIN[72][I]=YVIB20(NVIB)*(XVIB[NVIB]/EN)*1.e-16
      694 if(EN > 6.0) PEQIN[72][I]=PEQEL[2][(I-IOFFN(72))]                 
      #  
      #   HERZBERG CONTINUUM  C1SIG +A#3DEL + A3SIG 
      # PART1                                                            
      1000 if(EN <= EIN(73)) GO TO 1030  
      if(EN > XEXC3(NEXC3):
      ) GO TO 1020                              
      DO 1010 J=2,NEXC3                                                 
      if(EN <= XEXC3[J]:
      ) GO TO 1015                                     
      1010 CONTINUE                                                          
      J=NEXC3                                                           
      1015 A=(YEXC3[J]-YEXC3[J-1])/(XEXC3[J]-XEXC3[J-1])                     
      B=(XEXC3[J-1]*YEXC3[J]-XEXC3[J]*YEXC3[J-1])/(XEXC3[J-1]-XEXC3[J]) 
      QIN[73][I]=(A*EN+B)*1.e-16                   
      GO TO 1021
      # SCALE BY 1/E ABOVE XEXC3(NEXC3)                            
      1020 QIN[73][I]=YEXC3(NEXC3)*(XEXC3(NEXC3)/EN)*1.e-16         
      1021 if(EN > (2.0*EIN(73))) PEQIN[73][I]=PEQEL[2][(I-IOFFN(73))]       
      # PART2                                                                      
      1030 if(EN <= EIN(74)) GO TO 1060
      if(EN > XEXC4(NEXC4):
      ) GO TO 1050                                
      DO 1040 J=2,NEXC4                                                 
      if(EN <= XEXC4[J]:
      ) GO TO 1045                                     
      1040 CONTINUE                                                          
      J=NEXC4                                                           
      1045 A=(YEXC4[J]-YEXC4[J-1])/(XEXC4[J]-XEXC4[J-1])                     
      B=(XEXC4[J-1]*YEXC4[J]-XEXC4[J]*YEXC4[J-1])/(XEXC4[J-1]-XEXC4[J]) 
      QIN[74][I]=(A*EN+B)*1.e-16                     
      GO TO 1060
      # SCALE BY 1/E ABOVE XEXC4(NEXC4)                            
      1050 QIN[74][I]=YEXC4(NEXC4)*(XEXC4(NEXC4)/EN)*1.e-16           
      1060 if(EN > (2.0*EIN(74))) PEQIN[74][I]=PEQEL[2][(I-IOFFN(74))]
      # PART3                                                                      
      if(EN <= EIN(75):
      ) GO TO 1100      
      if(EN > XEXC5(NEXC5):
      ) GO TO 1080                                
      DO 1070 J=2,NEXC5                                                 
      if(EN <= XEXC5[J]:
      ) GO TO 1075                                     
      1070 CONTINUE                                                          
      J=NEXC5                                                           
      1075 A=(YEXC5[J]-YEXC5[J-1])/(XEXC5[J]-XEXC5[J-1])                     
      B=(XEXC5[J-1]*YEXC5[J]-XEXC5[J]*YEXC5[J-1])/(XEXC5[J-1]-XEXC5[J]) 
      QIN[75][I]=(A*EN+B)*1.e-16              
      GO TO 1100
      # SCALE BY 1/E ABOVE XEXC5(NEXC5)                              
      1080 QIN[75][I]=YEXC5(NEXC5)*(XEXC5(NEXC5)/EN)*1.e-16              
      1100 if(EN > (2.0*EIN(75))) PEQIN[75][I]=PEQEL[2][(I-IOFFN(75))]
      # SUM OF TRANSITIONS TO B3SIGMA V=7 TO V=21
      if(EN <= EIN(76):
      ) GO TO 1150
      # USE BEF SCALING
      QIN[76][I]=0.00026/(EIN(76)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(76)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(76)+E[3])
      if(QIN[76][I]:
      < 0.0) QIN[76][I]=0.0  
      if(EN > (2.0*EIN(76):
      )) PEQIN[76][I]=PEQEL[2][(I-IOFFN(76))]
      #
      # SCHUMANN-RUNGE CONTINUUM 
      1150 if(EN <= EIN(77)) GO TO 1151
      # USE BEF SCALING
      QIN[77][I]=0.000408/(EIN(77)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(77)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(77)+E[3])
      1151 if(EN <= EIN(78)) GO TO 1152
      QIN[78][I]=0.000623/(EIN(78)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(78)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(78)+E[3])
      1152 if(EN <= EIN(79)) GO TO 1153
      QIN[79][I]=0.001016/(EIN(79)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(79)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(79)+E[3])
      1153 if(EN <= EIN(80)) GO TO 1154
      QIN[80][I]=0.001562/(EIN(80)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(80)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(80)+E[3])
      1154 if(EN <= EIN(81)) GO TO 1155
      QIN[81][I]=0.002312/(EIN(81)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(81)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(81)+E[3])
      1155 if(EN <= EIN(82)) GO TO 1156
      QIN[82][I]=0.003234/(EIN(82)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(82)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(82)+E[3])
      1156 if(EN <= EIN(83)) GO TO 1157
      QIN[83][I]=0.004362/(EIN(83)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(83)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(83)+E[3])
      1157 if(EN <= EIN(84)) GO TO 1158
      QIN[84][I]=0.005573/(EIN(84)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(84)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(84)+E[3])
      1158 if(EN <= EIN(85)) GO TO 1159
      QIN[85][I]=0.006930/(EIN(85)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(85)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(85)+E[3])
      1159 if(EN <= EIN(86)) GO TO 1160
      QIN[86][I]=0.008342/(EIN(86)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(86)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(86)+E[3])
      1160 if(EN <= EIN(87)) GO TO 1161
      QIN[87][I]=0.009692/(EIN(87)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(87)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(87)+E[3])
      # SUM OF RESONANCES (NON-DIPOLE) IN S-R CONTINUUM AT 8.20EV
      if(EN <= EIN(88):
      ) GO TO 1161      
      if(EN > XEXC6(NEXC6):
      ) GO TO 963                                
      DO 961 J=2,NEXC6                                                 
      if(EN <= XEXC6[J]:
      ) GO TO 962                                     
      961 CONTINUE                                                          
      J=NEXC6                                                           
      962 A=(YEXC6[J]-YEXC6[J-1])/(XEXC6[J]-XEXC6[J-1])                     
      B=(XEXC6[J-1]*YEXC6[J]-XEXC6[J]*YEXC6[J-1])/(XEXC6[J-1]-XEXC6[J]) 
      QIN[88][I]=(A*EN+B)*1.e-16          
      GO TO 1161
      # SCALE BY 1/E ABOVE XEXC6(NEXC6)                              
      963 QIN[88][I]=YEXC6(NEXC6)*(XEXC6(NEXC6)/EN)*1.e-16             
      # MORE SCHUMANN RUNGE CONTINUUM
      1161 if(EN <= EIN(89)) GO TO 1162
      QIN[89][I]=0.010816/(EIN(89)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(89)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(89)+E[3])
      1162 if(EN <= EIN(90)) GO TO 1163
      QIN[90][I]=0.011839/(EIN(90)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(90)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(90)+E[3])
      1163 if(EN <= EIN(91)) GO TO 1164
      QIN[91][I]=0.012580/(EIN(91)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(91)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(91)+E[3])
      1164 if(EN <= EIN(92)) GO TO 1165
      QIN[92][I]=0.013160/(EIN(92)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(92)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(92)+E[3])
      1165 if(EN <= EIN(93)) GO TO 1166
      QIN[93][I]=0.013432/(EIN(93)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(93)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(93)+E[3])
      1166 if(EN <= EIN(94)) GO TO 1167
      QIN[94][I]=0.013571/(EIN(94)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(94)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(94)+E[3])
      1167 if(EN <= EIN(95)) GO TO 1168
      QIN[95][I]=0.013425/(EIN(95)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(95)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(95)+E[3])
      1168 if(EN <= EIN(96)) GO TO 1169
      QIN[96][I]=0.012948/(EIN(96)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(96)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(96)+E[3])
      1169 if(EN <= EIN(97)) GO TO 1170
      QIN[97][I]=0.010892/(EIN(97)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(97)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(97)+E[3])
      1170 if(EN <= EIN(98)) GO TO 1171
      QIN[98][I]=0.006688/(EIN(98)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(98)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(98)+E[3])
      1171 if(EN <= EIN(99)) GO TO 1172
      QIN[99][I]=0.002784/(EIN(99)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(99)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(99)+E[3])
      1172 if(EN <= EIN(100)) GO TO 1173
      QIN(100,I)=0.001767/(EIN(100)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(100)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(100)+E[3])
      1173 if(EN <= EIN(101)) GO TO 1174
      QIN(101,I)=0.000633/(EIN(101)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(101)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(101)+E[3])
      1174 if(EN <= EIN(102)) GO TO 1175
      QIN(102,I)=0.000438/(EIN(102)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(102)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(102)+E[3])
      1175 if(EN <= EIN(103)) GO TO 1176
      QIN(103,I)=0.000465/(EIN(103)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(103)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(103)+E[3])
      #
      # E3 SIGMA V=0 'LONGEST BAND'
      1176 if(EN <= EIN(104)) GO TO 1177
      QIN(104,I)=0.008432/(EIN(104)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(104)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(104)+E[3])
      # ADD RESONANT COMPONENT TO LONG BAND
      if(EN > XEXC7(NEXC7):
      ) GO TO 966                                
      DO 964 J=2,NEXC7                                                
      if(EN <= XEXC7[J]:
      ) GO TO 965                                     
      964 CONTINUE                                                          
      J=NEXC7                                                           
      965 A=(YEXC7[J]-YEXC7[J-1])/(XEXC7[J]-XEXC7[J-1])                     
      B=(XEXC7[J-1]*YEXC7[J]-XEXC7[J]*YEXC7[J-1])/(XEXC7[J-1]-XEXC7[J]) 
      QIN(104,I)=QIN(104,I)+(A*EN+B)*1.e-16                       
      GO TO 1177
      # SCALE BY 1/E ABOVE XEXC7(NEXC7)                            
      966 QIN(104,I)=QIN(104,I)+YEXC7(NEXC7)*(XEXC7(NEXC7)/EN)*1.e-16       
      #
      # E3 SIGMA V=1 'SECOND BAND'
      1177 if(EN <= EIN(105)) GO TO 1178
      QIN(105,I)=0.007598/(EIN(105)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(105)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(105)+E[3])
      # E3 SIGMA V=2 'THIRD BAND'
      1178 if(EN <= EIN(106)) GO TO 1881
      QIN(106,I)=0.000829/(EIN(106)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(106)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(106)+E[3])
      # 
      # TRIPLET SUM BELOW IP
      # 
      1881 if(EN <= EIN(107)) GO TO 1179
      if(EN > XEXC8(NEXC8):
      ) GO TO 1884                              
      DO 1882 J=2,NEXC8                                                
      if(EN <= XEXC8[J]:
      ) GO TO 1883                                     
      1882 CONTINUE                                                          
      J=NEXC8                                                           
      1883 A=(YEXC8[J]-YEXC8[J-1])/(XEXC8[J]-XEXC8[J-1])                     
      B=(XEXC8[J-1]*YEXC8[J]-XEXC8[J]*YEXC8[J-1])/(XEXC8[J-1]-XEXC8[J])
      QIN(107,I)=(A*EN+B)*1.e-16                 
      GO TO 1179
      # SCALE BY 1/E**1.5 ABOVE XEXC8(NEXC8)
      1884 QIN(107,I)=YEXC8(NEXC8)*((XEXC8(NEXC8)/EN)**1.5)*1.e-16           
      #  
      1179 if(EN <= EIN(108)) GO TO 1180
      QIN(108,I)=0.000644/(EIN(108)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(108)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(108)+E[3])
      # 
      1180 if(EN <= EIN(109)) GO TO 1181
      QIN(109,I)=0.001460/(EIN(109)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(109)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(109)+E[3])
      # 
      1181 if(EN <= EIN(110)) GO TO 1182
      QIN(110,I)=0.000818/(EIN(110)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(110)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(110)+E[3])
      # 
      1182 if(EN <= EIN(111)) GO TO 1183
      QIN(111,I)=0.000736/(EIN(111)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(111)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(111)+E[3])
      # 
      1183 if(EN <= EIN(112)) GO TO 1184
      QIN(112,I)=0.000598/(EIN(112)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(112)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(112)+E[3])
      # 
      1184 if(EN <= EIN(113)) GO TO 1185
      QIN(113,I)=0.001482/(EIN(113)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(113)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(113)+E[3])
      # 
      1185 if(EN <= EIN(114)) GO TO 1186
      QIN(114,I)=0.000425/(EIN(114)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(114)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(114)+E[3])
      # 
      1186 if(EN <= EIN(115)) GO TO 1187
      QIN(115,I)=0.001669/(EIN(115)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(115)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(115)+E[3])
      # 
      1187 if(EN <= EIN(116)) GO TO 1188
      QIN(116,I)=0.001766/(EIN(116)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(116)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(116)+E[3])
      # 
      1188 if(EN <= EIN(117)) GO TO 1189
      QIN(117,I)=0.001613/(EIN(117)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(117)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(117)+E[3])
      #
      1189 DO  1200 JK=77,117
      if(QIN(JK,I):
      <= 0.0) QIN(JK,I)=0.0
      if(EN <= (2.0*EIN(JK):
      )) GO TO 1200
      PEQIN(JK,I)=PEQEL[2][(I-IOFFN(JK))]
      1200 CONTINUE
      # NEUTRAL DISSOCIATION ABOVE IONISATION ENERGY
      # 
      if(EN <= EIN(118):
      ) GO TO 1301
      QIN(118,I)=0.001746/(EIN(118)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(118)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(118)+E[3])
      # 
      1301 if(EN <= EIN(119)) GO TO 1302
      QIN(119,I)=0.003329/(EIN(119)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(119)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(119)+E[3])
      # 
      1302 if(EN <= EIN(120)) GO TO 1303
      QIN(120,I)=0.006264/(EIN(120)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(120)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(120)+E[3])
      # 
      1303 if(EN <= EIN(121)) GO TO 1304
      QIN(121,I)=0.013513/(EIN(121)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(121)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(121)+E[3])
      # 
      1304 if(EN <= EIN(122)) GO TO 1885
      QIN(122,I)=0.011373/(EIN(122)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(122)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(122)+E[3])
      # 
      # TRIPLET SUM ABOVE IP
      # 
      1885 if(EN <= EIN(123)) GO TO 1305
      if(EN > XEXC9(NEXC9):
      ) GO TO 1888                              
      DO 1886 J=2,NEXC9                                                
      if(EN <= XEXC9[J]:
      ) GO TO 1887                                     
      1886 CONTINUE                                                          
      J=NEXC9                                                           
      1887 A=(YEXC9[J]-YEXC9[J-1])/(XEXC9[J]-XEXC9[J-1])                     
      B=(XEXC9[J-1]*YEXC9[J]-XEXC9[J]*YEXC9[J-1])/(XEXC9[J-1]-XEXC9[J]) 
      QIN(123,I)=(A*EN+B)*1.e-16                     
      GO TO 1305
      # SCALE BY 1/E**1.5 ABOVE XEXC9(NEXC9)
      1888 QIN(123,I)=YEXC9(NEXC9)*(XEXC9(NEXC9)/EN)**1.5*1.e-16        
      #  
      1305 if(EN <= EIN(124)) GO TO 1306
      QIN(124,I)=0.006052/(EIN(124)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(124)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(124)+E[3])
      # 
      1306 if(EN <= EIN(125)) GO TO 1307
      QIN(125,I)=0.006051/(EIN(125)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(125)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(125)+E[3])
      # 
      1307 if(EN <= EIN(126)) GO TO 1308
      QIN(126,I)=0.004993/(EIN(126)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(126)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(126)+E[3])
      # 
      1308 if(EN <= EIN(127)) GO TO 1309
      QIN(127,I)=0.005045/(EIN(127)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(127)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(127)+E[3])
      # 
      1309 if(EN <= EIN(128)) GO TO 1310
      QIN(128,I)=0.004962/(EIN(128)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(128)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(128)+E[3])
      # 
      1310 if(EN <= EIN(129)) GO TO 1311
      QIN(129,I)=0.006520/(EIN(129)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(129)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(129)+E[3])
      # 
      1311 if(EN <= EIN(130)) GO TO 1312
      QIN(130,I)=0.008432/(EIN(130)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(130)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(130)+E[3])
      # 
      1312 if(EN <= EIN(131)) GO TO 1313
      QIN(131,I)=0.011304/(EIN(131)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(131)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(131)+E[3])
      # 
      1313 if(EN <= EIN(132)) GO TO 1314
      QIN(132,I)=0.015172/(EIN(132)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(132)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(132)+E[3])
      # 
      1314 if(EN <= EIN(133)) GO TO 1315
      QIN(133,I)=0.022139/(EIN(133)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(133)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(133)+E[3])
      # 
      1315 if(EN <= EIN(134)) GO TO 1316
      QIN(134,I)=0.032682/(EIN(134)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(134)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(134)+E[3])
      # 
      1316 if(EN <= EIN(135)) GO TO 1317
      QIN(135,I)=0.039457/(EIN(135)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(135)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(135)+E[3])
      # 
      1317 if(EN <= EIN(136)) GO TO 1318
      QIN(136,I)=0.029498/(EIN(136)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(136)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(136)+E[3])
      # 
      1318 if(EN <= EIN(137)) GO TO 1319
      QIN(137,I)=0.018923/(EIN(137)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(137)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(137)+E[3])
      # 
      1319 if(EN <= EIN(138)) GO TO 1320
      QIN(138,I)=0.017762/(EIN(138)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(138)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(138)+E[3])
      # 
      1320 if(EN <= EIN(139)) GO TO 1321
      QIN(139,I)=0.015115/(EIN(139)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(139)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(139)+E[3])
      # 
      1321 if(EN <= EIN(140)) GO TO 1322
      QIN(140,I)=0.013220/(EIN(140)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(140)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(140)+E[3])
      # 
      1322 if(EN <= EIN(141)) GO TO 1323
      QIN(141,I)=0.009540/(EIN(141)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(141)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(141)+E[3])
      # 
      1323 if(EN <= EIN(142)) GO TO 1324
      QIN(142,I)=0.005854/(EIN(142)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(142)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(142)+E[3])
      # 
      1324 if(EN <= EIN(143)) GO TO 1325
      QIN(143,I)=0.008733/(EIN(143)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(143)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(143)+E[3])
      # 
      1325 if(EN <= EIN(144)) GO TO 1326
      QIN(144,I)=0.007914/(EIN(144)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(144)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(144)+E[3])
      # 
      1326 if(EN <= EIN(145)) GO TO 1327
      QIN(145,I)=0.008002/(EIN(145)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(145)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(145)+E[3])
      # 
      1327 if(EN <= EIN(146)) GO TO 1328
      QIN(146,I)=0.006519/(EIN(146)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(146)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(146)+E[3])
      # 
      1328 if(EN <= EIN(147)) GO TO 1329
      QIN(147,I)=0.003528/(EIN(147)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(147)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(147)+E[3])
      # 
      1329 if(EN <= EIN(148)) GO TO 1330
      QIN(148,I)=0.001469/(EIN(148)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(148)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(148)+E[3])
      #
      1330 DO  1340 JK=118,148
      if(QIN(JK,I):
      <= 0.0) QIN(JK,I)=0.0
      if(EN <= (2.0*EIN(JK):
      )) GO TO 1340
      PEQIN(JK,I)=PEQEL[2][(I-IOFFN(JK))]
      1340 CONTINUE
      # LOAD BREMSSTRAHLUNG X-SECTION
      QIN(149,I)=0.0
      if(EN <= 1000.):
      GO TO 1350
      DO 1341 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 1342
      1341 CONTINUE
      J=NBREM
      1342 A=(math.log(Z8T[J])-math.log(Z8T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z8T[J])*EBRM[J-1]-math.log(Z8T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN(149,I)=math.exp(A*EN+B)*2.e-24
      1350 CONTINUE
      # SCHUMANN RUNGE SUM
      SUMSR=0.0
      DO 1400 JK=77,103 
      1400 SUMSR=SUMSR+QIN(JK,I)
      # DISS SUM ABOVE IONISATION ENERGY
      SUMDISI=0.0
      DO 1501 JK=118,148
      1501 SUMDISI=SUMDISI+QIN(JK,I)
      # SUM DISS LOW
      SUMDISL=0.0
      DO 1502 JK=107,117 
      1502 SUMDISL=SUMDISL+QIN(JK,I)
      # SUM ROT
      SUMROT=0.0
      DO 1508 JK=1,48
      1508 SUMROT=SUMROT+QIN(JK,I)
      #     WRITE(6,8747) SUMROT,I,EN
      #8747 print(' SUMROT=','%.4f' % ,' I=',I5,' EN=','%.4f' % )
      # SUMVIB
      SUMVIB=0.0
      DO 1506 JK=49,54 
      1506 SUMVIB=SUMVIB+QIN(JK,I)
      SUMVIB=SUMVIB+QIN[55][I]+QIN[56][I]+QIN[57][I]
      DO 1507 JK=60,72 
      1507 SUMVIB=SUMVIB+QIN(JK,I)
      # SUM HERZBERG
      SUMHERZ=QIN[73][I]+QIN[74][I]+QIN[75][I]  
      # SUM E3SIGMA
      SUME3=QIN(104,I)+QIN(105,I)+QIN(106,I)
      # SUM ION
      SUMION=0.0
      DO 1503 JK=1,NION
      1503 SUMION=SUMION+QION(JK,I)
      # SUM OF EXCITATIONS (NO ROTATIONS)
      SUMEXC=0.0
      DO 1504 JK=49,NIN   
      1504 SUMEXC=SUMEXC+QIN(JK,I)   
      SUMEXC=SUMEXC+Q[4][I]
      Q[1][I]=Q[2][I]+SUMION+SUMEXC
      #     WRITE(6,889) EN,Q[2][I],SUMEXC,SUMION,Q[1][I],Q[4][I],I 
      # 889 print(' EN=','%.4f' % ,' ELAS=','%.4f' % ,' EXC=','%.4f' % ,' ION=','%.4f' % ,
      #    /' TOT=','%.4f' % ,' Q4    =','%.4f' % ,' I=',I5)
      #     SUMINEL=SUMION+SUMEXC
      #     WRITE(6,890) EN,SUMION,SUMEXC,SUMINEL
      # 890 print(' EN=','%.4f' % ,' SUMION=','%.4f' % ,' SUMEXC=','%.4f' % ,' SUMINEL=',
      #    /'%.4f' % )
      9900 CONTINUE                                                          
      #  SAVE COMPUTE TIME 
      DO 2000 K=1,148
      J=149-K
      if(EFINAL <= EIN[J]:
      ) NIN=J-1
      2000 CONTINUE
      if(NIN < 52):
      NIN=52
      if(EFINAL > 1000.):
      NIN=149                                     
      #                                                                       
      return      
      # end 
def GAS16(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]         
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250],PJ(220) 
      DIMENSION XELA[216],YELA[216],YMOM(216),YEPS(216),XROT(70),YROT(70),XVB1(87),YVB1(87),XVB2(69),YVB2(69),XVB3(70),YVB3(70),XVB4[50],YVB4[50],XVB5[40],YVB5[40],XVB6[41],YVB6[41],XVB7[42],YVB7[42],XVB8[40],YVB8[40],XVB9[35],YVB9[35],XVB10[35],YVB10[35],XVB11[35],YVB11[35],XVB12[33],YVB12[33],XVB13[31],YVB13[31],XVB14[28],YVB14[28],XVB15[32],YVB15[32],XTRP1[23],YTRP1[23],YTP1M[23],XTRP2[23],YTRP2[23],YTP2M[23],XTRP3[21],YTRP3[21],YTP3M[21],XTRP4[22],YTRP4[22],YTP4M[22],XTRP5[23],YTRP5[23],YTP5M[23],XTRP6[21],YTRP6[21],YTP6M[21],XTRP7[21],YTRP7[21],YTP7M[21],XTRP8[21],YTRP8[21],YTP8M[21],XTRP9[20],YTRP9[20],YTP9M[20],XTRP10[20],YTRP10[20],YTP10M[20],XTRP11[19],YTRP11[19],YTP11M[19],XTRP12[22],YTRP12[22],YTP12M[22],XTRP13[10],YTRP13[10],YTP13M[10],XTRP14[10],YTRP14[10],YTP14M[10],XSNG1[19],YSNG1[19],YSG1M[19],XSNG2[17],YSNG2[17],YSG2M[17],XSNG3[17],YSNG3[17],YSG3M[17],XSNG4[19],YSNG4[19],YSG4M[19],XSNG5[17],YSNG5[17],YSG5M[17],XSNG6[16],YSNG6[16],YSG6M[16],XSNG7[12],YSNG7[12],YSG7M[12],XSNG8[8],YSNG8[8],YSG8M[8],XSNG9[16],YSNG9[16],YSG9M[16],XSNG10[8],YSNG10[8],YSG10M[8],XSNG11[8],YSNG11[8],YSG11M[8],XSNG12[8],YSNG12[8],YSG12M[8],XSNG13[8],YSNG13[8],YSG13M[8],XSNG14[8],YSNG14[8],YSG14M[8],XSNG15[8],YSNG15[8],YSG15M[8],XKSH(89),YKSH(89),XION(87),YION(87),XION1(87),YION1(87),XION2[63],YION2[63],XION3[48],YION3[48],XION4[54],YION4[54],IOFFN(127),IOFFION[12]
      DIMENSION Z7T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10]       
      CHARACTER*25 NAME                                                 
      XELA=[0.00,.001,.0015,.0018,.002,.0025,.003,.004,.005,.006,.007,.008,.009,.010,.012,.015,.018,.020,.025,.030,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.15,0.18,    0.20,0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70,1.80,1.85,1.90,1.95,2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.60,3.70,3.80,3.90,4.00,4.50,5.00,5.50,6.00,6.50,7.00,8.00,9.00,10.0,12.0,15.0,17.0,20.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,10000.,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC +ROTATION X-SECTION
      YELA=[1.12,1.377,1.446,1.484,1.510,1.570,1.640,1.738,1.830,1.928,2.020,2.082,2.151,2.210,2.362,2.570,2.780,2.900,3.170,3.430,3.850,4.170,4.480,4.750,5.000,5.250,5.450,5.850,6.300,6.800,      7.000,7.600,8.000,8.600,9.000,9.200,9.300,9.450,9.650,9.840, 10.00,10.24,10.48,10.67,11.05,11.71,12.90,14.90,16.10,17.60,17.40,17.10,16.30,17.10,20.30,24.10,21.70,18.80,17.90,22.20,24.90,21.70,18.00,16.80,20.90,22.45,20.30,17.00,16.80,18.70,18.70,16.50,15.30,15.70,16.00,15.40,14.60,14.50,14.70,14.30,13.50,13.80,13.60,13.30,13.15,13.00,12.90,11.90,11.60,11.40,11.20,11.10,11.10,10.90,10.80,11.20,11.40,11.80,11.80,11.30,10.70,9.660,8.740,8.090,7.530,7.130,6.380,5.840,5.330,4.940,4.650,4.100,3.600,3.300,2.990,2.620,2.320,2.100,1.930,1.780,1.660,1.470,1.300,1.200,1.110,1.030,0.870,0.765,0.670,0.600,0.496,0.420,0.364,0.321,0.288,0.261,0.219,0.189,0.167,0.149,0.135,0.109,.0919,.0795,.0702,.0570,.0483,.0420,.0372,.0336,.0306,.0262,.0231,.0207,.0189,.0174,.0148,.0130,.0118,.0108,.00953,.00868,.00808,.00764,.00730,.00703,.00664,.00637,.00617,.00602, .00591,.00572,.00560,.00552,.00546,.00539,.00535,.00532,.00530,.00529,.00528,.00527,.00525,.00525,.00525,.00524,.00524,.00524,.00524,.005236,26*.005234]
      # ELASTIC+ROTATION MOMENTUM TRANSFER X-SECTION           
      YMOM=[1.12,1.377,1.446,1.484,1.510,1.570,1.640,1.738,1.830,1.928,2.020,2.082,2.151,2.210,2.362,2.570,2.780,2.900,3.170,3.430,      3.900,4.350,4.750,5.100,5.410,5.690,5.950,6.450,7.100,7.590,7.900,8.500,9.000,9.700,10.30,10.90,11.25,11.40,11.30,11.10,10.90,10.65,10.45,10.65,10.80,11.85,13.60,16.00,17.40,19.00,18.80,18.60,17.80,18.50,21.70,25.50,23.10,20.20,19.30,23.50,26.20,23.00,19.30,18.10,22.20,23.70,21.50,18.10,17.80,19.60,19.40,17.10,15.70,15.90,15.90,15.10,14.00,13.50,13.30,12.50,11.40,11.40,11.00,10.60,10.20,10.00,9.900,9.100,8.900,8.700,8.500,8.400,8.300,8.200,8.200,8.300,8.400,8.500,8.500,8.300,7.800,7.200,6.700,6.310,5.950,5.600,4.700,4.000,3.500,3.000,2.650,2.100,1.650,1.370,1.179,0.861,0.662,0.527,0.431,0.360,0.306,0.230,0.179,0.144,0.119,0.100,.0687,.0504,.0387,.0307,.0208,.0151,.0115,.00904,.00733,.00607,.00438,.00332,.00261,.00211,.00174,.00116,8.37e-4,6.33e-4,4.97e-4,3.32e-4,2.39e-4,1.81e-4,1.43e-4,1.15e-4,9.56e-5,6.91e-5,5.26e-5,4.16e-5,3.39e-5,2.82e-5,1.92e-5,1.41e-5,1.09e-5,8.71e-6,6.04e-6,4.50e-6,3.52e-6,2.86e-6,2.38e-6,2.02e-6,1.52e-6,1.20e-6,9.83e-7,8.21e-7,6.99e-7,5.00e-7,3.77e-7,2.97e-7,2.40e-7,1.68e-7,1.25e-7,9.72e-8,7.78e-8,6.38e-8,5.34e-8,3.91e-8,2.99e-8,2.37e-8,1.93e-8,1.60e-8,1.07e-8,7.73e-9,5.84e-9,4.58e-9,3.04e-9,2.17e-9,1.63e-9,1.27e-9,1.01e-9,8.31e-10,5.88e-10,4.37e-10,3.38e-10,2.69e-10,2.19e-10,1.41e-10,9.86e-11,7.27e-11,5.57e-11,3.57e-11,2.48e-11,1.83e-11,1.40e-11,1.11e-11,8.96e-12,6.22e-12,4.57e-12,3.50e-12,2.77e-12,2.24e-12]
# ELASTIC ANISOTROPY def EPSILON
      # EPSILON=1.0-YEPS
      YEPS=[20*1.00,1.01974,1.06500,1.09085,1.11025,1.12263,1.12532,1.13709,1.15311,1.18909,1.17321,1.19143,1.17651,1.18619,1.19046,1.21464,1.27297,1.30840,1.30369,1.25314,1.19066,1.13451,1.06001,0.99571,0.99719,0.96607,1.01794,1.08128,1.11047,1.12077,1.11898,1.12034,1.13112,1.13750,1.12243,1.10323,1.08700,1.09660,1.11142,1.11699,1.08770,1.07822,1.08972,1.10807,1.11576,1.09314,1.08340,1.08852,1.09688,1.08914,1.07212,1.05611,1.05451,1.03920,1.01911,0.99063,0.97078,0.93840,0.89677,0.85772,0.81253,0.76918,0.74264,0.71789,0.70105,0.67098,0.66198,0.65948,0.65567,0.65920,0.65352,0.64764,0.64463,0.63220,0.63846,0.64810,0.62303,0.61725,0.59484,0.59484,0.61407,0.60653,0.62889,0.65829,0.67702,0.69139,0.68467,0.61702,0.54773,0.51113,0.44953,0.40500,0.34012,0.28400,0.24224,0.22315,0.16753,0.13474,0.11089,0.09315,0.08049,0.07031,0.05555,0.04637,0.03828,0.03277,0.02863,0.02168,0.01705,0.01436,0.01227,0.00951,0.00782,0.00665,0.00576,0.00508,0.00454,0.00377,0.00322,0.00279,0.00248,.002212,.001759,.001461,.001246,.001084,8.62e-4,7.12e-4,6.07e-4,5.31e-4,4.64e-4,4.18e-4,3.44e-4,2.91e-4,2.52e-4,2.21e-4,1.97e-4,1.53e-4,1.249e-4,1.042e-4,8.95e-5,6.83e-5,5.45e-5,4.49e-5,3.79e-5,3.25e-5,2.83e-5,2.20e-5,1.77e-5,1.47e-5,1.24e-5,1.062e-5,7.65e-6,5.73e-6,4.48e-6,3.60e-6,2.48e-6,1.81e-6,1.38e-6,1.09e-6,8.85e-7,7.32e-7,5.24e-7,3.94e-7,3.07e-7,2.46e-7,2.02e-7,1.32e-7,9.28e-8,6.89e-8,5.31e-8,3.44e-8,2.40e-8,1.77e-8,1.36e-8,1.07e-8,8.70e-9,6.03e-9,4.41e-9,3.36e-9,2.64e-9,2.13e-9,1.34e-9,9.19e-10,6.67e-10,5.04e-10,3.16e-10,2.16e-10,1.57e-10,1.18e-10,9.3D-11,7.4D-11,5.1D-11,3.7D-11,2.8D-11,2.2D-11,1.7D-11]
# ROTATIONAL RESONANCE def 
      XROT=[0.00,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70,1.80,1.85,1.90,1.95,1.98,2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.69,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.60,3.70,3.80,3.90,4.00,4.10,4.20,4.30,4.40,4.50,4.60,4.70,4.80,4.90,5.00,5.10,5.20,5.30,5.40,5.50,5.60,5.70,5.80,5.90]
      YROT=[0.00,0.00,0.00,0.10,0.20,0.30,0.40,1.10,2.30,4.30,5.50,7.00,6.80,7.10,6.50,5.70,6.50,9.70,13.5,11.1,8.20,7.30,11.6,14.3,11.1,7.40,6.20,10.2,12.0,11.8,9.60,6.30,6.10,8.00,8.00,5.80,4.60,5.00,5.30,4.70,3.90,3.80,4.00,3.50,2.70,3.00,2.80,2.50,2.40,2.20,2.10,1.90,1.70,1.50,1.20,1.00,0.80,0.70,0.60,0.50,0.40,0.30,0.20,0.10,0.00,0.00,0.00,0.00,0.00,0.00]
      # ALLAN AND VICIC  FROM 1.6 EV TO 4.5 EV FOR VIBRATIONS           
      XVB1=[.2889,.289,.290,.292,.293,.295,.300,.310,.320,.330,.340,.360,.380,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.35,1.40,1.45,1.50,1.55,1.60,1.65,1.70,1.75,1.80,1.85,1.90,1.95,2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.90,4.00,4.50,5.00,7.50,10.0,15.0,18.0,20.0,22.5,25.0,30.0,50.0,80.0]            
      # V1                                            
      YVB1=[.00,.00018,.00045,.00072,.00082,.00099,.00131,.00174,.00203,.00225,.00242,.00267,.00283,.00294,.00340,.00360,.0039,.0044,.0054,.0066,.0086,.0125,.0182,.0230,.0295,.0370,.0475,.0580,.0750,.103,.178,.320,.600,1.20,2.40,4.35,4.40,2.71,1.67,2.40,3.62,4.90,4.46,3.31,2.26,1.74,2.90,4.15,4.25,2.95,1.61,1.97,2.95,3.43,2.30,1.41,1.63,2.30,2.01,1.54,1.12,1.27,1.37,1.27,0.96,0.84,.820,.768,.648,.600,.624,.528,.432,.390,.330,.230,.075,.025,.012,.031,.061,.156,.101,.066,.022,.012,.006]  
      # V2              
      XVB2=[.5742,.600,.700,.800,.900,1.00,1.10,1.20,1.30,1.40,1.50,1.55,1.60,1.65,1.70,1.75,1.80,1.85,1.90,1.95,2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.70,3.80,3.90,4.00,4.50,5.00,7.50,10.0,15.0,18.0,20.0,22.5,25.0,30.0,50.0,80.0]
      YVB2=[.0,1.e-5,4.e-5,9.e-5,1.5D-4,2.0D-4,2.8D-4,3.2D-4,5.e-4,8.1D-4,.0026,.0059,.0115,.026,.051,.123,.236,.491,0.94,2.26,2.90,2.55,2.20,1.45,.856,.682,1.33,2.40,3.05,2.78,1.70,.672,.800,1.48,1.61,1.25,.805,.501,.670,.890,.890,.650,.444,.428,.539,.491,.364,.225,.285,.238,.200,.168,.156,.127,.101,.085,.072,.042,.014,.004,.002,.006,.012,.030,.020,.012,.004,.002,.001]
      # V3                        
      XVB3=[.8559,.900,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.65,1.70,1.75,1.80,1.85,1.90,1.95,2.00,2.05,2.10,2.15,2.16,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.50,5.00,7.50,10.0,15.0,18.0,20.0,22.5,25.0,30.0,50.0,80.0]
      YVB3=[.0,1.e-5,3.7D-5,7.e-5,9.8D-5,1.3D-4,1.8D-4,4.1D-4,.0021,.0050,.012,.028,.071,.160,.300,.807,1.30,1.87,2.11,2.55,2.57,2.35,1.52,.617,.438,.656,1.46,1.75,1.81,1.38,.630,.250,.409,.747,1.00,.682,.309,.144,.263,.412,.360,.212,.131,.148,.183,.200,.157,.114,.079,.101,.101,.079,.057,.053,.058,.053,.044,.035,.023,.008,.0023,.001,.003,.007,.017,.011,.006,.002,.001,.0005]
      # V4
      XVB4=[1.1342,1.80,1.85,1.90,1.95,2.00,2.05,2.10,2.15,2.20,2.22,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.50,3.60,3.80,4.00,4.50,5.00,7.50,10.0,15.0,18.0,20.0,22.5,30.0,50.0,80.0]
      YVB4=[0.0,0.00,9.e-5,.064,.170,.269,.465,.743,1.29,1.76,1.79,1.72,1.41,1.04,.600,.234,.168,.439,.797,.994,.806,.474,.215,.104,.197,.385,.394,.260,.198,.063,.098,.151,.205,.089,.070,.078,.061,.044,.035,.026,.009,.0026,.00105,.0016,.003,.008,.005,.003,.001,.0005]
      # V5               
      XVB5=[1.4088,1.90,1.95,2.00,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,     2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,4.00,4.50,5.00,7.50,10.0,20.0]     
      YVB5=[0.00,0.00,.0009,.0118,.0531,.136,.313,.490,.655,.791,1.04,1.18,1.01,.631,.295,.101,.068,.195,.395,.502,.519,.313,.106,.024,.101,.195,.183,.112,.068,.018,.035,.065,.065,.024,.014,.0096,.0032,.00096,.00024,.00012] 
      # V6        
      XVB6=[1.6801,2.05,2.10,2.15,2.20,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.90,2.95,     3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,4.00,4.50,5.00,7.50,10.0,20.0]                                     
      YVB6=[0.00,0.00,9.e-5,.0117,.0463,.124,.192,.344,.487,.602,.615,.602,.577,.527,.307,.124,.050,.103,.193,.270,.270,.180,.084,.0372,.0527,.103,.128,.096,.062,.0248,.0186,.0312,.0372,.0372,.0155,.010,.052,.017,.0052,.0021,   .00105]
      # V7
      XVB7=[1.9475,2.25,2.30,2.35,2.40,2.45,2.50,2.55,2.60,2.65,2.68,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,4.00,4.50,5.00,7.50,10.0,20.0]
      YVB7=[0.00,0.00,.0009,.0255,.0526,.089,.133,.178,.232,.303,.318,.304,.231,.159,.119,.0542,.0239,.0255,.0796,.113,.108,.0812,.0413,.0112,.0064,.0207,.0334,.0366,.0224,.0128, .0128,.0157,.0183,.0166,.0096,.0074,.0057,.0039,.0013,.00039,.00015,.000075]
      # V8
      XVB8=[2.2115,2.40,2.45,2.50,2.55,2.60,2.65,2.70,2.75,2.80,2.85,2.88,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.50,5.00,7.50,10.0,20.0]
      YVB8=[0.00,0.00,9.e-6,.003,.011,.017,.042,.0656,.0739,.098,.135,.140,.128,.084,.035,.014,.003,.007,.028,.0460,.0460,.028,.011,.003,.0018,.011,.0123,.0140,.0084,.0035,.0018,.0018,.0026,.0029,.0014,.0010,.0003,.00010,.00004,.00002]
      # V9
      XVB9=[2.4718,2.65,2.70,2.75,2.80,2.85,2.90,2.95,3.00,3.05,3.07,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.50,5.00,7.50,10.0,20.0]
      YVB9=[0.00,.0011,.0028,.0069,.0132,.0264,.0412,.0474,.0438,.0496,.0528,.0438,.0247,.0739,.00295,.00581,.0159,.0232,.0264,.0206,.0116,.00296,.00296,.00581,.00739,.00739,.00528,.00295,.00147,.00070,.00039,.00013,.000039,.0000157,.0000079]
      # V10
      XVB10=[2.7284,2.90,2.95,3.00,3.05,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.05,4.10,4.15,4.20,4.25,4.30,4.50,5.00,7.50,10.0,20.0]
      YVB10=[0.00,.000040,.00170,.00554,.0103,.0154,.0205,.0201,.0147,.0103,.00677,.00225,.00137,.00452,.00800,.0116,.0119,.00800,.00390,.00137,.00205,.00390,.00573,.00573,.00452,.00349,.00225,.00116,.00042,.00026,.00017,5.8D-5,1.7D-5,8.5D-6,4.2D-6]
      # V11
      XVB11=[2.9815,3.10,3.15,3.20,3.25,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.05,4.10,4.15,4.20,4.25,4.30,4.35,4.40,4.45,4.50,4.60,5.00,7.50,10.0,20.0]
      YVB11=[0.00,3.29e-4,.00170,.00291,.00445,.00550,.00462,.00291,.00170,6.04e-4,2.20e-4,.00105,.00275,.00344,.00303,.00198,7.70e-4,1.65e-4,2.75e-4,4.40e-4,.00116,.00110,3.85e-4,5.50e-5,5.50e-5,3.30e-4,3.85e-4,3.30e-4,1.65e-4,8.70e-5,2.88e-5,9.60e-6,2.88e-6,1.16e-6,5.8D-7]
      # V12
      XVB12=[3.2310,3.30,3.35,3.40,3.45,3.50,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.05,4.10,4.15,4.20,4.25,4.30,4.35,4.40,4.45,4.50,4.55,4.60,4.65,5.00,7.50,10.0,20.0]
      YVB12=[0.00,3.66e-5,3.78e-4,6.22e-4,.00107,.00119,.00092,4.40e-4,1.59e-4,1.10e-4,4.52e-4,8.06e-4,.00122,.00107,6.96e-4,3.17e-4,7.32e-5,8.55e-5,3.05e-4,3.78e-4,3.05e-4,1.53e-4,7.33e-5,1.22e-5,7.33e-5,1.46e-4,8.55e-5,1.22e-5,6.10e-6,2.04e-6,6.10e-7,2.44e-7,1.22e-7]
      # V13
      XVB13=[3.4769,3.55,3.60,3.65,3.70,3.75,3.80,3.85,3.90,3.95,4.00,4.05,4.10,4.15,4.20,4.25,4.30,4.35,4.40,4.45,4.50,4.55,4.60,4.65,4.70,4.75,4.80,5.00,7.50,10.0,20.0]
      YVB13=[0.00,4.90e-5,1.02e-4,1.96e-4,2.16e-4,1.18e-4,3.92e-5,3.92e-5,1.46e-4,2.94e-4,3.68e-4,3.92e-4,2.72e-4,1.22e-4,2.75e-5,6.28e-5,9.77e-5,1.49e-4,1.18e-4,6.28e-5,1.57e-5,1.57e-5,2.35e-5,4.71e-5,3.14e-5,1.96e-5,3.93e-6,1.31e-6,3.93e-7,1.57e-7,7.8D-8]
      # V14
      XVB14=[3.7191,3.80,3.85,3.90,3.95,4.00,4.05,4.10,4.15,4.20,4.25,4.30,4.35,4.40,4.45,4.50,4.55,4.60,4.65,4.70,4.75,4.80,4.85,4.90,4.95,7.50,10.0,20.0]
      YVB14=[0.00,9.07e-6,1.70e-5,1.70e-5,6.80e-6,7.94e-6,3.51e-5,7.83e-5,1.14e-4,1.09e-4,7.14e-5,3.51e-5,6.80e-6,9.07e-6,4.31e-5,5.44e-5,3.51e-5,1.70e-5,4.54e-6,6.80e-6,1.02e-5,1.70e-5,9.07e-6,5.67e-6,1.75e-6,1.75e-7,6.98e-8,3.5D-8]
      # V15
      XVB15=[3.9576,4.05,4.10,4.15,4.20,4.25,4.30,4.35,4.40,4.45,4.50,4.55,4.60,4.65,4.70,4.75,4.80,4.85,4.90,4.95,5.00,5.05,5.10,5.15,5.20,5.25,5.30,5.40,5.50,7.50,10.0,20.0]
      YVB15=[0.00,9.42e-7,1.25e-6,2.51e-6,5.34e-6,1.94e-5,2.89e-5,3.14e-5,2.16e-5,1.10e-5,4.40e-6,5.96e-6,1.20e-5,1.98e-5,1.64e-5,9.07e-6,3.77e-6,3.77e-6,7.22e-6,7.22e-6,6.28e-6,3.77e-6,3.46e-6,4.39e-6,4.71e-6,4.71e-6,3.77e-6,2.18e-6,1.09e-6,1.09e-7,4.36e-8,2.2D-8]
      # A3SIG(V=0-4) (V=0 ENERGY=6.169 EV)  AVERAGE ENERGY LOSS =6.725 EV
      XTRP1=[6.725,7.00,7.80,8.50,9.00,10.0,11.0,12.0,13.0,14.0,   16.0,17.0,18.0,20.0,22.0,24.0,26.0,30.0,34.0,40.0,                50.0,70.0,100.]             
      YTRP1=[0.00,.0035,.0100,.0440,.0280,.0240,.022,.021,.020,.019,.016,.015,.014,.013,.0108,.0099,.0087,.0069,.0057,.0046,          .0033,.0019,.00094]
      YTP1M=[0.92,0.92,0.92,0.92,0.92,0.92,0.93,0.94,0.94,0.95,0.97,1.01,1.07,1.12,1.14,1.16,1.18,1.22,1.21,1.20,1.18,1.00,0.92] 
      # A3SIG(V=5-9) (V=5 ENERGY=7.023 EV) AVERAGE ENERGY LOSS =7.360 EV
      XTRP2=[7.360,7.50,7.80,8.50,9.00,10.0,11.0,12.0,13.0,14.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP2=[0.00,.0071,.0180,.072,.108,.096,.094,.092,.085,.081,.069,.064,.059,.054,.049,.043,.038,.029,.024,.020,.0136,.0076,.0040]   
      YTP2M=[0.92,0.92,0.92,0.92,0.92,0.92,0.93,0.94,0.94,0.95,0.97,1.01,1.07,1.12,1.14,1.16,1.18,1.22,1.21,1.20,1.18,1.00,0.92] 
      # B3PI(V=0-3) (V=0 ENERGY=7.353 EV) AVERAGE ENERGY LOSS =7.744 EV       
      XTRP3=[7.744,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,  17.0,18.0,20.0,22.0,26.0,30.0,34.0,40.0,50.0,70.0,                100.]                  
      YTRP3=[.0,.018,.132,.194,.188,.173,.161,.150,.138,.128,.116,.108,.089,.077,.063,.053,.047,.035,.026,.0113,      .0039]
      YTP3M=[1.06,1.06,1.06,1.06,1.12,1.18,1.18,1.16,1.14,1.12,1.10,1.08,1.06,1.08,1.12,1.16,1.16,1.17,1.18,1.06,0.94]
      # W3DEL(V=0-5) (V=0 ENERGY=7.362 EV) AVERAGE ENERGY LOSS = 8.050 EV    
      XTRP4=[8.050,8.50,9.00,10.0,11.0,12.0,14.0,15.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP4=[.0,.0010,.007,.016,.023,.030,.044,.050,.053,.053,.052,.047,.039,.032,.027,.023,.020,.015,.0112,.0073,.00366,.00183]
      YTP4M=[1.20,1.20,1.20,1.20,1.14,1.08,1.08,1.13,1.16,1.19,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.26,1.23,1.19,1.11,0.98]
      # A3SIG(V=10-21) (V=10 ENERGY=7.790 EV) AVERAGE ENERGY LOSS=8.217 EV    
      XTRP5=[8.217,8.30,8.50,8.70,9.00,10.0,11.0,12.0,13.0,14.0,    16.0,17.0,18.0,20.0,22.0,24.0,26.0,30.0,34.0,40.0,                50.0,70.0,100.]           
      YTRP5=[0.0,.0069,.0365,.0450,.055,.096,.100,.097,.091,.086,.073,.066,.060,.055,.050,.044,.038,.031,.024,.020,                .0145,.0080,.0043]
      YTP5M=[0.92,0.92,0.92,0.92,0.92,0.92,0.93,0.94,0.94,0.95,0.97,1.01,1.07,1.12,1.14,1.16,1.18,1.22,1.21,1.20,1.18,1.00,0.92] 
      # B3PI(V=4-16) (V=4 ENERGY=8.177 EV) AVERAGE ENERGY LOSS= 8.451 EV
      XTRP6=[8.451,8.50,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,20.0,22.0,26.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP6=[.0,.011,.090,.133,.129,.119,.110,.102,.094,.088,.079,.074,.061,.053,.044,.037,.032,.023,.017,.0077, .0028]
      YTP6M=[1.06,1.06,1.06,1.06,1.12,1.18,1.18,1.16,1.14,1.12,1.10,1.08,1.06,1.08,1.12,1.16,1.16,1.17,1.18,1.06,0.94]
      # W3DEL(V=6-10) (V=6 ENERGY=8.419 EV) AVERAGE ENERGY LOSS= 8.729 EV
      XTRP7=[8.729,9.00,10.0,11.0,12.0,14.0,15.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP7=[.0,0.004,.032,.048,.064,.092,.105,.110,.110,.108,.097,.082,.066,.056,.048,.041,.032,.023,.0153,.0076,.0038]
      YTP7M=[1.20,1.20,1.20,1.14,1.08,1.08,1.13,1.16,1.19,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.26,1.23,1.19,1.11,0.98]
      # A1PI(V=0-3) (V=0 ENERGY=8.549 EV) AVERAGE ENERGY LOSS= 8.950 EV
      XSNG1=[8.950,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,24.0,27.0,30.0,40.0,50.0,70.0,100.]        
      YSNG1=[.0,.013,.025,.040,.059,.082,.101,.116,.123,.128,.130,.130,.125,.119,.112,.087,.071,.051,.036]  
      YSG1M=[0.80,0.80,0.75,0.70,0.66,0.60,0.55,0.53,0.51,0.50,0.49,0.48,0.50,0.52,0.54,0.48,0.41,0.34,0.24]
      # B'3SIG(V=0-6) (V=0 ENERGY=8.165 EV) AVERAGE ENERGY LOSS= 8.974 EV
      XTRP8=[8.974,9.50,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,26.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP8=[.0,.0002,.0010,.0032,.0081,.0136,.0203,.0252,.0274,.0274,.0264,.0250,.0236,.0209,.0151,.0114,.0089,.0064,.0041,.0020,.0010]
      YTP8M=[0.90,0.90,0.90,0.90,0.90,0.91,0.93,0.97,1.07,1.17,1.22,1.22,1.23,1.26,1.32,1.37,1.35,1.32,1.29,1.20,1.04]
      # A'1SIG (V=0-6) (V=0 ENERGY=8.398 EV) AVERAGE ENERGY LOSS= 9.191 EV
      XSNG2=[9.191,10.2,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,24.0,30.0,40.0,50.0,70.0,100.]
      YSNG2=[.0,.0013,.0071,.0106,.0139,.0146,.0145,.0143,.0139,.0135,.0132,.0105,.0072,.0045,.0031,.0017,.0010]
      YSG2M=[1.00,1.00,1.00,1.00,1.00,1.00,1.07,1.13,1.14,1.15,1.16,1.21,1.27,1.17,1.07,0.93,0.72]
      # W3DEL(V=11-19) (V=11 ENERGY=9.220 EV) AVERAGE ENERGY LOSS= 9.562 EV
      XTRP9=[9.562,10.0,11.0,12.0,14.0,15.0,16.0,17.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP9=[.0,.012,.029,.038,.056,.063,.067,.067,.065,.058,.049,.040,.034,.029,.024,.019,.0141,.0092,.00461,.00230]
      YTP9M=[1.20,1.20,1.14,1.08,1.08,1.13,1.16,1.19,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.26,1.23,1.19,1.11,0.98]
      # W1DEL(V=0-5) (V=0 ENERGY=8.895 EV) AVERAGE ENERGY LOSS= 9.590 EV 
      XSNG3=[9.590,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,20.0,24.0,30.0,40.0,50.0,70.0,100.]
      YSNG3=[.0,.0002,.003,.009,.0109,.0144,.0141,.0138,.0134,.013, .012,.0094,.0074,.0054,.0043,.0030,.0020]
      YSG3M=[1.08,1.08,1.08,1.08,1.05,1.00,0.08,0.97,0.96,0.95,0.92,0.90,0.86,0.76,0.66,0.55,0.36]
      # A1PI(V=4-15) (V=4 ENERGY=9.355 EV) AVERAGE ENERGY LOSS= 9.665 EV
      XSNG4=[9.665,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,24.0,27.0,30.0,40.0,50.0,70.0,100.]        
      YSNG4=[.0,.009,.023,.039,.057,.077,.097,.109,.117,.121,.123,.124,.119,.112,.106,.083,.067,.048,.034]  
      YSG4M=[0.80,0.80,0.75,0.70,0.66,0.60,0.55,0.53,0.51,0.50,0.49,0.48,0.50,0.52,0.54,0.48,0.41,0.34,0.24]
      # B'3SIG(V=7-18) (V=7 ENERGY=9.399 EV) AVERAGE ENERGY LOSS= 9.933 EV
      XTRP10=[9.933,10.2,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,26.0,30.0,34.0,40.0,50.0,70.0,100.]
      YTRP10=[.0,.0010,.0068,.0169,.0284,.0427,.0528,.0575,.0575,.0552,.0524,.0495,.0438,.0316,.0236,.0187,.0133,.0086,.0041,.0020]
      YTP10M=[0.90,0.90,0.90,0.90,0.90,0.91,0.93,0.97,1.07,1.17,1.22,1.22,1.23,1.26,1.32,1.37,1.35,1.32,1.29,1.20]       
      # A'1SIG (V=7-19) (V=7 ENERGY=9.645 EV) AVERAGE ENERGY LOSS= 10.174 EV
      XSNG5=[10.174,10.5,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,24.0,30.0,40.0,50.0,70.0,100.]
      YSNG5=[.0,.0013,.0129,.0194,.0252,.0267,.0265,.0260,.0253,.0247,.0240,.0192,.0133,.0081,.0055,.0032,.0017]
      YSG5M=[1.00,1.00,1.00,1.00,1.00,1.00,1.07,1.13,1.14,1.15,1.16,1.21,1.27,1.17,1.07,0.93,0.72]
      # W1DEL(V=6-18) (V=6 ENERGY=9.994 EV) AVERAGE ENERGY LOSS= 10.536 EV
      XSNG6=[10.536,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,20.0,24.0,30.0,40.0,50.0,70.0,100.]
      YSNG6=[.0,.003,.009,.0242,.032,.032,.031,.030,.029,.026,.021,.0164,.0121,.0096,.0066,.0046]
      YSG6M=[1.08,1.08,1.08,1.05,1.00,0.08,0.97,0.96,0.95,0.92,0.90,0.86,0.76,0.66,0.55,0.36]
      # C3PI(V=0-4) (V=0 ENERGY=11.032 EV) AVERAGE ENERGY LOSS= 11.188 EV   
      XTRP11=[11.188,12.0,12.5,13.0,13.5,14.0,14.5,15.0,16.0,17.0,18.0,19.0,20.0,24.0,30.0,40.0,50.0,70.0,100.]           
      YTRP11=[.0,.057,.089,.130,.180,.225,.235,.225,.205,.190,.170,.155,.140,.105,.074,.044,.031,.015,.0057] 
      YTP11M=[1.03,1.03,1.03,1.03,1.03,1.03,1.03,1.03,1.02,1.01,1.00,0.99,0.99,1.06,1.14,1.11,1.09,0.93,0.70]    
      # E3SIG  V=0         
      XTRP12=[11.875,11.9,11.95,12.0,12.5,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,25.0,30.0,35.0,40.0,45.0,50.0,70.0,100.]   
      YTRP12=[.0,.157,.127,.101,.031,.021,.009,.003,.002,.004,.008,.011,.013,.013,.010,.008,.005,.0037,.0027,.002,.0010,.0004] 
      YTP12M=[22*1.0]  
      # A''1SIG(V=0-1) (V=0 ENERGY=12.255 EV)  AVERAGE ENERGY LOSS= 12.289 EV
      XSNG7=[12.289,13.0,14.0,15.0,17.5,20.0,24.0,30.0,40.0,50.0,70.0,100.]
      YSNG7=[.0,.002,.005,.011,.022,.034,.037,.036,.031,.028,.020,.0125]
      YSG7M=[0.86,0.86,0.86,0.86,0.86,0.91,0.94,0.99,0.94,0.89,0.73,0.50]
      # B1PI (V=0-6) (V=0 ENERGY=12.500 EV) AVERAGE ENERGY LOSS= 12.781 EV
      #  USE BEF SCALING ABOVE 100EV                   F=0.1855
      XSNG8=[12.781,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG8=[0.0,.0640,.0855,.145,.160,.163,.160,.152]
      YSG8M=[0.76,0.76,0.67,0.46,0.34,0.22,0.13,0.05]
      # C'1SIG (V=0-3) (V=0 ENERGY=12.934 EV) AVERAGE ENERGY LOSS= 13.000 EV
      #  USE BEF SCALING ABOVE 500EV                  F=0.15
      XSNG9=[13.000,17.5,20.0,30.0,40.0,50.0,70.0,100.,150.,200.,250.,300.,350.,400.,450.,500.] 
      YSNG9=[0.0,.0300,.0440,.067,.086,.093,.102,.100,.091,.083,.075,.069,.063,.059,.054,.052]
      YSG9M=[0.72,0.72,0.47,0.41,0.32,0.23,0.13,0.05,0.04,0.03,.028,.025,.022,.020,.018,.016] 
      # G3 PI (V=0-3) (V=0 ENERGY=12.810 EV) AVERAGE ENERGY LOSS=13.001 EV         
      XTRP13=[13.001,17.5,20.0,23.0,26.0,30.0,40.0,50.0,70.0,100.]
      YTRP13=[.0,.0133,.0178,.0204,.0207,.0199,.0174,.0152,.0115,.0065] 
      YTP13M=[0.74,0.74,0.73,0.72,0.71,0.69,0.61,0.53,0.47,0.40]   
      # C3 1PI ( V=0-3) V=0 ENERGY=12.912 AVERAGE ENERGY LOSS= 13.076 EV
      #  USE BEF SCALING ABOVE 100EV        F=0.15
      XSNG10=[13.076,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG10=[0.0,.0470,.060,.100,.118,.124,.124,.118]
      YSG10M=[0.69,0.69,0.55,0.40,0.28,0.16,0.11,0.05]
      # F3 PI (V=0-3) (V=0 ENERGY=12.985 EV) AVERAGE ENERGY LOSS=13.174 EV  
      XTRP14=[13.174,17.5,20.0,23.0,26.0,30.0,40.0,50.0,70.0,100.]
      YTRP14=[.0,.0062,.0091,.0129,.0140,.0136,.0119,.0102,.0074,.0040]   
      YTP14M=[0.74,0.74,0.76,0.71,0.65,0.63,0.53,0.43,0.40,0.34]  
      # B1PI (V=7-14) (V=7 ENERGY=13.156 EV) AVERAGE ENERGY LOSS= 13.338 EV
      # USE BEF SCALING ABOVE 100EV      F=0.0663
      XSNG11=[13.338,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG11=[0.0,.0120,.0288,.047,.052,.055,.054,.0503]
      YSG11M=[0.76,0.76,0.67,0.46,0.34,0.22,0.13,0.05]
      # B# 1SIG (V=0-10) V=0 ENERGY=12.854 AVERAGE ENERGY LOSS= 13.385 EV
      #  USE BEF SCALING ABOVE 100EV             F=0.0601
      XSNG12=[13.385,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG12=[0.0,.0156,.027,.037,.046,.048,.048,.046]
      YSG12M=[0.81,0.81,0.71,0.47,0.33,0.20,0.15,0.09]
      # O3 1PI (V=0-5) (V=0 ENERGY=13.103 EV) AVERAGE ENERGY LOSS= 13.628 EV
      # USE BEF SCALING ABOVE 100EV      F=0.0828
      XSNG13=[13.628,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG13=[0.0,.0140,.028,.051,.060,.063,.065,.061]
      YSG13M=[0.86,0.86,0.77,0.60,0.45,0.30,0.19,0.08]
      # C# 1SIG (V=4-6)  (V=4 ENERGY=13.982 EV)  AVERAGE ENERGY LOSS=14.090
      # USE BEF SCALING ABOVE 100EV     F=0.139
      XSNG14=[14.090,17.5,20.0,30.0,40.0,50.0,70.0,100.]
      YSNG14=[0.0,.030,.045,.081,.096,.102,.103,.097]
      YSG14M=[0.85,0.85,0.75,0.55,0.40,0.25,0.17,0.08]
      # B# 1SIG (V=11-INF) (V=11 ENERGY=13.84 EV) 
      #  AVERAGE ENERGY LOSS=14.232 EV      (CONSISTENT WITH BERKOWITZ)
      #  USE BEF SCALING ABOVE 100EV            F=0.265  
      #  TOTAL TRANSITION STRENGTH FOR B# 1SIG= 0.265 + 0.0601=0.3301 
      XSNG15=[14.232,17.5,20.0,30.0,40.0,50.0,70.0,100.] 
      YSNG15=[0.0,.055,.083,.151,.180,.191,.194,.182]
      YSG15M=[0.81,0.81,0.71,0.47,0.33,0.20,0.15,0.09]
      #
      # E# 1SIG  ENERGY LOSS=14.36EV        F=0.0108  (BERKOWITZ) 
#  USE BEF SCALING IN def
      #
      # E 1PI   ENERGY LOSS=14.45EV         F=0.0237   (BERKOWITZ)
# USE BEF SCALING IN def
      #
      # SINGLET  ENERGY LOSS=14.839EV       F=0.0117  (BERKOWITZ)
# USE BEF SCALING IN def
      # 
      #  SUM OF HIGH ENERGY SINGLETS   ENERGY LOSS=15.2  F=0.1152
# USE BEF SCALING IN def
      #
      # SUM OF EXCITATIONS TO EXCITED IONS AND MOLECULAR BREAKUP.
      #    ENERGY LOSS=15.5EV    
      # USE BEF SCALING                F=1.30
      #           
      # RAP UP TO 100 EV : LINDSAY TO 1KEV : SCHRAM TO 20KEV    
      # ABOVE 20KEV USE MATRIX ELEMENTS COMPATIBLE WITH RIEKE AND BERKOWITZ   
      XION=[15.581,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]
      # COUNTING IONISATION
      YION=[0.00,.0211,.0466,.0713,.0985,.129,.164,.199,.230,.270,.308,.344,.380,.418,.455,.492,.528,.565,.603,.640,.677,.714,.875,1.03,1.15,1.27,1.38,1.49,1.57,1.78,1.94,2.07,2.18,2.27,2.33,2.39,2.44,2.46,2.49,2.51,2.51,2.50,2.48,2.45,2.36,2.28,2.19,2.08,1.98,1.89,1.82,1.68,1.56,1.45,1.36,1.28,1.20,1.12,1.07,1.01,.971,.936,.907,.879,.847,.728,.649,.585,.534,.491,.408,.351,.310,.280,.255,.233,.217,.200,.178,.159,.144,.132,.113,.0998,.0898,.0824,.0752]
      # IONISATION TO N2+    ASYMPTOTIC 79.73% OF COUNTING IONISATION
      XION1=[15.581,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]
      YION1=[0.00,.0211,.0466,.0713,.0985,.129,.164,.199,.230,.270,.308,.344,.380,.418,.455,.492,.528,.565,.603,.640,.677,.714,.865,.929,1.03,1.12,1.20,1.29,1.37,1.52,1.60,1.66,1.72,1.74,1.78,1.80,1.81,1.82,1.83,1.85,1.85,1.83,1.81,1.78,1.72,1.67,1.61,1.55,1.48,1.41,1.37,1.28,1.20,1.11,1.05,.998,.943,.880,.844,.796,.765,.738,.719,.698,.676,.580,.517,.466,.426,.391,.325,.280,.247,.223,.203,.186,.173,.159,.142,.127,.115,.105,.0901,.0796,.0716,.0657,.0600]
      # IONISATION TO N+   ASYMPTOTIC 19.70% OF COUNTING IONISATION
      XION2=[24.294,28.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]
      YION2=[0.0,.010,.0325,.0904,.166,.245,.319,.390,.438,.482,.523,.561,.587,.605,.632,.645,.656,.660,.661,.652,.633,.595,.566,.516,.493,.458,.438,.393,.351,.324,.299,.274,.248,.234,.217,.205,.200,.192,.183,.176,.167,.143,.128,.115,.105,.0967,.0804,.0691,.0611,.0552,.0502,.0459,.0427,.0394,.0351,.0313,.0284,.0260,.0223,.0197,.0177,.0162,.0148]
      # IONISATION TO N+ + N+  NORMALISED TIAN AND VIDAL  
      #  ASYMPTOTIC 3.38% OF COUNTING IONISATION
      XION3=[38.8,45.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,700.,800.,900.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]
      YION3=[0.0,.00917,.0199,.0378,.0617,.0827,.0991,.109,.119,.117,.112,.105,.0982,.0917,.0842,.0778,.0676,.0596,.0533,.0475,.0439,.0426,.0373,.0343,.0314,.0287,.0246,.0220,.0197,.0180,.0166,.0138,.0119,.0105,.00948,.00862,.00788,.00733,.00676,.00603,.00537,.00488,.00446,.00383,.00338,.00304,.00278,.00254]
      # IONISATION TO N++  ASYMPTOTIC  0.57% OF COUNTING IONISATION
      XION4=[65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.,18000.,20000.]
      YION4=[0.0,.000171,.000658,.00122,.00204,.00328,.00439,.00495,.00725,.00927,.0122,.0137,.0154,.0154,.0154,.0142,.0141,.0128,.0117,.0103,.00940,.00808,.00796,.00760,.00701,.00649,.00587,.00594,.00543,.00522,.00505,.00485,.00415,.00370,.00333,.00304,.00280,.00233,.00200,.00177,.00160,.00145,.00133,.00124,.00114,.00101,.000906,.000821,.000752,.000644,.000569,.000512,.000470,.000429]
      # NITROGEN K-SHELL IONISATION (MULTIPLY BY 2 FOR MOLECULE)
      XKSH=[401.6,407.,419.,431.,444.,457.,471.,485.,499.,515.,530.,546.,562.,596.,631.,668.,708.,750.,794.,841.,891.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3758.,4467.,5158.,5957.,7079.,1.0D4,1.26D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.25D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.22D7,1.50D7,1.88D7,2.24D7,2.82'%.3f' %.76D7,4.87D7,6.31D7,8.66D7,1.00D8,1.22D8,1.50D8,1.88D8,2.24D8,2.82'%.3f' %.76D8,4.87D8,6.31D8,8.66D8,1.00D9]
      YKSH=[0.00,4.11e-5,1.38e-4,2.32e-4,3.23e-4,4.12e-4,4.98e-4,5.81e-4,6.61e-4,7.38e-4,8.13e-4,8.85e-4,9.54e-4,1.08e-3,1.20e-3,1.31e-3,1.41e-3,1.50e-3,1.58e-3,1.65e-3,1.72e-3,1.77e-3,1.82e-3,1.87e-3,1.91e-3,1.94e-3,1.95e-3,1.93e-3,1.89e-3,1.86e-3,1.81e-3,1.74e-3,1.63e-3,1.45e-3,1.32e-3,1.22e-3,1.12e-3,1.00e-3,7.95e-4,6.77e-4,5.98e-4,4.74e-4,4.09e-4,3.52e-4,2.85e-4,2.47e-4,2.14e-4,1.94e-4,1.76e-4,1.54e-4,1.19e-4,1.03e-4,8.77e-5,7.92e-5,7.54e-5,7.27e-5,7.14e-5,7.04e-5,6.97e-5,6.96e-5,7.00e-5,7.16e-5,7.47e-5,7.74e-5,7.95e-5,8.17e-5,8.34e-5,8.51e-5,8.75e-5,9.00e-5,9.25e-5,9.54e-5,9.76e-5,1.01e-4,1.04e-4,1.08e-4,1.11e-4,1.15e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.27e-4,1.31e-4,1.34e-4,1.38e-4,1.41e-4,1.45e-4,1.47e-4]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF UNITS 10**-24 CM**2
      Z7T=[385.,234.,113.,63.5,35.5,16.4,9.48,5.96,4.07,3.73,3.81,3.93,4.04,4.11,4.18,4.26,4.33,4.42,4.48,4.55,4.59,4.61,4.63,4.64,4.65]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #  *********************************************************************
      # 2015 UPDATE INCLUDES DISSOCIATIVE IONISATION AND NEUTRAL DISSOCIATION
      #      AT ENERGIES HIGHER THAN THE IONISATION ENERGY.
      #-----------------------------------------------------------------
      # REANALYSED SINGLET STATES TO MAKE CONSISTENT WITH OSCILLATOR SUM
      # FROM BERKOWITZ  USED BEF SCALING TO GIVE X-SCTION AT HIGH ENERGY.
      #  *********************************************************************
      #  2013: INCLUDE K-SHELL IONISATION
      # -----------------------------------
      #  NITROGEN UPDATE 2008.
      #  USED ELECTRON SCATTERING PUBLISHED UP TO DECEMBER 2008.
      #  VIBRATIONAL X-SECTIONS MAINLY FROM ALLAN AND ALSO VICIC
      #  ALLAN    J.PHYS.B 18(1985) 4511
      #  VICIC    J.PHYS.B 29(1996) 1273
      #  ELASTIC FROM ALLAN , ITIKAWA(REVIEW) ,SUN AND ALSO MUSE 
      #  ALLAN     J.PHYS.B 38(2005) 3655
      #  ITIKAWA   J.PHYS.CHEM.REF 35(2006)31
      #  SUN       PHYS.REV 52A(1995)1229
      #  MUSE      J.PHYS.B 41(2008)095203
      # EXCITATION FROM ITIKAWA (REVIEW) AND KHAKOO
      #  KHAKOO    PHYS.REV A 77(2008)012704
      #  KHAKOO    PHYS.REV A 71(2005)062703
      #  IONISATION FROM RAP , LINDSAY, SCHRAM, RIEKE AND BERKOWITZ
      #  RAP       J.CHEM.PHYS 43(1965)1464
      #  LINDSAY   LLANDOLT-BORNSTEIN I/17C
      #  SCHRAM    PHYSICA 31(1965)94
      #  RIEKE     PHYS REV 6A (1972)1507
      #  BERKOWITZ PHOTOABSORPTION ,PHOTOIONISATION SPECTROSCOPY
      # 
      #  ROTATIONAL X-SECTIONS FROM QUADRUPOLE BORN APPROX. WITH TABULATED
      #  VALUES FOR THE RESONANCE ENHANCEMENT.
      #  INELASTIC X-SECTIONS ARE MAINLY FROM KHAKOO FOR LEVELS BELOW 14.0EV
      # USED FRANK-CONDON FACTORS TO WEIGHT THE VIBRATION-EXCITATION LEVELS
      # AND ADJUSTED THRESHOLDS TO GIVE CORRECT AVERAGE ENERGY LOSS.
      #  THE REMAINING LEVEL STRENGTH IS IN THE EFFECTIVE SINGLET LEVEL
      #  AT 14.2EV . THE 14.2 EV LEVEL WAS MADE TO BE CONSISTENT WITH
      #  THE TOTAL LEVEL SUM FROM PITCHFORD AND PHELPS AND GIVES ACCURATE
      #  FANO FACTORS
      # THE TOTAL X-SECTION BELOW 50 EV IS WITHIN 1% OF THE EXPERIMENTAL VALUE
      # OF KENNERLEY. ABOVE 50EV IS WITHIN 1% OF REVIEW BY ITIKAWA. 
      # TOTAL ELASTIC AND ELASTIC MOMENTUM TRANSFER X-SECTION ARE ADJUSTED TO 
      # FIT IN MIXTURES:
      #                    NEON /NITROGEN   VD                 ROBERTSON  
      #                   ARGON /NITROGEN   VD                 HADDAD
      #             PURE  NITROGEN          VD   DT  DL  AND ALPHA 
      # LOW FIELD NITROGEN  VD AND DT FROM LOWKE AND HUXLEY AND CROMPTON.
      #
      #   HIGH FIELD NITROGEN VD AND DL FROM HASEGAWA
      #  FIT TO DRIFT AND DIFFUSION BETTER THAN 1% ACCURACY.
      #  
      #   TOWNS# end COEFICIENT FROM COMPILATION BY DUTTON.
      #
      #***********************************************************************      
      #--------------------------------------------------------------------- 
      if(NANISO == 0):
      :
      NAME='NITROGEN 2015  ISOTROPIC '
      else: 
      NAME='NITROGEN 2015 ANISOTROPIC'
      # endif
      #    -------------------------------------------------------------- 
      # BORN BETHE VALUES FOR COUNTING IONISATION
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      AM2=3.35
      C=38.1
      #
      # AVERAGE AUGER EMISSION FROM K-SHELL
      AUGK=1.99
      #
      NION=12
      NATT=1 
      NIN=127
      NNULL=0 
      NASIZE=20000
      IONMODEL=0
      #      
      NBREM=25
      DO 11 J=1,NIN
      IZBR[J]=0
      11 CONTINUE
      IZBR(NIN+1)=7
      #
      # ANGULAR DISTRIBUTIONS OF ELASTIC AND IONISATION CAN BE EITHER
      # ISOTROPIC (KEL=0) OR
      # CAPITELLI-LONGO (KEL =1)  OR OKHRIMOVSKKY TYPES (KEL=2)
      # 
      DO 1 J=1,6
      1 KEL[J]=NANISO
      # USE ANISOTROPIC SCATTERING FOR ROTATIONAL STATES
      for 2 J in range(1,76):
      2 KIN[J]=2    
      # USE ANISOTROPIC FOR SUPERELASTIC VIBRATION
      KIN(77)=2
      # USE ANISOTROPIC SCATTERING FOR VIBRATIONAL AND EXCITED STATES .
      # ANGULAR DISTRIBUTIONS ARE CAPITELLI-LONGO (FORWARD BACKWARD ASYMMETRY)
      # OR OKRIMOVSKKY
      DO 20 J=78,NIN
      20 KIN[J]=NANISO
      # 
      NELA=216                                                          
      NROT=70                                                          
      NVIB1=87                                                          
      NVIB2=69                                                          
      NVIB3=70                                                          
      NVIB4=50                                                          
      NVIB5=40                                                          
      NVIB6=41 
      NVIB7=42
      NVIB8=40 
      NVIB9=35
      NVIB10=35
      NVIB11=35
      NVIB12=33
      NVIB13=31
      NVIB14=28
      NVIB15=32
      NTRP1=23  
      NTRP2=23                                                        
      NTRP3=21
      NTRP4=22                                                          
      NTRP5=23
      NTRP6=21                                                          
      NTRP7=21                                                          
      NTRP8=21
      NTRP9=20
      NTRP10=20
      NTRP11=19
      NTRP12=22
      NTRP13=10
      NTRP14=10
      NSNG1=19                                                         
      NSNG2=17
      NSNG3=17
      NSNG4=19                                                          
      NSNG5=17
      NSNG6=16
      NSNG7=12
      NSNG8=8
      NSNG9=16 
      NSNG10=8
      NSNG11=8
      NSNG12=8
      NSNG13=8
      NSNG14=8
      NSNG15=8
      NIOND=87
      NION1=87
      NION2=63
      NION3=48
      NION4=54 
      NKSH=89
      #                                                         
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(27.7940*AMU)                                      
      E[3]=15.581                                  
      E[4]=0.0                                   
      E[5]=0.0                   
      E[6]=0.0
      #
      EION[1]=15.581
      EION[2]=15.855
      EION[3]=16.699
      EION[4]=16.935
      EION[5]=17.171
      EION[6]=18.751
      EION[7]=23.591
      EION[8]=24.294
      EION[9]=24.4  
      EION[10]=35.7
      EION[11]=38.8
      EION[12]=401.6
      #
      EOBFRAC=0.68
      DO 14 J=1,12
      #     EOBY[J]=EION[J]*EOBFRAC
      EOBY[J]=13.6 
      14 CONTINUE
      #
      DO 17 JK=1,12
      LEGAS(JK)=0
      ISHELL(JK)=0
      NC0(JK)=0
      EC0(JK)=0.0
      WKLM(JK)=0.0
      EFL(JK)=0.0
      NG1(JK)=0
      EG1(JK)=0.0
      NG2(JK)=0
      EG2(JK)=0.0
      17 CONTINUE
      # DOUBLY CHARGED STATES
      NC0[11]=1
      EC0[11]=6.0
      # FLUORESENCE DATA
      LEGAS[12]=1
      ISHELL[12]=1
      NC0[12]=2
      EC0[12]=358.6
      WKLM[12]=0.0044
      EFL[12]=385.
      NG1[12]=1
      EG1[12]=353.
      NG2[12]=1
      EG2[12]=6.
      #
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 776
      # endif
      777 CONTINUE
      776 CONTINUE
      # CALC FRACTIONAL POPULATION DENSITY FOR ROTATIONAL STATES
      B0=2.4668e-4
      A0=0.5291772083e-8
      # ROTATIONAL QUADRUPOLE MOMENT
      QBQA=1.045
      QBK=1.67552*(QBQA*A0)**2
      for 3 K in range(1,39,2 ):
      AK=float[K]
      3 PJ[K]=3.0*(2.0*AK+1.0)*math.exp(-AK*(AK+1.0)*B0/AKT)
      for 4 K in range(2,38,2):
      AK=float[K]
      4 PJ[K]=6.0*(2.0*AK+1.0)*math.exp(-AK*(AK+1.0)*B0/AKT)
      SUM=6.0
      for 5 K in range(1,39):
      5 SUM=SUM+PJ[K]
      FROT0=6.0/SUM
      for 6 K in range(1,39):
      6 PJ[K]=PJ[K]/SUM
      # CALC ROTATIONAL TRANSITION ENERGIES
      for 7 K in range(1,38 ):
      J=K-1
      AJ=float[J]
      EIN(K+38)=B0*(4.0*AJ+6.0)
      7 EIN[K]=-EIN(K+38)
      EIN(77)=-0.2889
      EIN(78)=0.2889
      EIN(79)=0.5742                                                    
      EIN(80)=0.8559                                                    
      EIN(81)=1.1342                                                    
      EIN(82)=1.4088                                                    
      EIN(83)=1.6801
      EIN(84)=1.9475
      EIN(85)=2.2115
      EIN(86)=2.4718
      EIN(87)=2.7284
      EIN(88)=2.9815
      EIN(89)=3.2310
      EIN(90)=3.4769
      EIN(91)=3.7191
      EIN(92)=3.9576
      EIN(93)=6.725
      EIN(94)=7.360                                                     
      EIN(95)=7.744
      EIN(96)=8.050                                                     
      EIN(97)=8.217
      EIN(98)=8.451
      EIN(99)=8.729
      EIN(100)=8.950
      EIN(101)=8.974                                                    
      EIN(102)=9.191
      EIN(103)=9.562
      EIN(104)=9.590
      EIN(105)=9.665
      EIN(106)=9.933
      EIN(107)=10.174 
      EIN(108)=10.536
      EIN(109)=11.188                                                   
      EIN(110)=11.875
      EIN(111)=12.289 
      EIN(112)=12.781
      EIN(113)=13.000
      EIN(114)=13.001
      EIN(115)=13.076
      EIN(116)=13.174
      EIN(117)=13.338
      EIN(118)=13.385
      EIN(119)=13.628
      EIN(120)=14.090
      EIN(121)=14.232                              
      EIN(122)=14.36
      EIN(123)=14.45
      EIN(124)=14.839
      EIN(125)=15.2
      EIN(126)=15.6 
      EIN(127)=16.6
      EIN(128)=0.0
      #
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      #  SET PENNING TRANSFER FRACTION TO ZERO FOR LOW ENERGY LEVELS
      for 8 K in range(1,106):
      DO 8 L=1,3
      8 PENFRA[L,K]=0.0
      #-----------------------------------------------------------
      # PENNING TRANSFER FRACTION FOR LEVELS ABOVE 10 EV
      DO 9 K=107,127
      PENFRA[1][K]=0.0
      # PENNING TRANSFER DISTANCE IN MICRONS
      PENFRA[2][K]=1.0
      # PENNING TRANSFER TIME IN PICOSECONDS
      PENFRA[3][K]=1.0
      if(IPEN == 0):
      GO TO 9
      WRITE(6,999) NAME,EIN[K],PENFRA[1][K],PENFRA[2][K],PENFRA[3][K]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY = ','%.3f' % ,' ABS.LENGTH = ',F7.2,' DECAY TIME = ',F7.1,/)
      9 CONTINUE
      #********************************************************************** 
      DO 551 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 551
      # endif 
      651 CONTINUE
      551 CONTINUE
      #    
      SCRPT[1]='                                                  '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC  ISOTROPIC           NITROGEN           '
      else:                  
      SCRPT[2]=' ELASTIC ANISOTROPIC          NITROGEN           '
      # endif
      SCRPT[3]=' IONISATION N2+ X2SIGMA VIB=0     ELOSS=  15.581  '
      SCRPT[4]=' IONISATION N2+ X2SIGMA VIB>0     ELOSS=  15.855  '
      SCRPT[5]=' IONISATION N2+ A2PI    VIB=0     ELOSS=  16.699  '
      SCRPT[6]=' IONISATION N2+ A2PI    VIB=1     ELOSS=  16.935  '
      SCRPT[7]=' IONISATION N2+ A2PI    VIB>1     ELOSS=  17.171  '
      SCRPT[8]=' IONISATION N2+ B2SIGMA           ELOSS=  18.751  '
      SCRPT[9]=' IONISATION N2+ C2SIGMA           ELOSS=  23.591  '
      SCRPT[10]=' DISSOC ION (N+,N)                ELOSS=  24.294  '
      SCRPT[11]=' DISSOC ION (N+,N*)               ELOSS=  24.4    '
      SCRPT[12]=' DISSOC ION (N+*,N)               ELOSS=  35.7    '
      SCRPT[13]=' DISSOC ION (N++,N) AND (N+,N+)   ELOSS=  38.8    '
      SCRPT[14]=' IONISATION K-SHELL               ELOSS= 401.6    '
      SCRPT[15]=' ATTACHMENT                                       '
      SCRPT[16]='                                                  '
      SCRPT[17]='                                                  '  
      SCRPT[18]=' ROTATION  2-0                    ELOSS=  -0.00148'
      SCRPT[19]=' ROTATION  3-1                    ELOSS=  -0.00247'
      SCRPT[20]=' ROTATION  4-2                    ELOSS=  -0.00345'
      SCRPT[21]=' ROTATION  5-3                    ELOSS=  -0.00444'
      SCRPT[22]=' ROTATION  6-4                    ELOSS=  -0.00543'
      SCRPT[23]=' ROTATION  7-5                    ELOSS=  -0.00641'
      SCRPT[24]=' ROTATION  8-6                    ELOSS=  -0.00740'
      SCRPT[25]=' ROTATION  9-7                    ELOSS=  -0.00839'
      SCRPT[26]=' ROTATION 10-8                    ELOSS=  -0.00937'
      SCRPT[27]=' ROTATION 11-9                    ELOSS=  -0.0104 '   
      SCRPT[28]=' ROTATION 12-10                   ELOSS=  -0.0113 '
      SCRPT[29]=' ROTATION 13-11                   ELOSS=  -0.0123 '
      SCRPT[30]=' ROTATION 14-12                   ELOSS=  -0.0133 '
      SCRPT[31]=' ROTATION 15-13                   ELOSS=  -0.0143 '
      SCRPT[32]=' ROTATION 16-14                   ELOSS=  -0.0153 '
      SCRPT[33]=' ROTATION 17-15                   ELOSS=  -0.0163 '   
      SCRPT[34]=' ROTATION 18-16                   ELOSS=  -0.0173 '
      SCRPT[35]=' ROTATION 19-17                   ELOSS=  -0.0183 '
      SCRPT[36]=' ROTATION 20-18                   ELOSS=  -0.0192 '
      SCRPT[37]=' ROTATION 21-19                   ELOSS=  -0.0202 '
      SCRPT[38]=' ROTATION 22-20                   ELOSS=  -0.0212 '
      SCRPT[39]=' ROTATION 23-21                   ELOSS=  -0.0222 '
      SCRPT[40]=' ROTATION 24-22                   ELOSS=  -0.0232 '
      SCRPT[41]=' ROTATION 25-23                   ELOSS=  -0.0242 '
      SCRPT[42]=' ROTATION 26-24                   ELOSS=  -0.0252 '
      SCRPT[43]=' ROTATION 27-25                   ELOSS=  -0.0261 '
      SCRPT[44]=' ROTATION 28-26                   ELOSS=  -0.0271 '
      SCRPT[45]=' ROTATION 29-27                   ELOSS=  -0.0281 '
      SCRPT[46]=' ROTATION 30-28                   ELOSS=  -0.0291 '
      SCRPT[47]=' ROTATION 31-29                   ELOSS=  -0.0301 '
      SCRPT[48]=' ROTATION 32-30                   ELOSS=  -0.0311 '
      SCRPT[49]=' ROTATION 33-31                   ELOSS=  -0.0321 '
      SCRPT[50]=' ROTATION 34-32                   ELOSS=  -0.0331 '
      SCRPT[51]=' ROTATION 35-33                   ELOSS=  -0.0340 '
      SCRPT[52]=' ROTATION 36-34                   ELOSS=  -0.0350 '
      SCRPT[53]=' ROTATION 37-35                   ELOSS=  -0.0360 '
      SCRPT[54]=' ROTATION 38-36                   ELOSS=  -0.0370 '
      SCRPT[55]=' ROTATION 39-37                   ELOSS=  -0.0380 '
      SCRPT[56]=' ROTATION 0-2                     ELOSS=   0.00148'
      SCRPT[57]=' ROTATION 1-3                     ELOSS=   0.00247'
      SCRPT[58]=' ROTATION 2-4                     ELOSS=   0.00345'
      SCRPT[59]=' ROTATION 3-5                     ELOSS=   0.00444'
      SCRPT[60]=' ROTATION 4-6                     ELOSS=   0.00543'   
      SCRPT[61]=' ROTATION 5-7                     ELOSS=   0.00641'
      SCRPT[62]=' ROTATION 6-8                     ELOSS=   0.00740'
      SCRPT[63]=' ROTATION 7-9                     ELOSS=   0.00839'
      SCRPT[64]=' ROTATION 8-10                    ELOSS=   0.00937'
      SCRPT(65)=' ROTATION 9-11                    ELOSS=   0.0104 '
      SCRPT(66)=' ROTATION 10-12                   ELOSS=   0.0113 '
      SCRPT(67)=' ROTATION 11-13                   ELOSS=   0.0123 '
      SCRPT(68)=' ROTATION 12-14                   ELOSS=   0.0133 '
      SCRPT(69)=' ROTATION 13-15                   ELOSS=   0.0143 '
      SCRPT(70)=' ROTATION 14-16                   ELOSS=   0.0153 '
      SCRPT(71)=' ROTATION 15-17                   ELOSS=   0.0163 '
      SCRPT(72)=' ROTATION 16-18                   ELOSS=   0.0173 '
      SCRPT(73)=' ROTATION 17-19                   ELOSS=   0.0183 '
      SCRPT(74)=' ROTATION 18-20                   ELOSS=   0.0192 '
      SCRPT(75)=' ROTATION 19-21                   ELOSS=   0.0202 '
      SCRPT(76)=' ROTATION 20-22                   ELOSS=   0.0212 '
      SCRPT(77)=' ROTATION 21-23                   ELOSS=   0.0222 '
      SCRPT(78)=' ROTATION 22-24                   ELOSS=   0.0232 '
      SCRPT(79)=' ROTATION 23-25                   ELOSS=   0.0242 '
      SCRPT(80)=' ROTATION 24-26                   ELOSS=   0.0252 '
      SCRPT(81)=' ROTATION 25-27                   ELOSS=   0.0261 '
      SCRPT(82)=' ROTATION 26-28                   ELOSS=   0.0271 '
      SCRPT(83)=' ROTATION 27-29                   ELOSS=   0.0281 '
      SCRPT(84)=' ROTATION 28-30                   ELOSS=   0.0291 '
      SCRPT(85)=' ROTATION 29-31                   ELOSS=   0.0301 '
      SCRPT(86)=' ROTATION 30-32                   ELOSS=   0.0311 '
      SCRPT(87)=' ROTATION 31-33                   ELOSS=   0.0321 '
      SCRPT(88)=' ROTATION 32-34                   ELOSS=   0.0331 '
      SCRPT(89)=' ROTATION 33-35                   ELOSS=   0.0340 '
      SCRPT(90)=' ROTATION 34-36                   ELOSS=   0.0350 '
      SCRPT(91)=' ROTATION 35-37                   ELOSS=   0.0360 '
      SCRPT(92)=' ROTATION 36-38                   ELOSS=   0.0370 '
      SCRPT(93)=' ROTATION 37-39                   ELOSS=   0.0380 '
      SCRPT(94)=' VIBRATION     V1                 ELOSS=  -0.2889 '
      SCRPT(95)=' VIBRATION     V1                 ELOSS=   0.2889 '
      SCRPT(96)=' VIBRATION    2V1                 ELOSS=   0.5742 '
      SCRPT(97)=' VIBRATION    3V1                 ELOSS=   0.8559 '
      SCRPT(98)=' VIBRATION    4V1                 ELOSS=   1.1342 '
      SCRPT(99)=' VIBRATION    5V1                 ELOSS=   1.4088 '
      SCRPT(100)=' VIBRATION    6V1                 ELOSS=   1.6801 '
      SCRPT(101)=' VIBRATION    7V1                 ELOSS=   1.9475 '
      SCRPT(102)=' VIBRATION    8V1                 ELOSS=   2.2115 '
      SCRPT(103)=' VIBRATION    9V1                 ELOSS=   2.4718 '
      SCRPT(104)=' VIBRATION   10V1                 ELOSS=   2.7284 '
      SCRPT(105)=' VIBRATION   11V1                 ELOSS=   2.9815 '
      SCRPT(106)=' VIBRATION   12V1                 ELOSS=   3.2310 '
      SCRPT(107)=' VIBRATION   13V1                 ELOSS=   3.4769 '
      SCRPT(108)=' VIBRATION   14V1                 ELOSS=   3.7191 '
      SCRPT(109)=' VIBRATION   15V1                 ELOSS=   3.9576 '
      SCRPT(110)=' A3SIG     V=0-4                  ELOSS=   6.725  '
      SCRPT(111)=' A3SIG     V=5-9                  ELOSS=   7.360  '
      SCRPT(112)=' B 3PI     V=0-3                  ELOSS=   7.744  '
      SCRPT(113)=' W3DEL     V=0-5                  ELOSS=   8.050  '
      SCRPT(114)=' A3SIG     V=10-21                ELOSS=   8.217  '
      SCRPT(115)=' B 3PI     V=4-16                 ELOSS=   8.451  '
      SCRPT(116)=' W3DEL     V=6-10                 ELOSS=   8.729  '
      SCRPT(117)=' A 1PI     V=0-3                  ELOSS=   8.950  '
      SCRPT(118)=' B#3SIG    V=0-6                  ELOSS=   8.974  '
      SCRPT(119)=' A#1SIG    V=0-6                  ELOSS=   9.191  '
      SCRPT(120)=' W3DEL     V=11-19                ELOSS=   9.562  '
      SCRPT(121)=' W 1DEL    V=0-5                  ELOSS=   9.590  '
      SCRPT(122)=' A 1PI     V=4-15                 ELOSS=   9.665  '
      SCRPT(123)=' B#3SIG    V=7-18                 ELOSS=   9.933  '
      SCRPT(124)=' A#1SIG    V=7-19                 ELOSS=  10.174  '
      SCRPT(125)=' W 1DEL    V=6-18                 ELOSS=  10.536  '
      SCRPT(126)=' C 3PI     V=0-4                  ELOSS=  11.188  '
      SCRPT(127)=' E 3SIG                           ELOSS=  11.875  '
      SCRPT(128)=' A##1SIG   V=0-1                  ELOSS=  12.289  '
      SCRPT(129)=' B 1PI     V=0-6     F=0.1855     ELOSS=  12.781  '
      SCRPT(130)=' C#1SIG    V=0-3     F=0.1500     ELOSS=  13.000  '
      SCRPT(131)=' G 3PI     V=0-3                  ELOSS=  13.001  '
      SCRPT(132)=' C3 1PI    V=0-3     F=0.1500     ELOSS=  13.076  '
      SCRPT(133)=' F 3PI     V=0-3                  ELOSS=  13.174  '
      SCRPT(134)=' B 1PI     V=7-14    F=0.0663     ELOSS=  13.338  '
      SCRPT(135)=' B#1SIG    V=0-10    F=0.0601     ELOSS=  13.385  '
      SCRPT(136)=' O3 1PI    V=0-3     F=0.0828     ELOSS=  13.628  '
      SCRPT(137)=' C#1SIG    V=4-6     F=0.1390     ELOSS=  14.090  '
      SCRPT(138)=' B#1SIG    V=11-24   F=0.2650     ELOSS=  14.232  '
      SCRPT(139)=' E#1SIG              F=0.0108     ELOSS=  14.36   '
      SCRPT(140)=' E 1PI               F=0.0237     ELOSS=  14.45   '
      SCRPT(141)=' SINGLET LEVEL       F=0.0117     ELOSS=  14.839  '
      SCRPT(142)=' SUM HIGH SINGLETS   F=0.1152     ELOSS=  15.2    '
      SCRPT(143)=' NEUTRAL DISS ABOVE IONIS. ENERGY ELOSS=  15.6    '
      SCRPT(144)=' NEUTRAL DISS ABOVE IONIS. ENERGY ELOSS=  16.6    '
      SCRPT(145)=' BREMSSTRAHLUNG  FROM NITROGEN ATOMS              '
      # CALC VIBRATIONAL LEVEL V1 POPULATION
      APOPV1=math.exp(EIN(77)/AKT)
      APOPGS=1.0
      APOPSUM=APOPGS+APOPV1
      APOPV1=APOPV1/APOPSUM
      APOPGS=APOPGS/APOPSUM
      #  RENORMALISE GROUND STATE TO ALLOW FOR EXCITATION FROM
      #  THE EXCITED VIBRATIONAL STATE 
      APOPGS=1.0
      #       
      #     EN=-ESTEP/2.0   
      DO 900 I=1,NSTEP
      EN=EG[I]      
      #     EN=EN+ESTEP 
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      #        
      # ELASTIC (+ROTATIONAL)                                                
      DO 10 J=2,NELA                                                    
      if(EN <= XELA[J]):
      GO TO 15                                        
      10 CONTINUE                                                          
      J=NELA                                                            
      15 A=(YELA[J]-YELA[J-1])/(XELA[J]-XELA[J-1])                         
      B=(XELA[J-1]*YELA[J]-XELA[J]*YELA[J-1])/(XELA[J-1]-XELA[J])
      # ELASTIC
      QELA=(A*EN+B)*1.0D-16
      A=(YMOM[J]-YMOM[J-1])/(XELA[J]-XELA[J-1])                         
      B=(XELA[J-1]*YMOM[J]-XELA[J]*YMOM[J-1])/(XELA[J-1]-XELA[J])
      #  MOMENTUM TRANSFER
      QMOM=(A*EN+B)*1.0D-16
      A=(YEPS[J]-YEPS[J-1])/(XELA[J]-XELA[J-1])
      B=(XELA[J-1]*YEPS[J]-XELA[J]*YEPS[J-1])/(XELA[J-1]-XELA[J])
# ANISOTROPY defS
      PQ2=(A*EN+B)
      # EPSILON =1.0-YEPS
      PQ2=1.00-PQ2
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
      PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      Q[2][I]=QMOM 
      # IONISATION CALCULATION 
      DO 29 J=1,12
      PEQION[J][I]=0.5
      if(NANISO == 2):
      PEQION[J][I]=0.0
      29 QION[J][I]=0.0
      #
      # IONISATION TO ALL CHANNELS WITH N2+
      QN2PTOT=0.0
      if(EN <= EION[1]:
      ) GO TO 411   
      if(EN > XION1(NION1):
      ) GO TO 41                                 
      DO 30 J=2,NION1                                                   
      if(EN <= XION1[J]:
      ) GO TO 40                                       
      30 CONTINUE                                                          
      J=NION1                                                           
      40 A=(YION1[J]-YION1[J-1])/(XION1[J]-XION1[J-1])                   
      B=(XION1[J-1]*YION1[J]-XION1[J]*YION1[J-1])/(XION1[J-1]-XION1[J])
      QN2PTOT=(A*EN+B)*1.e-16                   
      GO TO 411
      # USE BORN BETHE X-SECTION ABOVE  XION1(NION1) EV 
      41 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QN2PTOT=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.7973                  
      #
      411 QION[1][I]=QN2PTOT
      if(EN > EION[2]:
      and EN <= EION[3]) :
      QION[2][I]=QN2PTOT*0.2
      QION[1][I]=QN2PTOT*0.8
      else if(EN > EION[3] and EN <= EION[4]) :
      QION[3][I]=QN2PTOT*0.1986
      QION[2][I]=QN2PTOT*0.1603
      QION[1][I]=QN2PTOT*0.6411
      else if(EN > EION[4] and EN <= EION[5]) :
      QION[4][I]=QN2PTOT*0.2296
      QION[3][I]=QN2PTOT*0.1530
      QION[2][I]=QN2PTOT*0.1235
      QION[1][I]=QN2PTOT*0.4939
      else if(EN > EION[5] and EN <= EION[6]) :
      QION[5][I]=QN2PTOT*0.2765
      QION[4][I]=QN2PTOT*0.1659
      QION[3][I]=QN2PTOT*0.1106
      QION[2][I]=QN2PTOT*0.0894
      QION[1][I]=QN2PTOT*0.3576
      else if(EN > EION[6] and EN <= EION[7]) :
      QION[6][I]=QN2PTOT*0.1299
      QION[5][I]=QN2PTOT*0.2408
      QION[4][I]=QN2PTOT*0.1445
      QION[3][I]=QN2PTOT*0.0963
      QION[2][I]=QN2PTOT*0.0777
      QION[1][I]=QN2PTOT*0.3108
      else if(EN > EION[7]) :
      QION[7][I]=QN2PTOT*0.022
      QION[6][I]=QN2PTOT*0.127
      QION[5][I]=QN2PTOT*0.2355
      QION[4][I]=QN2PTOT*0.1413
      QION[3][I]=QN2PTOT*0.0942
      QION[2][I]=QN2PTOT*0.076
      QION[1][I]=QN2PTOT*0.304
      # endif
      if(EN > EION[8]:
      ) :
      #
      # IONISATION TO ALL CHANNELS WITH N+
      QNPTOT=0.0   
      if(EN > XION2(NION2):
      ) GO TO 414                                 
      DO 412 J=2,NION2                                                
      if(EN <= XION2[J]:
      ) GO TO 413                                     
      412  CONTINUE                                                        
      J=NION2                                                         
      413  A=(YION2[J]-YION2[J-1])/(XION2[J]-XION2[J-1])                   
      B=(XION2[J-1]*YION2[J]-XION2[J]*YION2[J-1])/(XION2[J-1]-XION2[J])
      QNPTOT=(A*EN+B)*1.e-16                   
      GO TO 415
      # USE BORN BETHE X-SECTION ABOVE  XION2(NION2) EV 
      414  QNPTOT=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.197                 
      415  CONTINUE 
      QION[8][I]=QNPTOT
      if(EN > EION[9]:
      and EN < EION[10]) :
      if(EN < 110.):
      QION[9][I]=((EN-EION[9])/(110.-EION[9]))*0.095*1.e-16
      if(EN >= 110.):
      QION[9][I]=QION[8][I]*0.1439
      QION[8][I]=QION[8][I]-QION[9][I]
      else if(EN > EION[10]) :
      if(EN < 110.):
      QION[9][I]=((EN-EION[9])/(110.-EION[9]))*0.095*1.e-16
      if(EN >= 110.):
      QION[9][I]=QION[8][I]*0.1439
      if(EN < 120.):
      QION[10][I]=((EN-EION[10])/(120.-EION[10]))*0.037*1.e-16
      if(EN > 120.):
      QION[10][I]=QION[8][I]*0.0560
      QION[8][I]=QION[8][I]-QION[9][I]-QION[10][I]
      # endif
      # endif
      #
      if(EN > EION[11]:
      ) :
      #  SUM OF DOUBLE IONISATION CHANNELS: N+,N+  AND N++,N
      QION[11][I]=0.0   
      if(EN > XION3(NION3):
      ) GO TO 418                                 
      DO 416 J=2,NION3                                                
      if(EN <= XION3[J]:
      ) GO TO 417                                     
      416  CONTINUE                                                        
      J=NION3                                                         
      417  A=(YION3[J]-YION3[J-1])/(XION3[J]-XION3[J-1])                   
      B=(XION3[J-1]*YION3[J]-XION3[J]*YION3[J-1])/(XION3[J-1]-XION3[J])
      QION[11][I]=(A*EN+B)*1.e-16                   
      GO TO 419
      # USE BORN BETHE X-SECTION ABOVE  XION3(NION3) EV 
      418  QION[11][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0338               
      419  CONTINUE 
      #*************************************************
      # CORRECTION TO STRAUB N+ FOR  (N+,N+) CHANNEL
      QION[8][I]=QION[8][I]-QION[11][I]
      #***************************************************
      # endif
      if(EN > 65.0):
      :
      if(EN > XION4(NION4):
      ) GO TO 422                                 
      DO 420 J=2,NION4                                                
      if(EN <= XION4[J]:
      ) GO TO 421                                     
      420  CONTINUE                                                        
      J=NION4                                                         
      421  A=(YION4[J]-YION4[J-1])/(XION4[J]-XION4[J-1])                   
      B=(XION4[J-1]*YION4[J]-XION4[J]*YION4[J-1])/(XION4[J-1]-XION4[J])
      QION[11][I]=QION[11][I]+(A*EN+B)*1.e-16                   
      GO TO 423
      # USE BORN BETHE X-SECTION ABOVE  XION4(NION4) EV 
      422  QION[11][I]=QION[11][I]+CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0057   
      423  CONTINUE 
      # endif 
      # K-SHELL IONISATION 
      if(EN < EION[12]:
      ) GO TO 434  
      DO 432 J=2,NKSH                                                  
      if(EN <= XKSH[J]:
      ) GO TO 433                                       
      432 CONTINUE                                                          
      J=NKSH                                                           
      433 A=(YKSH[J]-YKSH[J-1])/(XKSH[J]-XKSH[J-1])                         
      B=(XKSH[J-1]*YKSH[J]-XKSH[J]*YKSH[J-1])/(XKSH[J-1]-XKSH[J]) 
      # SCALING FACTOR OF 2 FOR NUMBER OF ATOMS IN MOLECULE      
      QION[12][I]=2.0*(A*EN+B)*1.e-16                   
      #
      434 DO 435 J=1,12
      if(EN <= (2.0*EION[J]:
      )) GO TO 435
      PEQION[J][I]=PEQEL[2][(I-IOFFION[J]])
      435 CONTINUE
      #  
      # CORRECTION TO IONISATION FOR AUGER EMISSION
      QION[1][I]=QION[1][I]-AUGK*QION[12][I]
      #
      Q[4][I]=0.0  
      Q[5][I]=0.0
      Q[6][I]=0.0                                                        
      #---------------------------------------------------------------------  
      #  QUADRUPOLE BORN ROTATIONAL STATES  ( GERJUOY AND STEIN)              
      #---------------------------------------------------------------------
      # 
      #  SUPERELASTIC ROTATION   
      #     
      DO 53 K=1,38 
      QIN(K,I)=0.0
      if(EN <= 0.0):
      GO TO 53                                  
      AJ=float(K+1)
      QIN(K,I)=PJ(K+1)*QBK*math.sqrt(1.0-EIN[K]/EN)*AJ*(AJ-1.0)/((2.0*AJ+1.0)*(2.0*AJ-1.0))
      # CALCULATE ENHANCEMENT OF ROTATIONAL XSEC IN THE RESONANCE REGION
      DO 51 L=1,NROT
      if((EN-EIN[K]:
      ) <= XROT(L)) GO TO 52
      51 CONTINUE
      L=NROT
      52 A=(YROT(L)-YROT(L-1))/(XROT(L)-XROT(L-1))                     
      B=(XROT(L-1)*YROT(L)-XROT(L)*YROT(L-1))/(XROT(L-1)-XROT(L)) 
      RESFAC=(EN-EIN[K])*(A*(EN-EIN[K])+B)/EN
      # USE 30% FOR RESFAC
      RESFAC=RESFAC*0.3  
      # BORN ROTATIONAL X-SEC SUM IN RESONANCE REGION = 0.249
      RESFAC=1.0+RESFAC/0.249 
      # SET ROTATIONAL ANGULAR DISTRIBUTIONS 
      PEQIN(K,I)=0.50 
      if(NANISO == 2):
      PEQIN(K,I)=0.00 
      53 QIN(K,I)=QIN(K,I)*RESFAC    
      #
      #  INELASTIC ROTATION
      #
      # CALCULATE ENHANCEMENT OF ROTATIONAL XSEC IN THE RESONANCE REGION
      DO 55 K=39,76
      55 QIN(K,I)=0.0
      if(EN <= 0.0):
      GO TO 80
      DO 56 L=1,NROT
      if(EN <= XROT(L):
      ) GO TO 57 
      56 CONTINUE
      L=NROT
      57 A=(YROT(L)-YROT(L-1))/(XROT(L)-XROT(L-1))                     
      B=(XROT(L-1)*YROT(L)-XROT(L)*YROT(L-1))/(XROT(L-1)-XROT(L)) 
      RESFAC=A*EN+B
      # USE 30% FOR RESFAC
      RESFAC=RESFAC*0.3  
      # BORN ROTATIONAL X-SEC SUM IN RESONANCE REGION = 0.249
      RESFAC=1.0+RESFAC/0.249  
      #  ROT 0-2
      if(EN <= EIN[39]:
      ) GO TO 80
      QIN[39][I]=FROT0*QBK*math.sqrt(1.0-EIN[39]/EN)*2.0/3.0
      QIN[39][I]=QIN[39][I]*RESFAC
      PEQIN[39][I]=0.0
      if(NANISO == 2):
      PEQIN[39][I]=0.0
      # ROT 1-3 AND HIGHER
      DO 58 K=40,76
      AJ=float(K-39) 
      if(EN <= EIN[K]:
      ) GO TO 80
      QIN(K,I)=PJ(K-39)*QBK*math.sqrt(1.0-EIN[K]/EN)*(AJ+2.0)*(AJ+1.0)/((2.0*AJ+3.0)*(2.0*AJ+1.0))
      # SET ANGULAR  DISTRIBUTION ISOTROPIC
      PEQIN(K,I)=0.50
      if(NANISO == 2):
      PEQIN(K,I)=0.00
      58 QIN(K,I)=QIN(K,I)*RESFAC    
      #  FORCE ROTATIONAL X-SEC TO FALL AT SAME RATE AS THE
      #  ELASTIC X-SECTION ABOVE 5.0 EV
      if(EN < 5.0):
      GO TO 80
      ASCALE=QMOM/8.90e-16
      DO 70 K=1,76
      70 QIN(K,I)=QIN(K,I)*ASCALE
      80 CONTINUE
      #---------------------------------------------------------------------  
      #  VIBRATIONAL AND EXCITATION X-SECTIONS         
      #--------------------------------------------------------------------- 
      #  V1 SUPERELASTIC 
      QIN[77][I]=0.0
      PEQIN[77][I]=0.5
      if(NANISO == 2):
      PEQIN[77][I]=0.0
      if(EN <= 0.0):
      GO TO 87
      if((EN-EIN(77):
      ) > XVB1(NVIB1)) GO TO 861                    
      DO 85 J=2,NVIB1                                                   
      if((EN-EIN(77):
      ) <= XVB1[J]) GO TO 86                           
      85 CONTINUE                                                          
      J=NVIB1                                                           
      86 A=(YVB1[J]-YVB1[J-1])/(XVB1[J]-XVB1[J-1])                     
      B=(XVB1[J-1]*YVB1[J]-XVB1[J]*YVB1[J-1])/(XVB1[J-1]-XVB1[J]) 
      QIN[77][I]=(EN-EIN(77))*(A*(EN-EIN(77))+B)/EN
      GO TO 862
      861 QIN[77][I]=(EN-EIN(77))*YVB1(NVIB1)*(XVB1(NVIB1)/(EN*EN)) 
      862 QIN[77][I]=APOPV1*QIN[77][I]*1.e-16        
      87 CONTINUE
      #  V1  
      QIN[78][I]=0.0                                                     
      if(EN <= EIN(78):
      ) GO TO 110
      if(EN > XVB1(NVIB1):
      ) GO TO 101                                
      DO 90 J=2,NVIB1                                                   
      if(EN <= XVB1[J]:
      ) GO TO 100                                      
      90 CONTINUE                                                          
      J=NVIB1                                                           
      100 A=(YVB1[J]-YVB1[J-1])/(XVB1[J]-XVB1[J-1])                     
      B=(XVB1[J-1]*YVB1[J]-XVB1[J]*YVB1[J-1])/(XVB1[J-1]-XVB1[J]) 
      QIN[78][I]=APOPGS*(A*EN+B)*1.e-16   
      GO TO 110
      101 QIN[78][I]=APOPGS*YVB1(NVIB1)*(XVB1(NVIB1)/EN)*1.e-16            
      110 CONTINUE
      #  2V1                                                                  
      QIN[79][I]=0.0                                
      if(EN <= EIN(79):
      ) GO TO 140                           
      if(EN > XVB2(NVIB2):
      ) GO TO 131            
      DO 120 J=2,NVIB2                                                  
      if(EN <= XVB2[J]:
      ) GO TO 130                                      
      120 CONTINUE                                                          
      J=NVIB2                                                           
      130 A=(YVB2[J]-YVB2[J-1])/(XVB2[J]-XVB2[J-1])                     
      B=(XVB2[J-1]*YVB2[J]-XVB2[J]*YVB2[J-1])/(XVB2[J-1]-XVB2[J]) 
      QIN[79][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 140  
      131 QIN[79][I]=APOPGS*YVB2(NVIB2)*(XVB2(NVIB2)/EN)*1.e-16             
      140 CONTINUE                           
      #  3V1                                                       
      QIN[80][I]=0.0                                                    
      if(EN <= EIN(80):
      ) GO TO 170                           
      if(EN > XVB3(NVIB3):
      ) GO TO 161            
      DO 150 J=2,NVIB3                                                  
      if(EN <= XVB3[J]:
      ) GO TO 160                                      
      150 CONTINUE                                                          
      J=NVIB3                                                           
      160 A=(YVB3[J]-YVB3[J-1])/(XVB3[J]-XVB3[J-1])                     
      B=(XVB3[J-1]*YVB3[J]-XVB3[J]*YVB3[J-1])/(XVB3[J-1]-XVB3[J]) 
      QIN[80][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 170
      161 QIN[80][I]=APOPGS*YVB3(NVIB3)*(XVB3(NVIB3)/EN)*1.e-16           
      170 CONTINUE                       
      # 4V1                                                               
      QIN[81][I]=0.0                                           
      if(EN <= EIN(81):
      ) GO TO 200                               
      if(EN > XVB4(NVIB4):
      ) GO TO 191        
      DO 180 J=2,NVIB4                                                  
      if(EN <= XVB4[J]:
      ) GO TO 190                                      
      180 CONTINUE                                                          
      J=NVIB4                                                           
      190 A=(YVB4[J]-YVB4[J-1])/(XVB4[J]-XVB4[J-1])                     
      B=(XVB4[J-1]*YVB4[J]-XVB4[J]*YVB4[J-1])/(XVB4[J-1]-XVB4[J]) 
      QIN[81][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 200
      191 QIN[81][I]=APOPGS*YVB4(NVIB4)*(XVB4(NVIB4)/EN)*1.e-16            
      200 CONTINUE                               
      # 5V1                                                                  
      QIN[82][I]=0.0                                          
      if(EN <= EIN(82):
      ) GO TO 230                              
      if(EN > XVB5(NVIB5):
      ) GO TO 221         
      DO 210 J=2,NVIB5                                                  
      if(EN <= XVB5[J]:
      ) GO TO 220                                      
      210 CONTINUE                                                          
      J=NVIB5                                                           
      220 A=(YVB5[J]-YVB5[J-1])/(XVB5[J]-XVB5[J-1])                     
      B=(XVB5[J-1]*YVB5[J]-XVB5[J]*YVB5[J-1])/(XVB5[J-1]-XVB5[J]) 
      QIN[82][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 230
      221 QIN[82][I]=APOPGS*YVB5(NVIB5)*(XVB5(NVIB5)/EN)*1.e-16           
      230 CONTINUE                       
      # 6V1                                                                   
      QIN[83][I]=0.0                                                     
      if(EN <= EIN(83):
      ) GO TO 260                               
      if(EN > XVB6(NVIB6):
      ) GO TO 251        
      DO 240 J=2,NVIB6                                                  
      if(EN <= XVB6[J]:
      ) GO TO 250                                      
      240 CONTINUE                                                          
      J=NVIB6                                                           
      250 A=(YVB6[J]-YVB6[J-1])/(XVB6[J]-XVB6[J-1])                     
      B=(XVB6[J-1]*YVB6[J]-XVB6[J]*YVB6[J-1])/(XVB6[J-1]-XVB6[J]) 
      QIN[83][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 260
      251 QIN[83][I]=APOPGS*YVB6(NVIB6)*(XVB6(NVIB6)/EN)*1.e-16         
      260 CONTINUE 
      # 7V1                                                                   
      QIN[84][I]=0.0                                                     
      if(EN <= EIN(84):
      ) GO TO 330                              
      if(EN > XVB7(NVIB7):
      ) GO TO 321         
      DO 310 J=2,NVIB7                                                  
      if(EN <= XVB7[J]:
      ) GO TO 320                                      
      310 CONTINUE                                                          
      J=NVIB7                                                           
      320 A=(YVB7[J]-YVB7[J-1])/(XVB7[J]-XVB7[J-1])                     
      B=(XVB7[J-1]*YVB7[J]-XVB7[J]*YVB7[J-1])/(XVB7[J-1]-XVB7[J]) 
      QIN[84][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 330
      321 QIN[84][I]=APOPGS*YVB7(NVIB7)*(XVB7(NVIB7)/EN)*1.e-16        
      330 CONTINUE                                                          
      # 8V1                                                                   
      QIN[85][I]=0.0                                                     
      if(EN <= EIN(85):
      ) GO TO 360                                 
      if(EN > XVB8(NVIB8):
      ) GO TO 351      
      DO 340 J=2,NVIB8                                                  
      if(EN <= XVB8[J]:
      ) GO TO 350                                      
      340 CONTINUE                                                          
      J=NVIB8                                                           
      350 A=(YVB8[J]-YVB8[J-1])/(XVB8[J]-XVB8[J-1])                     
      B=(XVB8[J-1]*YVB8[J]-XVB8[J]*YVB8[J-1])/(XVB8[J-1]-XVB8[J]) 
      QIN[85][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 360
      351 QIN[85][I]=APOPGS*YVB8(NVIB8)*(XVB8(NVIB8)/EN)*1.e-16         
      360 CONTINUE 
      # 9V1                                                                   
      QIN[86][I]=0.0                                                     
      if(EN <= EIN(86):
      ) GO TO 2030                              
      if(EN > XVB9(NVIB9):
      ) GO TO 2021        
      DO 2010 J=2,NVIB9                                           
      if(EN <= XVB9[J]:
      ) GO TO 2020                                     
      2010 CONTINUE                                                          
      J=NVIB9                                                           
      2020 A=(YVB9[J]-YVB9[J-1])/(XVB9[J]-XVB9[J-1])                     
      B=(XVB9[J-1]*YVB9[J]-XVB9[J]*YVB9[J-1])/(XVB9[J-1]-XVB9[J]) 
      QIN[86][I]=APOPGS*(A*EN+B)*1.e-16
      GO TO 2030
      2021 QIN[86][I]=APOPGS*YVB9(NVIB9)*(XVB9(NVIB9)/EN)*1.e-16        
      2030 CONTINUE 
      # 10V1                                                                  
      QIN[87][I]=0.0                                                     
      if(EN <= EIN(87):
      ) GO TO 2060                               
      if(EN > XVB10(NVIB10):
      ) GO TO 2051       
      DO 2040 J=2,NVIB10                                              
      if(EN <= XVB10[J]:
      ) GO TO 2050                                     
      2040 CONTINUE                                                          
      J=NVIB10                                                          
      2050 A=(YVB10[J]-YVB10[J-1])/(XVB10[J]-XVB10[J-1])                     
      B=(XVB10[J-1]*YVB10[J]-XVB10[J]*YVB10[J-1])/(XVB10[J-1]-XVB10[J]) 
      QIN[87][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2060
      2051 QIN[87][I]=APOPGS*YVB10(NVIB10)*(XVB10(NVIB10)/EN)*1.e-16   
      2060 CONTINUE 
      # 11V1                                                                  
      QIN[88][I]=0.0                                                     
      if(EN <= EIN(88):
      ) GO TO 2130                        
      if(EN > XVB11(NVIB11):
      ) GO TO 2121              
      DO 2110 J=2,NVIB11                                              
      if(EN <= XVB11[J]:
      ) GO TO 2120                                     
      2110 CONTINUE                                                          
      J=NVIB11                                                          
      2120 A=(YVB11[J]-YVB11[J-1])/(XVB11[J]-XVB11[J-1])                     
      B=(XVB11[J-1]*YVB11[J]-XVB11[J]*YVB11[J-1])/(XVB11[J-1]-XVB11[J]) 
      QIN[88][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2130
      2121 QIN[88][I]=APOPGS*YVB11(NVIB11)*(XVB11(NVIB11)/EN)*1.e-16    
      2130 CONTINUE 
      # 12V1                                                           
      QIN[89][I]=0.0                                                     
      if(EN <= EIN(89):
      ) GO TO 2160                                
      if(EN > XVB12(NVIB12):
      ) GO TO 2151      
      DO 2140 J=2,NVIB12                                              
      if(EN <= XVB12[J]:
      ) GO TO 2150                                     
      2140 CONTINUE                                                          
      J=NVIB12                                                          
      2150 A=(YVB12[J]-YVB12[J-1])/(XVB12[J]-XVB12[J-1])                     
      B=(XVB12[J-1]*YVB12[J]-XVB12[J]*YVB12[J-1])/(XVB12[J-1]-XVB12[J]) 
      QIN[89][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2160
      2151 QIN[89][I]=APOPGS*YVB12(NVIB12)*(XVB12(NVIB12)/EN)*1.e-16   
      2160 CONTINUE 
      # 13V1                                                                  
      QIN[90][I]=0.0                                                     
      if(EN <= EIN(90):
      ) GO TO 2230                               
      if(EN > XVB13(NVIB13):
      ) GO TO 2221       
      DO 2210 J=2,NVIB13                                              
      if(EN <= XVB13[J]:
      ) GO TO 2220                                     
      2210 CONTINUE                                                          
      J=NVIB13                                                          
      2220 A=(YVB13[J]-YVB13[J-1])/(XVB13[J]-XVB13[J-1])                     
      B=(XVB13[J-1]*YVB13[J]-XVB13[J]*YVB13[J-1])/(XVB13[J-1]-XVB13[J]) 
      QIN[90][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2230
      2221 QIN[90][I]=APOPGS*YVB13(NVIB13)*(XVB13(NVIB13)/EN)*1.e-16      
      2230 CONTINUE 
      # 14V1                                                                  
      QIN[91][I]=0.0                                                     
      if(EN <= EIN(91):
      ) GO TO 2260                                  
      if(EN > XVB14(NVIB14):
      ) GO TO 2251    
      DO 2240 J=2,NVIB14                                              
      if(EN <= XVB14[J]:
      ) GO TO 2250                                     
      2240 CONTINUE                                                          
      J=NVIB14                                                          
      2250 A=(YVB14[J]-YVB14[J-1])/(XVB14[J]-XVB14[J-1])                     
      B=(XVB14[J-1]*YVB14[J]-XVB14[J]*YVB14[J-1])/(XVB14[J-1]-XVB14[J]) 
      QIN[91][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2260
      2251 QIN[91][I]=APOPGS*YVB14(NVIB14)*(XVB14(NVIB14)/EN)*1.e-16     
      2260 CONTINUE 
      # 15V1                                                                  
      QIN[92][I]=0.0                                                     
      if(EN <= EIN(92):
      ) GO TO 2330                                 
      if(EN > XVB15(NVIB15):
      ) GO TO 2321     
      DO 2310 J=2,NVIB15                                              
      if(EN <= XVB15[J]:
      ) GO TO 2320                                     
      2310 CONTINUE                                                          
      J=NVIB15                                                          
      2320 A=(YVB15[J]-YVB15[J-1])/(XVB15[J]-XVB15[J-1])                     
      B=(XVB15[J-1]*YVB15[J]-XVB15[J]*YVB15[J-1])/(XVB15[J-1]-XVB15[J]) 
      QIN[92][I]=APOPGS*(A*EN+B)*1.e-16  
      GO TO 2330
      2321 QIN[92][I]=APOPGS*YVB15(NVIB15)*(XVB15(NVIB15)/EN)*1.e-16   
      2330 CONTINUE
      # SET ROTATIONAL AND VIBRATIONAL ANGULAR DISTRIBUTIONS ( IF KIN NE 0 )
      DO 2440 K=1,92
      PEQIN(K,I)=0.5
      if(NANISO == 2):
      PEQIN(K,I)=0.0
      if(EN <= 3.0*abs(EIN[K]:
      )) GO TO 2440
      if(NANISO > 0):
      PEQIN(K,I)=PEQEL[2][(I-IOFFN[K]))]      2440 CONTINUE
      #  
      # A3SIGMA (V=0-4)  
      QIN[93][I]=0.0 
      PEQIN[93][I]=0.5
      if(NANISO == 2):
      PEQIN[93][I]=0.0
      if(EN <= EIN(93):
      ) GO TO 450                      
      if(EN > XTRP1(NTRP1):
      ) GO TO 445                 
      DO 430 J=2,NTRP1                                                  
      if(EN <= XTRP1[J]:
      ) GO TO 440                                      
      430 CONTINUE                                                          
      J=NTRP1                                                           
      440 A=(YTRP1[J]-YTRP1[J-1])/(XTRP1[J]-XTRP1[J-1])                     
      B=(XTRP1[J-1]*YTRP1[J]-XTRP1[J]*YTRP1[J-1])/(XTRP1[J-1]-XTRP1[J]) 
      QIN[93][I]=(A*EN+B)*1.e-16
      A=(YTP1M[J]-YTP1M[J-1])/(XTRP1[J]-XTRP1[J-1])                     
      B=(XTRP1[J-1]*YTP1M[J]-XTRP1[J]*YTP1M[J-1])/(XTRP1[J-1]-XTRP1[J]) 
      RAT=A*EN+B
      GO TO 446
      445 QIN[93][I]=YTRP1(NTRP1)*(XTRP1(NTRP1)/EN)**2*1.e-16
      RAT=YTP1M(NTRP1)*(XTRP1(NTRP1)/EN)
      446 if(EN <= (3.0*EIN(93))) GO TO 450
      if(NANISO == 1):
      PEQIN[93][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[93][I]=PEQEL[2][(I-IOFFN(93))]
      450 CONTINUE                                                          
      # A3SIGMA (V=5-9)                                     
      QIN[94][I]=0.0 
      PEQIN[94][I]=0.5 
      if(NANISO == 2):
      PEQIN[94][I]=0.0                         
      if(EN <= EIN(94):
      ) GO TO 480  
      if(EN > XTRP2(NTRP2):
      ) GO TO 475                               
      DO 460 J=2,NTRP2                                                  
      if(EN <= XTRP2[J]:
      ) GO TO 470                                      
      460 CONTINUE                                                          
      J=NTRP2                                                           
      470 A=(YTRP2[J]-YTRP2[J-1])/(XTRP2[J]-XTRP2[J-1])                     
      B=(XTRP2[J-1]*YTRP2[J]-XTRP2[J]*YTRP2[J-1])/(XTRP2[J-1]-XTRP2[J]) 
      QIN[94][I]=(A*EN+B)*1.e-16
      A=(YTP2M[J]-YTP2M[J-1])/(XTRP2[J]-XTRP2[J-1])                     
      B=(XTRP2[J-1]*YTP2M[J]-XTRP2[J]*YTP2M[J-1])/(XTRP2[J-1]-XTRP2[J]) 
      RAT=A*EN+B
      GO TO 476
      475 QIN[94][I]=YTRP2(NTRP2)*(XTRP2(NTRP2)/EN)**2*1.e-16
      RAT=YTP2M(NTRP2)*(XTRP2(NTRP2)/EN)
      476 if(EN <= (3.0*EIN(94))) GO TO 480
      if(NANISO == 1):
      PEQIN[94][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[94][I]=PEQEL[2][(I-IOFFN(94))]
      480 CONTINUE                                                          
      # B3PI (V=0-3)                                  
      QIN[95][I]=0.0 
      PEQIN[95][I]=0.5                      
      if(NANISO == 2):
      PEQIN[95][I]=0.0                            
      if(EN <= EIN(95):
      ) GO TO 510
      if(EN > XTRP3(NTRP3):
      ) GO TO 505                             
      DO 490 J=2,NTRP3                                                  
      if(EN <= XTRP3[J]:
      ) GO TO 500                                      
      490 CONTINUE                                                          
      J=NTRP3                                                           
      500 A=(YTRP3[J]-YTRP3[J-1])/(XTRP3[J]-XTRP3[J-1])                     
      B=(XTRP3[J-1]*YTRP3[J]-XTRP3[J]*YTRP3[J-1])/(XTRP3[J-1]-XTRP3[J]) 
      QIN[95][I]=(A*EN+B)*1.e-16                     
      A=(YTP3M[J]-YTP3M[J-1])/(XTRP3[J]-XTRP3[J-1])                     
      B=(XTRP3[J-1]*YTP3M[J]-XTRP3[J]*YTP3M[J-1])/(XTRP3[J-1]-XTRP3[J]) 
      RAT=A*EN+B
      GO TO 506
      505 QIN[95][I]=YTRP3(NTRP3)*(XTRP3(NTRP3)/EN)**2*1.e-16
      RAT=YTP3M(NTRP3)*(XTRP3(NTRP3)/EN)
      506 if(EN <= (3.0*EIN(95))) GO TO 510
      if(NANISO == 1):
      PEQIN[95][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[95][I]=PEQEL[2][(I-IOFFN(95))]
      510 CONTINUE                                                          
      # W3DELTA  (V=0-5)                    
      QIN[96][I]=0.0  
      PEQIN[96][I]=0.5 
      if(NANISO == 2):
      PEQIN[96][I]=0.0                            
      if(EN <= EIN(96):
      ) GO TO 540                       
      if(EN > XTRP4(NTRP4):
      ) GO TO 535                
      DO 520 J=2,NTRP4                                                  
      if(EN <= XTRP4[J]:
      ) GO TO 530                                      
      520 CONTINUE                                                          
      J=NTRP4                                                           
      530 A=(YTRP4[J]-YTRP4[J-1])/(XTRP4[J]-XTRP4[J-1])                     
      B=(XTRP4[J-1]*YTRP4[J]-XTRP4[J]*YTRP4[J-1])/(XTRP4[J-1]-XTRP4[J]) 
      QIN[96][I]=(A*EN+B)*1.e-16
      A=(YTP4M[J]-YTP4M[J-1])/(XTRP4[J]-XTRP4[J-1])                     
      B=(XTRP4[J-1]*YTP4M[J]-XTRP4[J]*YTP4M[J-1])/(XTRP4[J-1]-XTRP4[J]) 
      RAT=A*EN+B
      GO TO 536
      535 QIN[96][I]=YTRP4(NTRP4)*(XTRP4(NTRP4)/EN)**2*1.e-16
      RAT=YTP4M(NTRP4)*(XTRP4(NTRP4)/EN)
      536 if(EN <= (3.0*EIN(96))) GO TO 540
      if(NANISO == 1):
      PEQIN[96][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[96][I]=PEQEL[2][(I-IOFFN(96))]
      540 CONTINUE                                                          
      # A3SIGMA  (V=10-21)                      
      QIN[97][I]=0.0      
      PEQIN[97][I]=0.5    
      if(NANISO == 2):
      PEQIN[97][I]=0.0                      
      if(EN <= EIN(97):
      ) GO TO 570       
      if(EN > XTRP5(NTRP5):
      ) GO TO 565                                
      DO 550 J=2,NTRP5                                                  
      if(EN <= XTRP5[J]:
      ) GO TO 560                                      
      550 CONTINUE                                                          
      J=NTRP5                                                           
      560 A=(YTRP5[J]-YTRP5[J-1])/(XTRP5[J]-XTRP5[J-1])                     
      B=(XTRP5[J-1]*YTRP5[J]-XTRP5[J]*YTRP5[J-1])/(XTRP5[J-1]-XTRP5[J]) 
      QIN[97][I]=(A*EN+B)*1.e-16                   
      A=(YTP5M[J]-YTP5M[J-1])/(XTRP5[J]-XTRP5[J-1])                     
      B=(XTRP5[J-1]*YTP5M[J]-XTRP5[J]*YTP5M[J-1])/(XTRP5[J-1]-XTRP5[J]) 
      RAT=A*EN+B
      GO TO 566
      565 QIN[97][I]=YTRP5(NTRP5)*(XTRP5(NTRP5)/EN)**2*1.e-16
      RAT=YTP5M(NTRP5)*(XTRP5(NTRP5)/EN)
      566 if(EN <= (3.0*EIN(97))) GO TO 570
      if(NANISO == 1):
      PEQIN[97][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[97][I]=PEQEL[2][(I-IOFFN(97))]
      570 CONTINUE                                                          
      # B3PI (V=4-16)                              
      QIN[98][I]=0.0  
      PEQIN[98][I]=0.5  
      if(NANISO == 2):
      PEQIN[98][I]=0.0                              
      if(EN <= EIN(98):
      ) GO TO 600       
      if(EN > XTRP6(NTRP6):
      ) GO TO 595                                
      DO 580 J=2,NTRP6                                                  
      if(EN <= XTRP6[J]:
      ) GO TO 590                                      
      580 CONTINUE                                                          
      J=NTRP6                                                           
      590 A=(YTRP6[J]-YTRP6[J-1])/(XTRP6[J]-XTRP6[J-1])                     
      B=(XTRP6[J-1]*YTRP6[J]-XTRP6[J]*YTRP6[J-1])/(XTRP6[J-1]-XTRP6[J]) 
      QIN[98][I]=(A*EN+B)*1.e-16                               
      A=(YTP6M[J]-YTP6M[J-1])/(XTRP6[J]-XTRP6[J-1])                     
      B=(XTRP6[J-1]*YTP6M[J]-XTRP6[J]*YTP6M[J-1])/(XTRP6[J-1]-XTRP6[J]) 
      RAT=A*EN+B
      GO TO 596
      595 QIN[98][I]=YTRP6(NTRP6)*(XTRP6(NTRP6)/EN)**2*1.e-16
      RAT=YTP6M(NTRP6)*(XTRP6(NTRP6)/EN)
      596 if(EN <= (3.0*EIN(98))) GO TO 600
      if(NANISO == 1):
      PEQIN[98][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[98][I]=PEQEL[2][(I-IOFFN(98))]
      600 CONTINUE                                                          
      # W3DEL (V=6-10)                             
      QIN[99][I]=0.0
      PEQIN[99][I]=0.5
      if(NANISO == 2):
      PEQIN[99][I]=0.0                              
      if(EN <= EIN(99):
      ) GO TO 603       
      if(EN > XTRP7(NTRP7):
      ) GO TO 6025                                
      DO 601 J=2,NTRP7                                                  
      if(EN <= XTRP7[J]:
      ) GO TO 602                                      
      601 CONTINUE                                                          
      J=NTRP7                                                           
      602 A=(YTRP7[J]-YTRP7[J-1])/(XTRP7[J]-XTRP7[J-1])                     
      B=(XTRP7[J-1]*YTRP7[J]-XTRP7[J]*YTRP7[J-1])/(XTRP7[J-1]-XTRP7[J]) 
      QIN[99][I]=(A*EN+B)*1.e-16                               
      A=(YTP7M[J]-YTP7M[J-1])/(XTRP7[J]-XTRP7[J-1])                     
      B=(XTRP7[J-1]*YTP7M[J]-XTRP7[J]*YTP7M[J-1])/(XTRP7[J-1]-XTRP7[J])
      RAT=A*EN+B
      GO TO 6026
      6025 QIN[99][I]=YTRP7(NTRP7)*(XTRP7(NTRP7)/EN)**2*1.e-16
      RAT=YTP7M(NTRP7)*(XTRP7(NTRP7)/EN)
      6026 if(EN <= (3.0*EIN(99))) GO TO 603
      if(NANISO == 1):
      PEQIN[99][I]=1.5-RAT
      if(NANISO == 2):
      PEQIN[99][I]=PEQEL[2][(I-IOFFN(99))]
      603 CONTINUE                                                          
      # A1PI (V=0-3)                                  
      QIN(100,I)=0.0  
      PEQIN(100,I)=0.5    
      if(NANISO == 2):
      PEQIN(100,I)=0.0                                
      if(EN <= EIN(100):
      ) GO TO 630      
      if(EN > XSNG1(NSNG1):
      ) GO TO 625                                
      DO 610 J=2,NSNG1                                                  
      if(EN <= XSNG1[J]:
      ) GO TO 620                                      
      610 CONTINUE                                                          
      J=NSNG1                                                           
      620 A=(YSNG1[J]-YSNG1[J-1])/(XSNG1[J]-XSNG1[J-1])                     
      B=(XSNG1[J-1]*YSNG1[J]-XSNG1[J]*YSNG1[J-1])/(XSNG1[J-1]-XSNG1[J]) 
      QIN(100,I)=(A*EN+B)*1.e-16                           
      A=(YSG1M[J]-YSG1M[J-1])/(XSNG1[J]-XSNG1[J-1])                     
      B=(XSNG1[J-1]*YSG1M[J]-XSNG1[J]*YSG1M[J-1])/(XSNG1[J-1]-XSNG1[J]) 
      RAT=A*EN+B
      GO TO 626
      625 QIN(100,I)=YSNG1(NSNG1)*(XSNG1(NSNG1)/EN)**1.5*1.e-16
      RAT=YSG1M(NSNG1)*(XSNG1(NSNG1)/EN)
      626 if(EN <= (3.0*EIN(100))) GO TO 630
      if(NANISO == 1):
      PEQIN(100,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(100,I)=PEQEL[2][(I-IOFFN(100)])
      630 CONTINUE                                                          
      # B#3SIG (V=0-6)                             
      QIN(101,I)=0.0  
      PEQIN(101,I)=0.5 
      if(NANISO == 2):
      PEQIN(101,I)=0.0                       
      if(EN <= EIN(101):
      ) GO TO 633  
      if(EN > XTRP8(NTRP8):
      ) GO TO 6325                        
      DO 631 J=2,NTRP8                                                  
      if(EN <= XTRP8[J]:
      ) GO TO 632                                      
      631 CONTINUE                                                          
      J=NTRP8                                                           
      632 A=(YTRP8[J]-YTRP8[J-1])/(XTRP8[J]-XTRP8[J-1])                     
      B=(XTRP8[J-1]*YTRP8[J]-XTRP8[J]*YTRP8[J-1])/(XTRP8[J-1]-XTRP8[J]) 
      QIN(101,I)=(A*EN+B)*1.e-16                                
      A=(YTP8M[J]-YTP8M[J-1])/(XTRP8[J]-XTRP8[J-1])                     
      B=(XTRP8[J-1]*YTP8M[J]-XTRP8[J]*YTP8M[J-1])/(XTRP8[J-1]-XTRP8[J]) 
      RAT=A*EN+B
      GO TO 6326
      6325 QIN(101,I)=YTRP8(NTRP8)*(XTRP8(NTRP8)/EN)**2*1.e-16
      RAT=YTP8M(NTRP8)*(XTRP8(NTRP8)/EN)
      6326 if(EN <= (3.0*EIN(101))) GO TO 633
      if(NANISO == 1):
      PEQIN(101,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(101,I)=PEQEL[2][(I-IOFFN(101)])
      633 CONTINUE                                                          
      # A#1SIG (V=0-6)                      
      QIN(102,I)=0.0
      PEQIN(102,I)=0.5    
      if(NANISO == 2):
      PEQIN(102,I)=0.0                          
      if(EN <= EIN(102):
      ) GO TO 660      
      if(EN > XSNG2(NSNG2):
      ) GO TO 655                                
      DO 640 J=2,NSNG2                                                  
      if(EN <= XSNG2[J]:
      ) GO TO 650                                      
      640 CONTINUE                                                          
      J=NSNG2                                                           
      650 A=(YSNG2[J]-YSNG2[J-1])/(XSNG2[J]-XSNG2[J-1])                     
      B=(XSNG2[J-1]*YSNG2[J]-XSNG2[J]*YSNG2[J-1])/(XSNG2[J-1]-XSNG2[J]) 
      QIN(102,I)=(A*EN+B)*1.e-16                       
      A=(YSG2M[J]-YSG2M[J-1])/(XSNG2[J]-XSNG2[J-1])                     
      B=(XSNG2[J-1]*YSG2M[J]-XSNG2[J]*YSG2M[J-1])/(XSNG2[J-1]-XSNG2[J])
      RAT=A*EN+B
      GO TO 656
      655 QIN(102,I)=YSNG2(NSNG2)*(XSNG2(NSNG2)/EN)**1.5*1.e-16
      RAT=YSG2M(NSNG2)*(XSNG2(NSNG2)/EN)
      656 if(EN <= (3.0*EIN(102))) GO TO 660
      if(NANISO == 1):
      PEQIN(102,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(102,I)=PEQEL[2][(I-IOFFN(102)])
      660 CONTINUE                                                          
      # W3DEL (V=11-19)                              
      QIN(103,I)=0.0      
      PEQIN(103,I)=0.5 
      if(NANISO == 2):
      PEQIN(103,I)=0.0                         
      if(EN <= EIN(103):
      ) GO TO 690      
      if(EN > XTRP9(NTRP9):
      ) GO TO 685                                
      DO 670 J=2,NTRP9                                                  
      if(EN <= XTRP9[J]:
      ) GO TO 680                                      
      670 CONTINUE                                                          
      J=NTRP9                                                           
      680 A=(YTRP9[J]-YTRP9[J-1])/(XTRP9[J]-XTRP9[J-1])                     
      B=(XTRP9[J-1]*YTRP9[J]-XTRP9[J]*YTRP9[J-1])/(XTRP9[J-1]-XTRP9[J]) 
      QIN(103,I)=(A*EN+B)*1.e-16                            
      A=(YTP9M[J]-YTP9M[J-1])/(XTRP9[J]-XTRP9[J-1])                     
      B=(XTRP9[J-1]*YTP9M[J]-XTRP9[J]*YTP9M[J-1])/(XTRP9[J-1]-XTRP9[J]) 
      RAT=A*EN+B
      GO TO 686
      685 QIN(103,I)=YTRP9(NTRP9)*(XTRP9(NTRP9)/EN)**2*1.e-16
      RAT=YTP9M(NTRP9)*(XTRP9(NTRP9)/EN)
      686 if(EN <= (3.0*EIN(103))) GO TO 690
      if(NANISO == 1):
      PEQIN(103,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(103,I)=PEQEL[2][(I-IOFFN(103)])
      690 CONTINUE                                                          
      # W1DEL (V=0-5)                               
      QIN(104,I)=0.0
      PEQIN(104,I)=0.5 
      if(NANISO == 2):
      PEQIN(104,I)=0.0                             
      if(EN <= EIN(104):
      ) GO TO 720
      if(EN > XSNG3(NSNG3):
      ) GO TO 715                               
      DO 700 J=2,NSNG3                                                  
      if(EN <= XSNG3[J]:
      ) GO TO 710                                      
      700 CONTINUE                                                          
      J=NSNG3                                                           
      710 A=(YSNG3[J]-YSNG3[J-1])/(XSNG3[J]-XSNG3[J-1])                     
      B=(XSNG3[J-1]*YSNG3[J]-XSNG3[J]*YSNG3[J-1])/(XSNG3[J-1]-XSNG3[J]) 
      QIN(104,I)=(A*EN+B)*1.e-16                                  
      A=(YSG3M[J]-YSG3M[J-1])/(XSNG3[J]-XSNG3[J-1])                     
      B=(XSNG3[J-1]*YSG3M[J]-XSNG3[J]*YSG3M[J-1])/(XSNG3[J-1]-XSNG3[J])
      RAT=A*EN+B
      GO TO 716
      715 QIN(104,I)=YSNG3(NSNG3)*(XSNG3(NSNG3)/EN)**1.5*1.e-16
      RAT=YSG3M(NSNG3)*(XSNG3(NSNG3)/EN)
      716 if(EN <= (3.0*EIN(104))) GO TO 720
      if(NANISO == 1):
      PEQIN(104,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(104,I)=PEQEL[2][(I-IOFFN(104)])
      720 CONTINUE                                                          
      # A1PI (V=4-15)                                 
      QIN(105,I)=0.0      
      PEQIN(105,I)=0.5 
      if(NANISO == 2):
      PEQIN(105,I)=0.0                         
      if(EN <= EIN(105):
      ) GO TO 723      
      if(EN > XSNG4(NSNG4):
      ) GO TO 7225                               
      DO 721 J=2,NSNG4                                                  
      if(EN <= XSNG4[J]:
      ) GO TO 722                                      
      721 CONTINUE                                                          
      J=NSNG4                                                           
      722 A=(YSNG4[J]-YSNG4[J-1])/(XSNG4[J]-XSNG4[J-1])                     
      B=(XSNG4[J-1]*YSNG4[J]-XSNG4[J]*YSNG4[J-1])/(XSNG4[J-1]-XSNG4[J]) 
      QIN(105,I)=(A*EN+B)*1.e-16                             
      A=(YSG4M[J]-YSG4M[J-1])/(XSNG4[J]-XSNG4[J-1])                     
      B=(XSNG4[J-1]*YSG4M[J]-XSNG4[J]*YSG4M[J-1])/(XSNG4[J-1]-XSNG4[J]) 
      RAT=A*EN+B
      GO TO 7226
      7225 QIN(105,I)=YSNG4(NSNG4)*(XSNG4(NSNG4)/EN)**1.5*1.e-16
      RAT=YSG4M(NSNG4)*(XSNG4(NSNG4)/EN)
      7226 if(EN <= (3.0*EIN(105))) GO TO 723
      if(NANISO == 1):
      PEQIN(105,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(105,I)=PEQEL[2][(I-IOFFN(105)])
      723 CONTINUE                                                          
      # B#3SIG   (V=7-18)                             
      QIN(106,I)=0.0
      PEQIN(106,I)=0.5 
      if(NANISO == 2):
      PEQIN(106,I)=0.0                              
      if(EN <= EIN(106):
      ) GO TO 750      
      if(EN > XTRP10(NTRP10):
      ) GO TO 745                               
      DO 730 J=2,NTRP10                                               
      if(EN <= XTRP10[J]:
      ) GO TO 740                                  
      730 CONTINUE                                                          
      J=NTRP10                                                        
      740 A=(YTRP10[J]-YTRP10[J-1])/(XTRP10[J]-XTRP10[J-1])               
      B=(XTRP10[J-1]*YTRP10[J]-XTRP10[J]*YTRP10[J-1])/(XTRP10[J-1]-XTRP10[J]) 
      QIN(106,I)=(A*EN+B)*1.e-16                                 
      A=(YTP10M[J]-YTP10M[J-1])/(XTRP10[J]-XTRP10[J-1])               
      B=(XTRP10[J-1]*YTP10M[J]-XTRP10[J]*YTP10M[J-1])/(XTRP10[J-1]-XTRP10[J]) 
      RAT=A*EN+B
      GO TO 746
      745 QIN(106,I)=YTRP10(NTRP10)*(XTRP10(NTRP10)/EN)**2*1.e-16
      RAT=YTP10M(NTRP10)*(XTRP10(NTRP10)/EN)
      746 if(EN <= (3.0*EIN(106))) GO TO 750
      if(NANISO == 1):
      PEQIN(106,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(106,I)=PEQEL[2][(I-IOFFN(106)])
      750 CONTINUE                                                          
      # A#1SIG (V=7-19)                                   
      QIN(107,I)=0.0
      PEQIN(107,I)=0.5   
      if(NANISO == 2):
      PEQIN(107,I)=0.0                                 
      if(EN <= EIN(107):
      ) GO TO 780          
      if(EN > XSNG5(NSNG5):
      ) GO TO 771                           
      DO 760 J=2,NSNG5                                                  
      if(EN <= XSNG5[J]:
      ) GO TO 770                                      
      760 CONTINUE                                                          
      J=NSNG5                                                           
      770 A=(YSNG5[J]-YSNG5[J-1])/(XSNG5[J]-XSNG5[J-1])                     
      B=(XSNG5[J-1]*YSNG5[J]-XSNG5[J]*YSNG5[J-1])/(XSNG5[J-1]-XSNG5[J]) 
      QIN(107,I)=(A*EN+B)*1.e-16                           
      A=(YSG5M[J]-YSG5M[J-1])/(XSNG5[J]-XSNG5[J-1])                     
      B=(XSNG5[J-1]*YSG5M[J]-XSNG5[J]*YSG5M[J-1])/(XSNG5[J-1]-XSNG5[J]) 
      RAT=A*EN+B
      GO TO 772
      771 QIN(107,I)=YSNG5(NSNG5)*(XSNG5(NSNG5)/EN)**1.5*1.e-16
      RAT=YSG5M(NSNG5)*(XSNG5(NSNG5)/EN)
      772 if(EN <= (3.0*EIN(107))) GO TO 780
      if(NANISO == 1):
      PEQIN(107,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(107,I)=PEQEL[2][(I-IOFFN(107)])
      780 CONTINUE                                                          
      # W1DEL (V=6-18)                          
      QIN(108,I)=0.0
      PEQIN(108,I)=0.5     
      if(NANISO == 2):
      PEQIN(108,I)=0.0                              
      if(EN <= EIN(108):
      ) GO TO 783      
      if(EN > XSNG6(NSNG6):
      ) GO TO 7825                               
      DO 781 J=2,NSNG6                                               
      if(EN <= XSNG6[J]:
      ) GO TO 782                                  
      781 CONTINUE                                                          
      J=NSNG6                                                
      782 A=(YSNG6[J]-YSNG6[J-1])/(XSNG6[J]-XSNG6[J-1])               
      B=(XSNG6[J-1]*YSNG6[J]-XSNG6[J]*YSNG6[J-1])/(XSNG6[J-1]-XSNG6[J]) 
      QIN(108,I)=(A*EN+B)*1.e-16                                 
      A=(YSG6M[J]-YSG6M[J-1])/(XSNG6[J]-XSNG6[J-1])               
      B=(XSNG6[J-1]*YSG6M[J]-XSNG6[J]*YSG6M[J-1])/(XSNG6[J-1]-XSNG6[J]) 
      RAT=A*EN+B
      GO TO 7826
      7825 QIN(108,I)=YSNG6(NSNG6)*(XSNG6(NSNG6)/EN)**1.5*1.e-16
      RAT=YSG6M(NSNG6)*(XSNG6(NSNG6)/EN)
      7826 if(EN <= (3.0*EIN(108))) GO TO 783
      if(NANISO == 1):
      PEQIN(108,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(108,I)=PEQEL[2][(I-IOFFN(108)])
      783 CONTINUE                                                          
      # C3PI (V=0-4)                     
      QIN(109,I)=0.0      
      PEQIN(109,I)=0.5     
      if(NANISO == 2):
      PEQIN(109,I)=0.0                     
      if(EN <= EIN(109):
      ) GO TO 786      
      if(EN > XTRP11(NTRP11):
      ) GO TO 7855                               
      DO 784 J=2,NTRP11                                               
      if(EN <= XTRP11[J]:
      ) GO TO 785                                  
      784 CONTINUE                                                          
      J=NTRP11                                                        
      785 A=(YTRP11[J]-YTRP11[J-1])/(XTRP11[J]-XTRP11[J-1])               
      B=(XTRP11[J-1]*YTRP11[J]-XTRP11[J]*YTRP11[J-1])/(XTRP11[J-1]-XTRP11[J]) 
      QIN(109,I)=(A*EN+B)*1.e-16                                 
      A=(YTP11M[J]-YTP11M[J-1])/(XTRP11[J]-XTRP11[J-1])               
      B=(XTRP11[J-1]*YTP11M[J]-XTRP11[J]*YTP11M[J-1])/(XTRP11[J-1]-XTRP11[J]) 
      RAT=A*EN+B
      GO TO 7856
      7855 QIN(109,I)=YTRP11(NTRP11)*(XTRP11(NTRP11)/EN)**2*1.e-16
      RAT=YTP11M(NTRP11)*(XTRP11(NTRP11)/EN)
      7856 if(EN <= (3.0*EIN(109))) GO TO 786
      if(NANISO == 1):
      PEQIN(109,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(109,I)=PEQEL[2][(I-IOFFN(109)])
      786 CONTINUE                                                          
      # E3SIG                                  
      QIN(110,I)=0.0
      PEQIN(110,I)=0.5   
      if(NANISO == 2):
      PEQIN(110,I)=0.0                               
      if(EN <= EIN(110):
      ) GO TO 789          
      if(EN > XTRP12(NTRP12):
      ) GO TO 7885                            
      DO 787 J=2,NTRP12                                                
      if(EN <= XTRP12[J]:
      ) GO TO 788                                    
      787 CONTINUE                                                         
      J=NTRP12                                                         
      788 A=(YTRP12[J]-YTRP12[J-1])/(XTRP12[J]-XTRP12[J-1])                
      B=(XTRP12[J-1]*YTRP12[J]-XTRP12[J]*YTRP12[J-1])/(XTRP12[J-1]-XTRP12[J]) 
      QIN(110,I)=(A*EN+B)*1.e-16                           
      A=(YTP12M[J]-YTP12M[J-1])/(XTRP12[J]-XTRP12[J-1])                
      B=(XTRP12[J-1]*YTP12M[J]-XTRP12[J]*YTP12M[J-1])/(XTRP12[J-1]-XTRP12[J]) 
      RAT=A*EN+B
      GO TO 7886
      7885 QIN(110,I)=YTRP12(NTRP12)*(XTRP12(NTRP12)/EN)**2*1.e-16
      RAT=YTP12M(NTRP12)*(XTRP12(NTRP12)/EN)
      7886 if(EN <= (3.0*EIN(110))) GO TO 789
      if(NANISO == 1):
      PEQIN(110,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(110,I)=PEQEL[2][(I-IOFFN(110)])
      789 CONTINUE                                                          
      # A##1SIG (V=0-1)                      
      QIN(111,I)=0.0
      PEQIN(111,I)=0.5 
      if(NANISO == 2):
      PEQIN(111,I)=0.0                                
      if(EN <= EIN(111):
      ) GO TO 792 
      if(EN > XSNG7(NSNG7):
      ) GO TO 7915                              
      DO 790 J=2,NSNG7                                               
      if(EN <= XSNG7[J]:
      ) GO TO 791                                  
      790 CONTINUE                                                          
      J=NSNG7                                                
      791 A=(YSNG7[J]-YSNG7[J-1])/(XSNG7[J]-XSNG7[J-1])               
      B=(XSNG7[J-1]*YSNG7[J]-XSNG7[J]*YSNG7[J-1])/(XSNG7[J-1]-XSNG7[J]) 
      QIN(111,I)=(A*EN+B)*1.e-16                                 
      A=(YSG7M[J]-YSG7M[J-1])/(XSNG7[J]-XSNG7[J-1])               
      B=(XSNG7[J-1]*YSG7M[J]-XSNG7[J]*YSG7M[J-1])/(XSNG7[J-1]-XSNG7[J])
      RAT=A*EN+B
      GO TO 7916
      7915 QIN(111,I)=YSNG7(NSNG7)*(XSNG7(NSNG7)/EN)**1.5*1.e-16
      RAT=YSG7M(NSNG7)*(XSNG7(NSNG7)/EN)
      7916 if(EN <= (3.0*EIN(111))) GO TO 792
      if(NANISO == 1):
      PEQIN(111,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(111,I)=PEQEL[2][(I-IOFFN(111)])
      792 CONTINUE                                                          
      # B1PI  (V=0-6)                 F=0.1855           
      QIN(112,I)=0.0
      PEQIN(112,I)=0.5        
      if(NANISO == 2):
      PEQIN(112,I)=0.0    
      if(EN <= EIN(112):
      ) GO TO 795  
      if(EN > XSNG8(NSNG8):
      ) GO TO 7945                      
      DO 793 J=2,NSNG8                                               
      if(EN <= XSNG8[J]:
      ) GO TO 794                                  
      793 CONTINUE                                                          
      J=NSNG8                                                
      794 A=(YSNG8[J]-YSNG8[J-1])/(XSNG8[J]-XSNG8[J-1])               
      B=(XSNG8[J-1]*YSNG8[J]-XSNG8[J]*YSNG8[J-1])/(XSNG8[J-1]-XSNG8[J]) 
      QIN(112,I)=(A*EN+B)*1.e-16                                 
      A=(YSG8M[J]-YSG8M[J-1])/(XSNG8[J]-XSNG8[J-1])               
      B=(XSNG8[J-1]*YSG8M[J]-XSNG8[J]*YSG8M[J-1])/(XSNG8[J-1]-XSNG8[J])
      RAT=A*EN+B
      GO TO 7946
      # USE BEF SCALING F=0.1855
      7945 QIN(112,I)=.1855/(EIN(112)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(112)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(112)+E[3])
      RAT=YSG8M(NSNG8)*(XSNG8(NSNG8)/EN)
      7946 if(EN <= (3.0*EIN(112))) GO TO 795
      if(NANISO == 1):
      PEQIN(112,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(112,I)=PEQEL[2][(I-IOFFN(112)])
      795 CONTINUE                                                          
      # C#1SIG (V=0-3)                    F=0.150
      QIN(113,I)=0.0      
      PEQIN(113,I)=0.5  
      if(NANISO == 2):
      PEQIN(113,I)=0.0                        
      if(EN <= EIN(113):
      ) GO TO 798   
      if(EN > XSNG9(NSNG9):
      ) GO TO 7975                          
      DO 796 J=2,NSNG9                                               
      if(EN <= XSNG9[J]:
      ) GO TO 797                                  
      796 CONTINUE                                                          
      J=NSNG9                                               
      797 A=(YSNG9[J]-YSNG9[J-1])/(XSNG9[J]-XSNG9[J-1])               
      B=(XSNG9[J-1]*YSNG9[J]-XSNG9[J]*YSNG9[J-1])/(XSNG9[J-1]-XSNG9[J]) 
      QIN(113,I)=(A*EN+B)*1.e-16                                 
      A=(YSG9M[J]-YSG9M[J-1])/(XSNG9[J]-XSNG9[J-1])               
      B=(XSNG9[J-1]*YSG9M[J]-XSNG9[J]*YSG9M[J-1])/(XSNG9[J-1]-XSNG9[J])
      RAT=A*EN+B
      GO TO 7976
      # USE BEF SCALING   F=0.15
      7975 QIN(113,I)=.15000/(EIN(113)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(113)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(113)+E[3])
      RAT=YSG9M(NSNG9)*(XSNG9(NSNG9)/EN)
      7976 if(EN <= (3.0*EIN(113))) GO TO 798
      if(NANISO == 1):
      PEQIN(113,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(113,I)=PEQEL[2][(I-IOFFN(113)])
      798 CONTINUE                                                          
      # G 3PI (V=0-3)                          
      QIN(114,I)=0.0
      PEQIN(114,I)=0.5
      if(NANISO == 2):
      PEQIN(114,I)=0.0                                 
      if(EN <= EIN(114):
      ) GO TO 801      
      if(EN > XTRP13(NTRP13):
      ) GO TO 8005                              
      DO 799 J=2,NTRP13                                                
      if(EN <= XTRP13[J]:
      ) GO TO 800                                    
      799 CONTINUE                                                         
      J=NTRP13                                                         
      800 A=(YTRP13[J]-YTRP13[J-1])/(XTRP13[J]-XTRP13[J-1])                
      B=(XTRP13[J-1]*YTRP13[J]-XTRP13[J]*YTRP13[J-1])/(XTRP13[J-1]-XTRP13[J]) 
      QIN(114,I)=(A*EN+B)*1.e-16                           
      A=(YTP13M[J]-YTP13M[J-1])/(XTRP13[J]-XTRP13[J-1])                
      B=(XTRP13[J-1]*YTP13M[J]-XTRP13[J]*YTP13M[J-1])/(XTRP13[J-1]-XTRP13[J]) 
      RAT=A*EN+B
      GO TO 8006
      8005 QIN(114,I)=YTRP13(NTRP13)*(XTRP13(NTRP13)/EN)**1.5*1.e-16
      RAT=YTP13M(NTRP13)*(XTRP13(NTRP13)/EN)
      8006 if(EN <= (3.0*EIN(114))) GO TO 801
      if(NANISO == 1):
      PEQIN(114,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(114,I)=PEQEL[2][(I-IOFFN(114)])
      801 CONTINUE                                                          
      # C3 1PI (V=0-3)                 F=0.15            
      QIN(115,I)=0.0
      PEQIN(115,I)=0.5  
      if(NANISO == 2):
      PEQIN(115,I)=0.0                              
      if(EN <= EIN(115):
      ) GO TO 804          
      if(EN > XSNG10(NSNG10):
      ) GO TO 8035                           
      DO 802 J=2,NSNG10                                              
      if(EN <= XSNG10[J]:
      ) GO TO 803                                  
      802 CONTINUE                                                          
      J=NSNG10                                               
      803 A=(YSNG10[J]-YSNG10[J-1])/(XSNG10[J]-XSNG10[J-1])               
      B=(XSNG10[J-1]*YSNG10[J]-XSNG10[J]*YSNG10[J-1])/(XSNG10[J-1]-XSNG10[J]) 
      QIN(115,I)=(A*EN+B)*1.e-16                                 
      A=(YSG10M[J]-YSG10M[J-1])/(XSNG10[J]-XSNG10[J-1])               
      B=(XSNG10[J-1]*YSG10M[J]-XSNG10[J]*YSG10M[J-1])/(XSNG10[J-1]-XSNG10[J]) 
      RAT=A*EN+B
      GO TO 8036
      # USE BEF SCALING
      8035 QIN(115,I)=.1500/(EIN(115)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(115)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(115)+E[3])
      RAT=YSG10M(NSNG10)*(XSNG10(NSNG10)/EN) 
      8036 if(EN <= (3.0*EIN(115))) GO TO 804
      if(NANISO == 1):
      PEQIN(115,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(115,I)=PEQEL[2][(I-IOFFN(115)])
      804 CONTINUE                                                          
      # F 3PI (V=0-3)                          
      QIN(116,I)=0.0      
      PEQIN(116,I)=0.5   
      if(NANISO == 2):
      PEQIN(116,I)=0.0                       
      if(EN <= EIN(116):
      ) GO TO 807                              
      if(EN > XTRP14(NTRP14):
      ) GO TO 8065        
      DO 805 J=2,NTRP14                                                
      if(EN <= XTRP14[J]:
      ) GO TO 806                                    
      805 CONTINUE                                                         
      J=NTRP14                                                         
      806 A=(YTRP14[J]-YTRP14[J-1])/(XTRP14[J]-XTRP14[J-1])                
      B=(XTRP14[J-1]*YTRP14[J]-XTRP14[J]*YTRP14[J-1])/(XTRP14[J-1]-XTRP14[J]) 
      QIN(116,I)=(A*EN+B)*1.e-16                           
      A=(YTP14M[J]-YTP14M[J-1])/(XTRP14[J]-XTRP14[J-1])                
      B=(XTRP14[J-1]*YTP14M[J]-XTRP14[J]*YTP14M[J-1])/(XTRP14[J-1]-XTRP14[J]) 
      RAT=A*EN+B
      GO TO 8066
      8065 QIN(116,I)=YTRP14(NTRP14)*(XTRP14(NTRP14)/EN)**1.5*1.e-16
      RAT=YTP14M(NTRP14)*(XTRP14(NTRP14)/EN)
      8066 if(EN <= (3.0*EIN(116))) GO TO 807
      if(NANISO == 1):
      PEQIN(116,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(116,I)=PEQEL[2][(I-IOFFN(116)])
      807 CONTINUE                                                          
      # B1PI  (V=7-14)                      F=0.0663
      QIN(117,I)=0.0      
      PEQIN(117,I)=0.5 
      if(NANISO == 2):
      PEQIN(117,I)=0.0                         
      if(EN <= EIN(117):
      ) GO TO 810 
      if(EN > XSNG11(NSNG11):
      ) GO TO 8095                          
      DO 808 J=2,NSNG11                                              
      if(EN <= XSNG11[J]:
      ) GO TO 809                                  
      808 CONTINUE                                                          
      J=NSNG11                                               
      809 A=(YSNG11[J]-YSNG11[J-1])/(XSNG11[J]-XSNG11[J-1])               
      B=(XSNG11[J-1]*YSNG11[J]-XSNG11[J]*YSNG11[J-1])/(XSNG11[J-1]-XSNG11[J]) 
      QIN(117,I)=(A*EN+B)*1.e-16                                 
      A=(YSG11M[J]-YSG11M[J-1])/(XSNG11[J]-XSNG11[J-1])               
      B=(XSNG11[J-1]*YSG11M[J]-XSNG11[J]*YSG11M[J-1])/(XSNG11[J-1]-XSNG11[J]) 
      RAT=A*EN+B
      GO TO 8096
      # USE BEF SCALING
      8095 QIN(117,I)=.0663/(EIN(117)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(117)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(117)+E[3])
      RAT=YSG11M(NSNG11)*(XSNG11(NSNG11)/EN) 
      8096 if(EN <= (3.0*EIN(117))) GO TO 810
      if(NANISO == 1):
      PEQIN(117,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(117,I)=PEQEL[2][(I-IOFFN(117)])
      810 CONTINUE                                                          
      # B# 1SIG (V=0-10)                       F=.0601
      QIN(118,I)=0.0      
      PEQIN(118,I)=0.5 
      if(NANISO == 2):
      PEQIN(118,I)=0.0                         
      if(EN <= EIN(118):
      ) GO TO 813 
      if(EN > XSNG12(NSNG12):
      ) GO TO 8125                            
      DO 811 J=2,NSNG12                                              
      if(EN <= XSNG12[J]:
      ) GO TO 812                                  
      811 CONTINUE                                                          
      J=NSNG12                                               
      812 A=(YSNG12[J]-YSNG12[J-1])/(XSNG12[J]-XSNG12[J-1])               
      B=(XSNG12[J-1]*YSNG12[J]-XSNG12[J]*YSNG12[J-1])/(XSNG12[J-1]-XSNG12[J]) 
      QIN(118,I)=(A*EN+B)*1.e-16                                 
      A=(YSG12M[J]-YSG12M[J-1])/(XSNG12[J]-XSNG12[J-1])               
      B=(XSNG12[J-1]*YSG12M[J]-XSNG12[J]*YSG12M[J-1])/(XSNG12[J-1]-XSNG12[J]) 
      RAT=A*EN+B
      GO TO 8126
      8125 QIN(118,I)=.0601/(EIN(118)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(118)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(118)+E[3])
      RAT=YSG12M(NSNG12)*(XSNG12(NSNG12)/EN) 
      8126 if(EN <= (3.0*EIN(118))) GO TO 813
      if(NANISO == 1):
      PEQIN(118,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(118,I)=PEQEL[2][(I-IOFFN(118)])
      813 CONTINUE                                                          
      # O3 1PI (V=0-3)                       F=0.0828
      QIN(119,I)=0.0
      PEQIN(119,I)=0.5  
      if(NANISO == 2):
      PEQIN(119,I)=0.0                               
      if(EN <= EIN(119):
      ) GO TO 816    
      if(EN > XSNG13(NSNG13):
      ) GO TO 8155                             
      DO 814 J=2,NSNG13                                              
      if(EN <= XSNG13[J]:
      ) GO TO 815                                  
      814 CONTINUE                                                          
      J=NSNG13                                               
      815 A=(YSNG13[J]-YSNG13[J-1])/(XSNG13[J]-XSNG13[J-1])               
      B=(XSNG13[J-1]*YSNG13[J]-XSNG13[J]*YSNG13[J-1])/(XSNG13[J-1]-XSNG13[J])  
      QIN(119,I)=(A*EN+B)*1.e-16                                 
      A=(YSG13M[J]-YSG13M[J-1])/(XSNG13[J]-XSNG13[J-1])               
      B=(XSNG13[J-1]*YSG13M[J]-XSNG13[J]*YSG13M[J-1])/(XSNG13[J-1]-XSNG13[J])  
      RAT=A*EN+B
      GO TO 8156
      # USE BEF SCALING
      8155 QIN(119,I)=.0828/(EIN(119)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(119)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(119)+E[3])
      RAT=YSG13M(NSNG13)*(XSNG12(NSNG13)/EN) 
      8156 if(EN <= (3.0*EIN(119))) GO TO 816
      if(NANISO == 1):
      PEQIN(119,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(119,I)=PEQEL[2][(I-IOFFN(119)])
      816 CONTINUE   
      # C# 1SIG  (SUM V=4-6) (AVERAGE E=14.090)  F=0.139
      QIN(120,I)=0.0
      PEQIN(120,I)=0.5  
      if(NANISO == 2):
      PEQIN(120,I)=0.0                            
      if(EN <= EIN(120):
      ) GO TO 819    
      if(EN > XSNG14(NSNG14):
      ) GO TO 8185                             
      DO 817 J=2,NSNG14                                              
      if(EN <= XSNG14[J]:
      ) GO TO 818                                  
      817 CONTINUE                                                          
      J=NSNG14                                               
      818 A=(YSNG14[J]-YSNG14[J-1])/(XSNG14[J]-XSNG14[J-1])               
      B=(XSNG14[J-1]*YSNG14[J]-XSNG14[J]*YSNG14[J-1])/(XSNG14[J-1]-XSNG14[J]) 
      QIN(120,I)=(A*EN+B)*1.e-16                                 
      A=(YSG14M[J]-YSG14M[J-1])/(XSNG14[J]-XSNG14[J-1])               
      B=(XSNG14[J-1]*YSG14M[J]-XSNG14[J]*YSG14M[J-1])/(XSNG14[J-1]-XSNG14[J]) 
      RAT=A*EN+B
      GO TO 8186
      # USE BEF SCALING
      8185 QIN(120,I)=0.1390/(EIN(120)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(120)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(120)+E[3])
      RAT=YSG14M(NSNG14)*(XSNG14(NSNG14)/EN) 
      8186 if(EN <= (3.0*EIN(120))) GO TO 819
      if(NANISO == 1):
      PEQIN(120,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(120,I)=PEQEL[2][(I-IOFFN(120)])
      819 CONTINUE                                                          
      #    
      # B# 1SIG  (V=11-24)                 
      QIN(121,I)=0.0
      PEQIN(121,I)=0.5
      if(NANISO == 2):
      PEQIN(121,I)=0.0                                
      if(EN <= EIN(121):
      ) GO TO 829    
      if(EN > XSNG15(NSNG15):
      ) GO TO 8285                             
      DO 827 J=2,NSNG15                                             
      if(EN <= XSNG15[J]:
      ) GO TO 828                                  
      827 CONTINUE                                                          
      J=NSNG15                                               
      828 A=(YSNG15[J]-YSNG15[J-1])/(XSNG15[J]-XSNG15[J-1])               
      B=(XSNG15[J-1]*YSNG15[J]-XSNG15[J]*YSNG15[J-1])/(XSNG15[J-1]-XSNG15[J]) 
      QIN(121,I)=(A*EN+B)*1.e-16                                 
      A=(YSG15M[J]-YSG15M[J-1])/(XSNG15[J]-XSNG15[J-1])               
      B=(XSNG15[J-1]*YSG15M[J]-XSNG15[J]*YSG15M[J-1])/(XSNG15[J-1]-XSNG15[J]) 
      RAT=A*EN+B
      GO TO 8286
      # USE BEF SCALING                           F=0.265
      8285 QIN(121,I)=0.2650/(EIN(121)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(121)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(121)+E[3])
      RAT=YSG15M(NSNG15)*(XSNG15(NSNG15)/EN) 
      8286 if(EN <= (3.0*EIN(121))) GO TO 829
      if(NANISO == 1):
      PEQIN(121,I)=1.5-RAT
      if(NANISO == 2):
      PEQIN(121,I)=PEQEL[2][(I-IOFFN(121)])
      829 CONTINUE                                                          
      # E# 1SIG     ELOSS=14.36EV    F=0.0108   
      QIN(122,I)=0.0      
      PEQIN(122,I)=0.5  
      if(NANISO == 2):
      PEQIN(122,I)=0.0               
      if(EN <= EIN(122):
      ) GO TO 895    
      # USE BEF SCALING
      QIN(122,I)=0.0108/(EIN(122)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(122)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(122)+E[3])
      if(QIN(122,I):
      < 0.0) QIN(122,I)=0.0
      # 
      PEQIN(122,I)=PEQIN(121,I)
      895 CONTINUE
      # E 1PI     ELOSS=14.45EV    F=0.0237   
      QIN(123,I)=0.0      
      PEQIN(123,I)=0.5                
      if(NANISO == 2):
      PEQIN(123,I)=0.0 
      if(EN <= EIN(123):
      ) GO TO 896    
      # USE BEF SCALING
      QIN(123,I)=0.0237/(EIN(123)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(123)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(123)+E[3])
      if(QIN(123,I):
      < 0.0) QIN(123,I)=0.0
      # 
      PEQIN(123,I)=PEQIN(121,I)
      896 CONTINUE
      # SINGLET     ELOSS=14.839EV   F=0.0117   
      QIN(124,I)=0.0      
      PEQIN(124,I)=0.5                
      if(NANISO == 2):
      PEQIN(124,I)=0.0 
      if(EN <= EIN(124):
      ) GO TO 897    
      # USE BEF SCALING
      QIN(124,I)=0.0117/(EIN(124)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(124)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(124)+E[3])
      if(QIN(124,I):
      < 0.0) QIN(124,I)=0.0
      # 
      PEQIN(124,I)=PEQIN(121,I)
      897 CONTINUE
      # SUM OF HIGH  ENERGY SINGLETS        ELOSS=15.20EV    F=0.1152   
      QIN(125,I)=0.0      
      PEQIN(125,I)=0.5                
      if(NANISO == 2):
      PEQIN(125,I)=0.0 
      if(EN <= EIN(125):
      ) GO TO 898    
      # USE BEF SCALING
      QIN(125,I)=0.1152/(EIN(125)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(125)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(125)+E[3])
      if(QIN(125,I):
      < 0.0) QIN(125,I)=0.0
      # 
      PEQIN(125,I)=PEQIN(121,I)
      898 CONTINUE
      # SUM NEUTRAL BREAKUP ABOVE IONISATION ENERGY  F=0.160
      QIN(126,I)=0.0      
      PEQIN(126,I)=0.5                
      if(NANISO == 2):
      PEQIN(126,I)=0.0 
      if(EN <= EIN(126):
      ) GO TO 899    
      # USE BORN SCALING AND FACTOR TO GIVE TRIPLET+DIPOLE CONTRIBUTION
      QIN(126,I)=0.1600/(EIN(126)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(126)))-BETA2-DEN[I]/2.0)*BBCONST*(EN+2.0*EIN(126))/EN 
      if(QIN(126,I):
      < 0.0) QIN(126,I)=0.0
      PEQIN(126,I)=PEQIN(121,I)
      # SUM NEUTRAL BREAKUP ABOVE IONISATION ENERGY  F=0.090
      899 QIN(127,I)=0.0      
      PEQIN(127,I)=0.5                
      if(NANISO == 2):
      PEQIN(127,I)=0.0 
      if(EN <= EIN(127):
      ) GO TO 8999   
      # USE BORN SCALING AND FACTOR TO GIVE TRIPLET+DIPOLE CONTRIBUTION
      QIN(127,I)=0.0900/(EIN(127)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(127)))-BETA2-DEN[I]/2.0)*BBCONST*(EN+2.0*EIN(127))/EN 
      if(QIN(127,I):
      < 0.0) QIN(127,I)=0.0
      PEQIN(127,I)=PEQIN(121,I)
      8999 CONTINUE
      # LOAD BREMSSTRAHLUNG X-SECTION
      QIN(128,I)=0.0
      if(EN <= 1000.):
      GO TO 8969
      DO 8961 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 8962
      8961 CONTINUE
      J=NBREM
      8962 A=(math.log(Z7T[J])-math.log(Z7T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z7T[J])*EBRM[J-1]-math.log(Z7T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN(128,I)=math.exp(A*EN+B)*2.e-24
      8969 CONTINUE                                                          
      # ROTATIONAL SUM                                                        
      SUMR=0.0                                                       
      DO 8990 K=1,76                                     
      SUMR=SUMR+QIN(K,I)                                              
      8990 CONTINUE 
      #  VIBRATIONAL SUM
      SUMV=0
      DO 8991 K=77,92
      SUMV=SUMV+QIN(K,I)
      8991 CONTINUE
      # EXCITATION SUM
      SUMEX=0.0
      DO 8992 K=93,111  
      SUMEX=SUMEX+QIN(K,I)   
      8992 CONTINUE                                                          
      # EXCITATION SUM
      SUMEX1=0.0
      DO 8993  K=112,127
      SUMEX1=SUMEX1+QIN(K,I)   
      8993 CONTINUE                                                          
      # GET CORRECT ELASTIC XSECTION BY SUBTRACTION OF ROTATION
      Q[2][I]=Q[2][I]-SUMR
      # FOR VERY HIGH TEMPERATURES SOMETIMES SUMR BECOMES LARGER THAN
      # THE ELASTIC+ROT (ONLY IN FIRST TWO ENERGY BINS) FIX GT 0
      if(Q[2][I]:
      <= 0.0) :
      Q[2][I]=0.95e-16
      # endif
      Q[1][I]=Q[2][I]+Q[5][I]+QION[2][I]+SUMR+SUMV+SUMEX+SUMEX1           
      #     Q[1][I]=Q[2][I]+Q[5][I]+QION[2][I]+SUMR+SUMV+SUMEX+SUMEX1+QIN(127,I)
      # CAN PRINT OUT X-SECTION DATA
      #     SUMR=SUMR*1.D16
      #     SUMV=SUMV*1.D16
      #     SUMEX=SUMEX*1.D16
      #     SUMEX1=SUMEX1*1.D16
      #     SUMVEX=SUMV+SUMEX+SUMEX1
      #     SUMVEXI=SUMVEX+Q[5][I]*1.D16
      #     WRITE(6,8769) EN,SUMR,SUMV,SUMEX,SUMEX1,SUMVEX,SUMVEXI
      #8769 print(' EN=','%.3f' % ,' SUMR=','%.3f' % ,' SUMV=','%.3f' % ,' SUMEX=','%.3f' % ,' SU
      #    /MEX1=','%.3f' % ,' SUMVEX=','%.3f' % ,' TOT=','%.3f' % )
      #     WRITE(6,8770) EN,QION[1][I],QION[2][I],Q[5][I]
      #8770 print(' EN=','%.4f' % ,' QION1=','%.4f' % ,' QION2=','%.4f' % ,' Q5=','%.4f' % )
      # PRINT IONISATION DATA
      #     SUMN2P=QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]
      #    /+QION[7][I]
      #     SUMNP=QION[8][I]+QION[9][I]+QION[10][I]
      #     SUMITOT=SUMNP+SUMN2P+QION[11][I]+QION[12][I]
      #     WRITE(6,8771) EN,SUMN2P,SUMNP,QION[11][I],QION[12][I],SUMITOT
      #8771 print(' EN=','%.4f' % ,' N2+ =','%.4f' % ,' N++ =','%.4f' % ,' N+,N+=','%.4f' % ,
      #    /' KSHELL=','%.4f' % ,' TOT=','%.4f' % ) 
      #     WRITE(6,8772) EN,( QION[J][I],J=1,12)
      #8772 print(' EN=','%.4f' % ,/,2X,6('%.4f' % ,2X),/,2X,(6'%.4f' % ,2X))
      900 CONTINUE         
      #     STOP                                                 
      # SAVE COMPUTE TIME                                                     
      DO 1000 K=1,127                                                   
      J=128-K                                                           
      if(EFINAL <= EIN[J]:
      ) NIN=J-1                                      
      1000 CONTINUE
      if(NIN < 77):
      NIN=77 
      if(EFINAL > 1000.):
      NIN=128
      #                                                                       
      return                                                            
      # end                                                               
def GAS17(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS18(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS19(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS20(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS21(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)   
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      DIMENSION XELM(172),YELM(172),YELT(172),YEPS(172),XROT0[53],YROT0[53],XROT1[43],YROT1[43],XROT2[28],YROT2[28],XROT3[28],YROT3[28],XVIB1[43],YVIB1[43],XVIB2[42],YVIB2[42],XVIB3[13],YVIB3[13],XVIB4[12],YVIB4[12],XB3S1[3],YB3S1[3],XB3S2[6],YB3S2[6],XB3S3[5],YB3S3[5],XB3S4[8],YB3S4[8],XC3PI[5],YC3PI[5],XA3SG[5],YA3SG[5],XE3SG[5],YE3SG[5],XEFSG[34],YEFSG[34],XATT[18],YATT[18],XION(92),YION(92),XIOND[61],YIOND[61],IOFFN(107),IOFFION[2],PJ[7],ERLVL[7],BEF[10]
      DIMENSION DISLY[37],DISWR[14],DISD1P[16],DISB1S[9]
      DIMENSION Z1T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10]                                
      CHARACTER*25 NAME 
      # --------------------------------------------------------------      
      # ELASTIC MT                                                   
      XELM=[0.00,.001,.0012,.0015,.0018,.002,.0025,.003,.004,.005,.006,.007,.008,.009,.010,.012,.015,.018,.020,.025,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.10,0.12,0.15,  0.18,0.20,0.25,0.30,0.40,0.50,0.60,0.70,0.80,0.90,1.00,1.20,1.50,1.80,2.00,2.50,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0,18.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]  
      YELM=[7.24,7.25,7.26,7.26,7.27,7.28,7.30,7.35,7.38,7.45,7.48,7.54,7.59,7.64,7.70,7.78,7.90,8.04,8.14,8.33,8.56,8.93,9.27,9.54,9.79,10.04,10.25,10.47,10.86,11.35,11.78,12.02,12.54,13.00,13.81,14.52,15.16,15.66,16.17,16.58,17.01,17.70,18.05,18.05,17.70,16.60,15.35,12.85,10.90,9.450,8.20,7.20,6.30,5.60,4.45,3.275,2.529,2.154,1.476,1.100,.702,.505,.375,.295,.238,.195,.170,.116,.0868,.0662,.0524,.0353,.0256,.0195,.0154,.0125,.0103,.00747,.00567,.00446,.00361,.00299,.0020,.00144,.00109,8.53e-4,5.69e-4,4.08e-4,3.08e-4,2.41e-4,1.94e-4,1.60e-4,1.15e-4,8.65e-5,6.77e-5,5.45e-5,4.49e-5,2.98e-5,2.13e-5,1.60e-5,1.26e-5,8.34e-6,5.97e-6,4.51e-6,3.54e-6,2.86e-6,2.36e-6,1.70e-6,1.29e-6,1.02e-6,8.26e-7,6.86e-7,4.65e-7,3.40e-7,2.62e-7,2.09e-7,1.44e-7,1.07e-7,8.37e-8,6.76e-8,5.62e-8,4.76e-8,3.58e-8,2.82e-8,2.30e-8,1.92e-8,1.63e-8,1.15e-8,8.67e-9,6.80e-9,5.49e-9,3.83e-9,2.84e-9,2.20e-9,1.76e-9,1.44e-9,1.20e-9,8.79e-10,6.72e-10,5.31e-10,4.31e-10,3.57e-10,2.39e-10,1.72e-10,1.30e-10,1.02e-10,6.74e-11,4.81e-11,3.61e-11,2.81e-11,2.25e-11,1.85e-11,1.31e-11,9.76e-12,7.57e-12,6.04e-12,4.93e-12,3.20e-12,2.24e-12,1.66e-12,1.27e-12,8.18e-13,5.70e-13,4.19e-13,3.21e-13,2.54e-13,2.06e-13,1.43e-13,1.05e-13,8.06e-14,6.37e-14,5.16e-14]
# ELASTIC ANGULAR DISTRIBUTION def EPSILON
      # EPSILON =1-YEPS
      YEPS=[1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.00204,1.00406,1.00403,1.00402,1.00799,1.01195,1.01587,1.01974,1.02548,1.03497,1.04613,1.05537,1.07162,1.09485,1.11355,1.13538,1.15360,1.16779,1.18516,1.19550,1.20711,1.22691,1.25186,1.27686,1.29241,1.29958,1.33194,1.36128,1.39254,1.42965,1.43614,1.42939,1.42749,1.44093,1.43942,1.39970,1.34691,1.29121,1.15375,1.03498,0.81607,0.68293,0.59997,0.53826,0.48433,0.43796,0.41063,0.36112,0.31690,0.28482,0.26105,0.20648,0.18652,0.14951,0.13589,0.11425,0.10223,0.09743,0.08175,0.08042,0.06877,0.06127,0.05204,0.04596,0.03674,0.02996,0.02695,0.02487,0.02173,0.01973,0.01733,0.01536,0.01371,.012395,.011378,.009183,.007832,.006527,.005948,.004772,.004142,.003545,.003086,.002742,.002452,.002049,.001748,.001525,.001351,.001215,.0009666,.0007993,.0006810,5.977e-4,4.724e-4,3.896e-4,3.326e-4,2.893e-4,2.544e-4,2.282e-4,1.866e-4,1.581e-4,1.370e-4,1.199e-4,1.066e-4,8.29e-5,6.72e-5,5.63e-5,4.80e-5,3.65e-5,2.91e-5,2.40e-5,2.02e-5,1.73e-5,1.50e-5,1.17e-5,9.40e-6,7.77e-6,6.54e-6,5.59e-6,3.98e-6,2.99e-6,2.33e-6,1.87e-6,1.28e-6,9.38e-7,7.15e-7,5.64e-7,4.56e-7,3.77e-7,2.70e-7,2.02e-7,1.57e-7,1.26e-7,1.03e-7,6.74e-8,4.74e-8,3.52e-8,2.72e-8,1.76e-8,1.23e-8,9.05e-9,6.95e-9,5.50e-9,4.46e-9,3.10e-9,2.28e-9,1.74e-9,1.37e-9,1.11e-9,7.04e-10,4.85e-10,3.53e-10,2.67e-10,1.68e-10,1.15e-10,8.3D-11,6.3D-11,4.9D-11,4.0D-11,2.7D-11,2.0D-11,1.5D-11,1.2D-11,9.0D-12]
      # ELASTIC FROM 100EV
      YELT=[7.24,7.25,7.26,7.26,7.27,7.28,7.30,7.36,7.40,7.43,7.46,7.50,7.53,7.56,7.60,7.65,7.72,7.80,7.85,7.95,8.05,8.30,8.50,8.65,8.80,8.93,9.06,9.19,9.42,9.70,9.92,10.03,10.42,10.60,11.07,11.43,11.68,12.02,12.46,12.79,13.02,13.56,14.15,14.59,14.78,15.05,15.00,14.66,13.90,13.05,12.10,11.33,10.54,9.744,8.375,6.678,5.508,4.952,3.931,3.125,2.299,1.760,1.465,1.241,1.034,0.954,0.841,0.639,0.518,0.443,.383,.303,.255,.210,.176,.158,.140,.112,.0932,.0800,.070,.062,.049,.040,.035,.0295,.0235,.0189,.0162,.0142,.0126,.0114,.00951,.00817,.00717,.00639,.00576,.00464,.00390,.00336,.00296,.00240,.00203,.00176,.00156,.00141,.00128,.00110,9.66e-4,8.67e-4,7.90e-4,7.28e-4,6.17e-4,5.44e-4,4.91e-4,4.52e-4,3.98e-4,3.63e-4,3.38e-4,3.19e-4,3.05e-4,2.94e-4,2.77e-4,2.66e-4,2.58e-4,2.52e-4,2.47e-4,2.39e-4,2.34e-4,2.31e-4,2.28e-4,2.25e-4,2.23e-4,2.22e-4,2.22e-4,2.21e-4,2.21e-4,2.20e-4,2.20e-4,2.20e-4,2.19e-4,2.19e-4,2.19e-4,2.19e-4,2.19e-4,27*2.188e-4]      
      #-----------------------------------------------------------------------
      # ROTATION J=0-2
# SCALED BY 1/E ABOVE 20 EV IN def                    
      XROT0=[.043928,.046,.047,.048,.049,.050,.051,.054,.055,.060, .065,.070,.080,.090,0.10,0.11,0.12,0.13,0.14,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55,0.60,0.65, 0.70,0.80,0.90,1.00,1.10,1.20,1.35,1.50,1.75,2.00,2.50,3.00,3.50,4.00,4.50,5.00,6.00,7.00,8.00,9.00,                10.0,15.0,20.0]                                                   
      YROT0=[0.00,.0206,.0276,.0286,.0297,.0308,.0310,.0330,.0340,.0394, .0452,.0507,.0614,.0680,.0740,.0790,.0835,.088,.0925,.0970,.115,.132,.152,.175,.200,.228,.260,.291,.323,.359, .394,.469,.555,.636,.716,.796,.916,1.036,1.203,1.370,1.585,1.704,1.755,1.758,1.732,1.689,1.579,1.462,1.350,1.248,      1.156,0.730,0.47]                                            
      #-----------------------------------------------------------------------
      # ROTATION J=1-3                                                        
# SCALED BY 1/E ABOVE 20 EV IN def                    
      XROT1=[0.072741,.075,.080,.085,.090,.095,0.10,0.11,0.12,0.13,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.56,0.60,                0.66,0.70,0.80,0.90,1.01,1.20,1.40,1.60,1.80,2.00,                2.50,3.00,3.50,4.00,4.50,5.00,6.00,7.00,8.00,9.00,                10.0,15.0,20.0]             
      YROT1=[0.00,.0085,.0149,.0203,.0238,.0266,.0282,.0351,.0403,  .0449,.0520,.0604,.0719,.0870,.1029,.1191,.1361,.1543,.1773,.1944,.2212,.2396,.2839,.3328,.3842,.489,.569,.658,.743,.818,           .952,1.020,1.046,1.050,1.036,1.011,.946,.876,.809,.748,           .694,.440,.288]                                                
      #-----------------------------------------------------------------------
      # ROTATION J=2-4                                         
# SCALED BY 1/E ABOVE 20 EV IN def                    
      XROT2=[0.10085,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.60, 0.70,0.80,0.90,1.00,1.50,2.00,2.50,3.00,3.50,4.00,                4.50,5.00,5.50,6.00,7.00,8.00,10.0,20.0]  
      YROT2=[0.00,.0249,.0367,.0475,.0577,.0694,.0834,.1003,.1192,  .145,.178,.216,.256,.299,.436,.543,.600,.649,.670,.672,           .662,.646,.627,.605,.561,.517,.444,0.20]
      # ROTATION J=4-6 USE X-SECTION FOR J=2-4 SCALED BY 0.8
      # ROTATION J=6-8 USE X-SECTION FOR J=2-4 SCALED BY 0.5               
      #-----------------------------------------------------------------------
      # ROTATION J=3-5                              
# SCALED BY 1/E ABOVE 20 EV IN def                    
      XROT3=[0.12797,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.60,0.70,0.80,0.90,1.00,1.50,2.00,2.50,3.00,3.50,4.00,                4.50,5.00,5.50,6.00,7.00,8.00,10.0,20.0]
      YROT3=[0.00,.019,.033,.043,.050,.058,.066,.075,.085,.104,     .128,.154,.185,.214,.334,.565,.700,.750,.825,.828,                .818,.797,.774,.747,.692,.640,.548,0.24]
      # ROTATION J=5-7 USE X-SECTION FOR J=3-5 SCALED BY 0.8
      # ROTATION J=7-9 USE X-SECTION FOR J=3-5 SCALED BY 0.5           
      #-----------------------------------------------------------------------
      # VIBRATION V=0-1 DELTAJ=0  ROTATIONALLY ELASTIC  
      # SCALE AS 1/E ABOVE 100 EV                      
      XVIB1=[.515916,0.56,0.58,0.60,0.65,0.75,0.85,0.95,1.00,1.05, 1.10,1.15,1.20,1.30,1.40,1.60,1.80,2.20,2.40,2.60,                3.00,3.50,4.00,4.50,5.00,6.00,7.00,8.00,9.00,10.0,                11.0,12.0,13.0,14.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]          
      YVIB1=[0.00,.0005,.0031,.0064,.0071,.0106,.0170,.0279,.0342,  .0399,.0451,.0501,.0545,.0651,.0735,.0964,.1216,.1624,.1677,.1719,.1916,.2008,.1860,.1630,.1460,.1160,.0876,.0655,.0510,.0430,.0366,.0318,.0280,.0241,.0222,.0143,.0104,.0073,.0048,.00416,.00351,.00262,.00194]
      #-----------------------------------------------------------------------
      # VIBRATION V=0-1 DELTAJ=2  ROTATIONALLY INELASTIC 
      # SCALE AS 1/E ABOVE 100 EV                     
      XVIB2=[.568,.575,0.60,0.65,0.75,0.85,0.95,1.00,1.05,1.10,1.15,1.20,1.30,1.40,1.60,1.80,2.20,2.40,2.60,3.00,                3.50,4.00,4.50,5.00,6.00,7.00,8.00,9.00,10.0,11.0,                12.0,13.0,14.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,80.0,100.]               
      YVIB2=[0.00,.0002,.0016,.0028,.0058,.0110,.0204,.0264,.0316,.0369,.0423,.0477,.0602,.0697,.0994,.1334,.1910,.2008,.2141,.2494,.2672,.2540,.2270,.2040,.1640,.1224,.0905,.0690,.0570,.0484,      .0422,.0370,.0319,.0294,.0189,.0138,.0097,.0064,.00552,.00466,.00347,.00257]      
      #-----------------------------------------------------------------------
      #  VIBRATION V=0-2                                                      
      XVIB3=[1.00265,1.40,1.50,2.00,2.50,3.00,4.00,5.00,6.00,8.00,10.0,15.0,20.0]                             
      YVIB3=[0.00,.001,.002,.011,.025,.033,.035,.032,.027,.021,.016,.0092,.0066]                        
      #-----------------------------------------------------------------------
      #  VIBRATION V=0-3                                                      
      XVIB4=[1.46083,1.80,2.00,2.50,3.00,4.00,5.00,6.00,8.00,10.0,15.0,20.0]                                   
      YVIB4=[.0,.0003,.001,.0025,.0033,.0035,.0032,.0027,.0021,.0016,.00092,.00066]     
      # B3 SIGMA+ 100% DISSOCIATIVE SPLIT INTO 4 ENERGY LOSSES
      # SCALED BY1/E**3 ABOVE 50.0EV
      XB3S1=[8.00,9.20,9.20001]
      YB3S1=[0.00,.109,0.00]  
      XB3S2=[9.00,9.20,9.20001,10.2,12.2,12.20001]
      YB3S2=[0.00,0.00,.109,.187,.445,0.00]  
      XB3S3=[9.50,12.2,12.20001,15.2,15.20001]
      YB3S3=[0.00,0.00,.445,0.63,0.00]  
      XB3S4=[10.0,15.2,15.20001,17.2,20.2,30.0,40.0,50.0]
      YB3S4=[0.00,0.00,0.63,.516,.353,.153,.069,.035]
      # C3 PI V=0-18 SUMMED VIBRATIONS METASTABLE LEVEL 
      # SCALED BY 1/E**3 ABOVE 30 EV
      XC3PI=[11.779,15.0,17.5,20.0,30.0]
      YC3PI=[0.00,0.09,.126,.135,.072]
      # A3 SIGMA V=0-17 SUMMED VIBRATIONS
      # SCALED BY 1/E**3 ABOVE 30 EV
      XA3SG=[11.793,15.0,17.5,20.0,30.0]
      YA3SG=[0.00,.072,.081,0.09,.027]
      # E3 SIGMA V=0-10 SUMMED VIBRATIONS
      # SCALED BY 1/E**3 ABOVE 30 EV
      XE3SG=[13.253,15.0,17.5,20.0,30.0]
      YE3SG=[0.00,.0108,.018,.0225,.0117]
      # EF1 SIGMA V=0-19 SUMMED VIBRATIONS
      #  BORN SCALED ABOVE XEFSG(NEFSG)  EV
      XEFSG=[12.301,15.0,16.0,17.0,17.5,19.0,20.0,21.0,23.5,26.0,30.0,40.0,50.0,60.0,70.0,80.0,100.,120.,140.,160.,180.,200.,220.,240.,260.,280.,300.,400.,500.,600.,700.,800.,900.,1000.]
      YEFSG=[0.00,.028,.033,.037,.038,.039,.040,.040,.040,.040,.040,.041,.041,.039,.036,.034,.029,.026,.024,.022,.021,.020,.019,.018,.017,.016,.015,.012,.0096,.0080,.0069,.0061,.0054,.0049]
      # GROUND STATE CONTINUUM FRACTIONS FROM STEPHENS AND DALGARNO: 
      # NEUTRAL DISSOCIATION FRACTION FOR LYMAN BAND - GROUND STATE CONTINUUM
      DISLY=[3.01e-9,6.58e-9,1.35e-5,1.16e-4,1.48e-3,.0171,.0309,.211,.291,.415,.410,.407,.523,.511,.542,.558,.554,.601,.608,.634,.637,.643,.651,.659,.677,.691,.712,.730,.753,.774,.795,.816,.842,.873,.911,.956,.995]
      # NEUTRAL DISSOCIATION FRACTION FOR WERNER BAND - GROUND STATE CONTINUUM
      DISWR=[1.57e-11,1.10e-10,2.40e-9,2.03e-8,2.04e-6,7.44e-6,6.75e-4,1.45e-3,.0372,.0643,.377,.425,.642,.825]
      # DISSOCIATION FRACTIONS FROM GLASS-MAUJEAN:
      # B#1SIGMA 
      DISB1S=[1.41e-8,4.77e-8,5.82e-8,1.99e-7,1.05e-6,4.24e-5,.065,.152,.451]
      #  D1PI
      DISD1P=[5.95e-9,1.39e-8,1.85e-8,3.96e-8,2.47e-6,2.02e-5,7.74e-4,.0039,.0371,.103,.357,.481,.527,.638,.859,.870]
      #  
      # NEUTRAL
      # B1 SIGMA                  OSCILLATOR SUM V=0-36   F=0.310770
      # C1 PI                     OSCILLATOR SUM V=0-13   F=0.355995
      # B#1 SIGMA                 OSCILLATOR SUM V=0-8    F=0.044610
      # D1 PI                     OSCILLATOR SUM V=0-15   F=0.074070
      # B##1 SIGMA                OSCILLATOR SUM V=0-6    F=0.022300
      # D#1 PI                    OSCILLATOR SUM V=0-3    F=0.014500
      # B###1 SIGMA + D##1 PI     OSCILLATOR SUM          F=0.014500
      # B####1 SIGMA + D###1 PI   OSCILLATOR SUM          F=0.010100
      # B#####1 SIGMA + D####1 PI OSCILLATOR SUM          F=0.005000
      # CONTINUUM EXCITATION                              F=0.026800
      # PREDISSOCIATION                                   F=0.017000
      #
      #                 SUM EXCITATION OSCILLATOR         F=0.895645
      #                 SUM IONISATION OSCILLATOR         F=1.1219
      #           TOTAL OSCILLATOR SUM           F=2.017545
      #-----------------------------------------------------------------------
#  ATTACHMENT GIVEN AS TABLES AND AS A TEMPERATURE DEP# endENT def
      #
      # TABLES FOR 2SIGMAg  ATTACHMENT 
      XATT=[7.00,7.50,8.00,8.50,9.00,9.50,10.0,10.4,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5]
      YATT=[0.00,2.8D-6,1.18e-5,3.08e-5,5.88e-5,1.01e-4,1.18e-4,1.29e-4,1.18e-4,1.01e-4,7.28e-5,4.48e-5,2.66e-5,1.26e-5,6.72e-6,3.20e-6,8.0D-7,0.0]
      # TOTAL IONISATION
      # SEE NOTES BELOW ON DERIVATION OF TOTAL IONISATION X-SECTION                     
      XION=[15.418,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,    20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,                25.5,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,                50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,                100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,                150.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]                
      YION=[0.00,.0295,.0598,.0910,.121,.154,.184,.217,.245,.276,   .305,.331,.357,.384,.407,.433,.454,.477,.498,.516,                .536,.555,.623,.678,.725,.765,.800,.828,.853,.900,                .927,.945,.954,.957,.957,.956,.950,.944,.934,.920,                .910,.902,.890,.878,.865,.851,.840,.832,.818,.809,                .801,.776,.725,.687,.645,.605,.565,.537,.484,.443,.404,.379,.343,.322,.307,.287,.276,.261,.251,.239,.226,.214,.199,.165,.146,.133,.121,.101,.0865,.0754,.0675,.0610,.0558,.0515,.0480,.0422,.0375,.0340,.0310,.0265,.0234,.0208]   
      # DISSOCIATIVE IONISATION X-SECTION STRAUB WITH EXTENSION TO 16KEV
      #  USE CONSTANT RATIO FOR H2+ AND H+ ABOVE 1KEV
      XIOND=[18.076,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,110.,120.,140.,160.,180.,200.,225.,250.,275.,300.,350.,400.,450.,500.,550.,600.,650.,700.,750.,800.,850.,900.,950.,1000.,1200.,1400.,1600.,1800.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,5500.,6000.,7000.,8000.,9000.,10000.,12000.,14000.,16000.]
      YIOND=[0.00,.00422,.00856,.0176,.0287,.0408,.0482,.0572,.0625,.0682,.0705,.0737,.0739,.0751,.0754,.0761,.0759,.0744,.0724,.0671,.0639,.0592,.0545,.0505,.0450,.0412,.0392,.0339,.0294,.0260,.0241,.0211,.0197,.0181,.0171,.0159,.0149,.0137,.0135,.0125,.0117,.0109,.00902,.00798,.00727,.00662,.00552,.00473,.00412,.00369,.00333,.00305,.00282,.00262,.00231,.00205,.00186,.00169,.00145,.00128,.00114]
      # BREMSSTRAHLUNG X-SECTION WITH CUT OFF  UNITS 10**-24
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
      #***********************************************************************
      # IONISATION FROM WEIGHTED AVERAGE OF RAPP AND STRAUB UP TO 180EV
      #  NORMALISED STRAUB BETWEEN 180 AND 1000EV : NORMALISED SCHRAM
      #  BETWEEN 1 AND 16KEV.
      #  ABOVE 16KEV USED BORN-BETHE WITH M2=0.642 AND C=8.3 CLOSE FIT TO 
      #  RIEKE AND PREPEJCHAL  AND CONSISTENT WITH BERKOWITZ
      # USE ORTHO IONISATION ENERGY AT ROOM TEMPERATURE
      # DISSOCIATION ENERGY 0=4.47806952 EV
      # ORTHO PARA ENERGY DIFFERENCE J=0 - J=1 FOR GROUND STATE =0.01469049 EV
      #
      # OSCILLATOR STRENGTHS FROM BERKOWITZ WITH SMALL CORRECTIONS FOR NEW
      # IMPROVED FRANCK-CONDON FACTORS FOR LYMAN (B1 SIGMA) AND WERNER (C1 PI)
      # TRIPLET X-SECTIONS FROM PUBLISHED ELECTRON SCATTERING UP TO 2010.
      # LOWEST TRIPLET DISSOCIATIVE STATE (B3 SIGMA) SPLIT INTO FOUR LEVELS IN
      # ORDER TO BETTER SIMULATE VARYING ENERGY LOSS.
      # TRIPLET X-SECTIONS SCALED BY 0.9 TO BETTER FIT TOWNS# end COEFICIENT. 
      # TRIPLET SCALING FACTOR WITHIN EXPERIMENTAL MEASUREMENT ERRORS. 
      # ATTACHMENT X-SECTION INCLUDES TEMPERATURE DEP# endENCE FROM ROTATIONAL 
      # POPULATION SHOULD BE ACCURATE UP TO 1000 KELVIN.
      # MOMENTUM TRANSFER ELASTIC X-SECTION FROM SCHMIDT UP TO 1.0 EV , ABOVE
      # 1.0 EV X-SECTION FROM FIT TO DRIFT VELOCITY.
      # FIT TO WITHIN EXPERIMENTAL ERRORS OF DRIFT VELOCITY AND DIFFUSION FROM
      # TABLE 14.6 OF HUXLEY AND CROMPTON.
      # SOME EVIDENCE OF ELECTRON RUNAWAY ABOVE 300 TOWNS# end FROM CALCULATION.
      #-----------------------------------------------------------------------
      # 2015 UPDATE INCLUDES DISSOCIATIVE IONISATION AND Q STATES TO NEUTRALS
      #-----------------------------------------------------------------------
      if(NANISO == 0):
      :
      NAME=' H2  ISOTROPIC      2015 ' 
      else:
      NAME=' H2  ANISOTROPIC    2015 '
      # endif
      # ----------------------------------------------------------------------
      #                                      
      CONST=1.873884e-20  
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      # BORN-BETHE CONSTANTS FOR IONISATION
      AM2=0.642
      C=8.30
      #-----------------------------------------------------------------------
      NION=2
      NATT=1 
      NIN=107
      NNULL=0  
      IONMODEL=0
      # ARRAY SIZE
      NASIZE=20000
      #
      NBREM=25
      DO 11 J=1,NIN
      IZBR[J]=0
      11 CONTINUE
      IZBR(108)=1
      #
      DO 1 J=1,6
      1 KEL[J]=NANISO
      DO 2 J=5,NIN
      2 KIN[J]=NANISO
      # SET  SUPERELASTIC TO ISOTROPIC ( X-SEC ZERO ABOVE 20EV)
      DO 22 J=1,4
      22 KIN[J]=0
      NELM=172                                                         
      NROT0=53                                                          
      NROT1=43                                                          
      NROT2=28                                                          
      NROT3=28                                                          
      NVIB1=43                                                          
      NVIB2=42                                                          
      NVIB3=13                                                          
      NVIB4=12 
      NB3S1=3
      NB3S2=6
      NB3S3=5
      NB3S4=8
      NC3PI=5
      NA3SG=5
      NE3SG=5
      NEFSG=34 
      NIONG=92                                                        
      NIOND=61                                                          
      NATT1=18    
      #                                                       
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(2.015650*AMU)   
      # IONISATION ENERGY FOR PARA =15.42580155 EV
      # IONISATION ENERGY FOR ORTHO=15.41833111 EV
      # USE ORTHO ENERGY FOR ROOM TEMPERATURE GAS
      E[3]=15.418 
      EION[1]=E[3]
      # DISSOCIATIVE IONISATION THRESHOLD
      EION[2]=18.076
      #                                                     
      E[4]=0.0                                     
      E[5]=0.0                              
      E[6]=0.0 
      # OPAL BEATY FOR LOW ENERGY
      ESCOBY=0.5
      EOBY[1]=EION[1]*ESCOBY
      EOBY[2]=EION[2]*ESCOBY
      #     EOBY[1]=6.5 
      # FLUORESENCE DATA
      DO 24 J=1,2
      LEGAS[J]=0
      ISHELL[J]=0
      NC0[J]=0
      EC0[J]=0.0
      WKLM[J]=0.0
      EFL[J]=0.0
      NG1[J]=0
      EG1[J]=0.0
      NG2[J]=0
      EG2[J]=0.0
      24 CONTINUE
      # OFFSET ENERGY FOR IONISATION ANGULAR DISTRIBUTION
      DO 49 J=1,NION
      DO 48 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 49
      # endif
      48 CONTINUE
      49 CONTINUE
      #
      EIN[1]=-.043928
      EIN[2]=-.072741
      EIN[3]=-.10085
      EIN[4]=-.12797
      EIN[5]=0.043928                                                   
      EIN[6]=0.072741                                                  
      EIN[7]=0.10085                                                    
      EIN[8]=0.12797                                                 
      EIN[9]=0.515916                                                   
      EIN[10]=0.568                                                     
      EIN[11]=1.00265                                                   
      EIN[12]=1.46083 
      # b3 SIGMA+ DISSOCIATION SPLIT INTO 4 ENERGY LOSSES
      EIN[13]=8.0  
      EIN[14]=9.0 
      EIN[15]=9.5 
      EIN[16]=10.0
      # B1 SIGMA+ LYMAN BANDS
      EIN[17]=11.189
      EIN[18]=11.353
      EIN[19]=11.512
      EIN[20]=11.666
      EIN[21]=11.817
      EIN[22]=11.963
      EIN[23]=12.105
      EIN[24]=12.244
      EIN[25]=12.378
      EIN[26]=12.509
      EIN[27]=12.636
      EIN[28]=12.759
      EIN[29]=12.878
      EIN[30]=12.994
      EIN[31]=13.106
      EIN[32]=13.215
      EIN[33]=13.320
      EIN[34]=13.422
      EIN[35]=13.521
      EIN[36]=13.617
      EIN[37]=13.709
      EIN[38]=13.798
      EIN[39]=13.884
      EIN[40]=13.967
      EIN[41]=14.047
      EIN[42]=14.124
      EIN[43]=14.197
      EIN[44]=14.268
      EIN[45]=14.335
      EIN[46]=14.399
      EIN[47]=14.458
      EIN[48]=14.514
      EIN[49]=14.564
      EIN[50]=14.608
      EIN[51]=14.644
      EIN[52]=14.668
      EIN[53]=14.678
      # C1 PI WERNER BANDS
      EIN[54]=12.285
      EIN[55]=12.571
      EIN[56]=12.840
      EIN[57]=13.094
      EIN[58]=13.332
      EIN[59]=13.553
      EIN[60]=13.758
      EIN[61]=13.947
      EIN[62]=14.119
      EIN[63]=14.273
      EIN[64]=14.408
      EIN(65)=14.522
      EIN(66)=14.611
      EIN(67)=14.672
      # C3 PI 
      EIN(68)=11.779
      EIN(69)=13.100
      # A3 SIGMA
      EIN(70)=11.793
      EIN(71)=12.684
      # E3 SIGMA
      EIN(72)=13.253
      # EF1 SIGMA
      EIN(73)=12.301
      EIN(74)=12.841   
      # B#1 SIGMA BANDS
      EIN(75)=13.698
      EIN(76)=13.931
      EIN(77)=14.144
      EIN(78)=14.333
      EIN(79)=14.494
      EIN(80)=14.613
      EIN(81)=14.651
      EIN(82)=14.664
      EIN(83)=14.672 
      # D1 PI BANDS
      EIN(84)=13.994
      EIN(85)=14.270
      EIN(86)=14.530
      EIN(87)=14.775
      EIN(88)=15.003
      EIN(89)=15.218
      EIN(90)=15.418
      EIN(91)=15.602
      EIN(92)=15.772
      EIN(93)=15.928
      EIN(94)=16.068
      EIN(95)=16.191
      EIN(96)=16.299
      EIN(97)=16.390
      EIN(98)=16.462
      EIN(99)=16.516 
      # B##1 SIGMA
      EIN(100)=14.491
      # D#1 PI 
      EIN(101)=14.609 
      # B###1 SIGMA  + D##1 PI
      EIN(102)=14.899   
      # B####1 SIGMA + D###1 PI
      EIN(103)=15.060
      # B#####1 SIGAM + D####1 PI
      EIN(104)=15.150
      # CONTINUUM DISSOCIATIVE EXC 
      EIN(105)=15.300
      # PREDISSOCIATION ABOVE IONISATION POTENTIAL
      EIN(106)=15.800
      # Q1 + Q2 STATES SINGLETS TO NEUTRAL DISSOCIATION
      EIN(107)=32.0
      EIN(108)=0.0
      # BEF SCALING :  BINDING ENERGIES
      BEF[1]=E[3]
      BEF[2]=E[3]
      BEF[3]=E[3]
      BEF[4]=E[3]
      BEF[5]=E[3]
      # 
      # ATTACHMENT THRESHOLD EV FOR 2 SIGMAu
      EATTTH=3.723
      # ATTACHMENT WIDTH FOR 2 SIGMAu
      EATTWD=0.45
      # ATTACHMENT AMPLITUDE FOR 2 SIGMAu
      AMPATT=3.0D-21
      # ATTACHMENT THRESHOLD EV FOR 2 SIGMAg
      EATTTH1=13.922
      # ATTACHMENT WIDTH FOR 2 SIGMAg
      EATTWD1=0.95
      # ATTACHMENT AMPLITUDE FOR 2 SIGMAg
      AMPATT1=3.0D-20
      #-----------------------------------------------------------------------
      # ROTATIONAL ENERGY LEVELS: ERLVL(N)
      #  PARA - ORTHO ENERGY DIFFERENCE ( J=0 - J=1 ROT LEVEL) = 0.01469049 EV
      #  REF :ASTROPHYS J.  282(1984)L85
      ERLVL[1]=0.01469049
      ERLVL[2]=EIN[5]
      ERLVL[3]=0.01469049+EIN[6]
      ERLVL[4]=EIN[5]+EIN[7]
      ERLVL[5]=0.01469049+EIN[6]+EIN[8]
      ERLVL[6]=EIN[5]+EIN[7]+0.15381
      ERLVL[7]=0.01469049+EIN[6]+EIN[8]+0.1794
      #**********************************************************************
      # ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL
      # USE TRANSFER FRACTION IN RANGE BETWEEN 0.0 AND 0.2 FOR MOST MIXTURES
      DO 50 NL=1,NIN
      PENFRA[1,NL]=0.0
      # PENNING TRANSFER DISTANCE MICRONS
      PENFRA[2,NL]=1.0
      # PENNING TRANSFER TIME PICOSECONDS
      50 PENFRA[3,NL]=1.0
      #**********************************************************************
      if(IPEN == 0):
      GO TO 4 
      DO 3 KDUM=1,NIN
      if(PENFRA[1,KDUM] == 0.0):
      GO TO 3
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
      999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)    
      3 CONTINUE
      #
      # OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      4 DO 5 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 5
      # endif
      651 CONTINUE
      5 CONTINUE
      #
      # ROTATIONAL POPULATIONS
      DO 6 K=1,7,2
      6 PJ[K]=3*(2*K+1)*math.exp(-ERLVL[K]/AKT)
      DO 7 K=2,6,2
      7 PJ[K]=(2*K+1)*math.exp(-ERLVL[K]/AKT)
      SUM=1.0
      DO 8 K=1,7
      8 SUM=SUM+PJ[K]        
      FROT0=1.0/SUM                                                     
      FROT1=PJ[1]/SUM                                                   
      FROT2=PJ[2]/SUM                                                   
      FROT3=PJ[3]/SUM                                                   
      FROT4=PJ[4]/SUM                                                   
      FROT5=PJ[5]/SUM 
      FROT6=PJ[6]/SUM
      FROT7=PJ[7]/SUM 
      #     WRITE(6,88) FROT0,FROT1,FROT2,FROT3,FROT4,FROT5,FROT6,FROT7
      #  88 print(3X,' FROT0=',F9.6,' FROT1=',F9.6,' FROT2=',F9.6,' FROT3=',
      #    /F9.6,' FROT4=',F9.6,' FROT5=',F9.6,' FROT6=',F9.6,' FROT7=',F9.6) 
      #-----------------------------------------------------------------------        
      #
      SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC  ANISOTROPIC        HYDROGEN             '
      if(NANISO == 0):
      :
      SCRPT[2]=' ELASTIC    ISOTROPIC        HYDROGEN             '
      # endif
      SCRPT[3]=' IONISATION                       ELOSS= 15.418   '
      SCRPT[4]=' DISSOCIATIVE IONISATION          ELOSS= 18.076   '
      SCRPT[5]=' ATTACHMENT                                       '
      SCRPT[6]='                                                  '
      SCRPT[7]='                                                  '
      SCRPT[8]=' ROTATION   2-0                   ELOSS= -0.043928'
      SCRPT[9]=' ROTATION   3-1                   ELOSS= -0.072741'
      SCRPT[10]=' ROTATION   4-2                   ELOSS= -0.10085 '
      SCRPT[11]=' ROTATION   5-3                   ELOSS= -0.12797 '
      SCRPT[12]=' ROTATION   0-2                   ELOSS=  0.043928'
      SCRPT[13]=' ROTATION   1-3                   ELOSS=  0.072741'
      SCRPT[14]=' ROTATION   2-4 + 4-6 + 6-8       ELOSS=  0.10085 '
      SCRPT[15]=' ROTATION   3-5 + 5-7 + 7-9       ELOSS=  0.12797 ' 
      SCRPT[16]=' VIBRATION   V1 DJ=0              ELOSS=  0.515916'
      SCRPT[17]=' VIBRATION   V1 DJ=2              ELOSS=  0.568   '
      SCRPT[18]=' VIBRATION  2V1                   ELOSS=  1.00265 '
      SCRPT[19]=' VIBRATION  3V1                   ELOSS=  1.46083 '
      SCRPT[20]=' B3 SIG       DISSOCIATIVE        ELOSS=  8.00    '
      SCRPT[21]=' B3 SIG       DISSOCIATIVE        ELOSS=  9.00    '
      SCRPT[22]=' B3 SIG       DISSOCIATIVE        ELOSS=  9.50    '
      SCRPT[23]=' B3 SIG       DISSOCIATIVE        ELOSS= 10.00    '
      SCRPT[24]=' B1SIG V=0    LYMAN               ELOSS= 11.189   '
      SCRPT[25]=' B1SIG V=1    LYMAN               ELOSS= 11.353   '
      SCRPT[26]=' B1SIG V=2    LYMAN .001% DISSOC  ELOSS= 11.512   '
      SCRPT[27]=' B1SIG V=3    LYMAN 0.01% DISSOC  ELOSS= 11.666   '
      SCRPT[28]=' B1SIG V=4    LYMAN 0.15% DISSOC  ELOSS= 11.817   '
      SCRPT[29]=' B1SIG V=5    LYMAN 1.71% DISSOC  ELOSS= 11.963   '
      SCRPT[30]=' B1SIG V=6    LYMAN 3.09% DISSOC  ELOSS= 12.105   '
      SCRPT[31]=' B1SIG V=7    LYMAN 21.1% DISSOC  ELOSS= 12.244   '
      SCRPT[32]=' B1SIG V=8    LYMAN 29.1% DISSOC  ELOSS= 12.378   '
      SCRPT[33]=' B1SIG V=9    LYMAN 41.5% DISSOC  ELOSS= 12.509   '
      SCRPT[34]=' B1SIG V=10   LYMAN 41.0% DISSOC  ELOSS= 12.636   '
      SCRPT[35]=' B1SIG V=11   LYMAN 40.7% DISSOC  ELOSS= 12.759   '
      SCRPT[36]=' B1SIG V=12   LYMAN 52.3% DISSOC  ELOSS= 12.878   '
      SCRPT[37]=' B1SIG V=13   LYMAN 51.1% DISSOC  ELOSS= 12.994   '
      SCRPT[38]=' B1SIG V=14   LYMAN 54.2% DISSOC  ELOSS= 13.106   '
      SCRPT[39]=' B1SIG V=15   LYMAN 55.8% DISSOC  ELOSS= 13.216   '
      SCRPT[40]=' B1SIG V=16   LYMAN 55.4% DISSOC  ELOSS= 13.320   '
      SCRPT[41]=' B1SIG V=17   LYMAN 60.1% DISSOC  ELOSS= 13.422   '
      SCRPT[42]=' B1SIG V=18   LYMAN 60.8% DISSOC  ELOSS= 13.521   '
      SCRPT[43]=' B1SIG V=19   LYMAN 63.4% DISSOC  ELOSS= 13.617   '
      SCRPT[44]=' B1SIG V=20   LYMAN 63.7% DISSOC  ELOSS= 13.709   '
      SCRPT[45]=' B1SIG V=21   LYMAN 64.3% DISSOC  ELOSS= 13.798   '
      SCRPT[46]=' B1SIG V=22   LYMAN 65.1% DISSOC  ELOSS= 13.884   '
      SCRPT[47]=' B1SIG V=23   LYMAN 65.9% DISSOC  ELOSS= 13.967   '
      SCRPT[48]=' B1SIG V=24   LYMAN 67.7% DISSOC  ELOSS= 14.047   '
      SCRPT[49]=' B1SIG V=25   LYMAN 69.1% DISSOC  ELOSS= 14.124   '
      SCRPT[50]=' B1SIG V=26   LYMAN 71.2% DISSOC  ELOSS= 14.197   '
      SCRPT[51]=' B1SIG V=27   LYMAN 73.0% DISSOC  ELOSS= 14.268   '
      SCRPT[52]=' B1SIG V=28   LYMAN 75.3% DISSOC  ELOSS= 14.335   '
      SCRPT[53]=' B1SIG V=29   LYMAN 77.4% DISSOC  ELOSS= 14.399   '
      SCRPT[54]=' B1SIG V=30   LYMAN 79.5% DISSOC  ELOSS= 14.458   '
      SCRPT[55]=' B1SIG V=31   LYMAN 81.6% DISSOC  ELOSS= 14.514   '
      SCRPT[56]=' B1SIG V=32   LYMAN 84.2% DISSOC  ELOSS= 14.564   '
      SCRPT[57]=' B1SIG V=33   LYMAN 87.3% DISSOC  ELOSS= 14.608   '
      SCRPT[58]=' B1SIG V=34   LYMAN 91.1% DISSOC  ELOSS= 14.644   '
      SCRPT[59]=' B1SIG V=35   LYMAN 95.6% DISSOC  ELOSS= 14.668   '
      SCRPT[60]=' B1SIG V=36   LYMAN 99.5% DISSOC  ELOSS= 14.678   '
      SCRPT[61]=' C1 PI V=0    WERNER              ELOSS= 12.285   '
      SCRPT[62]=' C1 PI V=1    WERNER              ELOSS= 12.571   '
      SCRPT[63]=' C1 PI V=2    WERNER              ELOSS= 12.840   '
      SCRPT[64]=' C1 PI V=3    WERNER              ELOSS= 13.094   '
      SCRPT(65)=' C1 PI V=4    WERNER              ELOSS= 13.332   '
      SCRPT(66)=' C1 PI V=5    WERNER              ELOSS= 13.553   '
      SCRPT(67)=' C1 PI V=6    WERNER .067% DISSOC ELOSS= 13.758   '
      SCRPT(68)=' C1 PI V=7    WERNER .145% DISSOC ELOSS= 13.947   '
      SCRPT(69)=' C1 PI V=8    WERNER 3.72% DISSOC ELOSS= 14.119   '
      SCRPT(70)=' C1 PI V=9    WERNER 6.43% DISSOC ELOSS= 14.273   '
      SCRPT(71)=' C1 PI V=10   WERNER 37.7% DISSOC ELOSS= 14.408   '
      SCRPT(72)=' C1 PI V=11   WERNER 42.5% DISSOC ELOSS= 14.522   '
      SCRPT(73)=' C1 PI V=12   WERNER 64.2% DISSOC ELOSS= 14.611   '
      SCRPT(74)=' C1 PI V=13   WERNER 82.5% DISSOC ELOSS= 14.672   '
      SCRPT(75)=' C3 PI V=0-4  DISSOCIATIVE        ELOSS= 11.779   '
      SCRPT(76)=' C3 PI V=5-18 DISSOCIATIVE        ELOSS= 13.100   '
      SCRPT(77)=' A3SIG V=0-3  DISSOCIATIVE        ELOSS= 11.793   '
      SCRPT(78)=' A3SIG V=3-17 DISSOCIATIVE        ELOSS= 12.684   '
      SCRPT(79)=' E3SIG V=0-9  DISSOCIATIVE        ELOSS= 13.253   '
      SCRPT(80)=' EF1SIG V=0-5        50.0% DISSOC ELOSS= 12.301   '
      SCRPT(81)=' EF1SIG V=6-19       50.0% DISSOC ELOSS= 12.841   '
      SCRPT(82)=' B#1SIG V=0                       ELOSS= 13.698   '
      SCRPT(83)=' B#1SIG V=1                       ELOSS= 13.931   '
      SCRPT(84)=' B#1SIG V=2                       ELOSS= 14.144   '
      SCRPT(85)=' B#1SIG V=3                       ELOSS= 14.333   '
      SCRPT(86)=' B#1SIG V=4                       ELOSS= 14.494   '
      SCRPT(87)=' B#1SIG V=5                       ELOSS= 14.613   '
      SCRPT(88)=' B#1SIG V=6    6.5% DISSOC        ELOSS= 14.651   '
      SCRPT(89)=' B#1SIG V=7   15.2% DISSOC        ELOSS= 14.664   '
      SCRPT(90)=' B#1SIG V=8   45.1% DISSOC        ELOSS= 14.672   '
      SCRPT(91)=' D1 PI  V=0                       ELOSS= 13.994   '
      SCRPT(92)=' D1 PI  V=1                       ELOSS= 14.270   '
      SCRPT(93)=' D1 PI  V=2                       ELOSS= 14.530   '
      SCRPT(94)=' D1 PI  V=3                       ELOSS= 14.775   '
      SCRPT(95)=' D1 PI  V=4                       ELOSS= 15.003   '
      SCRPT(96)=' D1 PI  V=5   .002% DISSOC        ELOSS= 15.218   '
      SCRPT(97)=' D1 PI  V=6   .077% DISSOC        ELOSS= 15.418   '
      SCRPT(98)=' D1 PI  V=7   0.39% DISSOC        ELOSS= 15.602   '
      SCRPT(99)=' D1 PI  V=8   3.71% DISSOC        ELOSS= 15.772   '
      SCRPT(100)=' D1 PI  V=9   10.3% DISSOC        ELOSS= 15.928   '
      SCRPT(101)=' D1 PI  V=10  35.7% DISSOC        ELOSS= 16.068   '
      SCRPT(102)=' D1 PI  V=11  48.1% DISSOC        ELOSS= 16.191   '
      SCRPT(103)=' D1 PI  V=12  52.7% DISSOC        ELOSS= 16.299   '
      SCRPT(104)=' D1 PI  V=13  63.8% DISSOC        ELOSS= 16.390   '
      SCRPT(105)=' D1 PI  V=14  85.9% DISSOC        ELOSS= 16.462   '
      SCRPT(106)=' D1 PI  V=15  87.0% DISSOC        ELOSS= 16.516   '
      SCRPT(107)=' B##SIG V=0-6 DISSOCIATIVE        ELOSS= 14.491   '
      SCRPT(108)=' D#1 PI V=0-3 DISSOCIATIVE        ELOSS= 14.609   '
      SCRPT(109)=' 5P SIG 6P PI DISSOCIATIVE        ELOSS= 14.899   '
      SCRPT(110)=' 6P SIG 6P PI DISSOCIATIVE        ELOSS= 15.060   '
      SCRPT(111)=' 7P SIG 7P PI DISSOCIATIVE        ELOSS= 15.150   '
      SCRPT(112)=' CONTINUUM EX DISSOCIATIVE        EL0SS= 15.300   '
      SCRPT(113)=' PREDISS >IP  DISSOCIATIVE        ELOSS= 15.800   '
      SCRPT(114)=' Q1 +Q2  SINGLETS NEUTRAL DISS    ELOSS= 32.0     '
      SCRPT(115)=' BREMSSTRAHLUNG FROM HYDROGEN ATOMS               '
      # 
      c*****************************                    
      #      EN=-ESTEP/2.0           
      #**************************                           
      DO 900 I=1,NSTEP 
      EN=EG[I]                                                  
      #     EN=EN+ESTEP   
      if(EN > EIN[1]:
      ) :
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      # endif 
      #                                                                     
      DO 60 J=2,NELM                                                   
      if(EN <= XELM[J]:
      ) GO TO 70                                       
      60 CONTINUE                                                          
      J=NELM 
      # ELASTIC MOMENTUM TRANSFER                                                          
      70 A=(YELM[J]-YELM[J-1])/(XELM[J]-XELM[J-1])                         
      B=(XELM[J-1]*YELM[J]-XELM[J]*YELM[J-1])/(XELM[J-1]-XELM[J])      
      QMOM=(A*EN+B)*1.0D-16   
      # ELASTIC X-SECTION  
      A=(YELT[J]-YELT[J-1])/(XELM[J]-XELM[J-1])                         
      B=(XELM[J-1]*YELT[J]-XELM[J]*YELT[J-1])/(XELM[J-1]-XELM[J])      
      QELA=(A*EN+B)*1.0D-16
      # ANGULAR DISTRIBUTION FACTOR ( OKRIMOVSKKY)
      A=(YEPS[J]-YEPS[J-1])/(XELM[J]-XELM[J-1])                         
      B=(XELM[J-1]*YEPS[J]-XELM[J]*YEPS[J-1])/(XELM[J-1]-XELM[J])      
      PQ2=A*EN+B      
      # EPSILON =1.0-YEPS
      PQ2=1.00-PQ2       
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
      PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      Q[2][I]=QELA
      if(NANISO == 0):
      Q[2][I]=QMOM                                   
      # GROSS IONISATION                                                      
      QION[1][I]=0.0  
      PEQION[1][I]=0.50
      if(NANISO == 2):
      PEQION[1][I]=0.00
      if(EN < EION[1]:
      ) GO TO 123    
      if(EN > XION(NIONG):
      ) GO TO 121                                  
      DO 110 J=2,NIONG                                                  
      if(EN <= XION[J]:
      ) GO TO 120                                       
      110 CONTINUE                                                          
      J=NIONG                                                  
      120 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.e-16                    
      GO TO 122
      # USE BORN-BETHE X-SECTION ABOVE XION(NIONG) EV
      121 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)
      122 CONTINUE
      if(EN <= (2.0*EION[1]:
      )) GO TO 123
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])  
      # DISSOCIATIVE IONISATION
      123 QION[2][I]=0.0
      PEQION[2][I]=0.50
      if(NANISO == 2):
      PEQION[2][I]=0.00
      if(EN < EION[2]:
      ) GO TO 150
      if(EN > (XIOND[NIOND]):
      ) GO TO 141
      DO 130 J=2,NIOND
      if(EN <= XIOND[J]):
      GO TO 140
      130 CONTINUE
      J=NIOND
      140 A=(YIOND[J]-YIOND[J-1])/(XIOND[J]-XIOND[J-1])                  
      B=(XIOND[J-1]*YIOND[J]-XIOND[J]*YIOND[J-1])/(XIOND[J-1]-XIOND[J])
      QION[2][I]=(A*EN+B)*1.e-16
      GO TO 142
      # USE BORN-BETHE X-SECTION ABOVE XIOND[NIOND] EV
      141 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.05481 
      142 CONTINUE
      if(EN <= (2.0*EION[2]:
      )) GO TO 150
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      # CALCULATE NON-DISSOCIATIVE IONISATION
      150  if(QION[1][I] == 0.0) GO TO 200
      QION[1][I]=QION[1][I]-QION[2][I]
      # ATTACHMENT                                                            
      200 Q[4][I]=0.0
      PEQEL[4][I]=0.5
      if(NANISO == 2):
      PEQEL[4][I]=0.0
      # ROTATIONAL DEP# endANCE OF ATTACHMENT TO 2 SIGMAu
      if(EN < (EATTTH-ERLVL[7]:
      )) GO TO 300
      Q[4][I]=AMPATT*5.00*FROT7*math.exp(-(EN-EATTTH+ERLVL[7])/EATTWD)
      if(EN < (EATTTH-ERLVL[6]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*3.96*FROT6*math.exp(-(EN-EATTTH+ERLVL[6])/EATTWD)
      if(EN < (EATTTH-ERLVL[5]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*3.15*FROT5*math.exp(-(EN-EATTTH+ERLVL[5])/EATTWD)
      if(EN < (EATTTH-ERLVL[4]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*2.50*FROT4*math.exp(-(EN-EATTTH+ERLVL[4])/EATTWD)
      if(EN < (EATTTH-ERLVL[3]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*1.99*FROT3*math.exp(-(EN-EATTTH+ERLVL[3])/EATTWD)
      if(EN < (EATTTH-ERLVL[2]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*1.58*FROT2*math.exp(-(EN-EATTTH+ERLVL[2])/EATTWD)
      if(EN < (EATTTH-ERLVL[1]:
      )) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*1.26*FROT1*math.exp(-(EN-EATTTH+ERLVL[1])/EATTWD)
      if(EN < EATTTH):
      GO TO 300
      Q[4][I]=Q[4][I]+AMPATT*FROT0*math.exp(-(EN-EATTTH)/EATTWD)
      if(EN < XATT[1]:
      ) GO TO 300
      # ATTACHMENT TO 2 SIGMAg   
      if(EN > XATT[NATT1]:
      ) GO TO 250                                  
      DO 210 J=2,NATT1                                                 
      if(EN <= XATT[J]:
      ) GO TO 220  
      210 CONTINUE                                                          
      J=NATT1                                                           
      220 A=(YATT[J]-YATT[J-1])/(XATT[J]-XATT[J-1])                         
      B=(XATT[J-1]*YATT[J]-XATT[J]*YATT[J-1])/(XATT[J-1]-XATT[J])       
      Q[4][I]=Q[4][I]+(A*EN+B)*1.e-16                 
      # HIGH ENERGY ATTACHMENT TO 2 SIGMAg
      # 250 CONTINUE  
      250 if(EN <= EATTTH1) GO TO 300
      Q[4][I]=Q[4][I]+AMPATT1*math.exp(-(EN-EATTTH1)/EATTWD1)
      #                   
      300 Q[5][I]=0.0                                               
      Q[6][I]=0.0 
      #
      DO 1005 NL=1,NIN+1
      QIN(NL,I)=0.00
      PEQIN(NL,I)=0.50
      if(NANISO == 2):
      :
      PEQIN(NL,I)=0.00  
      # endif
      1005 CONTINUE                                                     
      #--------------------------------------------------------------------- 
      #                    SUPERELASTIC 2-0
      if(EN <= 0.0):
      GO TO 1100
      if(EN > XROT0(NROT0):
      ) GO TO 1100
      DO 1010 J=2,NROT0
      if((EN+EIN[5]:
      ) <= XROT0[J]) GO TO 1020
      1010 CONTINUE
      J=NROT0
      1020 A=(YROT0[J]-YROT0[J-1])/(XROT0[J]-XROT0[J-1])                     
      B=(XROT0[J-1]*YROT0[J]-XROT0[J]*YROT0[J-1])/(XROT0[J-1]-XROT0[J])
      QIN[1][I]=FROT2*0.2*(EN+EIN[5])*(A*(EN+EIN[5])+B)*1.e-16/EN 
      #                    SUPERELASTIC 3-1
      1100 if(EN <= 0.0) GO TO 1200 
      if(EN > XROT1(NROT1):
      ) GO TO 1200
      DO 1110 J=2,NROT1
      if((EN+EIN[6]:
      ) <= XROT1[J]) GO TO 1120
      1110 CONTINUE
      J=NROT1
      1120 A=(YROT1[J]-YROT1[J-1])/(XROT1[J]-XROT1[J-1])                     
      B=(XROT1[J-1]*YROT1[J]-XROT1[J]*YROT1[J-1])/(XROT1[J-1]-XROT1[J]) 
      QIN[2][I]=FROT3*(3.0/7.0)*(EN+EIN[6])*(A*(EN+EIN[6])+B)*1.e-16/EN 
      #                    SUPERELASTIC 4-2
      1200 if(EN <= 0.0) GO TO 1250
      if(EN > XROT2(NROT2):
      ) GO TO 1250
      DO 1210 J=2,NROT2
      if((EN+EIN[7]:
      ) <= XROT2[J]) GO TO 1220
      1210 CONTINUE
      J=NROT2
      1220 A=(YROT2[J]-YROT2[J-1])/(XROT2[J]-XROT2[J-1])                     
      B=(XROT2[J-1]*YROT2[J]-XROT2[J]*YROT2[J-1])/(XROT2[J-1]-XROT2[J])
      QIN[3][I]=FROT4*(5.0/9.0)*(EN+EIN[7])*(A*(EN+EIN[7])+B)*1.e-16/EN 
      #                    SUPERELASTIC 5-3 
      1250 if(EN <= 0.0) GO TO 1290
      if(EN > XROT3(NROT3):
      ) GO TO 1290
      DO 1260 J=2,NROT3
      if((EN+EIN[8]:
      ) <= XROT3[J]) GO TO 1270
      1260 CONTINUE
      J=NROT3
      1270 A=(YROT3[J]-YROT3[J-1])/(XROT3[J]-XROT3[J-1])                     
      B=(XROT3[J-1]*YROT3[J]-XROT3[J]*YROT3[J-1])/(XROT3[J-1]-XROT3[J])
      QIN[4][I]=FROT5*(7.0/11.)*(EN+EIN[8])*(A*(EN+EIN[8])+B)*1.e-16/EN 
      #                      ROTATION 0-2 
      1290 if(EN <= EIN[5]) GO TO 1400
      if(EN > XROT0(NROT0):
      ) GO TO 1330                         
      DO 1310 J=2,NROT0                                                 
      if(EN <= XROT0[J]:
      ) GO TO 1320                                     
      1310 CONTINUE                                                          
      J=NROT0                                                           
      1320 A=(YROT0[J]-YROT0[J-1])/(XROT0[J]-XROT0[J-1])                     
      B=(XROT0[J-1]*YROT0[J]-XROT0[J]*YROT0[J-1])/(XROT0[J-1]-XROT0[J]) 
      QIN[5][I]=(A*EN+B)*1.e-16*FROT0        
      GO TO 2330 
      1330 QIN[5][I]=YROT0(NROT0)*1.e-16*FROT0*XROT0(NROT0)/EN  
      2330 if(EN <= (2.0*EIN[5])) GO TO 1400
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]      #                        ROTATION 1-3                                   
      1400 if(EN <= EIN[6]) GO TO 1401
      if(EN > XROT1(NROT1):
      ) GO TO 1331                     
      DO 1311 J=2,NROT1                                                 
      if(EN <= XROT1[J]:
      ) GO TO 1321                                     
      1311 CONTINUE                                                          
      J=NROT1                                                           
      1321 A=(YROT1[J]-YROT1[J-1])/(XROT1[J]-XROT1[J-1])                     
      B=(XROT1[J-1]*YROT1[J]-XROT1[J]*YROT1[J-1])/(XROT1[J-1]-XROT1[J]) 
      QIN[6][I]=(A*EN+B)*1.e-16*FROT1           
      GO TO 2331
      1331 QIN[6][I]=YROT1(NROT1)*1.e-16*FROT1*XROT1(NROT1)/EN         
      2331 if(EN <= (2.0*EIN[6])) GO TO 1401
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]      #                      ROTATION 2-4 + 4-6 + 6-8
      # USED SCALED 2-4 XSECTION FOR 4-6 AND 6-8 
      c ALSO SCALED FOR ENERGY LOSS BY 1.5 FOR 4-6 AND BY 2.0 FOR 6-8                              
      1401 if(EN <= EIN[7]) GO TO 1402
      if(EN > XROT2(NROT2):
      ) GO TO 1332                               
      DO 1312 J=2,NROT2                                                 
      if(EN <= XROT2[J]:
      ) GO TO 1322                                     
      1312 CONTINUE                                                          
      J=NROT2                                                           
      1322 A=(YROT2[J]-YROT2[J-1])/(XROT2[J]-XROT2[J-1])                     
      B=(XROT2[J-1]*YROT2[J]-XROT2[J]*YROT2[J-1])/(XROT2[J-1]-XROT2[J]) 
      QIN[7][I]=(A*EN+B)*1.e-16*(FROT2+FROT4*0.8*1.5+FROT6*0.5*2.0)    
      GO TO 2332
      1332 QIN[7][I]=YROT2(NROT2)*1.e-16*(FROT2+FROT4*0.8*1.5+FROT6*0.5*2.0)
      QIN[7][I]=QIN[7][I]*XROT2(NROT2)/EN   
      2332 if(EN <= (2.0*EIN[7])) GO TO 1402
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]      #                        ROTATION 3-5 + 5-7 + 7-9
      # USED SCALED 3-5 XSECTION FOR 5-7 AND 7-9 
      # ALSO SCALED FOR ENERGY LOSS BY 1.4 FOR 5-7 AND 1.8 FOR 7-9     
      1402 if(EN <= EIN[8]) GO TO 1403 
      if(EN > XROT3(NROT3):
      ) GO TO 1333                        
      DO 1313 J=2,NROT3                                                 
      if(EN <= XROT3[J]:
      ) GO TO 1323                                     
      1313 CONTINUE                                                          
      J=NROT3                                                           
      1323 A=(YROT3[J]-YROT3[J-1])/(XROT3[J]-XROT3[J-1])                     
      B=(XROT3[J-1]*YROT3[J]-XROT3[J]*YROT3[J-1])/(XROT3[J-1]-XROT3[J]) 
      QIN[8][I]=(A*EN+B)*1.e-16*(FROT3+FROT5*0.8*1.4+FROT7*0.5*1.8)   
      GO TO 2333
      1333 QIN[8][I]=YROT3(NROT3)*1.e-16*(FROT3+FROT5*0.8*1.4+FROT7*0.5*1.8)
      QIN[8][I]=QIN[8][I]*XROT3(NROT3)/EN
      2333 if(EN <= (2.0*EIN[8])) GO TO 1403
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]      #-----------------------------------------------------------------------
      # VIBRATION  V1   WITH DJ=0
      1403 if(EN <= EIN[9]) GO TO 304  
      if(EN > XVIB1(NVIB1):
      ) GO TO 303                         
      DO 301 J=2,NVIB1                                                  
      if(EN <= XVIB1[J]:
      ) GO TO 302                                      
      301 CONTINUE                                                          
      J=NVIB1                                                           
      302 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN[9][I]=(A*EN+B)*1.e-16        
      GO TO 1303
      303 QIN[9][I]=YVIB1(NVIB1)*1.e-16*XVIB1(NVIB1)/EN
      1303 if(EN <= (2.0*EIN[9])) GO TO 304 
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]      #                      
      #  VIBRATION  V1   WITH DJ=2                                               
      304 if(EN <= EIN[10]) GO TO 308    
      if(EN > XVIB2(NVIB2):
      ) GO TO 307                               
      DO 305 J=2,NVIB2                                                  
      if(EN <= XVIB2[J]:
      ) GO TO 306                                      
      305 CONTINUE                                                          
      J=NVIB2                                                           
      306 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                     
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J]) 
      QIN[10][I]=(A*EN+B)*1.e-16               
      GO TO 1307
      307 QIN[10][I]=YVIB2(NVIB2)*1.e-16*XVIB2(NVIB2)/EN   
      1307 if(EN <= (2.0*EIN[10])) GO TO 308 
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
      #            
      # VIBRATION V2                                                         
      308 if(EN <= EIN[11]) GO TO 312 
      if(EN > XVIB3(NVIB3):
      ) GO TO 311                       
      DO 309 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
      ) GO TO 310                                      
      309 CONTINUE                                                          
      J=NVIB3                                                           
      310 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[11][I]=(A*EN+B)*1.e-16
      GO TO 2311
      311 QIN[11][I]=YVIB3(NVIB3)*1.e-16*XVIB3(NVIB3)/EN  
      2311 if(EN <= (2.0*EIN[11])) GO TO 312 
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      #
      # VIBRATION V3                                       
      312 if(EN <= EIN[12]) GO TO 316 
      if(EN > XVIB4(NVIB4):
      ) GO TO 315                               
      DO 313 J=2,NVIB4                                                  
      if(EN <= XVIB4[J]:
      ) GO TO 314                                      
      313 CONTINUE                                                          
      J=NVIB4                                                           
      314 A=(YVIB4[J]-YVIB4[J-1])/(XVIB4[J]-XVIB4[J-1])                     
      B=(XVIB4[J-1]*YVIB4[J]-XVIB4[J]*YVIB4[J-1])/(XVIB4[J-1]-XVIB4[J]) 
      QIN[12][I]=(A*EN+B)*1.e-16       
      GO TO 1315
      315 QIN[12][I]=YVIB4(NVIB4)*1.e-16*XVIB4(NVIB4)/EN      
      1315 if(EN <= (2.0*EIN[12])) GO TO 316 
      PEQIN(12,2)=PEQEL[2][(I-IOFFN[12])]
      #        
      #  B3 SIGMA DISSOCIATION ELOSS=8.0EV                        
      316 if(EN <= EIN[13]) GO TO 320
      if(EN > XB3S1(NB3S1):
      ) GO TO 320 
      DO 317 J=2,NB3S1                                                  
      if(EN <= XB3S1[J]:
      ) GO TO 318                                      
      317 CONTINUE                                                          
      J=NB3S1                                                           
      318 A=(YB3S1[J]-YB3S1[J-1])/(XB3S1[J]-XB3S1[J-1])                     
      B=(XB3S1[J-1]*YB3S1[J]-XB3S1[J]*YB3S1[J-1])/(XB3S1[J-1]-XB3S1[J]) 
      QIN[13][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EIN[13]:
      )) GO TO 320 
      PEQIN(13,2)=PEQEL[2][(I-IOFFN[13])]
      #       
      #  B3 SIGMA DISSOCIATION ELOSS=9.0EV                                               
      320 if(EN <= EIN[14]) GO TO 324  
      if(EN > XB3S2(NB3S2):
      ) GO TO 324                               
      DO 321 J=2,NB3S2                                                  
      if(EN <= XB3S2[J]:
      ) GO TO 322                                      
      321 CONTINUE                                                          
      J=NB3S2                                                           
      322 A=(YB3S2[J]-YB3S2[J-1])/(XB3S2[J]-XB3S2[J-1])                     
      B=(XB3S2[J-1]*YB3S2[J]-XB3S2[J]*YB3S2[J-1])/(XB3S2[J-1]-XB3S2[J]) 
      QIN[14][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EIN[14]:
      )) GO TO 324 
      PEQIN(14,2)=PEQEL[2][(I-IOFFN[14])]
      #                                 
      # B3 SIGMA DISSOCIATION ELOSS=9.5EV
      324 if(EN <= EIN[15]) GO TO 328 
      if(EN > XB3S3(NB3S3):
      ) GO TO 328                               
      DO 325 J=2,NB3S3                                                  
      if(EN <= XB3S3[J]:
      ) GO TO 326                                      
      325 CONTINUE                                                          
      J=NB3S3                                                           
      326 A=(YB3S3[J]-YB3S3[J-1])/(XB3S3[J]-XB3S3[J-1])                     
      B=(XB3S3[J-1]*YB3S3[J]-XB3S3[J]*YB3S3[J-1])/(XB3S3[J-1]-XB3S3[J]) 
      QIN[15][I]=(A*EN+B)*1.e-16   
      if(EN <= (2.0*EIN[15]:
      )) GO TO 328 
      PEQIN(15,2)=PEQEL[2][(I-IOFFN[15])]
      #                                                                       
      # B3 SIGMA DISSOCIATION ELOSS=10.0EV 
      # SCALED BY 1/E**3 ABOVE XB3S4(NB3S4) EV
      328 if(EN <= EIN[16]) GO TO 332 
      if(EN > XB3S4(NB3S4):
      ) GO TO 331                               
      DO 329 J=2,NB3S4                                                  
      if(EN <= XB3S4[J]:
      ) GO TO 330                                      
      329 CONTINUE                                                          
      J=NB3S4                                                           
      330 A=(YB3S4[J]-YB3S4[J-1])/(XB3S4[J]-XB3S4[J-1])                     
      B=(XB3S4[J-1]*YB3S4[J]-XB3S4[J]*YB3S4[J-1])/(XB3S4[J-1]-XB3S4[J]) 
      QIN[16][I]=(A*EN+B)*1.e-16   
      GO TO 3331
      331 QIN[16][I]=YB3S4(NB3S4)*1.e-16*(XB3S4(NB3S4)/EN)**3
      3331 if(EN <= (2.0*EIN[16])) GO TO 332 
      PEQIN(16,2)=PEQEL[2][(I-IOFFN[16])]
      #   LYMAN BANDS FOR VIB=0 TO 36    B1 SIGMA--- GROUND STATE             
      #   DIPOLE ALLOWED  
      # V=0                                                           
      332 if(EN <= EIN[17]) GO TO 333
      QIN[17][I]=.0016884/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+BEF[1])
      if(QIN[17][I]:
      < 0.0) QIN[17][I]=0.0
      if(EN <= (2.0*EIN[17]:
      )) GO TO 333
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
      # V=1 B1 SIGMA
      333 if(EN <= EIN[18]) GO TO 334
      QIN[18][I]=.005782/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+BEF[1])
      if(QIN[18][I]:
      < 0.0) QIN[18][I]=0.0
      if(EN <= (2.0*EIN[18]:
      )) GO TO 334
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
      # V=2 B1 SIGMA
      334 if(EN <= EIN[19]) GO TO 335
      QIN[19][I]=.011536/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+BEF[1])
      if(QIN[19][I]:
      < 0.0) QIN[19][I]=0.0
      if(EN <= (2.0*EIN[18]:
      )) GO TO 335
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
      # V=3 B1 SIGMA
      335 if(EN <= EIN[20]) GO TO 336
      QIN[20][I]=.017531/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+BEF[1])
      if(QIN[20][I]:
      < 0.0) QIN[20][I]=0.0
      if(EN <= (2.0*EIN[20]:
      )) GO TO 336
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
      # V=4 B1 SIGMA
      336 if(EN <= EIN[21]) GO TO 337
      QIN[21][I]=.022477/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+BEF[1])
      if(QIN[21][I]:
      < 0.0) QIN[21][I]=0.0
      if(EN <= (2.0*EIN[21]:
      )) GO TO 337
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
      # V=5 B1 SIGMA
      337 if(EN <= EIN[22]) GO TO 338
      QIN[22][I]=.025688/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+BEF[1])
      if(QIN[22][I]:
      < 0.0) QIN[22][I]=0.0
      if(EN <= (2.0*EIN[22]:
      )) GO TO 338
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]
      # V=6 B1 SIGMA
      338 if(EN <= EIN[23]) GO TO 339
      QIN[23][I]=.027021/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+BEF[1])
      if(QIN[23][I]:
      < 0.0) QIN[23][I]=0.0
      if(EN <= (2.0*EIN[23]:
      )) GO TO 339
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
      # V=7 B1 SIGMA
      339 if(EN <= EIN[24]) GO TO 340
      QIN[24][I]=.026731/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+BEF[1])
      if(QIN[24][I]:
      < 0.0) QIN[24][I]=0.0
      if(EN <= (2.0*EIN[24]:
      )) GO TO 340
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
      # V=8 B1 SIGMA
      340 if(EN <= EIN[25]) GO TO 341
      QIN[25][I]=.025233/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+BEF[1])
      if(QIN[25][I]:
      < 0.0) QIN[25][I]=0.0
      if(EN <= (2.0*EIN[25]:
      )) GO TO 341
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
      # V=9 B1 SIGMA
      341 if(EN <= EIN[26]) GO TO 342
      QIN[26][I]=.022980/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+BEF[1])
      if(QIN[26][I]:
      < 0.0) QIN[26][I]=0.0
      if(EN <= (2.0*EIN[26]:
      )) GO TO 342
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
      # V=10 B1 SIGMA
      342 if(EN <= EIN[27]) GO TO 343
      QIN[27][I]=.020362/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+BEF[1])
      if(QIN[27][I]:
      < 0.0) QIN[27][I]=0.0
      if(EN <= (2.0*EIN[27]:
      )) GO TO 343
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
      # V=11 B1 SIGMA
      343 if(EN <= EIN[28]) GO TO 344
      QIN[28][I]=.017653/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+BEF[1])
      if(QIN[28][I]:
      < 0.0) QIN[28][I]=0.0
      if(EN <= (2.0*EIN[28]:
      )) GO TO 344
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
      # V=12 B1 SIGMA
      344 if(EN <= EIN[29]) GO TO 345
      QIN[29][I]=.015054/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+BEF[1])
      if(QIN[29][I]:
      < 0.0) QIN[29][I]=0.0
      if(EN <= (2.0*EIN[29]:
      )) GO TO 345
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
      # V=13 B1 SIGMA
      345 if(EN <= EIN[30]) GO TO 346
      QIN[30][I]=.012678/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+BEF[1])
      if(QIN[30][I]:
      < 0.0) QIN[30][I]=0.0
      if(EN <= (2.0*EIN[30]:
      )) GO TO 346
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
      # V=14 B1 SIGMA
      346 if(EN <= EIN[31]) GO TO 347
      QIN[31][I]=.010567/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+BEF[1])
      if(QIN[31][I]:
      < 0.0) QIN[31][I]=0.0
      if(EN <= (2.0*EIN[31]:
      )) GO TO 347
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
      # V=15 B1 SIGMA
      347 if(EN <= EIN[32]) GO TO 348
      QIN[32][I]=.008746/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+BEF[1])
      if(QIN[32][I]:
      < 0.0) QIN[32][I]=0.0
      if(EN <= (2.0*EIN[32]:
      )) GO TO 348
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
      # V=16 B1 SIGMA
      348 if(EN <= EIN[33]) GO TO 349
      QIN[33][I]=.007201/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+BEF[1])
      if(QIN[33][I]:
      < 0.0) QIN[33][I]=0.0
      if(EN <= (2.0*EIN[33]:
      )) GO TO 349
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
      # V=17 B1 SIGMA
      349 if(EN <= EIN[34]) GO TO 350
      QIN[34][I]=.005909/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+BEF[1])
      if(QIN[34][I]:
      < 0.0) QIN[34][I]=0.0
      if(EN <= (2.0*EIN[34]:
      )) GO TO 350
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
      # V=18 B1 SIGMA
      350 if(EN <= EIN[35]) GO TO 351
      QIN[35][I]=.004838/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+BEF[1])
      if(QIN[35][I]:
      < 0.0) QIN[35][I]=0.0
      if(EN <= (2.0*EIN[35]:
      )) GO TO 351
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
      # V=19 B1 SIGMA
      351 if(EN <= EIN[36]) GO TO 352
      QIN[36][I]=.003956/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+BEF[1])
      if(QIN[36][I]:
      < 0.0) QIN[36][I]=0.0
      if(EN <= (2.0*EIN[36]:
      )) GO TO 352
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]
      # V=20 B1 SIGMA
      352 if(EN <= EIN[37]) GO TO 353
      QIN[37][I]=.003233/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+BEF[1])
      if(QIN[37][I]:
      < 0.0) QIN[37][I]=0.0
      if(EN <= (2.0*EIN[37]:
      )) GO TO 353
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])]
      # V=21 B1 SIGMA
      353 if(EN <= EIN[38]) GO TO 354
      QIN[38][I]=.002644/(EIN[38]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[38]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[38]+BEF[1])
      if(QIN[38][I]:
      < 0.0) QIN[38][I]=0.0
      if(EN <= (2.0*EIN[38]:
      )) GO TO 354
      PEQIN[38][I]=PEQEL[2][(I-IOFFN[38])]
      # V=22 B1 SIGMA
      354 if(EN <= EIN[39]) GO TO 355
      QIN[39][I]=.002165/(EIN[39]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[39]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[39]+BEF[1])
      if(QIN[39][I]:
      < 0.0) QIN[39][I]=0.0
      if(EN <= (2.0*EIN[39]:
      )) GO TO 355
      PEQIN[39][I]=PEQEL[2][(I-IOFFN[39])]
      # V=23 B1 SIGMA
      355 if(EN <= EIN[40]) GO TO 356
      QIN[40][I]=.001775/(EIN[40]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[40]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[40]+BEF[1])
      if(QIN[40][I]:
      < 0.0) QIN[40][I]=0.0
      if(EN <= (2.0*EIN[40]:
      )) GO TO 356
      PEQIN[40][I]=PEQEL[2][(I-IOFFN[40])]
      # V=24 B1 SIGMA
      356 if(EN <= EIN[41]) GO TO 357
      QIN[41][I]=.001457/(EIN[41]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[41]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[41]+BEF[1])
      if(QIN[41][I]:
      < 0.0) QIN[41][I]=0.0
      if(EN <= (2.0*EIN[41]:
      )) GO TO 357
      PEQIN[41][I]=PEQEL[2][(I-IOFFN[41])]
      # V=25 B1 SIGMA
      357 if(EN <= EIN[42]) GO TO 358
      QIN[42][I]=.001199/(EIN[42]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[42]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[42]+BEF[1])
      if(QIN[42][I]:
      < 0.0) QIN[42][I]=0.0
      if(EN <= (2.0*EIN[42]:
      )) GO TO 358
      PEQIN[42][I]=PEQEL[2][(I-IOFFN[42])]
      # V=26 B1 SIGMA
      358 if(EN <= EIN[43]) GO TO 359
      QIN[43][I]=.0009882/(EIN[43]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[43]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[43]+BEF[1])
      if(QIN[43][I]:
      < 0.0) QIN[43][I]=0.0
      if(EN <= (2.0*EIN[43]:
      )) GO TO 359
      PEQIN[43][I]=PEQEL[2][(I-IOFFN[43])]
      # V=27 B1 SIGMA
      359 if(EN <= EIN[44]) GO TO 360
      QIN[44][I]=.0008153/(EIN[44]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[44]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[44]+BEF[1])
      if(QIN[44][I]:
      < 0.0) QIN[44][I]=0.0
      if(EN <= (2.0*EIN[44]:
      )) GO TO 360
      PEQIN[44][I]=PEQEL[2][(I-IOFFN[44])]
      # V=28 B1 SIGMA
      360 if(EN <= EIN[45]) GO TO 361
      QIN[45][I]=.0006738/(EIN[45]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[45]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[45]+BEF[1])
      if(QIN[45][I]:
      < 0.0) QIN[45][I]=0.0
      if(EN <= (2.0*EIN[45]:
      )) GO TO 361
      PEQIN[45][I]=PEQEL[2][(I-IOFFN[45])]
      # V=29 B1 SIGMA
      361 if(EN <= EIN[46]) GO TO 362
      QIN[46][I]=.0005561/(EIN[46]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[46]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[46]+BEF[1])
      if(QIN[46][I]:
      < 0.0) QIN[46][I]=0.0
      if(EN <= (2.0*EIN[46]:
      )) GO TO 362
      PEQIN[46][I]=PEQEL[2][(I-IOFFN[46])]
      # V=30 B1 SIGMA
      362 if(EN <= EIN[47]) GO TO 363
      QIN[47][I]=.0004573/(EIN[47]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[47]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[47]+BEF[1])
      if(QIN[47][I]:
      < 0.0) QIN[47][I]=0.0
      if(EN <= (2.0*EIN[47]:
      )) GO TO 363
      PEQIN[47][I]=PEQEL[2][(I-IOFFN[47])]
      # V=31 B1 SIGMA 
      363 if(EN <= EIN[48]) GO TO 364
      QIN[48][I]=.0003731/(EIN[48]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[48]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[48]+BEF[1])
      if(QIN[48][I]:
      < 0.0) QIN[48][I]=0.0
      if(EN <= (2.0*EIN[48]:
      )) GO TO 364
      PEQIN[48][I]=PEQEL[2][(I-IOFFN[48])]
      # V=32 B1 SIGMA 
      364 if(EN <= EIN[49]) GO TO 365
      QIN[49][I]=.0002992/(EIN[49]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[49]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[49]+BEF[1])
      if(QIN[49][I]:
      < 0.0) QIN[49][I]=0.0
      if(EN <= (2.0*EIN[49]:
      )) GO TO 365
      PEQIN[49][I]=PEQEL[2][(I-IOFFN[49])]
      # V=33 B1 SIGMA 
      365 if(EN <= EIN[50]) GO TO 366
      QIN[50][I]=.0002309/(EIN[50]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[50]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[50]+BEF[1])
      if(QIN[50][I]:
      < 0.0) QIN[50][I]=0.0
      if(EN <= (2.0*EIN[50]:
      )) GO TO 366
      PEQIN[50][I]=PEQEL[2][(I-IOFFN[50])]
      # V=34 B1 SIGMA 
      366 if(EN <= EIN[51]) GO TO 367
      QIN[51][I]=.0001627/(EIN[51]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[51]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[51]+BEF[1])
      if(QIN[51][I]:
      < 0.0) QIN[51][I]=0.0
      if(EN <= (2.0*EIN[51]:
      )) GO TO 367
      PEQIN[51][I]=PEQEL[2][(I-IOFFN[51])]
      # V=35 B1 SIGMA 
      367 if(EN <= EIN[52]) GO TO 368
      QIN[52][I]=8.652e-5/(EIN[52]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[52]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[52]+BEF[1])
      if(QIN[52][I]:
      < 0.0) QIN[52][I]=0.0
      if(EN <= (2.0*EIN[52]:
      )) GO TO 368
      PEQIN[52][I]=PEQEL[2][(I-IOFFN[52])]
      # V=36 B1 SIGMA 
      368 if(EN <= EIN[53]) GO TO 369
      QIN[53][I]=2.256e-5/(EIN[53]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[53]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[53]+BEF[1])
      if(QIN[53][I]:
      < 0.0) QIN[53][I]=0.0
      if(EN <= (2.0*EIN[53]:
      )) GO TO 369
      PEQIN[53][I]=PEQEL[2][(I-IOFFN[53])]
      # V=0  C1 PI    
      369 if(EN <= EIN[54]) GO TO 370
      QIN[54][I]=.0476000/(EIN[54]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[54]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[54]+BEF[2])
      if(QIN[54][I]:
      < 0.0) QIN[54][I]=0.0
      if(EN <= (2.0*EIN[54]:
      )) GO TO 370
      PEQIN[54][I]=PEQEL[2][(I-IOFFN[54])]
      # V=1  C1 PI    
      370 if(EN <= EIN[55]) GO TO 371
      QIN[55][I]=.0728400/(EIN[55]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[55]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[55]+BEF[2])
      if(QIN[55][I]:
      < 0.0) QIN[55][I]=0.0
      if(EN <= (2.0*EIN[55]:
      )) GO TO 371
      PEQIN[55][I]=PEQEL[2][(I-IOFFN[55])]
      # V=2  C1 PI    
      371 if(EN <= EIN[56]) GO TO 372
      QIN[56][I]=.0698200/(EIN[56]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[56]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[56]+BEF[2])
      if(QIN[56][I]:
      < 0.0) QIN[56][I]=0.0
      if(EN <= (2.0*EIN[56]:
      )) GO TO 372
      PEQIN[56][I]=PEQEL[2][(I-IOFFN[56])]
      # V=3  C1 PI    
      372 if(EN <= EIN[57]) GO TO 373
      QIN[57][I]=.0547200/(EIN[57]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[57]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[57]+BEF[2])
      if(QIN[57][I]:
      < 0.0) QIN[57][I]=0.0
      if(EN <= (2.0*EIN[57]:
      )) GO TO 373
      PEQIN[57][I]=PEQEL[2][(I-IOFFN[57])]
      # V=4  C1 PI    
      373 if(EN <= EIN[58]) GO TO 374
      QIN[58][I]=.0387400/(EIN[58]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[58]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[58]+BEF[2])
      if(QIN[58][I]:
      < 0.0) QIN[58][I]=0.0
      if(EN <= (2.0*EIN[58]:
      )) GO TO 374
      PEQIN[58][I]=PEQEL[2][(I-IOFFN[58])]
      # V=5  C1 PI    
      374 if(EN <= EIN[59]) GO TO 375
      QIN[59][I]=.0259800/(EIN[59]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[59]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[59]+BEF[2])
      if(QIN[59][I]:
      < 0.0) QIN[59][I]=0.0
      if(EN <= (2.0*EIN[59]:
      )) GO TO 375
      PEQIN[59][I]=PEQEL[2][(I-IOFFN[59])]
      # V=6  C1 PI    
      375 if(EN <= EIN[60]) GO TO 376
      QIN[60][I]=.0170000/(EIN[60]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[60]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[60]+BEF[2])
      if(QIN[60][I]:
      < 0.0) QIN[60][I]=0.0
      if(EN <= (2.0*EIN[60]:
      )) GO TO 376
      PEQIN[60][I]=PEQEL[2][(I-IOFFN[60])]
      # V=7  C1 PI    
      376 if(EN <= EIN[61]) GO TO 377
      QIN[61][I]=.0109900/(EIN[61]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[61]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[61]+BEF[2])
      if(QIN[61][I]:
      < 0.0) QIN[61][I]=0.0
      if(EN <= (2.0*EIN[61]:
      )) GO TO 377
      PEQIN[61][I]=PEQEL[2][(I-IOFFN[61])]
      # V=8  C1 PI    
      377 if(EN <= EIN[62]) GO TO 378
      QIN[62][I]=.0070980/(EIN[62]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[62]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[62]+BEF[2])
      if(QIN[62][I]:
      < 0.0) QIN[62][I]=0.0
      if(EN <= (2.0*EIN[62]:
      )) GO TO 378
      PEQIN[62][I]=PEQEL[2][(I-IOFFN[62])]
      # V=9  C1 PI    
      378 if(EN <= EIN[63]) GO TO 379
      QIN[63][I]=.0045920/(EIN[63]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[63]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[63]+BEF[2])
      if(QIN[63][I]:
      < 0.0) QIN[63][I]=0.0
      if(EN <= (2.0*EIN[63]:
      )) GO TO 379
      PEQIN[63][I]=PEQEL[2][(I-IOFFN[63])]
      # V=10 C1 PI    
      379 if(EN <= EIN[64]) GO TO 380
      QIN[64][I]=.0029760/(EIN[64]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[64]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[64]+BEF[2])
      if(QIN[64][I]:
      < 0.0) QIN[64][I]=0.0
      if(EN <= (2.0*EIN[64]:
      )) GO TO 380
      PEQIN[64][I]=PEQEL[2][(I-IOFFN[64])]
      # V=11 C1 PI    
      380 if(EN <= EIN(65)) GO TO 381
      QIN[65][I]=.0019090/(EIN(65)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(65)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(65)+BEF[2])
      if(QIN[65][I]:
      < 0.0) QIN[65][I]=0.0
      if(EN <= (2.0*EIN(65):
      )) GO TO 381
      PEQIN[65][I]=PEQEL[2][(I-IOFFN(65))]
      # V=12 C1 PI    
      381 if(EN <= EIN(66)) GO TO 382
      QIN[66][I]=.0011710/(EIN(66)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(66)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(66)+BEF[2])
      if(QIN[66][I]:
      < 0.0) QIN[66][I]=0.0
      if(EN <= (2.0*EIN(66):
      )) GO TO 382
      PEQIN[66][I]=PEQEL[2][(I-IOFFN(66))]
      # V=13 C1 PI    
      382 if(EN <= EIN(67)) GO TO 383
      QIN[67][I]=.0005590/(EIN(67)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(67)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(67)+BEF[2])
      if(QIN[67][I]:
      < 0.0) QIN[67][I]=0.0
      if(EN <= (2.0*EIN(67):
      )) GO TO 383
      PEQIN[67][I]=PEQEL[2][(I-IOFFN(67))]
      # C3PI V=0-4  METASTABLE LEVEL     FRANCK-CONDON FAC=0.6967
      # SCALED BY 1/E**3 ABOVE XC3PI(NC3PI) EV
      383 if(EN <= EIN(68)) GO TO 387 
      if(EN > XC3PI(NC3PI):
      ) GO TO 386                               
      DO 384 J=2,NC3PI                                                  
      if(EN <= XC3PI[J]:
      ) GO TO 385                                      
      384 CONTINUE                                                          
      J=NC3PI                                                           
      385 A=(YC3PI[J]-YC3PI[J-1])/(XC3PI[J]-XC3PI[J-1])                     
      B=(XC3PI[J-1]*YC3PI[J]-XC3PI[J]*YC3PI[J-1])/(XC3PI[J-1]-XC3PI[J]) 
      QIN[68][I]=(A*EN+B)*1.e-16*0.6967
      GO TO 1386
      386 QIN[68][I]=YC3PI(NC3PI)*1.e-16*((XC3PI(NC3PI)/EN)**3)*0.6967
      1386 if(EN <= (2.0*EIN(68))) GO TO 387
      PEQIN[68][I]=PEQEL[2][(I-IOFFN(68))]
      # C3PI V=5-18 METASTABLE LEVEL     FRANCK-CONDON FAC=0.3033
      # SCALED BY 1/E**3 ABOVE XC3PI(NC3PI) EV
      387 if(EN <= EIN(69)) GO TO 391 
      if(EN > XC3PI(NC3PI):
      ) GO TO 390                               
      DO 388 J=2,NC3PI                                                  
      if(EN <= XC3PI[J]:
      ) GO TO 389                                      
      388 CONTINUE                                                          
      J=NC3PI                                                           
      389 A=(YC3PI[J]-YC3PI[J-1])/(XC3PI[J]-XC3PI[J-1])                     
      B=(XC3PI[J-1]*YC3PI[J]-XC3PI[J]*YC3PI[J-1])/(XC3PI[J-1]-XC3PI[J]) 
      QIN[69][I]=(A*EN+B)*1.e-16*0.3033   
      GO TO 1390
      390 QIN[69][I]=YC3PI(NC3PI)*1.e-16*((XC3PI(NC3PI)/EN)**3)*0.3033
      1390 if(EN <= (2.0*EIN(69))) GO TO 391
      PEQIN[69][I]=PEQEL[2][(I-IOFFN(69))]
      # A3SG V=0-2                   FRANCK-CONDON FAC=0.6668
      # SCALED BY 1/E**3 ABOVE XA3SG(NA3SG) EV
      391 if(EN <= EIN(70)) GO TO 395 
      if(EN > XA3SG(NA3SG):
      ) GO TO 394                               
      DO 392 J=2,NA3SG                                                  
      if(EN <= XA3SG[J]:
      ) GO TO 393                                      
      392 CONTINUE                                                          
      J=NA3SG                                                           
      393 A=(YA3SG[J]-YA3SG[J-1])/(XA3SG[J]-XA3SG[J-1])                     
      B=(XA3SG[J-1]*YA3SG[J]-XA3SG[J]*YA3SG[J-1])/(XA3SG[J-1]-XA3SG[J]) 
      QIN[70][I]=(A*EN+B)*1.e-16*0.6668   
      GO TO 1394
      394 QIN[70][I]=YA3SG(NA3SG)*1.e-16*((XA3SG(NA3SG)/EN)**3)*0.6668
      1394 if(EN <= (2.0*EIN(70))) GO TO 395
      PEQIN[70][I]=PEQEL[2][(I-IOFFN(70))]
      # A3SG V=3-17                  FRANCK-CONDON FAC=0.3332
      # SCALED BY 1/E**3 ABOVE XA3SG(NA3SG) EV
      395 if(EN <= EIN(71)) GO TO 399 
      if(EN > XA3SG(NA3SG):
      ) GO TO 398                               
      DO 396 J=2,NA3SG                                                  
      if(EN <= XA3SG[J]:
      ) GO TO 397                                      
      396 CONTINUE                                                          
      J=NA3SG                                                           
      397 A=(YA3SG[J]-YA3SG[J-1])/(XA3SG[J]-XA3SG[J-1])                     
      B=(XA3SG[J-1]*YA3SG[J]-XA3SG[J]*YA3SG[J-1])/(XA3SG[J-1]-XA3SG[J]) 
      QIN[71][I]=(A*EN+B)*1.e-16*0.3332
      GO TO 1398
      398 QIN[71][I]=YA3SG(NA3SG)*1.e-16*((XA3SG(NA3SG)/EN)**3)*0.3332
      1398 if(EN <= (2.0*EIN(71))) GO TO 399
      PEQIN[71][I]=PEQEL[2][(I-IOFFN(71))]
      # E3SG V=0-9                                           
      # SCALED BY 1/E**3 ABOVE XE3SG(NE3SG) EV
      399 if(EN <= EIN(72)) GO TO 403 
      if(EN > XE3SG(NE3SG):
      ) GO TO 402                               
      DO 400 J=2,NE3SG                                                  
      if(EN <= XE3SG[J]:
      ) GO TO 401                                      
      400 CONTINUE                                                          
      J=NE3SG                                                           
      401 A=(YE3SG[J]-YE3SG[J-1])/(XE3SG[J]-XE3SG[J-1])                     
      B=(XE3SG[J-1]*YE3SG[J]-XE3SG[J]*YE3SG[J-1])/(XE3SG[J-1]-XE3SG[J]) 
      QIN[72][I]=(A*EN+B)*1.e-16          
      GO TO 2402
      402 QIN[72][I]=YE3SG(NE3SG)*1.e-16*(XE3SG(NE3SG)/EN)**3        
      2402 if(EN <= (2.0*EIN(72))) GO TO 403
      PEQIN[72][I]=PEQEL[2][(I-IOFFN(72))]
      # EF1 SIGMA V=0-5                   FRANCK-CONDON FACTOR=0.4
      # USE BORN SCALING ABOVE XEFSG(NEFSG)  EV
      403 if(EN <= EIN(73)) GO TO 407 
      if(EN > XEFSG(NEFSG):
      ) GO TO 406                               
      DO 404 J=2,NEFSG                                                  
      if(EN <= XEFSG[J]:
      ) GO TO 405                                      
      404 CONTINUE                                                          
      J=NEFSG                                                           
      405 A=(YEFSG[J]-YEFSG[J-1])/(XEFSG[J]-XEFSG[J-1])                     
      B=(XEFSG[J-1]*YEFSG[J]-XEFSG[J]*YEFSG[J-1])/(XEFSG[J-1]-XEFSG[J]) 
      QIN[73][I]=(A*EN+B)*1.e-16*0.4          
      GO TO 1406
      406 QIN[73][I]=.0089000/(EIN(73)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(73)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(73)+BEF[3])
      if(QIN[73][I]:
      < 0.0) QIN[73][I]=0.0
      1406 if(EN <= (2.0*EIN(73))) GO TO 407
      PEQIN[73][I]=PEQEL[2][(I-IOFFN(73))]
      # EF1 SIGMA V=6-19                   FRANCK-CONDON FACTOR=0.6
      # USE BORN SCALING ABOVE XEFSG(NEFSG) EV
      407 if(EN <= EIN(74)) GO TO 411 
      if(EN > XEFSG(NEFSG):
      ) GO TO 410                               
      DO 408 J=2,NEFSG                                                  
      if(EN <= XEFSG[J]:
      ) GO TO 409                                      
      408 CONTINUE                                                          
      J=NEFSG                                                           
      409 A=(YEFSG[J]-YEFSG[J-1])/(XEFSG[J]-XEFSG[J-1])                     
      B=(XEFSG[J-1]*YEFSG[J]-XEFSG[J]*YEFSG[J-1])/(XEFSG[J-1]-XEFSG[J]) 
      QIN[74][I]=(A*EN+B)*1.e-16*0.6          
      GO TO 1410
      410 QIN[74][I]=.0133000/(EIN(74)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(74)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(74)+BEF[3])
      if(QIN[74][I]:
      < 0.0) QIN[74][I]=0.0
      1410 if(EN <= (2.0*EIN(74))) GO TO 411
      PEQIN[74][I]=PEQEL[2][(I-IOFFN(74))]
      # B#1 SIGMA V=0       
      411 if(EN <= EIN(75)) GO TO 412
      QIN[75][I]=.003970/(EIN(75)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(75)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(75)+BEF[4])
      if(QIN[75][I]:
      < 0.0) QIN[75][I]=0.0
      if(EN <= (2.0*EIN(75):
      )) GO TO 412
      PEQIN[75][I]=PEQEL[2][(I-IOFFN(75))]
      # B#1 SIGMA V=1         
      412 if(EN <= EIN(76)) GO TO 413
      QIN[76][I]=.008150/(EIN(76)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(76)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(76)+BEF[4])
      if(QIN[76][I]:
      < 0.0) QIN[76][I]=0.0
      if(EN <= (2.0*EIN(76):
      )) GO TO 413
      PEQIN[76][I]=PEQEL[2][(I-IOFFN(76))]
      # B#1 SIGMA V=2         
      413 if(EN <= EIN(77)) GO TO 414
      QIN[77][I]=.009980/(EIN(77)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(77)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(77)+BEF[4])
      if(QIN[77][I]:
      < 0.0) QIN[77][I]=0.0
      if(EN <= (2.0*EIN(77):
      )) GO TO 414
      PEQIN[77][I]=PEQEL[2][(I-IOFFN(77))]
      # B#1 SIGMA V=3         
      414 if(EN <= EIN(78)) GO TO 415
      QIN[78][I]=.009520/(EIN(78)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(78)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(78)+BEF[4])
      if(QIN[78][I]:
      < 0.0) QIN[78][I]=0.0
      if(EN <= (2.0*EIN(78):
      )) GO TO 415
      PEQIN[78][I]=PEQEL[2][(I-IOFFN(78))]
      # B#1 SIGMA V=4         
      415 if(EN <= EIN(79)) GO TO 416
      QIN[79][I]=.007550/(EIN(79)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(79)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(79)+BEF[4])
      if(QIN[79][I]:
      < 0.0) QIN[79][I]=0.0
      if(EN <= (2.0*EIN(79):
      )) GO TO 416
      PEQIN[79][I]=PEQEL[2][(I-IOFFN(79))]
      # B#1 SIGMA V=5         
      416 if(EN <= EIN(80)) GO TO 417
      QIN[80][I]=.004230/(EIN(80)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(80)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(80)+BEF[4])
      if(QIN[80][I]:
      < 0.0) QIN[80][I]=0.0
      if(EN <= (2.0*EIN(80):
      )) GO TO 417
      PEQIN[80][I]=PEQEL[2][(I-IOFFN(80))]
      # B#1 SIGMA V=6         
      417 if(EN <= EIN(81)) GO TO 418
      QIN[81][I]=.000460/(EIN(81)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(81)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(81)+BEF[4])
      if(QIN[81][I]:
      < 0.0) QIN[81][I]=0.0
      if(EN <= (2.0*EIN(81):
      )) GO TO 418
      PEQIN[81][I]=PEQEL[2][(I-IOFFN(81))]
      # B#1 SIGMA V=7         
      418 if(EN <= EIN(82)) GO TO 419
      QIN[82][I]=.000450/(EIN(82)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(82)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(82)+BEF[4])
      if(QIN[82][I]:
      < 0.0) QIN[82][I]=0.0
      if(EN <= (2.0*EIN(82):
      )) GO TO 419
      PEQIN[82][I]=PEQEL[2][(I-IOFFN(82))]
      # B#1 SIGMA V=8         
      419 if(EN <= EIN(83)) GO TO 420
      QIN[83][I]=.000300/(EIN(83)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(83)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(83)+BEF[4])
      if(QIN[83][I]:
      < 0.0) QIN[83][I]=0.0
      if(EN <= (2.0*EIN(83):
      )) GO TO 420
      PEQIN[83][I]=PEQEL[2][(I-IOFFN(83))]
      # D1 PI     V=0         
      420 if(EN <= EIN(84)) GO TO 421
      QIN[84][I]=.007750/(EIN(84)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(84)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(84)+BEF[5])
      if(QIN[84][I]:
      < 0.0) QIN[84][I]=0.0
      if(EN <= (2.0*EIN(85):
      )) GO TO 421
      PEQIN[84][I]=PEQEL[2][(I-IOFFN(84))]
      # D1 PI     V=1         
      421 if(EN <= EIN(85)) GO TO 422
      QIN[85][I]=.013100/(EIN(85)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(85)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(85)+BEF[5])
      if(QIN[85][I]:
      < 0.0) QIN[85][I]=0.0
      if(EN <= (2.0*EIN(85):
      )) GO TO 422
      PEQIN[85][I]=PEQEL[2][(I-IOFFN(85))]
      # D1 PI     V=2         
      422 if(EN <= EIN(86)) GO TO 423
      QIN[86][I]=.013670/(EIN(86)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(86)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(86)+BEF[5])
      if(QIN[86][I]:
      < 0.0) QIN[86][I]=0.0
      if(EN <= (2.0*EIN(86):
      )) GO TO 423
      PEQIN[86][I]=PEQEL[2][(I-IOFFN(86))]
      # D1 PI     V=3         
      423 if(EN <= EIN(87)) GO TO 424
      QIN[87][I]=.011560/(EIN(87)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(87)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(87)+BEF[5])
      if(QIN[87][I]:
      < 0.0) QIN[87][I]=0.0
      if(EN <= (2.0*EIN(87):
      )) GO TO 424
      PEQIN[87][I]=PEQEL[2][(I-IOFFN(87))]
      # D1 PI     V=4         
      424 if(EN <= EIN(88)) GO TO 425
      QIN[88][I]=.008730/(EIN(88)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(88)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(88)+BEF[5])
      if(QIN[88][I]:
      < 0.0) QIN[88][I]=0.0
      if(EN <= (2.0*EIN(88):
      )) GO TO 425
      PEQIN[88][I]=PEQEL[2][(I-IOFFN(88))]
      # D1 PI     V=5         
      425 if(EN <= EIN(89)) GO TO 426
      QIN[89][I]=.006190/(EIN(89)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(89)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(89)+BEF[5])
      if(QIN[89][I]:
      < 0.0) QIN[89][I]=0.0
      if(EN <= (2.0*EIN(89):
      )) GO TO 426
      PEQIN[89][I]=PEQEL[2][(I-IOFFN(89))]
      # D1 PI     V=6         
      426 if(EN <= EIN(90)) GO TO 427
      QIN[90][I]=.004280/(EIN(90)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(90)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(90)+BEF[5])
      if(QIN[90][I]:
      < 0.0) QIN[90][I]=0.0
      if(EN <= (2.0*EIN(90):
      )) GO TO 427
      PEQIN[90][I]=PEQEL[2][(I-IOFFN(90))]
      # D1 PI     V=7         
      427 if(EN <= EIN(91)) GO TO 428
      QIN[91][I]=.002920/(EIN(91)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(91)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(91)+BEF[5])
      if(QIN[91][I]:
      < 0.0) QIN[91][I]=0.0
      if(EN <= (2.0*EIN(91):
      )) GO TO 428
      PEQIN[91][I]=PEQEL[2][(I-IOFFN(91))]
      # D1 PI     V=8         
      428 if(EN <= EIN(92)) GO TO 429
      QIN[92][I]=.001960/(EIN(92)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(92)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(92)+BEF[5])
      if(QIN[92][I]:
      < 0.0) QIN[92][I]=0.0
      if(EN <= (2.0*EIN(92):
      )) GO TO 429
      PEQIN[92][I]=PEQEL[2][(I-IOFFN(92))]
      # D1 PI     V=9         
      429 if(EN <= EIN(93)) GO TO 430
      QIN[93][I]=.001330/(EIN(93)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(93)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(93)+BEF[5])
      if(QIN[93][I]:
      < 0.0) QIN[93][I]=0.0
      if(EN <= (2.0*EIN(93):
      )) GO TO 430
      PEQIN[93][I]=PEQEL[2][(I-IOFFN(93))]
      # D1 PI     V=10        
      430 if(EN <= EIN(94)) GO TO 431
      QIN[94][I]=.000910/(EIN(94)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(94)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(94)+BEF[5])
      if(QIN[94][I]:
      < 0.0) QIN[94][I]=0.0
      if(EN <= (2.0*EIN(94):
      )) GO TO 431
      PEQIN[94][I]=PEQEL[2][(I-IOFFN(94))]
      # D1 PI     V=11        
      431 if(EN <= EIN(95)) GO TO 432
      QIN[95][I]=.000630/(EIN(95)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(95)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(95)+BEF[5])
      if(QIN[95][I]:
      < 0.0) QIN[95][I]=0.0
      if(EN <= (2.0*EIN(95):
      )) GO TO 432
      PEQIN[95][I]=PEQEL[2][(I-IOFFN(95))]
      # D1 PI     V=12        
      432 if(EN <= EIN(96)) GO TO 433
      QIN[96][I]=.000430/(EIN(96)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(96)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(96)+BEF[5])
      if(QIN[96][I]:
      < 0.0) QIN[96][I]=0.0
      if(EN <= (2.0*EIN(96):
      )) GO TO 433
      PEQIN[96][I]=PEQEL[2][(I-IOFFN(96))]
      # D1 PI     V=13        
      433 if(EN <= EIN(97)) GO TO 434
      QIN[97][I]=.000290/(EIN(97)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(97)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(97)+BEF[5])
      if(QIN[97][I]:
      < 0.0) QIN[97][I]=0.0
      if(EN <= (2.0*EIN(97):
      )) GO TO 434
      PEQIN[97][I]=PEQEL[2][(I-IOFFN(97))]
      # D1 PI     V=14        
      434 if(EN <= EIN(98)) GO TO 435
      QIN[98][I]=.000200/(EIN(98)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(98)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(98)+BEF[5])
      if(QIN[98][I]:
      < 0.0) QIN[98][I]=0.0
      if(EN <= (2.0*EIN(98):
      )) GO TO 435
      PEQIN[98][I]=PEQEL[2][(I-IOFFN(98))]
      # D1 PI     V=15        
      435 if(EN <= EIN(99)) GO TO 436
      QIN[99][I]=.000120/(EIN(99)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(99)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(99)+BEF[5])
      if(QIN[99][I]:
      < 0.0) QIN[99][I]=0.0
      if(EN <= (2.0*EIN(99):
      )) GO TO 436
      PEQIN[99][I]=PEQEL[2][(I-IOFFN(99))]
      # B##1 SIGMA SUM V=0-6  DISSOCIATIVE 
      # SCALED BY 1.08 FOR INCREASED ENERGY LOSSES FROM VIB SERIES
      436 if(EN <= EIN(100)) GO TO 437
      QIN(100,I)=.02230/(EIN(100)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(100)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(100)+BEF[5])*1.08 
      if(QIN(100,I):
      < 0.0) QIN(100,I)=0.0
      if(EN <= (2.0*EIN(100):
      )) GO TO 437
      PEQIN(100,I)=PEQEL[2][(I-IOFFN(100)])
      # D#1 PI     SUM V=0-3  DISSOCIATIVE
      # SCALED BY 1.08 FOR INCREASED ENERGY LOSSES FROM VIB SERIES
      437 if(EN <= EIN(101)) GO TO 438
      QIN(101,I)=.01450/(EIN(101)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(101)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(101)+BEF[5])*1.08 
      if(QIN(101,I):
      < 0.0) QIN(101,I)=0.0
      if(EN <= (2.0*EIN(101):
      )) GO TO 438
      PEQIN(101,I)=PEQEL[2][(I-IOFFN(101)])
      # B###1 SIGMA + D##1 PI VIBRATION SUMMED   DISSOCIATIVE 
      #  SCALED BY 1.08 FOR INCREASED ENERGY LOSSES FROM VIB SERIES
      438 if(EN <= EIN(102)) GO TO 439
      QIN(102,I)=.01450/(EIN(102)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(102)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(102)+BEF[5])*1.08 
      if(QIN(102,I):
      < 0.0) QIN(102,I)=0.0
      if(EN <= (2.0*EIN(102):
      )) GO TO 439
      PEQIN(102,I)=PEQEL[2][(I-IOFFN(102)])
      # B####1 SIGMA + D###1 PI VIBRATION SUMMED   DISSOCIATIVE
      #  SCALED BY 1.08 FOR INCREASED ENERGY LOSSES FROM VIB SERIES
      439 if(EN <= EIN(103)) GO TO 440
      QIN(103,I)=.01010/(EIN(103)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(103)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(103)+BEF[5])*1.08 
      if(QIN(103,I):
      < 0.0) QIN(103,I)=0.0
      if(EN <= (2.0*EIN(103):
      )) GO TO 440
      PEQIN(103,I)=PEQEL[2][(I-IOFFN(103)])
      # B#####1 SIGMA + D####1 PI VIBRATION SUMMED   DISSOCIATIVE 
      #  SCALED BY 1.08 FOR INCREASED ENERGY LOSSES FROM VIB SERIES
      440 if(EN <= EIN(104)) GO TO 441
      QIN(104,I)=.00500/(EIN(104)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(104)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(104)+BEF[5])*1.08
      if(QIN(104,I):
      < 0.0) QIN(104,I)=0.0
      if(EN <= (2.0*EIN(104):
      )) GO TO 441
      PEQIN(104,I)=PEQEL[2][(I-IOFFN(104)])
      # CONTINUUM EXCITATION AROUND IONISATION ENERGY   DISSOCIATIVE
      # SCALED BY 1.20 FOR INCREASED ENERGY LOSSES ABOVE THRESHOLD
      441 if(EN <= EIN(105)) GO TO 442
      QIN(105,I)=.02680/(EIN(105)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(105)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(105)+BEF[5])*1.20
      if(QIN(105,I):
      < 0.0) QIN(105,I)=0.0
      if(EN <= (2.0*EIN(105):
      )) GO TO 442
      PEQIN(105,I)=PEQEL[2][(I-IOFFN(105)])
      # PREDISSOCIATION ABOVE IONISATION ENERGY         DISSOCIATIVE
      # SCALED BY 1.2 FOR INCREASED ENERGY LOSSES ABOVE THRESHOLD 
      442 if(EN <= EIN(106)) GO TO 443
      QIN(106,I)=.01700/(EIN(106)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(106)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(106)+BEF[5])*1.20 
      if(QIN(106,I):
      < 0.0) QIN(106,I)=0.0
      if(EN <= (2.0*EIN(106):
      )) GO TO 443
      PEQIN(106,I)=PEQEL[2][(I-IOFFN(106)])
      # DOUBLE EXCITED STATES TO NEUTRALS FROM BACKX ET AL
      443 if(EN <= EIN(107)) GO TO 444
      QIN(107,I)=.00927/(EIN(107)*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN(107)))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN(107)+BEF[5])  
      if(QIN(107,I):
      < 0.0) QIN(107,I)=0.0
      if(EN <= (2.0*EIN(107):
      )) GO TO 444
      PEQIN(107,I)=PEQEL[2][(I-IOFFN(107)])
      444 CONTINUE
      # LOAD BREMSSTRAHLUNG X-SECTION
      if(EN <= 1000.):
      GO TO 450
      DO 445 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 446 
      445 CONTINUE
      J=NBREM
      446 A=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/ (EBRM[J-1]-EBRM[J])
      QIN(108,I)=math.exp(A*EN+B)*2.e-24
      450 CONTINUE
      #---------------------------------------------------------------------
      Q[1][I]=0.0
      DO 555 NL=1,107
      Q[1][I]=Q[1][I]+QIN(NL,I)
      555 CONTINUE
      Q[1][I]=Q[1][I]+Q[2][I]+Q[4][I]+QION[1][I]+QION[2][I]
      cc    XLYMAN=0.0
      c     DISLYMAN=0.0
      c     DO 700 JK=17,53
      c     XLYMAN=XLYMAN+QIN(JK,I)
      c     DISLYMAN=DISLYMAN+QIN(JK,I)*DISLY(JK-16)
      c 700 CONTINUE
      c     XWERNER=0.0
      c     DISWERNER=0.0
      c     DO 701 JK=54,67
      c     XWERNER=XWERNER+QIN(JK,I)
      c     DISWERNER=DISWERNER+QIN(JK,I)*DISWR(JK-53)
      c 701 CONTINUE
      c     DISB1SIG=0.0
      c     QB1SIG=0.0
      c     DO 702 JK=75,83
      c     QB1SIG=QB1SIG+QIN(JK,I)
      c     DISB1SIG=DISB1SIG+QIN(JK,I)*DISB1S(JK-74)
      c 702 CONTINUE
      c     DISD1PI=0.0
      c     QD1PI=0.0
      c     DO 703 JK=84,99
      c     QD1PI=QD1PI+QIN(JK,I)
      c     DISD1PI=DISD1PI+QIN(JK,I)*DISD1P(JK-83)
      c 703 CONTINUE    
      c SUM TRIPLETS
      c     TRIPL=QIN[13][I]+QIN[14][I]+QIN[15][I]+QIN[16][I]+QIN[68][I]+QIN[69][I]+
      c    /QIN[70][I]+QIN[71][I]+QIN[72][I]
      c     DISEFL=(QIN[73][I]+QIN[74][I])*0.5 
      # SUM HIGH LEVELS 
      c     QHIGH=QIN(100,I)+QIN(101,I)+QIN(102,I)+QIN(103,I)+QIN(104,I)+
      c    /QIN(105,I)+QIN(106,I)+QIN(107,I)
      c     DISTOT=TRIPL+DISLYMAN+DISWERNER+QHIGH+DISEFL
      # TOTAL IONISATION
      c     QIONT=QION[1][I]+QION[2][I]
      # OUTPUT XSECTIONS   
      #     WRITE(6,991) EN,Q[2][I],Q[4][I],QIONT,Q[1][I],XLYMAN,XWERNER,
      #    /DISLYMAN,DISWERNER,TRIPL,QB1SIG,QD1PI,DISB1SIG,DISD1PI,QHIGH,
      #    /QIN(105,I),QIN(106,I),DISEFL,DISTOT,QIN(107,I)      
      # 991 print(' EN=','%.4f' % ,' ELAS=','%.4f' % ,' ATT =','%.4f' % ,'IONS=','%.4f' % ,'
      #    / TOT=','%.4f' % ,/,' XLYMAN=','%.4f' % ,' XWERNER =','%.4f' % ,' DISLYMAN=',
      #    /'%.4f' % ,' DISWERNER=','%.4f' % ,' DISTRIP=','%.4f' % ,/,'QB1SIG= ','%.4f' % ,
      #    /'QD1PI= ','%.4f' % ,' DISB1SIG=','%.4f' % ,' DISD1PI=','%.4f' % ,/,
      #    /' QHIGH=','%.4f' % ,/,' QIN105=','%.4f' % ,' QIN106=','%.4f' % ,' DISEFL=',
      #    /'%.4f' % ,' DISTOT=','%.4f' % ,/,' DOUBLEEXC=','%.4f' % )
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      NIN=12
      if(EFINAL > 8.0 and EFINAL <= 10.0):
      NIN=16
      if(EFINAL > 10.0):
      NIN=107
      if(EFINAL > 1000.):
      NIN=108
      #
      return                                                            
      # end 
def GAS22(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS23(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return
      # end                                                            
def GAS24(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return
      # end                                                            
def GAS25(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN):
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return
      # end                                                            
def GAS26(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return
      # end                                                            
def GAS27(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return 
      # end                                                            
def GAS28(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return  
      # end                                                           
def GAS29(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return
      # end                                                             
def GAS30(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY  ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)  
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]  
      DIMENSION XEN(159),YELM(159),YELT(159),YEPS(159),XATT(113),YAT1(113),YAT2(113),YAT3(113),YAT4(113),YAT5(113),YAT6(113),YAT7(113), XION[55],YION[55],YIN1[55],YIN2[55],YIN3[55],YIN4[55],YIN5[55],YIN6[55],YIN7[55],XL3SH(100),YL3SH(100),XL2SH(100),YL2SH(100),XL1SH(100),YL1SH(100),XKSHS(80),YKSHS(80),XKSHF(79),YKSHF(79),XV1V1[13],YV1V1[13],XV2V1[12],YV2V1[12],XV3V1[7],YV3V1[7],
     ,XV4V1[7],YV4V1[7],XV5V1[5],YV5V1[5],XVBV3[17],YVBV3[17],XTR1[12],YTR1[12],  XTR2[11],YTR2[11],XTR3[11],YTR3[11],IOFFN[35],IOFFION[12]
      DIMENSION Z9T[25],Z16T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      XEN=[0.00,.001,.005,.010,.025,.050,.075,0.10,0.20,0.30,0.35,0.40,0.45,0.50,0.60,0.70,0.80,0.90,1.00,1.20,1.50,2.00,2.50,3.00,3.50,4.00,4.50,5.00,6.00,7.00,8.00,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,22.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0,70.0,75.0,80.0,90.0,100.,125.,150.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75D6,2.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
# ELASTIC MOMENTUM TRANSFER X-SECTION     
      YELM=[1434.,1300.,890.,620.,386.,199.,122.,61.5,36.0,28.0,24.0,20.8,17.4,15.0,12.0,10.3,9.21,8.57,8.25,8.75,10.5,14.5,16.3,15.1,14.3,13.6,13.5,13.9,15.1,15.5,14.8,14.7,15.3,16.5,17.6,16.5,15.1,14.4,14.2,14.5,14.8,15.3,15.7,16.1,15.4,13.4,11.5,10.3,9.45,8.73,7.84,7.24,6.88,6.52,5.93,5.49,4.67,3.95,2.84,2.12,1.66,1.39,1.22,1.08,.960,.784,.642,.554,.447,0.35,.265,.225,.195,.135,.099,.0762,.0606,.0494,.0412,.0300,.0229,.0181,.0147,.0122,.00818,.00591,.00449,.00353,.00237,.00171,.00130,.00102,8.30e-4,6.88e-4,4.99e-4,3.80e-4,3.01e-4,2.45e-4,2.04e-4,1.40e-4,1.02e-4,7.92e-5,6.35e-5,4.41e-5,3.29e-5,2.58e-5,2.09e-5,1.74e-5,1.48e-5,1.12e-5,8.85e-6,7.22e-6,6.04e-6,5.15e-6,3.67e-6,2.77e-6,2.18e-6,1.77e-6,1.24e-6,9.22e-7,7.16e-7,5.74e-7,4.71e-7,3.94e-7,2.89e-7,2.21e-7,1.75e-7,1.42e-7,1.18e-7,7.94e-8,5.72e-8,4.32e-8,3.39e-8,2.25e-8,1.60e-8,1.20e-8,9.36e-9,7.50e-9,6.14e-9,4.33e-9,3.22e-9,2.49e-9,1.98e-9,1.61e-9,1.04e-9,7.21e-10,5.31e-10,4.07e-10,2.61e-10,1.81e-10,1.33e-10,1.02e-10,8.06e-11,6.53e-11,4.54e-11,3.33e-11,2.55e-11,2.02e-11,1.63e-11]
# ELASTIC TOTAL X-SECTION               
      YELT=[1434.,1300.,890.,620.,386.,209.,136.,77.0,45.0,35.0,30.0,26.2,21.8,18.7,14.8,12.5,11.1,10.2,9.72,9.73,10.9,14.8,17.6,18.4,19.6,19.5,20.0,21.0,23.6,24.2,24.6,25.0,25.2,25.8,26.6,25.5,24.9,24.7,24.6,24.5,24.5,24.6,24.7,25.3,25.3,24.7,24.0,23.5,23.0,22.4,21.2,20.1,19.7,19.3,18.6,18.0,16.2,14.8,12.5,11.1,10.0,9.15,8.45,7.84,7.14,6.45,5.74,5.30,4.52,3.94,3.43,3.04,2.73,2.28,1.96,1.72,1.53,1.39,1.26,1.08,.938,.832,.748,.680,.555,.470,.408,.362,.295,.251,.219,.194,.175,.160,.137,.121,.109,.0992,.0915,.0777,.0685,.0620,.0571,.0503,.0458,.0427,.0403,.0385,.0371,.0351,.0336,.0326,.0318,.0312,.0302,.0296,.0291,.0288,.0285,.0282,.0281,.0280,.0279,.0279,.0278,.0278,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0277,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276,.0276]
# EPSILON FOR ELASTIC ANGULAR DISTRIBUTION  
#  EPSILON=1.0-YEPS
      YEPS=[.9999,.9999,.9999,.9999,.9999,.9283,.8463,.7035,.7053,.7053,.7053,.6967,.7027,.7084,.7208,.7396,.7479,.7630,.7755,.8496,.9450,.9696,.8907,.7327,.6061,.5630,.5345,.5179,.4898,.4906,.4427,.4260,.4515,.4898,.5175,.4967,.4472,.4192,.4114,.4291,.4466,.4663,.4845,.4845,.4495,.3719,.3052,.2643,.2383,.2190,.2015,.1934,.1842,.1752,.1600,.1492,.1365,.1215,.09574,.07381,.06047,.05348,.04969,.04650,.04482,.03893,.03466,.03168,.02936,.02538,.02106,.01989,.01897,.01481,.01209,.01019,.00880,.00774,.00691,.00567,.00481,.00417,.00368,.00329,.00260,.00215,.00183,.001588,.001257,.001037,8.82e-4,7.66e-4,6.76e-4,6.04e-4,4.97e-4,4.21e-4,3.64e-4,3.19e-4,2.84e-4,2.21e-4,1.798e-4,1.504e-4,1.285e-4,9.83e-5,7.86e-5,6.47e-5,5.45e-5,4.68e-5,4.07e-5,3.18e-5,2.56e-5,2.12e-5,1.786e-5,1.529e-5,1.093e-5,8.22e-6,6.42e-6,5.16e-6,3.55e-6,2.60e-6,1.99e-6,1.568e-6,1.270e-6,1.049e-6,7.52e-7,5.65e-7,4.41e-7,3.53e-7,2.89e-7,1.89e-7,1.331e-7,9.87e-8,7.62e-8,4.92e-8,3.44e-8,2.53e-8,1.94e-8,1.533e-8,1.241e-8,8.58e-9,6.27e-9,4.77e-9,3.74e-9,3.01e-9,1.89e-9,1.29e-9,9.38e-10,7.09e-10,4.44e-10,3.03e-10,2.20e-10,1.66e-10,1.30e-10,1.04e-10,7.1D-11,5.1D-11,3.9D-11,3.0D-11,2.4D-11]
# V1 RAMAN ISOTROPIC                   SCALED BY 1/E**2 ABOVE 1.0 EV
      XV1V1=[.096032,.100,.114,0.25,0.20,0.25,0.30,0.35,0.40,0.50,0.55,0.70,1.00]
      YV1V1=[0.00,19.0,21.0,15.7,9.68,8.80,8.80,7.54,6.28,6.00,5.60,4.20,2.45]
# 2V1 RAMAN ISOTROPIC                  SCALED BY 1/E**2 ABOVE 1.0EV
      XV2V1=[.192064,0.20,0.23,0.25,0.30,0.35,0.40,0.50,0.55,0.60,0.70,1.00]
      YV2V1=[0.00,3.14,4.14,3.52,3.02,2.76,2.64,2.14,1.98,1.85,1.70,0.99]
# 3V1 RAMAN ISOTROPIC                  SCALED BY 1/E**2 ABOVE 1.0EV
      XV3V1=[0.288096,0.325,0.40,0.50,0.60,0.70,1.00]
      YV3V1=[0.00,2.3,1.6,1.30,1.10,0.85,0.50]
# 4V1 RAMAN ISOTROPIC                  SCALED BY 1/E**2 ABOVE 1.0EV
      XV4V1=[.384128,0.45,0.50,0.55,0.60,0.70,1.00]
      YV4V1=[0.00,1.15,0.85,0.65,0.55,0.50,0.29]
# 5V1+HIGHER V1 RAMAN   ISOTROPIC      SCALED BY 1/E**2 ABOVE 1.0EV
      XV5V1=[.48016,0.55,0.60,0.70,1.00]
      YV5V1=[0.00,1.00,0.70,0.45,0.26]
# V3 DIPOLE ANISOTROPIC
# V3 DIPOLE PART AS ANALYTIC def IN def
# V3 DIRECT PART AT THRESHOLD AND ALSO RESONANT STRUCTURE ABOVE 6EV
# GIVEN AS TABLES.
#              
      XVBV3=[.11754,.125,0.13,0.14,0.15,0.16,0.17,0.18,0.19,5.00,6.00,7.00,8.00,9.00,10.0,12.0,15.0]
      YVBV3=[0.00,20.0,17.0,13.0,9.00,6.00,3.50,2.00,0.00,0.00,1.50,4.00,2.00,0.00,0.00,4.50,0.00]
# V4 DIPOLE ANISOTROPIC
# V4 DIPOLE GIVEN AS ANALYTIC def IN def
#
# NOTE : IONISATION  X-SECTIONS ABOVE 1KEV GIVEN BY BORN-BETHE.
#       IONISATION FROM RAP ET AL AND LINDSAY ET AL.
#         
      XION=[15.67,16.5,17.0,17.5,18.0,18.5,19.0,19.5,21.0,21.5,     22.0,22.5,23.0,23.5,24.0,26.0,28.0,30.0,32.0,34.0,36.0,38.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0,95.0,100.,105.,110.,115.,120.,125.,130.,135.,140.,145.,150.,160.,180.,200.,250.,300.,400.,500.,600.,800.,1000.]
# IONISATION TO SF5 +
      YION=[0.00,.020,.035,.055,.084,.118,.154,.197,.314,.370,    .434,.509,.584,.670,.760,1.13,1.36,1.61,1.83,2.08,2.26,2.37,2.46,2.63,2.81,2.99,3.02,3.08,3.16,3.19,3.25,3.28,3.27,3.29,3.30,3.31,3.32,3.33,3.33,3.32,3.30,3.30,3.29,3.29,3.30,3.30,3.24,3.20,3.03,2.92,2.62,2.42,2.21,1.86,1.65]
# IONISATION TO SF4 +
      YIN1=[0.00,0.00,0.00,0.00,0.00,0.00,.001,.003,.009,.011,      .012,.014,.017,.020,.022,.038,.052,.076,.110,.130,.148,.161,.173,.180,.202,.220,.228,.240,.256,.261,.269,.271,.271,.277,.282,.283,.284,.285,.285,.284,.284,.284,.285,.280,.277,.268,.266,.265,.243,.237,.208,.199,.172,.146,.127]
# IONISATION TO SF3 +
      YIN2=[0.00,0.00,0.00,0.00,0.00,0.00,0.00,.002,.008,.010,.011,.013,.020,.028,.038,.092,.148,.242,.340,.449,.546,.598,.648,.603,.694,.768,.812,.843,.881,.886,.898,.922,.938,.950,.958,.961,.964,.966,.964,.964,.963,.965,.965,.961,.960,.949,.936,.927,.869,.814,.717,.660,.598,.493,.449]
# IONISATION TO SF2 +
      YIN3=[16*0.0,.001,.002,.021,.043,.072,.097,.125,.186,.233,.261,.281,.292,.306,.300,.296,.305,.312,.311,.310,.307,.304,.301,.296,.295,.293,.292,.291,.286,.282,.272,.267,.264,.234,.217,.172,.154,.140,.113,.098]
# IONISATION TO SF +
      YIN4=[19*0.0,.001,.014,.031,.054,.163,.282,.348,.405,.447,.496,.512,.534,.570,.601,.615,.625,.634,.642,.648,.654,.650,.646,.643,.640,.644,.650,.657,.638,.622,.569,.515,.425,.383,.342,.267,.221]
# IONISATION TO S +
      YIN5=[21*0.0,.003,.011,.030,.072,.112,.152,.181,.214,.233,.256,.275,.291,.310,.328,.345,.362,.378,.394,.398,.401,.406,.411,.413,.417,.421,.424,.428,.390,.370,.300,.263,.233,.173,.151]
# IONISATION TO F +
      YIN6=[21*0.0,.002,.007,.025,.052,.092,.134,.186,.242,.267,.296,.349,.401,.448,.495,.530,.566,.602,.637,.658,.677,.699,.721,.735,.753,.780,.807,.838,.817,.759,.627,.538,.481,.372,.297]
# IONISATION TO SUM OF DOUBLE CHARGED STATES SF3,SF2,SF ALL ++
# MAJORITY IN STATE SF2 ++
      YIN7=[25*0.0,.011,.0217,.0330,.0445,.0585,.0730,.0850,.0980,.1084,.1188,.1257,.1326,.1395,.1463,.1505,.1548,.1590,.1633,.1631,.1629,.1624,.1652,.1681,.1546,.1419,.1189,.1023,.0894,.0684,.0611]
# SULFUR L3 SHELL
      XL3SH=[164.16,170.6,175.8,181.2,186.7,192.3,198.1,204.1,210.3,216.7,229.9,244.0,258.9,274.6,318.3,358.0,390.9,439.5,494.0,555.1,605.9,700.7,810.3,910.1,1022.,1216.,1447.,1671.,1932.,2232.,2578.,2978.,3440.,3974.,4460.,5005.,5950.,7072.,8168.,9165.,1.00D4,1.15D4,1.30D4,1.45D4,1.63D4,1.83D4,2.05D4,2.37D4,2.74'%.3f' %.16'%.3f' %.65D4,4.22D4,4.87D4,5.62D4,6.49D4,7.50D4,8.66D4,1.00D5,1.26D5,1.54D5,2.05D5,2.51'%.3f' %.07'%.3f' %.55D5,4.10D5,5.01D5,6.13D5,7.29D5,8.66D5,1.00D6,1.26D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YL3SH=[0.00,1.49e-3,2.62e-3,3.72e-3,4.79e-3,5.83e-3,6.84e-3,7.81e-3,8.75e-3,9.65e-3,1.13e-2,1.29e-2,1.43e-2,1.56e-2,1.83e-2,1.99e-2,2.09e-2,2.19e-2,2.25e-2,2.28e-2,2.29e-2,2.26e-2,2.21e-2,2.15e-2,2.07e-2,1.94e-2,1.80e-2,1.67e-2,1.55e-2,1.43e-2,1.31e-2,1.20e-2,1.10e-2,9.99e-3,9.24e-3,8.54e-3,7.56e-3,6.68e-3,6.01e-3,5.52e-3,5.17e-3,4.64e-3,4.26e-3,3.90e-3,3.57e-3,3.27e-3,3.00e-3,2.68e-3,2.41e-3,2.16e-3,1.94e-3,1.74e-3,1.56e-3,1.41e-3,1.27e-3,1.15e-3,1.05e-3,9.52e-4,8.26e-4,7.35e-4,6.33e-4,5.78e-4,5.34e-4,5.08e-4,4.87e-4,4.63e-4,4.47e-4,4.37e-4,4.30e-4,4.28e-4,4.27e-4,4.29e-4,4.39e-4,4.57e-4,4.74e-4,4.87e-4,5.00e-4,5.10e-4,5.21e-4,5.35e-4,5.53e-4,5.66e-4,5.90e-4,6.21e-4,6.44e-4,6.60e-4,6.76e-4,6.87e-4,6.99e-4,7.15e-4,7.33e-4,7.47e-4,7.72e-4,8.04e-4,8.27e-4,8.43e-4,8.59e-4,8.71e-4,8.82e-4,8.98e-4]
# SULFUR L2 SHELL
      XL2SH=[165.36,170.5,175.7,181.0,186.5,192.2,198.0,204.0,210.2,216.5,229.8,243.8,258.7,274.5,318.1,357.8,390.7,439.3,493.8,555.0,605.7,700.6,810.2,909.9,1022.,1216.,1447.,1671.,1932.,2232.,2578.,2978.,3440.,3974.,4460.,5005.,5950.,7072.,8168.,9165.,1.00D4,1.15D4,1.30D4,1.45D4,1.63D4,1.83D4,2.05D4,2.37D4,2.74'%.3f' %.16'%.3f' %.65D4,4.22D4,4.87D4,5.62D4,6.49D4,7.50D4,8.66D4,1.00D5,1.26D5,1.54D5,2.05D5,2.51'%.3f' %.07'%.3f' %.55D5,4.10D5,5.01D5,6.13D5,7.29D5,8.66D5,1.00D6,1.26D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YL2SH=[0.00,5.76e-4,1.13e-3,1.68e-3,2.21e-3,2.72e-3,3.22e-3,3.70e-3,4.16e-3,4.61e-3,5.45e-3,6.23e-3,6.93e-3,7.57e-3,8.91e-3,9.73e-3,1.02e-2,1.07e-2,1.10e-2,1.12e-2,1.12e-2,1.11e-2,1.09e-2,1.06e-2,1.02e-2,9.56e-3,8.85e-3,8.24e-3,7.64e-3,7.04e-3,6.47e-3,5.94e-3,5.42e-3,4.93e-3,4.57e-3,4.22e-3,3.74e-3,3.30e-3,2.97e-3,2.73e-3,2.56e-3,2.29e-3,2.10e-3,1.93e-3,1.77e-3,1.62e-3,1.48e-3,1.33e-3,1.19e-3,1.07e-3,9.57e-4,8.60e-4,7.74e-4,6.97e-4,6.30e-4,5.70e-4,5.17e-4,4.71e-4,4.08e-4,3.64e-4,3.13e-4,2.86e-4,2.64e-4,2.51e-4,2.41e-4,2.29e-4,2.21e-4,2.16e-4,2.13e-4,2.12e-4,2.11e-4,2.13e-4,2.17e-4,2.26e-4,2.35e-4,2.41e-4,2.48e-4,2.53e-4,2.58e-4,2.65e-4,2.73e-4,2.80e-4,2.92e-4,3.08e-4,3.19e-4,3.27e-4,3.35e-4,3.40e-4,3.46e-4,3.54e-4,3.63e-4,3.70e-4,3.82e-4,3.98e-4,4.09e-4,4.17e-4,4.25e-4,4.31e-4,4.37e-4,4.45e-4]
# SULFUR L1 SHELL
      XL1SH=[230.9,235.3,242.1,249.0,256.1,263.5,271.0,278.8,286.8,295.0,303.5,321.2,339.9,370.1,403.1,439.0,478.1,520.8,567.3,618.0,692.8,754.8,822.5,896.2,976.6,1095.,1193.,1301.,1418.,1545.,1733.,2000.,2517.,3078.,3553.,4102.,4602.,5163.,6136.,7291.,8419.,1.00D4,1.19D4,1.41D4,1.63D4,1.83D4,2.05D4,2.51'%.3f' %.07'%.3f' %.55D4,4.10D4,4.60D4,5.16D4,5.62D4,6.49D4,7.72D4,8.91D4,1.00D5,1.26D5,1.54D5,2.05D5,2.51'%.3f' %.07'%.3f' %.55D5,4.10D5,5.01D5,6.13D5,7.29D5,8.66D5,1.00D6,1.26D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YL1SH=[0.00,1.83e-4,4.44e-4,6.95e-4,9.35e-4,1.17e-3,1.39e-3,1.60e-3,1.81e-3,2.00e-3,2.19e-3,2.54e-3,2.87e-3,3.30e-3,3.68e-3,4.00e-3,4.26e-3,4.48e-3,4.65e-3,4.77e-3,4.87e-3,4.89e-3,4.89e-3,4.85e-3,4.78e-3,4.66e-3,4.54e-3,4.41e-3,4.26e-3,4.11e-3,3.89e-3,3.60e-3,3.15e-3,2.77e-3,2.52e-3,2.28e-3,2.11e-3,1.94e-3,1.71e-3,1.50e-3,1.34e-3,1.18e-3,1.03e-3,8.97e-4,8.00e-4,7.31e-4,6.67e-4,5.69e-4,4.86e-4,4.34e-4,3.89e-4,3.56e-4,3.26e-4,3.06e-4,2.75e-4,2.44e-4,2.20e-4,2.04e-4,1.76e-4,1.56e-4,1.34e-4,1.22e-4,1.12e-4,1.06e-4,1.02e-4,9.63e-5,9.24e-5,9.00e-5,8.84e-5,8.76e-5,8.71e-5,8.72e-5,8.85e-5,9.16e-5,9.44e-5,9.66e-5,9.89e-5,1.01e-4,1.03e-4,1.05e-4,1.08e-4,1.10e-4,1.14e-4,1.20e-4,1.24e-4,1.27e-4,1.29e-4,1.31e-4,1.33e-4,1.36e-4,1.39e-4,1.42e-4,1.46e-4,1.52e-4,1.56e-4,1.59e-4,1.61e-4,1.63e-4,1.65e-4,1.68e-4]
# SULFUR K SHELL
      XKSHS=[2472.,2528.,2601.,2677.,2755.,2834.,2917.,3001.,3089.,3178.,3271.,3366.,3464.,3564.,3668.,3774.,3884.,3997.,4113.,4233.,4356.,4483.,4748.,5028.,5325.,5804.,6510.,7515.,8430.,9457.,11240.,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.00D5,1.50D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.26D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YKSHS=[0.0,2.47e-6,5.51e-6,8.42e-6,1.12e-5,1.39e-5,1.65e-5,1.89e-5,2.13e-5,2.35e-5,2.56e-5,2.77e-5,2.96e-5,3.15e-5,3.32e-5,3.49e-5,3.65e-5,3.80e-5,3.94e-5,4.08e-5,4.21e-5,4.33e-5,4.55e-5,4.74e-5,4.91e-5,5.11e-5,5.31e-5,5.44e-5,5.46e-5,5.42e-5,5.27e-5,4.84e-5,4.23e-5,3.82e-5,3.43e-5,2.91e-5,2.59e-5,2.30e-5,2.11e-5,1.94e-5,1.73e-5,1.39e-5,1.20e-5,1.04e-5,9.49e-6,9.11e-6,8.84e-6,8.71e-6,8.63e-6,8.60e-6,8.65e-6,8.74e-6,9.01e-6,9.50e-6,9.91e-6,1.02e-5,1.06e-5,1.08e-5,1.10e-5,1.14e-5,1.18e-5,1.21e-5,1.27e-5,1.34e-5,1.40e-5,1.44e-5,1.47e-5,1.50e-5,1.53e-5,1.57e-5,1.61e-5,1.64e-5,1.70e-5,1.78e-5,1.83e-5,1.88e-5,1.91e-5,1.94e-5,1.97e-5,2.00e-5]
# FLUORINE K-SHELL IONISATION X-SECTION
      XKSHF=[685.4,705.,726.,747.,770.,792.,816.,840.,865.,890.,916.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3758.,4467.,5158.,5957.,7079.,1.0D4,1.26D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.50D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.26D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.26D7,1.50D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.00D8,1.26D8,1.50D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.00D9]
      YKSHF=[0.00,3.39e-5,6.77e-5,1.00e-4,1.32e-4,1.63e-4,1.92e-4,2.21e-4,2.48e-4,2.75e-4,3.00e-4,3.25e-4,3.71e-4,4.33e-4,4.87e-4,5.34e-4,5.96e-4,6.32e-4,6.57e-4,6.69e-4,6.77e-4,6.79e-4,6.68e-4,6.33e-4,5.97e-4,5.62e-4,5.25e-4,4.80e-4,3.93e-4,3.41e-4,3.04e-4,2.45e-4,2.13e-4,1.85e-4,1.51e-4,1.31e-4,1.14e-4,1.04e-4,9.46e-5,8.32e-5,6.58e-5,5.60e-5,4.80e-5,4.35e-5,4.15e-5,4.00e-5,3.93e-5,3.89e-5,3.85e-5,3.86e-5,3.89e-5,3.98e-5,4.17e-5,4.33e-5,4.45e-5,4.58e-5,4.68e-5,4.78e-5,4.92e-5,5.09e-5,5.21e-5,5.45e-5,5.75e-5,5.96e-5,6.12e-5,6.27e-5,6.38e-5,6.49e-5,6.64e-5,6.82e-5,6.95e-5,7.19e-5,7.50e-5,7.72e-5,7.88e-5,8.03e-5,8.14e-5,8.25e-5,8.40e-5]
# ATTACHMENT   (ALL AT 300 KELVIN)
      XATT=[1.e-6,.00002,.00005,.00007,.0001,.0002,.0003,.0004,.0005,.0006,.0007,.0008,.0009,.001,.002,.003,.004,.005,.006,.007,.008,.009,.010,.015,.020,.025,.030,.035,.040,.045,.050,.055,.060,.065,.070,.075,.080,.085,.090,.095,.100,.105,.110,.115,.120,.125,.130,.140,.150,.160,.170,.180,.190,.200,.220,.240,.260,.280,.300,.350,.400,.450,.500,.550,.600,.650,.700,.750,.800,.850,.900,.950,1.00,1.10,1.20,1.30,1.40,1.50,1.60,1.70,1.80,1.90,2.00,2.25,2.50,2.75,3.00,3.50,4.00,4.50,5.00,5.50,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.0,10.25,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,14.5,15.0,15.5]
# ATTACHMENT   SF6-                                BRAUN ET AL 2009
      YAT1=[19845.,19845.,12346.,10350.,8571.,5906.,4728.,4028.,3551.,3200.,2927.,2708.,2527.,2374.,1540.,1196.,989.6,865.4,762.2,683.8,612.8,564.5,534.6,380.8,308.3,258.8,219.7,191.3,173.2,153.9,130.6,121.5,108.1,103.8,89.56,91.17,83.17,80.07,72.08,73.68,50.47,39.94,34.78,31.24,31.00,25.33,21.04,17.71,14.66,11.74,9.21,7.31,5.59,3.99,1.96,1.00,.526,.266,.126,.036,.029,.017,.013,50*0.0]
# ATTACHMENT DISSOCIATIVE     SF5-                 BRAUN ET AL 2009 
      YAT2=[14*0.0,.477,.453,.443,.413,.395,.377,.366,.349,.342,.292,.259,.232,.220,.203,.192,.179,.171,.161,.155,.148,.144,.142,.134,.132,.130,.123,.113,.109,.103,.101,.096,.093,.093,.096,.099,.100,.110,.115,.123,.123,.134,.164,.198,.232,.265,.389,.513,.676,.743,.810,.710,.632,.479,.394,.299,.247,.190,.157,.130,.0801,.0573,.0397,.0283,.0189,.0150,.0103,.0069,.0049,31*0.0]
# ATTACHMENT  DISSOCIATIVE   SF4-     J.PHYS.CHEM.REF.29(2000)267
# UNITS 10**-18
      YAT3=[87*0.0,.0084,.0350,.144,.457,.528,.394,.251,.130,.046,.0084,.0032,15*0.0]
# ATTACHMENT DISSOCIATIVE    SF3-     J.PHYS.CHEM.REF.29(2000)267
# UNITS 10**-18
      YAT4=[96*0.0,.0014,.0046,.015,.033,.051,.0577,.064,.075,.071,.049,.026,.011,.0031,.0008,3*0.0]
# ATTACHMENT DISSOCIATIVE   SF2-      J.PHYS.CHEM.REF.29(2000)267
# UNITS 10**-18
      YAT5=[100*0.0,0.00,.00019,.00037,.0014,.0042,.0076,.0106,.0087,.0044,.0017,.00068,.00028,0.00]
# ATTACHMENT DISSOCIATIVE    F2-      J.PHYS.CHEM.REF.29(2000)267
# UNITS 10**-18
      YAT6=[77*0.0,.003,.004,.005,.006,.007,.008,.0075,.006,.0042,.0026,.0026,.00265,.0707,.0489,.0155,.0038,.0019,.0015,.0015,.0018,.0031,.0065,.0104,.0200,.0308,.0503,.0910,.0954,.0615,.0274,.0111,.0050,.0032,.0018,.0012,0.00]
# ATTACHMENT DISSOCIATIVE    F-       J.PHYS.CHEM.REF.29(2000)267
# UNITS 10**-18
      YAT7=[80*0.0,0.00,.010,.022,.075,.149,.162,.098,.171,.856,2.69,4.63,4.39,2.78,1.37,.749,.615,.977,1.42,1.57,1.39,1.13,1.14,1.31,2.10,2.35,1.95,1.22,.629,.400,.340,.310,.300,0.0]
# DISSOCIATION TRIPLET + SINGLETS ( SINGLETS GIVEN ANALYTICALLY)
#
# TRIPLETS SCALED BY 1/E**2 AT HIGH ENERGY  
      XTR1=[9.60,10.6,12.0,13.0,14.0,15.0,17.0,19.0,22.0,25.0,29.0,32.0]
      YTR1=[0.00,.009,.030,.045,.050,.054,.059,.060,.054,.045,.033,.026]
      XTR2=[10.9,12.4,14.0,15.0,16.0,18.0,20.0,23.0,26.0,30.0,33.0]
      YTR2=[0.00,.053,.097,.111,.119,.130,.132,.119,.099,.073,.057]
      XTR3=[14.4,15.4,17.0,18.0,20.0,22.0,25.0,28.0,32.0,35.0,38.0]
      YTR3=[0.00,.110,.227,.265,.299,.315,.315,.299,.236,.183,.135]
# BREMSSTRAHLUNG X-SECTION WITH CUT UNITS 10**-24
      Z16T=[1299.,871.,480.,289.,167.,79.5,46.9,29.4,19.6,17.5,17.5,17.8,18.2,18.5,18.6,18.9,19.1,19.3,19.5,19.7,19.8,19.9,20.0,20.0,20.1]
      Z9T=[573.,358.,179.,101.6,57.3,26.5,15.4,9.63,6.52,5.92,6.01,6.18,6.35,6.43,6.52,6.65,6.75,6.87,6.95,7.02,7.07,7.10,7.12,7.13,7.14]
      EBRM=[1000.,2000.,5000.,1.E4,2.E4,5.E4,1.E5,2.E5,5.E5,1.E6,2.E6,3.E6,4.E6,5.E6,6.E6,8.E6,1.E7,1.5E7,2.E7,3.E7,4.E7,5.E7,6.E7,8.E7,1.E8]
#-----------------------------------------------------------------------
#
#-----------------------------------------------------------------------
#     NANISO=0
      if(NANISO == 0):
 :
       NAME=' SF6 2014    ISOTROPIC  '
      else:
       NAME=' SF6 2014  ANISOTROPIC  '
      # endif
#-----------------------------------------------------------------------
# BORN BETHE CONSTANTS
      A0=0.52917720859e-08
      RY=13.60569193
      CONST=1.873884e-20
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)
      BBCONST=16.00*API*A0*A0*RY*RY/EMASS2
#
# BORN BETHE VALUES FOR IONISATION
      AM2=13.894
      C=140.7
# TRIPLET ANPLITUDE NORMALISATION
      AMPTR1=1.0
      AMPTR2=1.0
      AMPTR3=1.0
#  DIPOLE CONSTANT FOR VIBRATIONS V4 AND V3 
      V4DCONST=0.236
      V3DCONST=2.83
#  ARRAY SIZE
      NASIZE=20000
# 
      NION=12
      NATT=1
      NIN=35
      NNULL=0 
      IONMODEL=0
#
      NBREM=25
      DO 8 J=1,NIN
      IZBR[J]=0
    8 CONTINUE
      IZBR[36]=16
      IZBR[37]=9
#
      DO 1 J=1,6
    1 KEL[J]=NANISO
# SUPERELASTIC, V4,V1 AND V3 SET TO ISOTROPIC
# NB SET TO 2 IN DEGRAD
      KIN[1]=0
      KIN[3]=0
      KIN[5]=0
# INELASTIC V1,2V1,3V1,4V1 AND 5V1 SET TO STANDARD ANG DISTRIBUTION
      KIN[4]=2
      KIN[7]=2
      KIN[8]=2
      KIN[9]=2
      KIN[10]=2
# V4 AND V3 VIBRATIONS ANISOTROPIC ( CAPITELLI-LONGO)
# NB SET TO 2 IN DEGRAD
      KIN[2]=1
      KIN[6]=1
# 
# ANGULAR DISTRIBUTION FOR DISSOCIATIVE EXCITATION IS OKHRIMOVSKYY TYPE 
      DO 2 J=11,NIN
    2 KIN[J]=2
#
#  RAT IS MOMENTUM TRANSFER TO TOTAL RATIO FOR VIBRATIONS IN THE
#  RESONANCE AND THRESHOLD REGION  FOR THE VIBRATION V3.     
#  USED DIPOLE ANGULAR DISTRIBUTION FOR V3 AND V4 NEAR THRESHOLD.
      RAT=1.0  
#                                                         
      NDATA=159 
      N1V1=13
      N2V1=12
      N3V1=7
      N4V1=7
      N5V1=5
      N1V3=17                                                      
      NIOND=55
      NIONL3=100
      NIONL2=100
      NIONL1=100
      NKSHS=80
      NKSHF=79                                                        
      NATT1=113    
      NTRP1=12
      NTRP2=11
      NTRP3=11                                                    
# VIBRATIONAL DEGENERACY
      DEGV4=3.0
      DEGV1=1.0
      DEGV3=3.0
#
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(146.0554192*AMU)                                
      E[3]=15.67                             
      E[4]=0.0                                              
      E[5]=0.0                           
      E[6]=0.0 
# 
      EION[1]=E[3]  
      EION[2]=18.5
      EION[3]=18.8
      EION[4]=27.0
      EION[5]=31.0
      EION[6]=37.0
      EION[7]=46.5
      EION[8]=164.16
      EION[9]=165.36
      EION[10]=230.9
      EION[11]=2472.0
      EION[12]=685.4         
# OPAL BEATY
      EOBY[1]=EION[1]*0.8
      EOBY[2]=EION[2]*0.8
      EOBY[3]=EION[3]*0.8
      EOBY[4]=EION[4]*0.8
      EOBY[5]=EION[5]*0.8
      EOBY[6]=EION[6]*0.8
      EOBY[7]=EION[7]*0.8
      EOBY[8]=EION[8]*1.0
      EOBY[9]=EION[9]*1.0
      EOBY[10]=EION[10]*1.0
      EOBY[11]=EION[11]*1.0
      EOBY[12]=EION[12]*1.0
#
# FLUORESCENCE DATA
      DO 22 NK=1,6 
      NC0(NK)=0
      EC0(NK)=0.0
      WKLM(NK)=0.0
      EFL(NK)=0.0
      NG1(NK)=0
      EG1(NK)=0.0
      NG2(NK)=0
      EG2(NK)=0.0
      LEGAS(NK)=0
      ISHELL(NK)=0
   22 CONTINUE
# IONISATION TO 2+ CHARGE STATES
      NC0[7]=1
      EC0[7]=1.0
      WKLM[7]=0.0
      EFL[7]=0.0
      NG1[7]=0
      EG1[7]=0.0
      NG2[7]=0
      EG2[7]=0.0
      LEGAS[7]=0
      ISHELL[7]=0
# SULFUR L3 SHELL
      NC0[8]=2
      EC0[8]=138.
      WKLM[8]=0.00093
      EFL[8]=150.
      NG1[8]=1
      EG1[8]=138.
      NG2[8]=1
      EG2[8]=5.
      LEGAS[8]=1
      ISHELL[8]=4
# SULFUR L2 SHELL
      NC0[9]=2
      EC0[9]=133.
      WKLM[9]=0.00093
      EFL[9]=150.
      NG1[9]=1
      EG1[9]=133.
      NG2[9]=1
      EG2[9]=5.0
      LEGAS[9]=1
      ISHELL[9]=3
# SULFUR L1 SHELL
      NC0[10]=2
      EC0[10]=170.
      WKLM[10]=0.00093
      EFL[10]=215.
      NG1[10]=2
      EG1[10]=170.
      NG2[10]=1
      EG2[10]=5.0
      LEGAS[10]=1
      ISHELL[10]=2
# SULFUR K  SHELL
      NC0[11]=4
      EC0[11]=2353.
      WKLM[11]=0.0804
      EFL[11]=2308.
      NG1[11]=3
      EG1[11]=2220.
      NG2[11]=2
      EG2[11]=90.0
      LEGAS[11]=1
      ISHELL[11]=1
# FLUORINE K SHELL
      NC0[12]=3
      EC0[12]=625.2
      WKLM[12]=0.010
      EFL[12]=668.
      NG1[12]=2
      EG1[12]=625.2
      NG2[12]=1
      EG2[12]=5.0
      LEGAS[12]=2  
      ISHELL[12]=1
# OFFSET ENERGY FOR IONISATION ELECTRON ANGULAR DISTRIBUTION
      DO 776 J=1,NION
      DO 777 I=1,NASIZE
      if(EG[I]:
 > EION[J]) :
       IOFFION[J]=I-1
       GO TO 776
      # endif
  777 CONTINUE
  776 CONTINUE
#
      EIN[1]=-0.076253
      EIN[2]=0.076253
      EIN[3]=-0.096032  
      EIN[4]=0.096032 
      EIN[5]=-0.11754  
      EIN[6]=0.11754  
      EIN[7]=0.192064  
      EIN[8]=0.288096 
      EIN[9]=0.384128
      EIN[10]=0.48016
      EIN[11]=9.60 
      EIN[12]=10.0                                               
      EIN[13]=10.5
      EIN[14]=10.9                                                      
      EIN[15]=11.0
      EIN[16]=11.5
      EIN[17]=12.0
      EIN[18]=12.5
      EIN[19]=13.0
      EIN[20]=13.5
      EIN[21]=14.0
      EIN[22]=14.4
      EIN[23]=14.5
      EIN[24]=15.0
      EIN[25]=15.5
      EIN[26]=16.0 
      EIN[27]=16.5  
      EIN[28]=17.0
      EIN[29]=17.5
      EIN[30]=18.0
      EIN[31]=18.5
      EIN[32]=19.0
      EIN[33]=19.5
      EIN[34]=20.0
      EIN[35]=23.0
      EIN[36]=0.0
      EIN[37]=0.0
# OFFSET ENERGY FOR EXCITATION LEVELS ANGULAR DISTRIBUTION
      DO 3 NL=1,35
      DO 651 I=1,NASIZE
      if(EG[I]:
 > abs(EIN[NL])) :
       IOFFN[NL]=I-1
       GO TO 3
      # endif
  651 CONTINUE
    3 CONTINUE
#***********************************************************************
# ENTER PENNING TRANSFER FRACTION FOR EACH LEVEL 
# LEVELS ARE DISSOCIATIVE SO DO NOT  GIVE PENNING TRANSFERS
      for 4 K in range(1,35):
      DO 4 L=1,3
    4 PENFRA[L,K]=0.0
      if(IPEN == 0):
 GO TO 6
      DO 5 KDUM=10,14
      if(PENFRA[1,KDUM] == 0.0):
 GO TO 5
      WRITE(6,999) NAME,EIN(KDUM),PENFRA[1,KDUM],PENFRA[2,KDUM],PENFRA[3,KDUM]
  999 print(' GAS = ',A15,' ENERGY LEVEL = ','%.4f' %,' EV.',/,' PENNING PROBABILITY =','%.3f' % ,' ABS.LENGTH =',F7.2,' DECAY TIME =',F7.1,/)
    5 CONTINUE
#***********************************************************************
#
    6 SCRPT[1]='                                                  '
      SCRPT[2]=' ELASTIC   ANISOTROPIC      SF6                   '
      if(NANISO == 0):
 :
      SCRPT[2]=' ELASTIC     ISOTROPIC      SF6                   '
      # endif
      SCRPT[3]=' IONISATION  SF5 +                 ELOSS=   15.67 '
      SCRPT[4]=' IONISATION  SF4 +                 ELOSS=   18.5  '
      SCRPT[5]=' IONISATION  SF3 +                 ELOSS=   18.8  '
      SCRPT[6]=' IONISATION  SF2 +                 ELOSS=   27.0  '
      SCRPT[7]=' IONISATION  SF  +                 ELOSS=   31.0  '
      SCRPT[8]=' IONISATION  SUM OF: S + AND F +   ELOSS=   37.0  '
      SCRPT[9]=' IONISATION  SUM OF (SF3 SF2 SF)2+ ELOSS=   46.5  '
      SCRPT[10]=' IONISATION SULFUR L3 SHELL        ELOSS=  164.16 '
      SCRPT[11]=' IONISATION SULFUR L2 SHELL        ELOSS=  165.36 '
      SCRPT[12]=' IONISATION SULFUR L1 SHELL        ELOSS=  230.9  '
      SCRPT[13]=' IONISATION SULFUR  K SHELL        ELOSS= 2472.0  '
      SCRPT[14]=' IONISATION FLUORINE K SHELL       ELOSS=  685.4  '
      SCRPT[15]=' ATTACHMENT    (VALID FOR T=300KELVIN)            '
      SCRPT[16]='                                                  '
      SCRPT[17]='                                                  '
      SCRPT[18]=' VIBRATION V4 SUPERELASTIC         ELOSS=-0.076253' 
      SCRPT[19]=' VIBRATION V4 ANISOTROPIC          ELOSS= 0.076253'
      SCRPT[20]=' VIBRATION V1 SUPERELASTIC         ELOSS=-0.096032'
      SCRPT[21]=' VIBRATION V1 ISOTROPIC            ELOSS= 0.096032'
      SCRPT[22]=' VIBRATION V3 SUPERELASTIC         ELOSS=-0.11754 '
      SCRPT[23]=' VIBRATION V3 ANISOTROPIC          ELOSS= 0.11754 '
      SCRPT[24]=' VIBRATION 2V1                     ELOSS= 0.192064'
      SCRPT[25]=' VIBRATION 3V1                     ELOSS= 0.288096'
      SCRPT[26]=' VIBRATION 4V1                     ELOSS= 0.384128'
      SCRPT[27]=' VIBRATION 5V1 + HIGHER HARMONICS  ELOSS= 0.48016 '
      SCRPT[28]=' EXC. TRIPLET  DISSOCIATION        ELOSS=  9.6    '
      SCRPT[29]=' EXC. SINGLET  DISSOC.   F=0.0443  ELOSS= 10.0    '
      SCRPT[30]=' EXC. SINGLET  DISSOC.   F=0.0642  ELOSS= 10.5    '  
      SCRPT[31]=' EXC. TRIPLET  DISSOCIATION        ELOSS= 10.9    '
      SCRPT[32]=' EXC. SINGLET  DISSOC.   F=0.1839  ELOSS= 11.0    '
      SCRPT[33]=' EXC. SINGLET  DISSOC.   F=0.1073  ELOSS= 11.5    '
      SCRPT[34]=' EXC. SINGLET  DISSOC.   F=0.0880  ELOSS= 12.0    '
      SCRPT[35]=' EXC. SINGLET  DISSOC.   F=0.0304  ELOSS= 12.5    '
      SCRPT[36]=' EXC. ION PAIR F- + SF5+ F=0.0648  ELOSS= 13.0    '
      SCRPT[37]=' EXC. SINGLET  DISSOC.   F=0.1067  ELOSS= 13.5    '
      SCRPT[38]=' EXC. SINGLET  DISSOC.   F=0.1047  ELOSS= 14.0    '
      SCRPT[39]=' EXC. TRIPLET  DISSOCIATION        ELOSS= 14.4    '
      SCRPT[40]=' EXC. SINGLET  DISSOC.   F=0.1211  ELOSS= 14.5    '
      SCRPT[41]=' EXC. SINGLET  DISSOC.   F=0.2225  ELOSS= 15.0    '
      SCRPT[42]=' EXC. SINGLET  DISSOC.   F=0.2731  ELOSS= 15.5    '
      SCRPT[43]=' EXC. SINGLET  DISSOC.   F=0.1514  ELOSS= 16.0    '
      SCRPT[44]=' EXC. SINGLET  DISSOC.   F=0.1831  ELOSS= 16.5    '
      SCRPT[45]=' EXC. SINGLET  DISSOC.   F=0.1678  ELOSS= 17.0    '
      SCRPT[46]=' EXC. SINGLET  DISSOC.   F=0.1098  ELOSS= 17.5    '
      SCRPT[47]=' EXC. SINGLET  DISSOC.   F=0.0623  ELOSS= 18.0    '
      SCRPT[48]=' EXC. SINGLET  DISSOC.   F=0.0361  ELOSS= 18.5    '
      SCRPT[49]=' EXC. SINGLET  DISSOC.   F=0.0107  ELOSS= 19.0    '
      SCRPT[50]=' EXC. SINGLET  DISSOC.   F=0.0129  ELOSS= 19.5    '
      SCRPT[51]=' EXC. SINGLET  DISSOC.   F=0.0053  ELOSS= 20.0    '
      SCRPT[52]=' EXC. SINGLET  DISSOC.   F=0.0290  ELOSS= 23.0    '
      SCRPT[53]=' BREMSSTRAHLUNG FROM SULFUR ATOM                  '
      SCRPT[54]=' BREMSSTRAHLUNG FROM FLUORINE ATOM                '
# CALC LEVEL POPULATIONS
      APOPV4=DEGV4*math.exp(EIN[1]/AKT)
      APOPV1=DEGV1*math.exp(EIN[3]/AKT)
      APOPV3=DEGV3*math.exp(EIN[5]/AKT)
      APOPGS=1.0
      APOPSUM=APOPGS+APOPV4+APOPV1+APOPV3
      APOPGS=1.0/APOPSUM
      APOPV4=APOPV4/APOPSUM
      APOPV1=APOPV1/APOPSUM
      APOPV3=APOPV3/APOPSUM
#  RENORMALISE GROUND STATE TO ALLOW FOR EXCITATION X-SEC 
#  FROM EXCITED VIBRATIONAL STATE 
      APOPGS=1.0
#
#     EN=-ESTEP/2.0  
      DO 1000 I=1,NSTEP 
      EN=EG[I]                                             
#     EN=EN+ESTEP   
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
# USE LOG INTERPOLATION FOR ELASTIC      
      if(EN <= XEN[2]:
) : 
       QELA=1434.e-16
       QMOM=1434.e-16
       PQ2=0.0
       GO TO 30 
      # endif                                                    
      DO 10 J=2,N
      if(EN <= XEN[J]:
) GO TO 11                                        
   10 CONTINUE                                                          
      J=N                                                          
   11 YXJ=math.log(YELT[J])
      YXJ1=math.log(YELT[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QELA=math.exp(A*math.log(EN)+B)*1.e-16
      YXJ=math.log(YELM[J])
      YXJ1=math.log(YELM[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMOM=math.exp(A*math.log(EN)+B)*1.e-16
# 
      YXJ=math.log(YEPS[J])
      YXJ1=math.log(YEPS[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      PQ2=math.exp(A*math.log(EN)+B)
#  EPSILON =1-YEPS
      PQ2=1.00-PQ2
   30 CONTINUE
      PQ1=0.5+(QELA-QMOM)/QELA
      if(NANISO == 0):
 PEQEL[2][I]=0.5
      if(NANISO == 1):
 PEQEL[2][I]=PQ1
      if(NANISO == 2):
 PEQEL[2][I]=PQ2
      Q[2][I]=QELA 
      if(NANISO == 0):
 Q[2][I]=QMOM
# IONISATION   SF5 +                    
      QION[1][I]=0.0             
      PEQION[1][I]=0.5   
      if(NANISO == 2):
 PEQION[1][I]=0.0                                   
      if(EN < EION[1]:
) GO TO 44   
      if(EN > XION(NIOND):
) GO TO 42                                   
      DO 40 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 41                                       
   40 CONTINUE                                                          
      J=NIOND                                                   
   41 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.e-16
      GO TO 43
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   42 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.5403
   43 CONTINUE  
#        
      if(EN <= (2.0*EION[1]:
)) GO TO 44
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
# IONISATION SF4 +
   44 QION[2][I]=0.0             
      PEQION[2][I]=0.5   
      if(NANISO == 2):
 PEQION[2][I]=0.0                                   
      if(EN < EION[2]:
) GO TO 54   
      if(EN > XION(NIOND):
) GO TO 52                                   
      DO 50 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 51                                       
   50 CONTINUE                                                          
      J=NIOND                                                   
   51 A=(YIN1[J]-YIN1[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN1[J]-XION[J]*YIN1[J-1])/(XION[J-1]-XION[J])       
      QION[2][I]=(A*EN+B)*1.e-16
      GO TO 53
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   52 QION[2][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0416
   53 CONTINUE  
#        
      if(EN <= (2.0*EION[2]:
)) GO TO 54
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
# IONISATION SF3 +
   54 QION[3][I]=0.0             
      PEQION[3][I]=0.5   
      if(NANISO == 2):
 PEQION[3][I]=0.0                                   
      if(EN < EION[3]:
) GO TO 64   
      if(EN > XION(NIOND):
) GO TO 62                                   
      DO 60 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 61                                       
   60 CONTINUE                                                          
      J=NIOND                                                   
   61 A=(YIN2[J]-YIN2[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN2[J]-XION[J]*YIN2[J-1])/(XION[J-1]-XION[J])       
      QION[3][I]=(A*EN+B)*1.e-16
      GO TO 63
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   62 QION[3][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.1470
   63 CONTINUE  
#        
      if(EN <= (2.0*EION[3]:
)) GO TO 64
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
# IONISATION SF2 +
   64 QION[4][I]=0.0             
      PEQION[4][I]=0.5   
      if(NANISO == 2):
 PEQION[4][I]=0.0                                   
      if(EN < EION[4]:
) GO TO 74   
      if(EN > XION(NIOND):
) GO TO 72                                   
      DO 70 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 71                                       
   70 CONTINUE                                                          
      J=NIOND                                                   
   71 A=(YIN3[J]-YIN3[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN3[J]-XION[J]*YIN3[J-1])/(XION[J-1]-XION[J])       
      QION[4][I]=(A*EN+B)*1.e-16
      GO TO 73
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   72 QION[4][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0321
   73 CONTINUE  
#        
      if(EN <= (2.0*EION[4]:
)) GO TO 74
      PEQION[4][I]=PEQEL[2][(I-IOFFION[4]])
# IONISATION SF  +
   74 QION[5][I]=0.0             
      PEQION[5][I]=0.5   
      if(NANISO == 2):
 PEQION[5][I]=0.0                                   
      if(EN < EION[5]:
) GO TO 84   
      if(EN > XION(NIOND):
) GO TO 82                                   
      DO 80 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 81                                       
   80 CONTINUE                                                          
      J=NIOND                                                   
   81 A=(YIN4[J]-YIN4[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN4[J]-XION[J]*YIN4[J-1])/(XION[J-1]-XION[J])       
      QION[5][I]=(A*EN+B)*1.e-16
      GO TO 83
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   82 QION[5][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0724
   83 CONTINUE  
#        
      if(EN <= (2.0*EION[5]:
)) GO TO 84 
      PEQION[5][I]=PEQEL[2][(I-IOFFION[5]])
# IONISATION SUM OF S + AND F +
   84 QION[6][I]=0.0             
      PEQION[6][I]=0.5   
      if(NANISO == 2):
 PEQION[6][I]=0.0                                   
      if(EN < EION[6]:
) GO TO 94   
      if(EN > XION(NIOND):
) GO TO 92                                   
      DO 90 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 91                                       
   90 CONTINUE                                                          
      J=NIOND                                                   
   91 A=(YIN5[J]-YIN5[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN5[J]-XION[J]*YIN5[J-1])/(XION[J-1]-XION[J])       
      QION[6][I]=(A*EN+B)*1.e-16
      A=(YIN6[J]-YIN6[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN6[J]-XION[J]*YIN6[J-1])/(XION[J-1]-XION[J])
      QION[6][I]=QION[6][I]+(A*EN+B)*1.e-16
      GO TO 93
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
   92 QION[6][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.1466
   93 CONTINUE
      if(EN < (2.0*EION[6]:
)) GO TO 94
      PEQION[6][I]=PEQEL[2][(I-IOFFION[6]])  
# IONISATION SUM OF SF3,SF2 AND SF  ALL DOUBLE CHARGED
   94 QION[7][I]=0.0             
      PEQION[7][I]=0.5   
      if(NANISO == 2):
 PEQION[7][I]=0.0                                   
      if(EN < EION[7]:
) GO TO 104   
      if(EN > XION(NIOND):
) GO TO 102                                   
      DO 100 J=2,NIOND                                                  
      if(EN <= XION[J]:
) GO TO 101                                       
  100 CONTINUE                                                          
      J=NIOND                                                   
  101 A=(YIN7[J]-YIN7[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YIN7[J]-XION[J]*YIN7[J-1])/(XION[J-1]-XION[J])       
      QION[7][I]=(A*EN+B)*1.e-16
      GO TO 103
# USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
  102 QION[7][I]=CONST*(AM2*(X1-DEN[I]/2.0)+C*X2)*0.0200
  103 CONTINUE  
      if(EN < (2.0*EION[7]:
)) GO TO 104
      PEQION[7][I]=PEQEL[2][(I-IOFFION[7]])
# CALCULATE SULFUR L3 SHELL IONISATION
  104 QION[8][I]=0.0
      PEQION[8][I]=0.5
      if(NANISO == 2):
 PEQION[8][I]=0.0
      if(EN < EION[8]:
) GO TO 114
      DO 110 J=2,NIONL3
      if(EN <= XL3SH[J]:
) GO TO 111
  110 CONTINUE
      J=NIONL3
  111 A=(YL3SH[J]-YL3SH[J-1])/(XL3SH[J]-XL3SH[J-1])
      B=(XL3SH[J-1]*YL3SH[J]-XL3SH[J]*YL3SH[J-1])/(XL3SH[J-1]-XL3SH[J])
      QION[8][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[8]:
)) GO TO 114
      PEQION[8][I]=PEQEL[2][(I-IOFFION[8]])
# CALCULATE SULFUR L2 SHELL IONISATION  
  114 QION[9][I]=0.0
      PEQION[9][I]=0.5
      if(NANISO == 2):
 PEQION[9][I]=0.0
      if(EN < EION[9]:
) GO TO 124
      DO 120 J=2,NIONL2
      if(EN <= XL2SH[J]:
) GO TO 121
  120 CONTINUE
      J=NIONL2
  121 A=(YL2SH[J]-YL2SH[J-1])/(XL2SH[J]-XL2SH[J-1])
      B=(XL2SH[J-1]*YL2SH[J]-XL2SH[J]*YL2SH[J-1])/(XL2SH[J-1]-XL2SH[J])
      QION[9][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[9]:
)) GO TO 124
      PEQION[9][I]=PEQEL[2][(I-IOFFION[9]])
# CALCULATE SULFUR L1 SHELL IONISATION  
  124 QION[10][I]=0.0
      PEQION[10][I]=0.5
      if(NANISO == 2):
 PEQION[10][I]=0.0
      if(EN < EION[10]:
) GO TO 134
      DO 130 J=2,NIONL1
      if(EN <= XL1SH[J]:
) GO TO 131
  130 CONTINUE
      J=NIONL1
  131 A=(YL1SH[J]-YL1SH[J-1])/(XL1SH[J]-XL1SH[J-1])
      B=(XL1SH[J-1]*YL1SH[J]-XL1SH[J]*YL1SH[J-1])/(XL1SH[J-1]-XL1SH[J])
      QION[10][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[10]:
)) GO TO 134
      PEQION[10][I]=PEQEL[2][(I-IOFFION[10]))
# CALCULATE SULFUR K SHELL IONISATION  
  134 QION[11][I]=0.0
      PEQION[11][I]=0.5
      if(NANISO == 2):
 PEQION[11][I]=0.0
      if(EN < EION[11]:
) GO TO 144
      DO 140 J=2,NKSHS
      if(EN <= XKSHS[J]:
) GO TO 141
  140 CONTINUE
      J=NKSHS
  141 A=(YKSHS[J]-YKSHS[J-1])/(XKSHS[J]-XKSHS[J-1])
      B=(XKSHS[J-1]*YKSHS[J]-XKSHS[J]*YKSHS[J-1])/(XKSHS[J-1]-XKSHS[J])
      QION[11][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[11]:
)) GO TO 144
      PEQION[11][I]=PEQEL[2][(I-IOFFION[11]))
# CALCULATE FLUORINE K-SHELL IONISATION
  144 QION[12][I]=0.00
      PEQION[12][I]=0.5   
      if(NANISO == 2):
 PEQION[12][I]=0.0                                  
      if(EN <= EION[12]:
) GO TO 154     
      DO 150 J=2,NKSHF                                                  
      if(EN <= XKSHF[J]:
) GO TO 151                                      
  150 CONTINUE                                                          
      J=NKSHF                                                   
  151 A=(YKSHF[J]-YKSHF[J-1])/(XKSHF[J]-XKSHF[J-1])                     
      B=(XKSHF[J-1]*YKSHF[J]-XKSHF[J]*YKSHF[J-1])/(XKSHF[J-1]-XKSHF[J])
      QION[12][I]=(A*EN+B)*1.e-16  
      if(EN <= (2.0*EION[12]:
)) GO TO 154
      PEQION[12][I]=PEQEL[2][(I-IOFFION[12]))
# CORECTION TO IONISATION DUE TO SPLIT INTO K AND L SHELLS
  154 SSUM=QION[8][I]+QION[9][I]+QION[10][I]+QION[11][I]+QION[12][I]
      if(SSUM <= 0.0):
 GO TO 200
      TOT=QION[1][I]+QION[2][I]+QION[3][I]+QION[4][I]+QION[5][I]+QION[6][I]+QION[7][I]
      CRFAC=(TOT-SSUM)/TOT
      DO 155 J=1,7
      QION[J][I]=QION[J][I]*CRFAC
  155 CONTINUE
#                                      
# ATTACHMENT (USE LOG INTERPOLATION FOR SF6- AND LINEAR FOR OTHER IONS)      
  200 Q[4][I]=0.0                                                        
      if(EN <= 0.0):
 GO TO 250                                       
      if(EN >= XATT[NATT1]:
) GO TO 250                                   
      DO 210 J=2,NATT1                                                 
      if(EN <= XATT[J]:
) GO TO 220                                       
  210 CONTINUE                                                          
      J=NATT1  
  220 XNJ=math.log(XATT[J])
      XNJ1=math.log(XATT[J-1])
      XNL=XATT[J]
      XNL1=XATT[J-1]
# LOG
      if(YAT1[J]:
 == 0.0 or YAT1[J-1] == 0.0) :
       QAT1=0.0
       GO TO 221
      # endif
      Y1J=math.log(YAT1[J])
      Y1J1=math.log(YAT1[J-1])
      A1=(Y1J-Y1J1)/(XNJ-XNJ1)
      B1=(XNJ1*Y1J-XNJ*Y1J1)/(XNJ1-XNJ)
      QAT1=math.exp(A1*math.log(EN)+B1)*1.e-16
# LINEAR
  221 Y2J=YAT2[J]
      Y2J1=YAT2[J-1]
      Y3J=YAT3[J]
      Y3J1=YAT3[J-1]
      Y4J=YAT4[J]
      Y4J1=YAT4[J-1]
      Y5J=YAT5[J]
      Y5J1=YAT5[J-1]
      Y6J=YAT6[J]
      Y6J1=YAT6[J-1]
      Y7J=YAT7[J]
      Y7J1=YAT7[J-1]
      A2=(Y2J-Y2J1)/(XNL-XNL1)
      B2=(XNL1*Y2J-XNL*Y2J1)/(XNL1-XNL)
      A3=(Y3J-Y3J1)/(XNL-XNL1)
      B3=(XNL1*Y3J-XNL*Y3J1)/(XNL1-XNL)
      A4=(Y4J-Y4J1)/(XNL-XNL1)
      B4=(XNL1*Y4J-XNL*Y4J1)/(XNL1-XNL)
      A5=(Y5J-Y5J1)/(XNL-XNL1)
      B5=(XNL1*Y5J-XNL*Y5J1)/(XNL1-XNL)
      A6=(Y6J-Y6J1)/(XNL-XNL1)
      B6=(XNL1*Y6J-XNL*Y6J1)/(XNL1-XNL)
      A7=(Y7J-Y7J1)/(XNL-XNL1)
      B7=(XNL1*Y7J-XNL*Y7J1)/(XNL1-XNL)
      QAT2=(A2*EN+B2)*1.e-16
      QAT3=(A3*EN+B3)*1.e-18
      QAT4=(A4*EN+B4)*1.e-18
      QAT5=(A5*EN+B5)*1.e-18
      QAT6=(A6*EN+B6)*1.e-18
      QAT7=(A7*EN+B7)*1.e-18
      Q[4][I]=QAT1+QAT2+QAT3+QAT4+QAT5+QAT6+QAT7
#                                                               
  250 Q[5][I]=0.0     
      Q[6][I]=0.0                                                        
# V4 SUPERELASTIC  
      QIN[1][I]=0.0
      PEQIN[1][I]=0.50
      if(KIN[1]:
 == 2) PEQIN[1][I]=0.0
      if(EN <= 0.0):
 GO TO 350
      EFAC=math.sqrt(1.0-(EIN[1]/EN))
#  DIPOLE 
      QIN[1][I]=V4DCONST*math.log((EFAC+1.0)/(EFAC-1.0))/EN
      QIN[1][I]=QIN[1][I]*APOPV4/DEGV4*1.e-16
      if(KIN[1]:
 == 2) PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]# V4 ANISOTROPIC
  350 QIN[2][I]=0.0
      PEQIN[2][I]=0.50
      if(KIN[2]:
 == 2) PEQIN[2][I]=0.0
      if(EN <= EIN[2]:
) GO TO 400
#  DIPOLE 
      EFAC=math.sqrt(1.0-(EIN[2]/EN))  
      ELF=EN-EIN[2]
      FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
      BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
      QIN[2][I]=V4DCONST*math.log((1.0+EFAC)/(1.0-EFAC))/EN 
      QIN[2][I]=QIN[2][I]*APOPGS*1.e-16
      XMT=(1.5-FWD/(FWD+BCK))*Q[2][I]
      if(KIN[2]:
 == 1) PEQIN[2][I]=0.5+(QIN[2][I]-XMT)/QIN[2][I]
      if(KIN[2]:
 == 2) PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]   
# 1V1 SUPERELASTIC 
 400  QIN[3][I]=0.0
      PEQIN[3][I]=0.50
      if(KIN[3]:
 == 2) PEQIN[3][I]=0.0
      if(EN <= 0.0):
 GO TO 450    
      if((EN+EIN[4]:
) > XV1V1(N1V1)) GO TO 425                        
      DO 410 J=2,N1V1                                                 
      if((EN+EIN[4]:
) <= XV1V1[J]) GO TO 420                             
  410 CONTINUE                                                          
      J=N1V1                                                          
  420 A=(YV1V1[J]-YV1V1[J-1])/(XV1V1[J]-XV1V1[J-1])                     
      B=(XV1V1[J-1]*YV1V1[J]-XV1V1[J]*YV1V1[J-1])/(XV1V1[J-1]-XV1V1[J])
      QIN[3][I]=(EN+EIN[4])*(A*(EN+EIN[4])+B)/EN
      GO TO 426
  425 QIN[3][I]=YV1V1(N1V1)*(XV1V1(N1V1)/(EN+EIN[4]))**2
  426 QIN[3][I]=QIN[3][I]*APOPV1/DEGV1*1.e-16 
      if(KIN[3]:
 == 2) PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]                
# 1V1   ISOTROPIC                                                    
  450 QIN[4][I]=0.0   
      PEQIN[4][I]=0.50              
      if(KIN[4]:
 == 2) PEQIN[4][I]=0.0                                
      if(EN <= EIN[4]:
) GO TO 500 
      if(EN > XV1V1(N1V1):
) GO TO 475                         
      DO 460 J=2,N1V1                                                
      if(EN <= XV1V1[J]:
) GO TO 470                                      
  460 CONTINUE                                                          
      J=N1V1                                                         
  470 A=(YV1V1[J]-YV1V1[J-1])/(XV1V1[J]-XV1V1[J-1])                     
      B=(XV1V1[J-1]*YV1V1[J]-XV1V1[J]*YV1V1[J-1])/(XV1V1[J-1]-XV1V1[J])
      QIN[4][I]=A*EN+B
      GO TO 476
  475 QIN[4][I]=YV1V1(N1V1)*(XV1V1(N1V1)/EN)**2 
  476 QIN[4][I]=QIN[4][I]*APOPGS*1.e-16 
      if(KIN[4]:
 == 2) PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]#
# V3 SUPERELASTIC  
  500 QIN[5][I]=0.0
      PEQIN[5][I]=0.50
      if(KIN[5]:
 == 2) PEQIN[5][I]=0.0
      if(EN <= 0.0):
 GO TO 550
      if((EN+EIN[6]:
) > XVBV3(N1V3)) GO TO 530
      DO 510 J=2,N1V3
      if((EN+EIN[6]:
) <= XVBV3[J]) GO TO 520
  510 CONTINUE
      J=N1V3
  520 A=(YVBV3[J]-YVBV3[J-1])/(XVBV3[J]-XVBV3[J-1])                     
      B=(XVBV3[J-1]*YVBV3[J]-XVBV3[J]*YVBV3[J-1])/(XVBV3[J-1]-XVBV3[J])
      QIN[5][I]=(EN+EIN[6])*(A*(EN+EIN[6])+B)/EN
  530 EFAC=math.sqrt(1.0-(EIN[5]/EN))
# ADD DIPOLE 
      QIN[5][I]=QIN[5][I]+V3DCONST*math.log((EFAC+1.0)/(EFAC-1.0))/EN
      QIN[5][I]=QIN[5][I]*APOPV3/DEGV3*1.e-16
      if(KIN[5]:
 == 2) PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]# V3 ANISOTROPIC
  550 QIN[6][I]=0.0
      PEQIN[6][I]=0.50
      if(KIN[6]:
 == 2) PEQIN[6][I]=0.0
      if(EN <= EIN[6]:
) GO TO 600
      if(EN > XVBV3(N1V3):
) GO TO 580
      DO 560 J=2,N1V3
      if(EN <= XVBV3[J]:
) GO TO 570
  560 CONTINUE
      J=N1V3
  570 A=(YVBV3[J]-YVBV3[J-1])/(XVBV3[J]-XVBV3[J-1])                     
      B=(XVBV3[J-1]*YVBV3[J]-XVBV3[J]*YVBV3[J-1])/(XVBV3[J-1]-XVBV3[J]) 
      QIN[6][I]=(A*EN+B)
# ADD DIPOLE PART
  580 EFAC=math.sqrt(1.0-(EIN[6]/EN))   
      ADIP=V3DCONST*math.log((1.0+EFAC)/(1.0-EFAC))/EN     
      ELF=EN-EIN[6]
      FWD=math.log((EN+ELF)/(EN+ELF-2.0*math.sqrt(EN*ELF)))
      BCK=math.log((EN+ELF+2.0*math.sqrt(EN*ELF))/(EN+ELF))
# RATIO OF MT TO TOTAL X-SECT FOR RESONANCE PART =RAT
      XMT=((1.5-FWD/(FWD+BCK))*ADIP+RAT*QIN[6][I])*APOPGS*1.e-16         
      QIN[6][I]=(QIN[6][I]+ADIP)*APOPGS*1.e-16 
      if(KIN[6]:
 == 1) PEQIN[6][I]=0.5+(QIN[6][I]-XMT)/QIN[6][I]    
      if(KIN[6]:
 == 2) PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]c
# 2V1                                                         
  600 QIN[7][I]=0.0
      PEQIN[7][I]=0.50       
      if(KIN[7]:
 == 2) PEQIN[7][I]=0.0                                 
      if(EN <= EIN[7]:
) GO TO 650
      if(EN > XV2V1(N2V1):
) GO TO 621                               
      DO 610 J=2,N2V1                                                 
      if(EN <= XV2V1[J]:
) GO TO 620                                      
  610 CONTINUE                                                          
      J=N2V1                                                          
  620 A=(YV2V1[J]-YV2V1[J-1])/(XV2V1[J]-XV2V1[J-1])                     
      B=(XV2V1[J-1]*YV2V1[J]-XV2V1[J]*YV2V1[J-1])/(XV2V1[J-1]-XV2V1[J])
      QIN[7][I]=(A*EN+B)*1.e-16
      GO TO 630 
# SCALE BY 1/E**2 ABOVE XV2V1(N2V1) EV
  621 QIN[7][I]=YV2V1(N2V1)*(XV2V1(N2V1)/EN)**2*1.e-16 
  630 if(KIN[7] == 2) PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]
# 3V1                                       
  650 QIN[8][I]=0.0    
      PEQIN[8][I]=0.50                
      if(KIN[8]:
 == 2) PEQIN[8][I]=0.00                                  
      if(EN <= EIN[8]:
) GO TO 680     
      if(EN > XV3V1(N3V1):
) GO TO 675                               
      DO 660 J=2,N3V1                                                
      if(EN <= XV3V1[J]:
) GO TO 670                                      
  660 CONTINUE                                                          
      J=N3V1                                                          
  670 A=(YV3V1[J]-YV3V1[J-1])/(XV3V1[J]-XV3V1[J-1])                     
      B=(XV3V1[J-1]*YV3V1[J]-XV3V1[J]*YV3V1[J-1])/(XV3V1[J-1]-XV3V1[J])
      QIN[8][I]=(A*EN+B)*1.e-16
      GO TO 676
# SCALE BY 1/E**2 ABOBE XV3V1(N3V1) EV
  675 QIN[8][I]=YV3V1(N3V1)*(XV3V1(N3V1)/EN)**2*1.e-16
  676 if(KIN[8] == 2) PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]# 4V1                                   
  680 QIN[9][I]=0.0
      PEQIN[9][I]=0.50  
      if(KIN[9]:
 == 2) PEQIN[9][I]=0.0             
      if(EN <= EIN[9]:
) GO TO 685    
      if(EN > XV4V1(N4V1):
) GO TO 683
      DO 681 J=2,N4V1                                                 
      if(EN <= XV4V1[J]:
) GO TO 682                                      
  681 CONTINUE
      J=N4V1                                                          
  682 A=(YV4V1[J]-YV4V1[J-1])/(XV4V1[J]-XV4V1[J-1])                     
      B=(XV4V1[J-1]*YV4V1[J]-XV4V1[J]*YV4V1[J-1])/(XV4V1[J-1]-XV4V1[J]) 
      QIN[9][I]=(A*EN+B)*1.e-16   
      GO TO 684
# SCALE BY 1/E**2 ABOVE XV4V1(N4V1) EV
  683 QIN[9][I]=YV4V1(N4V1)*(XV4V1(N4V1)/EN)**2*1.e-16
  684 if(KIN[9] == 2) PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]# 5V1                                   
  685 QIN[10][I]=0.0                   
      PEQIN[10][I]=0.50 
      if(KIN[10]:
 == 2) PEQIN[10][I]=0.0                                 
      if(EN <= EIN[10]:
) GO TO 700    
      if(EN > XV5V1(N5V1):
) GO TO 688                                
      DO 686 J=2,N5V1                                                 
      if(EN <= XV5V1[J]:
) GO TO 687                                      
  686 CONTINUE                                                          
      J=N5V1                                                          
  687 A=(YV5V1[J]-YV5V1[J-1])/(XV5V1[J]-XV5V1[J-1])                     
      B=(XV5V1[J-1]*YV5V1[J]-XV5V1[J]*YV5V1[J-1])/(XV5V1[J-1]-XV5V1[J]) 
      QIN[10][I]=(A*EN+B)*1.e-16 
      GO TO 689
# SCALE BY 1/E**2 ABOVE XV5V1(N5V1) EV
  688 QIN[10][I]=YV5V1(N5V1)*(XV5V1(N5V1)/EN)**2*1.e-16
  689 if(KIN[10] == 2) PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])]
# TRIPLET AT 9.6EV
  700 QIN[11][I]=0.0
      PEQIN[11][I]=0.0
      if(EN <= EIN[11]:
) GO TO 705
      if(EN > XTR1(NTRP1):
) GO TO 703
      DO 701 J=2,NTRP1
      if(EN <= XTR1[J]:
) GO TO 702
  701 CONTINUE
      J=NTRP1
  702 A=(YTR1[J]-YTR1[J-1])/(XTR1[J]-XTR1[J-1])
      B=(XTR1[J-1]*YTR1[J]-XTR1[J]*YTR1[J-1])/(XTR1[J-1]-XTR1[J])
      QIN[11][I]=(A*EN+B)*1.e-16*AMPTR1
      GO TO 704
# SCALE BY 1/E**2 ABOVE XTR1(NTRP1) EV
  703 QIN[11][I]=YTR1(NTRP1)*(XTR1(NTRP1)/EN)**2*1.e-16*AMPTR1
  704 if(EN <= (3.0*EIN[11])) GO TO 705
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]                                
# SINGLET DISSOCIATION AT 10.0 EV USE BEF SCALING WITH F=0.0443
  705 QIN[12][I]=0.0
      PEQIN[12][I]=0.0
      if(EN <= EIN[12]:
) GO TO 706
      QIN[12][I]=0.0443/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])*1.025
      if(QIN[12][I]:
 < 0.0) QIN[12][I]=0.0       
      if(EN <= (3.0*EIN[12]:
)) GO TO 706
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
# SINGLET DISSOCIATION AT 10.5 EV USE BEF SCALING WITH F=0.0642
  706 QIN[13][I]=0.0
      PEQIN[13][I]=0.0
      if(EN <= EIN[13]:
) GO TO 707
      QIN[13][I]=0.0642/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[13]+E[3])*1.024
      if(QIN[13][I]:
 < 0.0) QIN[13][I]=0.0       
      if(EN <= (3.0*EIN[13]:
)) GO TO 707
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
# TRIPLET DISSOCIATION AT 10.9 EV  
  707 QIN[14][I]=0.0
      PEQIN[14][I]=0.0
      if(EN <= EIN[14]:
) GO TO 712
      if(EN > XTR2(NTRP2):
) GO TO 710
      DO 708 J=2,NTRP2
      if(EN <= XTR2[J]:
) GO TO 709
  708 CONTINUE
      J=NTRP2
  709 A=(YTR2[J]-YTR2[J-1])/(XTR2[J]-XTR2[J-1])
      B=(XTR2[J-1]*YTR2[J]-XTR2[J]*YTR2[J-1])/(XTR2[J-1]-XTR2[J])
      QIN[14][I]=(A*EN+B)*1.e-16*AMPTR2
      GO TO 711
# SCALE BY 1/E**2 ABOVE XTR2(NTRP2) EV
  710 QIN[14][I]=YTR2(NTRP2)*(XTR2(NTRP2)/EN)**2*1.e-16*AMPTR2
  711 if(EN <= (3.0*EIN[14])) GO TO 712
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]                               
# SINGLET DISSOCIATION AT 11.0 EV USE BEF SCALING WITH F=0.1839
  712 QIN[15][I]=0.0
      PEQIN[15][I]=0.0
      if(EN <= EIN[15]:
) GO TO 713
      QIN[15][I]=0.1839/(EIN[15]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[15]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[15]+E[3])*1.023
      if(QIN[15][I]:
 < 0.0) QIN[15][I]=0.0       
      if(EN <= (3.0*EIN[15]:
)) GO TO 713
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])]
# SINGLET DISSOCIATION AT 11.5 EV USE BEF SCALING WITH F=0.1073
  713 QIN[16][I]=0.0
      PEQIN[16][I]=0.0
      if(EN <= EIN[16]:
) GO TO 714
      QIN[16][I]=0.1073/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])*1.022
      if(QIN[16][I]:
 < 0.0) QIN[16][I]=0.0       
      if(EN <= (3.0*EIN[16]:
)) GO TO 714
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]
# SINGLET DISSOCIATION AT 12.0 EV USE BEF SCALING WITH F=0.0880
  714 QIN[17][I]=0.0
      PEQIN[17][I]=0.0
      if(EN <= EIN[17]:
) GO TO 715
      QIN[17][I]=0.0880/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])*1.021
      if(QIN[17][I]:
 < 0.0) QIN[17][I]=0.0       
      if(EN <= (3.0*EIN[17]:
)) GO TO 715
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]
# SINGLET DISSOCIATION AT 12.5 EV USE BEF SCALING WITH F=0.0304
  715 QIN[18][I]=0.0
      PEQIN[18][I]=0.0
      if(EN <= EIN[18]:
) GO TO 716
      QIN[18][I]=0.0304/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])*1.020
      if(QIN[18][I]:
 < 0.0) QIN[18][I]=0.0       
      if(EN <= (3.0*EIN[18]:
)) GO TO 716
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]
# SINGLET DISSOCIATION AT 13.0 EV USE BEF SCALING WITH F=0.0648
# ION PAIR printION  F- + SF5+
  716 QIN[19][I]=0.0
      PEQIN[19][I]=0.0
      if(EN <= EIN[19]:
) GO TO 717
      QIN[19][I]=0.0648/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])*1.019
      if(QIN[19][I]:
 < 0.0) QIN[19][I]=0.0       
      if(EN <= (3.0*EIN[19]:
)) GO TO 717
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]
# SINGLET DISSOCIATION AT 13.5 EV USE BEF SCALING WITH F=0.1067
  717 QIN[20][I]=0.0
      PEQIN[20][I]=0.0
      if(EN <= EIN[20]:
) GO TO 718
      QIN[20][I]=0.1067/(EIN[20]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[20]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[20]+E[3])*1.019
      if(QIN[20][I]:
 < 0.0) QIN[20][I]=0.0       
      if(EN <= (3.0*EIN[20]:
)) GO TO 718
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])]
# SINGLET DISSOCIATION AT 14.0 EV USE BEF SCALING WITH F=0.1047
  718 QIN[21][I]=0.0
      PEQIN[21][I]=0.0
      if(EN <= EIN[21]:
) GO TO 719
      QIN[21][I]=0.1047/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])*1.018
      if(QIN[21][I]:
 < 0.0) QIN[21][I]=0.0       
      if(EN <= (3.0*EIN[21]:
)) GO TO 719
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]
# TRIPLET DISSOCIATION  AT 14.4 EV
  719 QIN[22][I]=0.0
      PEQIN[2][I]=0.0
      if(EN <= EIN[22]:
) GO TO 724
      if(EN > XTR3(NTRP3):
) GO TO 722
      DO 720 J=2,NTRP3
      if(EN <= XTR3[J]:
) GO TO 721
  720 CONTINUE
      J=NTRP3
  721 A=(YTR3[J]-YTR3[J-1])/(XTR3[J]-XTR3[J-1])
      B=(XTR3[J-1]*YTR3[J]-XTR3[J]*YTR3[J-1])/(XTR3[J-1]-XTR3[J])
      QIN[22][I]=(A*EN+B)*1.e-16*AMPTR3
      GO TO 723
# SCALE BY 1/E**2 ABOVE XTR3(NTRP3) EV
  722 QIN[22][I]=YTR3(NTRP3)*(XTR3(NTRP3)/EN)**2*1.e-16*AMPTR3
  723 if(EN <= (3.0*EIN[22])) GO TO 724
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]                               
# SINGLET DISSOCIATION AT 14.5 EV USE BEF SCALING WITH F=0.1211
  724 QIN[23][I]=0.00
      PEQIN[23][I]=0.0
      if(EN <= EIN[23]:
) GO TO 725
      QIN[23][I]=0.01211/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+E[3])*1.017
      if(QIN[23][I]:
 < 0.0) QIN[23][I]=0.0       
      if(EN <= (3.0*EIN[23]:
)) GO TO 725
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]
# SINGLET DISSOCIATION AT 15.0 EV USE BEF SCALING WITH F=0.2225
  725 QIN[24][I]=0.0
      PEQIN[24][I]=0.0
      if(EN <= EIN[24]:
) GO TO 726
      QIN[24][I]=0.2225/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])*1.017
      if(QIN[24][I]:
 < 0.0) QIN[24][I]=0.0       
      if(EN <= (3.0*EIN[24]:
)) GO TO 726
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]
# SINGLET DISSOCIATION AT 15.5 EV USE BEF SCALING WITH F=0.2731
  726 QIN[25][I]=0.0
      PEQIN[25][I]=0.0
      if(EN <= EIN[25]:
) GO TO 727
      QIN[25][I]=0.2731/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+E[3])*1.016
      if(QIN[25][I]:
 < 0.0) QIN[25][I]=0.0       
      if(EN <= (3.0*EIN[25]:
)) GO TO 727
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]
# SINGLET DISSOCIATION AT 16.0 EV USE BEF SCALING WITH F=0.1514
  727 QIN[26][I]=0.0
      PEQIN[26][I]=0.0
      if(EN <= EIN[26]:
) GO TO 728
      QIN[26][I]=0.1514/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])*1.016
      if(QIN[26][I]:
 < 0.0) QIN[26][I]=0.0       
      if(EN <= (3.0*EIN[26]:
)) GO TO 728
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]
# SINGLET DISSOCIATION AT 16.5 EV USE BEF SCALING WITH F=0.1831
  728 QIN[27][I]=0.0
       PEQIN[27][I]=0.0
      if(EN <= EIN[27]:
) GO TO 729
      QIN[27][I]=0.1831/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])*1.015
      if(QIN[27][I]:
 < 0.0) QIN[27][I]=0.0       
      if(EN <= (3.0*EIN[27]:
)) GO TO 729
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]
# SINGLET DISSOCIATION AT 17.00 EV USE BEF SCALING WITH F=0.1678
  729 QIN[28][I]=0.0
      PEQIN[28][I]=0.0
      if(EN <= EIN[28]:
) GO TO 730
      QIN[28][I]=0.1678/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])*1.015
      if(QIN[28][I]:
 < 0.0) QIN[28][I]=0.0       
      if(EN <= (3.0*EIN[28]:
)) GO TO 730
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]
# SINGLET DISSOCIATION AT 17.5 EV USE BEF SCALING WITH F=0.1098
  730 QIN[29][I]=0.0
      PEQIN[29][I]=0.0
      if(EN <= EIN[29]:
) GO TO 731
      QIN[29][I]=0.1098/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])*1.014
      if(QIN[29][I]:
 < 0.0) QIN[29][I]=0.0       
      if(EN <= (3.0*EIN[29]:
)) GO TO 731
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]
# SINGLET DISSOCIATION AT 18.0 EV USE BEF SCALING WITH F=0.0623
  731 QIN[30][I]=0.0
      PEQIN[30][I]=0.0
      if(EN <= EIN[30]:
) GO TO 732
      QIN[30][I]=0.0623/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])*1.014
      if(QIN[30][I]:
 < 0.0) QIN[30][I]=0.0       
      if(EN <= (3.0*EIN[30]:
)) GO TO 732
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]
# SINGLET DISSOCIATION AT 18.5 EV USE BEF SCALING WITH F=0.0361
  732 QIN[31][I]=0.0
      PEQIN[31][I]=0.0
      if(EN <= EIN[31]:
) GO TO 733
      QIN[31][I]=0.0361/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])*1.014
      if(QIN[31][I]:
 < 0.0) QIN[31][I]=0.0       
      if(EN <= (3.0*EIN[31]:
)) GO TO 733
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]
# SINGLET DISSOCIATION AT 19.0 EV USE BEF SCALING WITH F=0.0107
  733 QIN[32][I]=0.0
      PEQIN[32][I]=0.0
      if(EN <= EIN[32]:
) GO TO 734
      QIN[32][I]=0.0107/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])*1.013
      if(QIN[32][I]:
 < 0.0) QIN[32][I]=0.0       
      if(EN <= (3.0*EIN[32]:
)) GO TO 734
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]
# SINGLET DISSOCIATION AT 19.5 EV USE BEF SCALING WITH F=0.0129
  734 QIN[33][I]=0.0
      PEQIN[33][I]=0.0
      if(EN <= EIN[33]:
) GO TO 735
      QIN[33][I]=0.0129/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])*1.013
      if(QIN[33][I]:
 < 0.0) QIN[33][I]=0.0       
      if(EN <= (3.0*EIN[33]:
)) GO TO 735
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]
# SINGLET DISSOCIATION AT 20.0 EV USE BEF SCALING WITH F=0.0053
  735 QIN[34][I]=0.0
      PEQIN[34][I]=0.0
      if(EN <= EIN[34]:
) GO TO 736
      QIN[34][I]=0.0053/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])*1.013
      if(QIN[34][I]:
 < 0.0) QIN[34][I]=0.0       
      if(EN <= (3.0*EIN[34]:
)) GO TO 736
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]
# SINGLET DISSOCIATION AT 23.0 EV USE BEF SCALING WITH F=0.029
  736 QIN[35][I]=0.0
      PEQIN[35][I]=0.0
      if(EN <= EIN[35]:
) GO TO 737
      QIN[35][I]=0.0290/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])*1.02
      if(QIN[35][I]:
 < 0.0) QIN[35][I]=0.0       
      if(EN <= (3.0*EIN[35]:
)) GO TO 737
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]
# LOAD BREMSSTRAHLUNG X-SECTIONS
  737 QIN[36][I]=0.0
      QIN[37][I]=0.0
      if(EN <= 1000.):
 GO TO 800
      DO 780 J=2,NBREM
      if(EN <= EBRM[J]:
) GO TO 790
  780 CONTINUE
      J=NBREM
  790 A=(math.log(Z16T[J])-math.log(Z16T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z16T[J])*EBRM[J-1]-math.log(Z16T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A1=(math.log(Z9T[J])-math.log(Z9T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z9T[J])*EBRM[J-1]-math.log(Z9T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[36][I]=math.exp(A*EN+B)*1.e-24
      QIN[37][I]=math.exp(A1*EN+B1)*6.e-24 
  800 CONTINUE
#     WRITE(6,881) EN
# 881 print('EN=',D14.6)
#     WRITE(6,882) QIN[1][I],QIN[2][I],QIN[3][I],QIN[4][I],QIN[5][I]
#     WRITE(6,882) QIN[6][I],QIN[7][I],QIN[8][I],QIN[9][I],QIN[10][I]
#     WRITE(6,882) QIN[11][I],QIN[12][I],QIN[13][I],QIN[14][I],QIN[15][I]
#     WRITE(6,882) QIN[16][I],QIN[17][I],QIN[18][I],QIN[19][I],QIN[20][I]
#     WRITE(6,882) QIN[21][I],QIN[22][I],QIN[23][I],QIN[24][I],QIN[25][I]
#     WRITE(6,882) QIN[26][I],QIN[27][I],QIN[28][I],QIN[29][I],QIN[30][I]
#     WRITE(6,882) QIN[31][I],QIN[32][I],QIN[33][I],QIN[34][I],QIN[35][I]
# 882 print(' QIN ',5'%.4f' % )
#     WRITE(6,883) Q[2][I],Q[3][I],Q[4][I],Q[5][I]
# 883 print(' Q 2 3 4 5',4'%.4f' % )
#     WRITE(6,884) QION[1][I],QION[2][I],QION[3][I]
# 884 print('QION 1 2 3 ',3'%.4f' % )
#
      QSUP=QIN[1][I]+QIN[3][I]+QIN[5][I]
      QVIB=QIN[2][I]+QIN[4][I]+QIN[6][I]+QIN[7][I]+QIN[8][I]+QIN[9][I]+QIN[10][I]
      QSING=0.0
      DO 888 NPT=11,35
  888 QSING=QSING+QIN(NPT,I)
      QTRIP=QIN[11][I]+QIN[14][I]+QIN[22][I]
      QSING=QSING-QTRIP
      QATTA=Q[4][I]
      QIONS=0.0
      DO 889 NPT=1,NION
  889 QIONS=QIONS+QION(NPT,I)      
      QTOT=Q[2][I]+Q[4][I]+QSUP+QVIB+QSING+QTRIP                   
#     WRITE(6,767) EN,QTOT,QATT,QSUP,QVIB,QSING,QTRIP,QIONS,Q[2][I],QMOM
#767  print(' EN=','%.4f' %,' QTOT=','%.3f' %,' QATT=','%.3f' %,' QSUP=','%.3f' %,/
#    /,' QVIB=','%.3f' %,' QSING=','%.3f' %,' QTRIP=','%.3f' %,' QION=','%.3f' %,/,'
#    / QELAS=','%.3f' %,' QELMOM=','%.3f' %,/)
# 
 1000 CONTINUE
#  SAVE COMPUTE TIME
      DO 1010 K=1,NIN
      if(EFINAL <= EIN[K]:
) :
       NIN=K-1
       GO TO 1011
      # endif
 1010 CONTINUE
 1011 CONTINUE
      if(EFINAL > 1000.):
 NIN=37
#
      return
      # end     
def GAS31(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS32(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS33(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS34(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS35(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS36(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS37(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS38(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS39(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS40(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS41(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS42(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS43(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)     
      # IMPLICIT #real*8 (A-H,O-Z)
      # IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      COMMON/DENS/DEN(20000)
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS44(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)   
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      COMMON/MIX2/EG(20000),EROOT(20000),QT1(20000),QT2(20000),QT3(20000),QT4(20000)
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20) 
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6]  
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]       
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      DIMENSION XEN(130),YELM(130),YELT(130),YEPS(130),XION[42],YION[42],YINC[42],XATT[10],YATT[10],XKSHC(83),YKSHC(83),XKSHN(89),YKSHN(89),XTORS[32],YTORS[32],XVIB1[25],YVIB1[25],XVIB2[24],YVIB2[24],XVIB3[28],YVIB3[28],XVHAR[15],YVHAR[15],XTRP1[12],YTRP1[12],XTRP2[11],YTRP2[11],XTRP3[11],YTRP3[11],IOFFN[37],IOFFION[12]
      DIMENSION Z6T[25],Z7T[25],Z1T[25],EBRM[25]
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME  
      #                                                
      XEN=[0.00,.001,0.01,0.02,0.10,0.20,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,7.00,8.00,10.0,12.0,15.0,20.0,30.0,60.0,100.,125.,150.,175.,200.,250.,300.,350.,400.,450.,500.,600.,700.,800.,900.,1000.,1250.,1500.,1750.,2000.,2500.,3000.,3500.,4000.,4500.,5000.,6000.,7000.,8000.,9000.,1.0D4,1.25D4,1.5D4,1.75D4,2.0D4,2.5'%.3f' %.0'%.3f' %.5D4,4.0D4,4.5D4,5.0D4,6.0D4,7.0D4,8.0D4,9.0D4,1.0D5,1.25D5,1.5D5,1.75D5,2.0D5,2.5'%.3f' %.0'%.3f' %.5D5,4.0D5,4.5D5,5.0D5,6.0D5,7.0D5,8.0D5,9.0D5,1.0D6,1.25D6,1.5D6,1.75'%.3f' %.0D6,2.5'%.3f' %.0'%.3f' %.5D6,4.0D6,4.5D6,5.0D6,6.0D6,7.0D6,8.0D6,9.0D6,1.0D7,1.25D7,1.5D7,1.75D7,2.0D7,2.5'%.3f' %.0'%.3f' %.5D7,4.0D7,4.5D7,5.0D7,6.0D7,7.0D7,8.0D7,9.0D7,1.0D8,1.25D8,1.5D8,1.75D8,2.0D8,2.5'%.3f' %.0'%.3f' %.5D8,4.0D8,4.5D8,5.0D8,6.0D8,7.0D8,8.0D8,9.0D8,1.0D9]
      # ELASTIC MOMENTUM TRANSFER
      YELM=[400.,390.,280.,190.,38.0,19.5,15.0,13.0,12.5,13.0,14.0,15.5,17.0,21.0,26.0,31.0,38.0,38.0,37.0,33.0,29.0,24.0,18.0,11.0,6.09,4.50,3.50,2.81,2.32,1.67,1.26,.998,.810,.672,.568,.423,.328,.263,.216,.180,.123,.0899,.0687,.0544,.0367,.0265,.0202,.0159,.0128,.0106,.00765,.00579,.00455,.00367,.00304,.00203,.00146,.00110,8.63e-4,5.77e-4,4.14e-4,3.14e-4,2.47e-4,2.00e-4,1.66e-4,1.20e-4,9.10e-5,7.19e-5,5.85e-5,4.87e-5,3.32e-5,2.43e-5,1.88e-5,1.50e-5,1.04e-5,7.76e-6,6.07e-6,4.92e-6,4.09e-6,3.47e-6,2.62e-6,2.07e-6,1.69e-6,1.41e-6,1.20e-6,8.60e-7,6.48e-7,5.10e-7,4.13e-7,2.89e-7,2.15e-7,1.67e-7,1.33e-7,1.09e-7,9.15e-8,6.69e-8,5.13e-8,4.06e-8,3.30e-8,2.74e-8,1.84e-8,1.32e-8,9.99e-9,7.83e-9,5.19e-9,3.71e-9,2.78e-9,2.17e-9,1.74e-9,1.42e-9,1.01e-9,7.49e-10,5.79e-10,4.61e-10,3.75e-10,2.42e-10,1.69e-10,1.25e-10,9.57e-11,6.14e-11,4.27e-11,3.14e-11,2.40e-11,1.90e-11,1.54e-11,1.07e-11,7.86e-12,6.02e-12,4.76e-12,3.85e-12]
      # ELASTIC 
      YELT=[400.,390.,280.,190.,38.0,19.5,15.0,14.5,15.0,15.7,17.0,19.0,21.4,26.5,34.5,41.3,51.3,54.0,56.0,52.2,46.2,39.7,33.0,22.3,16.2,13.2,11.8,10.2,8.76,7.44,6.49,5.78,5.21,4.75,4.37,3.77,3.32,2.97,2.68,2.45,2.01,1.71,1.48,1.31,1.06,.897,.775,.682,.610,.551,.463,.399,.351,.314,.284,.229,.193,.167,.147,.119,.101,.0877,.0779,.0702,.0640,.0548,.0482,.0442,.0394,.0363,.0308,.0271,.0245,.0226,.0199,.0181,.0169,.0159,.0152,.0147,.0139,.0133,.0129,.0126,.0123,.0119,.0117,.0115,.0114,.0113,.0112,.0111,.0111,.0110,.0110,.0110,.0110,.0110,.0110,.0110,.0109,29*0.0109]
      #  1.0-EPS
      YEPS=[7*1.0,.84557,.75309,.74543,.73896,.72785,.69736,.69462,.64030,.63613,.62258,.57254,.51632,.48021,.47463,.44619,.37693,.31990,.20687,.17740,.14298,.12770,.12028,.09386,.076184,.063994,.055018,.048145,.042751,.034829,.029328,.025289,.022205,.019780,.015515,.012745,.01001,.009377,.007412,.006122,.005213,.004539,.004020,.003604,.002989,.002552,.002225,.001973,.001771,.001410,.001170,9.991e-4,8.715e-4,6.926e-4,5.734e-4,4.886e-4,4.250e-4,3.755e-4,3.361e-4,2.768e-4,2.346e-4,1.978e-4,1.785e-4,1.590e-4,1.239e-4,1.007e-4,8.425e-5,7.202e-5,5.511e-5,4.405e-5,3.628e-5,3.058e-5,2.622e-5,2.280e-5,1.781e-5,1.437e-5,1.188e-5,1.002e-5,8.574e-6,6.164e-6,4.635e-6,3.621e-6,2.910e-6,2.003e-6,1.466e-6,1.120e-6,8.840e-7,7.159e-7,5.917e-7,4.239e-7,3.186e-7,2.484e-7,1.991e-7,1.631e-7,1.066e-7,7.51e-8,5.58e-8,4.30e-8,2.78e-8,1.94e-8,1.43e-8,1.10e-8,8.70e-9,7.10e-9,4.89e-9,3.58e-9,2.73e-9,2.15e-9,1.73e-9,1.09e-9,7.48e-10,5.43e-10,4.11e-10,2.58e-10,1.76e-10,1.28e-10,9.7D-11,7.5D-11,6.0D-11,4.1D-11,3.0D-11,2.3D-11,1.8D-11,1.4D-11]
      # TORSION SCALED BY 1/E ABOVE 10 EV
      XTORS=[.0334,.034,.035,.036,.038,.040,.045,.050,.055,.060,.070,.080,.100,.120,.140,.170,.200,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0=[                                ]
      YTORS=[0.00,.068,.072,.090,.114,.132,.150,.156,.162,.162,.156,.150,.138,.126,.114,.102,.0932,.0798,.0702,.0576, .0486,.0378,.0288,.0210,.0162,.0120,.0090,.0078,.0066,.00576,.00516,.0042=[                                      ]
      # VIB1 SCALED BY 1/E ABOVE 40 EV 
      XVIB1=[.103,0.12,0.13,0.15,0.20,0.23,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0=[ ]
      YVIB1=[0.00,0.51,0.90,1.20,1.30,1.26,1.18,1.06,0.90,0.79,0.66,0.51,0.43,0.57,0.92,1.21,1.56,2.03,2.03,1.67,0.99,0.66,0.35,0.22,0.16=[     ]
      # YVIB2 SCALED BY 1/E ABOVE 40 EV
      XVIB2=[.179,.185,0.19,0.20,0.23,0.25,0.30,0.40,0.50,0.70,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0]
      YVIB2=[0.00,0.23,0.48,0.68,0.88,0.95,1.01,0.95,0.88,0.76,0.61,0.53,0.53,0.79,1.03,1.33,1.75,1.75,1.48,0.88,0.57,0.31,.193,.145]
      # YVIB3 SCALED BY 1/E ABOVE 40 EV
      XVIB3=[.366,.373,0.38,0.39,0.40,0.42,0.45,0.50,0.55,0.60,0.70,0.80,0.90,1.00,1.20,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0]
      YVIB3=[0.00,.224,.339,.415,.472,.553,0.63,0.70,0.73,0.74,0.74,0.71,0.65,0.66,0.65,0.65,0.73,1.04,1.39,1.70,1.87,1.87,1.46,0.80,0.53,0.29,0.19,0.14]
      # YVHAR SCALED BY 1/E ABOVE 40 EV
      XVHAR=[.480,1.00,1.50,2.00,3.00,4.00,5.00,6.00,7.00,8.00,10.0,15.0,20.0,30.0,40.0]
      YVHAR=[0.00,.001,.033,.085,0.16,0.20,0.27,0.30,0.30,0.23,.125,.085,.047,.032,.024]
      # NB.  RYDBERG 3S AND 3P AND HIGHER STATES
      #   DIPOLE PART =[IVEN BY BRION CAN.J.CHEM. 72(1994)529]
      #   DIPOLE PART =[IVE ANALYTICALLY BEF SCALING IN de]
      #
      #   TRIPLET NON DIPOLE STATES 
      XTRP1=[4.60,5.50,7.00,8.00,9.00,10.0,12.0,14.0,17.0,20.0,24.0,27.0]         
      YTRP1=[0.00,.015,.050,.075,.084,.090,.098,.100,.090,.075,.055,.043]          
      #                             
      XTRP2=[5.70,7.20,8.20,9.20,10.2,12.2,14.2,17.2,20.2,24.2,27.2]                                                          
      YTRP2=[0.00,.088,.161,.185,.198,.216,.220,.198,.165,.121,     .095]                                              
      #
      XTRP3=[7.00,8.00,9.00,10.0,12.0,14.0,17.0,20.0,24.0,27.0,32.0]
      YTRP3=[0.00,.245,.504,.588,.665,.700,.700,.665,.525,.406,.301]                                             
      #  
      XION=[8.40,9.00,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,     18.0,19.0,20.0,22.5,25.0,27.5,30.0,35.0,40.0,45.0,    50.0,60.0,70.0,80.0,90.0,100.,110.,120.,140.,160.,180.,200.,300.,400.,500.,600.,700.,800.,900.,1000.,   2000.,3000.]
      # GROSS IONISATION                                                      
      YION=[0.00,.097,.267,.435,.595,.760,1.08,1.53,2.00,2.52,    3.06,3.58,4.07,5.18,6.15,7.00,7.75,8.93,9.79,10.4,10.8,11.3,11.5,11.5,11.4,11.2,11.0,10.7,10.2,9.76,9.30,8.86,7.16,6.00,5.18,4.57,4.09,3.71,3.40,3.13,1.81,1.30] 
      # COUNTING IONISATION
      YINC=[42*0.0]                           
      XATT=[10*0.0]    
      YATT=[10*0.0] 
      # K-SHELL IONISATION X-SECTION CARBON  
      XKSHC=[285.,298.,307.,316.,325.,335.,345.,365.,398.,422.,447.,473.,501.,531.,613.,668.,708.,750.,817.,917.,1000.,1122.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3981.,5012.,7079.,1.0D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.0D6,1.26D6,1.5D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.0D7,1.26D7,1.5D7,2.05'%.3f' %.07D7,4.10D7,5.01D7,6.13D7,7.08D7,8.18D7,1.0D8,1.26D8,1.5D8,2.05'%.3f' %.07D8,4.10D8,5.01D8,6.13D8,7.08D8,8.18D8,1.0D9]
      YKSHC=[0.00,1.66e-4,3.48e-4,5.25e-4,6.96e-4,8.63e-4,1.02e-3,1.33e-3,1.75e-3,2.01e-3,2.24e-3,2.46e-3,2.66e-3,2.84e-3,3.21e-3,3.38e-3,3.47e-3,3.55e-3,3.65e-3,3.72e-3,3.75e-3,3.74e-3,3.68e-3,3.57e-3,3.45e-3,3.31e-3,3.19e-3,3.07e-3,2.91e-3,2.66e-3,2.25e-3,1.95e-3,1.55e-3,1.21e-3,8.97e-4,7.07e-4,6.07e-4,5.21e-4,4.21e-4,3.63e-4,3.14e-4,2.84e-4,2.57e-4,2.25e-4,1.74e-4,1.50e-4,1.28e-4,1.15e-4,1.09e-4,1.05e-4,1.03e-4,1.02e-4,1.01e-4,1.005e-4,1.01e-4,1.03e-4,1.07e-4,1.11e-4,1.14e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.29e-4,1.32e-4,1.38e-4,1.45e-4,1.50e-4,1.54e-4,1.58e-4,1.60e-4,1.63e-4,1.67e-4,1.71e-4,1.74e-4,1.80e-4,1.87e-4,1.92e-4,1.96e-4,2.00e-4,2.02e-4,2.05e-4,2.09e-4]
      # NITROGEN K-SHELL IONISATION (MULTIPLY BY 2 FOR MOLECULE)
      XKSHN=[401.6,407.,419.,431.,444.,457.,471.,485.,499.,515.,530.,546.,562.,596.,631.,668.,708.,750.,794.,841.,891.,944.,1000.,1090.,1188.,1296.,1496.,1679.,1884.,2054.,2238.,2512.,2985.,3758.,4467.,5158.,5957.,7079.,1.0D4,1.26D4,1.50D4,2.05D4,2.51'%.3f' %.07D4,4.10D4,5.01D4,6.13D4,7.08D4,8.18D4,1.0D5,1.54D5,2.05D5,2.99D5,4.10D5,5.01D5,6.13D5,7.08D5,8.18D5,1.00D6,1.25D6,1.50D6,2.05'%.3f' %.07D6,4.10D6,5.01D6,6.13D6,7.08D6,8.18D6,1.00D7,1.22D7,1.50D7,1.88D7,2.24D7,2.82'%.3f' %.76D7,4.87D7,6.31D7,8.66D7,1.00D8,1.22D8,1.50D8,1.88D8,2.24D8,2.82'%.3f' %.76D8,4.87D8,6.31D8,8.66D8,1.00D9]
      YKSHN=[0.00,4.11e-5,1.38e-4,2.32e-4,3.23e-4,4.12e-4,4.98e-4,5.81e-4,6.61e-4,7.38e-4,8.13e-4,8.85e-4,9.54e-4,1.08e-3,1.20e-3,1.31e-3,1.41e-3,1.50e-3,1.58e-3,1.65e-3,1.72e-3,1.77e-3,1.82e-3,1.87e-3,1.91e-3,1.94e-3,1.95e-3,1.93e-3,1.89e-3,1.86e-3,1.81e-3,1.74e-3,1.63e-3,1.45e-3,1.32e-3,1.22e-3,1.12e-3,1.00e-3,7.95e-4,6.77e-4,5.98e-4,4.74e-4,4.09e-4,3.52e-4,2.85e-4,2.47e-4,2.14e-4,1.94e-4,1.76e-4,1.54e-4,1.19e-4,1.03e-4,8.77e-5,7.92e-5,7.54e-5,7.27e-5,7.14e-5,7.04e-5,6.97e-5,6.96e-5,7.00e-5,7.16e-5,7.47e-5,7.74e-5,7.95e-5,8.17e-5,8.34e-5,8.51e-5,8.75e-5,9.00e-5,9.25e-5,9.54e-5,9.76e-5,1.01e-4,1.04e-4,1.08e-4,1.11e-4,1.15e-4,1.17e-4,1.20e-4,1.22e-4,1.25e-4,1.27e-4,1.31e-4,1.34e-4,1.38e-4,1.41e-4,1.45e-4,1.47e-4]
      # BREMSTRAHLUNG X-SECTION WITH CUT OFF
      Z1T=[11.3,6.18,2.80,1.54,.858,.407,.251,.176,.145,.150,.167,.178,.187,.193,.198,.205,.210,.218,.222,.228,.231,.233,.234,.235,.235]
      Z6T=[298.,178.,85.2,47.5,26.3,12.2,7.06,4.45,3.06,2.82,2.89,2.99,3.08,3.13,3.18,3.25,3.31,3.39,3.44,3.49,3.52,3.54,3.55,3.57,3.57]
      Z7T=[385.,234.,113.,63.5,35.5,16.4,9.48,5.96,4.07,3.73,3.81,3.93,4.04,4.11,4.18,4.26,4.33,4.42,4.48,4.55,4.59,4.61,4.63,4.64,4.65]
      EBRM=[1000.,2000.,5000.,1.D4,2.D4,5.D4,1.D5,2.D5,5.D5,1.D6,2.'%.3f' %.D6,4.D6,5.D6,6.D6,8.D6,1.D7,1.5D7,2.'%.3f' %.D7,4.D7,5.D7,6.D7,8.D7,1.D8]
      #
      # ********************************************************************
      if(NANISO == 2):
      NAME=' N(CH3)3 2015 ANISOTROPIC'         
      if(NANISO == 0):
      NAME=' N(CH3)3 2015  ISOTROPIC '                
      # ********************************************************************  
      #    X-SECTIONS FROM SCALING AND SYSTEMATICS                  
      #    TMA USED AS DOPANT AND FOR LIGHT EMISSION 
      #    LIGHT FROM TRANSITIONS IN S AND P RYDBERG STATES ( 4.6 EV LEVEL )
      #    TOTAL ELECTRON SCATTERING FROM GDANSK.
      # --------------------------------------------------------------------
      # BEF CONSTANT
      EMASS2=1021997.804
      API=numpy.arccos(-1.00)      
      A0=0.52917720859e-8
      RY=13.60569193
      BBCONST=16.0*API*A0*A0*RY*RY/EMASS2
      #
      #   BORN BETHE VALUES FOR IONISATION
      CONST=1.873884e-20
      AM2=15.2
      C=142.1
      AUGKC=2.00
      AUGKN=1.99
      #  
      NION=3
      NATT=1
      NIN=37
      NNULL=0 
      IONMODEL=0
      #
      NDATA=130
      NIOND=42
      NKSHC=83
      NKSHN=89
      NATT1=10                                                         
      NTORS=32 
      NVIB1=25
      NVIB2=24
      NVIB3=28
      NTRP1=12
      NTRP2=11
      NTRP3=11
      NVHAR=15   
      #                                                  
      #  ARRAY SIZE
      NASIZE=20000
      #
      NBREM=25
      DO 1 J=1,NIN
      IZBR[J]=0
      1 CONTINUE
      IZBR[38]=1
      IZBR[39]=6
      IZBR[40]=7
      #
      # SET ANISOTROPIC SCATTERING OKHRIMOVSKKY
      DO 2 J=1,6
      2 KEL[J]=NANISO
      DO 3 J=1,NIN
      3 KIN[J]=NANISO
      #
      E[1]=0.0                                                          
      E[2]=2.0*EMASS/(59.11026*AMU)                                     
      E[3]=8.40                                                        
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0
      #
      EION[1]=8.40
      EION[2]=285.0
      EION[3]=401.6
      #
      EOBY[1]=EION[1]*0.85
      EOBY[2]=210.0
      EOBY[3]=260.0 
      #  
      LEGAS[1]=0
      ISHELL[1]=0
      LEGAS[2]=1
      ISHELL[2]=1
      LEGAS[3]=2
      ISHELL[3]=1
      NC0[1]=0
      EC0[1]=0.0
      WKLM[1]=0.0
      EFL[1]=0.0
      NG1[1]=0
      EG1[1]=0.0
      NG2[1]=0
      EG2[1]=0.0
      # K SHELL INCLUDING FLUORESCENCE 
      NC0[2]=2
      EC0[2]=253.0
      WKLM[2]=0.0026
      EFL[2]=273.0
      NG1[2]=1
      EG1[2]=253.0
      NG2[2]=1
      EG2[2]=5.0
      NC0[3]=2
      EC0[3]=358.6
      WKLM[3]=0.0044
      EFL[3]=385. 
      NG1[3]=1
      EG1[3]=353.
      NG2[3]=1
      EG2[3]=6.0
      #
      DO 141 J=1,NION
      DO 4 I=1,NASIZE
      if(EG[I]:
      > EION[J]) :
      IOFFION[J]=I-1
      GO TO 141
      # endif
      4 CONTINUE
      141 CONTINUE
      #       
      EIN[1]=-0.025
      EIN[2]=0.025
      EIN[3]=-0.0334
      EIN[4]=0.0334
      EIN[5]=-0.103
      EIN[6]=0.103
      EIN[7]=0.179  
      EIN[8]=0.366                                                      
      EIN[9]=0.480
      # NON DIPOLE
      EIN[10]=4.6  
      # 3S RYDBERG DIPOLE
      EIN[11]=4.65
      EIN[12]=4.95
      EIN[13]=5.25
      EIN[14]=5.55
      # NON DIPOLE
      EIN[15]=5.7
      # 3P RYDBERG DIPOLE
      EIN[16]=5.85
      EIN[17]=6.15
      EIN[18]=6.45
      EIN[19]=6.75
      # NON DIPOLE
      EIN[20]=7.0
      # HIGHER RYDBERGS
      EIN[21]=7.05
      EIN[22]=7.35
      EIN[23]=7.65
      EIN[24]=7.95
      EIN[25]=8.25
      EIN[26]=8.55
      EIN[27]=8.85
      EIN[28]=9.15
      EIN[29]=9.45
      EIN[30]=9.75
      EIN[31]=10.05
      EIN[32]=10.35
      EIN[33]=10.65
      EIN[34]=10.95
      EIN[35]=11.25
      EIN[36]=11.55
      EIN[37]=11.85
      EIN[38]=0.0
      EIN[39]=0.0
      EIN[40]=0.0
      # OFFSET ENERGY FOR EXCITATIONS
      DO 42 NL=1,NIN
      DO 651 I=1,NASIZE
      if(EG[I]:
      > abs(EIN[NL])) :
      IOFFN[NL]=I-1
      GO TO 42
      # endif
      651 CONTINUE
      42 CONTINUE
      # *************************************************************
      # PENNING TRANSFER FRACTION FOR EACH LEVEL
      # SET TO 0 SINCE VERY LOW ENERGY EXCITATION LEVELS
      DO 5 K=1,NIN
      DO 5 L=1,3
      5 PENFRA[L,K]=0.0
      # **************************************************************
      SCRPT[1]='                                                   '
      SCRPT[2]=' ELASTIC  N-(CH3)3 TRIMETHYL AMINE                 '
      SCRPT[3]=' IONISATION                         ELOSS=   8.40  '
      SCRPT[4]=' IONISATION   CARBON K-SHELL        ELOSS= 285.0   '
      SCRPT[5]=' IONISATION NITROGEN K-SHELL        ELOSS= 401.6   '
      SCRPT[6]=' ATTACHMENT                                        '
      SCRPT[7]='                                                   '
      SCRPT[8]='                                                   '
      SCRPT[9]=' ROTATION                           ELOSS= -0.025  '
      SCRPT[10]=' ROTATION                           ELOSS=  0.025  '
      SCRPT[11]=' TORSION + ROTATION                 ELOSS= -0.0334 '
      SCRPT[12]=' TORSION + ROTATION                 ELOSS=  0.0334 '
      SCRPT[13]=' VIBRATION V1                       ELOSS= -0.103  '
      SCRPT[14]=' VIBRATION V1                       ELOSS=  0.103  '
      SCRPT[15]=' VIBRATION V2                       ELOSS=  0.179  '
      SCRPT[16]=' VIBRATION V3                       ELOSS=  0.366  '
      SCRPT[17]=' VIBRATION HARMONICS                ELOSS=  0.480  '
      SCRPT[18]=' EXC TRIPLET                        ELOSS=  4.6    '
      SCRPT[19]=' EXC DIPOLE   3S RYDBERG  F=.00047  ELOSS=  4.65   '
      SCRPT[20]=' EXC DIPOLE   3S RYDBERG  F=.00384  ELOSS=  4.95   '
      SCRPT[21]=' EXC DIPOLE   3S RYDBERG  F=.00828  ELOSS=  5.25   '
      SCRPT[22]=' EXC DIPOLE   3S RYDBERG  F=.00974  ELOSS=  5.55   '
      SCRPT[23]=' EXC TRIPLET                        ELOSS=  5.70   '
      SCRPT[24]=' EXC DIPOLE   3P RYDBERG  F=.02635  ELOSS=  5.85   '
      SCRPT[25]=' EXC DIPOLE   3P RYDBERG  F=.03621  ELOSS=  6.15   '
      SCRPT[26]=' EXC DIPOLE   3P RYDBERG  F=.02819  ELOSS=  6.45   '
      SCRPT[27]=' EXC DIPOLE   3P RYDBERG  F=.02325  ELOSS=  6.75   '
      SCRPT[28]=' EXC TRIPLET                        ELOSS=  7.00   '
      SCRPT[29]=' EXC DIPOLE HIGH RYDBERG  F=.02271  ELOSS=  7.05   '
      SCRPT[30]=' EXC DIPOLE HIGH RYDBERG  F=.02561  ELOSS=  7.35   '
      SCRPT[31]=' EXC DIPOLE HIGH RYDBERG  F=.02641  ELOSS=  7.65   '
      SCRPT[32]=' EXC DIPOLE HIGH RYDBERG  F=.02625  ELOSS=  7.95   '
      SCRPT[33]=' EXC DIPOLE HIGH RYDBERG  F=.02671  ELOSS=  8.25   '
      SCRPT[34]=' EXC DIPOLE HIGH RYDBERG  F=.04342  ELOSS=  8.55   '
      SCRPT[35]=' EXC DIPOLE HIGH RYDBERG  F=.06804  ELOSS=  8.85   '
      SCRPT[36]=' EXC DIPOLE HIGH RYDBERG  F=.07186  ELOSS=  9.15   '
      SCRPT[37]=' EXC DIPOLE HIGH RYDBERG  F=.07346  ELOSS=  9.45   '
      SCRPT[38]=' EXC DIPOLE HIGH RYDBERG  F=.08795  ELOSS=  9.75   '
      SCRPT[39]=' EXC DIPOLE HIGH RYDBERG  F=.11445  ELOSS= 10.05   '
      SCRPT[40]=' EXC DIPOLE HIGH RYDBERG  F=.12904  ELOSS= 10.35   '
      SCRPT[41]=' EXC DIPOLE HIGH RYDBERG  F=.13512  ELOSS= 10.65   '
      SCRPT[42]=' EXC DIPOLE HIGH RYDBERG  F=.14497  ELOSS= 10.95   '
      SCRPT[43]=' EXC DIPOLE HIGH RYDBERG  F=.15169  ELOSS= 11.25   '
      SCRPT[44]=' EXC DIPOLE HIGH RYDBERG  F=.15328  ELOSS= 11.55   '
      SCRPT[45]=' EXC DIPOLE HIGH RYDBERG  F=.15788  ELOSS= 11.85   '
      SCRPT[46]=' BREMSSTRAHLUNG FROM HYDROGEN ATOMS                '
      SCRPT[47]=' BREMSSTRAHLUNG FROM CARBON ATOMS                  '
      SCRPT[48]=' BREMSSTRAHLUNG FROM NITROGEN ATOM                 '
      #
      APOP1=math.exp(EIN[1]/AKT)
      APOP2=math.exp(EIN[3]/AKT)
      APOP3=math.exp(EIN[5]/AKT)
      #                                            
      #      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      #      EN=EN+ESTEP 
      EN=EG[I]
      GAMMA1=(EMASS2+2.00*EN)/EMASS2
      GAMMA2=GAMMA1*GAMMA1
      BETA=math.sqrt(1.00-1.00/GAMMA2)
      BETA2=BETA*BETA
      #
      Q[2][I]=0.0
      # USE LOG INTERPOLATION BECAUSE OF RAPID CHANGE IN X-SEC
      if(EN <= XEN[2]) :
         Q[2][I]=YELM[2]*1.e-16
         GO TO 30
      # endif
      DO 10 J=2,N                                                  
      if(EN <= XEN[J]:
      ) GO TO 20                                         
      10 CONTINUE                                                          
      J=NDATA
      20 YXJ=math.log(YELM[J])
      YXJ1=math.log(YELM[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QMOM=math.exp(A*math.log(EN)+B)*1.*10**-16 
      YXJ=math.log(YELT[J])
      YXJ1=math.log(YELT[J-1])
      XNJ=math.log(XEN[J])
      XNJ1=math.log(XEN[J-1])
      A=(YXJ-YXJ1)/(XNJ-XNJ1)
      B=(XNJ1*YXJ-XNJ*YXJ1)/(XNJ1-XNJ)
      QELA=math.exp(A*math.log(EN)+B)*1.*10**-16 
      A=(YEPS[J]-YEPS[J-1])/(XEN[J]-XEN[J-1])
      B=(XEN[J-1]*YEPS[J]-XEN[J]*YEPS[J-1])/(XEN[J-1]-XEN[J])
      PQ2=(A*EN+B)
      # EPS CORRECTED FOR 1-EPS
      PQ2=1.0-PQ2
      PQ1=0.5+(QELA-QMOM)/QELA
      Q[2][I]=QELA
      if(NANISO == 0):
      Q[2][I]=QMOM
      30 if(NANISO == 0) PEQEL[2][I]=0.5
      if(NANISO == 1):
      PEQEL[2][I]=PQ1
      if(NANISO == 2):
      PEQEL[2][I]=PQ2
      #                                                                       
      Q[3][I]=0.0 
      #               
      QION[1][I]=0.0
      PEQION[1][I]=0.5
      if(NANISO == 2):
      PEQION[1][I]=0.0                               
      if(EN < EION[1]:
      ) GO TO 35    
      if(EN > XION(NIOND):
      ) GO TO 33                                   
      DO 31 J=2,NIOND                                                   
      if(EN <= XION[J]:
      ) GO TO 32                                        
      31 CONTINUE                                                          
      J=NIOND                                                           
      32 A=(YION[J]-YION[J-1])/(XION[J]-XION[J-1])                         
      B=(XION[J-1]*YION[J]-XION[J]*YION[J-1])/(XION[J-1]-XION[J])       
      QION[1][I]=(A*EN+B)*1.e-16                                        
      GO TO 34
      # USE BORN BETHE X-SECTION ABOVE XION(NIOND) EV
      33 X2=1.00/BETA2
      X1=X2*math.log(BETA2/(1.00-BETA2))-1.00
      QION[1][I]=CONST*(AM2*(X1-DEN[1]/2.0)+C*X2)
      34 if(EN <= (2.0*EION[1])) GO TO 35
      PEQION[1][I]=PEQEL[2][(I-IOFFION[1]])
      # CARBON K SHELL IONISATION
      35 QION[2][I]=0.0
      PEQION[2][I]=0.5
      if(NANISO == 2):
      PEQION[2][I]=0.0
      if(EN <= EION[2]:
      ) GO TO 38
      DO 36 J=2,NKSHC
      if(EN <= XKSHC[J]:
      ) GO TO 37
      36 CONTINUE
      J=NKSHC
      37 A=(YKSHC[J]-YKSHC[J-1])/(XKSHC[J]-XKSHC[J-1])
      B=(XKSHC[J-1]*YKSHC[J]-XKSHC[J]*YKSHC[J-1])/(XKSHC[J-1]-XKSHC[J])
      # 3 CARBONS PER MOLECULE
      QION[2][I]=3.0*(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[2]:
      )) GO TO 38
      PEQION[2][I]=PEQEL[2][(I-IOFFION[2]])
      # NITROGEN K-SHELL IONISATION
      38 QION[3][I]=0.0
      PEQION[3][I]=0.5
      if(NANISO == 2):
      PEQION[3][I]=0.0
      if(EN <= EION[3]:
      ) GO TO 41
      DO 39 J=2,NKSHN
      if(EN <= XKSHN[J]:
      ) GO TO 40
      39 CONTINUE
      J=NKSHN
      40 A=(YKSHN[J]-YKSHN[J-1])/(XKSHN[J]-XKSHN[J-1])
      B=(XKSHN[J-1]*YKSHN[J]-XKSHN[J]*YKSHN[J-1])/(XKSHN[J-1]-XKSHN[J])
      QION[3][I]=(A*EN+B)*1.e-16
      if(EN <= (2.0*EION[3]:
      )) GO TO 41
      PEQION[3][I]=PEQEL[2][(I-IOFFION[3]])
      # CORRECT THE IONISATION FOR SPLIT INTO KSHELLS
      QION[1][I]=QION[1][I]-AUGKC*QION[2][I]-AUGKN*QION[3][I]
      # ATTACHMENT
      41 Q[4][I]=0.0  
      #                                                     
      Q[5][I]=0.0                                                     
      Q[6][I]=0.0                                                        
      #                                                                      
      #  SUPERELASTIC  ROT1
      #
      QIN[1][I]=0.0
      PEQIN[1][I]=0.0
      if(EN <= 0.0):
      GO TO 100
      EFAC=math.sqrt(1.0-(EIN[1]/EN))
      QIN[1][I]=0.27*math.log((EFAC+1.0)/(EFAC-1.0))/EN
      QIN[1][I]=QIN[1][I]*APOP1/(1.0+APOP1)*1.e-16          
      if(EN <= abs(20.0*EIN[1]:
      )) GO TO 100
      PEQIN[1][I]=PEQEL[2][(I-IOFFN[1]))]   
      #  ROT1     
      100 QIN[2][I]=0.0 
      PEQIN[2][I]=0.0                                                  
      if(EN <= EIN[2]:
      ) GO TO 150 
      EFAC=math.sqrt(1.0-(EIN[2]/EN))                                       
      QIN[2][I]=0.27*math.log((1.0+EFAC)/(1.0-EFAC))/EN 
      QIN[2][I]=QIN[2][I]/(1.0+APOP1)*1.e-16       
      if(EN <= (20.0*EIN[2]:
      )) GO TO 150
      PEQIN[2][I]=PEQEL[2][(I-IOFFN[2]))]                        
      # 
      #  SUPERELASTIC TORSION
      #
      150 QIN[3][I]=0.0 
      PEQIN[3][I]=0.0                                                  
      if(EN <= 0.0):
      GO TO 200  
      if((EN+EIN[4]:
      ) > XTORS(NTORS)) GO TO 175                         
      DO 160 J=2,NTORS
      if((EN+EIN[4]:
      ) <= XTORS[J]) GO TO 170  
      160 CONTINUE
      J=NTORS
      170 A=(YTORS[J]-YTORS[J-1])/(XTORS[J]-XTORS[J-1])
      B=(XTORS[J-1]*YTORS[J]-XTORS[J]*YTORS[J-1])/(XTORS[J-1]-XTORS[J])
      QIN[3][I]=(EN+EIN[4])*(A*(EN+EIN[4])+B)/EN                
      QIN[3][I]=QIN[3][I]*APOP2/(1.0+APOP2)*1.e-16       
      GO TO 176
      # SCALED BY 1/E ABOVE XTORS(NTORS) EV
      175 QIN[3][I]=YTORS(NTORS)*XTORS(NTORS)/EN 
      QIN[3][I]=QIN[3][I]*APOP2/(1.0+APOP2)*1.e-16          
      176 if(EN <= abs(10.0*EIN[3])) GO TO 200
      PEQIN[3][I]=PEQEL[2][(I-IOFFN[3]))]           
      # INELASTIC TORSION                                                          
      200 QIN[4][I]=0.0 
      PEQIN[4][I]=0.0                                                  
      if(EN <= EIN[4]:
      ) GO TO 250
      if(EN > XTORS(NTORS):
      ) GO TO 225                          
      DO 210 J=2,NTORS
      if(EN <= XTORS[J]:
      ) GO TO 220
      210 CONTINUE
      J=NTORS
      220 A=(YTORS[J]-YTORS[J-1])/(XTORS[J]-XTORS[J-1]) 
      B=(XTORS[J-1]*YTORS[J]-XTORS[J]*YTORS[J-1])/(XTORS[J-1]-XTORS[J])
      QIN[4][I]=(A*EN+B)       
      QIN[4][I]=QIN[4][I]/(1.0+APOP2)*1.e-16        
      GO TO 226
      # SCALED BY 1/E ABOVE XTORS(NTORS) EV
      225 QIN[4][I]=YTORS(NTORS)*XTORS(NTORS)/EN 
      QIN[4][I]=QIN[4][I]/(1.0+APOP2)*1.e-16 
      226 if(EN <= (10.0*EIN[4])) GO TO 250
      PEQIN[4][I]=PEQEL[2][(I-IOFFN[4]))]                         
      # SUPERELASTIC VIB1                                                   
      250 QIN[5][I]=0.0
      PEQIN[5][I]=0.0
      if(EN <= 0.0):
      GO TO 300    
      if((EN+EIN[6]:
      ) > XVIB1(NVIB1)) GO TO 275                     
      DO 260 J=2,NVIB1                                                  
      if((EN+EIN[6]:
      ) <= XVIB1[J]) GO TO 270                        
      260 CONTINUE                                                          
      J=NVIB1                                                           
      270 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN[5][I]=(EN+EIN[6])*(A*(EN+EIN[6])+B)/EN             
      QIN[5][I]=QIN[5][I]*APOP3/(1.0+APOP3)*1.e-16                 
      GO TO 276
      # SCALED BY 1/E ABOVE XVIB1(NVIB1) EV
      275 QIN[5][I]=YVIB1(NVIB1)*XVIB1(NVIB1)/EN
      QIN[5][I]=QIN[5][I]*APOP3/(1.0+APOP3)*1.e-16        
      276 if(EN <= abs(10.0*EIN[5])) GO TO 300
      PEQIN[5][I]=PEQEL[2][(I-IOFFN[5]))]      # INELASTIC VIB1                                                           
      300 QIN[6][I]=0.0 
      PEQIN[6][I]=0.0                                                  
      if(EN <= EIN[6]:
      ) GO TO 350 
      if(EN > XVIB1(NVIB1):
      ) GO TO 325 
      DO 310 J=2,NVIB1                                                  
      if(EN <= XVIB1[J]:
      ) GO TO 320                                      
      310 CONTINUE                                                          
      J=NVIB1                                                           
      320 A=(YVIB1[J]-YVIB1[J-1])/(XVIB1[J]-XVIB1[J-1])                     
      B=(XVIB1[J-1]*YVIB1[J]-XVIB1[J]*YVIB1[J-1])/(XVIB1[J-1]-XVIB1[J]) 
      QIN[6][I]=(A*EN+B)
      QIN[6][I]=QIN[6][I]/(1.0+APOP3)*1.e-16                             
      GO TO 326
      # SCALED BY 1/E ABOVE XVIB1(NVIB1) EV
      325 QIN[6][I]=YVIB1(NVIB1)*XVIB1(NVIB1)/EN               
      QIN[6][I]=QIN[6][I]/(1.0+APOP3)*1.e-16           
      326 if(EN <= (10.0*EIN[6])) GO TO 350
      PEQIN[6][I]=PEQEL[2][(I-IOFFN[6]))]       
      # INELASTIC VIB2                                                      
      350 QIN[7][I]=0.0 
      PEQIN[7][I]=0.0                                                  
      if(EN <= EIN[7]:
      ) GO TO 400   
      if(EN > XVIB2(NVIB2):
      ) GO TO 375     
      DO 360 J=2,NVIB2                                                 
      if(EN <= XVIB2[J]:
      ) GO TO 370                                     
      360 CONTINUE                                                          
      J=NVIB2                                                           
      370 A=(YVIB2[J]-YVIB2[J-1])/(XVIB2[J]-XVIB2[J-1])                    
      B=(XVIB2[J-1]*YVIB2[J]-XVIB2[J]*YVIB2[J-1])/(XVIB2[J-1]-XVIB2[J])
      QIN[7][I]=(A*EN+B)*1.e-16                                        
      GO TO 376
      # SCALED BY 1/E ABOVE XVIB2(NVIB2) EV
      375 QIN[7][I]=YVIB2(NVIB2)*XVIB2(NVIB2)/EN*1.e-16            
      376 if(EN <= (5.0*EIN[7])) GO TO 400
      PEQIN[7][I]=PEQEL[2][(I-IOFFN[7]))]             
      # INELASTIC VIB3                                                               
      400 QIN[8][I]=0.0  
      PEQIN[8][I]=0.0                                                    
      if(EN <= EIN[8]:
      ) GO TO 450 
      if(EN > XVIB3(NVIB3):
      ) GO TO 425                                  
      DO 410 J=2,NVIB3                                                  
      if(EN <= XVIB3[J]:
      ) GO TO 420                                      
      410 CONTINUE                                                          
      J=NVIB3                                                           
      420 A=(YVIB3[J]-YVIB3[J-1])/(XVIB3[J]-XVIB3[J-1])                     
      B=(XVIB3[J-1]*YVIB3[J]-XVIB3[J]*YVIB3[J-1])/(XVIB3[J-1]-XVIB3[J]) 
      QIN[8][I]=(A*EN+B)*1.e-16                                          
      GO TO 426
      # SCALED BY 1/E ABOVE XVIB3(NVIB3) EV
      425 QIN[8][I]=YVIB3(NVIB3)*XVIB3(NVIB3)/EN*1.e-16        
      426 if(EN <= (5.0*EIN[8])) GO TO 450
      PEQIN[8][I]=PEQEL[2][(I-IOFFN[8]))]      # INELASTIC VIBRATION HARMONICS
      450 QIN[9][I]=0.0
      PEQIN[9][I]=0.0
      if(EN <= EIN[9]:
      ) GO TO 500
      if(EN > XVHAR(NVHAR):
      ) GO TO 475  
      DO 460 J=2,NVHAR                                                  
      if(EN <= XVHAR[J]:
      ) GO TO 470                                      
      460 CONTINUE                                                          
      J=NVHAR                                                           
      470 A=(YVHAR[J]-YVHAR[J-1])/(XVHAR[J]-XVHAR[J-1])                     
      B=(XVHAR[J-1]*YVHAR[J]-XVHAR[J]*YVHAR[J-1])/(XVHAR[J-1]-XVHAR[J]) 
      QIN[9][I]=(A*EN+B)*1.e-16        
      GO TO 476
      # SCALED BY 1/E ABOVE XVHAR(NVHAR) EV
      475 QIN[9][I]=YVHAR(NVHAR)*XVHAR(NVHAR)/EN*1.e-16
      476 if(EN <= (5.0*EIN[9])) GO TO 500
      PEQIN[9][I]=PEQEL[2][(I-IOFFN[9]))]                    
      # EXCITATION  NON DIPOLE                     
      500 QIN[10][I]=0.0
      PEQIN[10][I]=0.0
      if(EN <= EIN[10]:
      ) GO TO 550
      if(EN > XTRP1(NTRP1):
      ) GO TO 525  
      DO 510 J=2,NTRP1                                                  
      if(EN <= XTRP1[J]:
      ) GO TO 520                                      
      510 CONTINUE                                                          
      J=NTRP1                                                          
      520 A=(YTRP1[J]-YTRP1[J-1])/(XTRP1[J]-XTRP1[J-1])                     
      B=(XTRP1[J-1]*YTRP1[J]-XTRP1[J]*YTRP1[J-1])/(XTRP1[J-1]-XTRP1[J]) 
      QIN[10][I]=(A*EN+B)*1.e-16    
      GO TO 526
      # SCALED BY 1/E**2 ABOVE XTRP1(NTRP1) EV
      525 QIN[10][I]=YTRP1(NTRP1)*(XTRP1(NTRP1)/EN)**2*1.e-16
      526 if(EN <= (5.0*EIN[10])) GO TO 550
      PEQIN[10][I]=PEQEL[2][(I-IOFFN[10])] 
      # PART OF 3S RYDBERG CONTINUUM
      550 QIN[11][I]=0.0
      PEQIN[11][I]=0.0
      if(EN <= EIN[11]:
      ) GO TO 551
      QIN[11][I]=.0004779/(EIN[11]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[11]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[11]+E[3])*1.0323
      if(QIN[11][I]:
      < 0.0) QIN[11][I]=0.0
      if(EN <= (5.0*EIN[11]:
      )) GO TO 551
      PEQIN[11][I]=PEQEL[2][(I-IOFFN[11])]
      # PART OF 3S RYDBERG CONTINUUM
      551 QIN[12][I]=0.0
      PEQIN[12][I]=0.0
      if(EN <= EIN[12]:
      ) GO TO 552
      QIN[12][I]=.0039141/(EIN[12]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[12]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[12]+E[3])*1.0303
      if(QIN[12][I]:
      < 0.0) QIN[12][I]=0.0
      if(EN <= (5.0*EIN[12]:
      )) GO TO 552
      PEQIN[12][I]=PEQEL[2][(I-IOFFN[12])]
      # PART OF 3S RYDBERG CONTINUUM
      552 QIN[13][I]=0.0
      PEQIN[13][I]=0.0
      if(EN <= EIN[13]:
      ) GO TO 553
      QIN[13][I]=.0084476/(EIN[13]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[13]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[13]+E[3])*1.0286
      if(QIN[13][I]:
      < 0.0) QIN[13][I]=0.0
      if(EN <= (5.0*EIN[13]:
      )) GO TO 553
      PEQIN[13][I]=PEQEL[2][(I-IOFFN[13])]
      # PART OF 3S RYDBERG CONTINUUM
      553 QIN[14][I]=0.0
      PEQIN[14][I]=0.0
      if(EN <= EIN[14]:
      ) GO TO 554
      QIN[14][I]=.0102610/(EIN[14]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[14]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[14]+E[3])*1.0270
      if(QIN[14][I]:
      < 0.0) QIN[14][I]=0.0
      if(EN <= (5.0*EIN[14]:
      )) GO TO 554
      PEQIN[14][I]=PEQEL[2][(I-IOFFN[14])]
      # EXCITATION  NON DIPOLE                     
      554 QIN[15][I]=0.0
      PEQIN[15][I]=0.0
      if(EN <= EIN[15]:
      ) GO TO 559
      if(EN > XTRP2(NTRP2):
      ) GO TO 557  
      DO 555 J=2,NTRP2                                                  
      if(EN <= XTRP2[J]:
      ) GO TO 556                                      
      555 CONTINUE                                                          
      J=NTRP2                                                          
      556 A=(YTRP2[J]-YTRP2[J-1])/(XTRP2[J]-XTRP2[J-1])                     
      B=(XTRP2[J-1]*YTRP2[J]-XTRP2[J]*YTRP2[J-1])/(XTRP2[J-1]-XTRP2[J]) 
      QIN[15][I]=(A*EN+B)*1.e-16    
      GO TO 558
      # SCALED BY 1/E**2 ABOVE XTRP2(NTRP2) EV
      557 QIN[15][I]=YTRP2(NTRP2)*(XTRP2(NTRP2)/EN)**2*1.e-16
      558 if(EN <= (5.0*EIN[15])) GO TO 559
      PEQIN[15][I]=PEQEL[2][(I-IOFFN[15])] 
      # PART OF 3P RYDBERG CONTINUUM
      559 QIN[16][I]=0.0
      PEQIN[16][I]=0.0
      if(EN <= EIN[16]:
      ) GO TO 560 
      QIN[16][I]=0.028163/(EIN[16]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[16]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[16]+E[3])*1.0256
      if(QIN[16][I]:
      < 0.0) QIN[16][I]=0.0
      if(EN <= (4.0*EIN[16]:
      )) GO TO 560
      PEQIN[16][I]=PEQEL[2][(I-IOFFN[16])]                    
      # PART OF 3P RYDBERG CONTINUUM
      560 QIN[17][I]=0.0
      PEQIN[17][I]=0.0
      if(EN <= EIN[17]:
      ) GO TO 561 
      QIN[17][I]=0.038700/(EIN[17]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[17]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[17]+E[3])*1.0244
      if(QIN[17][I]:
      < 0.0) QIN[17][I]=0.0
      if(EN <= (4.0*EIN[17]:
      )) GO TO 561
      PEQIN[17][I]=PEQEL[2][(I-IOFFN[17])]                    
      # PART OF 3P RYDBERG CONTINUUM
      561 QIN[18][I]=0.0
      PEQIN[18][I]=0.0
      if(EN <= EIN[18]:
      ) GO TO 562 
      QIN[18][I]=0.030128/(EIN[18]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[18]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[18]+E[3])*1.0233
      if(QIN[18][I]:
      < 0.0) QIN[18][I]=0.0
      if(EN <= (4.0*EIN[18]:
      )) GO TO 562
      PEQIN[18][I]=PEQEL[2][(I-IOFFN[18])]                    
      # PART OF 3P RYDBERG CONTINUUM
      562 QIN[19][I]=0.0
      PEQIN[19][I]=0.0
      if(EN <= EIN[19]:
      ) GO TO 563 
      QIN[19][I]=0.024852/(EIN[19]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[19]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[19]+E[3])*1.0222
      if(QIN[19][I]:
      < 0.0) QIN[19][I]=0.0
      if(EN <= (4.0*EIN[19]:
      )) GO TO 563
      PEQIN[19][I]=PEQEL[2][(I-IOFFN[19])]                    
      # EXCITATION  NON DIPOLE                     
      563 QIN[20][I]=0.0
      PEQIN[20][I]=0.0
      if(EN <= EIN[20]:
      ) GO TO 568
      if(EN > XTRP3(NTRP3):
      ) GO TO 566  
      DO 564 J=2,NTRP3                                                  
      if(EN <= XTRP3[J]:
      ) GO TO 565                                      
      564 CONTINUE                                                          
      J=NTRP3                                                          
      565 A=(YTRP3[J]-YTRP3[J-1])/(XTRP3[J]-XTRP3[J-1])                     
      B=(XTRP3[J-1]*YTRP3[J]-XTRP3[J]*YTRP3[J-1])/(XTRP3[J-1]-XTRP3[J]) 
      QIN[20][I]=(A*EN+B)*1.e-16    
      GO TO 567
      # SCALED BY 1/E**2 ABOVE XTRP3(NTRP3) EV
      566 QIN[20][I]=YTRP3(NTRP3)*(XTRP3(NTRP3)/EN)**2*1.e-16
      567 if(EN <= (4.0*EIN[20])) GO TO 568
      PEQIN[20][I]=PEQEL[2][(I-IOFFN[20])] 
      # HIGH RYDBERG STATES             
      568 QIN[21][I]=0.0
      PEQIN[21][I]=0.0
      if(EN <= EIN[21]:
      ) GO TO 569 
      QIN[21][I]=0.023943/(EIN[21]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[21]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[21]+E[3])*1.0213
      if(QIN[21][I]:
      < 0.0) QIN[21][I]=0.0
      if(EN <= (4.0*EIN[21]:
      )) GO TO 569
      PEQIN[21][I]=PEQEL[2][(I-IOFFN[21])]                    
      # HIGH RYDBERG STATES             
      569 QIN[22][I]=0.0
      PEQIN[22][I]=0.0
      if(EN <= EIN[22]:
      ) GO TO 570 
      QIN[22][I]=0.026992/(EIN[22]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[22]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[22]+E[3])*1.0204
      if(QIN[22][I]:
      < 0.0) QIN[22][I]=0.0
      if(EN <= (4.0*EIN[22]:
      )) GO TO 570
      PEQIN[22][I]=PEQEL[2][(I-IOFFN[22])]                    
      # HIGH RYDBERG STATES             
      570 QIN[23][I]=0.0
      PEQIN[23][I]=0.0
      if(EN <= EIN[23]:
      ) GO TO 571 
      QIN[23][I]=0.027837/(EIN[23]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[23]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[23]+E[3])*1.0196
      if(QIN[23][I]:
      < 0.0) QIN[23][I]=0.0
      if(EN <= (4.0*EIN[23]:
      )) GO TO 571
      PEQIN[23][I]=PEQEL[2][(I-IOFFN[23])]                    
      # HIGH RYDBERG STATES             
      571 QIN[24][I]=0.0
      PEQIN[24][I]=0.0
      if(EN <= EIN[24]:
      ) GO TO 572 
      QIN[24][I]=0.027667/(EIN[24]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[24]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[24]+E[3])*1.0189
      if(QIN[24][I]:
      < 0.0) QIN[24][I]=0.0
      if(EN <= (4.0*EIN[24]:
      )) GO TO 572
      PEQIN[24][I]=PEQEL[2][(I-IOFFN[24])]                    
      # HIGH RYDBERG STATES             
      572 QIN[25][I]=0.0
      PEQIN[25][I]=0.0
      if(EN <= EIN[25]:
      ) GO TO 573 
      QIN[25][I]=0.028156/(EIN[25]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[25]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[25]+E[3])*1.0182
      if(QIN[25][I]:
      < 0.0) QIN[25][I]=0.0
      if(EN <= (3.0*EIN[25]:
      )) GO TO 573
      PEQIN[25][I]=PEQEL[2][(I-IOFFN[25])]                    
      # HIGH RYDBERG STATES             
      573 QIN[26][I]=0.0
      PEQIN[26][I]=0.0
      if(EN <= EIN[26]:
      ) GO TO 574 
      QIN[26][I]=0.045773/(EIN[26]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[26]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[26]+E[3])*1.0175
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[26][I]=QIN[26][I]*0.9324 
      if(QIN[26][I]:
      < 0.0) QIN[26][I]=0.0
      if(EN <= (3.0*EIN[26]:
      )) GO TO 574
      PEQIN[26][I]=PEQEL[2][(I-IOFFN[26])]                    
      # HIGH RYDBERG STATES             
      574 QIN[27][I]=0.0
      PEQIN[27][I]=0.0
      if(EN <= EIN[27]:
      ) GO TO 575 
      QIN[27][I]=0.071724/(EIN[27]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[27]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[27]+E[3])*1.0169
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[27][I]=QIN[27][I]*0.8514 
      if(QIN[27][I]:
      < 0.0) QIN[27][I]=0.0
      if(EN <= (3.0*EIN[27]:
      )) GO TO 575
      PEQIN[27][I]=PEQEL[2][(I-IOFFN[27])]                    
      # HIGH RYDBERG STATES             
      575 QIN[28][I]=0.0
      PEQIN[28][I]=0.0
      if(EN <= EIN[28]:
      ) GO TO 576 
      QIN[28][I]=0.075742/(EIN[28]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[28]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[28]+E[3])*1.0164
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[28][I]=QIN[28][I]*0.7703 
      if(QIN[28][I]:
      < 0.0) QIN[28][I]=0.0
      if(EN <= (3.0*EIN[28]:
      )) GO TO 576
      PEQIN[28][I]=PEQEL[2][(I-IOFFN[28])]                    
      # HIGH RYDBERG STATES             
      576 QIN[29][I]=0.0
      PEQIN[29][I]=0.0
      if(EN <= EIN[29]:
      ) GO TO 577 
      QIN[29][I]=0.077213/(EIN[29]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[29]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[29]+E[3])*1.0159
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[29][I]=QIN[29][I]*0.6892 
      if(QIN[29][I]:
      < 0.0) QIN[29][I]=0.0
      if(EN <= (3.0*EIN[29]:
      )) GO TO 577
      PEQIN[29][I]=PEQEL[2][(I-IOFFN[29])]                    
      # HIGH RYDBERG STATES             
      577 QIN[30][I]=0.0
      PEQIN[30][I]=0.0
      if(EN <= EIN[30]:
      ) GO TO 578 
      QIN[30][I]=0.092447/(EIN[30]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[30]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[30]+E[3])*1.0154
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[30][I]=QIN[30][I]*0.6081 
      if(QIN[30][I]:
      < 0.0) QIN[30][I]=0.0
      if(EN <= (3.0*EIN[30]:
      )) GO TO 578
      PEQIN[30][I]=PEQEL[2][(I-IOFFN[30])]                    
      # HIGH RYDBERG STATES             
      578 QIN[31][I]=0.0
      PEQIN[31][I]=0.0
      if(EN <= EIN[31]:
      ) GO TO 579 
      QIN[31][I]=0.12030/(EIN[31]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[31]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[31]+E[3])*1.0149
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[31][I]=QIN[31][I]*0.527  
      if(QIN[31][I]:
      < 0.0) QIN[31][I]=0.0
      if(EN <= (3.0*EIN[31]:
      )) GO TO 579
      PEQIN[31][I]=PEQEL[2][(I-IOFFN[31])]                    
      # HIGH RYDBERG STATES             
      579 QIN[32][I]=0.0
      PEQIN[32][I]=0.0
      if(EN <= EIN[32]:
      ) GO TO 580 
      QIN[32][I]=0.13563/(EIN[32]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[32]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[32]+E[3])*1.0145
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[32][I]=QIN[32][I]*0.4459 
      if(QIN[32][I]:
      < 0.0) QIN[32][I]=0.0
      if(EN <= (3.0*EIN[32]:
      )) GO TO 580
      PEQIN[32][I]=PEQEL[2][(I-IOFFN[32])]                    
      # HIGH RYDBERG STATES             
      580 QIN[33][I]=0.0
      PEQIN[33][I]=0.0
      if(EN <= EIN[33]:
      ) GO TO 581 
      QIN[33][I]=0.14202/(EIN[33]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[33]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[33]+E[3])*1.0141
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[33][I]=QIN[33][I]*0.3649 
      if(QIN[33][I]:
      < 0.0) QIN[33][I]=0.0
      if(EN <= (3.0*EIN[33]:
      )) GO TO 581
      PEQIN[33][I]=PEQEL[2][(I-IOFFN[33])]                    
      # HIGH RYDBERG STATES             
      581 QIN[34][I]=0.0
      PEQIN[34][I]=0.0
      if(EN <= EIN[34]:
      ) GO TO 582 
      QIN[34][I]=0.15238/(EIN[34]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[34]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[34]+E[3])*1.0137
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[34][I]=QIN[34][I]*0.2838 
      if(QIN[34][I]:
      < 0.0) QIN[34][I]=0.0
      if(EN <= (3.0*EIN[34]:
      )) GO TO 582
      PEQIN[34][I]=PEQEL[2][(I-IOFFN[34])]                    
      # HIGH RYDBERG STATES             
      582 QIN[35][I]=0.0
      PEQIN[35][I]=0.0
      if(EN <= EIN[35]:
      ) GO TO 583 
      QIN[35][I]=0.15903/(EIN[35]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[35]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[35]+E[3])*1.0133
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[35][I]=QIN[35][I]*0.2027 
      if(QIN[35][I]:
      < 0.0) QIN[35][I]=0.0
      if(EN <= (3.0*EIN[35]:
      )) GO TO 583
      PEQIN[35][I]=PEQEL[2][(I-IOFFN[35])]                    
      # HIGH RYDBERG STATES             
      583 QIN[36][I]=0.0
      PEQIN[36][I]=0.0
      if(EN <= EIN[36]:
      ) GO TO 584 
      QIN[36][I]=0.16048/(EIN[36]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[36]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[36]+E[3])*1.0130
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[36][I]=QIN[36][I]*0.1216 
      if(QIN[36][I]:
      < 0.0) QIN[36][I]=0.0
      if(EN <= (3.0*EIN[36]:
      )) GO TO 584
      PEQIN[36][I]=PEQEL[2][(I-IOFFN[36])]                    
      # HIGH RYDBERG STATES             
      584 QIN[37][I]=0.0
      PEQIN[37][I]=0.0
      if(EN <= EIN[37]:
      ) GO TO 585 
      QIN[37][I]=0.16530/(EIN[37]*BETA2)*(math.log(BETA2*GAMMA2*EMASS2/(4.0*EIN[37]))-BETA2-DEN[I]/2.0)*BBCONST*EN/(EN+EIN[37]+E[3])*1.0127
      # SCALE BY (1.0 - IONISATION QUANTUM EFFICIENCY)
      QIN[37][I]=QIN[37][I]*0.0405 
      if(QIN[37][I]:
      < 0.0) QIN[37][I]=0.0
      if(EN <= (3.0*EIN[37]:
      )) GO TO 585
      PEQIN[37][I]=PEQEL[2][(I-IOFFN[37])] 
      585 CONTINUE     
      # LOAD BREMSSTRAHLUNG X-SECTIONS
      QIN[38][I]=0.0
      QIN[39][I]=0.0
      QIN[40][I]=0.0
      if(EN <= 1000.):
      GO TO 720
      DO 700 J=2,NBREM
      if(EN <= EBRM[J]:
      ) GO TO 710
      700 CONTINUE
      J=NBREM
      710 A=(math.log(Z1T[J])-math.log(Z1T[J-1]))/(EBRM[J]-EBRM[J-1])
      B=(math.log(Z1T[J])*EBRM[J-1]-math.log(Z1T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A1=(math.log(Z6T[J])-math.log(Z6T[J-1]))/(EBRM[J]-EBRM[J-1])
      B1=(math.log(Z6T[J])*EBRM[J-1]-math.log(Z6T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      A2=(math.log(Z7T[J])-math.log(Z7T[J-1]))/(EBRM[J]-EBRM[J-1])
      B2=(math.log(Z7T[J])*EBRM[J-1]-math.log(Z7T[J-1])*EBRM[J])/(EBRM[J-1]-EBRM[J])
      QIN[38][I]=math.exp(A*EN+B)*9.0*1.e-24
      QIN[39][I]=math.exp(A1*EN+B1)*3.0*1.e-24
      QIN[40][I]=math.exp(A2*EN+B2)*1.e-24
      720 CONTINUE
      #---------------------------------------------------------------------
      #---------------------------------------------------------------------
      #    SUBTRACT ROTATIONAL XSEC TO GET CORRECT ELASTIC XSEC. 
      Q[2][I]=Q[2][I]-QIN[1][I]-QIN[2][I] 
      #       IF(Q[2][I] <= 0.0) WRITE(6,966) Q[2][I],I
      # 966 print(3X,' ERROR IN GAS 27 Q[2][I]=',E12.3,'  I=',I5)     
      #  
      RSUM=QIN[1][I]+QIN[2][I]
      VSUM=0.0
      DO 800 J=3,9
      800 VSUM=VSUM+QIN[J][I]
      TRPSUM=QIN[10][I]+QIN[15][I]+QIN[20][I]
      SNGSUM=0.0
      DO 801 J=10,37
      801 SNGSUM=SNGSUM+QIN[J][I]
      SNGSUM=SNGSUM-TRPSUM
      SUMION=QION[1][I]+QION[2][I]+QION[3][I] 
      SUMBREM=QIN[38][I]+QIN[39][I]+QIN[40][I]
      Q[1][I]=Q[2][I]+SUMION+Q[4][I]+SNGSUM+TRPSUM+VSUM+RSUM
      #     WRITE(6,911) EG[I],Q[1][I],Q[2][I],RSUM,VSUM,SUMION,SNGSUM,TRPSUM,
      #    /SUMBREM
      # 911 print(' EN =','%.4f' % ,' QTOT=','%.4f' % ,/,' QEL=','%.4f' % ,
      #    /' RSUM =','%.4f' % ,' VSUM=','%.4f' % ,/,' QION=','%.4f' % ,' SNGLT=','%.4f' % ,
      #    /' TRPLT=','%.4f' % ,/,' BREM =','%.4f' % ,/)
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      DO 1010 K=1,NIN
      if(EFINAL <= EIN[K]:
      ) :
      NIN=K-1
      GO TO 1011
      # endif
      1010 CONTINUE
      1011 CONTINUE
      if(NIN <= 9):
      NIN=9
      if(EFINAL > 1000.):
      NIN=40                                       
      #                                                                       
      return
      # end
def GAS45(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS46(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS47(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS48(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS49(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
# --------------------------------------------------------------------- 
#   DUMMY ROUTINE                       
# --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
    1 KEL[J]=0
      DO 2 J=1,NIN
    2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
  900 CONTINUE                                                          
#  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS50(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS51(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS52(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS53(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS54(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS55(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
# end   
def GAS56(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS57(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS58(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS59(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS60(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS61(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS62(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS63(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS64(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS65(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS66(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS67(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS68(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS69(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS70(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS71(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS72(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS73(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS74(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS75(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS76(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS77(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS78(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS79(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
def GAS80(Q,QIN,NIN,E,EIN,NAME,VIRIAL,EOBY ,PEQEL,PEQIN,PENFRA,KEL,KIN,QION,PEQION,EION,NION,QATT,NATT,   QNULL,NNULL,SCLN,NC0,EC0,WKLM,EFL,NG1,EG1,NG2,EG2,IZBR,LEGAS,ISHELL,IONMODEL,ESPLIT,SCRPT,SCRPTN)    
      IMPLICIT #real*8 (A-H,O-Z)
      IMPLICIT #integer*8 (I-N)                                         
      global ECHARG,EMASS,AMU,PIR2                                
      global NGAS,NSTEP,NANISO,EFINAL,ESTEP,AKT,ARY,TEMPC,TORR,IPEN
      global EG,EROOT,QT1,QT2,QT3,QT4 
      global DEN 
      DIMENSION QATT(8,20000),QNULL(10,20000),SCLN[10],ESPLIT(5,20)
      DIMENSION PEQEL[6][20000),PEQIN(]50,20000),KIN(250),KEL[6] 
      DIMENSION QION(30,20000),PEQION(30,20000),EION[30],EOBY[30]       
      DIMENSION NC0[30],EC0[30],WKLM[30],EFL[30],NG1[30],EG1[30],NG2[30],EG2[30],IZBR(250),LEGAS[30],ISHELL[30]
      DIMENSION Q(6,20000),QIN(250,20000),E[6],EIN(250),PENFRA[3,250]   
      CHARACTER*50 SCRPT(300),SCRPTN[10] 
      CHARACTER*25 NAME                                                 
      NAME=' DUMMY         '     
      # --------------------------------------------------------------------- 
      #   DUMMY ROUTINE                       
      # --------------------------------------------------------------------- 
      NION=1
      NATT=1
      NIN=0
      NNULL=0 
      IONMODEL=0
      DO 1 J=1,6
      1 KEL[J]=0
      DO 2 J=1,NIN
      2 KIN[J]=0           
      E[1]=0.0                                                          
      E[2]=0.0                                                          
      E[3]=0.0                                                          
      E[4]=0.0                                                          
      E[5]=0.0                                                          
      E[6]=0.0 
      SCRPT[1]='                              '
      SCRPT[2]=' ELASTIC       DUMMY          '
      SCRPT[3]=' IONISATION    ELOSS=         '
      SCRPT[4]=' ATTACHMENT                   '
      SCRPT[5]='                              '
      SCRPT[6]='                              '
      EN=-ESTEP/2.0                                      
      DO 900 I=1,NSTEP                                               
      EN=EN+ESTEP                                                       
      Q[2][I]=0.0                                                        
      Q[3][I]=0.0                                                        
      Q[4][I]=0.0                                                        
      Q[1][I]=Q[2][I]+Q[3][I]+Q[4][I]  
      900 CONTINUE                                                          
      #  SAVE COMPUTE TIME
      return                                                            
      # end   
'''

Contribute to Documentation

Modules

All the modules are documented in separate markdown files in the modules directory.

Module Structure

The function module is written in markdown.
It consists of a brief pseudo code and the fortran as well as the python code for that module

Tangling

tangle.sh is a bash script that builds a final index.html file which is then reflected in the documentation

rm ../index.html.md
cat Degrad.md > ../index.html.md
cat Mixer.md >> ../index.html.md
cat Setup.md >> ../index.html.md
cat Density.md >> ../index.html.md
cat Tail.md >> ../index.html.md