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
G4MIRDSkull.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4MIRDSkull.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
//
27
// Previous authors: G. Guerrieri, S. Guatelli and M. G. Pia, INFN Genova, Italy
28
// Authors (since 2007): S. Guatelli, University of Wollongong, Australia
29
//
30
//
31
//
32
#include "
G4MIRDSkull.hh
"
33
34
#include "
globals.hh
"
35
#include "
G4SystemOfUnits.hh
"
36
#include "
G4SDManager.hh
"
37
#include "
G4VisAttributes.hh
"
38
#include "
G4HumanPhantomMaterial.hh
"
39
#include "
G4EllipticalTube.hh
"
40
#include "
G4RotationMatrix.hh
"
41
#include "
G4ThreeVector.hh
"
42
#include "
G4VPhysicalVolume.hh
"
43
#include "
G4PVPlacement.hh
"
44
#include "
G4Ellipsoid.hh
"
45
#include "
G4SubtractionSolid.hh
"
46
#include "
G4Box.hh
"
47
#include "
G4UnionSolid.hh
"
48
#include "
G4VSolid.hh
"
49
#include "
G4HumanPhantomColour.hh
"
50
51
G4MIRDSkull::G4MIRDSkull
()
52
{
53
}
54
55
G4MIRDSkull::~G4MIRDSkull
()
56
{
57
}
58
59
60
G4VPhysicalVolume
*
G4MIRDSkull::Construct
(
const
G4String
& volumeName,
G4VPhysicalVolume
* mother,
61
const
G4String
& colourName,
62
G4bool
wireFrame,
G4bool
)
63
{
64
65
G4HumanPhantomMaterial
*
material
=
new
G4HumanPhantomMaterial
();
66
67
G4cout
<<
"Construct "
<<volumeName<<
" with mother volume "
<<mother->
GetName
()<<
G4endl
;
68
69
70
G4Material
* skeleton = material -> GetMaterial(
"skeleton"
);
71
72
delete
material
;
73
74
// Outer cranium
75
G4double
ax
= 6.8 *
cm
;
//a out skull
76
G4double
by = 9.8 *
cm
;
// bout
77
G4double
cz = 8.3 *
cm
;
//cout
78
79
G4Ellipsoid
* craniumOut =
new
G4Ellipsoid
(
"CraniumOut"
, ax, by, cz);
80
81
ax = 6. *
cm
;
//a in
82
by = 9. *
cm
;
//b in
83
cz= 6.5 *
cm
;
// cin
84
85
G4Ellipsoid
* craniumIn =
new
G4Ellipsoid
(
"CraniumIn"
, ax, by, cz);
86
87
88
G4SubtractionSolid
* cranium =
new
G4SubtractionSolid
(
"Cranium"
,
89
craniumOut,
90
craniumIn,0,
91
G4ThreeVector
(0.0, 0.0,1. *
cm
));
92
93
G4LogicalVolume
* logicSkull =
new
G4LogicalVolume
(cranium, skeleton,
94
"logical"
+ volumeName,
95
0, 0, 0);
96
97
// Define rotation and position here!
98
G4VPhysicalVolume
* physSkull =
new
G4PVPlacement
(0,
99
G4ThreeVector
(0., 0.,7.75 *
cm
),
100
"physicalSkull"
,
101
logicSkull,
102
mother,
103
false
,
104
0,
true
);
105
106
// Visualization Attributes
107
//G4VisAttributes* SkullVisAtt = new G4VisAttributes(G4Colour(0.46,0.53,0.6));
108
G4HumanPhantomColour
* colourPointer =
new
G4HumanPhantomColour
();
109
G4Colour
colour = colourPointer -> GetColour(colourName);
110
G4VisAttributes
* SkullVisAtt =
new
G4VisAttributes
(colour);
111
SkullVisAtt->
SetForceSolid
(wireFrame);
112
SkullVisAtt->
SetLineWidth
(4.*
mm
);
113
logicSkull->
SetVisAttributes
(SkullVisAtt);
114
115
G4cout
<<
"Skull created !!!!!!"
<<
G4endl
;
116
117
118
// Testing Skull Volume
119
G4double
SkullVol = logicSkull->
GetSolid
()->
GetCubicVolume
();
120
G4cout
<<
"Volume of Skull = "
<< SkullVol/
cm3
<<
" cm^3"
<<
G4endl
;
121
122
// Testing Skull Material
123
G4String
SkullMat = logicSkull->
GetMaterial
()->
GetName
();
124
G4cout
<<
"Material of Skull = "
<< SkullMat <<
G4endl
;
125
126
// Testing Density
127
G4double
SkullDensity = logicSkull->
GetMaterial
()->
GetDensity
();
128
G4cout
<<
"Density of Material = "
<< SkullDensity*
cm3
/
g
<<
" g/cm^3"
<<
G4endl
;
129
130
// Testing Mass
131
G4double
SkullMass = (SkullVol)*SkullDensity;
132
G4cout
<<
"Mass of Skull = "
<< SkullMass/
gram
<<
" g"
<<
G4endl
;
133
134
135
return
physSkull;
136
}
geant4
tree
geant4-10.6-release
examples
advanced
human_phantom
src
G4MIRDSkull.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:59
using
1.8.2 with
ECCE GitHub integration