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) |
---|
172 | CCC CALL GDAXIS (PAXIS,PAXIS,PAXIS,SAXIS) |
---|
173 | CALL GDSCAL (10. , 0.3) |
---|
174 | CALL GDCLOS |
---|
175 | END DO |
---|
176 | * |
---|
177 | END |
---|