* flags for activated histograms
COMMON /DTHIS3/ IHISPP(50),IHISXS(50),IXSTBL
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
- COMMON/PYDAT3/MDCY(500,3),MDME(4000,2),BRAT(4000),KFDP(4000,5)
+ COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
* LEPTO
**LUND single / double precision
REAL CUT,PARL,TMPX,TMPY,TMPW2,TMPQ2,TMPU
COMMON /POMDLS/ MDLNA(50),ISWMDL(50),PARMDL(400),IPAMDL(400)
* jetset
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
+ COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
PARAMETER (MAXLND=4000)
COMMON/PYJETS/N,NPAD,K(MAXLND,5),P(MAXLND,5),V(MAXLND,5)
INTEGER PYK
DIMENSION IJOIN(MXJOIN),ISJOIN(MXJOIN),IHISMO(8000),IFLG(4000)
-
+ INTEGER PYCOMP
MODE = KMODE
ISTSTG = 7
IF (MODE.NE.1) ISTSTG = 8
COMMON /DTEVT2/ IDRES(NMXHKK),IDXRES(NMXHKK),NOBAM(NMXHKK),
& IDBAM(NMXHKK),IDCH(NMXHKK),NPOINT(10),
& IHIST(2,NMXHKK)
- COMMON/PYDAT3/MDCY(500,3),MDME(4000,2),BRAT(4000),KFDP(4000,5)
+ COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
PARAMETER (MAXLND=4000)
COMMON/PYJETS/N,NPAD,K(MAXLND,5),P(MAXLND,5),V(MAXLND,5)
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4)
- COMMON/PYDAT3/MDCY(500,3),MDME(4000,2),BRAT(4000),KFDP(4000,5)
+ COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5)
* flags for particle decays
COMMON /DTFRPA/ MSTUX(20),PARUX(20),MSTJX(20),PARJX(20),
& IMSTU(20),IPARU(20),IMSTJ(20),IPARJ(20),
C MDCY(KC,1) = 1
**
ELSE
- MDCY(KC,1) = 0
+C AM MDCY(KC,1) = 0
ENDIF
ENDIF
ELSEIF (((I.EQ.34).OR.(I.EQ.35)).AND.(ISIG0.EQ.0)) THEN
KC = PYCOMP(IDXSTA(I))
IF (KC.GT.0) THEN
- MDCY(KC,1) = 0
+C AM MDCY(KC,1) = 0
ENDIF
ENDIF
1 CONTINUE
1000 FORMAT(/,1X,'BERTTP:',4X,'Initialization of evaporation module',
& /,12X,'------------------------------------',/)
NBERNW = 23
- OPEN (UNIT=NBERNW,FILE='dpmjet.dat',STATUS='UNKNOWN')
+CPH OPEN (UNIT=NBERNW,FILE='dpmjet.dat',STATUS='UNKNOWN')
**sr 17.5.
*!!!! changed to be able to read the ASCII !!!!
*$ CREATE DT_RNDM.FOR
*COPY DT_RNDM
*
-*===rndm===============================================================*
-*
- DOUBLE PRECISION FUNCTION DT_RNDM(VDUMMY)
-
- IMPLICIT DOUBLE PRECISION (A-H,O-Z)
- SAVE
-
-* random number generator
- COMMON /DTRAND/ U(97),C,CD,CM,I,J
-
-* counter of calls to random number generator
-* uncomment if needed
-C COMMON /DTRNCT/ IRNCT0,IRNCT1
-C LOGICAL LFIRST
-C DATA LFIRST /.TRUE./
-
-* counter of calls to random number generator
-* uncomment if needed
-C IF (LFIRST) THEN
-C IRNCT0 = 0
-C IRNCT1 = 0
-C LFIRST = .FALSE.
-C ENDIF
- 100 CONTINUE
- DT_RNDM = U(I)-U(J)
- IF ( DT_RNDM.LT.0.0D0 ) DT_RNDM = DT_RNDM+1.0D0
- U(I) = DT_RNDM
- I = I-1
- IF ( I.EQ.0 ) I = 97
- J = J-1
- IF ( J.EQ.0 ) J = 97
- C = C-CD
- IF ( C.LT.0.0D0 ) C = C+CM
- DT_RNDM = DT_RNDM-C
- IF ( DT_RNDM.LT.0.0D0 ) DT_RNDM = DT_RNDM+1.0D0
-
- IF ((DT_RNDM.EQ.0.D0).OR.(DT_RNDM.EQ.1.D0)) GOTO 100
-
-* counter of calls to random number generator
-* uncomment if needed
-C IRNCT0 = IRNCT0+1
-
- RETURN
- END
-
-*$ CREATE DT_RNDMST.FOR
-*COPY DT_RNDMST
-*
-*===rndmst=============================================================*
-*
- SUBROUTINE DT_RNDMST(NA1,NA2,NA3,NB1)
-
- IMPLICIT DOUBLE PRECISION (A-H,O-Z)
- SAVE
-
-* random number generator
- COMMON /DTRAND/ U(97),C,CD,CM,I,J
-
- MA1 = NA1
- MA2 = NA2
- MA3 = NA3
- MB1 = NB1
- I = 97
- J = 33
- DO 20 II2 = 1,97
- S = 0
- T = 0.5D0
- DO 10 II1 = 1,24
- MAT = MOD(MOD(MA1*MA2,179)*MA3,179)
- MA1 = MA2
- MA2 = MA3
- MA3 = MAT
- MB1 = MOD(53*MB1+1,169)
- IF ( MOD(MB1*MAT,64).GE.32 ) S = S+T
- 10 T = 0.5D0*T
- 20 U(II2) = S
- C = 362436.0D0/16777216.0D0
- CD = 7654321.0D0/16777216.0D0
- CM = 16777213.0D0/16777216.0D0
- RETURN
- END
-
-*$ CREATE DT_RNDMIN.FOR
-*COPY DT_RNDMIN
-*
-*===rndmin=============================================================*
-*
- SUBROUTINE DT_RNDMIN(UIN,CIN,CDIN,CMIN,IIN,JIN)
-
- IMPLICIT DOUBLE PRECISION (A-H,O-Z)
- SAVE
-
-* random number generator
- COMMON /DTRAND/ U(97),C,CD,CM,I,J
-
- DIMENSION UIN(97)
-
- DO 10 KKK = 1,97
- 10 U(KKK) = UIN(KKK)
- C = CIN
- CD = CDIN
- CM = CMIN
- I = IIN
- J = JIN
-
- RETURN
- END
-
-*$ CREATE DT_RNDMOU.FOR
-*COPY DT_RNDMOU
-*
-*===rndmou=============================================================*
-*
- SUBROUTINE DT_RNDMOU(UOUT,COUT,CDOUT,CMOUT,IOUT,JOUT)
-
- IMPLICIT DOUBLE PRECISION (A-H,O-Z)
- SAVE
-
-* random number generator
- COMMON /DTRAND/ U(97),C,CD,CM,I,J
-
- DIMENSION UOUT(97)
-
- DO 10 KKK = 1,97
- 10 UOUT(KKK) = U(KKK)
- COUT = C
- CDOUT = CD
- CMOUT = CM
- IOUT = I
- JOUT = J
-
- RETURN
- END
-
-*$ CREATE DT_RNDMTE.FOR
-*COPY DT_RNDMTE
-*
-*===rndmte=============================================================*
-*
- SUBROUTINE DT_RNDMTE(IO)
-
- IMPLICIT DOUBLE PRECISION (A-H,O-Z)
- SAVE
-
- DIMENSION UU(97),U(6),X(6),D(6)
- DATA U / 6533892.D0, 14220222.D0, 7275067.D0, 6172232.D0,
- +8354498.D0, 10633180.D0/
-
- CALL DT_RNDMOU(UU,CC,CCD,CCM,II,JJ)
- CALL DT_RNDMST(12,34,56,78)
- DO 10 II1 = 1,20000
- 10 XX = DT_RNDM(XX)
- SD = 0.0D0
- DO 20 II2 = 1,6
- X(II2) = 4096.D0*(4096.D0*DT_RNDM(SD))
- D(II2) = X(II2)-U(II2)
- 20 SD = SD+D(II2)
- CALL DT_RNDMIN(UU,CC,CCD,CCM,II,JJ)
-**sr 24.01.95
-C IF ( IO.EQ. 1.OR. SD.NE.0. 0) WRITE(6,500) (U(I),X(I),D(I),I=1,6)
- IF ((IO.EQ.1).OR.(SD.NE.0.0)) THEN
-C WRITE(6,1000)
- 1000 FORMAT(/,/,1X,'DT_RNDMTE: Test of random-number generator...',
- & ' passed')
- ENDIF
-**
- RETURN
- 500 FORMAT(' === TEST OF THE RANDOM-GENERATOR ===',/,
- &' EXPECTED VALUE CALCULATED VALUE DIFFERENCE',/, 6(F17.
- &1,F20.1,F15.3,/), ' === END OF TEST ;',
- &' GENERATOR HAS THE SAME STATUS AS BEFORE CALLING DT_RNDMTE')
- END
+c$$$*===rndm===============================================================*
+c$$$*
+c$$$ DOUBLE PRECISION FUNCTION DT_RNDM(VDUMMY)
+c$$$
+c$$$ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c$$$ SAVE
+c$$$
+c$$$* random number generator
+c$$$ COMMON /DTRAND/ U(97),C,CD,CM,I,J
+c$$$
+c$$$* counter of calls to random number generator
+c$$$* uncomment if needed
+c$$$C COMMON /DTRNCT/ IRNCT0,IRNCT1
+c$$$C LOGICAL LFIRST
+c$$$C DATA LFIRST /.TRUE./
+c$$$
+c$$$* counter of calls to random number generator
+c$$$* uncomment if needed
+c$$$C IF (LFIRST) THEN
+c$$$C IRNCT0 = 0
+c$$$C IRNCT1 = 0
+c$$$C LFIRST = .FALSE.
+c$$$C ENDIF
+c$$$ 100 CONTINUE
+c$$$ DT_RNDM = U(I)-U(J)
+c$$$ IF ( DT_RNDM.LT.0.0D0 ) DT_RNDM = DT_RNDM+1.0D0
+c$$$ U(I) = DT_RNDM
+c$$$ I = I-1
+c$$$ IF ( I.EQ.0 ) I = 97
+c$$$ J = J-1
+c$$$ IF ( J.EQ.0 ) J = 97
+c$$$ C = C-CD
+c$$$ IF ( C.LT.0.0D0 ) C = C+CM
+c$$$ DT_RNDM = DT_RNDM-C
+c$$$ IF ( DT_RNDM.LT.0.0D0 ) DT_RNDM = DT_RNDM+1.0D0
+c$$$
+c$$$ IF ((DT_RNDM.EQ.0.D0).OR.(DT_RNDM.EQ.1.D0)) GOTO 100
+c$$$
+c$$$* counter of calls to random number generator
+c$$$* uncomment if needed
+c$$$C IRNCT0 = IRNCT0+1
+c$$$
+c$$$ RETURN
+c$$$ END
+c$$$
+c$$$*$ CREATE DT_RNDMST.FOR
+c$$$*COPY DT_RNDMST
+c$$$*
+c$$$*===rndmst=============================================================*
+c$$$*
+c$$$ SUBROUTINE DT_RNDMST(NA1,NA2,NA3,NB1)
+c$$$
+c$$$ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c$$$ SAVE
+c$$$
+c$$$* random number generator
+c$$$ COMMON /DTRAND/ U(97),C,CD,CM,I,J
+c$$$
+c$$$ MA1 = NA1
+c$$$ MA2 = NA2
+c$$$ MA3 = NA3
+c$$$ MB1 = NB1
+c$$$ I = 97
+c$$$ J = 33
+c$$$ DO 20 II2 = 1,97
+c$$$ S = 0
+c$$$ T = 0.5D0
+c$$$ DO 10 II1 = 1,24
+c$$$ MAT = MOD(MOD(MA1*MA2,179)*MA3,179)
+c$$$ MA1 = MA2
+c$$$ MA2 = MA3
+c$$$ MA3 = MAT
+c$$$ MB1 = MOD(53*MB1+1,169)
+c$$$ IF ( MOD(MB1*MAT,64).GE.32 ) S = S+T
+c$$$ 10 T = 0.5D0*T
+c$$$ 20 U(II2) = S
+c$$$ C = 362436.0D0/16777216.0D0
+c$$$ CD = 7654321.0D0/16777216.0D0
+c$$$ CM = 16777213.0D0/16777216.0D0
+c$$$ RETURN
+c$$$ END
+c$$$
+c$$$*$ CREATE DT_RNDMIN.FOR
+c$$$*COPY DT_RNDMIN
+c$$$*
+c$$$*===rndmin=============================================================*
+c$$$*
+c$$$ SUBROUTINE DT_RNDMIN(UIN,CIN,CDIN,CMIN,IIN,JIN)
+c$$$
+c$$$ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c$$$ SAVE
+c$$$
+c$$$* random number generator
+c$$$ COMMON /DTRAND/ U(97),C,CD,CM,I,J
+c$$$
+c$$$ DIMENSION UIN(97)
+c$$$
+c$$$ DO 10 KKK = 1,97
+c$$$ 10 U(KKK) = UIN(KKK)
+c$$$ C = CIN
+c$$$ CD = CDIN
+c$$$ CM = CMIN
+c$$$ I = IIN
+c$$$ J = JIN
+c$$$
+c$$$ RETURN
+c$$$ END
+c$$$
+c$$$*$ CREATE DT_RNDMOU.FOR
+c$$$*COPY DT_RNDMOU
+c$$$*
+c$$$*===rndmou=============================================================*
+c$$$*
+c$$$ SUBROUTINE DT_RNDMOU(UOUT,COUT,CDOUT,CMOUT,IOUT,JOUT)
+c$$$
+c$$$ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c$$$ SAVE
+c$$$
+c$$$* random number generator
+c$$$ COMMON /DTRAND/ U(97),C,CD,CM,I,J
+c$$$
+c$$$ DIMENSION UOUT(97)
+c$$$
+c$$$ DO 10 KKK = 1,97
+c$$$ 10 UOUT(KKK) = U(KKK)
+c$$$ COUT = C
+c$$$ CDOUT = CD
+c$$$ CMOUT = CM
+c$$$ IOUT = I
+c$$$ JOUT = J
+c$$$
+c$$$ RETURN
+c$$$ END
+c$$$
+c$$$*$ CREATE DT_RNDMTE.FOR
+c$$$*COPY DT_RNDMTE
+c$$$*
+c$$$*===rndmte=============================================================*
+c$$$*
+c$$$ SUBROUTINE DT_RNDMTE(IO)
+c$$$
+c$$$ IMPLICIT DOUBLE PRECISION (A-H,O-Z)
+c$$$ SAVE
+c$$$
+c$$$ DIMENSION UU(97),U(6),X(6),D(6)
+c$$$ DATA U / 6533892.D0, 14220222.D0, 7275067.D0, 6172232.D0,
+c$$$ +8354498.D0, 10633180.D0/
+c$$$
+c$$$ CALL DT_RNDMOU(UU,CC,CCD,CCM,II,JJ)
+c$$$ CALL DT_RNDMST(12,34,56,78)
+c$$$ DO 10 II1 = 1,20000
+c$$$ 10 XX = DT_RNDM(XX)
+c$$$ SD = 0.0D0
+c$$$ DO 20 II2 = 1,6
+c$$$ X(II2) = 4096.D0*(4096.D0*DT_RNDM(SD))
+c$$$ D(II2) = X(II2)-U(II2)
+c$$$ 20 SD = SD+D(II2)
+c$$$ CALL DT_RNDMIN(UU,CC,CCD,CCM,II,JJ)
+c$$$**sr 24.01.95
+c$$$C IF ( IO.EQ. 1.OR. SD.NE.0. 0) WRITE(6,500) (U(I),X(I),D(I),I=1,6)
+c$$$ IF ((IO.EQ.1).OR.(SD.NE.0.0)) THEN
+c$$$C WRITE(6,1000)
+c$$$ 1000 FORMAT(/,/,1X,'DT_RNDMTE: Test of random-number generator...',
+c$$$ & ' passed')
+c$$$ ENDIF
+c$$$**
+c$$$ RETURN
+c$$$ 500 FORMAT(' === TEST OF THE RANDOM-GENERATOR ===',/,
+c$$$ &' EXPECTED VALUE CALCULATED VALUE DIFFERENCE',/, 6(F17.
+c$$$ &1,F20.1,F15.3,/), ' === END OF TEST ;',
+c$$$ &' GENERATOR HAS THE SAME STATUS AS BEFORE CALLING DT_RNDMTE')
+c$$$ END
*
*$ CREATE PHO_RNDM.FOR
*COPY PHO_RNDM
WRITE(LOUT,1000)
1000 FORMAT(/,/,1X,'STATIS:',20X,'statistics of the run',/,
& 28X,'---------------------')
+ IF (ICREQU.GT.0) THEN
WRITE(LOUT,1001) ICREQU,ICSAMP,DBLE(ICSAMP)/DBLE(ICREQU)
1001 FORMAT(/,1X,'number of events requested / sampled',13X,
& I8,' / ',I8,/,1X,'number of samp. evts per requested ',
& 'event',11X,F9.1)
+ ENDIF
IF (ICDIFF(1).NE.0) THEN
WRITE(LOUT,1009) ICDIFF
1009 FORMAT(/,1X,'diffractive events: total ',I8,/,49X,
& 'low mass high mass',/,24X,'single diffraction',
& 7X,I8,4X,I8,/,24X,'double diffraction',7X,I8,4X,I8)
ENDIF
- IF (ICENTR.GT.0) THEN
+ IF (ICENTR.GT.0.AND.ICSAMP.GT.0.AND.ICCPRO.GT.0) THEN
WRITE(LOUT,1002) DBLE(ICCPRO)/DBLE(ICSAMP),
& DBLE(ICSAMP)/DBLE(ICCPRO)
1002 FORMAT(/,1X,'central production:',/,2X,'mean number',
& ' of sampled Glauber-events per event',9X,F9.1,/,
& 2X,'fraction of production cross section',21X,F10.6)
ENDIF
+ IF (ICSAMP.GT.0) THEN
WRITE(LOUT,1003) DBLE(ICDPR)/DBLE(ICSAMP),
& DBLE(ICDTA)/DBLE(ICSAMP)
1003 FORMAT(/,54X,'proj. targ.',/,1X,'average number of wounded',
& ' nucleons after x-sampling',2(4X,F6.2))
+ ENDIF
IF (MCGENE.EQ.1) THEN
+ IF (ICSAMP.GT.0) THEN
WRITE(LOUT,1004) DBLE(ICRJSS)/DBLE(ICSAMP)
1004 FORMAT(/,1X,'mean number of sea-sea chain rejections per',
& ' event',3X,F9.1)
1005 FORMAT(/,1X,'Reggeon contribution:',/,1X,'mean number ',
& 'of single chains per event',13X,F9.1)
ENDIF
+ ENDIF
+ IF (ICSAMP.GT.0.AND.ICREQU.GT.0) THEN
WRITE(LOUT,1006)
1006 FORMAT(/,1X,'chain system statistics: (per event)',/,
& 23X,'mean number of chains mean number of chains',/,
& 'Treatment of final nucleon conf.',10X,'IREXCI(1)/NEVT = '
& ,F7.2,/,43X,'IREXCI(2)/NEVT = ',F7.2,/,48X,
& 'IREXCI(3) = ',I5,/)
+ ENDIF
ELSEIF (MCGENE.EQ.2) THEN
WRITE(LOUT,1010) ELOJET
1010 FORMAT(/,/,1X,'PHOJET-treatment of chain systems above ',
1013 FORMAT(/,1X,'2. chain system statistics -',
& ' mean numbers per evt:',/,30X,'---------------------',
& /,/,16X,'s-s',7X,'d-s',7X,'s-d')
+ IF (ICSAMP.GT.0) THEN
WRITE(LOUT,1014)
& ((DBLE(ICEVTG(I,J))/DBLE(ICSAMP),I=1,3),J=0,1),
& (DBLE(ICCHAI(2,I))/(2.0D0*DBLE(ICSAMP)),I=1,3),
& ' dbl-dir ',3E10.2,/,' s-Pom. ',3E10.2,/,
& ' h-Pom. ',3E10.2,/,' s-Reg. ',3E10.2,/,
& ' enh-trg ',3E10.2,/,' enh-log ',3E10.2)
+ ENDIF
WRITE(LOUT,1015)
1015 FORMAT(/,16X,'s-v',7X,'d-v',7X,'v-s',7X,'v-d',7X,'v-v')
+ IF (ICSAMP.GT.0) THEN
WRITE(LOUT,1016)
& ((DBLE(ICEVTG(I,J))/DBLE(ICSAMP),I=4,8),J=0,1),
& (DBLE(ICCHAI(2,I))/(2.0D0*DBLE(ICSAMP)),I=4,8),
& ' dbl-dir ',5E10.2,/,' s-Pom. ',5E10.2,/,
& ' h-Pom. ',5E10.2,/,' s-Reg. ',5E10.2,/,
& ' enh-trg ',5E10.2,/,' enh-log ',5E10.2)
+ ENDIF
ENDIF
CALL DT_CHASTA(1)