source: trunk/examples/advanced/cosmicray_charging/src/LISASupportSystems.icc@ 1036

Last change on this file since 1036 was 807, checked in by garnier, 17 years ago

update

File size: 10.0 KB
Line 
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//
42// ********************************************************************
43
44
45//***************************************************************************
46// Support systems
47//***************************************************************************
48// Star Trackers
49// FEEP Thrusters
50// Communications Antennas
51//***************************************************************************
52
53
54 // Star Trackers ************************************************************
55
56 G4double ST_rad = 0.5*2270*mm;
57 G4RotationMatrix ST_rot1; ST_rot1.rotateZ(+30.*deg);
58 G4ThreeVector ST_pos1(ST_rad*std::cos(56*deg),
59 +ST_rad*std::sin(56*deg),180.*mm);
60 G4RotationMatrix ST_rot2; ST_rot2.rotateZ(-30.*deg);
61 G4ThreeVector ST_pos2(ST_rad*std::cos(56*deg),
62 -ST_rad*std::sin(56*deg),180.*mm);
63 G4RotationMatrix ST_rot3; ST_rot3.rotateY(90.*deg);
64
65 // Star Tracker: 2 kg
66 G4double StarTracker_dia_o = 100.*mm;
67 G4double StarTracker_dia_i = 40.*mm;
68 G4double StarTracker_len = 120.*mm;
69 // Bracket: 0.25 kg
70 G4double StarTrackerBracket_wid = 120.*mm;
71 G4double StarTrackerBracket_hei = 104.*mm;
72 G4double StarTrackerBracket_thi = 7.5*mm;
73
74 G4Tubs* StarTracker_tub = new G4Tubs("StarTracker_tub",0.5*StarTracker_dia_i,
75 0.5*StarTracker_dia_o, 0.5*StarTracker_len, 0., 360.*deg);
76 G4Box* StarTrackerBracket_box = new G4Box("StarTrackerBracket_box",
77 0.5*StarTrackerBracket_thi, 0.5*StarTrackerBracket_wid,
78 0.5*StarTrackerBracket_hei);
79 G4UnionSolid* StarTracker_sol = new G4UnionSolid("StarTracker_sol",
80 StarTrackerBracket_box, StarTracker_tub, G4Transform3D(ST_rot3,
81 G4ThreeVector(0.5*(StarTracker_len + StarTrackerBracket_thi),0,0)));
82 G4LogicalVolume* StarTracker_log =
83 new G4LogicalVolume(StarTracker_sol, Al6061, "StarTracker_log");
84 G4VPhysicalVolume* StarTracker_phys;
85 StarTracker_phys = new G4PVPlacement(G4Transform3D(ST_rot1, spacecraft_pos
86 + ST_pos1), "StarTracker_phys", StarTracker_log, wld_phys, false, 0);
87 StarTracker_phys = new G4PVPlacement(G4Transform3D(ST_rot2, spacecraft_pos
88 + ST_pos2), "StarTracker_phys", StarTracker_log, wld_phys, false, 1);
89 StarTracker_log->SetVisAttributes(sol_cyan_vat);
90
91
92
93 // FEEP Thrusters ***********************************************************
94
95 G4double FEEP_rad = 0.5*2520*mm;
96 G4RotationMatrix FEEP_rot1;
97 FEEP_rot1.rotateZ(-90.*deg); FEEP_rot1.rotateX(180.*deg);
98 G4ThreeVector FEEP_pos1(FEEP_rad,0,170.*mm);
99 G4RotationMatrix FEEP_rot2;
100 FEEP_rot2.rotateZ(+30.*deg); FEEP_rot2.rotateX(180.*deg);
101 G4ThreeVector FEEP_pos2(-FEEP_rad*std::cos(60*deg),
102 -FEEP_rad*std::sin(60*deg),170.*mm);
103 G4RotationMatrix FEEP_rot3;
104 FEEP_rot3.rotateZ(150.*deg); FEEP_rot3.rotateX(180.*deg);
105 G4ThreeVector FEEP_pos3(-FEEP_rad*std::cos(60*deg),
106 +FEEP_rad*std::sin(60*deg),170.*mm);
107
108 // 1 support + 2 FEEPs: ~11 kg
109 G4double FEEP_dia_o = 140.*mm;
110 G4double FEEP_dia_i = 130.*mm;
111 G4double FEEP_len = 105.*mm;
112 G4double FEEP_xoff = 110.*mm;
113 G4double FEEP_yoff = 70.*mm;
114 G4double FEEP_zoff = 15.*mm;
115 G4double FEEPSup_len = 245.*mm;
116 G4double FEEPSup_wid = 276.*mm;
117 G4double FEEPSup_hei = 146.*mm;
118 G4double FEEPCut1_wid = 31.*mm;
119 G4double FEEPCut1_yoff = 50.*mm;
120 G4double FEEPCut2_len = 70.*mm;
121 G4double FEEPCut2_zoff = 10.*mm;
122 G4double FEEPCut3_xoff = 140.*mm;
123
124 G4RotationMatrix FEEP_rot4;
125 FEEP_rot4.rotateY((90.+15.)*deg); FEEP_rot4.rotateZ(-25.*deg);
126 G4RotationMatrix FEEP_rot5;
127 FEEP_rot5.rotateY((90.-15.)*deg); FEEP_rot5.rotateZ(+25.*deg);
128
129 // Mounting bracket
130 G4Box* FEEP_sol1 = new G4Box("FEEP_sol1",
131 0.5*FEEPSup_wid, 0.5*FEEPSup_len, 0.5*FEEPSup_hei);
132 G4Box* FEEPSupCutout1 = new G4Box("FEEPSupCutout1",
133 0.5*FEEPCut1_wid, 0.5*FEEPSup_len, 0.6*FEEPSup_hei);
134 G4SubtractionSolid* FEEP_sol2 = new G4SubtractionSolid("FEEP_sol2",
135 FEEP_sol1, FEEPSupCutout1, G4Transform3D(G4RotationMatrix(),
136 G4ThreeVector(0, -FEEPCut1_yoff, 0.)));
137 G4Box* FEEPSupCutout2 = new G4Box("FEEPSupCutout2",
138 0.6*FEEPSup_wid, 0.5*FEEPCut2_len, 0.51*FEEPSup_hei);
139 G4SubtractionSolid* FEEP_sol3 = new G4SubtractionSolid("FEEP_sol3",
140 FEEP_sol2, FEEPSupCutout2, G4Transform3D(G4RotationMatrix(),
141 G4ThreeVector(0,-0.5*FEEPSup_len+0.5*FEEPCut2_len-.5*mm, FEEPCut2_zoff)));
142 G4Box* FEEPSupCutout3 = new G4Box("FEEPSupCutout3",
143 FEEPSup_wid, FEEPSup_hei, FEEPCut2_len);
144 G4SubtractionSolid* FEEP_sol4 = new G4SubtractionSolid("FEEP_sol4",
145 FEEP_sol3, FEEPSupCutout3, G4Transform3D(FEEP_rot4,
146 G4ThreeVector(-FEEPCut3_xoff,FEEPCut2_len,0)));
147 G4SubtractionSolid* FEEP_sol5 = new G4SubtractionSolid("FEEP_sol5",
148 FEEP_sol4, FEEPSupCutout3, G4Transform3D(FEEP_rot5,
149 G4ThreeVector(+FEEPCut3_xoff,FEEPCut2_len,0)));
150 // FEEPs
151 G4Tubs* FEEP_tub = new G4Tubs("FEEP_tub", 0.5*FEEP_dia_i, 0.5*FEEP_dia_o,
152 0.5*FEEP_len, 0., 360.*deg);
153 G4UnionSolid* FEEP_sol6 = new G4UnionSolid("FEEP_sol",
154 FEEP_sol5, FEEP_tub, G4Transform3D(FEEP_rot4,
155 G4ThreeVector(-FEEP_xoff,FEEP_yoff,FEEP_zoff)));
156 G4UnionSolid* FEEP_sol7 = new G4UnionSolid("FEEP_sol",
157 FEEP_sol6, FEEP_tub, G4Transform3D(FEEP_rot5,
158 G4ThreeVector(+FEEP_xoff,FEEP_yoff,FEEP_zoff)));
159 G4LogicalVolume* FEEP_log =
160 new G4LogicalVolume(FEEP_sol7, Al6061, "FEEP_log");
161 G4VPhysicalVolume* FEEP_phys;
162 FEEP_phys = new G4PVPlacement(G4Transform3D(FEEP_rot1,
163 spacecraft_pos+FEEP_pos1), "FEEP_phys", FEEP_log, wld_phys, false, 0);
164 FEEP_phys = new G4PVPlacement(G4Transform3D(FEEP_rot2,
165 spacecraft_pos+FEEP_pos2), "FEEP_phys", FEEP_log, wld_phys, false, 1);
166 FEEP_phys = new G4PVPlacement(G4Transform3D(FEEP_rot3,
167 spacecraft_pos+FEEP_pos3), "FEEP_phys", FEEP_log, wld_phys, false, 2);
168 FEEP_log->SetVisAttributes(sol_cyan_vat);
169
170
171 // Communications Antennas **************************************************
172
173
174 // Antenna dish: ~1.4 kg
175 G4double Antenna_dia = 295.*mm;
176 G4double Antenna_thi = 7.*mm;
177 G4double Antenna_rad = 300.*mm;
178 // Antenna mount: 1 kg cylindrical shell
179 G4double AntennaMount_dia_o = 90.*mm;
180 G4double AntennaMount_dia_i = 77.*mm;
181 G4double AntennaMount_len = 220.*mm;
182
183 G4ThreeVector ant_pos1(Antenna_rad+0*mm,+1250*mm,+550.*mm);
184 G4ThreeVector ant_pos2(Antenna_rad-0*mm,-1250*mm,+550.*mm);
185 G4RotationMatrix ant_rot3; ant_rot3.rotateY(-90.*deg);
186
187 // Dish
188 G4Sphere* Antenna_sol = new G4Sphere("Antenna_sol", Antenna_rad-Antenna_thi,
189 Antenna_rad, 0., 360.*deg, 0, std::asin(0.5*Antenna_dia/Antenna_rad));
190 G4LogicalVolume* Antenna_log = new G4LogicalVolume
191 (Antenna_sol, Al6061, "Antenna_log");
192 G4VPhysicalVolume* Antenna_phys;
193 Antenna_phys = new G4PVPlacement(G4Transform3D(ant_rot3, spacecraft_pos
194 + ant_pos1), "Antenna_phys", Antenna_log, wld_phys, false, 0);
195 Antenna_phys = new G4PVPlacement(G4Transform3D(ant_rot3, spacecraft_pos
196 + ant_pos2), "Antenna_phys", Antenna_log, wld_phys, false, 1);
197 Antenna_log->SetVisAttributes(sol_cyan_vat);
198
199 // Mount
200 G4Tubs* AntennaMount_tub = new G4Tubs("AntennaMount_sol",
201 0.5*AntennaMount_dia_i, 0.5*AntennaMount_dia_o, 0.5*AntennaMount_len,
202 0., 360.*deg);
203 G4LogicalVolume* AntennaMount_log = new G4LogicalVolume
204 (AntennaMount_tub, Al6061, "AntennaMount_log");
205 G4VPhysicalVolume* AntennaMount_phys;
206 AntennaMount_phys = new G4PVPlacement(0, spacecraft_pos+ant_pos1+
207 G4ThreeVector(-Antenna_rad-60.*mm,0,-80.*mm),
208 "AntennaMount_phys", AntennaMount_log, wld_phys, false, 0);
209 AntennaMount_phys = new G4PVPlacement(0, spacecraft_pos+ant_pos2+
210 G4ThreeVector(-Antenna_rad-60.*mm,0,-80.*mm),
211 "AntennaMount_phys", AntennaMount_log, wld_phys, false, 1);
212 AntennaMount_log->SetVisAttributes(sol_cyan_vat);
213
214//*****************************************************************************
Note: See TracBrowser for help on using the repository browser.