Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gphys / gsynit.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1999/05/18 15:55:20  fca
6 * AliRoot sources
7 *
8 * Revision 1.1.1.1  1995/10/24 10:21:35  cernlib
9 * Geant
10 *
11 *
12 #include "geant321/pilot.h"
13 #if defined(CERNLIB_NEVER)
14 *CMZ :  3.21/02 29/03/94  15.41.23  by  S.Giani
15 *-- Author :
16       SUBROUTINE GSYNIT
17 C
18 C  Preperation of synchrotron radiation tables.
19 C  This routine can be used to compute the YT and FTI used
20 C  in GSYNGE.
21 C  Author: Igor Gavrilenko
22 C
23       COMMON /SYNTAB/ YT(54),FT(54),FTI(53)
24       EXTERNAL BK53,BKS53
25       DOUBLE PRECISION YM,YMA,EPS,XX
26 C...
27       DATA EPS/.0001/
28 C...
29       L = 0
30       YS = .000001
31       DO 20 I = 1,6
32          YS = YS*10.
33          DO 10 J = 1,9,1
34             L = L+1
35             YM = J*YS
36             YT(L) = YM
37             YMA = YM+YS
38             IF(L.EQ.54) YMA = 20.
39             FT(L) = DGAUSS(BK53,YM,YMA,EPS)
40    10    CONTINUE
41    20 CONTINUE
42 C...
43       DO 30 I = 53,1,-1
44          FT(I) = FT(I)+FT(I+1)
45    30 CONTINUE
46 C...
47       DO 40 I = 53,1,-1
48          YM = YT(I)
49          YMA = YT(I+1)
50          IF(I.LT.53) FTI(I) = DGAUSS(BKS53,YM,YMA,EPS)+FTI(I+1)
51          IF(I.EQ.53) FTI(I) = DGAUSS(BKS53,YM,YMA,EPS)
52    40 CONTINUE
53 C...
54       E N D
55 C-------------------------------------------------------
56       DOUBLE PRECISION FUNCTION B K 5 3 (X)
57 C
58       DOUBLE PRECISION X
59 C...
60       BK53 = 4./(3.*X)*DBSKR3(X,2)+DBSKR3(X,1)
61       RETURN
62       E N D
63 C------------------------------------------------------
64       DOUBLE PRECISION FUNCTION B K S 5 3 (X)
65 C
66       COMMON /SYNTAB/ YT(54),FT(54),FTI(53)
67       DOUBLE PRECISION X
68 C...
69       IF(X.GT.YT(1)) GO TO 10
70       BKS53 = FT(1)
71       GO TO 60
72 C...
73    10 IF(X.LT.YT(54)) GO TO 20
74       BKS53 = 0.
75       RETURN
76 C...
77    20 K1 = 1
78       K2 = 54
79    30 K = (K1+K2)/2
80       IF(X.GT.YT(K)) K1 = K
81       IF(X.LT.YT(K)) K2 = K
82       IF(X.NE.YT(K)) GO TO 40
83       BKS53 = FT(K)
84       GO TO 60
85 C...
86    40 IF(K2-K1.GT.1) GO TO 30
87       F1 = FT(K1)
88       F2 = FT(K2)
89       X1 = YT(K1)
90       X2 = YT(K2)
91 C...
92       IF(X.LE.1.) THEN
93          X1 = LOG(X1)
94          X2 = LOG(X2)
95          B = F1+(F2-F1)/(X2-X1)*(LOG(X)-X1)
96          GO TO 50
97       ENDIF
98 C...
99       IF(X.GT.1.) THEN
100          F1 = LOG(F1)
101          F2 = LOG(F2)
102          B = F1+(F2-F1)/(X2-X1)*(X-X1)
103          B = EXP(B)
104       ENDIF
105 C...
106    50 BKS53 = B
107    60 BKS53 = .1909859*BKS53
108       RETURN
109       E N D
110 #else
111       SUBROUTINE GSYNIT_DUMMY
112       END
113 #endif