1 Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model Dr. S. Guatelli Geant4...
-
Upload
damon-carroll -
Category
Documents
-
view
222 -
download
1
Transcript of 1 Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model Dr. S. Guatelli Geant4...
1
Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model
Dr. S. GuatelliGeant4 Collaboration member,
Lecturer, Centre of Medical Radiation Physics, Engineering Physics Department, University of Wollongong, NSW, Australia
This application was developed by G. Guerrieri, S. Guatelli and M.G. Pia (INFN, Genova)
Geant4 School, 12-14 October 2009, Catania, Italy2
Outline
Context Anthropomorpic phantoms for medical physics Analytical vs voxelised phantoms Mix and Match model
Geant4 human phantom development User requirements Design Implementation details
Geometry component Physics component User Interface Visualisation
Summary and conclusions
3
Context
Realistic software models of the human body are important for accurate
dosimetryi.e. radiation protection, radiotherapy,
etc.
Geant4 School, 12-14 October 2009, Catania, Italy4
Anthropomorpic phantoms
Analytical models The organs are described by means of
mathematical representations
Voxelised models The organs are approximated with voxels Usually they derive from CT or MRI scans
Geant4 School, 12-14 October 2009, Catania, Italy5
Mathematical phantoms Sizes and shapes of the human organs are
defined by means of analytical formulas
Several models available as for example W. S. Snyder et al, “MIRD Pamphlet No. 5 Revised, Estimates of
absorbed fractions for monoenergetic photon sources uniformly distributed in various organs of a heterogeneous phantom”, J. Nucl. Med. Suppl., no.3, pp.5-52, 1969
M. Cristy and K. F. Eckerman, “Specific absorbed fractions of energy at various ages from internal photon sources”, ORNL/TM-8381/V1, 1987
Geant4 School, 12-14 October 2009, Catania, Italy6
Voxelised phantoms Based on digital images recorded from scanning real
people, with CT or MRI
M. Caon, Voxel-based computational models of real human anatomy: a reviewRad. Env. Biophys. 42 (2004) 229–235
7
Mathematical phantomsvs
voxelised phantoms
Which is the best approach?
Both approaches present advantages and drawbacks
It depends on the specific use case
Geant4 School, 12-14 October 2009, Catania, Italy8
Vision of the Geant4HumanPhantom
Development of a mix and match model Composite mathematical and voxelised anthropomorphic
phantom
Advantage: optimization of use of CPU and memory resources and accuracy of the simulation
This is possible thanks to the: OO technology Advanced Geant4 capability in geometry
Geant4 School, 12-14 October 2009, Catania, Italy9
G4 capability in geometry
G4 MaterialsG4 Materials Human tissues can be easily
implemented in Geant4 as compounds
G4 Solids used in G4 Solids used in G4HumanPhantom:G4HumanPhantom:
CSG (Constructed Solid Geometry) solids
G4Box, G4Tubs, G4Cons, G4Trd, G4Ellipse, G4Sphere
Boolean solids G4UnionSolid, G4SubtractionSolid, …
25
for anthropomorphic phantoms
Geant4 School, 12-14 October 2009, Catania, Italy10
Software development of the
Geant4AnthropomorficPhantom
User requirements
Architecture of the software
Implementation details
Use of the
Geant4AnthropomorphicPhantom
11
Main user requirements of the G4HumanPhantom
What should the software application do
Geometry component
Primary particle
Physics
User interface and visualisation
Geant4 School, 12-14 October 2009, Catania, Italy12
Geometry UR
The anthropomorphic model includes the body components:
Body regions: trunck, neck, head, legs, male genitalia
Skeletal system: leg bone, arm bone, pelvis, spine, cranium, facial skeleton, skull, rib cage, clavicles, scapulae
Internal organs (stomach, intestine, esophagus, heart, brain, adrenals, gall bladder, kidney, liver, lung, ovary pancreas, skin, spleen, testes, thymus, thyroid, bladder, uterus
Soft tissue, bone, lung material should be defined
The user shall be able to define mathematical organs
The user shall be able to define voxelised organs
Geant4 School, 12-14 October 2009, Catania, Italy13
Primary particle and physics UR
The user shall be able to define the radiation field Particle type, energy, primary vertex and momentum
The user shall be able to define the physics processes involved in the experimental set-up
Geant4 School, 12-14 October 2009, Catania, Italy14
Other UR Event:
The user shall be able to retrieve the position and material of the body traversed by tracks
The user shall be able to retrieve the energy deposition in body regions
User Interface: The user shall be able to select a phantom by sex, age and the
model The user shall be able to define a phantom using parts derived from
different models The user shall be able to create specific body regions corresponding
to subset of the phantom
Visualisation: The user shall be able to visualise the geometrical setup and the
particle tracks
Geant4 School, 12-14 October 2009, Catania, Italy15
Software development of the
Geant4AnthropomorficPhantom
User requirements
Architecture of the software
Implementation details
Use of the
Geant4AnthropomorphicPhantom
Geant4 School, 12-14 October 2009, Catania, Italy16
Domain decomposition: Abstraction of the process of
building a phantom Builder: Separate the
construction of a complex object from its representation so that the same construction process can create different representations
Abstraction of the description of a phantom model
The abstract Factory pattern provides an interface for creating families of organs without specifying their concrete classes
Geant4 School, 12-14 October 2009, Catania, Italy17
Software development of the
Geant4AnthropomorficPhantom
User requirements
Architecture of the software
Implementation details
Use of the
Geant4AnthropomorphicPhantom
Geant4 School, 12-14 October 2009, Catania, Italy18
G4 HumanPhantom directory
In geant4/example/advanced/human_phantom
Geant4 School, 12-14 October 2009, Catania, Italy19
src directory
Geant4 School, 12-14 October 2009, Catania, Italy20
include directory
21
Implementation
Geometry
Geant4 School, 12-14 October 2009, Catania, Italy22
Definition of materials: G4HumanPhantomMaterial.cc
G4HumanPhantomMaterial::G4HumanPhantomMaterial(): soft(0), skeleton(0),lung(0), adipose(0), glandular(0), adipose_glandular(0) {;}
G4HumanPhantomMaterial::~G4HumanPhantomMaterial() {;}
void G4HumanPhantomMaterial::DefineMaterials(){ // Define required materials}
G4Material* G4HumanPhantomMaterial::GetMaterial(G4String material){ // Returns a material G4Material* pttoMaterial = G4Material::GetMaterial(material); return pttoMaterial; }
Geant4 School, 12-14 October 2009, Catania, Italy23
Define the elements
G4Element* elH = new G4Element ("Hydrogen","H“, Z = 1.,A=1.01*g/mole);
G4Element* elC = new G4Element("Carbon","C",Z = 6.,A = 12.011*g/mole);
G4Element* elN = new G4Element("Nitrogen","N",Z = 7.,A = 14.01*g/mole);
G4Element* elO = new G4Element("Oxygen","O",Z = 8.,A = 16.00*g/mole);
G4Element* elNa = new G4Element("Sodium","Na",Z = 11.,A = 22.99*g/mole);
G4Element* elMg = new G4Element("Magnesium","Mg",Z = 12.,A
=24.305*g/mole);
G4Element* elP = new G4Element("Phosphorus","P",Z = 15.,A = 30.974*g/mole);
………………
Geant4 School, 12-14 October 2009, Catania, Italy24
Example: definition of bone
density = 1.4862*g/cm3;
skeleton = new G4Material("skeleton",density,15); skeleton -> AddElement(elH,0.0704); skeleton -> AddElement(elC,0.2279); skeleton -> AddElement(elN,0.0387); skeleton -> AddElement(elO,0.4856); skeleton -> AddElement(elNa,0.0032); skeleton -> AddElement(elMg,0.0011); skeleton -> AddElement(elP,0.0694); skeleton -> AddElement(elS,0.0017); skeleton -> AddElement(elCl,0.0014); skeleton -> AddElement(elK,0.0015); skeleton -> AddElement(elCa,0.0991); skeleton -> AddElement(elFe,0.00008); skeleton -> AddElement(elZn,0.000048); skeleton -> AddElement(elSr,0.000032); skeleton -> AddElement(elPb,0.000011);
25
Analytical organs
Geant4 School, 12-14 October 2009, Catania, Italy26
Modelling analytical organs
Two alternative methods
Hard-coded implementation of the organs and body parts
Geometry Description Markup Language (GDML) http://gdml.web.cern.ch/GDML/
Geant4 School, 12-14 October 2009, Catania, Italy27
Hard-coded organExample: right breast G4MIRDRightBreast.cc (1)
G4VPhysicalVolume* G4MIRDRightBreast::Construct(const G4String& volumeName,G4VPhysicalVolume* mother, const G4String& colourName, G4bool wireFrame, G4bool sensitivity)
{G4double ax= 4.95* cm; G4double by= 4.35* cm; G4double cz= 4.15*cm;G4Ellipsoid* oneRightBreast = new G4Ellipsoid("OneRightBreast”, ax, by, cz);
G4double dx= 20.* cm; G4double dy= 10.* cm; G4double dz= 35.* cm;G4EllipticalTube* Trunk = new G4EllipticalTube("Trunk",dx, dy, dz );
G4RotationMatrix* rm_relative = new G4RotationMatrix(); rm_relative -> rotateX(90. * degree);
G4SubtractionSolid* breast = new G4SubtractionSolid("RightBreast“, oneRightBreast, Trunk,rm_relative,
G4ThreeVector(10.*cm, 0.0*cm, -8.66*cm));
Geant4 School, 12-14 October 2009, Catania, Italy28
Hard-coded organExample: right breast G4MIRDRightBreast.cc (2)
G4HumanPhantomMaterial* material = new G4HumanPhantomMaterial(); G4Material* soft = material -> GetMaterial("soft_tissue");
G4LogicalVolume* logicRightBreast = new G4LogicalVolume(breast, soft,"logical" + volumeName, 0, 0,0);
G4VPhysicalVolume* physRightBreast = new G4PVPlacement(0, G4ThreeVector(-10.*cm, 52.* cm,- 8.66 *cm),
"physicalRightBreast", logicRightBreast, mother,false, 0, true);
// Sensitive Body Part if (sensitivity==true) { G4SDManager* SDman = G4SDManager::GetSDMpointer(); logicRightBreast->SetSensitiveDetector( SDman->FindSensitiveDetector("BodyPartSD") ); } // Visualization Attributes // Define the visualisation attributes of the organ
return physRightBreast;}
Geant4 School, 12-14 October 2009, Catania, Italy29
GDML organ
What is GDML? Geometry Description Markup Language
GDML can be used as the primary geometry implementation language
GDML is an application-indepedent geometry description format based on XML
Geant4 School, 12-14 October 2009, Catania, Italy30
GDML webpage
Geant4 School, 12-14 October 2009, Catania, Italy31
G4HumanPhantom
Implementation of organs with GDML
gdmlData/Female gdmlData/Male
Geant4 School, 12-14 October 2009, Catania, Italy32
GDML Breast (1) gdmlData/Female/MIRDBreast.gdml
<?xml version="1.0" encoding="UTF-8" ?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd" >
<define> <constant name="PI" value="1.*pi" /> <constant name="TWOPI" value="2.*pi"/> <constant name="HALFPI" value="0.5*pi"/> <position name="BreastUnionRelativePos" unit="cm" x="17.26" y="0" z="0" /> <position name="BreastRelativePos" unit="cm" x="8.63" y="0.0" z="-8.4854" /> <rotation name="BreastRotation" unit="degree" x="90" y="0" z="0" /> <position name="BreastPos" unit="cm" x="-8.63" y="46.87" z="8.4854" /> <rotation name="BreastRot" unit="degree" x="0" y="0" z="0" /> <position name="TrunkPos" unit="cm" x="0" y="31.55" z="0" /> <rotation name="TrunkRot" unit="degree" x="90" y="0" z="0" /> </define>
Geant4 School, 12-14 October 2009, Catania, Italy33
Definition of elements and materials<materials> <material name="sH" formula=" " Z="1."> <D value="0.00009" /> <atom value="1.008"/>…. etc </material><material formula=" " name="SoftTissue"> <D value="1.04" /> <fraction n="0.10454" ref="sH" /> <fraction n="0.22663" ref="sC" /> <fraction n="0.02490" ref="sN" /> <fraction n="0.63525" ref="sO" />… etc</material> </materials>
GDML Breast (2) gdmlData/Female/MIRDBreast.gdml
Geant4 School, 12-14 October 2009, Catania, Italy34
<solids> <ellipsoid aunit="cm" lunit="cm" name="OneBreast" ax="4.95" by="4.35"
cz="4.15" zcut1="-4.15" zcut2="4.15" /> <eltube aunit="cm" lunit="cm" name="Trunk" dx="17.25" dy="9.80"
dz="31.55"/> <union name="BreastUnion"> <first ref="OneBreast" /> <second ref="OneBreast" /> <positionref ref="BreastUnionRelativePos" /> </union> <subtraction name="Breast"> <first ref="BreastUnion" /> <second ref="Trunk" /> <positionref ref="BreastRelativePos" /> <rotationref ref="BreastRotation" /> </subtraction> </solids>
GDML Breast (3) gdmlData/Female/MIRDBreast.gdml
Geant4 School, 12-14 October 2009, Catania, Italy35
<structure> <volume name="BreastVolume" > <materialref ref="SoftTissue" /> <solidref ref="Breast" /> </volume> </structure> <setup name="Default" version="1.0" > <world ref="BreastVolume" /> </setup></gdml>
GDML Breast (4) gdmlData/Female/MIRDBreast.gdml
Geant4 School, 12-14 October 2009, Catania, Italy36
How to build GDML organG4VPhysicalVolume* G4ORNLFemaleBodyFactory::CreateOrgan(const G4String&
gdmlFile, G4VPhysicalVolume* motherVolume,const G4String& colourName, G4bool visAttribute, G4bool sensitivity)
{ G4GDMLParser parser; G4String filename = "gdmlData/Female/ORNL"+ gdmlFile + ".gdml"; parser.Read(filename); G4String logicalVolumeName = gdmlFile + "Volume";
G4LogicalVolume* logicOrgan = parser.GetVolume(logicalVolumeName);
G4ThreeVector position = parser.GetPosition("OrganPos"); G4ThreeVector rot = parser.GetRotation("OrganRot"); G4RotationMatrix* rm = new G4RotationMatrix(); rm -> rotateX(rot.x()); rm->rotateY(rot.y()); rm->rotateZ(rot.z());
G4VPhysicalVolume* physOrgan = new G4PVPlacement(rm,position, "physicalOrgan",logicOrgan, motherVolume, false, 0,
true);…….}
37
Voxelised organ
Geant4 School, 12-14 October 2009, Catania, Italy38
Voxelised organ
Define the RO geometry The ReadOut geometry is a
virtual, parallel geometry to describe the read-out configuration of the detector
Retrieve the energy deposition in each voxel
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
Geant4 School, 12-14 October 2009, Catania, Italy39
Radiation field and physics list
The user has to define the radiation field in theG4HumanPhantomPrimaryParticle class
The user has to define the physics processes in G4HumanPhantomPhysicsList class
Geant4 School, 12-14 October 2009, Catania, Italy
How to visualise organs1) Initialise visualisation mamanger in the main:
int main(int argc,char** argv)
{
......
G4VisManager* visManager = new G4VisExecutive;
visManager -> Initialize();
.....}
2) Define the visualisation attributes of the logical volumes of the body parts
G4VisAttributes* RightBreastVisAtt = new G4VisAttributes(G4Colour(1.0,0.41,0.71));
RightBreastVisAtt -> SetForceSolid(wireFrame);
LogicRightBreast -> SetVisAttributes(RightBreastVisAtt);
40
41
User Interface
Definition of
A messenger to “build” the human phantom (entire model or just a
body part)
Macro files to be executed during the simulation
Geant4 School, 12-14 October 2009, Catania, Italy42
G4HumanPhantomMessenger
……….G4HumanPhantomMessenger::G4HumanPhantomMessenger(G4HumanPhantomConstruction* myUsrPhtm):myUserPhantom(myUsrPhtm),bps(false){ phantomDir = new G4UIdirectory("/phantom/"); phantomDir->SetGuidance("Set Your Phantom."); bpDir = new G4UIdirectory("/bodypart/"); bpDir->SetGuidance("Add Body Part to Phantom");
modelCmd = new G4UIcmdWithAString("/phantom/setPhantomModel",this); modelCmd->SetGuidance("Set sex of Phantom: MIRD, ORNLFemale, ORNLMale, MIX, MIRDHead, ORNLHead."); modelCmd->SetParameterName("phantomModel",true); modelCmd->SetDefaultValue("MIRD"); modelCmd->SetCandidates("MIRD ORNLFemale ORNLMale MIX MIRDHead ORNLHead"); modelCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
sexCmd = new G4UIcmdWithAString("/phantom/setPhantomSex",this); sexCmd->SetGuidance("Set sex of Phantom: Male or Female."); sexCmd->SetParameterName("phantomSex",true); sexCmd->SetDefaultValue("Female"); sexCmd->SetCandidates("Male Female"); sexCmd->AvailableForStates(G4State_PreInit,G4State_Idle); bodypartCmd = new G4UIcmdWithAString("/bodypart/addBodyPart",this); bodypartCmd->SetGuidance("Add a Body Part to Phantom"); bodypartCmd->SetParameterName("bpName",true); bodypartCmd->AvailableForStates(G4State_PreInit,G4State_Idle);……….. }…….
Geant4 School, 12-14 October 2009, Catania, Italy43
Macro files to initialize the phantom interactively
# Initialize New Phantom# Choose model: ORNLFemale, ORNLMale, MIRD, MIX, MIRDHead, ORNLHead/phantom/setPhantomModel MIX/phantom/setPhantomSex Female# Insert Body Part and their Sensitivity# The energy deposit is calculated in the organs declared sensitive/bodypart/addBodyPart Head yes/bodypart/addBodyPart Trunk yes/bodypart/addBodyPart LeftLeg yes/bodypart/addBodyPart RightLeg yes# Skeleton System/bodypart/addBodyPart LeftLegBone yes/bodypart/addBodyPart RightLegBone yes/bodypart/addBodyPart LeftArmBone yes/bodypart/addBodyPart RightArmBone yes……# Organs/bodypart/addBodyPart LeftBreast yes/bodypart/addBodyPart RightBreast yes/bodypart/addBodyPart LeftLung yes/bodypart/addBodyPart RightLung yes/bodypart/addBodyPart Brain yes/bodypart/addBodyPart Heart no…….# Genitalia/bodypart/addBodyPart LeftOvary yes/bodypart/addBodyPart RightOvary yes/bodypart/addBodyPart Uterus yes# Construct your Phantom/phantom/buildNewPhantom/run/initialize#……
AdultMixFemale.mac
Geant4 School, 12-14 October 2009, Catania, Italy44
How to run the G4HantropomorphicPhantom example
Install Geant4 Install GDML Run the executable Execute the macro initializing the model
of G4Anthropomorphic phantom
Geant4 School, 12-14 October 2009, Catania, Italy45
Thyroid
Skull
Lungs Arm Bones
Spine
Esophagus
Spleen
StomachKidneysPelvis
Ovaries
Lower Large Intestine
Leg BonesUrinary Bladder
Uterus
Upper Large Intestine
Liver
Breasts
Heart
Not visible: Brain (inside the skull)
Pancreas
Components in G4PhantomBuilder
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
Geant4 School, 12-14 October 2009, Catania, Italy46
Female ORNL Anthropomorphic Phantom
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
Geant4 School, 12-14 October 2009, Catania, Italy47
Anatomical components can be defined as Geant4 SensitiveDetectorsEnergy deposit collected in Geant4 Hits
Dosimetry
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
Geant4 School, 12-14 October 2009, Catania, Italy48
Mix & MatchMathematical phantom with one voxel breast
MIRD mathematical
breast
Dance & Hunt voxel breast
D. R. Dance and R. A. Hunt, REPORT RMTPC 02/1005
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
Geant4 School, 12-14 October 2009, Catania, Italy49
Dosimetry in mixed mathematical-voxel phantom
0
5
10
15
20
25
30
35
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
En
erg
y d
epo
sit
Arm
bo
ne
Bra
inB
rea
st
He
ad
He
art
Kid
ne
y
Le
g b
on
e
Liv
er
Inte
sti
ne
Lu
ng
s
Sp
ine
Ov
ary
Pa
nc
rea
s
Pe
lvis
Sk
ull
Sp
lee
n
Sto
ma
ch
Th
yro
id
Bla
dd
er
Ute
rus
Dose in Dose in
analytical organsanalytical organs
Dose in each Dose in each breast voxelbreast voxel
From talk: S. Guatelli et al., “Geant4 Anthropomorphic Phantoms”, IEEE NSS 2006, San Diego, November 2006.S. Guatelli, B. Mascialino, M.G. Pia, W. Pokorski, “Geant4 anthropomorphic phantoms”, Nuclear Science Symposium Conference Record, 2006, vol. 3, pp. 1359-1362
50
Summary: G4AnthropomorphicPhantom
Application mixing and matching analytical and voxelised models
Flexibility and extensibility of the Geant4 application thanks to the design
It is possible to integrate G4AnthropomorphicPhantom with DICOM interface
Use of G4Parameterised volumes
DICOM interface: geant4/examples/extended/medical/DICOM
51
Thank you !
Questions?