]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwusor.f
splitting of simulation and reconstruction code (T.Kuhr)
[u/mrichter/AliRoot.git] / HERWIG / src / hwusor.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWUSOR.
3
4*CMZ :- -26/04/91 11.11.56 by Bryan Webber
5
6*-- Author : Adapted by Bryan Webber
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWUSOR(A,N,K,IOPT)
11
12C-----------------------------------------------------------------------
13
14C Sort A(N) into ascending order
15
16C IOPT = 1 : return sorted A and index array K
17
18C IOPT = 2 : return index array K only
19
20C-----------------------------------------------------------------------
21
22 DOUBLE PRECISION A(N),B(500)
23
24 INTEGER N,I,J,IOPT,K(N),IL(500),IR(500)
25
26 IF (N.GT.500) CALL HWWARN('HWUSOR',100,*999)
27
28 IL(1)=0
29
30 IR(1)=0
31
32 DO 10 I=2,N
33
34 IL(I)=0
35
36 IR(I)=0
37
38 J=1
39
40 2 IF(A(I).GT.A(J)) GOTO 5
41
42 3 IF(IL(J).EQ.0) GOTO 4
43
44 J=IL(J)
45
46 GOTO 2
47
48 4 IR(I)=-J
49
50 IL(J)=I
51
52 GOTO 10
53
54 5 IF(IR(J).LE.0) GOTO 6
55
56 J=IR(J)
57
58 GOTO 2
59
60 6 IR(I)=IR(J)
61
62 IR(J)=I
63
64 10 CONTINUE
65
66 I=1
67
68 J=1
69
70 GOTO 8
71
72 20 J=IL(J)
73
74 8 IF(IL(J).GT.0) GOTO 20
75
76 9 K(I)=J
77
78 B(I)=A(J)
79
80 I=I+1
81
82 IF(IR(J)) 12,30,13
83
84 13 J=IR(J)
85
86 GOTO 8
87
88 12 J=-IR(J)
89
90 GOTO 9
91
92 30 IF(IOPT.EQ.2) RETURN
93
94 DO 31 I=1,N
95
96 31 A(I)=B(I)
97
98 999 END
99
100CDECK ID>, HWUSQR.
101
102*CMZ :- -26/04/91 11.11.56 by Bryan Webber
103
104*-- Author : Bryan Webber
105
106C-----------------------------------------------------------------------
107
108 FUNCTION HWUSQR(X)
109
110C-----------------------------------------------------------------------
111
112C SQUARE ROOT WITH SIGN RETENTION
113
114C-----------------------------------------------------------------------
115
116 DOUBLE PRECISION HWUSQR,X
117
118 HWUSQR=SIGN(SQRT(ABS(X)),X)
119
120 END