]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 1 | SUBROUTINE PHORIN |
2 | C.---------------------------------------------------------------------- | |
3 | C. | |
4 | C. PHOTOS: PHOton radiation in decays RANdom number generator init | |
5 | C. | |
6 | C. Purpose: Initialse PHORAN with the user specified seeds in the | |
7 | C. array ISEED. For details see also: F. James CERN DD- | |
8 | C. Report November 1988. | |
9 | C. | |
10 | C. Input Parameters: ISEED(*) | |
11 | C. | |
12 | C. Output Parameters: URAN, CRAN, CDRAN, CMRAN, I97, J97 | |
13 | C. | |
14 | C. Author(s): B. van Eijk and F. James Created at: 27/09/89 | |
15 | C. Last Update: 22/02/90 | |
16 | C. | |
17 | C.---------------------------------------------------------------------- | |
18 | IMPLICIT NONE | |
19 | DOUBLE PRECISION DATA | |
20 | REAL*8 S,T | |
21 | INTEGER I,IS1,IS2,IS3,IS4,IS5,J | |
22 | INTEGER ISEED,I97,J97 | |
23 | REAL*8 URAN,CRAN,CDRAN,CMRAN | |
24 | COMMON/PHSEED/ISEED(2),I97,J97,URAN(97),CRAN,CDRAN,CMRAN | |
25 | C-- | |
26 | C-- Check value range of seeds | |
27 | IF ((ISEED(1).LT.0).OR.(ISEED(1).GE.31328)) THEN | |
28 | DATA=ISEED(1) | |
29 | CALL PHOERR(8,'PHORIN',DATA) | |
30 | ENDIF | |
31 | IF ((ISEED(2).LT.0).OR.(ISEED(2).GE.30081)) THEN | |
32 | DATA=ISEED(2) | |
33 | CALL PHOERR(9,'PHORIN',DATA) | |
34 | ENDIF | |
35 | C-- | |
36 | C-- Calculate Marsaglia and Zaman seeds (by F. James) | |
37 | IS1=MOD(ISEED(1)/177,177)+2 | |
38 | IS2=MOD(ISEED(1),177)+2 | |
39 | IS3=MOD(ISEED(2)/169,178)+1 | |
40 | IS4=MOD(ISEED(2),169) | |
41 | DO 20 I=1,97 | |
42 | S=0.D0 | |
43 | T=0.5D0 | |
44 | DO 10 J=1,24 | |
45 | IS5=MOD (MOD(IS1*IS2,179)*IS3,179) | |
46 | IS1=IS2 | |
47 | IS2=IS3 | |
48 | IS3=IS5 | |
49 | IS4=MOD(53*IS4+1,169) | |
50 | IF (MOD(IS4*IS5,64).GE.32) S=S+T | |
51 | 10 T=0.5D0*T | |
52 | 20 URAN(I)=S | |
53 | CRAN=362436.D0/16777216.D0 | |
54 | CDRAN=7654321.D0/16777216.D0 | |
55 | CMRAN=16777213.D0/16777216.D0 | |
56 | I97=97 | |
57 | J97=33 | |
58 | RETURN | |
59 | END |