1 jones 1.1 SUBROUTINE UGEOM
2
3 implicit none
4
5 include 'constants.inc'
6 include 'geant.inc'
7 include 'sane.inc'
8 include 'materials.inc'
9 include 'beta_geom.inc'
10 include 'sane_misc.inc'
11
12 ! C------------ Including beta_geom.inc parameters here - JDM - 05/27/07
13 !
14 ! C-- beta_geom.inc Glen Warren 8/03
15 ! C--
16 ! C-- details geometry of BETA detector
17 !
18 ! C Detector geometry
19 !
20 ! real*4 block_height, block_width
21 ! real*4 cal_height,cal_width
22 jones 1.1 ! real*4 cal_depth
23 ! real*4 cer_length
24 integer*4 horzBl,vertBl
25 !
26 ! parameter( block_height = 4.d0 )
27 ! parameter( block_width = 4.d0 )
28 parameter( horzBl = 28 )
29 parameter( vertBl = 58 )
30 ! parameter( cal_depth = 40.d0 )
31 ! parameter( cer_length = 150.d0 )
32 !
33 ! parameter( cal_height = vert_blocks*block_height )
34 ! parameter( cal_width = horz_blocks*block_width )
35 !
36 ! real*4 gain_thk
37 !
38 ! parameter( gain_thk = 1./2.)
39 !
40 ! real*4 cer_win_thk
41 !
42 ! parameter( cer_win_thk = 0.0127 )
43 jones 1.1 !
44 ! real*4 hodo_thk
45 !
46 ! parameter( hodo_thk = 3.75)
47 !
48 ! C Detector Setup
49 !
50 ! real*4 eff_cal_drift
51 ! real*4 cal_drift
52 ! real*4 cer_drift
53 ! real*4 front_width
54 ! real*4 fronthodo_drift
55 !
56 ! parameter( eff_cal_drift = 335.d0 ) ! used in reconstruction
57 ! parameter( cal_drift = 325.d0 )
58 ! parameter( cer_drift = 55.d0 )
59 ! parameter( front_width = 0.3 )
60 ! parameter( fronthodo_drift = 52.0 )
61 !
62 !
63 ! C ------------ End Parameter's from old beta_geom.inc - JDM - 5/27/07
64 jones 1.1
65
66 C
67 C Define user geometry set up
68 C
69
70 real*4 PAR( 8)
71 real*4 ZLG(5),ALG(5),WLG(5)
72 real*4 ZKap(4),AKap(4),WKap(4)
73 real*4 ZScin(2), AScin(2), WScin(2)
74 real*4 ZLuc(2), ALuc(2), WLuc(2)
75 real*4 ZNH3(3),ANH3(3),WNH3(3)
76 real*4 ZKelF(3),AKelF(3),WKelF(3)
77 real*4 x,y
78 real*4 densHyd,densHel,densNit
79 real tpar(5)
80 data tpar/0.001, 0.001, 0.01, 0.01, 0.01/
81
82
83 c$$$ densHyd = Hyddens
84 c$$$ densHel = Heldens
85 jones 1.1 c$$$ densNit = Nitdens
86
87 C
88 C Lead glass mixture parameters nucleus charge, atomic wheight, rel. wheight
89 C of the different compounds
90 C
91 DATA ALG/ 207.19, 15.999, 28.086, 39.098, 74.922/
92 DATA ZLG/ 82.00, 16.00, 14.00, 19.00, 33.00/
93 DATA WLG/ .475, .270, .193, .058, .004/
94 C
95 C Scintillator
96 C
97 DATA AScin/1.00794,12.0107/
98 DATA ZScin/1.,6.0/
99 DATA WScin/0.0848,0.9152/
100 C
101 C Lucite
102 C
103 DATA ALuc/1.00794,12.0107/
104 DATA ZLuc/1.,6.0/
105 DATA WLuc/0.1435,0.8565/
106 jones 1.1 C
107 C Kapton
108 C
109 DATA ZKap/ 1.000, 6.000, 7.000, 8.000/
110 DATA AKap/ 1.008, 12.011, 14.007, 15.999/
111 DATA WKap/ 0.0264, 0.6911, 0.0733, 0.2092/
112 C
113 C Kel-F: (Poly)ChloroTriFluoroEthylene (Cl F3 C2)
114 C
115 DATA ZKelF/ 6.000, 9.000, 17.000/
116 DATA AKelF/12.011, 18.998, 35.453/
117 DATA WKelF/ 0.2063, 0.4893, 0.3044/
118 c
119 c TF-1 optical parameters. Needed to define Cherenkov light generating vol.
120 c
121
122 real*4 refrind,wlmn,wlmx,hc,pphmn,pphmx
123 parameter (refrind=1.65) !TF-1 refractive index.
124 parameter (wlmn=280.,wlmx=630.) !PMT XP3462B sensitivity range, [nm].
125 parameter (hc=1.239842442E-6) !h*c, [GeV*nm].
126 parameter (pphmn=hc/wlmx,pphmx=hc/wlmn)
127 jones 1.1
128 C
129 C NH3 target. Assume 50% packing uncertainty
130 C
131 real*4 WHyd,WHel,WNit
132
133 DATA ZNH3/1.000, 2.000, 7.000/
134 DATA ANH3/1.000, 4.003, 14.000/
135 c DATA WNH3/0.151, 0.145, 0.704/ ! OR 2/10
136 ! DATA WNH3/0.153, 0.145, 0.714/ ! does not add up to 1. Where did it come from?
137 C! Read in NH3 densities for varying packing fractions NK 03/31/10
138
139 c Cher. photon min., max. momentums, [GeV/c].
140
141 real pph(2) !Cher. photon min & max momentums (GeV/c).
142 real absl(2) !TF-1 absorption length.
143 real qef(2) !PMT quantum eff.
144 real rind(2) !TF-1 refr. index.
145 data pph/pphmn,pphmx/,absl/2*100./,qef/2*1./,rind/2*refrind/
146
147 real pph_n2(2) !Cher. photon min & max momentums (GeV/c).
148 jones 1.1 real absl_n2(2) !TF-1 absorption length.
149 real qef_n2(2) !PMT quantum eff.
150 real rind_n2(2) !TF-1 refr. index.
151 data pph_n2/pphmn,pphmx/,absl_n2/2*100./,qef_n2/2*1./
152 , ,rind_n2/2*1.000298/
153
154 real*4 fieldmax,tmax_fd,ste_max,dee_max,epsilon,st_min,fieldmax2
155 integer*4 i_field,i_field2
156
157 real*4 cer_back,earm_length,z0
158 real*4 front_drift,back_drift,guard_angle,guard_horz,wall_horz
159 integer*4 imt,ivol
160 real*4 rotmf
161 c LUCITE PARAMETERS
162 c
163 c
164 real*4 inRadL,ouRadL,hightL,phiMinL,phiMaxL
165
166 real*4 parL(5)
167
168 parameter (inRadL = 240.0,ouRadL = 243.5, hightL=6.0,
169 jones 1.1 , phiMinL = -11.5, phiMaxL = 11.5)
170
171 C! Read in NH3 densities for varying packing fractions NK 03/31/10
172 WHyd=Hyddens
173 WHel=Heldens
174 WNit=Nitdens
175 WNH3(1)=WHyd
176 WNH3(2)=WHel
177 WNH3(3)=WNit
178 C
179 C Rotation of the coils
180 rotmf = 180. + theta_0 + theta_Bfield
181 write(*,*)'Start UGEOM'
182
183 C
184 C
185 C Definition of 16 default Geant materials, see manual CONS100-1
186 C
187 CALL GIDROP
188 CALL GMATE
189 C
190 jones 1.1 C Define the default particles
191 C
192 CALL GPART
193 CALL GPIONS
194 C
195 C Defines USER particular materials
196 C
197
198 CALL GSMIXT(22,'LEAD GLASS$',ALG,ZLG,3.86,5,WLG)
199 CALL GSMIXT(23,'SCINTILLATOR$',AScin,ZScin,1.03,2,WScin)
200 CALL GSMIXT(24,'KAPTON$',AKap,ZKap,1.42,4,WKap)
201 CALL GSMIXT(26,'LUCITE$',ALuc,ZLuc,1.18,2,WLuc)
|
209 jones 1.1 call init_lucite()
210 call init_tracker()
211 call init_cal()
212 C
213 C Defines USER tracking media parameters which describes the tracking
214 C throughout a material
215 C
216 FIELDMAX = 0.
217 I_FIELD = 0
218 TMAX_FD = 10.
219 STE_MAX = -1000.
220 DEE_MAX = -0.05
221 EPSILON = 0.001
222 ST_MIN = -0.001
223
224 write(*,*)"FIELD TYPE IS=",field_type
225 if (field_type.eq.0) then
226 write(*,*) '***** Bypassing field code'
227 I_FIELD2 = 0
228 FIELDMAX2 = 0.
229 else if (field_type.eq.1) then
230 jones 1.1 write(*,*) '***** Using field code'
231 I_FIELD2 = 1
232 FIELDMAX2 = 50.
233 else
234 write(*,*) target_type,field_type
235 STOP 'BAD FTYP (field_type)'
236 endif
237 C
238 C Define two tracking media, first consists of Air, the second of
239 C either BGO or Lead Glass, depending on the IMAT value.
240 C
241 c igauto = 0
242 write(*,*)'Define Medium ',igauto
243
244
245 CALL GSTMED( NMED_air,'AIR' , 15 , 0 , I_FIELD,
246 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
247 CALL GSTMED( NMED_Pb,'Pb-Shielding' , 13 , 0 , I_FIELD,
248 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
249 CALL GSTMED( NMED_LG,'Pb-Glass' , 22 , 0 , I_FIELD,
250 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
251 jones 1.1 CALL GSTMED( NMED_Sc,'Scintillator' , 23 , 0 , I_FIELD,
252 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
253 CALL GSTMED( NMED_Kap,'Kapton' , 24 , 0 , I_FIELD,
254 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
255 CALL GSTMED( NMED_N2,'N2 Gas' , 25 , 0 , I_FIELD,
256 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
257 c CALL GSTMED( NMED_PLG,'Pb-Glass' , 22 , 0 , I_FIELD,
258 c + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
259 CALL GSTMED( NMED_Gain, 'Lucite Gain Monitor' , 26 , 0 , I_FIELD,
260 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
261 CALL GSTMED( NMED_NH3, 'NH3 + Helium' , 27 , 0 , I_FIELD2,
262 + FIELDMAX2,TMAX_FD,0.1,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
263 CALL GSTMED( NMED_Vac, 'Vacuum' , 16 , 0 , I_FIELD2,
264 + FIELDMAX2,TMAX_FD,1.0,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
265 CALL GSTMED( NMED_Al, 'Aluminum' , 9 , 0 , I_FIELD,
266 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
267 CALL GSTMED( NMED_KelF,'Kel-F' , 28 , 0 , I_FIELD,
268 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
269 CALL GSTMED( NMED_LHe,'LHe 1K' , 29 , 0 , I_FIELD2,
270 + FIELDMAX2,TMAX_FD,0.1,DEE_MAX, EPSILON, ST_MIN, 0 , 0
271 + )
272 jones 1.1
273
274
275 CALL GSTMED( NMED_Fe,'Iron' , 10 , 0 , I_FIELD,
276 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
277 C Initial take on Iron, recheck for accuracy. JDM 7/9/07
278 CALL GSTMED( NMED_C,'Carbon' , 6 , 0 , I_FIELD,
279 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
280 C Initial take on Carbon, recheck for accuracy. JDM 7/27/07
281
282
283 C All the default material defined via GMATE are also defined as
284 C tracking media, even if they are not needed right now.
285 C
286 DO 100 IMT= 1,14
287 CALL GSTMED( IMT+13,'DUMMY-MEDIUM' , IMT , 0 , I_FIELD,
288 + FIELDMAX,TMAX_FD,STE_MAX,DEE_MAX, EPSILON, ST_MIN, 0 , 0 )
289 100 CONTINUE
290 C
291 C
292 C
293 jones 1.1 call GSTPAR(NMED_N2,'LOSS',1.)
294 call GSTPAR(NMED_N2,'DRAY',1.)
295 call GSTPAR(NMED_N2,'DCUTE',0.00001)
296 call GSTPAR(NMED_N2,'DCUTM',0.00001)
297 c call SetMedPar(NMED_Luc,tpar)
298 c call SetMedPar(NMED_Fx1,tpar)
299 c call SetMedPar(NMED_Fy1,tpar)
300 c call SetMedPar(NMED_Fy2,tpar)
301
302 c call gstpar(NMED_Luc,'CUTGAM',0.00001)
303 c call gstpar(NMED_Luc,'CUTELE',0.00001)
304 c call gstpar(NMED_Luc,'CUTNEU',0.00001)
305 c call gstpar(NMED_Luc,'CUTHAD',0.00001)
306 c call gstpar(NMED_Luc,'CUTMUO',0.00001)
307
308 * call GSTPAR(NMED_NH3,'LOSS',1)
309 * call GSTPAR(NMED_NH3,'DRAY',1)
310 * call GSTPAR(NMED_NH3,'DCUTE',0.02)
311 * call GSTPAR(NMED_NH3,'DCUTM',0.02)
312 * call GDRPRT(8,NMED_NH3,1.,90)
313
314 jones 1.1 * call GSTPAR(NMED_Al,'LOSS',1)
315 * call GSTPAR(NMED_Al,'DRAY',1)
316 * call GSTPAR(NMED_Al,'DCUTE',0.02)
317 * call GSTPAR(NMED_Al,'DCUTM',0.02)
318 * call GDRPRT(8,NMED_Al,1.,90)
319
320 C
321 CALL GSCKOV(NMED_LG,2,pph,absl,qef,rind)
322 CALL GSCKOV(NMED_N2,2,pph_n2,absl_n2,qef_n2,rind_n2)
323
324 C
325 C Energy loss and cross-sections initialisations, creating LUT banks
326 C
327 CALL GPHYSI
328 write(*,*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
329 write(*,*) 'DELTA RAY INFO'
330 write(*,*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
331 call GDRPRT(8,25,150.,9)
332 write(*,*) 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'
333 C
334 C Define the reference volume ECAL via Geant Store VOLUme routine
335 jones 1.1 C
336
337
338 cer_back = cer_drift+cer_length
339 * cer_win_thk = 0.0127
340
341 earm_length = cal_drift/2.+cal_depth/2.
342
343 PAR(1) = cal_width/2.*1.2
344 PAR(2) = cal_height/2.*1.2
345 PAR(3) = earm_length+50
346 CALL GSVOLU( 'EARM' , 'BOX ' ,NMED_Air, PAR , 3 , IVOL ) ! vol 1
347
348 c
349 c Implement Lucite Hodoscope into detector
350 c
351 call ugeom_lucite(ivol)
352
353
354
355
356 jones 1.1 PAR(1) = cal_width/2.
357 PAR(2) = cal_height/2.
358 PAR(3) = .3
359 C CALL GSVOLU( 'FESH' , 'BOX ' ,NMED_Fe, PAR , 3 , IVOL )
360
361 PAR(1) = cal_width/2.
362 PAR(2) = cal_height/2.
363 PAR(3) = gain_thk
364 CALL GSVOLU( 'GAIN' , 'BOX ' ,NMED_Gain, PAR , 3 , IVOL ) ! vol 3
365 c vol_gain = IVOL
366
367 c PAR(1) = cal_width/2.
368 c PAR(2) = cal_height/2.
369 c PAR(3) = cal_depth/2.
370 c CALL GSVOLU( 'ECAL' , 'BOX ' ,NMED_LG, PAR , 3 , IVOL )
371 c CALL GSPOS('ECAL',1,'EARM',x,y,162.5000,0,'ONLY')
372 c vol_ecal = IVOL
373 call def_calspace(ivol)
374
375 PAR(1) = cal_width/2.*1.2
376 PAR(2) = cal_height/2.*1.2
377 jones 1.1 PAR(3) = 2.
378 CALL GSVOLU( 'VETO' , 'BOX ' ,NMED_Sc, PAR , 3 , IVOL )
379 c vol_veto = ivol
380
381 PAR(1) = cal_width/2.*cer_drift/cal_drift*1.0
382 PAR(2) = cal_height/2.*cer_drift/cal_drift*1.0
383 PAR(3) = cer_win_thk
384 * CALL GSVOLU( 'CFRW' , 'BOX ' ,NMED_Vac, PAR , 3 , IVOL )
385 CALL GSVOLU( 'CFRW' , 'BOX ' ,NMED_Kap, PAR , 3 , IVOL )
386 C
387 PAR(1) = cal_width/2.*cer_back/cal_drift*1.0
388 PAR(2) = cal_height/2.*cer_back/cal_drift*1.0
389 PAR(3) = cer_win_thk
390 CALL GSVOLU( 'CBKW' , 'BOX ' ,NMED_Kap, PAR , 3 , IVOL )
391
392 PAR(1) = cal_width/2.*cer_drift/cal_drift*1.0
393 PAR(2) = cal_width/2.*cer_back/cal_drift*1.0
394 PAR(3) = cal_height/2.*cer_drift/cal_drift*1.0
395 PAR(4) = cal_height/2.*cer_back/cal_drift*1.0
396 PAR(5) = cer_length/2.
397 * CALL GSVOLU( 'CGAS' , 'TRD2' ,NMED_Vac, PAR , 5 , IVOL )
398 jones 1.1 CALL GSVOLU( 'CGAS' , 'TRD2' ,NMED_N2, PAR , 5 , IVOL )
399 c vol_cgas = IVOL
400
401 PAR(1) = 2.
402 PAR(2) = 2.
403 PAR(3) = 0.05
404 CALL GSVOLU('CRBN','BOX ', NMED_C,PAR,3,IVOL )
405
406 PAR(1) = 0.
407 PAR(2) = 1.25
408 PAR(3) = 1.5
409 CALL GSROTM(1,90.,SNGL(theta_0),0.,SNGL(theta_0),90.,310.)
410 CALL GSVOLU( 'CELL' , 'TUBE' ,NMED_NH3, PAR , 3 , IVOL )
411
412 PAR(1) = 1.25
413 PAR(2) = 1.25+0.0127
414 PAR(3) = 1.5
415 CALL GSVOLU( 'CWAL' , 'TUBE' ,NMED_KelF, PAR , 3 , IVOL )
416
417 PAR(1) = 0.
418 PAR(2) = 50.043
419 jones 1.1 PAR(3) = 50.0
420 CALL GSROTM(2,90.,0.,0.,0.,90.,270.)
421 CALL GSVOLU( 'TCAN' , 'TUBE' ,NMED_Vac, PAR , 3 , IVOL )
422
423 PAR(1) = 50.
424 PAR(2) = 50.043
425 PAR(3) = 50.0
426 CALL GSVOLU( 'TWIN' , 'TUBE' ,NMED_Al, PAR , 3 , IVOL )
427
428 PAR(1) = 4.000-0.001905
429 PAR(2) = 4.000+0.001905
430 PAR(3) = 30
431 CALL GSVOLU( '4KSH' , 'TUBE' ,NMED_Al, PAR , 3 , IVOL )
432
433 PAR(1) = 2.100-0.00254
434 PAR(2) = 2.100+0.00254
435 PAR(3) = 20
436 CALL GSVOLU( 'TAIL' , 'TUBE' ,NMED_Al, PAR , 3 , IVOL )
437
438 PAR(1) = 0.0
439 PAR(2) = 2.100+0.00254
440 jones 1.1 PAR(3) = 20
441 CALL GSVOLU( 'NOSE' , 'TUBE' ,NMED_LHe, PAR , 3 , IVOL )
442
443 PAR(1) = 45.000-0.001905
444 PAR(2) = 45.000+0.001905
445 PAR(3) = 40
446 CALL GSVOLU( 'LN2C' , 'TUBE' ,NMED_Al, PAR , 3 , IVOL )
447
448 PAR(1) = 0.
449 PAR(2) = 33
450 C PAR(3) = 22
451 PAR(3) = 25. ! JDM
452 CALL GSVOLU( 'MAGN' , 'TUBE' ,NMED_Vac, PAR , 3 , IVOL )
453 c vol_magn = IVOL
454
455 PAR(1) = 10.
456 PAR(2) = 5./tan(17.0*0.0174533)
457 * PAR(3) = 10./tan(48.5*0.0174533)
458 PAR(3) = 5.
459 PAR(4) = 25.
460 PAR(5) = 65.
461 jones 1.1 CALL GSVOLU( 'BRA1' , 'TUBS', NMED_Al, PAR, 5 , IVOL)
462 PAR(4) = 115.
463 PAR(5) = 155.
464 CALL GSVOLU( 'BRA2' , 'TUBS', NMED_Al, PAR, 5 , IVOL)
465 PAR(4) = 205.
466 PAR(5) = 245.
467 CALL GSVOLU( 'BRA3' , 'TUBS', NMED_Al, PAR, 5 , IVOL)
468 PAR(4) = 295.
469 PAR(5) = 335.
470 CALL GSVOLU( 'BRA4' , 'TUBS', NMED_Al, PAR, 5 , IVOL)
471 C
472 C PAR(1) = 5.
473 C PAR(2) = 10.
474 C PAR(3) = 5./tan(17.0*0.0174533)
475 C PAR(4) = (5+2.*PAR(1))*tan(48.5*0.0174533)
476 C PAR(5) = PAR(4) + PAR(3) - PAR(2)
477
478
479 PAR(1) = 8.4
480 PAR(2) = 10.
481 PAR(3) = 18.
482 jones 1.1 C PAR(3) = 8.846*tan(73*.0174533)
483 PAR(4) = 29.
484 C PAR(4) = 18.3*tan(48.5*.0174533)
485 PAR(5) = 37.
486 C PAR(5) = 18.3/tan(17*.0174533)
487 CALL GSROTM(3,90.,90.,90.,0.,180.,0.)
488 CALL GSROTM(4,90.,rotmf,0.,rotmf,90.,270.+rotmf)
489 CALL GSVOLU( 'MAG2' , 'CONE', NMED_Al, PAR, 5 , IVOL)
490
491
492
493
494 front_drift = cer_drift-5.
495 back_drift = cer_back
496 guard_angle = atan(cal_width/cal_drift/2.0)/d2r
497 guard_horz = cal_width/2.*(cer_drift+cer_length/2.)/cal_drift+0.7
498 wall_horz = cal_width/2.*cer_drift/cal_drift+10
499
500 PAR(2) = cal_width*front_drift/cal_drift+5
501 PAR(1) = 10.
502 PAR(3) = 1
503 jones 1.1 CALL GSVOLU('WAL2','BOX ',NMED_Pb,PAR,3,IVOL)
504
505 PAR(1) = 0.
506 PAR(2) = 4.
507 PAR(3) = 1.
508 CALL GSVOLU('PLUG','TUBE',NMED_Pb,PAR,3,IVOL)
509
510 PAR(1) = cal_width*front_drift/cal_drift
511 PAR(2) = cal_width*back_drift/cal_drift
512 PAR(3) = 1.
513 PAR(4) = (back_drift-front_drift)/2.
514 CALL GSVOLU('GARD','TRD1',NMED_Pb,PAR,4,IVOL)
515
516
517 CALL GSROTM(5,90.,90.,90.-guard_angle,180.,guard_angle,0.)
518 CALL GSROTM(6,90.,90.,90.+guard_angle,180.,guard_angle,180.)
519
520 C
521 C Adding Front Tracking Hodoscope - JDM 5/22/07 - Three planes of
522 C bars
523 C
524 jones 1.1 call ugeom_tracker(ivol)
525
526 c*****************
527 call ugeom_cal(ivol)
528
529
530 C
531 C Position volumes
532 C
533
534 z0 = -earm_length
535
536 C Position target related volumes
537
538 if (target_type.EQ.0) then ! define polarized target
539 write(*,*) '***** Configuring Polarized Target'
540 CALL GSPOS('NOSE',1,'TCAN',0.,0.,0. , 0,'ONLY')
541 CALL GSPOS('TAIL',1,'NOSE',0.,0.,0. , 0,'ONLY')
542 CALL GSPOS('CELL',1,'NOSE',0.,0.,0. , 1,'ONLY')
543 CALL GSPOS('CWAL',1,'NOSE',0.,0.,0. , 1,'ONLY')
544 CALL GSPOS('LN2C',1,'TCAN',0.,0.,0. , 0,'ONLY')
545 jones 1.1 CALL GSPOS('4KSH',1,'TCAN',0.,0.,0. , 0,'ONLY')
546 CALL GSPOS('BRA1',1,'MAGN',0.,0.,0. , 0,'ONLY')
547 CALL GSPOS('BRA2',1,'MAGN',0.,0.,0. , 0,'ONLY')
548 CALL GSPOS('BRA3',1,'MAGN',0.,0.,0. , 0,'ONLY')
549 CALL GSPOS('BRA4',1,'MAGN',0.,0.,0. , 0,'ONLY')
550 C z was 10, -10 for MAG2
551 C
552 C CALL GSPOS('MAG2',1,'TCAN',+17.28,0.,0., 4,'MANY')
553 C CALL GSPOS('MAG2',2,'TCAN',-17.28,0.,0., 4,'MANY')
554
555
556 CALL GSPOS('MAG2',1,'MAGN',0.,0.,+17.28, 0,'MANY')
557 CALL GSPOS('MAG2',2,'MAGN',0.,0.,-17.28, 3,'MANY')
558 CALL GSPOS('MAGN',1,'TCAN',0.,0.,0., 4,' MANY')
559
560
561 * CALL GSPOS('PLUG',1,'MAGN',0.,0.,-14., 0,'ONLY')
562 elseif (target_type.EQ.1) then ! define standard carbon target
563 write(*,*) '***** Configuring Carbon Target'
564 CALL GSPOS('CRBN',1,'TCAN',0.,0.,0.,1, 'ONLY')
565 else
566 jones 1.1 write(*,*) target_type,field_type
567 STOP 'BAD TTYP (target_type)'
568 endif
569 CALL GSPOS('TCAN',1,'EARM',0.,0.,z0, 2,' ONLY')
570 CALL GSPOS('TWIN',1,'TCAN',0.,0.,0., 0,'ONLY')
571
572 C Position Detectors
573
574 x = 0.
575 y = 0.
576 CALL GSPOS('CGAS',1,'EARM',x,y,z0+cer_drift+cer_length/2.,0,'ONLY'
577 + )
578 CALL GSPOS('CFRW',1,'CGAS',x,y,-cer_length/2., 0,'ONLY')
579 CALL GSPOS('CBKW',1,'CGAS',x,y,+cer_length/2., 0,'ONLY')
580
581 C CALL GSPOS('FESH',1,'EARM',x,y,z0+cal_drift-5,0,'ONLY') ! Iron Shield test, JDM
582 CALL GSPOS('GAIN',1,'EARM',x,y,z0+cal_drift-gain_thk*2., 0,'ONLY')
583 CALL GSPOS('VETO',1,'EARM',x,y,z0+cal_drift+2.*cal_depth/2.+30.,0,
584 + 'ONLY')
585
586
587 jones 1.1 C Postion Detector Shielding
588
589 x = wall_horz
590 * CALL GSPOS('WAL2',1,'EARM',x,y,z0+cer_drift-2.5, 0,'ONLY')
591
592 x = -guard_horz
593 * CALL GSPOS('GARD',1,'EARM',x,y,z0+cer_drift+cer_length/2-4.5, 6,'
594 C ONLY')
595
596 C
597 C Divide calorimeter into blocks
598 C
599 c CALL GSDVN( 'ECOL' , 'ECAL' , horzBl , 1)
600 c CALL GSDVN( 'BLOC' , 'ECOL' , vertBl , 2)
601
602 call divi_lucite()
603 call divi_tracker()
604 call divi_cal()
605
606 CALL GGCLOS
607 C
608 jones 1.1 write(*,*)'DONE UGEOM'
609 END
610
611 Subroutine SetMedPar(medium,tpar)
612 integer medium
613 real tpar(5)
614 call gstpar(medium,'CUTGAM',tpar(1))
615 call gstpar(medium,'CUTELE',tpar(2))
616 call gstpar(medium,'CUTNEU',tpar(3))
617 call gstpar(medium,'CUTHAD',tpar(4))
618 call gstpar(medium,'CUTMUO',tpar(5))
619 c call gstpar(medium,'ILOSS',1)
620 call GSTPAR(medium,'DCUTE',0.00001)
621 call GSTPAR(medium,'DCUTM',0.00001)
622 call GSTPAR(medium,'DRAY',1.)
623
624 call gstpar(medium,'BIRK1',1.)
625 call gstpar(medium,'BIRK2',0.013)
626 call gstpar(medium,'BIRK3',9.6E-6)
627 call gstpar(medium,'GHCOR1',1.0)
628 end
|