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

Last change on this file since 1253 was 807, checked in by garnier, 16 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.