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
DicomRegularDetectorConstruction.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file DicomRegularDetectorConstruction.cc
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
//
29
//
30
// History:
31
// Pedro Arce
32
//
33
//*******************************************************
34
35
#include "
globals.hh
"
36
37
#include "
G4Box.hh
"
38
#include "
G4LogicalVolume.hh
"
39
#include "
G4VPhysicalVolume.hh
"
40
#include "
G4PVPlacement.hh
"
41
#include "
G4PVParameterised.hh
"
42
#include "
G4Material.hh
"
43
#include "
G4Element.hh
"
44
#include "
G4VisAttributes.hh
"
45
#include "
G4Colour.hh
"
46
#include "
G4ios.hh
"
47
48
#include "
DicomRegularDetectorConstruction.hh
"
49
#include "
DicomPhantomParameterisationColour.hh
"
50
51
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
52
DicomRegularDetectorConstruction::DicomRegularDetectorConstruction
()
53
:
DicomDetectorConstruction
()
54
{
55
}
56
57
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
58
DicomRegularDetectorConstruction::~DicomRegularDetectorConstruction
()
59
{
60
}
61
62
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
63
void
DicomRegularDetectorConstruction::ConstructPhantom
()
64
{
65
#ifdef G4VERBOSE
66
G4cout
<<
"DicomRegularDetectorConstruction::ConstructPhantom "
<<
G4endl
;
67
#endif
68
69
//----- Create parameterisation
70
DicomPhantomParameterisationColour
* param =
71
new
DicomPhantomParameterisationColour
();
72
73
//----- Set voxel dimensions
74
param->
SetVoxelDimensions
(
fVoxelHalfDimX
,
fVoxelHalfDimY
,
fVoxelHalfDimZ
);
75
76
//----- Set number of voxels
77
param->
SetNoVoxel
(
fNVoxelX
,
fNVoxelY
,
fNVoxelZ
);
78
79
//----- Set list of materials
80
param->
SetMaterials
(
fMaterials
);
81
82
//----- Set list of material indices: for each voxel it is a number that
83
// correspond to the index of its material in the vector of materials
84
// defined above
85
param->
SetMaterialIndices
(
fMateIDs
);
86
87
//----- Define voxel logical volume
88
G4Box
* voxel_solid =
89
new
G4Box
(
"Voxel"
,
fVoxelHalfDimX
,
fVoxelHalfDimY
,
fVoxelHalfDimZ
);
90
G4LogicalVolume
* voxel_logic =
91
new
G4LogicalVolume
(voxel_solid,
fMaterials
[0],
"VoxelLogical"
,
92
0,0,0);
93
// material is not relevant, it will be changed by the
94
// ComputeMaterial method of the parameterisation
95
96
voxel_logic->
SetVisAttributes
(
97
new
G4VisAttributes
(
G4VisAttributes::GetInvisible
()));
98
99
//--- Assign the fContainer volume of the parameterisation
100
param->
BuildContainerSolid
(
fContainer_phys
);
101
102
//--- Assure yourself that the voxels are completely filling the
103
// fContainer volume
104
param->
CheckVoxelsFillContainer
(
fContainer_solid
->
GetXHalfLength
(),
105
fContainer_solid
->
GetYHalfLength
(),
106
fContainer_solid
->
GetZHalfLength
() );
107
108
//----- The G4PVParameterised object that uses the created parameterisation
109
// should be placed in the fContainer logical volume
110
G4PVParameterised
* phantom_phys =
111
new
G4PVParameterised
(
"phantom"
,voxel_logic,
fContainer_logic
,
112
kXAxis
,
fNVoxelX
*
fNVoxelY
*
fNVoxelZ
, param);
113
// if axis is set as kUndefined instead of kXAxis, GEANT4 will
114
// do an smart voxel optimisation
115
// (not needed if G4RegularNavigation is used)
116
117
//----- Set this physical volume as having a regular structure of type 1,
118
// so that G4RegularNavigation is used
119
phantom_phys->
SetRegularStructureId
(1);
// if not set, G4VoxelNavigation
120
//will be used instead
121
122
SetScorer
(voxel_logic);
123
}
geant4
tree
geant4-10.6-release
examples
extended
medical
DICOM
src
DicomRegularDetectorConstruction.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:07
using
1.8.2 with
ECCE GitHub integration