]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GEANT321/gheisha/caskm.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gheisha / caskm.F
diff --git a/GEANT321/gheisha/caskm.F b/GEANT321/gheisha/caskm.F
new file mode 100644 (file)
index 0000000..ad679e4
--- /dev/null
@@ -0,0 +1,386 @@
+*
+* $Id$
+*
+* $Log$
+* Revision 1.1.1.1  1995/10/24 10:21:00  cernlib
+* Geant
+*
+*
+#include "geant321/pilot.h"
+*CMZ :  3.21/02 29/03/94  15.41.39  by  S.Giani
+*-- Author :
+      SUBROUTINE CASKM(K,INT,NFL)
+C
+C *** CASCADE OF K- ***
+C *** NVE 04-MAY-1988 CERN GENEVA ***
+C
+C ORIGIN : H.FESEFELDT (13-SEP-1987)
+C
+C K-  UNDERGOES INTERACTION WITH NUCLEON WITHIN NUCLEUS.
+C CHECK IF ENERGETICALLY POSSIBLE TO PRODUCE PIONS/KAONS.
+C IF NOT ASSUME NUCLEAR EXCITATION OCCURS AND INPUT PARTICLE
+C IS DEGRADED IN ENERGY.    NO OTHER PARTICLES PRODUCED.
+C IF REACTION IS POSSIBLE FIND CORRECT NUMBER OF PIONS/PROTONS/
+C NEUTRONS PRODUCED USING AN INTERPOLATION TO MULTIPLICITY DATA.
+C REPLACE SOME PIONS OR PROTONS/NEUTRONS BY KAONS OR STRANGE BARYONS
+C ACCORDING TO AVERAGE MULTIPLICITY PER INELASTIC REACTIONS.
+C
+#include "geant321/mxgkgh.inc"
+#include "geant321/s_consts.inc"
+#include "geant321/s_curpar.inc"
+#include "geant321/s_result.inc"
+#include "geant321/s_prntfl.inc"
+#include "geant321/s_kginit.inc"
+#include "geant321/limits.inc"
+C
+      REAL N
+      DIMENSION PMUL(2,1200),ANORM(2,60),CECH(10),CNK0(20),PIY1(4),
+     $          PIY2(3),IPIY1(2,4),IPIY2(2,3),IPIY3(2,3),B(2)
+      DIMENSION RNDM(1)
+      SAVE PMUL,ANORM
+      DATA CECH/1.,1.,1.,0.70,0.60,0.55,0.35,0.25,0.18,0.15/
+      DATA CNK0/0.17,0.18,0.17,0.24,0.26,0.20,0.22,0.21,0.34,0.45
+     $         ,0.58,0.55,0.36,0.29,0.29,0.32,0.32,0.33,0.33,0.33/
+      DATA PIY1/0.67,0.78,0.89,1.00/,PIY2/0.68,0.84,1.00/
+      DATA IPIY1/8,18,9,20,8,21,7,22/
+      DATA IPIY2/9,18,9,21,8,22/,IPIY3/7,18,8,20,7,21/
+      DATA B/0.7,0.7/,C/1.25/
+C
+C --- INITIALIZATION INDICATED BY KGINIT(4) ---
+      IF (KGINIT(4) .NE. 0) GO TO 10
+      KGINIT(4)=1
+C
+C --- INITIALIZE PMUL AND ANORM ARRAYS ---
+      DO 9000 J=1,1200
+      DO 9001 I=1,2
+      PMUL(I,J)=0.0
+      IF (J .LE. 60) ANORM(I,J)=0.0
+ 9001 CONTINUE
+ 9000 CONTINUE
+C
+C** COMPUTE NORMALIZATION CONSTANTS
+C** FOR P AS TARGET
+C
+      L=0
+      DO 1 NP1=1,20
+      NP=NP1-1
+      NMM1=NP1-1
+      IF(NMM1.LE.1) NMM1=1
+      NPP1=NP1+1
+      DO 1 NM1=NMM1,NPP1
+      NM=NM1-1
+      DO 1 NZ1=1,20
+      NZ=NZ1-1
+      L=L+1
+      IF(L.GT.1200) GOTO 1
+      NT=NP+NM+NZ
+      IF(NT.LE.0.OR.NT.GT.60) GOTO 1
+      PMUL(1,L)=PMLTPC(NP,NM,NZ,NT,B(1),C)
+      ANORM(1,NT)=ANORM(1,NT)+PMUL(1,L)
+    1 CONTINUE
+C** FOR N AS TARGET
+      L=0
+      DO 2 NP1=1,20
+      NP=NP1-1
+      NPP1=NP1+2
+      DO 2 NM1=NP1,NPP1
+      NM=NM1-1
+      DO 2 NZ1=1,20
+      NZ=NZ1-1
+      L=L+1
+      IF(L.GT.1200) GOTO 2
+      NT=NP+NM+NZ
+      IF(NT.LE.0.OR.NT.GT.60) GOTO 2
+      PMUL(2,L)=PMLTPC(NP,NM,NZ,NT,B(2),C)
+      ANORM(2,NT)=ANORM(2,NT)+PMUL(2,L)
+    2 CONTINUE
+      DO 3 I=1,60
+      IF(ANORM(1,I).GT.0.) ANORM(1,I)=1./ANORM(1,I)
+      IF(ANORM(2,I).GT.0.) ANORM(2,I)=1./ANORM(2,I)
+    3 CONTINUE
+      IF(.NOT.NPRT(10)) GOTO 10
+      WRITE(NEWBCD,2001)
+      DO 4 NFL=1,2
+      WRITE(NEWBCD,2002) NFL
+      WRITE(NEWBCD,2003) (ANORM(NFL,I),I=1,60)
+      WRITE(NEWBCD,2003) (PMUL(NFL,I),I=1,1200)
+    4 CONTINUE
+C**  CHOOSE PROTON OR NEUTRON AS TARGET
+   10 NFL=2
+      CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.ZNO2/ATNO2) NFL=1
+      TARMAS=RMASS(14)
+      IF (NFL .EQ. 2) TARMAS=RMASS(16)
+      S=AMASQ+TARMAS**2+2.0*TARMAS*EN
+      RS=SQRT(S)
+      ENP(8)=AMASQ+TARMAS**2+2.0*TARMAS*ENP(6)
+      ENP(9)=SQRT(ENP(8))
+      EAB=RS-TARMAS-RMASS(13)
+C
+C**  ELASTIC SCATTERING
+      NP=0
+      NM=0
+      NZ=0
+      N=0.
+      IPA(1)=13
+      IPA(2)=14
+      IF(NFL.EQ.2) IPA(2)=16
+      IF(INT.EQ.2) GOTO 20
+      GOTO 100
+C**  CHECK IF ENERGETICALLY POSSIBLE TO PRODUCE ONE EXTRA PION IN REACT.
+   20 IPLAB=IFIX(P*5.)+1
+      IF(IPLAB.GT.10) GOTO 22
+      CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.CECH(IPLAB)) GOTO 19
+      IF (EAB .LT. RMASS(7)) GOTO 55
+      GOTO 22
+C** CHARGE EXCHANGE REACTION (IS INCLUDED IN INELASTIC CROSS SECTION)
+   19 IPLAB=IFIX(P*10.)+1
+      IF(IPLAB.GT.20) IPLAB=20
+      CALL GRNDM(RNDM,1)
+      IF(RNDM(1).GT.CNK0(IPLAB)) GOTO 24
+      IF(NFL.EQ.1) GOTO 23
+C** FOR K- N REACTION NO K N STRANGENESS EXCHANGE POSSIBLE
+      INT=1
+      IPA(1)=13
+      IPA(2)=16
+      GOTO 100
+   23 INT=1
+      IPA(1)=12
+      IPA(2)=16
+      GOTO 100
+C** P L, P S REACTIONS
+   24 CALL GRNDM(RNDM,1)
+      RAN=RNDM(1)
+      IF(RAN.LT.0.25) GOTO 25
+      IF(RAN.LT.0.50) GOTO 26
+      IF(RAN.LT.0.75) GOTO 27
+C** K- P --> PI0 L OR K- N --> PI- L
+      IPA(1)=8
+      IF(NFL.EQ.2) IPA(1)=9
+      IPA(2)=18
+      GOTO 100
+C** K- P --> PI- S+
+   25 IPA(1)=9
+      IPA(2)=20
+      IF(NFL.EQ.1) GOTO 100
+      IPA(1)=13
+      IPA(2)=16
+      GOTO 100
+C** K- P --> PI0 S0  OR K- N --> PI- S0
+   26 IPA(1)=8
+      IF(NFL.EQ.2) IPA(1)=9
+      IPA(2)=21
+      GOTO 100
+C** K- P --> PI+ S-  OR K- N --> PI0 S-
+   27 IPA(1)=7
+      IF(NFL.EQ.2) IPA(1)=8
+      IPA(2)=22
+      GOTO 100
+C
+   22 ALEAB=LOG(EAB)
+C** NO. OF TOTAL PARTICLES VS SQRT(S)-2*MP
+      N=3.62567+0.665843*ALEAB+0.336514*ALEAB*ALEAB
+     * +0.117712*ALEAB*ALEAB*ALEAB+0.0136912*ALEAB*ALEAB*ALEAB*ALEAB
+      N=N-2.
+C** NORMALIZATION CONSTANT FOR  KNO-DISTRIBUTION
+      ANPN=0.
+      DO 21 NT=1,60
+      TEST=-(PI/4.0)*(NT/N)**2
+      IF (TEST .LT. EXPXL) TEST=EXPXL
+      IF (TEST .GT. EXPXU) TEST=EXPXU
+      DUM1=PI*NT/(2.0*N*N)
+      DUM2=ABS(DUM1)
+      DUM3=EXP(TEST)
+      ADDNVE=0.0
+      IF (DUM2 .GE. 1.0) ADDNVE=DUM1*DUM3
+      IF ((DUM2 .LT. 1.0) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
+      ANPN=ANPN+ADDNVE
+   21 CONTINUE
+      ANPN=1./ANPN
+C** P OR N AS TARGET
+      CALL GRNDM(RNDM,1)
+      RAN=RNDM(1)
+      EXCS=0.
+      GOTO (30,40),NFL
+C** FOR P AS TARGET
+   30 L=0
+      DO 31 NP1=1,20
+      NP=NP1-1
+      NMM1=NP1-1
+      IF(NMM1.LE.1) NMM1=1
+      NPP1=NP1+1
+      DO 31 NM1=NMM1,NPP1
+      NM=NM1-1
+      DO 31 NZ1=1,20
+      NZ=NZ1-1
+      L=L+1
+      IF(L.GT.1200) GOTO 31
+      NT=NP+NM+NZ
+      IF(NT.LE.0.OR.NT.GT.60) GOTO 31
+      TEST=-(PI/4.0)*(NT/N)**2
+      IF (TEST .LT. EXPXL) TEST=EXPXL
+      IF (TEST .GT. EXPXU) TEST=EXPXU
+      DUM1=ANPN*PI*NT*PMUL(1,L)*ANORM(1,NT)/(2.0*N*N)
+      DUM2=ABS(DUM1)
+      DUM3=EXP(TEST)
+      ADDNVE=0.0
+      IF (DUM2 .GE. 1.0) ADDNVE=DUM1*DUM3
+      IF ((DUM2 .LT. 1.0) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
+      EXCS=EXCS+ADDNVE
+      IF(RAN.LT.EXCS) GOTO 50
+   31 CONTINUE
+      GOTO 80
+C** FOR N AS TARGET
+   40 L=0
+      DO 41 NP1=1,20
+      NP=NP1-1
+      NPP1=NP1+2
+      DO 41 NM1=NP1,NPP1
+      NM=NM1-1
+      DO 41 NZ1=1,20
+      NZ=NZ1-1
+      L=L+1
+      IF(L.GT.1200) GOTO 41
+      NT=NP+NM+NZ
+      IF(NT.LE.0.OR.NT.GT.60) GOTO 41
+      TEST=-(PI/4.0)*(NT/N)**2
+      IF (TEST .LT. EXPXL) TEST=EXPXL
+      IF (TEST .GT. EXPXU) TEST=EXPXU
+      DUM1=ANPN*PI*NT*PMUL(2,L)*ANORM(2,NT)/(2.0*N*N)
+      DUM2=ABS(DUM1)
+      DUM3=EXP(TEST)
+      ADDNVE=0.0
+      IF (DUM2 .GE. 1.0) ADDNVE=DUM1*DUM3
+      IF ((DUM2 .LT. 1.0) .AND. (DUM3 .GE. 1.0E-10)) ADDNVE=DUM1*DUM3
+      EXCS=EXCS+ADDNVE
+      IF(RAN.LT.EXCS) GOTO 50
+   41 CONTINUE
+      GOTO 80
+   50 GOTO (60,65),NFL
+   60 IF(NP.EQ.NM) GOTO 61
+      IF(NP.EQ.1+NM) GOTO 63
+      IPA(1)=12
+      IPA(2)=14
+      GOTO 90
+   61 CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.0.75) GOTO 62
+      IPA(1)=12
+      IPA(2)=16
+      GOTO 90
+   62 IPA(1)=13
+      IPA(2)=14
+      GOTO 90
+   63 IPA(1)=13
+      IPA(2)=16
+      GOTO 90
+   65 IF(NP.EQ.-1+NM) GOTO 66
+      IF(NP.EQ.NM) GOTO 68
+      IPA(1)=12
+      IPA(2)=16
+      GOTO 90
+   66 CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.0.50) GOTO 67
+      IPA(1)=12
+      IPA(2)=16
+      GOTO 90
+   67 IPA(1)=13
+      IPA(2)=14
+      GOTO 90
+   68 IPA(1)=13
+      IPA(2)=16
+C**  PI Y PRODUCTION INSTEAD OF K N
+   90 CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.0.5) GOTO 100
+      IF(IPA(1).EQ.13.AND.IPA(2).EQ.16) GOTO 95
+      IF(IPA(1).EQ.11.AND.IPA(2).EQ.14) GOTO 95
+      IF(IPA(1).EQ.12.AND.IPA(2).EQ.14) GOTO 95
+      CALL GRNDM(RNDM,1)
+      RAN=RNDM(1)
+      DO 91 I=1,4
+      IF(RAN.LT.PIY1(I)) GOTO 92
+   91 CONTINUE
+      GOTO 100
+   92 IPA(1)=IPIY1(1,I)
+      IPA(2)=IPIY1(2,I)
+      GOTO 100
+   95 CALL GRNDM(RNDM,1)
+      RAN=RNDM(1)
+      DO 96 I=1,3
+      IF(RAN.LT.PIY2(I)) GOTO 97
+   96 CONTINUE
+      GOTO 100
+   97 IF(IPA(2).EQ.14) GOTO 98
+      IPA(1)=IPIY2(1,I)
+      IPA(2)=IPIY2(2,I)
+      GOTO 100
+   98 IPA(1)=IPIY3(1,I)
+      IPA(2)=IPIY3(2,I)
+      GOTO 100
+   70 IF(NPRT(4))
+     *WRITE(NEWBCD,1003) EAB,N,NFL,NP,NM,NZ
+      CALL STPAIR
+      IF(INT.EQ.1) CALL TWOB(13,NFL,N)
+      IF(INT.EQ.2) CALL GENXPT(13,NFL,N)
+      GO TO 9999
+C** NUCLEAR EXCITATION
+   55 IF(NPRT(4))
+     *WRITE(NEWBCD,1001)
+      GOTO 53
+C** EXCLUSIVE REACTION NOT FOUND
+   80 IF(NPRT(4))
+     *WRITE(NEWBCD,1004) RS,N
+   53 INT=1
+      NP=0
+      NM=0
+      NZ=0
+      N=0.
+      IPA(1)=13
+      IPA(2)=14
+      IF(NFL.EQ.2) IPA(2)=16
+  100 DO 101 I=3,60
+  101 IPA(I)=0
+      IF(INT.LE.0) GOTO 131
+  120 NT=2
+      IF(NP.EQ.0) GOTO 122
+      DO 121 I=1,NP
+      NT=NT+1
+  121 IPA(NT)=7
+  122 IF(NM.EQ.0) GOTO 124
+      DO 123 I=1,NM
+      NT=NT+1
+  123 IPA(NT)=9
+  124 IF(NZ.EQ.0) GOTO 130
+      DO 125 I=1,NZ
+      NT=NT+1
+  125 IPA(NT)=8
+  130 IF(NPRT(4))
+     *WRITE(NEWBCD,2004) NT,(IPA(I),I=1,20)
+      DO 132 I=1,NT
+      IF(IPA(I).NE.12) GOTO 132
+      CALL GRNDM(RNDM,1)
+      IF(RNDM(1).LT.0.5) GOTO 132
+      IPA(I)=11
+  132 CONTINUE
+      GOTO 70
+  131 IF(NPRT(4))
+     *WRITE(NEWBCD,2005)
+C
+1001  FORMAT('0*CASKM* CASCADE ENERGETICALLY NOT POSSIBLE',
+     $ ' CONTINUE WITH QUASI-ELASTIC SCATTERING')
+1003  FORMAT(' *CASKM* KAON- -INDUCED CASCADE,',
+     $ ' AVAIL. ENERGY',2X,F8.4,
+     $ 2X,'<NTOT>',2X,F8.4,2X,'FROM',4(2X,I3),2X,'PARTICLES')
+1004  FORMAT(' *CASKM* KAON- -INDUCED CASCADE,',
+     $ ' EXCLUSIVE REACTION NOT FOUND',
+     $ ' TRY ELASTIC SCATTERING  AVAIL. ENERGY',2X,F8.4,2X,
+     $ '<NTOT>',2X,F8.4)
+2001  FORMAT('0*CASKM* TABLES FOR MULT. DATA KAON-  INDUCED REACTION',
+     $ ' FOR DEFINITION OF NUMBERS SEE FORTRAN CODING')
+2002  FORMAT(' *CASKM* TARGET PARTICLE FLAG',2X,I5)
+2003  FORMAT(1H ,10E12.4)
+2004  FORMAT(' *CASKM* ',I3,2X,'PARTICLES , MASS INDEX ARRAY',2X,20I4)
+2005  FORMAT(' *CASKM* NO PARTICLES PRODUCED')
+C
+ 9999 CONTINUE
+      END