]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/jimmy/divon4/modchl.F
make scan of dEdx blocks consistent, there is only one block
[u/mrichter/AliRoot.git] / HERWIG / jimmy / divon4 / modchl.F
CommitLineData
ef94df36 1*CMZ : 23/08/93 13.30.11 by Jonathan Butterworth
2*-- Author :
3 SUBROUTINE MODCHL (N,NADIM,AHESS,ALPHA,Z,IFAIL)
4 INTEGER N, NADIM, IFAIL
5 DOUBLE PRECISION ALPHA
6 DOUBLE PRECISION AHESS(NADIM,N), Z(N)
7 INTEGER I, IB, IP1, J, K
8 DOUBLE PRECISION A, BETA, DB, DI, GAMMA, P1, RMAX, T, W
9 SAVE
10 RMAX= 1.0D+37
11 IFAIL=0
12 A=ALPHA
13 K=0
14 DO 50 I=1,N
15 P1=Z(I)
16 DI=AHESS(I,I)
17 T=A*P1
18 DB=DI+T*P1
19 AHESS(I,I)=DB
20 IF(DB.GE.1.0D+0) GOTO 10
21 IF(DB.GT.0.0D+0.AND.DI.LE.RMAX*DB) GOTO 10
22 IFAIL=1
23 RETURN
24 10 GAMMA=DI/DB
25 BETA=T/DB
26 A=A*GAMMA
27 K=K+I
28 J=K
29 IF(I.EQ.N) GOTO 50
30 IP1=I+1
31 IF(GAMMA.GE.2.5D-1) GOTO 30
32 DO 20 IB=IP1,N
33 T=AHESS(IB,I)
34 AHESS(IB,I)=T*GAMMA+BETA*Z(IB)
35 Z(IB)=Z(IB)-P1*T
36 20 CONTINUE
37 GOTO 50
38 30 DO 40 IB=IP1,N
39 T=AHESS(IB,I)
40 W=Z(IB)-P1*T
41 Z(IB)=W
42 AHESS(IB,I)=BETA*W+T
43 40 CONTINUE
44 50 CONTINUE
45 RETURN
46 END