Import Geant4 11.0.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2021-06-25 16:12:29 +02:00
parent c968e26a39
commit 6399a014b6
4200 changed files with 207479 additions and 237366 deletions
+1 -4
View File
@@ -1,9 +1,6 @@
#---Adding all optical examples subdirectories explicitly
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()
cmake_minimum_required(VERSION 3.12...3.20)
add_subdirectory(OpNovice)
add_subdirectory(OpNovice2)
+3
View File
@@ -14,6 +14,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
24 May 2021: B. Morgan (exOptical-V10-07-00)
- Bump required CMake version range to 3.12...3.20, matching core Geant4
03 November 2020: B. Morgan (exOptical-V10-06-00)
- Support same CMake version range as core Geant4
+1 -4
View File
@@ -1,9 +1,6 @@
#----------------------------------------------------------------------------
# Setup the project
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()
cmake_minimum_required(VERSION 3.12...3.20)
project(LXe)
#----------------------------------------------------------------------------
+6
View File
@@ -14,6 +14,12 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
May 13, 2021 D. Sawkey (LXe-V10-07-01)
- Get some refractive indices from new G4OpticalMaterialParameters file
February 24, 2021 D. Sawkey (LXe-V10-07-00)
- replace deprecated optical commands and parameters with new ones.
November 5, 2020 D. Sawkey (LXe-V10-06-03)
- Apply clang-format style
- update macros
-3
View File
@@ -67,10 +67,7 @@ int main(int argc, char** argv)
opticalParams->SetWLSTimeProfile("delta");
opticalParams->SetScintYieldFactor(1.0);
opticalParams->SetScintExcitationRatio(0.0);
opticalParams->SetScintTrackSecondariesFirst(true);
opticalParams->SetScintEnhancedTimeConstants(true);
opticalParams->SetCerenkovMaxPhotonsPerStep(100);
opticalParams->SetCerenkovMaxBetaChange(10.0);
File diff suppressed because it is too large Load Diff
@@ -178,17 +178,14 @@ void LXeDetectorConstruction::DefineMaterials()
// Set the Birks Constant for the LXe scintillator
fLXe->GetIonisation()->SetBirksConstant(0.126 * mm / MeV);
std::vector<G4double> glass_RIND = { 1.49, 1.49, 1.49 };
std::vector<G4double> glass_AbsLength = { 420. * cm, 420. * cm, 420. * cm };
G4MaterialPropertiesTable* glass_mt = new G4MaterialPropertiesTable();
glass_mt->AddProperty("ABSLENGTH", lxe_Energy, glass_AbsLength);
glass_mt->AddProperty("RINDEX", lxe_Energy, glass_RIND);
glass_mt->AddProperty("RINDEX", "Fused Silica");
fGlass->SetMaterialPropertiesTable(glass_mt);
std::vector<G4double> vacuum_Energy = { 2.0 * eV, 7.0 * eV, 7.14 * eV };
std::vector<G4double> vacuum_RIND = { 1., 1., 1. };
G4MaterialPropertiesTable* vacuum_mt = new G4MaterialPropertiesTable();
vacuum_mt->AddProperty("RINDEX", vacuum_Energy, vacuum_RIND);
vacuum_mt->AddProperty("RINDEX", "Air");
fVacuum->SetMaterialPropertiesTable(vacuum_mt);
fAir->SetMaterialPropertiesTable(vacuum_mt); // Give air the same rindex
@@ -210,11 +207,10 @@ void LXeDetectorConstruction::DefineMaterials()
// Set the Birks Constant for the Polystyrene scintillator
fPstyrene->GetIonisation()->SetBirksConstant(0.126 * mm / MeV);
std::vector<G4double> RefractiveIndexFiber = { 1.6, 1.6, 1.6, 1.6 };
std::vector<G4double> AbsFiber = { 9.0 * m, 9.0 * m, 0.1 * mm, 0.1 * mm };
std::vector<G4double> EmissionFib = { 1.0, 1.0, 0.0, 0.0 };
G4MaterialPropertiesTable* fiberProperty = new G4MaterialPropertiesTable();
fiberProperty->AddProperty("RINDEX", wls_Energy, RefractiveIndexFiber);
fiberProperty->AddProperty("RINDEX", "PMMA");
fiberProperty->AddProperty("WLSABSLENGTH", wls_Energy, AbsFiber);
fiberProperty->AddProperty("WLSCOMPONENT", wls_Energy, EmissionFib);
fiberProperty->AddConstProperty("WLSTIMECONSTANT", 0.5 * ns);
+18 -2
View File
@@ -40,13 +40,18 @@ examples/extended/optical/LXe and wls
- *** define G4OpticalSurface ***
- *** add G4MaterialPropertiesTable to G4OpticalSurface ***
alternatively the Configuration can be read from a gdml file.
The provided gdml file NoviceExample.gdml corresponds to the detector
defined in OpNoviceDetectorConstruction.
\section ExampleOpNovice_s4 G4VUserPrimaryGeneratorAction
Use G4ParticleGun to shoot a charge particle into a Cerenkov radiator
A messenger command allows to define interactively the polarization of an
primary optical photon (see for instance optPhoton.mac)
\section ExampleOpNovice_s5 G4UserRunAction and G4Run
- Used to accumulate statistics.
@@ -72,7 +77,7 @@ examples/extended/optical/LXe and wls
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
\verbatim
$ OpNovice [-m macro ] [-u UIsession] [-t nThreads]
$ OpNovice [-g gdmlfile] [-m macro ] [-u UIsession] [-t nThreads]
\endverbatim
The -t option is available only in multi-threading mode
@@ -85,6 +90,10 @@ examples/extended/optical/LXe and wls
$ OpNovice -m OpNovice.in
\endverbatim
- execute OpNovice in 'batch' mode from macro files using a gdml file
to define the geometry
$ OpNovice -g NoviceExample.gdml -m OpNovice.in
- execute OpNovice in 'interactive mode' with visualization
\verbatim
$ OpNovice
@@ -104,5 +113,12 @@ Macros
OpNovice.in: Shoot positrons with energy 500 keV.
gui.mac: Configure the graphical user interface.
vis.mac: Configure visualization.
gdml files
----------
NoviceExample.gdml: example gdml file corresponding to
OpNoviceDetectorConstruction
*/
@@ -1,11 +1,13 @@
#----------------------------------------------------------------------------
# Setup the project
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()
cmake_minimum_required(VERSION 3.12...3.20)
project(OpNovice)
#add_definitions(-DGEANT4_USE_GDML)
add_compile_definitions(GEANT4_USE_GDML)
#make using gdml the default
OPTION( GEANT4_USE_GDML "Use gdml Option" ON)
# printout the value of GEANT4_USE_GDML
MESSAGE("?GEANT4_USE_GDML " ${GEANT4_USE_GDML})
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
@@ -30,7 +32,17 @@ 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)
if (GEANT4_USE_GDML)
file(GLOB detectors ${PROJECT_SOURCE_DIR}/gdml/*.gdml)
endif()
file(GLOB macros ${PROJECT_SOURCE_DIR}/*.mac)
file(GLOB inputs ${PROJECT_SOURCE_DIR}/*.in)
if (NOT GEANT4_USE_GDML)
list(REMOVE_ITEM sources ${PROJECT_SOURCE_DIR}/src/OpNoviceGDMLDetectorConstructionMessenger.cc)
list(REMOVE_ITEM sources ${PROJECT_SOURCE_DIR}/src/OpNoviceGDMLDetectorConstruction.cc)
list(REMOVE_ITEM headers ${PROJECT_SOURCE_DIR}/include/OpNoviceGDMLDetectorConstructionMessenger.hh)
list(REMOVE_ITEM headers ${PROJECT_SOURCE_DIR}/include/OpNoviceGDMLDetectorConstruction.hh)
endif()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
@@ -62,4 +74,8 @@ endforeach()
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
#
install(TARGETS OpNovice DESTINATION bin)
if (GEANT4_USE_GDML)
install(FILES ${detectors} ${macros} ${inputs} DESTINATION bin)
else()
install(FILES ${macros} ${inputs} DESTINATION bin)
endif()
@@ -12,6 +12,9 @@ endif
.PHONY: all
all: lib bin
ifndef XERCESCROOT
@echo XERCESCROOT not defined!
endif
include $(G4INSTALL)/config/binmake.gmk
@@ -13,6 +13,19 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
June 9, 2021 H. Wenzel (OpNovice-V10-07-03)
- add option to define detector via a gdml file
- add outer world volume to avoid surfaces including world volume.
May 21, 2021 D. Sawkey (OpNovice-V10-07-02)
- fix incorrect material property name
March 30, 2021 D. Sawkey (OpNovice-V10-07-01)
- Excercise creating material property table element by element
(testing fix of bug 2313).
February 24, 2021 D. Sawkey (OpNovice-V10-07-00)
- Replace deprecated optical commands and parameters with new ones.
November 1, 2020 D. Sawkey (OpNovice-V10-06-01)
- Print out process statistics at end of run. Added EventAction and Run
+104 -92
View File
@@ -41,10 +41,11 @@
// Author: Juliet Armstrong
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceDetectorConstruction.hh"
#ifdef GEANT4_USE_GDML
#include "OpNoviceGDMLDetectorConstruction.hh"
#endif
#include "OpNoviceActionInitialization.hh"
#include "FTFP_BERT.hh"
#include "G4EmStandardPhysics_option4.hh"
#include "G4OpticalPhysics.hh"
@@ -55,111 +56,122 @@
#include "G4VisExecutive.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace
{
void PrintUsage()
{
G4cerr << " Usage: " << G4endl;
G4cerr << " OpNovice [-m macro ] [-u UIsession] [-t nThreads] [-r seed] "
<< G4endl;
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
} // namespace
namespace {
void PrintUsage() {
G4cerr << " Usage: " << G4endl;
#ifdef GEANT4_USE_GDML
G4cerr << " OpNovice [-g gdmlfile] [-m macro ] [-u UIsession] [-t nThreads] [-r seed] "
<< G4endl;
#else
G4cerr << " OpNovice [-m macro ] [-u UIsession] [-t nThreads] [-r seed] "
<< G4endl;
#endif
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
} // namespace
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
int main(int argc, char** argv)
{
// Evaluate arguments
//
if(argc > 9)
{
PrintUsage();
return 1;
}
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
G4int nThreads = 0;
#endif
G4long myseed = 345354;
for(G4int i = 1; i < argc; i = i + 2)
{
if(G4String(argv[i]) == "-m")
macro = argv[i + 1];
else if(G4String(argv[i]) == "-u")
session = argv[i + 1];
else if(G4String(argv[i]) == "-r")
myseed = atoi(argv[i + 1]);
#ifdef G4MULTITHREADED
else if(G4String(argv[i]) == "-t")
{
nThreads = G4UIcommand::ConvertToInt(argv[i + 1]);
int main(int argc, char** argv) {
// Evaluate arguments
//
if (argc > 9) {
PrintUsage();
return 1;
}
#ifdef GEANT4_USE_GDML
G4String gdmlfile = "";
#endif
else
{
PrintUsage();
return 1;
}
}
// Instantiate G4UIExecutive if interactive mode
G4UIExecutive* ui = nullptr;
if(macro.size() == 0)
{
ui = new G4UIExecutive(argc, argv);
}
// Construct the default run manager
auto runManager = G4RunManagerFactory::CreateRunManager();
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
if(nThreads > 0)
runManager->SetNumberOfThreads(nThreads);
G4int nThreads = 0;
#endif
// Seed the random number generator manually
G4Random::setTheSeed(myseed);
G4long myseed = 345354;
for (G4int i = 1; i < argc; i = i + 2) {
#ifdef GEANT4_USE_GDML
if (G4String(argv[i]) == "-g") gdmlfile = argv[i + 1];
else if (G4String(argv[i]) == "-m") macro = argv[i + 1];
else if (G4String(argv[i]) == "-u") session = argv[i + 1];
else if (G4String(argv[i]) == "-r") myseed = atoi(argv[i + 1]);
#else
if (G4String(argv[i]) == "-m") macro = argv[i + 1];
else if (G4String(argv[i]) == "-u") session = argv[i + 1];
else if (G4String(argv[i]) == "-r") myseed = atoi(argv[i + 1]);
#endif
#ifdef G4MULTITHREADED
else if (G4String(argv[i]) == "-t") {
nThreads = G4UIcommand::ConvertToInt(argv[i + 1]);
}
#endif
else {
PrintUsage();
return 1;
}
}
// Set mandatory initialization classes
//
// Detector construction
runManager->SetUserInitialization(new OpNoviceDetectorConstruction());
// Physics list
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
physicsList->RegisterPhysics(opticalPhysics);
runManager->SetUserInitialization(physicsList);
// Instantiate G4UIExecutive if interactive mode
G4UIExecutive* ui = nullptr;
if (macro.size() == 0) {
ui = new G4UIExecutive(argc, argv);
}
runManager->SetUserInitialization(new OpNoviceActionInitialization());
// Construct the default run manager
auto runManager = G4RunManagerFactory::CreateRunManager();
#ifdef G4MULTITHREADED
if (nThreads > 0)
runManager->SetNumberOfThreads(nThreads);
#endif
G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Seed the random number generator manually
G4Random::setTheSeed(myseed);
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// Set mandatory initialization classes
//
// Detector construction
#ifdef GEANT4_USE_GDML
if (gdmlfile == "") {
G4cout << "no gdml file specified" << G4endl;
runManager->SetUserInitialization(new OpNoviceDetectorConstruction());
} else {
runManager->SetUserInitialization(new OpNoviceGDMLDetectorConstruction(gdmlfile));
}
#else
runManager->SetUserInitialization(new OpNoviceDetectorConstruction());
#endif
// Physics list
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
physicsList->RegisterPhysics(opticalPhysics);
runManager->SetUserInitialization(physicsList);
if(macro.size())
{
G4String command = "/control/execute ";
UImanager->ApplyCommand(command + macro);
}
else // Define UI session for interactive mode
{
UImanager->ApplyCommand("/control/execute vis.mac");
if(ui->IsGUI())
UImanager->ApplyCommand("/control/execute gui.mac");
ui->SessionStart();
delete ui;
}
runManager->SetUserInitialization(new OpNoviceActionInitialization());
delete visManager;
delete runManager;
G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
return 0;
G4UImanager* UImanager = G4UImanager::GetUIpointer();
if (macro.size()) {
G4String command = "/control/execute ";
UImanager->ApplyCommand(command + macro);
} else // Define UI session for interactive mode
{
UImanager->ApplyCommand("/control/execute vis.mac");
if (ui->IsGUI())
UImanager->ApplyCommand("/control/execute gui.mac");
ui->SessionStart();
delete ui;
}
delete visManager;
delete runManager;
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -4,6 +4,8 @@
/run/verbose 1
/control/cout/ignoreThreadsExcept 0
#
/OpNovice/DetectorConstruction/enable_verbose false
/OpNovice/DetectorConstruction/dumpgdml false
/run/initialize
#
/gun/particle e+
@@ -15,7 +17,6 @@
/tracking/verbose 0
/process/optical/cerenkov/setMaxPhotons 15
/process/optical/cerenkov/setTrackSecondariesFirst false
/process/optical/scintillation/setYieldFactor 0.3
#
/run/beamOn 1000
File diff suppressed because it is too large Load Diff
+18 -4
View File
@@ -45,6 +45,10 @@ G4VUserDetectorConstruction
*** define G4OpticalSurface ***
*** add G4MaterialPropertiesTable to G4OpticalSurface ***
alternatively the Configuration can be read from a gdml file.
The provided gdml file NoviceExample.gdml corresponds to the detector
defined in OpNoviceDetectorConstruction.
G4VUserPrimaryGeneratorAction
-----------------------------
@@ -80,8 +84,8 @@ Visualisation
- compile and link to generate an executable
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
$ OpNovice [-m macro ] [-u UIsession] [-t nThreads]
It can be run with the following optional optionaarguments:
$ OpNovice [-g gdmlfile] [-m macro ] [-u UIsession] [-t nThreads]
The -t option is available only in multi-threading mode
and it allows the user to override the Geant4 default number of
@@ -90,7 +94,11 @@ Visualisation
- execute OpNovice in 'batch' mode from macro files
$ OpNovice -m OpNovice.in
- execute OpNovice in 'batch' mode from macro files using a gdml file
to define the geometry
$ OpNovice -g NoviceExample.gdml -m OpNovice.in
- execute OpNovice in 'interactive mode' with visualization
$ OpNovice
....
@@ -107,4 +115,10 @@ Macros
optPhoton.mac: Shoot optical photons with energy 3 eV
OpNovice.in: Shoot positrons with energy 500 keV.
gui.mac: Configure the graphical user interface.
vis.mac: Configure visualization.
vis.mac: Configure visualization.ls
gdml files
----------
NoviceExample.gdml: example gdml file corresponding to
OpNoviceDetectorConstruction
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8" ?>
<gdml xmlns:gdml="http://cern.ch/2001/Schemas/GDML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd" >
<define>
<matrix coldim="2" name="AIRRINDEX" values="2.034*eV 1 2.068*eV 1 2.103*eV 1 2.139*eV 1 2.177*eV 1 2.216*eV 1 2.256*eV 1 2.298*eV 1 2.341*eV 1 2.386*eV 1 2.433*eV 1 2.481*eV 1 2.532*eV 1 2.585*eV 1 2.64*eV 1 2.697*eV 1 2.757*eV 1 2.82*eV 1 2.885*eV 1 2.954*eV 1 3.026*eV 1 3.102*eV 1 3.181*eV 1 3.265*eV 1 3.353*eV 1 3.446*eV 1 3.545*eV 1 3.649*eV 1 3.76*eV 1 3.877*eV 1 4.002*eV 1 4.136*eV 1"/>
<matrix coldim="2" name="REFLECTIVITY" values="2.034*eV 0.3 4.136*eV 0.5"/>
<matrix coldim="2" name="EFFICIENCY" values="2.034*eV 0.8 4.136*eV 1"/>
<matrix coldim="2" name="WATERRINDEX" values="2.034*eV 1.3435 2.068*eV 1.344 2.103*eV 1.3445 2.139*eV 1.345 2.177*eV 1.3455 2.216*eV 1.346 2.256*eV 1.3465 2.298*eV 1.347 2.341*eV 1.3475 2.386*eV 1.348 2.433*eV 1.3485 2.481*eV 1.3492 2.532*eV 1.35 2.585*eV 1.3505 2.64*eV 1.351 2.697*eV 1.3518 2.757*eV 1.3522 2.82*eV 1.353 2.885*eV 1.3535 2.954*eV 1.354 3.026*eV 1.3545 3.102*eV 1.355 3.181*eV 1.3555 3.265*eV 1.356 3.353*eV 1.3568 3.446*eV 1.3572 3.545*eV 1.358 3.649*eV 1.3585 3.76*eV 1.359 3.877*eV 1.3595 4.002*eV 1.36 4.136*eV 1.3608"/>
<matrix coldim="2" name="WATERMIEHG" values="1.56962*eV 1.67024e+08 1.58974*eV 1.58727e+08 1.61039*eV 1.50742e+08 1.63157*eV 1.43062e+08 1.65333*eV 1.3568e+08 1.67567*eV 1.28587e+08 1.69863*eV 1.21776e+08 1.72222*eV 1.1524e+08 1.74647*eV 1.0897e+08 1.77142*eV 1.02959e+08 1.7971*eV 9.72004e+07 1.82352*eV 9.16869e+07 1.85074*eV 8.64113e+07 1.87878*eV 8.13668e+07 1.90769*eV 7.65464e+07 1.93749*eV 7.19435e+07 1.96825*eV 6.75513e+07 1.99999*eV 6.33634e+07 2.03278*eV 5.93732e+07 2.06666*eV 5.55746e+07 2.10169*eV 5.19612e+07 2.13793*eV 4.8527e+07 2.17543*eV 4.52659e+07 2.21428*eV 4.21719e+07 2.25454*eV 3.92394e+07 2.29629*eV 3.64625e+07 2.33962*eV 3.38357e+07 2.38461*eV 3.13534e+07 2.43137*eV 2.90103e+07 2.47999*eV 2.6801e+07 2.53061*eV 2.47204e+07 2.58333*eV 2.27634e+07 2.63829*eV 2.09249e+07 2.69565*eV 1.92001e+07 2.75555*eV 1.75842e+07 2.81817*eV 1.60724e+07 2.88371*eV 1.46604e+07 2.95237*eV 1.33435e+07 3.02438*eV 1.21173e+07 3.09999*eV 1.09777e+07 3.17948*eV 9.92042e+06 3.26315*eV 8.94141e+06 3.35134*eV 8.03671e+06 3.44444*eV 7.20247e+06 3.54285*eV 6.43493e+06 3.64705*eV 5.73043e+06 3.75757*eV 5.08542e+06 3.87499*eV 4.49647e+06 3.99999*eV 3.96021e+06 4.13332*eV 3.47341e+06 4.27585*eV 3.03294e+06 4.42856*eV 2.63575e+06 4.59258*eV 2.27891e+06 4.76922*eV 1.95959e+06 4.95999*eV 1.67506e+06 5.16665*eV 1.42271e+06 5.39129*eV 1.2e+06 5.63635*eV 1.00453e+06 5.90475*eV 833967 6.19998*eV 686106"/>
<matrix coldim="2" name="WATERABSLENGTH" values="2.034*eV 3448 2.068*eV 4082 2.103*eV 6329 2.139*eV 9174 2.177*eV 12346 2.216*eV 13889 2.256*eV 15152 2.298*eV 17241 2.341*eV 18868 2.386*eV 20000 2.433*eV 26316 2.481*eV 35714 2.532*eV 45455 2.585*eV 47619 2.64*eV 52632 2.697*eV 52632 2.757*eV 55556 2.82*eV 52632 2.885*eV 52632 2.954*eV 47619 3.026*eV 45455 3.102*eV 41667 3.181*eV 37037 3.265*eV 33333 3.353*eV 30000 3.446*eV 28500 3.545*eV 27000 3.649*eV 24500 3.76*eV 22000 3.877*eV 19500 4.002*eV 17500 4.136*eV 14500"/>
<matrix coldim="2" name="WATERSCINTILLATIONCOMPONENT1" values="2.034*eV 1 2.068*eV 1 2.103*eV 1 2.139*eV 1 2.177*eV 1 2.216*eV 1 2.256*eV 1 2.298*eV 1 2.341*eV 1 2.386*eV 1 2.433*eV 1 2.481*eV 1 2.532*eV 1 2.585*eV 1 2.64*eV 1 2.697*eV 1 2.757*eV 1 2.82*eV 1 2.885*eV 1 2.954*eV 1 3.026*eV 1 3.102*eV 1 3.181*eV 1 3.265*eV 1 3.353*eV 1 3.446*eV 1 3.545*eV 1 3.649*eV 1 3.76*eV 1 3.877*eV 1 4.002*eV 1 4.136*eV 1"/>
<matrix coldim="2" name="WATERSCINTILLATIONCOMPONENT2" values="2.034*eV 0.01 2.068*eV 1 2.103*eV 2 2.139*eV 3 2.177*eV 4 2.216*eV 5 2.256*eV 6 2.298*eV 7 2.341*eV 8 2.386*eV 9 2.433*eV 8 2.481*eV 7 2.532*eV 6 2.585*eV 4 2.64*eV 3 2.697*eV 2 2.757*eV 1 2.82*eV 0.01 2.885*eV 1 2.954*eV 2 3.026*eV 3 3.102*eV 4 3.181*eV 5 3.265*eV 6 3.353*eV 7 3.446*eV 8 3.545*eV 9 3.649*eV 8 3.76*eV 7 3.877*eV 6 4.002*eV 5 4.136*eV 4"/>
<matrix coldim="1" name="WATERMIEHG_FORWARD" values="0.99"/>
<matrix coldim="1" name="WATERMIEHG_BACKWARD" values="0.99"/>
<matrix coldim="1" name="WATERMIEHG_FORWARD_RATIO" values="0.8"/>
<matrix coldim="1" name="WATERSCINTILLATIONYIELD" values="50"/>
<matrix coldim="1" name="WATERRESOLUTIONSCALE" values="1"/>
<matrix coldim="1" name="WATERSCINTILLATIONTIMECONSTANT1" values="1"/>
<matrix coldim="1" name="WATERSCINTILLATIONTIMECONSTANT2" values="10"/>
<matrix coldim="1" name="SCINTILLATIONYIELD1" values="0.8"/>
<matrix coldim="1" name="SCINTILLATIONYIELD2" values="0.2"/>
</define>
<materials>
<isotope N="14" Z="7" name="N14">
<atom unit="g/mole" value="14.0031"/>
</isotope>
<isotope N="15" Z="7" name="N15">
<atom unit="g/mole" value="15.0001"/>
</isotope>
<element name="Nitrogen">
<fraction n="0.99632" ref="N14"/>
<fraction n="0.00368" ref="N15"/>
</element>
<isotope N="16" Z="8" name="O16">
<atom unit="g/mole" value="15.9949"/>
</isotope>
<isotope N="17" Z="8" name="O17">
<atom unit="g/mole" value="16.9991"/>
</isotope>
<isotope N="18" Z="8" name="O18">
<atom unit="g/mole" value="17.9992"/>
</isotope>
<element name="Oxygen">
<fraction n="0.99757" ref="O16"/>
<fraction n="0.00038" ref="O17"/>
<fraction n="0.00205" ref="O18"/>
</element>
<material name="Air" state="gas">
<property name="RINDEX" ref="AIRRINDEX"/>
<T unit="K" value="293.15"/>
<MEE unit="eV" value="85.7030667332998"/>
<D unit="g/cm3" value="0.00129"/>
<fraction n="0.7" ref="Nitrogen"/>
<fraction n="0.3" ref="Oxygen"/>
</material>
<isotope N="1" Z="1" name="H1">
<atom unit="g/mole" value="1.00782503081372"/>
</isotope>
<isotope N="2" Z="1" name="H2">
<atom unit="g/mole" value="2.01410199966617"/>
</isotope>
<element name="Hydrogen">
<fraction n="0.999885" ref="H1"/>
<fraction n="0.000115" ref="H2"/>
</element>
<material name="Water" state="solid">
<property name="RINDEX" ref="WATERRINDEX"/>
<property name="MIEHG" ref="WATERMIEHG"/>
<property name="ABSLENGTH" ref="WATERABSLENGTH"/>
<property name="SCINTILLATIONCOMPONENT1" ref="WATERSCINTILLATIONCOMPONENT1"/>
<property name="SCINTILLATIONCOMPONENT2" ref="WATERSCINTILLATIONCOMPONENT2"/>
<property name="MIEHG_FORWARD" ref="WATERMIEHG_FORWARD"/>
<property name="MIEHG_BACKWARD" ref="WATERMIEHG_BACKWARD"/>
<property name="MIEHG_FORWARD_RATIO" ref="WATERMIEHG_FORWARD_RATIO"/>
<property name="SCINTILLATIONYIELD" ref="WATERSCINTILLATIONYIELD"/>
<property name="RESOLUTIONSCALE" ref="WATERRESOLUTIONSCALE"/>
<property name="SCINTILLATIONTIMECONSTANT1" ref="WATERSCINTILLATIONTIMECONSTANT1"/>
<property name="SCINTILLATIONTIMECONSTANT2" ref="WATERSCINTILLATIONTIMECONSTANT2"/>
<property name="SCINTILLATIONYIELD1" ref="SCINTILLATIONYIELD1"/>
<property name="SCINTILLATIONYIELD2" ref="SCINTILLATIONYIELD2"/>
<T unit="K" value="293.15"/>
<MEE unit="eV" value="68.9984174679527"/>
<D unit="g/cm3" value="1"/>
<fraction n="0.112097669256382" ref="Hydrogen"/>
<fraction n="0.887902330743618" ref="Oxygen"/>
</material>
</materials>
<solids>
<box lunit="m" name="Bubble_solid" x="1" y="1" z="1"/>
<opticalsurface finish="0" model="0" name="AirSurface" type="1" value="1">
<property name="REFLECTIVITY" ref="REFLECTIVITY"/>
<property name="EFFICIENCY" ref="EFFICIENCY"/>
</opticalsurface>
<box lunit="m" name="Tank_solid" x="10" y="10" z="10"/>
<opticalsurface finish="30" model="3" name="WaterSurface" type="3" value="0"/>
<box lunit="m" name="expHall_solid" x="20" y="20" z="20"/>
<box lunit="m" name="World_solid" x="30" y="30" z="30"/>
</solids>
<structure>
<volume name="Bubble_log">
<materialref ref="Air"/>
<solidref ref="Bubble_solid"/>
</volume>
<volume name="Tank_log">
<materialref ref="Water"/>
<solidref ref="Tank_solid"/>
<physvol name="Bubble_phys">
<volumeref ref="Bubble_log"/>
<position name="Bubble_pos" unit="m" x="0" y="2.5" z="0"/>
</physvol>
</volume>
<volume name="expHall_log">
<materialref ref="Air"/>
<solidref ref="expHall_solid"/>
<physvol name="Tank_phys">
<volumeref ref="Tank_log"/>
<position name="Tank_pos" unit="m" x="0" y="0" z="0"/>
</physvol>
</volume>
<volume name="World_log">
<materialref ref="Air"/>
<solidref ref="World_solid"/>
<physvol name="expHall_phys">
<volumeref ref="expHall_log"/>
<position name="expHall_pos" unit="m" x="0" y="0" z="0"/>
</physvol>
</volume>
<skinsurface name="AirSurface" surfaceproperty="AirSurface">
<volumeref ref="Bubble_log"/>
</skinsurface>
<bordersurface name="WaterSurface" surfaceproperty="WaterSurface">
<physvolref ref="Tank_phys"/>
<physvolref ref="expHall_phys"/>
</bordersurface>
</structure>
<setup name="Default" version="1.0">
<world ref="World_log"/>
</setup>
</gdml>
@@ -42,4 +42,4 @@ class OpNoviceActionInitialization : public G4VUserActionInitialization
void Build() const override;
};
#endif
#endif
@@ -38,16 +38,25 @@
#include "G4VUserDetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceDetectorConstructionMessenger;
class OpNoviceDetectorConstruction : public G4VUserDetectorConstruction
{
public:
OpNoviceDetectorConstruction();
~OpNoviceDetectorConstruction();
G4VPhysicalVolume* Construct() override;
private:
void SetDumpgdml(G4bool dumpgdml);
G4bool IsDumpgdml() const;
void SetVerbose(G4bool verbose);
G4bool IsVerbose() const;
void SetDumpgdmlFile(G4String DumpgdmlFile);
G4String GetDumpgdmlFile() const;
private:
G4double fWorld_x;
G4double fWorld_y;
G4double fWorld_z;
G4double fExpHall_x;
G4double fExpHall_y;
G4double fExpHall_z;
@@ -59,6 +68,12 @@ class OpNoviceDetectorConstruction : public G4VUserDetectorConstruction
G4double fBubble_x;
G4double fBubble_y;
G4double fBubble_z;
G4String DumpgdmlFile;
G4bool verbose;
G4bool dumpgdml;
OpNoviceDetectorConstructionMessenger* fDetectorMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file OpNovice/include/OpNoviceDetectorConstructionMessenger.hh
/// \brief Definition of the OpNoviceDetectorConstructionMessenger class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef OpNoviceDetectorConstructionMessenger_h
#define OpNoviceDetectorConstructionMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class OpNoviceDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithABool;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceDetectorConstructionMessenger : public G4UImessenger {
public:
OpNoviceDetectorConstructionMessenger(OpNoviceDetectorConstruction*);
~OpNoviceDetectorConstructionMessenger();
void SetNewValue(G4UIcommand*, G4String) override;
private:
OpNoviceDetectorConstruction* fOpNoviceDetCon;
G4UIdirectory* fDetConDir;
G4UIcmdWithABool* fverboseCmd;
G4UIcmdWithABool* fdumpGdmlCmd;
G4UIcmdWithAString* fdumpGdmlFileNameCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -58,7 +58,5 @@ class OpNoviceEventAction : public G4UserEventAction
G4int fMie;
G4int fBoundary;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
#ifndef OpNoviceGDMLDetectorConstruction_h
#define OpNoviceGDMLDetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
class G4GDMLParser;
class OpNoviceGDMLDetectorConstructionMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceGDMLDetectorConstruction : public G4VUserDetectorConstruction {
public:
OpNoviceGDMLDetectorConstruction(G4String fname);
virtual ~OpNoviceGDMLDetectorConstruction();
void ReadGDML();
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
void UpdateGeometry();
void SetDumpgdml(G4bool fdumpgdml);
G4bool IsDumpgdml() const;
void SetVerbose(G4bool fverbose);
G4bool IsVerbose() const;
void SetDumpgdmlFile(G4String fDumpgdmlFile);
G4String GetDumpgdmlFile() const;
private:
OpNoviceGDMLDetectorConstruction & operator=(const OpNoviceGDMLDetectorConstruction &right);
OpNoviceGDMLDetectorConstruction(const OpNoviceGDMLDetectorConstruction&);
G4GDMLParser *parser;
G4String gdmlFile;
//
G4String fDumpgdmlFile;
G4bool fverbose;
G4bool fdumpgdml;
OpNoviceGDMLDetectorConstructionMessenger* fDetectorMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
#endif
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file OpNovice/include/OpNoviceGDMLDetectorConstructionMessenger.hh
/// \brief Definition of the OpNoviceGDMLDetectorConstructionMessenger class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef OpNoviceGDMLDetectorConstructionMessenger_h
#define OpNoviceGDMLDetectorConstructionMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class OpNoviceGDMLDetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithABool;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceGDMLDetectorConstructionMessenger : public G4UImessenger {
public:
OpNoviceGDMLDetectorConstructionMessenger(OpNoviceGDMLDetectorConstruction*);
~OpNoviceGDMLDetectorConstructionMessenger();
virtual void SetNewValue(G4UIcommand*, G4String) override;
private:
OpNoviceGDMLDetectorConstruction* fOpNoviceDetCon;
G4UIdirectory* fDetConDir;
G4UIcmdWithABool* verboseCmd;
G4UIcmdWithABool* dumpGdmlCmd;
G4UIcmdWithAString* dumpGdmlFileNameCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -99,7 +99,5 @@ class OpNoviceRun : public G4Run
G4ParticleDefinition* fParticle;
G4double fEnergy;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -58,7 +58,5 @@ class OpNoviceRunAction : public G4UserRunAction
OpNoviceRun* fRun;
OpNovicePrimaryGeneratorAction* fPrimary;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -31,7 +31,6 @@
#define OpNoviceSteppingAction_h 1
#include "OpNoviceEventAction.hh"
#include "globals.hh"
#include "G4UserSteppingAction.hh"
@@ -28,7 +28,6 @@
/// \brief Implementation of the OpNoviceActionInitialization class
#include "OpNoviceActionInitialization.hh"
#include "OpNoviceEventAction.hh"
#include "OpNovicePrimaryGeneratorAction.hh"
#include "OpNoviceRunAction.hh"
@@ -36,24 +35,20 @@
#include "OpNoviceSteppingAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceActionInitialization::OpNoviceActionInitialization()
: G4VUserActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceActionInitialization::~OpNoviceActionInitialization() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceActionInitialization::BuildForMaster() const
{
SetUserAction(new OpNoviceRunAction());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceActionInitialization::Build() const
{
OpNovicePrimaryGeneratorAction* primary =
@@ -29,10 +29,9 @@
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceDetectorConstruction.hh"
#include "OpNoviceDetectorConstructionMessenger.hh"
#include "G4Box.hh"
#include "G4Element.hh"
#include "G4LogicalBorderSurface.hh"
@@ -43,49 +42,48 @@
#include "G4PVPlacement.hh"
#include "G4SystemOfUnits.hh"
#include "G4ThreeVector.hh"
#include "G4GDMLParser.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceDetectorConstruction::OpNoviceDetectorConstruction()
: G4VUserDetectorConstruction()
{
DumpgdmlFile = "OpNovice_dump.gdml";
verbose = false;
dumpgdml = false;
// create a messenger for this class
fDetectorMessenger = new OpNoviceDetectorConstructionMessenger(this);
fWorld_x = fWorld_y = fWorld_z = 15.0 * m;
fExpHall_x = fExpHall_y = fExpHall_z = 10.0 * m;
fTank_x = fTank_y = fTank_z = 5.0 * m;
fBubble_x = fBubble_y = fBubble_z = 0.5 * m;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceDetectorConstruction::~OpNoviceDetectorConstruction() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
{
G4bool checkOverlaps = true;
// ------------- Materials -------------
G4double a, z, density;
G4int nelements;
// Air
//
G4Element* N = new G4Element("Nitrogen", "N", z = 7, a = 14.01 * g / mole);
G4Element* O = new G4Element("Oxygen", "O", z = 8, a = 16.00 * g / mole);
G4Material* air =
new G4Material("Air", density = 1.29 * mg / cm3, nelements = 2);
air->AddElement(N, 70. * perCent);
air->AddElement(O, 30. * perCent);
// Water
//
G4Element* H = new G4Element("Hydrogen", "H", z = 1, a = 1.01 * g / mole);
G4Material* water =
new G4Material("Water", density = 1.0 * g / cm3, nelements = 2);
water->AddElement(H, 2);
water->AddElement(O, 1);
// ------------ Generate & Add Material Properties Table ------------
//
std::vector<G4double> photonEnergy = {
@@ -96,7 +94,6 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
3.353 * eV, 3.446 * eV, 3.545 * eV, 3.649 * eV, 3.760 * eV, 3.877 * eV,
4.002 * eV, 4.136 * eV
};
// Water
//
std::vector<G4double> refractiveIndex1 = {
@@ -105,7 +102,6 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
1.3522, 1.3530, 1.3535, 1.354, 1.3545, 1.355, 1.3555, 1.356,
1.3568, 1.3572, 1.358, 1.3585, 1.359, 1.3595, 1.36, 1.3608
};
std::vector<G4double> absorption = {
3.448 * m, 4.082 * m, 6.329 * m, 9.174 * m, 12.346 * m, 13.889 * m,
15.152 * m, 17.241 * m, 18.868 * m, 20.000 * m, 26.316 * m, 35.714 * m,
@@ -114,35 +110,45 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
30.000 * m, 28.500 * m, 27.000 * m, 24.500 * m, 22.000 * m, 19.500 * m,
17.500 * m, 14.500 * m
};
std::vector<G4double> scintilFast = {
1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00
};
std::vector<G4double> scintilSlow = {
0.01, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00, 9.00, 8.00,
7.00, 6.00, 4.00, 3.00, 2.00, 1.00, 0.01, 1.00, 2.00, 3.00, 4.00,
5.00, 6.00, 7.00, 8.00, 9.00, 8.00, 7.00, 6.00, 5.00, 4.00
};
G4MaterialPropertiesTable* myMPT1 = new G4MaterialPropertiesTable();
myMPT1->AddProperty("RINDEX", photonEnergy, refractiveIndex1)
// Values can be added to the material property table individually.
// Check that group velocity is calculated from RINDEX
myMPT1->AddProperty("RINDEX", &photonEnergy[0], &refractiveIndex1[0], 1)
->SetSpline(true);
for(size_t i = 1; i < photonEnergy.size(); ++i)
{
myMPT1->AddEntry("RINDEX", photonEnergy[i], refractiveIndex1[i]);
}
if(myMPT1->GetProperty("RINDEX")->GetVectorLength() !=
myMPT1->GetProperty("GROUPVEL")->GetVectorLength())
{
G4ExceptionDescription ed;
ed << "Error calculating group velocities. Incorrect number of entries "
"in group velocity material property vector.";
G4Exception("OpNovice::OpNoviceDetectorConstruction", "OpNovice001",
FatalException, ed);
}
myMPT1->AddProperty("ABSLENGTH", photonEnergy, absorption)->SetSpline(true);
myMPT1->AddProperty("FASTCOMPONENT", photonEnergy, scintilFast)
myMPT1->AddProperty("SCINTILLATIONCOMPONENT1", photonEnergy, scintilFast)
->SetSpline(true);
myMPT1->AddProperty("SLOWCOMPONENT", photonEnergy, scintilSlow)
myMPT1->AddProperty("SCINTILLATIONCOMPONENT2", photonEnergy, scintilSlow)
->SetSpline(true);
myMPT1->AddConstProperty("SCINTILLATIONYIELD", 50. / MeV);
myMPT1->AddConstProperty("RESOLUTIONSCALE", 1.0);
myMPT1->AddConstProperty("FASTTIMECONSTANT", 1. * ns);
myMPT1->AddConstProperty("SLOWTIMECONSTANT", 10. * ns);
myMPT1->AddConstProperty("YIELDRATIO", 0.8);
myMPT1->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 1. * ns);
myMPT1->AddConstProperty("SCINTILLATIONTIMECONSTANT2", 10. * ns);
myMPT1->AddConstProperty("SCINTILLATIONYIELD1", 0.8);
myMPT1->AddConstProperty("SCINTILLATIONYIELD2", 0.2);
std::vector<G4double> energy_water = {
1.56962 * eV, 1.58974 * eV, 1.61039 * eV, 1.63157 * eV, 1.65333 * eV,
1.67567 * eV, 1.69863 * eV, 1.72222 * eV, 1.74647 * eV, 1.77142 * eV,
@@ -159,7 +165,6 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
};
// Rayleigh scattering length calculated by G4OpRayleigh
// assume 100 times larger than the rayleigh scattering for now.
std::vector<G4double> mie_water = {
167024.4 * m, 158726.7 * m, 150742 * m, 143062.5 * m, 135680.2 * m,
@@ -209,39 +214,35 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
air->SetMaterialPropertiesTable(myMPT2);
// ------------- Volumes --------------
//
// The world
G4Box* world_box = new G4Box("World", fWorld_x, fWorld_y, fWorld_z);
G4LogicalVolume* world_log =
new G4LogicalVolume(world_box, air, "World", 0, 0, 0);
G4VPhysicalVolume* world_phys = new G4PVPlacement(
0, G4ThreeVector(), world_log, "world", 0, false, 0, checkOverlaps);
// The experimental Hall
//
G4Box* expHall_box = new G4Box("World", fExpHall_x, fExpHall_y, fExpHall_z);
G4Box* expHall_box = new G4Box("expHall", fExpHall_x, fExpHall_y, fExpHall_z);
G4LogicalVolume* expHall_log =
new G4LogicalVolume(expHall_box, air, "World", 0, 0, 0);
G4VPhysicalVolume* expHall_phys =
new G4PVPlacement(0, G4ThreeVector(), expHall_log, "World", 0, false, 0);
new G4LogicalVolume(expHall_box, air, "expHall", 0, 0, 0);
G4VPhysicalVolume* expHall_phys = new G4PVPlacement(
0, G4ThreeVector(), expHall_log, "expHall", world_log, false, 0);
// The Water Tank
//
G4Box* waterTank_box = new G4Box("Tank", fTank_x, fTank_y, fTank_z);
G4LogicalVolume* waterTank_log =
new G4LogicalVolume(waterTank_box, water, "Tank", 0, 0, 0);
G4VPhysicalVolume* waterTank_phys = new G4PVPlacement(
0, G4ThreeVector(), waterTank_log, "Tank", expHall_log, false, 0);
// The Air Bubble
//
G4Box* bubbleAir_box = new G4Box("Bubble", fBubble_x, fBubble_y, fBubble_z);
G4LogicalVolume* bubbleAir_log =
new G4LogicalVolume(bubbleAir_box, air, "Bubble", 0, 0, 0);
new G4PVPlacement(0, G4ThreeVector(0, 2.5 * m, 0), bubbleAir_log, "Bubble",
waterTank_log, false, 0);
// ------------- Surfaces --------------
// Water Tank
//
G4OpticalSurface* opWaterSurface = new G4OpticalSurface("WaterSurface");
@@ -285,13 +286,43 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
myST2->AddProperty("REFLECTIVITY", ephoton, reflectivity);
myST2->AddProperty("EFFICIENCY", ephoton, efficiency);
G4cout << "Air Surface G4MaterialPropertiesTable:" << G4endl;
myST2->DumpTable();
if(verbose)
{
G4cout << "Air Surface G4MaterialPropertiesTable:" << G4endl;
myST2->DumpTable();
}
opAirSurface->SetMaterialPropertiesTable(myST2);
return expHall_phys;
if(dumpgdml)
{
G4GDMLParser* parser = new G4GDMLParser();
parser->Write(DumpgdmlFile, world_phys);
}
return world_phys;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceDetectorConstruction::SetDumpgdml(G4bool dumpgdml1)
{
this->dumpgdml = dumpgdml1;
}
G4bool OpNoviceDetectorConstruction::IsDumpgdml() const { return dumpgdml; }
void OpNoviceDetectorConstruction::SetVerbose(G4bool verbose1)
{
this->verbose = verbose1;
}
G4bool OpNoviceDetectorConstruction::IsVerbose() const { return verbose; }
void OpNoviceDetectorConstruction::SetDumpgdmlFile(G4String DumpgdmlFile1)
{
this->DumpgdmlFile = DumpgdmlFile1;
}
G4String OpNoviceDetectorConstruction::GetDumpgdmlFile() const
{
return DumpgdmlFile;
}
@@ -0,0 +1,88 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Geant4 headers
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAString.hh"
// project headers
#include "OpNoviceDetectorConstructionMessenger.hh"
#include "OpNoviceDetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceDetectorConstructionMessenger::OpNoviceDetectorConstructionMessenger(
OpNoviceDetectorConstruction* detcon)
: G4UImessenger()
, fOpNoviceDetCon(detcon)
{
fDetConDir = new G4UIdirectory("/OpNovice/DetectorConstruction/");
fDetConDir->SetGuidance("Configuring Detector Construction");
//
fverboseCmd =
new G4UIcmdWithABool("/OpNovice/DetectorConstruction/enable_verbose", this);
fverboseCmd->SetGuidance("Set flag for enabling verbose diagnostic printout");
fverboseCmd->SetParameterName("enable_verbose", false);
fverboseCmd->SetDefaultValue(false);
fverboseCmd->AvailableForStates(G4State_PreInit);
fdumpGdmlCmd =
new G4UIcmdWithABool("/OpNovice/DetectorConstruction/dumpgdml", this);
fdumpGdmlCmd->SetGuidance(
"Set flag for enabling dumping the detector to a gdml file");
fdumpGdmlCmd->SetParameterName("dumpgdml", false);
fdumpGdmlCmd->SetDefaultValue(false);
fdumpGdmlCmd->AvailableForStates(G4State_PreInit);
fdumpGdmlFileNameCmd = new G4UIcmdWithAString(
"/OpNovice/DetectorConstruction/DumpGDMLFileName", this);
fdumpGdmlFileNameCmd->SetGuidance("Enter file name to dump gdml file ");
fdumpGdmlFileNameCmd->SetParameterName("GDMLFileName", true);
fdumpGdmlFileNameCmd->SetDefaultValue("OpNovice_dump.gdml");
fdumpGdmlFileNameCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceDetectorConstructionMessenger::~OpNoviceDetectorConstructionMessenger()
{
delete fDetConDir;
delete fverboseCmd;
delete fdumpGdmlCmd;
delete fdumpGdmlFileNameCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceDetectorConstructionMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if(command == fverboseCmd)
fOpNoviceDetCon->SetVerbose(fverboseCmd->GetNewBoolValue(newValue));
if(command == fdumpGdmlCmd)
fOpNoviceDetCon->SetDumpgdml(fdumpGdmlCmd->GetNewBoolValue(newValue));
if(command == fdumpGdmlFileNameCmd)
fOpNoviceDetCon->SetDumpgdmlFile(newValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -31,14 +31,11 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceEventAction.hh"
#include "OpNoviceRun.hh"
#include "G4Event.hh"
#include "G4RunManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceEventAction::OpNoviceEventAction()
: G4UserEventAction()
{
@@ -49,11 +46,9 @@ OpNoviceEventAction::OpNoviceEventAction()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceEventAction::~OpNoviceEventAction() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceEventAction::BeginOfEventAction(const G4Event*)
{
fRayleigh = 0;
@@ -63,16 +58,13 @@ void OpNoviceEventAction::BeginOfEventAction(const G4Event*)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceEventAction::EndOfEventAction(const G4Event*)
{
OpNoviceRun* run = static_cast<OpNoviceRun*>(
G4RunManager::GetRunManager()->GetNonConstCurrentRun());
run->AddRayleigh(fRayleigh);
run->AddAbsorption(fAbsorption);
run->AddMie(fMie);
run->AddBoundary(fBoundary);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,117 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Geant4 headers
#include "G4RunManager.hh"
#include "G4PhysicalVolumeStore.hh"
#include "G4LogicalVolumeStore.hh"
#include "G4VisAttributes.hh"
#include "G4NistManager.hh"
#include "globals.hh"
#include "G4GDMLParser.hh"
// project headers
#include "OpNoviceGDMLDetectorConstruction.hh"
#include "OpNoviceGDMLDetectorConstructionMessenger.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceGDMLDetectorConstruction::OpNoviceGDMLDetectorConstruction(G4String fname)
: G4VUserDetectorConstruction() {
fDumpgdmlFile = "OpNovice_dump.gdml";
fverbose = false;
fdumpgdml = false;
gdmlFile = fname;
// create a messenger for this class
fDetectorMessenger = new OpNoviceGDMLDetectorConstructionMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceGDMLDetectorConstruction::~OpNoviceGDMLDetectorConstruction() {
delete fDetectorMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume *OpNoviceGDMLDetectorConstruction::Construct() {
ReadGDML();
G4VPhysicalVolume *worldPhysVol = parser->GetWorldVolume();
if (fdumpgdml) parser->Write(fDumpgdmlFile, worldPhysVol);
return worldPhysVol;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceGDMLDetectorConstruction::ConstructSDandField() {
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceGDMLDetectorConstruction::ReadGDML() {
parser = new G4GDMLParser();
parser->Read(gdmlFile, false);
G4VPhysicalVolume *world = parser->GetWorldVolume();
//----- GDML parser makes world invisible, this is a hack to make it
//visible again...
G4LogicalVolume *pworldLogical = world->GetLogicalVolume();
pworldLogical->SetVisAttributes(0);
G4cout << world->GetTranslation() << G4endl << G4endl;
if (fverbose) {
G4cout << "Found world: " << world-> GetName() << G4endl;
G4cout << "world LV: " << world->GetLogicalVolume()->GetName() << G4endl;
}
G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance();
if (fverbose) {
G4cout << "Found " << pLVStore->size()
<< " logical volumes."
<< G4endl << G4endl;
}
G4PhysicalVolumeStore *pPVStore = G4PhysicalVolumeStore::GetInstance();
if (fverbose) {
G4cout << "Found " << pPVStore->size()
<< " physical volumes."
<< G4endl << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceGDMLDetectorConstruction::UpdateGeometry() {
G4RunManager::GetRunManager()->DefineWorldVolume(Construct());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceGDMLDetectorConstruction::SetDumpgdml(G4bool fdumpgdml1) {
this->fdumpgdml = fdumpgdml1;
}
G4bool OpNoviceGDMLDetectorConstruction::IsDumpgdml() const {
return fdumpgdml;
}
void OpNoviceGDMLDetectorConstruction::SetVerbose(G4bool fverbose1) {
this->fverbose = fverbose1;
}
G4bool OpNoviceGDMLDetectorConstruction::IsVerbose() const {
return fverbose;
}
void OpNoviceGDMLDetectorConstruction::SetDumpgdmlFile(G4String fDumpgdmlFile1) {
this->fDumpgdmlFile = fDumpgdmlFile1;
}
G4String OpNoviceGDMLDetectorConstruction::GetDumpgdmlFile() const {
return fDumpgdmlFile;
}
@@ -0,0 +1,87 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Geant4 headers
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAString.hh"
// project headers
#include "OpNoviceGDMLDetectorConstructionMessenger.hh"
#include "OpNoviceGDMLDetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceGDMLDetectorConstructionMessenger::
OpNoviceGDMLDetectorConstructionMessenger(
OpNoviceGDMLDetectorConstruction* detcon)
: G4UImessenger()
, fOpNoviceDetCon(detcon)
{
fDetConDir = new G4UIdirectory("/OpNovice/DetectorConstruction/");
fDetConDir->SetGuidance("Configuring Detector Construction");
//
verboseCmd =
new G4UIcmdWithABool("/OpNovice/DetectorConstruction/enable_verbose", this);
verboseCmd->SetGuidance("Set flag for enabling verbose diagnostic printout");
verboseCmd->SetParameterName("enable_verbose", false);
verboseCmd->SetDefaultValue(false);
verboseCmd->AvailableForStates(G4State_PreInit);
dumpGdmlCmd =
new G4UIcmdWithABool("/OpNovice/DetectorConstruction/dumpgdml", this);
dumpGdmlCmd->SetGuidance(
"Set flag for enabling dumping the detector to a gdml file");
dumpGdmlCmd->SetParameterName("dumpgdml", false);
dumpGdmlCmd->SetDefaultValue(false);
dumpGdmlCmd->AvailableForStates(G4State_PreInit);
dumpGdmlFileNameCmd = new G4UIcmdWithAString(
"/OpNovice/DetectorConstruction/DumpGDMLFileName", this);
dumpGdmlFileNameCmd->SetGuidance("Enter file name to dump gdml file ");
dumpGdmlFileNameCmd->SetParameterName("GDMLFileName", true);
dumpGdmlFileNameCmd->SetDefaultValue("OpNovice_dump.gdml");
dumpGdmlFileNameCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceGDMLDetectorConstructionMessenger::
~OpNoviceGDMLDetectorConstructionMessenger()
{
delete fDetConDir;
delete verboseCmd;
delete dumpGdmlCmd;
delete dumpGdmlFileNameCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceGDMLDetectorConstructionMessenger::SetNewValue(
G4UIcommand* command, G4String newValue)
{
if(command == verboseCmd)
fOpNoviceDetCon->SetVerbose(verboseCmd->GetNewBoolValue(newValue));
if(command == dumpGdmlCmd)
fOpNoviceDetCon->SetDumpgdml(dumpGdmlCmd->GetNewBoolValue(newValue));
if(command == dumpGdmlFileNameCmd)
fOpNoviceDetCon->SetDumpgdmlFile(newValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -32,9 +32,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNovicePrimaryGeneratorAction.hh"
#include "OpNovicePrimaryGeneratorMessenger.hh"
#include "G4Event.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleGun.hh"
@@ -43,17 +41,14 @@
#include "Randomize.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePrimaryGeneratorAction::OpNovicePrimaryGeneratorAction()
: G4VUserPrimaryGeneratorAction()
, fParticleGun(nullptr)
{
G4int n_particle = 1;
fParticleGun = new G4ParticleGun(n_particle);
// create a messenger for this class
fGunMessenger = new OpNovicePrimaryGeneratorMessenger(this);
// default kinematic
//
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
@@ -67,7 +62,6 @@ OpNovicePrimaryGeneratorAction::OpNovicePrimaryGeneratorAction()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePrimaryGeneratorAction::~OpNovicePrimaryGeneratorAction()
{
delete fParticleGun;
@@ -75,14 +69,12 @@ OpNovicePrimaryGeneratorAction::~OpNovicePrimaryGeneratorAction()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
fParticleGun->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar()
{
G4double angle = G4UniformRand() * 360.0 * deg;
@@ -90,7 +82,6 @@ void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar(G4double angle)
{
if(fParticleGun->GetParticleDefinition()->GetParticleName() !=
@@ -117,5 +108,4 @@ void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar(G4double angle)
std::cos(angle) * e_paralle + std::sin(angle) * e_perpend;
fParticleGun->SetParticlePolarization(polar);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -32,9 +32,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNovicePrimaryGeneratorMessenger.hh"
#include "OpNovicePrimaryGeneratorAction.hh"
#include "G4SystemOfUnits.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIdirectory.hh"
@@ -86,5 +84,4 @@ void OpNovicePrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command,
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -32,7 +32,6 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceRun.hh"
#include "G4ParticleDefinition.hh"
#include "G4Run.hh"
#include "G4UnitsTable.hh"
@@ -29,18 +29,13 @@
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceRunAction.hh"
#include "OpNovicePrimaryGeneratorAction.hh"
#include "OpNoviceRun.hh"
#include "G4ParticleDefinition.hh"
#include "G4Run.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceRunAction::OpNoviceRunAction(OpNovicePrimaryGeneratorAction* prim)
: G4UserRunAction()
, fRun(nullptr)
@@ -48,9 +43,9 @@ OpNoviceRunAction::OpNoviceRunAction(OpNovicePrimaryGeneratorAction* prim)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceRunAction::~OpNoviceRunAction() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4Run* OpNoviceRunAction::GenerateRun()
{
fRun = new OpNoviceRun();
@@ -58,7 +53,6 @@ G4Run* OpNoviceRunAction::GenerateRun()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceRunAction::BeginOfRunAction(const G4Run*)
{
if(fPrimary)
@@ -71,11 +65,9 @@ void OpNoviceRunAction::BeginOfRunAction(const G4Run*)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceRunAction::EndOfRunAction(const G4Run*)
{
if(isMaster)
fRun->EndOfRun();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -31,9 +31,7 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceStackingAction.hh"
#include "OpNoviceRun.hh"
#include "G4ios.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTypes.hh"
@@ -50,11 +48,9 @@ OpNoviceStackingAction::OpNoviceStackingAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceStackingAction::~OpNoviceStackingAction() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ClassificationOfNewTrack OpNoviceStackingAction::ClassifyNewTrack(
const G4Track* aTrack)
{
@@ -72,7 +68,6 @@ G4ClassificationOfNewTrack OpNoviceStackingAction::ClassifyNewTrack(
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceStackingAction::NewStage()
{
// G4cout << "Number of Scintillation photons produced in this event : "
@@ -87,11 +82,9 @@ void OpNoviceStackingAction::NewStage()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceStackingAction::PrepareNewEvent()
{
fScintillationCounter = 0;
fCerenkovCounter = 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -28,9 +28,7 @@
/// \brief Implementation of the OpNoviceSteppingAction class
#include "OpNoviceSteppingAction.hh"
#include "OpNoviceRun.hh"
#include "G4Event.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4OpticalPhoton.hh"
@@ -46,11 +44,9 @@ OpNoviceSteppingAction::OpNoviceSteppingAction(OpNoviceEventAction* event)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceSteppingAction::~OpNoviceSteppingAction() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceSteppingAction::UserSteppingAction(const G4Step* step)
{
static G4ParticleDefinition* opticalphoton =
@@ -97,5 +93,4 @@ void OpNoviceSteppingAction::UserSteppingAction(const G4Step* step)
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,9 +1,6 @@
#----------------------------------------------------------------------------
# Setup the project
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()
cmake_minimum_required(VERSION 3.12...3.20)
project(OpNovice2)
#----------------------------------------------------------------------------
@@ -13,6 +13,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
February 24, 2021 D.Sawkey (OpNovice2-V10-07-00)
- replace deprecated optical commands and parameters with new ones
October 30, 2020 D.Sawkey (OpNovice2-V10-06-07)
- migration to G4RunManagerFactory, and don't set number of threads in main
- print histogram statistics at end of run
+236 -230
View File
@@ -4,8 +4,14 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
!!! WARNING - FPE detection is activated !!!
############################################
################################
!!! G4Backtrace is activated !!!
################################
**************************************************************
Geant4 version Name: geant4-10-07-patch-02 (11-June-2021)
Geant4 version Name: geant4-10-07-ref-06 (25-June-2021)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -226,57 +232,57 @@ OpWLS2 is created
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 174 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
LivermorePhElectric : Emin= 0 meV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 20 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 160 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEPComptonModel : Emin= 0 eV Emax= 20 MeV Fluo
LowEPComptonModel : Emin= 0 meV Emax= 20 MeV Fluo
KleinNishina : Emin= 20 MeV Emax= 100 TeV Fluo
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler5D : Emin= 0 eV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 meV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 180 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
LivermoreRayleigh : Emin= 0 meV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== 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
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
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
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
eIoni: for e- SubType=2
eIoni: for e- XStype:1 SubType=2
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
LowEnergyIoni : Emin= 0 meV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- SubType=3
eBrem: for e- XStype:4 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
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- SubType=4
ePairProd: for e- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
CoulombScat: for e- XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -284,39 +290,39 @@ CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
msc: for e+ SubType= 10
===== 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
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
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
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
eIoni: for e+ SubType=2
eIoni: for e+ XStype:1 SubType=2
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
PenIoni : Emin= 0 eV Emax= 100 keV
PenIoni : Emin= 0 meV Emax= 100 keV
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e+ SubType=3
eBrem: for e+ XStype:4 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
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ SubType=4
ePairProd: for e+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
annihil: for e+, integral:1 SubType=5 BuildTable=0
annihil: for e+ XStype:2 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
eplus2gg : Emin= 0 meV Emax= 100 TeV
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
CoulombScat: for e+ XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -324,298 +330,298 @@ CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
msc: for proton SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for proton SubType=2
hIoni: for proton XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
Bragg : Emin= 0 meV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton SubType=3
hBrems: for proton XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for proton SubType=4
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton, integral:1 SubType=1 BuildTable=1
CoulombScat: for proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
nuclearStopping: for proton SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for GenericIon SubType= 10
===== 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
UrbanMsc : Emin= 0 meV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for GenericIon SubType=2
ionIoni: for GenericIon XStype:1 SubType=2
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
ParamICRU73 : Emin= 0 eV Emax= 100 TeV deltaVI
ParamICRU73 : Emin= 0 meV Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for alpha SubType= 10
===== 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
UrbanMsc : Emin= 0 meV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for alpha SubType=2
ionIoni: for alpha XStype:1 SubType=2
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV deltaVI
BraggIon : Emin= 0 meV Emax=7.9452 MeV deltaVI
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV deltaVI
nuclearStopping: for alpha SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
msc: for anti_proton SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for anti_proton SubType=2
hIoni: for anti_proton XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
ICRU73QO : Emin= 0 meV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton SubType=3
hBrems: for anti_proton XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton SubType=4
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
CoulombScat: for anti_proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon+ SubType=2
hIoni: for kaon+ XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV deltaVI
Bragg : Emin= 0 meV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ SubType=3
hBrems: for kaon+ XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ SubType=4
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
CoulombScat: for kaon+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for kaon- SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon- SubType=2
hIoni: for kaon- XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV deltaVI
ICRU73QO : Emin= 0 meV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- SubType=3
hBrems: for kaon- XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- SubType=4
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
CoulombScat: for kaon- XStype:3 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for mu+ SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu+ SubType=2
muIoni: for mu+ XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
Bragg : Emin= 0 meV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ SubType=3
muBrems: for mu+ XStype:1 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 ModifiedMephi
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ SubType=4
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
CoulombScat: for mu+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for mu- SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu- SubType=2
muIoni: for mu- XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
ICRU73QO : Emin= 0 meV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- SubType=3
muBrems: for mu- XStype:1 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 ModifiedMephi
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- SubType=4
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
CoulombScat: for mu- XStype:3 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for pi+ SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi+ SubType=2
hIoni: for pi+ XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV deltaVI
Bragg : Emin= 0 meV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ SubType=3
hBrems: for pi+ XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ SubType=4
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
CoulombScat: for pi+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
msc: for pi- SubType= 10
===== 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
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi- SubType=2
hIoni: for pi- XStype:1 SubType=2
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
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV deltaVI
ICRU73QO : Emin= 0 meV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi- SubType=3
hBrems: for pi- XStype:1 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 ModifiedMephi
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- SubType=4
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
@@ -624,17 +630,17 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Model: hElasticCHIPS: 0 meV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 meV ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 meV ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Model: nRadCapture: 0 meV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 meV ---> 100 TeV
Process: nKiller
@@ -642,67 +648,67 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for B-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: B-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for D-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: D-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for anti_He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -710,13 +716,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -724,13 +730,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -738,12 +744,12 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: anti_lambdaInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: hFritiofCaptureAtRest
@@ -751,13 +757,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: hElasticLHEP: 0 meV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -765,13 +771,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_proton
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: hElasticLHEP: 0 meV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -779,13 +785,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -793,60 +799,60 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for e+
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Model: G4ElectroVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e-
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Model: G4ElectroVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
Model: GammaNPreco: 0 eV ---> 200 MeV
Model: GammaNPreco: 0 meV ---> 200 MeV
Model: BertiniCascade: 199 MeV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -854,27 +860,27 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: lambdaInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
Model: G4MuonVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
Model: G4MuonVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 meV ---> 100 TeV
Process: muMinusCaptureAtRest
@@ -882,25 +888,25 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: hElasticGlauber: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: hElasticGlauber: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -908,25 +914,25 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for proton
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: hElasticCHIPS: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for sigma-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: sigma-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -934,13 +940,13 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
================================================================
=======================================================================
@@ -963,7 +969,7 @@ Time limit for long lived isomeres (ns) 1
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 2
Electron internal conversion ID 3
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
@@ -994,7 +1000,7 @@ See commands in /vis/modeling/trajectories/ for other options.
Run terminated.
Run Summary
Number of events processed : 100000
User=1.250000s Real=1.315126s Sys=0.000000s
User=1.160000s Real=1.207562s Sys=0.000000s
Run Summary
---------------------------------
@@ -1010,22 +1016,22 @@ Average number of photons absorbed by WLS2 per event: 0
Average number of photons created by WLS2 per event: 0
Average energy of WLS2 photons created per event: 0 eV.
Average number of OpRayleigh per event: 0
Average number of OpAbsorption per event: 0.0091
Average number of OpAbsorption per event: 0.009
Surface events (on +X surface, maximum one per photon) this run:
# of primary particles: 1e+05
OpAbsorption before surface: 76
Total # of surface events: 99924
OpAbsorption before surface: 59
Total # of surface events: 99941
Unaccounted for: 0
Surface events by process:
Fresnel refraction: 45872
Lambertian reflection: 49275
Lobe reflection: 231
Spike reflection: 578
Backscattering: 2932
Absorption: 1036
Sum: 99924
Fresnel refraction: 46227
Lambertian reflection: 48837
Lobe reflection: 236
Spike reflection: 647
Backscattering: 2980
Absorption: 1014
Sum: 99941
Unaccounted for: 0
---------------------------------
@@ -1038,8 +1044,8 @@ Surface events by process:
WLS emission time: mean = 0 ns rms = 0 ns.
WLS2 emission spectrum: mean = 0 eV rms = 0 eV.
WLS2 emission time: mean = 0 ns rms = 0 ns.
X momentum dir of backward-going photons: mean = -0.684935 rms = 0.243225
Y momentum dir of backward-going photons: mean = -0.00317783 rms = 0.486876
X momentum dir of backward-going photons: mean = -0.685706 rms = 0.244906
Y momentum dir of backward-going photons: mean = -0.00655794 rms = 0.484159
... write file : opnovice2.root - done
... close file : opnovice2.root - done
@@ -43,7 +43,6 @@
/process/optical/cerenkov/setMaxPhotons 3
/process/optical/cerenkov/setMaxBetaChange 10
/process/optical/scintillation/setEnhancedTimeConstants true
/process/optical/scintillation/setByParticleType false
/process/optical/scintillation/setTrackInfo false
/process/optical/scintillation/setFiniteRiseTime true
@@ -50,9 +50,6 @@
/process/optical/processActivation OpMieHG false
/process/optical/processActivation OpWLS false
/process/optical/scintillation/setEnhancedTimeConstants true
/process/optical/scintillation/setYieldFactor 10
#/process/optical/scintillation/setExcitationRatio .5
/process/optical/scintillation/setByParticleType true
/process/optical/scintillation/setTrackInfo false
/process/optical/scintillation/setFiniteRiseTime false
+3
View File
@@ -11,6 +11,9 @@ Simulation of optical photons generation and transport.
Defines optical surfaces and exercises optical physics processes
(Cerenkov, Scintillation, Absorption, Rayleigh, ...). Uses stacking
mechanism to count the secondary particles generated.
Via the command line one can select an option to define the detector via a
gdml file. An example gdml file is provided that corresponds
to the detector configuration defined in OpNoviceDetectorConstruction.cc.
OpNovice2
--------
+1 -4
View File
@@ -1,9 +1,6 @@
#----------------------------------------------------------------------------
# Setup the project
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()
cmake_minimum_required(VERSION 3.12...3.20)
project(wls)
#----------------------------------------------------------------------------
+7
View File
@@ -15,6 +15,13 @@ track of all tags.
----------------------------------------------------------
May 21, 2021 D. Sawkey (WLS-V10-07-01)
- WLSMaterials: use correct material property names
May 19, 2021 V. Ivanchenko (WLS-V10-07-00)
- WLSPrimaryGeneratorAction - use G4PhysicsFreeVector instead of
G4PhysicsOrderedFreeVector
November 5, 2020 D. Sawkey (WLS-V10-06-02)
- Large cleaning including clang-format style guidelines.
- Add counters to record run and event statistics.
@@ -353,10 +353,10 @@ void WLSMaterials::CreateMaterials()
G4MaterialPropertiesTable* mptPolystyrene = new G4MaterialPropertiesTable();
mptPolystyrene->AddProperty("RINDEX", energySmall, refractiveIndexPS);
mptPolystyrene->AddProperty("ABSLENGTH", energySmall, absPS);
mptPolystyrene->AddProperty("FASTCOMPONENT", energy, scintilFast);
mptPolystyrene->AddProperty("SCINTILLATIONCOMPONENT1", energy, scintilFast);
mptPolystyrene->AddConstProperty("SCINTILLATIONYIELD", 10. / keV);
mptPolystyrene->AddConstProperty("RESOLUTIONSCALE", 1.0);
mptPolystyrene->AddConstProperty("FASTTIMECONSTANT", 10. * ns);
mptPolystyrene->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 10. * ns);
fPolystyrene->SetMaterialPropertiesTable(mptPolystyrene);
@@ -103,7 +103,7 @@ void WLSPrimaryGeneratorAction::BuildEmissionSpectrum()
for(G4int i = 0; i < numOfMaterials; ++i)
{
G4PhysicsOrderedFreeVector* vec = new G4PhysicsOrderedFreeVector();
G4PhysicsFreeVector* vec = new G4PhysicsFreeVector();
G4MaterialPropertiesTable* MPT =
(*theMaterialTable)[i]->GetMaterialPropertiesTable();
@@ -168,8 +168,8 @@ void WLSPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
if(WLSIntensity)
{
G4PhysicsOrderedFreeVector* WLSIntegral =
(G4PhysicsOrderedFreeVector*) ((*fIntegralTable)(
G4PhysicsFreeVector* WLSIntegral =
(G4PhysicsFreeVector*) ((*fIntegralTable)(
fMaterial->GetIndex()));
G4double CIImax = WLSIntegral->GetMaxValue();
File diff suppressed because it is too large Load Diff