5 * Revision 1.1.1.1 1995/10/24 10:21:23 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.21 by S.Giani
14 C. ******************************************************************
16 C. * Calculates the coefficients for the energy loss *
18 C. * There are 4 tables : electron,positron,muon,proton *
20 C. * ==>Called by : GPHYSI *
21 C. * Author F.Carminati ********* *
23 C. ******************************************************************
25 #include "geant321/gcbank.inc"
26 #include "geant321/gctrak.inc"
27 #include "geant321/gcjloc.inc"
28 #include "geant321/gcmulo.inc"
29 #include "geant321/gconsp.inc"
30 #include "geant321/gcmate.inc"
31 #if !defined(CERNLIB_SINGLE)
32 DOUBLE PRECISION CX1,CX2,CX3,CY1,CY2,CY3,CDEN1,CDEN2,CDEN3
33 DOUBLE PRECISION ACOEFF,BCOEFF,CCOEFF,XRAT,CCOEF1,CCOEF3
34 DOUBLE PRECISION SQEPSM,CFACT
35 PARAMETER (EPSMAC=1E-6)
37 #if defined(CERNLIB_SINGLE)
38 PARAMETER (EPSMAC=1E-11)
41 SQEPSM = MAX(1.,91./NEK1)*10.*SQRT(EPSMAC)
60 IF(CX1.NE.CX2.AND.CX1.NE.CX3.AND.CX2.NE.CX3) THEN
61 CDEN1 = 1./((CX1-CX2)*(CX1-CX3))
62 CDEN2 = 1./((CX2-CX1)*(CX2-CX3))
63 CDEN3 = 1./((CX3-CX1)*(CX3-CX2))
64 ACOEFF = CY1*CDEN1+CY2*CDEN2+CY3*CDEN3
65 BCOEFF = -(CY1*(CX2+CX3)*CDEN1+CY2*(CX1+CX3)*CDEN2+
66 + CY3*(CX1+CX2)*CDEN3)
67 CCOEFF = CY1*CX2*CX3*CDEN1+CX1*CY2*CX3*CDEN2+
71 ELSEIF(BCOEFF.GT.0.) THEN
72 CFACT = SQRT(ABS(ACOEFF))
73 CCOEF1 = SQRT(ABS(CCOEFF-CY1))*CFACT
74 CCOEF3 = SQRT(ABS(CCOEFF-CY3))*CFACT
75 XRAT = MAX(CCOEF1,CCOEF3)/BCOEFF
79 IF(XRAT.LE.SQEPSM) THEN
80 Q(JCOEF+IECOEF+1) = 0.
81 Q(JCOEF+IECOEF+2) = BCOEFF
82 Q(JCOEF+IECOEF+3) = CCOEFF
84 Q(JCOEF+IECOEF+1) = ACOEFF
85 Q(JCOEF+IECOEF+2) = 0.5*BCOEFF/ACOEFF
86 Q(JCOEF+IECOEF+3) = CCOEFF/ACOEFF
92 JRANG = LQ(JMA-15) + NEK1
93 JCOEF = LQ(JMA-17) +3*NEK1
98 IF(CX1.NE.CX2.AND.CX1.NE.CX3.AND.CX2.NE.CX3) THEN
99 CDEN1 = 1./((CX1-CX2)*(CX1-CX3))
100 CDEN2 = 1./((CX2-CX1)*(CX2-CX3))
101 CDEN3 = 1./((CX3-CX1)*(CX3-CX2))
102 ACOEFF = CY1*CDEN1+CY2*CDEN2+CY3*CDEN3
103 BCOEFF = -(CY1*(CX2+CX3)*CDEN1+CY2*(CX1+CX3)*CDEN2+
104 + CY3*(CX1+CX2)*CDEN3)
105 CCOEFF = CY1*CX2*CX3*CDEN1+CX1*CY2*CX3*CDEN2+
107 IF(ACOEFF.EQ.0.) THEN
109 ELSEIF(BCOEFF.GT.0.) THEN
110 CFACT = SQRT(ABS(ACOEFF))
111 CCOEF1 = SQRT(ABS(CCOEFF-CY1))*CFACT
112 CCOEF3 = SQRT(ABS(CCOEFF-CY3))*CFACT
113 XRAT = MAX(CCOEF1,CCOEF3)/BCOEFF
117 IF(XRAT.LE.SQEPSM) THEN
118 Q(JCOEF+IECOEF+1) = 0.
119 Q(JCOEF+IECOEF+2) = BCOEFF
120 Q(JCOEF+IECOEF+3) = CCOEFF
122 Q(JCOEF+IECOEF+1) = ACOEFF
123 Q(JCOEF+IECOEF+2) = 0.5*BCOEFF/ACOEFF
124 Q(JCOEF+IECOEF+3) = CCOEFF/ACOEFF
136 IF(CX1.NE.CX2.AND.CX1.NE.CX3.AND.CX2.NE.CX3) THEN
137 CDEN1 = 1./((CX1-CX2)*(CX1-CX3))
138 CDEN2 = 1./((CX2-CX1)*(CX2-CX3))
139 CDEN3 = 1./((CX3-CX1)*(CX3-CX2))
140 ACOEFF = CY1*CDEN1+CY2*CDEN2+CY3*CDEN3
141 BCOEFF = -(CY1*(CX2+CX3)*CDEN1+CY2*(CX1+CX3)*CDEN2+
142 + CY3*(CX1+CX2)*CDEN3)
143 CCOEFF = CY1*CX2*CX3*CDEN1+CX1*CY2*CX3*CDEN2+
145 IF(ACOEFF.EQ.0.) THEN
147 ELSEIF(BCOEFF.GT.0.) THEN
148 CFACT = SQRT(ABS(ACOEFF))
149 CCOEF1 = SQRT(ABS(CCOEFF-CY1))*CFACT
150 CCOEF3 = SQRT(ABS(CCOEFF-CY3))*CFACT
151 XRAT = MAX(CCOEF1,CCOEF3)/BCOEFF
155 IF(XRAT.LE.SQEPSM) THEN
156 Q(JCOEF+IECOEF+1) = 0.
157 Q(JCOEF+IECOEF+2) = BCOEFF
158 Q(JCOEF+IECOEF+3) = CCOEFF
160 Q(JCOEF+IECOEF+1) = ACOEFF
161 Q(JCOEF+IECOEF+2) = 0.5*BCOEFF/ACOEFF
162 Q(JCOEF+IECOEF+3) = CCOEFF/ACOEFF
168 JRANG = LQ(JMA-16) + NEK1
169 JCOEF = LQ(JMA-18) +3*NEK1
174 IF(CX1.NE.CX2.AND.CX1.NE.CX3.AND.CX2.NE.CX3) THEN
175 CDEN1 = 1./((CX1-CX2)*(CX1-CX3))
176 CDEN2 = 1./((CX2-CX1)*(CX2-CX3))
177 CDEN3 = 1./((CX3-CX1)*(CX3-CX2))
178 ACOEFF = CY1*CDEN1+CY2*CDEN2+CY3*CDEN3
179 BCOEFF = -(CY1*(CX2+CX3)*CDEN1+CY2*(CX1+CX3)*CDEN2+
180 + CY3*(CX1+CX2)*CDEN3)
181 CCOEFF = CY1*CX2*CX3*CDEN1+CX1*CY2*CX3*CDEN2+
183 IF(ACOEFF.EQ.0.) THEN
185 ELSEIF(BCOEFF.GT.0.) THEN
186 CFACT = SQRT(ABS(ACOEFF))
187 CCOEF1 = SQRT(ABS(CCOEFF-CY1))*CFACT
188 CCOEF3 = SQRT(ABS(CCOEFF-CY3))*CFACT
189 XRAT = MAX(CCOEF1,CCOEF3)/BCOEFF
193 IF(XRAT.LE.SQEPSM) THEN
194 Q(JCOEF+IECOEF+1) = 0.
195 Q(JCOEF+IECOEF+2) = BCOEFF
196 Q(JCOEF+IECOEF+3) = CCOEFF
198 Q(JCOEF+IECOEF+1) = ACOEFF
199 Q(JCOEF+IECOEF+2) = 0.5*BCOEFF/ACOEFF
200 Q(JCOEF+IECOEF+3) = CCOEFF/ACOEFF