Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -1,6 +1,9 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
cmake_minimum_required(VERSION 3.8...3.18)
if(${CMAKE_VERSION} VERSION_LESS 3.12)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
project(radioprotection)
#----------------------------------------------------------------------------
@@ -8,17 +11,17 @@ project(radioprotection)
# You can set WITH_GEANT4_VIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
#
include(${Geant4_USE_FILE})
# Setup of ROOT ANALYSIS : optional.
# Setup of ROOT ANALYSIS : optional.
option(WITH_ANALYSIS_USE "Build example with analysis objects" OFF)
if(WITH_ANALYSIS_USE)
add_definitions(-DANALYSIS_USE)
@@ -28,7 +31,7 @@ endif()
#----------------------------------------------------------------------------
# Locate sources and headers for this project
#
include_directories(${PROJECT_SOURCE_DIR}/include
include_directories(${PROJECT_SOURCE_DIR}/include
${Geant4_INCLUDE_DIR} )
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
@@ -45,7 +48,7 @@ target_link_libraries(radioprotection ${Geant4_LIBRARIES})
# relies on these scripts being in the current working directory.
#
set(radioprotection_SCRIPTS
vis.mac physics.mac primary.mac run.mac MergeFiles LoadPlotNtuple.C
vis.mac physics.mac primary.mac run.mac geometry.mac MergeFiles LoadPlotNtuple.C
)
foreach(_script ${radioprotection_SCRIPTS})
+43 -12
View File
@@ -7,6 +7,37 @@
Category History file
---------------------
17.11.2020 - S. Guatelli tag radioprotection-V10-06-02
Migration to G4RunManagerFactory
02.11.2020 - F. Romano and J. Magini tag radioprotection-V10-06-01
- radioprotection.cc :
added new parameter to DetectorConstruction constructor
added instance of DetectorManager
- DetectorConstruction.hh :
defined private methods to construct a specific type of detector ("Silicon", "Diamond", and "MicroDiamond")
added detectorType private string to store the name of the one in use
added a variable to the constructor
added declaration for DetectorMessenger class
- DetectorConstruction.cc :
modifed the constructor to store the detector type
rewrote Construct so that it calls the specific method of the selected detector type
moved the previous diamond detector geometry to ConstructDiamondDetector, and added new possible geometries (silicon and microdiamond) from scratch via the other two methods
- DetectorMessenger.hh :
created the file in order to switch detector type
- DetectorMessenger.cc :
created the file in order to switch detector type
- geometry.mac :
create the macro in order to select a specific detector at runtime (by default, all options are commented out)
- vis.mac :
added a line to execute geometry.mac before launching the GUI (at which point it wouldn't be possible to change the geometry anymore)
- run.mac:
added a line to execute geometry.mac
- CMakeLists.txt :
added geometry.mac to the list of files to be copied to the build directory
02.11.2020 - B.Morgan tag radioprotection-V10-06-00
Support same CMake version range as core Geant4
30.10.2019 - S. Guatelli tag radioprotection-V10-05-01
using namespace std removed
@@ -33,10 +64,10 @@
08.11.2013 - S. Guatelli. tag radioprotection-V09-06-03
MT mode + analysis working
20.09.2013 - S. Guatelli. tag radioprotection-V09-06-02
20.09.2013 - S. Guatelli. tag radioprotection-V09-06-02
REMSIM example dismissed as it is out of date.
Replaced with characterisation of novel diamond detector for
radiation protection, using microdosimetric approach.
Replaced with characterisation of novel diamond detector for
radiation protection, using microdosimetric approach.
04.02.2013 - G.Folger; tag radioprotection-V09-06-01
RemSimPhysicsList.cc: Update for renamed physics builders
@@ -64,7 +95,7 @@
G4Analysis component subtitutes AIDA/PI analysis
tag radioprotection-V09-04-01
21.09.2011 S. Guatelli. Update of the physics list,
21.09.2011 S. Guatelli. Update of the physics list,
tag radioprotection-V09-04-00
18.11.2010 J.Allison, tag radioprotection-V09-03-03
@@ -74,13 +105,13 @@
Fix AIDA file option
06.06.2010 J. Perl, tag radioprotection-V09-03-01
Remove unused variable in EventAction
Remove unused variable in EventAction
03.06.2010 J. Perl, tag radioprotection-V09-03-00
Update vis usage
Update vis usage
16.11.2009 S. Guatelli, tag radioprotection-V09-02-04
analysis output format is changed to xml
analysis output format is changed to xml
12.11.2009 S. Guatelli, tag radioprotection-V09-02-01
Physics List updated
@@ -102,12 +133,12 @@
31th May 2006 Susanna Guatelli(radioprotection-V08-00-01)
- Added histograms
- Added comments
- Added comments
15th March 2006 Susanna Guatelli(radioprotection-V08-00-00)
- Pion absorption at rest introduced in RemSimHadronicBinary.cc
- Added more histograms
- Primary particle generator can handle spectra
- Primary particle generator can handle spectra
7th December 2005 Susanna Guatelli (radioprotection-V07-01-04)
- Macros updated
@@ -123,7 +154,7 @@
- Ions introduced
23th November 2005 Susanna Guatelli (radioprotection-V07-01-01)
- Deleted warning due to standard C++ libraries concerning reading
- Deleted warning due to standard C++ libraries concerning reading
external files
- Added Eta and EtaPrime as particles
@@ -143,8 +174,8 @@ external files
11.2004 - Option to define the format of the output file hbook or xml
11.2004 - Add histograms
11.2004 - Add histograms
05.2004 - Design iteration with Decorator Design pattern
01.2004 - S.Guatelli
+25 -15
View File
@@ -1,4 +1,3 @@
=========================================================
Geant4 - Radioprotection example
=========================================================
@@ -7,33 +6,43 @@
---------------------
The radioprotection example is developed and mantained by Susanna Guatelli and Jeremy Davis,
Centre For Medical Radiation Physics (CMRP), University of Wollongong, NSW, Australia.
The radioprotection example is developed and mantained by Susanna Guatelli (Centre For Medical Radiation Physics (CMRP), University of Wollongong, NSW, Australia) and Francesco Romano (INFN - Sezione di Catania, Catania, Italy)
------------------------------------------------------------------------
Contact: susanna@uow.edu.au
jad028@uowmail.edu.au
francesco.romano@ct.infn.it
geant4-advanced-examples@cern.ch
------------------------------------------------------------------------
List of authors:
S. Guatelli and J. Davis.
List of external collaborators:
J. Magini and G. Parisi - University of Surrey, United Kingdom
J. Davis. - University of Wollongong, NSW, Australia
-----------------------------------------------------------------
----> Introduction.
Radioprotection example models a simplified diamond microdosimeter, developed by
Prof. Anatoly Rosenfeld and his team at the Centre For Medical Radiation Physics,
CMRP, University of Wollongong, NSW, Australia. The design of the device is documented in
J. Davis, et al., "Characterisation of a novel diamond-based microdosimeter prototype
Radioprotection example models different detectors for microdosimetry in space applications. The example lets the user
choose between the models of a simplified diamond (1), a micro-diamond (2) and a silicon microdosimeter (3):
1) A semplified diamond microdosimeter is based on the detector developed by Prof. Anatoly Rosenfeld and his team at the Centre For Medical Radiation Physics, CMRP, University of Wollongong, NSW, Australia. The design of the device is documented in J. Davis, et al., "Characterisation of a novel diamond-based microdosimeter prototype
for radioprotection applications in space environments",IEEE Transactions on Nuclear Science,
Vol. 59, pp. 3110-3116, 2012.
The diamond microdosimeter is set in a vacuum. An isotropic field of Galactic Cosmic Rays (GCR) protons
is incident on the device.
The energy deposition is calculated in one of the sensitive detectors.
2) The microdiamond detector is based on the detectors developed by the Research Group of The University of Rome "Tor Vergata". The design and performances of the detector are documented in C. Verona et al., "Spectroscopic properties and radiation damage investigation of a diamond based Schottky diode for ion-beam therapy microdosimetry", Journal of Applied Physics, vol. 118, 2015, and in C. Verona et al., "Toward the use of single crystal diamond based detector for ion-beam therapy microdosimetry", Radiation Measurements, vol. 110, 2018.
3) The silicon microdosimeter is based on the detector, developed by the Centre For Medical Radiation physics,
University of Wollongong, documented in D. Bolst et al “Validation of Geant4 for silicon microdosimetry
in heavy ion therapy”, 2020 Phys. Med. Biol. 65 045014.
All the microdosimeters are set in vacuum and it is possible to select among the avilable detectors
via a macro command (/geometrySetup/selectDetector "..."), which is included in the "geometry.mac" macro.
This macro is, in turn, called in both the vis.mac and run.mac macro files.
An isotropic field of Galactic Cosmic Rays (GCR) protons is incident on the device.
The energy deposition is calculated in the sensitive detectors.
In particular in this example it is shown how to:
- model a realistic isotropic field of GCRs by means of the General Particle Source
@@ -116,8 +125,9 @@ For any problem or question please contact Susanna Guatelli, susanna@uow.edu.au
------------------------------------------------------------------------------
-----> Future developments
1) The code will be refined.
2) A silicon microdosimeter will be modelled as well in the next future.
1) The code will be refined and analysis improved
2) scripts for micorodosimetric spectra analysis will be implemented
3) Different models of detectors will be also included
@@ -0,0 +1,6 @@
# Uncomment a line to select a specific detector type
# Leave both commented to use the default one
#/geometrySetup/selectDetector Diamond
#/geometrySetup/selectDetector MicroDiamond
#/geometrySetup/selectDetector Silicon
@@ -23,9 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
#ifndef ActionInitialization_h
#define ActionInitialization_h 1
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
@@ -23,9 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
// Modified by Jacopo Magini: j.magini@surrey.ac.uk
#ifndef DetectorConstruction_H
#define DetectorConstruction_H 1
@@ -40,7 +41,7 @@ class G4LogicalVolume;
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction(AnalysisManager* analysis);
DetectorConstruction(AnalysisManager* analysis, G4String detector);
~DetectorConstruction();
G4VPhysicalVolume* Construct();
@@ -48,6 +49,13 @@ public:
void ConstructSDandField();
private:
AnalysisManager* analysis;
AnalysisManager* analysis;
G4String detectorType;
// Methods called by Construct() depending on the chosen setup
G4VPhysicalVolume* ConstructDiamondDetector();
G4VPhysicalVolume* ConstructMicroDiamondDetector();
G4VPhysicalVolume* ConstructSiliconDetector();
};
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Adapted from Hadrontherapy example
// by Jacopo Magini: j.magini@surrey.ac.uk
#ifndef DetectorMessenger_h
#define DetectorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
#include "G4String.hh"
#include "AnalysisManager.hh"
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
class DetectorMessenger: public G4UImessenger
{
public:
DetectorMessenger(AnalysisManager* analysis);
~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
G4UIdirectory *changeTheGeometryDir; ///> UI directory for the geometry control
G4UIcmdWithAString *changeTheDetectorCmd; ///> Select the detector type
AnalysisManager* analysis;
};
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on the hadrontherapy advanced example
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on the hadrontherapy advanced example
@@ -23,9 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
#ifndef PrimaryGeneratorAction_hh
@@ -23,9 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: S. Guatelli and J. Davis, CMRP, UOW
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
//
#ifndef RunAction_h
#define RunAction_h 1
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on basic example B2
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on the basic example B02
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#ifndef SteppingAction_h
@@ -24,34 +24,36 @@
// ********************************************************************
//
// radioprotection.cc
// Authors: Susanna Guatelli and Jeremy Davis
// susanna@uow.edu.au, jad028@uow.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
#include "G4RunManager.hh"
#include "DetectorConstruction.hh"
#include "PhysicsList.hh"
#include "G4UImanager.hh"
#include "G4VisExecutive.hh"
#include "G4MTRunManager.hh"
#include "G4RunManagerFactory.hh"
#include "AnalysisManager.hh"
#include "ActionInitialization.hh"
#include "AnalysisManager.hh"
#include "G4UIExecutive.hh"
#include "DetectorMessenger.hh"
int main(int argc, char** argv)
{
#ifdef G4MULTITHREADED
G4MTRunManager* pRunManager = new G4MTRunManager;
pRunManager->SetNumberOfThreads(4); // Is equal to 2 by default
#else
G4RunManager* pRunManager = new G4RunManager;
#endif
auto* pRunManager = G4RunManagerFactory::CreateRunManager();
G4int nThreads = 4;
pRunManager->SetNumberOfThreads(nThreads);
AnalysisManager* analysis = new AnalysisManager();
DetectorConstruction* detector = new DetectorConstruction(analysis);
// Construct geometry
G4String defaultDetector = "Diamond";
DetectorConstruction* detector = new DetectorConstruction(analysis, defaultDetector);
pRunManager -> SetUserInitialization(detector);
@@ -64,6 +66,10 @@ int main(int argc, char** argv)
ActionInitialization* actions = new ActionInitialization(analysis);
pRunManager->SetUserInitialization(actions);
// Geometry messenger
DetectorMessenger* detMess = new DetectorMessenger(analysis);
G4VisManager* visManager = new G4VisExecutive();
visManager->Initialize();
@@ -92,6 +98,7 @@ int main(int argc, char** argv)
delete visManager;
delete analysis;
delete pRunManager;
delete detMess;
return 0;
}
@@ -1,10 +1,11 @@
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
############################################
!!! WARNING - FPE detection is activated !!!
############################################
**************************************************************
Geant4 version Name: geant4-10-06-ref-06 (26-June-2020)
Geant4 version Name: geant4-10-07-ref-00 (4-December-2020)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -26,10 +27,12 @@ Registered graphics systems are:
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateXm (OGLIXm, OGLI)
OpenGLStoredXm (OGLSXm, OGL, OGLS)
OpenGLImmediateX (OGLIX, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSXm_FALLBACK)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Registering model factories...
@@ -119,10 +122,11 @@ Rayl: for gamma SubType=11 BuildTable=1
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
eIoni: for e- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -145,7 +149,7 @@ ePairProd: for e- SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
@@ -154,10 +158,11 @@ CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
eIoni: for e+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -179,7 +184,7 @@ ePairProd: for e+ SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
annihil: for e+, integral:1 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -192,9 +197,9 @@ CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for proton SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -209,7 +214,7 @@ hBrems: for proton SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for proton SubType=4
@@ -217,7 +222,7 @@ hPairProd: for proton SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
@@ -230,9 +235,9 @@ nuclearStopping: for proton SubType=8 BuildTable=0
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
ionIoni: for GenericIon SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -261,9 +266,9 @@ Use Bearden atomic level energies 0
======================================================================
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
ionIoni: for alpha SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -279,9 +284,9 @@ nuclearStopping: for alpha SubType=8 BuildTable=0
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for anti_proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for anti_proton SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -296,7 +301,7 @@ hBrems: for anti_proton SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for anti_proton SubType=4
@@ -304,7 +309,7 @@ hPairProd: for anti_proton SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
@@ -313,9 +318,9 @@ CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for kaon+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -330,7 +335,7 @@ hBrems: for kaon+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for kaon+ SubType=4
@@ -338,7 +343,7 @@ hPairProd: for kaon+ SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
@@ -347,9 +352,9 @@ CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for kaon- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -364,7 +369,7 @@ hBrems: for kaon- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for kaon- SubType=4
@@ -372,7 +377,7 @@ hPairProd: for kaon- SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
Used Lambda table of kaon+
@@ -381,9 +386,9 @@ CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
muIoni: for mu+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -399,7 +404,7 @@ muBrems: for mu+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
muPairProd: for mu+ SubType=4
@@ -407,7 +412,7 @@ muPairProd: for mu+ SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
@@ -416,9 +421,9 @@ CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
muIoni: for mu- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -434,7 +439,7 @@ muBrems: for mu- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
muPairProd: for mu- SubType=4
@@ -442,7 +447,7 @@ muPairProd: for mu- SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
Used Lambda table of mu+
@@ -457,14 +462,27 @@ NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /
NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Elastic/CrossSection/6_nat_Carbon
=======================================================
====== ParticleHP Physics Parameters ========
=======================================================
UseOnlyPhotoEvaporation ? 0
SkipMissingIsotopes ? 0
NeglectDoppler ? 0
DoNotAdjustFinalState ? 0
ProduceFissionFragments ? 0
UseWendtFissionModel ? 0
UseNRESP71Model ? 0
=======================================================
@@@ G4ParticleHPInelastic instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Inelastic
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.6/Capture/CrossSection/6_nat_Carbon
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for pi+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -479,7 +497,7 @@ hBrems: for pi+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for pi+ SubType=4
@@ -487,7 +505,7 @@ hPairProd: for pi+ SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
@@ -496,9 +514,9 @@ CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llimit=1
hIoni: for pi- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
@@ -513,7 +531,7 @@ hBrems: for pi- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
===== Limit on energy threshold has been applied
hPairProd: for pi- SubType=4
@@ -521,7 +539,7 @@ hPairProd: for pi- SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Used Lambda table of pi+
@@ -575,9 +593,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 25 GeV/n
Model: FTFP: 12 GeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
@@ -589,9 +605,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 25 GeV/n
Model: FTFP: 12 GeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
@@ -603,11 +617,21 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 25 GeV/n
Model: FTFP: 12 GeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: anti_lambdaInelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 0 eV ---> 25 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for anti_neutron
@@ -617,9 +641,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 25 GeV
Model: QGSP: 12 GeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
@@ -631,9 +653,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 25 GeV
Model: QGSP: 12 GeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
@@ -645,9 +665,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 25 GeV/n
Model: FTFP: 12 GeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
---------------------------------------------------
@@ -696,10 +714,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 3 GeV ---> 25 GeV
Model: QGSP: 12 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -778,10 +795,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: sigma-Inelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 3 GeV ---> 25 GeV
Model: QGSP: 12 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -820,7 +836,6 @@ Store e- internal conversion data 1
Electron internal conversion ID 0
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
========= Table of registered couples ============================
@@ -866,5 +881,8 @@ G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 start.
Number of events = 1000
0 events have been kept for refreshing and/or reviewing.
"/vis/reviewKeptEvents" to review them one by one.
"/vis/enable", then "/vis/viewer/flush" or "/vis/viewer/rebuild" to see them accumulated.
Graphics systems deleted.
Visualization Manager deleting...
@@ -1,3 +1,4 @@
/control/execute geometry.mac
#control the physics
/control/execute physics.mac
#/tracking/verbose 1
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#include "ActionInitialization.hh"
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#include <stdlib.h>
@@ -23,9 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
// Modified by Jacopo Magini: j.magini@surrey.ac.uk
#include "DetectorConstruction.hh"
#include "globals.hh"
@@ -50,9 +51,13 @@
#include "G4GeometryManager.hh"
#include "G4SystemOfUnits.hh"
DetectorConstruction::DetectorConstruction(AnalysisManager* analysis_manager)
#include "G4NistManager.hh"
DetectorConstruction::DetectorConstruction(AnalysisManager* analysis_manager, G4String detector)
{
analysis = analysis_manager;
analysis = analysis_manager;
detectorType = detector;
}
DetectorConstruction::~DetectorConstruction(){
@@ -60,6 +65,24 @@ DetectorConstruction::~DetectorConstruction(){
}
G4VPhysicalVolume* DetectorConstruction::Construct()
{
if( detectorType == "Diamond" ) return ConstructDiamondDetector();
else if( detectorType == "MicroDiamond" ) return ConstructMicroDiamondDetector();
else if( detectorType == "Silicon" ) return ConstructSiliconDetector();
else
{
G4cout << "ERROR: " << detectorType << " is not an allowed detector type. ";
G4cout << "Did you change some code in radioprotection.cc and/or DetectorMessenger.cc ?" << G4endl;
return 0;
}
}
G4VPhysicalVolume* DetectorConstruction::ConstructDiamondDetector()
{
//Define each individual element
@@ -325,6 +348,321 @@ return physical_world;
}
G4VPhysicalVolume* DetectorConstruction::ConstructMicroDiamondDetector()
{
//Define each individual element
//Define Nitrogen
G4double A = 14.01 * g/mole;
G4double Z = 7;
G4Element* elN = new G4Element ("Nitrogen", "N", Z, A);
//Define Oxygen
A = 16.0 * g/mole;
Z = 8;
G4Element* elO = new G4Element ("Oxygen", "O", Z, A);
//Define Boron
A = 10.8 * g/mole;
Z = 5;
G4Element* elB = new G4Element ("Boron", "B", Z, A);
//Define Carbon
A = 12.01 * g/mole;
Z = 6;
G4Element* elC = new G4Element ("Carbon", "C", Z, A);
//Define Air
G4Material* Air = new G4Material("Air", 1.29*mg/cm3, 2);
Air -> AddElement(elN, 70*perCent);
Air -> AddElement(elO, 30*perCent);
//Define diamond
A = 12.01 * g/mole;
Z = 6;
G4Material* diamond = new G4Material("diamond", Z, A, 3.515*g/cm3);
//Define p-type diamond (boron doped diamond)
G4Material* p_diamond = new G4Material("p_diamond", 3.514*g/cm3, 2);
// Boron concentration used is 1e20 cm-3, considering the diamond density and a Boron atomic weight of 10.811u
p_diamond -> AddElement(elC, 99.94887*perCent);
p_diamond -> AddElement(elB, 0.05113*perCent);
//Define chromium contact
G4Material* chromium = G4NistManager::Instance()->FindOrBuildMaterial("G4_Cr");
//Define Vacuum
G4double vacuumDensity = 1.e-25 *g/cm3;
G4double pressure = 3.e-18*pascal;
G4double temperature = 2.73*kelvin;
G4Material* vacuum = new G4Material("Galactic", Z=1., A=1.01*g/mole,
vacuumDensity,kStateGas,temperature,pressure);
//Define volumes
// World volume has size 1cm
G4double worldx = 0.5 * m; //half length!!!!
G4double worldy = 0.5 * m;
G4double worldz = 0.5 * m;
// World volume, containing all geometry
G4Box* world = new G4Box("world_box", worldx, worldy, worldz);
G4LogicalVolume* logical_world = new G4LogicalVolume(world, vacuum, "world_log", 0,0,0);
//set the logical world volume invisible
logical_world -> SetVisAttributes(G4VisAttributes::GetInvisible());
G4VPhysicalVolume* physical_world = new G4PVPlacement(0,
G4ThreeVector(),
logical_world,
"world_phys",
0,
false,
0);
// sentive volume
G4double SVside = 100.*um /2.;
G4double SVthickness = 8.*um /2.;
G4double SVspacing = 200.*um; //edge-edge distance
G4Box* SV_box = new G4Box("SV_box", SVside, SVside, SVthickness);
G4LogicalVolume* logical_SV = new G4LogicalVolume(SV_box, diamond, "SV_log", 0,0,0);
G4VisAttributes SVcolour(G4Colour(0.5, 0.5, 0.5));
SVcolour.SetForceSolid(true);
logical_SV -> SetVisAttributes(SVcolour);
// chromium front-electrode
G4double feThickness = 50.*nm /2.; // front-electrode thickness
G4Box* fe_box = new G4Box("frontElec_box", SVside, SVside, feThickness);
G4LogicalVolume* logical_fe = new G4LogicalVolume(fe_box, chromium, "frontElec_log", 0,0,0);
G4VisAttributes fe_colour(G4Colour::Brown());
fe_colour.SetForceSolid(false);
logical_fe -> SetVisAttributes(fe_colour);
// p-type diamond
G4double pDthickness = 1.*um /2.; // p-type diamond back-electrode thickness
G4Box* pD_box = new G4Box("pDiam_box", SVside, SVside, pDthickness);
G4LogicalVolume* logical_pD = new G4LogicalVolume(pD_box, p_diamond, "pDiam_box", 0,0,0);
G4VisAttributes pDcolour(G4Colour::Blue());
pDcolour.SetForceSolid(false);
logical_pD -> SetVisAttributes(pDcolour);
// put them in place
G4ThreeVector SVposition = {0., 0., SVthickness}; //position of the first edge (left)
G4ThreeVector fePosition = {0., 0., 2.*SVthickness + feThickness};
G4ThreeVector pDposition = {0., 0., -pDthickness};
G4double SVposition_x[4] = { -3.*SVside -1.5*SVspacing, -SVside -0.5*SVspacing, +SVside +0.5*SVspacing, +3.*SVside +1.5*SVspacing };
std::ostringstream PVName;
for( int i=0; i<4; i++)
{
// sensitive volume
SVposition[0] = SVposition_x[i];
PVName << "SV_phys" << i;
new G4PVPlacement(0, SVposition, logical_SV, PVName.str(),
logical_world,
false, 0, true);
PVName.str(""); //reset the string
// chromium front-electrode
PVName << "frontElec_phys" << i;
fePosition[0] = SVposition[0];
new G4PVPlacement(0, fePosition, logical_fe, PVName.str(),
logical_world,
false, 0, true);
PVName.str("");
// p-type diamond back-electrode
PVName << "pD_phys" << i;
pDposition[0] = SVposition[0];
new G4PVPlacement(0, pDposition, logical_pD, PVName.str(),
logical_world,
false, 0, true);
PVName.str("");
}
// HPHT diamond substrate (only one big substrate for simplicity)
G4double subs_x = 2.*mm /2.;
G4double subs_y = 0.5*mm /2.;
G4double sub_z = 300.*micrometer /2.;
G4Box* sub_box = new G4Box("sub_box", subs_x, subs_y, sub_z);
G4LogicalVolume* logical_sub = new G4LogicalVolume(sub_box, diamond, "sub_log", 0,0,0);
G4ThreeVector subPosition = {0,0, -2.*pDthickness -sub_z};
new G4PVPlacement(0, subPosition, logical_sub, "sub_phys",
logical_world,
false, 0, true);
G4VisAttributes subColour(G4Colour(0.5, 0.5, 0.5));
subColour.SetForceSolid(false);
logical_sub -> SetVisAttributes(subColour);
return physical_world;
}
G4VPhysicalVolume* DetectorConstruction::ConstructSiliconDetector()
{
//load NIST database
G4NistManager* nist = G4NistManager::Instance();
nist->SetVerbose(1);
//Define each individual element
//Define Nitrogen
G4double A = 14.01 * g/mole;
G4double Z = 7;
G4Element* elN = new G4Element ("Nitrogen", "N", Z, A);
//Define Oxygen
A = 16.0 * g/mole;
Z = 8;
G4Element* elO = new G4Element ("Oxygen", "O", Z, A);
//Define Hydrogen
A = 1.01 * g/mole;
Z = 1;
G4Element* elH = new G4Element ("Hydrogen", "H", Z, A);
//Define Carbon
A = 12.01 * g/mole;
Z = 6;
G4Element* elC = new G4Element ("Carbon", "C", Z, A);
//Define Air
G4Material* Air = new G4Material("Air", 1.29*mg/cm3, 2);
Air -> AddElement(elN, 70*perCent);
Air -> AddElement(elO, 30*perCent);
//Define PMMA (C502H8)
// NIST reference
G4Material* PMMA = new G4Material("PMMA", 1.19*g/cm3, 3);
PMMA -> AddElement(elC, 5);
PMMA -> AddElement(elO, 2);
PMMA -> AddElement(elH, 8);
//define materials
G4Material* silicon = nist->FindOrBuildMaterial("G4_Si");
G4Material* SiO2 = nist->FindOrBuildMaterial("G4_SILICON_DIOXIDE");
//Define Vacuum
G4double vacuumDensity = 1.e-25 *g/cm3;
G4double pressure = 3.e-18*pascal;
G4double temperature = 2.73*kelvin;
G4Material* vacuum = new G4Material("Galactic", Z=1., A=1.01*g/mole,
vacuumDensity,kStateGas,temperature,pressure);
//Define volumes
// World volume has size 1cm
G4double worldx = 0.5 * m; //half length!!!!
G4double worldy = 0.5 * m;
G4double worldz = 0.5 * m;
// World volume, containing all geometry
G4Box* world = new G4Box("world_box", worldx, worldy, worldz);
G4LogicalVolume* logical_world = new G4LogicalVolume(world, vacuum, "world_log", 0,0,0);
//set the logical world volume invisible
logical_world -> SetVisAttributes(G4VisAttributes::GetInvisible());
G4VPhysicalVolume* physical_world = new G4PVPlacement(0,
G4ThreeVector(),
logical_world,
"world_phys",
0,
false,
0);
// I need to set the size of the SV now, because some other parameters depend on it
G4double SV_thick = 25.*um /2.;
// PMMA
G4double PMMA_x = 200.*um /2.;
G4double PMMA_y = 200.*um /2.;
G4double PMMA_z = SV_thick;
G4Box* PMMA_box = new G4Box("PMMA_box", PMMA_x, PMMA_y, PMMA_z);
G4LogicalVolume* logical_PMMA = new G4LogicalVolume(PMMA_box, PMMA, "PMMA_log", 0,0,0);
new G4PVPlacement(0, G4ThreeVector(), logical_PMMA, "PMMA_phys",
logical_world,
false, 0, true);
logical_PMMA -> SetVisAttributes(G4VisAttributes(G4Colour(0., 1., 0.)));
// sensitive volumes
G4double SV_radius = SV_thick *2; // full length
G4Tubs* SV_cyl = new G4Tubs("SV_cyl", 0., SV_radius, SV_thick, 0.*deg, 360.*deg);
//G4RotationMatrix* cylRot = new G4RotationMatrix;
//cylRot->rotateY(M_PI/2.*rad);
G4LogicalVolume* logical_SV = new G4LogicalVolume(SV_cyl, silicon, "SV_log", 0,0,0);
G4VisAttributes SVcolour(G4Colour(0.5, 0.5, 0.5));
SVcolour.SetForceSolid(true);
logical_SV -> SetVisAttributes(SVcolour);
G4ThreeVector SVposition; //if(volumeName != "SV_phys1")
G4double SVspacing = 10.*um; // distance between the edges of two SV
SVposition = { +SVspacing/2. +SV_radius, +SVspacing/2. +SV_radius, 0. };
new G4PVPlacement(0, SVposition, logical_SV, "SV_phys1",
logical_PMMA,
false, 0, true);
/*new G4PVPlacement(cylRot, SVposition, logical_SV, "SV_phys1",
logical_PMMA,
false, 0, true);*/
SVposition = { -SVspacing/2. -SV_radius, +SVspacing/2. +SV_radius, 0. };
new G4PVPlacement(0, SVposition, logical_SV, "SV_phys2",
logical_PMMA,
false, 0, true);
SVposition = { -SVspacing/2. -SV_radius, -SVspacing/2. -SV_radius, 0. };
new G4PVPlacement(0, SVposition, logical_SV, "SV_phys3",
logical_PMMA,
false, 0, true);
SVposition = { +SVspacing/2. +SV_radius, -SVspacing/2. -SV_radius, 0. };
new G4PVPlacement(0, SVposition, logical_SV, "SV_phys4",
logical_PMMA,
false, 0, true);
// Si02 layer
G4double oxyde_x = PMMA_x;
G4double oxyde_y = PMMA_y;
G4double oxyde_z = 1.*um /2.;
G4Box* oxyde_box = new G4Box("oxyde_box", oxyde_x, oxyde_y, oxyde_z);
G4LogicalVolume* logical_oxyde = new G4LogicalVolume(oxyde_box, SiO2, "oxyde_log", 0,0,0);
G4ThreeVector oxyde_position = G4ThreeVector( 0, 0, PMMA_z + oxyde_z );
new G4PVPlacement(0, oxyde_position, logical_oxyde, "oxyde_phys",
logical_world,
false, 0, true);
logical_oxyde -> SetVisAttributes(G4VisAttributes(G4Colour(0.6, 0.6, 0.6)));
return physical_world;
}
void DetectorConstruction::ConstructSDandField()
{
SensitiveDetector* SD = new SensitiveDetector("SD", "DetectorHitsCollection", analysis);
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Created by Jacopo Magini: j.magini@surrey.ac.uk
#include "DetectorMessenger.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "DetectorConstruction.hh"
#include "G4RunManager.hh"
DetectorMessenger::DetectorMessenger(AnalysisManager* analysis_manager)
{
changeTheGeometryDir = new G4UIdirectory("/geometrySetup/");
changeTheGeometryDir -> SetGuidance("Geometry setup");
changeTheDetectorCmd = new G4UIcmdWithAString("/geometrySetup/selectDetector",this);
changeTheDetectorCmd -> SetGuidance("Select the type of detector you wish to use");
changeTheDetectorCmd -> SetParameterName("Material",false);
changeTheDetectorCmd -> AvailableForStates(G4State_PreInit);
analysis = analysis_manager;
}
DetectorMessenger::~DetectorMessenger()
{
delete changeTheGeometryDir;
delete changeTheDetectorCmd;
}
void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newDetectorName)
{
if( command == changeTheDetectorCmd )
{
if( newDetectorName == "Diamond" || newDetectorName == "MicroDiamond" || newDetectorName == "Silicon" )
{
DetectorConstruction* newDetector = new DetectorConstruction(analysis, newDetectorName);
G4RunManager *runManager = G4RunManager::GetRunManager();
runManager -> SetUserInitialization(newDetector);
runManager -> GeometryHasBeenModified();
}
else
{
G4cout <<"Unknown detector type: " << newDetectorName << ". Geometry not changed." << G4endl;
}
}
}
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on the hadrontherapy advanced example
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on the hadrontherapy advanced example
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#include "PrimaryGeneratorAction.hh"
@@ -23,7 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: S. Guatelli and J. Davis, CMPR, UOW
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#include "RunAction.hh"
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// code based on the basic example B2
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
// Code based on basic example B02
//
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
// Authors: Susanna Guatelli and Francesco Romano
// susanna@uow.edu.au, francesco.romano@ct.infn.it
//
#include "G4ios.hh"
@@ -2,6 +2,7 @@
# THE SIMULATION IS EXECUTE IN INTERACTIVE MODE
#
#
/control/execute geometry.mac
/control/execute physics.mac
/run/initialize
/control/execute primary.mac