source: trunk/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F@ 1036

Last change on this file since 1036 was 807, checked in by garnier, 17 years ago

update

File size: 6.4 KB
Line 
1
2 SUBROUTINE UGEOM
3*
4* *** Define user geometry set up
5*
6#include "calor.inc"
7#include "geant321/gcbank.inc"
8*
9 DIMENSION PAR(3)
10
11 DIMENSION Aair(2),Zair(2),Wair(2)
12 DIMENSION ACO2(2),ZCO2(2),WCO2(2)
13 DIMENSION AH2O(2),ZH2O(2),WH2O(2)
14 DIMENSION AG10(4),ZG10(4),WG10(4)
15 DIMENSION Asci(2),Zsci(2),Wsci(2)
16 DIMENSION ACsI(2),ZCsI(2),WCsI(2)
17*
18 CHARACTER*4 volnam
19 CHARACTER*20 matnam
20*
21* *** Air compound parameters
22 DATA Aair/14.01, 16.00/
23 DATA Zair/ 7. , 8. /
24 DATA Wair/ 0.7 , 0.3 /
25*
26* *** CO2 compound parameters
27 DATA ACO2/12.01, 16.00/
28 DATA ZCO2/ 6. , 8. /
29 DATA WCO2/ 1. , 2. /
30*
31* *** Water compound parameters
32 DATA AH2O/ 1.01, 16.00/
33 DATA ZH2O/ 1. , 8. /
34 DATA WH2O/ 2. , 1. /
35*
36* *** G10 compound parameters
37 DATA AG10/ 1.01, 12.00, 16.00, 28.00/
38 DATA ZG10/ 1. , 6. , 8. , 14. /
39 DATA WG10/ 3. , 3. , 2. , 1. /
40*
41* *** Scintillator compound parameters
42 DATA Asci/12.01, 1.01/
43 DATA Zsci/ 6. , 1. /
44 DATA Wsci/ 9. , 10. /
45*
46* *** CsI compound parameters
47 DATA ACsI/ 126.90, 132.90/
48 DATA ZCsI/ 53. , 55. /
49 DATA WCsI/ 1. , 1. /
50*
51* *** Defines USER perticular materials
52 CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair)
53 CALL GSMIXT( 2,'CO2 gas' , ACO2 ,ZCO2, 27.0E-3,-2 , WCO2)
54 CALL GSMATE( 3,'H2 Liquid', 1.008, 1., 0.0708 , 865., 790., 0,0)
55 CALL GSMIXT( 4,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O)
56 CALL GSMATE( 5,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0)
57 CALL GSMATE( 6,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0)
58 CALL GSMATE( 7,'Iron ', 55.85, 26., 7.87 , 1.76, 17.1, 0,0)
59 CALL GSMATE( 8,'Lead ',207.19, 82., 11.35 , 0.56, 18.5, 0,0)
60 CALL GSMATE( 9,'Uranium ',238.03, 92., 18.95 , 0.32, 12. , 0,0)
61 CALL GSMATE(10,'Silicon ', 28.09, 14., 2.33 , 9.36, 45.5, 0,0)
62 CALL GSMATE(11,'Tungsten ',183.85, 74., 19.30 , 0.35, 9.6, 0,0)
63 CALL GSMIXT(12,'NemaG10' , AG10 ,ZG10, 1.7 ,-4 , WG10)
64 CALL GSMATE(13,'Copper ', 63.55, 29., 8.96 , 1.43, 15.0, 0,0)
65 CALL GSMIXT(14,'Scintilla', Asci ,Zsci, 1.032 ,-2 , Wsci)
66 CALL GSMATE(15,'Gold ',196.97, 79., 19.32 , 0.33, 9.6, 0,0)
67 CALL GSMIXT(16,'CsI ', ACsI ,ZCsI, 4.534 ,-2 , WCsI)
68*
69* *** overwrite the computed radlength of some mixture
70 JMA = LQ(JMATE-14)
71 Q(JMA+9) = 42.549
72*
73*
74* *** Defines USER tracking media parameters
75 IFIELD = 0
76 IF (Field.GT.0.) IFIELD = 3
77 FIELDM = 10*Field
78 TMAXFD = 10.0
79 STEMAX = 1000.
80 IF (stepmax.gt.0.) STEMAX = stepmax
81 DEEMAX = 0.20
82 EPSIL = 0.001
83 STMIN = 0.010
84*
85 do k=1,NbAbsor
86 CALL GSTMED( k,'absorber',materAbs(k), 0 ,IFIELD,FIELDM,TMAXFD,
87 * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 )
88 enddo
89*
90* *** set specific bcute/dcute (if any)
91 do k=1,4*NbAbsor,4
92 itm = prodcut(k) + 0.01
93 if(itm.ge.1) then
94 call GSTPAR(itm,'BCUTE' ,prodcut(k+1))
95 call GSTPAR(itm,'BCUTM' ,prodcut(k+1))
96 call GSTPAR(itm,'DCUTE' ,prodcut(k+2))
97 call GSTPAR(itm,'DCUTM' ,prodcut(k+2))
98 call GSTPAR(itm,'PPCUTM',prodcut(k+3))
99 endif
100 enddo
101*
102 nudef = NbAbsor+1
103 CALL GSTMED( nudef,'default' , 1 , 0 ,IFIELD,FIELDM,TMAXFD,
104 * STEMAX,DEEMAX,EPSIL,STMIN, 0 , 0 )
105*
106*
107* *** calor dimensions
108 thLayer = 0.
109 do k=1,NbAbsor
110 thLayer = thLayer + thickAbs(k)
111 enddo
112 calorX = NbLayer*thLayer
113 worldX = 1.2*calorX
114 worldYZ = 1.2*calorYZ
115*
116* *** world
117 PAR(1) = worldX /2.
118 PAR(2) = worldYZ/2.
119 PAR(3) = worldYZ/2.
120 CALL GSVOLU('worl','BOX ',nudef,PAR,3,IVOL)
121*
122* *** calorimeter
123 PAR(1) = calorX /2.
124 PAR(2) = calorYZ/2.
125 PAR(3) = calorYZ/2.
126 CALL GSVOLU('calo','BOX ',nudef,PAR,3,IVOL)
127 CALL GSPOS ('calo',1,'worl',0.,0.,0.,0,'ONLY')
128*
129* *** layers
130 CALL GSDVN ('layr','calo',NbLayer,1)
131*
132* *** absorbers
133 volnam = 'abs'
134 xfront = -0.5*thLayer
135 do k=1,NbAbsor
136 PAR(1) = thickAbs(k)/2.
137 PAR(2) = calorYZ/2.
138 PAR(3) = calorYZ/2.
139 volnam(4:4) = char(ichar('0')+k)
140 CALL GSVOLU(volnam,'BOX ',k,PAR,3,IVOL)
141 xcenter = xfront + 0.5*thickAbs(k)
142 CALL GSPOS (volnam,1,'layr',xcenter,0.,0.,0,'ONLY')
143 xfront = xfront + thickAbs(k)
144 enddo
145*
146* *** Close geometry banks. (mandatory system routine)
147 CALL GGCLOS
148*
149* *** print geometry
150 PRINT 749
151 PRINT 751,NbLayer
152 do k=1,NbAbsor
153 call GFMATE (materAbs(k),matnam,dua,duz,dud,dur,dui,udu,idu)
154 PRINT 752,matnam,thickAbs(k)
155 enddo
156 PRINT 749
157*
158 749 FORMAT(/ ,60(1H-),/)
159 751 FORMAT(1X,'The calorimeter is ',I2,' layers of:')
160 752 FORMAT(5X,A10,': ',F8.4,' cm')
161*
162* *** dessin
163 CALL GSATT ('*' ,'SEEN',1)
164 CALL GSATT ('layr','SEEN',0)
165*
166 DO IX = 1,3
167 CALL GDOPEN (IX)
168 SCALE = 18./max(worldX,worldYZ)
169 PAXIS = 0.
170 SAXIS = 1.
171 CALL GDRAWC ('worl',IX,0.,10.,9.3,SCALE,SCALE)
172CCC CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS)
173 CALL GDSCAL (10. , 0.3)
174 CALL GDCLOS
175 END DO
176*
177 END
Note: See TracBrowser for help on using the repository browser.