source: trunk/examples/advanced/cosmicray_charging/src/LISADetectorConstruction.cc@ 1158

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

update

File size: 8.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// 24/11/2004: migrated to cmath
41//
42// ********************************************************************
43
44
45#include "LISADetectorConstruction.hh"
46#include "LISADetectorMaterials.hh"
47
48
49//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
50LISADetectorConstruction::LISADetectorConstruction() {;}
51
52
53//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
54LISADetectorConstruction::~LISADetectorConstruction() {;}
55
56
57//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
58G4VPhysicalVolume* LISADetectorConstruction::Construct() {
59
60
61 // material definitions
62 ConstructMaterials();
63
64
65 // build it
66 return ConstructDetector();
67
68}
69
70
71//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
72G4VPhysicalVolume* LISADetectorConstruction::ConstructDetector() {
73
74
75 // Edge and solid colour attributes
76#include "LISAColours.icc"
77
78
79
80 //***************************************************************************
81 // world
82 //***************************************************************************
83
84 G4double wld_len = 3000.*mm;
85
86 G4Tubs* truewld_sol =
87 new G4Tubs("truewld_box", 0., 0.5*wld_len, 0.5*wld_len, 0., 360.*deg);
88 G4LogicalVolume* truewld_log =
89 new G4LogicalVolume(truewld_sol, vacuum, "truewld_log");
90 G4VPhysicalVolume* truewld_phys = new G4PVPlacement(0, G4ThreeVector(),
91 "truewld_phys", truewld_log, NULL, false, 0);
92 truewld_log->SetVisAttributes(G4VisAttributes::Invisible);
93
94 // allow spacecraft rotation
95 G4RotationMatrix wld_rot; wld_rot.rotateZ(0.*deg);
96 G4Tubs* wld_sol =
97 new G4Tubs("wld_box", 0., 0.49*wld_len, 0.5*wld_len, 0., 360.*deg);
98 G4LogicalVolume* wld_log =
99 new G4LogicalVolume(wld_sol, vacuum, "wld_log");
100 G4VPhysicalVolume* wld_phys = new G4PVPlacement(G4Transform3D(wld_rot,
101 G4ThreeVector()), "wld_phys", wld_log, truewld_phys, false, 0);
102 // wld_log->SetVisAttributes(white_vat);
103 wld_log->SetVisAttributes(G4VisAttributes::Invisible);
104
105
106 // Probe volume
107 // uncomment code in LISASteppingAction.cc to count hits
108 // G4Sphere* probe_sol =
109 // new G4Sphere("probe_sol", 0., 100.*mm, 0., 360.*deg, 0., 180.*deg);
110 // G4LogicalVolume* probe_log =
111 // new G4LogicalVolume(probe_sol, vacuum, "probe_log");
112 // G4VPhysicalVolume* probe_phys =
113 // new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,0*mm),
114 // "probe_phys", probe_log, wld_phys, false, 0);
115 // probe_log->SetVisAttributes(sol_white_vat);
116
117
118
119 //**************************************************************************
120 // Science Module Structure (SMS)
121 //**************************************************************************
122 // Primary Structure
123 // Lower Deck
124 // Upper Deck
125 // Thermal Shield
126 // Solar Array
127 // Optical Surface Reflectors (OSR)
128 // Radiator Panels
129 //**************************************************************************
130
131 // position of science module spacecraft in world volume
132 G4ThreeVector spacecraft_pos(0.*mm,0.*mm,0.*mm);
133
134#include "LISAScienceModuleStructures.icc"
135
136
137
138 //***************************************************************************
139 // Interferometer Assembly
140 //***************************************************************************
141 // Payload Shield (Y Tube)
142 // Telescope Light Shields
143 // Telescope Electronics Mounting
144 // Telescope Mirrors Mounting
145 // Telescope Actuator Mechanism
146 // Optical Bench Mounting
147 // Optical Bench
148 //***************************************************************************
149
150
151 // position of payload shields in spacecraft
152 G4double YTube_xoff = -800.*mm;
153
154 // position of interferometer in Y-tubes
155 G4RotationMatrix tel_rot1; tel_rot1.rotateY(210.*deg);
156 G4ThreeVector tel_pos1(+319.*mm, 0.*mm, 920.*mm);
157 G4RotationMatrix tel_rot2; tel_rot2.rotateY(150.*deg);
158 G4ThreeVector tel_pos2(-319.*mm, 0.*mm, 920.*mm);
159
160 // position of optical bench along Y-tube
161 G4double OpticalBench_off = 0.0*mm;
162
163#include "LISAInterferometerAssembly.icc"
164
165
166
167 //***************************************************************************
168 // Sensor Vacuum Housing
169 // Modified to contain LTP Inertial Sensor and Caging Mechanism
170 //***************************************************************************
171
172 G4RotationMatrix IS_rot; IS_rot.rotateX(90.*deg); IS_rot.rotateY(90.*deg);
173
174#include "LISASensorHousing.icc"
175
176
177
178 //***************************************************************************
179 // LTP Caging Mechanism
180 //***************************************************************************
181
182 //#include "LISACagingMechanism.icc"
183
184
185
186
187 //***************************************************************************
188 // Inertial Sensors: YZ-Injection, 46 mm Test Mass
189 // Design adopted for LTP/SMART-2: Report LTP-RT-CGS-001, issue 2
190 //***************************************************************************
191
192#include "LISAInertialSensor.icc"
193
194 // Sensor Region (cuts 250 eV)
195 G4Region* ISensor = new G4Region(G4String("sensor"));
196 cage_o_log->SetRegion(ISensor);
197 ISensor->AddRootLogicalVolume(cage_o_log);
198
199
200
201
202 //***************************************************************************
203 // Electronics Boxes
204 //***************************************************************************
205
206#include "LISAElectronicsBoxes.icc"
207
208
209
210
211 //***************************************************************************
212 // Support Systems
213 //***************************************************************************
214 // Star Trackers
215 // FEEP Thrusters
216 // Communications Antennas
217 //***************************************************************************
218
219#include "LISASupportSystems.icc"
220
221
222
223 // ......................................................................
224 // attach user limits ...................................................
225
226 // reduce step size in electrodes
227 // goldplating_log->SetUserLimits (new G4UserLimits(30.*nanometer));
228
229 // return
230 return truewld_phys;
231
232}
Note: See TracBrowser for help on using the repository browser.