Import Geant4 10.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-10 11:51:14 +02:00
parent e2d2f9810a
commit 286caacf06
12421 changed files with 730077 additions and 502383 deletions
+115 -31
View File
@@ -1,4 +1,4 @@
//$Id$
//$Id: .README 78001 2013-12-02 08:24:53Z gcosmo $
///\file "B4/.README"
///\brief Example B4 README page
@@ -12,6 +12,10 @@
\section B4_s1 GEOMETRY DEFINITION
The geometry is constructed in B4DetectorConstruction class
(see also
\link B4cDetectorConstruction B4c \endlink,
\link B4dDetectorConstruction B4d \endlink variants).
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.
@@ -22,14 +26,18 @@
- the number of layers, and
- the transverse size of the calorimeter (the entrance face is a square).
In addition a transverse uniform magnetic field can be applied and set
via the interactive command defined using the G4GenericMessenger class.
In addition, a global, uniform, and transverse magnetic field can be
applied using G4GlobalMagFieldMessenger, instantiated in
B4DetectorConstruction::ConstructSDandField()
(see also
\link B4cDetectorConstruction::ConstructSDandField() B4c \endlink,
\link B4dDetectorConstruction::ConstructSDandField() B4d \endlink variants)
with a non zero field value, or via interactive commands.
For example:
\verbatim
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
\endverbatim
<pre>
|<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
@@ -66,7 +74,34 @@
\endverbatim
allows to activate/inactivate the processes one by one.
\section B4_s3 PRIMARY GENERATOR
\section B4_s3 ACTION INITALIZATION
A newly introduced class, B4aActionInitialization, (see also
\link B4bActionInitialization B4b \endlink,
\link B4cActionInitialization B4c \endlink,
\link B4dActionInitialization B4d \endlink variants),
instantiates and registers to Geant4 kernel all user action classes;
While in sequential mode the action classes are instatiated just once,
via invoking the method:
B4aActionInitialization::Build()
(see also
\link B4bActionInitialization::Build() B4b \endlink,
\link B4cActionInitialization::Build() B4c \endlink,
\link B4dActionInitialization::Build() B4d \endlink variants),
in multi-threading mode the same method is invoked for each thread worker
and so all user action classes are defined thread-local.
A run action class is instantiated both thread-local
and global that's why its instance is created also in the method
B4aActionInitialization::BuildForMaster()
(see also
\link B4bActionInitialization::BuildForMaster() B4b \endlink,
\link B4cActionInitialization::BuildForMaster() B4c \endlink,
\link B4dActionInitialization::BuildForMaster() B4d \endlink variants),
which is invoked only in multi-threading mode.
\section B4_s4 PRIMARY GENERATOR
The primary beam consists of a single particle which hits the
calorimeter perpendicular to the input face. The type of the particle
@@ -74,19 +109,17 @@
be changed via the G4 built-in commands of the G4ParticleGun class (see
the macros provided with this example).
\section B4_s4 RUNS and EVENTS
\section B4_s5 RUNS and EVENTS
A run is a set of events.
The user can choose the frequency of printing from B4aEventAction (or event
action classes in other options) via the interactive command defined
using the G4GenericMessenger class, for example:
The user can choose the frequency of printing via the Geant4 interactive
command, for example:
\verbatim
/B4/event/setPrintModulo 100
/run/printProgress 100
\endverbatim
\section B4_s5- DETECTOR RESPONSE
\section B4_s6- DETECTOR RESPONSE
The energy deposit and track lengths of the charged particles are recorded on
an event by event basis in the Absober and Gap layers.
@@ -94,7 +127,7 @@
In order to demonstrate several possible ways of data scoring,
the example is provided in four variants:
\subsection s5a Variant a: User Actions
\subsection s6a Variant a: User Actions
These 4 quantities are data members of the B4aEventAction class.
They are collected step by step in
@@ -105,24 +138,24 @@
filled in H1D histograms and ntuple to accumulate statistic and compute
dispersion.
\subsection s5b Variant b: User data object
\subsection s6b Variant b: User data object
In order to avoid dependencies between action classes, a user object
B4bRunData is defined with data members needed to the accounted
information.
B4bRunData, derived from G4Run, is defined with data members needed
for the accounted information.
In order to reduce the number of data members a 2-dimensions array
is introduced for each quantity.
Then the quantities are collected step by step in user action classes:
B4bSteppingAction::UserSteppingAction() and
B4bEventAction::EndOfEventAction() in a similar way as in variant a.
\subsection s5c Variant c: Hits and Sensitive detectors
\subsection s6c Variant c: Hits and Sensitive detectors
In this option, the physics quantities are accounted using the hits
and sensitive detectors framework defined in the Geant4 kernel.
The physics quantities are stored in B4cCalorHit via two B4cCalorimeterSD
objects, one associated with the Absorber volume and another one with Gap
in B4cDetectorConstruction.
in B4cDetectorConstruction::ConstructSDandField().
In contrary to the B2 example (Tracker) where a new hit is created
with each track passing the sensitive volume (in the calorimeter), only one
@@ -131,7 +164,7 @@
the quantities per each layer are also available in addition to the total
quantities.
\subsection s5d Variant d: Scorer
\subsection s6d Variant d: Scorer
In this option, the Geant4 scorers which are defined on the top of hits
and sensitive detectors Geant4 framework are used.
@@ -139,30 +172,34 @@
detector classes but rather uses the classes already defined
in Geant4. In this example, the G4MultiFunctionalDetector with
G4PSEnergyDeposit and G4PSTrackLength primitive scores are used (see
B4dDetectorConstruction class).
B4dDetectorConstruction::ConstructSDandField()).
Also with this approach, the quantities per each layer are available
in addition to the total quantities.
\section B4_s6 HISTOGRAMS
\section B4_s7 HISTOGRAMS
The analysis tools are used to accumulate statistics and compute the dispersion
of the energy deposit and track lengths of the charged particles.
H1D histograms are created in B4RunAction::BeginOfRunAction() for the
H1D histograms are created in B4RunAction::B4RunAction() (see also
\link B4bRunAction::B4bRunAction() B4b \endlink variant) for the
following quantities:
- Energy deposit in absorber
- Energy deposit in gap
- Track length in absorber
- Track length in gap
The same values are also saved in an ntuple.
The histograms and ntuple are saved in the output file in a format
according to a technology selected in B4Analysis.hh.
The same values are also saved in an ntuple. The histograms and ntuple are saved
in the output file in a format according to a technology selected in B4Analysis.hh.
The accumulated statistic and computed dispersion is printed at the end of
run, in B4RunAction::EndOfRunAction().
run, in B4RunAction::EndOfRunAction() ((see also
\link B4bRunAction::EndOfRunAction() B4b \endlink variant).
When running in multi-threading mode, the histograms accumulated on threads are
automatically merged in a single output file, while the ntuple is written
in files per thread.
\section B4_s7 VISUALIZATION TUTORIAL
\section B4_s8 VISUALIZATION TUTORIAL
Additional visualization tutorial macros are available in the visTutor
subdirectory. They can be tried as:
@@ -175,7 +212,49 @@ Idle > /control/execute visTutor/exN03VisX.mac
For details, see comment lines described in the macro files.
These macros are designed to help your understanding of the User's Guide.
<hr>
\section B4_s9 HOW TO RUN
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
\verbatim
% exampleB4a [-m macro ] [-u UIsession] [-t nThreads]
\endverbatim
The -t option is available only in multi-threading mode
and it allows the user to override the Geant4 default number of
threads. The number of threads can be also set via G4FORCENUMBEROFTHREADS
environment variable which has the top priority.
- Execute exampleB4a in the 'interactive mode' with visualization
\verbatim
% exampleB4a
and type in the commands from run1.mac line by line:
Idle> /tracking/verbose 1
Idle> /run/beamOn 1
Idle> ...
Idle> exit
\endverbatim
or
\verbatim
Idle> /control/execute run1.mac
....
Idle> exit
\endverbatim
- Execute exampleB4a in the 'batch' mode from macro files
(without visualization)
\verbatim
% exampleB4a -m run2.mac
% exampleB4a -m exampleB4.in > exampleB4.out
\endverbatim
- Execute exampleB4a in the 'interactive mode' with a selected UI session,
e.g. tcsh
\verbatim
% exampleB4a -u tcsh
\endverbatim
]<hr>
The following paragraphs are common to all basic examples
@@ -241,8 +320,13 @@ The following paragraphs are common to all basic examples
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
\verbatim
% exampleB4a [-m macro ] [-u UIsession]
% exampleB4a [-m macro ] [-u UIsession] [-t nThreads]
\endverbatim
The -t option is available only in multi-threading mode
and it allows the user to override the Geant4 default number of
threads. The number of threads can be also set via G4FORCENUMBEROFTHREADS
environment variable which has the top priority.
- Execute exampleB4a in the 'interactive mode' with visualization
\verbatim
+2
View File
@@ -1,3 +1,5 @@
# $Id: CMakeLists.txt 68058 2013-03-13 14:47:43Z gcosmo $
#----------------------------------------------------------------------------
# Setup the project
#
+32 -21
View File
@@ -23,19 +23,22 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: exampleB4a.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file exampleB4a.cc
/// \brief Main program of the B4a example
#include "B4DetectorConstruction.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4aEventAction.hh"
#include "B4aSteppingAction.hh"
#include "B4aActionInitialization.hh"
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4UIcommand.hh"
#include "FTFP_BERT.hh"
#include "Randomize.hh"
@@ -53,7 +56,9 @@
namespace {
void PrintUsage() {
G4cerr << " Usage: " << G4endl;
G4cerr << " exampleB4a [-m macro ] [-u UIsession]" << G4endl;
G4cerr << " exampleB4a [-m macro ] [-u UIsession] [-t nThreads]" << G4endl;
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
}
@@ -63,16 +68,24 @@ int main(int argc,char** argv)
{
// Evaluate arguments
//
if ( argc > 5 ) {
if ( argc > 7 ) {
PrintUsage();
return 1;
}
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
G4int nThreads = 0;
#endif
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];
#ifdef G4MULTITHREADED
else if ( G4String(argv[i]) == "-t" ) {
nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
}
#endif
else {
PrintUsage();
return 1;
@@ -81,11 +94,18 @@ int main(int argc,char** argv)
// Choose the Random engine
//
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
G4Random::setTheEngine(new CLHEP::RanecuEngine);
// Construct the default run manager
//
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
if ( nThreads > 0 ) {
runManager->SetNumberOfThreads(nThreads);
}
#else
G4RunManager * runManager = new G4RunManager;
#endif
// Set mandatory initialization classes
//
@@ -95,19 +115,10 @@ int main(int argc,char** argv)
G4VModularPhysicsList* physicsList = new FTFP_BERT;
runManager->SetUserInitialization(physicsList);
// Set user action classes
//
runManager->SetUserAction(new B4PrimaryGeneratorAction);
//
runManager->SetUserAction(new B4RunAction());
//
B4aEventAction* eventAction = new B4aEventAction();
runManager->SetUserAction(eventAction);
//
B4aSteppingAction* steppingAction
= new B4aSteppingAction(detConstruction, eventAction);
runManager->SetUserAction(steppingAction);
B4aActionInitialization* actionInitialization
= new B4aActionInitialization(detConstruction);
runManager->SetUserInitialization(actionInitialization);
// Initialize G4 kernel
//
runManager->Initialize();
+229 -195
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-09-06-ref-00 (30-November-2012)
Geant4 version Name: geant4-10-00-ref-00 (6-December-2013)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -12,10 +12,13 @@
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
Using Root
***** Table : Nb of materials = 3 *****
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.261 cm Imean: 823.000 eV
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.247 cm
Imean: 823.000 eV
---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole
---> Isotope: Pb204 Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 %
---> Isotope: Pb206 Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 %
@@ -24,7 +27,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.006 cm Imean: 188.000 eV
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.078 cm
Imean: 188.000 eV
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole
---> Isotope: 36 Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 %
---> Isotope: 38 Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 %
@@ -32,7 +37,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 114561548.020 pc Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 113804112.837 pc
Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole
---> Isotope: 1 Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 %
---> Isotope: 2 Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 %
@@ -58,12 +65,10 @@ Current available graphics systems are:
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
OpenGLImmediateQt (OGLI, OGLIQt)
OpenGLImmediateX (OGLIX)
OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK)
OpenGLStoredQt (OGL, OGLS, OGLSQt)
OpenGLImmediateXm (OGLI, OGLIXm)
OpenGLStoredX (OGLSX)
OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK)
OpenGLStoredXm (OGL, OGLS, OGLSXm)
RayTracer (RayTracer)
RayTracerX (RayTracerX)
VRML1FILE (VRML1FILE)
@@ -116,7 +121,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -143,7 +148,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -193,13 +198,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -213,7 +219,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -245,6 +251,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -270,6 +277,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -295,6 +303,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -321,6 +330,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -353,6 +363,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -384,6 +395,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -409,215 +421,221 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
============================================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
Hadronic Processes for <GenericIon>
-----------------------------------
ionInelastic Models: Binary Light Ion Cascade: Emin(GeV)= 0 Emax(GeV)= 4
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
ionInelastic Crs sctns: Glauber-Gribov nucleus nucleus: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_neutron>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_neutron
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_proton
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: GheishaElastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_proton>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 0.1
AntiAElastic: Emin(GeV)= 0.1 Emax(GeV)= 100000
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hFritiofCaptureAtRest
AntiProtonInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for e+
AntiProtonInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hFritiofCaptureAtRest
---------------------------------------------------
Hadronic Processes for e-
Hadronic Processes for <e+>
-----------------------------------
PositronNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
PositronNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
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 <e->
-----------------------------------
ElectroNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
---------------------------------------------------
Hadronic Processes for kaon+
ElectroNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <gamma>
-----------------------------------
PhotonInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 3.5
TheoFSGenerator: Emin(GeV)= 3 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for kaon-
PhotonInelastic Crs sctns: PhotoNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <kaon+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hBertiniCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for lambda
KaonPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonPlusInelastic Crs sctns: ChipsKaonPlusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Hadronic Processes for <kaon->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: muMinusCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for neutron
KaonMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsNeutronElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonMinusInelastic Crs sctns: ChipsKaonMinusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: neutronInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
Hadronic Processes for <lambda>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for pi+
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
LambdaInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 6
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
LambdaInelastic Crs sctns: ChipsHyperonInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <mu->
muMinusCaptureAtRest
Hadronic Processes for <neutron>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
hadElastic Crs sctns: ChipsNeutronElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
NeutronInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
NeutronInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
nCapture Models: G4LCapture: Emin(GeV)= 0 Emax(GeV)= 20000
nCapture Crs sctns: GheishaCaptureXS: Emin(GeV)= 0 Emax(GeV)= 100000
nFission Models: G4LFission: Emin(GeV)= 0 Emax(GeV)= 20000
nFission Crs sctns: GheishaFissionXS: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <pi+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionPlusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Hadronic Processes for <pi->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionMinusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: hBertiniCaptureAtRest
Hadronic Processes for <proton>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for proton
hadElastic Crs sctns: ChipsProtonElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
ProtonInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: protonInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
ProtonInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
============================================================================================
### Run 0 start.
Using Root analysis manager
---> Begin of event: 0
================================================================
### Run 0 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 288.831 MeV total track length: 20.4665 cm
Gap: total energy: 8.19232 MeV total track length: 3.81315 cm
Absorber: total energy: 283.263 MeV total track length: 19.743 cm
Gap: total energy: 10.6009 MeV total track length: 5.29096 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 288.831 MeV rms = 0 eV
EGap : mean = 8.19232 MeV rms = 0 eV
LAbs : mean = 20.4665 cm rms = 0 fm
LGap : mean = 3.81315 cm rms = 0 fm
EAbs : mean = 283.263 MeV rms = 0 eV
EGap : mean = 10.6009 MeV rms = 0 eV
LAbs : mean = 19.743 cm rms = 0 fm
LGap : mean = 5.29096 cm rms = 0 fm
... write Root file : B4.root - done
Transportation, msc, hIoni, ionIoni
hBrems, hPairProd, eIoni, eBrem
annihil, CoulombScat, phot, compt
conv, muIoni, muBrems, muPairProd
PhotonInelastic, ElectroNuclear, PositronNuclear, Decay
hadElastic, NeutronInelastic, nCapture, nFission
ProtonInelastic, PionPlusInelastic, PionMinusInelastic, KaonPlusInelastic
KaonMinusInelastic, KaonZeroLInelastic, KaonZeroSInelastic, LambdaInelastic
AntiLambdaInelastic,SigmaMinusInelastic,AntiSigmaMinusInelastic, SigmaPlusInelastic
AntiSigmaPlusInelastic, XiMinusInelastic,AntiXiMinusInelastic, XiZeroInelastic
AntiXiZeroInelastic,OmegaMinusInelastic,AntiOmegaMinusInelastic,AntiProtonInelastic
AntiNeutronInelastic,AntiDeuteronInelastic,AntiTritonInelasticProcess,AntiHe3InelasticProcess
AntiAlphaInelasticProcess,hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest
dInelastic, tInelastic, He3Inelastic, alphaInelastic
ionInelastic, nKiller
photonNuclear, electronNuclear, positronNuclear, Decay
hadElastic, neutronInelastic, nCapture, protonInelastic
pi+Inelastic, pi-Inelastic, kaon+Inelastic, kaon-Inelastic
kaon0LInelastic, kaon0SInelastic, lambdaInelastic,anti-lambdaInelastic
sigma-Inelastic,anti_sigma-Inelastic, sigma+Inelastic,anti_sigma+Inelastic
xi-Inelastic, anti_xi-Inelastic, xi0Inelastic, anti_xi0Inelastic
omega-Inelastic,anti_omega-Inelastic,anti_protonInelastic,anti_neutronInelastic
anti_deuteronInelastic,anti_tritonInelastic, anti_He3Inelastic,anti_alphaInelastic
hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest, dInelastic
tInelastic, He3Inelastic, alphaInelastic, ionInelastic
nKiller
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -639,7 +657,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -666,7 +684,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -716,13 +734,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -736,7 +755,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -768,6 +787,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -793,6 +813,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -818,6 +839,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -844,6 +866,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -876,6 +899,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -907,6 +931,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -932,22 +957,23 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 1 start.
Using Root analysis manager
---> Begin of event: 0
### Run 1 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 282.08 MeV total track length: 20.1981 cm
Gap: total energy: 16.6294 MeV total track length: 8.51564 cm
Absorber: total energy: 282.146 MeV total track length: 20.3465 cm
Gap: total energy: 18.8759 MeV total track length: 9.43449 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 282.08 MeV rms = 0 eV
EGap : mean = 16.6294 MeV rms = 0 eV
LAbs : mean = 20.1981 cm rms = 0 fm
LGap : mean = 8.51564 cm rms = 0 fm
EAbs : mean = 282.146 MeV rms = 0 eV
EGap : mean = 18.8759 MeV rms = 0 eV
LAbs : mean = 20.3465 cm rms = 0 fm
LGap : mean = 9.43449 cm rms = 0 fm
... write Root file : B4.root - done
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -969,7 +995,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -996,7 +1022,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -1046,13 +1072,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1066,7 +1093,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1098,6 +1125,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1123,6 +1151,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1148,6 +1177,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1174,6 +1204,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1206,6 +1237,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1237,6 +1269,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1262,21 +1295,22 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 2 start.
Using Root analysis manager
---> Begin of event: 0
### Run 2 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 462.772 MeV total track length: 33.1144 cm
Gap: total energy: 21.7635 MeV total track length: 11.0673 cm
Absorber: total energy: 468.273 MeV total track length: 33.5299 cm
Gap: total energy: 16.8004 MeV total track length: 8.15542 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 462.772 MeV rms = 0 eV
EGap : mean = 21.7635 MeV rms = 0 eV
LAbs : mean = 33.1144 cm rms = 0 fm
LGap : mean = 11.0673 cm rms = 0 fm
EAbs : mean = 468.273 MeV rms = 0 eV
EGap : mean = 16.8004 MeV rms = 0 eV
LAbs : mean = 33.5299 cm rms = 0 fm
LGap : mean = 8.15542 cm rms = 0 fm
... write Root file : B4.root - done
Graphics systems deleted.
Visualization Manager deleting...
+2 -3
View File
@@ -15,7 +15,6 @@
/gui/addMenu run Run
/gui/addButton run "beamOn 1" "/run/beamOn 1"
/gui/addButton run run1 "/control/execute run1.mac"
/gui/addButton run run2 "/control/execute run2.mac"
#
# Gun menu :
/gui/addMenu gun Gun
@@ -38,14 +37,14 @@
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wire"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
#
# To limit the output flow in the "dump" widget :
/B4/event/setPrintModulo 100
/run/printProgress 100
#
# User defined icon :
/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4Analysis.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4Analysis.hh
/// \brief Selection of the analysis technology
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4DetectorConstruction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4DetectorConstruction.hh
/// \brief Definition of the B4DetectorConstruction class
@@ -34,10 +34,8 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4Box;
class G4VPhysicalVolume;
class G4UniformMagField;
class G4GenericMessenger;
class G4GlobalMagFieldMessenger;
/// Detector construction class to define materials and geometry.
/// The calorimeter is a box made of a given number of layers. A layer consists
@@ -50,11 +48,8 @@ class G4GenericMessenger;
/// - the number of layers,
/// - the transverse size of the calorimeter (the input face is a square).
///
/// In addition a transverse uniform magnetic field is defined in
/// SetMagField() method which can be activated
/// via a command defined using G4GenericMessenger class:
/// - /B4/det/setMagField value unit
/// In addition a transverse uniform magnetic field is defined
/// via G4GlobalMagFieldMessenger class.
class B4DetectorConstruction : public G4VUserDetectorConstruction
{
@@ -64,11 +59,8 @@ class B4DetectorConstruction : public G4VUserDetectorConstruction
public:
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
// set methods
//
void SetMagField(G4double fieldValue);
// get methods
//
const G4VPhysicalVolume* GetAbsorberPV() const;
@@ -82,11 +74,11 @@ class B4DetectorConstruction : public G4VUserDetectorConstruction
// data members
//
G4GenericMessenger* fMessenger; // messenger
G4UniformMagField* fMagField; // magnetic field
G4VPhysicalVolume* fAbsorberPV; // the absorber physical volume
G4VPhysicalVolume* fGapPV; // the gap physical volume
static G4ThreadLocal G4GlobalMagFieldMessenger* fMagFieldMessenger;
// magnetic field messenger
G4VPhysicalVolume* fAbsorberPV; // the absorber physical volume
G4VPhysicalVolume* fGapPV; // the gap physical volume
G4bool fCheckOverlaps; // option to activate checking of volumes overlaps
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.hh
/// \brief Definition of the B4PrimaryGeneratorAction class
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.hh 74265 2013-10-02 14:41:20Z gcosmo $
//
/// \file B4RunAction.hh
/// \brief Definition of the B4RunAction class
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4aActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4aActionInitialization.hh
/// \brief Definition of the B4aActionInitialization class
#ifndef B4aActionInitialization_h
#define B4aActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
class B4DetectorConstruction;
/// Action initialization class.
///
class B4aActionInitialization : public G4VUserActionInitialization
{
public:
B4aActionInitialization(B4DetectorConstruction*);
virtual ~B4aActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
private:
B4DetectorConstruction* fDetConstruction;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4aEventAction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4aEventAction.hh
/// \brief Definition of the B4aEventAction class
@@ -34,10 +34,6 @@
#include "G4UserEventAction.hh"
#include "globals.hh"
class B4RunAction;
class G4GenericMessenger;
/// Event action class
///
/// It defines data members to hold the energy deposit and track lengths
@@ -45,11 +41,6 @@ class G4GenericMessenger;
/// - fEnergyAbs, fEnergyGap, fTrackLAbs, fTrackLGap
/// which are collected step by step via the functions
/// - AddAbs(), AddGap()
///
/// The data member fPrintModulo defines the frequency of printing
/// the accumulated quantities. Its value can be changed via a command
/// defined using G4GenericMessenger class:
/// - /B4/event/setPrintModulo value
class B4aEventAction : public G4UserEventAction
{
@@ -62,19 +53,12 @@ class B4aEventAction : public G4UserEventAction
void AddAbs(G4double de, G4double dl);
void AddGap(G4double de, G4double dl);
void SetPrintModulo(G4int value);
private:
G4GenericMessenger* fMessenger;
B4RunAction* fRunAction;
G4double fEnergyAbs;
G4double fEnergyGap;
G4double fTrackLAbs;
G4double fTrackLGap;
G4int fPrintModulo;
};
// inline functions
@@ -88,10 +72,6 @@ inline void B4aEventAction::AddGap(G4double de, G4double dl) {
fEnergyGap += de;
fTrackLGap += dl;
}
inline void B4aEventAction::SetPrintModulo(G4int value) {
fPrintModulo = value;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4aSteppingAction.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4aSteppingAction.hh
/// \brief Definition of the B4aSteppingAction class
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode without visualization
#
# Set some default verbose
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode with visualization
#
# Sets some default verbose
+2 -2
View File
@@ -21,12 +21,12 @@
# 20 events
#
/tracking/verbose 0
/B4/event/setPrintModulo 5
/run/printProgress 5
/run/beamOn 20
#
# Magnetic field
#
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
/run/beamOn 3
#
# Activate/inactivate physics processes
+1 -1
View File
@@ -7,6 +7,6 @@
# electron 50 MeV in direction (0.,0.,1.)
# 1000 events
#
/B4/event/setPrintModulo 100
/run/printProgress 100
/run/beamOn 1000
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4DetectorConstruction.cc 77601 2013-11-26 17:08:44Z gcosmo $
//
/// \file B4DetectorConstruction.cc
/// \brief Implementation of the B4DetectorConstruction class
@@ -37,7 +37,8 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVReplica.hh"
#include "G4UniformMagField.hh"
#include "G4GlobalMagFieldMessenger.hh"
#include "G4AutoDelete.hh"
#include "G4GeometryManager.hh"
#include "G4PhysicalVolumeStore.hh"
@@ -47,43 +48,28 @@
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4FieldManager.hh"
#include "G4TransportationManager.hh"
#include "G4GenericMessenger.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include <stdio.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal
G4GlobalMagFieldMessenger* B4DetectorConstruction::fMagFieldMessenger = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4DetectorConstruction::B4DetectorConstruction()
: G4VUserDetectorConstruction(),
fMessenger(0),
fMagField(0),
fAbsorberPV(0),
fGapPV(0),
fCheckOverlaps(true)
{
// Define /B4/det commands using generic messenger class
fMessenger
= new G4GenericMessenger(this, "/B4/det/", "Detector construction control");
// Define /B4/det/setMagField command
G4GenericMessenger::Command& setMagFieldCmd
= fMessenger->DeclareMethod("setMagField",
&B4DetectorConstruction::SetMagField,
"Define magnetic field value (in X direction");
setMagFieldCmd.SetUnitCategory("Magnetic flux density");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4DetectorConstruction::~B4DetectorConstruction()
{
delete fMagField;
delete fMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -103,8 +89,7 @@ void B4DetectorConstruction::DefineMaterials()
{
// Lead material defined using NIST Manager
G4NistManager* nistManager = G4NistManager::Instance();
G4bool fromIsotopes = false;
nistManager->FindOrBuildMaterial("G4_Pb", fromIsotopes);
nistManager->FindOrBuildMaterial("G4_Pb");
// Liquid argon material
G4double a; // mass of a mole;
@@ -142,9 +127,10 @@ G4VPhysicalVolume* B4DetectorConstruction::DefineVolumes()
G4Material* gapMaterial = G4Material::GetMaterial("liquidArgon");
if ( ! defaultMaterial || ! absorberMaterial || ! gapMaterial ) {
G4cerr << "Cannot retrieve materials already defined. " << G4endl;
G4cerr << "Exiting application " << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot retrieve materials already defined.";
G4Exception("B4DetectorConstruction::DefineVolumes()",
"MyCode0001", FatalException, msg);
}
//
@@ -290,25 +276,17 @@ G4VPhysicalVolume* B4DetectorConstruction::DefineVolumes()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4DetectorConstruction::SetMagField(G4double fieldValue)
{
// Apply a global uniform magnetic field along X axis
G4FieldManager* fieldManager
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
// Delete the existing magnetic field
if ( fMagField ) delete fMagField;
if ( fieldValue != 0. ) {
// create a new one if not null
fMagField
= new G4UniformMagField(G4ThreeVector(fieldValue, 0., 0.));
fieldManager->SetDetectorField(fMagField);
fieldManager->CreateChordFinder(fMagField);
}
else {
fMagField = 0;
fieldManager->SetDetectorField(fMagField);
}
void B4DetectorConstruction::ConstructSDandField()
{
// Create global magnetic field messenger.
// Uniform magnetic field is then created automatically if
// the field value is not zero.
G4ThreeVector fieldValue = G4ThreeVector();
fMagFieldMessenger = new G4GlobalMagFieldMessenger(fieldValue);
fMagFieldMessenger->SetVerboseLevel(1);
// Register the field messenger for deleting
G4AutoDelete::Register(fMagFieldMessenger);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.cc
/// \brief Implementation of the B4PrimaryGeneratorAction class
@@ -85,9 +85,12 @@ void B4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
worldZHalfLength = worldBox->GetZHalfLength();
}
else {
G4cerr << "World volume of box not found." << G4endl;
G4cerr << "Perhaps you have changed geometry." << G4endl;
G4cerr << "The gun will be place in the center." << G4endl;
G4ExceptionDescription msg;
msg << "World volume of box not found." << G4endl;
msg << "Perhaps you have changed geometry." << G4endl;
msg << "The gun will be place in the center.";
G4Exception("B4PrimaryGeneratorAction::GeneratePrimaries()",
"MyCode0002", JustWarning, msg);
}
// Set gun position
+70 -64
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4RunAction.cc
/// \brief Implementation of the B4RunAction class
@@ -41,50 +41,30 @@
B4RunAction::B4RunAction()
: G4UserRunAction()
{
}
// set printing event number per each event
G4RunManager::GetRunManager()->SetPrintProgress(1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4RunAction::~B4RunAction()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Book histograms, ntuple
//
// Create analysis manager
// The choice of analysis technology is done via selectin of a namespace
// in B4Analysis.hh
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4cout << "Using " << analysisManager->GetType()
<< " analysis manager" << G4endl;
G4cout << "Using " << analysisManager->GetType() << G4endl;
// Create directories
//analysisManager->SetHistoDirectoryName("histograms");
//analysisManager->SetNtupleDirectoryName("ntuple");
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
analysisManager->SetVerboseLevel(1);
analysisManager->SetFirstHistoId(1);
// Creating histograms
// Book histograms, ntuple
//
// Creating histograms
analysisManager->CreateH1("1","Edep in absorber", 100, 0., 800*MeV);
analysisManager->CreateH1("2","Edep in gap", 100, 0., 100*MeV);
analysisManager->CreateH1("3","trackL in absorber", 100, 0., 1*m);
analysisManager->CreateH1("4","trackL in gap", 100, 0., 50*cm);
// Creating ntuple
//
analysisManager->CreateNtuple("B4", "Edep and TrackL");
@@ -97,43 +77,69 @@ void B4RunAction::BeginOfRunAction(const G4Run* run)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* aRun)
B4RunAction::~B4RunAction()
{
G4int nofEvents = aRun->GetNumberOfEvent();
if ( nofEvents == 0 ) return;
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic \n" << G4endl;
G4cout
<< " EAbs : mean = " << G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy")
<< G4endl;
G4cout
<< " EGap : mean = " << G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy")
<< G4endl;
G4cout
<< " LAbs : mean = " << G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(3)->rms(), "Length")
<< G4endl;
G4cout
<< " LGap : mean = " << G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(4)->rms(), "Length")
<< G4endl;
}
// save histograms
//
analysisManager->Write();
analysisManager->CloseFile();
// complete cleanup
//
delete G4AnalysisManager::Instance();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* /*run*/)
{
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Get analysis manager
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* /*run*/)
{
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic ";
if(isMaster) {
G4cout << "for the entire run \n" << G4endl;
}
else {
G4cout << "for the local thread \n" << G4endl;
}
G4cout << " EAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy") << G4endl;
G4cout << " EGap : mean = "
<< G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy") << G4endl;
G4cout << " LAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(3)->rms(), "Length") << G4endl;
G4cout << " LGap : mean = "
<< G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(4)->rms(), "Length") << G4endl;
}
// save histograms & ntuple
//
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4aActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4aActionInitialization.cc
/// \brief Implementation of the B4aActionInitialization class
#include "B4aActionInitialization.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4aEventAction.hh"
#include "B4aSteppingAction.hh"
#include "B4DetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4aActionInitialization::B4aActionInitialization
(B4DetectorConstruction* detConstruction)
: G4VUserActionInitialization(),
fDetConstruction(detConstruction)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4aActionInitialization::~B4aActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4aActionInitialization::BuildForMaster() const
{
SetUserAction(new B4RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4aActionInitialization::Build() const
{
SetUserAction(new B4PrimaryGeneratorAction);
SetUserAction(new B4RunAction);
B4aEventAction* eventAction = new B4aEventAction;
SetUserAction(eventAction);
SetUserAction(new B4aSteppingAction(fDetConstruction,eventAction));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+9 -30
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4aEventAction.cc 75604 2013-11-04 13:17:26Z gcosmo $
//
/// \file B4aEventAction.cc
/// \brief Implementation of the B4aEventAction class
@@ -34,7 +34,6 @@
#include "G4RunManager.hh"
#include "G4Event.hh"
#include "G4GenericMessenger.hh"
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -44,42 +43,21 @@
B4aEventAction::B4aEventAction()
: G4UserEventAction(),
fMessenger(0),
fEnergyAbs(0.),
fEnergyGap(0.),
fTrackLAbs(0.),
fTrackLGap(0.),
fPrintModulo(1)
{
// Define /B4/event commands using generic messenger class
fMessenger = new G4GenericMessenger(this, "/B4/event/", "Event control");
// Define /B4/event/setPrintModulo command
G4GenericMessenger::Command& setPrintModulo
= fMessenger->DeclareProperty("setPrintModulo",
fPrintModulo,
"Print events modulo n");
setPrintModulo.SetRange("value>0");
}
fTrackLGap(0.)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4aEventAction::~B4aEventAction()
{
delete fMessenger;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4aEventAction::BeginOfEventAction(const G4Event* evt)
void B4aEventAction::BeginOfEventAction(const G4Event* /*event*/)
{
G4int eventID = evt->GetEventID();
if ( eventID % fPrintModulo == 0 ) {
G4cout << "\n---> Begin of event: " << eventID << G4endl;
//CLHEP::HepRandom::showEngineStatus();
}
// initialisation per event
fEnergyAbs = 0.;
fEnergyGap = 0.;
@@ -89,7 +67,7 @@ void B4aEventAction::BeginOfEventAction(const G4Event* evt)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4aEventAction::EndOfEventAction(const G4Event* evt)
void B4aEventAction::EndOfEventAction(const G4Event* event)
{
// Accumulate statistics
//
@@ -112,8 +90,9 @@ void B4aEventAction::EndOfEventAction(const G4Event* evt)
// Print per event (modulo n)
//
G4int eventID = evt->GetEventID();
if ( eventID % fPrintModulo == 0) {
G4int eventID = event->GetEventID();
G4int printModulo = G4RunManager::GetRunManager()->GetPrintProgress();
if ( ( printModulo > 0 ) && ( eventID % printModulo == 0 ) ) {
G4cout << "---> End of event: " << eventID << G4endl;
G4cout
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4aSteppingAction.cc 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4aSteppingAction.cc
/// \brief Implementation of the B4aSteppingAction class
+2
View File
@@ -1,3 +1,5 @@
# $Id: CMakeLists.txt 68058 2013-03-13 14:47:43Z gcosmo $
#----------------------------------------------------------------------------
# Setup the project
#
+32 -25
View File
@@ -23,20 +23,22 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: exampleB4b.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file exampleB4b.cc
/// \brief Main program of the B4b example
#include "B4DetectorConstruction.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4bEventAction.hh"
#include "B4bSteppingAction.hh"
#include "B4bRunData.hh"
#include "B4bActionInitialization.hh"
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4UIcommand.hh"
#include "FTFP_BERT.hh"
#include "Randomize.hh"
@@ -54,7 +56,9 @@
namespace {
void PrintUsage() {
G4cerr << " Usage: " << G4endl;
G4cerr << " exampleB4b [-m macro ] [-u UIsession]" << G4endl;
G4cerr << " exampleB4a [-m macro ] [-u UIsession] [-t nThreads]" << G4endl;
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
}
@@ -64,16 +68,24 @@ int main(int argc,char** argv)
{
// Evaluate arguments
//
if ( argc > 5 ) {
if ( argc > 7 ) {
PrintUsage();
return 1;
}
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
G4int nThreads = 0;
#endif
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];
#ifdef G4MULTITHREADED
else if ( G4String(argv[i]) == "-t" ) {
nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
}
#endif
else {
PrintUsage();
return 1;
@@ -82,11 +94,18 @@ int main(int argc,char** argv)
// Choose the Random engine
//
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
G4Random::setTheEngine(new CLHEP::RanecuEngine);
// Construct the default run manager
//
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
if ( nThreads > 0 ) {
runManager->SetNumberOfThreads(nThreads);
}
#else
G4RunManager * runManager = new G4RunManager;
#endif
// Set mandatory initialization classes
//
@@ -96,21 +115,10 @@ int main(int argc,char** argv)
G4VModularPhysicsList* physicsList = new FTFP_BERT;
runManager->SetUserInitialization(physicsList);
// Set user action classes
//
runManager->SetUserAction(new B4PrimaryGeneratorAction());
//
runManager->SetUserAction(new B4RunAction());
//
runManager->SetUserAction(new B4bEventAction());
//
B4bSteppingAction* steppingAction
= new B4bSteppingAction(detConstruction);
runManager->SetUserAction(steppingAction);
// Run data clas
new B4bRunData();
B4bActionInitialization* actionInitialization
= new B4bActionInitialization(detConstruction);
runManager->SetUserInitialization(actionInitialization);
// Initialize G4 kernel
//
runManager->Initialize();
@@ -152,7 +160,6 @@ int main(int argc,char** argv)
// owned and deleted by the run manager, so they should not be deleted
// in the main() program !
delete B4bRunData::GetInstance();
#ifdef G4VIS_USE
delete visManager;
#endif
+229 -192
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-09-06-ref-00 (30-November-2012)
Geant4 version Name: geant4-10-00-ref-00 (6-December-2013)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -12,10 +12,13 @@
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
Using Root
***** Table : Nb of materials = 3 *****
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.261 cm Imean: 823.000 eV
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.247 cm
Imean: 823.000 eV
---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole
---> Isotope: Pb204 Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 %
---> Isotope: Pb206 Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 %
@@ -24,7 +27,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.006 cm Imean: 188.000 eV
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.078 cm
Imean: 188.000 eV
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole
---> Isotope: 36 Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 %
---> Isotope: 38 Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 %
@@ -32,7 +37,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 114561548.020 pc Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 113804112.837 pc
Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole
---> Isotope: 1 Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 %
---> Isotope: 2 Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 %
@@ -58,12 +65,10 @@ Current available graphics systems are:
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
OpenGLImmediateQt (OGLI, OGLIQt)
OpenGLImmediateX (OGLIX)
OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK)
OpenGLStoredQt (OGL, OGLS, OGLSQt)
OpenGLImmediateXm (OGLI, OGLIXm)
OpenGLStoredX (OGLSX)
OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK)
OpenGLStoredXm (OGL, OGLS, OGLSXm)
RayTracer (RayTracer)
RayTracerX (RayTracerX)
VRML1FILE (VRML1FILE)
@@ -116,7 +121,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -143,7 +148,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -193,13 +198,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -213,7 +219,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -245,6 +251,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -270,6 +277,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -295,6 +303,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -321,6 +330,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -353,6 +363,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -384,6 +395,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -409,215 +421,222 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
============================================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
Hadronic Processes for <GenericIon>
-----------------------------------
ionInelastic Models: Binary Light Ion Cascade: Emin(GeV)= 0 Emax(GeV)= 4
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
ionInelastic Crs sctns: Glauber-Gribov nucleus nucleus: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_neutron>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_neutron
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_proton
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: GheishaElastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_proton>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 0.1
AntiAElastic: Emin(GeV)= 0.1 Emax(GeV)= 100000
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hFritiofCaptureAtRest
AntiProtonInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for e+
AntiProtonInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hFritiofCaptureAtRest
---------------------------------------------------
Hadronic Processes for e-
Hadronic Processes for <e+>
-----------------------------------
PositronNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
PositronNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
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 <e->
-----------------------------------
ElectroNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
---------------------------------------------------
Hadronic Processes for kaon+
ElectroNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <gamma>
-----------------------------------
PhotonInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 3.5
TheoFSGenerator: Emin(GeV)= 3 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for kaon-
PhotonInelastic Crs sctns: PhotoNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <kaon+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hBertiniCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for lambda
KaonPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonPlusInelastic Crs sctns: ChipsKaonPlusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Hadronic Processes for <kaon->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: muMinusCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for neutron
KaonMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsNeutronElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonMinusInelastic Crs sctns: ChipsKaonMinusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: neutronInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
Hadronic Processes for <lambda>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for pi+
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
LambdaInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 6
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
LambdaInelastic Crs sctns: ChipsHyperonInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <mu->
muMinusCaptureAtRest
Hadronic Processes for <neutron>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
hadElastic Crs sctns: ChipsNeutronElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
NeutronInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
NeutronInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
nCapture Models: G4LCapture: Emin(GeV)= 0 Emax(GeV)= 20000
nCapture Crs sctns: GheishaCaptureXS: Emin(GeV)= 0 Emax(GeV)= 100000
nFission Models: G4LFission: Emin(GeV)= 0 Emax(GeV)= 20000
nFission Crs sctns: GheishaFissionXS: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <pi+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionPlusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Hadronic Processes for <pi->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionMinusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: hBertiniCaptureAtRest
Hadronic Processes for <proton>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for proton
hadElastic Crs sctns: ChipsProtonElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
ProtonInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: protonInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
ProtonInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
============================================================================================
================================================================
### Run 0 starts.
### Run 0 start.
Using Root analysis manager
---> Begin of event: 0
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 288.831 MeV total track length: 20.4665 cm
Gap: total energy: 8.19232 MeV total track length: 3.81315 cm
Absorber: total energy: 283.263 MeV total track length: 19.743 cm
Gap: total energy: 10.6009 MeV total track length: 5.29096 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 288.831 MeV rms = 0 eV
EGap : mean = 8.19232 MeV rms = 0 eV
LAbs : mean = 20.4665 cm rms = 0 fm
LGap : mean = 3.81315 cm rms = 0 fm
EAbs : mean = 283.263 MeV rms = 0 eV
EGap : mean = 10.6009 MeV rms = 0 eV
LAbs : mean = 19.743 cm rms = 0 fm
LGap : mean = 5.29096 cm rms = 0 fm
... write Root file : B4.root - done
Transportation, msc, hIoni, ionIoni
hBrems, hPairProd, eIoni, eBrem
annihil, CoulombScat, phot, compt
conv, muIoni, muBrems, muPairProd
PhotonInelastic, ElectroNuclear, PositronNuclear, Decay
hadElastic, NeutronInelastic, nCapture, nFission
ProtonInelastic, PionPlusInelastic, PionMinusInelastic, KaonPlusInelastic
KaonMinusInelastic, KaonZeroLInelastic, KaonZeroSInelastic, LambdaInelastic
AntiLambdaInelastic,SigmaMinusInelastic,AntiSigmaMinusInelastic, SigmaPlusInelastic
AntiSigmaPlusInelastic, XiMinusInelastic,AntiXiMinusInelastic, XiZeroInelastic
AntiXiZeroInelastic,OmegaMinusInelastic,AntiOmegaMinusInelastic,AntiProtonInelastic
AntiNeutronInelastic,AntiDeuteronInelastic,AntiTritonInelasticProcess,AntiHe3InelasticProcess
AntiAlphaInelasticProcess,hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest
dInelastic, tInelastic, He3Inelastic, alphaInelastic
ionInelastic, nKiller
photonNuclear, electronNuclear, positronNuclear, Decay
hadElastic, neutronInelastic, nCapture, protonInelastic
pi+Inelastic, pi-Inelastic, kaon+Inelastic, kaon-Inelastic
kaon0LInelastic, kaon0SInelastic, lambdaInelastic,anti-lambdaInelastic
sigma-Inelastic,anti_sigma-Inelastic, sigma+Inelastic,anti_sigma+Inelastic
xi-Inelastic, anti_xi-Inelastic, xi0Inelastic, anti_xi0Inelastic
omega-Inelastic,anti_omega-Inelastic,anti_protonInelastic,anti_neutronInelastic
anti_deuteronInelastic,anti_tritonInelastic, anti_He3Inelastic,anti_alphaInelastic
hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest, dInelastic
tInelastic, He3Inelastic, alphaInelastic, ionInelastic
nKiller
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -639,7 +658,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -666,7 +685,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -716,13 +735,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -736,7 +756,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -768,6 +788,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -793,6 +814,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -818,6 +840,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -844,6 +867,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -876,6 +900,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -907,6 +932,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -932,22 +958,24 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 1 starts.
### Run 1 start.
Using Root analysis manager
---> Begin of event: 0
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 282.08 MeV total track length: 20.1981 cm
Gap: total energy: 16.6294 MeV total track length: 8.51564 cm
Absorber: total energy: 282.146 MeV total track length: 20.3465 cm
Gap: total energy: 18.8759 MeV total track length: 9.43449 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 282.08 MeV rms = 0 eV
EGap : mean = 16.6294 MeV rms = 0 eV
LAbs : mean = 20.1981 cm rms = 0 fm
LGap : mean = 8.51564 cm rms = 0 fm
EAbs : mean = 282.146 MeV rms = 0 eV
EGap : mean = 18.8759 MeV rms = 0 eV
LAbs : mean = 20.3465 cm rms = 0 fm
LGap : mean = 9.43449 cm rms = 0 fm
... write Root file : B4.root - done
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -969,7 +997,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -996,7 +1024,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -1046,13 +1074,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1066,7 +1095,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1098,6 +1127,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1123,6 +1153,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1148,6 +1179,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1174,6 +1206,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1206,6 +1239,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1237,6 +1271,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1262,21 +1297,23 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 2 starts.
### Run 2 start.
Using Root analysis manager
---> Begin of event: 0
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 462.772 MeV total track length: 33.1144 cm
Gap: total energy: 21.7635 MeV total track length: 11.0673 cm
Absorber: total energy: 468.273 MeV total track length: 33.5299 cm
Gap: total energy: 16.8004 MeV total track length: 8.15542 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 462.772 MeV rms = 0 eV
EGap : mean = 21.7635 MeV rms = 0 eV
LAbs : mean = 33.1144 cm rms = 0 fm
LGap : mean = 11.0673 cm rms = 0 fm
EAbs : mean = 468.273 MeV rms = 0 eV
EGap : mean = 16.8004 MeV rms = 0 eV
LAbs : mean = 33.5299 cm rms = 0 fm
LGap : mean = 8.15542 cm rms = 0 fm
... write Root file : B4.root - done
Graphics systems deleted.
Visualization Manager deleting...
+2 -3
View File
@@ -15,7 +15,6 @@
/gui/addMenu run Run
/gui/addButton run "beamOn 1" "/run/beamOn 1"
/gui/addButton run run1 "/control/execute run1.mac"
/gui/addButton run run2 "/control/execute run2.mac"
#
# Gun menu :
/gui/addMenu gun Gun
@@ -38,14 +37,14 @@
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wire"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
#
# To limit the output flow in the "dump" widget :
/B4/event/setPrintModulo 100
/run/printProgress 100
#
# User defined icon :
/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4Analysis.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4Analysis.hh
/// \brief Selection of the analysis technology
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4DetectorConstruction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4DetectorConstruction.hh
/// \brief Definition of the B4DetectorConstruction class
@@ -34,10 +34,8 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4Box;
class G4VPhysicalVolume;
class G4UniformMagField;
class G4GenericMessenger;
class G4GlobalMagFieldMessenger;
/// Detector construction class to define materials and geometry.
/// The calorimeter is a box made of a given number of layers. A layer consists
@@ -50,10 +48,8 @@ class G4GenericMessenger;
/// - the number of layers,
/// - the transverse size of the calorimeter (the input face is a square).
///
/// In addition a transverse uniform magnetic field is defined in
/// SetMagField() method which can be activated
/// via a command defined using G4GenericMessenger class:
/// - /B4/det/setMagField value unit
/// In addition a transverse uniform magnetic field is defined
/// via G4GlobalMagFieldMessenger class.
class B4DetectorConstruction : public G4VUserDetectorConstruction
{
@@ -63,11 +59,8 @@ class B4DetectorConstruction : public G4VUserDetectorConstruction
public:
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
// set methods
//
void SetMagField(G4double fieldValue);
// get methods
//
const G4VPhysicalVolume* GetAbsorberPV() const;
@@ -81,11 +74,11 @@ class B4DetectorConstruction : public G4VUserDetectorConstruction
// data members
//
G4GenericMessenger* fMessenger; // messenger
G4UniformMagField* fMagField; // magnetic field
G4VPhysicalVolume* fAbsorberPV; // the absorber physical volume
G4VPhysicalVolume* fGapPV; // the gap physical volume
static G4ThreadLocal G4GlobalMagFieldMessenger* fMagFieldMessenger;
// magnetic field messenger
G4VPhysicalVolume* fAbsorberPV; // the absorber physical volume
G4VPhysicalVolume* fGapPV; // the gap physical volume
G4bool fCheckOverlaps; // option to activate checking of volumes overlaps
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.hh
/// \brief Definition of the B4PrimaryGeneratorAction class
@@ -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. *
// ********************************************************************
//
// $Id: B4bActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4bActionInitialization.hh
/// \brief Definition of the B4bActionInitialization class
#ifndef B4bActionInitialization_h
#define B4bActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
class B4DetectorConstruction;
/// Action initialization class.
///
class B4bActionInitialization : public G4VUserActionInitialization
{
public:
B4bActionInitialization(B4DetectorConstruction*);
virtual ~B4bActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
private:
B4DetectorConstruction* fDetConstruction;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bEventAction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4bEventAction.hh
/// \brief Definition of the B4bEventAction class
@@ -34,18 +34,11 @@
#include "G4UserEventAction.hh"
#include "globals.hh"
class G4GenericMessenger;
/// Event action class
///
/// In EndOfEventAction(), it prints the accumulated quantities of the energy
/// deposit and track lengths of charged particles in Absober and Gap layers
/// stored in B4bRunData object.
///
/// The data member fPrintModulo defines the frequency of printing.
/// the accumulated quantities. Its value can be changed via a command
/// defined using G4GenericMessenger class:
/// - /B4/event/setPrintModulo value
class B4bEventAction : public G4UserEventAction
{
@@ -55,25 +48,12 @@ class B4bEventAction : public G4UserEventAction
virtual void BeginOfEventAction(const G4Event* event);
virtual void EndOfEventAction(const G4Event* event);
void SetPrintModulo(G4int value);
private:
// methods
void PrintEventStatistics(G4double absoEdep, G4double absoTrackLength,
G4double gapEdep, G4double gapTrackLength) const;
// data members
G4GenericMessenger* fMessenger;
G4int fPrintModulo;
};
// inline functions
inline void B4bEventAction::SetPrintModulo(G4int value) {
fPrintModulo = value;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,13 +23,13 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bRunAction.hh 66536 2012-12-19 14:32:36Z ihrivnac $
//
/// \file B4RunAction.hh
/// \brief Definition of the B4RunAction class
/// \file B4bRunAction.hh
/// \brief Definition of the B4bRunAction class
#ifndef B4RunAction_h
#define B4RunAction_h 1
#ifndef B4bRunAction_h
#define B4bRunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
@@ -54,11 +54,13 @@ class G4Run;
/// dispersion is printed.
///
class B4RunAction : public G4UserRunAction
class B4bRunAction : public G4UserRunAction
{
public:
B4RunAction();
virtual ~B4RunAction();
B4bRunAction();
virtual ~B4bRunAction();
virtual G4Run* GenerateRun();
virtual void BeginOfRunAction(const G4Run*);
virtual void EndOfRunAction(const G4Run*);
+3 -8
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bRunData.hh 69223 2013-04-23 12:36:10Z gcosmo $
//
/// \file B4bRunData.hh
/// \brief Definition of the B4bRunData class
@@ -31,6 +31,7 @@
#ifndef B4bRunData_h
#define B4bRunData_h 1
#include "G4Run.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -41,8 +42,6 @@ enum {
kDim = 2
};
class B4bRunData;
/// Run data class
///
/// It defines data members to hold the energy deposit and track lengths
@@ -56,14 +55,12 @@ class B4bRunData;
/// the accumulated values are filled in histograms and entuple
/// event by event in B4EventAction.
class B4bRunData
class B4bRunData : public G4Run
{
public:
B4bRunData();
virtual ~B4bRunData();
static B4bRunData* GetInstance() { return fgInstance; }
void Add(G4int id, G4double de, G4double dl);
void FillPerEvent();
@@ -75,8 +72,6 @@ public:
G4double GetTrackLength(G4int id) const;
private:
static B4bRunData* fgInstance;
G4String fVolumeNames[kDim];
G4double fEdep[kDim];
G4double fTrackLength[kDim];
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bSteppingAction.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4bSteppingAction.hh
/// \brief Definition of the B4bSteppingAction class
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode without visualization
#
# Set some default verbose
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode with visualization
#
# Sets some default verbose
+2 -2
View File
@@ -21,12 +21,12 @@
# 20 events
#
/tracking/verbose 0
/B4/event/setPrintModulo 5
/run/printProgress 5
/run/beamOn 20
#
# Magnetic field
#
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
/run/beamOn 3
#
# Activate/inactivate physics processes
+1 -1
View File
@@ -7,6 +7,6 @@
# electron 50 MeV in direction (0.,0.,1.)
# 1000 events
#
/B4/event/setPrintModulo 100
/run/printProgress 100
/run/beamOn 1000
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4DetectorConstruction.cc 77601 2013-11-26 17:08:44Z gcosmo $
//
/// \file B4DetectorConstruction.cc
/// \brief Implementation of the B4DetectorConstruction class
@@ -37,7 +37,8 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVReplica.hh"
#include "G4UniformMagField.hh"
#include "G4GlobalMagFieldMessenger.hh"
#include "G4AutoDelete.hh"
#include "G4GeometryManager.hh"
#include "G4PhysicalVolumeStore.hh"
@@ -47,43 +48,28 @@
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4FieldManager.hh"
#include "G4TransportationManager.hh"
#include "G4GenericMessenger.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include <stdio.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal
G4GlobalMagFieldMessenger* B4DetectorConstruction::fMagFieldMessenger = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4DetectorConstruction::B4DetectorConstruction()
: G4VUserDetectorConstruction(),
fMessenger(0),
fMagField(0),
fAbsorberPV(0),
fGapPV(0),
fCheckOverlaps(true)
{
// Define /B4/det commands using generic messenger class
fMessenger
= new G4GenericMessenger(this, "/B4/det/", "Detector construction control");
// Define /B4/det/setMagField command
G4GenericMessenger::Command& setMagFieldCmd
= fMessenger->DeclareMethod("setMagField",
&B4DetectorConstruction::SetMagField,
"Define magnetic field value (in X direction");
setMagFieldCmd.SetUnitCategory("Magnetic flux density");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4DetectorConstruction::~B4DetectorConstruction()
{
delete fMagField;
delete fMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -103,8 +89,7 @@ void B4DetectorConstruction::DefineMaterials()
{
// Lead material defined using NIST Manager
G4NistManager* nistManager = G4NistManager::Instance();
G4bool fromIsotopes = false;
nistManager->FindOrBuildMaterial("G4_Pb", fromIsotopes);
nistManager->FindOrBuildMaterial("G4_Pb");
// Liquid argon material
G4double a; // mass of a mole;
@@ -142,9 +127,10 @@ G4VPhysicalVolume* B4DetectorConstruction::DefineVolumes()
G4Material* gapMaterial = G4Material::GetMaterial("liquidArgon");
if ( ! defaultMaterial || ! absorberMaterial || ! gapMaterial ) {
G4cerr << "Cannot retrieve materials already defined. " << G4endl;
G4cerr << "Exiting application " << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot retrieve materials already defined.";
G4Exception("B4DetectorConstruction::DefineVolumes()",
"MyCode0001", FatalException, msg);
}
//
@@ -290,25 +276,17 @@ G4VPhysicalVolume* B4DetectorConstruction::DefineVolumes()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4DetectorConstruction::SetMagField(G4double fieldValue)
{
// Apply a global uniform magnetic field along X axis
G4FieldManager* fieldManager
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
// Delete the existing magnetic field
if ( fMagField ) delete fMagField;
if ( fieldValue != 0. ) {
// create a new one if not null
fMagField
= new G4UniformMagField(G4ThreeVector(fieldValue, 0., 0.));
fieldManager->SetDetectorField(fMagField);
fieldManager->CreateChordFinder(fMagField);
}
else {
fMagField = 0;
fieldManager->SetDetectorField(fMagField);
}
void B4DetectorConstruction::ConstructSDandField()
{
// Create global magnetic field messenger.
// Uniform magnetic field is then created automatically if
// the field value is not zero.
G4ThreeVector fieldValue = G4ThreeVector();
fMagFieldMessenger = new G4GlobalMagFieldMessenger(fieldValue);
fMagFieldMessenger->SetVerboseLevel(1);
// Register the field messenger for deleting
G4AutoDelete::Register(fMagFieldMessenger);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.cc
/// \brief Implementation of the B4PrimaryGeneratorAction class
@@ -85,9 +85,12 @@ void B4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
worldZHalfLength = worldBox->GetZHalfLength();
}
else {
G4cerr << "World volume of box not found." << G4endl;
G4cerr << "Perhaps you have changed geometry." << G4endl;
G4cerr << "The gun will be place in the center." << G4endl;
G4ExceptionDescription msg;
msg << "World volume of box not found." << G4endl;
msg << "Perhaps you have changed geometry." << G4endl;
msg << "The gun will be place in the center.";
G4Exception("B4PrimaryGeneratorAction::GeneratePrimaries()",
"MyCode0002", JustWarning, msg);
}
// Set gun position
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4bActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4bActionInitialization.cc
/// \brief Implementation of the B4bActionInitialization class
#include "B4bActionInitialization.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4bRunAction.hh"
#include "B4bEventAction.hh"
#include "B4bSteppingAction.hh"
#include "G4MTRunManager.hh"
#include "B4DetectorConstruction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bActionInitialization::B4bActionInitialization
(B4DetectorConstruction* detConstruction)
: G4VUserActionInitialization(),
fDetConstruction(detConstruction)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bActionInitialization::~B4bActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bActionInitialization::BuildForMaster() const
{
SetUserAction(new B4bRunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bActionInitialization::Build() const
{
SetUserAction(new B4PrimaryGeneratorAction);
SetUserAction(new B4bRunAction);
SetUserAction(new B4bEventAction);
SetUserAction(new B4bSteppingAction(fDetConstruction));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+20 -37
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bEventAction.cc 75604 2013-11-04 13:17:26Z gcosmo $
//
/// \file B4bEventAction.cc
/// \brief Implementation of the B4bEventAction class
@@ -33,7 +33,6 @@
#include "G4RunManager.hh"
#include "G4Event.hh"
#include "G4GenericMessenger.hh"
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -42,27 +41,13 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bEventAction::B4bEventAction()
: G4UserEventAction(),
fMessenger(0),
fPrintModulo(1)
{
// Define /B4/event commands using generic messenger class
fMessenger = new G4GenericMessenger(this, "/B4/event/", "Event control");
// Define /B4/event/setPrintModulo command
G4GenericMessenger::Command& setPrintModulo
= fMessenger->DeclareProperty("setPrintModulo",
fPrintModulo,
"Print events modulo n");
setPrintModulo.SetRange("value>0");
}
: G4UserEventAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bEventAction::~B4bEventAction()
{
delete fMessenger;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -86,37 +71,35 @@ void B4bEventAction::PrintEventStatistics(
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bEventAction::BeginOfEventAction(const G4Event* evt)
void B4bEventAction::BeginOfEventAction(const G4Event* /*event*/)
{
G4int eventID = evt->GetEventID();
if ( eventID % fPrintModulo == 0 ) {
G4cout << "\n---> Begin of event: " << eventID << G4endl;
//CLHEP::HepRandom::showEngineStatus();
}
B4bRunData::GetInstance()->Reset();
B4bRunData* runData
= static_cast<B4bRunData*>(
G4RunManager::GetRunManager()->GetNonConstCurrentRun());
runData->Reset();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bEventAction::EndOfEventAction(const G4Event* event)
{
//accumulates statistic
//
B4bRunData::GetInstance()->FillPerEvent();
B4bRunData* runData
= static_cast<B4bRunData*>(
G4RunManager::GetRunManager()->GetNonConstCurrentRun());
runData->FillPerEvent();
//print per event (modulo n)
//
G4int eventID = event->GetEventID();
if ( eventID % fPrintModulo == 0) {
G4int printModulo = G4RunManager::GetRunManager()->GetPrintProgress();
if ( ( printModulo > 0 ) && ( eventID % printModulo == 0 ) ) {
G4cout << "---> End of event: " << eventID << G4endl;
PrintEventStatistics(
B4bRunData::GetInstance()->GetEdep(kAbs),
B4bRunData::GetInstance()->GetTrackLength(kAbs),
B4bRunData::GetInstance()->GetEdep(kGap),
B4bRunData::GetInstance()->GetTrackLength(kGap));
runData->GetEdep(kAbs),
runData->GetTrackLength(kAbs),
runData->GetEdep(kGap),
runData->GetTrackLength(kGap));
}
}
@@ -23,12 +23,13 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bRunAction.cc 68835 2013-04-06 07:12:41Z asaim $
//
/// \file B4RunAction.cc
/// \brief Implementation of the B4RunAction class
/// \file B4bRunAction.cc
/// \brief Implementation of the B4bRunAction class
#include "B4RunAction.hh"
#include "B4bRunAction.hh"
#include "B4bRunData.hh"
#include "B4Analysis.hh"
#include "G4Run.hh"
@@ -38,53 +39,33 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4RunAction::B4RunAction()
B4bRunAction::B4bRunAction()
: G4UserRunAction()
{
}
// set printing event number per each event
G4RunManager::GetRunManager()->SetPrintProgress(1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4RunAction::~B4RunAction()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Book histograms, ntuple
//
// Create analysis manager
// The choice of analysis technology is done via selectin of a namespace
// in B4Analysis.hh
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4cout << "Using " << analysisManager->GetType()
<< " analysis manager" << G4endl;
G4cout << "Using " << analysisManager->GetType() << G4endl;
// Create directories
//analysisManager->SetHistoDirectoryName("histograms");
//analysisManager->SetNtupleDirectoryName("ntuple");
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
analysisManager->SetVerboseLevel(1);
analysisManager->SetFirstHistoId(1);
// Creating histograms
// Book histograms, ntuple
//
// Creating histograms
analysisManager->CreateH1("1","Edep in absorber", 100, 0., 800*MeV);
analysisManager->CreateH1("2","Edep in gap", 100, 0., 100*MeV);
analysisManager->CreateH1("3","trackL in absorber", 100, 0., 1*m);
analysisManager->CreateH1("4","trackL in gap", 100, 0., 50*cm);
// Creating ntuple
//
analysisManager->CreateNtuple("B4", "Edep and TrackL");
@@ -97,43 +78,78 @@ void B4RunAction::BeginOfRunAction(const G4Run* run)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* aRun)
B4bRunAction::~B4bRunAction()
{
G4int nofEvents = aRun->GetNumberOfEvent();
if ( nofEvents == 0 ) return;
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic \n" << G4endl;
G4cout
<< " EAbs : mean = " << G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy")
<< G4endl;
G4cout
<< " EGap : mean = " << G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy")
<< G4endl;
G4cout
<< " LAbs : mean = " << G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(3)->rms(), "Length")
<< G4endl;
G4cout
<< " LGap : mean = " << G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(4)->rms(), "Length")
<< G4endl;
}
// save histograms
//
analysisManager->Write();
analysisManager->CloseFile();
// complete cleanup
//
delete G4AnalysisManager::Instance();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4Run* B4bRunAction::GenerateRun()
{
return (new B4bRunData);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bRunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Get analysis manager
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4bRunAction::EndOfRunAction(const G4Run* /*aRun*/)
{
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic ";
if(isMaster) {
G4cout << "for the entire run \n" << G4endl;
}
else {
G4cout << "for the local thread \n" << G4endl;
}
G4cout << " EAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy") << G4endl;
G4cout << " EGap : mean = "
<< G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy") << G4endl;
G4cout << " LAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(3)->rms(), "Length") << G4endl;
G4cout << " LGap : mean = "
<< G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(4)->rms(), "Length") << G4endl;
}
// save histograms & ntuple
//
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+3 -17
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bRunData.cc 69223 2013-04-23 12:36:10Z gcosmo $
//
/// \file B4bRunData.cc
/// \brief Implementation of the B4bRunData class
@@ -31,25 +31,13 @@
#include "B4bRunData.hh"
#include "B4Analysis.hh"
#include "G4Run.hh"
#include "G4RunManager.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bRunData* B4bRunData::fgInstance = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bRunData::B4bRunData()
B4bRunData::B4bRunData() : G4Run()
{
if ( fgInstance ) {
G4cerr << "Cannot create the run data object twice" << G4endl;
exit(1);
}
fgInstance = this;
fVolumeNames[0] = "Absorber";
fVolumeNames[1] = "Gap";
@@ -62,9 +50,7 @@ B4bRunData::B4bRunData()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4bRunData::~B4bRunData()
{
fgInstance = 0;
}
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4bSteppingAction.cc 69223 2013-04-23 12:36:10Z gcosmo $
//
/// \file B4bSteppingAction.cc
/// \brief Implementation of the B4bSteppingAction class
@@ -69,12 +69,15 @@ void B4bSteppingAction::UserSteppingAction(const G4Step* step)
stepLength = step->GetStepLength();
}
B4bRunData* runData = static_cast<B4bRunData*>
(G4RunManager::GetRunManager()->GetNonConstCurrentRun());
if ( volume == fDetConstruction->GetAbsorberPV() ) {
B4bRunData::GetInstance()->Add(kAbs, edep, stepLength);
runData->Add(kAbs, edep, stepLength);
}
if ( volume == fDetConstruction->GetGapPV() ) {
B4bRunData::GetInstance()->Add(kGap, edep, stepLength);
runData->Add(kGap, edep, stepLength);
}
}
+2
View File
@@ -1,3 +1,5 @@
# $Id: CMakeLists.txt 68058 2013-03-13 14:47:43Z gcosmo $
#----------------------------------------------------------------------------
# Setup the project
#
+32 -15
View File
@@ -23,18 +23,22 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: exampleB4c.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file exampleB4c.cc
/// \brief Main program of the B4c example
#include "B4cDetectorConstruction.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4cEventAction.hh"
#include "B4cActionInitialization.hh"
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4UIcommand.hh"
#include "FTFP_BERT.hh"
#include "Randomize.hh"
@@ -52,7 +56,9 @@
namespace {
void PrintUsage() {
G4cerr << " Usage: " << G4endl;
G4cerr << " exampleB4c [-m macro ] [-u UIsession]" << G4endl;
G4cerr << " exampleB4c [-m macro ] [-u UIsession] [-t nThreads]" << G4endl;
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
}
@@ -62,16 +68,24 @@ int main(int argc,char** argv)
{
// Evaluate arguments
//
if ( argc > 5 ) {
if ( argc > 7 ) {
PrintUsage();
return 1;
}
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
G4int nThreads = 0;
#endif
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];
#ifdef G4MULTITHREADED
else if ( G4String(argv[i]) == "-t" ) {
nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
}
#endif
else {
PrintUsage();
return 1;
@@ -80,11 +94,18 @@ int main(int argc,char** argv)
// Choose the Random engine
//
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
G4Random::setTheEngine(new CLHEP::RanecuEngine);
// Construct the default run manager
//
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
if ( nThreads > 0 ) {
runManager->SetNumberOfThreads(nThreads);
}
#else
G4RunManager * runManager = new G4RunManager;
#endif
// Set mandatory initialization classes
//
@@ -94,14 +115,10 @@ int main(int argc,char** argv)
G4VModularPhysicsList* physicsList = new FTFP_BERT;
runManager->SetUserInitialization(physicsList);
// Set user action classes
//
runManager->SetUserAction(new B4PrimaryGeneratorAction());
//
runManager->SetUserAction(new B4RunAction());
//
runManager->SetUserAction(new B4cEventAction());
B4cActionInitialization* actionInitialization
= new B4cActionInitialization();
runManager->SetUserInitialization(actionInitialization);
// Initialize G4 kernel
//
runManager->Initialize();
+229 -195
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-09-06-ref-00 (30-November-2012)
Geant4 version Name: geant4-10-00-ref-00 (6-December-2013)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -12,10 +12,13 @@
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
Using Root
***** Table : Nb of materials = 3 *****
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.261 cm Imean: 823.000 eV
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.247 cm
Imean: 823.000 eV
---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole
---> Isotope: Pb204 Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 %
---> Isotope: Pb206 Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 %
@@ -24,7 +27,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.006 cm Imean: 188.000 eV
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.078 cm
Imean: 188.000 eV
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole
---> Isotope: 36 Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 %
---> Isotope: 38 Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 %
@@ -32,7 +37,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 114561548.020 pc Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 113804112.837 pc
Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole
---> Isotope: 1 Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 %
---> Isotope: 2 Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 %
@@ -58,12 +65,10 @@ Current available graphics systems are:
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
OpenGLImmediateQt (OGLI, OGLIQt)
OpenGLImmediateX (OGLIX)
OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK)
OpenGLStoredQt (OGL, OGLS, OGLSQt)
OpenGLImmediateXm (OGLI, OGLIXm)
OpenGLStoredX (OGLSX)
OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK)
OpenGLStoredXm (OGL, OGLS, OGLSXm)
RayTracer (RayTracer)
RayTracerX (RayTracerX)
VRML1FILE (VRML1FILE)
@@ -116,7 +121,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -143,7 +148,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -193,13 +198,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -213,7 +219,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -245,6 +251,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -270,6 +277,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -295,6 +303,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -321,6 +330,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -353,6 +363,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -384,6 +395,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -409,215 +421,221 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
============================================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
Hadronic Processes for <GenericIon>
-----------------------------------
ionInelastic Models: Binary Light Ion Cascade: Emin(GeV)= 0 Emax(GeV)= 4
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
ionInelastic Crs sctns: Glauber-Gribov nucleus nucleus: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_neutron>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_neutron
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_proton
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: GheishaElastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_proton>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 0.1
AntiAElastic: Emin(GeV)= 0.1 Emax(GeV)= 100000
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hFritiofCaptureAtRest
AntiProtonInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for e+
AntiProtonInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hFritiofCaptureAtRest
---------------------------------------------------
Hadronic Processes for e-
Hadronic Processes for <e+>
-----------------------------------
PositronNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
PositronNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
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 <e->
-----------------------------------
ElectroNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
---------------------------------------------------
Hadronic Processes for kaon+
ElectroNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <gamma>
-----------------------------------
PhotonInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 3.5
TheoFSGenerator: Emin(GeV)= 3 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for kaon-
PhotonInelastic Crs sctns: PhotoNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <kaon+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hBertiniCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for lambda
KaonPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonPlusInelastic Crs sctns: ChipsKaonPlusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Hadronic Processes for <kaon->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: muMinusCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for neutron
KaonMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsNeutronElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonMinusInelastic Crs sctns: ChipsKaonMinusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: neutronInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
Hadronic Processes for <lambda>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for pi+
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
LambdaInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 6
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
LambdaInelastic Crs sctns: ChipsHyperonInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <mu->
muMinusCaptureAtRest
Hadronic Processes for <neutron>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
hadElastic Crs sctns: ChipsNeutronElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
NeutronInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
NeutronInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
nCapture Models: G4LCapture: Emin(GeV)= 0 Emax(GeV)= 20000
nCapture Crs sctns: GheishaCaptureXS: Emin(GeV)= 0 Emax(GeV)= 100000
nFission Models: G4LFission: Emin(GeV)= 0 Emax(GeV)= 20000
nFission Crs sctns: GheishaFissionXS: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <pi+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionPlusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Hadronic Processes for <pi->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionMinusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: hBertiniCaptureAtRest
Hadronic Processes for <proton>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for proton
hadElastic Crs sctns: ChipsProtonElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
ProtonInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: protonInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
ProtonInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
============================================================================================
### Run 0 start.
Using Root analysis manager
---> Begin of event: 0
================================================================
### Run 0 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 288.831 MeV total track length: 20.4665 cm
Gap: total energy: 8.19232 MeV total track length: 3.81315 cm
Absorber: total energy: 283.263 MeV total track length: 19.743 cm
Gap: total energy: 10.6009 MeV total track length: 5.29096 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 288.831 MeV rms = 0 eV
EGap : mean = 8.19232 MeV rms = 0 eV
LAbs : mean = 20.4665 cm rms = 0 fm
LGap : mean = 3.81315 cm rms = 0 fm
EAbs : mean = 283.263 MeV rms = 0 eV
EGap : mean = 10.6009 MeV rms = 0 eV
LAbs : mean = 19.743 cm rms = 0 fm
LGap : mean = 5.29096 cm rms = 0 fm
... write Root file : B4.root - done
Transportation, msc, hIoni, ionIoni
hBrems, hPairProd, eIoni, eBrem
annihil, CoulombScat, phot, compt
conv, muIoni, muBrems, muPairProd
PhotonInelastic, ElectroNuclear, PositronNuclear, Decay
hadElastic, NeutronInelastic, nCapture, nFission
ProtonInelastic, PionPlusInelastic, PionMinusInelastic, KaonPlusInelastic
KaonMinusInelastic, KaonZeroLInelastic, KaonZeroSInelastic, LambdaInelastic
AntiLambdaInelastic,SigmaMinusInelastic,AntiSigmaMinusInelastic, SigmaPlusInelastic
AntiSigmaPlusInelastic, XiMinusInelastic,AntiXiMinusInelastic, XiZeroInelastic
AntiXiZeroInelastic,OmegaMinusInelastic,AntiOmegaMinusInelastic,AntiProtonInelastic
AntiNeutronInelastic,AntiDeuteronInelastic,AntiTritonInelasticProcess,AntiHe3InelasticProcess
AntiAlphaInelasticProcess,hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest
dInelastic, tInelastic, He3Inelastic, alphaInelastic
ionInelastic, nKiller
photonNuclear, electronNuclear, positronNuclear, Decay
hadElastic, neutronInelastic, nCapture, protonInelastic
pi+Inelastic, pi-Inelastic, kaon+Inelastic, kaon-Inelastic
kaon0LInelastic, kaon0SInelastic, lambdaInelastic,anti-lambdaInelastic
sigma-Inelastic,anti_sigma-Inelastic, sigma+Inelastic,anti_sigma+Inelastic
xi-Inelastic, anti_xi-Inelastic, xi0Inelastic, anti_xi0Inelastic
omega-Inelastic,anti_omega-Inelastic,anti_protonInelastic,anti_neutronInelastic
anti_deuteronInelastic,anti_tritonInelastic, anti_He3Inelastic,anti_alphaInelastic
hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest, dInelastic
tInelastic, He3Inelastic, alphaInelastic, ionInelastic
nKiller
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -639,7 +657,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -666,7 +684,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -716,13 +734,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -736,7 +755,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -768,6 +787,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -793,6 +813,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -818,6 +839,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -844,6 +866,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -876,6 +899,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -907,6 +931,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -932,22 +957,23 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 1 start.
Using Root analysis manager
---> Begin of event: 0
### Run 1 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 282.08 MeV total track length: 20.1981 cm
Gap: total energy: 16.6294 MeV total track length: 8.51564 cm
Absorber: total energy: 282.146 MeV total track length: 20.3465 cm
Gap: total energy: 18.8759 MeV total track length: 9.43449 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 282.08 MeV rms = 0 eV
EGap : mean = 16.6294 MeV rms = 0 eV
LAbs : mean = 20.1981 cm rms = 0 fm
LGap : mean = 8.51564 cm rms = 0 fm
EAbs : mean = 282.146 MeV rms = 0 eV
EGap : mean = 18.8759 MeV rms = 0 eV
LAbs : mean = 20.3465 cm rms = 0 fm
LGap : mean = 9.43449 cm rms = 0 fm
... write Root file : B4.root - done
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -969,7 +995,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -996,7 +1022,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -1046,13 +1072,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1066,7 +1093,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1098,6 +1125,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1123,6 +1151,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1148,6 +1177,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1174,6 +1204,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1206,6 +1237,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1237,6 +1269,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1262,21 +1295,22 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 2 start.
Using Root analysis manager
---> Begin of event: 0
### Run 2 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 462.772 MeV total track length: 33.1144 cm
Gap: total energy: 21.7635 MeV total track length: 11.0673 cm
Absorber: total energy: 468.273 MeV total track length: 33.5299 cm
Gap: total energy: 16.8004 MeV total track length: 8.15542 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 462.772 MeV rms = 0 eV
EGap : mean = 21.7635 MeV rms = 0 eV
LAbs : mean = 33.1144 cm rms = 0 fm
LGap : mean = 11.0673 cm rms = 0 fm
EAbs : mean = 468.273 MeV rms = 0 eV
EGap : mean = 16.8004 MeV rms = 0 eV
LAbs : mean = 33.5299 cm rms = 0 fm
LGap : mean = 8.15542 cm rms = 0 fm
... write Root file : B4.root - done
Graphics systems deleted.
Visualization Manager deleting...
+2 -3
View File
@@ -15,7 +15,6 @@
/gui/addMenu run Run
/gui/addButton run "beamOn 1" "/run/beamOn 1"
/gui/addButton run run1 "/control/execute run1.mac"
/gui/addButton run run2 "/control/execute run2.mac"
#
# Gun menu :
/gui/addMenu gun Gun
@@ -38,14 +37,14 @@
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wire"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
#
# To limit the output flow in the "dump" widget :
/B4/event/setPrintModulo 100
/run/printProgress 100
#
# User defined icon :
/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4Analysis.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4Analysis.hh
/// \brief Selection of the analysis technology
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.hh
/// \brief Definition of the B4PrimaryGeneratorAction class
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.hh 74265 2013-10-02 14:41:20Z gcosmo $
//
/// \file B4RunAction.hh
/// \brief Definition of the B4RunAction class
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4cActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4cActionInitialization.hh
/// \brief Definition of the B4cActionInitialization class
#ifndef B4cActionInitialization_h
#define B4cActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
/// Action initialization class.
///
class B4cActionInitialization : public G4VUserActionInitialization
{
public:
B4cActionInitialization();
virtual ~B4cActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
};
#endif
+9 -4
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cCalorHit.hh 69223 2013-04-23 12:36:10Z gcosmo $
//
/// \file B4cCalorHit.hh
/// \brief Definition of the B4cCalorHit class
@@ -35,6 +35,7 @@
#include "G4THitsCollection.hh"
#include "G4Allocator.hh"
#include "G4ThreeVector.hh"
#include "tls.hh"
/// Calorimeter hit class
///
@@ -76,20 +77,24 @@ class B4cCalorHit : public G4VHit
typedef G4THitsCollection<B4cCalorHit> B4cCalorHitsCollection;
extern G4Allocator<B4cCalorHit> B4cCalorHitAllocator;
extern G4ThreadLocal G4Allocator<B4cCalorHit>* B4cCalorHitAllocator;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
inline void* B4cCalorHit::operator new(size_t)
{
if(!B4cCalorHitAllocator)
B4cCalorHitAllocator = new G4Allocator<B4cCalorHit>;
void *hit;
hit = (void *) B4cCalorHitAllocator.MallocSingle();
hit = (void *) B4cCalorHitAllocator->MallocSingle();
return hit;
}
inline void B4cCalorHit::operator delete(void *hit)
{
B4cCalorHitAllocator.FreeSingle((B4cCalorHit*) hit);
if(!B4cCalorHitAllocator)
B4cCalorHitAllocator = new G4Allocator<B4cCalorHit>;
B4cCalorHitAllocator->FreeSingle((B4cCalorHit*) hit);
}
inline void B4cCalorHit::Add(G4double de, G4double dl) {
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cCalorimeterSD.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4cCalorimeterSD.hh
/// \brief Definition of the B4cCalorimeterSD class
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cDetectorConstruction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4cDetectorConstruction.hh
/// \brief Definition of the B4cDetectorConstruction class
@@ -34,10 +34,8 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4Box;
class G4VPhysicalVolume;
class G4UniformMagField;
class G4GenericMessenger;
class G4GlobalMagFieldMessenger;
/// Detector construction class to define materials and geometry.
/// The calorimeter is a box made of a given number of layers. A layer consists
@@ -50,13 +48,10 @@ class G4GenericMessenger;
/// - the number of layers,
/// - the transverse size of the calorimeter (the input face is a square).
///
/// In DefineVolumes(), sensitive detectors of B4cCalorimeterSD type
/// In ConstructSDandField() sensitive detectors of B4cCalorimeterSD type
/// are created and associated with the Absorber and Gap volumes.
///
/// In addition a transverse uniform magnetic field is defined in
/// SetMagField() method which can be activated
/// via a command defined using G4GenericMessenger class:
/// - /B4/det/setMagField value unit
/// In addition a transverse uniform magnetic field is defined
/// via G4GlobalMagFieldMessenger class.
class B4cDetectorConstruction : public G4VUserDetectorConstruction
{
@@ -66,10 +61,7 @@ class B4cDetectorConstruction : public G4VUserDetectorConstruction
public:
virtual G4VPhysicalVolume* Construct();
// set methods
//
void SetMagField(G4double fieldValue);
virtual void ConstructSDandField();
private:
// methods
@@ -79,10 +71,11 @@ class B4cDetectorConstruction : public G4VUserDetectorConstruction
// data members
//
G4GenericMessenger* fMessenger; // messenger
G4UniformMagField* fMagField; // magnetic field
static G4ThreadLocal G4GlobalMagFieldMessenger* fMagFieldMessenger;
// magnetic field messenger
G4bool fCheckOverlaps; // option to activate checking of volumes overlaps
G4int fNofLayers; // number of layers
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cEventAction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4cEventAction.hh
/// \brief Definition of the B4cEventAction class
@@ -37,18 +37,11 @@
#include "globals.hh"
class G4GenericMessenger;
/// Event action class
///
/// In EndOfEventAction(), it prints the accumulated quantities of the energy
/// deposit and track lengths of charged particles in Absober and Gap layers
/// stored in the hits collections.
///
/// The data member fPrintModulo defines the frequency of printing
/// the accumulated quantities. Its value can be changed via a command
/// defined using G4GenericMessenger class:
/// - /B4/event/setPrintModulo value
class B4cEventAction : public G4UserEventAction
{
@@ -58,27 +51,18 @@ public:
virtual void BeginOfEventAction(const G4Event* event);
virtual void EndOfEventAction(const G4Event* event);
// set methods
void SetPrintModulo(G4int value);
private:
// methods
B4cCalorHitsCollection* GetHitsCollection(const G4String& hcName,
B4cCalorHitsCollection* GetHitsCollection(G4int hcID,
const G4Event* event) const;
void PrintEventStatistics(G4double absoEdep, G4double absoTrackLength,
G4double gapEdep, G4double gapTrackLength) const;
// data members
G4GenericMessenger* fMessenger;
G4int fPrintModulo;
G4int fAbsHCID;
G4int fGapHCID;
};
// inline functions
inline void B4cEventAction::SetPrintModulo(G4int value) {
fPrintModulo = value;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode without visualization
#
# Set some default verbose
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode with visualization
#
# Sets some default verbose
+2 -2
View File
@@ -21,12 +21,12 @@
# 20 events
#
/tracking/verbose 0
/B4/event/setPrintModulo 5
/run/printProgress 5
/run/beamOn 20
#
# Magnetic field
#
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
/run/beamOn 3
#
# Activate/inactivate physics processes
+1 -1
View File
@@ -7,6 +7,6 @@
# electron 50 MeV in direction (0.,0.,1.)
# 1000 events
#
/B4/event/setPrintModulo 100
/run/printProgress 100
/run/beamOn 1000
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4PrimaryGeneratorAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.cc
/// \brief Implementation of the B4PrimaryGeneratorAction class
@@ -85,9 +85,12 @@ void B4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
worldZHalfLength = worldBox->GetZHalfLength();
}
else {
G4cerr << "World volume of box not found." << G4endl;
G4cerr << "Perhaps you have changed geometry." << G4endl;
G4cerr << "The gun will be place in the center." << G4endl;
G4ExceptionDescription msg;
msg << "World volume of box not found." << G4endl;
msg << "Perhaps you have changed geometry." << G4endl;
msg << "The gun will be place in the center.";
G4Exception("B4PrimaryGeneratorAction::GeneratePrimaries()",
"MyCode0002", JustWarning, msg);
}
// Set gun position
+70 -64
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4RunAction.cc
/// \brief Implementation of the B4RunAction class
@@ -41,50 +41,30 @@
B4RunAction::B4RunAction()
: G4UserRunAction()
{
}
// set printing event number per each event
G4RunManager::GetRunManager()->SetPrintProgress(1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4RunAction::~B4RunAction()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Book histograms, ntuple
//
// Create analysis manager
// The choice of analysis technology is done via selectin of a namespace
// in B4Analysis.hh
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4cout << "Using " << analysisManager->GetType()
<< " analysis manager" << G4endl;
G4cout << "Using " << analysisManager->GetType() << G4endl;
// Create directories
//analysisManager->SetHistoDirectoryName("histograms");
//analysisManager->SetNtupleDirectoryName("ntuple");
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
analysisManager->SetVerboseLevel(1);
analysisManager->SetFirstHistoId(1);
// Creating histograms
// Book histograms, ntuple
//
// Creating histograms
analysisManager->CreateH1("1","Edep in absorber", 100, 0., 800*MeV);
analysisManager->CreateH1("2","Edep in gap", 100, 0., 100*MeV);
analysisManager->CreateH1("3","trackL in absorber", 100, 0., 1*m);
analysisManager->CreateH1("4","trackL in gap", 100, 0., 50*cm);
// Creating ntuple
//
analysisManager->CreateNtuple("B4", "Edep and TrackL");
@@ -97,43 +77,69 @@ void B4RunAction::BeginOfRunAction(const G4Run* run)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* aRun)
B4RunAction::~B4RunAction()
{
G4int nofEvents = aRun->GetNumberOfEvent();
if ( nofEvents == 0 ) return;
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic \n" << G4endl;
G4cout
<< " EAbs : mean = " << G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy")
<< G4endl;
G4cout
<< " EGap : mean = " << G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy")
<< G4endl;
G4cout
<< " LAbs : mean = " << G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(3)->rms(), "Length")
<< G4endl;
G4cout
<< " LGap : mean = " << G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(4)->rms(), "Length")
<< G4endl;
}
// save histograms
//
analysisManager->Write();
analysisManager->CloseFile();
// complete cleanup
//
delete G4AnalysisManager::Instance();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* /*run*/)
{
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Get analysis manager
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* /*run*/)
{
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic ";
if(isMaster) {
G4cout << "for the entire run \n" << G4endl;
}
else {
G4cout << "for the local thread \n" << G4endl;
}
G4cout << " EAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy") << G4endl;
G4cout << " EGap : mean = "
<< G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy") << G4endl;
G4cout << " LAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(3)->rms(), "Length") << G4endl;
G4cout << " LGap : mean = "
<< G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(4)->rms(), "Length") << G4endl;
}
// save histograms & ntuple
//
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4cActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4cActionInitialization.cc
/// \brief Implementation of the B4cActionInitialization class
#include "B4cActionInitialization.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4cEventAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cActionInitialization::B4cActionInitialization()
: G4VUserActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cActionInitialization::~B4cActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4cActionInitialization::BuildForMaster() const
{
SetUserAction(new B4RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4cActionInitialization::Build() const
{
SetUserAction(new B4PrimaryGeneratorAction);
SetUserAction(new B4RunAction);
SetUserAction(new B4cEventAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+2 -2
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cCalorHit.cc 69586 2013-05-08 14:20:11Z gcosmo $
//
/// \file B4cCalorHit.cc
/// \brief Implementation of the B4cCalorHit class
@@ -37,7 +37,7 @@
#include <iomanip>
G4Allocator<B4cCalorHit> B4cCalorHitAllocator;
G4ThreadLocal G4Allocator<B4cCalorHit>* B4cCalorHitAllocator = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cCalorimeterSD.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4cCalorimeterSD.cc
/// \brief Implementation of the B4cCalorimeterSD class
@@ -99,8 +99,10 @@ G4bool B4cCalorimeterSD::ProcessHits(G4Step* step,
// Get hit accounting data for this cell
B4cCalorHit* hit = (*fHitsCollection)[layerNumber];
if ( ! hit ) {
G4cerr << "Cannot access hit " << layerNumber << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot access hit " << layerNumber;
G4Exception("B4cCalorimeterSD::ProcessHits()",
"MyCode0004", FatalException, msg);
}
// Get hit for total accounting
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cDetectorConstruction.cc 77601 2013-11-26 17:08:44Z gcosmo $
//
/// \file B4cDetectorConstruction.cc
/// \brief Implementation of the B4cDetectorConstruction class
@@ -37,49 +37,36 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVReplica.hh"
#include "G4UniformMagField.hh"
#include "G4GlobalMagFieldMessenger.hh"
#include "G4AutoDelete.hh"
#include "G4SDManager.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4FieldManager.hh"
#include "G4TransportationManager.hh"
#include "G4GenericMessenger.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include <stdio.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal
G4GlobalMagFieldMessenger* B4cDetectorConstruction::fMagFieldMessenger = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cDetectorConstruction::B4cDetectorConstruction()
: G4VUserDetectorConstruction(),
fMessenger(0),
fMagField(0),
fCheckOverlaps(true)
fCheckOverlaps(true),
fNofLayers(-1)
{
// Define /B4/det commands using generic messenger class
fMessenger
= new G4GenericMessenger(this, "/B4/det/", "Detector construction control");
// Define /B4/det/setMagField command
G4GenericMessenger::Command& setMagFieldCmd
= fMessenger->DeclareMethod("setMagField",
&B4cDetectorConstruction::SetMagField,
"Define magnetic field value (in X direction");
setMagFieldCmd.SetUnitCategory("Magnetic flux density");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cDetectorConstruction::~B4cDetectorConstruction()
{
delete fMagField;
delete fMessenger;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -90,7 +77,6 @@ G4VPhysicalVolume* B4cDetectorConstruction::Construct()
// Define volumes
return DefineVolumes();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -99,8 +85,7 @@ void B4cDetectorConstruction::DefineMaterials()
{
// Lead material defined using NIST Manager
G4NistManager* nistManager = G4NistManager::Instance();
G4bool fromIsotopes = false;
nistManager->FindOrBuildMaterial("G4_Pb", fromIsotopes);
nistManager->FindOrBuildMaterial("G4_Pb");
// Liquid argon material
G4double a; // mass of a mole;
@@ -122,13 +107,13 @@ void B4cDetectorConstruction::DefineMaterials()
G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
{
// Geometry parameters
G4int nofLayers = 10;
fNofLayers = 10;
G4double absoThickness = 10.*mm;
G4double gapThickness = 5.*mm;
G4double calorSizeXY = 10.*cm;
G4double layerThickness = absoThickness + gapThickness;
G4double calorThickness = nofLayers * layerThickness;
G4double calorThickness = fNofLayers * layerThickness;
G4double worldSizeXY = 1.2 * calorSizeXY;
G4double worldSizeZ = 1.2 * calorThickness;
@@ -138,9 +123,10 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
G4Material* gapMaterial = G4Material::GetMaterial("liquidArgon");
if ( ! defaultMaterial || ! absorberMaterial || ! gapMaterial ) {
G4cerr << "Cannot retrieve materials already defined. " << G4endl;
G4cerr << "Exiting application " << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot retrieve materials already defined.";
G4Exception("B4DetectorConstruction::DefineVolumes()",
"MyCode0001", FatalException, msg);
}
//
@@ -208,7 +194,7 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
layerLV, // its logical volume
calorLV, // its mother
kZAxis, // axis of replication
nofLayers, // number of replica
fNofLayers, // number of replica
layerThickness); // witdth of replica
//
@@ -222,7 +208,7 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
= new G4LogicalVolume(
absorberS, // its solid
absorberMaterial, // its material
"Abso"); // its name
"AbsoLV"); // its name
new G4PVPlacement(
0, // no rotation
@@ -245,7 +231,7 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
= new G4LogicalVolume(
gapS, // its solid
gapMaterial, // its material
"Gap"); // its name
"GapLV"); // its name
new G4PVPlacement(
0, // no rotation
@@ -261,26 +247,12 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
// print parameters
//
G4cout << "\n------------------------------------------------------------"
<< "\n---> The calorimeter is " << nofLayers << " layers of: [ "
<< "\n---> The calorimeter is " << fNofLayers << " layers of: [ "
<< absoThickness/mm << "mm of " << absorberMaterial->GetName()
<< " + "
<< gapThickness/mm << "mm of " << gapMaterial->GetName() << " ] "
<< "\n------------------------------------------------------------\n";
//
// Sensitive detectors
//
B4cCalorimeterSD* absoSD
= new B4cCalorimeterSD("AbsorberSD", "AbsorberHitsCollection", nofLayers);
G4SDManager::GetSDMpointer()->AddNewDetector(absoSD );
absorberLV->SetSensitiveDetector(absoSD);
B4cCalorimeterSD* gapSD
= new B4cCalorimeterSD("GapSD", "GapHitsCollection", nofLayers);
G4SDManager::GetSDMpointer()->AddNewDetector(gapSD );
gapLV->SetSensitiveDetector(gapSD);
//
// Visualization attributes
//
@@ -298,25 +270,33 @@ G4VPhysicalVolume* B4cDetectorConstruction::DefineVolumes()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4cDetectorConstruction::SetMagField(G4double fieldValue)
void B4cDetectorConstruction::ConstructSDandField()
{
// Apply a global uniform magnetic field along X axis
G4FieldManager* fieldManager
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
// G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
// Delete the existing magnetic field
if ( fMagField ) delete fMagField;
//
// Sensitive detectors
//
B4cCalorimeterSD* absoSD
= new B4cCalorimeterSD("AbsorberSD", "AbsorberHitsCollection", fNofLayers);
SetSensitiveDetector("AbsoLV",absoSD);
if ( fieldValue != 0. ) {
// create a new one if not null
fMagField
= new G4UniformMagField(G4ThreeVector(fieldValue, 0., 0.));
fieldManager->SetDetectorField(fMagField);
fieldManager->CreateChordFinder(fMagField);
}
else {
fMagField = 0;
fieldManager->SetDetectorField(fMagField);
}
B4cCalorimeterSD* gapSD
= new B4cCalorimeterSD("GapSD", "GapHitsCollection", fNofLayers);
SetSensitiveDetector("GapLV",gapSD);
//
// Magnetic field
//
// Create global magnetic field messenger.
// Uniform magnetic field is then created automatically if
// the field value is not zero.
G4ThreeVector fieldValue = G4ThreeVector();
fMagFieldMessenger = new G4GlobalMagFieldMessenger(fieldValue);
fMagFieldMessenger->SetVerboseLevel(1);
// Register the field messenger for deleting
G4AutoDelete::Register(fMagFieldMessenger);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+24 -37
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4cEventAction.cc 75604 2013-11-04 13:17:26Z gcosmo $
//
/// \file B4cEventAction.cc
/// \brief Implementation of the B4cEventAction class
@@ -37,7 +37,6 @@
#include "G4Event.hh"
#include "G4SDManager.hh"
#include "G4HCofThisEvent.hh"
#include "G4GenericMessenger.hh"
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -47,42 +46,30 @@
B4cEventAction::B4cEventAction()
: G4UserEventAction(),
fMessenger(0),
fPrintModulo(1)
{
// Define /B4/event commands using generic messenger class
fMessenger = new G4GenericMessenger(this, "/B4/event/", "Event control");
// Define /B4/event/setPrintModulo command
G4GenericMessenger::Command& setPrintModulo
= fMessenger->DeclareProperty("setPrintModulo",
fPrintModulo,
"Print events modulo n");
setPrintModulo.SetRange("value>0");
}
fAbsHCID(-1),
fGapHCID(-1)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cEventAction::~B4cEventAction()
{
delete fMessenger;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4cCalorHitsCollection*
B4cEventAction::GetHitsCollection(const G4String& hcName,
B4cEventAction::GetHitsCollection(G4int hcID,
const G4Event* event) const
{
G4int hcID
= G4SDManager::GetSDMpointer()->GetCollectionID(hcName);
B4cCalorHitsCollection* hitsCollection
= static_cast<B4cCalorHitsCollection*>(
event->GetHCofThisEvent()->GetHC(hcID));
if ( ! hitsCollection ) {
G4cerr << "Cannot access hitsCollection " << hcName << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot access hitsCollection ID " << hcID;
G4Exception("B4cEventAction::GetHitsCollection()",
"MyCode0003", FatalException, msg);
}
return hitsCollection;
@@ -110,25 +97,24 @@ void B4cEventAction::PrintEventStatistics(
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4cEventAction::BeginOfEventAction(const G4Event* event)
{
G4int eventID = event->GetEventID();
if ( eventID % fPrintModulo == 0 ) {
G4cout << "\n---> Begin of event: " << eventID << G4endl;
//CLHEP::HepRandom::showEngineStatus();
}
}
void B4cEventAction::BeginOfEventAction(const G4Event* /*event*/)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4cEventAction::EndOfEventAction(const G4Event* event)
{
// Get hits collections IDs (only once)
if ( fAbsHCID == -1 ) {
fAbsHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("AbsorberHitsCollection");
fGapHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("GapHitsCollection");
}
// Get hits collections
B4cCalorHitsCollection* absoHC
= GetHitsCollection("AbsorberHitsCollection", event);
B4cCalorHitsCollection* gapHC
= GetHitsCollection("GapHitsCollection", event);
B4cCalorHitsCollection* absoHC = GetHitsCollection(fAbsHCID, event);
B4cCalorHitsCollection* gapHC = GetHitsCollection(fGapHCID, event);
// Get hit with total values
B4cCalorHit* absoHit = (*absoHC)[absoHC->entries()-1];
@@ -137,7 +123,8 @@ void B4cEventAction::EndOfEventAction(const G4Event* event)
// Print per event (modulo n)
//
G4int eventID = event->GetEventID();
if ( eventID % fPrintModulo == 0) {
G4int printModulo = G4RunManager::GetRunManager()->GetPrintProgress();
if ( ( printModulo > 0 ) && ( eventID % printModulo == 0 ) ) {
G4cout << "---> End of event: " << eventID << G4endl;
PrintEventStatistics(
+2
View File
@@ -1,3 +1,5 @@
# $Id: CMakeLists.txt 68058 2013-03-13 14:47:43Z gcosmo $
#----------------------------------------------------------------------------
# Setup the project
#
+33 -17
View File
@@ -23,18 +23,22 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: exampleB4d.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file exampleB4d.cc
/// \brief Main program of the B4d example
#include "B4dDetectorConstruction.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4dEventAction.hh"
#include "B4dActionInitialization.hh"
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "G4UImanager.hh"
#include "G4UIcommand.hh"
#include "FTFP_BERT.hh"
#include "Randomize.hh"
@@ -52,7 +56,9 @@
namespace {
void PrintUsage() {
G4cerr << " Usage: " << G4endl;
G4cerr << " exampleB4d [-m macro ] [-u UIsession]" << G4endl;
G4cerr << " exampleB4d [-m macro ] [-u UIsession] [-t nThreads]" << G4endl;
G4cerr << " note: -t option is available only for multi-threaded mode."
<< G4endl;
}
}
@@ -62,16 +68,24 @@ int main(int argc,char** argv)
{
// Evaluate arguments
//
if ( argc > 5 ) {
if ( argc > 7 ) {
PrintUsage();
return 1;
}
G4String macro;
G4String session;
#ifdef G4MULTITHREADED
G4int nThreads = 0;
#endif
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];
#ifdef G4MULTITHREADED
else if ( G4String(argv[i]) == "-t" ) {
nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
}
#endif
else {
PrintUsage();
return 1;
@@ -80,11 +94,18 @@ int main(int argc,char** argv)
// Choose the Random engine
//
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
G4Random::setTheEngine(new CLHEP::RanecuEngine);
// Construct the default run manager
// Construct the MT run manager
//
#ifdef G4MULTITHREADED
G4MTRunManager * runManager = new G4MTRunManager;
if ( nThreads > 0 ) {
runManager->SetNumberOfThreads(nThreads);
}
#else
G4RunManager * runManager = new G4RunManager;
#endif
// Set mandatory initialization classes
//
@@ -93,16 +114,11 @@ int main(int argc,char** argv)
G4VModularPhysicsList* physicsList = new FTFP_BERT;
runManager->SetUserInitialization(physicsList);
B4dActionInitialization* actionInitialization
= new B4dActionInitialization();
runManager->SetUserInitialization(actionInitialization);
// Set user action classes
//
runManager
->SetUserAction(new B4PrimaryGeneratorAction());
//
runManager->SetUserAction(new B4RunAction());
//
runManager->SetUserAction(new B4dEventAction());
// Initialize G4 kernel
//
runManager->Initialize();
+235 -195
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-09-06-ref-00 (30-November-2012)
Geant4 version Name: geant4-10-00-ref-00 (6-December-2013)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -12,10 +12,13 @@
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
Using Root
***** Table : Nb of materials = 3 *****
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.261 cm Imean: 823.000 eV
Material: G4_Pb density: 11.350 g/cm3 RadL: 5.613 mm Nucl.Int.Length: 18.247 cm
Imean: 823.000 eV
---> Element: Pb (Pb) Z = 82.0 N = 207.2 A = 207.22 g/mole
---> Isotope: Pb204 Z = 82 N = 204 A = 203.97 g/mole abundance: 1.40 %
---> Isotope: Pb206 Z = 82 N = 206 A = 205.97 g/mole abundance: 24.10 %
@@ -24,7 +27,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.006 cm Imean: 188.000 eV
Material: liquidArgon density: 1.390 g/cm3 RadL: 14.065 cm Nucl.Int.Length: 86.078 cm
Imean: 188.000 eV
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole
---> Isotope: 36 Z = 18 N = 36 A = 35.97 g/mole abundance: 0.34 %
---> Isotope: 38 Z = 18 N = 38 A = 37.96 g/mole abundance: 0.06 %
@@ -32,7 +37,9 @@
ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 114561548.020 pc Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
Material: Galactic density: 0.000 kg/m3 RadL: 204727512.315 pc Nucl.Int.Length: 113804112.837 pc
Imean: 19.200 eV temperature: 2.73 K pressure: 0.00 atm
---> Element: Galactic ( ) Z = 1.0 N = 1.0 A = 1.01 g/mole
---> Isotope: 1 Z = 1 N = 1 A = 1.01 g/mole abundance: 99.99 %
---> Isotope: 2 Z = 1 N = 2 A = 2.01 g/mole abundance: 0.01 %
@@ -47,6 +54,12 @@ Checking overlaps for volume Gap ... OK!
------------------------------------------------------------
---> The calorimeter is 10 layers of: [ 10mm of G4_Pb + 5mm of liquidArgon ]
------------------------------------------------------------
G4SDManager::AddNewCollection : the collection <Absorber/Edep> is registered at 1
G4SDManager::AddNewCollection : the collection <Absorber/TrackLength> is registered at 2
New sensitive detector <Absorber> is registored at /
G4SDManager::AddNewCollection : the collection <Gap/Edep> is registered at 3
G4SDManager::AddNewCollection : the collection <Gap/TrackLength> is registered at 4
New sensitive detector <Gap> is registored at /
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
@@ -58,12 +71,10 @@ Current available graphics systems are:
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
OpenGLImmediateQt (OGLI, OGLIQt)
OpenGLImmediateX (OGLIX)
OpenGLImmediateXm (OGLIXm, OGLI_FALLBACK, OGLIQt_FALLBACK)
OpenGLStoredQt (OGL, OGLS, OGLSQt)
OpenGLImmediateXm (OGLI, OGLIXm)
OpenGLStoredX (OGLSX)
OpenGLStoredXm (OGLSXm, OGL_FALLBACK, OGLS_FALLBACK, OGLSQt_FALLBACK)
OpenGLStoredXm (OGL, OGLS, OGLSXm)
RayTracer (RayTracer)
RayTracerX (RayTracerX)
VRML1FILE (VRML1FILE)
@@ -116,7 +127,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -143,7 +154,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -193,13 +204,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -213,7 +225,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -245,6 +257,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -270,6 +283,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -295,6 +309,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -321,6 +336,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -353,6 +369,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -384,6 +401,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -409,215 +427,221 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
============================================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
Hadronic Processes for <GenericIon>
-----------------------------------
ionInelastic Models: Binary Light Ion Cascade: Emin(GeV)= 0 Emax(GeV)= 4
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
ionInelastic Crs sctns: Glauber-Gribov nucleus nucleus: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV ---> 4 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov nucleus nucleus: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_neutron>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_neutron
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
AntiNeutronInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for anti_proton
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: GheishaElastic: 0 eV ---> 100 TeV
Hadronic Processes for <anti_proton>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 0.1
AntiAElastic: Emin(GeV)= 0.1 Emax(GeV)= 100000
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 2.88022e+295 J
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hFritiofCaptureAtRest
AntiProtonInelastic Models: FTFP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for e+
AntiProtonInelastic Crs sctns: AntiAGlauber: Emin(GeV)= 0 Emax(GeV)= 1.79769e+305
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hFritiofCaptureAtRest
---------------------------------------------------
Hadronic Processes for e-
Hadronic Processes for <e+>
-----------------------------------
PositronNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
PositronNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
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 <e->
-----------------------------------
ElectroNuclear Models: G4ElectroVDNuclearModel: Emin(GeV)= 0 Emax(GeV)= 1e+06
---------------------------------------------------
Hadronic Processes for kaon+
ElectroNuclear Crs sctns: ElectroNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <gamma>
-----------------------------------
PhotonInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 3.5
TheoFSGenerator: Emin(GeV)= 3 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for kaon-
PhotonInelastic Crs sctns: PhotoNuclearXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
Hadronic Processes for <kaon+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hBertiniCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for lambda
KaonPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonPlusInelastic Crs sctns: ChipsKaonPlusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Hadronic Processes for <kaon->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
Process: muMinusCaptureAtRest
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for neutron
KaonMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsNeutronElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
KaonMinusInelastic Crs sctns: ChipsKaonMinusInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: neutronInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaCaptureXS: 0 eV ---> 100 TeV
Hadronic Processes for <lambda>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for pi+
hadElastic Crs sctns: GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
LambdaInelastic Models: BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 6
FTFP: Emin(GeV)= 2 Emax(GeV)= 100000
LambdaInelastic Crs sctns: ChipsHyperonInelasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <mu->
muMinusCaptureAtRest
Hadronic Processes for <neutron>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
hadElastic Crs sctns: ChipsNeutronElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
NeutronInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
NeutronInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
nCapture Models: G4LCapture: Emin(GeV)= 0 Emax(GeV)= 20000
nCapture Crs sctns: GheishaCaptureXS: Emin(GeV)= 0 Emax(GeV)= 100000
nFission Models: G4LFission: Emin(GeV)= 0 Emax(GeV)= 20000
nFission Crs sctns: GheishaFissionXS: Emin(GeV)= 0 Emax(GeV)= 100000
Hadronic Processes for <pi+>
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionPlusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionPlusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi+Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Hadronic Processes for <pi->
-----------------------------------
hadElastic Models: hElasticLHEP: Emin(GeV)= 0 Emax(GeV)= 1
hElasticGlauber: Emin(GeV)= 1 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
hadElastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
PionMinusInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
PionMinusInelastic Crs sctns: G4CrossSectionPairGG: Emin(GeV)= 0 Emax(GeV)= 100000
Process: pi-Inelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: G4CrossSectionPairGG: 0 eV ---> 100 TeV
G4CrossSectionPairGG: G4PiNuclearCrossSection cross sections
below 91 GeV, Glauber-Gribov above
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
hBertiniCaptureAtRest
Process: hBertiniCaptureAtRest
Hadronic Processes for <proton>
-----------------------------------
hadElastic Models: hElasticCHIPS: Emin(GeV)= 0 Emax(GeV)= 100000
---------------------------------------------------
Hadronic Processes for proton
hadElastic Crs sctns: ChipsProtonElasticXS: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaElastic: Emin(GeV)= 0 Emax(GeV)= 100000
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: ChipsProtonElasticXS: 0 eV ---> 100 TeV
Cr_sctns: GheishaElastic: 0 eV ---> 100 TeV
ProtonInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000
BertiniCascade: Emin(GeV)= 0 Emax(GeV)= 5
Process: protonInelastic
Model: FTFP: 4 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 5 GeV
Cr_sctns: Barashenkov-Glauber: 0 eV ---> 100 TeV
Cr_sctns: GheishaInelastic: 0 eV ---> 100 TeV
ProtonInelastic Crs sctns: Barashenkov-Glauber: Emin(GeV)= 0 Emax(GeV)= 100000
GheishaInelastic: Emin(GeV)= 0 Emax(GeV)= 100000
============================================================================================
### Run 0 start.
Using Root analysis manager
---> Begin of event: 0
================================================================
### Run 0 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 288.831 MeV total track length: 20.4665 cm
Gap: total energy: 8.19232 MeV total track length: 3.81315 cm
Absorber: total energy: 283.263 MeV total track length: 19.743 cm
Gap: total energy: 10.6009 MeV total track length: 5.29096 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 288.831 MeV rms = 0 eV
EGap : mean = 8.19232 MeV rms = 0 eV
LAbs : mean = 20.4665 cm rms = 0 fm
LGap : mean = 3.81315 cm rms = 0 fm
EAbs : mean = 283.263 MeV rms = 0 eV
EGap : mean = 10.6009 MeV rms = 0 eV
LAbs : mean = 19.743 cm rms = 0 fm
LGap : mean = 5.29096 cm rms = 0 fm
... write Root file : B4.root - done
Transportation, msc, hIoni, ionIoni
hBrems, hPairProd, eIoni, eBrem
annihil, CoulombScat, phot, compt
conv, muIoni, muBrems, muPairProd
PhotonInelastic, ElectroNuclear, PositronNuclear, Decay
hadElastic, NeutronInelastic, nCapture, nFission
ProtonInelastic, PionPlusInelastic, PionMinusInelastic, KaonPlusInelastic
KaonMinusInelastic, KaonZeroLInelastic, KaonZeroSInelastic, LambdaInelastic
AntiLambdaInelastic,SigmaMinusInelastic,AntiSigmaMinusInelastic, SigmaPlusInelastic
AntiSigmaPlusInelastic, XiMinusInelastic,AntiXiMinusInelastic, XiZeroInelastic
AntiXiZeroInelastic,OmegaMinusInelastic,AntiOmegaMinusInelastic,AntiProtonInelastic
AntiNeutronInelastic,AntiDeuteronInelastic,AntiTritonInelasticProcess,AntiHe3InelasticProcess
AntiAlphaInelasticProcess,hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest
dInelastic, tInelastic, He3Inelastic, alphaInelastic
ionInelastic, nKiller
photonNuclear, electronNuclear, positronNuclear, Decay
hadElastic, neutronInelastic, nCapture, protonInelastic
pi+Inelastic, pi-Inelastic, kaon+Inelastic, kaon-Inelastic
kaon0LInelastic, kaon0SInelastic, lambdaInelastic,anti-lambdaInelastic
sigma-Inelastic,anti_sigma-Inelastic, sigma+Inelastic,anti_sigma+Inelastic
xi-Inelastic, anti_xi-Inelastic, xi0Inelastic, anti_xi0Inelastic
omega-Inelastic,anti_omega-Inelastic,anti_protonInelastic,anti_neutronInelastic
anti_deuteronInelastic,anti_tritonInelastic, anti_He3Inelastic,anti_alphaInelastic
hFritiofCaptureAtRest,hBertiniCaptureAtRest,muMinusCaptureAtRest, dInelastic
tInelastic, He3Inelastic, alphaInelastic, ionInelastic
nKiller
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -639,7 +663,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -666,7 +690,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -716,13 +740,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -736,7 +761,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -768,6 +793,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -793,6 +819,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -818,6 +845,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -844,6 +872,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -876,6 +905,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -907,6 +937,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -932,22 +963,23 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 1 start.
Using Root analysis manager
---> Begin of event: 0
### Run 1 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 282.08 MeV total track length: 20.1981 cm
Gap: total energy: 16.6294 MeV total track length: 8.51564 cm
Absorber: total energy: 282.146 MeV total track length: 20.3465 cm
Gap: total energy: 18.8759 MeV total track length: 9.43449 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 282.08 MeV rms = 0 eV
EGap : mean = 16.6294 MeV rms = 0 eV
LAbs : mean = 20.1981 cm rms = 0 fm
LGap : mean = 8.51564 cm rms = 0 fm
EAbs : mean = 282.146 MeV rms = 0 eV
EGap : mean = 18.8759 MeV rms = 0 eV
LAbs : mean = 20.3465 cm rms = 0 fm
LGap : mean = 9.43449 cm rms = 0 fm
... write Root file : B4.root - done
phot: for gamma SubType= 12
LambdaPrime table from 200 keV to 10 TeV in 54 bins
@@ -969,7 +1001,7 @@ conv: for gamma SubType= 14
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
@@ -996,7 +1028,7 @@ CoulombScat: for e- SubType= 1
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 42 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 35 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
@@ -1046,13 +1078,14 @@ hBrems: for proton SubType= 3
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1066,7 +1099,7 @@ ionIoni: for GenericIon SubType= 2
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc95 : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
@@ -1098,6 +1131,7 @@ hBrems: for anti_proton SubType= 3
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1123,6 +1157,7 @@ hBrems: for kaon+ SubType= 3
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1148,6 +1183,7 @@ hBrems: for kaon- SubType= 3
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1174,6 +1210,7 @@ muBrems: for mu+ SubType= 3
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1206,6 +1243,7 @@ muBrems: for mu- SubType= 3
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1237,6 +1275,7 @@ hBrems: for pi+ SubType= 3
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
@@ -1262,21 +1301,22 @@ hBrems: for pi- SubType= 3
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV in 77 bins, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
### Run 2 start.
Using Root analysis manager
---> Begin of event: 0
### Run 2 starts.
... open Root analysis file : B4.root - done
--> Event 0 starts.
---> End of event: 0
Absorber: total energy: 462.772 MeV total track length: 33.1144 cm
Gap: total energy: 21.7635 MeV total track length: 11.0673 cm
Absorber: total energy: 468.273 MeV total track length: 33.5299 cm
Gap: total energy: 16.8004 MeV total track length: 8.15542 cm
----> print histograms statistic
----> print histograms statistic for the entire run
EAbs : mean = 462.772 MeV rms = 0 eV
EGap : mean = 21.7635 MeV rms = 0 eV
LAbs : mean = 33.1144 cm rms = 0 fm
LGap : mean = 11.0673 cm rms = 0 fm
EAbs : mean = 468.273 MeV rms = 0 eV
EGap : mean = 16.8004 MeV rms = 0 eV
LAbs : mean = 33.5299 cm rms = 0 fm
LGap : mean = 8.15542 cm rms = 0 fm
... write Root file : B4.root - done
Graphics systems deleted.
Visualization Manager deleting...
+2 -3
View File
@@ -15,7 +15,6 @@
/gui/addMenu run Run
/gui/addButton run "beamOn 1" "/run/beamOn 1"
/gui/addButton run run1 "/control/execute run1.mac"
/gui/addButton run run2 "/control/execute run2.mac"
#
# Gun menu :
/gui/addMenu gun Gun
@@ -38,14 +37,14 @@
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wire"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
#
# To limit the output flow in the "dump" widget :
/B4/event/setPrintModulo 100
/run/printProgress 100
#
# User defined icon :
/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4Analysis.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4Analysis.hh
/// \brief Selection of the analysis technology
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
//
// $Id: B4PrimaryGeneratorAction.hh 69223 2013-04-23 12:36:10Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.hh
/// \brief Definition of the B4PrimaryGeneratorAction class
+1 -1
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.hh 74265 2013-10-02 14:41:20Z gcosmo $
//
/// \file B4RunAction.hh
/// \brief Definition of the B4RunAction class
@@ -0,0 +1,51 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4dActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4dActionInitialization.hh
/// \brief Definition of the B4dActionInitialization class
#ifndef B4dActionInitialization_h
#define B4dActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
/// Action initialization class.
///
class B4dActionInitialization : public G4VUserActionInitialization
{
public:
B4dActionInitialization();
virtual ~B4dActionInitialization();
virtual void BuildForMaster() const;
virtual void Build() const;
};
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4dDetectorConstruction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4dDetectorConstruction.hh
/// \brief Definition of the B4dDetectorConstruction class
@@ -34,10 +34,8 @@
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4Box;
class G4VPhysicalVolume;
class G4UniformMagField;
class G4GenericMessenger;
class G4GlobalMagFieldMessenger;
/// Detector construction class to define materials and geometry.
/// The calorimeter is a box made of a given number of layers. A layer consists
@@ -50,15 +48,10 @@ class G4GenericMessenger;
/// - the number of layers,
/// - the transverse size of the calorimeter (the input face is a square).
///
/// In DefineVolumes(), sensitive detectors of G4MultiFunctionalDetector type
/// with primitive scorers are created and associated with the Absorber
/// and Gap volumes.
///
/// In addition a transverse uniform magnetic field is defined in
/// SetMagField() method which can be activated
/// via a command defined using G4GenericMessenger class:
/// - /B4/det/setMagField value unit
/// In ConstructSDandField() sensitive detectors of G4MultiFunctionalDetector
/// type with primitive scorers are created and associated with the Absorber
/// and Gap volumes. In addition a transverse uniform magnetic field is defined
/// via G4GlobalMagFieldMessenger class.
class B4dDetectorConstruction : public G4VUserDetectorConstruction
{
@@ -68,10 +61,7 @@ class B4dDetectorConstruction : public G4VUserDetectorConstruction
public:
virtual G4VPhysicalVolume* Construct();
// set methods
//
void SetMagField(G4double fieldValue);
virtual void ConstructSDandField();
private:
// methods
@@ -81,8 +71,8 @@ class B4dDetectorConstruction : public G4VUserDetectorConstruction
// data members
//
G4GenericMessenger* fMessenger; // messenger
G4UniformMagField* fMagField; // magnetic field
static G4ThreadLocal G4GlobalMagFieldMessenger* fMagFieldMessenger;
// magnetic field messenger
G4bool fCheckOverlaps; // option to activate checking of volumes overlaps
};
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4dEventAction.hh 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4dEventAction.hh
/// \brief Definition of the B4dEventAction class
@@ -36,18 +36,11 @@
#include "G4THitsMap.hh"
#include "globals.hh"
class G4GenericMessenger;
/// Event action class
///
/// In EndOfEventAction(), it prints the accumulated quantities of the energy
/// deposit and track lengths of charged particles in Absober and Gap layers
/// stored in the hits collections.
///
/// The data member fPrintModulo defines the frequency of printing
/// the accumulated quantities. Its value can be changed via a command
/// defined using G4GenericMessenger class:
/// - /B4/event/setPrintModulo value
class B4dEventAction : public G4UserEventAction
{
@@ -57,28 +50,21 @@ public:
virtual void BeginOfEventAction(const G4Event* event);
virtual void EndOfEventAction(const G4Event* event);
// set methods
void SetPrintModulo(G4int value);
private:
// methods
G4THitsMap<G4double>* GetHitsCollection(const G4String& hcName,
G4THitsMap<G4double>* GetHitsCollection(G4int hcID,
const G4Event* event) const;
G4double GetSum(G4THitsMap<G4double>* hitsMap) const;
void PrintEventStatistics(G4double absoEdep, G4double absoTrackLength,
G4double gapEdep, G4double gapTrackLength) const;
// data members
G4GenericMessenger* fMessenger;
G4int fPrintModulo;
G4int fAbsoEdepHCID;
G4int fGapEdepHCID;
G4int fAbsoTrackLengthHCID;
G4int fGapTrackLengthHCID;
};
// inline functions
inline void B4dEventAction::SetPrintModulo(G4int value) {
fPrintModulo = value;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode without visualization
#
# Set some default verbose
+1 -1
View File
@@ -1,4 +1,4 @@
# Macro file for the initialization phase of "exampleN03.cc"
# Macro file for the initialization phase of example B4
# when running in interactive mode with visualization
#
# Sets some default verbose
+2 -2
View File
@@ -21,12 +21,12 @@
# 20 events
#
/tracking/verbose 0
/B4/event/setPrintModulo 5
/run/printProgress 5
/run/beamOn 20
#
# Magnetic field
#
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
/run/beamOn 3
#
# Activate/inactivate physics processes
+1 -1
View File
@@ -7,6 +7,6 @@
# electron 50 MeV in direction (0.,0.,1.)
# 1000 events
#
/B4/event/setPrintModulo 100
/run/printProgress 100
/run/beamOn 1000
@@ -23,10 +23,10 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
//
/// \file B4dPrimaryGeneratorAction.cc
/// \brief Implementation of the B4dPrimaryGeneratorAction class
// $Id: B4PrimaryGeneratorAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4PrimaryGeneratorAction.cc
/// \brief Implementation of the B4PrimaryGeneratorAction class
#include "B4PrimaryGeneratorAction.hh"
@@ -85,9 +85,12 @@ void B4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
worldZHalfLength = worldBox->GetZHalfLength();
}
else {
G4cerr << "World volume of box not found." << G4endl;
G4cerr << "Perhaps you have changed geometry." << G4endl;
G4cerr << "The gun will be place in the center." << G4endl;
G4ExceptionDescription msg;
msg << "World volume of box not found." << G4endl;
msg << "Perhaps you have changed geometry." << G4endl;
msg << "The gun will be place in the center.";
G4Exception("B4PrimaryGeneratorAction::GeneratePrimaries()",
"MyCode0002", JustWarning, msg);
}
// Set gun position
+70 -64
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4RunAction.cc 75215 2013-10-29 16:07:06Z gcosmo $
//
/// \file B4RunAction.cc
/// \brief Implementation of the B4RunAction class
@@ -41,50 +41,30 @@
B4RunAction::B4RunAction()
: G4UserRunAction()
{
}
// set printing event number per each event
G4RunManager::GetRunManager()->SetPrintProgress(1);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4RunAction::~B4RunAction()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Book histograms, ntuple
//
// Create analysis manager
// The choice of analysis technology is done via selectin of a namespace
// in B4Analysis.hh
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4cout << "Using " << analysisManager->GetType()
<< " analysis manager" << G4endl;
G4cout << "Using " << analysisManager->GetType() << G4endl;
// Create directories
//analysisManager->SetHistoDirectoryName("histograms");
//analysisManager->SetNtupleDirectoryName("ntuple");
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
analysisManager->SetVerboseLevel(1);
analysisManager->SetFirstHistoId(1);
// Creating histograms
// Book histograms, ntuple
//
// Creating histograms
analysisManager->CreateH1("1","Edep in absorber", 100, 0., 800*MeV);
analysisManager->CreateH1("2","Edep in gap", 100, 0., 100*MeV);
analysisManager->CreateH1("3","trackL in absorber", 100, 0., 1*m);
analysisManager->CreateH1("4","trackL in gap", 100, 0., 50*cm);
// Creating ntuple
//
analysisManager->CreateNtuple("B4", "Edep and TrackL");
@@ -97,43 +77,69 @@ void B4RunAction::BeginOfRunAction(const G4Run* run)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* aRun)
B4RunAction::~B4RunAction()
{
G4int nofEvents = aRun->GetNumberOfEvent();
if ( nofEvents == 0 ) return;
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic \n" << G4endl;
G4cout
<< " EAbs : mean = " << G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy")
<< G4endl;
G4cout
<< " EGap : mean = " << G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = " << G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy")
<< G4endl;
G4cout
<< " LAbs : mean = " << G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(3)->rms(), "Length")
<< G4endl;
G4cout
<< " LGap : mean = " << G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = " << G4BestUnit(analysisManager->GetH1(4)->rms(), "Length")
<< G4endl;
}
// save histograms
//
analysisManager->Write();
analysisManager->CloseFile();
// complete cleanup
//
delete G4AnalysisManager::Instance();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::BeginOfRunAction(const G4Run* /*run*/)
{
//inform the runManager to save random number seed
//G4RunManager::GetRunManager()->SetRandomNumberStore(true);
// Get analysis manager
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
// Open an output file
//
G4String fileName = "B4";
analysisManager->OpenFile(fileName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4RunAction::EndOfRunAction(const G4Run* /*run*/)
{
// print histogram statistics
//
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
if ( analysisManager->GetH1(1) ) {
G4cout << "\n ----> print histograms statistic ";
if(isMaster) {
G4cout << "for the entire run \n" << G4endl;
}
else {
G4cout << "for the local thread \n" << G4endl;
}
G4cout << " EAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(1)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(1)->rms(), "Energy") << G4endl;
G4cout << " EGap : mean = "
<< G4BestUnit(analysisManager->GetH1(2)->mean(), "Energy")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(2)->rms(), "Energy") << G4endl;
G4cout << " LAbs : mean = "
<< G4BestUnit(analysisManager->GetH1(3)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(3)->rms(), "Length") << G4endl;
G4cout << " LGap : mean = "
<< G4BestUnit(analysisManager->GetH1(4)->mean(), "Length")
<< " rms = "
<< G4BestUnit(analysisManager->GetH1(4)->rms(), "Length") << G4endl;
}
// save histograms & ntuple
//
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: B4dActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
//
/// \file B4dActionInitialization.cc
/// \brief Implementation of the B4dActionInitialization class
#include "B4dActionInitialization.hh"
#include "B4PrimaryGeneratorAction.hh"
#include "B4RunAction.hh"
#include "B4dEventAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4dActionInitialization::B4dActionInitialization()
: G4VUserActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4dActionInitialization::~B4dActionInitialization()
{;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4dActionInitialization::BuildForMaster() const
{
SetUserAction(new B4RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4dActionInitialization::Build() const
{
SetUserAction(new B4PrimaryGeneratorAction);
SetUserAction(new B4RunAction);
SetUserAction(new B4dEventAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4dDetectorConstruction.cc 77601 2013-11-26 17:08:44Z gcosmo $
//
/// \file B4dDetectorConstruction.cc
/// \brief Implementation of the B4dDetectorConstruction class
@@ -37,7 +37,8 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4PVReplica.hh"
#include "G4UniformMagField.hh"
#include "G4GlobalMagFieldMessenger.hh"
#include "G4AutoDelete.hh"
#include "G4SDManager.hh"
#include "G4SDChargedFilter.hh"
@@ -49,41 +50,26 @@
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4FieldManager.hh"
#include "G4TransportationManager.hh"
#include "G4GenericMessenger.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include <stdio.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ThreadLocal
G4GlobalMagFieldMessenger* B4dDetectorConstruction::fMagFieldMessenger = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4dDetectorConstruction::B4dDetectorConstruction()
: G4VUserDetectorConstruction(),
fMessenger(0),
fMagField(0),
fCheckOverlaps(true)
{
// Define /B4/det commands using generic messenger class
fMessenger
= new G4GenericMessenger(this, "/B4/det/", "Detector construction control");
// Define /B4/det/setMagField command
G4GenericMessenger::Command& setMagFieldCmd
= fMessenger->DeclareMethod("setMagField",
&B4dDetectorConstruction::SetMagField,
"Define magnetic field value (in X direction");
setMagFieldCmd.SetUnitCategory("Magnetic flux density");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4dDetectorConstruction::~B4dDetectorConstruction()
{
delete fMagField;
delete fMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -95,7 +81,6 @@ G4VPhysicalVolume* B4dDetectorConstruction::Construct()
// Define volumes
return DefineVolumes();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -104,8 +89,7 @@ void B4dDetectorConstruction::DefineMaterials()
{
// Lead material defined using NIST Manager
G4NistManager* nistManager = G4NistManager::Instance();
G4bool fromIsotopes = false;
nistManager->FindOrBuildMaterial("G4_Pb", fromIsotopes);
nistManager->FindOrBuildMaterial("G4_Pb");
// Liquid argon material
G4double a; // mass of a mole;
@@ -143,9 +127,10 @@ G4VPhysicalVolume* B4dDetectorConstruction::DefineVolumes()
G4Material* gapMaterial = G4Material::GetMaterial("liquidArgon");
if ( ! defaultMaterial || ! absorberMaterial || ! gapMaterial ) {
G4cerr << "Cannot retrieve materials already defined. " << G4endl;
G4cerr << "Exiting application " << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot retrieve materials already defined.";
G4Exception("B4DetectorConstruction::DefineVolumes()",
"MyCode0001", FatalException, msg);
}
//
@@ -227,7 +212,7 @@ G4VPhysicalVolume* B4dDetectorConstruction::DefineVolumes()
= new G4LogicalVolume(
absorberS, // its solid
absorberMaterial, // its material
"Abso"); // its name
"AbsoLV"); // its name
new G4PVPlacement(
0, // no rotation
@@ -250,7 +235,7 @@ G4VPhysicalVolume* B4dDetectorConstruction::DefineVolumes()
= new G4LogicalVolume(
gapS, // its solid
gapMaterial, // its material
"Gap"); // its name
"GapLV"); // its name
new G4PVPlacement(
0, // no rotation
@@ -272,43 +257,6 @@ G4VPhysicalVolume* B4dDetectorConstruction::DefineVolumes()
<< gapThickness/mm << "mm of " << gapMaterial->GetName() << " ] "
<< "\n------------------------------------------------------------\n";
//
// Scorers
//
// declare Absorber as a MultiFunctionalDetector scorer
//
G4MultiFunctionalDetector* absDetector
= new G4MultiFunctionalDetector("Absorber");
G4VPrimitiveScorer* primitive;
G4SDChargedFilter* charged = new G4SDChargedFilter("chargedFilter");
primitive = new G4PSEnergyDeposit("Edep");
absDetector->RegisterPrimitive(primitive);
primitive = new G4PSTrackLength("TrackLength");
primitive ->SetFilter(charged);
absDetector->RegisterPrimitive(primitive);
G4SDManager::GetSDMpointer()->AddNewDetector(absDetector);
absorberLV->SetSensitiveDetector(absDetector);
// declare Gap as a MultiFunctionalDetector scorer
//
G4MultiFunctionalDetector* gapDetector
= new G4MultiFunctionalDetector("Gap");
primitive = new G4PSEnergyDeposit("Edep");
gapDetector->RegisterPrimitive(primitive);
primitive = new G4PSTrackLength("TrackLength");
primitive ->SetFilter(charged);
gapDetector->RegisterPrimitive(primitive);
G4SDManager::GetSDMpointer()->AddNewDetector(gapDetector);
gapLV->SetSensitiveDetector(gapDetector);
//
// Visualization attributes
//
@@ -326,25 +274,55 @@ G4VPhysicalVolume* B4dDetectorConstruction::DefineVolumes()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4dDetectorConstruction::SetMagField(G4double fieldValue)
void B4dDetectorConstruction::ConstructSDandField()
{
// Apply a global uniform magnetic field along X axis
G4FieldManager* fieldManager
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
//
// Scorers
//
// Delete the existing magnetic field
if ( fMagField ) delete fMagField;
// declare Absorber as a MultiFunctionalDetector scorer
//
G4MultiFunctionalDetector* absDetector
= new G4MultiFunctionalDetector("Absorber");
if ( fieldValue != 0. ) {
// create a new one if not null
fMagField
= new G4UniformMagField(G4ThreeVector(fieldValue, 0., 0.));
fieldManager->SetDetectorField(fMagField);
fieldManager->CreateChordFinder(fMagField);
}
else {
fMagField = 0;
fieldManager->SetDetectorField(fMagField);
}
G4VPrimitiveScorer* primitive;
primitive = new G4PSEnergyDeposit("Edep");
absDetector->RegisterPrimitive(primitive);
primitive = new G4PSTrackLength("TrackLength");
G4SDChargedFilter* charged = new G4SDChargedFilter("chargedFilter");
primitive ->SetFilter(charged);
absDetector->RegisterPrimitive(primitive);
SetSensitiveDetector("AbsoLV",absDetector);
// declare Gap as a MultiFunctionalDetector scorer
//
G4MultiFunctionalDetector* gapDetector
= new G4MultiFunctionalDetector("Gap");
primitive = new G4PSEnergyDeposit("Edep");
gapDetector->RegisterPrimitive(primitive);
primitive = new G4PSTrackLength("TrackLength");
primitive ->SetFilter(charged);
gapDetector->RegisterPrimitive(primitive);
SetSensitiveDetector("GapLV",gapDetector);
//
// Magnetic field
//
// Create global magnetic field messenger.
// Uniform magnetic field is then created automatically if
// the field value is not zero.
G4ThreeVector fieldValue = G4ThreeVector();
fMagFieldMessenger = new G4GlobalMagFieldMessenger(fieldValue);
fMagFieldMessenger->SetVerboseLevel(1);
// Register the field messenger for deleting
G4AutoDelete::Register(fMagFieldMessenger);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+35 -43
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id$
// $Id: B4dEventAction.cc 75604 2013-11-04 13:17:26Z gcosmo $
//
/// \file B4dEventAction.cc
/// \brief Implementation of the B4dEventAction class
@@ -35,7 +35,6 @@
#include "G4Event.hh"
#include "G4SDManager.hh"
#include "G4HCofThisEvent.hh"
#include "G4GenericMessenger.hh"
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -45,47 +44,39 @@
B4dEventAction::B4dEventAction()
: G4UserEventAction(),
fMessenger(0),
fPrintModulo(1)
{
// Define /B4/event commands using generic messenger class
fMessenger = new G4GenericMessenger(this, "/B4/event/", "Event control");
// Define /B4/event/setPrintModulo command
G4GenericMessenger::Command& setPrintModulo
= fMessenger->DeclareProperty("setPrintModulo",
fPrintModulo,
"Print events modulo n");
setPrintModulo.SetRange("value>0");
}
fAbsoEdepHCID(-1),
fGapEdepHCID(-1),
fAbsoTrackLengthHCID(-1),
fGapTrackLengthHCID(-1)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B4dEventAction::~B4dEventAction()
{
delete fMessenger;
}
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4THitsMap<G4double>*
B4dEventAction::GetHitsCollection(const G4String& hcName,
B4dEventAction::GetHitsCollection(G4int hcID,
const G4Event* event) const
{
G4int hcID
= G4SDManager::GetSDMpointer()->GetCollectionID(hcName);
G4THitsMap<G4double>* hitsCollection
= static_cast<G4THitsMap<G4double>*>(
event->GetHCofThisEvent()->GetHC(hcID));
if ( ! hitsCollection ) {
G4cerr << "Cannot access hitsCollection " << hcName << G4endl;
exit(1);
G4ExceptionDescription msg;
msg << "Cannot access hitsCollection ID " << hcID;
G4Exception("B4dEventAction::GetHitsCollection()",
"MyCode0003", FatalException, msg);
}
return hitsCollection;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double B4dEventAction::GetSum(G4THitsMap<G4double>* hitsMap) const
{
G4double sumValue = 0;
@@ -119,33 +110,34 @@ void B4dEventAction::PrintEventStatistics(
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4dEventAction::BeginOfEventAction(const G4Event* event)
{
G4int eventID = event->GetEventID();
if ( eventID % fPrintModulo == 0 ) {
G4cout << "\n---> Begin of event: " << eventID << G4endl;
//CLHEP::HepRandom::showEngineStatus();
}
}
void B4dEventAction::BeginOfEventAction(const G4Event* /*event*/)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B4dEventAction::EndOfEventAction(const G4Event* event)
{
// Get sum value from hits collections
// Get hist collections IDs
if ( fAbsoEdepHCID == -1 ) {
fAbsoEdepHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("Absorber/Edep");
fGapEdepHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("Gap/Edep");
fAbsoTrackLengthHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("Absorber/TrackLength");
fGapTrackLengthHCID
= G4SDManager::GetSDMpointer()->GetCollectionID("Gap/TrackLength");
}
// Get sum values from hits collections
//
G4double absoEdep
= GetSum(GetHitsCollection("Absorber/Edep", event));
G4double gapEdep
= GetSum(GetHitsCollection("Gap/Edep", event));
G4double absoEdep = GetSum(GetHitsCollection(fAbsoEdepHCID, event));
G4double gapEdep = GetSum(GetHitsCollection(fGapEdepHCID, event));
G4double absoTrackLength
= GetSum(GetHitsCollection("Absorber/TrackLength", event));
= GetSum(GetHitsCollection(fAbsoTrackLengthHCID, event));
G4double gapTrackLength
= GetSum(GetHitsCollection("Gap/TrackLength", event));
= GetSum(GetHitsCollection(fGapTrackLengthHCID, event));
// get analysis manager
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
@@ -168,9 +160,9 @@ void B4dEventAction::EndOfEventAction(const G4Event* event)
//print per event (modulo n)
//
G4int eventID = event->GetEventID();
if ( eventID % fPrintModulo == 0) {
G4int printModulo = G4RunManager::GetRunManager()->GetPrintProgress();
if ( ( printModulo > 0 ) && ( eventID % printModulo == 0 ) ) {
G4cout << "---> End of event: " << eventID << G4endl;
PrintEventStatistics(absoEdep, absoTrackLength, gapEdep, gapTrackLength);
}
}
+2
View File
@@ -1,3 +1,5 @@
# $Id: CMakeLists.txt 68058 2013-03-13 14:47:43Z gcosmo $
#---Adding example N3 subdirectories explicitly
# and a custom target to for building all example N3 options ----------
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.97 2010-09-30 09:05:24 gcosmo Exp $
# $Id: GNUmakefile 68058 2013-03-13 14:47:43Z gcosmo $
# -----------------------------------------------------------------
SUBDIR = B4a B4b B4c B4d
+84
View File
@@ -15,6 +15,90 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
02 December 2013 Ivana Hrivnacova
- Fixed gui.mac:
corrected wireframe parameter, removed run2.mac from gui
28/11/13 I. Hrivnacova (exampleB4-V09-06-18)
- Clean-up macros (fixed obsolete comments)
26/11/13 I. Hrivnacova (exampleB4-V09-06-17)
- Fixed deleting fMagFieldMessenger with use of G4AutoDelete utility
30/10/13 I. Hrivnacova (exampleB4-V09-06-16)
- Added a protection when /run/printProgress value is set to zero
30/10/13 I. Hrivnacova (exampleB4-V09-06-15)
- Updated README
29/10/13 I. Hrivnacova (exampleB4-V09-06-14)
- Fixed macro (using /run/printProgress)
29/10/13 I. Hrivnacova (exampleB4-V09-06-13)
- Using G4GlobalMagFieldMessenger
- Using G4Exception for warnings and error messages
- Using G4RunManager::SetPrintProgress()
- Using Gent4 default number of threads when not set via command line
- Updated README
01/10/13 I. Hrivnacova (exampleB4-V09-06-12)
- Updated for changes in analysis:
removal of G4AnalysisManager::Create(isMaster)
19/08/13 I. Hrivnacova (exampleB4-V09-06-11)
- Fixed B4[b]RunAction::EndOfRunAction() again: to get the printed
histogram statistics correct
24/07/13 P. Gumplinger (exampleB4-V09-06-10)
- remove unused B4RunAction* fRunAction in B4aEventAction.hh
11/06/13 I. Hrivnacova (exampleB4-V09-06-09)
- Fixed B4[b]RunAction::EndOfRunAction(): to get the analysis file
closed also when no events are processed
- Fixed names for newly added data members (in B4dEventAction)
10/06/13 I. Hrivnacova (exampleB4-V09-06-08)
- Fixed names for newly added data members (in B4cEventAction)
03/06/13 I. Hrivnacova (exampleB4-V09-06-07)
- Updated README files for changes for MT
03/06/13 I. Hrivnacova (exampleB4-V09-06-06)
- Moved creating analysis manager and booking histograms & ntuples
in run action constructor; this makes available /analysis commands
29/05/13 I. Hrivnacova (exampleB4-V09-06-05)
- Fixed detector construction classes:
Moving creating setMagField command from the constructor in
ConstructSDandField(), as the command has to be created per thread,
and declaring fMagField and fMessenger data members as static
G4ThreadLocal
24/04/13 M. Asai (exampleB4-V09-06-04)
- Recover GNUmakefiles.
23/04/13 I. Hrivnacova (exampleB4-V09-06-03)
- Use G4Random::setTheEngine instead of CLHEP::HepRandom in main
(needed for MT)
- In B4b: merged B4bRunAction and B4RunAction in one class
- Removed unnecessary includes in run action files
- Minor fixes of coding guidelines
18/04/13 M. Asai (exampleB4-V09-06-02)
- Migrated to the new G4VUserActionInitialization class.
08/04/13 M. Asai (exampleB4-V09-06-01)
- Fixed the use of thread-local G4Allocator for B4c.
06/04/13 M. Asai (exampleB4-V09-06-00)
- Migrated to multi-threading.
28/02/13 I. Hrivnacova
- When building materials with NistManager
do not set fromIsotopes argument (which was set to false),
as since 9.6 all materials have to be built from isotopes.
Thanks to V. Ivantchenko for pointing at this.
01/11/12 I. Hrivnacova (exampleB4-V09-05-02)
- Implemented new way of handling program arguments in main()
+71 -49
View File
@@ -1,4 +1,4 @@
$Id$
$Id: README 78001 2013-12-02 08:24:53Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,7 @@ $Id$
1- GEOMETRY DEFINITION
The geometry is constructed in B4[c,d]DetectorConstruction class.
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.
@@ -25,11 +26,13 @@ $Id$
- the number of layers, and
- the transverse size of the calorimeter (the entrance face is a square).
In addition a transverse uniform magnetic field can be applied and set
via the interactive command defined using the G4GenericMessenger class.
In addition, a global, uniform, and transverse magnetic field can be
applied using G4GlobalMagFieldMessenger, instantiated in
B4[c,d]DetectorConstruction::ConstructSDandField
with a non zero field value, or via interactive commands.
For example:
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
|<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
@@ -63,7 +66,23 @@ $Id$
/process/(in)activate processName
allows to activate/inactivate the processes one by one.
3- PRIMARY GENERATOR
3- ACTION INITALIZATION
A newly introduced class, B4[a,b,c,d]ActionInitialization,
instantiates and registers to Geant4 kernel all user action classes.
While in sequential mode the action classes are instatiated just once,
via invoking the method:
B4[a,b,c,d]ActionInitialization::Build()
in multi-threading mode the same method is invoked for each thread worker
and so all user action classes are defined thread-local.
A run action class is instantiated both thread-local
and global that's why its instance is created also in the method
B4[a,b,c,d]ActionInitialization::BuildForMaster()
which is invoked only in multi-threading mode.
4- PRIMARY GENERATOR
The primary beam consists of a single particle which hits the
calorimeter perpendicular to the input face. The type of the particle
@@ -71,17 +90,15 @@ $Id$
be changed via the G4 built-in commands of the G4ParticleGun class (see
the macros provided with this example).
4- RUNS and EVENTS
5- RUNS and EVENTS
A run is a set of events.
The user can choose the frequency of printing from B4aEventAction (or event
action classes in other options) via the interactive command defined
using the G4GenericMessenger class, for example:
The user can choose the frequency of printing via the Geant4 interactive
command, for example:
/B4/event/setPrintModulo 100
/run/printProgress 100
5- DETECTOR RESPONSE
6- DETECTOR RESPONSE
The energy deposit and track lengths of the charged particles are recorded on
an event by event basis in the Absober and Gap layers.
@@ -103,8 +120,8 @@ $Id$
Variant b: User data object
In order to avoid dependencies between action classes, a user object
B4bRunData is defined with data members needed to the accounted
information.
B4bRunData, derived from G4Run, is defined with data members needed
for the accounted information.
In order to reduce the number of data members a 2-dimensions array
is introduced for each quantity.
Then the quantities are collected step by step in user action classes:
@@ -117,7 +134,7 @@ $Id$
and sensitive detectors framework defined in the Geant4 kernel.
The physics quantities are stored in B4cCalorHit via two B4cCalorimeterSD
objects, one associated with the Absorber volume and another one with Gap
in B4cDetectorConstruction.
in B4cDetectorConstruction::ConstructSDandField().
In contrary to the B2 example (Tracker) where a new hit is created
with each track passing the sensitive volume (in the calorimeter), only one
@@ -134,12 +151,12 @@ $Id$
detector classes but rather uses the classes already defined
in Geant4. In this example, the G4MultiFunctionalDetector with
G4PSEnergyDeposit and G4PSTrackLength primitive scores are used (see
B4dDetectorConstruction class).
B4dDetectorConstruction::ConstructSDandField()).
Also with this approach, the quantities per each layer are available
in addition to the total quantities.
6- HISTOGRAMS
7- HISTOGRAMS
The analysis tools are used to accumulate statistics and compute the dispersion
of the energy deposit and track lengths of the charged particles.
@@ -156,8 +173,11 @@ $Id$
The accumulated statistic and computed dispersion is printed at the end of
run, in B4RunAction::EndOfRunAction().
7- VISUALIZATION TUTORIAL
When running in multi-threading mode, the histograms accumulated on threads are
automatically merged in a single output file, while the ntuple is written
in files per thread.
8- VISUALIZATION TUTORIAL
Additional visualization tutorial macros are available in the visTutor
subdirectory. They can be tried as:
@@ -168,6 +188,38 @@ $Id$
For details, see comment lines described in the macro files.
These macros are designed to help your understanding of the User's Guide.
9- HOW TO RUN
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
% exampleB4a [-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
threads. The number of threads can be also set via G4FORCENUMBEROFTHREADS
environment variable which has the top priority.
- Execute exampleB4a in the 'interactive mode' with visualization
% exampleB4a
and type in the commands from run1.mac line by line:
Idle> /tracking/verbose 1
Idle> /run/beamOn 1
Idle> ...
Idle> exit
or
Idle> /control/execute run1.mac
....
Idle> exit
- Execute exampleB4a in the 'batch' mode from macro files
(without visualization)
% exampleB4a -m run2.mac
% exampleB4a -m exampleB4.in > exampleB4.out
- Execute exampleB4a in the 'interactive mode' with a selected UI session,
e.g. tcsh
% exampleB4a -u tcsh
The following paragraphs are common to all basic examples
A- VISUALIZATION
@@ -214,33 +266,3 @@ $Id$
The selection of the user command interface is then done automatically
according to the Geant4 configuration or it can be done explicitly via
the third argument of the G4UIExecutive constructor (see exampleB4a.cc).
C- HOW TO RUN
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
% exampleB4a [-m macro ] [-u UIsession]
- Execute exampleB4a in the 'interactive mode' with visualization
% exampleB4a
and type in the commands from run1.mac line by line:
Idle> /tracking/verbose 1
Idle> /run/beamOn 1
Idle> ...
Idle> exit
or
Idle> /control/execute run1.mac
....
Idle> exit
- Execute exampleB4a in the 'batch' mode from macro files
(without visualization)
% exampleB4a -m run2.mac
% exampleB4a -m exampleB4.in > exampleB4.out
- Execute exampleB4a in the 'interactive mode' with a selected UI session,
e.g. tcsh
% exampleB4a -u tcsh
+2 -3
View File
@@ -15,7 +15,6 @@
/gui/addMenu run Run
/gui/addButton run "beamOn 1" "/run/beamOn 1"
/gui/addButton run run1 "/control/execute run1.mac"
/gui/addButton run run2 "/control/execute run2.mac"
#
# Gun menu :
/gui/addMenu gun Gun
@@ -38,14 +37,14 @@
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wire"
/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
#
# To limit the output flow in the "dump" widget :
/B4/event/setPrintModulo 100
/run/printProgress 100
#
# User defined icon :
/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+2 -2
View File
@@ -21,12 +21,12 @@
# 20 events
#
/tracking/verbose 0
/B4/event/setPrintModulo 5
/run/printProgress 5
/run/beamOn 20
#
# Magnetic field
#
/B4/det/setMagField 0.2 tesla
/globalField/setValue 0.2 0 0 tesla
/run/beamOn 3
#
# Activate/inactivate physics processes
+1 -1
View File
@@ -7,6 +7,6 @@
# electron 50 MeV in direction (0.,0.,1.)
# 1000 events
#
/B4/event/setPrintModulo 100
/run/printProgress 100
/run/beamOn 1000
@@ -39,7 +39,7 @@
/vis/modeling/trajectories/TimeSliceByCharge/default/setAuxPtsSize 5
/vis/modeling/trajectories/TimeSliceByCharge/default/setTimeSliceInterval 0.001 ns
/vis/modeling/trajectories/list
#/B4/det/setMagField 5 T
#//globalField/setValue 5 0 0 tesla
#/vis/scene/add/trajectories rich smooth
# Re-establish auto refreshing and verbosity:
+1 -1
View File
@@ -1,4 +1,4 @@
# $Id: heprep.mac,v 1.2 2003-12-01 21:09:28 perl Exp $
# $Id: heprep.mac 68058 2013-03-13 14:47:43Z gcosmo $
#
# Macro file for "exampleN03.cc"
#