1 |
SUBROUTINE GPNDV |
2 |
************************************************************************ |
3 |
* * |
4 |
* Volumes definition for the neutron detector * |
5 |
* Called by: GPGEOM * |
6 |
* Author: Francesco Cafagna, 05-sep-05 * |
7 |
* * |
8 |
************************************************************************ |
9 |
#include "gpgeo.inc" |
10 |
#include "gpmed.inc" |
11 |
#include "gpkey.inc" |
12 |
* |
13 |
INTEGER IROT,IVOLU,N,NMED |
14 |
REAL X,Y,Z |
15 |
|
16 |
* |
17 |
* Define the NDBO volume |
18 |
* |
19 |
NMED= MN2 |
20 |
CALL GSVOLU('NDBO','BOX ',NMED,NDBO, 3,IVOLU) |
21 |
* |
22 |
* Define the NDBX volume |
23 |
* |
24 |
NMED= MAL |
25 |
CALL GSVOLU('NDBX','BOX ',NMED,NDBX, 3,IVOLU) |
26 |
* |
27 |
* Define the NDCD volume |
28 |
* |
29 |
NMED= MCAD |
30 |
CALL GSVOLU('NDCD','BOX ',NMED,NDCD, 3,IVOLU) |
31 |
* |
32 |
* Define the NDBI volume |
33 |
* |
34 |
NMED= MN2 |
35 |
CALL GSVOLU('NDBI','BOX ',NMED,NDBI, 3,IVOLU) |
36 |
* |
37 |
* Define the NDTU volume |
38 |
* |
39 |
NMED= MIRON |
40 |
* NMED= MSCIN |
41 |
CALL GSVOLU('NDTU','TUBE',NMED,NDTU, 3,IVOLU) |
42 |
* |
43 |
* Define the NDTI volume |
44 |
* |
45 |
NMED= MHE3 |
46 |
CALL GSVOLU('NDTI','TUBE',NMED,NDTI, 3,IVOLU) |
47 |
* |
48 |
* Define the NDPB volume |
49 |
* |
50 |
NMED= MCH2 |
51 |
CALL GSVOLU('NDPB','BOX ',NMED,NDPB, 3,IVOLU) |
52 |
* |
53 |
* Define the NDCO volume |
54 |
* |
55 |
NMED= MAL |
56 |
CALL GSVOLU('NDCO','BOX ',NMED,NDCO, 3,IVOLU) |
57 |
* |
58 |
* Define the NDBS volume |
59 |
* |
60 |
NMED= MAL |
61 |
CALL GSVOLU('NDBS','BOX ',NMED,NDBS, 3,IVOLU) |
62 |
* |
63 |
* Define the NDSS volume |
64 |
* |
65 |
NMED= MN2 |
66 |
CALL GSVOLU('NDSS','BOX ',NMED,NDSS, 3,IVOLU) |
67 |
* |
68 |
* Define the NDCI volume |
69 |
* |
70 |
NMED= MN2 |
71 |
CALL GSVOLU('NDCI','BOX ',NMED,NDCI, 3,IVOLU) |
72 |
* |
73 |
* Define the NDCM volume |
74 |
* |
75 |
NMED= MN2 |
76 |
CALL GSVOLU('NDCM','BOX ',NMED,NDCM, 3,IVOLU) |
77 |
* |
78 |
* Define the NDCE volume |
79 |
* |
80 |
NMED= MN2 |
81 |
CALL GSVOLU('NDCE','BOX ',NMED,NDCE, 3,IVOLU) |
82 |
* |
83 |
* Define the NDSI volume |
84 |
* |
85 |
NMED= MN2 |
86 |
CALL GSVOLU('NDSI','BOX ',NMED,NDSI, 3,IVOLU) |
87 |
* |
88 |
* Define the NDSM volume |
89 |
* |
90 |
NMED= MN2 |
91 |
CALL GSVOLU('NDSM','BOX ',NMED,NDSM, 3,IVOLU) |
92 |
* |
93 |
* Define the NDSE volume |
94 |
* |
95 |
NMED= MN2 |
96 |
CALL GSVOLU('NDSE','BOX ',NMED,NDSE, 3,IVOLU) |
97 |
* |
98 |
* Positioning volumes NDTI inside NDTU. |
99 |
* |
100 |
N = 1 |
101 |
X = 0. |
102 |
Y = 0. |
103 |
Z = 0. |
104 |
CALL GSPOS('NDTI',N,'NDTU',X,Y,Z,0,'ONLY') |
105 |
* |
106 |
* Positioning volume NDTU inside the mother NDPB |
107 |
* |
108 |
N = 0 |
109 |
Y = 0. |
110 |
C # |
111 |
C # Start to put tube on top of a cmd and 3 pholyetilene planes |
112 |
C # |
113 |
DO I=1,2 |
114 |
C # |
115 |
cC # Place a tube layer at a 4 mm distance each |
116 |
C # Place a tube layer at a 5 mm distance each |
117 |
C # |
118 |
c X = -NDBI(2) + 0.2 + 1.1 |
119 |
X = -NDBI(1) + 0.3 + NDTU(2) |
120 |
C Z = -NDBI(3) + 2.*NDCD(3) + 3.*(2.*NDPB(3)) + NDTU(2) |
121 |
C + + (I-1)*4*NDPB(3) |
122 |
Z = -NDBI(3)+3.*(2.*NDPB(3))+NDTU(2) |
123 |
+ + (I-1)*2*NDPB(3)+(I-1)*2*NDTU(2) |
124 |
DO II=1,18 |
125 |
N= N + 1 |
126 |
C CALL GSPOS('NDTU',N,'NDBI',X,Y,Z,2,'MANY') |
127 |
CALL GSPOS('NDTU',N,'NDBI',X,Y,Z,2,'ONLY') |
128 |
C X = X + 2.2 |
129 |
X=X+2*NDTU(2)+GNDTU |
130 |
ENDDO |
131 |
ENDDO |
132 |
* |
133 |
* Positioning volume NDPB inside the mother NDBI |
134 |
* |
135 |
N = 0 |
136 |
X = 0. |
137 |
Y = 0. |
138 |
C # |
139 |
C # Stack 3 planes then leave the tube gap between the last two |
140 |
C # |
141 |
DO I=1,3 |
142 |
N= N + 1 |
143 |
c Z = -NDBI(3) + 2.*NDCD(3) + (I-1)*2.*NDPB(3) + NDPB(3) |
144 |
Z=-NDBI(3)+(I-1)*2.*NDPB(3)+NDPB(3) |
145 |
C CALL GSPOS('NDPB',N,'NDBI',X,Y,Z,0,'MANY') |
146 |
CALL GSPOS('NDPB',N,'NDBI',X,Y,Z,0,'ONLY') |
147 |
ENDDO |
148 |
DO I=1,2 |
149 |
C Z = -NDBI(3) + 2.*NDCD(3) + 4.*2.*NDPB(3) + NDPB(3) |
150 |
C + + (I-1)*4.*NDPB(3) |
151 |
Z = -NDBI(3) + 3.*2.*NDPB(3) + NDPB(3) |
152 |
+ + (I-1)*2.*NDPB(3)+I*2*NDTU(2) |
153 |
N= N + 1 |
154 |
C CALL GSPOS('NDPB',N,'NDBI',X,Y,Z,0,'MANY') |
155 |
CALL GSPOS('NDPB',N,'NDBI',X,Y,Z,0,'ONLY') |
156 |
ENDDO |
157 |
C # |
158 |
C # Now put the internal volume inside the cadmium box |
159 |
C # * |
160 |
N = 1 |
161 |
X = 0. |
162 |
Y = 0. |
163 |
Z=-NDCD(3)+NDBI(3)+TNDCD |
164 |
CALL GSPOS('NDBI',N,'NDCD',X,Y,Z,0,'ONLY') |
165 |
C # |
166 |
C # Positioning the NDCD inside NDBX |
167 |
C # |
168 |
N=1 |
169 |
X = 0 |
170 |
Y = 0 |
171 |
Z=-NDBX(3)+NDCD(3)+TNDBX |
172 |
CALL GSPOS('NDCD',N,'NDBX',X,Y,Z,0,'ONLY') |
173 |
C # |
174 |
C # Positioning the NDBX inside NDBO |
175 |
C # |
176 |
N=1 |
177 |
X = 0 |
178 |
Y = 0 |
179 |
Z=-NDBO(3)+NDBX(3) |
180 |
CALL GSPOS('NDBX',N,'NDBO',X,Y,Z,0,'ONLY') |
181 |
C # |
182 |
C # Positioning the NDCM inside NDCO |
183 |
C # |
184 |
N=0 |
185 |
X = 0 |
186 |
Z=NDCO(3)-NDCM(3) |
187 |
DO I=-1,1,2 |
188 |
N=N+1 |
189 |
Y = I*(NDCI(2)+1.4+NDCM(2)) |
190 |
CALL GSPOS('NDCM',N,'NDCO',X,Y,Z,0,'ONLY') |
191 |
ENDDO |
192 |
C # |
193 |
C # Positioning the NDCI inside NDCO |
194 |
C # |
195 |
N=1 |
196 |
X = 0 |
197 |
Y = 0 |
198 |
Z=NDCO(3)-NDCI(3) |
199 |
CALL GSPOS('NDCI',N,'NDCO',X,Y,Z,0,'ONLY') |
200 |
C # |
201 |
C # Positioning the NDCE inside NDCO |
202 |
C # |
203 |
N=0 |
204 |
X = 0 |
205 |
Z=NDCO(3)-NDCE(3) |
206 |
DO I=-1,1,2 |
207 |
N=N+1 |
208 |
Y = I*(NDCI(2)+1.4+2*NDCM(2)+1.4+NDCE(2)) |
209 |
CALL GSPOS('NDCE',N,'NDCO',X,Y,Z,0,'ONLY') |
210 |
ENDDO |
211 |
C # |
212 |
C # Positioning the NDSM inside NDCO |
213 |
C # |
214 |
N=0 |
215 |
Z=NDCO(3)-NDSM(3) |
216 |
DO I=-1,1,2 |
217 |
Y = I*(NDCO(2)-9.6-NDSM(2)) |
218 |
DO j=-1,1,2 |
219 |
N=N+1 |
220 |
X=J*(NDCO(1)-2.9-NDSM(1)) |
221 |
CALL GSPOS('NDSM',N,'NDCO',X,Y,Z,0,'ONLY') |
222 |
ENDDO |
223 |
ENDDO |
224 |
C # |
225 |
C # Positioning the NDSI inside NDCO |
226 |
C # |
227 |
N=0 |
228 |
Z=NDCO(3)-NDSI(3) |
229 |
Y=0. |
230 |
DO j=-1,1,2 |
231 |
N=N+1 |
232 |
X=J*(NDCO(1)-2.9-NDSI(1)) |
233 |
CALL GSPOS('NDSI',N,'NDCO',X,Y,Z,0,'ONLY') |
234 |
ENDDO |
235 |
C # |
236 |
C # Positioning the NDSE inside NDCO |
237 |
C # |
238 |
N=0 |
239 |
Z=NDCO(3)-NDSE(3) |
240 |
DO I=-1,1,2 |
241 |
Y = I*(NDCI(2)+1.4+2*NDCM(2)+1.4+NDSE(2)) |
242 |
DO j=-1,1,2 |
243 |
N=N+1 |
244 |
X=J*(NDCE(1)+1.6+NDSE(1)) |
245 |
CALL GSPOS('NDSE',N,'NDCO',X,Y,Z,0,'ONLY') |
246 |
ENDDO |
247 |
ENDDO |
248 |
C # |
249 |
C # Positioning the NDCO inside NDBO |
250 |
C # |
251 |
N=1 |
252 |
X = 0 |
253 |
Y = 0 |
254 |
Z=NDBO(3)-NDCO(3) |
255 |
CALL GSPOS('NDCO',N,'NDBO',X,Y,Z,0,'ONLY') |
256 |
C # |
257 |
C # Positioning the NDBS inside NDBO |
258 |
C # |
259 |
N=0 |
260 |
DO I=-1,1,2 |
261 |
N=N+1 |
262 |
X = 0. |
263 |
Y = I*NDBO(2)-I*NDBS(2) |
264 |
Z=-NDBO(3)+NDBS(3) |
265 |
CALL GSPOS('NDBS',N,'NDBO',X,Y,Z,0,'ONLY') |
266 |
ENDDO |
267 |
N=1 |
268 |
X = 0. |
269 |
Y = 0. |
270 |
Z=0. |
271 |
CALL GSPOS('NDSS',N,'NDBS',X,Y,Z,0,'ONLY') |
272 |
RETURN |
273 |
END |