source: trunk/examples/advanced/cosmicray_charging/src/LISAInertialSensor.icc@ 809

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

update

File size: 11.4 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// 08/12/2005: removed compilation warnings
41//
42// ********************************************************************
43
44
45// **************************************************************************
46// Inertial Sensors: YZ-Injection, 46 mm Test Mass
47// LISA Inertial Sensor Design Report LTP-RT-CGS-001, issue 2
48//***************************************************************************
49
50
51 // Molybdenum cage (electrode housing)
52 G4double cage_o = 75.0*mm;
53 G4double cage_i_x = 53.8*mm;
54 G4double cage_i_y = 51.6*mm;
55 G4double cage_i_z = 52.8*mm;
56
57 // Molybdenum disks (top and bottom)
58 G4double disk_thi = 3.0*mm;
59 G4double disk_id = 12.0*mm;
60 G4double disk_od = 60.0*mm;
61 G4double disk_off = 0.5*cage_o+0.5*disk_thi;
62
63 // SHAPAL electrode supports
64 G4double elecsupp_x_thi = 6.5*mm;
65 G4double elecsupp_y_thi = 7.6*mm;
66 G4double elecsupp_yi_thi = 6.5*mm;
67 G4double elecsupp_z_thi = 7.0*mm;
68 G4double elecsupp_zi_thi = 6.5*mm;
69
70
71 // gold plating thickness
72 G4double elec_thi = 0.300*micrometer;
73
74 // electrodes (x faces)
75 G4double elec_x_xoff = 0.5*cage_i_x + 0.5*elecsupp_x_thi + elec_thi;
76 G4double elec_x_y = 14.5*mm, elec_x_z = 36.0*mm;
77 G4double elec_x_yoff = 10.*mm;
78 // electrodes (y faces)
79 G4double elec_y_yoff = 0.5*cage_i_y + 0.5*elecsupp_y_thi + elec_thi;
80 G4double elec_y_x = 38.2*mm, elec_y_z = 7.1*mm;
81 G4double elec_y_zoff = 15.*mm;
82 // electrodes (y injection)
83 G4double elec_yi_yoff = 0.5*cage_i_y + 0.5*elecsupp_yi_thi + elec_thi;
84 G4double elec_yi_x = 38.2*mm, elec_yi_z = 16.0*mm;
85 // electrodes (z faces)
86 G4double elec_z_zoff = 0.5*cage_i_z + 0.5*elecsupp_z_thi + elec_thi;
87 G4double elec_z_x = 6.5*mm, elec_z_y = 37.0*mm;
88 // electrodes (z injection)
89 G4double elec_zi_x = 16.0*mm;
90 G4double elec_zi_y = 12.0*mm;
91 G4double elec_zi_zoff = 0.5*cage_i_z + 0.5*elecsupp_zi_thi + elec_thi;
92 G4double elec_zi_yoff = 12.*mm;
93
94 // Test Mass
95 G4double tmass_len = 46.0*mm;
96
97
98
99
100 // Molybdenum cage **********************************************************
101 G4Box* cage_o_sol = new G4Box("cage_o_sol", .5*cage_o, .5*cage_o, .5*cage_o);
102 G4LogicalVolume* cage_o_log =
103 new G4LogicalVolume(cage_o_sol, molybdenum, "cage_o_log");
104 G4VPhysicalVolume* cage_o_phys;
105 cage_o_phys = new G4PVPlacement(0, G4ThreeVector(),
106 "cage_o_phys", cage_o_log, SensorHousing_i_phys, false, 0);
107 cage_o_log->SetVisAttributes(lgreen_vat);
108 // cage_o_log->SetVisAttributes(G4VisAttributes::Invisible);
109
110 // 0.3 um gold plating
111 G4Box* goldplating_sol = new G4Box("goldplating_sol",
112 0.5*cage_i_x+elec_thi, 0.5*cage_i_y+elec_thi, 0.5*cage_i_z+elec_thi);
113 G4LogicalVolume* goldplating_log =
114 new G4LogicalVolume(goldplating_sol, gold, "goldplating_log");
115 G4VPhysicalVolume* goldplating_phys;
116 goldplating_phys = new G4PVPlacement(0, G4ThreeVector(),
117 "goldplating_phys", goldplating_log, cage_o_phys, false, 0);
118 goldplating_log->SetVisAttributes(yellow_vat);
119
120 // Inside cage
121 G4Box* cage_i_sol =
122 new G4Box("cage_i_sol", .5*cage_i_x, .5*cage_i_y, .5*cage_i_z);
123 G4LogicalVolume* cage_i_log =
124 new G4LogicalVolume(cage_i_sol, vacuum, "cage_i_log");
125 G4VPhysicalVolume* cage_i_phys;
126 cage_i_phys = new G4PVPlacement(0, G4ThreeVector(),
127 "cage_i_phys", cage_i_log, goldplating_phys, false, 0);
128 cage_i_log->SetVisAttributes(white_vat);
129
130
131 // Molybdenum disks *********************************************************
132 G4Tubs* disk_sol = new G4Tubs("disk_sol", 0.5*disk_id, 0.5*disk_od,
133 0.5*disk_thi, 0., 360.*deg);
134 G4LogicalVolume* disk_log =
135 new G4LogicalVolume(disk_sol, molybdenum, "disk_log");
136 G4VPhysicalVolume* disk_phys;
137 disk_phys = new G4PVPlacement(0, G4ThreeVector(0,0,+disk_off),
138 "disk_phys", disk_log, SensorHousing_i_phys, false, 0);
139 disk_phys = new G4PVPlacement(0, G4ThreeVector(0,0,-disk_off),
140 "disk_phys", disk_log, SensorHousing_i_phys, false, 1);
141 disk_log->SetVisAttributes(lgreen_vat);
142// disk_log->SetVisAttributes(G4VisAttributes::Invisible);
143
144
145
146 // electrodes (x faces) *****************************************************
147 G4Box* elecsupp_x_sol =
148 new G4Box("elecsupp_x_sol", 0.5*elecsupp_x_thi,0.5*elec_x_y,0.5*elec_x_z);
149 G4LogicalVolume* elecsupp_x_log =
150 new G4LogicalVolume(elecsupp_x_sol, SHAPAL, "elecsupp_x_log");
151 G4VPhysicalVolume* elecsupp_x_phys;
152 elecsupp_x_phys = new G4PVPlacement(0,
153 G4ThreeVector(+elec_x_xoff,-elec_x_yoff,0),
154 "elecsupp_x_phys", elecsupp_x_log, cage_o_phys, false, 0);
155 elecsupp_x_phys = new G4PVPlacement(0,
156 G4ThreeVector(+elec_x_xoff,+elec_x_yoff,0),
157 "elecsupp_x_phys", elecsupp_x_log, cage_o_phys, false, 1);
158 elecsupp_x_phys = new G4PVPlacement(0,
159 G4ThreeVector(-elec_x_xoff,-elec_x_yoff,0),
160 "elecsupp_x_phys", elecsupp_x_log, cage_o_phys, false, 2);
161 elecsupp_x_phys = new G4PVPlacement(0,
162 G4ThreeVector(-elec_x_xoff,+elec_x_yoff,0),
163 "elecsupp_x_phys", elecsupp_x_log, cage_o_phys, false, 3);
164
165
166 // electrodes (y faces) *****************************************************
167 G4Box* elecsupp_y_sol =
168 new G4Box("elecsupp_y_sol", 0.5*elec_y_x,0.5*elecsupp_y_thi,0.5*elec_y_z);
169 G4LogicalVolume* elecsupp_y_log =
170 new G4LogicalVolume(elecsupp_y_sol, SHAPAL, "elecsupp_y_log");
171 G4VPhysicalVolume* elecsupp_y_phys;
172 elecsupp_y_phys = new G4PVPlacement(0,
173 G4ThreeVector(0,+elec_y_yoff,-elec_y_zoff),
174 "elecsupp_y_phys", elecsupp_y_log, cage_o_phys, false, 0);
175 elecsupp_y_phys = new G4PVPlacement(0,
176 G4ThreeVector(0,+elec_y_yoff,+elec_y_zoff),
177 "elecsupp_y_phys", elecsupp_y_log, cage_o_phys, false, 1);
178 elecsupp_y_phys = new G4PVPlacement(0,
179 G4ThreeVector(0,-elec_y_yoff,-elec_y_zoff),
180 "elecsupp_y_phys", elecsupp_y_log, cage_o_phys, false, 2);
181 elecsupp_y_phys = new G4PVPlacement(0,
182 G4ThreeVector(0,-elec_y_yoff,+elec_y_zoff),
183 "elecsupp_y_phys", elecsupp_y_log, cage_o_phys, false, 3);
184
185 // y injection
186 G4Box* elecsupp_yi_sol =
187 new G4Box("elecsupp_yi_sol",.5*elec_yi_x,.5*elecsupp_yi_thi,.5*elec_yi_z);
188 G4LogicalVolume* elecsupp_yi_log =
189 new G4LogicalVolume(elecsupp_yi_sol, SHAPAL, "elecsupp_yi_log");
190 G4VPhysicalVolume* elecsupp_yi_phys;
191 elecsupp_yi_phys = new G4PVPlacement(0, G4ThreeVector(0,+elec_yi_yoff,0),
192 "elecsupp_yi_phys", elecsupp_yi_log, cage_o_phys, false, 0);
193 elecsupp_yi_phys = new G4PVPlacement(0, G4ThreeVector(0,-elec_yi_yoff,0),
194 "elecsupp_yi_phys", elecsupp_yi_log, cage_o_phys, false, 1);
195
196
197 // electrodes (z faces) *****************************************************
198 G4Box* elecsupp_z_sol =
199 new G4Box("elecsupp_z_sol",.5*elec_z_x,.5*elec_z_y,.5*elecsupp_z_thi);
200 G4LogicalVolume* elecsupp_z_log =
201 new G4LogicalVolume(elecsupp_z_sol, SHAPAL, "elecsupp_z_log");
202 G4VPhysicalVolume* elecsupp_z_phys;
203 elecsupp_z_phys = new G4PVPlacement(0,
204 G4ThreeVector(-elec_y_zoff,0,+elec_z_zoff),
205 "elecsupp_y_phys", elecsupp_z_log, cage_o_phys, false, 0);
206 elecsupp_z_phys = new G4PVPlacement(0,
207 G4ThreeVector(+elec_y_zoff,0,+elec_z_zoff),
208 "elecsupp_y_phys", elecsupp_z_log, cage_o_phys, false, 1);
209 elecsupp_z_phys = new G4PVPlacement(0,
210 G4ThreeVector(-elec_y_zoff,0,-elec_z_zoff),
211 "elecsupp_y_phys", elecsupp_z_log, cage_o_phys, false, 2);
212 elecsupp_z_phys = new G4PVPlacement(0,
213 G4ThreeVector(+elec_y_zoff,0,-elec_z_zoff),
214 "elecsupp_y_phys", elecsupp_z_log, cage_o_phys, false, 3);
215
216 // z injection
217 G4Box* elecsupp_zi_sol =
218 new G4Box("elecsupp_zi_sol",.5*elec_zi_x,.5*elec_zi_y,.5*elecsupp_zi_thi);
219 G4LogicalVolume* elecsupp_zi_log =
220 new G4LogicalVolume(elecsupp_zi_sol, SHAPAL, "elecsupp_zi_log");
221 G4VPhysicalVolume* elecsupp_zi_phys;
222 elecsupp_zi_phys=new G4PVPlacement(0,
223 G4ThreeVector(0,-elec_zi_yoff,+elec_zi_zoff),
224 "elecsupp_zi_phys", elecsupp_zi_log, cage_o_phys, false, 0);
225 elecsupp_zi_phys=new G4PVPlacement(0,
226 G4ThreeVector(0,+elec_zi_yoff,+elec_zi_zoff),
227 "elecsupp_zi_phys", elecsupp_zi_log, cage_o_phys, false, 1);
228 elecsupp_zi_phys=new G4PVPlacement(0,
229 G4ThreeVector(0,-elec_zi_yoff,-elec_zi_zoff),
230 "elecsupp_zi_phys", elecsupp_zi_log, cage_o_phys, false, 2);
231 elecsupp_zi_phys=new G4PVPlacement(0,
232 G4ThreeVector(0,+elec_zi_yoff,-elec_zi_zoff),
233 "elecsupp_zi_phys", elecsupp_zi_log, cage_o_phys, false, 3);
234
235 // electrode vis attributes
236 elecsupp_x_log ->SetVisAttributes(sol_white_vat);
237 elecsupp_y_log ->SetVisAttributes(sol_white_vat);
238 elecsupp_z_log ->SetVisAttributes(sol_white_vat);
239 elecsupp_yi_log->SetVisAttributes(sol_orange_vat);
240 elecsupp_zi_log->SetVisAttributes(sol_orange_vat);
241
242
243 // Test Masses **************************************************************
244 G4Box* tmass_sol =
245 new G4Box("tmass_sol", 0.5*tmass_len, 0.5*tmass_len, 0.5*tmass_len);
246 G4LogicalVolume* tmass_log =
247 new G4LogicalVolume(tmass_sol, AuPt, "tmass_log");
248 G4VPhysicalVolume* tmass_phys;
249 tmass_phys = new G4PVPlacement
250 (0, G4ThreeVector(), "tmass_phys", tmass_log, cage_i_phys, false, 0);
251 tmass_log->SetVisAttributes(sol_gold_vat);
252
253
254
255//*****************************************************************************
Note: See TracBrowser for help on using the repository browser.