X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PYTHIA6%2Fpythia6150.f;h=cfffeb5fec03980c01c953500207a257dd605af4;hb=65f2626cfb3f4345fec0eab080f93d7de0bf7f6a;hp=46b82e37b52df507252fa3a6c9125f7f0dbc244c;hpb=fd658fdbb355e697c959da3d1bad1f2d4002968c;p=u%2Fmrichter%2FAliRoot.git diff --git a/PYTHIA6/pythia6150.f b/PYTHIA6/pythia6150.f index 46b82e37b52..cfffeb5fec0 100644 --- a/PYTHIA6/pythia6150.f +++ b/PYTHIA6/pythia6150.f @@ -45998,171 +45998,171 @@ C...Commonblocks. RETURN END -C********************************************************************* - -C...PYR -C...Generates random numbers uniformly distributed between -C...0 and 1, excluding the endpoints. - - FUNCTION PYR(IDUMMY) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDATR/MRPY(6),RRPY(100) - SAVE /PYDATR/ -C...Equivalence between commonblock and local variables. - EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)), - &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)), - &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100)) - -C...Initialize generation from given seed. - IF(MRPY2.EQ.0) THEN - IJ=MOD(MRPY1/30082,31329) - KL=MOD(MRPY1,30082) - I=MOD(IJ/177,177)+2 - J=MOD(IJ,177)+2 - K=MOD(KL/169,178)+1 - L=MOD(KL,169) - DO 110 II=1,97 - S=0D0 - T=0.5D0 - DO 100 JJ=1,48 - M=MOD(MOD(I*J,179)*K,179) - I=J - J=K - K=M - L=MOD(53*L+1,169) - IF(MOD(L*M,64).GE.32) S=S+T - T=0.5D0*T - 100 CONTINUE - RRPY(II)=S - 110 CONTINUE - TWOM24=1D0 - DO 120 I24=1,24 - TWOM24=0.5D0*TWOM24 - 120 CONTINUE - RRPY98=362436D0*TWOM24 - RRPY99=7654321D0*TWOM24 - RRPY00=16777213D0*TWOM24 - MRPY2=1 - MRPY3=0 - MRPY4=97 - MRPY5=33 - ENDIF - -C...Generate next random number. - 130 RUNI=RRPY(MRPY4)-RRPY(MRPY5) - IF(RUNI.LT.0D0) RUNI=RUNI+1D0 - RRPY(MRPY4)=RUNI - MRPY4=MRPY4-1 - IF(MRPY4.EQ.0) MRPY4=97 - MRPY5=MRPY5-1 - IF(MRPY5.EQ.0) MRPY5=97 - RRPY98=RRPY98-RRPY99 - IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00 - RUNI=RUNI-RRPY98 - IF(RUNI.LT.0D0) RUNI=RUNI+1D0 - IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130 - -C...Update counters. Random number to output. - MRPY3=MRPY3+1 - IF(MRPY3.EQ.1000000000) THEN - MRPY2=MRPY2+1 - MRPY3=0 - ENDIF - PYR=RUNI - - RETURN - END - -C********************************************************************* - -C...PYRGET -C...Dumps the state of the random number generator on a file -C...for subsequent startup from this state onwards. - - SUBROUTINE PYRGET(LFN,MOVE) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDATR/MRPY(6),RRPY(100) - SAVE /PYDATR/ -C...Local character variable. - CHARACTER CHERR*8 - -C...Backspace required number of records (or as many as there are). - IF(MOVE.LT.0) THEN - NBCK=MIN(MRPY(6),-MOVE) - DO 100 IBCK=1,NBCK - BACKSPACE(LFN,ERR=110,IOSTAT=IERR) - 100 CONTINUE - MRPY(6)=MRPY(6)-NBCK - ENDIF - -C...Unformatted write on unit LFN. - WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5), - &(RRPY(I2),I2=1,100) - MRPY(6)=MRPY(6)+1 - RETURN - -C...Write error. - 110 WRITE(CHERR,'(I8)') IERR - CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='// - &CHERR) - - RETURN - END - -C********************************************************************* - -C...PYRSET -C...Reads a state of the random number generator from a file -C...for subsequent generation from this state onwards. - - SUBROUTINE PYRSET(LFN,MOVE) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDATR/MRPY(6),RRPY(100) - SAVE /PYDATR/ -C...Local character variable. - CHARACTER CHERR*8 - -C...Backspace required number of records (or as many as there are). - IF(MOVE.LT.0) THEN - NBCK=MIN(MRPY(6),-MOVE) - DO 100 IBCK=1,NBCK - BACKSPACE(LFN,ERR=120,IOSTAT=IERR) - 100 CONTINUE - MRPY(6)=MRPY(6)-NBCK - ENDIF - -C...Unformatted read from unit LFN. - NFOR=1+MAX(0,MOVE) - DO 110 IFOR=1,NFOR - READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5), - & (RRPY(I2),I2=1,100) - 110 CONTINUE - MRPY(6)=MRPY(6)+NFOR - RETURN - -C...Write error. - 120 WRITE(CHERR,'(I8)') IERR - CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='// - &CHERR) - - RETURN - END - +*C********************************************************************* +* +*C...PYR +*C...Generates random numbers uniformly distributed between +*C...0 and 1, excluding the endpoints. +* +* FUNCTION PYR(IDUMMY) +* +*C...Double precision and integer declarations. +* IMPLICIT DOUBLE PRECISION(A-H, O-Z) +* IMPLICIT INTEGER(I-N) +* INTEGER PYK,PYCHGE,PYCOMP +*C...Commonblocks. +* COMMON/PYDATR/MRPY(6),RRPY(100) +* SAVE /PYDATR/ +*C...Equivalence between commonblock and local variables. +* EQUIVALENCE (MRPY1,MRPY(1)),(MRPY2,MRPY(2)),(MRPY3,MRPY(3)), +* &(MRPY4,MRPY(4)),(MRPY5,MRPY(5)),(MRPY6,MRPY(6)), +* &(RRPY98,RRPY(98)),(RRPY99,RRPY(99)),(RRPY00,RRPY(100)) +* +*C...Initialize generation from given seed. +* IF(MRPY2.EQ.0) THEN +* IJ=MOD(MRPY1/30082,31329) +* KL=MOD(MRPY1,30082) +* I=MOD(IJ/177,177)+2 +* J=MOD(IJ,177)+2 +* K=MOD(KL/169,178)+1 +* L=MOD(KL,169) +* DO 110 II=1,97 +* S=0D0 +* T=0.5D0 +* DO 100 JJ=1,48 +* M=MOD(MOD(I*J,179)*K,179) +* I=J +* J=K +* K=M +* L=MOD(53*L+1,169) +* IF(MOD(L*M,64).GE.32) S=S+T +* T=0.5D0*T +* 100 CONTINUE +* RRPY(II)=S +* 110 CONTINUE +* TWOM24=1D0 +* DO 120 I24=1,24 +* TWOM24=0.5D0*TWOM24 +* 120 CONTINUE +* RRPY98=362436D0*TWOM24 +* RRPY99=7654321D0*TWOM24 +* RRPY00=16777213D0*TWOM24 +* MRPY2=1 +* MRPY3=0 +* MRPY4=97 +* MRPY5=33 +* ENDIF +* +*C...Generate next random number. +* 130 RUNI=RRPY(MRPY4)-RRPY(MRPY5) +* IF(RUNI.LT.0D0) RUNI=RUNI+1D0 +* RRPY(MRPY4)=RUNI +* MRPY4=MRPY4-1 +* IF(MRPY4.EQ.0) MRPY4=97 +* MRPY5=MRPY5-1 +* IF(MRPY5.EQ.0) MRPY5=97 +* RRPY98=RRPY98-RRPY99 +* IF(RRPY98.LT.0D0) RRPY98=RRPY98+RRPY00 +* RUNI=RUNI-RRPY98 +* IF(RUNI.LT.0D0) RUNI=RUNI+1D0 +* IF(RUNI.LE.0D0.OR.RUNI.GE.1D0) GOTO 130 +* +*C...Update counters. Random number to output. +* MRPY3=MRPY3+1 +* IF(MRPY3.EQ.1000000000) THEN +* MRPY2=MRPY2+1 +* MRPY3=0 +* ENDIF +* PYR=RUNI +* +* RETURN +* END +* +*C********************************************************************* +* +*C...PYRGET +*C...Dumps the state of the random number generator on a file +*C...for subsequent startup from this state onwards. +* +* SUBROUTINE PYRGET(LFN,MOVE) +* +*C...Double precision and integer declarations. +* IMPLICIT DOUBLE PRECISION(A-H, O-Z) +* IMPLICIT INTEGER(I-N) +* INTEGER PYK,PYCHGE,PYCOMP +*C...Commonblocks. +* COMMON/PYDATR/MRPY(6),RRPY(100) +* SAVE /PYDATR/ +*C...Local character variable. +* CHARACTER CHERR*8 +* +*C...Backspace required number of records (or as many as there are). +* IF(MOVE.LT.0) THEN +* NBCK=MIN(MRPY(6),-MOVE) +* DO 100 IBCK=1,NBCK +* BACKSPACE(LFN,ERR=110,IOSTAT=IERR) +* 100 CONTINUE +* MRPY(6)=MRPY(6)-NBCK +* ENDIF +* +*C...Unformatted write on unit LFN. +* WRITE(LFN,ERR=110,IOSTAT=IERR) (MRPY(I1),I1=1,5), +* &(RRPY(I2),I2=1,100) +* MRPY(6)=MRPY(6)+1 +* RETURN +* +*C...Write error. +* 110 WRITE(CHERR,'(I8)') IERR +* CALL PYERRM(18,'(PYRGET:) error when accessing file, IOSTAT ='// +* &CHERR) +* +* RETURN +* END +* +*C********************************************************************* +* +*C...PYRSET +*C...Reads a state of the random number generator from a file +*C...for subsequent generation from this state onwards. +* +* SUBROUTINE PYRSET(LFN,MOVE) +* +*C...Double precision and integer declarations. +* IMPLICIT DOUBLE PRECISION(A-H, O-Z) +* IMPLICIT INTEGER(I-N) +* INTEGER PYK,PYCHGE,PYCOMP +*C...Commonblocks. +* COMMON/PYDATR/MRPY(6),RRPY(100) +* SAVE /PYDATR/ +*C...Local character variable. +* CHARACTER CHERR*8 +* +*C...Backspace required number of records (or as many as there are). +* IF(MOVE.LT.0) THEN +* NBCK=MIN(MRPY(6),-MOVE) +* DO 100 IBCK=1,NBCK +* BACKSPACE(LFN,ERR=120,IOSTAT=IERR) +* 100 CONTINUE +* MRPY(6)=MRPY(6)-NBCK +* ENDIF +* +*C...Unformatted read from unit LFN. +* NFOR=1+MAX(0,MOVE) +* DO 110 IFOR=1,NFOR +* READ(LFN,ERR=120,IOSTAT=IERR) (MRPY(I1),I1=1,5), +* & (RRPY(I2),I2=1,100) +* 110 CONTINUE +* MRPY(6)=MRPY(6)+NFOR +* RETURN +* +*C...Write error. +* 120 WRITE(CHERR,'(I8)') IERR +* CALL PYERRM(18,'(PYRSET:) error when accessing file, IOSTAT ='// +* &CHERR) +* +* RETURN +* END +* C********************************************************************* C...PYROBO