96 G4Box * solidWorld =
new G4Box(
"world_S", world_x, world_y, world_z );
102 logicalWorld -> SetVisAttributes(VisAttWorld);
117 ConstructTelescope();
118 ConstructFocalPlane();
120 return physicalWorld;
127 void XrayTelDetectorConstruction::ConstructTelescope()
145 G4Colour(255/255., 255/255., 0/255.));
147 G4Colour(128/255., 128/255., 128/255.));
151 rotateMatrix -> rotateY(90.*
deg);
155 G4double MirrorEnd[5] = { 34.9995975*
cm, 34.8277209*
cm, 34.6549918*
cm,
156 34.1347834*
cm, 33.6137753*
cm };
164 G4Cons* MirrorAuCoatingSolid[4];
171 for ( i=0; i<4; i++ ) {
174 MirrorSolid[i] =
new G4Cons(
"Mirror_S",
175 MirrorEnd[i], MirrorEnd[i] + MirrorNiThickness,
176 MirrorEnd[i+1], MirrorEnd[i+1] + MirrorNiThickness,
177 MirrorSectionLength/2, 0*
deg, 360.*
deg);
179 MirrorSolid[i], Ni,
"Mirror_L", 0, 0, 0 );
183 MirrorAuCoatingSolid[i] =
new G4Cons(
185 MirrorEnd[i] - MirrorAuCoating, MirrorEnd[i],
186 MirrorEnd[i+1] - MirrorAuCoating, MirrorEnd[i+1],
187 MirrorSectionLength/2, 0*
deg, 360.*
deg);
189 MirrorAuCoatingSolid[i],
196 BaffleSolid[i] =
new G4Cons(
"Baffle_S",
197 0, MirrorEnd[i] - BaffleGap,
198 0, MirrorEnd[i+1] - BaffleGap,
199 MirrorSectionLength/2, 0*
deg, 360.*
deg);
201 BaffleSolid[i], Al,
"Baffle_L", 0, 0, 0 );
202 BaffleLogicalVolume[i]-> SetVisAttributes(VisAttBaffle);
207 for ( i=0; i<4; i++ ) {
212 MirrorLogicalVolume[i],
213 physicalWorld,
false, 0 );
218 MirrorAuCoatingLogicalVolume[i],
219 physicalWorld,
false, 0 );
224 BaffleLogicalVolume[i],
225 physicalWorld,
false, 0 );
230 for ( i=0; i<4; i++ ) {
254 G4Colour(0/255., 200/255., 0/255.));
258 G4double BenchFrontEndMinRadiusOut = MirrorEnd[4] +
259 ( MirrorEnd[3] - MirrorEnd[4] )*7.5/15
261 G4double BenchFrontEndMinRadiusIn = MirrorEnd[4] +
262 ( MirrorEnd[3] - MirrorEnd[4] )*7.4/15
264 G4double BenchFrontEndMaxRadius = MirrorEnd[4] + MirrorNiThickness + 25.*
cm;
266 G4double BenchBackEndMaxRadius = MirrorEnd[4] + MirrorNiThickness + 5.*
cm;
269 BenchMainLength = MirrorPosition[3] - BenchThickness;
271 G4Cons* BenchFrontEndSolid;
272 G4Tubs* BenchBackEndSolid;
279 BenchFrontEndSolid =
new G4Cons(
"BenchFrontEnd_S",
280 BenchFrontEndMinRadiusOut, BenchFrontEndMaxRadius,
281 BenchFrontEndMinRadiusIn, BenchFrontEndMaxRadius,
282 BenchThickness/2, 0*
deg, 360.*
deg );
284 BenchFrontEndSolid, Al,
"BenchFrontEnd_L", 0, 0, 0 );
287 BenchBackEndSolid =
new G4Tubs(
"BenchBackEnd_S",
288 BenchBackEndMinRadius, BenchBackEndMaxRadius,
289 BenchThickness/2, 0*
deg, 360.*
deg );
291 BenchBackEndSolid, Al,
"BenchBackEnd_L", 0, 0, 0 );
294 BenchMainSolid =
new G4Cons(
"BenchMain_S",
295 BenchFrontEndMaxRadius - BenchThickness,
296 BenchFrontEndMaxRadius,
297 BenchBackEndMaxRadius - BenchThickness,
298 BenchBackEndMaxRadius,
299 BenchMainLength/2, 0*
deg, 360.*
deg);
301 BenchMainSolid, Cf,
"BenchMain_L", 0, 0, 0 );
302 BenchMainLogicalVolume -> SetVisAttributes(VisAttBench);
311 BenchFrontEndLogicalVolume,
312 physicalWorld,
false, 0 );
318 BenchBackEndLogicalVolume,
319 physicalWorld,
false, 0 );
325 BenchMainLogicalVolume,
326 physicalWorld,
false, 0 );
341 void XrayTelDetectorConstruction::ConstructFocalPlane()
350 G4Colour(190/255., 255/255., 0/255.) );
352 G4Colour(255/255., 0/255., 0/255.) );
356 rotateMatrix -> rotateY(90.*
deg);
360 G4double DetectorBaffleOuterRadiusIn = 7.1*
cm;
361 G4double DetectorBaffleOuterRadiusOut = 7.35*
cm;
362 G4double DetectorBaffleInnerRadiusIn = 4.55*
cm;
363 G4double DetectorBaffleInnerRadiusOut = 5.75*
cm;
365 G4Cons* DetectorBaffleSolid;
369 DetectorBaffleSolid =
new G4Cons(
"DetectorBaffle_S",
370 DetectorBaffleOuterRadiusIn,
371 DetectorBaffleOuterRadiusOut,
372 DetectorBaffleInnerRadiusIn,
373 DetectorBaffleInnerRadiusOut,
374 DetectorBaffleLength/2, 0*
deg, 360.*
deg);
376 DetectorBaffleSolid, Ti,
"DetectorBaffle_L", 0, 0, 0 );
377 DetectorBaffleLogicalVolume -> SetVisAttributes( VisDetectorBaffle );
386 DetectorBaffleLogicalVolume,
387 physicalWorld,
false, 0 );
402 DetectorSolid =
new G4Tubs(
"Detector_S",
404 DetectorThickness/2, 0*
deg, 360.*
deg);
406 DetectorSolid, Si,
"Detector_L", 0, 0, 0 );
407 DetectorLogicalVolume -> SetVisAttributes( VisDetector );
415 DetectorLogicalVolume,
416 physicalWorld,
false, 0 );
static constexpr double mm
CLHEP::Hep3Vector G4ThreeVector
CLHEP::HepRotation G4RotationMatrix
static constexpr double m
static constexpr double cm
static constexpr double kelvin
static constexpr double cm3
XrayTelDetectorConstruction()
G4VPhysicalVolume * Construct()
void AddElement(G4Element *element, G4int nAtoms)
static constexpr double deg
~XrayTelDetectorConstruction()
static constexpr double mole
static const G4VisAttributes & GetInvisible()
void SetVisAttributes(const G4VisAttributes *pVA)