Import Geant4 11.4.0 source tree
This commit is contained in:
@@ -45,7 +45,7 @@ target_link_libraries(exp_microdosimetry ${Geant4_LIBRARIES})
|
||||
# relies on these scripts being in the current working directory.
|
||||
#
|
||||
set(exp_microdosimetry_SCRIPTS
|
||||
vis.mac physics.mac primary.mac run.mac geometry.mac output.mac MergeFiles LoadPlotNtuple.C ProcessMicro.C 1_plot_distributions.py 2_calculate_means_rbe.py weight_function.csv
|
||||
vis.mac physics.mac primary.mac run.mac geometry.mac output.mac protonBeam.mac MergeFiles LoadPlotNtuple.C ProcessMicro.C 1_plot_distributions.py 2_calculate_means_rbe.py weight_function.csv
|
||||
)
|
||||
|
||||
foreach(_script ${exp_microdosimetry_SCRIPTS})
|
||||
|
||||
@@ -5,6 +5,10 @@ which **must** added in reverse chronological order (newest at the top).
|
||||
It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
## 2025-11-03 G. Milluzzo (exp_microdosimetry-V11-03-00)
|
||||
- Added the mini tissue equivalent proportional counter (mini TEPC) in Detector Construction
|
||||
- Added a new macro implementing a parallel monoenergetic 100 MeV proton beam
|
||||
|
||||
## 2024-10-28 G. Milluzzo (exp_microdosimetry-V11-02-00)
|
||||
- Added the SiC microdosimeter geometry in DetectorConstruction
|
||||
|
||||
|
||||
@@ -6,11 +6,12 @@
|
||||
---------------------
|
||||
|
||||
|
||||
The exp_microdosimetry example, originally named "Radioprotection", is currently developed and mantained by Susanna Guatelli (Centre For Medical Radiation Physics (CMRP), University of Wollongong, NSW, Australia) and Francesco Romano (INFN - Sezione di Catania, Catania, Italy)
|
||||
The exp_microdosimetry example, originally named "Radioprotection", is currently developed and mantained by Susanna Guatelli (Centre For Medical Radiation Physics (CMRP), University of Wollongong, NSW, Australia) Giuliana Milluzzo and Francesco Romano (INFN - Sezione di Catania, Catania, Italy)
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Contact: susanna@uow.edu.au
|
||||
giuliana.milluzzo@ct.infn.it
|
||||
francesco.romano@ct.infn.it
|
||||
geant4-advanced-examples@cern.ch
|
||||
|
||||
@@ -19,13 +20,13 @@ Contact: susanna@uow.edu.au
|
||||
List of external collaborators:
|
||||
J. Magini and G. Parisi - University of Surrey, United Kingdom
|
||||
J. Davis and D. Bolst - University of Wollongong, NSW, Australia
|
||||
G. Milluzzo- INFN-Sezione di Catania, Catania, Italy
|
||||
V. Conte, A. Bianchi, A. Selva- INFN-Laboratori Nazionali di Legnaro, Italy
|
||||
|
||||
-----------------------------------------------------------------
|
||||
----> Introduction.
|
||||
|
||||
The exp_microdosimetry example models different detectors for microdosimetry in space applications. The example lets the user
|
||||
choose between the models of a simplified diamond (1), a micro-diamond (2), a simplified silicon (3), a silicon microdosimeter (4), a two-stage diamond detector (5) and a SiC microdosimeter (6):
|
||||
choose between the models of a simplified diamond (1), a micro-diamond (2), a simplified silicon (3), a silicon microdosimeter (4), a two-stage diamond detector (5) a SiC microdosimeter (6) and a mini TEPC:
|
||||
|
||||
1) A semplified diamond microdosimeter is based on the detector developed by Prof. Anatoly Rosenfeld and his team at the Centre For Medical Radiation Physics, CMRP, University of Wollongong, NSW, Australia. The design of the device is documented in J. Davis, et al., "Characterisation of a novel diamond-based microdosimeter prototype
|
||||
for radioprotection applications in space environments",IEEE Transactions on Nuclear Science,
|
||||
@@ -38,6 +39,8 @@ Vol. 59, pp. 3110-3116, 2012.
|
||||
5) The diamond telescope is based on the detector developed by University of Rome "Tor Vergata". Its design and characterisation are documented in Cesaroni et al., "", Nucl. Instrum. Methods. Phys. Res. A, vol.947, 2019, DOI:https://doi.org/10.1016/j.nima.2019.162744 , and in C. Verona et al., "Characterisation of a monolithic ΔE-E diamond telescope detector using low energy ion microbeams", Radiation Measurements, vol. 159, 2022, DOI:https://doi.org/10.1016/j.radmeas.2022.106875 .
|
||||
6) A sempliefied version of a Silicon Carbide (SiC) based microdosimeter developed at INFN-CT, including the 370 um thick substrate. The default size are the following: 100x100x22 um.
|
||||
|
||||
7) The mini tissue equivalent proportional counter (mini TEPC) developed by the INFN Laboratori Nazionali di Legnaro (A. Bianchi et al., Radiation Physics and Chemistry 202 (2023) 110567) is implemented in the code. In particular, TEPC are considered as the reference detectors employed in experimental microdosimetry according to ICRU, 1983. In the code a preliminary geometry of a mini TEPC with 0.5 mm radius, 1 mm height cylindrical propane sensitive volume at 408 mbar pressure is included. Validation of of the calculated microdosimetric spectra with the experimental data is in progress and will be completed soon. Therefore the implemented current geometry has to be considered as a demonstrative example of a typical mini TEPC used in microdosimetry.
|
||||
|
||||
The type of detectors, its shape, and its position can be set via the included "geometry.mac" macro.
|
||||
This macro is called in both the vis.mac and run.mac macro files, and include the following options:
|
||||
- a macro command to choose the type of detector between the above (/geometrySetup/selectDetector "...")
|
||||
@@ -47,18 +50,22 @@ This macro is called in both the vis.mac and run.mac macro files, and include th
|
||||
- a macro command for use with the water phantom to set the detector's width in water (/geometrySetup/detectorPosition/setDepth "...")
|
||||
The above only take effect only if the macro command /geometrySetup/applyChanges is applied. If the user forgets to run this last command a warning is issued at runtime.
|
||||
|
||||
An isotropic field of Galactic Cosmic Rays (GCR) protons is incident on the device.
|
||||
The energy deposition is calculated in the sensitive detectors.
|
||||
A parallel 1 mm radius circular proton beam at 60 MeV (gaussian) is simulated as default of the simulation (protonBeam.mac).
|
||||
Moreover, an isotropic field of Galactic Cosmic Rays (GCR) protons is available to the users.
|
||||
|
||||
NOTE: To maximise efficiency the field has been modelled with a limiting angle to reduce redundant events.
|
||||
|
||||
This macro contains a proton field of Galactic Cosmic Rays (GCR)
|
||||
The energy deposition of each primary and secondary particles traversing the detectors is calculated within the defined sensitive volume.
|
||||
|
||||
In particular in this example it is shown how to:
|
||||
- model a realistic isotropic field of GCRs by means of the General Particle Source
|
||||
- model a realistic detector in Geant4
|
||||
- model realistic experimental microdosimeters in Geant4
|
||||
- customise the detector's geometry and its position at runtime via macros
|
||||
- retrieve the information of secondary particles originated in the SV
|
||||
- define the physics by means of a Geant4 Modular Physics List
|
||||
- characterise the response of a realistic detector
|
||||
- save results in an analysis ROOT or plaintext csv file using the Geant4 analysis component.
|
||||
|
||||
- save results in an analysis ROOT or or plaintext csv file using the Geant4 analysis component.
|
||||
- model a realistic isotropic field of GCRs by means of the General Particle Source
|
||||
The example can be executed in multithreading mode
|
||||
|
||||
------------------------------------------------------------------------
|
||||
@@ -70,8 +77,8 @@ The diamond microdosimeter can be set either in vacuum (for space radioprotectio
|
||||
|
||||
All SV structures are active.
|
||||
|
||||
The primary radiation field is defined by means of the GeneralParticleSource in the file
|
||||
primary.mac
|
||||
The default radiation field is defined by means of the GeneralParticleSource in the file
|
||||
protonBeam.mac
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
----> 2.SET-UP
|
||||
@@ -106,11 +113,8 @@ Both scripts plot the microdosimetric spectrum resulting from the simulation, ca
|
||||
----> 4. Primary radiation Field
|
||||
|
||||
The radiation field is defined with the General Particle Source.
|
||||
Look at the macro primary.mac .
|
||||
Look at the macro protonBeam.mac .
|
||||
|
||||
NOTE: To maximise efficiency the field has been modelled with a limiting angle to reduce redundant events.
|
||||
|
||||
This macro contains a proton field of Galactic Cosmic Rays (GCR)
|
||||
If this example is used for medical applications (with a water phantom) the user is encouraged to replace this macro with one that might simulate a therapeutic beam of interest
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// experimental_microdosimetry.cc
|
||||
// Authors: Susanna Guatelli and Francesco Romano
|
||||
// susanna@uow.edu.au, francesco.romano@ct.infn.it
|
||||
// Authors: Susanna Guatelli, Giuliana Milluzzo and Francesco Romano
|
||||
// susanna@uow.edu.au, giuliana.milluzzo@ct.infn.it, francesco.romano@ct.infn.it
|
||||
|
||||
#include "G4RunManager.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Geant4 version Name: geant4-11-04-ref-00 (5-December-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -27,7 +27,6 @@ You have successfully registered the following graphics systems.
|
||||
Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
@@ -40,13 +39,12 @@ Registered graphics systems are:
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RTX)
|
||||
RayTracerQt (RTQt)
|
||||
Qt3D (Qt3D)
|
||||
TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_XT_GLES_FALLBACK)
|
||||
TOOLSSG_X11_ZB (TSG_X11_ZB, TSGX11ZB)
|
||||
TOOLSSG_XT_GLES (TSG_XT_GLES, TSGXt, TSG_QT_GLES_FALLBACK)
|
||||
TOOLSSG_XT_ZB (TSG_XT_ZB, TSGXtZB)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB, TSGZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
or you may omit the driver parameter and choose at run time:
|
||||
@@ -93,6 +91,7 @@ THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhys
|
||||
THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: HadronPhysicsQGSP_BIC_HP()
|
||||
THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: G4IonBinaryCascadePhysics()
|
||||
THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: G4RadioactiveDecayPhysics()
|
||||
Outputting to a csv file
|
||||
Checking overlaps for volume DiaVol_phys:0 (G4Box) ... OK!
|
||||
Checking overlaps for volume vacblock_phys:0 (G4Box) ... OK!
|
||||
Checking overlaps for volume Bdl_phys:0 (G4Box) ... OK!
|
||||
@@ -104,6 +103,12 @@ Checking overlaps for volume AlStrip_phys:0 (G4Box) ... OK!
|
||||
Checking overlaps for volume GoldCylinder1_phys:0 (G4Tubs) ... OK!
|
||||
Checking overlaps for volume GoldCylinder2_phys:0 (G4Tubs) ... OK!
|
||||
Checking overlaps for volume GoldCylinder3_phys:0 (G4Tubs) ... OK!
|
||||
|
||||
hInelastic QGSP_BIC_HP Thresholds:
|
||||
0) between BIC and BERT for p, n over the interval 1 to 1.5 GeV.
|
||||
1) between BERT and FTF/P over the interval 3 to 6 GeV.
|
||||
2) between FTF/P and QGS/P over the interval 12 to 25 GeV.
|
||||
-- quasiElastic: 1 for QGS and 0 for FTF
|
||||
@@@ G4ParticleHPInelasticData instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.7.1
|
||||
=======================================================================
|
||||
====== Electromagnetic Physics Parameters ========
|
||||
@@ -146,7 +151,7 @@ Lowest muon/hadron kinetic energy 1 keV
|
||||
Use ICRU90 data 1
|
||||
Fluctuations of dE/dx are enabled 1
|
||||
Type of fluctuation model for leptons and hadrons Urban
|
||||
Use built-in Birks satuaration 0
|
||||
Use built-in Birks saturation 0
|
||||
Build CSDA range enabled 0
|
||||
Use cut as a final range enabled 0
|
||||
Enable angular generator interface 1
|
||||
@@ -316,7 +321,7 @@ hBrems: for proton XStype:1 SubType=3
|
||||
hPairProd: for proton XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
|
||||
Sampling table 17x1001, from 7.50618 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -406,7 +411,7 @@ hBrems: for anti_proton XStype:1 SubType=3
|
||||
hPairProd: for anti_proton XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
|
||||
Sampling table 17x1001, from 7.50618 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -440,7 +445,7 @@ hBrems: for kaon+ XStype:1 SubType=3
|
||||
hPairProd: for kaon+ XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
|
||||
Sampling table 18x1001, from 3.94942 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -474,7 +479,7 @@ hBrems: for kaon- XStype:1 SubType=3
|
||||
hPairProd: for kaon- XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
|
||||
Sampling table 18x1001, from 3.94942 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -508,7 +513,7 @@ muBrems: for mu+ XStype:1 SubType=3
|
||||
muPairProd: for mu+ XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 21x1001 from 0.85 GeV to 100 TeV
|
||||
Sampling table 21x1001, from 0.85 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -542,7 +547,7 @@ muBrems: for mu- XStype:1 SubType=3
|
||||
muPairProd: for mu- XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 21x1001 from 0.85 GeV to 100 TeV
|
||||
Sampling table 21x1001, from 0.85 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -596,7 +601,7 @@ hBrems: for pi+ XStype:1 SubType=3
|
||||
hPairProd: for pi+ XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
|
||||
Sampling table 20x1001, from 1.11656 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -630,7 +635,7 @@ hBrems: for pi- XStype:1 SubType=3
|
||||
hPairProd: for pi- XStype:1 SubType=4
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
|
||||
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
|
||||
Sampling table 20x1001, from 1.11656 GeV to 100 TeV
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
|
||||
|
||||
@@ -779,18 +784,17 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Process: neutronInelastic
|
||||
Model: QGSP: 12 GeV ---> 100 TeV
|
||||
Model: FTFP: 3 GeV ---> 25 GeV
|
||||
Model: Binary Cascade: 19.9 MeV ---> 6 GeV
|
||||
Model: BertiniCascade: 1 GeV ---> 6 GeV
|
||||
Model: Binary Cascade: 19.9 MeV ---> 1.5 GeV
|
||||
Model: NeutronHPInelastic: 0 eV ---> 20 MeV
|
||||
Cr_sctns: NeutronHPInelasticXS: 0 eV ---> 20 MeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
|
||||
Process: nCapture
|
||||
Model: nRadCaptureHP: 0 eV ---> 20 MeV
|
||||
Model: nRadCapture: 19.9 MeV ---> 100 TeV
|
||||
Process: nCaptureHP
|
||||
Model: nRadCaptureHP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: NeutronHPCaptureXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
|
||||
Process: nFission
|
||||
Process: nFissionHP
|
||||
Model: NeutronHPFission: 0 eV ---> 20 MeV
|
||||
Model: G4LFission: 19.9 MeV ---> 100 TeV
|
||||
Cr_sctns: NeutronHPFissionXS: 0 eV ---> 20 MeV
|
||||
Cr_sctns: ZeroXS: 0 eV ---> 100 TeV
|
||||
-----------------------------------------------------------------------
|
||||
@@ -821,7 +825,8 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Process: protonInelastic
|
||||
Model: QGSP: 12 GeV ---> 100 TeV
|
||||
Model: FTFP: 3 GeV ---> 25 GeV
|
||||
Model: Binary Cascade: 0 eV ---> 6 GeV
|
||||
Model: BertiniCascade: 1 GeV ---> 6 GeV
|
||||
Model: Binary Cascade: 0 eV ---> 1.5 GeV
|
||||
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
|
||||
-----------------------------------------------------------------------
|
||||
Hadronic Processes for sigma-
|
||||
@@ -849,8 +854,8 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Type of pre-compound model 0
|
||||
Type of pre-compound inverse x-section 1
|
||||
Pre-compound model active 1
|
||||
Pre-compound excitation low energy 100 keV
|
||||
Pre-compound excitation high energy 30 MeV
|
||||
Pre-compound excitation low energy 0.1 MeV
|
||||
Pre-compound excitation high energy 15 MeV
|
||||
Angular generator for pre-compound model 1
|
||||
Use NeverGoBack option for pre-compound model 0
|
||||
Use SoftCutOff option for pre-compound model 0
|
||||
@@ -864,13 +869,12 @@ Type of de-excitation inverse x-section 3
|
||||
Type of de-excitation factory Evaporation+GEM
|
||||
Number of de-excitation channels 68
|
||||
Type of Fermi BreakUp model ModelVI
|
||||
Min excitation energy 10 eV
|
||||
Min energy per nucleon for multifragmentation 200 GeV
|
||||
Limit excitation energy for Fermi BreakUp 20 MeV
|
||||
Min excitation energy 0.01 keV
|
||||
Min energy per nucleon for multifragmentation 2e+05 MeV
|
||||
Level density (1/MeV) 0.075
|
||||
Use simple level density model 1
|
||||
Use discrete excitation energy of the residual 0
|
||||
Time limit for long lived isomeres 1000 ps
|
||||
Time limit for long lived isomeres 1 ns
|
||||
Isomer production flag 1
|
||||
Internal e- conversion flag 1
|
||||
Store e- internal conversion data 1
|
||||
@@ -918,26 +922,28 @@ Index : 4 used in the geometry : Yes
|
||||
==================================================================
|
||||
|
||||
### Run 0 start.
|
||||
... set ntuple merging mode : G4NtupleMergeMode::kNone - done
|
||||
... set ntuple merging mode : G4NtupleMergeMode::kNone - done
|
||||
... set ntuple merging row mode : row-wise - done
|
||||
... create directory for ntuples : experimental_microdosimetry_ntuple - done
|
||||
... create file : experimental_microdosimetry.root - done
|
||||
... open analysis file : experimental_microdosimetry.root - done
|
||||
... open analysis file : experimental_microdosimetry.root - done
|
||||
... open analysis file : experimental_microdosimetry.csv - done
|
||||
... create ntuple booking : 101 ntupleId 1 - done
|
||||
... create ntuple T column : Ek ntupleId 1 - done
|
||||
... create file : experimental_microdosimetry_nt_101.csv - done
|
||||
... create ntuple booking : 102 ntupleId 2 - done
|
||||
... create ntuple T column : edep ntupleId 2 - done
|
||||
... create ntuple T column : len ntupleId 2 - done
|
||||
... create file : experimental_microdosimetry_nt_102.csv - done
|
||||
... create ntuple booking : 103 ntupleId 3 - done
|
||||
... create ntuple T column : AA ntupleId 3 - done
|
||||
... create ntuple T column : ZZ ntupleId 3 - done
|
||||
... create ntuple T column : KE ntupleId 3 - done
|
||||
... create file : experimental_microdosimetry_nt_103.csv - done
|
||||
Simulating the Diamond detector with dimensions: 30 um width, 10 um thickness.
|
||||
Number of events = 1000
|
||||
... write file : experimental_microdosimetry.root - done
|
||||
... close file : experimental_microdosimetry.root - done
|
||||
... write file : experimental_microdosimetry_nt_101.csv - done
|
||||
... write file : experimental_microdosimetry_nt_102.csv - done
|
||||
... write file : experimental_microdosimetry_nt_103.csv - done
|
||||
... close file : experimental_microdosimetry_nt_101.csv - done
|
||||
... close file : experimental_microdosimetry_nt_102.csv - done
|
||||
... close file : experimental_microdosimetry_nt_103.csv - done
|
||||
... delete empty file : experimental_microdosimetry_nt_103.csv - done
|
||||
... clear files - done
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#/geometrySetup/selectDetector SiliconBridge
|
||||
#/geometrySetup/selectDetector DiamondTelescope
|
||||
#/geometrySetup/selectDetector SiCDetector
|
||||
#/geometrySetup/selectDetector TEPC
|
||||
|
||||
# Uncomment to change the detector's width and/or thickness
|
||||
# Otherwise default values are used
|
||||
|
||||
@@ -72,6 +72,7 @@ private:
|
||||
void ConstructSiliconBridgeDetector();
|
||||
void ConstructDiamondTelescope();
|
||||
void ConstructSiC();
|
||||
void ConstructTEPC();
|
||||
|
||||
// store these variable across various Construct*() above
|
||||
G4VPhysicalVolume* physical_world;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Uncomment the following line to disable ROOT output
|
||||
# and enable plaintext csv instead
|
||||
#/analysis/useRoot false
|
||||
/analysis/useRoot false
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
/run/initialize
|
||||
####
|
||||
##########################
|
||||
#define incident particle
|
||||
/gps/particle proton
|
||||
|
||||
##########################
|
||||
# Monoenergetic parallel proton beam
|
||||
##########################
|
||||
|
||||
/gps/pos/shape Circle
|
||||
/gps/pos/centre 0. 0. 1. cm
|
||||
/gps/pos/radius 1. mm
|
||||
/gps/pos/sigma_r 0.3. mm
|
||||
|
||||
/gps/pos/type Beam
|
||||
#
|
||||
/gps/ang/type beam1d
|
||||
/gps/ang/sigma_r 0.1 deg
|
||||
#
|
||||
/gps/ene/type Gauss
|
||||
/gps/ene/mono 60 MeV
|
||||
/gps/ene/sigma 0.2 MeV
|
||||
|
||||
/run/beamOn 10
|
||||
@@ -88,6 +88,10 @@ G4VPhysicalVolume* DetectorConstruction::Construct()
|
||||
else if( detectorType == "SiliconBridge" ) ConstructSiliconBridgeDetector();
|
||||
else if( detectorType == "DiamondTelescope" ) ConstructDiamondTelescope();
|
||||
else if( detectorType == "SiCDetector") ConstructSiC();
|
||||
else if( detectorType == "TEPC") ConstructTEPC(); ///////////
|
||||
|
||||
|
||||
|
||||
else
|
||||
{
|
||||
G4cout << "ERROR: " << detectorType << " is not an allowed detector type. ";
|
||||
@@ -1066,55 +1070,124 @@ void DetectorConstruction::ConstructSiC()
|
||||
{
|
||||
|
||||
//Define SiC
|
||||
G4double A = 12.01 * g/mole;
|
||||
G4double Z = 6;
|
||||
G4double A_Si=28.086*g/mole;
|
||||
G4double Z_Si=14;
|
||||
G4double density_SiC=3.22*g/cm3;
|
||||
G4Element *Si=new G4Element("Silicum","Si",Z_Si,A_Si);
|
||||
G4Element *C=new G4Element("Carbon","C",Z,A);
|
||||
G4Material *SiC=new G4Material("SiC", density_SiC,2);
|
||||
SiC->AddElement(Si,1);
|
||||
SiC->AddElement(C,1);
|
||||
|
||||
G4double A = 12.01 * g/mole;
|
||||
G4double Z = 6;
|
||||
G4double A_Si=28.086*g/mole;
|
||||
G4double Z_Si=14;
|
||||
G4double density_SiC=3.22*g/cm3;
|
||||
G4Element *Si=new G4Element("Silicum","Si",Z_Si,A_Si);
|
||||
G4Element *C=new G4Element("Carbon","C",Z,A);
|
||||
G4Material *SiC=new G4Material("SiC", density_SiC,2);
|
||||
SiC->AddElement(Si,1);
|
||||
SiC->AddElement(C,1);
|
||||
/*G4Material *airNist = G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR", isotopes);
|
||||
G4Material *Silicon = G4NistManager::Instance()->FindOrBuildMaterial("G4_Si", isotopes);*/
|
||||
|
||||
|
||||
detectorSizeWidth=0.1*mm;
|
||||
detectorSizeThickness=22*um;//10*um;
|
||||
|
||||
G4double substrate_thickness=370*um;
|
||||
|
||||
G4double SV_x = detectorSizeWidth/2;
|
||||
G4double SV_y = detectorSizeWidth/2;
|
||||
G4double SV_z = detectorSizeThickness/2;
|
||||
|
||||
G4Box* SV_box = new G4Box("SV_box",SV_x,SV_y,SV_z);
|
||||
|
||||
G4LogicalVolume* logical_SV = new G4LogicalVolume(SV_box, SiC, "SV_log", 0,0,0);
|
||||
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,-SV_z), logical_SV,"SV_phys1",
|
||||
detectorSizeWidth=0.1*mm;
|
||||
detectorSizeThickness=22*um;//10*um;
|
||||
G4double substrate_thickness=370*um;
|
||||
G4double SV_x = detectorSizeWidth/2;
|
||||
G4double SV_y = detectorSizeWidth/2;
|
||||
G4double SV_z = detectorSizeThickness/2;
|
||||
G4Box* SV_box = new G4Box("SV_box",SV_x,SV_y,SV_z);
|
||||
G4LogicalVolume* logical_SV = new G4LogicalVolume(SV_box, SiC, "SV_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,-SV_z), logical_SV,"SV_phys1",
|
||||
logical_motherVolumeForDetector,false, 0, true);
|
||||
|
||||
|
||||
G4Box* Substrate_box = new G4Box("Substrate_box",SV_x,SV_y,substrate_thickness/2);
|
||||
|
||||
|
||||
G4Box* Substrate_box = new G4Box("Substrate_box",SV_x,SV_y,substrate_thickness/2);
|
||||
G4LogicalVolume* logical_substrate = new G4LogicalVolume(Substrate_box, SiC, "substrate_log", 0,0,0);
|
||||
|
||||
new G4PVPlacement(0, G4ThreeVector(0,0,-2*SV_z-substrate_thickness/2), logical_substrate,"substrate_phys",
|
||||
logical_motherVolumeForDetector,
|
||||
false, 0, true);
|
||||
|
||||
|
||||
false, 0, true);
|
||||
// Visualisation attributes
|
||||
|
||||
G4VisAttributes vis_SV(G4Colour(198, 226, 255));
|
||||
vis_SV.SetForceSolid(true);
|
||||
logical_SV -> SetVisAttributes(vis_SV);
|
||||
}
|
||||
|
||||
void DetectorConstruction::ConstructTEPC()
|
||||
{
|
||||
//Define polystirene
|
||||
G4Material* polys = nistMan->FindOrBuildMaterial("G4_POLYSTYRENE");
|
||||
//Define Aluminum
|
||||
G4Material* aluminum = nistMan->FindOrBuildMaterial("G4_Al");
|
||||
//Define A150
|
||||
G4Material* a_150 = nistMan->FindOrBuildMaterial("G4_A-150_TISSUE");
|
||||
//Define propane
|
||||
//G4Material* propane = nistMan->FindOrBuildMaterial("G4_PROPANE");
|
||||
// define gas material at non STP conditions
|
||||
G4Material* propane_mat = nistMan->ConstructNewGasMaterial("propane_mat","G4_PROPANE",293.*kelvin,408*bar*0.001);
|
||||
G4double MotherRadius=7.5*mm; ///Cylinder 1
|
||||
G4double MotherHeight=50*mm;
|
||||
G4double MotherInt_ExtRadius=7.5*mm; ///Cylinder 2
|
||||
G4double MotherInt_IntRadius=7.25*mm;
|
||||
G4double MotherTEPC_Radius=1.5*mm; ///Cylinder 3
|
||||
G4double MotherTEPC_Height=10*mm;
|
||||
G4double Al_TEPC_Radius=1.5*mm; ///Cylinder 4 & 5
|
||||
G4double Al_TEPC_Height=2*mm;
|
||||
G4double A150_TEPC_ExtRadius=1.5*mm; ///Cylinder 6
|
||||
G4double A150_TEPC_IntRadius=0.5*mm;
|
||||
G4double A150_TEPC_Height=2*mm;
|
||||
G4double TEPC_Radius=0.5*mm; ///Cylinder 7---> sensitive volume
|
||||
G4double TEPC_Height=1*mm;
|
||||
G4double phi = 90. * deg;
|
||||
G4RotationMatrix rm;
|
||||
rm.rotateY(phi);
|
||||
G4Tubs* MotherVolume= new G4Tubs("MotherVolume", 0,
|
||||
MotherRadius,
|
||||
MotherHeight/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_Mother = new G4LogicalVolume(MotherVolume, polys, "Mother_log", 0,0,0);
|
||||
new G4PVPlacement(G4Transform3D(rm,G4ThreeVector(0*cm,0*mm,0*mm)),logical_Mother,"Mother_phys",logical_motherVolumeForDetector,
|
||||
false, 0,true);
|
||||
G4VisAttributes*white;
|
||||
white= new G4VisAttributes(G4Colour(198, 226, 255));
|
||||
// Mothercolour.SetForceSolid(true);
|
||||
white->SetVisibility(true);
|
||||
logical_Mother -> SetVisAttributes(white);
|
||||
//ALUMINUM
|
||||
G4Tubs* MotherIntVolume= new G4Tubs("MotherIntVolume",MotherInt_IntRadius ,
|
||||
MotherInt_ExtRadius,
|
||||
MotherHeight/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_IntMother = new G4LogicalVolume(MotherIntVolume, aluminum, "MotherInt_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,0*mm),logical_IntMother,"MotherInt_phys",logical_Mother,
|
||||
false, 0, true);
|
||||
///////// ///////// ///////// TEPC ///////// ///////// ///////// ///////// /////////
|
||||
G4Tubs* MotherTEPC= new G4Tubs("MotherTEPC",0,
|
||||
MotherTEPC_Radius,
|
||||
MotherTEPC_Height/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_MotherTEPC = new G4LogicalVolume(MotherTEPC, polys, "MotherTEPC_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,0*mm),logical_MotherTEPC,"logical_MotherTEPC_phys",logical_Mother,
|
||||
false, 0, true);
|
||||
G4Tubs* Al_TEPC= new G4Tubs("Al_TEPC",0,
|
||||
Al_TEPC_Radius,
|
||||
Al_TEPC_Height/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_Al_TEPC = new G4LogicalVolume(Al_TEPC, aluminum, "Al_TEPC_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,4*mm),logical_Al_TEPC,"Al_TEPC_phys1",logical_MotherTEPC,
|
||||
false, 0, true);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,-4*mm),logical_Al_TEPC,"Al_TEPC_phys2",logical_MotherTEPC,
|
||||
false, 0,true);
|
||||
G4Tubs* A150_TEPC= new G4Tubs("A150_TEPC",A150_TEPC_IntRadius ,
|
||||
A150_TEPC_ExtRadius,
|
||||
A150_TEPC_Height/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_A150_TEPC = new G4LogicalVolume(A150_TEPC, a_150, "A150_TEPC_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,0*mm),logical_A150_TEPC,"logical_A150_TEPC_phys",logical_MotherTEPC,
|
||||
false, 0,true);
|
||||
G4Tubs* TEPC= new G4Tubs("Sv_box",
|
||||
0,
|
||||
TEPC_Radius,
|
||||
TEPC_Height/2,
|
||||
0*deg,360*deg);
|
||||
G4LogicalVolume* logical_SV = new G4LogicalVolume(TEPC, propane_mat, "SV_log", 0,0,0);
|
||||
new G4PVPlacement(0, G4ThreeVector(0*mm,0*mm,0*mm),logical_SV,"SV_phys",logical_MotherTEPC,
|
||||
false, 0,true);
|
||||
G4VisAttributes SVcolour(G4Colour(0.5, 0.5, 0.5));
|
||||
SVcolour.SetForceSolid(true);
|
||||
logical_SV -> SetVisAttributes(SVcolour);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void DetectorConstruction::ConstructSDandField()
|
||||
@@ -1122,7 +1195,6 @@ void DetectorConstruction::ConstructSDandField()
|
||||
SensitiveDetector* SD = new SensitiveDetector("SD", "DetectorHitsCollection", true, analysis);
|
||||
G4SDManager::GetSDMpointer()->AddNewDetector(SD);
|
||||
SetSensitiveDetector("SV_log", SD);
|
||||
|
||||
if (detectorType == "SiliconBridge")
|
||||
{
|
||||
SetSensitiveDetector("bridgeVol_log", SD);
|
||||
|
||||
@@ -142,7 +142,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String commandConten
|
||||
|
||||
if( command == changeTheDetectorCmd )
|
||||
{
|
||||
if( commandContent == "Diamond" || commandContent == "MicroDiamond" || commandContent == "Silicon" || commandContent == "SiliconBridge" || commandContent == "SiCDetector" || commandContent == "DiamondTelescope")
|
||||
if( commandContent == "Diamond" || commandContent == "MicroDiamond" || commandContent == "Silicon" || commandContent == "SiliconBridge" || commandContent == "SiCDetector" || commandContent == "DiamondTelescope" || commandContent == "TEPC")
|
||||
{
|
||||
detectorType = commandContent;
|
||||
geometryHasChanged = true;
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
/control/execute physics.mac
|
||||
/control/execute output.mac
|
||||
/run/initialize
|
||||
/control/execute primary.mac
|
||||
/control/execute protonBeam.mac
|
||||
#
|
||||
# Open a viewer
|
||||
/vis/open
|
||||
/vis/open OGLSQt
|
||||
# This opens the default viewer - see examples/basic/B1/vis.mac for a
|
||||
# more comprehensive overview of options. Also the documentation.
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user