127 const G4double delta = 1. * mm;
128 TaperRingRmin1 = BSCRmax1 - TaperRingThickness1;
129 TaperRingRmin2 = TaperRingRmin1 + TaperRingDz *
tan( TaperRingTheta );
130 TaperRingDr = TaperRingThickness2 /
cos( TaperRingTheta );
131 TaperRingOuterLength1 = TaperRingOuterLength + TaperRingThickness3 *
tan( TaperRingTheta );
133 BSCRmax2 = TaperRingRmin2 + TaperRingDr - TaperRingThickness3 *
tan( TaperRingTheta );
134 BSCRmax = BSCRmin + 33.8 * cm;
135 BSCPhiDphi = 360. * deg / BSCNbPhi;
136 BSCPhiSphi = -BSCPhiDphi / 2.;
138 BSCPhiRmax = BSCRmax - 0.5 * cm;
139 BSCPhiRmin = BSCRmin /
sin( 90. * deg + BSCPhiDphi / 2. ) *
140 sin( 90. * deg + BSCPhiDphi / 2. - BSCAngleRotat );
141 SPBarDphi = 2 * atan( SPBarwidth / ( 2 * BSCRmax ) );
144 zHalfLength[0] = BSCCryLength / 2.;
145 yHalfLength1[0] = BSCYFront0 / 2.;
146 xHalfLength1[0] = BSCPhiRmin *
tan( BSCPhiDphi ) / 2.;
147 xHalfLength2[0] = xHalfLength1[0];
148 G4double rminprojected = BSCRmin *
cos( BSCAngleRotat );
151 yHalfLength1[0] + ( BSCYFront0 - BSCPosition0 ) / rminprojected * BSCCryLength / 2.;
152 xHalfLength3[0] = xHalfLength1[0] * ( BSCPhiRmin + BSCCryLength ) / BSCPhiRmin;
153 xHalfLength4[0] = xHalfLength2[0] * ( BSCPhiRmin + BSCCryLength ) / BSCPhiRmin;
155 thetaPosition[0] = 90. * deg;
156 xPosition[0] = BSCPhiRmin + BSCCryLength / 2.;
158 -( xHalfLength1[0] + xHalfLength3[0] + xHalfLength2[0] + xHalfLength4[0] ) / 4.;
159 zPosition[0] = ( yHalfLength1[0] + yHalfLength2[0] ) / 2.;
161 theta0 = 90. * deg - atan( ( BSCYFront0 - BSCPosition0 ) / rminprojected );
162 if ( verboseLevel > 1 )
164 G4cout <<
"------------------------------------>1" << G4endl
165 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
168 rearBoxPosX[0] = xPosition[0] + BSCCryLength / 2. + rearBoxDz / 2.;
169 rearBoxPosY[0] = -( xHalfLength3[0] + xHalfLength4[0] ) / 2.;
170 rearBoxPosZ[0] = yHalfLength2[0];
172 OCGirderRmin1[0] = rearBoxPosX[0] + rearBoxDz / 2. + delta;
173 OCGirderRmin2[0] = rearBoxPosX[0] + rearBoxDz / 2. + delta;
174 OCGirderDz[0] = rearBoxLength;
175 OCGirderPosZ[0] = rearBoxLength / 2;
177 cableLength[0] = BSCDz - rearBoxPosZ[0];
178 cablePosX[0] = BSCPhiRmax - cableDr - 2. * mm;
179 cablePosY[0] = rearBoxPosY[0] - 3 * cableDr;
180 cablePosZ[0] = BSCDz - cableLength[0] / 2;
183 zHalfLength[1] = BSCCryLength / 2.;
184 yHalfLength1[1] = BSCYFront0 / 2.;
185 G4double deltaR = BSCYFront0 *
cos( theta0 );
186 xHalfLength1[1] = xHalfLength1[0];
187 xHalfLength2[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
190 tan( theta0 - atan( rminprojected /
191 ( BSCYFront0 * ( 1. + 1. /
sin( theta0 ) ) - BSCPosition1 ) ) ) *
193 deltaR = deltaR + BSCCryLength *
sin( theta0 );
194 xHalfLength4[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
195 deltaR = deltaR - yHalfLength2[1] * 2. *
cos( theta0 );
196 xHalfLength3[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
198 thetaPosition[1] = theta0;
199 xPosition[1] = BSCPhiRmin + BSCCryLength / 2. *
sin( theta0 ) +
200 ( 3. * yHalfLength1[1] - yHalfLength2[1] ) / 2. *
cos( theta0 );
202 -( xHalfLength1[1] + xHalfLength3[1] + xHalfLength2[1] + xHalfLength4[1] ) / 4.;
203 zPosition[1] = yHalfLength1[0] * 2. +
204 ( yHalfLength1[1] * 2. /
tan( theta0 ) + BSCCryLength / 2. ) *
cos( theta0 ) +
205 ( yHalfLength1[1] + yHalfLength2[1] ) / 2. *
sin( theta0 );
207 rearBoxPosX[1] = xPosition[1] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
sin( theta0 );
208 rearBoxPosY[1] = -( xHalfLength3[1] + xHalfLength4[1] ) / 2.;
209 rearBoxPosZ[1] = zPosition[1] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
cos( theta0 );
211 OCGirderRmin1[1] = rearBoxPosX[1] + rearBoxDz *
sin( theta0 ) / 2. +
212 rearBoxLength *
cos( theta0 ) / 2 + delta;
213 OCGirderRmin2[1] = rearBoxPosX[1] + rearBoxDz *
sin( theta0 ) / 2. -
214 rearBoxLength *
cos( theta0 ) / 2 + delta;
215 OCGirderDz[1] = rearBoxLength *
sin( theta0 );
216 OCGirderPosZ[1] = rearBoxPosZ[1] + rearBoxDz *
cos( theta0 ) / 2.;
218 cableLength[1] = BSCDz - rearBoxPosZ[1];
219 cablePosX[1] = cablePosX[0];
220 cablePosY[1] = cablePosY[0] + 2 * cableDr;
221 cablePosZ[1] = BSCDz - cableLength[1] / 2;
223 theta0 = theta0 - atan( ( yHalfLength2[1] - yHalfLength1[1] ) * 2. / BSCCryLength );
225 for ( i = 2; i < BSCNbTheta; i++ )
227 if ( verboseLevel > 1 )
229 G4cout <<
"------------------------------------>" << i << G4endl
230 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
233 zHalfLength[i] = zHalfLength[0];
234 yHalfLength1[i] = BSCYFront / 2.;
235 if ( i == BSCNbTheta - 1 ) { yHalfLength1[i] = BSCYFront1 / 2.; }
236 deltaR = yHalfLength1[i] * 2. *
cos( theta0 );
237 xHalfLength1[i] = xHalfLength1[0];
238 xHalfLength2[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
240 yHalfLength1[i] * ( 1. + BSCCryLength / ( rminprojected /
sin( theta0 ) +
241 yHalfLength1[i] * 2. /
tan( theta0 ) ) );
242 deltaR = deltaR + BSCCryLength *
sin( theta0 );
243 xHalfLength4[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
244 deltaR = deltaR - yHalfLength2[i] * 2. *
cos( theta0 );
245 xHalfLength3[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
247 thetaPosition[i] = theta0;
248 xPosition[i] = BSCPhiRmin + zHalfLength[i] *
sin( theta0 ) +
249 ( 3. * yHalfLength1[i] - yHalfLength2[i] ) / 2. *
cos( theta0 );
251 -( xHalfLength1[i] + xHalfLength3[i] + xHalfLength2[i] + xHalfLength4[i] ) / 4.;
252 zPosition[i] = BSCPosition1 + rminprojected /
tan( theta0 ) +
253 ( 2. * yHalfLength1[i] /
tan( theta0 ) + zHalfLength[i] ) *
cos( theta0 ) +
254 ( yHalfLength1[i] + yHalfLength2[i] ) / 2. *
sin( theta0 );
256 rearBoxPosX[i] = xPosition[i] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
sin( theta0 );
257 rearBoxPosY[i] = -( xHalfLength3[i] + xHalfLength4[i] ) / 2.;
258 rearBoxPosZ[i] = zPosition[i] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
cos( theta0 );
260 OCGirderRmin1[i] = rearBoxPosX[i] + rearBoxDz *
sin( theta0 ) / 2. +
261 rearBoxLength *
cos( theta0 ) / 2 + delta;
262 OCGirderRmin2[i] = rearBoxPosX[i] + rearBoxDz *
sin( theta0 ) / 2. -
263 rearBoxLength *
cos( theta0 ) / 2 + delta;
264 OCGirderDz[i] = rearBoxLength *
sin( theta0 );
265 OCGirderPosZ[i] = rearBoxPosZ[i] + rearBoxDz *
cos( theta0 ) / 2.;
267 G4int xCable, yCable;
269 yCable = i - 4 * (G4int)( i / 4 );
270 cableLength[i] = BSCDz - ( rearBoxPosZ[i] + rearBoxDz / 2. *
cos( theta0 ) );
271 cablePosX[i] = cablePosX[0] - xCable * 2 * cableDr;
272 cablePosY[i] = cablePosY[0] + yCable * 2 * cableDr;
273 cablePosZ[i] = BSCDz - cableLength[i] / 2;
276 atan( 2. * yHalfLength1[i] /
277 ( rminprojected /
sin( theta0 ) + 2. * yHalfLength1[i] /
tan( theta0 ) ) );
279 thetaPosition[BSCNbTheta] = theta0;
280 if ( verboseLevel > 1 )
282 G4cout <<
"------------------------------------>" << i << G4endl
283 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
287 for ( i = 0; i < BSCNbTheta; i++ )
289 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) +
290 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) *
291 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) /
293 thetaAxis[i] = atan( oop / BSCCryLength );
296 atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
297 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) * 2. );
298 tanAlpha2[i] = -( xHalfLength4[i] - xHalfLength3[i] ) / yHalfLength2[i] / 2.;
299 tanAlpha1[i] = -( xHalfLength2[i] - xHalfLength1[i] ) / yHalfLength1[i] / 2.;
326 G4double totalThickness = fTyvekThickness + fAlThickness + fMylarThickness;
327 G4double delta = 0., angle1 = 0. * deg, angle2 = 0. * deg;
330 G4double rminprojected = BSCRmin *
cos( BSCAngleRotat );
331 rminprojected = BSCRmin;
334 for ( i = 0; i < BSCNbTheta; i++ )
336 zHalfLength[BSCNbTheta + i] = totalThickness / 2.;
337 yHalfLength1[BSCNbTheta + i] = yHalfLength1[i];
338 yHalfLength2[BSCNbTheta + i] = yHalfLength1[i] + ( yHalfLength2[i] - yHalfLength1[i] ) *
339 totalThickness / BSCCryLength;
340 xHalfLength1[BSCNbTheta + i] = xHalfLength1[i];
341 xHalfLength2[BSCNbTheta + i] = xHalfLength2[i];
342 xHalfLength1[BSCNbTheta * 2 + i] = xHalfLength3[BSCNbTheta + i] =
343 xHalfLength1[i] * ( BSCCryLength - totalThickness ) / BSCCryLength +
344 xHalfLength3[i] * totalThickness / BSCCryLength;
345 xHalfLength2[BSCNbTheta * 4 + i] = xHalfLength4[BSCNbTheta + i] =
346 xHalfLength2[i] * ( BSCCryLength - totalThickness ) / BSCCryLength +
347 xHalfLength4[i] * totalThickness / BSCCryLength;
349 zHalfLength[BSCNbTheta * 5 + i] = zHalfLength[BSCNbTheta * 4 + i] =
350 zHalfLength[BSCNbTheta * 3 + i] = zHalfLength[BSCNbTheta * 2 + i] =
351 zHalfLength[i] - totalThickness / 2.;
353 yHalfLength2[BSCNbTheta * 2 + i] = yHalfLength1[BSCNbTheta * 2 + i] =
354 totalThickness /
cos( thetaPosition[i + 1] - thetaPosition[i] ) / 2.;
355 xHalfLength3[BSCNbTheta * 2 + i] = xHalfLength3[i];
356 xHalfLength4[BSCNbTheta * 2 + i] =
357 xHalfLength3[i] + ( xHalfLength4[i] - xHalfLength3[i] ) *
358 yHalfLength2[BSCNbTheta * 2 + i] / yHalfLength2[i];
359 xHalfLength2[BSCNbTheta * 2 + i] =
360 xHalfLength3[BSCNbTheta + i] +
361 ( xHalfLength4[BSCNbTheta + i] - xHalfLength3[BSCNbTheta + i] ) *
362 yHalfLength1[BSCNbTheta * 2 + i] / yHalfLength2[BSCNbTheta * 1 + i];
364 yHalfLength2[BSCNbTheta * 4 + i] = yHalfLength1[BSCNbTheta * 4 + i] = totalThickness / 2.;
365 xHalfLength4[BSCNbTheta * 4 + i] = xHalfLength4[i];
366 xHalfLength3[BSCNbTheta * 4 + i] =
367 xHalfLength4[i] - ( xHalfLength4[i] - xHalfLength3[i] ) *
368 yHalfLength2[BSCNbTheta * 4 + i] / yHalfLength2[i];
369 xHalfLength1[BSCNbTheta * 4 + i] =
370 xHalfLength4[BSCNbTheta + i] -
371 ( xHalfLength4[BSCNbTheta + i] - xHalfLength3[BSCNbTheta + i] ) *
372 yHalfLength1[BSCNbTheta * 4 + i] / yHalfLength2[BSCNbTheta * 1 + i];
374 delta = totalThickness / 2. + yHalfLength1[BSCNbTheta * 2 + i];
375 angle1 = atan( yHalfLength2[i] / ( xHalfLength4[i] - xHalfLength3[i] ) );
376 angle2 = atan( 2. * ( xHalfLength4[i] - xHalfLength2[i] ) *
sin( angle1 ) / BSCCryLength );
378 yHalfLength1[BSCNbTheta * 5 + i] = yHalfLength1[BSCNbTheta * 3 + i] =
379 yHalfLength1[i] - delta;
380 yHalfLength2[BSCNbTheta * 5 + i] = yHalfLength2[BSCNbTheta * 3 + i] =
381 yHalfLength2[i] - delta;
382 xHalfLength4[BSCNbTheta * 3 + i] = xHalfLength3[BSCNbTheta * 3 + i] =
383 xHalfLength2[BSCNbTheta * 3 + i] = xHalfLength1[BSCNbTheta * 3 + i] =
384 totalThickness /
cos( angle2 ) /
sin( angle1 ) / 2.;
385 xHalfLength4[BSCNbTheta * 5 + i] = xHalfLength3[BSCNbTheta * 5 + i] =
386 xHalfLength2[BSCNbTheta * 5 + i] = xHalfLength1[BSCNbTheta * 5 + i] =
389 zHalfLength[i] = zHalfLength[i] - totalThickness / 2.;
390 yHalfLength1[i] = yHalfLength1[i] - delta;
391 yHalfLength2[i] = yHalfLength2[i] - delta;
392 delta = totalThickness * ( 1. + 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
393 xHalfLength1[i] = xHalfLength1[i] - delta;
394 xHalfLength2[i] = xHalfLength2[i] - delta;
395 xHalfLength3[i] = xHalfLength3[i] - delta;
396 xHalfLength4[i] = xHalfLength4[i] - delta;
398 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) +
399 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) *
400 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) /
402 thetaAxis[i] = atan( oop / BSCCryLength );
406 atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
407 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) * 2. );
409 oop = sqrt( ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) *
410 ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) +
411 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
412 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) *
413 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
414 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) /
416 thetaAxis[BSCNbTheta + i] = atan( oop / totalThickness );
417 phiAxis[BSCNbTheta + i] =
418 -atan( ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) /
419 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
420 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) *
423 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) *
425 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
426 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) *
427 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
428 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) /
430 thetaAxis[BSCNbTheta * 2 + i] = atan( oop / ( zHalfLength[BSCNbTheta * 2 + i] * 2 ) );
431 phiAxis[BSCNbTheta * 2 + i] =
432 -atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
433 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
434 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) *
438 ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) * 4 +
439 ( xHalfLength4[i] - xHalfLength2[i] ) * ( xHalfLength4[i] - xHalfLength2[i] ) * 4 );
440 thetaAxis[BSCNbTheta * 3 + i] = atan( oop / ( zHalfLength[BSCNbTheta * 3 + i] * 2 ) );
441 phiAxis[BSCNbTheta * 3 + i] =
442 -atan( ( yHalfLength2[i] - yHalfLength1[i] ) / ( xHalfLength4[i] - xHalfLength2[i] ) );
444 thetaAxis[BSCNbTheta * 4 + i] =
445 atan( ( xHalfLength4[BSCNbTheta * 4 + i] + xHalfLength3[BSCNbTheta * 4 + i] -
446 xHalfLength2[BSCNbTheta * 4 + i] - xHalfLength1[BSCNbTheta * 4 + i] ) /
447 2. / ( zHalfLength[BSCNbTheta * 4 + i] * 2 ) );
448 phiAxis[BSCNbTheta * 4 + i] = 0;
450 thetaAxis[BSCNbTheta * 5 + i] =
451 atan( ( xHalfLength3[BSCNbTheta * 5 + i] - xHalfLength1[BSCNbTheta * 5 + i] ) /
452 ( zHalfLength[BSCNbTheta * 5 + i] * 2 ) );
453 phiAxis[BSCNbTheta * 5 + i] = -90. * deg;
455 tanAlpha2[BSCNbTheta + i] = tanAlpha1[BSCNbTheta + i] = tanAlpha1[i] =
456 -( xHalfLength2[i] - xHalfLength1[i] ) / yHalfLength1[i] / 2.;
457 tanAlpha1[BSCNbTheta * 2 + i] =
458 ( xHalfLength2[BSCNbTheta * 2 + i] - xHalfLength1[BSCNbTheta * 2 + i] ) /
459 yHalfLength1[BSCNbTheta * 2 + i] / 2.;
460 tanAlpha1[BSCNbTheta * 3 + i] = tanAlpha1[i] * 2.;
461 tanAlpha1[BSCNbTheta * 4 + i] =
462 ( xHalfLength2[BSCNbTheta * 4 + i] - xHalfLength1[BSCNbTheta * 4 + i] ) /
463 yHalfLength1[BSCNbTheta * 4 + i] / 2.;
464 tanAlpha1[BSCNbTheta * 5 + i] =
465 ( xHalfLength2[BSCNbTheta * 5 + i] - xHalfLength1[BSCNbTheta * 5 + i] ) /
466 yHalfLength1[BSCNbTheta * 5 + i] / 2.;
468 tanAlpha2[i] = -( xHalfLength4[i] - xHalfLength3[i] ) / yHalfLength2[i] / 2.;
470 tanAlpha2[BSCNbTheta * 2 + i] =
471 ( xHalfLength4[BSCNbTheta * 2 + i] - xHalfLength3[BSCNbTheta * 2 + i] ) /
472 yHalfLength2[BSCNbTheta * 2 + i] / 2.;
473 tanAlpha2[BSCNbTheta * 3 + i] = tanAlpha2[i] * 2.;
474 tanAlpha2[BSCNbTheta * 4 + i] =
475 ( xHalfLength4[BSCNbTheta * 4 + i] - xHalfLength3[BSCNbTheta * 4 + i] ) /
476 yHalfLength2[BSCNbTheta * 4 + i] / 2.;
477 tanAlpha2[BSCNbTheta * 5 + i] =
478 ( xHalfLength4[BSCNbTheta * 5 + i] - xHalfLength3[BSCNbTheta * 5 + i] ) /
479 yHalfLength2[BSCNbTheta * 5 + i] / 2.;
481 zPosition[BSCNbTheta * 5 + i] = zPosition[BSCNbTheta * 3 + i] = zPosition[i] =
482 zPosition[i] + totalThickness / 2. *
cos( thetaPosition[i] ) -
483 yHalfLength1[BSCNbTheta * 2 + i] *
sin( thetaPosition[i] );
484 zPosition[i] = totalThickness / 2.;
485 xPosition[BSCNbTheta * 5 + i] = xPosition[BSCNbTheta * 3 + i] = xPosition[i] =
486 xPosition[i] + totalThickness / 2. *
sin( thetaPosition[i] ) +
487 totalThickness * ( 1. /
cos( thetaPosition[i + 1] - thetaPosition[i] ) - 1 ) / 2. *
488 cos( thetaPosition[i] );
489 xPosition[i] = totalThickness * ( 1. - 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
492 yPosition[i] + totalThickness * ( 1. - 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
494 yHalfLength1[BSCNbTheta * 2 + i] - totalThickness / 2.;
495 yPosition[BSCNbTheta * 3 + i] = yPosition[i] * 2. + xHalfLength1[BSCNbTheta * 3 + i];
496 yPosition[BSCNbTheta * 5 + i] = xHalfLength1[BSCNbTheta * 5 + i];
498 xPosition[BSCNbTheta + i] =
499 BSCPhiRmin + zHalfLength[BSCNbTheta + i] *
sin( thetaPosition[i] ) +
500 ( 3. * yHalfLength1[BSCNbTheta + i] - yHalfLength2[BSCNbTheta + i] ) / 2. *
501 cos( thetaPosition[i] );
502 yPosition[BSCNbTheta + i] =
503 ( xHalfLength1[BSCNbTheta + i] + xHalfLength3[BSCNbTheta + i] +
504 xHalfLength2[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] ) /
506 zPosition[BSCNbTheta + i] =
507 BSCPosition1 + rminprojected /
tan( thetaPosition[i] ) +
508 ( 2. * yHalfLength1[BSCNbTheta + i] /
tan( thetaPosition[i] ) +
509 zHalfLength[BSCNbTheta + i] ) *
510 cos( thetaPosition[i] ) +
511 ( yHalfLength1[BSCNbTheta + i] + yHalfLength2[BSCNbTheta + i] ) / 2. *
512 sin( thetaPosition[i] );
514 xPosition[BSCNbTheta * 2 + i] =
516 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 2 + i] ) *
517 cos( thetaPosition[i] );
518 zPosition[BSCNbTheta * 2 + i] =
520 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 2 + i] ) *
521 sin( thetaPosition[i] );
522 yPosition[BSCNbTheta * 2 + i] =
523 ( xHalfLength1[BSCNbTheta * 2 + i] + xHalfLength3[BSCNbTheta * 2 + i] +
524 xHalfLength2[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] ) /
527 xPosition[BSCNbTheta * 4 + i] =
529 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 4 + i] ) *
530 cos( thetaPosition[i] );
531 zPosition[BSCNbTheta * 4 + i] =
533 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 4 + i] ) *
534 sin( thetaPosition[i] );
535 yPosition[BSCNbTheta * 4 + i] =
536 ( xHalfLength1[BSCNbTheta * 4 + i] + xHalfLength3[BSCNbTheta * 4 + i] +
537 xHalfLength2[BSCNbTheta * 4 + i] + xHalfLength4[BSCNbTheta * 4 + i] ) /
541 if ( verboseLevel > 1 )
542 for ( i = 0; i < BSCNbTheta * 6; i++ )
544 G4cout <<
"The sizes of the " << i + 1 <<
" crystal are:" << G4endl
545 <<
"zHalfLength =" << zHalfLength[i] / cm <<
"(cm)," << G4endl
546 <<
"thetaAxis =" << thetaAxis[i] / deg <<
"(deg)," << G4endl
547 <<
"phiAxis =" << phiAxis[i] / deg <<
"(deg)," << G4endl
548 <<
"yHalfLength1=" << yHalfLength1[i] / cm <<
"(cm)," << G4endl
549 <<
"xHalfLength1=" << xHalfLength1[i] / cm <<
"(cm)," << G4endl
550 <<
"xHalfLength2=" << xHalfLength2[i] / cm <<
"(cm)," << G4endl
551 <<
"tanAlpha1 =" << tanAlpha1[i] << G4endl
552 <<
"yHalfLength2=" << yHalfLength2[i] / cm <<
"(cm)," << G4endl
553 <<
"xHalfLength3=" << xHalfLength3[i] / cm <<
"(cm)," << G4endl
554 <<
"xHalfLength4=" << xHalfLength4[i] / cm <<
"(cm)," << G4endl
555 <<
"tanAlpha2 =" << tanAlpha2[i] <<
"." << G4endl <<
"The position of the "
556 << i + 1 <<
" crystal is:" << G4endl <<
"(" << xPosition[i] / cm <<
","
557 << yPosition[i] / cm <<
"," << zPosition[i] / cm <<
")cm" << G4endl;