ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
doiPETDetectorConstruction.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file doiPETDetectorConstruction.hh
1
// ********************************************************************
2
// * License and Disclaimer *
3
// * *
4
// * The Geant4 software is copyright of the Copyright Holders of *
5
// * the Geant4 Collaboration. It is provided under the terms and *
6
// * conditions of the Geant4 Software License, included in the file *
7
// * LICENSE and available at http://cern.ch/geant4/license . These *
8
// * include a list of copyright holders. *
9
// * *
10
// * Neither the authors of this software system, nor their employing *
11
// * institutes,nor the agencies providing financial support for this *
12
// * work make any representation or warranty, express or implied, *
13
// * regarding this software system or assume any liability for its *
14
// * use. Please see the license in the file LICENSE and URL above *
15
// * for the full disclaimer and the limitation of liability. *
16
// * *
17
// * This code implementation is the result of the scientific and *
18
// * technical work of the GEANT4 collaboration. *
19
// * By using, copying, modifying or distributing the software (or *
20
// * any work based on the software) you agree to acknowledge its *
21
// * use in resulting scientific publications, and indicate your *
22
// * acceptance of all terms of the Geant4 Software license. *
23
// ********************************************************************
24
25
//GEANT4 - Depth-of-Interaction enabled Positron emission tomography (PET) advanced example
26
27
//Contributors
28
29
// Abdella M. Ahmed (1, 2), Andrew Chacon (1, 2), Harley Rutherford (1, 2),
30
// Hideaki Tashima (3), Go Akamatsu (3), Akram Mohammadi (3), Eiji Yoshida (3), Taiga Yamaya (3)
31
// Susanna Guatelli (2), and Mitra Safavi-Naeini (1, 2)
32
33
// (1) Australian Nuclear Science and Technology Organisation, Australia
34
// (2) University of Wollongong, Australia
35
// (3) National Institute of Radiological Sciences, Japan
36
37
38
39
#ifndef doiPETDetectorConstruction_h
40
#define doiPETDetectorConstruction_h 1
41
42
#include "
G4VUserDetectorConstruction.hh
"
43
#include "
globals.hh
"
44
#include "
G4UnitsTable.hh
"
45
#include "
G4Element.hh
"
46
#include "
doiPETGlobalParameters.hh
"
47
48
class
G4Material
;
49
class
G4VPhysicalVolume
;
50
class
G4LogicalVolume
;
51
//
52
class
doiPETAnalysis
;
53
class
doiPETDetectorConstructionMessenger
;
54
59
60
class
doiPETDetectorConstruction
:
public
G4VUserDetectorConstruction
61
{
62
public
:
63
doiPETDetectorConstruction
();
64
virtual
~doiPETDetectorConstruction
();
65
66
public
:
67
virtual
G4VPhysicalVolume
*
Construct
();
68
69
void
ConstructPhantom
(
G4LogicalVolume
*);
70
void
ChangePhantom
(
G4String
choice);
71
void
SetPhantomPosition
(
G4ThreeVector
);
72
void
SetPhantomRadius
(
G4double
);
73
void
SetPhantomLength
(
G4double
);
74
75
76
private
:
77
void
DefineMaterials
();
78
doiPETDetectorConstructionMessenger
*
fDetectorMessenger
;
79
doiPETAnalysis
*
pAnalysis
;
80
81
G4LogicalVolume
*
phantom_logicalV
;
82
G4VPhysicalVolume
*
phantom_physicalV
;
83
// G4LogicalVolume* gelatin_logicalV;
84
// G4VPhysicalVolume* gelatin_physicalV;
85
86
//wolrd
87
G4LogicalVolume
*
world_logicalV
;
88
G4VPhysicalVolume
*
world_physicalV
;
89
90
//detector block
91
G4LogicalVolume
*
blockDetector_logicalV
;
92
G4VPhysicalVolume
*
blockDetector_physicalV
;
93
94
//air volume to fill the detector block
95
G4LogicalVolume
*
airBox_logicalV
;
96
G4VPhysicalVolume
*
airBox_physicalV
;
97
98
//crystals
99
G4LogicalVolume
*
crystal_logicalV
;
100
G4VPhysicalVolume
*
crystal_physicalV
;
101
102
103
//water
104
G4LogicalVolume
*
water_logicalV
;
105
G4VPhysicalVolume
*
water_physicalV
;
106
107
//lung
108
G4LogicalVolume
*
lung_logicalV
;
109
G4VPhysicalVolume
*
lung_physicalV
;
110
111
//test line phantom
112
G4LogicalVolume
*
test_logicalV
;
113
G4VPhysicalVolume
*
test_physicalV
;
114
115
G4LogicalVolume
*
lung_logicalV_PMMA
;
116
G4VPhysicalVolume
*
lung_physicalVPMMA
;
117
118
//cold regions
119
// G4LogicalVolume* coldRegion_logicalV;
120
// G4VPhysicalVolume* coldRegion_physicalV;
121
122
//
123
//Surrounding PMMA for hot sphere
124
G4LogicalVolume
*
hotSpherePMMA_logicalV
;
125
G4VPhysicalVolume
*
hotSpherePMMA_physicalV
;
126
127
//hot water phantom (activity is distributed)
128
G4LogicalVolume
*
hotSphereWater_logicalV
;
129
G4VPhysicalVolume
*
hotSphereWater_physicalV
;
130
131
//surrounding PMMA cold sphere
132
G4LogicalVolume
*
coldSpherePMMA_logicalV
;
133
G4VPhysicalVolume
*
coldSpherePMMA_physicalV
;
134
135
//cold Water phantom in the cold PMMA sphere
136
G4LogicalVolume
*
coldSphereWater_logicalV
;
137
G4VPhysicalVolume
*
coldSphereWater_physicalV
;
138
139
//fillable polyethylene phantom for sensitivity
140
G4LogicalVolume
*
phantomPE_logicalV
;
141
G4VPhysicalVolume
*
phantomPE_physicalV
;
142
143
//Image quality phantom for small animal NEMA NU-4
144
G4LogicalVolume
*
waterPhantom_logicalV
;
145
G4VPhysicalVolume
*
WaterPhantom_physicalV
;
146
147
G4LogicalVolume
*
rod_phantom_logicalV
;
148
G4VPhysicalVolume
*
rod_phantom_physicalV
;
149
150
G4LogicalVolume
*
chamberPMMA_logicalV
;
151
G4VPhysicalVolume
*
chamberPMMA_physicalV
;
152
153
//
154
G4LogicalVolume
*
chamberWater_logicalV
;
155
G4VPhysicalVolume
*
chamberWater_physicalV
;
156
157
//
158
G4LogicalVolume
*
chamberAir_logicalV
;
159
G4VPhysicalVolume
*
chamberAir_physicalV
;
160
161
162
//Dimension of the sphere
163
G4double
spherePositionX
,
spherePositionY
;
// spherePositionZ;
164
G4double
sphereDiameter
;
165
G4double
distanceFromCenter
;
166
G4int
numberOfSpheres
;
167
G4double
sphereWallThickness
;
168
G4double
zOffsetSpherePhantom
;
169
170
G4String
PhantomType
;
171
172
//materials
173
G4Material
*
air
;
174
G4Material
*
pmma
;
175
G4Material
*
water
;
176
G4Material
*
polyethylene
;
177
G4Material
*
polyethylene_NEMA
;
178
// G4Material* inflatedLung;
179
G4Material
*
polystyrene
;
180
G4Material
*
Aluminum
;
181
182
//elements for GSO
183
G4Element
*
O
;
184
G4Element
*
Si
;
185
G4Element
*
Gd
;
186
G4Material
*
GSO
;
187
188
G4Material
*
crystalMaterial
;
189
//G4Material* phantomMaterial;
190
191
G4bool
fCheckOverlaps
;
192
G4bool
isotopes
;
193
194
195
//size of world
196
G4double
worldSizeX
;
197
G4double
worldSizeY
;
198
G4double
worldSizeZ
;
199
200
201
//The following is moved to doiPETGlobalParameters.hh
202
//G4int numberOfCrystal_DOI;
203
//G4int numberOfCrystal_tangential;
204
//G4int numberOfCrystal_axial;
205
207
//G4double sizeOfCrystal_DOI;
208
//G4double sizeOfCrystal_tangential;
209
//G4double sizeOfCrystal_axial;
210
212
//G4double crystalGap_DOI;
213
//G4double crystalGap_tangential;
214
//G4double crystalGap_axial;
215
216
G4double
sizeOfAirBox_DOI
;
217
G4double
sizeOfAirBox_axial
;
218
G4double
sizeOfAirBox_tangential
;
219
220
221
G4double
sizeOfBlockDetector_DOI
;
222
G4double
sizeOfBlockDetector_axial
;
223
G4double
sizeOfBlockDetector_tangential
;
224
225
//G4double AluminumCoverThickness;
226
227
228
//G4int numberOfPETDetector;
229
//G4int numberOfRings;
230
231
232
//G4double scannerRadius;
233
G4double
thetaDetector
;
//The azimuthal angle for arranging the detector in the PET ring
234
//G4double ringGap;
235
G4int
blockIndex
;
236
// G4int AlCase_Index;
237
G4int
crystalIndex
;
238
239
//detector position
240
G4double
detectorPositionX
;
241
G4double
detectorPositionY
;
242
G4double
detectorPositionZ
;
243
244
//crystal position
245
G4double
crystalPositionX
;
246
G4double
crystalPositionY
;
247
G4double
crystalPositionZ
;
248
249
250
251
G4ThreeVector
phantomPosition
;
252
253
//
254
G4double
phantomRadius
;
255
G4double
phantomLength
;
256
257
//Phantom dimension for rectangular box (placed for therapy study)
258
// G4double phantomSizeX, phantomSizeY, phantomSizeZ;
259
260
//the following is to make the body phantom
261
G4double
yOffsetBodyPhantom
;
262
G4double
zOffsetBodyPhantom
;
263
G4double
lengthOfBodyPhantom
;
//Interior length ( = 180m mm) + wallthickness (= 3mm)
264
G4double
radiusOfBodyPhantom
;
265
G4double
wallThicknessOfBodyPhantom
;
266
G4double
radiusOfLungPhantom
;
267
268
//Test phantom defnition. The phantom has the same as that that of NECR phantom except
269
G4double
hieghtOfTestPhantom
;
270
G4double
diameterOfTestPhantom
;
271
272
//To the cylindrical phantom to make the body phantom
273
G4double
radiusOfSmallcyl
;
274
G4double
boxWidth
;
275
G4double
boxHeight
;
276
277
278
//Image quality phantom for small animals
279
G4double
waterPhantomRadius
;
280
G4double
waterPhantomLength
;
281
282
G4double
rodPhantomLength
;
283
G4double
rodDiameter
;
284
G4int
numberOfRods
;
285
286
//Declare position for the rod phantoms
287
G4double
rodPositionX
,
rodPositionY
,
rodPositionZ
;
288
289
//Declare position for cold region chanmbers
290
G4double
chamberPositionX
,
chamberPositionY
,
chamberPositionZ
;
291
G4double
chamberPhantomLength
;
292
G4double
chamberDiameter
;
293
G4double
wallThicknessOfChamber
;
294
295
296
};
297
299
300
#endif
geant4
tree
geant4-10.6-release
examples
advanced
doiPET
include
doiPETDetectorConstruction.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:57
using
1.8.2 with
ECCE GitHub integration