source: trunk/examples/advanced/radioprotection/src/RemSimROGeometry.cc@ 1255

Last change on this file since 1255 was 1230, checked in by garnier, 16 years ago

update to geant4.9.3

File size: 5.3 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// Code developed by: S.Guatelli, guatelli@ge.infn.it
28//
29// ************************************
30// * *
31// * RemSimROGeometry.cc *
32// * *
33// ************************************
34//
35// $Id: RemSimROGeometry.cc,v 1.6 2006/06/29 16:24:13 gunter Exp $
36// GEANT4 tag $Name: geant4-09-03-cand-01 $
37//
38#include "RemSimROGeometry.hh"
39#include "RemSimDummySD.hh"
40#include "G4LogicalVolume.hh"
41#include "G4VPhysicalVolume.hh"
42#include "G4PVPlacement.hh"
43#include "G4PVReplica.hh"
44#include "G4SDManager.hh"
45#include "G4Box.hh"
46#include "G4Tubs.hh"
47#include "G4SubtractionSolid.hh"
48#include "G4ThreeVector.hh"
49#include "G4Material.hh"
50
51RemSimROGeometry::RemSimROGeometry(G4double astronautDimX,
52 G4double astronautDimY,
53 G4double astronautDimZ,
54 G4int numberOfVoxelsZ,
55 G4double trans):
56
57 astronautDimensionX(astronautDimX),
58 astronautDimensionY(astronautDimY),
59 astronautDimensionZ(astronautDimZ),
60 numberOfVoxelsAlongZ(numberOfVoxelsZ),
61 translation(trans),
62 ROAstronautZDivisionPhys(0)
63{
64}
65
66RemSimROGeometry::~RemSimROGeometry()
67{
68}
69
70G4VPhysicalVolume* RemSimROGeometry::Build()
71{
72 // A dummy material is used to fill the volumes of the readout geometry.
73 // (It will be allowed to set a NULL pointer in volumes of such virtual
74 // division in future, since this material is irrelevant for tracking.)
75
76 G4Material* dummyMat = new G4Material(name="dummyMat", 1., 1.*g/mole, 1.*g/cm3);
77
78 G4double worldDimensionX = 30.0*m;
79 G4double worldDimensionY = 30.0*m;
80 G4double worldDimensionZ = 30.0*m;
81
82 // world volume of ROGeometry ...
83 G4Box *ROWorld = new G4Box("ROWorld",
84 worldDimensionX,
85 worldDimensionY,
86 worldDimensionZ);
87
88 G4LogicalVolume *ROWorldLog = new G4LogicalVolume(ROWorld,
89 dummyMat,
90 "ROWorldLog",
91 0,0,0);
92
93 G4VPhysicalVolume *ROWorldPhys = new G4PVPlacement(0,
94 G4ThreeVector(),
95 "ROWorldPhys",
96 ROWorldLog,
97 0,false,0);
98
99 // ROGeometry corresponding to the phantom
100 G4Box *ROAstronaut = new G4Box("ROAstronaut",
101 astronautDimensionX/2.,
102 astronautDimensionY/2.,
103 astronautDimensionZ/2.);
104
105 G4LogicalVolume *ROAstronautLog = new G4LogicalVolume(ROAstronaut,
106 dummyMat,
107 "ROAstronautLog",
108 0,0,0);
109
110 G4VPhysicalVolume *ROAstronautPhys = new G4PVPlacement(0,
111 G4ThreeVector(0.,0.,translation),
112 "AstronautPhys",
113 ROAstronautLog,
114 ROWorldPhys,
115 false,0);
116
117 // Z division ...
118 G4double voxelSizeZ = astronautDimensionZ/numberOfVoxelsAlongZ;
119
120 G4Box *ROAstronautZDivision = new G4Box("ROAstronautZDivision",
121 astronautDimensionX/2,
122 astronautDimensionY/2.,
123 voxelSizeZ/2.);
124
125 G4LogicalVolume *ROAstronautZDivisionLog = new G4LogicalVolume(ROAstronautZDivision,
126 dummyMat,
127 "ROAstronautZDivisionLog",
128 0,0,0);
129
130 ROAstronautZDivisionPhys = new G4PVReplica("ROAstronautXDivisionPhys",
131 ROAstronautZDivisionLog,
132 ROAstronautPhys,
133 kZAxis,
134 numberOfVoxelsAlongZ,
135 voxelSizeZ);
136 RemSimDummySD *dummySD = new RemSimDummySD;
137 ROAstronautZDivisionLog -> SetSensitiveDetector(dummySD);
138
139 return ROWorldPhys;
140}
141
142
143
Note: See TracBrowser for help on using the repository browser.