1 | SUBROUTINE JADACH( ECMJAD,JADFLG )
|
---|
2 |
|
---|
3 | C-----------------------------------------------------------------------
|
---|
4 | C JADACH (FILTER)
|
---|
5 | C
|
---|
6 | C ADJUSTS THE RAPIDITIES OF ALL SECONDARIES SUCH THAT
|
---|
7 | C ENERGY AND LONGITUDINAL MOMENTUM ARE CONSERVED AT THE SAME TIME
|
---|
8 | C THE ALGORITHM IS TAKEN FROM S.JADACH, COM.PHYS.COMM. 9 (1975) 297
|
---|
9 | C THE ROUTINE MUST BE CALLED AFTER THE PT IS CONSERVED AND BEFORE
|
---|
10 | C THE TRANSFORMATION TO THE LAB SYSTEM IS DONE
|
---|
11 | C THIS SUBROUTINE IS CALLED FROM HDPM
|
---|
12 | C ARGUMENTS:
|
---|
13 | C ECMJAD = CM ENERGY IN THE PROJECTILE -- GNU*NUCLEONS SYSTEM
|
---|
14 | C JADFLG = 0 JADACH FILTER CORRECTLY ENDED
|
---|
15 | C = 1 BAD RAPIDITIES, SELECT RAPIDITIES AGAIN
|
---|
16 | C =-1 SUM OF TRANSVERSE MASSES EXCEEDS AVAILABLE CM ENERGY
|
---|
17 | C-----------------------------------------------------------------------
|
---|
18 |
|
---|
19 | IMPLICIT DOUBLE PRECISION (A-H,O-Z)
|
---|
20 | *KEEP,INTER.
|
---|
21 | COMMON /INTER/ AVCH,AVCH3,DC0,DLOG,DMLOG,ECMDIF,ECMDPM,ELAB,
|
---|
22 | * FNEUT,FNEUT2,GNU,PLAB,POSC2,POSC3,POSN2,POSN3,
|
---|
23 | * RC3TO2,S,SEUGF,SEUGP,SLOG,SLOGSQ,SMLOG,
|
---|
24 | * WIDC2,WIDC3,WIDN2,WIDN3,YCM,YY0,ZN,
|
---|
25 | * IDIF,ITAR
|
---|
26 | DOUBLE PRECISION AVCH,AVCH3,DC0,DLOG,DMLOG,ECMDIF,ECMDPM,ELAB,
|
---|
27 | * FNEUT,FNEUT2,GNU,PLAB,POSC2,POSC3,POSN2,POSN3,
|
---|
28 | * RC3TO2,S,SEUGF,SEUGP,SLOG,SLOGSQ,SMLOG,
|
---|
29 | * WIDC2,WIDC3,WIDN2,WIDN3,YCM,YY0,ZN
|
---|
30 | INTEGER IDIF,ITAR
|
---|
31 | *KEEP,NEWPAR.
|
---|
32 | COMMON /NEWPAR/ EA,PT2,PX,PY,TMAS,YR,ITYP,
|
---|
33 | * IA1,IA2,IB1,IB2,IC1,IC2,ID1,ID2,IE1,IE2,IF1,IF2,
|
---|
34 | * IG1,IG2,IH1,IH2,II1,II2,IJ1,NTOT
|
---|
35 | DOUBLE PRECISION EA(3000),PT2(3000),PX(3000),PY(3000),TMAS(3000),
|
---|
36 | * YR(3000)
|
---|
37 | INTEGER ITYP(3000),
|
---|
38 | * IA1,IA2,IB1,IB2,IC1,IC2,ID1,ID2,IE1,IE2,IF1,IF2,
|
---|
39 | * IG1,IG2,IH1,IH2,II1,II2,IJ1,NTOT
|
---|
40 | *KEEP,PAM.
|
---|
41 | COMMON /PAM/ PAMA,SIGNUM
|
---|
42 | DOUBLE PRECISION PAMA(6000),SIGNUM(6000)
|
---|
43 | *KEEP,RUNPAR.
|
---|
44 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
---|
45 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
---|
46 | * MONIOU,MDEBUG,NUCNUC,
|
---|
47 | * CETAPE,
|
---|
48 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
49 | * N1STTR,MDBASE,
|
---|
50 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
51 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
52 | * ,GHEISH,GHESIG
|
---|
53 | COMMON /RUNPAC/ DSN,HOST,USER
|
---|
54 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
---|
55 | REAL STEPFC
|
---|
56 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
---|
57 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
58 | * N1STTR,MDBASE
|
---|
59 | INTEGER CETAPE
|
---|
60 | CHARACTER*79 DSN
|
---|
61 | CHARACTER*20 HOST,USER
|
---|
62 |
|
---|
63 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
64 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
65 | * ,GHEISH,GHESIG
|
---|
66 | *KEND.
|
---|
67 |
|
---|
68 | DIMENSION YRJAD(3000)
|
---|
69 | DATA EPS / 1.D-7 /
|
---|
70 | C-----------------------------------------------------------------------
|
---|
71 |
|
---|
72 | IF ( DEBUG ) WRITE(MDEBUG,*) 'JADACH: NTOT=',NTOT
|
---|
73 |
|
---|
74 | JADFLG = 0
|
---|
75 |
|
---|
76 | C SUM UP TRANSVERSE MOMENTA AND COMPARE WITH AVAILABLE C.M.ENERGY
|
---|
77 | STMAS = 0.D0
|
---|
78 | ECMI = 1.D0 / ECMJAD
|
---|
79 | DO 4 I = 1,NTOT
|
---|
80 | STMAS = STMAS + TMAS(I)
|
---|
81 | YRJAD(I) = YR(I)
|
---|
82 | 4 CONTINUE
|
---|
83 | REST = ( ECMJAD - STMAS ) * ECMI
|
---|
84 | IF ( REST .LE. 0.D0 ) THEN
|
---|
85 | C SUMMED TRANSVERSE MASS > AVAILABLE C.M. ENERGY
|
---|
86 | JADFLG = -1
|
---|
87 | RETURN
|
---|
88 | ENDIF
|
---|
89 | FACT = 1.5D0 / REST
|
---|
90 | AA = 1.D0
|
---|
91 | DIFOLD = 0.D0
|
---|
92 | ICOUNT = 0
|
---|
93 | C OPTIMIZATION LOOP TO DEFINE PARAMETER AA
|
---|
94 | 1 CONTINUE
|
---|
95 | ICOUNT = ICOUNT + 1
|
---|
96 | IF ( ICOUNT .GE. 50 ) GOTO 999
|
---|
97 | C FORM SUMS S1 AND S2
|
---|
98 | S1 = 0.D0
|
---|
99 | S2 = 0.D0
|
---|
100 | DO 5 I = 1,NTOT
|
---|
101 | EXPO = EXP( AA * YR(I) )
|
---|
102 | S1 = S1 + TMAS(I) * ECMI * EXPO
|
---|
103 | S2 = S2 + TMAS(I) * ECMI / EXPO
|
---|
104 | 5 CONTINUE
|
---|
105 | DIFF = 0.1D0 * LOG(S1*S2)
|
---|
106 | C ACCELERATING OF CONVERGENCE IF NO CHANGE OF SIGN IN DIFF
|
---|
107 | IF ( DIFOLD*DIFF .GE. 0.D0 ) DIFF = DIFF * FACT
|
---|
108 | DIFOLD = DIFF
|
---|
109 | IF ( DEBUG ) WRITE(MDEBUG,*) ' DIFF=',SNGL(DIFF)
|
---|
110 | AA = AA * MAX( 0.1D0, (1.D0 - DIFF) )
|
---|
111 | IF ( ABS(DIFF) .GT. EPS ) GOTO 1
|
---|
112 |
|
---|
113 | C ITERATION HAS CONVERGED, CALCULATE PARAMETER BB
|
---|
114 | BB = 0.5D0 * LOG(S2/S1)
|
---|
115 |
|
---|
116 | IF ( DEBUG ) WRITE (MDEBUG,110) ICOUNT,STMAS,REST
|
---|
117 | 110 FORMAT(' ICOUNT, STMAS, REST = ',I5,2E13.5,/
|
---|
118 | * ' NUM ITYP TMAS YR(OLD) YR(NEW)')
|
---|
119 | C CORRECT RAPIDITIES
|
---|
120 | DO 10 I = 1,NTOT
|
---|
121 | YR(I) = AA * YR(I) + BB
|
---|
122 | IF ( DEBUG ) WRITE(MDEBUG,111) I,ITYP(I),TMAS(I),YRJAD(I),YR(I)
|
---|
123 | 111 FORMAT(' ',I4,I6,F12.5,2F16.8)
|
---|
124 | C IMPOSSIBLE RAPIDITY, DETERMINE AGAIN THE RAPIDITIES
|
---|
125 | IF ( ABS(YR(I)) .GT. LOG(ECMJAD/PAMA(ITYP(I))) ) GOTO 999
|
---|
126 | 10 CONTINUE
|
---|
127 | RETURN
|
---|
128 |
|
---|
129 |
|
---|
130 | C ERROR EXIT
|
---|
131 | 999 JADFLG = 1
|
---|
132 | C NO CONVERGENCE AFTER 50 ITERATIONS OR IMPOSSIBLE RAPIDITY
|
---|
133 | RETURN
|
---|
134 |
|
---|
135 | END
|
---|