]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GEANT321/gheisha/phasp.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / GEANT321 / gheisha / phasp.F
diff --git a/GEANT321/gheisha/phasp.F b/GEANT321/gheisha/phasp.F
deleted file mode 100644 (file)
index 9f8b997..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1995/10/24 10:21:01  cernlib
-* Geant
-*
-*
-#include "geant321/pilot.h"
-*CMZ :  3.21/02 29/03/94  15.41.39  by  S.Giani
-*-- Author :
-      SUBROUTINE PHASP
-C
-C *** NVE 29-MAR-1988 CERN GENEVA ***
-C
-C CALLED BY : NUCREC TWOCLU GENXPT
-C ORIGIN : H.FESEFELDT (02-DEC-1986)
-C
-#include "geant321/s_prntfl.inc"
-#include "geant321/s_genio.inc"
-#include "geant321/limits.inc"
-C
-#if !defined(CERNLIB_SINGLE)
-      DOUBLE PRECISION WTMAX,WTMAXQ,WTFC,TWGT,ONE,TEXPXL,TEXPXU
-      PARAMETER (ONE=1.D0)
-#endif
-#if defined(CERNLIB_SINGLE)
-      PARAMETER (ONE=1.0)
-#endif
-      LOGICAL LZERO
-      DIMENSION EMM(18)
-      DIMENSION RNO(50)
-      DIMENSION EM(18),PD(18),EMS(18),SM(18),FFQ(18),PCM1(90)
-      EQUIVALENCE (NT,NPG),(AMASS(1),EM(1)),(PCM1(1),PCM(1,1))
-      SAVE KNT
-C
-      DATA  FFQ/0.,3.141592, 19.73921, 62.01255, 129.8788, 204.0131,
-     $                       256.3704, 268.4705, 240.9780, 189.2637,
-     $                       132.1308,  83.0202,  47.4210,  24.8295,
-     $                        12.0006,   5.3858,   2.2560,   0.8859/
-      DATA  KNT , TWOPI /  1 , 6.2831853073 /
-C
-C --- Initialise local arrays and the result array PCM ---
-      DO 10 JZERO=1,18
-         PCM(1,JZERO)=0.
-         PCM(2,JZERO)=0.
-         PCM(3,JZERO)=0.
-         PCM(4,JZERO)=0.
-         PCM(5,JZERO)=0.
-         EMM(JZERO)  =0.
-         PD(JZERO)   =0.
-         EMS(JZERO)  =0.
-         SM(JZERO)   =0.
-  10  CONTINUE
-C
-      KNT = KNT + 1
-      IF (.NOT.NPRT(3).AND..NOT.NPRT(4)) GOTO 100
-      WRITE(NEWBCD,1200) NPG,TECM,(AMASS(JK),JK=1,NPG)
-  100 CONTINUE
-  150 IF (NT .LT. 2)  GO TO 1001
-      IF (NT .GT. 18)  GO TO 1002
-      NTM1=NT-1
-      NTM2=NT-2
-      NTNM4 = 3*NT - 4
-      EMM(1)=EM(1)
-      TM=0.0
-      DO 200 I=1,NT
-      EMS(I)=EM(I)**2
-      TM=TM+EM(I)
- 200  SM(I)=TM
-      WGT=1.
- 210  TECMTM=TECM-TM
-      IF (TECMTM .LE. 0.0)  GO TO 1000
-      EMM(NT)=TECM
-      IF (KGENEV.GT.1) GO TO 400
-      EMMAX=TECMTM+EM(1)
-      EMMIN=0.0
-C
-C          For weight calculation, form sum of log's of terms
-C          instead of product of terms. Note that thereby WTMAX
-C          and WTMAXQ are changed in their contents; they are
-C          currently not used outside the range from here to
-C          label 531. We also need to check for zero factors now.
-C          Negative values cannot appear as GPDK always returns a
-C          nonnegative number. As coded, even the exotic cases
-C          NT<2 (first loop not executed) and NTM1<1 (second loop
-C          not executed) should be safe and give the same result
-C          for WTG in the end as the old code.
-C
-      WTMAX=0.0
-      LZERO=.TRUE.
-      DO 350 I=2,NT
-      EMMIN=EMMIN+EM(I-1)
-      EMMAX=EMMAX+EM(I)
-      WTFC=GPDK(EMMAX,EMMIN,EM(I))
-      IF(WTFC.LE.0.) THEN
-      LZERO=.FALSE.
-      GOTO 351
-      ENDIF
-      WTMAX=WTMAX+LOG(WTFC)
- 350  CONTINUE
- 351  WTMAXQ= EXPXU
-      IF(LZERO) WTMAXQ= -WTMAX
-      GO TO 455
-  400 WTMAXQ=LOG(ONE*TECMTM**NTM2*FFQ(NT) / TECM)
-  455 CONTINUE
-      CALL GRNDM(RNO,NTNM4)
-      IF(NTM2) 900,509,460
-  460 CONTINUE
-      CALL FLPSOR(RNO,NTM2)
-      DO 508 J=2,NTM1
-  508 EMM(J)=RNO(J-1)*TECMTM+SM(J)
-  509 TWGT=WTMAXQ
-      IR=NTM2
-      LZERO=.TRUE.
-      DO 530 I=1,NTM1
-      PD(I)=GPDK(EMM(I+1),EMM(I),EM(I+1))
-      IF(PD(I).LE.0.0) THEN
-      LZERO=.FALSE.
-      ELSE
-      TWGT=TWGT+LOG(ONE*PD(I))
-      ENDIF
-  530 CONTINUE
-  531 WGT=0.0
-      IF(LZERO) THEN
-      TEXPXU=EXPXU
-      TEXPXL=EXPXL
-      WGT=EXP(MAX(MIN(TWGT,TEXPXU),TEXPXL))
-      ENDIF
-      PCM(1,1)=0.0
-      PCM(2,1)=PD(1)
-      PCM(3,1)=0.0
-      DO 570 I=2,NT
-      PCM(1,I)=0.0
-      PCM(2,I) = -PD(I-1)
-      PCM(3,I)=0.0
-      IR=IR+1
-      BANG=TWOPI*RNO(IR)
-      CB=COS(BANG)
-      SB=SIN(BANG)
-      IR=IR+1
-      C=2.0*RNO(IR)-1.0
-      S=SQRT(ABS(1.0-C*C))
-      IF(I.EQ.NT) GO TO 1567
-      ESYS=SQRT(PD(I)**2+EMM(I)**2)
-      BETA=PD(I)/ESYS
-      GAMA=ESYS/EMM(I)
-      DO 568 J=1,I
-      NDX = 5*J - 5
-      AA= PCM1(NDX+1)**2 + PCM1(NDX+2)**2 + PCM1(NDX+3)**2
-      PCM1(NDX+5) = SQRT(AA)
-      PCM1(NDX+4) = SQRT(AA+EMS(J))
-      CALL ROTES2(C,S,CB,SB,PCM,J)
-      PSAVE = GAMA*(PCM(2,J)+BETA*PCM(4,J))
-  568 PCM(2,J)=PSAVE
-      GO TO 570
- 1567 DO 1568 J=1,I
-      AA=PCM(1,J)**2 + PCM(2,J)**2 + PCM(3,J)**2
-      PCM(5,J)=SQRT(AA)
-      PCM(4,J)=SQRT(AA+EMS(J))
-      CALL ROTES2(C,S,CB,SB,PCM,J)
- 1568 CONTINUE
-  570 CONTINUE
-  900 CONTINUE
-      RETURN
- 1000 DO 212 I=1,NPG
-      PCM(1,I)=0.
-      PCM(2,I)=0.
-      PCM(3,I)=0.
-      PCM(4,I)=AMASS(I)
-  212 PCM(5,I)=AMASS(I)
-      WGT=0.
-      RETURN
- 1001 IF(NPRT(3).OR.NPRT(4)) WRITE(NEWBCD,1101)
-      GO TO 1050
- 1002 WRITE(NEWBCD,1102)
- 1050 WRITE(NEWBCD,1150) KNT
-      WRITE(NEWBCD,1200) NPG,TECM,(AMASS(JK),JK=1,NPG)
-      RETURN
- 1100 FORMAT (1H0,'AVAILABLE ENERGY NEGATIVE')
- 1101 FORMAT (1H0,'LESS THAN 2 OUTGOING PARTICLES')
- 1102 FORMAT (1H0,'MORE THAN 18 OUTGOING PARTICLES')
- 1150 FORMAT (1H0,'ABOVE ERROR DETECTED IN PHASP AT CALL NUMBER',I7)
- 1200 FORMAT (1H0,'INPUT DATA TO PHASP.         NPG= ' ,I6/
-     +2X,9H   TECM=  ,D15.7   ,18H  PARTICLE MASSES=,5D15.7/(42X,5D15.7)
-     +)
-      END