Import Geant4 10.5.0 source tree
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
//$Id$
|
||||
|
||||
///\file "optical/OpNovice2/.README.txt"
|
||||
///\brief Example OpNovice2 README page
|
||||
///\brief Example AnaEx01 README page
|
||||
|
||||
/*! \page ExampleOpNovice2 Example OpNovice2
|
||||
/*! \page ExampleOpNovice2 Example OpNovice2
|
||||
|
||||
OpNovice2
|
||||
---------
|
||||
|
||||
Investigate optical properties and parameters. Details of optical
|
||||
photon boundary interactions on a surface are recorded. Details
|
||||
of optical photon generation and transport are recorded.
|
||||
|
||||
|
||||
\section OpNovice2_s1 GEOMETRY DEFINITION
|
||||
|
||||
@@ -18,7 +20,6 @@
|
||||
in the DetectorMessenger class.
|
||||
|
||||
Material properties may be added using the macro commands:
|
||||
\verbatim
|
||||
# for the box:
|
||||
/opnovice2/boxProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
|
||||
/opnovice2/boxConstProperty NAME VALUE
|
||||
@@ -27,7 +28,6 @@
|
||||
/opnovice2/worldConstProperty NAME VALUE
|
||||
# for the surface:
|
||||
/opnovice2/surfaceProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
|
||||
\verbatim
|
||||
|
||||
Multiple energy and value pairs may be specified for the energy-dependent
|
||||
properties.
|
||||
@@ -35,9 +35,7 @@
|
||||
Values are in Geant4 internal units. Energy is in MeV.
|
||||
|
||||
Example:
|
||||
\verbatim
|
||||
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000005 1.32 0.000008 1.34
|
||||
\verbatim
|
||||
sets the refractive index of the box to 1.3 at 2 eV, 1.32 at 5 eV, and
|
||||
1.34 at 8 eV.
|
||||
|
||||
@@ -59,70 +57,173 @@
|
||||
The Visualization Manager is set in the main().
|
||||
The initialisation of the drawing is done via the commands
|
||||
/vis/... in the macro vis.mac. To get visualisation:
|
||||
\verbatim
|
||||
> /control/execute vis.mac
|
||||
\endverbatim
|
||||
or run the program with no command line arguments:
|
||||
\verbatim
|
||||
$ ./OpNovice2
|
||||
\endverbatim
|
||||
|
||||
|
||||
\section OpNovice2_s5 HOW TO START ?
|
||||
|
||||
- Execute OpNovice2 in 'batch' mode from macro files
|
||||
\verbatim
|
||||
% OpNovice2 surface.mac
|
||||
\endverbatim
|
||||
|
||||
|
||||
- Execute OpNovice2 in 'interactive mode' with visualization
|
||||
\verbatim
|
||||
% OpNovice2
|
||||
....
|
||||
Idle> type your commands
|
||||
....
|
||||
Idle> exit
|
||||
\endverbatim
|
||||
|
||||
6- RESULTS
|
||||
\section OpNovice2_s6 RESULTS
|
||||
|
||||
A table of optical photon events is printed at the end of the run.
|
||||
|
||||
7- HISTOGRAMS
|
||||
\section OpNovice2_s7 HISTOGRAMS
|
||||
|
||||
OpNovice2 has several predefined 1D histograms :
|
||||
1 : Cerenkov spectrum
|
||||
2 : scintillation spectrum
|
||||
3 : boundary process status
|
||||
4 : X momentum dir of scattered photons with px < 0
|
||||
5 : Y momentum dir of scattered photons with px < 0
|
||||
6 : Z momentum dir of scattered photons with px < 0
|
||||
7 : X momentum dir of scattered photons with px >= 0
|
||||
8 : Y momentum dir of scattered photons with px >= 0
|
||||
9 : Z momentum dir of scattered photons with px >= 0
|
||||
10 : X momentum dir of Fresnel-refracted photons
|
||||
11 : Y momentum dir of Fresnel-refracted photons
|
||||
12 : Z momentum dir of Fresnel-refracted photons
|
||||
OpNovice2 has several predefined 1D histograms :
|
||||
1 : Cerenkov spectrum
|
||||
2 : scintillation spectrum
|
||||
3 : boundary process status
|
||||
4 : X momentum dir of scattered photons with px < 0
|
||||
5 : Y momentum dir of scattered photons with px < 0
|
||||
6 : Z momentum dir of scattered photons with px < 0
|
||||
7 : X momentum dir of scattered photons with px >= 0
|
||||
8 : Y momentum dir of scattered photons with px >= 0
|
||||
9 : Z momentum dir of scattered photons with px >= 0
|
||||
10 : X momentum dir of Fresnel-refracted photons
|
||||
11 : Y momentum dir of Fresnel-refracted photons
|
||||
12 : Z momentum dir of Fresnel-refracted photons
|
||||
|
||||
Histograms 4-12 are recorded for photons scattered from the +X
|
||||
surface of the cube. Only the first interaction is recorded.
|
||||
|
||||
The histograms are managed by G4Analysis classes.
|
||||
The histos can be individually activated with the command:
|
||||
\verbatim
|
||||
/analysis/h1/set id nbBins valMin valMax unit
|
||||
\endverbatim
|
||||
where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..)
|
||||
Histograms 4-12 are recorded for photons scattered from the +X
|
||||
surface of the cube. Only the first interaction is recorded.
|
||||
|
||||
One can control the name of the histograms file with the command:
|
||||
\verbatim
|
||||
/analysis/setFileName name (default opnovice2)
|
||||
The histograms are managed by G4Analysis classes.
|
||||
The histos can be individually activated with the command :
|
||||
/analysis/h1/set id nbBins valMin valMax unit
|
||||
where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..)
|
||||
|
||||
One can control the name of the histograms file with the command:
|
||||
/analysis/setFileName name (default opnovice2)
|
||||
|
||||
It is possible to choose the format of the histogram file : root (default),
|
||||
hbook, xml, csv, by using namespace in HistoManager.hh
|
||||
|
||||
It is also possible to print selected histograms on an ascii file:
|
||||
/analysis/h1/setAscii id
|
||||
All selected histos will be written on a file name.ascii (default opnovice2)
|
||||
|
||||
///\file "analysis/AnaEx01/.README.txt"
|
||||
///\brief Example AnaEx01 README page
|
||||
|
||||
/*! \page ExampleAnaEx01 Example AnaEx01
|
||||
|
||||
Examples AnaEx01, AnaEx02 and AnaEx03 show the usage of histogram and tuple
|
||||
manipulations using G4Analysis, ROOT and AIDA compliant systems on the same
|
||||
scenario. All analysis manipulations (histo booking, filling, saving histos
|
||||
in a file, etc...) are located in one class : HistoManager, implementation of
|
||||
which is different in each example. All the other classes are same in all
|
||||
three examples.
|
||||
|
||||
This example shows the usage of histogram and tuple manipulations using
|
||||
G4Analysis system.
|
||||
|
||||
The example is an adaptation of examples/novice/N03. It describes a simple
|
||||
sampling calorimeter setup.
|
||||
|
||||
\section AnaEx01_s1 Detector description
|
||||
|
||||
The calorimeter is a box made of a given number of layers. A layer
|
||||
consists of an absorber plate and of a detection gap. The layer is
|
||||
replicated.
|
||||
|
||||
Six parameters define the calorimeter :
|
||||
- the material of the absorber,
|
||||
- the thickness of an absorber plate,
|
||||
- the material of the detection gap,
|
||||
- the thickness of a gap,
|
||||
- the number of layers,
|
||||
- the transverse size of the calorimeter (the input face is a square).
|
||||
|
||||
The default geometry is constructed in DetectorConstruction class,
|
||||
but all of the above parameters can be modified interactively via
|
||||
the commands defined in the DetectorMessenger class.
|
||||
|
||||
<pre>
|
||||
|<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
|
||||
| | | |
|
||||
==========================================================================
|
||||
|| | || | || | ||
|
||||
|| | || | || | ||
|
||||
beam || absorber | gap || absorber | gap || absorber | gap ||
|
||||
======> || | || | || | ||
|
||||
|| | || | || | ||
|
||||
==========================================================================
|
||||
|
||||
</pre>
|
||||
|
||||
\section AnaEx01_s2 Physics list
|
||||
|
||||
The particle's type and the physic processes which will be available
|
||||
in this example are set in the FTFP_BERT physics list.
|
||||
|
||||
\section AnaEx01_s3 Action Initialization
|
||||
|
||||
A newly introduced class, ActionInitialization,
|
||||
instantiates and registers to Geant4 kernel all user action classes
|
||||
which are defined thread-local and a run action class
|
||||
which is defined both thread-local and global.
|
||||
|
||||
The thread-local action classes are defined in
|
||||
ActionInitialization::Build()
|
||||
and the global run action class is defined in
|
||||
ActionInitialization::BuildForMaster().
|
||||
Note that ActionInitialization::Build() is also used to
|
||||
instatiate user action clasess in sequential mode.
|
||||
|
||||
\section AnaEx01_s4 An event : PrimaryGeneratorAction
|
||||
|
||||
The primary kinematic consists of a single particle which hits the
|
||||
calorimeter perpendicular to the input face. The type of the particle
|
||||
and its energy are set in the PrimaryGeneratorAction class, and can
|
||||
be changed via the G4 build-in commands of ParticleGun class.
|
||||
|
||||
|
||||
\section AnaEx01_s5 Histograms
|
||||
|
||||
AnaEx01 can produce 4 histograms :
|
||||
|
||||
- EAbs : total energy deposit in absorber per event
|
||||
- EGap : total energy deposit in gap per event
|
||||
- LAbs : total track length of charged particles in absorber per event
|
||||
- LGap : total track length of charged particles in gap per event
|
||||
|
||||
And 2 Ntuples :
|
||||
- Ntuple1:
|
||||
- one row per event : EnergyAbs EnergyGap
|
||||
- Ntuple2:
|
||||
- one row per event : TrackLAbs TrackLGap
|
||||
|
||||
These histos and ntuples are booked in HistoManager and filled from
|
||||
EventAction.
|
||||
|
||||
One can control the name of the histograms file and its format:
|
||||
- default name : AnaEx01
|
||||
The format of the histogram file can be : root (default),
|
||||
xml, csv. Include correct g4nnn.hh in HistoManager.hh
|
||||
|
||||
\section AnaEx01_s7 How to build
|
||||
|
||||
An additional step is needed when building the example with GNUmake
|
||||
due to using the extra shared directory:
|
||||
\verbatim
|
||||
% cd path_to_AnaEx01/AnaEx01
|
||||
% gmake setup
|
||||
% gmake
|
||||
\endverbatim
|
||||
|
||||
It is possible to choose the format of the histogram file : root (default),
|
||||
hbook, xml, csv, by using namespace in HistoManager.hh
|
||||
|
||||
It is also possible to print selected histograms on an ascii file:
|
||||
\verbatim
|
||||
/analysis/h1/setAscii id
|
||||
This will copy the files from shared in the example include and src;
|
||||
to remove these files:
|
||||
\verbatim
|
||||
% gmake clean_setup
|
||||
\endverbatim
|
||||
All selected histos will be written on a file name.ascii (default opnovice2)
|
||||
|
||||
*/
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# $Id: GNUmakefile 66335 2012-12-17 22:37:39Z gum $
|
||||
# --------------------------------------------------------------
|
||||
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
|
||||
# --------------------------------------------------------------
|
||||
|
||||
@@ -13,6 +13,17 @@ track of all tags.
|
||||
* Reverse chronological order (last date on top), please *
|
||||
----------------------------------------------------------
|
||||
|
||||
October 26, 2018 D.Sawkey (OpNovice2-V10-04-07)
|
||||
- SteppingAction.cc: fix Histo in multithreaded
|
||||
- HistoManager.hh: add commented g4csv include
|
||||
|
||||
September 20, 2018 D.Sawkey (OpNovice2-V10-04-06)
|
||||
- add scintillation and Cerenkov GetNumPhotons to SteppingAction
|
||||
|
||||
August 16, 2018 D.Sawkey (OpNovice2-V10-04-05)
|
||||
- messenger command to allow different materials for tank, world
|
||||
- fix initialization of material property tables
|
||||
|
||||
June 2, 2018 D.Sawkey (OpNovice2-V10-04-04)
|
||||
- fix GNUmakefile
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: LXe.cc 110190 2018-05-17 10:50:30Z allison $
|
||||
//
|
||||
/// \file optical/OpNovice2/OpNovice2.cc
|
||||
/// \brief Main program of the optical/OpNovice2 example
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/control/verbose 2
|
||||
/tracking/verbose 0
|
||||
|
||||
/run/initialize
|
||||
|
||||
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
|
||||
/opnovice2/boxProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
|
||||
|
||||
@@ -18,6 +16,7 @@
|
||||
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 .05 0.000008 .05
|
||||
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 .99 0.000008 .99
|
||||
|
||||
/run/initialize
|
||||
#
|
||||
/gun/particle opticalphoton
|
||||
/gun/energy 3 eV
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
############################################
|
||||
|
||||
**************************************************************
|
||||
Geant4 version Name: geant4-10-05-beta-01 (29-June-2018)
|
||||
Geant4 version Name: geant4-10-05-ref-00 (7-December-2018)
|
||||
Copyright : Geant4 Collaboration
|
||||
References : NIM A 506 (2003), 250-303
|
||||
: IEEE-TNS 53 (2006), 270-278
|
||||
@@ -63,26 +63,6 @@ End of Run User Vis Actions: none
|
||||
Some /vis commands (optionally) take a string to specify colour.
|
||||
"/vis/list" to see available colours.
|
||||
/tracking/verbose 0
|
||||
/run/initialize
|
||||
opticalSurface->DumpInfo
|
||||
Surface type = 1
|
||||
Surface finish = 0
|
||||
Surface model = 1
|
||||
|
||||
Surface parameter
|
||||
-----------------
|
||||
0
|
||||
|
||||
|
||||
FTFP_BERT : new threshold between BERT and FTFP is over the interval
|
||||
for pions : 3 to 12 GeV
|
||||
for kaons : 3 to 12 GeV
|
||||
for proton : 3 to 12 GeV
|
||||
for neutron : 3 to 12 GeV
|
||||
|
||||
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
|
||||
### Birks coefficients used in run time
|
||||
G4_WATER 0.126 mm/MeV 0.0126 g/cm^2/MeV massFactor= 85.0756 effCharge= 62.0606
|
||||
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
|
||||
The MPT for the box is now:
|
||||
0: RINDEX
|
||||
@@ -182,6 +162,27 @@ The MPT for the surface is now:
|
||||
2e-06 0.05
|
||||
8e-06 0.05
|
||||
.............
|
||||
/run/initialize
|
||||
****** opticalSurface->DumpInfo:
|
||||
Surface type = 1
|
||||
Surface finish = 3
|
||||
Surface model = 1
|
||||
|
||||
Surface parameter
|
||||
-----------------
|
||||
1.1
|
||||
|
||||
****** end of opticalSurface->DumpInfo
|
||||
|
||||
FTFP_BERT : new threshold between BERT and FTFP is over the interval
|
||||
for pions : 3 to 12 GeV
|
||||
for kaons : 3 to 12 GeV
|
||||
for proton : 3 to 12 GeV
|
||||
for neutron : 3 to 12 GeV
|
||||
|
||||
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
|
||||
### Birks coefficients used in run time
|
||||
G4_WATER 0.126 mm/MeV 0.0126 g/cm^2/MeV massFactor= 85.0756 effCharge= 62.0606
|
||||
#
|
||||
/gun/particle opticalphoton
|
||||
/gun/energy 3 eV
|
||||
@@ -202,8 +203,7 @@ The MPT for the surface is now:
|
||||
/run/beamOn 100000
|
||||
|
||||
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
|
||||
DefaultRegionForTheWorld 1 1 0
|
||||
### === Auger cascade flag: 1
|
||||
DefaultRegionForTheWorld 1 0 0
|
||||
### === Ignore cuts flag: 0
|
||||
|
||||
phot: for gamma SubType= 12 BuildTable= 0
|
||||
@@ -221,7 +221,8 @@ compt: for gamma SubType= 13 BuildTable= 1
|
||||
conv: for gamma SubType= 14 BuildTable= 1
|
||||
Lambda table from 1.022 MeV to 100 TeV, 20 bins per decade, spline: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PenConversion : Emin= 0 eV Emax= 80 GeV
|
||||
PenConversion : Emin= 0 eV Emax= 20 MeV
|
||||
BetheHeitler : Emin= 20 MeV Emax= 80 GeV AngularGenUrban
|
||||
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV AngularGenUrban
|
||||
|
||||
Rayl: for gamma SubType= 11 BuildTable= 1
|
||||
@@ -241,8 +242,8 @@ eIoni: for e- SubType= 2
|
||||
Lambda tables from threshold to 100 TeV, 20 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PenIoni : Emin= 0 eV Emax= 1 MeV
|
||||
MollerBhabha : Emin= 1 MeV Emax= 100 TeV deltaVI
|
||||
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
|
||||
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
|
||||
|
||||
eBrem: for e- SubType= 3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -276,8 +277,8 @@ eIoni: for e+ SubType= 2
|
||||
Lambda tables from threshold to 100 TeV, 20 bins per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
PenIoni : Emin= 0 eV Emax= 1 MeV
|
||||
MollerBhabha : Emin= 1 MeV Emax= 100 TeV deltaVI
|
||||
PenIoni : Emin= 0 eV Emax= 100 keV
|
||||
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
|
||||
|
||||
eBrem: for e+ SubType= 3
|
||||
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
|
||||
@@ -312,7 +313,7 @@ msc: for proton SubType= 10
|
||||
hIoni: for proton 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
|
||||
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
|
||||
@@ -336,10 +337,6 @@ CoulombScat: for proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
nuclearStopping: for proton SubType= 8 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
|
||||
|
||||
msc: for GenericIon SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -364,7 +361,7 @@ msc: for alpha SubType= 10
|
||||
ionIoni: for alpha 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
BraggIon : Emin= 0 eV Emax= 7.9452 MeV deltaVI
|
||||
BetheBloch : Emin= 7.9452 MeV Emax= 100 TeV deltaVI
|
||||
@@ -381,7 +378,7 @@ msc: for anti_proton SubType= 10
|
||||
hIoni: for anti_proton 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
|
||||
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
|
||||
@@ -405,10 +402,6 @@ CoulombScat: for anti_proton, integral: 1 SubType= 1 BuildTable= 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
|
||||
|
||||
nuclearStopping: for anti_proton SubType= 8 BuildTable= 0
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
|
||||
|
||||
msc: for kaon+ SubType= 10
|
||||
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
@@ -417,7 +410,7 @@ msc: for kaon+ SubType= 10
|
||||
hIoni: for kaon+ 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 1.05231 MeV deltaVI
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV deltaVI
|
||||
@@ -449,7 +442,7 @@ msc: for kaon- SubType= 10
|
||||
hIoni: for kaon- 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV deltaVI
|
||||
BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV deltaVI
|
||||
@@ -481,7 +474,7 @@ msc: for mu+ SubType= 10
|
||||
muIoni: for mu+ 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
|
||||
@@ -514,7 +507,7 @@ msc: for mu- SubType= 10
|
||||
muIoni: for mu- 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
|
||||
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
|
||||
@@ -547,7 +540,7 @@ msc: for pi+ SubType= 10
|
||||
hIoni: for pi+ 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
Bragg : Emin= 0 eV Emax= 297.505 keV deltaVI
|
||||
BetheBloch : Emin= 297.505 keV Emax= 100 TeV deltaVI
|
||||
@@ -579,7 +572,7 @@ msc: for pi- SubType= 10
|
||||
hIoni: for pi- 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 per decade, spline: 1
|
||||
finalRange(mm)= 0.01, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
|
||||
===== EM models for the G4Region DefaultRegionForTheWorld ======
|
||||
ICRU73QO : Emin= 0 eV Emax= 297.505 keV deltaVI
|
||||
BetheBloch : Emin= 297.505 keV Emax= 100 TeV deltaVI
|
||||
@@ -612,18 +605,15 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticCHIPS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: neutronInelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 12 GeV
|
||||
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nCapture
|
||||
Model: nRadCapture: 0 eV ---> 100 TeV
|
||||
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
|
||||
|
||||
Process: nKiller
|
||||
|
||||
@@ -633,7 +623,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: ionInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
|
||||
Model: FTFP: 2 GeV/n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
@@ -641,13 +631,13 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: He3Inelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
|
||||
Model: FTFP: 2 GeV/n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
@@ -660,7 +650,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: alphaInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
|
||||
Model: FTFP: 2 GeV/n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
@@ -669,12 +659,12 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
|
||||
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_He3Inelastic
|
||||
Model: FTFP: 0 eV /n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
@@ -685,12 +675,12 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
|
||||
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_alphaInelastic
|
||||
Model: FTFP: 0 eV /n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
@@ -701,12 +691,12 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
|
||||
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_deuteronInelastic
|
||||
Model: FTFP: 0 eV /n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
@@ -720,7 +710,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
|
||||
Process: anti_neutronInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
@@ -729,12 +719,12 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
|
||||
Model: AntiAElastic: 100 MeV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_protonInelastic
|
||||
Model: FTFP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
@@ -745,12 +735,12 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
|
||||
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: anti_tritonInelastic
|
||||
Model: FTFP: 0 eV /n ---> 100 TeV/n
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hFritiofCaptureAtRest
|
||||
@@ -765,7 +755,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: dInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
|
||||
Model: FTFP: 2 GeV/n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
@@ -774,7 +764,6 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: positronNuclear
|
||||
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for e-
|
||||
@@ -782,7 +771,6 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: electronNuclear
|
||||
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
|
||||
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for gamma
|
||||
@@ -791,20 +779,19 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Model: BertiniCascade: 0 eV ---> 3.5 GeV
|
||||
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
|
||||
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for kaon+
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: kaon+Inelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 12 GeV
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
@@ -813,13 +800,13 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticLHEP: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
|
||||
Process: kaon-Inelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 12 GeV
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
@@ -865,10 +852,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: pi+Inelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 12 GeV
|
||||
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
|
||||
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
|
||||
below 91 GeV, Glauber-Gribov above
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
|
||||
---------------------------------------------------
|
||||
Hadronic Processes for pi-
|
||||
@@ -881,10 +865,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: pi-Inelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
Model: BertiniCascade: 0 eV ---> 12 GeV
|
||||
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
|
||||
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
|
||||
below 91 GeV, Glauber-Gribov above
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber-Gribov: 0 eV ---> 100 TeV
|
||||
|
||||
Process: hBertiniCaptureAtRest
|
||||
|
||||
@@ -893,8 +874,7 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
|
||||
Process: hadElastic
|
||||
Model: hElasticCHIPS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
|
||||
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
|
||||
|
||||
Process: protonInelastic
|
||||
Model: FTFP: 3 GeV ---> 100 TeV
|
||||
@@ -911,39 +891,24 @@ CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
|
||||
Process: tInelastic
|
||||
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
|
||||
Model: FTFP: 2 GeV/n ---> 100 TeV/n
|
||||
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
|
||||
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
|
||||
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
|
||||
|
||||
================================================================
|
||||
=======================================================================
|
||||
====== Pre-compound/De-excitation Physics Parameters ========
|
||||
=======================================================================
|
||||
Type of pre-compound inverse x-section 3
|
||||
Pre-compound model active 1
|
||||
Pre-compound low energy (MeV) 0.1
|
||||
Type of de-excitation inverse x-section 3
|
||||
Type of de-excitation factory Evaporation
|
||||
Number of de-excitation channels 8
|
||||
Min excitation energy (keV) 0.01
|
||||
Min energy per nucleon for multifragmentation (MeV) 1e+05
|
||||
Level density (1/MeV) 0.1
|
||||
Time limit for long lived isomeres (ns) 1e+12
|
||||
Internal e- conversion flag 1
|
||||
Store e- internal conversion data 0
|
||||
Electron internal conversion ID 2
|
||||
Correlated gamma emission flag 0
|
||||
Max 2J for sampling of angular correlations 10
|
||||
=======================================================================
|
||||
### Run 0 start.
|
||||
... open Root analysis file : opnovice2.root - done
|
||||
number of event = 100000 User=1.310000s Real=1.315921s Sys=0.000000s
|
||||
number of event = 100000 User=1.230000s Real=1.242451s Sys=0.000000s
|
||||
|
||||
Run Summary
|
||||
---------------------------------
|
||||
Primary particle was: opticalphoton with energy 3 eV .
|
||||
OpAbsorption per event: 0
|
||||
Material of world: G4_AIR
|
||||
Material of tank: G4_WATER
|
||||
|
||||
Surface events (on +X surface) this run:
|
||||
Average number of OpRayleigh per event: 0
|
||||
Average number of OpAbsorption per event: 0
|
||||
|
||||
Surface events (on +X surface, maximum one per photon) this run:
|
||||
# of primary particles: 100000
|
||||
OpAbsorption before surface: 76
|
||||
Total # of surface events: 99924
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
$Id: README 96329 2016-04-06 15:53:16Z gcosmo $
|
||||
-------------------------------------------------------------------
|
||||
|
||||
==================================================
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/control/verbose 2
|
||||
/tracking/verbose 0
|
||||
|
||||
/opnovice2/boxProperty RAYLEIGH .000002 1 .000008 1
|
||||
/opnovice2/boxMaterial G4_PLEXIGLASS
|
||||
/opnovice2/worldMaterial G4_WATER
|
||||
|
||||
/opnovice2/boxProperty RAYLEIGH .000002 1 .000008 1
|
||||
/opnovice2/boxProperty RINDEX .000002 1.3 .000008 1.4
|
||||
/opnovice2/boxProperty ABSLENGTH .000002 1 .000005 2 .000008 3
|
||||
/opnovice2/boxProperty FASTCOMPONENT .000002 1.0 .000008 1.0
|
||||
@@ -13,10 +15,6 @@
|
||||
/opnovice2/boxConstProperty YIELDRATIO 0.8
|
||||
/opnovice2/boxConstProperty RESOLUTIONSCALE 1
|
||||
|
||||
|
||||
/run/initialize
|
||||
|
||||
|
||||
/opnovice2/surfaceModel unified
|
||||
/opnovice2/surfaceType dielectric_dielectric
|
||||
/opnovice2/surfaceFinish ground
|
||||
@@ -25,10 +23,11 @@
|
||||
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
|
||||
/opnovice2/worldProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
|
||||
|
||||
/run/initialize
|
||||
|
||||
/analysis/h1/set 1 100 0 .000010
|
||||
/analysis/h1/set 2 100 0 .000010
|
||||
|
||||
|
||||
#
|
||||
/gun/particle e-
|
||||
/gun/energy 500 keV
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: ActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
|
||||
//
|
||||
//
|
||||
/// \file optical/OpNovice2/include/ActionInitialization.hh
|
||||
|
||||
@@ -77,10 +77,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
|
||||
void SetSurfaceSigmaAlpha(G4double v);
|
||||
|
||||
void AddBoxMPV(const char* c, G4MaterialPropertyVector* mpv);
|
||||
void AddBoxMPCV(const char* c, G4double v);
|
||||
G4MaterialPropertiesTable* GetBoxMaterialPropertiesTable()
|
||||
{return fBoxMPT;}
|
||||
void AddTankMPV(const char* c, G4MaterialPropertyVector* mpv);
|
||||
void AddTankMPCV(const char* c, G4double v);
|
||||
G4MaterialPropertiesTable* GetTankMaterialPropertiesTable()
|
||||
{return fTankMPT;}
|
||||
|
||||
void AddWorldMPV(const char* c, G4MaterialPropertyVector* mpv);
|
||||
void AddWorldMPCV(const char* c, G4double v);
|
||||
@@ -91,6 +91,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
G4MaterialPropertiesTable* GetSurfaceMaterialPropertiesTable()
|
||||
{return fSurfaceMPT;}
|
||||
|
||||
void SetWorldMaterial(const G4String&);
|
||||
G4Material* GetWorldMaterial() const {return fWorldMaterial;}
|
||||
void SetTankMaterial(const G4String&);
|
||||
G4Material* GetTankMaterial() const {return fTankMaterial;}
|
||||
|
||||
virtual G4VPhysicalVolume* Construct();
|
||||
|
||||
@@ -105,11 +109,17 @@ class DetectorConstruction : public G4VUserDetectorConstruction
|
||||
G4double fTank_y;
|
||||
G4double fTank_z;
|
||||
|
||||
G4LogicalVolume* fWorld_LV;
|
||||
G4LogicalVolume* fTank_LV;
|
||||
|
||||
G4Material* fWorldMaterial;
|
||||
G4Material* fTankMaterial;
|
||||
|
||||
G4OpticalSurface* fSurface;
|
||||
|
||||
DetectorMessenger* fDetectorMessenger;
|
||||
|
||||
G4MaterialPropertiesTable* fBoxMPT;
|
||||
G4MaterialPropertiesTable* fTankMPT;
|
||||
G4MaterialPropertiesTable* fWorldMPT;
|
||||
G4MaterialPropertiesTable* fSurfaceMPT;
|
||||
};
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/// \file optical/OpNovice2/include/DetectorMessenger.hh
|
||||
/// \brief Definition of the DetectorMessenger class
|
||||
//
|
||||
// $Id: DetectorMessenger.hh 77288 2013-11-22 10:52:58Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -71,12 +70,14 @@ class DetectorMessenger: public G4UImessenger
|
||||
G4UIcmdWithAString* fSurfaceMatPropVectorCmd;
|
||||
|
||||
// the box
|
||||
G4UIcmdWithAString* fBoxMatPropVectorCmd;
|
||||
G4UIcmdWithAString* fBoxMatConstPropVectorCmd;
|
||||
G4UIcmdWithAString* fTankMatPropVectorCmd;
|
||||
G4UIcmdWithAString* fTankMatConstPropVectorCmd;
|
||||
G4UIcmdWithAString* fTankMaterialCmd;
|
||||
|
||||
// the world
|
||||
G4UIcmdWithAString* fWorldMatPropVectorCmd;
|
||||
G4UIcmdWithAString* fWorldMatConstPropVectorCmd;
|
||||
G4UIcmdWithAString* fWorldMaterialCmd;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
/// \brief Definition of the HistoManager class
|
||||
//
|
||||
//
|
||||
// $Id: HistoManager.hh 76464 2013-11-11 10:22:56Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -39,6 +38,7 @@
|
||||
|
||||
#include "g4root.hh"
|
||||
//#include "g4xml.hh"
|
||||
//#include "g4csv.hh"
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.hh 69469 2013-05-05 21:42:35Z ihrivnac $
|
||||
//
|
||||
/// \file optical/OpNovice2/include/SteppingAction.hh
|
||||
/// \brief Definition of the SteppingAction class
|
||||
@@ -46,6 +45,8 @@ class SteppingAction : public G4UserSteppingAction
|
||||
// method from the base class
|
||||
virtual void UserSteppingAction(const G4Step*);
|
||||
|
||||
private:
|
||||
G4int fVerbose;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
/// \brief Definition of the TrackInformation class
|
||||
//
|
||||
//
|
||||
// $Id: RE01TrackInformation.hh 97671 2016-06-07 08:25:00Z gcosmo $
|
||||
//
|
||||
|
||||
#ifndef TrackInformation_h
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/// \file optical/OpNovice2/include/TrackingAction.hh
|
||||
/// \brief Definition of the TrackingAction class
|
||||
//
|
||||
// $Id: TrackingAction.hh 66379 2012-12-18 09:46:33Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: ActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
|
||||
//
|
||||
/// \file optical/OpNovice2/src/ActionInitialization.cc
|
||||
/// \brief Implementation of the ActionInitialization class
|
||||
|
||||
@@ -56,12 +56,23 @@ DetectorConstruction::DetectorConstruction()
|
||||
fTank_x = fTank_y = fTank_z = 1.0*m;
|
||||
|
||||
fTank = nullptr;
|
||||
fSurface = nullptr;
|
||||
|
||||
fBoxMPT = new G4MaterialPropertiesTable();
|
||||
fWorldMPT = new G4MaterialPropertiesTable();
|
||||
fTankMPT = new G4MaterialPropertiesTable();
|
||||
fWorldMPT = new G4MaterialPropertiesTable();
|
||||
fSurfaceMPT = new G4MaterialPropertiesTable();
|
||||
|
||||
fSurface = new G4OpticalSurface("Surface");
|
||||
fSurface->SetType(dielectric_dielectric);
|
||||
fSurface->SetFinish(ground);
|
||||
fSurface->SetModel(unified);
|
||||
fSurface->SetMaterialPropertiesTable(fSurfaceMPT);
|
||||
|
||||
fTank_LV = nullptr;
|
||||
fWorld_LV = nullptr;
|
||||
|
||||
fTankMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_WATER");
|
||||
fWorldMaterial = G4NistManager::Instance()->FindOrBuildMaterial("G4_AIR");
|
||||
|
||||
fDetectorMessenger = new DetectorMessenger(this);
|
||||
}
|
||||
|
||||
@@ -76,61 +87,42 @@ DetectorConstruction::~DetectorConstruction()
|
||||
|
||||
G4VPhysicalVolume* DetectorConstruction::Construct()
|
||||
{
|
||||
fTankMaterial->SetMaterialPropertiesTable(fTankMPT);
|
||||
fTankMaterial->GetIonisation()->SetBirksConstant(0.126*mm/MeV);
|
||||
|
||||
// ------------- Materials -------------
|
||||
|
||||
G4NistManager* man = G4NistManager::Instance();
|
||||
|
||||
G4Material* air = man->FindOrBuildMaterial("G4_AIR");
|
||||
G4Material* water = man->FindOrBuildMaterial("G4_WATER");
|
||||
|
||||
//
|
||||
// ------------ Generate & Add Material Properties Table ------------
|
||||
//
|
||||
|
||||
|
||||
water->SetMaterialPropertiesTable(fBoxMPT);
|
||||
water->GetIonisation()->SetBirksConstant(0.126*mm/MeV);
|
||||
|
||||
air->SetMaterialPropertiesTable(fWorldMPT);
|
||||
fWorldMaterial->SetMaterialPropertiesTable(fWorldMPT);
|
||||
|
||||
// ------------- Volumes --------------
|
||||
// The experimental Hall
|
||||
G4Box* world_box = new G4Box("World", fExpHall_x, fExpHall_y, fExpHall_z);
|
||||
|
||||
G4LogicalVolume* world_LV
|
||||
= new G4LogicalVolume(world_box,air, "World", 0, 0, 0);
|
||||
fWorld_LV
|
||||
= new G4LogicalVolume(world_box, fWorldMaterial, "World", 0, 0, 0);
|
||||
|
||||
G4VPhysicalVolume* world_PV
|
||||
= new G4PVPlacement(0, G4ThreeVector(), world_LV, "World", 0, false, 0);
|
||||
= new G4PVPlacement(0, G4ThreeVector(), fWorld_LV, "World", 0, false, 0);
|
||||
|
||||
// The Water Tank
|
||||
G4Box* waterTank_box = new G4Box("Tank",fTank_x,fTank_y,fTank_z);
|
||||
// The tank
|
||||
G4Box* tank_box = new G4Box("Tank", fTank_x, fTank_y, fTank_z);
|
||||
|
||||
G4LogicalVolume* waterTank_log
|
||||
= new G4LogicalVolume(waterTank_box,water,"Tank",0,0,0);
|
||||
fTank_LV
|
||||
= new G4LogicalVolume(tank_box, fTankMaterial, "Tank", 0, 0, 0);
|
||||
|
||||
fTank
|
||||
= new G4PVPlacement(0, G4ThreeVector(), waterTank_log, "Tank",
|
||||
world_LV, false, 0);
|
||||
= new G4PVPlacement(0, G4ThreeVector(), fTank_LV, "Tank",
|
||||
fWorld_LV, false, 0);
|
||||
|
||||
// ------------- Surface --------------
|
||||
|
||||
fSurface = new G4OpticalSurface("Surface");
|
||||
fSurface->SetType(dielectric_dielectric);
|
||||
fSurface->SetFinish(polished);
|
||||
fSurface->SetModel(unified);
|
||||
|
||||
fSurface->SetMaterialPropertiesTable(fSurfaceMPT);
|
||||
|
||||
G4LogicalBorderSurface* surface =
|
||||
new G4LogicalBorderSurface("Surface",
|
||||
fTank, world_PV, fSurface);
|
||||
|
||||
G4OpticalSurface* opticalSurface = dynamic_cast <G4OpticalSurface*>
|
||||
(surface->GetSurface(fTank,world_PV)->GetSurfaceProperty());
|
||||
G4cout << "opticalSurface->DumpInfo" << G4endl;
|
||||
if (opticalSurface) opticalSurface->DumpInfo();
|
||||
G4cout << "****** opticalSurface->DumpInfo:" << G4endl;
|
||||
if (opticalSurface) { opticalSurface->DumpInfo(); }
|
||||
G4cout << "****** end of opticalSurface->DumpInfo" << G4endl;
|
||||
|
||||
return world_PV;
|
||||
}
|
||||
@@ -145,12 +137,12 @@ void DetectorConstruction::SetSurfaceSigmaAlpha(G4double v) {
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void DetectorConstruction::AddBoxMPV(const char* c,
|
||||
void DetectorConstruction::AddTankMPV(const char* c,
|
||||
G4MaterialPropertyVector* mpv) {
|
||||
mpv->SetSpline(true);
|
||||
fBoxMPT->AddProperty(c, mpv);
|
||||
fTankMPT->AddProperty(c, mpv);
|
||||
G4cout << "The MPT for the box is now: " << G4endl;
|
||||
fBoxMPT->DumpTable();
|
||||
fTankMPT->DumpTable();
|
||||
G4cout << "............." << G4endl;
|
||||
}
|
||||
|
||||
@@ -175,10 +167,10 @@ void DetectorConstruction::AddSurfaceMPV(const char* c,
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void DetectorConstruction::AddBoxMPCV(const char* c, G4double v) {
|
||||
fBoxMPT->AddConstProperty(c, v);
|
||||
void DetectorConstruction::AddTankMPCV(const char* c, G4double v) {
|
||||
fTankMPT->AddConstProperty(c, v);
|
||||
G4cout << "The MPT for the box is now: " << G4endl;
|
||||
fBoxMPT->DumpTable();
|
||||
fTankMPT->DumpTable();
|
||||
G4cout << "............." << G4endl;
|
||||
}
|
||||
|
||||
@@ -188,5 +180,35 @@ void DetectorConstruction::AddWorldMPCV(const char* c, G4double v) {
|
||||
G4cout << "The MPT for the world is now: " << G4endl;
|
||||
fWorldMPT->DumpTable();
|
||||
G4cout << "............." << G4endl;
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void DetectorConstruction::SetWorldMaterial(const G4String& mat) {
|
||||
G4Material* pmat = G4NistManager::Instance()->FindOrBuildMaterial(mat);
|
||||
if (pmat && fWorldMaterial != pmat) {
|
||||
fWorldMaterial = pmat;
|
||||
if (fWorld_LV) {
|
||||
fWorld_LV->SetMaterial(fWorldMaterial);
|
||||
fWorldMaterial->SetMaterialPropertiesTable(fWorldMPT);
|
||||
}
|
||||
G4RunManager::GetRunManager()->PhysicsHasBeenModified();
|
||||
G4cout << "World material set to " << fWorldMaterial->GetName()
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
void DetectorConstruction::SetTankMaterial(const G4String& mat) {
|
||||
G4Material* pmat = G4NistManager::Instance()->FindOrBuildMaterial(mat);
|
||||
if (pmat && fTankMaterial != pmat) {
|
||||
fTankMaterial = pmat;
|
||||
if (fTank_LV) {
|
||||
fTank_LV->SetMaterial(fTankMaterial);
|
||||
fTankMaterial->SetMaterialPropertiesTable(fTankMPT);
|
||||
fTankMaterial->GetIonisation()->SetBirksConstant(0.126*mm/MeV);
|
||||
}
|
||||
G4RunManager::GetRunManager()->PhysicsHasBeenModified();
|
||||
G4cout << "Tank material set to " << fTankMaterial->GetName()
|
||||
<< G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/// \file optical/OpNovice2/src/DetectorMessenger.cc
|
||||
/// \brief Implementation of the DetectorMessenger class
|
||||
//
|
||||
// $Id: DetectorMessenger.cc 77288 2013-11-22 10:52:58Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -86,18 +85,24 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
|
||||
fSurfaceMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fSurfaceMatPropVectorCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fBoxMatPropVectorCmd = new G4UIcmdWithAString("/opnovice2/boxProperty", this);
|
||||
fBoxMatPropVectorCmd->SetGuidance("Set material property vector for ");
|
||||
fBoxMatPropVectorCmd->SetGuidance("the box.");
|
||||
fBoxMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fBoxMatPropVectorCmd->SetToBeBroadcasted(false);
|
||||
fTankMatPropVectorCmd =
|
||||
new G4UIcmdWithAString("/opnovice2/boxProperty", this);
|
||||
fTankMatPropVectorCmd->SetGuidance("Set material property vector for ");
|
||||
fTankMatPropVectorCmd->SetGuidance("the box.");
|
||||
fTankMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fTankMatPropVectorCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fBoxMatConstPropVectorCmd =
|
||||
fTankMatConstPropVectorCmd =
|
||||
new G4UIcmdWithAString("/opnovice2/boxConstProperty", this);
|
||||
fBoxMatConstPropVectorCmd->SetGuidance("Set material constant property ");
|
||||
fBoxMatConstPropVectorCmd->SetGuidance("for the box.");
|
||||
fBoxMatConstPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fBoxMatConstPropVectorCmd->SetToBeBroadcasted(false);
|
||||
fTankMatConstPropVectorCmd->SetGuidance("Set material constant property ");
|
||||
fTankMatConstPropVectorCmd->SetGuidance("for the box.");
|
||||
fTankMatConstPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fTankMatConstPropVectorCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fTankMaterialCmd = new G4UIcmdWithAString("/opnovice2/boxMaterial", this);
|
||||
fTankMaterialCmd->SetGuidance("Set material of box.");
|
||||
fTankMaterialCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fTankMaterialCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fWorldMatPropVectorCmd =
|
||||
new G4UIcmdWithAString("/opnovice2/worldProperty", this);
|
||||
@@ -114,6 +119,11 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
|
||||
AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fWorldMatConstPropVectorCmd->SetToBeBroadcasted(false);
|
||||
|
||||
fWorldMaterialCmd = new G4UIcmdWithAString("/opnovice2/worldMaterial", this);
|
||||
fWorldMaterialCmd->SetGuidance("Set material of world.");
|
||||
fWorldMaterialCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
|
||||
fWorldMaterialCmd->SetToBeBroadcasted(false);
|
||||
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -125,10 +135,12 @@ DetectorMessenger::~DetectorMessenger()
|
||||
delete fSurfaceModelCmd;
|
||||
delete fSurfaceSigmaAlphaCmd;
|
||||
delete fSurfaceMatPropVectorCmd;
|
||||
delete fBoxMatPropVectorCmd;
|
||||
delete fBoxMatConstPropVectorCmd;
|
||||
delete fTankMatPropVectorCmd;
|
||||
delete fTankMatConstPropVectorCmd;
|
||||
delete fTankMaterialCmd;
|
||||
delete fWorldMatPropVectorCmd;
|
||||
delete fWorldMatConstPropVectorCmd;
|
||||
delete fWorldMaterialCmd;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -311,7 +323,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
fDetector->SetSurfaceSigmaAlpha(
|
||||
G4UIcmdWithADouble::GetNewDoubleValue(newValue));
|
||||
}
|
||||
else if (command == fBoxMatPropVectorCmd) {
|
||||
else if (command == fTankMatPropVectorCmd) {
|
||||
// got a string. need to convert it to physics vector.
|
||||
// string format is property name, then pairs of energy, value
|
||||
// specify units for each value, eg 3.0*eV
|
||||
@@ -333,7 +345,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
}
|
||||
const char* c = prop.c_str();
|
||||
|
||||
fDetector->AddBoxMPV(c, mpv);
|
||||
fDetector->AddTankMPV(c, mpv);
|
||||
}
|
||||
else if (command == fWorldMatPropVectorCmd) {
|
||||
// Convert string to physics vector
|
||||
@@ -378,7 +390,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
fDetector->AddSurfaceMPV(c, mpv);
|
||||
}
|
||||
|
||||
else if (command == fBoxMatConstPropVectorCmd) {
|
||||
else if (command == fTankMatConstPropVectorCmd) {
|
||||
// Convert string to physics vector
|
||||
// string format is property name, then value
|
||||
// space delimited
|
||||
@@ -389,7 +401,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
instring >> tmp;
|
||||
G4double val = G4UIcommand::ConvertToDouble(tmp);
|
||||
const char* c = prop.c_str();
|
||||
fDetector->AddBoxMPCV(c, val);
|
||||
fDetector->AddTankMPCV(c, val);
|
||||
}
|
||||
else if (command == fWorldMatConstPropVectorCmd) {
|
||||
// Convert string to physics vector
|
||||
@@ -402,7 +414,13 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
|
||||
instring >> tmp;
|
||||
G4double val = G4UIcommand::ConvertToDouble(tmp);
|
||||
const char* c = prop.c_str();
|
||||
fDetector->AddBoxMPCV(c, val);
|
||||
fDetector->AddTankMPCV(c, val);
|
||||
}
|
||||
else if (command == fWorldMaterialCmd) {
|
||||
fDetector->SetWorldMaterial(newValue);
|
||||
}
|
||||
else if (command == fTankMaterialCmd) {
|
||||
fDetector->SetTankMaterial(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
/// \brief Implementation of the HistoManager class
|
||||
//
|
||||
//
|
||||
// $Id: HistoManager.cc 104417 2017-05-30 08:30:48Z gcosmo $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/// \file optical/OpNovice2/src/Run.cc
|
||||
/// \brief Implementation of the Run class
|
||||
//
|
||||
// $Id: Run.cc 71376 2013-06-14 07:44:50Z maire $
|
||||
//
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -34,6 +33,7 @@
|
||||
#include <numeric>
|
||||
|
||||
#include "Run.hh"
|
||||
#include "DetectorConstruction.hh"
|
||||
|
||||
#include "G4OpBoundaryProcess.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
@@ -110,6 +110,9 @@ void Run::EndOfRun()
|
||||
G4int TotNbofEvents = numberOfEvent;
|
||||
if (TotNbofEvents == 0) return;
|
||||
|
||||
const DetectorConstruction* det = (const DetectorConstruction*)
|
||||
(G4RunManager::GetRunManager()->GetUserDetectorConstruction());
|
||||
|
||||
std::ios::fmtflags mode = G4cout.flags();
|
||||
G4int prec = G4cout.precision(2);
|
||||
|
||||
@@ -118,6 +121,11 @@ void Run::EndOfRun()
|
||||
G4cout << "Primary particle was: " << fParticle->GetParticleName()
|
||||
<< " with energy " << G4BestUnit(fEkin, "Energy") << "." << G4endl;
|
||||
|
||||
G4cout << "Material of world: " << det->GetWorldMaterial()->GetName()
|
||||
<< G4endl;
|
||||
G4cout << "Material of tank: " << det->GetTankMaterial()->GetName()
|
||||
<< G4endl << G4endl;
|
||||
|
||||
if (fParticle->GetParticleName() != "opticalphoton") {
|
||||
G4cout << "Average energy of Cerenkov photons created per event: "
|
||||
<< (fCerenkovEnergy/eV)/TotNbofEvents << " eV." << G4endl;
|
||||
@@ -135,13 +143,14 @@ void Run::EndOfRun()
|
||||
G4cout << " Average energy: " << (fScintEnergy/eV)/fScintCount << " eV."
|
||||
<< G4endl;
|
||||
}
|
||||
G4cout << "Average number of OpRayleigh scatters per event: "
|
||||
<< fRayleighCount/TotNbofEvents << G4endl;
|
||||
G4cout << "\n";
|
||||
}
|
||||
G4cout << "OpAbsorption per event: " << fOpAbsorption/TotNbofEvents
|
||||
G4cout << "Average number of OpRayleigh per event: "
|
||||
<< fRayleighCount/TotNbofEvents << G4endl;
|
||||
G4cout << "Average number of OpAbsorption per event: "
|
||||
<< fOpAbsorption/TotNbofEvents << G4endl;
|
||||
G4cout <<
|
||||
"\nSurface events (on +X surface, maximum one per photon) this run:"
|
||||
<< G4endl;
|
||||
G4cout << "\nSurface events (on +X surface) this run:" << G4endl;
|
||||
G4cout << "# of primary particles: " << std::setw(8) << TotNbofEvents
|
||||
<< G4endl;
|
||||
G4cout << "OpAbsorption before surface: " << std::setw(8)
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
// * acceptance of all terms of the Geant4 Software license. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: SteppingAction.cc 71007 2013-06-09 16:14:59Z maire $
|
||||
//
|
||||
/// \file optical/OpNovice2/src/SteppingAction.cc
|
||||
/// \brief Implementation of the SteppingAction class
|
||||
@@ -53,7 +52,8 @@
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
SteppingAction::SteppingAction()
|
||||
: G4UserSteppingAction()
|
||||
: G4UserSteppingAction(),
|
||||
fVerbose(0)
|
||||
{}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
|
||||
@@ -65,7 +65,7 @@ void SteppingAction::UserSteppingAction(const G4Step* step)
|
||||
{
|
||||
static G4ParticleDefinition* opticalphoton =
|
||||
G4OpticalPhoton::OpticalPhotonDefinition();
|
||||
static G4AnalysisManager* analysisMan = G4AnalysisManager::Instance();
|
||||
G4AnalysisManager* analysisMan = G4AnalysisManager::Instance();
|
||||
Run* run = static_cast<Run*>(
|
||||
G4RunManager::GetRunManager()->GetNonConstCurrentRun());
|
||||
|
||||
@@ -269,9 +269,37 @@ void SteppingAction::UserSteppingAction(const G4Step* step)
|
||||
}
|
||||
|
||||
else { // particle != opticalphoton
|
||||
// print how many Cerenkov and scint photons produced this step
|
||||
// this demonstrates use of GetNumPhotons()
|
||||
auto proc_man = track->GetDynamicParticle()->GetParticleDefinition()
|
||||
->GetProcessManager();
|
||||
G4int n_proc = proc_man->GetPostStepProcessVector()->entries();
|
||||
G4ProcessVector* proc_vec = proc_man->GetPostStepProcessVector(typeDoIt);
|
||||
|
||||
G4int n_scint = 0;
|
||||
G4int n_cer = 0;
|
||||
for (G4int i = 0; i < n_proc; ++i) {
|
||||
if ((*proc_vec)[i]->GetProcessName().compare("Cerenkov") == 0) {
|
||||
auto cer = (G4Cerenkov*)(*proc_vec)[i];
|
||||
n_cer = cer->GetNumPhotons();
|
||||
}
|
||||
else if ((*proc_vec)[i]->GetProcessName().compare("Scintillation") == 0) {
|
||||
auto scint = (G4Scintillation*)(*proc_vec)[i];
|
||||
n_scint = scint->GetNumPhotons();
|
||||
}
|
||||
}
|
||||
if (fVerbose > 0) {
|
||||
if (n_cer > 0 || n_scint > 0) {
|
||||
G4cout << "In this step, " << n_cer
|
||||
<< " Cerenkov and " << n_scint
|
||||
<< " scintillation photons were produced." << G4endl;
|
||||
}
|
||||
}
|
||||
|
||||
// loop over secondaries, create statistics
|
||||
const std::vector<const G4Track*>* secondaries =
|
||||
step->GetSecondaryInCurrentStep();
|
||||
|
||||
|
||||
for (auto sec : *secondaries) {
|
||||
if (sec->GetDynamicParticle()->GetParticleDefinition() == opticalphoton){
|
||||
if (sec->GetCreatorProcess()->GetProcessName().compare("Cerenkov")==0){
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
/// \brief Implementation of the TrackInformation class
|
||||
//
|
||||
//
|
||||
// $Id: TrackInformation.cc 97671 2016-06-07 08:25:00Z gcosmo $
|
||||
//
|
||||
|
||||
#include "TrackInformation.hh"
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
/// \file optical/OpNovice2/src/TrackingAction.cc
|
||||
/// \brief Implementation of the TrackingAction class
|
||||
//
|
||||
// $Id: TrackingAction.cc 66379 2012-12-18 09:46:33Z gcosmo $
|
||||
//
|
||||
|
||||
#include "TrackingAction.hh"
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/control/verbose 2
|
||||
/tracking/verbose 0
|
||||
|
||||
/run/initialize
|
||||
|
||||
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
|
||||
/opnovice2/boxProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
|
||||
|
||||
@@ -18,6 +16,7 @@
|
||||
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 .05 0.000008 .05
|
||||
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 .99 0.000008 .99
|
||||
|
||||
/run/initialize
|
||||
#
|
||||
/gun/particle opticalphoton
|
||||
/gun/energy 3 eV
|
||||
|
||||
@@ -1,231 +0,0 @@
|
||||
//$Id$
|
||||
|
||||
///\file "optical/OpNovice2/.README.txt"
|
||||
///\brief Example AnaEx01 README page
|
||||
|
||||
/*! \page ExampleOpNovice2 Example OpNovice2
|
||||
|
||||
OpNovice2
|
||||
---------
|
||||
|
||||
Investigate optical properties and parameters. Details of optical
|
||||
photon boundary interactions on a surface are recorded. Details
|
||||
of optical photon generation and transport are recorded.
|
||||
|
||||
|
||||
\section OpNovice2_s1 GEOMETRY DEFINITION
|
||||
|
||||
The geometry consists of a cube "box" with a side of 2 m inside
|
||||
the world cube of side 20 m. Optical properties of the box, the world,
|
||||
and the surface may be set interactively via the commands defined
|
||||
in the DetectorMessenger class.
|
||||
|
||||
Material properties may be added using the macro commands:
|
||||
# for the box:
|
||||
/opnovice2/boxProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
|
||||
/opnovice2/boxConstProperty NAME VALUE
|
||||
# for the world:
|
||||
/opnovice2/worldProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
|
||||
/opnovice2/worldConstProperty NAME VALUE
|
||||
# for the surface:
|
||||
/opnovice2/surfaceProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
|
||||
|
||||
Multiple energy and value pairs may be specified for the energy-dependent
|
||||
properties.
|
||||
|
||||
Values are in Geant4 internal units. Energy is in MeV.
|
||||
|
||||
Example:
|
||||
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000005 1.32 0.000008 1.34
|
||||
sets the refractive index of the box to 1.3 at 2 eV, 1.32 at 5 eV, and
|
||||
1.34 at 8 eV.
|
||||
|
||||
\section OpNovice2_s2 PHYSICS LIST
|
||||
|
||||
The FTFP_BERT physics list is used, with electromagnetic option
|
||||
EMZ (option4) and G4OpticalPhysics for the optical physics.
|
||||
|
||||
\section OpNovice2_s3 AN EVENT : THE PRIMARY GENERATOR
|
||||
|
||||
The primary kinematic consists of a single particle. The type of
|
||||
the particle, its energy, position, and direction, are set
|
||||
in the PrimaryGeneratorAction class, and can be changed via the G4
|
||||
build-in commands of G4ParticleGun class (see the macros provided with
|
||||
this example).
|
||||
|
||||
\section OpNovice2_s4 VISUALIZATION
|
||||
|
||||
The Visualization Manager is set in the main().
|
||||
The initialisation of the drawing is done via the commands
|
||||
/vis/... in the macro vis.mac. To get visualisation:
|
||||
> /control/execute vis.mac
|
||||
or run the program with no command line arguments:
|
||||
$ ./OpNovice2
|
||||
|
||||
\section OpNovice2_s5 HOW TO START ?
|
||||
|
||||
- Execute OpNovice2 in 'batch' mode from macro files
|
||||
% OpNovice2 surface.mac
|
||||
|
||||
- Execute OpNovice2 in 'interactive mode' with visualization
|
||||
% OpNovice2
|
||||
....
|
||||
Idle> type your commands
|
||||
....
|
||||
Idle> exit
|
||||
|
||||
\section OpNovice2_s6 RESULTS
|
||||
|
||||
A table of optical photon events is printed at the end of the run.
|
||||
|
||||
\section OpNovice2_s7 HISTOGRAMS
|
||||
|
||||
OpNovice2 has several predefined 1D histograms :
|
||||
1 : Cerenkov spectrum
|
||||
2 : scintillation spectrum
|
||||
3 : boundary process status
|
||||
4 : X momentum dir of scattered photons with px < 0
|
||||
5 : Y momentum dir of scattered photons with px < 0
|
||||
6 : Z momentum dir of scattered photons with px < 0
|
||||
7 : X momentum dir of scattered photons with px >= 0
|
||||
8 : Y momentum dir of scattered photons with px >= 0
|
||||
9 : Z momentum dir of scattered photons with px >= 0
|
||||
10 : X momentum dir of Fresnel-refracted photons
|
||||
11 : Y momentum dir of Fresnel-refracted photons
|
||||
12 : Z momentum dir of Fresnel-refracted photons
|
||||
|
||||
Histograms 4-12 are recorded for photons scattered from the +X
|
||||
surface of the cube. Only the first interaction is recorded.
|
||||
|
||||
The histograms are managed by G4Analysis classes.
|
||||
The histos can be individually activated with the command :
|
||||
/analysis/h1/set id nbBins valMin valMax unit
|
||||
where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..)
|
||||
|
||||
One can control the name of the histograms file with the command:
|
||||
/analysis/setFileName name (default opnovice2)
|
||||
|
||||
It is possible to choose the format of the histogram file : root (default),
|
||||
hbook, xml, csv, by using namespace in HistoManager.hh
|
||||
|
||||
It is also possible to print selected histograms on an ascii file:
|
||||
/analysis/h1/setAscii id
|
||||
All selected histos will be written on a file name.ascii (default opnovice2)
|
||||
//$Id$
|
||||
|
||||
///\file "analysis/AnaEx01/.README.txt"
|
||||
///\brief Example AnaEx01 README page
|
||||
|
||||
/*! \page ExampleAnaEx01 Example AnaEx01
|
||||
|
||||
Examples AnaEx01, AnaEx02 and AnaEx03 show the usage of histogram and tuple
|
||||
manipulations using G4Analysis, ROOT and AIDA compliant systems on the same
|
||||
scenario. All analysis manipulations (histo booking, filling, saving histos
|
||||
in a file, etc...) are located in one class : HistoManager, implementation of
|
||||
which is different in each example. All the other classes are same in all
|
||||
three examples.
|
||||
|
||||
This example shows the usage of histogram and tuple manipulations using
|
||||
G4Analysis system.
|
||||
|
||||
The example is an adaptation of examples/novice/N03. It describes a simple
|
||||
sampling calorimeter setup.
|
||||
|
||||
\section AnaEx01_s1 Detector description
|
||||
|
||||
The calorimeter is a box made of a given number of layers. A layer
|
||||
consists of an absorber plate and of a detection gap. The layer is
|
||||
replicated.
|
||||
|
||||
Six parameters define the calorimeter :
|
||||
- the material of the absorber,
|
||||
- the thickness of an absorber plate,
|
||||
- the material of the detection gap,
|
||||
- the thickness of a gap,
|
||||
- the number of layers,
|
||||
- the transverse size of the calorimeter (the input face is a square).
|
||||
|
||||
The default geometry is constructed in DetectorConstruction class,
|
||||
but all of the above parameters can be modified interactively via
|
||||
the commands defined in the DetectorMessenger class.
|
||||
|
||||
<pre>
|
||||
|<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
|
||||
| | | |
|
||||
==========================================================================
|
||||
|| | || | || | ||
|
||||
|| | || | || | ||
|
||||
beam || absorber | gap || absorber | gap || absorber | gap ||
|
||||
======> || | || | || | ||
|
||||
|| | || | || | ||
|
||||
==========================================================================
|
||||
|
||||
</pre>
|
||||
|
||||
\section AnaEx01_s2 Physics list
|
||||
|
||||
The particle's type and the physic processes which will be available
|
||||
in this example are set in the FTFP_BERT physics list.
|
||||
|
||||
\section AnaEx01_s3 Action Initialization
|
||||
|
||||
A newly introduced class, ActionInitialization,
|
||||
instantiates and registers to Geant4 kernel all user action classes
|
||||
which are defined thread-local and a run action class
|
||||
which is defined both thread-local and global.
|
||||
|
||||
The thread-local action classes are defined in
|
||||
ActionInitialization::Build()
|
||||
and the global run action class is defined in
|
||||
ActionInitialization::BuildForMaster().
|
||||
Note that ActionInitialization::Build() is also used to
|
||||
instatiate user action clasess in sequential mode.
|
||||
|
||||
\section AnaEx01_s4 An event : PrimaryGeneratorAction
|
||||
|
||||
The primary kinematic consists of a single particle which hits the
|
||||
calorimeter perpendicular to the input face. The type of the particle
|
||||
and its energy are set in the PrimaryGeneratorAction class, and can
|
||||
be changed via the G4 build-in commands of ParticleGun class.
|
||||
|
||||
|
||||
\section AnaEx01_s5 Histograms
|
||||
|
||||
AnaEx01 can produce 4 histograms :
|
||||
|
||||
- EAbs : total energy deposit in absorber per event
|
||||
- EGap : total energy deposit in gap per event
|
||||
- LAbs : total track length of charged particles in absorber per event
|
||||
- LGap : total track length of charged particles in gap per event
|
||||
|
||||
And 2 Ntuples :
|
||||
- Ntuple1:
|
||||
- one row per event : EnergyAbs EnergyGap
|
||||
- Ntuple2:
|
||||
- one row per event : TrackLAbs TrackLGap
|
||||
|
||||
These histos and ntuples are booked in HistoManager and filled from
|
||||
EventAction.
|
||||
|
||||
One can control the name of the histograms file and its format:
|
||||
- default name : AnaEx01
|
||||
The format of the histogram file can be : root (default),
|
||||
xml, csv. Include correct g4nnn.hh in HistoManager.hh
|
||||
|
||||
\section AnaEx01_s7 How to build
|
||||
|
||||
An additional step is needed when building the example with GNUmake
|
||||
due to using the extra shared directory:
|
||||
\verbatim
|
||||
% cd path_to_AnaEx01/AnaEx01
|
||||
% gmake setup
|
||||
% gmake
|
||||
\endverbatim
|
||||
|
||||
This will copy the files from shared in the example include and src;
|
||||
to remove these files:
|
||||
\verbatim
|
||||
% gmake clean_setup
|
||||
\endverbatim
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user