]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gphys/grangi.F
Updated Course TDR geometry for coding convensions and the like
[u/mrichter/AliRoot.git] / GEANT321 / gphys / grangi.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:21:33 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.23 by S.Giani
11*-- Author :
12 SUBROUTINE GRANGI
13C.
14C. ******************************************************************
15C. * *
16C. * Calculates the stopping range , in cm. *
17C. * (i.e. the maximum step due to the continuous energy loss) *
18C. * The stopping range is the integral of the inverse of the *
19C. * DE/DX table. *
20C. * There are 4 tables : electron,positron,muon,proton *
21C. * *
22C. * ==>Called by : GPHYSI *
23C. * Author M.Maire ********* *
24C. * *
25C. ******************************************************************
26C.
27#include "geant321/gcbank.inc"
28#include "geant321/gctrak.inc"
29#include "geant321/gcjloc.inc"
30#include "geant321/gcmulo.inc"
31#include "geant321/gconsp.inc"
32#include "geant321/gcmate.inc"
33#if !defined(CERNLIB_SINGLE)
34 DOUBLE PRECISION RANGMU, RANGEL, RANGPO, RANGPR
35 DOUBLE PRECISION DDXEL1, DDXMU1, DDXPR1, DDXPO1
36 DOUBLE PRECISION DDXEL2, DDXMU2, DDXPR2, DDXPO2
37 DOUBLE PRECISION DDXEL3, DDXMU3, DDXPR3, DDXPO3
38 DOUBLE PRECISION HFACT, ONE, TEN, HLOG10, HFACT2, HFACT3
39#endif
40 PARAMETER (ONE=1,TEN=10)
41*
42 HLOG10 = LOG(TEN)
43*
44 JRANEL = LQ(JMA-15)
45 JRANPO = LQ(JMA-15)+NEK1
46 JRANMU = LQ(JMA-16)
47 JRANPR = LQ(JMA-16)+NEK1
48*
49 IF(Z.LT.1) THEN
50 DO 10 IEKBIN=1,NEK1
51 Q(JRANEL+IEKBIN)=BIG
52 Q(JRANPO+IEKBIN)=BIG
53 Q(JRANMU+IEKBIN)=BIG
54 Q(JRANPR+IEKBIN)=BIG
55 10 CONTINUE
56*
57 ELSE
58 SMALL = 1./BIG
59 JLOSEL = LQ(JMA-1)
60 JLOSPO = LQ(JMA-1)+NEK1
61 JLOSMU = LQ(JMA-2)
62 JLOSPR = LQ(JMA-3)
63*
64 JWSPEL = -1
65 JWSPPO = NEKBIN -1
66 JWSPMU = NEKBIN*2-1
67 JWSPPR = NEKBIN*3-1
68*
69 RANGPO = 0.
70 RANGMU = 0.
71 RANGEL = 0.
72 RANGPR = 0.
73*
74 Q(JRANEL+1)=0.
75 Q(JRANPO+1)=0.
76 Q(JRANMU+1)=0.
77 Q(JRANPR+1)=0.
78*
79 HFACT = ONE/(6.*GEKA)
80*
81 DDXEL3 = ELOW(1)*HLOG10/MAX(Q(JLOSEL+1),SMALL)
82 DDXMU3 = ELOW(1)*HLOG10/MAX(Q(JLOSMU+1),SMALL)
83 DDXPR3 = ELOW(1)*HLOG10/MAX(Q(JLOSPR+1),SMALL)
84 DDXPO3 = ELOW(1)*HLOG10/MAX(Q(JLOSPO+1),SMALL)
85*
86 HFACT2 = HLOG10*TEN**(EKBIN(1)+0.5/GEKA)
87*
88 DO 20 IEKBIN=2,NEK1
89*
90 HFACT3 = ELOW(IEKBIN)*HLOG10
91*
92* *** Electrons
93*
94 DDXEL1 = DDXEL3
95 DDXEL3 = HFACT3/MAX(Q(JLOSEL+IEKBIN),SMALL)
96 DDXEL2 = HFACT2/MAX(WS(JWSPEL+IEKBIN),SMALL)
97 RANGEL = RANGEL+DDXEL1+4.*DDXEL2+DDXEL3
98 Q(JRANEL+IEKBIN)=RANGEL*HFACT
99*
100* *** Positons
101*
102 DDXPO1 = DDXPO3
103 DDXPO3 = HFACT3/MAX(Q(JLOSPO+IEKBIN),SMALL)
104 DDXPO2 = HFACT2/MAX(WS(JWSPPO+IEKBIN),SMALL)
105 RANGPO = RANGPO+DDXPO1+4.*DDXPO2+DDXPO3
106 Q(JRANPO+IEKBIN)=RANGPO*HFACT
107*
108* *** Muons
109*
110 DDXMU1 = DDXMU3
111 DDXMU3 = HFACT3/MAX(Q(JLOSMU+IEKBIN),SMALL)
112 DDXMU2 = HFACT2/MAX(WS(JWSPMU+IEKBIN),SMALL)
113 RANGMU = RANGMU+DDXMU1+4.*DDXMU2+DDXMU3
114 Q(JRANMU+IEKBIN)=RANGMU*HFACT
115*
116* *** Protons
117*
118 DDXPR1 = DDXPR3
119 DDXPR3 = HFACT3/MAX(Q(JLOSPR+IEKBIN),SMALL)
120 DDXPR2 = HFACT2/MAX(WS(JWSPPR+IEKBIN),SMALL)
121 RANGPR = RANGPR+DDXPR1+4.*DDXPR2+DDXPR3
122 Q(JRANPR+IEKBIN)=RANGPR*HFACT
123*
124 HFACT2 = HLOG10*TEN**(EKBIN(1)+(IEKBIN-0.5)/GEKA)
125*
126 20 CONTINUE
127 ENDIF
128*
129 END