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

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