Import Geant4 11.0.0.beta source tree
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
+1034
-1287
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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+11591
-11682
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
+55
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user