Import Geant4 10.7.0 source tree
This commit is contained in:
@@ -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})
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user