Import Geant4 11.4.0.beta source tree
This commit is contained in:
@@ -21,7 +21,6 @@ readability-duplicate-include, \
|
||||
readability-string-compare"
|
||||
WarningsAsErrors: ''
|
||||
HeaderFilterRegex: ''
|
||||
AnalyzeTemporaryDtors: false
|
||||
FormatStyle: file
|
||||
CheckOptions:
|
||||
- key: modernize-use-auto.RemoveStars
|
||||
|
||||
+2
-2
@@ -30,8 +30,8 @@ project(Geant4
|
||||
DESCRIPTION "C++ toolkit for simulating the passage of particles through matter"
|
||||
HOMEPAGE_URL "https://geant4.cern.ch")
|
||||
set(${PROJECT_NAME}_VERSION_MAJOR 11)
|
||||
set(${PROJECT_NAME}_VERSION_MINOR 3)
|
||||
set(${PROJECT_NAME}_VERSION_PATCH 2)
|
||||
set(${PROJECT_NAME}_VERSION_MINOR 4)
|
||||
set(${PROJECT_NAME}_VERSION_PATCH 0)
|
||||
set(${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}")
|
||||
|
||||
# - Prepend our own CMake Modules to the search path
|
||||
|
||||
@@ -0,0 +1,802 @@
|
||||
|
||||
Geant4 11.4-beta-01 Release Notes
|
||||
---------------------------------
|
||||
|
||||
26 June 2025
|
||||
|
||||
Migration Notes & Main New Features
|
||||
-----------------------------------
|
||||
|
||||
o New "@@" keyword to be used in UI commands taking a macro file name;
|
||||
it allows to create a temporary macro file with the commands being
|
||||
defined following it, until a "/control/endRecord" command is specified.
|
||||
o New utility class G4VSIntegration, for integration of probability density
|
||||
function and dynamically sampling of final state.
|
||||
o Enabled voxelisation parallelism by default in G4GeometryManager, when
|
||||
MT/tasks are enabled. Enabled also for potential 2nd (and later) calls.
|
||||
o Code optimization in GetPointOnSurface() in specific shapes.
|
||||
Optimised surface area and cubic volume calculation of several geometrical
|
||||
primitives.
|
||||
o Updated implementation of QSS integration method to QSS version-2.
|
||||
o Extended UI command "/geometry/test/run" to support optional overlap check
|
||||
mode to check for overlaps in the volume tree without duplication in
|
||||
identical logical volumes.
|
||||
o New base class G4VXRayModel for models of X-ray processes.
|
||||
o New G4LowPAIH2O model for dE/dx in water for p and e-.
|
||||
o In G4Scintillation and G4Cerenkov, build the integral tables only for
|
||||
materials that have non-empty material property tables.
|
||||
o Implemented new option to enable/disable fluctuation of energy loss per
|
||||
G4Region.
|
||||
o Introduced usage of the new ion ionisation model in DNA Opt8 physics
|
||||
configuration.
|
||||
o New class G4DNABornIonisationModel, a new implementation of the Born model
|
||||
using a new class G4DNASamplingTable, which allows the sharing of sampling
|
||||
data between threads.
|
||||
o New class G4ChemReboundTransportation to handle the rebound transportation
|
||||
of the molecule.
|
||||
o New classes with alternative pre-compound model.
|
||||
o In G4HadronicProcess, removed warning for the case when K0 and anti-K0
|
||||
are transformed into K0S or K0L.
|
||||
o Updated algorithms of integration of probabilities and sampling of kinetic
|
||||
energy for emitted fragment in hadronic de-excitation and pre-equilibrium.
|
||||
Expected more accurate spectra.
|
||||
o New alternative hadronic de-excitation FermiBreakUp model, G4FermiBreakUpAN,
|
||||
and support classes.
|
||||
o Major update of GIDIplus interface in LEND hadronic model, with refactored
|
||||
C++ code, including use of official GNDS formatted data. Added feature for
|
||||
high-fidelity gamma cascades following reactions such as neutron capture
|
||||
and inelastic scattering.
|
||||
o Added G4HadronPhysicsLEND in physics-lists to configure neutron and photon
|
||||
induced processes from LEND.
|
||||
o First version of generic time windowing of trajectory slices in
|
||||
visualisation. Introduced Time Window tab in Qt UI.
|
||||
o Introducing RayTracerQt visualisation driver, enabled when GEANT4_USE_QT
|
||||
configuration is enabled.
|
||||
o Set default configuration to use Qt6 when selecting Qt support.
|
||||
User must set GEANT4_USE_QT_QT5 to force find/use of Qt5.
|
||||
o Make the TSG driver the "flagship" visualization driver.
|
||||
o Re-instated transparency slider in visualization GUI.
|
||||
o In G4OpenGLQtViewer, fixed the original pick feature, which was
|
||||
inadvertently broken, to show pick info window.
|
||||
o Introduced the CaloDiT pre-trained ML model for fast simulation
|
||||
in Par04 example, offering greater accuracy.
|
||||
o Build option with VecGeom requires VecGeom v1.2.11 or v2.0.0-rc.5.
|
||||
o Requiring CLHEP-2.4.7.1 for external CLHEP installation.
|
||||
o New versions of datasets: G4EMLOW-8.7.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Technical Notes
|
||||
---------------
|
||||
|
||||
o Tested platforms:
|
||||
+ Linux, gcc-15.2.0.
|
||||
Tested on 64 bit architectures (Intel or AMD) with Alma Linux 9
|
||||
(based on RedHat Linux Enterprise 9). Versions of Geant4 have also
|
||||
been compiled successfully on other Linux distributions, Ubuntu,
|
||||
Debian, Suse or other RedHat systems.
|
||||
+ MacOS 15.5, Apple LLVM/clang-17 (Intel or Apple Silicon), 64 bits.
|
||||
+ Windows/11 with Visual C++ 14.4 (Visual Studio 2022), 64 bits.
|
||||
|
||||
o More verified configurations:
|
||||
+ Linux, with gcc-11.5/12.1/13.2/14.2, clang-19/20.
|
||||
+ Linux, with Intel-icx 2024.2.
|
||||
+ MacOS 13.7/14.7, with Apple LLVM/clang-15/16.
|
||||
+ Windows/10 with Visual C++ 14.36 (Visual Studio 2022)
|
||||
|
||||
o External dependencies
|
||||
+ CLHEP-2.4.7.1, required for external installation of the CLHEP library.
|
||||
+ VecGeom v1.2.11 or v2.0.0-rc.5, for optional use of VecGeom primitives.
|
||||
+ PTL-3.0.1, for external installation of the PTL tasking library.
|
||||
|
||||
o New datasets:
|
||||
+ G4EMLOW-8.7.
|
||||
|
||||
Please refer to the Geant4 User Documentation:
|
||||
https://cern.ch/geant4/support/user_documentation
|
||||
for further information about using Geant4.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
List of features and fixes included in this Beta release since 11.3.p02:
|
||||
|
||||
o Configuration:
|
||||
-------------
|
||||
+ CMake:
|
||||
o Set default configuration to use Qt6 when selecting Qt support.
|
||||
User must set GEANT4_USE_QT_QT5 to force find/use of Qt5.
|
||||
o Include external categories (G4zlib etc) in link resolution for unit
|
||||
test executables.
|
||||
o Export CMAKE_EXPORT_COMPILE_COMMANDS setting from toolkit to the build
|
||||
of any test done by geant4_add_test to assist use of clang-tidy and
|
||||
other tooling.
|
||||
o Add ENVIRONMENT to any build step of geant4_add_test for consistency
|
||||
and to allow easier propagation of additional build settings.
|
||||
o Updated to datasets: G4EMLOW-8.7.
|
||||
+ GNUmake:
|
||||
o Updated system scripts for Qt settings: set Qt6 as default.
|
||||
o Correction in generation of geant.[c]sh and geant4.bat on Windows.
|
||||
|
||||
o Analysis:
|
||||
--------
|
||||
+ New implementation of generic 'G4Analysis::GetHnType()' and 'IsProfile()'
|
||||
functions, which do not rely on the histogram/profile name position in
|
||||
the long type name provided via tools 's_class()'.
|
||||
+ Modernized g4tools macro-based for loops with range-based for.
|
||||
|
||||
o Externals:
|
||||
---------
|
||||
+ g4tools:
|
||||
o Updated to version 6.5.1.
|
||||
o Implemented windows_size and render_area_size methods; fixed setting of
|
||||
mouse position in the wheel_rotation_event. Handle the shift and control
|
||||
modifiers in the mouse_[down,up,move]_event and wheel_rotation_event.
|
||||
o In glarea, in mouseMoveEvent() for Qt5, corrected a bad cut/paste when
|
||||
creating the mouse_move_event.
|
||||
o In *ntuple, fix in the initialise() method, to switch from "warning" to
|
||||
"error" and return false if the name of a booking column is not found
|
||||
in the file. Addressing problem report #2657.
|
||||
+ zlib:
|
||||
o Updated zlib to version 1.3.1. Prior Geant4 patches are retained.
|
||||
|
||||
o Geometry:
|
||||
--------
|
||||
+ magneticfield:
|
||||
o Updated implementation of QSS integration method to QSS version-2.
|
||||
+ management:
|
||||
o Enabled voxelisation parallelism by default in G4GeometryManager, when
|
||||
MT/tasks are enabled. Enabled also for potential 2nd (and later) calls
|
||||
in runs after geometry was changed.
|
||||
o G4VSolid: set seed in EvaluateCubicVolume() and EvaluateSurfaceArea()
|
||||
to ensure reproducibility of the resulting value.
|
||||
o G4GeomTools: added functions HyperboloidSurfaceArea(), HypeStereo()
|
||||
and TwistedTubeBoundingTrap().
|
||||
o Applied clang-tidy fixes fixes (readability, modernization,
|
||||
performance, ...) based on llvm version 19.1.17.
|
||||
+ navigation:
|
||||
o Extended UI command "/geometry/test/run" to support optional overlap
|
||||
check mode: depending on the selected mode, it invokes either
|
||||
'TestRecursiveOverlap' (default and original algorithm) or
|
||||
'TestOverlapInTree', allowing to check for overlaps in the volume tree
|
||||
without duplication in identical logical volumes.
|
||||
o Reorganised and enriched comments in headers to follow Doxygen style.
|
||||
o Removed declared but not implemented methods in G4VoxelNavigation,
|
||||
G4ParameterisedNavigation, G4VoxelSafety and G4PathFinder.
|
||||
+ solids/Boolean:
|
||||
o G4MultiUnion: fix in GetSurfaceArea() and some optimisation to use
|
||||
G4QuickRand(). In GetLocalPoint(), GetLocalVector(), GetGlobalPoint()
|
||||
and GetGlobalVector(), make direct usage of the transformation matrix
|
||||
elements.
|
||||
+ solids/CSG:
|
||||
o G4Box: code restructuring in DistanceToOut() methods.
|
||||
o G4Orb: provide faster algorithm in GetPointOnSurface().
|
||||
o G4Para: speedup calculation of surface area in GetSurfaceArea() and
|
||||
GetPointOnSurface().
|
||||
o G4Box, G4Para, G4Trd: code optimization in GetPointOnSurface().
|
||||
o G4Torus: implemented uniform sampling of random points on surface.
|
||||
+ solids/specific:
|
||||
o G4Ellipsoid, G4EllipticalTube: code optimization in GetPointOnSurface().
|
||||
o G4TessellatedSolid, G4TriangularFacet, G4QuadrangularFacet: use
|
||||
G4QuickRand() for generating points on surface.
|
||||
o G4EllipticalCone: code optimization in GetPointOnSurface(); moved
|
||||
setters implementations to source.
|
||||
o G4Paraboloid: implemented uniform sampling of random points on surface.
|
||||
o G4Hype: revised surface area calculation and random point sampling.
|
||||
Code optimization in GetPointOnSurface().
|
||||
o Use G4QuickRand() in G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide,
|
||||
G4TwistedTubs, G4VCSGfaceted and G4VTwistedFaceted for sampling points
|
||||
on surface.
|
||||
o G4EllipticalCone, G4EllipticalTube, G4Voxelizer: removed unnecessary
|
||||
headers.
|
||||
+ volumes:
|
||||
o Fix to only delete the logical skin/border surfaces if the geometry
|
||||
is not closed.
|
||||
o Reorganised and enriched comments in headers to follow Doxygen style.
|
||||
o Applied clang-tidy fixes for readability, based on llvm version 19.1.7.
|
||||
|
||||
o Global:
|
||||
------
|
||||
+ Factored common ieee754 union and helper functions out of G4Log and
|
||||
G4Exp to remove code duplication.
|
||||
+ G4VSIntegration: added new utility class for integration of probability
|
||||
density function and dynamically sampling of final state. This is useful
|
||||
for the case when sampling tables cannot be prepared and stored, instead
|
||||
computations are performed for each case again and again.
|
||||
+ G4QuickRand: Added a possibility to set a seed.
|
||||
+ Changed date for release 11.4-beta.
|
||||
|
||||
o Graphics Representations:
|
||||
------------------------
|
||||
+ Re-instated transparency slider in GUI.
|
||||
+ G4VGraphicsScene: added 'fMaxGeometryDepth' data member and
|
||||
corresponding access functions.
|
||||
|
||||
o Intercoms:
|
||||
---------
|
||||
+ In G4UImanager and G4UIcontrolMessenger, introducing "@@" keyword that
|
||||
can be placed in any UI command taking a macro file name. It creates a
|
||||
temporary macro file with defined commands until the "/control/endRecord"
|
||||
command is specified. The "@@" mechanism works recursively.
|
||||
If a file name is enclosed in a pair of "@", that macro file is created.
|
||||
The mechanism works for both interactive mode and batch mode. When used
|
||||
in interactive mode with Qt GUI, one can use up-arrow, tab-key and
|
||||
clickable menu in left-side bar to complete a command.
|
||||
|
||||
o Interfaces:
|
||||
----------
|
||||
+ G4UIQt: re-instated transparency slider.
|
||||
Introduced Time Window tab. This exploits generic time windowing
|
||||
recently introduced in visualisation. Currently, it doesn't work with
|
||||
OGL in Qt6. The TSG visualisation driver works fine with both Qt5 and
|
||||
Qt6, except line width is not implemented.
|
||||
Simplified and improved touchable dump, using QScrollArea instead of
|
||||
QMessage. Improved pick info window size.
|
||||
+ General code tidy.
|
||||
|
||||
o Persistency:
|
||||
-----------
|
||||
+ gdml:
|
||||
o Fix to pre-pend '0x' string before the address when writing entities
|
||||
on Windows platform. Addressing problem report #2322.
|
||||
|
||||
o Physics Lists:
|
||||
-------------
|
||||
+ Builders:
|
||||
o In G4HadronPHPBuilder, G4ParticleHPCapture and G4ParticleHPCaptureData
|
||||
are replaced by G4NeutronRadCaptureHP and G4NeutronHPCaptureData,
|
||||
respectively.
|
||||
The first allows the use of the full list of updated PhotonEvaporation
|
||||
data set, while for the second it is only a change of the name, the
|
||||
data are the same. Addressing problem report #2660.
|
||||
+ Constructors:
|
||||
o electromagnetic:
|
||||
- G4GeneralGammaProcess: updated destructor according to modification
|
||||
in electromagnetic/utils.
|
||||
- G4EmDNABuilder: use G4DNABornIonisationModel1 for proton ionisation.
|
||||
For Opt8 configuration, use the same configuration of models for e-
|
||||
and protons as in Opt2.
|
||||
- In all DNA constructors the upper limit for DNA models for ions is
|
||||
set to 300 MeV instead of 400 MeV; for increase/decrease processes
|
||||
it is set to 100 MeV; for ionisation of hydrogen it is set to 100 MeV.
|
||||
- G4EmDNAPhysics_option6: disabled "fast" flag in order to have
|
||||
comparisons with Opt4 in the same set of general DNA parameters.
|
||||
- G4EmDNAPhysics_stationary_X constructors: added deprecation warning,
|
||||
indicating that these constructors are now obsolete.
|
||||
- G4EmDNABuilder, G4EmDNAPhysicsActivator: introduced usage of the
|
||||
new ion ionisation model in DNA Opt8 physics configuration.
|
||||
- G4EmDNAPhysics, G4EmDNAPhysics_option2, G4EmDNAPhysics_option4,
|
||||
G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: updated interface to
|
||||
G4EmDNABuilder.
|
||||
o gamma_lepto_nuclear:
|
||||
- G4EmExtraPhysics: removed LEND photo-nuclear; it is now selected by
|
||||
G4HadronPhysicsLEND.
|
||||
o hadron_elastic:
|
||||
- In G4ChargeExchangePhysics, fixed usage of the messenger.
|
||||
o hadron_inelastic:
|
||||
- In G4HadrocPhysicsQBBC, disabled General Neutron Process.
|
||||
Addressing problem reports #2558 and #2559.
|
||||
- Added G4HadronPhysicsLEND to define neutron and photon induced
|
||||
processes from LEND.
|
||||
- G4HadronPhysicsShielding: removed LEND neutron process, now selected
|
||||
by G4HadronPhysicsLEND.
|
||||
+ Lists:
|
||||
o G4PhysListFactory: prevent fallback to default physics list when an
|
||||
invalid name is provided. Now, if a user specifies an unknown physics
|
||||
list, Geant4 will throw a fatal error instead of silently using
|
||||
FTFP_BERT. This ensures that users are aware of incorrect configurations
|
||||
and helps preventing unintended simulation results.
|
||||
o In QBBC physics list, added G4ChargeExchangePhysics.
|
||||
o In Shielding physics list, simplified logic tree for inelastic models
|
||||
and moved all LEND hadronic inelastic processes to G4HadronPhysicsLEND.
|
||||
|
||||
o Electromagnetic Processes:
|
||||
-------------------------
|
||||
+ DNA:
|
||||
o Added new G4DNARuddIonisationDynamicModel, which uses charge from
|
||||
G4DynamicParticle. The model is applicable for all ions.
|
||||
o G4DNABornIonisationModel: new implementation of the Born model using
|
||||
G4DNASamplingTable class; use stationary and fast flags from EM
|
||||
parameters.
|
||||
o G4DNARuddIonisationModel, G4DNABornIonisationModel1 and
|
||||
G4DNABornIonisationModel2: fixed definition of the stationary code via
|
||||
G4EmParameters.
|
||||
o G4DNASamplingTable, new class allowing the sharing of sampling data
|
||||
between threads.
|
||||
o Updated IRT-syn model for high LET applications.
|
||||
o Correction in the G4DNAScavengerProcess for IRT-syn model.
|
||||
o Created G4ChemReboundTransportation to handle the rebound transportation
|
||||
of the molecule.
|
||||
o Replaced the G4MoleculeCounter singleton with G4MoleculeCounterManager
|
||||
for managing counters.
|
||||
o Replaced shared_ptr with unique_ptr and raw for manager counters.
|
||||
o Fixed FPE on G4ChemReboundTransportation::calculateNextCoordinate().
|
||||
o In G4PhysChemIO, removed dependency on 'analysis' module.
|
||||
+ Low Energy:
|
||||
o G4LivermorePhotoElectricModel: reorganisation of initialisation and
|
||||
data destruction.
|
||||
o In G4AtomicTransitionManager, G4UAtomicDeexcitation, use std::size_t
|
||||
and few other cosmetic changes.
|
||||
o In G4hIonEffChargeSquare, fixed reported Coverity defect.
|
||||
+ Muons:
|
||||
o G4RiGeMuPairProductionModel, G4RiGeAngularGenerator: fixes to the
|
||||
angular distribution of electrons and positrons.
|
||||
o G4MuPairProduction: enable RiGe model via G4EmParameters.
|
||||
+ Pii:
|
||||
o Use "const G4String&" in G4hImpactIonisation::InitializeMe() to avoid
|
||||
unnecessary copy, reported by Coverity.
|
||||
+ Standard:
|
||||
o Added G4LowPAIH2O model for dE/dx in water for p and e-.
|
||||
o G4UrbanMscModel: cosmetic change for Opt3 case; minor code improvement
|
||||
and updated comments to the code. Not affecting any result.
|
||||
o Reverted changes introduced in release 11.3 for static data
|
||||
initialization in G4eBremsstrahlungRelModel.
|
||||
+ Utils:
|
||||
o New base class G4VXRayModel for X-ray processes. Adapted classes
|
||||
G4OpticalParameters, G4OpticalParametersMessenger and G4LossTableManager
|
||||
to configure and use G4VXRayModel.
|
||||
o G4EmParametersMessenger: added UI command to enable/disable 5D pair
|
||||
production model by muons.
|
||||
o G4EmUtility, G4EmDataHandler, G4EmDataRegistry: removed minor memory
|
||||
leaks and improved destruction at exit.
|
||||
o G4EmParameters, G4EmParametersMessenger, G4EmUtility, G4LossTableBuilder,
|
||||
G4VEnergyLossProcess: implemented new option to enable/disable
|
||||
fluctuation of energy loss per G4Region.
|
||||
o G4VEmProcess: added call to StartTracking(..) for all used models,
|
||||
which need access to G4Track pointer.
|
||||
+ Xrays:
|
||||
o In G4Scintillation, build the scintillation integral tables for
|
||||
materials that have non-empty material property tables and added
|
||||
method BuildInverseCdfTable().
|
||||
o In G4Cerenkov, build the Cerenkov integral only for materials that
|
||||
have non-empty material property tables.
|
||||
|
||||
o Hadronic Processes:
|
||||
------------------
|
||||
+ cross_sections
|
||||
o G4NeutronInelasticXS, G4ParticleInelasticXS: added download data for
|
||||
all elements in class constructor, avoiding lazy initialisation at
|
||||
run-time. No locks are set any longer by these cross-section classes.
|
||||
For simple applications, the initialisation CPU time increases by
|
||||
roughly 10%; no effect on complex applications.
|
||||
o G4ChargeExchangeXS: fixed selection of reaction for compound materials;
|
||||
added extra public and private methods; added extra method for sampling
|
||||
of scattering angle; updated parameterisation using new fit to data.
|
||||
o Fixed minor memory leaks in classes G4CrossSectionFactory,
|
||||
G4CrossSectionFactoryRegistry, G4CrossSectionFactory,
|
||||
G4ElectroNuclearCrossSection and G4ChipsAntiBaryonElasticXS.
|
||||
o G4EMDissociationCrossSection: fixed several technical inaccuracies
|
||||
in the code, addressing reported Coverity defects and to correctly
|
||||
use G4Pow.
|
||||
o G4ParticleInelasticXS: fixed reported Coverity defect.
|
||||
o In G4EMDissociationSpectrum, added protection against beta=0, to fix
|
||||
reported Coverity defect; correctly use G4Pow.
|
||||
+ management
|
||||
o G4HadronicProcess: removed warning for the case when K0 and anti-K0
|
||||
are transformed into K0S or K0L.
|
||||
+ models/coherent_elastic
|
||||
o G4ChargeExchange: fixed problem in kinematic computations, allowed
|
||||
recoil nucleus to be in an excited state. Fixed issue in final state
|
||||
generation for the case of unstable meson production omega(782) and
|
||||
f2(1270).
|
||||
o G4ChargeExchange, G4HadronElastic: cleanup final state generation; use
|
||||
the numerical limit for argument of the exponent to avoid precision
|
||||
loss; in case of numerical problems force scattering angle to zero (do
|
||||
not consider scattering backwards); use similar parameterisation and
|
||||
code for both models. Fixed reported Coverity defect.
|
||||
+ models/de_excitation
|
||||
o Added G4FermiBreakUpAN, new alternative FermiBreakUp model and support
|
||||
classes, contributed by A. Novikov (Yandex and MIPT) through
|
||||
[GitHub PR #84](https://github.com/Geant4/geant4/pull/84). The model is
|
||||
based on: J.P. Bondorf et al., Physics Reports, 257(3):133-221.
|
||||
o G4ExcitationHandler, G4DeexPrecoParameters: updated initialisation
|
||||
to allow switching between different FermiBreakUp models.
|
||||
o G4DeexPrecoUtility: new class, providing common computation, to avoid
|
||||
code duplication. Use it in classes G4EvaporationProbability,
|
||||
G4ProtonEvaporationProbability, G4DeuteronEvaporationProbability,
|
||||
G4TritonEvaporationProbability, G4He3EvaporationProbability and
|
||||
G4AlphaEvaporationProbability, simplifying code.
|
||||
o G4DeexPrecoParameters: added extra enumerator to choose variants of
|
||||
the pre-compound model.
|
||||
o G4NucLevel, G4PhotonEvaporation: use explicit type conversion from
|
||||
double to float; use const arguments where possible.
|
||||
o G4VEmissionProbability, G4EvaporationProbability, G4GEMProbabilityVI:
|
||||
updated algorithms of integration of probabilities and sampling of
|
||||
kinetic energy for emitted fragment. Expected more accurate spectra.
|
||||
o G4GEMChannelVI, G4EvaporationGEMFactoryVI, G4DeexPrecoParameters: new
|
||||
GEM de-excitation model with 83 decay channels.
|
||||
o G4VEmissionProbability: use the new utility class G4VSIntegration,
|
||||
to simplify code; not affecting results.
|
||||
Updated parameters of integration of the probability density function.
|
||||
o In G4PhotonEvaporation, G4VEmissionProbability, check life time of
|
||||
final excitation level; special treatment for the ground state and the
|
||||
next level. Addressing problem report #2660.
|
||||
o In G4EvaporationProbability, fixed computation of inverse cross-section.
|
||||
o G4StatMFMicroPartition: code cleanup, removed non-informative printout,
|
||||
which can be repeated many times; instead stop MF model and return to
|
||||
de-excitation handler.
|
||||
o G4LevelReader: fix for reported Coverity defect.
|
||||
o G4VFermiFragmentAN, G4FermiBreakUpAN: fixed reported Coverity defects.
|
||||
o G4CoulombBarrier: some code cleanup.
|
||||
o G4Evaporation: improved debug printout.
|
||||
+ models/em_dissociation
|
||||
o G4EMDissociation: fixed reported Coverity defects.
|
||||
+ models/inclxx
|
||||
o Fixed one more reported Coverity defect for use of std::move()
|
||||
in G4INCLCascade.
|
||||
o Fixed URL to Root in comments.
|
||||
Fixes [GitHub PR#87](https://github.com/Geant4/geant4/pull/87).
|
||||
+ models/lend
|
||||
o Major update of GIDIplus interface with refactored C++ code, including
|
||||
use of official GNDS formatted data.
|
||||
o Added feature for high-fidelity gamma cascades following reactions such
|
||||
as neutron capture and inelastic scattering.
|
||||
o Collect all inelastic models (neutron and gamma induced) into
|
||||
G4HadronPhysicsLEND. Updated and simplified Shielding and
|
||||
G4EmExtraPhysics accordingly.
|
||||
o Fix in G4EmExtraPhysics for failing in loading photonuclear from LEND
|
||||
if G4GammaGeneralProcess existed.
|
||||
o Fix in G4LENDCombinedModel photofission; check energy function was not
|
||||
connected to the base class, resulting in a crash.
|
||||
+ models/nudex
|
||||
o Address maybe-unitialized warnings when building/linking with LTO,
|
||||
identified by ATLAS.
|
||||
+ models/particle_hp
|
||||
o G4ParticleHPThermalScatteringData: attempt to fix reported Coverity
|
||||
defect on wrong handling of map iterator. Substituted several calls to
|
||||
G4HadronicExceptions by one G4Exception inside BuildPhysicsTable(..)
|
||||
method, which provides a fatal exception if a particle is not a neutron.
|
||||
Simplified IsApplicable(..) methods called at each step; the directory
|
||||
path is taken from G4ParticleHPManager to reduce number of calls to
|
||||
getenv() function; initialisation is performed only once in one
|
||||
instance of the class; initilised data structures are saved to
|
||||
G4ParticleHPManager and are accessed from all threads and instances;
|
||||
end of job destruction is also performed only once; removed commented
|
||||
lines and extended comments to code.
|
||||
o In G4ParticleHPInelastic, fixed AllHP physics for initialisation of
|
||||
neutrons and light ions. Addressing problem report #2591.
|
||||
o G4ParticleHPThermalScattering, G4ParticleHPThermalScatteringData,
|
||||
G4ParticleHPJENDLHEData: fixed reported Coverity defects for
|
||||
unprotected access to maps.
|
||||
o Fixed reported Coverity defects, mainly in handling of maps and finding
|
||||
of isotopes.
|
||||
+ models/pre_equilibrium
|
||||
o New classes G4PreCompoundInterface, G4PreCompoundTransitionInt and
|
||||
G4PreCompoundEmissionInt with alternative precompound model.
|
||||
o G4PreCompoundModel, G4PreCompoundTransition, G4PreCompoundEmission:
|
||||
added an option to use alternative precompound models, which may be
|
||||
done via configuration without change of interface to consumer code;
|
||||
introduced verbose flag and extended printout needed to debug; removed
|
||||
old commented printout lines.
|
||||
o G4PreCompoundFragment, G4PreCompoundNucleon, G4PreCompoundIon: updated
|
||||
computation of inverse cross-section; added factor to cross-section.
|
||||
o G4VPreCompoundFragment, G4PreCompoundFragment, G4HETCFragment: use the
|
||||
new utility class G4VSIntegration, to simplify code; not affecting
|
||||
results.
|
||||
o G4PreCompoundFragment, G4PreCompoundProton, G4PreCompoundDeuteron,
|
||||
G4PreCompoundTriton, G4PreCompoundHe3, G4PreCompoundAlpha: use new
|
||||
utility class G4DeexPrecoUtility.
|
||||
+ util
|
||||
o G4HadronicParameters: implemented pretty-print to ostream to allow
|
||||
users to check values at runtime, a-la G4EmParameters (request from
|
||||
ATLAS).
|
||||
|
||||
o Run:
|
||||
---
|
||||
+ Fix in G4RunManager::ReinitializeGeometry(); the logical skin/border
|
||||
surfaces (used for optical physics) contain pointers to logical/physical
|
||||
volumes that are deleted when the geometry is reset. Resetting the
|
||||
geometry will also clear these surface tables.
|
||||
|
||||
o Track & Tracking:
|
||||
----------------
|
||||
+ G4VTrajectory and G4VTrajectoryPoint: added caching of G4AttValues.
|
||||
GetAttValues() returns a shared_ptr that points to the object created by
|
||||
CreateAttValues() if not already created. Thus acts as a cache.
|
||||
Protected copy and move constructors and copy and move assignment
|
||||
operators.
|
||||
+ G4RichTrajectoryPoint: added accessors for Pre/PostStepPointGlobalTime.
|
||||
This allows fast access for time windowing feature of trajectory modeling.
|
||||
|
||||
o Visualization:
|
||||
-------------
|
||||
+ management:
|
||||
o Make the TSG driver the "flagship" visualization driver.
|
||||
In G4VisExecutive, make nickname/alias OGL synonymous with TSG and make
|
||||
TSG the default for selection by build flags.
|
||||
o Re-instated the transparency slider; re-implemented it in a generic way,
|
||||
i.e., for all drivers; uses a new UI command:
|
||||
"/vis/viewer/set/transparencyByDepth <d> [option]".
|
||||
G4UIQt issues this command on signals from the slider. The user may,
|
||||
of course, use this command directly.
|
||||
o Split scene processing into its "permanent" (run-duration models) and
|
||||
"transient" (end-of-event and end-of-run models) parts.
|
||||
This allows to update just the transient part, e.g., trajectories,
|
||||
which we might want to display in a different way, leaving the
|
||||
permanent part (e.g., detector) unchanged, avoiding unnecessary
|
||||
re-processing. This is exactly the situation for time windowing - the
|
||||
detector does not change, the trajectories also actually do not change,
|
||||
just the way they are drawn changes.
|
||||
o G4VSceneHandler: introduced ProcessTransients() virtual function.
|
||||
Moved pertinent code from ProcessScene() to ProcessTransients().
|
||||
Copied time parameters into modeling parameters.
|
||||
Calculate and maintain 'fMaxGeometryDepth', new base class data member.
|
||||
Improved some diagnostic printing.
|
||||
o G4VViewer: introduced ProcessTransients() method. Follow changes in
|
||||
G4PhysicalVolumeModel.
|
||||
Initialise fTransientsNeedRedrawing to "false". Previously, this was
|
||||
initialised "true", but it is up to the viewer to decide if transients
|
||||
(trajectories) need redrawing. Code tidy.
|
||||
o Added RayTracerQt in G4VisExecutive.
|
||||
o G4VVisCommand: in InterpolateViews(), implemented desired time per time
|
||||
step. Computation time per step may cause this to increase.
|
||||
o G4VisCommandsViewer: improved guidance of "/vis/viewer/interpolate"
|
||||
command. In "/vis/viewer/set/timeWindow/displayHeadTime", implemented
|
||||
"current as default". There might be some minor change of behaviour.
|
||||
In "/vis/viewer/select", removed subsequent refresh, even for
|
||||
auto-refresh drivers. Refresh is not required after a select, window
|
||||
systems keep the image.
|
||||
o In G4VisCommandsTouchable, disabled "/vis/touchable/centre..." and
|
||||
"/twinkle" in the case of large process times.
|
||||
o Added UI command "/vis/scene/add/endOfRunMacro".
|
||||
The macro is executed at end of run and when rebuild required.
|
||||
WARNING: some vis commands in the macro cause recursion. Stick to
|
||||
simple commmands, e.g., which invoke vis manager Draw() methods.
|
||||
o G4ViewParameters: added 'TransparencyByDepth' and
|
||||
'TransparencyByDepthOption'. Simplified code; use single TimeParameters
|
||||
from G4ModelingParameters, to replace 18 time window parameters.
|
||||
Fixed typo to make "/vis/viewer/set/lightsMove cam" behaving correctly
|
||||
for "/vis/viewer/set/lightsVector 0 0 1".
|
||||
Addressing problem report #2460.
|
||||
o G4VisCommandsViewerSet: updated to "/vis/viewer/set/timeWindow"
|
||||
commands according to changes in G4ViewParameters.
|
||||
Added UI command "/vis/viewer/set/transparencyByDepth".
|
||||
o Minor improvement to listing of histograms (if any).
|
||||
o In G4VisManager::EndOfRun(), print list of histograms even with vis
|
||||
disabled.
|
||||
o Modernised macro-based loops with range-based for.
|
||||
o Replaced raw for loops with range-for where possible.
|
||||
+ modeling:
|
||||
o G4TrajectoryDrawerUtils: first version of generic time windowing of
|
||||
trajectory slices; draws only slices within the viewer time window.
|
||||
Note: unless the viewer can handled time-sliced trajectories (only
|
||||
OGLS can do this at present), the viewer must request a kernel visit
|
||||
on change of viewer time window.
|
||||
Trap trajectories with very long global times, e.g, products of
|
||||
long-lived radioactive isotopes. Draw as non-time-sliced trajectories.
|
||||
Added fading of trajectory slices if time windowing is active; makes
|
||||
trajectory slices look like little meteors streaking across the screen.
|
||||
Applied clang-format.
|
||||
o G4ModelingParameters: implemented TimeParameters::operator!=().
|
||||
Adjusted default values in TimeParameters: set fade factor to 1
|
||||
(maximum fading); set head time display 2D x-coordinate to zero
|
||||
(centre), while 2D y-coordinate remains at -0.9 (bottom).
|
||||
Added struct 'TimeParameters', a prerequisite for "Generic Time-Slicing"
|
||||
for the display of the time evolution of events. With that feature, the
|
||||
display of tracks moving through time will be available to all vis
|
||||
drivers (drivers will still be allowed to implement their own time
|
||||
evolution).
|
||||
o G4TrajectoriesModel: in DescribeYourselfTo(), draw display head time
|
||||
if requested and if time windowing is active; removed Begin/EndDraw
|
||||
around the trajectories loop.
|
||||
o In G4TrajectoryDrawByEncounteredVolume and
|
||||
G4TrajectoryEncounteredVolumeFilter, use G4VTrajectory::GetAttValues()
|
||||
instead of CreateAttValues(), to speedup repeated visits.
|
||||
o G4VModel: introduced static data member for current modeling parameters
|
||||
and its static accessor, GetCurrentModelingParameters().
|
||||
o In G4PhysicalVolumeModel, fixed typo in ModelType.
|
||||
o G4TrajectoriesModel: call SetCurrentModelingParameters().
|
||||
o G4ModelingParameters: added 'TransparencyByDepth' and
|
||||
'TransparencyByDepthOption'.
|
||||
o G4PhysicalVolumeModel: renamed some data members and access functions
|
||||
for clarity; added 'fMaxFullDepth' (includes base path, i.e., from
|
||||
world volume); added code for processing transparency by depth.
|
||||
+ OpenGL:
|
||||
o G4OpenGLQtViewer: fixed the original pick feature to show pick info
|
||||
window.
|
||||
o G4OpenGLWin32Viewer: added SwitchToMasterThread() method to draw
|
||||
trajectories at the end of run in MT mode.
|
||||
o G4OpenGLStoredViewer, G4OpenGLStoredQtViewer: initiate kernel visit if
|
||||
'TransparencyByDepth' or its options change.
|
||||
o In G4OpenGLQtViewer, commented calls to TouchableSetVisibility/Colour;
|
||||
no longer needed since the introduction of the new scene tree.
|
||||
Commented out some debug printing to std::cout.
|
||||
o In G4OpenGLStoredViewer, follow changes introduced in G4ViewParameters.
|
||||
+ OpenInventor:
|
||||
o G4OpenInventorViewer: initiate kernel visit if 'TransparencyByDepth' or
|
||||
its options change. In CompareForKernelVisit(), cause kernel visit if
|
||||
viewer start/end time changes; this is to take advantage of the new
|
||||
generic time window. Implemented CompareForTransientsRedraw().
|
||||
Take advantage of ProcessTransients(), which reconstructs that part of
|
||||
the graphical database for transient objects, e.g., trajectories,
|
||||
without reconstructing the "permanent" (run-duration) objects, e.g.,
|
||||
the detector. In other words, something short of a complete "kernel
|
||||
visit". For example, if the time window changes. Maximises the
|
||||
efficiency of the recently implemented "generic" time windowing.
|
||||
+ Qt3D
|
||||
o G4Qt3DViewer: initiate kernel visit if 'TransparencyByDepth' or its
|
||||
options change. In CompareForKernelVisit(), cause kernel visit if
|
||||
viewer start/end time changes; this is to take advantage of the new
|
||||
generic time window. Implemented CompareForTransientsRedraw().
|
||||
+ RayTracer:
|
||||
o Introducing RayTracerQt. Uses multithreading tracer, G4TheMTRayTracer.
|
||||
With multithreading, image construction is quite fast.
|
||||
o Introduced nicknames (long names still work): RT (for RayTracer),
|
||||
RTX (for RayTracerX), RTQt (for RayTracerQt).
|
||||
o In G4RayTracerViewer, use G4Timer to estimate
|
||||
KernelVisitElapsedTimeSeconds.
|
||||
o In G4VRTScanner (and inherited classes), removed misleading and un-used
|
||||
methods GetGSName() and GetGSNickName().
|
||||
+ ToolsGS:
|
||||
o Allow accumulation of transients (trajectories) during multithreading.
|
||||
o Trajectories are stored in the database during the run, and displayed
|
||||
at end of run. All events are displayed at end of run.
|
||||
o In G4ToolsSGViewer, initiate kernel visit if 'TransparencyByDepth' or
|
||||
its options change. In CompareForKernelVisit(), cause kernel visit if
|
||||
viewer start/end time changes; this is to take advantage of the new
|
||||
generic time window. Implemented CompareForTransientsRedraw().
|
||||
Removed 'SwitchToVisSubThread' and 'SwitchToMasterThread' as no action
|
||||
is needed on thread switching.
|
||||
In mouse_move(), use the event.shift_modifier() method, to pass in pan
|
||||
mode. Have GetWindowSize() and GetRenderAreaSize() methods to retrieve
|
||||
the actual sizes of the "seen/visible window" and of the "render area"
|
||||
size; these may return different sizes, for example with Qt/OpenGL on
|
||||
Mac and Windows. In SetView(), use the new GetWindowSize(),
|
||||
GetRenderAreaSize() methods to set the "marker scale" on
|
||||
G4ToolsSGSceneHandler.
|
||||
o G4ToolsSGQtGLESViewer, G4ToolsSGQtZBViewer, G4ToolsSGOffscreenViewer:
|
||||
suppressed SetView() method, as no more needed.
|
||||
o In G4ToolsSGSceneHandler, respect line width in vis attributes and view
|
||||
parameters. In GetOrCreateNode(), removed restriction on multithreading.
|
||||
Handle the 'fMarkerScale' field.
|
||||
o Modernised macro-based loops with range-based for statements.
|
||||
|
||||
o Datasets:
|
||||
---------
|
||||
+ G4EMLOW-8.7:
|
||||
o Updated MicroElec data: added new files and updated format of other
|
||||
files.
|
||||
|
||||
o Examples:
|
||||
--------
|
||||
+ Updated reference outputs, macros, READMEs and scripts.
|
||||
+ advanced/dna/cellularPhantom
|
||||
o Code reorganisation; introduced Run class.
|
||||
o Simplified analysis of results.
|
||||
o Updated affiliation.
|
||||
+ advanced/dna/moleculardna
|
||||
o Updated new implementation of IRT-syn model.
|
||||
o Deleted Max Time Step parameter.
|
||||
o Corrected segmentation error with Root macrofiles, caused when low
|
||||
damage had been produced.
|
||||
o Updated reaction list for DNA reactions.
|
||||
o Define missing variable in some macros.
|
||||
o Increased default statistics in ecoli.mac.
|
||||
o Added moleculardna macro, Root macro and geometry files for the
|
||||
simulation of phages.
|
||||
o Updated direct damage range for plasmid.mac and cylinders.mac.
|
||||
o Added fiber.mac macro.
|
||||
o Increased max number of arguments in main().
|
||||
o Added protection to all analysis macros to avoid 'nan' in error
|
||||
calculation.
|
||||
o Added possibility to activate parallel world using dedicated flag from
|
||||
executable.
|
||||
+ advanced/microbeam
|
||||
o Added n-tuple merging.
|
||||
+ extended/biasing
|
||||
o Applied basic clang-tidy fixes and clang-format to code.
|
||||
+ extended/biasing/GB03
|
||||
o Instantiate G4GenericBiasingPhysics only if biasing is enabled.
|
||||
Propagate biasing on/off to detector construction to initialise
|
||||
biasing classes only if biasing is requested.
|
||||
+ extended/biasing/GB05
|
||||
+ extended/biasing/GB07
|
||||
o Removed explicit call of base class constructor in DetectorConstruction.
|
||||
+ extended/electromagnetic/TestEm2
|
||||
o Fixed memory leak at exit in ActionInitialisation, DetectorConstruction
|
||||
and RunAction. Instantiate the field messenger differently.
|
||||
+ extended/electromagnetic/TestEm4
|
||||
o Added G4RayleighScattering in PhysicsList.
|
||||
+ extended/electromagnetic/TestEm13
|
||||
+ extended/electromagnetic/TestEm14
|
||||
o Added G4RayleighScattering in PhysicsList.
|
||||
+ extended/electromagnetic/TestEm15
|
||||
o Updated gamma.mac input macro to use emstandard_opt4.
|
||||
o Removed gamma2mumu.mac input macro.
|
||||
+ extended/electromagnetic/TestEm18
|
||||
o Added G4RayleighScattering in PhysicsList.
|
||||
+ extended/eventgenerator/exgps
|
||||
o In HistoManager, activated n-tuple merging.
|
||||
o Fixed python and analysis macros (tested with python 3.13.3).
|
||||
o Moved plotHisto.C to macros. Removed plottest35.py and plotit.csh.
|
||||
o Excluded not working tests (needed further investigation).
|
||||
o Removed exgps_batch.in (identical with exgps.in).
|
||||
o Copy all macros and run script into the build area in CMake script.
|
||||
+ extended/eventgenerator/pythia/py8decayer
|
||||
o Updated to Pythia-8.3.15.
|
||||
+ extended/exoticphysics/phonon
|
||||
o Updated build script for CTests definitions.
|
||||
+ extended/hadronic/NeutronSource
|
||||
o In main(), added SetUseNRESP71Model(true).
|
||||
+ extended/medical/DICOM
|
||||
o Refactored DICOM examples into a single project; now build everything
|
||||
together for ease of use and demonstration. Code/behaviour otherwise
|
||||
is unchanged. Including two examples, DICOM1 (renamed from the original
|
||||
DICOM) and DICOM2, with two libraries that implement capabilities
|
||||
common to both applications: G4DicomCore, providing the core Geant4
|
||||
application structure; G4DicomReader, optional utility library to read
|
||||
DICOM files and RT structure in DICOM format, as well as RT plans.
|
||||
Both applications can optionally use the DICOM Digital Head.
|
||||
+ extended/medical/dna/chem4
|
||||
o Replaced shared_ptr with unique_ptr and raw for manager counters.
|
||||
+ extended/medical/dna/chem5
|
||||
o Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
|
||||
o Replaced shared_ptr with unique_ptr and raw for manager counters.
|
||||
o Code clean up; added plot.py script for plotting the output data.
|
||||
+ extended/medical/dna/chem6
|
||||
+ extended/medical/dna/dnadamage1
|
||||
o Replaced shared_ptr with unique_ptr and raw for manager counters.
|
||||
+ extended/medical/dna/dnaphysics
|
||||
o Added possibility to simulate radioactive nuclei; added radioactive.in
|
||||
macro and plotRadioactive.C.
|
||||
o Added elastic.in and plotElastic.C macros to show distribution of
|
||||
scattering angles.
|
||||
o Added UI command to record first step only; updated elastic.in macro
|
||||
accordingly.
|
||||
o Updated PhysicsList and SteppingAction.
|
||||
+ extended/medical/dna/mfp
|
||||
o Added n-tuple merging.
|
||||
+ extended/medical/dna/molcounters
|
||||
o New example showing how to use the new molecule counter manager system
|
||||
and how to write custom molecule counters. The custom (spatially-aware)
|
||||
molecule counter used here is further described in:
|
||||
Radiat. Phys. Chem. 212 (2023) 111194.
|
||||
+ extended/medical/dna/radial
|
||||
o New example showing how to simulate radial dose profiles in liquid
|
||||
water from incident ions using the Geant4-DNA physics processes and
|
||||
models.
|
||||
+ extended/medical/dna/range
|
||||
o Added beta option8 physics list.
|
||||
+ extended/medical/dna/scavenger
|
||||
o Replaced shared_ptr with unique_ptr and raw for manager counters.
|
||||
+ extended/medical/dna/slowing
|
||||
o Added n-tuple merging.
|
||||
+ extended/medical/dna/spower
|
||||
o Added scoring of secondary electrons.
|
||||
o PhysicsList: added all DNA Physics Lists and usage of G4EmParameters.
|
||||
o In lot.C, added selection of electrons by default.
|
||||
o In spower.in, changed physics constructors.
|
||||
+ extended/medical/dna/svalue
|
||||
o Added n-tuple merging.
|
||||
o Added optional time threshold to iodine macros.
|
||||
+ extended/medical/dna/wvalue
|
||||
o Added n-tuple merging.
|
||||
+ extended/medical/dna/UHDR
|
||||
o Updated pulseAction for larger pulse size.
|
||||
o Temporarily use molecule counter for EventScheduler.
|
||||
o Updated reaction table for scavengers.
|
||||
o Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
|
||||
o Added pulse structure and interpulse feature.
|
||||
o Fixed partially diffused-control reactions.
|
||||
o Fixed crash due to typo in UHDR.in
|
||||
o Removed dependence of PrimaryGeneratorAction/Physlist/ChemList
|
||||
and ActionIni classes on DetectorConstruction class.
|
||||
o Updated macro files.
|
||||
+ extended/medical/radiobiology
|
||||
o Primary beam origin can be located outside the detector water tank.
|
||||
+ extended/parallel
|
||||
o Retired obsolete TBB example. Functionality fully provided by tasking
|
||||
run manager with TBB support with no user code changes required.
|
||||
+ extended/parallel/MPI
|
||||
o Modernised and simplified library and example build scripts to build
|
||||
G4mpi library and examples of its use in one project.
|
||||
o Moved MPI from deprecated C++ interface to C interface (MPI 3+).
|
||||
Based on [GitHub PR#81](https://github.com/Geant4/geant4/pull/81).
|
||||
+ extended/parameterisations/Par04
|
||||
o Introduction of the CaloDiT pre-trained model, offering greater
|
||||
accuracy.
|
||||
o Updated VAE training with the new translation script and Condor scripts.
|
||||
+ extended/radioactivedecay/Activation
|
||||
o In main(), added SetUseNRESP71Model(true).
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
@@ -6,6 +6,35 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2025-06-10 Ben Morgan (cmake-V11-03-06)
|
||||
- Include external categories (G4zlib etc) in link resolution for unit test
|
||||
executables
|
||||
|
||||
## 2015-06-09 Ben Morgan (cmake-V11-03-05)
|
||||
- Update G4EMLOW dataset to version 8.7
|
||||
- Requested in #251 to support microelec physics
|
||||
|
||||
## 2025-05-01 Ben Morgan (cmake-V11-03-04)
|
||||
- Default to using Qt6 when selecting Qt support
|
||||
- User must set `GEANT4_USE_QT_QT5` to force find/use of Qt5
|
||||
|
||||
## 2025-04-24 Igor Semeniouk (cmake-V11-03-03)
|
||||
- G4ConfigureGNUMakeHelpers.cmake - correction for windows
|
||||
- add bin for external dll libraries to PATH
|
||||
- fix path to share/fonts
|
||||
|
||||
## 2025-04-04 John Allison (cmake-V11-03-02)
|
||||
- Co-works: visman-V11-03-07, raytracer-V11-03-00.
|
||||
- Code for RayTracerQt.
|
||||
|
||||
## 2025-04-02 Ben Morgan (cmake-V11-03-01)
|
||||
- Export CMAKE_EXPORT_COMPILE_COMMANDS setting from toolkit to the build of
|
||||
any test done by geant4_add_test to assist use of clang-tidy and other tooling.
|
||||
|
||||
## 2025-02-18 Ben Morgan (cmake-V11-03-00)
|
||||
- Add ENVIRONMENT to any build step of geant4_add_test for consistency and to
|
||||
allow easier propagation of additional build settings.
|
||||
|
||||
## 2024-11-25 Ben Morgan (cmake-V11-02-30)
|
||||
- Bump RadioactiveDecay dataset version to 6.1.2
|
||||
- Fixes Issue #237
|
||||
|
||||
@@ -351,7 +351,7 @@ endif
|
||||
IF NOT DEFINED ${VARIABLE_NAME} (
|
||||
set \"${VARIABLE_NAME}=${VARIABLE_VALUE}\"
|
||||
)
|
||||
"
|
||||
"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
@@ -382,13 +382,13 @@ fi
|
||||
elseif(${SHELL_FAMILY} STREQUAL "cshell")
|
||||
# Again, this is verbatim so final output is formatted correctly
|
||||
set(${TEMPLATE_NAME}
|
||||
"
|
||||
"
|
||||
if ( ! \${?${PATH_VARIABLE}} ) then
|
||||
setenv ${PATH_VARIABLE} ${APPEND_VARIABLE}
|
||||
else
|
||||
setenv ${PATH_VARIABLE} ${APPEND_VARIABLE}:\${${PATH_VARIABLE}}
|
||||
endif
|
||||
"
|
||||
"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
# -- cmd.exe block
|
||||
@@ -434,7 +434,7 @@ if ( ! \${?${PATH_VARIABLE}} ) then
|
||||
else
|
||||
setenv ${PATH_VARIABLE} \${${PATH_VARIABLE}}:${APPEND_VARIABLE}
|
||||
endif
|
||||
"
|
||||
"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
# -- cmd.exe block
|
||||
@@ -907,7 +907,8 @@ file(RELATIVE_PATH
|
||||
"${CMAKE_INSTALL_FULL_BINDIR}"
|
||||
"${CMAKE_INSTALL_FULL_DATADIR}"
|
||||
)
|
||||
set(TOOLS_FONT_PATH "\"`cd \$geant4_envbindir/${G4ENV_BINDIR_TO_DATADIR}/fonts > /dev/null ; pwd`\"")
|
||||
set(TOOLS_FONT_PATH "\"`cd \$geant4_envbindir/../share/Geant4/fonts > /dev/null ; pwd`\"")
|
||||
set(TOOLS_FONT_PATHW "\%geant4_envbindir\%\\..\\share\\Geant4\\fonts")
|
||||
|
||||
# list of shells
|
||||
set(shells_list bourne;cshell)
|
||||
@@ -955,46 +956,68 @@ foreach(_shell IN LISTS shells_list)
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "# - Builtin CLHEP used")
|
||||
if(GEANT4_USE_SYSTEM_CLHEP)
|
||||
# Handle granular vs singular cases
|
||||
get_target_property(_CLHEP_LIB_DIR CLHEP::CLHEP LOCATION)
|
||||
get_target_property(_CLHEP_LIB_DIR CLHEP::CLHEP LOCATION)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" REALPATH)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" DIRECTORY)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} IN_LIST _oswithldpath)
|
||||
_g4tc_append_path(GEANT4_TC_CLHEP_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
LD_LIBRARY_PATH
|
||||
"${_CLHEP_LIB_DIR}"
|
||||
)
|
||||
_g4tc_append_path(GEANT4_TC_CLHEP_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
LD_LIBRARY_PATH
|
||||
"${_CLHEP_LIB_DIR}"
|
||||
)
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
# add to PATH on windows
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}/../bin"
|
||||
REALPATH
|
||||
)
|
||||
file(TO_CMAKE_PATH "${_CLHEP_LIB_DIR}" _CLHEP_LIB_DIR)
|
||||
_g4tc_append_path(GEANT4_TC_CLHEP_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_CLHEP_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "# System CLHEP in use, no configuration required")
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "# System CLHEP in use, no configuration required")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# - XercesC
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "# GDML SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_GDML)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" REALPATH)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" DIRECTORY)
|
||||
get_target_property(_XERCESC_LIB_DIR XercesC::XercesC LOCATION)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}" REALPATH)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}" DIRECTORY)
|
||||
if(${CMAKE_SYSTEM_NAME} IN_LIST _oswithldpath)
|
||||
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
LD_LIBRARY_PATH
|
||||
"${_XERCESC_LIB_DIR}"
|
||||
)
|
||||
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
LD_LIBRARY_PATH
|
||||
"${_XERCESC_LIB_DIR}"
|
||||
)
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}/../bin"
|
||||
REALPATH
|
||||
)
|
||||
file(TO_CMAKE_PATH "${_XERCESC_LIB_DIR}" _XERCESC_LIB_DIR)
|
||||
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_XERCESC_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "# GDML Supported, no configuration of Xerces-C required")
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "# GDML Supported, no configuration of Xerces-C required")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# - Set data paths
|
||||
set(GEANT4_ENV_DATASETS )
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} GEANT4_DATA_DIR ${GEANT4_DATA_DIR})
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} GEANT4_DATA_DIR ${GEANT4_DATA_DIR})
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n")
|
||||
set(_dssetenvcmd "
|
||||
# - Variables for individual datasets
|
||||
# Uncomment the line and edit the path to the dataset if installed in not standard location.")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
foreach(_ds ${GEANT4_EXPORTED_DATASETS})
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
foreach(_ds ${GEANT4_EXPORTED_DATASETS})
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} ${${_ds}_ENVVAR} "$GEANT4_DATA_DIR/${${_ds}_PATH}")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}# ${_dssetenvcmd}\n")
|
||||
endforeach()
|
||||
@@ -1003,10 +1026,10 @@ foreach(_shell IN LISTS shells_list)
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "# FREETYPE SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_FREETYPE)
|
||||
_g4tc_append_path(GEANT4_ENV_TOOLS_FONT_PATH
|
||||
${_shell}
|
||||
TOOLS_FONT_PATH
|
||||
"${TOOLS_FONT_PATH}"
|
||||
)
|
||||
${_shell}
|
||||
TOOLS_FONT_PATH
|
||||
"${TOOLS_FONT_PATH}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Configure the file
|
||||
@@ -1014,107 +1037,118 @@ foreach(_shell IN LISTS shells_list)
|
||||
${PROJECT_SOURCE_DIR}/cmake/Templates/geant4-env-skeleton.in
|
||||
${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
|
||||
@ONLY
|
||||
)
|
||||
else()
|
||||
)
|
||||
else()
|
||||
# message(STATUS "bat skeleton")
|
||||
|
||||
# Set path, which should be where the script itself is installed
|
||||
# the varible synax differnt
|
||||
_g4tc_prepend_path(GEANT4_ENV_BINPATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"%geant4_envbindir%"
|
||||
)
|
||||
# Set path, which should be where the script itself is installed
|
||||
# the varible synax differnt
|
||||
_g4tc_prepend_path(GEANT4_ENV_BINPATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"%geant4_envbindir%"
|
||||
)
|
||||
|
||||
## Set library path, based on relative paths between bindir and libdir
|
||||
#if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
# _g4tc_prepend_path(GEANT4_ENV_LIBPATH_SETUP
|
||||
# ${_shell}
|
||||
# LD_LIBRARY_PATH
|
||||
# "\"`cd $geant4_envbindir/${G4ENV_BINDIR_TO_LIBDIR} > /dev/null ; pwd`\""
|
||||
# )
|
||||
# endif()
|
||||
## Set library path, based on relative paths between bindir and libdir
|
||||
#if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
# _g4tc_prepend_path(GEANT4_ENV_LIBPATH_SETUP
|
||||
# ${_shell}
|
||||
# LD_LIBRARY_PATH
|
||||
# "\"`cd $geant4_envbindir/${G4ENV_BINDIR_TO_LIBDIR} > /dev/null ; pwd`\""
|
||||
# )
|
||||
# endif()
|
||||
|
||||
# Third party lib paths
|
||||
# - CLHEP, if system
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "rem # - Builtin CLHEP used")
|
||||
if(GEANT4_USE_SYSTEM_CLHEP)
|
||||
# Handle granular vs singular cases
|
||||
get_target_property(_CLHEP_LIB_DIR CLHEP::CLHEP LOCATION)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" REALPATH)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" DIRECTORY)
|
||||
# Third party lib paths
|
||||
# - CLHEP, if system
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "rem # - Builtin CLHEP used")
|
||||
if(GEANT4_USE_SYSTEM_CLHEP)
|
||||
# Handle granular vs singular cases
|
||||
get_target_property(_CLHEP_LIB_DIR CLHEP::CLHEP LOCATION)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" REALPATH)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}" DIRECTORY)
|
||||
get_filename_component(_CLHEP_LIB_DIR "${_CLHEP_LIB_DIR}/../bin" REALPATH)
|
||||
file(TO_NATIVE_PATH "${_CLHEP_LIB_DIR}" _CLHEP_LIB_DIR)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
_g4tc_append_path(GEANT4_TC_CLHEP_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_CLHEP_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "rem # System CLHEP in use, no configuration required")
|
||||
endif()
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
_g4tc_append_path(GEANT4_TC_CLHEP_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_CLHEP_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_CLHEP_LIB_PATH_SETUP "rem # System CLHEP in use, no configuration required")
|
||||
endif()
|
||||
|
||||
# - XercesC
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "rem # GDML SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_GDML)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" REALPATH)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" DIRECTORY)
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_XERCESC_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "rem # GDML Supported, no configuration of Xerces-C required")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# - Set data paths
|
||||
set(GEANT4_ENV_DATASETS )
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} GEANT4_DATA_DIR ${GEANT4_DATA_DIRW})
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n")
|
||||
set(_dssetenvcmd "FOR /F %%i IN ( \"%GEANT4_DATA_DIR%\" ) DO set \"GEANT4_DATA_DIR=%%~fi\"")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
set(_dssetenvcmd "
|
||||
rem - Variables for individual datasets
|
||||
rem Uncomment the line and edit the path to the dataset if installed in not standard location.")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
foreach(_ds ${GEANT4_EXPORTED_DATASETS})
|
||||
file(TO_NATIVE_PATH ${${_ds}_PATH} _native_path)
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} ${${_ds}_ENVVAR} "%GEANT4_DATA_DIR%\\${_native_path}")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}rem ${_dssetenvcmd}\n")
|
||||
endforeach()
|
||||
|
||||
# - Set Font Path
|
||||
# ??? We need this variable ?
|
||||
# ??? path to freetype2 library ???
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "rem # FREETYPE SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_FREETYPE)
|
||||
_g4tc_append_path(GEANT4_ENV_TOOLS_FONT_PATH
|
||||
${_shell}
|
||||
TOOLS_FONT_PATH
|
||||
"${TOOLS_FONT_PATH}"
|
||||
)
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/Templates/geant4-bat-skeleton.in
|
||||
${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
|
||||
@ONLY
|
||||
)
|
||||
unset(_CLHEP_LIB_DIR)
|
||||
endif()
|
||||
|
||||
# Install it to the required location
|
||||
install(FILES
|
||||
${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
COMPONENT Runtime
|
||||
)
|
||||
endforeach()
|
||||
# - XercesC
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "rem # GDML SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_GDML)
|
||||
get_target_property(_XERCESC_LIB_DIR XercesC::XercesC LOCATION)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}" REALPATH)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}" DIRECTORY)
|
||||
get_filename_component(_XERCESC_LIB_DIR "${_XERCESC_LIB_DIR}/../bin" REALPATH)
|
||||
file(TO_NATIVE_PATH "${_XERCESC_LIB_DIR}" _XERCESC_LIB_DIR)
|
||||
|
||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
|
||||
${_shell}
|
||||
PATH
|
||||
"${_XERCESC_LIB_DIR}"
|
||||
)
|
||||
else()
|
||||
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "rem # GDML Supported, no configuration of Xerces-C required")
|
||||
endif()
|
||||
unset(_XERCESC_LIB_DIR)
|
||||
endif()
|
||||
|
||||
# - Set data paths
|
||||
set(GEANT4_ENV_DATASETS )
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} GEANT4_DATA_DIR ${GEANT4_DATA_DIRW})
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n")
|
||||
set(_dssetenvcmd "FOR /F %%i IN ( \"%GEANT4_DATA_DIR%\" ) DO set \"GEANT4_DATA_DIR=%%~fi\"")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
set(_dssetenvcmd "
|
||||
rem - Variables for individual datasets
|
||||
rem Uncomment the line and edit the path to the dataset if installed in not standard location.
|
||||
" )
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}${_dssetenvcmd}\n\n")
|
||||
foreach(_ds ${GEANT4_EXPORTED_DATASETS})
|
||||
file(TO_NATIVE_PATH ${${_ds}_PATH} _native_path)
|
||||
_g4tc_setenv_command(_dssetenvcmd ${_shell} ${${_ds}_ENVVAR} "%GEANT4_DATA_DIR%\\${_native_path}")
|
||||
set(GEANT4_ENV_DATASETS "${GEANT4_ENV_DATASETS}rem ${_dssetenvcmd}\n")
|
||||
endforeach()
|
||||
|
||||
# - Set Font Path
|
||||
# g4tools fonts directory
|
||||
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "rem # FREETYPE SUPPORT NOT AVAILABLE")
|
||||
if(GEANT4_USE_FREETYPE)
|
||||
_g4tc_setenv_command(_freetypecmd ${_shell} _g4_font_path ${TOOLS_FONT_PATHW})
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "${_freetypecmd}\n")
|
||||
set(_freetypecmd "FOR /F %%i IN ( \"%_g4_font_path%\" ) DO set \"_g4_font_path=%%~fi\"")
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "${GEANT4_ENV_TOOLS_FONT_PATH}${_freetypecmd}\n")
|
||||
_g4tc_append_path(_freetypecmd ${_shell} TOOLS_FONT_PATH "%_g4_font_path%")
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "${GEANT4_ENV_TOOLS_FONT_PATH}${_freetypecmd}")
|
||||
_g4tc_setenv_command(_freetypecmd ${_shell} _g4_font_path "")
|
||||
set(GEANT4_ENV_TOOLS_FONT_PATH "${GEANT4_ENV_TOOLS_FONT_PATH}${_freetypecmd}\n")
|
||||
endif()
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/Templates/geant4-bat-skeleton.in
|
||||
${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
|
||||
@ONLY
|
||||
)
|
||||
endif()
|
||||
|
||||
# Install it to the required location
|
||||
install(FILES
|
||||
${PROJECT_BINARY_DIR}/InstallTreeFiles/${_scriptfullname}
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS
|
||||
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
WORLD_READ WORLD_EXECUTE
|
||||
COMPONENT Runtime
|
||||
)
|
||||
endforeach()
|
||||
|
||||
@@ -18,11 +18,11 @@ geant4_add_dataset(
|
||||
# - Low energy electromagnetics
|
||||
geant4_add_dataset(
|
||||
NAME G4EMLOW
|
||||
VERSION 8.6.1
|
||||
VERSION 8.7
|
||||
FILENAME G4EMLOW
|
||||
EXTENSION tar.gz
|
||||
ENVVAR G4LEDATA
|
||||
MD5SUM 9db67a37acc3eae9b0ffdace41a23b74
|
||||
MD5SUM 949c9422ae668208562be1b991750df1
|
||||
)
|
||||
|
||||
# - Photon evaporation
|
||||
|
||||
@@ -874,8 +874,10 @@ function(geant4_test_link_libraries _target)
|
||||
)
|
||||
__geant4_assert_no_unparsed_arguments(G4TESTLINKLIB geant4_test_link_libraries)
|
||||
|
||||
# Need defined libraries to be able to resolve between static/shared
|
||||
# Need defined libraries and externals to be able to resolve between static/shared
|
||||
get_property(__g4definedlibraries GLOBAL PROPERTY GEANT4_DEFINED_CATEGORIES)
|
||||
geant4_get_external_categories(__g4externalcategories)
|
||||
list(APPEND __g4definedlibraries ${__g4externalcategories})
|
||||
|
||||
foreach(__prop PUBLIC PRIVATE INTERFACE)
|
||||
__geant4_resolve_link_libraries(G4TESTLINKLIB_${__prop})
|
||||
@@ -894,7 +896,6 @@ function(geant4_test_link_libraries _target)
|
||||
list(APPEND _g4linklibs "${_linklib}")
|
||||
endif()
|
||||
endforeach()
|
||||
message(STATUS "${_g4linklibs}")
|
||||
set(_linklibs ${_g4linklibs})
|
||||
else()
|
||||
set(_linklibs ${G4TESTLINKLIB_${__prop}})
|
||||
|
||||
@@ -65,10 +65,13 @@ if(GEANT4_USE_INVENTOR_QT AND NOT GEANT4_USE_QT)
|
||||
message(STATUS "Forcing GEANT4_USE_QT to ON, required by selection of GEANT4_USE_INVENTOR_QT as ON")
|
||||
endif()
|
||||
|
||||
# TEMPORARY for 11.2 Beta Development
|
||||
# Decision still required on whether to allow selection of 5/6 in production
|
||||
cmake_dependent_option(GEANT4_USE_QT_QT6 "Require Qt6 when building Qt support" OFF "GEANT4_USE_QT" OFF)
|
||||
mark_as_advanced(GEANT4_USE_QT_QT6)
|
||||
# We default to Qt6 if available, but allow the user to select Qt5
|
||||
set(GEANT4_USE_QT_QT6 ON)
|
||||
|
||||
cmake_dependent_option(GEANT4_USE_QT_QT5 "Require Qt5 when building Qt support" OFF "GEANT4_USE_QT" OFF)
|
||||
if(GEANT4_USE_QT_QT5)
|
||||
set(GEANT4_USE_QT_QT6 OFF)
|
||||
endif()
|
||||
|
||||
# - Vtk
|
||||
option(GEANT4_USE_VTK "Build Geant4 with VTK visualisation" OFF)
|
||||
@@ -161,15 +164,13 @@ if(GEANT4_USE_QT)
|
||||
# 5.9 is selected as the min version to support based on the system version on CentOS7
|
||||
# Once 5.15 is the minimum version, the "Qt${QT_VERSION_MAJOR}_..." variables can be dropped
|
||||
# - https://doc.qt.io/qt-6/cmake-manual.html
|
||||
# TEMPORARY for 11.2 beta:
|
||||
# - Decision still required on whether to allow selection of 5/6 in production
|
||||
# TODO:
|
||||
# - Because VTK and SoQt use Qt themselves, we may want to consider checking that we
|
||||
# have a consistent link to the same Qt version
|
||||
if(GEANT4_USE_QT_QT6)
|
||||
find_package(QT NAMES Qt6 COMPONENTS Core REQUIRED)
|
||||
else()
|
||||
if(GEANT4_USE_QT_QT5)
|
||||
find_package(QT 5.9 NAMES Qt5 COMPONENTS Core REQUIRED)
|
||||
else()
|
||||
find_package(QT NAMES Qt6 COMPONENTS Core REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets OpenGL REQUIRED)
|
||||
@@ -181,6 +182,9 @@ if(GEANT4_USE_QT)
|
||||
Qt${QT_VERSION_MAJOR}Widgets_DIR
|
||||
Qt${QT_VERSION_MAJOR}OpenGL_DIR)
|
||||
|
||||
# RayTracerQT
|
||||
set(GEANT4_USE_RAYTRACER_QT ON)
|
||||
|
||||
# G4OpenGL and G4ToolsSG also require OpenGLWidgets in Qt6
|
||||
if(QT_VERSION_MAJOR GREATER 5)
|
||||
find_package(Qt${QT_VERSION_MAJOR}OpenGLWidgets REQUIRED)
|
||||
|
||||
@@ -175,7 +175,11 @@ function(geant4_add_test test)
|
||||
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
|
||||
-DCMAKE_STATIC_LINKER_FLAGS=${CMAKE_STATIC_LINKER_FLAGS}
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_ROOT=$<BOOL:${CMAKE_DISABLE_FIND_PACKAGE_ROOT}>
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=$<BOOL:${CMAKE_EXPORT_COMPILE_COMMANDS}>
|
||||
)
|
||||
if(ARG_ENVIRONMENT)
|
||||
set_property(TEST ${__build_test_name} PROPERTY ENVIRONMENT ${ARG_ENVIRONMENT})
|
||||
endif()
|
||||
|
||||
# Build part of the test should have additional regex, and *must* have same labels
|
||||
if(ARG_FAILREGEX)
|
||||
|
||||
@@ -6,6 +6,9 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
## 2025-05-12 Gabriele Cosmo (config-V11-03-00)
|
||||
- Updated system scripts for Qt settings: set Qt6 as default.
|
||||
|
||||
## 2023-11-13 Gabriele Cosmo (config-V11-01-03)
|
||||
- Updated system scripts for Qt settings: removed Qt4 and added Qt6.
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
# List of the supported architectures/compilers and related flavors for
|
||||
# the environment variable G4SYSTEM:
|
||||
#
|
||||
# Linux-g++ Linux (CentOS7), gcc-4.8.4 (default)
|
||||
# Linux-g++ Linux (rhel9), gcc-11.5 (default)
|
||||
#
|
||||
# Darwin-clang MacOSX 10.14, clang-7
|
||||
# Darwin-clang macOS 15.4, clang-17
|
||||
#
|
||||
# WIN32-VC Windows 10 and Microsoft Visual C++ 14.11
|
||||
# WIN32-VC Windows 11 and Microsoft Visual C++ 17.13
|
||||
#
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ------ macOS ------
|
||||
# macOS, Apple clang-12 and higher
|
||||
# macOS, Apple clang-17 and higher
|
||||
#
|
||||
# Original author: Gabriele Cosmo - CERN
|
||||
#
|
||||
@@ -92,7 +92,7 @@ ifeq ($(G4SYSTEM),Darwin-clang)
|
||||
QTHOME := /Library/Frameworks
|
||||
endif
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
ifeq ($(QTHOME),/Library/Frameworks)
|
||||
ifndef QTMOC
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ------ macOS ------
|
||||
# macOS, gcc-9.3 and higher
|
||||
# macOS, gcc-11.5 and higher
|
||||
#
|
||||
# Original author: Helmut Burkhardt - CERN
|
||||
# Revisions: Guy Barrand - LAL
|
||||
@@ -121,7 +121,7 @@ ifeq ($(G4SYSTEM),Darwin-g++)
|
||||
QTHOME := /Library/Frameworks
|
||||
endif
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
ifeq ($(QTHOME),/Library/Frameworks)
|
||||
ifndef QTMOC
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# ------ GNU/LINUX ------ clang 9.0 and higher
|
||||
# ------ GNU/LINUX ------ clang 17.0 and higher
|
||||
#
|
||||
# Original author: Gabriele Cosmo - CERN
|
||||
#
|
||||
@@ -93,7 +93,7 @@ ifeq ($(G4SYSTEM),Linux-clang)
|
||||
endif
|
||||
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
|
||||
ifndef QTFLAGS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# ------ GNU/LINUX ------ gcc 9.3 and higher
|
||||
# ------ GNU/LINUX ------ gcc 11.5 and higher
|
||||
#
|
||||
ifeq ($(G4SYSTEM),Linux-g++)
|
||||
CXX := g++
|
||||
@@ -90,7 +90,7 @@ ifeq ($(G4SYSTEM),Linux-g++)
|
||||
endif
|
||||
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
|
||||
ifndef QTFLAGS
|
||||
|
||||
@@ -84,7 +84,7 @@ ifeq ($(G4SYSTEM),Linux-icc)
|
||||
endif
|
||||
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
|
||||
ifndef QTFLAGS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# ------ GNU/LINUX ------ Intel OneAPI DPC++ 2022.x and higher
|
||||
# ------ GNU/LINUX ------ Intel OneAPI DPC++ 2025.x and higher
|
||||
#
|
||||
ifeq ($(G4SYSTEM),Linux-icx)
|
||||
CXX := icpx
|
||||
@@ -85,7 +85,7 @@ ifeq ($(G4SYSTEM),Linux-icx)
|
||||
endif
|
||||
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
|
||||
ifndef QTFLAGS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# ------ WIN32/VC ------ Visual Studio 2019 and higher
|
||||
# ------ WIN32/VC ------ Visual Studio 2022 and higher
|
||||
#
|
||||
ifeq ($(G4SYSTEM),WIN32-VC)
|
||||
CXX := CL
|
||||
@@ -42,7 +42,7 @@ ifeq ($(G4SYSTEM),WIN32-VC)
|
||||
QTHOME := /Qt
|
||||
endif
|
||||
ifndef QT_VERSION
|
||||
QT_VERSION := 5
|
||||
QT_VERSION := 6
|
||||
endif
|
||||
ifndef QTFLAGS
|
||||
QTFLAGS := -I$(QTHOME)/include
|
||||
|
||||
@@ -6,6 +6,49 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2025-06-26 Gabriele Cosmo (examples-V11-03-06)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-06.
|
||||
- Included tags: molecularDNA-V11-03-09, testem2-V11-03-00, exgps-V11-03-00,
|
||||
p8decayer-V11-03-00, molcounter-basic-V11-03-02,
|
||||
spower-V11-03-02, expar04-V11-03-00.
|
||||
|
||||
## 2025-05-31 Gabriele Cosmo (examples-V11-03-05)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-05.
|
||||
- Included tags: doxygen-V11-03-01, exadvanced-V11-03-00, exhadr03-V11-03-00,
|
||||
molecularDNA-V11-03-08, exextended-V11-03-00, exdna-V11-03-01,
|
||||
exhadr04-V11-03-00, exhadr05-V11-03-00, exhadr06-V11-03-00,
|
||||
exhadr07-V11-03-00, NeutronSource-V11-03-00, DICOM-V11-03-00
|
||||
chem4-V11-03-01, chem5-V11-03-02, chem6-V11-03-01,
|
||||
dnadamage2-V11-03-01, dnaphysics-V11-03-03, range-V11-03-00,
|
||||
molcounters-V11-03-00, scavenger-V11-03-01, spower-V11-03-01,
|
||||
UHDR-V11-03-04, activation-V11-03-00.
|
||||
|
||||
## 2025-04-30 Gabriele Cosmo (examples-V11-03-04)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-04.
|
||||
- Included tags: molecularDNA-V11-03-07, testem15-V11-03-00, chem5-V11-03-00,
|
||||
UHDR-V11-03-00, exparallel-V11-03-00, MPI-V11-03-01.
|
||||
|
||||
## 2025-03-31 Gabriele Cosmo (examples-V11-03-03)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-03.
|
||||
- Included tags: exbiasing-V11-03-00, GB01-V11-03-00, GB02-V11-03-00,
|
||||
GB03-V11-03-01, GB04-V11-03-00, GB05-V11-03-01, GB06-V11-03-01,
|
||||
GB07-V11-03-01, testem4-V11-03-00, testem13-V11-03-00,
|
||||
testem14-V11-03-00, testem18-V11-03-00, FlukaCern-V11-03-02,
|
||||
VecGeomNavigation-V11-03-01, exdna-V11-03-00, radial-V11-03-00,
|
||||
dnaphysics-V11-03-02, spower-V11-03-00, MPI-V11-03-00.
|
||||
|
||||
## 2025-02-28 Gabriele Cosmo (examples-V11-03-02)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-02.
|
||||
- Included tags: molecularDNA-V11-03-06, exhgcaltb-V11-03-00, GB03-V11-03-00,
|
||||
GB06-V11-03-00.
|
||||
|
||||
## 2025-01-31 Gabriele Cosmo (examples-V11-03-01)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-01.
|
||||
- Included tags: doxygen-V11-03-00, cellularPhantom-V11-03-01, mfp-V11-03-00,
|
||||
molecularDNA-V11-03-02, microbeam-V11-03-00, svalue-V11-03-01,
|
||||
dnaphysics-V11-03-01, slowing-V11-03-00, wvalue-V11-03-00,
|
||||
radiobiology-V11-03-00.
|
||||
|
||||
## 2024-12-06 Gabriele Cosmo (examples-V11-03-00)
|
||||
- Updated reference outputs according to reference tag geant4-11-03-ref-00.
|
||||
- Included tags: doxygen-V11-02-01, dsbandrepair-V11-02-03, ch3-V11-02-00,
|
||||
|
||||
@@ -38,7 +38,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -98,7 +98,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -751,6 +751,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -767,6 +768,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
@@ -781,4 +783,4 @@ Correlated gamma emission flag 0
|
||||
Max 2J for sampling of angular correlations 10
|
||||
=======================================================================
|
||||
writing Event: 0
|
||||
TimeTotal> 2.324 1.420
|
||||
TimeTotal> 1.859 1.480
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -55,7 +55,7 @@
|
||||
CexmcHistoWidget::CexmcHistoWidget()
|
||||
{
|
||||
/* this is a workaround of the repaint bug in the ROOT Qt backend:
|
||||
* see http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=17081#p73055 */
|
||||
* see http://root.cern/phpBB3/viewtopic.php?f=3&t=17081#p73055 */
|
||||
fCanvas->SetFillColor( 10 );
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
|
||||
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-02-28 Soon Yung Jun (exhgcaltb-V11-02-00)
|
||||
## 2025-02-28 Soon Yung Jun (exhgcaltb-V11-03-00)
|
||||
- Restore the original beam energy after it is modified
|
||||
- Ensure non-negative beam energy
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -1656,7 +1656,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -2309,6 +2309,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -2325,6 +2326,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
|
||||
@@ -6,6 +6,10 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2025-05-16 Ben Morgan (exadvanced-V11-03-00)
|
||||
- Replace the URL root.cern.ch with canonical root.cern
|
||||
- Fixes [GitHub PR 87](https://github.com/Geant4/geant4/pull/87)
|
||||
|
||||
## 2024-10-16 Hoang Tran (exadvanced-V11-02-01)
|
||||
- Created a new dna category in advanced example
|
||||
- Moved moleculardna example from extended dna example to advanced dna example.
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -31,23 +31,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -193,7 +194,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -870,7 +871,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Cr_sctns: NeutronHPInelasticXS: 0 eV ---> 20 MeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
|
||||
Process: nCapture
|
||||
Model: NeutronHPCapture: 0 eV ---> 20 MeV
|
||||
Model: nRadCaptureHP: 0 eV ---> 20 MeV
|
||||
Model: nRadCapture: 19.9 MeV ---> 100 TeV
|
||||
Cr_sctns: NeutronHPCaptureXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
|
||||
@@ -934,6 +935,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -950,6 +952,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
@@ -1007,7 +1010,7 @@ Reading AM_organs.dat
|
||||
Reading OrganMasses.dat
|
||||
NOrganIDs: 142
|
||||
Writing output to ICRP110.out
|
||||
Total energy deposited over all Organs within the Phantom is 1.40721e-09 J
|
||||
Total absorbed dose over all phantom organs is 3.05384e-09 Gy
|
||||
Total energy deposited over all Organs within the Phantom is 1.45718e-09 J
|
||||
Total absorbed dose over all phantom organs is 3.0325e-09 Gy
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -2,38 +2,38 @@
|
||||
--------------------------------
|
||||
OrganID Edep (J) Dose (Gy)
|
||||
--------------------------------
|
||||
26 | 3.38183e-10 6.00841e-10
|
||||
27 | 2.57248e-10 5.7032e-10
|
||||
39 | 3.75818e-13 4.93717e-12
|
||||
47 | 4.62163e-12 4.4905e-11
|
||||
48 | 6.64712e-12 9.03755e-11
|
||||
61 | 5.26965e-10 3.63424e-10
|
||||
67 | 3.40238e-20 4.66718e-18
|
||||
106 | 6.09758e-11 5.00701e-11
|
||||
116 | 1.32968e-10 1.26817e-10
|
||||
120 | 2.14719e-11 5.05341e-10
|
||||
121 | 2.4802e-11 5.83713e-10
|
||||
122 | 3.29498e-11 1.13097e-10
|
||||
4 | 7.08775e-13 2.49481e-11
|
||||
5 | 4.63625e-12 1.5087e-10
|
||||
26 | 3.53493e-10 6.28042e-10
|
||||
27 | 2.16199e-10 4.79313e-10
|
||||
40 | 7.11002e-14 9.62113e-13
|
||||
61 | 5.71323e-10 3.94016e-10
|
||||
106 | 9.19666e-11 7.5518e-11
|
||||
116 | 1.41762e-10 1.35203e-10
|
||||
120 | 1.5945e-11 3.75266e-10
|
||||
121 | 2.52925e-11 5.95258e-10
|
||||
122 | 3.329e-11 1.14265e-10
|
||||
133 | 2.48777e-12 5.88402e-11
|
||||
----------------------------------------------------------------------------
|
||||
-------------------------------ORGAN INFO-----------------------------------
|
||||
-----------------(of organs where edep/dose was recorded)-------------------
|
||||
----------------------------------------------------------------------------
|
||||
ID Organ Name Material ID Density (g/cm^3)
|
||||
4 Posterior nasal passage down to larynx (ET2) 45 1.030
|
||||
5 Oral mucosa, tongue 29 1.050
|
||||
26 Cranium, cortical 2 1.920
|
||||
27 Cranium, spongiosa 8 1.157
|
||||
39 Mandible, cortical 2 1.920
|
||||
47 Cervical spine, cortical 2 1.920
|
||||
48 Cervical spine, spongiosa 17 1.050
|
||||
40 Mandible, spongiosa 13 1.228
|
||||
61 Brain 32 1.050
|
||||
67 Eye bulb, left 34 1.050
|
||||
106 Muscle, head 29 1.050
|
||||
116 Residual tissue, head 49 0.950
|
||||
120 Salivary glands, left 45 1.030
|
||||
121 Salivary glands, right 45 1.030
|
||||
122 Skin, head 27 1.090
|
||||
133 Tongue (inner part) 29 1.050
|
||||
|
||||
Total Edep over all organs = 1.40721e-09 J
|
||||
Total dose absorbed over all organs = 3.05384e-09 Gy
|
||||
Total Edep over all organs = 1.45718e-09 J
|
||||
Total dose absorbed over all organs = 3.0325e-09 Gy
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
----------------ORGAN ENERGY DEPOSITIONS AND ABSORBED DOSE------------------
|
||||
@@ -42,12 +42,12 @@ Total dose absorbed over all organs = 3.05384e-09 Gy
|
||||
----------------------------------------------------------------------------
|
||||
OrganID Edep (J) Dose (Gy)
|
||||
-------------------------------
|
||||
0 | 2.66296e-11 0
|
||||
0 | 1.05008e-10 0
|
||||
1 | 0 0
|
||||
2 | 0 0
|
||||
3 | 0 0
|
||||
4 | 0 0
|
||||
5 | 0 0
|
||||
4 | 7.08775e-13 2.49481e-11
|
||||
5 | 4.63625e-12 1.5087e-10
|
||||
6 | 0 0
|
||||
7 | 0 0
|
||||
8 | 0 0
|
||||
@@ -68,8 +68,8 @@ OrganID Edep (J) Dose (Gy)
|
||||
23 | 0 0
|
||||
24 | 0 0
|
||||
25 | 0 0
|
||||
26 | 3.38183e-10 6.00841e-10
|
||||
27 | 2.57248e-10 5.7032e-10
|
||||
26 | 3.53493e-10 6.28042e-10
|
||||
27 | 2.16199e-10 4.79313e-10
|
||||
28 | 0 0
|
||||
29 | 0 0
|
||||
30 | 0 0
|
||||
@@ -81,16 +81,16 @@ OrganID Edep (J) Dose (Gy)
|
||||
36 | 0 0
|
||||
37 | 0 0
|
||||
38 | 0 0
|
||||
39 | 3.75818e-13 4.93717e-12
|
||||
40 | 0 0
|
||||
39 | 0 0
|
||||
40 | 7.11002e-14 9.62113e-13
|
||||
41 | 0 0
|
||||
42 | 0 0
|
||||
43 | 0 0
|
||||
44 | 0 0
|
||||
45 | 0 0
|
||||
46 | 0 0
|
||||
47 | 4.62163e-12 4.4905e-11
|
||||
48 | 6.64712e-12 9.03755e-11
|
||||
47 | 0 0
|
||||
48 | 0 0
|
||||
49 | 0 0
|
||||
50 | 0 0
|
||||
51 | 0 0
|
||||
@@ -103,13 +103,13 @@ OrganID Edep (J) Dose (Gy)
|
||||
58 | 0 0
|
||||
59 | 0 0
|
||||
60 | 0 0
|
||||
61 | 5.26965e-10 3.63424e-10
|
||||
61 | 5.71323e-10 3.94016e-10
|
||||
62 | 0 0
|
||||
63 | 0 0
|
||||
64 | 0 0
|
||||
65 | 0 0
|
||||
66 | 0 0
|
||||
67 | 3.40238e-20 4.66718e-18
|
||||
67 | 0 0
|
||||
68 | 0 0
|
||||
69 | 0 0
|
||||
70 | 0 0
|
||||
@@ -148,7 +148,7 @@ OrganID Edep (J) Dose (Gy)
|
||||
103 | 0 0
|
||||
104 | 0 0
|
||||
105 | 0 0
|
||||
106 | 6.09758e-11 5.00701e-11
|
||||
106 | 9.19666e-11 7.5518e-11
|
||||
107 | 0 0
|
||||
108 | 0 0
|
||||
109 | 0 0
|
||||
@@ -158,13 +158,13 @@ OrganID Edep (J) Dose (Gy)
|
||||
113 | 0 0
|
||||
114 | 0 0
|
||||
115 | 0 0
|
||||
116 | 1.32968e-10 1.26817e-10
|
||||
116 | 1.41762e-10 1.35203e-10
|
||||
117 | 0 0
|
||||
118 | 0 0
|
||||
119 | 0 0
|
||||
120 | 2.14719e-11 5.05341e-10
|
||||
121 | 2.4802e-11 5.83713e-10
|
||||
122 | 3.29498e-11 1.13097e-10
|
||||
120 | 1.5945e-11 3.75266e-10
|
||||
121 | 2.52925e-11 5.95258e-10
|
||||
122 | 3.329e-11 1.14265e-10
|
||||
123 | 0 0
|
||||
124 | 0 0
|
||||
125 | 0 0
|
||||
@@ -175,14 +175,14 @@ OrganID Edep (J) Dose (Gy)
|
||||
130 | 0 0
|
||||
131 | 0 0
|
||||
132 | 0 0
|
||||
133 | 0 0
|
||||
133 | 2.48777e-12 5.88402e-11
|
||||
134 | 0 0
|
||||
135 | 0 0
|
||||
136 | 0 0
|
||||
137 | 0 0
|
||||
138 | 0 0
|
||||
139 | 0 0
|
||||
140 | 2.12997e-14 1.06498e-10
|
||||
140 | 2.37068e-14 1.18534e-10
|
||||
141 | 0 0
|
||||
Total energy depositied over all organs = 1.40721e-09 J
|
||||
Total absorbed dose over all organs = 3.05384e-09 Gy
|
||||
Total energy depositied over all organs = 1.45718e-09 J
|
||||
Total absorbed dose over all organs = 3.0325e-09 Gy
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -234,23 +234,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -329,7 +330,7 @@ Lowest triplet kinetic energy 1.00000 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -1006,7 +1007,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Cr_sctns: NeutronHPInelasticXS: 0.000000 eV ---> 20.000000 MeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0.000000 eV ---> 100.000000 TeV
|
||||
Process: nCapture
|
||||
Model: NeutronHPCapture: 0.000000 eV ---> 20.000000 MeV
|
||||
Model: nRadCaptureHP: 0.000000 eV ---> 20.000000 MeV
|
||||
Model: nRadCapture: 19.900000 MeV ---> 100.000000 TeV
|
||||
Cr_sctns: NeutronHPCaptureXS: 0.000000 eV ---> 100.000000 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0.000000 eV ---> 100.000000 TeV
|
||||
@@ -1070,6 +1071,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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.00000 keV
|
||||
@@ -1086,6 +1088,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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.00000 eV
|
||||
Min energy per nucleon for multifragmentation 200.00000 GeV
|
||||
Limit excitation energy for Fermi BreakUp 20.00000 MeV
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -159,14 +159,14 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=10.450000s Real=10.453247s Sys=0.000000s
|
||||
User=10.880000s Real=10.893654s Sys=0.000000s
|
||||
... write file : SolidTargetCyclotron.root - done
|
||||
... close file : SolidTargetCyclotron.root - done
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x9b7020
|
||||
UserPhysicsList deleted 0x9be580
|
||||
UserActionInitialization deleted 0xb44ef0
|
||||
UserDetectorConstruction deleted 0x1f156d0
|
||||
UserPhysicsList deleted 0x1f1cc30
|
||||
UserActionInitialization deleted 0x20a43d0
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -156,23 +156,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -298,7 +299,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -778,8 +779,8 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
ooo Run 0 starts (global).
|
||||
|
||||
--------- Ranlux engine status ---------
|
||||
Initial seed = 1745424550
|
||||
float_seed_table[] = 0.0719131 0.622099 0.693342 0.583129 0.453345 0.335303 0.892736 0.113858 0.0750468 0.936936 0.64502 0.915509 0.25001 0.0199363 0.842928 0.117684 0.0681565 0.30302 0.218614 0.764352 0.943045 0.0840406 0.921154 0.242968
|
||||
Initial seed = 1750481057
|
||||
float_seed_table[] = 0.944009 0.718055 0.317672 0.319721 0.407741 0.508605 0.478986 0.261606 0.04847 0.625178 0.898724 0.708996 0.939653 0.34942 0.842478 0.972186 0.203706 0.163775 0.328182 0.0692302 0.224796 0.183814 0.152983 0.573314
|
||||
i_lag = 23, j_lag = 9
|
||||
carry = 0, count24 = 0
|
||||
luxury = 3 nskip = 199
|
||||
@@ -790,15 +791,15 @@ mu- Mono Plane
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100
|
||||
User=0.610000s Real=0.611277s Sys=0.000000s
|
||||
User=0.600000s Real=0.600162s Sys=0.000000s
|
||||
### Run 0 (global) ended.
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x15c5f50
|
||||
UserPhysicsList deleted 0x16070f8
|
||||
UserActionInitialization deleted 0x179bf60
|
||||
UserDetectorConstruction deleted 0x925600
|
||||
UserPhysicsList deleted 0x9667a8
|
||||
UserActionInitialization deleted 0xafc460
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
@@ -808,23 +809,23 @@ G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 10
|
||||
Total navigation history collections cleaned: 9
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0135 MB
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0115 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.0231 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.024 MB
|
||||
Pool ID '7G4Event', size : 0.000961 MB
|
||||
Pool ID '15G4PrimaryVertex', size : 0.000961 MB
|
||||
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
|
||||
Pool ID '15G4HCofThisEvent', size : 0.000961 MB
|
||||
Pool ID '16G4HitsCollection', size : 0.000961 MB
|
||||
Pool ID '7G4Track', size : 0.0461 MB
|
||||
Pool ID '7G4Track', size : 0.0471 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.000961 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.000961 MB
|
||||
Pool ID '15UltraOpticalHit', size : 0.00385 MB
|
||||
Pool ID '15UltraOpticalHit', size : 0.00481 MB
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.094 MB
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.095 MB
|
||||
============================================================
|
||||
G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -199,7 +199,7 @@ N=17 V[N]={906770732717044781, 629165745432651234, 1235682547346241386, 68420008
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=1.710000s Real=1.718713s Sys=0.000000s
|
||||
User=1.740000s Real=1.742337s Sys=0.000000s
|
||||
|
||||
-------------------------------------------------------------
|
||||
---> The calorimeter is 9 Modules
|
||||
@@ -326,9 +326,9 @@ N=17 V[N]={2125414173700100552, 2142585805957254368, 76522162894449253, 17841580
|
||||
---------------------------------------
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x108b5d0
|
||||
UserPhysicsList deleted 0x10bf1c0
|
||||
UserActionInitialization deleted 0x1245c50
|
||||
UserDetectorConstruction deleted 0x2644c80
|
||||
UserPhysicsList deleted 0x2678870
|
||||
UserActionInitialization deleted 0x27ffb70
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
|
||||
@@ -134,7 +134,7 @@ When running in interactive mode there is no scoring mesh.The user has to add it
|
||||
G4Analysis is used to create and fill histograms in ROOT output files.
|
||||
|
||||
The installation of ROOT is required to plot the results of the simulation contained
|
||||
in primary.root and brachytherapy.root(http://root.cern.ch/drupal/).
|
||||
in primary.root and brachytherapy.root(http://root.cern/drupal/).
|
||||
|
||||
------------------------------------------------------------------------
|
||||
----> 7. Simulation output
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -31,23 +31,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -286,7 +287,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -127,7 +127,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -780,6 +780,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -796,6 +797,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
@@ -957,15 +959,15 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 20
|
||||
User=7.050000s Real=7.069787s Sys=0.000000s
|
||||
User=7.560000s Real=7.562846s Sys=0.010000s
|
||||
### Run 0 end.
|
||||
... write file : ccal.root - done
|
||||
... close file : ccal.root - done
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0xba44f0
|
||||
UserPhysicsList deleted 0xba56b0
|
||||
UserActionInitialization deleted 0xd60db0
|
||||
UserDetectorConstruction deleted 0x1aa9ba0
|
||||
UserPhysicsList deleted 0x1aaad60
|
||||
UserActionInitialization deleted 0x1c66e60
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
@@ -976,24 +978,24 @@ G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 56
|
||||
Total navigation history collections cleaned: 49
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0798 MB
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0721 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.0461 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.0798 MB
|
||||
Pool ID '7G4Event', size : 0.000961 MB
|
||||
Pool ID '15G4PrimaryVertex', size : 0.000961 MB
|
||||
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
|
||||
Pool ID '15G4HCofThisEvent', size : 0.000961 MB
|
||||
Pool ID '16G4HitsCollection', size : 0.000961 MB
|
||||
Pool ID '7G4Track', size : 0.0913 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.00673 MB
|
||||
Pool ID '7G4Track', size : 0.159 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.00577 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.000961 MB
|
||||
Pool ID '17G4ReactionProduct', size : 0.0135 MB
|
||||
Pool ID '10G4Fragment', size : 0.00481 MB
|
||||
Pool ID '17G4ReactionProduct', size : 0.0173 MB
|
||||
Pool ID '10G4Fragment', size : 0.00673 MB
|
||||
Number of memory pools allocated: 13 of which, static: 0
|
||||
Dynamic pools deleted: 13 / Total memory freed: 0.25 MB
|
||||
Dynamic pools deleted: 13 / Total memory freed: 0.35 MB
|
||||
============================================================
|
||||
G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
|
||||
@@ -96,21 +96,7 @@ which is commented by default.
|
||||
|
||||
\section cellularPhantom_s6 SIMULATION OUTPUT AND RESULT ANALYSIS
|
||||
|
||||
The output results consists in a phantom.root file, containing three ntuples,
|
||||
corresponding to the 3 types of voxels (red, green and blue) of the original image.
|
||||
|
||||
The ROOT macro plot.C can be run to extract and display:
|
||||
- the cellular phantom
|
||||
- the absorbed energy distribution in the 3 types of voxels
|
||||
- the absorbed energy 2D map for the 3 types of voxels
|
||||
- the absorbed dose 2D map for the 3 types of voxels
|
||||
|
||||
Simply do, after the simulation:
|
||||
\verbatim
|
||||
root plot.C
|
||||
\endverbatim
|
||||
|
||||
In addition, the following quantities are displayed:
|
||||
The following results are displayed at the end of the simulation:
|
||||
- total number of voxels in phantom
|
||||
- total number of RED voxels in phantom
|
||||
- total number of GREEN voxels in phantom
|
||||
@@ -122,6 +108,23 @@ In addition, the following quantities are displayed:
|
||||
- total absorbed dose in GREEN voxels (Gy)
|
||||
- total absorbed dose in BLUE voxels (Gy)
|
||||
|
||||
Results are stored in the results.root file.
|
||||
A phantom.root result file contain three ntuples,
|
||||
corresponding to the 3 types of voxels (red, green and blue) of the original image.
|
||||
The following voxel information is available in these ntuples:
|
||||
- x, y, z position
|
||||
- energy deposition
|
||||
- absorbed dose
|
||||
- voxel number (ID)
|
||||
|
||||
The ROOT macro plot.C can be run to display:
|
||||
- the cellular phantom
|
||||
- the absorbed energy distribution in the 3 types of voxels
|
||||
- the absorbed energy 2D map for the 3 types of voxels
|
||||
- the absorbed dose 2D map for the 3 types of voxels
|
||||
|
||||
Simply do, after the simulation:
|
||||
\verbatim
|
||||
root plot.C
|
||||
\endverbatim
|
||||
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Example cellularPhantom History
|
||||
|
||||
## 2025-01-25 S. Incerti (cellularPhantom-V11-03-01)
|
||||
- Reorganized the whole code by introducing Run class
|
||||
- Simplified analysis of results (plot.C ROOT macro)
|
||||
- Updated README
|
||||
|
||||
## 2025-01-03 S. Incerti (cellularPhantom-V11-03-00)
|
||||
- Additional affiliation in headers and README
|
||||
|
||||
## 2024-10-28 S. Incerti (cellularPhantom-V11-02-01)
|
||||
- Updated README
|
||||
|
||||
|
||||
@@ -95,19 +95,7 @@ which is commented by default.
|
||||
|
||||
---->5. SIMULATION OUTPUT AND RESULT ANALYSIS
|
||||
|
||||
The output results consists in a phantom.root file, containing three ntuples,
|
||||
corresponding to the 3 types of voxels (red, green and blue) of the original image.
|
||||
|
||||
The ROOT macro plot.C can be run to extract and display:
|
||||
- the cellular phantom
|
||||
- the absorbed energy distribution in the 3 types of voxels
|
||||
- the absorbed energy 2D map for the 3 types of voxels
|
||||
- the absorbed dose 2D map for the 3 types of voxels
|
||||
|
||||
Simply do, after the simulation:
|
||||
root plot.C
|
||||
|
||||
In addition, the following quantities are displayed:
|
||||
The following results are displayed at the end of the simulation:
|
||||
- total number of voxels in phantom
|
||||
- total number of RED voxels in phantom
|
||||
- total number of GREEN voxels in phantom
|
||||
@@ -119,4 +107,19 @@ In addition, the following quantities are displayed:
|
||||
- total absorbed dose in GREEN voxels (Gy)
|
||||
- total absorbed dose in BLUE voxels (Gy)
|
||||
|
||||
Results are stored in the results.root file.
|
||||
A phantom.root result file contain three ntuples,
|
||||
corresponding to the 3 types of voxels (red, green and blue) of the original image.
|
||||
The following voxel information is available in these ntuples:
|
||||
- x, y, z position
|
||||
- energy deposition
|
||||
- absorbed dose
|
||||
- voxel number (ID)
|
||||
|
||||
The ROOT macro plot.C can be run to display:
|
||||
- the cellular phantom
|
||||
- the absorbed energy distribution in the 3 types of voxels
|
||||
- the absorbed energy 2D map for the 3 types of voxels
|
||||
- the absorbed dose 2D map for the 3 types of voxels
|
||||
|
||||
Simply do, after the simulation:
|
||||
root plot.C
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "G4RunManagerFactory.hh"
|
||||
#include "G4UIExecutive.hh"
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -28,23 +28,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -160,7 +161,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -633,15 +634,6 @@ Index : 1 used in the geometry : Yes
|
||||
==================================================================
|
||||
|
||||
### Run 0 starts.
|
||||
|
||||
-------- WWWW ------- G4Exception-START -------- WWWW -------
|
||||
*** G4Exception : Analysis_W001
|
||||
issued by : G4RootNtupleFileManager::SetNtupleMergingMode
|
||||
Merging ntuples is not applicable in sequential application.
|
||||
Setting was ignored.
|
||||
*** This is just a warning message. ***
|
||||
-------- WWWW -------- G4Exception-END --------- WWWW -------
|
||||
|
||||
--> Event 0 starts.
|
||||
--> Event 100 starts.
|
||||
--> Event 200 starts.
|
||||
@@ -745,7 +737,24 @@ Setting was ignored.
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10000
|
||||
User=13.710000s Real=13.788261s Sys=0.000000s
|
||||
User=13.730000s Real=13.739353s Sys=0.000000s
|
||||
|
||||
- Summary --------------------------------------------------
|
||||
|
||||
Total number of voxels in phantom = 54300
|
||||
Total number of RED voxels in phantom = 20230
|
||||
Total number of GREEN voxels in phantom = 17320
|
||||
Total number of BLUE voxels in phantom = 16750
|
||||
|
||||
Total absorbed energy in RED voxels (MeV) = 83.1248
|
||||
Total absorbed energy in GREEN voxels (MeV) = 71.1454
|
||||
Total absorbed energy in BLUE voxels (MeV) = 66.8004
|
||||
|
||||
Total absorbed dose in RED voxels (Gy) = 0.0397526
|
||||
Total absorbed dose in GREEN voxels (Gy) = 0.0397402
|
||||
Total absorbed dose in BLUE voxels (Gy) = 0.038583
|
||||
|
||||
------------------------------------------------------------
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
================== Deleting memory pools ===================
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef ActionInitialization_h
|
||||
#define ActionInitialization_h 1
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef CellParameterisation_H
|
||||
#define CellParameterisation_H 1
|
||||
@@ -82,8 +83,8 @@ class CellParameterisation : public G4VPVParameterisation
|
||||
inline auto GetGreenMass() const { return fGreenMass; }
|
||||
inline auto GetBlueMass() const { return fBlueMass; }
|
||||
|
||||
inline auto GetVoxelThreeVector(G4int i) const { return fMapCell[i]; }
|
||||
inline auto GetVoxelThreeVectorPixel(G4int i) const { return fMapCellPxl[i]; }
|
||||
//inline auto GetVoxelThreeVector(G4int i) const { return fMapCell[i]; }
|
||||
//inline auto GetVoxelThreeVectorPixel(G4int i) const { return fMapCellPxl[i]; }
|
||||
inline auto GetVoxelThreeVectorOriginal(G4int i) const { return fMapCellOriginal[i]; }
|
||||
|
||||
inline auto GetMaterial(G4int i) const { return fMaterial[i]; }
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef DetectorConstruction_h
|
||||
#define DetectorConstruction_h 1
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef DetectorMessenger_h
|
||||
#define DetectorMessenger_h 1
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef EventAction_h
|
||||
#define EventAction_h 1
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef PhysicsList_h
|
||||
#define PhysicsList_h 1
|
||||
@@ -54,8 +55,6 @@ class PhysicsList: public G4VModularPhysicsList
|
||||
~PhysicsList() override;
|
||||
|
||||
void SetCuts() override;
|
||||
|
||||
private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef PrimaryGeneratorAction_h
|
||||
#define PrimaryGeneratorAction_h 1
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
// "Monte-Carlo dosimetry on a realistic cell monolayer
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef Run_h
|
||||
#define Run_h 1
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
|
||||
#include "G4Run.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
class Run : public G4Run
|
||||
{
|
||||
public:
|
||||
Run();
|
||||
~Run();
|
||||
|
||||
void AddVoxelEdeposit(G4int i, G4double e) { fVoxelEdeposit[i] += e; }
|
||||
inline G4double GetVoxelEdeposit(G4int i) const { return fVoxelEdeposit[i]; }
|
||||
|
||||
void Merge(const G4Run*) override;
|
||||
void EndOfRun();
|
||||
|
||||
private:
|
||||
G4double * fVoxelEdeposit = nullptr;
|
||||
const CellParameterisation * fMyPhantomParam = nullptr;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,12 +38,12 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef RunAction_h
|
||||
#define RunAction_h 1
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "Run.hh"
|
||||
|
||||
#include "G4UserRunAction.hh"
|
||||
#include "G4AnalysisManager.hh"
|
||||
@@ -59,14 +60,12 @@ class RunAction : public G4UserRunAction
|
||||
void BeginOfRunAction(const G4Run*) override;
|
||||
void EndOfRunAction(const G4Run*) override;
|
||||
|
||||
void AddDoseBox(G4int i, G4double x) {fVoxelEnergy[i] +=x;}
|
||||
G4double GetDoseBox(G4int i) {return fVoxelEnergy[i];}
|
||||
G4Run* GenerateRun() override;
|
||||
|
||||
private:
|
||||
|
||||
const CellParameterisation * fMyPhantomParam = nullptr;
|
||||
G4double * fVoxelEnergy = nullptr;
|
||||
G4int fNbVoxels = 0;
|
||||
Run* fRun;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,12 +38,12 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#ifndef SteppingAction_h
|
||||
#define SteppingAction_h 1
|
||||
|
||||
#include "RunAction.hh"
|
||||
#include "CellParameterisation.hh"
|
||||
|
||||
#include "G4UserSteppingAction.hh"
|
||||
|
||||
@@ -51,13 +52,12 @@
|
||||
class SteppingAction : public G4UserSteppingAction
|
||||
{
|
||||
public:
|
||||
explicit SteppingAction(RunAction*);
|
||||
explicit SteppingAction();
|
||||
~SteppingAction() override = default;
|
||||
|
||||
void UserSteppingAction(const G4Step*) override;
|
||||
|
||||
private:
|
||||
RunAction* fRunAction = nullptr;
|
||||
const CellParameterisation * fMyPhantomParam = nullptr;
|
||||
};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// To execute this macro under ROOT,
|
||||
// 1 - launch ROOT (usually type 'root' at your machine's prompt)
|
||||
// 2 - type '.X plot.C' at the ROOT session prompt
|
||||
// Written by S. Incerti, 10/09/2024
|
||||
// Written by S. Incerti, 25/01/2025
|
||||
// *********************************************************************
|
||||
{
|
||||
gROOT->Reset();
|
||||
@@ -124,10 +124,6 @@ htempTer->SetTitle("RGB phantom XZ view");
|
||||
// Read ROOT file
|
||||
//------------------
|
||||
|
||||
// IF no merging active in simulation
|
||||
//system ("rm -rf phantom.root");
|
||||
//system ("hadd -O phantom.root phantom_t*.root");
|
||||
|
||||
TFile *f = new TFile ("phantom.root");
|
||||
|
||||
TNtuple* ntuple1;
|
||||
@@ -138,66 +134,8 @@ ntuple1 = (TNtuple*)f->Get("ntuple1");
|
||||
ntuple2 = (TNtuple*)f->Get("ntuple2");
|
||||
ntuple3 = (TNtuple*)f->Get("ntuple3");
|
||||
|
||||
//----------------------
|
||||
// Sum of ntuples
|
||||
//----------------------
|
||||
|
||||
Double_t * tabVoxelXRed = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelXGreen = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelXBlue = new Double_t [numberVoxTot];
|
||||
|
||||
Double_t * tabVoxelYRed = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelYGreen = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelYBlue = new Double_t [numberVoxTot];
|
||||
|
||||
Double_t * tabVoxelZRed = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelZGreen = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelZBlue = new Double_t [numberVoxTot];
|
||||
|
||||
Double_t * tabVoxelEnergyRed = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelEnergyGreen = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelEnergyBlue = new Double_t [numberVoxTot];
|
||||
|
||||
Double_t * tabVoxelDoseRed = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelDoseGreen = new Double_t [numberVoxTot];
|
||||
Double_t * tabVoxelDoseBlue = new Double_t [numberVoxTot];
|
||||
|
||||
// Initialisation of the arrays
|
||||
for (Int_t i = 0; i < numberVoxRed; i++)
|
||||
{
|
||||
tabVoxelXRed[i] = 0;
|
||||
tabVoxelYRed[i] = 0;
|
||||
tabVoxelZRed[i] = 0;
|
||||
tabVoxelEnergyRed[i] = 0;
|
||||
tabVoxelDoseRed[i] = 0;
|
||||
}
|
||||
for (Int_t i = 0; i < numberVoxGreen; i++)
|
||||
{
|
||||
tabVoxelXGreen[i] = 0;
|
||||
tabVoxelYGreen[i] = 0;
|
||||
tabVoxelZGreen[i] = 0;
|
||||
tabVoxelEnergyGreen[i] = 0;
|
||||
tabVoxelDoseGreen[i] = 0;
|
||||
}
|
||||
for (Int_t i = 0; i < numberVoxBlue; i++)
|
||||
{
|
||||
tabVoxelXBlue[i] = 0;
|
||||
tabVoxelYBlue[i] = 0;
|
||||
tabVoxelZBlue[i] = 0;
|
||||
tabVoxelEnergyBlue[i] = 0;
|
||||
tabVoxelDoseBlue[i] = 0;
|
||||
}
|
||||
|
||||
Double_t x, y, z, energy, dose;
|
||||
Int_t voxelID;
|
||||
Double_t nrjRed=0.;
|
||||
Double_t nrjGreen=0.;
|
||||
Double_t nrjBlue=0.;
|
||||
Double_t doseRed=0.;
|
||||
Double_t doseGreen=0.;
|
||||
Double_t doseBlue=0.;
|
||||
|
||||
//
|
||||
|
||||
ntuple1->SetBranchAddress("x",&x);
|
||||
ntuple1->SetBranchAddress("y",&y);
|
||||
@@ -206,32 +144,6 @@ ntuple1->SetBranchAddress("energy",&energy);
|
||||
ntuple1->SetBranchAddress("dose",&dose);
|
||||
ntuple1->SetBranchAddress("voxelID",&voxelID);
|
||||
|
||||
// RED
|
||||
|
||||
Long_t nentriesRed = (Long_t)ntuple1->GetEntries();
|
||||
for (Long_t i=0;i<nentriesRed;i++)
|
||||
{
|
||||
x=0;
|
||||
y=0;
|
||||
z=0;
|
||||
energy=0;
|
||||
dose=0;
|
||||
voxelID=0;
|
||||
|
||||
ntuple1->GetEntry(i);
|
||||
if (energy > 0)
|
||||
{
|
||||
nrjRed=nrjRed+energy;
|
||||
doseRed=doseRed+dose;
|
||||
|
||||
tabVoxelXRed[voxelID] = x;
|
||||
tabVoxelYRed[voxelID] = y;
|
||||
tabVoxelZRed[voxelID] = z;
|
||||
tabVoxelEnergyRed[voxelID] = tabVoxelEnergyRed[voxelID] + energy;
|
||||
tabVoxelDoseRed[voxelID] = tabVoxelDoseRed[voxelID] + dose;
|
||||
}
|
||||
}
|
||||
|
||||
ntuple2->SetBranchAddress("x",&x);
|
||||
ntuple2->SetBranchAddress("y",&y);
|
||||
ntuple2->SetBranchAddress("z",&z);
|
||||
@@ -239,34 +151,6 @@ ntuple2->SetBranchAddress("energy",&energy);
|
||||
ntuple2->SetBranchAddress("dose",&dose);
|
||||
ntuple2->SetBranchAddress("voxelID",&voxelID);
|
||||
|
||||
// GREEN
|
||||
|
||||
Long_t nentriesGreen = (Long_t)ntuple2->GetEntries();
|
||||
for (Long_t i=0;i<nentriesGreen;i++)
|
||||
{
|
||||
x=0;
|
||||
y=0;
|
||||
z=0;
|
||||
energy=0;
|
||||
dose=0;
|
||||
voxelID=0;
|
||||
|
||||
ntuple2->GetEntry(i);
|
||||
if (energy > 0)
|
||||
{
|
||||
nrjGreen=nrjGreen+energy;
|
||||
doseGreen=doseGreen+dose;
|
||||
|
||||
tabVoxelXGreen[voxelID] = x;
|
||||
tabVoxelYGreen[voxelID] = y;
|
||||
tabVoxelZGreen[voxelID] = z;
|
||||
tabVoxelEnergyGreen[voxelID] = tabVoxelEnergyGreen[voxelID] + energy;
|
||||
tabVoxelDoseGreen[voxelID] = tabVoxelDoseGreen[voxelID] + dose;
|
||||
}
|
||||
}
|
||||
|
||||
// BLUE
|
||||
|
||||
ntuple3->SetBranchAddress("x",&x);
|
||||
ntuple3->SetBranchAddress("y",&y);
|
||||
ntuple3->SetBranchAddress("z",&z);
|
||||
@@ -274,60 +158,13 @@ ntuple3->SetBranchAddress("energy",&energy);
|
||||
ntuple3->SetBranchAddress("dose",&dose);
|
||||
ntuple3->SetBranchAddress("voxelID",&voxelID);
|
||||
|
||||
Long_t nentriesBlue = (Long_t)ntuple3->GetEntries();
|
||||
for (Long_t i=0;i<nentriesBlue;i++)
|
||||
{
|
||||
x=0;
|
||||
y=0;
|
||||
z=0;
|
||||
energy=0;
|
||||
dose=0;
|
||||
voxelID=0;
|
||||
|
||||
ntuple3->GetEntry(i);
|
||||
if (energy > 0)
|
||||
{
|
||||
nrjBlue=nrjBlue+energy;
|
||||
doseBlue=doseBlue+dose;
|
||||
tabVoxelXBlue[voxelID] = x;
|
||||
tabVoxelYBlue[voxelID] = y;
|
||||
tabVoxelZBlue[voxelID] = z;
|
||||
tabVoxelEnergyBlue[voxelID] = tabVoxelEnergyBlue[voxelID] + energy;
|
||||
tabVoxelDoseBlue[voxelID] = tabVoxelDoseBlue[voxelID] + dose;
|
||||
}
|
||||
}
|
||||
|
||||
// To liberate memory
|
||||
f->Close();
|
||||
|
||||
TFile *f2 = new TFile ("results.root","RECREATE");
|
||||
//
|
||||
|
||||
TNtuple *ntupleRED = new TNtuple ("RED","RED","x:y:z:energy:dose");
|
||||
TNtuple *ntupleGREEN = new TNtuple ("GREEN","GREEN","x:y:z:energy:dose");
|
||||
TNtuple *ntupleBLUE = new TNtuple ("BLUE","BLUE","x:y:z:energy:dose");
|
||||
|
||||
// Global sums
|
||||
for (Int_t i = 0; i < numberVoxTot; i++)
|
||||
{
|
||||
ntupleRED->Fill(tabVoxelXRed[i],tabVoxelYRed[i],tabVoxelZRed[i],tabVoxelEnergyRed[i],tabVoxelDoseRed[i]);
|
||||
}
|
||||
for (Int_t i = 0; i < numberVoxTot; i++)
|
||||
{
|
||||
ntupleGREEN->Fill(tabVoxelXGreen[i],tabVoxelYGreen[i],tabVoxelZGreen[i],tabVoxelEnergyGreen[i],tabVoxelDoseGreen[i]);
|
||||
}
|
||||
for (Int_t i = 0; i < numberVoxTot; i++)
|
||||
{
|
||||
ntupleBLUE->Fill(tabVoxelXBlue[i],tabVoxelYBlue[i],tabVoxelZBlue[i],tabVoxelEnergyBlue[i],tabVoxelDoseBlue[i]);
|
||||
}
|
||||
|
||||
//---------------------------------
|
||||
// Absorbed energy distributions
|
||||
//---------------------------------
|
||||
|
||||
c1->cd(2);
|
||||
gPad->SetLogy();
|
||||
ntupleRED->Draw("energy","energy>0");
|
||||
ntuple1->Draw("energy","energy>0");
|
||||
TH1F *htemp2 = (TH1F*)gPad->GetPrimitive("htemp");
|
||||
htemp2->GetXaxis()->SetTitle("Energy (keV)");
|
||||
htemp2->GetXaxis()->SetLabelSize(0.025);
|
||||
@@ -339,7 +176,7 @@ htemp2->SetFillColor(2);
|
||||
|
||||
c1->cd(6);
|
||||
gPad->SetLogy();
|
||||
ntupleGREEN->Draw("energy","energy>0");
|
||||
ntuple2->Draw("energy","energy>0");
|
||||
TH1F *htemp3 = (TH1F*)gPad->GetPrimitive("htemp");
|
||||
htemp3->GetXaxis()->SetTitle("Energy (keV)");
|
||||
htemp3->GetXaxis()->SetLabelSize(0.025);
|
||||
@@ -351,7 +188,7 @@ htemp3->SetFillColor(3);
|
||||
|
||||
c1->cd(10);
|
||||
gPad->SetLogy();
|
||||
ntupleBLUE->Draw("energy","energy>0");
|
||||
ntuple3->Draw("energy","energy>0");
|
||||
TH1F *htemp4 = (TH1F*)gPad->GetPrimitive("htemp");
|
||||
htemp4->GetXaxis()->SetTitle("Energy (keV)");
|
||||
htemp4->GetXaxis()->SetLabelSize(0.025);
|
||||
@@ -367,7 +204,7 @@ htemp4->SetFillColor(4);
|
||||
|
||||
c1->cd(3);
|
||||
TH2F *histNrjRed = new TH2F("histNrjRed","histNrjRed",100,0,800,100,0,800);
|
||||
ntupleRED->Draw("y:x>>histNrjRed","energy","contz");
|
||||
ntuple1->Draw("y:x>>histNrjRed","energy","contz");
|
||||
gPad->SetLogz();
|
||||
histNrjRed->Draw("contz");
|
||||
histNrjRed->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -386,7 +223,7 @@ histNrjRed->SetTitle("Energy map for RED voxels");
|
||||
|
||||
c1->cd(7);
|
||||
TH2F *histNrjGreen = new TH2F("histNrjGreen","histNrjGreen",100,0,800,100,0,800);
|
||||
ntupleGREEN->Draw("y:x>>histNrjGreen","energy","contz");
|
||||
ntuple2->Draw("y:x>>histNrjGreen","energy","contz");
|
||||
gPad->SetLogz();
|
||||
histNrjGreen->Draw("contz");
|
||||
histNrjGreen->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -405,7 +242,7 @@ histNrjGreen->SetTitle("Energy map for GREEN voxels");
|
||||
|
||||
c1->cd(11);
|
||||
TH2F *histNrjBlue = new TH2F("histNrjBlue","histNrjBlue",100,0,800,100,0,800);
|
||||
ntupleBLUE->Draw("y:x>>histNrjBlue","energy","contz");
|
||||
ntuple3->Draw("y:x>>histNrjBlue","energy","contz");
|
||||
gPad->SetLogz();
|
||||
histNrjBlue->Draw("contz");
|
||||
histNrjBlue->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -429,7 +266,7 @@ histNrjBlue->SetTitle("Energy map for BLUE voxels");
|
||||
c1->cd(4);
|
||||
TH2F *histDoseRed = new TH2F("histDoseRed","histDoseRed",100,0,800,100,0,800);
|
||||
// WARNING : dose scaling to mGy
|
||||
ntupleRED->Draw("y:x>>histDoseRed","dose/1000","contz");
|
||||
ntuple1->Draw("y:x>>histDoseRed","dose/1000","contz");
|
||||
//gPad->SetLogz();
|
||||
histDoseRed->Draw("contz");
|
||||
histDoseRed->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -449,7 +286,7 @@ histDoseRed->SetTitle("Dose map for RED voxels");
|
||||
c1->cd(8);
|
||||
TH2F *histDoseGreen = new TH2F("histDoseGreen","histDoseGreen",100,0,800,100,0,800);
|
||||
// WARNING : dose scaling to mGy
|
||||
ntupleGREEN->Draw("y:x>>histDoseGreen","dose/1000","contz");
|
||||
ntuple2->Draw("y:x>>histDoseGreen","dose/1000","contz");
|
||||
//gPad->SetLogz();
|
||||
histDoseGreen->Draw("contz");
|
||||
histDoseGreen->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -469,7 +306,7 @@ histDoseGreen->SetTitle("Dose map for GREEN voxels");
|
||||
c1->cd(12);
|
||||
TH2F *histDoseBlue = new TH2F("histDoseBlue","histDoseBlue",100,0,800,100,0,800);
|
||||
// WARNING : dose scaling to mGy
|
||||
ntupleBLUE->Draw("y:x>>histDoseBlue","dose/1000","contz");
|
||||
ntuple3->Draw("y:x>>histDoseBlue","dose/1000","contz");
|
||||
//gPad->SetLogz();
|
||||
histDoseBlue->Draw("contz");
|
||||
histDoseBlue->GetXaxis()->SetTitle("X (microns)");
|
||||
@@ -486,29 +323,4 @@ histDoseBlue->GetYaxis()->SetTitleOffset(1.4);
|
||||
histDoseBlue->GetZaxis()->SetTitleOffset(.6);
|
||||
histDoseBlue->SetTitle("Dose map for BLUE voxels");
|
||||
|
||||
//----------------------------
|
||||
// SUMMARY
|
||||
//----------------------------
|
||||
|
||||
cout << endl;
|
||||
cout << "- Summary --------------------------------------------------" << endl;
|
||||
cout << endl;
|
||||
cout << " Total number of voxels in phantom = " << numberVoxTot << endl;
|
||||
cout << " Total number of RED voxels in phantom = " << numberVoxRed << endl;
|
||||
cout << " Total number of GREEN voxels in phantom = " << numberVoxGreen << endl;
|
||||
cout << " Total number of BLUE voxels in phantom = " << numberVoxBlue << endl;
|
||||
cout << endl;
|
||||
cout << " Total absorbed energy in RED voxels (MeV) = " << nrjRed/1E3 << endl;
|
||||
cout << " Total absorbed energy in GREEN voxels (MeV) = " << nrjGreen/1E3 << endl;
|
||||
cout << " Total absorbed energy in BLUE voxels (MeV) = " << nrjBlue/1E3 << endl;
|
||||
cout << endl;
|
||||
cout << " Total absorbed dose in RED voxels (Gy) = " << doseRed << endl;
|
||||
cout << " Total absorbed dose in GREEN voxels (Gy) = " << doseGreen << endl;
|
||||
cout << " Total absorbed dose in BLUE voxels (Gy) = " << doseBlue << endl;
|
||||
cout << endl;
|
||||
cout << "------------------------------------------------------------" << endl;
|
||||
|
||||
// End
|
||||
f2->Write();
|
||||
|
||||
}
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,10 +38,11 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "ActionInitialization.hh"
|
||||
#include "PrimaryGeneratorAction.hh"
|
||||
#include "RunAction.hh"
|
||||
#include "EventAction.hh"
|
||||
#include "SteppingAction.hh"
|
||||
|
||||
@@ -69,5 +71,5 @@ void ActionInitialization::Build() const
|
||||
|
||||
SetUserAction(new EventAction());
|
||||
|
||||
SetUserAction(new SteppingAction(runAction));
|
||||
SetUserAction(new SteppingAction());
|
||||
}
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "CellParameterisation.hh"
|
||||
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,8 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "DetectorConstruction.hh"
|
||||
#include "DetectorMessenger.hh"
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "DetectorMessenger.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "EventAction.hh"
|
||||
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "PhysicsList.hh"
|
||||
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "PrimaryGeneratorAction.hh"
|
||||
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
//
|
||||
// ********************************************************************
|
||||
// * License and Disclaimer *
|
||||
// * *
|
||||
// * The Geant4 software is copyright of the Copyright Holders of *
|
||||
// * the Geant4 Collaboration. It is provided under the terms and *
|
||||
// * conditions of the Geant4 Software License, included in the file *
|
||||
// * LICENSE and available at http://cern.ch/geant4/license . These *
|
||||
// * include a list of copyright holders. *
|
||||
// * *
|
||||
// * Neither the authors of this software system, nor their employing *
|
||||
// * institutes,nor the agencies providing financial support for this *
|
||||
// * work make any representation or warranty, express or implied, *
|
||||
// * regarding this software system or assume any liability for its *
|
||||
// * use. Please see the license in the file LICENSE and URL above *
|
||||
// * for the full disclaimer and the limitation of liability. *
|
||||
// * *
|
||||
// * This code implementation is the result of the scientific and *
|
||||
// * technical work of the GEANT4 collaboration. *
|
||||
// * By using, copying, modifying or distributing the software (or *
|
||||
// * any work based on the software) you agree to acknowledge its *
|
||||
// * use in resulting scientific publications, and indicate your *
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
// "Monte-Carlo dosimetry on a realistic cell monolayer
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "Run.hh"
|
||||
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "G4UnitsTable.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Run::Run()
|
||||
:G4Run()
|
||||
{
|
||||
G4int nbVoxel = CellParameterisation::Instance()->GetPhantomTotalPixels();
|
||||
fVoxelEdeposit = new G4double[nbVoxel];
|
||||
for (G4int i=0; i<nbVoxel; ++i) fVoxelEdeposit[i] = 0;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
Run::~Run()
|
||||
{
|
||||
delete[] fVoxelEdeposit;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void Run::Merge(const G4Run* run)
|
||||
{
|
||||
const Run* localRun = static_cast<const Run*>(run);
|
||||
|
||||
// Accumulate energy deposits per voxel
|
||||
G4int nbVoxel = CellParameterisation::Instance()->GetPhantomTotalPixels();
|
||||
for (G4int i=0; i<nbVoxel; ++i)
|
||||
fVoxelEdeposit[i] += localRun->fVoxelEdeposit[i];
|
||||
|
||||
G4Run::Merge(run);
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
void Run::EndOfRun()
|
||||
{
|
||||
G4double nrjRed=0;
|
||||
G4double doseRed=0;
|
||||
G4double nrjGreen=0;
|
||||
G4double doseGreen=0;
|
||||
G4double nrjBlue=0;
|
||||
G4double doseBlue=0;
|
||||
|
||||
fMyPhantomParam = CellParameterisation::Instance();
|
||||
|
||||
G4double redMassTot = fMyPhantomParam->GetRedMass();
|
||||
G4double greenMassTot = fMyPhantomParam->GetGreenMass();
|
||||
G4double blueMassTot = fMyPhantomParam->GetBlueMass();
|
||||
|
||||
for (G4int i = 0; i < fMyPhantomParam->GetPhantomTotalPixels(); i++)
|
||||
{
|
||||
if (fVoxelEdeposit[i] > 0.)
|
||||
{
|
||||
if (fMyPhantomParam->GetMaterial(i) == 1)
|
||||
{
|
||||
nrjRed=nrjRed+fVoxelEdeposit[i];
|
||||
doseRed=doseRed+(fVoxelEdeposit[i]/redMassTot);
|
||||
}
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 2)
|
||||
{
|
||||
nrjGreen=nrjGreen+fVoxelEdeposit[i];
|
||||
doseGreen=doseGreen+(fVoxelEdeposit[i]/greenMassTot);
|
||||
}
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 3)
|
||||
{
|
||||
nrjBlue=nrjBlue+fVoxelEdeposit[i];
|
||||
doseBlue=doseBlue+(fVoxelEdeposit[i]/blueMassTot);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
G4int numberVoxTot = fMyPhantomParam->GetPhantomTotalPixels();
|
||||
G4int numberVoxRed = fMyPhantomParam->GetRedTotalPixels();
|
||||
G4int numberVoxGreen = fMyPhantomParam->GetGreenTotalPixels();
|
||||
G4int numberVoxBlue = fMyPhantomParam->GetBlueTotalPixels();
|
||||
|
||||
G4cout << G4endl;
|
||||
G4cout << "- Summary --------------------------------------------------" << G4endl;
|
||||
G4cout << G4endl;
|
||||
G4cout << " Total number of voxels in phantom = " << numberVoxTot << G4endl;
|
||||
G4cout << " Total number of RED voxels in phantom = " << numberVoxRed << G4endl;
|
||||
G4cout << " Total number of GREEN voxels in phantom = " << numberVoxGreen << G4endl;
|
||||
G4cout << " Total number of BLUE voxels in phantom = " << numberVoxBlue << G4endl;
|
||||
G4cout << G4endl;
|
||||
G4cout << " Total absorbed energy in RED voxels (MeV) = " << nrjRed/MeV << G4endl;
|
||||
G4cout << " Total absorbed energy in GREEN voxels (MeV) = " << nrjGreen/MeV << G4endl;
|
||||
G4cout << " Total absorbed energy in BLUE voxels (MeV) = " << nrjBlue/MeV << G4endl;
|
||||
G4cout << G4endl;
|
||||
G4cout << " Total absorbed dose in RED voxels (Gy) = " << doseRed/(joule/kg) << G4endl;
|
||||
G4cout << " Total absorbed dose in GREEN voxels (Gy) = " << doseGreen/(joule/kg) << G4endl;
|
||||
G4cout << " Total absorbed dose in BLUE voxels (Gy) = " << doseBlue/(joule/kg) << G4endl;
|
||||
G4cout << G4endl;
|
||||
G4cout << "------------------------------------------------------------" << G4endl;
|
||||
|
||||
}
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,7 +38,7 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "RunAction.hh"
|
||||
|
||||
@@ -48,153 +49,164 @@
|
||||
RunAction::RunAction()
|
||||
:G4UserRunAction()
|
||||
{
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
man->SetDefaultFileType("root");
|
||||
man->SetNtupleMerging(true);
|
||||
man->SetFirstNtupleId(1);
|
||||
if (isMaster)
|
||||
{
|
||||
// Declare ntuples
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
man->SetDefaultFileType("root");
|
||||
man->SetFirstNtupleId(1);
|
||||
|
||||
// Create 1st ntuple (id = 1)
|
||||
man->CreateNtuple("ntuple1", "RED");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
// Create 1st ntuple (id = 1)
|
||||
man->CreateNtuple("ntuple1", "RED");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
|
||||
// Create 2nd ntuple (id = 2)
|
||||
man->CreateNtuple("ntuple2", "GREEN");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
// Create 2nd ntuple (id = 2)
|
||||
man->CreateNtuple("ntuple2", "GREEN");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
|
||||
// Create 3rd ntuple (id = 3)
|
||||
man->CreateNtuple("ntuple3", "BLUE");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
// Create 3rd ntuple (id = 3)
|
||||
man->CreateNtuple("ntuple3", "BLUE");
|
||||
man->CreateNtupleDColumn("x");
|
||||
man->CreateNtupleDColumn("y");
|
||||
man->CreateNtupleDColumn("z");
|
||||
man->CreateNtupleDColumn("energy");
|
||||
man->CreateNtupleDColumn("dose");
|
||||
man->CreateNtupleIColumn("voxelID");
|
||||
man->FinishNtuple();
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
RunAction::~RunAction()
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
G4Run* RunAction::GenerateRun()
|
||||
{
|
||||
delete[] fVoxelEnergy;
|
||||
fRun = new Run();
|
||||
return fRun;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void RunAction::BeginOfRunAction(const G4Run *)
|
||||
{
|
||||
// Analysis manager
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
man->OpenFile("phantom");
|
||||
if (isMaster)
|
||||
{
|
||||
// Analysis manager
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
man->OpenFile("phantom");
|
||||
|
||||
// Access phantom singleton
|
||||
fMyPhantomParam = CellParameterisation::Instance();
|
||||
|
||||
fNbVoxels = fMyPhantomParam->GetPhantomTotalPixels();
|
||||
|
||||
// Allocates the array receiving the energy per voxel
|
||||
fVoxelEnergy = new G4double[fNbVoxels];
|
||||
|
||||
// Initialisation of the energy array
|
||||
for (G4int i = 0; i < fNbVoxels; i++) fVoxelEnergy[i] = 0;
|
||||
// Access phantom singleton
|
||||
fMyPhantomParam = CellParameterisation::Instance();
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void RunAction::EndOfRunAction(const G4Run * /*aRun*/)
|
||||
{
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
|
||||
G4double X, Y, Z;
|
||||
|
||||
// Total mass of voxel
|
||||
G4double redMassTot=0.;
|
||||
G4double greenMassTot=0.;
|
||||
G4double blueMassTot=0.;
|
||||
|
||||
redMassTot = fMyPhantomParam->GetRedMass();
|
||||
greenMassTot = fMyPhantomParam->GetGreenMass();
|
||||
blueMassTot = fMyPhantomParam->GetBlueMass();
|
||||
|
||||
// (Optional) Numbers of voxel
|
||||
//G4double redVox=0;
|
||||
//G4double greenVox=0;
|
||||
//G4double blueVox=0;
|
||||
//redVox = fMyPhantomParam->GetRedTotalPixels();
|
||||
//greenVox = fMyPhantomParam->GetGreenTotalPixels();
|
||||
//blueVox = fMyPhantomParam->GetBlueTotalPixels();
|
||||
|
||||
// (Optional) Single voxel mass
|
||||
//G4double redMass=0.;
|
||||
//G4double greenMass=0.;
|
||||
//G4double blueMass=0.;
|
||||
//redMass = redMassTot/redVox;
|
||||
//greenMass = greenMassTot/greenVox;
|
||||
//blueMass = blueMassTot/blueVox;
|
||||
|
||||
// Save x, y, z and energy for every voxel having absorbed an energy above 0.
|
||||
// Energy is in keV
|
||||
// Dose is in Gy
|
||||
|
||||
for (G4int i = 0; i < fMyPhantomParam->GetPhantomTotalPixels(); i++)
|
||||
if (isMaster)
|
||||
{
|
||||
if (fVoxelEnergy[i] > 0.)
|
||||
// Display results from merged local runs
|
||||
fRun->EndOfRun();
|
||||
|
||||
// Fill ntuples
|
||||
auto man = G4AnalysisManager::Instance();
|
||||
|
||||
G4double X, Y, Z;
|
||||
|
||||
// Total mass of voxels
|
||||
G4double redMassTot=0.;
|
||||
G4double greenMassTot=0.;
|
||||
G4double blueMassTot=0.;
|
||||
|
||||
redMassTot = fMyPhantomParam->GetRedMass();
|
||||
greenMassTot = fMyPhantomParam->GetGreenMass();
|
||||
blueMassTot = fMyPhantomParam->GetBlueMass();
|
||||
|
||||
// (Optional) Numbers of voxel
|
||||
//G4double redVox=0;
|
||||
//G4double greenVox=0;
|
||||
//G4double blueVox=0;
|
||||
//redVox = fMyPhantomParam->GetRedTotalPixels();
|
||||
//greenVox = fMyPhantomParam->GetGreenTotalPixels();
|
||||
//blueVox = fMyPhantomParam->GetBlueTotalPixels();
|
||||
|
||||
// (Optional) Single voxel mass
|
||||
//G4double redMass=0.;
|
||||
//G4double greenMass=0.;
|
||||
//G4double blueMass=0.;
|
||||
//redMass = redMassTot/redVox;
|
||||
//greenMass = greenMassTot/greenVox;
|
||||
//blueMass = blueMassTot/blueVox;
|
||||
|
||||
// Save x, y, z and energy for every voxel having absorbed an energy above 0.
|
||||
// Energy is in keV
|
||||
// Dose is in Gy
|
||||
|
||||
G4double cumulatedDeposit = 0;
|
||||
|
||||
// Loop on voxels and collect energy and dose from merged local runs
|
||||
for (G4int i = 0; i < fMyPhantomParam->GetPhantomTotalPixels(); i++)
|
||||
{
|
||||
X = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).x()) / um;
|
||||
Y = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).y()) / um;
|
||||
Z = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).z()) / um;
|
||||
cumulatedDeposit = fRun->GetVoxelEdeposit(i);
|
||||
|
||||
if (fMyPhantomParam->GetMaterial(i) == 1)
|
||||
if (cumulatedDeposit > 0.)
|
||||
{
|
||||
man->FillNtupleDColumn(1,0,X);
|
||||
man->FillNtupleDColumn(1,1,Y);
|
||||
man->FillNtupleDColumn(1,2,Z);
|
||||
man->FillNtupleDColumn(1,3,fVoxelEnergy[i]/keV);
|
||||
man->FillNtupleDColumn(1,4,((fVoxelEnergy[i]/joule)/(redMassTot/kg)));
|
||||
man->FillNtupleIColumn(1,5,i);
|
||||
man->AddNtupleRow(1);
|
||||
}
|
||||
X = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).x()) / um;
|
||||
Y = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).y()) / um;
|
||||
Z = (fMyPhantomParam->GetVoxelThreeVectorOriginal(i).z()) / um;
|
||||
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 2)
|
||||
{
|
||||
man->FillNtupleDColumn(2,0,X);
|
||||
man->FillNtupleDColumn(2,1,Y);
|
||||
man->FillNtupleDColumn(2,2,Z);
|
||||
man->FillNtupleDColumn(2,3,fVoxelEnergy[i]/keV);
|
||||
man->FillNtupleDColumn(2,4,((fVoxelEnergy[i]/joule)/(greenMassTot/kg)));
|
||||
man->FillNtupleIColumn(2,5,i);
|
||||
man->AddNtupleRow(2);
|
||||
}
|
||||
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 3)
|
||||
{
|
||||
man->FillNtupleDColumn(3,0,X);
|
||||
man->FillNtupleDColumn(3,1,Y);
|
||||
man->FillNtupleDColumn(3,2,Z);
|
||||
man->FillNtupleDColumn(3,3,fVoxelEnergy[i]/keV);
|
||||
man->FillNtupleDColumn(3,4,((fVoxelEnergy[i]/joule)/(blueMassTot/kg)));
|
||||
man->FillNtupleIColumn(3,5,i);
|
||||
man->AddNtupleRow(3);
|
||||
if (fMyPhantomParam->GetMaterial(i) == 1)
|
||||
{
|
||||
man->FillNtupleDColumn(1,0,X);
|
||||
man->FillNtupleDColumn(1,1,Y);
|
||||
man->FillNtupleDColumn(1,2,Z);
|
||||
man->FillNtupleDColumn(1,3,cumulatedDeposit/keV);
|
||||
man->FillNtupleDColumn(1,4,((cumulatedDeposit/joule)/(redMassTot/kg)));
|
||||
man->FillNtupleIColumn(1,5,i);
|
||||
man->AddNtupleRow(1);
|
||||
}
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 2)
|
||||
{
|
||||
man->FillNtupleDColumn(2,0,X);
|
||||
man->FillNtupleDColumn(2,1,Y);
|
||||
man->FillNtupleDColumn(2,2,Z);
|
||||
man->FillNtupleDColumn(2,3,cumulatedDeposit/keV);
|
||||
man->FillNtupleDColumn(2,4,((cumulatedDeposit/joule)/(greenMassTot/kg)));
|
||||
man->FillNtupleIColumn(2,5,i);
|
||||
man->AddNtupleRow(2);
|
||||
}
|
||||
else if (fMyPhantomParam->GetMaterial(i) == 3)
|
||||
{
|
||||
man->FillNtupleDColumn(3,0,X);
|
||||
man->FillNtupleDColumn(3,1,Y);
|
||||
man->FillNtupleDColumn(3,2,Z);
|
||||
man->FillNtupleDColumn(3,3,cumulatedDeposit/keV);
|
||||
man->FillNtupleDColumn(3,4,((cumulatedDeposit/joule)/(blueMassTot/kg)));
|
||||
man->FillNtupleIColumn(3,5,i);
|
||||
man->AddNtupleRow(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save histograms
|
||||
man->Write();
|
||||
man->CloseFile();
|
||||
man->Clear();
|
||||
}
|
||||
|
||||
// Save histograms
|
||||
man->Write();
|
||||
man->CloseFile();
|
||||
|
||||
// Complete clean-up
|
||||
man->Clear();
|
||||
}
|
||||
|
||||
@@ -23,13 +23,14 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
// MONTE CARLO SIMULATION OF REALISTIC GEOMETRY FROM MICROSCOPES IMAGES
|
||||
//
|
||||
// Authors and contributors:
|
||||
// P. Barberet, S. Incerti, N. H. Tran, L. Morelli
|
||||
// P. Barberet (a), S. Incerti (a), N. H. Tran (a), L. Morelli (a,b)
|
||||
//
|
||||
// University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// a) University of Bordeaux, CNRS, LP2i, UMR5797, Gradignan, France
|
||||
// b) Politecnico di Milano, Italy
|
||||
//
|
||||
// If you use this code, please cite the following publication:
|
||||
// P. Barberet et al.,
|
||||
@@ -37,19 +38,19 @@
|
||||
// geometry exposed to alpha particles."
|
||||
// Ph. Barberet et al 2012 Phys. Med. Biol. 57 2189
|
||||
// doi: 110.1088/0031-9155/57/8/2189
|
||||
// --------------------------------------------------------------------------------
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#include "SteppingAction.hh"
|
||||
#include "Run.hh"
|
||||
|
||||
#include "G4SteppingManager.hh"
|
||||
#include "G4RunManager.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
SteppingAction::SteppingAction(RunAction* runAction)
|
||||
:G4UserSteppingAction(), fRunAction(runAction)
|
||||
SteppingAction::SteppingAction()
|
||||
:G4UserSteppingAction()
|
||||
{}
|
||||
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
@@ -63,22 +64,12 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
|
||||
G4int preReplicaNumber = preStep->GetTouchableHandle()->GetReplicaNumber();
|
||||
G4int voxelMaterial = fMyPhantomParam->GetMaterial(preReplicaNumber);
|
||||
|
||||
// The absorbed energy is added to the "voxel energy" array in RunAction
|
||||
// Added protection to make sure Replica Number has been identified
|
||||
|
||||
Run* run
|
||||
= static_cast<Run*>(G4RunManager::GetRunManager()->GetNonConstCurrentRun());
|
||||
|
||||
if (aStep->GetTotalEnergyDeposit()>0. && preReplicaNumber>0)
|
||||
{
|
||||
if (voxelMaterial == 1)
|
||||
{
|
||||
fRunAction->AddDoseBox(preReplicaNumber, aStep->GetTotalEnergyDeposit());
|
||||
}
|
||||
else if (voxelMaterial == 2)
|
||||
{
|
||||
fRunAction->AddDoseBox(preReplicaNumber, aStep->GetTotalEnergyDeposit());
|
||||
}
|
||||
else if (voxelMaterial == 3)
|
||||
{
|
||||
fRunAction->AddDoseBox(preReplicaNumber, aStep->GetTotalEnergyDeposit());
|
||||
}
|
||||
}
|
||||
if (voxelMaterial == 1 || voxelMaterial == 2 || voxelMaterial == 3)
|
||||
run->AddVoxelEdeposit(preReplicaNumber, aStep->GetTotalEnergyDeposit());
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Initial Seed for random engine: 1745424599
|
||||
Initial Seed for random engine: 1750481146
|
||||
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
|
||||
|
||||
############################################
|
||||
@@ -12,7 +12,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -81,7 +81,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -287,7 +287,9 @@ DNARPWBAIonisationModel : Emin= 100 MeV Emax= 300 MeV deltaBorn Fluo
|
||||
|
||||
proton_G4DNAChargeDecrease: for proton SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 100 MeV
|
||||
DummyModel : Emin= 100 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for GenericIon SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -303,7 +305,7 @@ ionIoni: for GenericIon XStype:3 SubType=2
|
||||
|
||||
GenericIon_G4DNAIonisation: for GenericIon SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DNAIonIonisationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
@@ -331,19 +333,21 @@ alpha_G4DNAElastic: for alpha SubType=51 BuildTable=0
|
||||
|
||||
alpha_G4DNAExcitation: for alpha SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha_G4DNAIonisation: for alpha SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha_G4DNAChargeDecrease: for alpha SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for alpha+ SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -365,23 +369,27 @@ alpha+_G4DNAElastic: for alpha+ SubType=51 BuildTable=0
|
||||
|
||||
alpha+_G4DNAExcitation: for alpha+ SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAIonisation: for alpha+ SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAChargeIncrease: for alpha+ SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAChargeDecrease: for alpha+ SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for anti_proton SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -404,19 +412,21 @@ helium_G4DNAElastic: for helium SubType=51 BuildTable=0
|
||||
|
||||
helium_G4DNAExcitation: for helium SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
helium_G4DNAIonisation: for helium SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
helium_G4DNAChargeIncrease: for helium SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
hydrogen_G4DNAElastic: for hydrogen SubType=51 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -426,8 +436,8 @@ hydrogen_G4DNAElastic: for hydrogen SubType=51 BuildTable=0
|
||||
|
||||
hydrogen_G4DNAExcitation: for hydrogen SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 500 keV
|
||||
DummyModel : Emin= 500 keV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
hydrogen_G4DNAIonisation: for hydrogen SubType=53 BuildTable=0
|
||||
@@ -438,7 +448,9 @@ DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
|
||||
hydrogen_G4DNAChargeIncrease: for hydrogen SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 100 MeV
|
||||
DummyModel : Emin= 100 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for kaon+ SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
|
||||
@@ -53,6 +53,7 @@ To run the example:
|
||||
# -m : macro file
|
||||
# -t : number of threads to run
|
||||
# -p : physics list option
|
||||
# -v : visualization option
|
||||
\endverbatim
|
||||
|
||||
Macro files can control every aspect of the simulation, see this introduction:
|
||||
@@ -70,6 +71,11 @@ ecoli (ecoli.mac) and human cell (human_cell*.mac) geometries.
|
||||
long straight DNA segments in a 100×30×30 nm placement volume.
|
||||
This is a geometry used for parameter (optimization) studies.
|
||||
|
||||
- fiber.mac: to visualize a fiber of DNA
|
||||
|
||||
- phage.mac: to model the irradiation of a DNA phage containing 141158 bp,
|
||||
placed in a cylinder with radius 3.5 um and height 7 um.
|
||||
|
||||
- plasmid.mac: to model a cube of liquid water (side 4.84 um) containing around
|
||||
10 000 plasmids (pBR322, 4367 base pairs) randomly oriented in a supercoiled conformation.
|
||||
|
||||
@@ -147,7 +153,7 @@ Macro commands can be used to control the geometry parameters
|
||||
|
||||
# For the visualisation of DNA geometries, the following line can be used
|
||||
/control/execute vis.mac
|
||||
# More specifically, start moleculardna using the command ./molecular, to
|
||||
# More specifically, start moleculardna using the command ./molecular -t 1 -v 1
|
||||
# to open the Qt visualiser. Then use the mac file that you want, e.g.
|
||||
# /control/execute cylinders.mac
|
||||
# For the visualization, large amount of RAM is needed. For example
|
||||
@@ -155,12 +161,6 @@ Macro commands can be used to control the geometry parameters
|
||||
# are needed. For 2000 cylinders, ~11 GB are needed.
|
||||
\endverbatim
|
||||
|
||||
The DNA parallel world can be activated using the "useParallelPhysicsWorld" flag
|
||||
in the PhysicsList.cc and DetectorConstruction.cc files for the physics stage.
|
||||
Setting "useParallelPhysicsWorld = false" means that particles will only interact
|
||||
with the water volume. Energy deposition in water caused by direct damage is
|
||||
recorded using octree data structures associated with DNA volumes.
|
||||
|
||||
\section MOLECULARDNA_s2 PHYSICS LIST
|
||||
|
||||
The physics list can use the recommended G4EmDNAPhysics_option2,
|
||||
@@ -229,8 +229,11 @@ root human_cell.C
|
||||
# to plot damage and fragments distribution from human_cell* geometries.
|
||||
The human_cell_alphas.C macro can be used as shown in [1].
|
||||
|
||||
root phage.C
|
||||
# to plot damage and fragments distribution from phage geometry
|
||||
|
||||
root plasmid.C
|
||||
#to plot damage and fragments distribution from plasmid geometries
|
||||
# to plot damage and fragments distribution from plasmid geometries
|
||||
|
||||
root human_cell_chromosomes.C
|
||||
# to plot damage and fragments distribution from human_cell_chromosomes geometries.
|
||||
@@ -262,6 +265,11 @@ molecularDNAsurvival.py
|
||||
# the human-cell.mac macro.
|
||||
\endverbatim
|
||||
|
||||
Note on ROOT import from python:
|
||||
If python cannot import ROOT, please configure your ROOT version to include PyROOT.
|
||||
For further instruction, refer to the documentation of ROOT, paragraph 19.1.4.2:
|
||||
https://root.cern/root/htmldoc/guides/users-guide/ROOTUsersGuide.html#python-interface
|
||||
|
||||
\section MOLECULARDNA_s6 PHASE SPACE READING
|
||||
|
||||
The example can read a phase space file as source for the primary generation,
|
||||
|
||||
@@ -28,8 +28,8 @@ set(GEOMETRY_FILE_NAME "geometries.tar.gz")
|
||||
set(GEOMETRY_FOlDER_NAME "geometries")
|
||||
set(GEOMETRY_LOCAL_FILENAME "${PROJECT_BINARY_DIR}/${GEOMETRY_FILE_NAME}")
|
||||
set(GEOMETRY_DATASETS_URL
|
||||
"https://cern.ch/geant4-data/datasets/examples/advanced/dna/moleculardna/1/${GEOMETRY_FILE_NAME}")
|
||||
set(HASH_MD5 "0bb690a782ce951b1a1973c6be2b1324")
|
||||
"https://cern.ch/geant4-data/datasets/examples/advanced/dna/moleculardna/2/${GEOMETRY_FILE_NAME}")
|
||||
set(HASH_MD5 "0bb821758b648106d752349778fc6ecb")
|
||||
|
||||
if (EXISTS "${GEOMETRY_FOlDER_NAME}")
|
||||
set(GEOMETRY_NEEDS_DOWNLOAD FALSE)
|
||||
@@ -39,8 +39,8 @@ endif ()
|
||||
if (GEOMETRY_NEEDS_DOWNLOAD)
|
||||
message(STATUS "geometries-data: attempting download: ${GEOMETRY_DATASETS_URL} ...")
|
||||
file(DOWNLOAD "${GEOMETRY_DATASETS_URL}" "${GEOMETRY_LOCAL_FILENAME}"
|
||||
INACTIVITY_TIMEOUT 500
|
||||
TIMEOUT 500
|
||||
INACTIVITY_TIMEOUT 1000
|
||||
TIMEOUT 1000
|
||||
STATUS DownloadStatus
|
||||
)
|
||||
|
||||
@@ -93,7 +93,7 @@ target_link_libraries(molecular ${Geant4_LIBRARIES})
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Copy all scripts to the build directory, i.e. the directory in which we
|
||||
# build molecular_proj. This is so that we can run the executable directly because
|
||||
# build molecular_proj. This is so that we can run the executable directly because
|
||||
# it relies on these scripts being in the current working directory.
|
||||
#
|
||||
file(GLOB molecular_SCRIPTS
|
||||
|
||||
@@ -6,6 +6,46 @@ It must **not** be used as a substitute for writing good git commit messages!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
## 2025-06-03 H. Tran (molecularDNA-V11-03-09)
|
||||
- fixed updated reaction list for each DNA reactions.
|
||||
|
||||
## 2025-05-05 H. Tran (molecularDNA-V11-03-08)
|
||||
- fixed compilation warnings on cxx23
|
||||
|
||||
## 2025-04-01 H. Tran (molecularDNA-V11-03-07)
|
||||
- updated the new implementation of IRT-syn model.
|
||||
- Deleted the Max Time Step parameter.
|
||||
|
||||
## 2025-02-17 S. Incerti, K. Chatzipapas, H. Tran (molecularDNA-V11-03-06)
|
||||
- Added moleculardna macro, ROOT macro and geomety files for the simulation of phages
|
||||
- Updated direct damage range for plasmid.mac and cylinders.mac
|
||||
- Added fiber.mac
|
||||
- Increased max number of arguments in main
|
||||
|
||||
## 2025-02-11 S. Incerti, K. Chatzipapas (molecularDNA-V11-03-05)
|
||||
- Added protection to all ROOT macros to avoid nan in error calculation
|
||||
|
||||
## 2025-02-11 K. Chatzipapas, S. Incerti (molecularDNA-V11-03-04)
|
||||
- Added message in README related to ROOT import from python
|
||||
|
||||
## 2025-01-30 S. Incerti (molecularDNA-V11-03-03)
|
||||
- Added possibility to activate parallel word using dedicated flag from executable
|
||||
|
||||
## 2025-01-23 S. Incerti (molecularDNA-V11-03-02)
|
||||
- Increased default statistics in ecoli.mac
|
||||
|
||||
## 2025-01-03 S. Incerti (molecularDNA-V11-03-01)
|
||||
- Added auto to cylinders.C
|
||||
|
||||
## 2024-12-13 K. Chatzipapas (molecularDNA-V11-03-00)
|
||||
- Correct segmentation error of the root macrofile
|
||||
"human_cell.C", "ecoli.C", "human_cell_alphas.C",
|
||||
"human_cell_chromosome.C" and "plasmid.C". This error
|
||||
was caused when low damage had been produced.
|
||||
- Define the definition of one missing variable in the
|
||||
"human_cell.C", "ecoli.C", "human_cell_alphas.C",
|
||||
"human_cell_chromosome.C" and "plasmid.C".
|
||||
|
||||
## 2024-11-05 H. Tran (molecularDNA-V11-02-13)
|
||||
- added missing plasmid analysis root macro file
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ http://geant4-dna.org
|
||||
# -m : macro file
|
||||
# -t : number of threads to run
|
||||
# -p : physics list option
|
||||
# -v : visualization option
|
||||
|
||||
Macro files can control every aspect of the simulation, see this introduction:
|
||||
https://geant4-dna.github.io/molecular-docs/docs/overview/macro-anatomy
|
||||
@@ -73,6 +74,11 @@ http://geant4-dna.org
|
||||
long straight DNA segments in a 100×30×30 nm placement volume.
|
||||
This is a geometry used for parameter (optimization) studies.
|
||||
|
||||
- fiber.mac: to visualize a fiber of DNA
|
||||
|
||||
- phage.mac: to model the irradiation of a DNA phage containing 141158 bp,
|
||||
placed in a cylinder with radius 3.5 um and height 7 um.
|
||||
|
||||
- plasmid.mac: to model a cube of liquid water (side 4.84 um) containing around
|
||||
10 000 plasmids (pBR322, 4367 base pairs) randomly oriented in a supercoiled conformation.
|
||||
|
||||
@@ -149,19 +155,13 @@ http://geant4-dna.org
|
||||
|
||||
# For the visualisation of DNA geometries, the following line can be used
|
||||
/control/execute vis.mac
|
||||
# More specifically, start moleculardna using the command ./molecular, to
|
||||
# More specifically, start moleculardna using the command ./molecular -t 1 -v 1
|
||||
# to open the Qt visualiser. Then use the mac file that you want, e.g.
|
||||
# /control/execute cylinders.mac
|
||||
# For the visualization, large amount of RAM is needed. For example
|
||||
# using cylinders DNA geometries, to visualize 200 cylinders, ~2.5 GB
|
||||
# are needed. For 2000 cylinders, ~11 GB are needed.
|
||||
|
||||
The DNA parallel world can be activated using the "useParallelPhysicsWorld" flag
|
||||
in the PhysicsList.cc and DetectorConstruction.cc files for the physics stage.
|
||||
Setting "useParallelPhysicsWorld = false" means that particles will only interact
|
||||
with the water volume. Energy deposition in water caused by direct damage is
|
||||
recorded using octree data structures associated with DNA volumes.
|
||||
|
||||
2 - PHYSICS LIST
|
||||
|
||||
The physics list can use the recommended G4EmDNAPhysics_option2,
|
||||
@@ -221,6 +221,7 @@ http://geant4-dna.org
|
||||
- ecoli.C: to plot damage from ecoli geometry
|
||||
- human_cell.C: to plot damage and fragments distribution from human_cell*
|
||||
geometries. The human_cell_alphas.C macro can be used as shown in [1].
|
||||
- phage.C: to plot damage and fragments distribution from phage geometry
|
||||
- plasmid.C: to plot damage and fragments distribution from plasmid geometries
|
||||
- human_cell_chromosomes.C: to plot damage and fragments distribution
|
||||
from human_cell_chromosomes geometries.
|
||||
@@ -249,6 +250,11 @@ http://geant4-dna.org
|
||||
The molecular-dna.root file is needed to run it, as produced by
|
||||
the human-cell.mac macro.
|
||||
|
||||
*** Note on ROOT import from python:
|
||||
If python cannot import ROOT, please configure your ROOT version to include PyROOT.
|
||||
For further instruction, refer to the documentation of ROOT, paragraph 19.1.4.2:
|
||||
https://root.cern/root/htmldoc/guides/users-guide/ROOTUsersGuide.html#python-interface
|
||||
|
||||
6 - PHASE SPACE READING
|
||||
|
||||
The example can read a phase space file as source for the primary generation,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
system ("hadd -O -f molecular-dna.root molecular-dna_t*.root");
|
||||
|
||||
c1 = new TCanvas("c1", "Damages", 120, 60, 1000, 1000);
|
||||
auto c1 = new TCanvas("c1", "Damages", 120, 60, 1000, 1000);
|
||||
c1->SetBorderSize(0);
|
||||
c1->SetFillColor(0);
|
||||
c1->SetFillStyle(4000);
|
||||
@@ -65,6 +65,11 @@
|
||||
TTree *tree = (TTree *) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
tree = (TTree *) f->Get("tuples/source");
|
||||
tree->SetBranchAddress("Primary",&Primary);
|
||||
tree->SetBranchAddress("Energy",&Energy);
|
||||
@@ -142,15 +147,14 @@
|
||||
mean_DSBm = (Float_t) total_DSBm / number;
|
||||
mean_DSBh = (Float_t) total_DSBh / number;
|
||||
|
||||
Double_t SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number,2))/(number -1));
|
||||
Double_t SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number,2))/(number -1));
|
||||
Double_t SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number,2))/(number -1));
|
||||
|
||||
Double_t SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number,2))/(number -1));
|
||||
Double_t SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number,2))/(number -1));
|
||||
Double_t SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number,2))/(number -1));
|
||||
Double_t SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number,2))/(number -1));
|
||||
Double_t SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
Double_t SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
Double_t SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
Double_t SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
Double_t SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
Double_t SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
Double_t SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
mean_SSB = (Float_t) total_SSB / number;
|
||||
mean_SSBp = (Float_t) total_SSBp / number;
|
||||
@@ -160,18 +164,18 @@
|
||||
mean_DSBp = (Float_t) total_DSBp / number;
|
||||
mean_DSBpp = (Float_t) total_DSBpp / number;
|
||||
|
||||
Double_t SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1));
|
||||
Double_t SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number,2))
|
||||
/(number -1));
|
||||
Double_t SD_twoSSB = sqrt(((total_twoSSB2 / number) - pow(total_twoSSB /
|
||||
Double_t SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1)));
|
||||
Double_t SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2))
|
||||
/(number -1)));
|
||||
Double_t SD_twoSSB = sqrt(abs(((total_twoSSB2 / number) - pow(total_twoSSB /
|
||||
number,2))
|
||||
/(number -1));
|
||||
/(number -1)));
|
||||
|
||||
Double_t SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1));
|
||||
Double_t SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number,2))
|
||||
/(number -1));
|
||||
Double_t SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))
|
||||
/(number -1));
|
||||
Double_t SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1)));
|
||||
Double_t SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2))
|
||||
/(number -1)));
|
||||
Double_t SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))
|
||||
/(number -1)));
|
||||
|
||||
cout<<"Paricle : "<<Primary<<'\t'
|
||||
<<"Energy [/MeV] : "<<Energy<<'\t'
|
||||
@@ -227,7 +231,6 @@
|
||||
gr2->GetXaxis()->SetBinLabel(90,"DSBpp");
|
||||
gr2->SetFillColor(49);
|
||||
|
||||
//Draw
|
||||
c1->cd(1);
|
||||
gr1->Draw("ba");
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
/dnageom/radicalKillDistance 9 nm
|
||||
|
||||
# Geometry: deposited energy accumulation range limit to start recording SBs from direct effects
|
||||
/dnageom/interactionDirectRange 7 angstrom
|
||||
/dnageom/interactionDirectRange 6 angstrom
|
||||
|
||||
# Geometry: activate Histone scavenging function
|
||||
/dnageom/activateHistoneScavenging true
|
||||
@@ -100,8 +100,12 @@
|
||||
# Run: initialization
|
||||
/run/initialize
|
||||
|
||||
# Visualization: uncomment the next line to visualize cylinder DNA geometry
|
||||
# Visualization: to visualize cylinder DNA geometry
|
||||
# - uncomment the next line and save
|
||||
#/control/execute vis.mac
|
||||
# - comment the last line (/run/beamOn ...) and save
|
||||
# - then, run ./moleculardna -t 1 -v 1
|
||||
# - then, in the Session window of the Qt interface, do /control/execute cylinders.mac
|
||||
|
||||
# Unit tests only
|
||||
#/dnatests/uniqueid
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
//-------------------------------------------------------------------------------//
|
||||
// This macrofile was developed by Konstantinos Chatzipapas at LP2iB (ex. CENBG) //
|
||||
// in collaboration with the whole team of molecularDNA Geant4-DNA example //
|
||||
// Publication: .................................... //
|
||||
// For any question please contact through: //
|
||||
// chatzipa@cenbg.in2p3.fr (or k.chatzipapas@yahoo.com) //
|
||||
// k.chatzipapas@yahoo.com //
|
||||
//-------------------------------------------------------------------------------//
|
||||
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X analysis.C
|
||||
// root .X ecoli.C
|
||||
// ROOT6.x should be installed
|
||||
|
||||
//
|
||||
//***************************************//
|
||||
// Please define the parameters below //
|
||||
// ifile, r3, Nbp (as shown in terminal) //
|
||||
@@ -100,7 +99,7 @@ Int_t EB, ES, OHB, OHS, HB, HS, FL;
|
||||
Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
|
||||
Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
|
||||
Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
|
||||
Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
|
||||
|
||||
Int_t SSB, SSBp, SSB2p;
|
||||
@@ -160,6 +159,11 @@ char *type= new char[256];
|
||||
TTree* tree = (TTree*) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int,int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
@@ -200,26 +204,35 @@ for(int i = 0;i<nentries;i++){
|
||||
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
// Find the number of fragments that have been produced, but first test if there are enough breaks.
|
||||
// If no more than 2 DSBs exist in the DSBBPID vector ( DSBBPID.size() is 0 or 1 ),
|
||||
// the subtraction DSBBPID.size() - 1 makes the loop condition evaluate to ie < -1 (in unsigned terms,
|
||||
// this becomes a large number, which is incorrect) and leads to undefined behavior (crash).
|
||||
if (DSBBPID.size() < 2) {
|
||||
std::cerr << "Not enough damage to create fragments distribution." << std::endl;
|
||||
//return;
|
||||
}
|
||||
if (DSBBPID.size() >= 2) {
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(((total_EB2 / number) - pow(total_EB / number,2))/(number -1));
|
||||
SD_ES = sqrt(((total_ES2 / number) - pow(total_ES / number,2))/(number -1));
|
||||
SD_OHB = sqrt(((total_OHB2 / number) - pow(total_OHB / number,2))/(number -1));
|
||||
SD_OHS = sqrt(((total_OHS2 / number) - pow(total_OHS / number,2))/(number -1));
|
||||
SD_HB = sqrt(((total_HB2 / number) - pow(total_HB / number,2))/(number -1));
|
||||
SD_HS = sqrt(((total_HS2 / number) - pow(total_HS / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -256,14 +269,14 @@ for(int i = 0;i<nentriesC;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1));
|
||||
SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number,2))/(number -1));
|
||||
SD_SSB2p = sqrt(((total_SSB2p2 / number) - pow(total_SSB2p / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
|
||||
|
||||
SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1));
|
||||
SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number,2))/(number -1));
|
||||
SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))/(number -1));
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -306,18 +319,17 @@ for(int i = 0;i<nentriesS;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(((total_sSSB2 / number) - pow(total_sSSB / number,2))/(number -1));
|
||||
SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number,2))/(number -1));
|
||||
SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number,2))/(number -1));
|
||||
SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number,2))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(((total_sDSB2 / number) - pow(total_sDSB / number,2))/(number -1));
|
||||
SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number,2))/(number -1));
|
||||
SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number,2))/(number -1));
|
||||
SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number,2))/(number -1));
|
||||
SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain (chromosome)
|
||||
|
||||
@@ -348,7 +360,7 @@ dose = acc_edep * eVtoJ / mass;
|
||||
// It changes Mbp to Gbp. Some other changes may be needed in graphs section (name of axes)
|
||||
double norm = 1;
|
||||
|
||||
// Calculate the yields, together with their standard deviation
|
||||
// Calculate the yields, together with their error
|
||||
EB_yield = (Double_t) total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t) total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t) total_OHB / dose / Nbp;
|
||||
|
||||
@@ -104,4 +104,4 @@
|
||||
/gps/energy 9.999 keV
|
||||
|
||||
# Beam on
|
||||
/run/beamOn 10
|
||||
/run/beamOn 500
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
### Single DNA fiber visualization
|
||||
|
||||
#
|
||||
# See more details on moleculardna specific UI commands:
|
||||
# - https://geant4-dna.github.io/molecular-docs/docs/overview/configuration
|
||||
# - https://geant4-dna.github.io/molecular-docs/docs/overview/macro-anatomy
|
||||
# - the README file
|
||||
# - the messenger classes of the moleculardna example
|
||||
#
|
||||
|
||||
# Verbosity: settings
|
||||
/control/verbose 1
|
||||
/run/verbose 2
|
||||
/material/verbose 2
|
||||
/dnageom/verbose 1
|
||||
|
||||
# Chemistry: selection of IRT_syn
|
||||
/process/chem/TimeStepModel IRT_syn
|
||||
|
||||
# Chemistry: activation
|
||||
/chem/activate false
|
||||
|
||||
# Chemistry: verbosity
|
||||
/scheduler/verbose 0
|
||||
|
||||
# Chemistry: end time of chemistry stage
|
||||
/scheduler/endTime 1 us
|
||||
|
||||
# Geometry: size of World volume
|
||||
/world/worldSize 300 nm
|
||||
|
||||
# Geometry: size of cell volume
|
||||
# See https://geant4-dna.github.io/molecular-docs/docs/examples/parameter-study
|
||||
/cell/radiusSize 100 100 100 nm
|
||||
|
||||
# Geometry: optimisation of voxelisation
|
||||
/dnageom/setSmartVoxels 1
|
||||
|
||||
# Geometry: check overlaps in DNA geometry region
|
||||
/dnageom/checkOverlaps false
|
||||
|
||||
# Geometry: creation
|
||||
# See https://geant4-dna.github.io/molecular-docs/docs/examples/parameter-study
|
||||
# - Side length for each placement
|
||||
/dnageom/placementSize 30 30 100 nm
|
||||
# - Scaling of XYZ in fractal definition file
|
||||
/dnageom/fractalScaling 1 1 1 nm
|
||||
# - Path to file that defines placement locations
|
||||
/dnageom/definitionFile geometries/prisms1.txt
|
||||
# - Set a placement volume
|
||||
/dnageom/placementVolume prism geometries/straight-216-0.txt
|
||||
|
||||
# Geometry: take the angles in the voxel placement file as multiples of pi
|
||||
/dnageom/setVoxelPlacementAnglesAsMultiplesOfPi false
|
||||
|
||||
# Geometry: enable custom molecule sizes
|
||||
/dnageom/useCustomMoleculeSizes false
|
||||
|
||||
# Geometry: draw cell/chromosome volumes rather than DNA
|
||||
/dnageom/drawCellVolumes false
|
||||
|
||||
# Geometry: distance from base pairs at which radicals are killed
|
||||
/dnageom/radicalKillDistance 9 nm
|
||||
|
||||
# Geometry: deposited energy accumulation range limit to start recording SBs from direct effects
|
||||
/dnageom/interactionDirectRange 6 angstrom
|
||||
|
||||
# Geometry: activate Histone scavenging function
|
||||
/dnageom/activateHistoneScavenging true
|
||||
|
||||
# Damage: model settings
|
||||
/dnadamage/directDamageLower 17.5 eV
|
||||
/dnadamage/directDamageUpper 17.5 eV
|
||||
|
||||
/dnadamage/indirectOHBaseChance 1.0
|
||||
/dnadamage/indirectOHStrandChance 0.65
|
||||
/dnadamage/inductionOHChance 0.0
|
||||
|
||||
/dnadamage/indirectHBaseChance 1.0
|
||||
/dnadamage/indirectHStrandChance 0.65
|
||||
/dnadamage/inductionHChance 0.0
|
||||
|
||||
/dnadamage/indirectEaqBaseChance 1.0
|
||||
/dnadamage/indirectEaqStrandChance 0.65
|
||||
/dnadamage/inductionEaqChance 0.0
|
||||
|
||||
# Analysis: add spherical chromosomal region of interest, with the name "fiber"
|
||||
/chromosome/add fiber sphere 2000 0 0 0 nm
|
||||
|
||||
# Analysis: set whether strands ought be saved
|
||||
/analysisDNA/saveStrands false
|
||||
|
||||
# Analysis: gap between DNA fragments in base pair
|
||||
# Set to zero to score placement volumes independently
|
||||
/analysisDNA/fragmentGap 0
|
||||
|
||||
# Analysis: save the position of hits histones only on one chain
|
||||
#/analysisDNA/diagnosticChain
|
||||
|
||||
# Run: initialization
|
||||
/run/initialize
|
||||
|
||||
# Visualization: to visualize fiber DNA geometry
|
||||
# - uncomment the next line and save
|
||||
/control/execute vis.mac
|
||||
# - then, run ./moleculardna -t 1 -v 1
|
||||
# - then, in the Session window of the Qt interface, do /control/execute fiber.mac
|
||||
|
||||
# Unit tests only
|
||||
#/dnatests/uniqueid
|
||||
#/dnatests/basepairs
|
||||
#/dnatests/chromosome
|
||||
#/analysisDNA/testClassifier
|
||||
# End unit tests
|
||||
|
||||
# Run: progress display
|
||||
/run/printProgress 100
|
||||
|
||||
# Source geometry
|
||||
#/gps/pos/type Volume
|
||||
#/gps/pos/shape Sphere
|
||||
#/gps/pos/radius 500 nm
|
||||
#/gps/pos/centre 0 0 0 nm
|
||||
|
||||
# Source particle, energy and angular distribution
|
||||
/gps/particle e-
|
||||
/gps/energy 100 eV
|
||||
/gps/ang/type iso
|
||||
|
||||
# Beam on
|
||||
/tracking/verbose 0
|
||||
/run/beamOn 10
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
//-------------------------------------------------------------------------------//
|
||||
// This macrofile was developed by Konstantinos Chatzipapas at LP2iB (ex. CENBG) //
|
||||
// in collaboration with the whole team of molecularDNA Geant4-DNA example //
|
||||
// Publication: .................................... //
|
||||
// For any question please contact through: //
|
||||
// chatzipa@cenbg.in2p3.fr (or k.chatzipapas@yahoo.com) //
|
||||
// k.chatzipapas@yahoo.com //
|
||||
//-------------------------------------------------------------------------------//
|
||||
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X analysis.C
|
||||
// root .X human_cell.C
|
||||
// ROOT6.x should be installed
|
||||
|
||||
//
|
||||
//***************************************//
|
||||
// Please define the parameters below //
|
||||
// ifile, r3, Nbp (as shown in terminal) //
|
||||
@@ -100,7 +99,7 @@ Int_t EB, ES, OHB, OHS, HB, HS, FL;
|
||||
Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
|
||||
Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
|
||||
Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
|
||||
Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
|
||||
|
||||
Int_t SSB, SSBp, SSB2p;
|
||||
@@ -160,6 +159,11 @@ char *type= new char[256];
|
||||
TTree* tree = (TTree*) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int,int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
@@ -200,26 +204,35 @@ for(int i = 0;i<nentries;i++){
|
||||
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
// Find the number of fragments that have been produced, but first test if there are enough breaks.
|
||||
// If no more than 2 DSBs exist in the DSBBPID vector ( DSBBPID.size() is 0 or 1 ),
|
||||
// the subtraction DSBBPID.size() - 1 makes the loop condition evaluate to ie < -1 (in unsigned terms,
|
||||
// this becomes a large number, which is incorrect) and leads to undefined behavior (crash).
|
||||
if (DSBBPID.size() < 2) {
|
||||
std::cerr << "Not enough damage to create fragments distribution." << std::endl;
|
||||
//return;
|
||||
}
|
||||
if (DSBBPID.size() >= 2) {
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(((total_EB2 / number) - pow(total_EB / number,2))/(number -1));
|
||||
SD_ES = sqrt(((total_ES2 / number) - pow(total_ES / number,2))/(number -1));
|
||||
SD_OHB = sqrt(((total_OHB2 / number) - pow(total_OHB / number,2))/(number -1));
|
||||
SD_OHS = sqrt(((total_OHS2 / number) - pow(total_OHS / number,2))/(number -1));
|
||||
SD_HB = sqrt(((total_HB2 / number) - pow(total_HB / number,2))/(number -1));
|
||||
SD_HS = sqrt(((total_HS2 / number) - pow(total_HS / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -256,14 +269,14 @@ for(int i = 0;i<nentriesC;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1));
|
||||
SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number,2))/(number -1));
|
||||
SD_SSB2p = sqrt(((total_SSB2p2 / number) - pow(total_SSB2p / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
|
||||
|
||||
SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1));
|
||||
SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number,2))/(number -1));
|
||||
SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))/(number -1));
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -306,17 +319,17 @@ for(int i = 0;i<nentriesS;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(((total_sSSB2 / number) - pow(total_sSSB / number,2))/(number -1));
|
||||
SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number,2))/(number -1));
|
||||
SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number,2))/(number -1));
|
||||
SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(((total_sDSB2 / number) - pow(total_sDSB / number,2))/(number -1));
|
||||
SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number,2))/(number -1));
|
||||
SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number,2))/(number -1));
|
||||
SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number,2))/(number -1));
|
||||
SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number,2))/(number -1));
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain (chromosome)
|
||||
@@ -348,7 +361,7 @@ dose = acc_edep * eVtoJ / mass;
|
||||
// It changes Mbp to Gbp. Some other changes may be needed in graphs section (name of axes)
|
||||
double norm = 1000;
|
||||
|
||||
// Calculate the yields, together with their standard deviation
|
||||
// Calculate the yields, together with their error
|
||||
EB_yield = (Double_t) total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t) total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t) total_OHB / dose / Nbp;
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
//-------------------------------------------------------------------------------//
|
||||
// This macrofile was developed by Konstantinos Chatzipapas at LP2iB (ex. CENBG) //
|
||||
// in collaboration with the whole team of molecularDNA Geant4-DNA example //
|
||||
// Publication: K. Chatzipapas, et al., Phys. Med. 112 (2023) 102613 //
|
||||
// For any question please contact through: //
|
||||
// chatzipa@cenbg.in2p3.fr //
|
||||
// k.chatzipapas@yahoo.com //
|
||||
//-------------------------------------------------------------------------------//
|
||||
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X human_cell_alphas.C
|
||||
// ROOT6.x should be installed
|
||||
//
|
||||
|
||||
{
|
||||
//*******************************************************************************//
|
||||
// If you need to add multiple root outputs, by multithreading, use this command:
|
||||
// system ("hadd -O -f molecular-dna.root molecular-dna_t*.root");
|
||||
system ("hadd -O -f molecular-dna.root molecular-dna_t*.root");
|
||||
|
||||
// Define these parameters of the simulation
|
||||
char ifile[256] = "molecular-dna.root"; // input filepath to be replaced
|
||||
@@ -99,7 +102,7 @@ Int_t EB, ES, OHB, OHS, HB, HS, FL;
|
||||
Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
|
||||
Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
|
||||
Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
|
||||
Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
|
||||
|
||||
Int_t SSB, SSBp, SSB2p;
|
||||
@@ -159,6 +162,11 @@ char *type= new char[256];
|
||||
TTree* tree = (TTree*) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int,int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
@@ -199,26 +207,35 @@ for(int i = 0;i<nentries;i++){
|
||||
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
// Find the number of fragments that have been produced, but first test if there are enough breaks.
|
||||
// If no more than 2 DSBs exist in the DSBBPID vector ( DSBBPID.size() is 0 or 1 ),
|
||||
// the subtraction DSBBPID.size() - 1 makes the loop condition evaluate to ie < -1 (in unsigned terms,
|
||||
// this becomes a large number, which is incorrect) and leads to undefined behavior (crash).
|
||||
if (DSBBPID.size() < 2) {
|
||||
std::cerr << "Not enough damage to create fragments distribution." << std::endl;
|
||||
//return;
|
||||
}
|
||||
if (DSBBPID.size() >= 2) {
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(((total_EB2 / number) - pow(total_EB / number,2))/(number -1));
|
||||
SD_ES = sqrt(((total_ES2 / number) - pow(total_ES / number,2))/(number -1));
|
||||
SD_OHB = sqrt(((total_OHB2 / number) - pow(total_OHB / number,2))/(number -1));
|
||||
SD_OHS = sqrt(((total_OHS2 / number) - pow(total_OHS / number,2))/(number -1));
|
||||
SD_HB = sqrt(((total_HB2 / number) - pow(total_HB / number,2))/(number -1));
|
||||
SD_HS = sqrt(((total_HS2 / number) - pow(total_HS / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -258,14 +275,14 @@ for(int i = 0;i<nentriesC;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1));
|
||||
SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number,2))/(number -1));
|
||||
SD_SSB2p = sqrt(((total_SSB2p2 / number) - pow(total_SSB2p / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
|
||||
|
||||
SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1));
|
||||
SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number,2))/(number -1));
|
||||
SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))/(number -1));
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -308,17 +325,17 @@ for(int i = 0;i<nentriesS;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(((total_sSSB2 / number) - pow(total_sSSB / number,2))/(number -1));
|
||||
SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number,2))/(number -1));
|
||||
SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number,2))/(number -1));
|
||||
SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(((total_sDSB2 / number) - pow(total_sDSB / number,2))/(number -1));
|
||||
SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number,2))/(number -1));
|
||||
SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number,2))/(number -1));
|
||||
SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number,2))/(number -1));
|
||||
SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number,2))/(number -1));
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain
|
||||
@@ -351,7 +368,7 @@ cout << acc_edep << "\n";
|
||||
// It changes Mbp to Gbp. Some other changes may be needed in graphs section (name of axes)
|
||||
double norm = 1000;
|
||||
|
||||
// Calculate the yields, together with their standard deviation
|
||||
// Calculate the yields, together with their error
|
||||
EB_yield = (Double_t) total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t) total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t) total_OHB / dose / Nbp;
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
//-------------------------------------------------------------------------------//
|
||||
// This macrofile was developed by Konstantinos Chatzipapas at LP2iB (ex. CENBG) //
|
||||
// in collaboration with the whole team of molecularDNA Geant4-DNA example //
|
||||
// Publication: .................................... //
|
||||
// For any question please contact through: //
|
||||
// chatzipa@cenbg.in2p3.fr (or k.chatzipapas@yahoo.com) //
|
||||
// k.chatzipapas@yahoo.com //
|
||||
//-------------------------------------------------------------------------------//
|
||||
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X analysis.C
|
||||
// root .X human_cell_chromosomes.C
|
||||
// ROOT6.x should be installed
|
||||
//
|
||||
|
||||
//***************************************//
|
||||
// Please define the parameters below //
|
||||
@@ -100,7 +100,7 @@ Int_t EB, ES, OHB, OHS, HB, HS, FL;
|
||||
Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
|
||||
Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
|
||||
Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
|
||||
Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
|
||||
|
||||
Int_t SSB, SSBp, SSB2p;
|
||||
@@ -160,6 +160,11 @@ char *type= new char[256];
|
||||
TTree* tree = (TTree*) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int,int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
@@ -200,26 +205,35 @@ for(int i = 0;i<nentries;i++){
|
||||
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
// Find the number of fragments that have been produced, but first test if there are enough breaks.
|
||||
// If no more than 2 DSBs exist in the DSBBPID vector ( DSBBPID.size() is 0 or 1 ),
|
||||
// the subtraction DSBBPID.size() - 1 makes the loop condition evaluate to ie < -1 (in unsigned terms,
|
||||
// this becomes a large number, which is incorrect) and leads to undefined behavior (crash).
|
||||
if (DSBBPID.size() < 2) {
|
||||
std::cerr << "Not enough damage to create fragments distribution." << std::endl;
|
||||
//return;
|
||||
}
|
||||
if (DSBBPID.size() >= 2) {
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(((total_EB2 / number) - pow(total_EB / number,2))/(number -1));
|
||||
SD_ES = sqrt(((total_ES2 / number) - pow(total_ES / number,2))/(number -1));
|
||||
SD_OHB = sqrt(((total_OHB2 / number) - pow(total_OHB / number,2))/(number -1));
|
||||
SD_OHS = sqrt(((total_OHS2 / number) - pow(total_OHS / number,2))/(number -1));
|
||||
SD_HB = sqrt(((total_HB2 / number) - pow(total_HB / number,2))/(number -1));
|
||||
SD_HS = sqrt(((total_HS2 / number) - pow(total_HS / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -256,14 +270,14 @@ for(int i = 0;i<nentriesC;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number,2))/(number -1));
|
||||
SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number,2))/(number -1));
|
||||
SD_SSB2p = sqrt(((total_SSB2p2 / number) - pow(total_SSB2p / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
|
||||
|
||||
SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number,2))/(number -1));
|
||||
SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number,2))/(number -1));
|
||||
SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number,2))/(number -1));
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -306,17 +320,17 @@ for(int i = 0;i<nentriesS;i++){
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(((total_sSSB2 / number) - pow(total_sSSB / number,2))/(number -1));
|
||||
SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number,2))/(number -1));
|
||||
SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number,2))/(number -1));
|
||||
SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number,2))/(number -1));
|
||||
// Calculate the SEM
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(((total_sDSB2 / number) - pow(total_sDSB / number,2))/(number -1));
|
||||
SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number,2))/(number -1));
|
||||
SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number,2))/(number -1));
|
||||
SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number,2))/(number -1));
|
||||
SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number,2))/(number -1));
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain (chromosome)
|
||||
@@ -348,7 +362,7 @@ dose = acc_edep * eVtoJ / mass;
|
||||
// It changes Mbp to Gbp. Some other changes may be needed in graphs section (name of axes)
|
||||
double norm = 1000;
|
||||
|
||||
// Calculate the yields, together with their standard deviation
|
||||
// Calculate the yields, together with their error
|
||||
EB_yield = (Double_t) total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t) total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t) total_OHB / dose / Nbp;
|
||||
|
||||
@@ -285,7 +285,7 @@ std::size_t constexpr Hash<const char*>(const char*&& str)
|
||||
|
||||
inline namespace literals
|
||||
{
|
||||
std::size_t constexpr operator"" _hash(const char* s, size_t)
|
||||
std::size_t constexpr operator""_hash(const char* s, size_t)
|
||||
{
|
||||
return hasher<std::string>()(s);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ class G4Material;
|
||||
class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
{
|
||||
public:
|
||||
DetectorConstruction();
|
||||
DetectorConstruction(G4int vis);
|
||||
|
||||
~DetectorConstruction() override;
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class G4VPhysicsConstructor;
|
||||
class PhysicsList : public G4VModularPhysicsList
|
||||
{
|
||||
public:
|
||||
explicit PhysicsList(G4int list);
|
||||
explicit PhysicsList(G4int list, G4int vis);
|
||||
|
||||
~PhysicsList() override = default;
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace
|
||||
void PrintUsage()
|
||||
{
|
||||
G4cout << " Usage: " << G4endl;
|
||||
G4cout << " molecular [-m macro ] [-t nThreads] [-p PhysicsList]" << G4endl;
|
||||
G4cout << " molecular [-m macro ] [-t nThreads] [-p PhysicsList] [-v vis]" << G4endl;
|
||||
G4cout << " -p is the G4DNA Physics List option. Default (0) is"
|
||||
<< " G4EmDNAPhysics" << G4endl;
|
||||
G4cout << " note: -t option is available only for multi-threaded mode." << G4endl;
|
||||
@@ -56,13 +56,14 @@ void PrintUsage()
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
if (argc > 7) {
|
||||
if (argc > 10) {
|
||||
PrintUsage();
|
||||
return 1;
|
||||
}
|
||||
|
||||
G4String macro;
|
||||
G4int phys_option = 2;
|
||||
G4int vis_option = 0;
|
||||
|
||||
G4int nThreads = 2;
|
||||
for (G4int ii = 1; ii < argc; ii = ii + 2) {
|
||||
@@ -75,6 +76,9 @@ int main(int argc, char** argv)
|
||||
else if (G4String(argv[ii]) == "-t") {
|
||||
nThreads = G4UIcommand::ConvertToInt(argv[ii + 1]);
|
||||
}
|
||||
else if (G4String(argv[ii]) == "-v") {
|
||||
vis_option = G4UIcommand::ConvertToInt(argv[ii + 1]);
|
||||
}
|
||||
else {
|
||||
PrintUsage();
|
||||
return 1;
|
||||
@@ -98,8 +102,8 @@ int main(int argc, char** argv)
|
||||
runManager->SetNumberOfThreads(nThreads);
|
||||
}
|
||||
|
||||
runManager->SetUserInitialization(new DetectorConstruction());
|
||||
G4VModularPhysicsList* physicsList = new PhysicsList(phys_option);
|
||||
runManager->SetUserInitialization(new DetectorConstruction(vis_option));
|
||||
G4VModularPhysicsList* physicsList = new PhysicsList(phys_option, vis_option);
|
||||
runManager->SetUserInitialization(physicsList);
|
||||
runManager->SetUserInitialization(new ActionInitialization());
|
||||
G4DNAChemistryManager::Instance()->Initialize();
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -38,7 +38,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
/dnageom/useCustomMoleculeSizes false
|
||||
/dnageom/drawCellVolumes false
|
||||
/dnageom/radicalKillDistance 9 nm
|
||||
/dnageom/interactionDirectRange 7 angstrom
|
||||
/dnageom/interactionDirectRange 6 angstrom
|
||||
/dnageom/activateHistoneScavenging true
|
||||
/dnadamage/directDamageLower 17.5 eV
|
||||
/dnadamage/directDamageUpper 17.5 eV
|
||||
@@ -133,7 +133,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -340,7 +340,9 @@ DNARPWBAIonisationModel : Emin= 100 MeV Emax= 300 MeV deltaBorn Fluo
|
||||
|
||||
proton_G4DNAChargeDecrease: for proton SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 100 MeV
|
||||
DummyModel : Emin= 100 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for GenericIon SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -356,7 +358,7 @@ ionIoni: for GenericIon XStype:3 SubType=2
|
||||
|
||||
GenericIon_G4DNAIonisation: for GenericIon SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DNAIonIonisationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
@@ -407,19 +409,21 @@ alpha_G4DNAElastic: for alpha SubType=51 BuildTable=0
|
||||
|
||||
alpha_G4DNAExcitation: for alpha SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha_G4DNAIonisation: for alpha SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha_G4DNAChargeDecrease: for alpha SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for alpha+ SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -441,23 +445,27 @@ alpha+_G4DNAElastic: for alpha+ SubType=51 BuildTable=0
|
||||
|
||||
alpha+_G4DNAExcitation: for alpha+ SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAIonisation: for alpha+ SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAChargeIncrease: for alpha+ SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
alpha+_G4DNAChargeDecrease: for alpha+ SubType=56 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeDecreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for anti_proton SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -480,19 +488,21 @@ helium_G4DNAElastic: for helium SubType=51 BuildTable=0
|
||||
|
||||
helium_G4DNAExcitation: for helium SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 400 MeV
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
helium_G4DNAIonisation: for helium SubType=53 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 400 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 400 MeV Emax= 600 MeV
|
||||
DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
helium_G4DNAChargeIncrease: for helium SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
hydrogen_G4DNAElastic: for hydrogen SubType=51 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -502,8 +512,8 @@ hydrogen_G4DNAElastic: for hydrogen SubType=51 BuildTable=0
|
||||
|
||||
hydrogen_G4DNAExcitation: for hydrogen SubType=52 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 300 MeV
|
||||
DummyModel : Emin= 300 MeV Emax= 600 MeV
|
||||
DNAMillerGreenExcitationModel : Emin= 0 eV Emax= 500 keV
|
||||
DummyModel : Emin= 500 keV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
hydrogen_G4DNAIonisation: for hydrogen SubType=53 BuildTable=0
|
||||
@@ -514,7 +524,9 @@ DNARuddIonisationExtendedModel : Emin= 0 eV Emax= 300 MeV deltaRudd Fluo
|
||||
|
||||
hydrogen_G4DNAChargeIncrease: for hydrogen SubType=57 BuildTable=0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 600 MeV
|
||||
DNADingfelderChargeIncreaseModel : Emin= 0 eV Emax= 100 MeV
|
||||
DummyModel : Emin= 100 MeV Emax= 600 MeV
|
||||
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
|
||||
|
||||
msc: for kaon+ SubType= 10
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -630,20 +642,20 @@ Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 84655 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 24.66 seconds
|
||||
Total CPU time elapsed for geometry optimisation: 26.34 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
50.65 12.49 0.06 42138k CellLogical
|
||||
49.19 12.13 0.07 42138k DNAPhysLV
|
||||
51.21 13.49 0.07 42138k DNAPhysLV
|
||||
48.63 12.81 0.07 42138k CellLogical
|
||||
0.04 0.01 0.00 380k prism
|
||||
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
49.78 42137k 311671 314256 703064 12.49 CellLogical
|
||||
49.78 42137k 311671 314256 703064 12.13 DNAPhysLV
|
||||
49.78 42137k 311671 314256 703064 13.49 DNAPhysLV
|
||||
49.78 42137k 311671 314256 703064 12.81 CellLogical
|
||||
0.45 379k 1273 3780 14482 0.01 prism
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@@ -662,14 +674,14 @@ DNAIndependentReactionTimeModel will be used ==========================
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.730000s Real=0.729839s Sys=0.010000s
|
||||
User=0.660000s Real=0.658905s Sys=0.010000s
|
||||
... write file : molecular-dna.root - done
|
||||
... close file : molecular-dna.root - done
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0xf54920
|
||||
UserPhysicsList deleted 0xf98870
|
||||
UserActionInitialization deleted 0xfcff30
|
||||
UserDetectorConstruction deleted 0x226a3f0
|
||||
UserPhysicsList deleted 0x22adf20
|
||||
UserActionInitialization deleted 0x22e5fd0
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
@@ -679,25 +691,25 @@ G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 1110
|
||||
Total navigation history collections cleaned: 1341
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.958 MB
|
||||
Pool ID '20G4NavigationLevelRep', size : 1.06 MB
|
||||
Pool ID '19G4ElectronOccupancy', size : 0.000961 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
Pool ID '7G4Event', size : 0.000961 MB
|
||||
Pool ID '15G4PrimaryVertex', size : 0.000961 MB
|
||||
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
|
||||
Pool ID '13ChromosomeHit', size : 0.000961 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.129 MB
|
||||
Pool ID '7G4Track', size : 0.257 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.0673 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.126 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.127 MB
|
||||
Pool ID '7G4Track', size : 0.254 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.0663 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.0856 MB
|
||||
Pool ID '10G4Molecule', size : 0.0769 MB
|
||||
Pool ID '8G4OctreeI19G4FastList_iteratorI7G4TrackE9ExtractorI10G4FastListIS1_EEN5CLHEP10Hep3VectorEE', size : 0.000961 MB
|
||||
Pool ID '6DNAHit', size : 0.00673 MB
|
||||
Number of memory pools allocated: 14 of which, static: 0
|
||||
Dynamic pools deleted: 14 / Total memory freed: 1.6 MB
|
||||
Dynamic pools deleted: 14 / Total memory freed: 1.7 MB
|
||||
============================================================
|
||||
G4Allocator objects are deleted.
|
||||
UImanager deleted.
|
||||
|
||||
@@ -0,0 +1,565 @@
|
||||
//-------------------------------------------------------------------------------//
|
||||
// This macrofile was developed by Konstantinos Chatzipapas at LP2iB (ex. CENBG) //
|
||||
// in collaboration with the whole team of molecularDNA Geant4-DNA example //
|
||||
// For any question please contact through: //
|
||||
// k.chatzipapas@yahoo.com //
|
||||
//-------------------------------------------------------------------------------//
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X phage.C
|
||||
// ROOT6.x should be installed
|
||||
//
|
||||
//************************************//
|
||||
// Please define the parameters below //
|
||||
//************************************//
|
||||
|
||||
{
|
||||
//*******************************************************************************//
|
||||
// If you need to add multiple root outputs, by multithreading, use this command:
|
||||
system ("hadd -O -f molecular-dna.root molecular-dna_t*.root");
|
||||
|
||||
// Define these parameters of the simulation
|
||||
char ifile[256] = "molecular-dna.root"; // input filepath
|
||||
Double_t r3 = 7000e-9 * 3500e-9 * 3500e-9; // a * b * c // Chromosome size, as defined in the mac file, but in meters. If sphere, a=b=c
|
||||
Double_t Nbp = 0.141158; // Mbp // Length of the DNA chain in Mbp
|
||||
Double_t mass = 997 * 3.141592 * r3; // waterDensity * pi * r3 in kg // cylinder
|
||||
//*******************************************************************************//
|
||||
|
||||
typedef std::pair <int64_t, int64_t> ipair;
|
||||
bool greaterPair(const ipair &l, const ipair &r);
|
||||
bool smallerPair(const ipair &l, const ipair &r);
|
||||
|
||||
void BinLogX(TH1 *h);
|
||||
|
||||
gROOT->Reset();
|
||||
gStyle->SetPalette(1);
|
||||
gROOT->SetStyle("Plain");
|
||||
gStyle->SetOptStat(00000);
|
||||
|
||||
// Initialize output histograms
|
||||
TCanvas *cfragment = new TCanvas("cfragment","DNA Fragments Distribution", 900, 120, 600,400);
|
||||
cfragment->SetLogx();
|
||||
cfragment->SetLogy();
|
||||
TH1F *h1fragments = new TH1F("h1fragments","h1fragments",40,0,5);
|
||||
BinLogX(h1fragments);
|
||||
|
||||
TCanvas *c1 = new TCanvas("c1", "Molecular DNA - Damage Quantification", 60, 120, 800, 800);
|
||||
c1->SetBorderSize(0);
|
||||
c1->SetFillColor(0);
|
||||
c1->SetFillStyle(4000);
|
||||
gPad->SetLeftMargin(0.13);
|
||||
|
||||
TPad* pad1 = new TPad("pad1","Species", 0, 0.51, 0.49, 1);
|
||||
pad1->SetBorderSize(0);
|
||||
pad1->SetFillColor(0);
|
||||
pad1->SetFillStyle(4000);
|
||||
pad1->SetLeftMargin(0.15);
|
||||
pad1->SetRightMargin(0.01);
|
||||
pad1->SetBottomMargin(0.2);
|
||||
|
||||
TPad* pad2 = new TPad("pad2","Damage Yield", 0.51, 0.5, 1, 1);
|
||||
pad2->SetBorderSize(0);
|
||||
pad2->SetFillColor(0);
|
||||
pad2->SetFillStyle(4000);
|
||||
pad2->SetLeftMargin(0.15);
|
||||
pad2->SetRightMargin(0.05);
|
||||
pad2->SetBottomMargin(0.2);
|
||||
|
||||
TPad* pad3 = new TPad("pad3","Breaks Yield SSB", 0, 0, 0.49, 0.49);
|
||||
pad3->SetBorderSize(0);
|
||||
pad3->SetFillColor(0);
|
||||
pad3->SetFillStyle(4000);
|
||||
pad3->SetLeftMargin(0.15);
|
||||
pad3->SetRightMargin(0.01);
|
||||
//pad3->SetTopMargin(0.2);
|
||||
pad3->SetBottomMargin(0.2);
|
||||
|
||||
TPad* pad4 = new TPad("pad4","Breaks Yield DSB", 0.51, 0, 1, 0.49);
|
||||
pad4->SetBorderSize(0);
|
||||
pad4->SetFillColor(0);
|
||||
pad4->SetFillStyle(4000);
|
||||
pad4->SetLeftMargin(0.15);
|
||||
pad4->SetRightMargin(0.05);
|
||||
//pad3->SetTopMargin(0.2);
|
||||
pad4->SetBottomMargin(0.2);
|
||||
|
||||
pad1->Draw();
|
||||
pad2->Draw();
|
||||
pad3->Draw();
|
||||
pad4->Draw();
|
||||
|
||||
// Open root file
|
||||
TFile *f = TFile::Open(ifile);
|
||||
|
||||
// Initialize Variables
|
||||
Int_t EB, ES, OHB, OHS, HB, HS, FL;
|
||||
Int_t total_EB, total_ES, total_OHB, total_OHS, total_HB, total_HS, total_FL;
|
||||
Float_t total_EB2, total_ES2, total_OHB2, total_OHS2, total_HB2, total_HS2, total_FL2;
|
||||
Float_t SD_EB, SD_ES, SD_OHB, SD_OHS, SD_HB, SD_HS;
|
||||
Float_t SD_SSB, SD_SSBp, SD_SSB2p, SD_sSSB, SD_SSBd, SD_SSBi, SD_SSBm;
|
||||
Float_t SD_DSB, SD_DSBp, SD_DSBpp, SD_sDSB, SD_DSBd, SD_DSBi, SD_DSBm, SD_DSBh;
|
||||
|
||||
Int_t SSB, SSBp, SSB2p;
|
||||
Int_t total_SSB, total_SSBp, total_SSB2p;
|
||||
Float_t total_SSB2, total_SSBp2, total_SSB2p2;
|
||||
Int_t DSB, DSBp, DSBpp;
|
||||
Int_t total_DSB, total_DSBp, total_DSBpp;
|
||||
Float_t total_DSB2, total_DSBp2, total_DSBpp2;
|
||||
|
||||
Int_t SSBd, SSBi, SSBm;
|
||||
Int_t total_sSSB, total_SSBd, total_SSBi, total_SSBm;
|
||||
Float_t total_sSSB2, total_SSBd2, total_SSBi2, total_SSBm2;
|
||||
Int_t DSBd, DSBi, DSBm, DSBh;
|
||||
Int_t total_sDSB, total_DSBd, total_DSBi, total_DSBm, total_DSBh;
|
||||
Float_t total_sDSB2, total_DSBd2, total_DSBi2, total_DSBm2, total_DSBh2;
|
||||
|
||||
Double_t dose = 0;
|
||||
Double_t SD_dose = 0;
|
||||
|
||||
Double_t EB_yield = 0; Double_t ES_yield = 0; Double_t OHB_yield = 0; Double_t OHS_yield = 0; Double_t HB_yield = 0; Double_t HS_yield = 0;
|
||||
Double_t SD_EB_yield = 0; Double_t SD_ES_yield = 0; Double_t SD_OHB_yield = 0; Double_t SD_OHS_yield = 0; Double_t SD_HB_yield = 0; Double_t SD_HS_yield = 0;
|
||||
|
||||
Double_t SSB_yield = 0; Double_t SSBp_yield = 0; Double_t SSB2p_yield = 0;
|
||||
Double_t SD_SSB_yield = 0; Double_t SD_SSBp_yield = 0; Double_t SD_SSB2p_yield = 0;
|
||||
Double_t DSB_yield = 0; Double_t DSBp_yield = 0; Double_t DSBpp_yield = 0;
|
||||
Double_t SD_DSB_yield = 0; Double_t SD_DSBp_yield = 0; Double_t SD_DSBpp_yield = 0;
|
||||
|
||||
Double_t sSSB_yield = 0; Double_t SSBi_yield = 0; Double_t SSBd_yield = 0; Double_t SSBm_yield = 0;
|
||||
Double_t SD_sSSB_yield = 0; Double_t SD_SSBi_yield = 0; Double_t SD_SSBd_yield = 0; Double_t SD_SSBm_yield = 0;
|
||||
Double_t sDSB_yield = 0; Double_t DSBi_yield = 0; Double_t DSBd_yield = 0; Double_t DSBm_yield = 0; Double_t DSBh_yield = 0;
|
||||
Double_t SD_sDSB_yield = 0; Double_t SD_DSBi_yield = 0; Double_t SD_DSBd_yield = 0; Double_t SD_DSBm_yield = 0; Double_t SD_DSBh_yield = 0;
|
||||
|
||||
total_EB = 0; total_ES = 0; total_OHB = 0; total_OHS = 0; total_HB = 0; total_HS = 0;
|
||||
|
||||
total_SSB = 0; total_SSBp = 0; total_SSB2p = 0;
|
||||
total_SSB2 = 0; total_SSBp2 = 0; total_SSB2p2 = 0;
|
||||
total_DSB = 0; total_DSBp = 0; total_DSBpp = 0;
|
||||
total_DSB2 = 0; total_DSBp2 = 0; total_DSBpp2 = 0;
|
||||
|
||||
total_sSSB = 0; total_SSBd = 0; total_SSBi = 0; total_SSBm = 0;
|
||||
total_sSSB2 = 0; total_SSBd2 = 0; total_SSBi2 = 0; total_SSBm2 = 0;
|
||||
total_sDSB = 0; total_DSBd = 0; total_DSBi = 0; total_DSBm = 0; total_DSBh = 0;
|
||||
total_sDSB2 = 0; total_DSBd2 = 0; total_DSBi2 = 0; total_DSBm2 = 0; total_DSBh2 = 0;
|
||||
|
||||
Double_t eVtoJ = 1.60218e-19;
|
||||
Double_t EnergyDeposited_eV = 0;
|
||||
Double_t acc_edep = 0;
|
||||
Double_t acc_edep2 = 0;
|
||||
|
||||
Double_t Energy;
|
||||
Double_t BPID;
|
||||
Char_t Primary;
|
||||
char *primaryName = new char[32];
|
||||
char *type= new char[256];
|
||||
|
||||
// Read trees and leaves from root file, and give values to variables
|
||||
TTree* tree = (TTree*) f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t) tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int,int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
tree = (TTree*) f->Get("tuples/damage");
|
||||
tree->SetBranchAddress("Primary", &Primary);
|
||||
tree->SetBranchAddress("Energy", &Energy);
|
||||
tree->SetBranchAddress("EaqBaseHits", &EB);
|
||||
tree->SetBranchAddress("EaqStrandHits", &ES);
|
||||
tree->SetBranchAddress("OHBaseHits", &OHB);
|
||||
tree->SetBranchAddress("OHStrandHits", &OHS);
|
||||
tree->SetBranchAddress("HBaseHits", &HB);
|
||||
tree->SetBranchAddress("HStrandHits", &HS);
|
||||
tree->SetBranchAddress("TypeClassification", type);
|
||||
tree->SetBranchAddress("BasePair", &BPID);
|
||||
|
||||
|
||||
Long64_t nentries = tree->GetEntries();
|
||||
for(int i = 0;i<nentries;i++){
|
||||
tree->GetEntry(i);
|
||||
|
||||
total_EB += EB;
|
||||
total_EB2 += pow(EB,2);
|
||||
total_ES += ES;
|
||||
total_ES2 += pow(ES,2);
|
||||
total_OHB += OHB;
|
||||
total_OHB2 += pow(OHB,2);
|
||||
total_OHS += OHS;
|
||||
total_OHS2 += pow(OHS,2);
|
||||
total_HB += HB;
|
||||
total_HB2 += pow(HB,2);
|
||||
total_HS += HS;
|
||||
total_HS2 += pow(HS,2);
|
||||
|
||||
if((string)type=="DSB"||(string)type=="DSB+"||(string)type=="DSB++"){
|
||||
//cout << "DSB:"<<type<<endl;
|
||||
DSBBPID.push_back(make_pair(i,(int64_t)BPID));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0;ie<DSBBPID.size()-1;ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie+1].second-DSBBPID[ie].second;
|
||||
|
||||
double val = (double)dsbfragment/1000.;
|
||||
double meanw = h1fragments->GetBinCenter(h1fragments->FindBin(val));
|
||||
double binw = h1fragments->GetBinWidth (h1fragments->FindBin(val));
|
||||
h1fragments->Fill(val,1./binw/1000);//bp-1
|
||||
//cout <<"val:"<<val<<endl;
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number,2)))/(number -1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number,2)))/(number -1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number,2)))/(number -1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number,2)))/(number -1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number,2)))/(number -1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
// Computational modelling of low-energy electron-induced DNA damage by early physical
|
||||
// and chemical events, International Journal of Radiation Biology, 71, 467.
|
||||
tree = (TTree *) f->Get("tuples/classification");
|
||||
tree->SetBranchAddress("Primary",&Primary);
|
||||
tree->SetBranchAddress("Energy", &Energy);
|
||||
tree->SetBranchAddress("SSB", &SSB);
|
||||
tree->SetBranchAddress("SSBp", &SSBp);
|
||||
tree->SetBranchAddress("2SSB", &SSB2p);
|
||||
tree->SetBranchAddress("DSB", &DSB);
|
||||
tree->SetBranchAddress("DSBp", &DSBp);
|
||||
tree->SetBranchAddress("DSBpp", &DSBpp);
|
||||
|
||||
|
||||
Long64_t nentriesC = tree->GetEntries();
|
||||
for(int i = 0;i<nentriesC;i++){
|
||||
tree->GetEntry(i);
|
||||
|
||||
total_SSBp += SSBp;
|
||||
total_SSBp2 += pow(SSBp,2);
|
||||
total_SSB2p += SSB2p;
|
||||
total_SSB2p2 += pow(SSB2p,2);
|
||||
total_SSB += SSB;
|
||||
total_SSB2 += pow(SSB,2);
|
||||
|
||||
total_DSBp += DSBp;
|
||||
total_DSBp2 += pow(DSBp,2);
|
||||
total_DSBpp += DSBpp;
|
||||
total_DSBpp2 += pow(DSBpp,2);
|
||||
total_DSB += DSB;
|
||||
total_DSB2 += pow(DSB,2);
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number,2)))/(number -1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number,2)))/(number -1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number,2)))/(number -1));
|
||||
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number,2)))/(number -1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number,2)))/(number -1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number,2)))/(number -1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
// Computational modelling of low-energy electron-induced DNA damage by early physical
|
||||
// and chemical events, International Journal of Radiation Biology, 71, 467.
|
||||
tree = (TTree *) f->Get("tuples/source");
|
||||
tree->SetBranchAddress("Primary",primaryName);
|
||||
tree->SetBranchAddress("Energy", &Energy);
|
||||
tree->SetBranchAddress("SSBd", &SSBd);
|
||||
tree->SetBranchAddress("SSBi", &SSBi);
|
||||
tree->SetBranchAddress("SSBm", &SSBm);
|
||||
tree->SetBranchAddress("DSBd", &DSBd);
|
||||
tree->SetBranchAddress("DSBi", &DSBi);
|
||||
tree->SetBranchAddress("DSBm", &DSBm);
|
||||
tree->SetBranchAddress("DSBh", &DSBh);
|
||||
|
||||
Long64_t nentriesS = tree->GetEntries();
|
||||
for(int i = 0;i<nentriesS;i++){
|
||||
tree->GetEntry(i);
|
||||
|
||||
total_SSBd += SSBd;
|
||||
total_SSBd2 += pow((SSBd),2);
|
||||
total_SSBi += SSBi;
|
||||
total_SSBi2 += pow((SSBi),2);
|
||||
total_SSBm += SSBm;
|
||||
total_SSBm2 += pow((SSBm),2);
|
||||
total_sSSB += SSBd + SSBi + SSBm;
|
||||
total_sSSB2 += pow((SSBd+SSBi+SSBm),2);
|
||||
|
||||
total_DSBd += DSBd;
|
||||
total_DSBd2 += pow(DSBd,2);
|
||||
total_DSBi += DSBi;
|
||||
total_DSBi2 += pow(DSBi,2);
|
||||
total_DSBm += DSBm;
|
||||
total_DSBm2 += pow(DSBm,2);
|
||||
total_DSBh += DSBh;
|
||||
total_DSBh2 += pow(DSBh,2);
|
||||
total_sDSB += DSBd + DSBi + DSBm + DSBh;
|
||||
total_sDSB2 += pow((DSBd+DSBi+DSBm+DSBh),2);
|
||||
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number,2)))/(number -1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number,2)))/(number -1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number,2)))/(number -1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number,2)))/(number -1));
|
||||
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number,2)))/(number -1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number,2)))/(number -1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number,2)))/(number -1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number,2)))/(number -1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number,2)))/(number -1));
|
||||
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain
|
||||
|
||||
tree = (TTree *) f->Get("tuples/chromosome_hits");
|
||||
tree->SetBranchAddress("e_chromosome_kev",&EnergyDeposited_eV);
|
||||
nentries = tree->GetEntries();
|
||||
for(int i = 0;i<nentries;i++){
|
||||
tree->GetEntry(i);
|
||||
acc_edep += EnergyDeposited_eV *1e3;
|
||||
acc_edep2 += EnergyDeposited_eV *EnergyDeposited_eV *1e6;
|
||||
}
|
||||
tree->SetBranchAddress("e_dna_kev",&EnergyDeposited_eV);
|
||||
nentries = tree->GetEntries();
|
||||
for(int i = 0;i<nentries;i++){
|
||||
tree->GetEntry(i);
|
||||
acc_edep += EnergyDeposited_eV *1e3;
|
||||
acc_edep2 += EnergyDeposited_eV *EnergyDeposited_eV *1e6;
|
||||
}
|
||||
|
||||
// Close the root file to free space
|
||||
f->Close();
|
||||
|
||||
// Calculate the absorbed dose
|
||||
dose = acc_edep * eVtoJ / mass;
|
||||
|
||||
// This is a normalization factor to produce the output in Gy-1 Gbp-1, or else.
|
||||
// Default value is 1 to produce the result in Gy-1 Mbp-1
|
||||
// It changes Mbp to Gbp. Some other changes may be needed in graphs section (name of axes)
|
||||
double norm = 1;
|
||||
|
||||
// Calculate the yields, together with their standard deviation
|
||||
EB_yield = (Double_t) total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t) total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t) total_OHB / dose / Nbp;
|
||||
OHS_yield = (Double_t) total_OHS / dose / Nbp;
|
||||
HB_yield = (Double_t) total_HB / dose / Nbp;
|
||||
HS_yield = (Double_t) total_HS / dose / Nbp;
|
||||
|
||||
SD_EB_yield = SD_EB / dose / Nbp;
|
||||
SD_ES_yield = SD_ES / dose / Nbp;
|
||||
SD_OHB_yield = SD_OHB / dose / Nbp;
|
||||
SD_OHS_yield = SD_OHS / dose / Nbp;
|
||||
SD_HB_yield = SD_HB / dose / Nbp;
|
||||
SD_HS_yield = SD_HS / dose / Nbp;
|
||||
|
||||
|
||||
SSB_yield = (Double_t) norm * total_SSB / dose / Nbp;
|
||||
SSBp_yield = (Double_t) norm * total_SSBp / dose / Nbp;
|
||||
SSB2p_yield = (Double_t) norm * total_SSB2p / dose / Nbp;
|
||||
|
||||
DSB_yield = (Double_t) norm * total_DSB / dose / Nbp;
|
||||
DSBp_yield = (Double_t) norm * total_DSBp / dose / Nbp;
|
||||
DSBpp_yield = (Double_t) norm * total_DSBpp / dose / Nbp;
|
||||
|
||||
SD_SSB_yield = norm * SD_SSB / dose / Nbp;
|
||||
SD_SSBp_yield = norm * SD_SSBp / dose / Nbp;
|
||||
SD_SSB2p_yield = norm * SD_SSB2p / dose / Nbp;
|
||||
|
||||
SD_DSB_yield = norm * SD_DSB / dose / Nbp;
|
||||
SD_DSBp_yield = norm * SD_DSBp / dose / Nbp;
|
||||
SD_DSBpp_yield = norm * SD_DSBpp / dose / Nbp;
|
||||
|
||||
|
||||
sSSB_yield = (Double_t) norm * total_sSSB / dose / Nbp;
|
||||
SSBi_yield = (Double_t) norm * total_SSBi / dose / Nbp;
|
||||
SSBd_yield = (Double_t) norm * total_SSBd / dose / Nbp;
|
||||
SSBm_yield = (Double_t) norm * total_SSBm / dose / Nbp;
|
||||
|
||||
sDSB_yield = (Double_t) norm * total_sDSB / dose / Nbp;
|
||||
DSBi_yield = (Double_t) norm * total_DSBi / dose / Nbp;
|
||||
DSBd_yield = (Double_t) norm * total_DSBd / dose / Nbp;
|
||||
DSBm_yield = (Double_t) norm * total_DSBm / dose / Nbp;
|
||||
DSBh_yield = (Double_t) norm * total_DSBh / dose / Nbp;
|
||||
|
||||
SD_sSSB_yield = norm * SD_sSSB / dose / Nbp;
|
||||
SD_SSBi_yield = norm * SD_SSBi / dose / Nbp;
|
||||
SD_SSBd_yield = norm * SD_SSBd / dose / Nbp;
|
||||
SD_SSBm_yield = norm * SD_SSBm / dose / Nbp;
|
||||
|
||||
SD_sDSB_yield = norm * SD_sDSB / dose / Nbp;
|
||||
SD_DSBi_yield = norm * SD_DSBi / dose / Nbp;
|
||||
SD_DSBd_yield = norm * SD_DSBd / dose / Nbp;
|
||||
SD_DSBm_yield = norm * SD_DSBm / dose / Nbp;
|
||||
SD_DSBh_yield = norm * SD_DSBh / dose / Nbp;
|
||||
|
||||
|
||||
// Print output in terminal
|
||||
|
||||
float total_SSB_totalYield = SSB_yield + SSBp_yield + SSB2p_yield;
|
||||
float total_DSB_totalYield = DSB_yield + DSBp_yield + DSBpp_yield;
|
||||
|
||||
cout<<"\n" <<ifile <<'\n'
|
||||
<<"\nDose Absorbed (Gy): " <<dose <<'\n'
|
||||
<<"Particle : " <<primaryName <<'\t'
|
||||
<<"Energy (MeV) : " <<Energy <<'\t'
|
||||
<<"Number of Primaries : " <<number <<'\n'
|
||||
<<" Output Damage : " <<'\n'<<'\t'
|
||||
<<" Species Hits (Gy-1 Mbp-1) " <<'\n'<<'\t'
|
||||
<<"EaqBaseHits : " <<EB_yield <<" \t" <<" error %: " <<100*SD_EB_yield/EB_yield <<'\n'<<'\t'
|
||||
<<"EaqStrandHits : " <<ES_yield <<" \t" <<" error %: " <<100*SD_ES_yield/ES_yield <<'\n'<<'\t'
|
||||
<<"OHBaseHits : " <<OHB_yield <<" \t" <<" error %: " <<100*SD_OHB_yield/OHB_yield <<'\n'<<'\t'
|
||||
<<"OHStrandHits : " <<OHS_yield <<" \t" <<" error %: " <<100*SD_OHS_yield/OHS_yield <<'\n'<<'\t'
|
||||
<<"HBaseHits : " <<HB_yield <<" \t" <<" error %: " <<100*SD_HB_yield/HB_yield <<'\n'<<'\t'
|
||||
<<"HStrandHits : " <<HS_yield <<" \t" <<" error %: " <<100*SD_HS_yield/HS_yield <<'\n'<<'\n'<<'\t'
|
||||
<<" Damage yield (Gy-1 Mbp-1) " <<'\n'<<'\t'
|
||||
<<"SSB : " <<SSB_yield <<" \t" <<" error %: " <<100*SD_SSB_yield/SSB_yield <<'\n'<<'\t'
|
||||
<<"SSB+ : " <<SSBp_yield <<" \t" <<" error %: " <<100*SD_SSBp_yield/SSBp_yield <<'\n'<<'\t'
|
||||
<<"2SSB : " <<SSB2p_yield <<" \t" <<" error %: " <<100*SD_SSB2p_yield/SSB2p_yield <<'\n'<<'\t'
|
||||
<<"SSB total : " <<total_SSB_totalYield <<'\n'<<'\t'
|
||||
<<"DSB : " <<DSB_yield <<" \t" <<" error %: " <<100*SD_DSB_yield/DSB_yield <<'\n'<<'\t'
|
||||
<<"DSB+ : " <<DSBp_yield <<" \t" <<" error %: " <<100*SD_DSBp_yield/DSBp_yield <<'\n'<<'\t'
|
||||
<<"DSB++ : " <<DSBpp_yield <<" \t" <<" error %: " <<100*SD_DSBpp_yield/DSBpp_yield <<'\n'<<'\t'
|
||||
<<"DSB total : " <<total_DSB_totalYield <<'\n'<<'\n'<<'\t'
|
||||
<<" Breaks yield (Gy-1 Mbp-1) " <<'\n'<<'\t'
|
||||
<<"SSB direct : " <<SSBd_yield <<" \t" <<" error %: " <<100*SD_SSBd_yield/SSBd_yield <<'\n'<<'\t'
|
||||
<<"SSB indirect : " <<SSBi_yield <<" \t" <<" error %: " <<100*SD_SSBi_yield/SSBi_yield <<'\n'<<'\t'
|
||||
<<"SSB mixed : " <<SSBm_yield <<" \t" <<" error %: " <<100*SD_SSBm_yield/SSBi_yield <<'\n'<<'\t'
|
||||
<<"SSB total : " <<sSSB_yield <<" \t" <<" error %: " <<100*SD_sSSB_yield/sSSB_yield <<'\n'<<'\t'
|
||||
<<"DSB direct : " <<DSBd_yield <<" \t" <<" error %: " <<100*SD_DSBd_yield/DSBd_yield <<'\n'<<'\t'
|
||||
<<"DSB indirect : " <<DSBi_yield <<" \t" <<" error %: " <<100*SD_DSBi_yield/DSBi_yield <<'\n'<<'\t'
|
||||
<<"DSB mixed : " <<DSBm_yield <<" \t" <<" error %: " <<100*SD_DSBm_yield/DSBm_yield <<'\n'<<'\t'
|
||||
<<"DSB hybrid : " <<DSBh_yield <<" \t" <<" error %: " <<100*SD_DSBh_yield/DSBh_yield <<'\n'<<'\t'
|
||||
<<"DSB total : " <<sDSB_yield <<" \t" <<" error %: " <<100*SD_sDSB_yield/sDSB_yield <<'\n'<<'\n'<<'\t'
|
||||
<<"SSB/DSB : " <<sSSB_yield/sDSB_yield <<'\n'<<'\n';
|
||||
|
||||
|
||||
// Plot Histograms
|
||||
|
||||
cfragment->GetCanvas()->cd();
|
||||
h1fragments->SetStats(false);
|
||||
h1fragments->SetMarkerSize(0.1);
|
||||
h1fragments->SetMarkerColor(kRed);
|
||||
h1fragments->SetLineColor (kRed);
|
||||
h1fragments->Scale(1./(Nbp*1e6)); //bp^-1
|
||||
h1fragments->SetTitle("");
|
||||
h1fragments->SetYTitle("Number of Fragments (bp^{-2})");
|
||||
h1fragments->SetXTitle("Fragment Length (kbp)");
|
||||
//h1fragments->SetAxisRange(10,1e4);
|
||||
h1fragments->SetAxisRange(1,10);
|
||||
//h1fragments->SetMaximum(3e-11);
|
||||
//h1fragments->SetMinimum(1e-15);
|
||||
h1fragments->Draw();
|
||||
|
||||
|
||||
c1->GetCanvas()->cd();
|
||||
pad1->cd();
|
||||
const Int_t n = 6;
|
||||
Double_t x[n] = {1,2,3,4,5,6};
|
||||
Double_t y[n] = {EB_yield,ES_yield,OHB_yield,OHS_yield,HB_yield,HS_yield};
|
||||
Double_t err_y[n] = {SD_EB_yield,SD_ES_yield,SD_OHB_yield,SD_OHS_yield,SD_HB_yield,SD_HS_yield};
|
||||
TGraph* gr = new TGraphErrors(n,x,y,0,err_y);
|
||||
gr->SetTitle("Species");
|
||||
gr->GetXaxis()->SetBinLabel(9, "EaqBaseHits");
|
||||
gr->GetXaxis()->SetBinLabel(25,"EaqStrandHits");
|
||||
gr->GetXaxis()->SetBinLabel(42,"OHBaseHits");
|
||||
gr->GetXaxis()->SetBinLabel(58,"OHStrandHits");
|
||||
gr->GetXaxis()->SetBinLabel(75,"HBaseHits");
|
||||
gr->GetXaxis()->SetBinLabel(92,"HStrandHits");
|
||||
gr->GetYaxis()->SetTitle("Species Hits (Gy^{-1} Mbp^{-1})");
|
||||
gr->GetYaxis()->SetTitleOffset(2);
|
||||
|
||||
gr->SetFillColor(49);
|
||||
gr->Draw("ba");
|
||||
|
||||
|
||||
pad2->cd();
|
||||
Double_t x2[n] = {1,2,3,4,5,6};
|
||||
Double_t y2[n] = {SSBp_yield,SSB2p_yield,SSB_yield,DSBp_yield,DSBpp_yield,DSB_yield};
|
||||
Double_t err_y2[n] = {SD_SSBp_yield,SD_SSB2p_yield,SD_SSB_yield,SD_DSBp_yield,SD_DSBpp_yield,SD_DSB_yield};
|
||||
TGraph* gr2 = new TGraphErrors(n,x2,y2,0,err_y2);
|
||||
gr2->SetTitle("Damage Yield");
|
||||
gr2->GetXaxis()->SetBinLabel(9, "SSB+");
|
||||
gr2->GetXaxis()->SetBinLabel(25,"2SSB");
|
||||
gr2->GetXaxis()->SetBinLabel(42,"SSB");
|
||||
gr2->GetXaxis()->SetBinLabel(58,"DSB+");
|
||||
gr2->GetXaxis()->SetBinLabel(75,"DSB++");
|
||||
gr2->GetXaxis()->SetBinLabel(92,"DSB");
|
||||
gr2->GetYaxis()->SetTitle("Damage yield (Gy^{-1} Mbp^{-1})");
|
||||
//gr2->GetYaxis()->SetTitle("Damage yield (particle^{-1})");
|
||||
gr2->GetYaxis()->SetTitleOffset(2);
|
||||
|
||||
gr2->SetFillColor(8);
|
||||
gr2->Draw("ba");
|
||||
|
||||
|
||||
pad3->cd();
|
||||
const Int_t m = 4;
|
||||
Double_t x3[m] = {1,2,3,4};
|
||||
Double_t y3[m] = {SSBd_yield,SSBi_yield,SSBm_yield,sSSB_yield};
|
||||
Double_t err_y3[m] = {SD_SSBd_yield,SD_SSBi_yield,SD_SSBm_yield,SD_sSSB_yield};
|
||||
TGraph* gr3 = new TGraphErrors(m,x3,y3,0,err_y3);
|
||||
gr3->SetTitle("Breaks Yield");
|
||||
gr3->GetXaxis()->SetBinLabel(8, "SSB direct");
|
||||
gr3->GetXaxis()->SetBinLabel(35,"SSB indirect");
|
||||
gr3->GetXaxis()->SetBinLabel(64,"SSB mixed");
|
||||
gr3->GetXaxis()->SetBinLabel(92,"SSB all");
|
||||
gr3->GetYaxis()->SetTitle("Breaks yield (Gy^{-1} Mbp^{-1})");
|
||||
//gr3->GetYaxis()->SetTitle("SSB yield (particle^{-1}");
|
||||
gr3->GetYaxis()->SetTitleOffset(2);
|
||||
|
||||
gr3->SetFillColor(7);
|
||||
gr3->Draw("ba");
|
||||
|
||||
|
||||
pad4->cd();
|
||||
const Int_t k = 5;
|
||||
Double_t x4[k] = {1,2,3,4,5};
|
||||
Double_t y4[k] = {DSBd_yield,DSBi_yield,DSBm_yield,DSBh_yield,sDSB_yield};
|
||||
Double_t err_y4[k] = {SD_DSBd_yield,SD_DSBi_yield,SD_DSBm_yield,SD_DSBh_yield,SD_sDSB_yield};
|
||||
TGraph* gr4 = new TGraphErrors(k,x4,y4,0,err_y4);
|
||||
gr4->SetTitle("Breaks Yield");
|
||||
gr4->GetXaxis()->SetBinLabel(8,"DSB direct");
|
||||
gr4->GetXaxis()->SetBinLabel(29,"DSB indirect");
|
||||
gr4->GetXaxis()->SetBinLabel(50,"DSB mixed");
|
||||
gr4->GetXaxis()->SetBinLabel(71,"DSB hybrid");
|
||||
gr4->GetXaxis()->SetBinLabel(92,"DSB all");
|
||||
gr4->GetYaxis()->SetTitle("Breaks yield (Gy^{-1} Mbp^{-1})");
|
||||
//gr4->GetYaxis()->SetTitle("DSB yield (particle^{-1})");
|
||||
gr4->GetYaxis()->SetTitleOffset(2);
|
||||
|
||||
gr4->SetFillColor(4);
|
||||
gr4->Draw("ba");
|
||||
|
||||
}
|
||||
|
||||
// Some important bools that are needed to run the root macro file
|
||||
bool greaterPair(const ipair& l, const ipair& r){return l.second > r.second;}
|
||||
bool smallerPair(const ipair& l, const ipair& r){return l.second < r.second;}
|
||||
|
||||
void BinLogX(TH1 *h) {
|
||||
TAxis *axis = h->GetXaxis();
|
||||
int bins = axis->GetNbins();
|
||||
Axis_t from = axis->GetXmin();
|
||||
Axis_t to = axis->GetXmax();
|
||||
Axis_t width = (to - from) / bins;
|
||||
Axis_t *new_bins = new Axis_t[bins + 1];
|
||||
for (int i = 0; i <= bins; i++) {
|
||||
new_bins[i] = TMath::Power(10, from + i * width);
|
||||
}
|
||||
axis->Set(bins, new_bins);
|
||||
delete[] new_bins;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
### Phage default geometry
|
||||
|
||||
#
|
||||
# See more details on moleculardna specific UI commands:
|
||||
# - https://geant4-dna.github.io/molecular-docs/docs/overview/configuration
|
||||
# - https://geant4-dna.github.io/molecular-docs/docs/overview/macro-anatomy
|
||||
# - the README file
|
||||
# - the messenger classes of the moleculardna example
|
||||
#
|
||||
|
||||
# Physics: choice of thermalization model
|
||||
/process/dna/e-SolvationSubType Meesungnoen2002
|
||||
#/process/dna/e-SolvationSubType Ritchie1994
|
||||
#/process/dna/e-SolvationSubType Terrisol1990
|
||||
|
||||
# Verbosity: settings
|
||||
/run/verbose 1
|
||||
/tracking/verbose 0
|
||||
/control/verbose 1
|
||||
#/dnageom/verbose 3
|
||||
|
||||
# Chemistry: selection of IRT_syn
|
||||
/process/chem/TimeStepModel IRT_syn
|
||||
|
||||
# Chemistry: activation
|
||||
/chem/activate true
|
||||
|
||||
# Chemistry: verbosity
|
||||
/scheduler/verbose 0
|
||||
|
||||
# Chemistry: end time of chemistry stage
|
||||
/scheduler/endTime 5 ns
|
||||
|
||||
# Geometry: size of World volume
|
||||
/world/worldSize 9 um
|
||||
|
||||
# Geometry: size of cell volume
|
||||
# See https://geant4-dna.github.io/molecular-docs/docs/examples/parameter-study
|
||||
/cell/radiusSize 4 4 4 um
|
||||
|
||||
# Geometry: optimisation of voxelisation
|
||||
#/dnageom/setSmartVoxels 100
|
||||
|
||||
# Geometry: creation
|
||||
# See https://geant4-dna.github.io/molecular-docs/docs/examples/parameter-study
|
||||
# - Side length for each placement
|
||||
/dnageom/placementSize 50 50 50 nm
|
||||
# - Scaling of XYZ in fractal definition file
|
||||
/dnageom/fractalScaling 50 50 50 nm
|
||||
# - Path to file that defines placement locations
|
||||
/dnageom/definitionFile geometries/phage.txt
|
||||
# - Set placement volumes
|
||||
/dnageom/placementVolume turn geometries/1strand_50nm_turn.txt
|
||||
/dnageom/placementVolume turntwist geometries/1strand_50nm_turn.txt true
|
||||
/dnageom/placementVolume straight geometries/1strand_50nm_straight.txt
|
||||
|
||||
# Geometry: draw cell/chromosome volumes rather than DNA
|
||||
#/dnageom/drawCellVolumes false
|
||||
|
||||
# Geometry: deposited energy accumulation range limit to start recording SBs from direct effects
|
||||
/dnageom/interactionDirectRange 4.0 angstrom
|
||||
|
||||
# Geometry: distance from base pairs at which radicals are killed
|
||||
/dnageom/radicalKillDistance 4 nm
|
||||
|
||||
# Damage: model settings
|
||||
/dnadamage/directDamageLower 5 eV
|
||||
/dnadamage/directDamageUpper 37.5 eV
|
||||
|
||||
/dnadamage/indirectOHBaseChance 1.0
|
||||
/dnadamage/indirectOHStrandChance 0.405
|
||||
/dnadamage/inductionOHChance 0.00
|
||||
|
||||
/dnadamage/indirectHBaseChance 1.0
|
||||
/dnadamage/indirectHStrandChance 0.0
|
||||
/dnadamage/inductionHChance 0.00
|
||||
|
||||
/dnadamage/indirectEaqBaseChance 1.0
|
||||
/dnadamage/indirectEaqStrandChance 0.0
|
||||
/dnadamage/inductionEaqChance 0.00
|
||||
|
||||
# Analysis: add cylindrical chromosomal region of interest, with the name "phage"
|
||||
/chromosome/add phage cyl 3500 7000 0 0 0 nm 0 0 0
|
||||
|
||||
# Run: initialization
|
||||
/run/initialize
|
||||
|
||||
# Run: progress display
|
||||
/run/printProgress 10
|
||||
|
||||
# Source geometry
|
||||
/gps/pos/type Plane
|
||||
/gps/pos/shape Circle
|
||||
/gps/pos/centre 0 7000 0 nm
|
||||
/gps/pos/rot1 0 0 1
|
||||
/gps/pos/rot2 1 0 0
|
||||
/gps/pos/radius 3500 nm
|
||||
|
||||
# Source particle, energy and angular distribution
|
||||
/gps/particle proton
|
||||
/gps/energy 2.5 MeV
|
||||
/gps/direction 0 -1 0
|
||||
|
||||
# Beam on
|
||||
/run/beamOn 10000
|
||||
@@ -1,12 +1,11 @@
|
||||
//*********************************************************************************
|
||||
//-------------------------------------------------------------------------------
|
||||
// Modified by Sara Zein to calculate the damage probability per plasmid
|
||||
//_________________________________________________________________________________
|
||||
//*********************************************************************************
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
//
|
||||
// This macro requires the molecular-dna.root file generated from molecularDNA example
|
||||
// To run this file just insert this command to the terminal:
|
||||
// root .X plasmid.C
|
||||
|
||||
//
|
||||
//***************************************//
|
||||
// Please define the parameters below //
|
||||
// ifile, r3, Nbp (as shown in terminal) //
|
||||
@@ -191,6 +190,11 @@
|
||||
TTree* tree = (TTree*)f->Get("tuples/primary_source");
|
||||
Float_t number = (Float_t)tree->GetEntries();
|
||||
|
||||
if (number<2) {
|
||||
std::cout << "Not enough entries in the \"primary_source\" TTree (" << (long)number << " entries)\n";
|
||||
gApplication->Terminate(0);
|
||||
}
|
||||
|
||||
vector<pair<int, int64_t>> DSBBPID;
|
||||
|
||||
// For reading species production
|
||||
@@ -266,20 +270,30 @@
|
||||
h4damage->SetBinContent(i, X * 100 / totalDs);
|
||||
}
|
||||
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for (int ie = 0; ie < DSBBPID.size() - 1; ie++) {
|
||||
int64_t dsbfragment = DSBBPID[ie + 1].second - DSBBPID[ie].second;
|
||||
// Find the number of fragments that have been produced, but first test if there are enough breaks.
|
||||
// If no more than 2 DSBs exist in the DSBBPID vector ( DSBBPID.size() is 0 or 1 ),
|
||||
// the subtraction DSBBPID.size() - 1 makes the loop condition evaluate to ie < -1 (in unsigned terms,
|
||||
// this becomes a large number, which is incorrect) and leads to undefined behavior (crash).
|
||||
if (DSBBPID.size() < 2) {
|
||||
std::cerr << "Not enough damage to calculate fragments." << std::endl;
|
||||
//return;
|
||||
}
|
||||
if (DSBBPID.size() >= 2) {
|
||||
// Sort DSBs from the one with lower ID value to the one with higher ID value
|
||||
// Then find the number of fragments that have been produced
|
||||
sort(DSBBPID.begin(), DSBBPID.end(), smallerPair);
|
||||
for(int ie = 0; ie < DSBBPID.size() - 1; ie++){
|
||||
int64_t dsbfragment = DSBBPID[ie + 1].second - DSBBPID[ie].second;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the standard deviation of species
|
||||
SD_EB = sqrt(((total_EB2 / number) - pow(total_EB / number, 2)) / (number - 1));
|
||||
SD_ES = sqrt(((total_ES2 / number) - pow(total_ES / number, 2)) / (number - 1));
|
||||
SD_OHB = sqrt(((total_OHB2 / number) - pow(total_OHB / number, 2)) / (number - 1));
|
||||
SD_OHS = sqrt(((total_OHS2 / number) - pow(total_OHS / number, 2)) / (number - 1));
|
||||
SD_HB = sqrt(((total_HB2 / number) - pow(total_HB / number, 2)) / (number - 1));
|
||||
SD_HS = sqrt(((total_HS2 / number) - pow(total_HS / number, 2)) / (number - 1));
|
||||
// Calculate the SEM
|
||||
SD_EB = sqrt(abs(((total_EB2 / number) - pow(total_EB / number, 2))) / (number - 1));
|
||||
SD_ES = sqrt(abs(((total_ES2 / number) - pow(total_ES / number, 2))) / (number - 1));
|
||||
SD_OHB = sqrt(abs(((total_OHB2 / number) - pow(total_OHB / number, 2))) / (number - 1));
|
||||
SD_OHS = sqrt(abs(((total_OHS2 / number) - pow(total_OHS / number, 2))) / (number - 1));
|
||||
SD_HB = sqrt(abs(((total_HB2 / number) - pow(total_HB / number, 2))) / (number - 1));
|
||||
SD_HS = sqrt(abs(((total_HS2 / number) - pow(total_HS / number, 2))) / (number - 1));
|
||||
|
||||
// Read damage classification SSB, SSB+, 2SSB, DSB, DSB+, DSB++
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -314,14 +328,14 @@
|
||||
total_DSB2 += pow(DSB, 2);
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_SSB = sqrt(((total_SSB2 / number) - pow(total_SSB / number, 2)) / (number - 1));
|
||||
SD_SSBp = sqrt(((total_SSBp2 / number) - pow(total_SSBp / number, 2)) / (number - 1));
|
||||
SD_SSB2p = sqrt(((total_SSB2p2 / number) - pow(total_SSB2p / number, 2)) / (number - 1));
|
||||
// Calculate the SEM
|
||||
SD_SSB = sqrt(abs(((total_SSB2 / number) - pow(total_SSB / number, 2))) / (number - 1));
|
||||
SD_SSBp = sqrt(abs(((total_SSBp2 / number) - pow(total_SSBp / number, 2))) / (number - 1));
|
||||
SD_SSB2p = sqrt(abs(((total_SSB2p2 / number) - pow(total_SSB2p / number, 2))) / (number - 1));
|
||||
|
||||
SD_DSB = sqrt(((total_DSB2 / number) - pow(total_DSB / number, 2)) / (number - 1));
|
||||
SD_DSBp = sqrt(((total_DSBp2 / number) - pow(total_DSBp / number, 2)) / (number - 1));
|
||||
SD_DSBpp = sqrt(((total_DSBpp2 / number) - pow(total_DSBpp / number, 2)) / (number - 1));
|
||||
SD_DSB = sqrt(abs(((total_DSB2 / number) - pow(total_DSB / number, 2))) / (number - 1));
|
||||
SD_DSBp = sqrt(abs(((total_DSBp2 / number) - pow(total_DSBp / number, 2))) / (number - 1));
|
||||
SD_DSBpp = sqrt(abs(((total_DSBpp2 / number) - pow(total_DSBpp / number, 2))) / (number - 1));
|
||||
|
||||
// Read damage classification SSBd, SSBi, SSBm, DSBd, DSBi, DSBm, DSBh
|
||||
// As they have been defined in: Nikjoo, H., O’Neill, O., Goodhead, T., & Terrissol, M. 1997,
|
||||
@@ -379,17 +393,17 @@
|
||||
h1damage->SetBinContent(i, Y * 100 / totalDs);
|
||||
}
|
||||
|
||||
// Calculate the standard deviation
|
||||
SD_sSSB = sqrt(((total_sSSB2 / number) - pow(total_sSSB / number, 2)) / (number - 1));
|
||||
SD_SSBd = sqrt(((total_SSBd2 / number) - pow(total_SSBd / number, 2)) / (number - 1));
|
||||
SD_SSBi = sqrt(((total_SSBi2 / number) - pow(total_SSBi / number, 2)) / (number - 1));
|
||||
SD_SSBm = sqrt(((total_SSBm2 / number) - pow(total_SSBm / number, 2)) / (number - 1));
|
||||
// Calculate the SEM
|
||||
SD_sSSB = sqrt(abs(((total_sSSB2 / number) - pow(total_sSSB / number, 2))) / (number - 1));
|
||||
SD_SSBd = sqrt(abs(((total_SSBd2 / number) - pow(total_SSBd / number, 2))) / (number - 1));
|
||||
SD_SSBi = sqrt(abs(((total_SSBi2 / number) - pow(total_SSBi / number, 2))) / (number - 1));
|
||||
SD_SSBm = sqrt(abs(((total_SSBm2 / number) - pow(total_SSBm / number, 2))) / (number - 1));
|
||||
|
||||
SD_sDSB = sqrt(((total_sDSB2 / number) - pow(total_sDSB / number, 2)) / (number - 1));
|
||||
SD_DSBd = sqrt(((total_DSBd2 / number) - pow(total_DSBd / number, 2)) / (number - 1));
|
||||
SD_DSBi = sqrt(((total_DSBi2 / number) - pow(total_DSBi / number, 2)) / (number - 1));
|
||||
SD_DSBm = sqrt(((total_DSBm2 / number) - pow(total_DSBm / number, 2)) / (number - 1));
|
||||
SD_DSBh = sqrt(((total_DSBh2 / number) - pow(total_DSBh / number, 2)) / (number - 1));
|
||||
SD_sDSB = sqrt(abs(((total_sDSB2 / number) - pow(total_sDSB / number, 2))) / (number - 1));
|
||||
SD_DSBd = sqrt(abs(((total_DSBd2 / number) - pow(total_DSBd / number, 2))) / (number - 1));
|
||||
SD_DSBi = sqrt(abs(((total_DSBi2 / number) - pow(total_DSBi / number, 2))) / (number - 1));
|
||||
SD_DSBm = sqrt(abs(((total_DSBm2 / number) - pow(total_DSBm / number, 2))) / (number - 1));
|
||||
SD_DSBh = sqrt(abs(((total_DSBh2 / number) - pow(total_DSBh / number, 2))) / (number - 1));
|
||||
|
||||
// Measure the Deposited Energy in the whole volume that includes DNA chain
|
||||
|
||||
@@ -415,7 +429,7 @@
|
||||
dose = acc_edep * eVtoJ / mass;
|
||||
|
||||
double norm = 1;
|
||||
// Calculate the yields, together with their standard deviation
|
||||
// Calculate the yields, together with their error
|
||||
EB_yield = (Double_t)total_EB / dose / Nbp;
|
||||
ES_yield = (Double_t)total_ES / dose / Nbp;
|
||||
OHB_yield = (Double_t)total_OHB / dose / Nbp;
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
/dnageom/radicalKillDistance 9 nm
|
||||
|
||||
# Geometry: deposited energy accumulation range limit to start recording SBs from direct effects
|
||||
/dnageom/interactionDirectRange 7 angstrom
|
||||
/dnageom/interactionDirectRange 5.5 angstrom
|
||||
|
||||
# Geometry: activate Histone scavenging function
|
||||
/dnageom/activateHistoneScavenging true
|
||||
|
||||
@@ -47,11 +47,10 @@
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
DetectorConstruction::DetectorConstruction()
|
||||
DetectorConstruction::DetectorConstruction(G4int vis)
|
||||
: fpDNAGeometry(new DNAGeometry()), fpDetectorMessenger(new DetectorMessenger(this))
|
||||
{
|
||||
G4bool useParallelPhysicsWorld = false;
|
||||
if (useParallelPhysicsWorld) {
|
||||
if (vis == 1) {
|
||||
RegisterParallelWorld(fpDNAGeometry->GetDNAWorld());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,15 +184,11 @@ G4bool IRTDamageReactionModel::DoReaction(const G4Track& track, const G4double&
|
||||
const DNANode& vp)
|
||||
{
|
||||
fReactionTime = reactionTime;
|
||||
|
||||
if (fReactionTime == G4Scheduler::Instance()->GetLimitingTimeStep()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
fpTrack = &track;
|
||||
fpDNAPhyVolume = std::get<const G4VPhysicalVolume*>(vp);
|
||||
MakeReaction(track);
|
||||
RecordDNADamage();
|
||||
G4Scheduler::Instance()->SetInteractionStep(true);// reset reaction list to avoid crash.
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -304,11 +300,6 @@ G4double IRTDamageReactionModel::CalculateReactionTime(const G4Track& track, DNA
|
||||
vp = physicalVolume;
|
||||
}
|
||||
}
|
||||
if (fminTimeStep > G4Scheduler::Instance()->GetLimitingTimeStep()
|
||||
&& fminTimeStep < G4Scheduler::Instance()->GetEndTime())
|
||||
{
|
||||
fminTimeStep = G4Scheduler::Instance()->GetLimitingTimeStep();
|
||||
}
|
||||
return fminTimeStep;
|
||||
}
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
PhysicsList::PhysicsList(G4int phylist)
|
||||
PhysicsList::PhysicsList(G4int phylist, G4int vis)
|
||||
{
|
||||
SetDefaultCutValue(1.0 * micrometer);
|
||||
SetVerboseLevel(1);
|
||||
@@ -70,8 +70,7 @@ PhysicsList::PhysicsList(G4int phylist)
|
||||
RegisterPhysics(new G4DecayPhysics());
|
||||
RegisterPhysics(new G4RadioactiveDecayPhysics());
|
||||
|
||||
G4bool useParallelPhysicsWorld = false;
|
||||
if (useParallelPhysicsWorld) {
|
||||
if (vis == 1) {
|
||||
RegisterPhysics(new ParallelWorldPhysics("DNAWorld", true));
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#include "G4ITTrackingManager.hh"
|
||||
#include "G4Molecule.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4Scheduler.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
TimeStepAction::TimeStepAction(EventAction* event)
|
||||
@@ -46,7 +47,7 @@ TimeStepAction::TimeStepAction(EventAction* event)
|
||||
fRadicalKillDistance(4.5 * nm),
|
||||
fpChemistryTrackHolder(G4ITTrackHolder::Instance())
|
||||
{
|
||||
AddTimeStep(1 * picosecond, 0.5 * nanosecond);
|
||||
//AddTimeStep(1 * picosecond, 0.5 * nanosecond);
|
||||
// ctor
|
||||
}
|
||||
|
||||
@@ -143,6 +144,7 @@ void TimeStepAction::RadicalKillDistance()
|
||||
++it_begin;
|
||||
if (trackToKill != nullptr) {
|
||||
fpChemistryTrackHolder->PushToKill(trackToKill);
|
||||
G4Scheduler::Instance()->SetInteractionStep(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -261,7 +261,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -776,14 +776,14 @@ N=17 V[N]={87900885656017340, 2136126672992718976, 110623987125446578, 176001763
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 1000000
|
||||
User=35.620000s Real=41.058177s Sys=0.790000s
|
||||
User=38.600000s Real=39.588091s Sys=0.920000s
|
||||
|
||||
### End of Run (1000000 events)
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x203aa70
|
||||
UserPhysicsList deleted 0x2076978
|
||||
UserActionInitialization deleted 0x2204d00
|
||||
UserDetectorConstruction deleted 0xbab540
|
||||
UserPhysicsList deleted 0xbe7028
|
||||
UserActionInitialization deleted 0xd75da0
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -28,23 +28,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -235,7 +236,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -791,7 +792,7 @@ Index : 8 used in the geometry : Yes
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 200000
|
||||
User=260.020000s Real=264.325032s Sys=1.280000s
|
||||
User=276.420000s Real=283.470358s Sys=1.470000s
|
||||
|
||||
--------------------End of Global Run-----------------------
|
||||
The run was 200000 events /score/dumpQuantityToFile boxMesh_1 dose dose_longitudinal.out
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -102,7 +102,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -530,14 +530,14 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 1000
|
||||
User=1.820000s Real=1.822001s Sys=0.000000s
|
||||
User=1.900000s Real=1.901189s Sys=0.000000s
|
||||
--- Run 0 (master) end. Total number of events: 1000.
|
||||
User=1.820000s Real=1.822188s Sys=0.000000s
|
||||
User=1.900000s Real=1.901351s Sys=0.000000s
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x11caa70
|
||||
UserPhysicsList deleted 0x142a020
|
||||
UserActionInitialization deleted 0x1434790
|
||||
UserDetectorConstruction deleted 0x16e4bf0
|
||||
UserPhysicsList deleted 0x19446d0
|
||||
UserActionInitialization deleted 0x194ee40
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
|
||||
@@ -88,7 +88,7 @@ When the analysis is enables, the default output format is one compatible with R
|
||||
The user can switch to a plaintext csv by uncommenting the corresponding macro command in output.mac (/analysis/useRoot false)
|
||||
|
||||
Two data analysis scripts are provided for use with each output format:
|
||||
- for ROOT output (exp_microdosimetry.root), plot.C is provided. If the user intends to use this macro, ROOT must be installed (http://root.cern.ch/drupal/)
|
||||
- for ROOT output (exp_microdosimetry.root), plot.C is provided. If the user intends to use this macro, ROOT must be installed (http://root.cern/drupal/)
|
||||
- for csv output (exp_microdosimetry_*.csv), 1_plot_distributions.py and 2_calculate_means_rbe.py (in this order). If the user intends to use these macros, Python 3 must be installed (https://www.python.org/)
|
||||
Both scripts plot the microdosimetric spectrum resulting from the simulation, calculate the microdosimetric means, and provide one or more RBE estimates (this is just provided as an example, and the user is encouraged to look into RBE modelling himself)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -28,23 +28,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -131,7 +132,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -783,7 +784,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
Cr_sctns: NeutronHPInelasticXS: 0 eV ---> 20 MeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
|
||||
Process: nCapture
|
||||
Model: NeutronHPCapture: 0 eV ---> 20 MeV
|
||||
Model: nRadCaptureHP: 0 eV ---> 20 MeV
|
||||
Model: nRadCapture: 19.9 MeV ---> 100 TeV
|
||||
Cr_sctns: NeutronHPCaptureXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
|
||||
@@ -845,6 +846,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -861,6 +863,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -32,23 +32,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -146,7 +147,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -795,6 +796,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -811,6 +813,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
@@ -13756,7 +13759,7 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 10
|
||||
User=0.830000s Real=0.852458s Sys=0.020000s
|
||||
User=0.830000s Real=0.854904s Sys=0.030000s
|
||||
|
||||
--------------------End of Global Run-----------------------
|
||||
The run consists of 10 proton of 50 MeV
|
||||
@@ -13770,9 +13773,9 @@ Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x11a82b0
|
||||
UserPhysicsList deleted 0x11a4600
|
||||
UserActionInitialization deleted 0x1365f80
|
||||
UserDetectorConstruction deleted 0x2551950
|
||||
UserPhysicsList deleted 0x254dca0
|
||||
UserActionInitialization deleted 0x2710020
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -220,18 +220,18 @@ Index : 3 used in the geometry : Yes
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 100000
|
||||
User=68.930000s Real=69.415305s Sys=0.020000s
|
||||
User=74.290000s Real=74.365780s Sys=0.020000s
|
||||
/control/doifBatch /score/dumpAllQuantitiesToFile Probes Probes.csv
|
||||
/score/dumpAllQuantitiesToFile Probes Probes.csv
|
||||
# Mesh or volume name: Probes -- # Primitive scorer name: dose
|
||||
bin 0,0,0 : statistical error 31.41(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 9.86587 times.
|
||||
bin 0,0,0 : statistical error 34.2995(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 11.7645 times.
|
||||
# Mesh or volume name: Probes -- # Primitive scorer name: protonFlux
|
||||
bin 0,0,0 : statistical error 29.0257(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 8.42494 times.
|
||||
bin 0,0,0 : statistical error 29.2441(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 8.55216 times.
|
||||
# Mesh or volume name: Probes -- # Primitive scorer name: volFlx
|
||||
bin 0,0,0 : statistical error 22.7812(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 5.18981 times.
|
||||
bin 0,0,0 : statistical error 24.5375(%)
|
||||
to reduce the statistical error below 10%, increase number of events approximately 6.0209 times.
|
||||
================== Deleting memory pools ===================
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 2.1 MB
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -32,23 +32,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -168,7 +169,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -702,12 +703,12 @@ Run 0 starts ...
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 500
|
||||
User=2.780000s Real=2.827839s Sys=0.040000s
|
||||
User=2.920000s Real=2.963446s Sys=0.030000s
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
The simulation took: 4.1506 s to run (real time)
|
||||
The simulation took: 4.26731 s to run (real time)
|
||||
Dose is being written to Dose.out
|
||||
i j k Dose(Gy)================== Deleting memory pools ===================
|
||||
Number of memory pools allocated: 12 of which, static: 0
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.4 MB
|
||||
Dynamic pools deleted: 12 / Total memory freed: 0.42 MB
|
||||
============================================================
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -28,23 +28,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -120,10 +121,10 @@ sensitivity : 0
|
||||
Construct Skull with mother volume physicalHead
|
||||
Checking overlaps for volume physicalSkull:0 (G4SubtractionSolid) ... OK!
|
||||
Skull created !!!!!!
|
||||
Volume of Skull = 846.921 cm^3
|
||||
Volume of Skull = 847.724 cm^3
|
||||
Material of Skull = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of Skull = 1258.69 g
|
||||
Mass of Skull = 1259.89 g
|
||||
Construct Brain with mother physicalHead
|
||||
Checking overlaps for volume physicalBrain:0 (G4Ellipsoid) ... OK!
|
||||
Volume of Brain = 1470.27 cm^3
|
||||
@@ -198,28 +199,28 @@ sensitivity : 0
|
||||
Construct UpperSpine with mother volume physicalHead
|
||||
Checking overlaps for volume physicalUpperSpine:0 (G4SubtractionSolid) ... OK!
|
||||
UpperSpine created !!!!!!
|
||||
Volume of UpperSpine = 126.45 cm^3
|
||||
Volume of UpperSpine = 126.465 cm^3
|
||||
Material of UpperSpine = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of UpperSpine = 187.93 g
|
||||
Mass of UpperSpine = 187.952 g
|
||||
MotherVolume: physicalTrunk
|
||||
sensitivity : 0
|
||||
Construct LeftScapula with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalLeftScapula:0 (G4SubtractionSolid) ... OK!
|
||||
LeftScapula created !!!!!!
|
||||
Volume of LeftScapula = 91.848 cm^3
|
||||
Volume of LeftScapula = 104.415 cm^3
|
||||
Material of LeftScapula = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of LeftScapula = 136.505 g
|
||||
Mass of LeftScapula = 155.181 g
|
||||
MotherVolume: physicalTrunk
|
||||
sensitivity : 0
|
||||
Construct RightScapula with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalRightScapula:0 (G4SubtractionSolid) ... OK!
|
||||
RightScapula created !!!!!!
|
||||
Volume of RightScapula = 106.747 cm^3
|
||||
Volume of RightScapula = 106.924 cm^3
|
||||
Material of RightScapula = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of RightScapula = 158.647 g
|
||||
Mass of RightScapula = 158.91 g
|
||||
Construct LeftAdrenal with mother physicalTrunk
|
||||
Checking overlaps for volume physicalLeftAdrenal:0 (G4Ellipsoid) ... OK!
|
||||
Left LeftAdrenal created !!!!!!
|
||||
@@ -262,10 +263,10 @@ Mass of RightClavicle = 20.3099 g
|
||||
Construct SmallIntestine with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalSmallIntestine:0 (G4SubtractionSolid) ... OK!
|
||||
SmallIntestine created !!!!!!
|
||||
Volume of SmallIntestine = 1020.2 cm^3
|
||||
Volume of SmallIntestine = 1019.24 cm^3
|
||||
Material of SmallIntestine = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of SmallIntestine = 1006.83 g
|
||||
Mass of SmallIntestine = 1005.89 g
|
||||
Construct RibCage with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalRibCage:0 (G4SubtractionSolid) ... OK!
|
||||
Checking overlaps for volume physicalRib:0 (G4SubtractionSolid) ... OK!
|
||||
@@ -281,10 +282,10 @@ Checking overlaps for volume physicalRib:0 (G4SubtractionSolid) ... OK!
|
||||
Checking overlaps for volume physicalRib:0 (G4SubtractionSolid) ... OK!
|
||||
Checking overlaps for volume physicalRib:0 (G4SubtractionSolid) ... OK!
|
||||
RibCage created !!!!!!
|
||||
Volume of RibCage = 692.88 cm^3
|
||||
Volume of RibCage = 697.036 cm^3
|
||||
Material of RibCage = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of RibCage = 1029.76 g
|
||||
Mass of RibCage = 1035.94 g
|
||||
MotherVolume: physicalTrunk
|
||||
sensitivity : 0
|
||||
Construct MiddleLowerSpine with mother volume physicalTrunk
|
||||
@@ -297,10 +298,10 @@ Mass of MiddleLowerSpine = 1120.57 g
|
||||
Construct Pelvis with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalPelvis:0 (G4SubtractionSolid) ... OK!
|
||||
Pelvis created !!!!!!
|
||||
Volume of Pelvis = 606.07 cm^3
|
||||
Volume of Pelvis = 610.442 cm^3
|
||||
Material of Pelvis = skeleton
|
||||
Density of Material = 1.4862 g/cm^3
|
||||
Mass of Pelvis = 900.741 g
|
||||
Mass of Pelvis = 907.239 g
|
||||
Construct Stomach with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalStomach:0 (G4Ellipsoid) ... OK!
|
||||
Stomach created !!!!!!
|
||||
@@ -332,40 +333,40 @@ Mass of Spleen = 173.625 g
|
||||
Construct Pancreas with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalPancreas:0 (G4SubtractionSolid) ... OK!
|
||||
Pancreas created !!!!!!
|
||||
Volume of Pancreas = 61.101 cm^3
|
||||
Volume of Pancreas = 61.0986 cm^3
|
||||
Material of Pancreas = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of Pancreas = 60.3006 g
|
||||
Mass of Pancreas = 60.2982 g
|
||||
Construct LeftKidney with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalLeftKidney:0 (G4SubtractionSolid) ... OK!
|
||||
Left LeftKidney created !!!!!!
|
||||
Volume of LeftKidney = 144.001 cm^3
|
||||
Volume of LeftKidney = 143.998 cm^3
|
||||
Material of LeftKidney = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of LeftKidney = 142.115 g
|
||||
Mass of LeftKidney = 142.112 g
|
||||
Construct RightKidney with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalRightKidney:0 (G4SubtractionSolid) ... OK!
|
||||
RightKidney created !!!!!!
|
||||
Volume of RightKidney = 143.986 cm^3
|
||||
Volume of RightKidney = 143.996 cm^3
|
||||
Material of RightKidney = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of RightKidney = 142.1 g
|
||||
Mass of RightKidney = 142.109 g
|
||||
Construct UrinaryBladder with mother volume physicalTrunk
|
||||
Checking overlaps for volume physicalUrinaryBladder:0 (G4SubtractionSolid) ... OK!
|
||||
UrinaryBladder created !!!!!!
|
||||
Volume of UrinaryBladder = 45.7615 cm^3
|
||||
Volume of UrinaryBladder = 45.8796 cm^3
|
||||
Material of UrinaryBladder = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of UrinaryBladder = 45.1621 g
|
||||
Mass of UrinaryBladder = 45.2785 g
|
||||
MotherVolume: physicalWorld
|
||||
sensitivity : 0
|
||||
Construct MaleGenitalia with mother volume physicalWorld
|
||||
Checking overlaps for volume physicalMaleGenitalia:0 (G4SubtractionSolid) ... OK!
|
||||
MaleGenitalia created !!!!!!
|
||||
Volume of MaleGenitalia = 229.106 cm^3
|
||||
Volume of MaleGenitalia = 228.823 cm^3
|
||||
Material of MaleGenitalia = soft_tissue
|
||||
Density of Material = 0.9869 g/cm^3
|
||||
Mass of MaleGenitalia = 226.105 g
|
||||
Mass of MaleGenitalia = 225.826 g
|
||||
MotherVolume: physicalWorld
|
||||
sensitivity : 0
|
||||
Construct LeftTeste with mother volume physicalMaleGenitalia
|
||||
@@ -437,7 +438,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -936,17 +937,18 @@ Index : 2 used in the geometry : Yes
|
||||
... create ntuple T column : edep ntupleId 1 - done
|
||||
Number of events = 100
|
||||
Energy Total in Run:logicalBrain, ID: 0, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalHead, ID: 1, Energy Deposition (MeV): 4.63096
|
||||
Analysis: organ 1 edep: 4.63096
|
||||
Energy Total in Run:logicalHead, ID: 1, Energy Deposition (MeV): 2.0354
|
||||
Analysis: organ 1 edep: 2.0354
|
||||
Energy Total in Run:logicalHeart, ID: 2, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftAdrenal, ID: 3, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftArmBone, ID: 4, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftBreast, ID: 5, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftClavicle, ID: 6, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftKidney, ID: 7, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftLeg, ID: 8, Energy Deposition (MeV): 14.3441
|
||||
Analysis: organ 8 edep: 14.3441
|
||||
Energy Total in Run:logicalLeftLegBone, ID: 9, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftLeg, ID: 8, Energy Deposition (MeV): 15.7197
|
||||
Analysis: organ 8 edep: 15.7197
|
||||
Energy Total in Run:logicalLeftLegBone, ID: 9, Energy Deposition (MeV): 0.084326
|
||||
Analysis: organ 9 edep: 0.084326
|
||||
Energy Total in Run:logicalLeftLung, ID: 10, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftOvary, ID: 11, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalLeftScapula, ID: 12, Energy Deposition (MeV): 0
|
||||
@@ -956,15 +958,15 @@ Energy Total in Run:logicalMaleGenitalia, ID: 15, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalMiddleLowerSpine, ID: 16, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalPancreas, ID: 17, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalPelvis, ID: 18, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRibCage, ID: 19, Energy Deposition (MeV): 0.659836
|
||||
Analysis: organ 19 edep: 0.659836
|
||||
Energy Total in Run:logicalRibCage, ID: 19, Energy Deposition (MeV): 0.379226
|
||||
Analysis: organ 19 edep: 0.379226
|
||||
Energy Total in Run:logicalRightAdrenal, ID: 20, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightArmBone, ID: 21, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightBreast, ID: 22, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightClavicle, ID: 23, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightKidney, ID: 24, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightLeg, ID: 25, Energy Deposition (MeV): 10.6217
|
||||
Analysis: organ 25 edep: 10.6217
|
||||
Energy Total in Run:logicalRightLeg, ID: 25, Energy Deposition (MeV): 8.60947
|
||||
Analysis: organ 25 edep: 8.60947
|
||||
Energy Total in Run:logicalRightLegBone, ID: 26, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightLung, ID: 27, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalRightOvary, ID: 28, Energy Deposition (MeV): 0
|
||||
@@ -976,13 +978,13 @@ Energy Total in Run:logicalSpleen, ID: 33, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalStomach, ID: 34, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalThymus, ID: 35, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalThyroid, ID: 36, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalTrunk, ID: 37, Energy Deposition (MeV): 23.6957
|
||||
Analysis: organ 37 edep: 23.6957
|
||||
Energy Total in Run:logicalTrunk, ID: 37, Energy Deposition (MeV): 25.3855
|
||||
Analysis: organ 37 edep: 25.3855
|
||||
Energy Total in Run:logicalUpperLargeIntestine, ID: 38, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalUpperSpine, ID: 39, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalUrinaryBladder, ID: 40, Energy Deposition (MeV): 0
|
||||
Energy Total in Run:logicalUterus, ID: 41, Energy Deposition (MeV): 0
|
||||
Total Energy deposit in the body is: 53.9523 MeV
|
||||
Total Energy deposit in the body is: 52.2136 MeV
|
||||
... write file : human_phantom.root - done
|
||||
... close file : human_phantom.root - done
|
||||
... clear files - done
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -27,23 +27,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -154,7 +155,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -603,7 +604,7 @@ Run 0 starts ...
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 2000
|
||||
User=4.790000s Real=7.156374s Sys=0.110000s
|
||||
User=5.130000s Real=5.247212s Sys=0.120000s
|
||||
/score/dumpQuantityToFile boxMesh_1 dose dose.out
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -35,23 +35,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
@@ -136,7 +137,7 @@ Lowest triplet kinetic energy 1 MeV
|
||||
Enable sampling of gamma linear polarisation 0
|
||||
5D gamma conversion model type 0
|
||||
5D gamma conversion model on isolated ion 0
|
||||
Use Ricardo-Gerardo pair production model 0
|
||||
Use RiGe 5D e+e- pair production model by muons 0
|
||||
Livermore data directory epics_2017
|
||||
=======================================================================
|
||||
====== Ionisation Parameters ========
|
||||
@@ -789,6 +790,7 @@ CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
|
||||
=======================================================================
|
||||
====== Geant4 Native Pre-compound Model Parameters ========
|
||||
=======================================================================
|
||||
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
|
||||
@@ -805,6 +807,7 @@ Use HETC submodel for pre-compound model 0
|
||||
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
|
||||
@@ -932,13 +935,13 @@ Start closing geometry.
|
||||
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
|
||||
Total memory consumed for geometry optimisation: 395 kByte
|
||||
Total CPU time elapsed for geometry optimisation: 0.11 seconds
|
||||
Total CPU time elapsed for geometry optimisation: 0.13 seconds
|
||||
|
||||
Voxelisation: top CPU users:
|
||||
Percent Total CPU System CPU Memory Volume
|
||||
------- ---------- ---------- -------- ----------
|
||||
54.55 0.06 0.00 152k EmModuleLogical
|
||||
45.45 0.05 0.00 238k HadModuleLogical
|
||||
53.85 0.07 0.00 152k EmModuleLogical
|
||||
46.15 0.06 0.00 238k HadModuleLogical
|
||||
0.00 0.00 0.00 4k Mother
|
||||
0.00 0.00 0.00 0k CryostatLogical
|
||||
0.00 0.00 0.00 0k LArgLogical
|
||||
@@ -949,8 +952,8 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
|
||||
Voxelisation: top memory users:
|
||||
Percent Memory Heads Nodes Pointers Total CPU Volume
|
||||
------- -------- ------ ------ -------- ---------- ----------
|
||||
60.17 238k 1385 2370 3792 0.05 HadModuleLogical
|
||||
38.50 152k 1129 1152 2426 0.06 EmModuleLogical
|
||||
60.17 238k 1385 2370 3792 0.06 HadModuleLogical
|
||||
38.50 152k 1129 1152 2426 0.07 EmModuleLogical
|
||||
0.93 3k 8 42 146 0.00 Mother
|
||||
0.12 0k 1 7 8 0.00 SolidWLogical
|
||||
0.12 0k 1 7 8 0.00 CuPlateLogical
|
||||
@@ -971,356 +974,356 @@ Read 2001 events from file data-tracks/tracks-20GeV.dat
|
||||
Number of F1 Tiles with Positive energy : 57
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
2.57907 7.33766 6.69549
|
||||
1.71242 3.02495 3.42835
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 177.551
|
||||
0 40.8575
|
||||
Visible Energy in Upstream Dead Materials
|
||||
2691.63
|
||||
1172.24
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 104
|
||||
N Tracks out of world 47
|
||||
N Secondaries 86
|
||||
EmEdep is=15075.4 MeV
|
||||
HadEdep is=0.703927 MeV
|
||||
Edep in FCAL1 FCAl2 : 15075.4 0.703927
|
||||
EmEdep is=18147.5 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 18147.5 0
|
||||
**** Primary : 2
|
||||
Vertex : (-3.76032,10.9751,32740)
|
||||
Number of F1 Tiles with Positive energy : 42
|
||||
Number of F1 Tiles with Positive energy : 59
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.8573 1.55694 1.61062
|
||||
1.94017 1.97877 1.65557
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 32.5707
|
||||
0 114.66
|
||||
Visible Energy in Upstream Dead Materials
|
||||
284.29
|
||||
1220.42
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 22
|
||||
N Secondaries 238
|
||||
EmEdep is=19110.7 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19110.7 0
|
||||
N Tracks out of world 54
|
||||
N Secondaries 176
|
||||
EmEdep is=17026.2 MeV
|
||||
HadEdep is=7.83971 MeV
|
||||
Edep in FCAL1 FCAl2 : 17026.2 7.83971
|
||||
**** Primary : 3
|
||||
Vertex : (13.1951,2.677,32740)
|
||||
Number of F1 Tiles with Positive energy : 44
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.44848 1.73766 1.74269
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0.119893
|
||||
Visible Energy in Upstream Dead Materials
|
||||
15.6324
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 10
|
||||
N Secondaries 306
|
||||
EmEdep is=19431.7 MeV
|
||||
HadEdep is=13.2519 MeV
|
||||
Edep in FCAL1 FCAl2 : 19431.7 13.2519
|
||||
**** Primary : 4
|
||||
Vertex : (-8.66148,-8.80731,32740)
|
||||
Number of F1 Tiles with Positive energy : 41
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
2.31389 1.56181 1.57264
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
2.59633
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 4
|
||||
N Secondaries 133
|
||||
EmEdep is=19799.4 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19799.4 0
|
||||
**** Primary : 5
|
||||
Vertex : (4.75859,7.01622,32740)
|
||||
Number of F1 Tiles with Positive energy : 45
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.65902 1.61061 2.35777
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
9.84591
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 2
|
||||
N Secondaries 180
|
||||
EmEdep is=19663.7 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19663.7 0
|
||||
**** Primary : 6
|
||||
Vertex : (1.94335,14.9228,32740)
|
||||
Number of F1 Tiles with Positive energy : 49
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.54924 1.55628 1.69596
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 66.1231
|
||||
Visible Energy in Upstream Dead Materials
|
||||
530.44
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 25
|
||||
N Secondaries 222
|
||||
EmEdep is=18988.3 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 18988.3 0
|
||||
**** Primary : 7
|
||||
Vertex : (-10.9878,-6.7949,32740)
|
||||
Number of F1 Tiles with Positive energy : 57
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.89929 1.53525 1.78492
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 94.4816
|
||||
Visible Energy in Upstream Dead Materials
|
||||
4633.9
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 125
|
||||
N Secondaries 178
|
||||
EmEdep is=13553.3 MeV
|
||||
HadEdep is=0.53408 MeV
|
||||
Edep in FCAL1 FCAl2 : 13553.3 0.53408
|
||||
**** Primary : 8
|
||||
Vertex : (10.9757,-1.49585,32740)
|
||||
Number of F1 Tiles with Positive energy : 46
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.73757 2.05683 1.91495
|
||||
2.28585 1.6463 1.89284
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
0 3.28206
|
||||
Visible Energy in Upstream Dead Materials
|
||||
11.4031
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0.129634 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 3
|
||||
N Secondaries 222
|
||||
EmEdep is=19696.8 MeV
|
||||
HadEdep is=0.28744 MeV
|
||||
Edep in FCAL1 FCAl2 : 19696.8 0.28744
|
||||
**** Primary : 9
|
||||
Vertex : (-27.7734,3.36444,32740)
|
||||
Number of F1 Tiles with Positive energy : 63
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.64165 1.63314 1.90006
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 78.158
|
||||
Visible Energy in Upstream Dead Materials
|
||||
3514.35
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 119
|
||||
N Secondaries 273
|
||||
EmEdep is=14512 MeV
|
||||
HadEdep is=0.0139527 MeV
|
||||
Edep in FCAL1 FCAl2 : 14512 0.0139527
|
||||
**** Primary : 10
|
||||
Vertex : (-22.5474,4.1006,32740)
|
||||
Number of F1 Tiles with Positive energy : 47
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.85332 1.59136 2.22846
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
1.86358
|
||||
3.81961
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 1
|
||||
N Secondaries 268
|
||||
EmEdep is=19870.7 MeV
|
||||
N Secondaries 190
|
||||
EmEdep is=19810.2 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19870.7 0
|
||||
|
||||
---> Begin of event: 11
|
||||
**** Primary : 11
|
||||
Vertex : (-6.31939,21.5056,32740)
|
||||
Number of F1 Tiles with Positive energy : 47
|
||||
Edep in FCAL1 FCAl2 : 19810.2 0
|
||||
**** Primary : 4
|
||||
Vertex : (-8.66148,-8.80731,32740)
|
||||
Number of F1 Tiles with Positive energy : 48
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
3.4047 1.59351 1.57649
|
||||
2.40198 2.15547 3.42258
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
0 147.616
|
||||
Visible Energy in Upstream Dead Materials
|
||||
11.0831
|
||||
1517.96
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 3
|
||||
N Secondaries 147
|
||||
EmEdep is=19724 MeV
|
||||
N Tracks out of world 90
|
||||
N Secondaries 81
|
||||
EmEdep is=17255.5 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19724 0
|
||||
**** Primary : 12
|
||||
Vertex : (17.1015,6.30557,32740)
|
||||
Number of F1 Tiles with Positive energy : 45
|
||||
Edep in FCAL1 FCAl2 : 17255.5 0
|
||||
**** Primary : 5
|
||||
Vertex : (4.75859,7.01622,32740)
|
||||
Number of F1 Tiles with Positive energy : 57
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
2.81625 1.76504 1.77859
|
||||
1.70248 1.69631 2.37992
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
10.2501
|
||||
138.73
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 54
|
||||
N Secondaries 169
|
||||
EmEdep is=18728.6 MeV
|
||||
HadEdep is=21.9452 MeV
|
||||
Edep in FCAL1 FCAl2 : 18728.6 21.9452
|
||||
**** Primary : 6
|
||||
Vertex : (1.94335,14.9228,32740)
|
||||
Number of F1 Tiles with Positive energy : 42
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.70774 2.16739 1.83596
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 25.5978
|
||||
Visible Energy in Upstream Dead Materials
|
||||
266.758
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0.00559612 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 16
|
||||
N Secondaries 217
|
||||
EmEdep is=19553.4 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19553.4 0
|
||||
**** Primary : 7
|
||||
Vertex : (-10.9878,-6.7949,32740)
|
||||
Number of F1 Tiles with Positive energy : 82
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.73317 2.5286 4.20759
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 137.889
|
||||
Visible Energy in Upstream Dead Materials
|
||||
10641.7
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 247
|
||||
N Secondaries 81
|
||||
EmEdep is=7116.57 MeV
|
||||
HadEdep is=0.198643 MeV
|
||||
Edep in FCAL1 FCAl2 : 7116.57 0.198643
|
||||
**** Primary : 8
|
||||
Vertex : (10.9757,-1.49585,32740)
|
||||
Number of F1 Tiles with Positive energy : 43
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
3.36536 4.39939 4.64825
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
13.0571
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 5
|
||||
N Secondaries 329
|
||||
EmEdep is=19733.4 MeV
|
||||
HadEdep is=10.1646 MeV
|
||||
Edep in FCAL1 FCAl2 : 19733.4 10.1646
|
||||
**** Primary : 9
|
||||
Vertex : (-27.7734,3.36444,32740)
|
||||
Number of F1 Tiles with Positive energy : 71
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.65848 2.38752 1.60677
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 136.633
|
||||
Visible Energy in Upstream Dead Materials
|
||||
5872.82
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 170
|
||||
N Secondaries 277
|
||||
EmEdep is=11835.1 MeV
|
||||
HadEdep is=0.150674 MeV
|
||||
Edep in FCAL1 FCAl2 : 11835.1 0.150674
|
||||
**** Primary : 10
|
||||
Vertex : (-22.5474,4.1006,32740)
|
||||
Number of F1 Tiles with Positive energy : 51
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
2.00786 1.66681 2.065
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
23.3451
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0.318116 0 0 0 0 0
|
||||
N Tracks out of world 5
|
||||
N Secondaries 161
|
||||
EmEdep is=19751.1 MeV
|
||||
HadEdep is=6.18244 MeV
|
||||
Edep in FCAL1 FCAl2 : 19751.1 6.18244
|
||||
|
||||
---> Begin of event: 11
|
||||
**** Primary : 11
|
||||
Vertex : (-6.31939,21.5056,32740)
|
||||
Number of F1 Tiles with Positive energy : 70
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.63399 1.86588 2.5733
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 76.0273
|
||||
Visible Energy in Upstream Dead Materials
|
||||
3029.53
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 116
|
||||
N Secondaries 166
|
||||
EmEdep is=14735.1 MeV
|
||||
HadEdep is=0.892604 MeV
|
||||
Edep in FCAL1 FCAl2 : 14735.1 0.892604
|
||||
**** Primary : 12
|
||||
Vertex : (17.1015,6.30557,32740)
|
||||
Number of F1 Tiles with Positive energy : 49
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.97063 4.62456 5.49351
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 13.7257
|
||||
Visible Energy in Upstream Dead Materials
|
||||
735.33
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0.0356716 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 28
|
||||
N Secondaries 175
|
||||
EmEdep is=18719.5 MeV
|
||||
HadEdep is=4.35726 MeV
|
||||
Edep in FCAL1 FCAl2 : 18719.5 4.35726
|
||||
**** Primary : 13
|
||||
Vertex : (-24.9484,11.8659,32740)
|
||||
Number of F1 Tiles with Positive energy : 24
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
2.01042 1.48438 1.89312
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 63.952
|
||||
Visible Energy in Upstream Dead Materials
|
||||
18102.7
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 168
|
||||
N Secondaries 166
|
||||
EmEdep is=894.898 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 894.898 0
|
||||
**** Primary : 14
|
||||
Vertex : (-0.133696,18.3151,32740)
|
||||
Number of F1 Tiles with Positive energy : 40
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.66628 1.56597 1.59652
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
5.13535
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0.0295447 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 5
|
||||
N Secondaries 155
|
||||
EmEdep is=19831 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19831 0
|
||||
**** Primary : 15
|
||||
Vertex : (17.3196,17.6617,32740)
|
||||
Number of F1 Tiles with Positive energy : 46
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.61689 1.54991 1.45078
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
15.0612
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 2
|
||||
N Secondaries 105
|
||||
EmEdep is=19802.3 MeV
|
||||
HadEdep is=2.07056 MeV
|
||||
Edep in FCAL1 FCAl2 : 19802.3 2.07056
|
||||
**** Primary : 13
|
||||
Vertex : (-24.9484,11.8659,32740)
|
||||
Number of F1 Tiles with Positive energy : 30
|
||||
N Secondaries 338
|
||||
EmEdep is=19915.5 MeV
|
||||
HadEdep is=1.57817 MeV
|
||||
Edep in FCAL1 FCAl2 : 19915.5 1.57817
|
||||
**** Primary : 16
|
||||
Vertex : (-20.8489,10.8988,32740)
|
||||
Number of F1 Tiles with Positive energy : 52
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
3.48366 1.68488 1.68961
|
||||
2.05147 1.63419 2.14497
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 104.454
|
||||
0 147.125
|
||||
Visible Energy in Upstream Dead Materials
|
||||
17906.7
|
||||
6049.69
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 257
|
||||
N Secondaries 202
|
||||
EmEdep is=990.173 MeV
|
||||
HadEdep is=2.52591 MeV
|
||||
Edep in FCAL1 FCAl2 : 990.173 2.52591
|
||||
**** Primary : 14
|
||||
Vertex : (-0.133696,18.3151,32740)
|
||||
Number of F1 Tiles with Positive energy : 44
|
||||
N Tracks out of world 192
|
||||
N Secondaries 171
|
||||
EmEdep is=12235.4 MeV
|
||||
HadEdep is=0.555008 MeV
|
||||
Edep in FCAL1 FCAl2 : 12235.4 0.555008
|
||||
**** Primary : 17
|
||||
Vertex : (-9.96316,-9.33478,32740)
|
||||
Number of F1 Tiles with Positive energy : 47
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.79406 3.41436 1.98361
|
||||
1.85844 2.56686 1.65162
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
0 3.65441
|
||||
Visible Energy in Upstream Dead Materials
|
||||
9.17599
|
||||
0.985284
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 3
|
||||
N Secondaries 238
|
||||
EmEdep is=19633.6 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19633.6 0
|
||||
**** Primary : 15
|
||||
Vertex : (17.3196,17.6617,32740)
|
||||
Number of F1 Tiles with Positive energy : 40
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.73439 1.69628 1.67912
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
4.35334
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 5
|
||||
N Secondaries 247
|
||||
EmEdep is=19836.2 MeV
|
||||
HadEdep is=0 MeV
|
||||
Edep in FCAL1 FCAl2 : 19836.2 0
|
||||
**** Primary : 16
|
||||
Vertex : (-20.8489,10.8988,32740)
|
||||
Number of F1 Tiles with Positive energy : 62
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.5838 1.83274 1.58777
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 211.385
|
||||
Visible Energy in Upstream Dead Materials
|
||||
9068.27
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 291
|
||||
N Secondaries 250
|
||||
EmEdep is=8706.49 MeV
|
||||
HadEdep is=6.93863 MeV
|
||||
Edep in FCAL1 FCAl2 : 8706.49 6.93863
|
||||
**** Primary : 17
|
||||
Vertex : (-9.96316,-9.33478,32740)
|
||||
Number of F1 Tiles with Positive energy : 43
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.78068 1.99306 1.57576
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 0
|
||||
Visible Energy in Upstream Dead Materials
|
||||
7.79939
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 5
|
||||
N Secondaries 307
|
||||
EmEdep is=19807.9 MeV
|
||||
HadEdep is=3.73092 MeV
|
||||
Edep in FCAL1 FCAl2 : 19807.9 3.73092
|
||||
N Secondaries 234
|
||||
EmEdep is=19859.2 MeV
|
||||
HadEdep is=2.02064 MeV
|
||||
Edep in FCAL1 FCAl2 : 19859.2 2.02064
|
||||
**** Primary : 18
|
||||
Vertex : (-9.96316,-9.33478,32740)
|
||||
Number of F1 Tiles with Positive energy : 53
|
||||
Number of F1 Tiles with Positive energy : 44
|
||||
Number of F2 tiles with Positive energy : 0
|
||||
Visisble Energy in S1 , S2 , S3 in (MeV)
|
||||
1.67632 1.61008 2.24746
|
||||
1.82491 2.1432 1.87469
|
||||
Visible Energy in Hole Counter (MeV)
|
||||
0 23.6075
|
||||
0 127.822
|
||||
Visible Energy in Upstream Dead Materials
|
||||
2644.33
|
||||
3749.68
|
||||
Visible Energy in Tail Catcher Scintillator
|
||||
0 0 0 0 0 0 0
|
||||
Visible Energy in Tail Catcher Absorber
|
||||
0 0 0 0 0 0
|
||||
N Tracks out of world 98
|
||||
N Secondaries 128
|
||||
EmEdep is=15685.5 MeV
|
||||
HadEdep is=0.881462 MeV
|
||||
Edep in FCAL1 FCAl2 : 15685.5 0.881462
|
||||
N Tracks out of world 112
|
||||
N Secondaries 201
|
||||
EmEdep is=14790.3 MeV
|
||||
HadEdep is=0.25415 MeV
|
||||
Edep in FCAL1 FCAl2 : 14790.3 0.25415
|
||||
Run terminated.
|
||||
Run Summary
|
||||
Number of events processed : 18
|
||||
User=3.670000s Real=3.796691s Sys=0.000000s
|
||||
User=3.580000s Real=3.583918s Sys=0.000000s
|
||||
Graphics systems deleted.
|
||||
Visualization Manager deleting...
|
||||
G4 kernel has come to Quit state.
|
||||
Deleting G4Run (id:0)
|
||||
UserDetectorConstruction deleted 0x1232440
|
||||
UserPhysicsList deleted 0x1233650
|
||||
UserActionInitialization deleted 0x13eed20
|
||||
UserDetectorConstruction deleted 0x2137af0
|
||||
UserPhysicsList deleted 0x2138d00
|
||||
UserActionInitialization deleted 0x22f4dd0
|
||||
UserWorkerInitialization deleted 0
|
||||
UserWorkerThreadInitialization deleted 0
|
||||
UserRunAction deleted.
|
||||
@@ -1330,17 +1333,17 @@ G4SDManager deleted.
|
||||
EventManager deleted.
|
||||
Units table cleared.
|
||||
TransportationManager deleted.
|
||||
Total navigation history collections cleaned: 45
|
||||
Total navigation history collections cleaned: 46
|
||||
G4RNGHelper object is deleted.
|
||||
================== Deleting memory pools ===================
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0625 MB
|
||||
Pool ID '20G4NavigationLevelRep', size : 0.0634 MB
|
||||
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
|
||||
Pool ID '17G4DynamicParticle', size : 0.0798 MB
|
||||
Pool ID '7G4Event', size : 0.000961 MB
|
||||
Pool ID '15G4PrimaryVertex', size : 0.000961 MB
|
||||
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
|
||||
Pool ID '15G4HCofThisEvent', size : 0.000961 MB
|
||||
Pool ID '7G4Track', size : 0.159 MB
|
||||
Pool ID '7G4Track', size : 0.16 MB
|
||||
Pool ID '18G4TouchableHistory', size : 0.00577 MB
|
||||
Pool ID '15G4CountedObjectIvE', size : 0.000961 MB
|
||||
Pool ID '10G4Fragment', size : 0.00192 MB
|
||||
|
||||
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
|
||||
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-11-03-patch-02 (25-April-2025)
|
||||
Geant4 version Name: geant4-11-03-ref-06 (30-June-2025)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -28,23 +28,24 @@ Registered graphics systems are:
|
||||
ASCIITree (ATree)
|
||||
DAWNFILE (DAWNFILE)
|
||||
G4HepRepFile (HepRepFile)
|
||||
RayTracer (RayTracer)
|
||||
RayTracer (RT)
|
||||
VRML2FILE (VRML2FILE)
|
||||
gMocrenFile (gMocrenFile)
|
||||
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
|
||||
OpenGLImmediateQt (OGLIQt, OGLI)
|
||||
OpenGLStoredQt (OGLSQt, OGL, OGLS)
|
||||
OpenGLStoredQt (OGLSQt, OGLS)
|
||||
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
|
||||
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
|
||||
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
|
||||
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
|
||||
RayTracerX (RayTracerX)
|
||||
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)
|
||||
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG, OGL)
|
||||
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
|
||||
You may choose a graphics system (driver) with a parameter of
|
||||
the command "/vis/open" or "/vis/sceneHandler/create",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user