1 | // |
---|
2 | // ******************************************************************** |
---|
3 | // * License and Disclaimer * |
---|
4 | // * * |
---|
5 | // * The Geant4 software is copyright of the Copyright Holders of * |
---|
6 | // * the Geant4 Collaboration. It is provided under the terms and * |
---|
7 | // * conditions of the Geant4 Software License, included in the file * |
---|
8 | // * LICENSE and available at http://cern.ch/geant4/license . These * |
---|
9 | // * include a list of copyright holders. * |
---|
10 | // * * |
---|
11 | // * Neither the authors of this software system, nor their employing * |
---|
12 | // * institutes,nor the agencies providing financial support for this * |
---|
13 | // * work make any representation or warranty, express or implied, * |
---|
14 | // * regarding this software system or assume any liability for its * |
---|
15 | // * use. Please see the license in the file LICENSE and URL above * |
---|
16 | // * for the full disclaimer and the limitation of liability. * |
---|
17 | // * * |
---|
18 | // * This code implementation is the result of the scientific and * |
---|
19 | // * technical work of the GEANT4 collaboration. * |
---|
20 | // * By using, copying, modifying or distributing the software (or * |
---|
21 | // * any work based on the software) you agree to acknowledge its * |
---|
22 | // * use in resulting scientific publications, and indicate your * |
---|
23 | // * acceptance of all terms of the Geant4 Software license. * |
---|
24 | // ******************************************************************** |
---|
25 | // |
---|
26 | // ******************************************************************** |
---|
27 | // * * |
---|
28 | // * Cosmicray_charging advanced example for Geant4 * |
---|
29 | // * (adapted simulation of test-mass charging in the LISA mission) * |
---|
30 | // * * |
---|
31 | // * Henrique Araujo (h.araujo@imperial.ac.uk) & Peter Wass * |
---|
32 | // * Imperial College London * |
---|
33 | // * * |
---|
34 | // * LISADetectorConstruction class * |
---|
35 | // * * |
---|
36 | // ******************************************************************** |
---|
37 | // |
---|
38 | // HISTORY |
---|
39 | // 22/02/2004: migrated from LISA-V04 |
---|
40 | // 24/11/2004: migrated to cmath |
---|
41 | // 24/11/2004: inner elec boxes made invisible |
---|
42 | // 24/11/2004: tweaked TelPriMir_phys (17 to 18mm) to avoid solid problem |
---|
43 | // 24/11/2004: G4Torus in SupportRing_sol still problematic! |
---|
44 | // 08/12/2005: removed compilation warnings |
---|
45 | // |
---|
46 | // ******************************************************************** |
---|
47 | |
---|
48 | |
---|
49 | //*************************************************************************** |
---|
50 | // Interferometer Assembly |
---|
51 | //*************************************************************************** |
---|
52 | // Payload Shield (Y Tube) |
---|
53 | // Telescope Light Shields |
---|
54 | // Telescope Electronics Mounting |
---|
55 | // Telescope Mirrors Mounting |
---|
56 | // Telescope Actuator Mechanism |
---|
57 | // Optical Bench Mounting |
---|
58 | // Optical Bench |
---|
59 | //*************************************************************************** |
---|
60 | |
---|
61 | |
---|
62 | |
---|
63 | //*************************************************************************** |
---|
64 | // Payload Shield |
---|
65 | //*************************************************************************** |
---|
66 | |
---|
67 | // Y-tube |
---|
68 | G4double YTube_dia = 400.*mm; |
---|
69 | G4double YTube_thi = 5.*mm; |
---|
70 | G4double arm1_len = 900.*mm; |
---|
71 | G4double arm2_len = 900.*mm; |
---|
72 | G4double arm3_len = 900.*mm; |
---|
73 | // G4double YTube_xoff = -800.*mm; |
---|
74 | G4double tune_x = 800.*mm; |
---|
75 | G4double tune_y = 250.*mm; |
---|
76 | |
---|
77 | // outer volumes |
---|
78 | G4Tubs* arm1_o_sol = |
---|
79 | new G4Tubs("arm1_o_sol", 0., 0.5*YTube_dia, 0.5*arm1_len, 0., 360.*deg); |
---|
80 | G4Tubs* arm2_o_sol = |
---|
81 | new G4Tubs("arm2_o_sol", 0., 0.5*YTube_dia, 0.5*arm2_len, 0., 360.*deg); |
---|
82 | G4Tubs* arm3_o_sol = |
---|
83 | new G4Tubs("arm3_o_sol", 0., 0.5*YTube_dia, 0.5*arm3_len, 0., 360.*deg); |
---|
84 | G4RotationMatrix ytube_rot1; ytube_rot1.rotateY(30.*deg); |
---|
85 | G4UnionSolid* uni1_o_sol = new G4UnionSolid("uni1_o_sol", arm1_o_sol, |
---|
86 | arm2_o_sol, G4Transform3D(ytube_rot1, G4ThreeVector(+tune_y,0,tune_x))); |
---|
87 | G4RotationMatrix ytube_rot2; ytube_rot2.rotateY(-30.*deg); |
---|
88 | G4UnionSolid* uni2_o_sol = new G4UnionSolid("uni2_o_sol", uni1_o_sol, |
---|
89 | arm3_o_sol, G4Transform3D(ytube_rot2, G4ThreeVector(-tune_y,0,tune_x))); |
---|
90 | G4LogicalVolume* arms_o_log = |
---|
91 | new G4LogicalVolume(uni2_o_sol, CFRP, "arms_o_log"); |
---|
92 | G4RotationMatrix ytube_rot3; |
---|
93 | ytube_rot3.rotateX(90.*deg); ytube_rot3.rotateZ(90.*deg); |
---|
94 | G4VPhysicalVolume* arms_o_phys; |
---|
95 | arms_o_phys = new G4PVPlacement |
---|
96 | (G4Transform3D(ytube_rot3, spacecraft_pos + G4ThreeVector(YTube_xoff,0,0)), |
---|
97 | "arms_o_phys", arms_o_log, wld_phys, false, 0); |
---|
98 | arms_o_log->SetVisAttributes(yellow_vat); |
---|
99 | // inner volumes |
---|
100 | G4Tubs* arm1_i_sol = new G4Tubs("arm1_i_sol", 0., 0.5*YTube_dia-YTube_thi, |
---|
101 | 0.5*arm1_len, 0.*deg, 360.*deg); |
---|
102 | G4Tubs* arm2_i_sol = new G4Tubs("arm2_i_sol", 0., 0.5*YTube_dia-YTube_thi, |
---|
103 | 0.5*arm2_len, 0.*deg, 360.*deg); |
---|
104 | G4Tubs* arm3_i_sol = new G4Tubs("arm3_i_sol", 0., 0.5*YTube_dia-YTube_thi, |
---|
105 | 0.5*arm3_len, 0.*deg, 360.*deg); |
---|
106 | G4UnionSolid* uni1_i_sol = new G4UnionSolid("uni1_i_sol", arm1_i_sol, |
---|
107 | arm2_i_sol, G4Transform3D(ytube_rot1, G4ThreeVector(+tune_y,0,tune_x))); |
---|
108 | G4UnionSolid* uni2_i_sol = new G4UnionSolid("uni2_i_sol", uni1_i_sol, |
---|
109 | arm3_i_sol, G4Transform3D(ytube_rot2, G4ThreeVector(-tune_y,0,tune_x))); |
---|
110 | G4LogicalVolume* arms_i_log = |
---|
111 | new G4LogicalVolume(uni2_i_sol, vacuum, "arms_i_log"); |
---|
112 | G4VPhysicalVolume* arms_i_phys; |
---|
113 | arms_i_phys = new G4PVPlacement(0, G4ThreeVector(0,0,0), |
---|
114 | "arms_i_phys", arms_i_log, arms_o_phys, false, 0); |
---|
115 | arms_i_log->SetVisAttributes(yellow_vat); |
---|
116 | |
---|
117 | |
---|
118 | |
---|
119 | // Telescope Light Shields: ~5.5 kg |
---|
120 | G4double TelShield_len = 730.*mm; |
---|
121 | G4double TelShield_dia = 370.*mm; |
---|
122 | G4double TelShield_thi = 5.*mm; |
---|
123 | G4double TelShield_yoff = 663.*mm; |
---|
124 | G4double TelShield_xoff = 1511.*mm; |
---|
125 | G4double TelShieldCutout_len = 2000.*mm; |
---|
126 | G4double TelShieldCutout_off = 1000.*mm; |
---|
127 | |
---|
128 | G4Tubs* TelShield_tub = new G4Tubs("TelShield_sol", 0.5*TelShield_dia - |
---|
129 | TelShield_thi, 0.5*TelShield_dia, 0.5*TelShield_len, 0., 360.*deg); |
---|
130 | G4Box* TelShieldCutout_box = new G4Box("TelShieldCutout_box", |
---|
131 | 0.5*TelShieldCutout_len, 0.5*TelShieldCutout_len, 0.5*TelShieldCutout_len); |
---|
132 | G4RotationMatrix ytube_rot4; ytube_rot4.rotateX(-30.*deg); |
---|
133 | G4SubtractionSolid* TelShield_sol = new G4SubtractionSolid("TelShield_sol", |
---|
134 | TelShield_tub, TelShieldCutout_box, G4Transform3D(ytube_rot4, |
---|
135 | G4ThreeVector(0,0,-0.5*TelShield_len-TelShieldCutout_off))); |
---|
136 | G4LogicalVolume* TelShield_log = |
---|
137 | new G4LogicalVolume(TelShield_sol, CFRP, "TelShield_log"); |
---|
138 | G4VPhysicalVolume* TelShield_phys; |
---|
139 | G4RotationMatrix telsh_rot1; telsh_rot1.rotateY(-90.*deg); |
---|
140 | telsh_rot1.rotateX(90.*deg); telsh_rot1.rotateZ(-30.*deg); |
---|
141 | TelShield_phys = new G4PVPlacement(G4Transform3D(telsh_rot1, |
---|
142 | spacecraft_pos+G4ThreeVector(YTube_xoff+TelShield_xoff,-TelShield_yoff,0)), |
---|
143 | "TelShield_phys", TelShield_log, wld_phys, false, 0); |
---|
144 | G4RotationMatrix telsh_rot2; telsh_rot2.rotateY(-90.*deg); |
---|
145 | telsh_rot2.rotateX(90.*deg); telsh_rot2.rotateZ(+30.*deg); |
---|
146 | TelShield_phys = new G4PVPlacement(G4Transform3D(telsh_rot2, |
---|
147 | spacecraft_pos+G4ThreeVector(YTube_xoff+TelShield_xoff,+TelShield_yoff,0)), |
---|
148 | "TelShield_phys", TelShield_log, wld_phys, false, 1); |
---|
149 | TelShield_log->SetVisAttributes(green_vat); |
---|
150 | |
---|
151 | |
---|
152 | |
---|
153 | // Telescope actuator: 1.8 kg |
---|
154 | // includes mass of Al arms |
---|
155 | G4double TelActuatorCyl_dia = 76.*mm; |
---|
156 | G4double TelActuatorCyl_len = 147.*mm; |
---|
157 | // Actuator mount: 0.45 kg |
---|
158 | G4double TelActuatorMount_hei = 147.*mm; |
---|
159 | G4double TelActuatorMount_wid = 120.*mm; |
---|
160 | G4double TelActuatorMount_thi = 7.5*mm; |
---|
161 | G4ThreeVector TelActuator_pos1(-100.*mm,0.,550.*mm); |
---|
162 | G4ThreeVector TelActuator_pos2( 100.*mm,0.,550.*mm); |
---|
163 | |
---|
164 | // Telescope actuator 1: cylinder |
---|
165 | G4Tubs* TelActuatorCyl_sol = new G4Tubs("TelActuatorCyl_sol", |
---|
166 | 0, 0.5*TelActuatorCyl_dia, 0.5*TelActuatorCyl_len, 0., 360.*deg); |
---|
167 | G4LogicalVolume* TelActuatorCyl_log = |
---|
168 | new G4LogicalVolume(TelActuatorCyl_sol, Al6061, "TelActuatorCyl_log"); |
---|
169 | G4RotationMatrix act_rot1; act_rot1.rotateY(60.*deg); |
---|
170 | G4VPhysicalVolume* TelActuatorCyl_phys; |
---|
171 | TelActuatorCyl_phys = new G4PVPlacement(G4Transform3D(act_rot1, |
---|
172 | TelActuator_pos1), "TelActuatorCyl_phys", TelActuatorCyl_log, |
---|
173 | arms_i_phys, false, 0); |
---|
174 | TelActuatorCyl_log->SetVisAttributes(sol_red_vat); |
---|
175 | // Telescope actuator 1: mount |
---|
176 | G4Box* TelActuatorMount_box = new G4Box("TelActuatorMount_box", |
---|
177 | .5*TelActuatorMount_wid, .5*TelActuatorMount_hei, .5*TelActuatorMount_thi); |
---|
178 | G4SubtractionSolid* TelActuatorMount_sol = new G4SubtractionSolid |
---|
179 | ("TelActuatorMount_sol", TelActuatorMount_box, TelActuatorCyl_sol, |
---|
180 | 0, G4ThreeVector(0,0.5*TelActuatorMount_hei,0)); |
---|
181 | G4LogicalVolume* TelActuatorMount_log = |
---|
182 | new G4LogicalVolume(TelActuatorMount_sol, TiAlloy, "TelActuatorMount_log"); |
---|
183 | G4VPhysicalVolume* TelActuatorMount_phys; |
---|
184 | TelActuatorMount_phys = new G4PVPlacement(G4Transform3D(act_rot1, |
---|
185 | TelActuator_pos1 + G4ThreeVector(0,-0.5*TelActuatorMount_hei-2.*mm,0.)), |
---|
186 | "TelActuatorMount_phys", TelActuatorMount_log, arms_i_phys, false, 0); |
---|
187 | TelActuatorMount_log->SetVisAttributes(sol_yellow_vat); |
---|
188 | // Telescope actuator 2 |
---|
189 | G4RotationMatrix act_rot2; act_rot2.rotateY(-60.*deg); |
---|
190 | TelActuatorCyl_phys = new G4PVPlacement(G4Transform3D |
---|
191 | (act_rot2, TelActuator_pos2), "TelActuatorCyl_phys", |
---|
192 | TelActuatorCyl_log, arms_i_phys, false, 1); |
---|
193 | TelActuatorMount_phys = new G4PVPlacement(G4Transform3D(act_rot2, |
---|
194 | TelActuator_pos2 + G4ThreeVector(0,-0.5*TelActuatorMount_hei-2.*mm,0.)), |
---|
195 | "TelActuatorMount_phys", TelActuatorMount_log, arms_i_phys, false, 1); |
---|
196 | |
---|
197 | |
---|
198 | |
---|
199 | |
---|
200 | //*************************************************************************** |
---|
201 | // Telescope / GRS Assembly (in dummy wrapper volume) |
---|
202 | //*************************************************************************** |
---|
203 | |
---|
204 | |
---|
205 | // Dummy (assembly) box for telescope |
---|
206 | G4double TelBox_len = 620.*mm; |
---|
207 | G4double TelBox_dia = 370.*mm; |
---|
208 | // Dummy (assembly) box for telescope |
---|
209 | G4Tubs* TelBox_sol = |
---|
210 | new G4Tubs("TelBox_sol", 0., 0.5*TelBox_dia, 0.5*TelBox_len, 0., 360.*deg); |
---|
211 | G4LogicalVolume* TelBox_log = |
---|
212 | new G4LogicalVolume(TelBox_sol, vacuum, "TelBox_log"); |
---|
213 | G4VPhysicalVolume* TelBox_phys; |
---|
214 | TelBox_phys = |
---|
215 | new G4PVPlacement(G4Transform3D(tel_rot1, tel_pos1), |
---|
216 | "TelBox1_phys", TelBox_log, arms_i_phys, false, 0); |
---|
217 | TelBox_phys = |
---|
218 | new G4PVPlacement(G4Transform3D(tel_rot2, tel_pos2), |
---|
219 | "TelBox2_phys", TelBox_log, arms_i_phys, false, 1); |
---|
220 | // TelBox_log->SetVisAttributes(white_vat); |
---|
221 | TelBox_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
222 | |
---|
223 | |
---|
224 | // all z-offsets referred to TM centre |
---|
225 | // change OpticalBench_off to move telescope components along z-axis |
---|
226 | |
---|
227 | // Optical Bench: 4.41 kg |
---|
228 | G4double OpticalBench_len = 350.0*mm; |
---|
229 | G4double OpticalBench_wid = 200.0*mm; |
---|
230 | G4double OpticalBench_thi = 40.0*mm; |
---|
231 | // Sensor Housing as in Solid Model |
---|
232 | // G4double OpticalBenchCutout_len = 170.0*mm + 1.*mm; |
---|
233 | // G4double OpticalBenchCutout_wid = 120.0*mm + 1.*mm; |
---|
234 | // Sensor Housing to fit LTP Sensor |
---|
235 | G4double OpticalBenchCutout_dia = 126.0*mm; |
---|
236 | G4double OpticalBenchCutout_thi = 100.0*mm; |
---|
237 | // G4double OpticalBench_off = 0.0*mm; |
---|
238 | |
---|
239 | // Optical Bench |
---|
240 | G4Box* OpticalBench_box = new G4Box("OpticalBench_box", |
---|
241 | 0.5*OpticalBench_wid, 0.5*OpticalBench_thi, 0.5*OpticalBench_len); |
---|
242 | // old design cutout |
---|
243 | // G4Box* OpticalBenchCutout_box = new G4Box("OpticalBenchCutout_box", |
---|
244 | // 0.5*OpticalBenchCutout_wid, 0.5*OpticalBenchCutout_thi, |
---|
245 | // 0.5*OpticalBenchCutout_len); |
---|
246 | // LTP design cutout |
---|
247 | G4Tubs* OpticalBenchCutout_box = new G4Tubs("OpticalBenchCutout_box", |
---|
248 | 0., 0.5*OpticalBenchCutout_dia, 0.5*OpticalBenchCutout_thi, 0., 360.*deg); |
---|
249 | G4RotationMatrix cutout_rot; cutout_rot.rotateX(90.*deg); |
---|
250 | G4SubtractionSolid* OpticalBench_sol = new G4SubtractionSolid |
---|
251 | ("OpticalBench_sol", OpticalBench_box, OpticalBenchCutout_box, |
---|
252 | G4Transform3D(cutout_rot, G4ThreeVector())); |
---|
253 | G4LogicalVolume* OpticalBench_log = |
---|
254 | new G4LogicalVolume(OpticalBench_sol, ULEglass, "OpticalBench_log"); |
---|
255 | G4VPhysicalVolume* OpticalBench_phys; |
---|
256 | OpticalBench_phys= |
---|
257 | new G4PVPlacement(0, G4ThreeVector(0,0, OpticalBench_off), |
---|
258 | "OpticalBench_phys", OpticalBench_log, TelBox_phys, false, 0); |
---|
259 | OpticalBench_log->SetVisAttributes(sol_white_vat); |
---|
260 | |
---|
261 | |
---|
262 | // Support ring: 0.99 kg |
---|
263 | G4double SupportRing_od = 359.*mm; |
---|
264 | G4double SupportRing_dia_o = 23.*mm; |
---|
265 | G4double SupportRing_dia_i = 10.*mm; |
---|
266 | // Support yokes: 0.12 kg |
---|
267 | // also accounts for pivot mass |
---|
268 | G4double SupportYoke_thi = 5.*mm; |
---|
269 | G4double SupportYoke_dia = 15.*mm; |
---|
270 | G4double SupportYoke_len = 170.*mm; |
---|
271 | G4double SupportYoke_xoff = 122.*mm; |
---|
272 | G4double SupportYoke_yoff = 50.*mm; |
---|
273 | G4double SupportYoke_zoff = 90.*mm; |
---|
274 | |
---|
275 | // Support ring |
---|
276 | G4Torus* SupportRing_sol = new G4Torus("SupportRing_sol", |
---|
277 | 0.5*SupportRing_dia_i,0.5*SupportRing_dia_o, |
---|
278 | 0.5*(SupportRing_od-SupportRing_dia_o), 0.,360.*deg); |
---|
279 | G4LogicalVolume* SupportRing_log = |
---|
280 | new G4LogicalVolume(SupportRing_sol, ULEglass, "SupportRing_log"); |
---|
281 | G4VPhysicalVolume* SupportRing_phys; |
---|
282 | SupportRing_phys= |
---|
283 | new G4PVPlacement(0, G4ThreeVector(0.,0.,OpticalBench_off), |
---|
284 | "SupportRing_phys", SupportRing_log, TelBox_phys, false, 0); |
---|
285 | SupportRing_log->SetVisAttributes(sol_red_vat); |
---|
286 | // Support yokes |
---|
287 | G4Tubs* SupportYoke_sol = new G4Tubs("SupportYoke_sol", 0.5*SupportYoke_dia |
---|
288 | - SupportYoke_thi, 0.5*SupportYoke_dia, 0.5*SupportYoke_len, 0., 360.*deg); |
---|
289 | G4LogicalVolume* SupportYoke_log = |
---|
290 | new G4LogicalVolume(SupportYoke_sol, TiAlloy, "SupportYoke_log"); |
---|
291 | SupportYoke_log->SetVisAttributes(sol_red_vat); |
---|
292 | G4VPhysicalVolume* SupportYoke_phys; |
---|
293 | // upper |
---|
294 | G4RotationMatrix tel_rot3; |
---|
295 | tel_rot3.rotateX(+30.*deg); tel_rot3.rotateY(-10.*deg); |
---|
296 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot3, |
---|
297 | G4ThreeVector(+SupportYoke_xoff, +SupportYoke_yoff , |
---|
298 | OpticalBench_off + SupportYoke_zoff)), "SupportYoke_phys", |
---|
299 | SupportYoke_log, TelBox_phys, false, 0); |
---|
300 | G4RotationMatrix tel_rot4; |
---|
301 | tel_rot4.rotateX(+30.*deg); tel_rot4.rotateY(+10.*deg); |
---|
302 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot4, |
---|
303 | G4ThreeVector(-SupportYoke_xoff, +SupportYoke_yoff , |
---|
304 | OpticalBench_off + SupportYoke_zoff)), "SupportYoke_phys", |
---|
305 | SupportYoke_log, TelBox_phys, false, 1); |
---|
306 | G4RotationMatrix tel_rot5; |
---|
307 | tel_rot5.rotateX(-30.*deg); tel_rot5.rotateY(+10.*deg); |
---|
308 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot5, |
---|
309 | G4ThreeVector(+SupportYoke_xoff, +SupportYoke_yoff , |
---|
310 | OpticalBench_off - SupportYoke_zoff)), "SupportYoke_phys", |
---|
311 | SupportYoke_log, TelBox_phys, false, 2); |
---|
312 | G4RotationMatrix tel_rot6; |
---|
313 | tel_rot6.rotateX(-30.*deg); tel_rot6.rotateY(-10.*deg); |
---|
314 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot6, |
---|
315 | G4ThreeVector(-SupportYoke_xoff, +SupportYoke_yoff , |
---|
316 | OpticalBench_off - SupportYoke_zoff)), "SupportYoke_phys", |
---|
317 | SupportYoke_log, TelBox_phys, false, 3); |
---|
318 | // lower |
---|
319 | G4RotationMatrix tel_rot7; |
---|
320 | tel_rot7.rotateX(-30.*deg); tel_rot7.rotateY(-10.*deg); |
---|
321 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot7, |
---|
322 | G4ThreeVector(+SupportYoke_xoff, -SupportYoke_yoff , |
---|
323 | OpticalBench_off + SupportYoke_zoff)), "SupportYoke_phys", |
---|
324 | SupportYoke_log, TelBox_phys, false, 4); |
---|
325 | G4RotationMatrix tel_rot8; |
---|
326 | tel_rot8.rotateX(-30.*deg); tel_rot8.rotateY(+10.*deg); |
---|
327 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot8, |
---|
328 | G4ThreeVector(-SupportYoke_xoff, -SupportYoke_yoff , |
---|
329 | OpticalBench_off + SupportYoke_zoff)), "SupportYoke_phys", |
---|
330 | SupportYoke_log, TelBox_phys, false, 5); |
---|
331 | G4RotationMatrix tel_rot9; |
---|
332 | tel_rot9.rotateX(+30.*deg); tel_rot9.rotateY(+10.*deg); |
---|
333 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot9, |
---|
334 | G4ThreeVector(+SupportYoke_xoff, -SupportYoke_yoff , |
---|
335 | OpticalBench_off - SupportYoke_zoff)), "SupportYoke_phys", |
---|
336 | SupportYoke_log, TelBox_phys, false, 6); |
---|
337 | G4RotationMatrix tel_rot10; |
---|
338 | tel_rot10.rotateX(+30.*deg); tel_rot10.rotateY(-10.*deg); |
---|
339 | SupportYoke_phys = new G4PVPlacement(G4Transform3D(tel_rot10, |
---|
340 | G4ThreeVector(-SupportYoke_xoff, -SupportYoke_yoff , |
---|
341 | OpticalBench_off - SupportYoke_zoff)), "SupportYoke_phys", |
---|
342 | SupportYoke_log, TelBox_phys, false, 7); |
---|
343 | |
---|
344 | |
---|
345 | |
---|
346 | // Shield tube: 3.66 kg |
---|
347 | G4double ShieldTube_len = 500.*mm; |
---|
348 | G4double ShieldTube_thi = 4.*mm; |
---|
349 | G4double ShieldTube_dia = 360.*mm + 2*ShieldTube_thi; |
---|
350 | G4double ShieldTube_off = 60.*mm; |
---|
351 | |
---|
352 | // Shield tube |
---|
353 | G4Tubs* ShieldTube_sol = new G4Tubs("ShieldTube_sol", |
---|
354 | 0.5*ShieldTube_dia-ShieldTube_thi, 0.5*ShieldTube_dia, |
---|
355 | 0.5*ShieldTube_len, 0., 360.*deg); |
---|
356 | G4LogicalVolume* ShieldTube_log = |
---|
357 | new G4LogicalVolume(ShieldTube_sol, CFRP, "ShieldTube_log"); |
---|
358 | G4VPhysicalVolume* ShieldTube_phys; |
---|
359 | ShieldTube_phys = new G4PVPlacement(0, |
---|
360 | G4ThreeVector(0,0,OpticalBench_off-ShieldTube_off), |
---|
361 | "ShieldTube_phys", ShieldTube_log, TelBox_phys, false, 0); |
---|
362 | ShieldTube_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
363 | |
---|
364 | |
---|
365 | |
---|
366 | // Mounting rings: 0.78 kg |
---|
367 | G4double TelRing_dia = 360.0*mm; |
---|
368 | G4double TelRing_thi = 15.0*mm; |
---|
369 | G4double TelRing_len = 30.0*mm; |
---|
370 | G4double TelRing_off1 = 0.5*OpticalBench_len - 0.5*TelRing_len + 0.5*mm; |
---|
371 | G4double TelRing_off2 = 0.5*OpticalBench_len; |
---|
372 | |
---|
373 | // Mounting rings |
---|
374 | G4Tubs* TelRing_sol = |
---|
375 | new G4Tubs("TelRing_sol", 0.5*TelRing_dia-TelRing_thi, 0.5*TelRing_dia, |
---|
376 | 0.5*TelRing_len, 0., 360.*deg); |
---|
377 | G4LogicalVolume* TelRing_log = |
---|
378 | new G4LogicalVolume(TelRing_sol, CFRP, "TelRing_log"); |
---|
379 | TelRing_log->SetVisAttributes(sol_white_vat); |
---|
380 | G4VPhysicalVolume* TelRing_phys; |
---|
381 | TelRing_phys = new G4PVPlacement(0, G4ThreeVector |
---|
382 | (0,0,OpticalBench_off - TelRing_off1), |
---|
383 | "TelRing_phys", TelRing_log, TelBox_phys, false, 0); |
---|
384 | // Electronics mounting ring |
---|
385 | TelRing_phys = new G4PVPlacement(0, G4ThreeVector |
---|
386 | (0,0,OpticalBench_off + TelRing_off2), |
---|
387 | "TelRing_phys", TelRing_log, TelBox_phys, false, 1); |
---|
388 | |
---|
389 | |
---|
390 | |
---|
391 | // Shield/Mounting Plate: 1.54 kg |
---|
392 | G4double ShieldPlate_dia = 350.*mm; |
---|
393 | G4double ShieldPlate_thi = 10.*mm; |
---|
394 | G4double ShieldPlate_off = TelRing_off2 + |
---|
395 | 0.5*(TelRing_len+ShieldPlate_thi) + 20.0*mm; |
---|
396 | // Shield/Mounting Plate |
---|
397 | G4Tubs* ShieldPlate_sol = new G4Tubs("ShieldPlate_sol", |
---|
398 | 0., 0.5*ShieldPlate_dia, 0.5*ShieldPlate_thi, 0., 360.*deg); |
---|
399 | G4LogicalVolume* ShieldPlate_log = |
---|
400 | new G4LogicalVolume(ShieldPlate_sol, CFRP, "ShieldPlate_log"); |
---|
401 | G4VPhysicalVolume* ShieldPlate_phys; |
---|
402 | ShieldPlate_phys = new G4PVPlacement(0, |
---|
403 | G4ThreeVector(0,0,OpticalBench_off + ShieldPlate_off), |
---|
404 | "ShieldPlate_phys", ShieldPlate_log, TelBox_phys, false, 0); |
---|
405 | ShieldPlate_log->SetVisAttributes(sol_white_vat); |
---|
406 | |
---|
407 | |
---|
408 | |
---|
409 | // Telescope electronics boxes: 0.36 kg |
---|
410 | G4double TelElecBox_wid = 100.0*mm; |
---|
411 | G4double TelElecBox_len = 90.0*mm; |
---|
412 | G4double TelElecBox_hei = 180.0*mm; |
---|
413 | G4double TelElecBoxes_sep = 150.0*mm; |
---|
414 | G4double TelElecBoxes_off = ShieldPlate_off + |
---|
415 | 0.5*(ShieldPlate_thi + TelElecBox_len); |
---|
416 | |
---|
417 | // Telescope electronics boxes |
---|
418 | G4Box* TelElecBox_sol = new G4Box("TelElecBox_sol", 0.5*TelElecBox_wid, |
---|
419 | 0.5*TelElecBox_hei, 0.5*TelElecBox_len); |
---|
420 | G4LogicalVolume* TelElecBox_log = |
---|
421 | new G4LogicalVolume(TelElecBox_sol, Al6061, "TelElecBox_log"); |
---|
422 | G4VPhysicalVolume* TelElecBox_phys; |
---|
423 | // Interferometer electronics |
---|
424 | TelElecBox_phys = new G4PVPlacement(0, |
---|
425 | G4ThreeVector(-0.5*TelElecBoxes_sep, 0,OpticalBench_off+TelElecBoxes_off), |
---|
426 | "TelElecBox_phys", TelElecBox_log, TelBox_phys, false, 0); |
---|
427 | TelElecBox_log->SetVisAttributes(sol_red_vat); |
---|
428 | // Accelerator electronics |
---|
429 | TelElecBox_phys = new G4PVPlacement(0, |
---|
430 | G4ThreeVector(0.5*TelElecBoxes_sep, 0, OpticalBench_off+TelElecBoxes_off), |
---|
431 | "TelElecBox_phys", TelElecBox_log, TelBox_phys, false, 1); |
---|
432 | // Each box is made from solid Al6061 from which a volume |
---|
433 | // s times smaller is removed to match assigned mass; |
---|
434 | G4double s = std::pow(1.-0.36/(2.70*TelElecBox_wid*TelElecBox_hei |
---|
435 | *TelElecBox_len)*1.E6,1./3.); |
---|
436 | G4Box* TelElecBoxIn_sol = new G4Box("TelElecBoxIn_sol", s*0.5*TelElecBox_wid, |
---|
437 | s*0.5*TelElecBox_hei, s*0.5*TelElecBox_len); |
---|
438 | G4LogicalVolume* TelElecBoxIn_log = |
---|
439 | new G4LogicalVolume(TelElecBoxIn_sol, vacuum, "TelElecBoxIn_log"); |
---|
440 | G4VPhysicalVolume* TelElecBoxIn_phys; |
---|
441 | TelElecBoxIn_phys = new G4PVPlacement |
---|
442 | (0, 0, "TelElecBoxIn_i", TelElecBoxIn_log, TelElecBox_phys, false, 0); |
---|
443 | TelElecBoxIn_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
444 | |
---|
445 | |
---|
446 | |
---|
447 | // Front thermal shield: 0.15 kg |
---|
448 | G4double FrontThermalShield_dia = 350.*mm; |
---|
449 | G4double FrontThermalShield_thi = 1.*mm; |
---|
450 | G4double FrontThermalShield_hol = 25.*mm; |
---|
451 | G4double FrontThermalShield_roff = 30.*mm; |
---|
452 | G4double FrontThermalShield_off = TelRing_off1 + 0.5*TelRing_len |
---|
453 | + 0.5*FrontThermalShield_thi + 20.0*mm; |
---|
454 | |
---|
455 | // Front thermal shield |
---|
456 | G4Tubs* FrontThermalShield_tub = new G4Tubs("FrontThermalShield_tub", |
---|
457 | 0., 0.5*FrontThermalShield_dia, 0.5*FrontThermalShield_thi, 0., 360.*deg); |
---|
458 | G4Tubs* FrontThermalShieldCutout_tub = |
---|
459 | new G4Tubs("FrontThermalShieldCutout_tub", |
---|
460 | 0., 0.5*FrontThermalShield_hol, 2*FrontThermalShield_thi, 0., 360.*deg); |
---|
461 | G4SubtractionSolid* FrontThermalShield_sol = |
---|
462 | new G4SubtractionSolid("FrontThermalShield_sol", FrontThermalShield_tub, |
---|
463 | FrontThermalShieldCutout_tub, G4Transform3D(G4RotationMatrix(), |
---|
464 | G4ThreeVector(0,FrontThermalShield_roff,0))); |
---|
465 | G4LogicalVolume* FrontThermalShield_log = |
---|
466 | new G4LogicalVolume(FrontThermalShield_sol, CFRP, |
---|
467 | "FrontThermalShield_log"); |
---|
468 | G4VPhysicalVolume* FrontThermalShield_phys; |
---|
469 | FrontThermalShield_phys = new G4PVPlacement |
---|
470 | (0, G4ThreeVector(0, 0, OpticalBench_off-FrontThermalShield_off), |
---|
471 | "FrontThermalShield_phys", FrontThermalShield_log, TelBox_phys, false, 0); |
---|
472 | FrontThermalShield_log->SetVisAttributes(sol_white_vat); |
---|
473 | |
---|
474 | |
---|
475 | |
---|
476 | //*************************************************************************** |
---|
477 | // Telescope assembly |
---|
478 | //*************************************************************************** |
---|
479 | |
---|
480 | |
---|
481 | // Primary mirror mount: ~1.9 kg |
---|
482 | G4double TelPriMirMount_rad = 420.*mm; |
---|
483 | G4double TelPriMirMount_yoff = 220.*mm; |
---|
484 | G4double TelPriMirMount_thi = 13.*mm; |
---|
485 | G4double TelPriMirMount_off = FrontThermalShield_off + |
---|
486 | 0.5*TelPriMirMount_thi + 20.*mm; |
---|
487 | G4double TelPriMirMountCutout0_dia = 350.*mm; |
---|
488 | G4double TelPriMirMountCutout0_yoff = 220.*mm; |
---|
489 | G4double TelPriMirMountCutout1_dia = 60.*mm; |
---|
490 | G4double TelPriMirMountCutout1_yoff = 190.*mm; |
---|
491 | G4double TelPriMirMountCutout2_dia = 46.*mm; |
---|
492 | G4double TelPriMirMountCutout2_yoff = 367.*mm; |
---|
493 | |
---|
494 | // Primary mirror mount |
---|
495 | // full thickness assumed; material density is decreased to conserve mass |
---|
496 | G4Tubs* TelPriMirMount_tub = new G4Tubs("TelPriMirMount_tub", |
---|
497 | 0, TelPriMirMount_rad, 0.5*TelPriMirMount_thi, -115.*deg, 50.*deg); |
---|
498 | G4Tubs* TelPriMirMountCutout0_tub = new G4Tubs |
---|
499 | ("TelPriMirMountCutout0_tub", 0.5*TelPriMirMountCutout0_dia, |
---|
500 | 0.8*TelPriMirMountCutout0_dia, TelPriMirMount_thi, 0., 360.*deg); |
---|
501 | G4SubtractionSolid* TelPriMirMount_sol0 = new G4SubtractionSolid |
---|
502 | ("TelPriMirMount_sol1", TelPriMirMount_tub, TelPriMirMountCutout0_tub, |
---|
503 | G4Transform3D(G4RotationMatrix(), |
---|
504 | G4ThreeVector(0.,-TelPriMirMountCutout0_yoff,0.))); |
---|
505 | G4Tubs* TelPriMirMountCutout1_tub = new G4Tubs("TelPriMirMountCutout1_tub", |
---|
506 | 0, 0.5*TelPriMirMountCutout1_dia, TelPriMirMount_thi, 0.*deg, 360.*deg); |
---|
507 | G4SubtractionSolid* TelPriMirMount_sol1 = new G4SubtractionSolid |
---|
508 | ("TelPriMirMount_sol1", TelPriMirMount_sol0, TelPriMirMountCutout1_tub, |
---|
509 | G4Transform3D(G4RotationMatrix(), |
---|
510 | G4ThreeVector(0., -TelPriMirMountCutout1_yoff,0.))); |
---|
511 | G4Tubs* TelPriMirMountCutout2_tub = new G4Tubs("TelPriMirMountCutout2_tub", |
---|
512 | 0, 0.5*TelPriMirMountCutout2_dia, TelPriMirMount_thi, 0.*deg, 360.*deg); |
---|
513 | G4SubtractionSolid* TelPriMirMount_sol2 = new G4SubtractionSolid |
---|
514 | ("TelPriMirMount_sol2", TelPriMirMount_sol1, TelPriMirMountCutout2_tub, |
---|
515 | G4Transform3D(G4RotationMatrix(), |
---|
516 | G4ThreeVector(0., -TelPriMirMountCutout2_yoff, 0.))); |
---|
517 | G4LogicalVolume* TelPriMirMount_log = |
---|
518 | new G4LogicalVolume(TelPriMirMount_sol2, Al6061, "TelPriMirMount_log"); |
---|
519 | G4VPhysicalVolume* TelPriMirMount_phys; |
---|
520 | TelPriMirMount_phys = new G4PVPlacement(0, |
---|
521 | G4ThreeVector(0.,TelPriMirMount_yoff, OpticalBench_off-TelPriMirMount_off), |
---|
522 | "TelPriMirMount_phys", TelPriMirMount_log, TelBox_phys, false, 0); |
---|
523 | TelPriMirMount_log->SetVisAttributes(sol_blue_vat); |
---|
524 | |
---|
525 | |
---|
526 | // primary mirror: 2.03 kg |
---|
527 | G4double TelPriMir_thi = 9.0*mm; |
---|
528 | G4double TelPriMir_rad = 500.0*mm; |
---|
529 | G4double TelPriMir_dia = 304.0*mm; |
---|
530 | G4double TelPriMir_yoff = 30.0*mm; |
---|
531 | G4double TelPriMirHol_dia = 35.0*mm; |
---|
532 | G4double TelPriMirHol_thi = 5.0*mm; |
---|
533 | G4double TelPriMirHol_len = 45.0*mm; |
---|
534 | G4double TelPriMir_off = TelPriMirMount_off + |
---|
535 | 0.5*TelPriMirMount_thi +2.*mm; |
---|
536 | // primary mirror: cylinder |
---|
537 | G4Tubs* TelPriMirCyl_sol = new G4Tubs("TelPriMirCyl_sol", |
---|
538 | 0.5*TelPriMirHol_dia, 0.5*TelPriMirHol_dia+TelPriMirHol_thi, |
---|
539 | 0.5*TelPriMirHol_len, 0., 360.*deg); |
---|
540 | G4LogicalVolume* TelPriMirCyl_log = |
---|
541 | new G4LogicalVolume(TelPriMirCyl_sol, SiC, "TelPriMirCyl_log"); |
---|
542 | G4VPhysicalVolume* TelPriMirCyl_phys; |
---|
543 | TelPriMirCyl_phys= new G4PVPlacement(0, G4ThreeVector |
---|
544 | (0,TelPriMir_yoff,OpticalBench_off-TelPriMir_off+0.5*TelPriMirMount_thi), |
---|
545 | "TelPriMirCyl_phys", TelPriMirCyl_log, TelBox_phys, false, 0); |
---|
546 | TelPriMirCyl_log->SetVisAttributes(sol_green_vat); |
---|
547 | // primary mirror: dish |
---|
548 | G4Sphere* TelPriMir_sol = |
---|
549 | new G4Sphere("TelPriMir_sol", TelPriMir_rad - TelPriMir_thi, |
---|
550 | TelPriMir_rad, 0., 360.*deg, |
---|
551 | std::atan(0.5*TelPriMirHol_dia/TelPriMir_rad), |
---|
552 | std::atan(0.5*TelPriMir_dia/TelPriMir_rad) - |
---|
553 | std::atan(0.5*TelPriMirHol_dia/TelPriMir_rad)); |
---|
554 | G4LogicalVolume* TelPriMir_log = |
---|
555 | new G4LogicalVolume(TelPriMir_sol, SiC, "TelPriMir_log"); |
---|
556 | G4VPhysicalVolume* TelPriMir_phys; |
---|
557 | TelPriMir_phys= new G4PVPlacement(0, G4ThreeVector |
---|
558 | (0,TelPriMir_yoff, OpticalBench_off-TelPriMir_off-TelPriMir_rad-18.*mm), |
---|
559 | "TelPriMir_phys", TelPriMir_log, TelBox_phys, false, 0); |
---|
560 | TelPriMir_log->SetVisAttributes(sol_green_vat); |
---|
561 | |
---|
562 | |
---|
563 | |
---|
564 | // *** NOTE *** |
---|
565 | // Following items are NOT in TelBox_phys but in TelShield_phys |
---|
566 | |
---|
567 | G4ThreeVector offset(0,0,0.5*TelShield_len); |
---|
568 | |
---|
569 | // Telescope mast: 0.41 kg |
---|
570 | G4double TelMast_thi = 2.0*mm; |
---|
571 | G4double TelMast_dia = 44.0*mm; |
---|
572 | G4double TelMast_len = 500.*mm; |
---|
573 | G4double TelMast_off = 0.5*TelMast_len; |
---|
574 | // Telescope mast |
---|
575 | G4Tubs* TelMast_sol = |
---|
576 | new G4Tubs("TelMast_sol", 0.5*TelMast_dia-TelMast_thi, 0.5*TelMast_dia, |
---|
577 | 0.5*TelMast_len, 0., 360.*deg); |
---|
578 | G4LogicalVolume* TelMast_log = |
---|
579 | new G4LogicalVolume(TelMast_sol, SiC, "TelMast_log"); |
---|
580 | G4VPhysicalVolume* TelMast_phys; |
---|
581 | TelMast_phys= new G4PVPlacement(0, offset+G4ThreeVector |
---|
582 | (0,-0.5*TelPriMir_dia - 0.5*TelMast_dia + TelPriMir_yoff, -TelMast_off), |
---|
583 | "TelMastTel_phys", TelMast_log, TelShield_phys, false, 0); |
---|
584 | TelMast_log->SetVisAttributes(sol_grey_vat); |
---|
585 | |
---|
586 | |
---|
587 | // secondary mirror: 0.27 kg |
---|
588 | G4double TelSecMir_dia = 40.0*mm; |
---|
589 | G4double TelSecMir_len = 70.0*mm; |
---|
590 | G4double TelSecMir_off = TelMast_off + 0.5*TelMast_len |
---|
591 | - 0.5*TelSecMir_len + 10.*mm; |
---|
592 | // secondary mirror |
---|
593 | G4Tubs* TelSecMir_sol = |
---|
594 | new G4Tubs("TelSecMir_sol", 0., 0.5*TelSecMir_dia, |
---|
595 | 0.5*TelSecMir_len, 0., 360.*deg); |
---|
596 | G4LogicalVolume* TelSecMir_log = |
---|
597 | new G4LogicalVolume(TelSecMir_sol, SiC, "TelSecMir_log"); |
---|
598 | G4VPhysicalVolume* TelSecMir_phys; |
---|
599 | TelSecMir_phys= new G4PVPlacement |
---|
600 | (0, offset+G4ThreeVector(0,TelPriMir_yoff, -TelSecMir_off), |
---|
601 | "TelSecMir_phys", TelSecMir_log, TelShield_phys, false, 0); |
---|
602 | TelSecMir_log->SetVisAttributes(sol_green_vat); |
---|
603 | |
---|
604 | |
---|
605 | |
---|
606 | // secondary mirror holder: 0.35 kg |
---|
607 | G4double TelSecHol_top = 20.0*mm; |
---|
608 | G4double TelSecHol_bot = 60.0*mm; |
---|
609 | G4double TelSecHol_thi = 5.0*mm; |
---|
610 | G4double TelSecHolCap1_thi = 5.0*mm; |
---|
611 | G4double TelSecHolCap1_len = TelSecHol_bot; |
---|
612 | G4double TelSecHolCap2_thi = 5.0*mm; |
---|
613 | G4double TelSecHolCap2_len = TelSecHol_top; |
---|
614 | G4double TelSecHol_len = 0.5*(TelPriMir_dia-TelSecMir_dia) |
---|
615 | - TelSecHolCap1_thi - TelSecHolCap2_thi; |
---|
616 | // secondary mirror holder |
---|
617 | G4Trap* TelSecHol_sol = new G4Trap("TelSecHol_sol", |
---|
618 | TelSecHol_thi, TelSecHol_len, |
---|
619 | TelSecHol_bot, TelSecHol_top); |
---|
620 | G4RotationMatrix tel_rot11; tel_rot11.rotateZ(-90.*deg); |
---|
621 | tel_rot11.rotateY(-90.*deg); tel_rot11.rotateX(-90.*deg); |
---|
622 | G4LogicalVolume* TelSecHol_log = |
---|
623 | new G4LogicalVolume(TelSecHol_sol, SiC, "TelSecHol_log"); |
---|
624 | G4VPhysicalVolume* TelSecHol_phys; |
---|
625 | TelSecHol_phys= new G4PVPlacement(G4Transform3D |
---|
626 | (tel_rot11, offset + G4ThreeVector(0, |
---|
627 | TelPriMir_yoff-0.5*TelSecHol_len-0.5*TelSecMir_dia-TelSecHolCap2_thi, |
---|
628 | -TelMast_off-0.5*TelMast_len+TelSecHol_top)), |
---|
629 | "TelSecHol_phys", TelSecHol_log, TelShield_phys, false, 0); |
---|
630 | TelSecHol_log->SetVisAttributes(sol_grey_vat); |
---|
631 | // cap1 |
---|
632 | G4Tubs* TelSecHolCap1_sol = |
---|
633 | new G4Tubs("TelSecHolCap1_sol", 0.5*TelMast_dia, |
---|
634 | 0.5*TelMast_dia+TelSecHolCap1_thi, 0.5*TelSecHolCap1_len, 0., 360.*deg); |
---|
635 | G4LogicalVolume* TelSecHolCap1_log = |
---|
636 | new G4LogicalVolume(TelSecHolCap1_sol, SiC, "TelSecHolCap1_log"); |
---|
637 | G4VPhysicalVolume* TelSecHolCap1_phys; |
---|
638 | TelSecHolCap1_phys= new G4PVPlacement(0, |
---|
639 | offset + G4ThreeVector(0,-0.5*TelPriMir_dia-0.5*TelMast_dia+TelPriMir_yoff, |
---|
640 | -TelMast_off-0.5*TelMast_len+0.5*TelSecHol_bot), |
---|
641 | "TelSecHolCap1_phys", TelSecHolCap1_log, TelShield_phys, false, 0); |
---|
642 | TelSecHolCap1_log->SetVisAttributes(sol_grey_vat); |
---|
643 | // cap2 |
---|
644 | G4Tubs* TelSecHolCap2_sol = |
---|
645 | new G4Tubs("TelSecHolCap2_sol", 0.5*TelSecMir_dia, |
---|
646 | 0.5*TelSecMir_dia+TelSecHolCap2_thi, 0.5*TelSecHolCap2_len, 0., 360.*deg); |
---|
647 | G4LogicalVolume* TelSecHolCap2_log = |
---|
648 | new G4LogicalVolume(TelSecHolCap2_sol, SiC, "TelSecHolCap2_log"); |
---|
649 | G4VPhysicalVolume* TelSecHolCap2_phys; |
---|
650 | TelSecHolCap2_phys= new G4PVPlacement(0, |
---|
651 | offset + G4ThreeVector(0,TelPriMir_yoff, |
---|
652 | -TelMast_off-0.5*TelMast_len+0.5*TelSecHol_top), |
---|
653 | "TelSecHolCap2_phys", TelSecHolCap2_log, TelShield_phys, false, 0); |
---|
654 | TelSecHolCap2_log->SetVisAttributes(sol_grey_vat); |
---|
655 | |
---|
656 | |
---|
657 | // make structure invisible |
---|
658 | // arms_o_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
659 | // arms_i_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
660 | // TelShield_log->SetVisAttributes(G4VisAttributes::Invisible); |
---|
661 | |
---|
662 | // make structure solid |
---|
663 | // arms_o_log->SetVisAttributes(sol_yellow_vat); |
---|
664 | // arms_i_log->SetVisAttributes(yellow_vat); |
---|
665 | // TelShield_log->SetVisAttributes(sol_green_vat); |
---|
666 | |
---|
667 | |
---|
668 | // **************************************************************************** |
---|