Presentation is loading. Please wait.

Presentation is loading. Please wait.

Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model

Similar presentations


Presentation on theme: "Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model"— Presentation transcript:

1 Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model
Dr. S. Guatelli Geant4 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)

2 Outline Context Geant4 human phantom development
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 i.e. radiation protection, radiotherapy, etc.
Context Realistic software models of the human body are important for accurate dosimetry i.e. radiation protection, radiotherapy, etc.

4 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

5 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

6 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 review Rad. Env. Biophys. 42 (2004) 229–235

7 Mathematical phantoms vs voxelised phantoms
Which is the best approach? Both approaches present advantages and drawbacks It depends on the specific use case

8 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

9 G4 capability in geometry
for anthropomorphic phantoms G4 Materials Human tissues can be easily implemented in Geant4 as compounds G4 Solids used in G4HumanPhantom: CSG (Constructed Solid Geometry) solids G4Box, G4Tubs, G4Cons, G4Trd, G4Ellipse, G4Sphere Boolean solids G4UnionSolid, G4SubtractionSolid, … 25

10 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

12 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

13 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

14 Other UR Event: User Interface: Visualisation:
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

15 Software development of the Geant4AnthropomorficPhantom
User requirements Architecture of the software Implementation details Use of the Geant4AnthropomorphicPhantom

16 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

17 Software development of the Geant4AnthropomorficPhantom
User requirements Architecture of the software Implementation details Use of the Geant4AnthropomorphicPhantom

18 G4 HumanPhantom directory
In geant4/example/advanced/human_phantom

19 src directory

20 include directory

21 Implementation Geometry

22 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;

23 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 = *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 = *g/mole); ………………

24 Example: definition of bone
density = *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, ); skeleton -> AddElement(elZn, ); skeleton -> AddElement(elSr, ); skeleton -> AddElement(elPb, );

25 Analytical organs

26 Modelling analytical organs
Two alternative methods Hard-coded implementation of the organs and body parts Geometry Description Markup Language (GDML)

27 Hard-coded organ Example: 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));

28 Hard-coded organ Example: 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, *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;

29 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

30 GDML webpage

31 G4HumanPhantom Implementation of organs with GDML gdmlData/Female
gdmlData/Male

32 GDML Breast (1) gdmlData/Female/MIRDBreast.gdml
<?xml version="1.0" encoding="UTF-8" ?> <gdml xmlns:gdml=" xmlns:xsi=" xsi:noNamespaceSchemaLocation=" > <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=" " /> <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>

33 GDML Breast (2) gdmlData/Female/MIRDBreast.gdml
Definition of elements and materials <materials> <material name="sH" formula=" " Z="1."> <D value=" " /> <atom value="1.008"/> …. etc </material> <material formula=" " name="SoftTissue"> <D value="1.04" /> <fraction n=" " ref="sH" /> <fraction n=" " ref="sC" /> <fraction n=" " ref="sN" /> <fraction n=" " ref="sO" /> … etc </materials>

34 GDML Breast (3) gdmlData/Female/MIRDBreast.gdml
<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>

35 GDML Breast (4) gdmlData/Female/MIRDBreast.gdml
<structure> <volume name="BreastVolume" > <materialref ref="SoftTissue" /> <solidref ref="Breast" /> </volume> </structure> <setup name="Default" version="1.0" > <world ref="BreastVolume" /> </setup> </gdml>

36 How to build GDML organ G4VPhysicalVolume* 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

38 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

39 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

40 How to visualise organs
1) 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);

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

42 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); ……….. } …….

43 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

44 How to run the G4HantropomorphicPhantom example
Install Geant4 Install GDML Run the executable Execute the macro initializing the model of G4Anthropomorphic phantom

45 Components in G4PhantomBuilder
Thyroid Skull Lungs Arm Bones Spine Esophagus Spleen Stomach Kidneys Pelvis Ovaries Lower Large Intestine Leg Bones Urinary Bladder Uterus Upper Large Intestine Liver Breasts Heart Not visible: Brain (inside the skull) Pancreas 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

46 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

47 Dosimetry Anatomical components can be defined as Geant4 SensitiveDetectors Energy deposit collected in Geant4 Hits 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

48 Mix & Match Mathematical phantom with one voxel breast
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 MIRD mathematical breast Dance & Hunt voxel breast D. R. Dance and R. A. Hunt, REPORT RMTPC 02/1005

49 Dosimetry in mixed mathematical-voxel 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 Dosimetry in mixed mathematical-voxel phantom Dose in each breast voxel Energy deposit Arm bone Brain Breast Head Heart Kidney Leg bone Liver Intestine Lungs Spine Ovary Pancreas Pelvis Skull Spleen Stomach Thyroid Bladder Uterus Dose in analytical organs

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?


Download ppt "Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model"

Similar presentations


Ads by Google