1 / 51

Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model

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 susanna.guatelli@uow.edu.au.

taylor
Download Presentation

Gean4 Human Phantom advanced example: A Geant4 anthropomorphic model

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 susanna.guatelli@uow.edu.au This application was developed by G. Guerrieri, S. Guatelli and M.G. Pia (INFN, Genova)

  2. 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 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 phantomsvs 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: • 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 Ingeant4/example/advanced/human_phantom

  19. src directory

  20. include directory

  21. Implementation Geometry

  22. 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; } Definition of materials: G4HumanPhantomMaterial.cc

  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 = 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); ………………

  24. 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

  26. 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/

  27. 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));

  28. 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; }

  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="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>

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

  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. 1359-1362

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

  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. 1359-1362

  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. 1359-1362

  48. 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 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

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

  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

More Related