Download presentation
Presentation is loading. Please wait.
Published byJoanna Lambert Modified over 7 years ago
1
Examples of GEANT4 application in medical diagnostic energy range
G. Mettivier, F. Di Lillo, A. Sarno, P. Russo Medical Physics Research Laboratory Dipartimento di Fisica “Ettore Pancini” Università di Napoli Federico II INFN, Sezione di Napoli Good morning, I am Giovanni Mettivier and I work with the Medical Physics Research Group of the Dipartimento di Fisica … Prof. Giovanni Mettivier, PhD XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
2
MC simulations for X-ray breast imaging
Total Volume irradiation Full Field Digital Mammography (dosimetry) Digital Breast Tomosynthesis (dosimetry) Cone-beam breast CT (Computed tomography) (image quality and dosimetry) Partial Volume irradiation Magnification/spot Mammography (dosimetry) Synchrotron radiation breast CT (image quality and dosimetry) Personalized dosimetry Synchrotron radiation rotational radiotherapy (dosimetry) Our group works mainly on the study of instrumentation and acquisition techniques in the field of medical imaging in the diagnostic energy range i.e. from 20 to 120 keV. At the moment our interest in concentrated on the breast medical imaging and in this slide are reported all the different techniques that we are studing and in our stidies we use aslo MC simulations in particular for the evalutation of the dose. I divide these techniques in two group «total Volume irradaition» and «partial Volume irradiation»…. Another two field where we use the MC similation are the XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
3
Total volume irradiation - FFDM
The mammographic exam consists on the realization of two planar x-ray images of the compressed breast. The used source is a policromatic X-ray tube and the images are acquired in CC and MLO geometry. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
4
Mammography - Geometry
In this slice is reported a screcht of the geometry used in a CC projection and used tipically in the MC simulations. The body is simulated as a big cube of water and the breast is simulated as a semicylinder with a radium r surrounded by a layer of skin tipically of 0.4 mm.g is the air gap, SID is the source to imager distance and t is the thichness of the compressed breast. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
5
Mammography - dosimetry
Mean Glandular Dose MGD = 𝐸 𝑑𝑒𝑝 𝐺 𝑚𝑎𝑠𝑠 𝑓 𝑔 = K DgN K (mGy) Kerma in air- > Entrance Surface Air Kerma (without backscattering) DgN are calculated as a function of the weight glandular fraction using MC simulation USA 3 mGy** Europa 2.5 mGy* *D. R. Dance, “Monte Carlo calculation of conversion factors for the estimation of mean glandular breast dose,” Phys. Med. Biol., vol. 35, pp. 1211–1219, 1980. **R. van Engen et al., “Addendum on Digital Mammography,” European Guidelines for Quality Assurance in Mammography Screening, ch. 3, 1.0 ed. , European Reference Organization for Quality Assured Breast Screening and Diagnostic Services, 2003. In our simulations we are interested to study the influence of the hardware, geometry and settings parameters on the value of the dose to the breast and its distribution. In mammography the dose is evaluated as the mean glandular dose. This value is obtained from the measure of the ESAK, the air kerma measured on the first surface of the breast without compression plate or breast and the DgN coefficients that are obtained from MC simulaions. The reference values (tha max value) for a single mammography are XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
6
Mammography - Dosimetry
𝑀𝐺𝐷= 𝐸 𝑑𝑒𝑝 𝐺 𝑚𝑎𝑠𝑠 𝑔 𝑓 𝑔 The values of the DgN as you can see from these graph depends on the Energy of the simulated photon, the glandular fraction and the dimensions of the breast. In these graph are shown an example of the calculated DgN as a function of the tube KV for two different glandularity. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
7
Mammography - Dosimetry
These values can depends also on the simulated physics. In our pubblised study on PMB we studied the influence of four different physics library on the value of the attenuation coefficients. In these graphs are reported the relative difference between the simulated and the NIST tabuled value. You can see that the difference goes from 2/3 percent to 18 percent and that the EM sstandard provodies the biggest differnces. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
8
Mammography - Dosimetry
In this graph are reported the simulated DgN with 4 different physics library with the data reported by Boone that represent the reference for the American Standard. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
9
Mammography - Dosimetry
Energy Range (keV) Fit Equation Parameters Value 1-4 (a/(xb+c))+d a= b= c= d= 4-10 (a/(b+c·xd))+e a= b= c= d= e= 10-20 (a/(b+c·x3))+d+e·x a= b= c= d= e= 20-35 a= b= c= d= e= 35-50 (a/(b+c·x3))+d a=2.6947·106 b= ·107 c= d= In order to correct these difference we evaluate different fitting curve for interval of 5 keV. Energy Range (keV) Fit Equation Parameters Value 1-4 (a/(xb+c))+d a= b= c= d= 4-10 (a/(b+c·xd))+e a= b= c= d= e= 10-20 (a/(b+c·x3))+d+e·x a= b= c= d= e= 20-35 a= b= c= d= e= 35-50 (a/(b+c·x3))+d a= b= c= d= XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
10
Total volume irradiation - FFDM
Fig. Percentage deviation in DgN(E) from the case in which bremsstrahlung processes are simulated and a low cutoff electron energy is set, for the cases in which the bremsstrahlung processes are not included in the MC simulations. Breast thickness = 5 cm; compression paddles = 2 mm PMMA; skin thickness = 1.45 mm. Another effect that we stadied was the influence of the inclusion/exclusion of the bremsstralung effect in the simulation. In the past simulation this effect was exclused and we find that this exlusion may result in a difference of 1% in the case of a 0% glandurar fraction XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
11
Total volume irradiation - FFDM
Fig. Influence of the thickness of the top compression paddle on the MC calculation of DgN(E) for a PMMA paddle thickness in the range 15 m when the incident photon angle on the scoring surface is considered in the air kerma calculation. The deviation is evaluated as the ratio to the results obtained without the top paddle. Breast glandular fraction = 20%; compressed breast thickness = 5 cm: cone-beam irradiation. The breast was in place in the beam path when evaluating the glandular dose and the incident air kerma. After the physics we studied the influence of the presence of the compression plate and of its thickness. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
12
Total volume irradiation - FFDM
From the recent studies of the images of the 3D breast obtained with the breast CT imaging prototypes the correct size of the skin seems to be 1,45 mm instead of 5 mm. Fig. MGD per photon to a breast of 20% glandular fraction, due to the primary photons (a) and to the secondary photons (b) for skin thicknesses of 1.45 mm and 5 mm. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
13
Total volume irradiation - DBT
The mammography today is the gold standard in the fight again the breast tumor but however this exams presents same limitation. The principal is due to the tissue sovrapposition related to the projection of a 3D structure on a 2D plane. In order to overcome this limitations new 3D techniques were proposed. The first is the Digital breast tomosintesis. In this exam we have the same geometry of the mammography but the X-ray tube is moved on an arch and different projections are acquired. For a given compressed breast, glandular dose per view depends on scan angle and spectrum Few experimental data available for dose distribution in the irradiated breast XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
14
Total volume irradiation - DBT
This allows to reconstruct with appropriate algorithm different layers of the breast. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
15
Total volume irradiation - DBT
Also in this case we are interested to the dose and in particular to the dose distribution. Using gafchromic films (particular films that allow the measure of the dose) we measure the dose distribution and compared it with our simulations. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
16
Total volume irradiation - DBT
In these graph are reported the simulated and measured dose profile along the chest-wall at two different distances XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
17
Total volume irradiation - BCT
The next step was the complete 3D imaging with the dedicated computed tomography. In this exam the patient is in prone position and the breast hangs in a hole in the patient bad. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
18
Total volume irradiation - BCT
more projections Full 3D image reconstruction Absorbed dose ~ 5 mGy The X-ray tube and the detector rotate around the breast on a complete 360 degree acquiring more projections. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
19
Total volume irradiation - BCT
Courtesy of Prof. J. Boone, Univ. California Davis XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
20
Total volume irradiation - BCT
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
21
Total volume irradiation - BCT
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
22
Total volume irradiation - BCT
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
23
Total volume irradiation – Future work
- Validation of the code with standard (TG95) - Definition od the DgN in CBT, DBT and FFDM XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
24
𝒏=𝟏 − 𝜹−𝒊𝜷 Ψ 𝑟 = 𝐸 0 𝑒 𝑖𝑛𝑘𝑟 = 𝐸 0 𝑒 𝑖 1−𝛿 𝑘𝑟 𝑒 −𝛽𝑘𝑟
X-ray phase-contrast imaging attenuation 𝒏=𝟏 − 𝜹−𝒊𝜷 phase shift But we have to remember that the X-rays are electromagnetic wave and that the propagation of an electromagnetic wave through a medium with refractive index n is described by This type of equation where the first and second exponential terms describe the shift in phase and decrease in amplitude of a wave. The refractive index can be written as n = 1-d-ib, where d is related to the phase shift and ib determines the attenuation. Ψ 𝑟 = 𝐸 0 𝑒 𝑖𝑛𝑘𝑟 = 𝐸 0 𝑒 𝑖 1−𝛿 𝑘𝑟 𝑒 −𝛽𝑘𝑟 S.D. Auweter et al., British Inst. Radiol. 2014, doi /bjr Black Sea Conference 2016– 8 June 2016
25
𝐼(𝑧)= 𝐼 0 𝑒 −𝜇∙𝑧 X-ray phase-contrast imaging
In the mammography we detect only the absorption and we obtain image like that. 𝐼(𝑧)= 𝐼 0 𝑒 −𝜇∙𝑧 Black Sea Conference 2016– 8 June 2016
26
In line X-ray phase-contrast imaging
If we are able also to detect the phase map we can abtain image like that where we can see the presence of an enhancment of the visibility of the edge of the object due to the presence of a white and black line. Black Sea Conference 2016– 8 June 2016
27
Partial Volume Irradiation - SyrmaCT
In order to study this type of exam we are involved in a INFN research project called SyrmaCT tha have the aim to realize the first phase-contrast breast CT on a patient. In this experimental setup we have the patient in the same position as in the breast CT but the source is a laminar monochromatic beam. The problem in this case is that we have to move and rotate the patient. The dimension of the beam is only 3 mm and we have to scan all the breast of 9 cm and then 30 rotation. For this we have decide to irradiate only a limtate volume of the breast. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
28
Propagation-based imaging
Sample 1(diameter: 9.4 cm).(a) FBP reconstruction of 1200 projections and (b) 300 projections, (c) SART reconstruction of 300 projections, (d) phase retrieved SART reconstruction of 300 projections. Longo et al., Phys Med Biol 61, 2016
29
Partial Volume Irradiation - SyrmaCT
𝑀𝐺𝐷= 𝐸 𝑑𝑒𝑝 𝐺 𝑚𝑎𝑠𝑠 𝑔 𝑓 𝑔 The problem for the dosimetry is that the MGD is defined as ratio between the deposited energy in the breast and the glandular mass because in the mammography all the breast is irradiated. In this case only the energy is irradiated in only a small part of the breast and we propose to use as mass only the mass in the irradiated volume but in this case we don’t take in account the dose due to the scattered radiation outside the irradiated volume. And we propose another parateer MGDt defined as the ratio between the energy deposited in the whole breast and the mass of the irradiated mass. - Interview on MedicalPhysicsWEB - Featured article XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
30
Partial Volume Irradiation - SpotDM
After this study we have applied the same concept to the spot mammography. This exam is a second level exam where is irradiated only the portion of breast where there is the tumor. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
31
Partial Volume Irradiation - SpotDM
This draft is to show the different simulated geometry from the standard mammography. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
32
Partial Volume Irradiation - SpotDM
Fig. Polyenergetic DgN, DgNV and DgNM for a 20% glandular breast with a thickness of 50 mm (constant thickness compression) for varying compression paddle size. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
33
UCDMC breast scan patient
Personalized dosimetry UCDMC breast scan patient Phantom #5 Volume rendering Axial slice Coronal slice Sagittal slice XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
34
Synchrotron radiation rotational radiotherapy
Energy: 178 keV Phantom dimension: 14 cm diameter, 9 cm heigh Material: polyethilen Beam dimension: 1, 7, 14 cm x (direction) XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
35
Exercise: a realistic X-ray imaging simulation
Now, we can make a little exercise. You have a XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
36
Main.cc Random engine Pseudo-random number generators (PRNG) use in MC simulations are necessary to generate reliable representations of the physical imaging environment. The HepRandom module consists of classes implementing different random engines and different random distributions Ranecu engine Mersenne/Twister engine HepJamesRandom engine #include "Randomize.hh" CLHEP::HepRandom::setTheEngine(new CLHEP::HepJamesRandom); if(argc>2){ long indice = strtol(argv[2],NULL,10); CLHEP::HepRandom::setTheSeed(time(NULL)+indice); } else{ CLHEP::HepRandom::setTheSeed(time(NULL)); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
37
Main.cc Run Manager G4RunManager * runManager = new G4RunManager;
DetectorConstruction* detector = new DetectorConstruction; //Setup descriction runManager->SetUserInitialization(detector); PhysicsList* physics = new PhysicsList; // Used Physic List runManager->SetUserInitialization(physics); PrimaryGeneratorAction* gen_action = new PrimaryGeneratorAction(); runManager->SetUserAction(gen_action); RunAction* run_action = new RunAction; runManager->SetUserAction(run_action); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
38
Main.cc XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
39
Main.cc Geant4 Kernel runManager->Initialize(); #ifdef G4VIS_USE
G4VisManager* visManager = new G4VisExecutive; visManager->Initialize(); #endif XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
40
Main.cc User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer(); if (argc!=1) { // batch mode G4String command = "/control/execute "; G4String fileName = argv[1]; UImanager->ApplyCommand(command+fileName); } else { // interactive mode : define UI session #ifdef G4UI_USE G4UIExecutive* ui = new G4UIExecutive(argc, argv); #ifdef G4VIS_USE //UImanager->ApplyCommand("/control/execute vis.mac"); #endif ui->SessionStart(); delete ui; delete visManager; User Interface manager XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
41
DetectorConstruction.cc A detector geometry in GEANT4 is made of a number of volumes Largest volume -> World volume (typically a box) Each volume is created by describing its shape and its physical characteristics, and then placing it inside a containing volume When a volume (daughter) is placed within another volume(mother), its coordinate system is defined with respect to its mother volume XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
42
DetectorConstruction.cc Object Dimensions
G4double skin_thickness=0.5;//*cm; G4double breast_out_radium=8.;//*cm; G4double breast_out_height=5.;//*cm; G4double source_det_distance=64.5;//*cm; G4double superior_compressing_pl=0.28;//*cm; G4double inf_compressing_pl=0.41;//*cm; G4double f_g=.5;//glandular fraction by mass; G4double source_to_rot_dist=62.;//cm G4double source_to_det_dist=66.;//cm G4double air_gap=1.5;//cm XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
43
DetectorConstruction.cc Materials Definition
G4double density, fractionmass; G4int ncomponents; G4NistManager* man = G4NistManager::Instance(); G4Element* N = man -> FindOrBuildElement("N"); G4Element* O = man -> FindOrBuildElement("O"); G4Element* H = man -> FindOrBuildElement("H"); G4Element* C = man -> FindOrBuildElement("C"); G4Element* P = man -> FindOrBuildElement("P"); air = man->FindOrBuildMaterial ("G4_AIR"); water = man->FindOrBuildMaterial ("G4_WATER"); plexi = man->FindOrBuildMaterial ("G4_PLEXIGLASS"); polietilene = man->FindOrBuildMaterial ("G4_POLYETHYLENE"); graphite = man->FindOrBuildMaterial ("G4_GRAPHITE"); Al = man->FindOrBuildMaterial ("G4_Al"); polycarbonate = man->FindOrBuildMaterial ("G4_POLYCARBONATE"); carbon= man->FindOrBuildMaterial ("G4_C"); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
44
DetectorConstruction.cc Materials Definition // Carbon Fiber
G4Element* elC = new G4Element("Carbon", "C", 6., 12.01*g/mole); CarbonFiber = new G4Material("CarbonFiber",0.145*g/cm3, 1); CarbonFiber->AddElement(elC,1); //vacuum vacuum = new G4Material("Galactic", 1., 1.01*g/mole, universe_mean_density, kStateGas, 2.73*kelvin, 3.e-18*pascal); // Skin Boone skin_boone = new G4Material("skin_boone",density=1.09*g/cm3,ncomponents=5); skin_boone -> AddElement(H,fractionmass=0.098); skin_boone -> AddElement(C,fractionmass=0.178); skin_boone -> AddElement(N,fractionmass=0.050); skin_boone -> AddElement(O,fractionmass=0.667); skin_boone -> AddElement(P,fractionmass=0.007); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
45
DetectorConstruction.cc Materials Definition
//Breast Tissue 0% GLANDULAR G4double adip_density=0.9301; breast_tissue_0 = new G4Material("breast_tissue_0",adip_density*g/cm3,ncomponents=5); breast_tissue_0 -> AddElement(H,fractionmass=0.112); breast_tissue_0 -> AddElement(C,fractionmass=0.619); breast_tissue_0 -> AddElement(N,fractionmass=0.017); breast_tissue_0 -> AddElement(O,fractionmass=0.251); breast_tissue_0 -> AddElement(P,fractionmass=0.001); //Breast Tissue 100% GLANDULAR G4double gland_density=1.04; breast_tissue_100 = new G4Material("breast_tissue_100",gland_density*g/cm3,ncomponents=5); breast_tissue_100 -> AddElement(H,fractionmass=0.102); breast_tissue_100 -> AddElement(C,fractionmass=0.184); breast_tissue_100 -> AddElement(N,fractionmass=0.032); breast_tissue_100 -> AddElement(O,fractionmass=0.677); breast_tissue_100 -> AddElement(P,fractionmass=0.005); //Breast Tissue X% GLANDULAR G4double breast_density=1./((f_g/gland_density)+((1-f_g)/adip_density)); breast_tissue = new G4Material("breast_tissue",breast_density*g/cm3,ncomponents=2); breast_tissue->AddMaterial(breast_tissue_0,(1-f_g)); breast_tissue->AddMaterial(breast_tissue_100,f_g); Materials Definition XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
46
DetectorConstruction.cc World
solid_world = new G4Box("solid_world", 1.*m,1.*m,1.*m); logic_world = new G4LogicalVolume(solid_world, air, "logic_world",0,0,0); physical_world = new G4PVPlacement(0, G4ThreeVector(), logic_world, "physical_world", 0, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
47
DetectorConstruction.cc Body
solid_body = new G4Box("solid_body",8.5*cm, 15.*cm,15.*cm); logic_body = new G4LogicalVolume(solid_body, water, "logic_body",0,0,0); G4VisAttributes* solid_body_VisAtt = new G4VisAttributes(); solid_body_VisAtt->SetForceAuxEdgeVisible(true); solid_body_VisAtt->SetColour(1.,0.,1.); logic_body->SetVisAttributes(solid_body_VisAtt); physical_body = new G4PVPlacement(0, G4ThreeVector(-8.5* cm, 0. *cm, -source_to_det_dist-source_to_rot_dist-air_gap-3.)*cm), logic_body, "physical_body", logic_world, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
48
DetectorConstruction.cc Compression plate
plate_sup = new G4Box("plate_sup",12.*cm, 15.*cm,(superior_compressing_pl/2.)*cm); logic_plate_sup = new G4LogicalVolume(plate_sup, polycarbonate, "logic_plate_sup",0,0,0); G4VisAttributes* plate_sup_VisAtt = new G4VisAttributes(); plate_sup_VisAtt->SetForceAuxEdgeVisible(true); plate_sup_VisAtt->SetColour(1.,0.,1.); logic_plate_sup->SetVisAttributes(plate_sup_VisAtt); physical_plate_sup = new G4PVPlacement(0, G4ThreeVector(12.* cm, 0. *cm, -(source_to_det_dist-source_to_rot_dist-air_gap-breast_out_height-superior_compressing_pl/2.)*cm), logic_plate_sup, "physical_plate_sup", logic_world, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
49
DetectorConstruction.cc Compression plate
plate_inf = new G4Box("plate_inf",12.*cm, 15.*cm,(inf_compressing_pl/2.)*cm); logic_plate_inf = new G4LogicalVolume(plate_inf, CarbonFiber, "logic_plate_inf",0,0,0); G4VisAttributes* plate_inf_VisAtt = new G4VisAttributes(); plate_inf_VisAtt->SetForceAuxEdgeVisible(true); plate_inf_VisAtt->SetColour(1.,0.,1.); logic_plate_inf->SetVisAttributes(plate_inf_VisAtt); physical_plate_inf = new G4PVPlacement(0, G4ThreeVector(12.* cm, 0. *cm, -(source_to_det_dist-source_to_rot_dist-air_gap+inf_compressing_pl/2.)*cm), logic_plate_inf, "physical_plate_inf", logic_world, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
50
DetectorConstruction.cc Skin
skin_layer = new G4Tubs("skin_layer",0.*cm, breast_out_radium*cm,(breast_out_height/2)*cm, 270.*deg, 180.*deg); logic_skin_layer = new G4LogicalVolume(skin_layer, breast_tissue_0, "logic_skin_layer",0,0,0); G4VisAttributes* skin_layer_VisAtt = new G4VisAttributes(); skin_layer_VisAtt->SetForceAuxEdgeVisible(true); skin_layer_VisAtt->SetColour(1.,0.,1.); logic_skin_layer->SetVisAttributes(skin_layer_VisAtt); physical_skin_layer = new G4PVPlacement(0, G4ThreeVector(0.* cm, 0. *cm, -(source_to_det_dist-source_to_rot_dist-air_gap- breast_out_height/2)*cm), logic_skin_layer, "physical_skin_layer", logic_world, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
51
DetectorConstruction.cc Breast
breast = new G4Tubs("breast",0.*cm, (breast_out_radium-skin_thickness)*cm,((breast_out_height/2)-skin_thickness)*cm, 270.*deg, 180.*deg); logic_breast = new G4LogicalVolume(breast, breast_tissue, "logic_breast",0,0,0); G4VisAttributes* breast_VisAtt = new G4VisAttributes(); breast_VisAtt->SetForceAuxEdgeVisible(true); breast_VisAtt->SetColour(1.,1.,1.); logic_breast->SetVisAttributes(breast_VisAtt); physical_breast = new G4PVPlacement(0, G4ThreeVector(0.* cm, 0. *cm, 0.*cm), logic_breast, "physical_breast", logic_skin_layer, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
52
DetectorConstruction.cc Detector
det_covAl = new G4Box("det_covAl",12.*cm, 15.*cm,0.0025/2.*cm); logic_det_covAl = new G4LogicalVolume(det_covAl, Al, "logic_det_covAl",0,0,0); G4VisAttributes* det_covAl_VisAtt = new G4VisAttributes(); det_covAl_VisAtt->SetForceAuxEdgeVisible(true); det_covAl_VisAtt->SetColour(1.,2.,1.); logic_det_covAl->SetVisAttributes(det_covAl_VisAtt); physical_det_covAl = new G4PVPlacement(0, G4ThreeVector(12.* cm, 0. *cm, -(source_to_det_dist /2.-source_to_rot_dist)*cm), logic_det_covAl, "physical_det_covAl", logic_world, false, 0); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
53
DetectorConstruction.cc Detector
det_covC = new G4Box("det_covC",12.*cm, 15.*cm,0.0084/2.*cm); logic_det_covC = new G4LogicalVolume(det_covC, carbon, "logic_det_covC",0,0,0); G4VisAttributes* det_covC_VisAtt = new G4VisAttributes(); det_covC_VisAtt->SetForceAuxEdgeVisible(true); det_covC_VisAtt->SetColour(1.,1.,1.); logic_det_covC->SetVisAttributes(det_covC_VisAtt); physical_det_covC = new G4PVPlacement(0, G4ThreeVector(12.* cm, 0. *cm, -(source_to_det_dist / source_to_rot_dist)*cm), logic_det_covC, "physical_det_covC", logic_world, false, 0); SetupDetectors(); return physical_world; } XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
54
PhysicsList.cc Within this class all particles and physics process to be used during the simulation must be defined. The range cut-off parameter should also be defined in this class. ConstructParticle(); // construction of particles ConstructProcess(); //construct process and register then to particles SetCuts(); // setting a range cut value for all particles ConstructParticle() #include G4Gamma.hh //gamma G4Gamma::GammaDefinition(); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
55
PhysicsList.cc void PhysicsList::ConstructDecay() {
G4Decay* theDecayProcess = new G4Decay(); theParticleIterator->reset(); while( (*theParticleIterator)() ){ G4ParticleDefinition* particle = theParticleIterator->value(); G4ProcessManager* pmanager = particle->GetProcessManager(); if (theDecayProcess->IsApplicable(*particle)) { pmanager ->AddProcess(theDecayProcess); pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); } XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
56
PhysicsList.cc void PhysicsList::SetCuts() { if (verboseLevel >0){
G4cout << "PhysicsList::SetCuts:"; G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; } SetCutValue(defaultCutValue, "gamma"); SetCutValue(defaultCutValue, "e-"); SetCutValue(defaultCutValue, "e+"); SetCutValue(defaultCutValue, "proton"); if (verboseLevel>0) DumpCutValuesTable(); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
57
PrimaryGenerationAction.cc It is a mandatory class which specifies the generation of primary particles (e.g. gammas X-rays) Geant4 provides three G4VPrimaryGenerator concrete classes: G4ParticleGun G4GeneralParticleSource G4HEPEvtInterface The Geant4 General Particle Source module (GPS) allows to generate primary particles in a more sophisticated manner. Spectrum: linear, exponential, gaussian, user-defined, etc. Angula distribution: unidirectional, isotropic, ets., Spatial sampling: on simple 2D or 3D surfaces (e.g. discs, spheres and boxes) XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
58
PrimaryGenerationAction.cc Action
PrimaryGeneratorAction::PrimaryGeneratorAction() { G4UImanager* uimanager = G4UImanager::GetUIpointer(); particleGun = new G4GeneralParticleSource(); uimanager->ApplyCommand("/gps/particle gamma"); uimanager->ApplyCommand("/gps/ene/type User"); fTubeMessenger = new PrimaryGeneratorMessenger(this); } XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
59
PrimaryGenerationAction.cc Action
G4double angle, x, y, z, costheta, phi, theta, x_p0,y_p0,z_p0, Px,Py,Pz; angle = PI*(ftAng/deg)/180.+asin((source_to_det_dist-source_to_rot_dist)*sin(PI*((ftAng/deg)/180.))/source_to_rot_dist); z = (source_to_rot_dist)*cos(angle); y = -(source_to_rot_dist)*sin(angle); x = 0.; G4String command; std::stringstream s1; std::stringstream s2; s1 << "/gps/position " << x << " " << y << " " << z ; command = s1.str(); uimanager->ApplyCommand(command); XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
60
PrimaryGenerationAction.cc Action
while(!detector_flag){ phi = G4UniformRand()*2*M_PI; costheta = 2*G4UniformRand()-1; theta=acos(costheta); z_p0=sin(theta)*cos(phi); y_p0=sin(theta)*sin(phi); x_p0=cos(theta); z_p0=z_p0/sqrt(pow(x_p0,2)+pow(y_p0,2)+pow(z_p0,2)); y_p0=y_p0/sqrt(pow(x_p0,2)+pow(y_p0,2)+pow(z_p0,2)); x_p0=x_p0/sqrt(pow(x_p0,2)+pow(y_p0,2)+pow(z_p0,2)); if(fabs((source_to_det_dist)*y_p0)<=20. && (source_to_det_dist)*x_p0<=30. && (source_to_det_dist)*x_p0>=0. && z_p0>=0.) { detector_flag=true; Pz=z_p0; Py=y_p0; Px=x_p0; } detector_flag=false; Pz= source_to_det_dist; Py= source_to_det_dist * tan(2.*atan(15./source_to_det_dist)*(G4UniformRand()-0.5));// Px = source_to_det_dist * tan(atan(26./source_to_det_dist)*G4UniformRand()); // G4double x0; G4double y0; G4double z0; z0 = Pz *cos(angle) - Py *sin(angle); y0 = Pz * sin(angle)+ Py *cos(angle); x0 = Px; s2 << "/gps/direction " << x0 << " " << y0 <<" " << -z0; command = s2.str(); uimanager->ApplyCommand(command); particleGun-> GeneratePrimaryVertex(anEvent); Action XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
61
RunAction.cc Action G4Run* RunAction::GenerateRun() { return new Run;
} void RunAction::EndOfRunAction(const G4Run* aRun) Run *theRun=(Run*)(aRun); G4cout<<" "<<G4endl; G4cout<<"The calculated mean glandular dose (total) is: "<<theRun->mgd_tot<<" mGy."<<G4endl; (theRun->mgd_tot)=0; XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
62
Run.cc Action Run::Run() { mgd_tot=0; } Run::~Run() {;}
void Run::Increment (G4double mgd_p) mgd_tot+=mgd_p; XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
63
Analysis manager XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
64
Analysis manager XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
65
MGD.cc Inizialize extern G4double f_g; G4double MGD_p;
MGD::MGD(G4String name) :G4VSensitiveDetector(name) { } MGD::~MGD() void MGD::Initialize(G4HCofThisEvent* HCE) { G4RunManager* runManager=G4RunManager::GetRunManager(); theRun=(Run*)runManager->GetCurrentRun(); } XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
66
MGD.cc G4bool MGD::ProcessHits( G4Step* aStep, G4TouchableHistory*) { G4Track* track = aStep->GetTrack(); G4Material *material = aStep->GetTrack()->GetMaterial(); const G4DynamicParticle* dynParticle = track-> GetDynamicParticle(); G4ParticleDefinition* particle = dynParticle-> GetDefinition(); G4StepPoint* preStep = aStep->GetPreStepPoint(); G4ThreeVector pos = preStep->GetPosition(); G4ParticleDefinition* particle_s= G4Electron::ElectronDefinition(); if ( particle_s!=particle && track->GetTrackID()==1 ){ G4double ener_dep = (aStep->GetPreStepPoint()->GetKineticEnergy()/keV)-(aStep- >GetPostStepPoint()->GetKineticEnergy()/keV); G4double ener_part = aStep->GetPreStepPoint()->GetKineticEnergy()/keV; G4VPhysicalVolume* physVolum = aStep->GetPreStepPoint()->GetPhysicalVolume(); G4double g_factor=G_factor(ener_part,material,physVolum); MGD_p=(g_factor*ener_dep*1.6/pow(10,13)); theRun->Increment(MGD_p); } return true; ProcessHits XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
67
MGD.cc G_Factor double MGD::G_factor(G4double energy_inc, G4Material *material_b, G4VPhysicalVolume* physVol) { G4double mu_rho_adipose; G4double mu_rho_glandular; if (energy_inc<4.) { mu_rho_adipose = ….; //0% mu_rho_glandular = ….; //100% } …. if (energy_inc>87. && energy_inc<120.) { G4double g_factor = (f_g*mu_rho_glandular)/(f_g*mu_rho_glandular+(1-f_g)*mu_rho_adipose); G4double global_factor=g_factor/(f_g*(material_b->GetDensity()/(kg/cm3))*(physVol->GetLogicalVolume()->GetSolid()->GetCubicVolume()/cm3)); return global_factor; XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
68
GPS MacroFile Example using mono-energetic energy spectrum
#type of particle /gps/particle gamma #Set the momentum direction /gps/direction #(Infinitesimal) Point source /gps/pos/type Point /gps/pos/centre cm #Energy /gps/ene/type Mono /gps/ene/mono MeV #Visualization /vis/open DAWNFILE /vis/viewer/set/viewpointThetaPhi 90 0 /vis/viewer/zoom 1 /vis/drawVolume /tracking/storeTrajectory 1 /vis/scene/add/trajectories /vis/scene/endOfEvenAction accumulate #Verbosity (0, 1 or 2) /tracking/verbose 1 #No particles /run/beamOn 1000 Example using mono-energetic energy spectrum XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
69
GPS macro file mono_beam.mac Run_macro.mac Mo_25umMo_25kv.mac
/gps/ene/type Mono /gps/ene/mono 16.8 keV /run/beamOn 100 monoenergetic /run/verbose 1 /tube/angleTomo/angleFix 20. /control/execute mono_beam.mac Run_macro.mac polyenergetic Mo_25umMo_25kv.mac or Rh_25umRh_29kv.mac or W_700umAl_50kv.mac XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
70
Energy spectrum simulation
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
71
Energy spectrum simulation
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
72
GPS macro file Mo_25umMo_25kv.mac
/gps/hist/type energy /gps/ene/min MeV /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /gps/hist/point /run/beamOn 100 Mo_25umMo_25kv.mac XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
73
Vis.mac /vis/open OGL 600x /vis/drawVolume # Draw geometry /vis/scene/add/axes cm # Axes /vis/viewer/set/viewpointThetaPhi # Specify view angle /vis/viewer/zoom 2 # Specify zoom value # Draw smooth trajectories /vis/scene/add/trajectories /vis/modeling/trajectories/create/drawByCharge /vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true /vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 1 # Draw hits at end of event: /vis/scene/add/hits /vis/scene/endOfEventAction accumulate -1 # Re-establish auto refreshing and verbosity: /vis/verbose warnings XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
74
Debugging, compiling and linking experiments
> cd /DBT_alghero > cmake -DGeant4_DIR=/home/adminlab/geant p01-install/lib/Geant / > make -jN > ./DBT_alghero Idle> /control/execute vis.mac Idle> /control/execute run_macro.mac XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
75
Scatter field estimation
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
76
XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
77
Elenco pubblicazioni G. Mettivier et a., “Evaluation of scattering in Cone-Beam breast computed tomography: a Monte Carlo and experimental phantom study”, (IEEE Trans. Nucl. Sci., vol. 57, N° 5, pp , 2010). G. Mettivier et al., “Scatter correction in Cone-Beam breast computed tomography: simulations and experiments”,( IEEE Trans. Nucl. Sci., vol. 59, N° 5, pp , 2012). N. Lanconelli et al., “Investigation of the dose distribution for a Cone Beam CT system dedicated to breast imaging”, (Physica Medica, vol. 4, N. 4, pp , 2013). C. Fedon et al., “GEANT4 for breast dosimetry: parameters optimization study”, (Phys. Med. Biol. 60, vol. 16, pp. N311-N323 , 2015). G. Mettivier et al., “Glandular dose in breast computed tomography with synchrotron radiation” (Phys. Med. Biol. 61, pp , 2016). Featured article. A. Sarno et al., “A Monte Carlo study of monoenergetic and polyenergetic normalized glandular dose (DgN) coefficients in mammography", (Phys. Med. Biol. 62, pp , 2017). G. Mettivier et al., “Evaluation of dose homogeneity in cone-beam breast computed tomography”, (Radiat. Prot. Dosimetry, pp. 1-7, 2017). XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
78
Elenco pubblicazioni (under review)
Sarno A, Dance D R, van Engen R E, Young K C, Russo P, Di Lillo F, Mettivier G, Bliznakova K, Fei B W and Sechopoulos I. “A Monte Carlo model for mean glandular dose evaluation in spot compression mammography“. Med. Phys. (2017) under review. Sarno A, Mettivier G and Russo P. “Air kerma calculation in Monte Carlo simulations for deriving normalized glandular dose coefficients in mammography “. Phys. Med Biol. (2017) under review. Sarno A, Masi M, Antonelli N, Di Lillo F, Mettivier G, Castriconi R and Russo P. “Dose Volume Distribution in Digital Breast Tomosynthesis: a Phantom Study“. Trans. Rad. Pl. Med. Sc. (2017) under review. XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
79
Thank you!!! Napoli Medical Physics Laboratory Prof. Paolo Russo
Dr. Giovanni Mettivier, PhD Dr. Antonio Sarno Dr. Francesca Di Lillo Dr. Roberta Castriconi Milano) XIV Seminar on Software for Nuclear, Subnuclear and Applied Physics, Alghero – 8 June 2017
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.