-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathgdrele.F
85 lines (85 loc) · 2.18 KB
/
gdrele.F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
*
* $Id$
*
* $Log: gdrele.F,v $
* Revision 1.1.1.1 2002/07/24 15:56:25 rdm
* initial import into CVS
*
* Revision 1.1.1.1 2002/06/16 15:18:40 hristov
* Separate distribution of Geant3
*
* Revision 1.1.1.1 1999/05/18 15:55:20 fca
* AliRoot sources
*
* Revision 1.1.1.1 1995/10/24 10:21:24 cernlib
* Geant
*
*
#include "geant321/pilot.h"
*CMZ : 3.21/02 29/03/94 15.41.21 by S.Giani
*-- Author :
SUBROUTINE G3DRELE(EEL,CHARGE,JMA,DEDX)
C.
C. ******************************************************************
C. * *
C. * Compute ion losses for electron/positron *
C. * *
C. * ==>Called by : G3DRELA *
C. * Author G.Patrick ********* *
C. * *
C. ******************************************************************
C.
#include "geant321/gcbank.inc"
#include "geant321/gconsp.inc"
#include "geant321/gccuts.inc"
C
DATA CONS/0.153536E-3/
C.
C. ------------------------------------------------------------------
C.
JPROB=LQ(JMA-4)
C
GAM=EEL/EMASS + 1.
GAM2=GAM*GAM
T=GAM-1.
DEDX=0.
IF(T.LE.0.)GO TO 99
TCME=DCUTE/EMASS
BET2=1.-1./GAM2
C ------------------------------
IF(CHARGE.GT.0.) THEN
Y=1./(1.+GAM)
D=TCME
IF(T.LT.TCME) D=T
D2=D*D/2.
D3=2.*D2*D/3.
D4=D2*D2
F=LOG(T*D)-BET2*(T+2.*D-Y*(3.*D2
* +Y*(D-D3+Y*(D2-T*D3+D4))))/T
C
ELSE
D=TCME
IF(T.LT.2.*TCME) D=0.5*T
F=-1.-BET2+LOG((T-D)*D)+T/(T-D)
* +(0.5*D*D+(1.+2.*T)*LOG(1.-D/T))/GAM2
ENDIF
C
POTL=Q(JPROB+11)
FAC=Q(JPROB+12)
C=Q(JPROB+13)
X0=Q(JPROB+14)
X1=Q(JPROB+15)
AA=Q(JPROB+16)
C
X=LOG(GAM2-1.)/4.606
DEL=0.
IF(X.GT.X0)THEN
DEL=4.606*X+C
IF(X.LE.X1)DEL=DEL+AA*(X1-X)**3.
ENDIF
C
DEDX=CONS*FAC*(LOG(2.*T+4.)-2.*POTL+F-DEL)/BET2
IF(DEDX.LT.0.)DEDX=0.
C
99 RETURN
END