126 const G4double delta = 1. * mm;
127 TaperRingRmin1 = BSCRmax1 - TaperRingThickness1;
128 TaperRingDr = TaperRingThickness2 /
cos( TaperRingTheta );
129 TaperRingRmin2 = BSCRmax1 - TaperRingDr + TaperRingDz *
tan( TaperRingTheta );
130 TaperRingOuterLength1 = TaperRingOuterLength + TaperRingThickness3 *
tan( TaperRingTheta );
132 BSCRmax2 = TaperRingRmin2 + TaperRingDr - TaperRingThickness3 *
tan( TaperRingTheta );
133 BSCRmax = BSCRmin + 33.8 * cm;
134 BSCPhiDphi = 360. * deg / BSCNbPhi;
135 BSCPhiSphi = -BSCPhiDphi / 2.;
137 BSCPhiRmax = BSCRmax - 0.5 * cm;
138 BSCPhiRmin = BSCRmin /
sin( 90. * deg + BSCPhiDphi / 2. ) *
139 sin( 90. * deg + BSCPhiDphi / 2. - BSCAngleRotat );
140 SPBarDphi = 2 * atan( SPBarwidth / ( 2 * BSCRmax ) );
143 zHalfLength[0] = BSCCryLength / 2.;
144 yHalfLength1[0] = BSCYFront0 / 2.;
145 xHalfLength1[0] = BSCPhiRmin *
tan( BSCPhiDphi ) / 2.;
146 xHalfLength2[0] = xHalfLength1[0];
149 G4double rminprojected = BSCRmin *
cos( BSCAngleRotat );
150 rminprojected = BSCRmin;
153 yHalfLength1[0] + ( BSCYFront0 - BSCPosition0 ) / rminprojected * BSCCryLength / 2.;
154 xHalfLength3[0] = xHalfLength1[0] * ( BSCPhiRmin + BSCCryLength ) / BSCPhiRmin;
155 xHalfLength4[0] = xHalfLength2[0] * ( BSCPhiRmin + BSCCryLength ) / BSCPhiRmin;
157 thetaPosition[0] = 90. * deg;
158 xPosition[0] = BSCPhiRmin + BSCCryLength / 2.;
160 -( xHalfLength1[0] + xHalfLength3[0] + xHalfLength2[0] + xHalfLength4[0] ) / 4.;
161 zPosition[0] = ( yHalfLength1[0] + yHalfLength2[0] ) / 2.;
163 theta0 = 90. * deg - atan( ( BSCYFront0 - BSCPosition0 ) / rminprojected );
164 if ( verboseLevel > 1 )
166 G4cout <<
"------------------------------------>1" << G4endl
167 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
170 rearBoxPosX[0] = xPosition[0] + BSCCryLength / 2. + rearBoxDz / 2.;
171 rearBoxPosY[0] = -std::min( xHalfLength3[0], xHalfLength4[0] );
172 rearBoxPosZ[0] = yHalfLength2[0];
174 OCGirderRmin1[0] = rearBoxPosX[0] + rearBoxDz / 2. + delta;
175 OCGirderRmin2[0] = rearBoxPosX[0] + rearBoxDz / 2. + delta;
176 OCGirderDz[0] = rearBoxLength;
177 OCGirderPosZ[0] = rearBoxLength / 2;
179 cableLength[0] = BSCDz - rearBoxPosZ[0];
180 cablePosX[0] = BSCPhiRmax - cableDr - 2. * mm;
181 cablePosY[0] = rearBoxPosY[0] - 3 * cableDr;
182 cablePosZ[0] = BSCDz - cableLength[0] / 2;
185 zHalfLength[1] = BSCCryLength / 2.;
186 yHalfLength1[1] = BSCYFront0 / 2.;
187 G4double deltaR = BSCYFront0 *
cos( theta0 );
188 xHalfLength1[1] = xHalfLength1[0];
189 xHalfLength2[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
192 tan( theta0 - atan( rminprojected /
193 ( BSCYFront0 * ( 1. + 1. /
sin( theta0 ) ) - BSCPosition1 ) ) ) *
195 deltaR = deltaR + BSCCryLength *
sin( theta0 );
196 xHalfLength4[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
197 deltaR = deltaR - yHalfLength2[1] * 2. *
cos( theta0 );
198 xHalfLength3[1] = xHalfLength1[1] * ( BSCPhiRmin + deltaR ) / BSCPhiRmin;
200 thetaPosition[1] = theta0;
201 xPosition[1] = BSCPhiRmin + BSCCryLength / 2. *
sin( theta0 ) +
202 ( 3. * yHalfLength1[1] - yHalfLength2[1] ) / 2. *
cos( theta0 );
204 -( xHalfLength1[1] + xHalfLength3[1] + xHalfLength2[1] + xHalfLength4[1] ) / 4.;
205 zPosition[1] = yHalfLength1[0] * 2. +
206 ( yHalfLength1[1] * 2. /
tan( theta0 ) + BSCCryLength / 2. ) *
cos( theta0 ) +
207 ( yHalfLength1[1] + yHalfLength2[1] ) / 2. *
sin( theta0 );
209 rearBoxPosX[1] = xPosition[1] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
sin( theta0 );
210 rearBoxPosY[1] = -std::min( xHalfLength3[1], xHalfLength4[1] );
211 rearBoxPosZ[1] = zPosition[1] + ( BSCCryLength / 2. + rearBoxDz / 2. ) *
cos( theta0 );
213 OCGirderRmin1[1] = rearBoxPosX[1] + rearBoxDz *
sin( theta0 ) / 2. +
214 rearBoxLength *
cos( theta0 ) / 2 + delta;
215 OCGirderRmin2[1] = rearBoxPosX[1] + rearBoxDz *
sin( theta0 ) / 2. -
216 rearBoxLength *
cos( theta0 ) / 2 + delta;
217 OCGirderDz[1] = rearBoxLength *
sin( theta0 );
218 OCGirderPosZ[1] = rearBoxPosZ[1] + rearBoxDz *
cos( theta0 ) / 2.;
220 cableLength[1] = BSCDz - rearBoxPosZ[1];
221 cablePosX[1] = cablePosX[0];
222 cablePosY[1] = cablePosY[0] + 2 * cableDr;
223 cablePosZ[1] = BSCDz - cableLength[1] / 2;
225 theta0 = theta0 - atan( ( yHalfLength2[1] - yHalfLength1[1] ) * 2. / BSCCryLength );
227 for ( i = 2; i < BSCNbTheta; i++ )
229 if ( verboseLevel > 1 )
231 G4cout <<
"------------------------------------>" << i << G4endl
232 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
235 if ( i == BSCNbTheta - 1 )
237 CryLength = BSCCryLength1;
238 yHalfLength1[i] = BSCYFront1 / 2.;
243 CryLength = BSCCryLength;
244 yHalfLength1[i] = BSCYFront / 2.;
246 zHalfLength[i] = CryLength / 2;
248 deltaR = yHalfLength1[i] * 2. *
cos( theta0 );
249 xHalfLength1[i] = xHalfLength1[0];
250 xHalfLength2[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
252 yHalfLength1[i] * ( 1. + CryLength / ( rminprojected /
sin( theta0 ) +
253 yHalfLength1[i] * 2. /
tan( theta0 ) ) );
254 deltaR = deltaR + CryLength *
sin( theta0 );
255 xHalfLength4[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
256 deltaR = deltaR - yHalfLength2[i] * 2. *
cos( theta0 );
257 xHalfLength3[i] = xHalfLength1[i] / BSCPhiRmin * ( BSCPhiRmin + deltaR );
259 thetaPosition[i] = theta0;
260 xPosition[i] = BSCPhiRmin + zHalfLength[i] *
sin( theta0 ) +
261 ( 3. * yHalfLength1[i] - yHalfLength2[i] ) / 2. *
cos( theta0 );
263 -( xHalfLength1[i] + xHalfLength3[i] + xHalfLength2[i] + xHalfLength4[i] ) / 4.;
264 zPosition[i] = BSCPosition1 + rminprojected /
tan( theta0 ) +
265 ( 2. * yHalfLength1[i] /
tan( theta0 ) + zHalfLength[i] ) *
cos( theta0 ) +
266 ( yHalfLength1[i] + yHalfLength2[i] ) / 2. *
sin( theta0 );
268 rearBoxPosX[i] = xPosition[i] + ( CryLength / 2. + rearBoxDz / 2. ) *
sin( theta0 );
269 rearBoxPosY[i] = -std::min( xHalfLength3[i], xHalfLength4[i] );
270 rearBoxPosZ[i] = zPosition[i] + ( CryLength / 2. + rearBoxDz / 2. ) *
cos( theta0 );
272 OCGirderRmin1[i] = rearBoxPosX[i] + rearBoxDz *
sin( theta0 ) / 2. +
273 rearBoxLength *
cos( theta0 ) / 2 + delta;
274 OCGirderRmin2[i] = rearBoxPosX[i] + rearBoxDz *
sin( theta0 ) / 2. -
275 rearBoxLength *
cos( theta0 ) / 2 + delta;
276 OCGirderDz[i] = rearBoxLength *
sin( theta0 );
277 OCGirderPosZ[i] = rearBoxPosZ[i] + rearBoxDz *
cos( theta0 ) / 2.;
279 G4int xCable, yCable;
281 yCable = i - 4 * (G4int)( i / 4 );
282 cableLength[i] = BSCDz - ( rearBoxPosZ[i] + rearBoxDz / 2. *
cos( theta0 ) );
283 cablePosX[i] = cablePosX[0] - xCable * 2 * cableDr;
284 cablePosY[i] = cablePosY[0] + yCable * 2 * cableDr;
285 cablePosZ[i] = BSCDz - cableLength[i] / 2;
288 atan( 2. * yHalfLength1[i] /
289 ( rminprojected /
sin( theta0 ) + 2. * yHalfLength1[i] /
tan( theta0 ) ) );
291 thetaPosition[BSCNbTheta] = theta0;
292 if ( verboseLevel > 1 )
294 G4cout <<
"------------------------------------>" << i << G4endl
295 <<
"The direction of crystal is:" << theta0 / deg <<
"(deg)." << G4endl;
299 G4double dx = 0.001 * mm;
300 for ( i = 0; i < BSCNbTheta; i++ )
302 xHalfLength1[i] -= dx;
303 xHalfLength2[i] -= dx;
304 xHalfLength3[i] -= dx;
305 xHalfLength4[i] -= dx;
306 yHalfLength1[i] -= dx;
307 yHalfLength2[i] -= dx;
310 if ( i == BSCNbTheta - 1 )
311 { CryLength = BSCCryLength1; }
312 else { CryLength = BSCCryLength; }
313 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) +
314 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) *
315 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) /
317 thetaAxis[i] = atan( oop / CryLength );
320 atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
321 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) * 2. );
322 tanAlpha2[i] = -( xHalfLength4[i] - xHalfLength3[i] ) / yHalfLength2[i] / 2.;
323 tanAlpha1[i] = -( xHalfLength2[i] - xHalfLength1[i] ) / yHalfLength1[i] / 2.;
350 G4double totalThickness = fTyvekThickness + fAlThickness + fMylarThickness;
351 G4double delta = 0., angle1 = 0. * deg, angle2 = 0. * deg;
354 G4double rminprojected = BSCRmin *
cos( BSCAngleRotat );
355 rminprojected = BSCRmin;
359 for ( i = 0; i < BSCNbTheta; i++ )
362 if ( i == BSCNbTheta - 1 )
363 { CryLength = BSCCryLength1; }
364 else { CryLength = BSCCryLength; }
365 zHalfLength[BSCNbTheta + i] = totalThickness / 2.;
366 yHalfLength1[BSCNbTheta + i] = yHalfLength1[i];
367 yHalfLength2[BSCNbTheta + i] =
368 yHalfLength1[i] + ( yHalfLength2[i] - yHalfLength1[i] ) * totalThickness / CryLength;
369 xHalfLength1[BSCNbTheta + i] = xHalfLength1[i];
370 xHalfLength2[BSCNbTheta + i] = xHalfLength2[i];
371 xHalfLength1[BSCNbTheta * 2 + i] = xHalfLength3[BSCNbTheta + i] =
372 xHalfLength1[i] * ( CryLength - totalThickness ) / CryLength +
373 xHalfLength3[i] * totalThickness / CryLength;
374 xHalfLength2[BSCNbTheta * 4 + i] = xHalfLength4[BSCNbTheta + i] =
375 xHalfLength2[i] * ( CryLength - totalThickness ) / CryLength +
376 xHalfLength4[i] * totalThickness / CryLength;
378 zHalfLength[BSCNbTheta * 5 + i] = zHalfLength[BSCNbTheta * 4 + i] =
379 zHalfLength[BSCNbTheta * 3 + i] = zHalfLength[BSCNbTheta * 2 + i] =
380 zHalfLength[i] - totalThickness / 2.;
382 yHalfLength2[BSCNbTheta * 2 + i] = yHalfLength1[BSCNbTheta * 2 + i] =
383 totalThickness /
cos( thetaPosition[i + 1] - thetaPosition[i] ) / 2.;
384 xHalfLength3[BSCNbTheta * 2 + i] = xHalfLength3[i];
385 xHalfLength4[BSCNbTheta * 2 + i] =
386 xHalfLength3[i] + ( xHalfLength4[i] - xHalfLength3[i] ) *
387 yHalfLength2[BSCNbTheta * 2 + i] / yHalfLength2[i];
388 xHalfLength2[BSCNbTheta * 2 + i] =
389 xHalfLength3[BSCNbTheta + i] +
390 ( xHalfLength4[BSCNbTheta + i] - xHalfLength3[BSCNbTheta + i] ) *
391 yHalfLength1[BSCNbTheta * 2 + i] / yHalfLength2[BSCNbTheta * 1 + i];
393 yHalfLength2[BSCNbTheta * 4 + i] = yHalfLength1[BSCNbTheta * 4 + i] = totalThickness / 2.;
394 xHalfLength4[BSCNbTheta * 4 + i] = xHalfLength4[i];
395 xHalfLength3[BSCNbTheta * 4 + i] =
396 xHalfLength4[i] - ( xHalfLength4[i] - xHalfLength3[i] ) *
397 yHalfLength2[BSCNbTheta * 4 + i] / yHalfLength2[i];
398 xHalfLength1[BSCNbTheta * 4 + i] =
399 xHalfLength4[BSCNbTheta + i] -
400 ( xHalfLength4[BSCNbTheta + i] - xHalfLength3[BSCNbTheta + i] ) *
401 yHalfLength1[BSCNbTheta * 4 + i] / yHalfLength2[BSCNbTheta * 1 + i];
403 delta = totalThickness / 2. + yHalfLength1[BSCNbTheta * 2 + i];
404 angle1 = atan( yHalfLength2[i] / ( xHalfLength4[i] - xHalfLength3[i] ) );
405 angle2 = atan( 2. * ( xHalfLength4[i] - xHalfLength2[i] ) *
sin( angle1 ) / CryLength );
407 yHalfLength1[BSCNbTheta * 5 + i] = yHalfLength1[BSCNbTheta * 3 + i] =
408 yHalfLength1[i] - delta;
409 yHalfLength2[BSCNbTheta * 5 + i] = yHalfLength2[BSCNbTheta * 3 + i] =
410 yHalfLength2[i] - delta;
411 xHalfLength4[BSCNbTheta * 3 + i] = xHalfLength3[BSCNbTheta * 3 + i] =
412 xHalfLength2[BSCNbTheta * 3 + i] = xHalfLength1[BSCNbTheta * 3 + i] =
413 totalThickness /
cos( angle2 ) /
sin( angle1 ) / 2.;
414 xHalfLength4[BSCNbTheta * 5 + i] = xHalfLength3[BSCNbTheta * 5 + i] =
415 xHalfLength2[BSCNbTheta * 5 + i] = xHalfLength1[BSCNbTheta * 5 + i] =
418 zHalfLength[i] = zHalfLength[i] - totalThickness / 2.;
419 yHalfLength1[i] = yHalfLength1[i] - delta;
420 yHalfLength2[i] = yHalfLength2[i] - delta;
421 delta = totalThickness * ( 1. + 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
422 xHalfLength1[i] = xHalfLength1[i] - delta;
423 xHalfLength2[i] = xHalfLength2[i] - delta;
424 xHalfLength3[i] = xHalfLength3[i] - delta;
425 xHalfLength4[i] = xHalfLength4[i] - delta;
427 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) +
428 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) *
429 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) /
431 thetaAxis[i] = atan( oop / CryLength );
435 atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
436 ( xHalfLength3[i] + xHalfLength4[i] - xHalfLength1[i] - xHalfLength2[i] ) * 2. );
438 oop = sqrt( ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) *
439 ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) +
440 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
441 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) *
442 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
443 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) /
445 thetaAxis[BSCNbTheta + i] = atan( oop / totalThickness );
446 phiAxis[BSCNbTheta + i] =
447 -atan( ( yHalfLength2[BSCNbTheta + i] - yHalfLength1[BSCNbTheta + i] ) /
448 ( xHalfLength3[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] -
449 xHalfLength1[BSCNbTheta + i] - xHalfLength2[BSCNbTheta + i] ) *
452 oop = sqrt( ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) *
454 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
455 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) *
456 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
457 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) /
459 thetaAxis[BSCNbTheta * 2 + i] = atan( oop / ( zHalfLength[BSCNbTheta * 2 + i] * 2 ) );
460 phiAxis[BSCNbTheta * 2 + i] =
461 -atan( ( yHalfLength2[i] - yHalfLength1[i] ) /
462 ( xHalfLength3[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] -
463 xHalfLength1[BSCNbTheta * 2 + i] - xHalfLength2[BSCNbTheta * 2 + i] ) *
467 ( yHalfLength2[i] - yHalfLength1[i] ) * ( yHalfLength2[i] - yHalfLength1[i] ) * 4 +
468 ( xHalfLength4[i] - xHalfLength2[i] ) * ( xHalfLength4[i] - xHalfLength2[i] ) * 4 );
469 thetaAxis[BSCNbTheta * 3 + i] = atan( oop / ( zHalfLength[BSCNbTheta * 3 + i] * 2 ) );
470 phiAxis[BSCNbTheta * 3 + i] =
471 -atan( ( yHalfLength2[i] - yHalfLength1[i] ) / ( xHalfLength4[i] - xHalfLength2[i] ) );
473 thetaAxis[BSCNbTheta * 4 + i] =
474 atan( ( xHalfLength4[BSCNbTheta * 4 + i] + xHalfLength3[BSCNbTheta * 4 + i] -
475 xHalfLength2[BSCNbTheta * 4 + i] - xHalfLength1[BSCNbTheta * 4 + i] ) /
476 2. / ( zHalfLength[BSCNbTheta * 4 + i] * 2 ) );
477 phiAxis[BSCNbTheta * 4 + i] = 0;
479 thetaAxis[BSCNbTheta * 5 + i] =
480 atan( ( xHalfLength3[BSCNbTheta * 5 + i] - xHalfLength1[BSCNbTheta * 5 + i] ) /
481 ( zHalfLength[BSCNbTheta * 5 + i] * 2 ) );
482 phiAxis[BSCNbTheta * 5 + i] = -90. * deg;
484 tanAlpha2[BSCNbTheta + i] = tanAlpha1[BSCNbTheta + i] = tanAlpha1[i] =
485 -( xHalfLength2[i] - xHalfLength1[i] ) / yHalfLength1[i] / 2.;
486 tanAlpha1[BSCNbTheta * 2 + i] =
487 ( xHalfLength2[BSCNbTheta * 2 + i] - xHalfLength1[BSCNbTheta * 2 + i] ) /
488 yHalfLength1[BSCNbTheta * 2 + i] / 2.;
489 tanAlpha1[BSCNbTheta * 3 + i] = tanAlpha1[i] * 2.;
490 tanAlpha1[BSCNbTheta * 4 + i] =
491 ( xHalfLength2[BSCNbTheta * 4 + i] - xHalfLength1[BSCNbTheta * 4 + i] ) /
492 yHalfLength1[BSCNbTheta * 4 + i] / 2.;
493 tanAlpha1[BSCNbTheta * 5 + i] =
494 ( xHalfLength2[BSCNbTheta * 5 + i] - xHalfLength1[BSCNbTheta * 5 + i] ) /
495 yHalfLength1[BSCNbTheta * 5 + i] / 2.;
497 tanAlpha2[i] = -( xHalfLength4[i] - xHalfLength3[i] ) / yHalfLength2[i] / 2.;
499 tanAlpha2[BSCNbTheta * 2 + i] =
500 ( xHalfLength4[BSCNbTheta * 2 + i] - xHalfLength3[BSCNbTheta * 2 + i] ) /
501 yHalfLength2[BSCNbTheta * 2 + i] / 2.;
502 tanAlpha2[BSCNbTheta * 3 + i] = tanAlpha2[i] * 2.;
503 tanAlpha2[BSCNbTheta * 4 + i] =
504 ( xHalfLength4[BSCNbTheta * 4 + i] - xHalfLength3[BSCNbTheta * 4 + i] ) /
505 yHalfLength2[BSCNbTheta * 4 + i] / 2.;
506 tanAlpha2[BSCNbTheta * 5 + i] =
507 ( xHalfLength4[BSCNbTheta * 5 + i] - xHalfLength3[BSCNbTheta * 5 + i] ) /
508 yHalfLength2[BSCNbTheta * 5 + i] / 2.;
510 zPosition[BSCNbTheta * 5 + i] = zPosition[BSCNbTheta * 3 + i] = zPosition[i] =
511 zPosition[i] + totalThickness / 2. *
cos( thetaPosition[i] ) -
512 yHalfLength1[BSCNbTheta * 2 + i] *
sin( thetaPosition[i] );
513 zPosition[i] = totalThickness / 2.;
514 xPosition[BSCNbTheta * 5 + i] = xPosition[BSCNbTheta * 3 + i] = xPosition[i] =
515 xPosition[i] + totalThickness / 2. *
sin( thetaPosition[i] ) +
516 totalThickness * ( 1. /
cos( thetaPosition[i + 1] - thetaPosition[i] ) - 1 ) / 2. *
517 cos( thetaPosition[i] );
518 xPosition[i] = totalThickness * ( 1. - 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
521 yPosition[i] + totalThickness * ( 1. - 1. /
cos( angle2 ) /
sin( angle1 ) ) / 2.;
523 yHalfLength1[BSCNbTheta * 2 + i] - totalThickness / 2.;
524 yPosition[BSCNbTheta * 3 + i] = yPosition[i] * 2. + xHalfLength1[BSCNbTheta * 3 + i];
525 yPosition[BSCNbTheta * 5 + i] = xHalfLength1[BSCNbTheta * 5 + i];
527 xPosition[BSCNbTheta + i] =
528 BSCPhiRmin + zHalfLength[BSCNbTheta + i] *
sin( thetaPosition[i] ) +
529 ( 3. * yHalfLength1[BSCNbTheta + i] - yHalfLength2[BSCNbTheta + i] ) / 2. *
530 cos( thetaPosition[i] );
531 yPosition[BSCNbTheta + i] =
532 ( xHalfLength1[BSCNbTheta + i] + xHalfLength3[BSCNbTheta + i] +
533 xHalfLength2[BSCNbTheta + i] + xHalfLength4[BSCNbTheta + i] ) /
535 zPosition[BSCNbTheta + i] =
536 BSCPosition1 + rminprojected /
tan( thetaPosition[i] ) +
537 ( 2. * yHalfLength1[BSCNbTheta + i] /
tan( thetaPosition[i] ) +
538 zHalfLength[BSCNbTheta + i] ) *
539 cos( thetaPosition[i] ) +
540 ( yHalfLength1[BSCNbTheta + i] + yHalfLength2[BSCNbTheta + i] ) / 2. *
541 sin( thetaPosition[i] );
543 xPosition[BSCNbTheta * 2 + i] =
545 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 2 + i] ) *
546 cos( thetaPosition[i] );
547 zPosition[BSCNbTheta * 2 + i] =
549 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 2 + i] ) *
550 sin( thetaPosition[i] );
551 yPosition[BSCNbTheta * 2 + i] =
552 ( xHalfLength1[BSCNbTheta * 2 + i] + xHalfLength3[BSCNbTheta * 2 + i] +
553 xHalfLength2[BSCNbTheta * 2 + i] + xHalfLength4[BSCNbTheta * 2 + i] ) /
556 xPosition[BSCNbTheta * 4 + i] =
558 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 4 + i] ) *
559 cos( thetaPosition[i] );
560 zPosition[BSCNbTheta * 4 + i] =
562 ( ( yHalfLength1[i] + yHalfLength2[i] ) / 2. + yHalfLength1[BSCNbTheta * 4 + i] ) *
563 sin( thetaPosition[i] );
564 yPosition[BSCNbTheta * 4 + i] =
565 ( xHalfLength1[BSCNbTheta * 4 + i] + xHalfLength3[BSCNbTheta * 4 + i] +
566 xHalfLength2[BSCNbTheta * 4 + i] + xHalfLength4[BSCNbTheta * 4 + i] ) /
570 if ( verboseLevel > 1 )
571 for ( i = 0; i < BSCNbTheta * 6; i++ )
573 G4cout <<
"The sizes of the " << i + 1 <<
" crystal are:" << G4endl
574 <<
"zHalfLength =" << zHalfLength[i] / cm <<
"(cm)," << G4endl
575 <<
"thetaAxis =" << thetaAxis[i] / deg <<
"(deg)," << G4endl
576 <<
"phiAxis =" << phiAxis[i] / deg <<
"(deg)," << G4endl
577 <<
"yHalfLength1=" << yHalfLength1[i] / cm <<
"(cm)," << G4endl
578 <<
"xHalfLength1=" << xHalfLength1[i] / cm <<
"(cm)," << G4endl
579 <<
"xHalfLength2=" << xHalfLength2[i] / cm <<
"(cm)," << G4endl
580 <<
"tanAlpha1 =" << tanAlpha1[i] << G4endl
581 <<
"yHalfLength2=" << yHalfLength2[i] / cm <<
"(cm)," << G4endl
582 <<
"xHalfLength3=" << xHalfLength3[i] / cm <<
"(cm)," << G4endl
583 <<
"xHalfLength4=" << xHalfLength4[i] / cm <<
"(cm)," << G4endl
584 <<
"tanAlpha2 =" << tanAlpha2[i] <<
"." << G4endl <<
"The position of the "
585 << i + 1 <<
" crystal is:" << G4endl <<
"(" << xPosition[i] / cm <<
","
586 << yPosition[i] / cm <<
"," << zPosition[i] / cm <<
")cm" << G4endl;