Loading...
Searching...
No Matches
B1DetectorConstruction.cc
Go to the documentation of this file.
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/// \file B1DetectorConstruction.cc
28/// \brief Implementation of the B1DetectorConstruction class
29
31
32#include "G4RunManager.hh"
33#include "G4NistManager.hh"
34#include "G4Box.hh"
35#include "G4Cons.hh"
36#include "G4Orb.hh"
37#include "G4Sphere.hh"
38#include "G4Trd.hh"
39#include "G4LogicalVolume.hh"
40#include "G4PVPlacement.hh"
41#include "G4SystemOfUnits.hh"
42
43//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
44
49
50//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
51
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
56
58{
59 // Get nist material manager
60 G4NistManager* nist = G4NistManager::Instance();
61
62 // Envelope parameters
63 //
64 G4double env_sizeXY = 20*cm, env_sizeZ = 30*cm;
65 G4Material* env_mat = nist->FindOrBuildMaterial("G4_WATER");
66
67 // Option to switch on/off checking of volumes overlaps
68 //
69 G4bool checkOverlaps = true;
70
71 //
72 // World
73 //
74 G4double world_sizeXY = 1.2*env_sizeXY;
75 G4double world_sizeZ = 1.2*env_sizeZ;
76 G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR");
77
78 G4Box* solidWorld =
79 new G4Box("World", //its name
80 0.5*world_sizeXY, 0.5*world_sizeXY, 0.5*world_sizeZ); //its size
81
82 G4LogicalVolume* logicWorld =
83 new G4LogicalVolume(solidWorld, //its solid
84 world_mat, //its material
85 "World"); //its name
86
87 G4VPhysicalVolume* physWorld =
88 new G4PVPlacement(0, //no rotation
89 G4ThreeVector(), //at (0,0,0)
90 logicWorld, //its logical volume
91 "World", //its name
92 0, //its mother volume
93 false, //no boolean operation
94 0, //copy number
95 checkOverlaps); //overlaps checking
96
97 //
98 // Envelope
99 //
100 G4Box* solidEnv =
101 new G4Box("Envelope", //its name
102 0.5*env_sizeXY, 0.5*env_sizeXY, 0.5*env_sizeZ); //its size
103
104 G4LogicalVolume* logicEnv =
105 new G4LogicalVolume(solidEnv, //its solid
106 env_mat, //its material
107 "Envelope"); //its name
108
109 new G4PVPlacement(0, //no rotation
110 G4ThreeVector(), //at (0,0,0)
111 logicEnv, //its logical volume
112 "Envelope", //its name
113 logicWorld, //its mother volume
114 false, //no boolean operation
115 0, //copy number
116 checkOverlaps); //overlaps checking
117
118 //
119 // Shape 1
120 //
121 G4Material* shape1_mat = nist->FindOrBuildMaterial("G4_A-150_TISSUE");
122 G4ThreeVector pos1 = G4ThreeVector(0, 2*cm, -7*cm);
123
124 // Conical section shape
125 G4double shape1_rmina = 0.*cm, shape1_rmaxa = 2.*cm;
126 G4double shape1_rminb = 0.*cm, shape1_rmaxb = 4.*cm;
127 G4double shape1_hz = 3.*cm;
128 G4double shape1_phimin = 0.*deg, shape1_phimax = 360.*deg;
129 G4Cons* solidShape1 =
130 new G4Cons("Shape1",
131 shape1_rmina, shape1_rmaxa, shape1_rminb, shape1_rmaxb, shape1_hz,
132 shape1_phimin, shape1_phimax);
133
134 G4LogicalVolume* logicShape1 =
135 new G4LogicalVolume(solidShape1, //its solid
136 shape1_mat, //its material
137 "Shape1"); //its name
138
139 new G4PVPlacement(0, //no rotation
140 pos1, //at position
141 logicShape1, //its logical volume
142 "Shape1", //its name
143 logicEnv, //its mother volume
144 false, //no boolean operation
145 0, //copy number
146 checkOverlaps); //overlaps checking
147
148
149 //
150 // Shape 2
151 //
152 G4Material* shape2_mat = nist->FindOrBuildMaterial("G4_BONE_COMPACT_ICRU");
153 G4ThreeVector pos2 = G4ThreeVector(0, -1*cm, 7*cm);
154
155 // Trapezoid shape
156 G4double shape2_dxa = 12*cm, shape2_dxb = 12*cm;
157 G4double shape2_dya = 10*cm, shape2_dyb = 16*cm;
158 G4double shape2_dz = 6*cm;
159 G4Trd* solidShape2 =
160 new G4Trd("Shape2", //its name
161 0.5*shape2_dxa, 0.5*shape2_dxb,
162 0.5*shape2_dya, 0.5*shape2_dyb, 0.5*shape2_dz); //its size
163
164 G4LogicalVolume* logicShape2 =
165 new G4LogicalVolume(solidShape2, //its solid
166 shape2_mat, //its material
167 "Shape2"); //its name
168
169 new G4PVPlacement(0, //no rotation
170 pos2, //at position
171 logicShape2, //its logical volume
172 "Shape2", //its name
173 logicEnv, //its mother volume
174 false, //no boolean operation
175 0, //copy number
176 checkOverlaps); //overlaps checking
177
178 // Set Shape2 as scoring volume
179 //
180 fScoringVolume = logicShape2;
181
182 //
183 //always return the physical World
184 //
185 return physWorld;
186}
187
188//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Definition of the B1DetectorConstruction class.
virtual G4VPhysicalVolume * Construct()

Applications | User Support | Publications | Collaboration