Import Geant4 8.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 15:07:44 +02:00
parent fe73f43734
commit 75c7fd177d
764 changed files with 45230 additions and 95238 deletions
+12 -14
View File
@@ -18,9 +18,9 @@
# you may fetch it yourself from your nearest archive site.)
#
# $Id: Configure,v 1.95 2006/12/15 15:19:44 stesting Exp $
# $Id: Configure,v 1.96 2007/02/16 12:20:09 bmorgan Exp $
#
# Generated on Fri Dec 15 16:15:48 CET 2006 [metaconfig 3.0 PL70]
# Generated on Fri Feb 16 12:09:40 GMT 2007 [metaconfig 3.0 PL70]
cat >/tmp/c1$$ <<EOF
WARNING!!!!!
@@ -700,10 +700,7 @@ while expr "X\$ans" : "X!" >/dev/null; do
*)
case "\$aok" in
y)
echo
echo "*** The last screen is repeated with "
echo "*** substitution done and placed as default."
echo "*** Please confirm or change."
echo "*** Substitution done -- please confirm."
xxxm="\$ans"
ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
xxxm="\$ans"
@@ -1846,6 +1843,7 @@ EOM
;;
esac
done
fi
#
@@ -2025,9 +2023,9 @@ fi
LDLIBS3=`grep 'LDLIBS3 :=' $G4LIB/$G4SYSTEM/GNUmakefile.db | $sed -e 's/^\(.*\):=//'`
LDLIBS4=`grep 'LDLIBS4 :=' $G4LIB/$G4SYSTEM/GNUmakefile.db | $sed -e 's/^\(.*\):=//'`
LDLIBS=$LIBLIST_LIST $LDLIBS3 $LDLIBS4
LDLIBS=$LIBLIST_LIST $LDLIBS3 $LDLIBS4
echo $LDLIBS
echo $LDLIBS
# echo "-L$G4WORKDIR/lib/$G4SYSTEM -lG4persistency -lG4readout -lG4run -lG4event -lG4tracking -lG4parmodels -lG4processes -lG4digits+hits -lG4track -lG4particles -lG4geometry -lG4materials -lG4graphics_reps -lG4intercoms -lG4global $c"
@@ -2741,7 +2739,7 @@ esac
case "$g4ledata" in
'')
g4ledata=$g4data/G4EMLOW4.1
g4ledata=$g4data/G4EMLOW4.2
;;
esac
@@ -2793,7 +2791,7 @@ gans=$ans
g4levelgammadata=$g4data/PhotonEvaporation2.0
g4radioactivedata=$g4data/RadioactiveDecay3.1
g4ledata=$g4data/G4EMLOW4.1
g4ledata=$g4data/G4EMLOW4.2
g4neutronhpcrosssections=$g4data/G4NDL3.10
# g4elasticdata=$g4data/G4ELASTIC1.1
fi
@@ -2845,7 +2843,7 @@ gans=$ans
3)
dflt=$g4ledata
fn='d~'
rp="Where is G4EMLOW4.1 data installed ?"
rp="Where is G4EMLOW4.2 data installed ?"
. ./getfile
g4ledata=$ans
;;
@@ -5681,9 +5679,9 @@ g4message=`cat << EOM
G4LIB_BUILD_ZLIB
Do you wish to activate compression for output files generated
through the HepRep visualization driver ?
Do you want to activate compression for output files
generated by the HepRep visualization driver?
EOM`
dflt=$g4wlib_build_zlib
+203
View File
@@ -0,0 +1,203 @@
Geant4 8.2 - patch-01 Release Notes
-----------------------------------
23 February 2007
List of fixes included in this public patch since the public release 8.2:
o Geometry:
--------
+ management:
o Added flag to G4VPhysicalVolume::CheckOverlaps() method for
controlling verbosity. By default, verbosity is ON.
+ navigation:
o In G4Navigator, forcing call to CheckOverlaps() on the current
volume before event abortion for cases of stuck tracks.
o G4PropagatorInField: implemented ClearPropagatorState()
to clear track-dependent state (safety, zero-steps, loop flag. etc...).
Call to this method becomes mandatory in G4Transportation for each new
track to overcome side effects of safety inconsistency in presence of
geometry overlaps.
+ solids/specific:
o Do not scale reducible-polygon in G4Polyhedra::Reset() method.
The 'original_parameters' structure offered as input through the
accessors are always assumed to be already scaled by the
'cos(0.5*phiTotal/theNumSide)' factor.
Addresses problem report #873.
o Fix in G4PolyconeSide::DistanceAway() for correct estimation of
distance for the case of Phi sections.
Addresses problem report #598.
+ volumes:
o Added flag for controlling verbosity to CheckOverlaps() method for
G4PVPlacement and G4PVParameterised. By default, verbosity is ON.
o Global:
------
+ Changed date for patch-01 to release 8.2.
o Electromagnetic processes:
-------------------------
+ standard:
o G4UrbanMscModel:
- Fix in the single scattering code for heavy particles, now the code
can be used with skin=1 e+/e- and for heavy particles as well.
- Removed unecessary call to G4Navigator location method.
- Added protection inside lateral displacement sampling against cases
of TrueStepLength < GeomStepLength.
- Added protections against NaN values in two places: sampling of
theta when tau=0 in lateral displacement, and in method
ComputeTrueStepLength() for the case of zero true length.
o G4MultipleScattering: fix to allow for reinitialisation of model
parameters between runs.
o Use SetEmModel(index) and added SetFluctModel() from
G4VEnergyLossProcess in eIonisation, hIonisation, ionIonisation,
eBremstrahlung.
+ utils:
o Fixed a problem happening in interactive sessions when activating or
deactivating processes; the problem resulting in building wrong dEdx
tables for e+- and muons. Modified classes are: G4LossTableBuilder,
G4LossTableManager and G4VEmEnergyLossProcess.
New tables are added for e+- and muons ionisation additionally to
total energy loss tables.
o Hadronic Processes:
------------------
+ models/binary_cascade:
o G4BinaryCascade::Capture(): added protection against division by zero.
+ models/chiral_inv_phase_space:
o Fixed cases of division by 0 in G4Quasmon and G4QNucleus.
and other cases of generation of NaN.
Reduces segmentation faults in CHIPS-based models and physics lists
such as QGSC.
o Fixed bug of generation of NaN in G4QElastic observed in complicated
event for the multi-projectile case.
Reduces segmentation faults in elastic scattering.
+ models/de_excitation:
o Evaporation: added protection to exclude negative probabilities from
the "competitive channel sum". Together with the fix below for fission
this should only happen due to a precision error, but is protected
nonetheless.
o Fission: fixed probability to no longer be negative. Is now equivalent
to what is written in the Physics Reference Manual.
The above two fixes also affect the precompound model which invokes
these models.
o Fission: fixed several memory leaks in G4ParaFissionModel.
+ models/low_energy:
o G4LElastic: added protection against sqrt() of negative value.
+ models/management:
o For error reporting, added model name arguments and default names to
constructors for classes G4HadronicInteraction, G4InelasticInteraction,
G4VIntraNuclearTransportModel and G4VPreCompoundModel.
+ models/neutron_hp:
o Fixed potential divisions by zero in: G4NeutronHPVector,
G4NeutronHPLevel and G4NeutronHPInterpolator.
+ models/parton_string/hadronization:
o G4ExcitedStringDecay::EnergyAndMomentumCorrector(): fixed bug which
did stop correction even if not yet converged; check on convergence
must check that scale-1 is close to 0, and not less than 0.
+ models/parton_string/management:
o Debugged method Dump() added in G4InteractionContent to print object.
o Debugged output in G4VPartonStringModel checking E-p conservation of
string model.
The above two points provide improved, more detailed verbose output.
+ models/parton_string/qgsm:
o Corrected E-p non-conservation in QGS. In G4QGSMSplitableHadron,
the smaller of the lightcone momenta Q+/Q- was ignored.
o Fixed division by 0 in G4QGSMSplitableHadron::SampleX().
o Added debugging output to several classes.
+ models/util:
o Added method to G4Parton for setting momentum using both + and -
momentum component. Should help in improving shower shapes.
o G4Fragment: more info on warning output of negative excitation energy.
+ processes:
o Added process names to G4HadronElasticProcess, G4HadronCaptureProcess,
G4HadronFissionProcess. This will allow more detailed error reporting.
o Cleaned up commented-out code.
+ stopping:
o G4MuMinusCaptureCascade: added sampling of random vector of e- in
decay; added factor 2 in potential energy - fixing decay spectrum.
o G4MuonMinusCaptureAtRest: fixed problem for the case when isotope
vector is undefined. Force to use round 'targetA'.
Addressing problem report #926.
+ util:
o G4HadFinalState: corrected initialisation of energy deposition.
Fix affects elastically scattered neutrons and probably most
hadronic models. Reduces the number of events in which the summed
energy of final particles exceeds that of the incident particle.
o Materials:
---------
+ G4Material: fill fAtomVector in the case when material is built
from element mass fractions, allowing for low-energy package to
use NIST G4_WATER.
+ G4NistMaterialBuilder: added liquids O2 and N2.
+ G4NistElementBuilder: added protection for Z<=101.
o Physics Lists:
-------------
+ Fix in QGSP_BIC_HP list: activated use of HP elastic.
+ G4HadronElasticPhysics: set limits on low energy and QElastic to zero.
+ Fixed special cuts for LBE physics list.
+ Added set min/max Energy and Inelastic Energy to NeutronHP builder.
+ G4EmStandardPhysics: use G4hMultipleScattering for muons and removed
extra printouts. Use default multiple-scattering setup in
G4EmStandardPhysics72.
o Run:
---
+ Fix in method G4RunManager::NumberOfEventToBeStored().
Addressing problem report #925.
+ Added protection against missing particle types before
BuildPhysicsTable() is invoked. Addressing problem report #923.
o Transportation:
--------------
+ G4Transportation: calling PropagatorInField to clear state for new
track. This addresses a reliabilitiy problem observed by ATLAS; the
fix is related to overlaps in the geometry, and consists in clearing
the safety value, which may become multivalued due to overlaps in the
geometry, and thus can become invalid for a new track in an overlap
region...
+ Added protection against zero 'velocity' in method
G4Transportation::AlongStep().
o Configuration:
-------------
+ Updated Configure script to prompt for new version of G4EMLOW data set.
o Data Sets:
---------
+ New data set G4EMLOW4.2: correction to Auger data.
o Examples:
--------
+ Updated reference outputs.
+ advanced/underground_physics
o Removed uninitialized 'UserLimitsForXenon'.
+ extended/extended/TestEm7
o Cleanup of macros.
+ extended/electromagnetic/TestEm16
o Added HistoManager and HistoMessenger and commands to modify
upper step limit. Minor fix to GNUmakefile.
+ extended/radioactivedecay/exrdm
o Fixed usage of physics-lists and histograms
+ extended/runAndEvent/RE02
o Fixed missing NULL pointer protection in ComputeMaterial() method.
----------------------------------------------------------------------------
Technical Notes
---------------
o This patch should be applied on top of release 8.2
o Technical notes distributed for release 8.2 are also applicable and
valid for this patch.
The code and rebuilt binary libraries for release 8.2 are available
through our "Source Code" Web page:
http://cern.ch/geant4/support/download.shtml
Please refer to the Geant4 User Documentation:
http://cern.ch/geant4/support/userdocuments.shtml
for further information about using Geant4.
+848
View File
@@ -0,0 +1,848 @@
<HTML>
<HEAD>
<TITLE>Geant4 8.3 Release Notes</TITLE>
</HEAD>
<BODY BGCOLOR='F0F0F0'>
<P> </P>
<BR>
<P> </P>
<P ALIGN="Center">
<FONT SIZE="+4" COLOR="#238E23">
<B>Geant4 8.3 Release Notes</B>
</FONT>
<TABLE WIDTH="100%">
<TR><TD ALIGN="Right">
<FONT SIZE="-1" COLOR="#5C3317">
<B><I>May 4<SUP>th</SUP>, 2007</I></B>
</FONT>
</TD></TR>
</TABLE>
<BR><BR>
<HR ALIGN="Center" SIZE="7%">
<P>
The code and binary libraries for the supported systems are available
through our <A TARGET="ext" HREF="http://cern.ch/geant4/support/download.shtml">Source
Code Web page</A>.
</P>
<P>
Please refer to the
<A TARGET="ext" HREF="http://cern.ch/geant4/support/userdocuments.shtml">Geant4
User Documentation</A> for further information about using Geant4.
</P>
<H2><I>Contents</I></H2>
<OL>
<LI><A HREF="#1.">Supported and Tested Platforms</A></LI>
<LI><A HREF="#2.">CLHEP and AIDA</A></LI>
<LI><A HREF="#3.">Items for migration of the user code</A></LI>
<LI><A HREF="#4.">Expected effects on physics and performance</A></LI>
<LI><A HREF="#5.">Known Run-Time Problems</A></LI>
<LI><A HREF="#6.">Compilation Warnings</A></LI>
<LI><A HREF="#7.">Known Run-Time Warnings</A></LI>
<LI><A HREF="#8.">Geant4 Software License</A></LI>
<LI><A HREF="#9.">Detailed list of changes and fixes</A></LI>
</OL>
<P> </P>
<A NAME="1."></a>
<HR>
<!-- ============================================== -->
<H2>1. Supported and Tested Platforms</H2>
Official platforms:
<UL>
<LI>SUN Solaris 5.8, C++ CC-5.5.</LI>
<LI>Linux, gcc 3.2.3 or gcc 3.4.5.<BR>
This configuration was tested on <I>32 bits architectures (Intel)</I>
and <I>64 bits architectures (AMD)</I> with the Scientific Linux CERN 3
(SLC3) distribution (based on RedHat Linux Enterprise 3) and
Scientific Linux CERN 4 (SLC4) distribution (based on RedHat Linux
Enterprise 4).
Versions of Geant4 have also been compiled successfully on other
Linux distributions, like Debian, Suse or other RedHat systems.</LI>
<LI>Windows/XP and CygWin Tools with: Visual C++ 7.1 .NET</LI>
</UL>
More verified configurations:
<UL>
<LI>SUN Solaris 5.8, C++ CC-5.4 Patch 111715-02</LI>
<LI>Linux, gcc-4.1.2</LI>
<LI>Linux, Intel-icc 9.1</LI>
<LI>MacOS 10.4, gcc-4.0.1</LI>
<LI>Windows/XP and CygWin Tools with: Visual C++ 8.0 (Visual Studio 2005)</LI>
</UL>
Platforms configured but not tested and not supported:
<UL>
<LI>AIX 4.3.2, xlC 6.0</LI>
<LI>DEC V4.0, cxx C++ V6.1-027</LI>
<LI>HP 10.20, aCC C++ B3910B A.01.23</LI>
<LI>SGI V6.5.5, CC 7.2.1</LI>
</UL>
<P> </P>
<A NAME="2."></A>
<HR>
<!-- ============================================== -->
<H2>2. CLHEP and AIDA</H2>
Geant4 8.3 requires the installation of
<A TARGET="ext" HREF="http://cern.ch/clhep">CLHEP</A>.<BR>
Tests have been performed with <B>CLHEP-2.0.3.1</B><BR>
The software has been verified also with <B>CLHEP-1.9.3.1</B>.<BR>
<P> </P>
Geant4 8.3 examples with histogramming cowork with analysis tools compliant
to AIDA 3.2.1 interfaces.<BR>
AIDA headers can be downloaded from:
<A TARGET="ext" HREF="http://aida.freehep.org">http://aida.freehep.org</A>
<P> </P>
<A NAME="3."></A>
<HR>
<!-- ============================================== -->
<H2>3. Items for migration of the user code</H2>
No particular migrations are required in order to upgrade from release 8.2
to release 8.3.
Note that a full re-installation of libraries (or a full recompilation) and
a recompilation of user applications is anyhow required.
<P> </P>
<A NAME="4."></A>
<HR>
<!-- ============================================== -->
<H2>4. Expected effects on physics and performance</H2>
<B>Standard Electromagnetic physics</B>
<UL>
<LI>No visible effects in CPU performance.</LI>
<LI>Calorimeter response: stable within 1% for visible energy and resolution.</LI>
<LI>Energy deposition in thin layers: stable for step size down to <TT>1 um</TT>.</LI>
</UL>
<B>Hadronic physics</B>
<UL>
<LI><U>Revised hadronic modeling, resulting in longer shower shapes</U>:<BR>
the FTF model now has improved treatment of diffraction. As a result
the longitudinal shower component now starts later and ends later, which
goes in the direction of the data. The addition of quasi-elastic
scattering (<TT>G4QuasiElasticChannel</TT>) to the QGS model is also
expected to improve shower shapes by reducing the deep inelastic component.</LI>
<LI><U>New cross section data sets added</U>:<BR>
Barashenkov parameterised cross sections are now available for elastic
and inelastic nucleon-nucleus and elastic and inelastic pion-nucleus
scattering.</LI>
<LI><U>Cross sections for user-defined elements</U>:<BR>
cross sections are now calculated based on user-defined isotope
abundances, if they are provided. Natural abundances are used
otherwise.</LI>
<LI><U>Improved muon capture model</U>:<BR>
<TT>G4QCaptureAtRest</TT> model provides more accurate final state
electron spectrum for muon capture and more accurate secondary hadron
sprectra for hadron capture.</LI>
<LI><U>Error reporting</U>:<BR>
when a segmentation fault occurs in a hadronic process, the information
about the process and model name where the fault has occurred will be
printed out.</LI>
</UL>
<B>Physics Lists</B>
<UL>
<LI>FTFP and FTFC use a significantly revised FTF model. Comparisons to thin
target experiment at ~10 <TT>GeV</TT> show much better agreement with data;
the model is still under validation at higher energies. Prelimirary tests
display slightly longer showers than the previous version of FTFP/FTFC.</LI>
<LI>QGS type physics lists (QGSP, QGSC, QGSP_BERT, etc) now include a simple
quasi-elastic model for a small fraction of high energy inelastic
interactions. The cross-section parameterisations for inelastic
interactions include the quasi-elastic cross-section, while QGS only
models deep inelastic interactions.
<UL>
<LI>For comparison or backward compatibility, the new QGSP_NQE,
QGSP_EMV_NEQ, and QGSP_BERT_NQE ignore this new quasi-elastic,
and are therefore the equivalent of QGSP, QGSP_EMV, and QGSP_BERT
available in release 8.2 and before.</LI>
<LI>Also, the obsolete QGSP_LEAD/QGSP_LEAD_HP do not include
quasi-elastic.</LI>
</UL></LI>
<LI>QGSC physics list and its variants use CHIPS <TT>G4QCaptureAtRest</TT>
to model capture of muons at rest instead of <TT>G4MuonMinusCaptureAtRest</TT>.
This model better reproduces the spectrum of secondaries close to the
kinematic limit.</LI>
<LI>The new physics list QGSP_BERT_TRV is a variant of QGSP_BERT where Bertini
cascade model is used only up to energies of 5.4 <TT>GeV</TT> for protons,
neutrons, pions and kaons. For comparisons QGSP_BERT uses Bertini cascade
model up to 9.9 <TT>GeV</TT>.</LI>
<LI>HElastic model for projectile energy above 1 <TT>GeV</TT> is used for all
targets with <TT>Z&gt;1</TT>.</LI>
<LI>In all lists for electro-magnetic physics, the "skin" for
multiple-scattering on boundaries is set to zero, meaning that no
computation of the linear distance to the geometrical boundaries is
made by the multiple-scattering model.</LI>
<LI>In the QBBC physics lists, the Binary Cascade is used up to 4 <TT>GeV</TT>,
the FTFP model between to 3.5 to 12 <TT>GeV</TT>, and QGSP above 11.5
<TT>GeV</TT>.</LI>
</UL>
<P> </P>
<A NAME="5."></A>
<HR>
<!-- ============================================== -->
<H2>5. Known Run-Time Problems and Limitations</H2>
For a complete list of outstanding run-time problems and to submit any
problem you may find running this version of Geant4, please refer to the
<A TARGET="ext" HREF="http://cern.ch/geant4/problemreport">Geant4 Problem Reporting
System</A>.
<P> </P>
<A NAME="6."></A>
<HR>
<!-- ============================================== -->
<H2>6. Compilation Warnings</H2>
There may be compilation warnings on some platforms. We do not believe
that any will lead to incorrect run-time behaviour.
<P> </P>
<A NAME="7."></A>
<HR>
<!-- ============================================== -->
<H2>7. Known Run-Time Warnings</H2>
The following message can be written to error output while tracking.
We believe it does not give rise to incorrect behaviour.
<PRE>
G4PropagateInField: Warning: Particle is looping
- tracking in field will be stopped.
It has performed 1000 steps in Field while a maximum of 1000
are allowed.
</PRE>
<P> </P>
<A NAME="8."></A>
<HR>
<!-- ============================================== -->
<H2>8. Geant4 Software License</H2>
A Software License applies to the Geant4 code.
The details and the list of copyright holders is available at
<A href="http://cern.ch/geant4/license">http://cern.ch/geant4/license</A>
and also in a text file <TT>LICENSE</TT> distributed with the source code.
<P> </P>
<A NAME="9."></A>
<HR>
<!-- ============================================== -->
<H2>9. Detailed list of changes and fixes</H2>
These are the main new features/fixes included in this release since the
last patched public release (for the detailed list of fixes/additions,
please refer to the related History files provided in most packages):
<P> </P>
<A NAME="conf-notes">
<H3><I>Configuration</I></H3></A>
<UL>
<LI>Protected generation of dependencies using internal <TT>make</TT> variable
<TT>MAKECMDGOALS</TT> in <TT>binmake.gmk</TT> and <TT>common.gmk</TT>,
following suggestion made in problem report #930. This protection resolves
the problem of generation of dependencies when issueing the <TT>clean</TT>
target.</LI>
</UL>
<A NAME="digits-notes">
<H3><I>Digitization & Hits</I></H3></A>
<UL>
<LI>Fixed way of counting outward steps in flux scorers.</LI>
</UL>
<A NAME="emstd-notes">
<H3><I>Electromagnetic Processes (High-energy and Standard)</I></H3></A>
<UL>
<LI><B>Muons</B>
<UL>
<LI><TT>G4MuPairProductionModel</TT>: added protection against zero or
negative partial cross section inside <TT>SelectRandomAtom()</TT>
method. Fixes problem reported when runnning tutorial example A01.</LI>
<LI>Set <TT>linLossLimit</TT> to <TT>1.E-6</TT> in
<TT>G4EnergyLossForExtrapolator</TT>.</LI>
</UL></LI>
<LI><B>Polarisation</B>
<UL>
<LI><TT>G4PolarizedGammaConversionModel</TT>: fixed non-initialised
variable.</LI>
</UL></LI>
<LI><B>Standard</B>
<UL>
<LI><TT>G4UrbanMscModel</TT>:
<UL>
<LI>Fix in the single scattering code for heavy particles, now the code
can be used with skin=1 e+/e- and for heavy particles as well.</LI>
<LI>Added protections against NaN values in two places: sampling of
<TT>theta</TT> when <TT>tau=0</TT> in lateral displacement, and in
method <TT>ComputeTrueStepLength()</TT> for the case of zero true
length.</LI>
<LI>Stepping algorithm changed for <TT>skin=0</TT>, now there are 3
stepping modes:
<OL>
<LI>Stepping similar to that performed in release 7.1;</LI>
<LI><TT>skin=0</TT> - designed for high energy simulations with or
without magnetic field;</LI>
<LI><TT>skin=1</TT> - designed for 'precision' simulations without
magnetic field.</LI>
</OL></LI>
<LI>If <TT>skin>1</TT>, perform small steps with single scattering before
and after boundary the boundary. The step is reduced before boundary
for <TT>geomlimit</TT> less than <TT>geombig</TT> only.</LI>
<LI>Use <TT>tPathLength</TT> inside <TT>ComputeStep()</TT> instead of
<TT>geombig</TT>.</LI>
</UL></LI>
<LI><TT>G4MultipleScattering, G4hMultipleScattering</TT>:
<UL>
<LI>Use <TT>skin</TT> parameter from the base class (default
<TT>skin=0</TT>).</LI>
</UL></LI>
<LI><TT>G4eBremsstrahlungModel</TT>:
<UL>
<LI>Added reinitialisation of LPM flag between runs.</LI>
<LI>Corrected <TT>LPMconstant</TT> by factor 2 (according to SLAC
recent publication).</LI>
</UL></LI>
<LI><TT>G4BetheHeitlerModel</TT>: for any initial energy select atom of
the material on which conversion occur (needed for polarisation
module).</LI>
<LI><TT>G4UniversalFluctuation</TT>: <TT>GLANDZ</TT> part of the
fluctuation model has been completely rewritten, there is no longer
distinct loss regime.</LI>
<LI><TT>G4hIonisation</TT>: removed dependence on K+ and K- particles.</LI>
</UL></LI>
<LI><B>Utils</B>
<UL>
<LI><TT>G4VEnergyLossProcess</TT>:
<UL>
<LI>Use <TT>G4SafetyHelper</TT> instead of <TT>G4Navigator</TT> for
determining distance to boundary, and added protection agains zero
step length.</LI>
</UL></LI>
<LI><TT>G4VMultipleScattering</TT>:
<UL>
<LI>Added protection against zero step or energy.</LI>
<LI>Added <TT>SetSkin()</TT> and <TT>Skin()</TT> methods.</LI>
</UL></LI>
<LI><TT>G4EmModelManager</TT>: added <TT>maxCutInRange</TT> variable for
sub-cutoff option.</LI>
<LI><TT>G4EmCalculator</TT>: added method <TT>ComputeEnergyCutFromRangeCut()</TT>.</LI>
<LI><TT>G4EnergyLossMessenger</TT>: send message <TT>/run/physicsModified</TT>
after all commands requiring reinitialisation.</LI>
<LI><TT>G4LossTableManager, G4EmProcessOptions, G4EnergyLossMessenger</TT>:
added commands for <TT>MscLateralDisplacement</TT>, <TT>MscSkin</TT>
and <TT>linearLossLimit</TT>.</LI>
<LI><TT>G4LossTableBuilder</TT>: use more precise algorithm to build
inverse range table using <TT>G4LPhysicsFreeVector</TT>.</LI>
<LI><TT>G4EmCorrections</TT>: taking mass of ion from <TT>G4IonTable</TT>
to avoid division by zero.</LI>
</UL></LI>
</UL>
<A NAME="evt-notes">
<H3><I>Event</I></H3></A>
<UL>
<LI>Prevent from unnecessary creation of <TT>G4String</TT> objects in
<TT>G4Event</TT>, which were default for random number status.
Use new flag in <TT>G4EventManager</TT>.</LI>
</UL>
<A NAME="gen-notes">
<H3><I>General Processes: Cuts, Scoring</I></H3></A>
<UL>
<LI><B>Cuts</B>
<UL>
<LI>Added method <TT>ConvertRangeToEnergy()</TT> to
<TT>G4ProductionCutsTable</TT>.</LI>
</UL></LI>
<LI><B>Scoring</B>
<UL>
<LI>Fix to set step status for ghost pre-step point.</LI>
</UL></LI>
</UL>
<A NAME="geo-notes">
<H3><I>Geometry</I></H3></A>
<UL>
<LI><B>Magnetic field</B>
<UL>
<LI>Corrected integration constants in <TT>G4MagHelicalStepper</TT>.</LI>
<LI>Added implementation of <TT>G4RKG3_Stepper</TT>, stepper derived
from Geant3.</LI>
<LI><TT>G4MagIntegratorDriver</TT>: added protections against zero initial
or internal step <TT>h=0</TT>; revised (re)calculation of <TT>h</TT>,
and protect more against very small steps.</LI>
</UL></LI>
<LI><B>Management</B>
<UL>
<LI>Added accessors to stores for retrivial of volumes/solid by name.</LI>
<LI>Modified signature of <TT>G4VPhysicalVolume::CheckOverlaps()</TT> to
introduce ability of handling tolerances for overlaps.</LI>
<LI>Do not reset <TT>RegionRootFlag</TT> in <TT>RemoveRootLogicalVolume()</TT>
if volume is the world, since the volume itself may be already removed
from the store if <TT>G4LogicalVolumeStore::Clean()</TT> is called.</LI>
</UL></LI>
<LI><B>Navigation</B>
<UL>
<LI>In G4Navigator, forcing call to <TT>CheckOverlaps()</TT> on the current
volume before event abortion for cases of stuck tracks.</LI>
<LI><TT>G4PropagatorInField</TT>: implemented <TT>ClearPropagatorState()</TT>
to clear track-dependent state (safety, zero-steps, loop flag. etc...).
Call to this method becomes mandatory in <TT>G4Transportation</TT> for
each new track to overcome side effects of safety inconsistency in
presence of geometry overlaps.</LI>
<LI>Fixed case of out of range access in <TT>G4GeomTestSegment</TT>
responsible for crashes observed when recursive-grid test for overlaps
was run. Addressing problem report #784.</LI>
</UL></LI>
<LI><B>Solids (Specific)</B>
<UL>
<LI>Introduced new shape <TT>G4ExtrudedSolid</TT>, a solid representing
the extrusion of an arbitrary polygon with fixed outline and
multiple Z sections.</LI>
<LI>G4TessellatedSolid:
<UL>
<LI>Made relevant solid's methods virtual, to be used as base
class.</LI>
<LI>Added implementation for <TT>GetSurfaceArea()</TT> and
<TT>GetPointOnSurface()</TT> methods.</LI>
<LI>Added protection in <TT>SurfaceNormal()</TT> method in case
of facet not found.</LI>
<LI>Check and return <TT>kOutside</TT> in <TT>Inside()</TT> if
point out of solid's extent.</LI>
<LI>Bug fix in <TT>G4TriangularFacet::Intersect()</TT> to allow
for correct update of <TT>Distance</TT> in condition. Cleared
unecessary declaration of <TT>IsInside()</TT> methods in both
<TT>G4TriangularFacet</TT> and <TT>G4QuadrangularFacet</TT>.</LI>
<LI>Fix in <TT>G4PolyconeSide::DistanceAway()</TT> for correct
estimation of distance for the case of <TT>Phi</TT> sections.
Addresses problem report #598.</LI>
<LI>Fix in <TT>GetPointOnSurface()</TT> for <TT>G4Polycone</TT> to
consider also points laying on rings when consecutive
<TT>Z</TT>-sections are coincident. Added method
<TT>GetPointOnRing()</TT>.</LI>
</UL></LI>
</UL></LI>
<LI><B>Volumes</B>
<UL>
<LI>Extensions to the <TT>CheckOverlaps()</TT> algorithm:
<UL>
<LI>Added possibility to define a tolerance for reporting overlaps;
added new argument to signature, by default tolerance is set to
zero.</LI>
<LI>Optimised implementation for detecting daughter volumes which are
totally overlapping and checked in sequence.</LI>
<LI>Added check on current volume to optimise and correctly handle the
case of explicit call of the method when geometry is constructed.</LI>
<LI>Made warning message more clear.</LI>
</UL></LI>
</UL></LI>
</UL>
<A NAME="glob-notes">
<H3><I>Global</I></H3></A>
<UL>
<LI>Added <TT>G4TwoVector</TT> type, typef of CLHEP's <TT>Hep2Vector</TT>
class.</LI>
<LI>Changed date for release 8.3.</LI>
</UL>
<A NAME="greps-notes">
<H3><I>Graphical Representations</I></H3></A>
<UL>
<LI><TT>G4VisAttributes</TT>:
<UL>
<LI>Bug fix in <TT>SetForceLineSegmentsPerCircle()</TT>; now correctly
implementing the reset.</LI>
<LI>Minor refinement: introduced <TT>IsForceLineSegmentsPerCircle()</TT>
method.</LI>
</UL></LI>
<LI><TT>G4Colour</TT>: replaced static data members by static functions that
create and copy out the relevant colours.</LI>
</UL>
<A NAME="had-notes">
<H3><I>Hadronic Processes</I></H3></A>
<UL>
<LI>Added model name for hadronic whiteboard error reporting.</LI>
<LI><B>Cross sections</B>
<UL>
<LI>Extend user-chosen isotope abundance capability to several classes:
<TT>G4UPiNuclearCrossSection</TT>, <TT>G4UInelasticCrossSection</TT>,
<TT>G4UElasticCrossSection</TT>, <TT>G4GlauberGribovCrossSection</TT>,
<TT>G4NucleonNuclearCrossSection</TT>.</LI>
<LI><TT>G4PiNuclearCrossSection</TT>: removed special treatment ('tuning') for
Copper (Z=29),i.e. the <TT>Cu</TT> cross section is no longer lowered
by 4%.</LI>
<LI>New classes added:
<UL>
<LI><TT>G4BGGNucleonElasticXS</TT>:
provided proton and neutron elastic and cross section class
(<TT>G4BGGNucleonElasticXS</TT>) which uses the Barashenkov
parameterization below 100 GeV and Glauber-Gribov model above.</LI>
<LI>also provided proton and neutron inelastic cross sections
(<TT>G4BGGNucleonInelasticXS</TT>), pion elastic cross sections
(<TT>G4BGGPionElasticXS</TT>), and pion inelastic cross sections
(<TT>G4BGGPionInelasticXS</TT>) which combine the Barashenkov
parameterization below 100 GeV and Glauber-Gribov model above.</LI>
<LI><TT>G4NucleonNuclearCrossSection</TT> which contains Barashenkov
cross sections for nucleon-nucleus scattering</LI>
</UL></LI>
<LI>Added protection against division by zero in method
<TT>G4CrossSectionDataStore::SelectRandomIsotope()</TT>.</LI>
<LI>Added handling of user-defined isotope abundances for elements and
proper cross section and abundance weighted choice of isotopes in
reactions. New virtual methods for <TT>IsApplicable()</TT> and
<TT>GetCrossSections()</TT> added to classes
<TT>G4VCrossSectionDataSet</TT> and <TT>G4CrossSectionDataStore</TT>.</LI>
<LI><TT>G4HadronCrossSections::GetParticleCode()</TT>: following report from CMS,
replaced code which tested by particle name with more performant code
that tests by PDG ID. Also, use switch-case instead of else-if.</LI>
</UL></LI>
<LI><B>Management</B>
<UL>
<LI><TT>G4HadronicProcess</TT>:
<UL>
<LI>Removed unused <TT>AlwaysKillLeadingHadron()</TT> method.</LI>
<LI>Fixed bug which was killing primaries in elastic scattering.</LI>
<LI>Fix weighting error in leading particle killer.</LI>
<LI>Added handling of user-defined isotopes: re-implemented methods
<TT>GetMeanFreePath()</TT> and <TT>ChooseAandZ()</TT> to use new
methods in <TT>G4CrossSectionDataStore</TT>.</LI>
<LI>No longer use dispatch pointer to call data store methods.</LI>
<LI>Remove data members <TT>currentZ</TT>, <TT>currentN</TT> and methods
<TT>GetCurrentZ()</TT>, <TT>GetCurrentN()</TT>. They are no
longer needed.</LI>
</UL></LI>
</UL></LI>
<LI><B>Binary Cascade</B>
<UL>
<LI>Added protection against integrating zero <TT>timeStep</TT> in
<TT>G4RKPropagation</TT>. This used to cause in some cases division
by zero in integration.</LI>
</UL></LI>
<LI><B>Cascade</B>
<UL>
<LI>Added protection in <TT>G4ElementaryParticleCollider</TT> against negative
value to <TT>sqrt()</TT>.</LI>
</UL></LI>
<LI><B>Chiral Invariant Phase Space (CHIPS)</B>
<UL>
<LI>Fix for NaN, protected coulomb barrier against divide by zero, now
defaults to zero. Fix for NaN in <TT>G4QNucleus</TT> when using
<TT>pow()</TT> and in <TT>G4QEnvironment</TT>.</LI>
<LI>Completed implementation of G4QuasiFreeRatios which enables
quasi-elastic scattering.</LI>
<LI>To avoid early particle definition the CHIPS world is now created
at run time in the processes <TT>G4QElastic</TT>, <TT>G4QCollision</TT>,
and <TT>G4QCaptureAtRest</TT>.</LI>
<LI><TT>G4QElastic</TT>:
<UL>
<LI>Fix for mis-use of units.</LI>
<LI>Treat particles with <TT>E=0</TT> as alive for tracking purposes.</LI>
</UL></LI>
<LI>CHIPS model for muon capture now available. It is handled by
<TT>G4QCaptureAtRest</TT>.</LI>
<LI>Bug fix for muon-nuclear interactions.</LI>
<LI>Bug fix for binomial distribution with <TT>p=1,q=0</TT> in <TT>G4QNucleus</TT>.</LI>
</UL></LI>
<LI><B>Elastic scattering</B>
<UL>
<LI>Speed up coherent hadron-nucleus scattering (<TT>G4ElasticHadrNucleusHE</TT>)
by using iterator search on bin instead of computing <TT>log()</TT>.</LI>
<LI><TT>G4HadronElastic</TT>:
<UL>
<LI>Use the most probable isotope for given Z to call the high energy part
of the model (CPU/memory more efficient).</LI>
<LI>HElastic model for projectile energy above 1 <TT>GeV</TT> is used
for all targets with <TT>Z&gt;1</TT>.</LI>
</UL></LI>
<LI><TT>G4UHadronElasticProcess</TT>: fixed bug in number of neutrons in
CHIPS interface.</LI>
<LI><TT>G4HadronElastic</TT>, <TT>G4ChargeExchange</TT>: more accurately
compute Z and A.</LI>
<LI><TT>G4UHadronElasticProcess</TT> and <TT>G4ChargeExchangeProcess</TT>:
<UL>
<LI>Fixed bug of undefined isotope vector</LI>
<LI>Migrated to interface for isotope-dependent cross sections;
do not use QElastic total cross sections in
<TT>G4ChargeExchangeProcess</TT>.</LI>
</UL></LI>
</UL></LI>
<LI><B>High Energy</B>
<UL>
<LI>Added <TT>G4QuasiElasticChannel</TT> to simulate quasi-elastic
scattering. Relies on CHIPS class <TT>G4QuasiFreeRatios</TT>.</LI>
<LI>Modified <TT>G4TheoFSGenerator</TT> to use <TT>G4QuasiElasticChannel</TT>
and add quasi-elastic scattering for string models, and use these in
competition to the string model.</LI>
</UL></LI>
<LI><B>Low Energy</B>
<UL>
<LI><TT>G4LEAntiProtonInelastic</TT>: for low energy (< 0.1 MeV)
anti-protons, the model was simply returning the particle change which
had not yet been initialized, thus leading to an infinite loop. Now
model returns particle change initialized from the original kinematics.
Addresses problem report #888.</LI>
<LI>All Low Energy models: added model name to constructor for use in
traceback and debugging.</LI>
<LI><TT>G4LElastic</TT>: added protection against <TT>sqrt()</TT> of
negative value.</LI>
</UL></LI>
<LI><B>Parton String</B>
<UL>
<LI>Several modifications made to <TT>G4VLongitudinalStringFragmentation</TT>
for use in FTF model. This was taken from the original QGS code.</LI>
<LI>Revised FTF model now available. Single diffraction was added and
hadronization was improved. Management and qgsm modules also affected.</LI>
<LI><TT>G4ExcitedStringDecay::EnergyAndMomentumCorrector()</TT>, no longer
causes exception when not converging. Added more info when failing and
return correct status. Added protection in <TT>G4ExcitedStringDecay</TT>
against division by 0.</LI>
</UL></LI>
<LI><B>Pre-Compound</B>
<UL>
<LI>Added protection against division by zero in
<TT>G4PreCompoundTransitions</TT>.</LI>
</UL></LI>
<LI><B>Utils</B>
<UL>
<LI><TT>G4HadronicWhiteboard</TT>: added methods to set process and model
names.</LI>
<LI><TT>G4ReactionDynamics</TT>: added pi0 to anti-particle test.</LI>
</UL></LI>
</UL>
<A NAME="part-notes">
<H3><I>Particles</I></H3></A>
<UL>
<LI>Added protection against negative argument to <TT>sqrt()</TT> in
<TT>G4DecayProducts::Boost()</TT>.</LI>
</UL>
<A NAME="lst-notes">
<H3><I>Physics lists</I></H3></A>
<UL>
<LI>Added quasi-elastic in QGSP physics list; this required changes to:
<UL>
<LI>QGSP{proton,Neutron,PiK} Builder, adding <TT>QuasiElasticChannel</TT> on
conditional flag.</LI>
<LI><TT>HadronPhysicsQGSP</TT> passes flag (default=<TT>false</TT>) to
Builders.</LI>
<LI>QGSP uses flag to include quasi-elastic.</LI>
</UL></LI>
<LI>New list QGSP_NQSE, a copy of QGSP without quasi-elastic.</LI>
<LI>For QGSC, QGSC_EMV, and QGSC_EFLOW enable use of <TT>G4QCaptureAtRest()</TT>
also for muons. Changes made in <TT>G4QStoppingPhysics</TT> as well.</LI>
<LI>Modifications for Quasi-elastic. Added to all QGS physics lists execpt
the two obsolete QGSC_LEAD/QGSC_LEAD_HP. This also required adapting of
<TT>HadronsPhysicsXYZ</TT> and {QGSP;QGSC;QGSC_EFLOW}{Neutron,Proton,PiK}
Builders.</LI>
<LI>Removed unnecessary <TT>HadronPhysics...{EMV,EMX}</TT> classes.</LI>
<LI>Adopting recent upgrades in QGS and FTF for the QBBC physics list.</LI>
<LI>Set <TT>skin</TT> to zero in <TT>G4EmStandardPhysics7</TT> (i.e. no use
of <TT>ComputeStep()</TT> in multiple-scattering).</LI>
<LI><TT>G4HadronHElasticPhysics</TT> uses new cross section classes
<TT>G4BGGNucleonElasticXS</TT> and <TT>G4BGGPionElasticXS</TT>.</LI>
<LI><TT>G4HadronElasticPhysics</TT>: set limits on low energy and QElastic
to zero.</LI>
<LI>Fixed special cuts for LBE physics list.</LI>
<LI>Added set min/max Energy and Inelastic Energy to NeutronHP builder.</LI>
<LI><TT>G4EmStandardPhysics</TT>:
<UL>
<LI>Use <TT>G4hMultipleScattering</TT> for muons and removed extra
printouts.</LI>
<LI>Use default multiple-scattering setup in <TT>G4EmStandardPhysics72</TT>.</LI>
<LI>Use <TT>skin=0</TT> (no use of <TT>ComputeStep()</TT> in
multiple-scattering) in <TT>G4EmStandardPhysics</TT> and
<TT>G4EmStandardPhysics71</TT>.</LI>
</UL></LI>
<LI>Added new physics list QGSP_BERT_TRV, based on QGSP_BERT, but changing
to Bertini Cascade occurs at 5.0-5.4 <TT>GeV</TT> for proton, neutron,
pion and kaon.</LI>
<LI>Increased version number to 5.2.</LI>
</UL>
<A NAME="run-notes">
<H3><I>Run</I></H3></A>
<UL>
<LI>Prevent from unnecessary creation of <TT>G4String</TT> objects in
<TT>G4Event</TT>, which were default for random number status.</LI>
<LI>Added new <TT>G4RunManager</TT> flag and corresponding UI command.</LI>
</UL>
<A NAME="vis-notes">
<H3><I>Visualization</I></H3></A>
<UL>
<LI><B>Management</B>
<UL>
<LI>Added command <TT>/vis/abortReviewKeptEvents</TT> and improved
guidance of command <TT>/vis/reviewKeptEvents</TT>.</LI>
<LI>Introduced command <TT>/vis/geometry/set/forceLineSegmentsPerCircle</TT>.</LI>
<LI>Fixed bug concerning call to <TT>/vis/open</TT> in
<TT>/vis/reviewKeptEvents</TT> loop.</LI>
<LI><TT>G4VSceneHandler</TT>:
<UL>
<LI>Introduced utility <TT>LoadAtts()</TT> for <TT>G4AttValues</TT>
and <TT>G4AttDefs</TT>.</LI>
<LI>Improved other utilities (changed signature of
<TT>GetLineWidth()</TT>).</LI>
</UL></LI>
<LI>Reduced WARNING noise and other minor improvements.</LI>
</UL></LI>
<LI><B>Modeling</B>
<UL>
<LI>Bug fix: corrected treatment of <TT>ForcedLineSegmentsPerCircle</TT>
when clipping.</LI>
</UL></LI>
<LI><B>OpenGL</B>
<UL>
<LI>Implemented bitmap markers (for <TT>MarkerSizeType == screen</TT>).</LI>
<LI>Bug fix: added missing break in X colormap lookup routine.</LI>
<LI>Adapted to change of signature of <TT>GetLineWidth()</TT>.</LI>
<LI>Fixed Windows problem with <TT>DBL_MAX</TT> and compilation warnings.</LI>
<LI><TT>G4OpenGLXViewer</TT>: Small bug fix in <TT>print()</TT>;
context was switched but not switched back.</LI>
</UL></LI>
<LI><B>OpenInventor</B>
<UL>
<LI>Moved <TT>LoadAtts()</TT> to vis management module.</LI>
</UL></LI>
<LI><B>RayTracer</B>
<UL>
<LI>Bug fix: use of window size hints.</LI>
</UL></LI>
<LI><B>ASCIITree</B>
<UL>
<LI>Bug fix: format of total mass.</LI>
</UL></LI>
</UL>
<A NAME="ex-notes">
<H3><I>Examples</I></H3></A>
<UL>
<LI>Updated reference outputs.</LI>
<LI><B>extended</B>
<UL>
<LI>electromagnetic/TestEm2
<UL>
<LI>Uncommented hadron ionisation in Livermore builder.</LI>
</UL></LI>
<LI>electromagnetic/TestEm3
<UL>
<LI>Fixed compilation problem on SUN.</LI>
<LI>Added command <TT>/testem/run/limitEdep</TT> allowing to compute
restricted mean values to supress big statistical fluctuations.</LI>
<LI>Updated command <TT>/testem/run/acceptance</TT>.</LI>
<LI>Parameter <TT>skin=1</TT> is set as default PhysList.</LI>
<LI>Added macro <TT>emtutor.mac</TT>.</LI>
<LI>Added physics-lists names: penelope, livermore.</LI>
<LI>Restored random seed storage.</LI>
<LI>By default do not store random seed and do not activate VisManager
in batch.</LI>
<LI>Added <TT>G4standard_exp</TT> PhysList. Added material Lucite.</LI>
<LI>Return Z-position computation.</LI>
</UL></LI>
<LI>electromagnetic/TestEm5
<UL>
<LI>Use all default values in default PhysList.</LI>
<LI>Use hadronic builders from physics_lists library.</LI>
</UL></LI>
<LI>electromagnetic/TestEm7
<UL>
<LI>Parameter <TT>skin=1</TT> is set as default PhysList.</LI>
<LI>Added physics-lists names: penelope, livermore.</LI>
<LI>Fixed usage of elastic builders in PhysicsList.</LI>
</UL></LI>
<LI>electromagnetic/TestEm9
<UL>
<LI>Compute truncated mean values to reduce statistical fluctuations
and fixed output of statistics.</LI>
<LI>Added physics-lists names: penelope, livermore.</LI>
<LI>Uncommented hadron ionisation in Livermore builder.</LI>
</UL></LI>
<LI>electromagnetic/TestEm12
<UL>
<LI>Uncommented hadron ionisation in Livermore builder.</LI>
<LI><TT>HistoManager</TT>: by default, get <TT>csdaRange</TT> from
<TT>G4EmCalculator</TT>.</LI>
</UL></LI>
<LI>electromagnetic/TestEm13, TestEm14
<UL>
<LI><TT>vis.mac</TT>: suppressed command drawTracks.</LI>
</UL></LI>
<LI>electromagnetic/TestEm15
<UL>
<LI>SteppingAction: added protection if no lateral displacement.</LI>
</UL></LI>
<LI>electromagnetic/TestEm18
<UL>
<LI>New example allowing for studying the energy lost by a charged
particle in a single layer, due to ionization and bremsstrahlung.
Results are compared to 'reference' values.</LI>
</UL></LI>
<LI>field/field03
<UL>
<LI>Fixed bug in <TT>F03FieldSetup</TT> for the activation of local
fields.</LI>
</UL></LI>
<LI>hadronic/Hadr01
<UL>
<LI>PhysicsList update according to QBBC and quasi-elastic
modifications.</LI>
<LI>Fix in QGSP_BIC_HP physics list.
Addressing problem report #937.</LI>
</UL></LI>
<LI>medical/fanoCavity
<UL>
<LI>New example for computing the dose deposited in an ionization
chamber by a monoenergetic photon beam.</LI>
</UL></LI>
<LI>radioactivedecay/exrdm
<UL>
<LI>Fixed usage of physics-lists.</LI>
</UL></LI>
<LI>runAndEvent
<UL>
<LI>RE01: Removed large-N reference output.</LI>
</UL></LI>
</UL></LI>
</UL>
<HR>
</BODY>
</HTML>
+8 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.288 2006/11/30 15:47:16 gcosmo Exp $
$Id: History,v 1.289 2007/02/28 15:35:31 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -16,6 +16,13 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
28th February 2007 Gabriele Cosmo (config-V08-02-00)
- Protected generation of dependencies using internal 'make' variable
MAKECMDGOALS in binmake.gmk and common.gmk, following suggestion made
in problem report #930.
This protection resolves the problem of generation of dependencies when
issueing the 'clean' target.
3rd November 2006 Gunter Folger (config-V08-01-07)
- architecture.gmk: added G4LIB_BUILD_LISTS with default value 1 to build physics lists.
- binmake.gmk: added physics lists include directories to INCFLAGS.
+3 -1
View File
@@ -1,4 +1,4 @@
# $Id: binmake.gmk,v 1.116 2006/11/08 16:52:19 gunter Exp $
# $Id: binmake.gmk,v 1.117 2007/02/28 15:35:07 gcosmo Exp $
# ----------------------------------------------------------
# Script defining rules and paths for making binaries.
# First implementation: Gabriele Cosmo, 25/06/1998.
@@ -401,8 +401,10 @@ $(G4TMPDIR)/exe/$(G4TARGET).d: $(G4TARGET).cc
sed 's!$(G4TARGET)\.$(TARGOBJEXT)!$(G4TMPDIR)/exe/& $@!' >$@;\
[ -s $@ ] || rm -f $@
ifneq ($(dependencies),)
ifneq ($(MAKECMDGOALS),clean)
-include $(dependencies)
endif
endif
clean::
@echo Cleaning up ...
+3 -1
View File
@@ -1,4 +1,4 @@
# $Id: common.gmk,v 1.41 2005/12/07 09:41:54 gcosmo Exp $
# $Id: common.gmk,v 1.42 2007/02/28 15:35:07 gcosmo Exp $
# ----------------------------------------------------------------
# Common part of GNUmakefile for libraries. John Allison, 5/7/95.
# ----------------------------------------------------------------
@@ -110,8 +110,10 @@ $(G4TMPDIR)/%.d: src/%.cc
sed 's!$*\.o!$(G4TMPDIR)/& $@!' >$@;\
[ -s $@ ] || rm -f $@
ifneq ($(dependencies),)
ifneq ($(MAKECMDGOALS),clean)
-include $(dependencies)
endif
endif
#
# Installation of include files
+26 -1
View File
@@ -1,4 +1,4 @@
$Id: History,v 1.117 2006/12/15 09:45:28 gcosmo Exp $
$Id: History,v 1.123 2007/05/08 13:07:58 gcosmo Exp $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,31 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
8th May 2007 Gabriele Cosmo (examples-V08-03-00)
- Updated reference outputs according to reference tag geant4-08-03-ref-00.
- Includes tags: testem12-V08-02-01, fieldex03-V08-02-00, exhadr01-V08-02-01.
27th April 2007 Gabriele Cosmo (examples-V08-02-04)
- Updated reference outputs according to reference tag geant4-08-02-ref-04.
- Includes tags: testem3-V08-02-04, testem7-V08-02-02, testem9-V08-02-02,
testem13-V08-02-00, testem14-V08-02-00, exhadr01-V08-02-00.
5th April 2007 Gabriele Cosmo (examples-V08-02-03)
- Updated reference outputs according to reference tag geant4-08-02-ref-03.
- Includes tags: testem3-V08-02-01, testem5-V08-02-00, testem7-V08-02-01,
testem15-V08-02-00, fano-V08-02-05.
2nd March 2007 Gabriele Cosmo (examples-V08-02-02)
- Updated reference outputs according to reference tag geant4-08-02-ref-02.
- Includes tags: testem18-V08-02-01, fano-V08-02-03, exrdm-V08-02-01,
exampleRE01-V08-02-00, exampleRE02-V08-02-00.
26th January 2007 Gabriele Cosmo (examples-V08-02-01)
- Updated reference outputs according to reference tag geant4-08-02-ref-01.
- Includes tags: underground_physics-V08-02-00, testem2-V08-02-00,
testem7-V08-02-00, testem9-V08-02-00, testem12-V08-02-00,
testem16-V08-02-00.
15th December 2006 Gabriele Cosmo (examples-V08-02-00)
- Updated reference outputs according to reference tag geant4-08-02-ref-00.
- Includes tags: testem0-V08-01-02, testem7-V08-01-03, exgdml-V08-01-00,
+19 -18
View File
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -130,6 +130,7 @@ MicrobeamPhysicsList::SetCuts:CutLength : 10 nm
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
G4AugerData for Element no. 6 are loaded
G4AugerData for Element no. 7 are loaded
@@ -157,13 +158,14 @@ LowEnBrem: Total cross sections from EEDL database.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -172,6 +174,7 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.2 Step limitation 0
hLowEIoni: Knock-on electron cross sections .
@@ -187,6 +190,7 @@ hLowEIoni: Knock-on electron cross sections .
Nuclear stopping power model is ICRU_R49
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.2 Step limitation 0
hLowEIoni: Knock-on electron cross sections .
@@ -203,6 +207,7 @@ hLowEIoni: Knock-on electron cross sections .
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.2 Step limitation 0
========= Table of registered couples ==============================
@@ -306,30 +311,26 @@ Index : 12 used in the geometry : Yes recalculation needed : No
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0474129
-> Event # 2 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.326371
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0235737
-> Event # 3 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.629625
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0207051
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Event # 4 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.642498
-----> total absorbed dose within Cytoplasm is (Gy) = 0.00610788
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Event # 5 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.628085
-----> total absorbed dose within Cytoplasm is (Gy) = 0.00760408
-----> total absorbed dose within Nucleus is (Gy) = 0.327327
-----> total absorbed dose within Cytoplasm is (Gy) = 0.00630958
-> Event # 6 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Event # 7 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.321989
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0549673
===> Sorry, the incident alpha particle has missed the targeted cell !
-> Event # 8 generated
===> Sorry, the incident alpha particle has missed the targeted cell !
@@ -339,11 +340,11 @@ Index : 12 used in the geometry : Yes recalculation needed : No
-> Event # 10 generated
===> The incident alpha particle has reached the targeted cell :
-----> total absorbed dose within Nucleus is (Gy) = 0.543119
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0475622
-----> total absorbed dose within Nucleus is (Gy) = 0.383181
-----> total absorbed dose within Cytoplasm is (Gy) = 0.0430387
ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer.
-> Total number of particles detected by the gas detector : 6
-> Total number of particles detected by the gas detector : 4
Graphics systems deleted.
Visualization Manager deleting...
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -526,30 +526,33 @@ phot: Total cross sections from Sandia parametrisation.
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -562,27 +565,32 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -622,19 +630,22 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
========= Table of registered couples ==============================
@@ -696,7 +707,7 @@ PhotInPrimaryGeneratorAction::GeneratePrimaries: part&E're redefined
Run terminated.
Run Summary
Number of events processed : 1
User=30.87s Real=31.9s Sys=0.72s
User=74.19s Real=77.22s Sys=2.86s
##############################################################
Run Summary - Number of events : 1
##############################################################
@@ -705,57 +716,57 @@ Region Region0
Production thresholds :
-----------------------
gamma 1 mm e- 1 mm e+ 1 mm
Energy deposition in Absorber 26.944108 MeV, in Gap 0 eV
Energy deposition in Absorber 1.1014107 GeV, in Gap 0 eV
Number of secondaries in the event :
------------------------------------
gamma in Absorber 1, in Gap 3
e- in Absorber 45, in Gap 78
e+ in Absorber 0, in Gap 1
gamma in Absorber 19, in Gap 137
e- in Absorber 412, in Gap 912
e+ in Absorber 1, in Gap 12
Minimum kinetic energy of generated secondaries :
-------------------------------------------------
gamma in Absorber = 23.736054 keV, in Gap = 510.99906 keV
e- in Absorber = 37.446406 eV , in Gap = 45.624968 eV
e+ in Absorber = 2.8802232e+295 J in Gap = 4.6902783 MeV
Mean total track length of neutrons in the event : in Absorber = 46.69292 cm , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =14, in Gap = 0
gamma in Absorber = 3.3336565 keV, in Gap = 7.0059449 keV
e- in Absorber = 0.36374712 eV , in Gap = 30.878493 eV
e+ in Absorber = 8.0783104 MeV in Gap = 1.044149 MeV
Mean total track length of neutrons in the event : in Absorber = 3.3745678 m , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =87, in Gap = 0
##############################################################
Region Region1
====================
Production thresholds :
-----------------------
gamma 1 cm e- 1 cm e+ 1 cm
Energy deposition in Absorber 53.114218 GeV, in Gap 0 eV
Energy deposition in Absorber 65.908667 GeV, in Gap 0 eV
Number of secondaries in the event :
------------------------------------
gamma in Absorber 2006, in Gap 8352
e- in Absorber 20170, in Gap 44228
e+ in Absorber 118, in Gap 658
gamma in Absorber 2095, in Gap 9035
e- in Absorber 22065, in Gap 47423
e+ in Absorber 136, in Gap 742
Minimum kinetic energy of generated secondaries :
-------------------------------------------------
gamma in Absorber = 5.719773 keV, in Gap = 20.504013 keV
e- in Absorber = 0.069696335 eV , in Gap = 0.63274259 eV
e+ in Absorber = 139.11773 keV in Gap = 58.330473 keV
Mean total track length of neutrons in the event : in Absorber = 21.705779 m , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =504, in Gap = 0
gamma in Absorber = 5.7170692 keV, in Gap = 20.503949 keV
e- in Absorber = 0.26932028 eV , in Gap = 0.045852756 eV
e+ in Absorber = 214.55633 keV in Gap = 156.10678 keV
Mean total track length of neutrons in the event : in Absorber = 81.069248 m , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =1872, in Gap = 0
##############################################################
Region Region2
====================
Production thresholds :
-----------------------
gamma 10 cm e- 10 cm e+ 10 cm
Energy deposition in Absorber 149.45259 MeV, in Gap 0 eV
Energy deposition in Absorber 671.94787 MeV, in Gap 0 eV
Number of secondaries in the event :
------------------------------------
gamma in Absorber 3, in Gap 25
e- in Absorber 210, in Gap 307
e+ in Absorber 0, in Gap 1
gamma in Absorber 22, in Gap 45
e- in Absorber 451, in Gap 661
e+ in Absorber 3, in Gap 9
Minimum kinetic energy of generated secondaries :
-------------------------------------------------
gamma in Absorber = 27.1658 keV, in Gap = 89.964114 keV
e- in Absorber = 13.912189 eV , in Gap = 4.1623966 eV
e+ in Absorber = 2.8802232e+295 J in Gap = 1.0632795 MeV
Mean total track length of neutrons in the event : in Absorber = 60.72903 cm , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =14, in Gap = 0
gamma in Absorber = 45.665742 keV, in Gap = 83.908611 keV
e- in Absorber = 32.180541 eV , in Gap = 6.014585 eV
e+ in Absorber = 1.3764601 MeV in Gap = 1.1425304 MeV
Mean total track length of neutrons in the event : in Absorber = 5.6787259 m , in Gap = 0 fm
Mean number of steps of charged particles in the event : in Absorber =127, in Gap = 0
##############################################################
/run/dumpCouples
@@ -38,9 +38,9 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
#/dmx/gun/radius 250 mum
#/dmx/gun/radius 250 um
#/dmx/gun/halfz 10.0 nm
/dmx/gun/radius 650 mum
/dmx/gun/radius 650 um
/dmx/gun/halfz 300.0 nm
#/dmx/gun/centre 0 0 82.750 mm
/dmx/gun/centre 0 0 -302.65 mm
@@ -38,7 +38,7 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
/dmx/gun/radius 250 mum
/dmx/gun/radius 250 um
/dmx/gun/halfz 10.0 nm
/dmx/gun/centre 0 0 -302.65 mm
/dmx/gun/confine americium_phys
@@ -38,7 +38,7 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
/dmx/gun/radius 250 mum
/dmx/gun/radius 250 um
/dmx/gun/halfz 10.0 nm
/dmx/gun/centre 0 0 -302.65 mm
/dmx/gun/confine americium_phys
@@ -39,10 +39,10 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
#/dmx/gun/radius 250 mum
#/dmx/gun/radius 250 um
#/dmx/gun/halfz 10.0 nm
#/dmx/gun/radius 450 mum
/dmx/gun/radius 650 mum
#/dmx/gun/radius 450 um
/dmx/gun/radius 650 um
/dmx/gun/halfz 300.0 nm
#/dmx/gun/centre 0 0 82.750 mm
/dmx/gun/centre 0 0 -302.65 mm
@@ -38,7 +38,7 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
/dmx/gun/radius 250 mum
/dmx/gun/radius 250 um
/dmx/gun/halfz 10.0 nm
/dmx/gun/centre 0 0 -302.65 mm
/dmx/gun/confine americium_phys
@@ -164,21 +164,21 @@ DMXParticleSourceMessenger::DMXParticleSourceMessenger
centreCmd->SetGuidance("Set centre coordinates of source.");
centreCmd->SetParameterName("X","Y","Z",true,true);
centreCmd->SetDefaultUnit("cm");
centreCmd->SetUnitCandidates("nm mum mm cm m km");
centreCmd->SetUnitCandidates("nm um mm cm m km");
// half height of source
halfzCmd = new G4UIcmdWithADoubleAndUnit("/dmx/gun/halfz",this);
halfzCmd->SetGuidance("Set z half length of source.");
halfzCmd->SetParameterName("Halfz",true,true);
halfzCmd->SetDefaultUnit("cm");
halfzCmd->SetUnitCandidates("nm mum mm cm m km");
halfzCmd->SetUnitCandidates("nm um mm cm m km");
// radius of source
radiusCmd = new G4UIcmdWithADoubleAndUnit("/dmx/gun/radius",this);
radiusCmd->SetGuidance("Set radius of source.");
radiusCmd->SetParameterName("Radius",true,true);
radiusCmd->SetDefaultUnit("cm");
radiusCmd->SetUnitCandidates("nm mum mm cm m km");
radiusCmd->SetUnitCandidates("nm um mm cm m km");
// confine to volume
confineCmd = new G4UIcmdWithAString("/dmx/gun/confine",this);
@@ -40,7 +40,7 @@
# gun: source
/dmx/gun/type Volume
/dmx/gun/shape Cylinder
/dmx/gun/radius 650 mum
/dmx/gun/radius 650 um
####/dmx/gun/halfz 300.0 nm
/dmx/gun/halfz 1500.0 nm
/dmx/gun/centre 0 0 -302.65 mm
+92 -81
View File
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -30,34 +30,34 @@ Going to assign importance: 131072, to volume: cell_18
The initial Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
Transportation
DoIt Vector:
Transportation
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
The final Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
Transportation
DoIt Vector:
Transportation
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
================================================
=== G4ProcessPlacer::AddProcessAsSecondDoIt: for: neutron
@@ -65,27 +65,27 @@ DoIt Vector:
The initial Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
Transportation
DoIt Vector:
Transportation
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
The final Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
MassImportanceProcess
Transportation
@@ -93,10 +93,10 @@ DoIt Vector:
Transportation
MassImportanceProcess
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
================================================
@@ -115,30 +115,33 @@ phot: Total cross sections from Sandia parametrisation.
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -147,27 +150,32 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -207,50 +215,53 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
Volume name | Importance| Tr.Entering| Population| Collisions| Coll*WGT| NumWGTedE| FluxWGTedE| Av.Tr.WGT|
cell_01_rep:0............ | 1 | 106 | 127 | 165 | 165 | 4.7833307 | 8.4257685 | 1 |
cell_02_rep:0............ | 2 | 79 | 170 | 150 | 75 | 8.3770212 | 8.9611837 | 1 |
cell_03_rep:0............ | 4 | 120 | 257 | 292 | 73 | 0.030422242 | 8.1225467 | 1 |
cell_04_rep:0............ | 8 | 118 | 267 | 325 | 40.625 | 6.2788095 | 7.9670281 | 1 |
cell_05_rep:0............ | 16 | 112 | 236 | 298 | 18.625 | 0.066754216 | 7.5980323 | 1 |
cell_06_rep:0............ | 32 | 124 | 264 | 342 | 10.6875 | 5.2637216 | 7.6806894 | 1 |
cell_07_rep:0............ | 64 | 161 | 322 | 438 | 6.84375 | 4.9595564 | 7.2063026 | 1 |
cell_08_rep:0............ | 128 | 205 | 412 | 532 | 4.15625 | 4.0919226 | 6.9949884 | 1 |
cell_09_rep:0............ | 256 | 236 | 482 | 650 | 2.5390625 | 0.11583494 | 6.6067148 | 1 |
cell_10_rep:0............ | 512 | 267 | 549 | 748 | 1.4609375 | 4.0989275 | 6.2777243 | 1 |
cell_11_rep:0............ | 1024 | 325 | 648 | 993 | 0.96972656 | 0.64376933 | 5.8542585 | 1 |
cell_12_rep:0............ | 2048 | 374 | 733 | 1233 | 0.60205078 | 0.13579459 | 5.5076248 | 1 |
cell_13_rep:0............ | 4096 | 412 | 832 | 1361 | 0.33227539 | 3.5686894 | 5.4720131 | 1 |
cell_14_rep:0............ | 8192 | 438 | 897 | 1402 | 0.17114258 | 0.22945117 | 5.496985 | 1 |
cell_15_rep:0............ | 16384 | 476 | 990 | 1656 | 0.10107422 | 0.80759575 | 5.4423419 | 1 |
cell_16_rep:0............ | 32768 | 539 | 1059 | 1738 | 0.053039551 | 3.8380076 | 5.1041349 | 1 |
cell_17_rep:0............ | 65536 | 579 | 1201 | 1995 | 0.030441284 | 0.1904835 | 4.9379711 | 1 |
cell_18_rep:0............ | 131072 | 501 | 1179 | 2198 | 0.016769409 | 0.54009342 | 4.7248222 | 1 |
rest_rep:0............... | 131072 | 548 | 548 | 0 | 0 | 0 | 0 | 0 |
shieldWorld_rep:0........ | 1 | 11 | 110 | 0 | 0 | 10 | 10 | 1 |
cell_01_rep:0............ | 1 | 118 | 150 | 149 | 149 | 7.2096509 | 8.5785508 | 1 |
cell_02_rep:0............ | 2 | 87 | 192 | 189 | 94.5 | 8.2328232 | 8.660209 | 1 |
cell_03_rep:0............ | 4 | 99 | 212 | 240 | 60 | 6.6805827 | 7.9415373 | 1 |
cell_04_rep:0............ | 8 | 119 | 258 | 287 | 35.875 | 6.957465 | 7.8605556 | 1 |
cell_05_rep:0............ | 16 | 150 | 321 | 396 | 24.75 | 5.1009587 | 7.099783 | 1 |
cell_06_rep:0............ | 32 | 162 | 353 | 426 | 13.3125 | 4.6037023 | 7.0570615 | 1 |
cell_07_rep:0............ | 64 | 205 | 416 | 568 | 8.875 | 4.8261852 | 6.6681408 | 1 |
cell_08_rep:0............ | 128 | 223 | 486 | 656 | 5.125 | 0.53648464 | 6.6539856 | 1 |
cell_09_rep:0............ | 256 | 251 | 519 | 751 | 2.9335938 | 4.943392 | 6.39047 | 1 |
cell_10_rep:0............ | 512 | 288 | 597 | 875 | 1.7089844 | 4.3487469 | 6.110481 | 1 |
cell_11_rep:0............ | 1024 | 337 | 698 | 1058 | 1.0332031 | 4.4329506 | 6.0885935 | 1 |
cell_12_rep:0............ | 2048 | 393 | 782 | 1238 | 0.60449219 | 4.4763037 | 6.0639968 | 1 |
cell_13_rep:0............ | 4096 | 451 | 930 | 1440 | 0.3515625 | 4.2499709 | 5.7580044 | 1 |
cell_14_rep:0............ | 8192 | 472 | 985 | 1522 | 0.18579102 | 0.072154763 | 5.4255988 | 1 |
cell_15_rep:0............ | 16384 | 503 | 1014 | 1715 | 0.10467529 | 0.87569507 | 5.1929267 | 1 |
cell_16_rep:0............ | 32768 | 576 | 1204 | 2080 | 0.063476562 | 0.13469363 | 4.97975 | 1 |
cell_17_rep:0............ | 65536 | 635 | 1281 | 2314 | 0.035308838 | 3.3098112 | 4.7409862 | 1 |
cell_18_rep:0............ | 131072 | 565 | 1356 | 2505 | 0.019111633 | 3.1110957 | 4.603961 | 1 |
rest_rep:0............... | 131072 | 601 | 601 | 0 | 0 | 0 | 0 | 0 |
shieldWorld_rep:0........ | 1 | 14 | 114 | 0 | 0 | 10 | 10 | 1 |
=== G4ProcessPlacer::RemoveProcess: for: neutron
ProcessName: MassImportanceProcess, will be removed!
The initial Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
MassImportanceProcess
Transportation
@@ -258,27 +269,27 @@ DoIt Vector:
Transportation
MassImportanceProcess
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
The final Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
Transportation
DoIt Vector:
Transportation
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
================================================
=== G4ProcessPlacer::RemoveProcess: for: neutron
@@ -286,33 +297,33 @@ DoIt Vector:
The initial Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
MScoreProcess
Transportation
DoIt Vector:
Transportation
MScoreProcess
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
The final Vectors:
GPIL Vector:
Decay
LCapture
LFission
HadronCapture
HadronFission
inelastic
LElastic
HadronElastic
Transportation
DoIt Vector:
Transportation
LElastic
HadronElastic
inelastic
LFission
LCapture
HadronFission
HadronCapture
Decay
================================================
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -130,32 +130,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -164,24 +167,29 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -189,13 +197,15 @@ ionIoni: tables are built for GenericIon
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -237,20 +247,23 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -286,7 +299,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 2000
User=93.45s Real=229.21s Sys=10.12s
User=135.86s Real=161.42s Sys=5.57s
======================== run summary ======================
@@ -294,29 +307,29 @@ Run Summary
============================================================
total energy deposit: 99.778 MeV
total energy deposit: 99.795 MeV
nb tracks/event neutral: 27.852 charged: 148.23
nb steps/event neutral: 141.16 charged: 360.34
nb tracks/event neutral: 27.87 charged: 148.27
nb steps/event neutral: 141.21 charged: 217.54
nb of process calls per event:
eBrem eIoni compt phot mscTransportation conv annihil
26.195 187.84 113.31 25.441 144.89 0.999 1.4155 1.416
eBrem eIoni compt phot conv annihilTransportation msc
26.152 189.06 113.34 25.465 1.429 1.431 0.9785 0.895
---------------------------------------------------------
Primary particle :
true Range = 11.117 cm rms = 3.8519 cm
proj Range = 9.5829 cm rms = 3.5673 cm
proj/true = 0.862
transverse dispersion at end = 1.7458 cm
mass true Range from simulation = 30.016 g/cm2
true Range = 11.188 cm rms = 3.8024 cm
proj Range = 9.6817 cm rms = 3.5072 cm
proj/true = 0.86537
transverse dispersion at end = 1.6744 cm
mass true Range from simulation = 30.207 g/cm2
from PhysicsTable (csda range) = 31.791 g/cm2
---------------------------------------------------------
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1518067820, 1468624748
Current couple of seeds = 635796452, 1715057552
----------------------------------------
#
/process/eLoss/verbose 0
@@ -344,7 +357,7 @@ Index : 0 used in the geometry : Yes recalculation needed : No
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1518067820, 1468624748
Current couple of seeds = 635796452, 1715057552
----------------------------------------
Start Run processing.
@@ -352,7 +365,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 2000
User=180.14s Real=317.87s Sys=17.19s
User=262.73s Real=299.52s Sys=16.05s
======================== run summary ======================
@@ -360,29 +373,29 @@ Run Summary
============================================================
total energy deposit: 99.804 MeV
total energy deposit: 99.807 MeV
nb tracks/event neutral: 36.715 charged: 292.17
nb steps/event neutral: 148.23 charged: 774.58
nb tracks/event neutral: 36.588 charged: 290.52
nb steps/event neutral: 145.99 charged: 487.88
nb of process calls per event:
eIoni eBrem msc phot conv annihil comptTransportation
450.68 34.889 287.6 34.344 1.414 1.415 111.52 0.965
eIoni eBrem phot compt conv annihilTransportation msc
450.32 34.772 34.252 109.41 1.4235 1.4235 0.9185 1.3595
---------------------------------------------------------
Primary particle :
true Range = 11.099 cm rms = 3.8352 cm
proj Range = 9.6044 cm rms = 3.546 cm
proj/true = 0.86534
transverse dispersion at end = 1.7575 cm
mass true Range from simulation = 29.967 g/cm2
true Range = 11.181 cm rms = 3.7948 cm
proj Range = 9.6756 cm rms = 3.5108 cm
proj/true = 0.86535
transverse dispersion at end = 1.7596 cm
mass true Range from simulation = 30.189 g/cm2
from PhysicsTable (csda range) = 31.791 g/cm2
---------------------------------------------------------
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 2000278172, 2144462017
Current couple of seeds = 693892311, 266689939
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -89,18 +89,20 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
Lorentz Factor XTR photon number
@@ -156,7 +158,7 @@ Lorentz Factor XTR photon number
8.085e+04 3.149
9.283e+04 3.149
total time for build X-ray TR energy loss tables = 0.44 s
total time for build X-ray TR energy loss tables = 0.93 s
SynRad: Incoherent Synchrotron Radiation
good description for long magnets at all energies
@@ -164,13 +166,14 @@ SynRad: Incoherent Synchrotron Radiation
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -230,21 +233,24 @@ Lorentz Factor XTR photon number
8.085e+04 3.149
9.283e+04 3.149
total time for build X-ray TR energy loss tables = 0.44 s
total time for build X-ray TR energy loss tables = 0.91 s
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -284,19 +290,22 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
========= Table of registered couples ==============================
@@ -338,26 +347,26 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 1000
User=28.68s Real=32.3s Sys=3.34s
User=65.15s Real=72.62s Sys=7.43s
================== run summary =====================
end of Run TotNbofEvents = 1000
mean charged track length in absorber=114.629 +- 2.11901 mm
mean charged track length in absorber=111.915 +- 2.13442 mm
mean energy deposit in absorber=0.0512368 +- 0.000839775 MeV
mean energy deposit in absorber=0.0503287 +- 0.000857444 MeV
mean number of steps in absorber (charged) =60.95 +- 1.51948
mean number of steps in absorber (neutral) =2.871 +- 0.0527481
mean number of steps in absorber (charged) =58.997 +- 1.51059
mean number of steps in absorber (neutral) =2.869 +- 0.0556762
mean number of charged secondaries = 5.083 +- 0.101302
mean number of charged secondaries = 4.98 +- 0.102954
mean number of neutral secondaries = 0.149 +- 0.0121983
mean number of neutral secondaries = 0.135 +- 0.0121151
mean number of e-s =5.083 and e+s =0
mean number of e-s =4.98 and e+s =0
(number) transmission coeff=0.569 reflection coeff=0.066
(number) transmission coeff=0.544 reflection coeff=0.08
energy deposit distribution
#entries=1000 #underflows=0 #overflows=51
#entries=1000 #underflows=0 #overflows=46
bin nb Elow entries normalized
0 0 0 0
1 1.53846 0 0
@@ -367,71 +376,71 @@ Run Summary
5 7.69231 0 0
6 9.23077 0 0
7 10.7692 0 0
8 12.3077 1 0.001
9 13.8462 5 0.005
10 15.3846 15 0.015
11 16.9231 12 0.012
12 18.4615 10 0.01
13 20 23 0.023
14 21.5385 17 0.017
15 23.0769 22 0.022
16 24.6154 15 0.015
17 26.1538 31 0.031
18 27.6923 34 0.034
8 12.3077 4 0.004
9 13.8462 4 0.004
10 15.3846 10 0.01
11 16.9231 13 0.013
12 18.4615 15 0.015
13 20 14 0.014
14 21.5385 21 0.021
15 23.0769 27 0.027
16 24.6154 30 0.03
17 26.1538 28 0.028
18 27.6923 32 0.032
19 29.2308 26 0.026
20 30.7692 24 0.024
21 32.3077 31 0.031
22 33.8462 36 0.036
23 35.3846 32 0.032
24 36.9231 25 0.025
25 38.4615 33 0.033
26 40 24 0.024
27 41.5385 32 0.032
28 43.0769 28 0.028
29 44.6154 27 0.027
30 46.1538 31 0.031
31 47.6923 30 0.03
32 49.2308 23 0.023
33 50.7692 21 0.021
34 52.3077 12 0.012
35 53.8462 31 0.031
36 55.3846 27 0.027
37 56.9231 19 0.019
38 58.4615 21 0.021
39 60 18 0.018
40 61.5385 18 0.018
41 63.0769 13 0.013
42 64.6154 12 0.012
43 66.1538 8 0.008
44 67.6923 15 0.015
20 30.7692 41 0.041
21 32.3077 23 0.023
22 33.8462 27 0.027
23 35.3846 26 0.026
24 36.9231 29 0.029
25 38.4615 34 0.034
26 40 35 0.035
27 41.5385 28 0.028
28 43.0769 35 0.035
29 44.6154 39 0.039
30 46.1538 27 0.027
31 47.6923 27 0.027
32 49.2308 21 0.021
33 50.7692 23 0.023
34 52.3077 15 0.015
35 53.8462 16 0.016
36 55.3846 23 0.023
37 56.9231 20 0.02
38 58.4615 10 0.01
39 60 21 0.021
40 61.5385 15 0.015
41 63.0769 14 0.014
42 64.6154 16 0.016
43 66.1538 16 0.016
44 67.6923 16 0.016
45 69.2308 12 0.012
46 70.7692 16 0.016
47 72.3077 13 0.013
48 73.8462 15 0.015
49 75.3846 8 0.008
50 76.9231 8 0.008
51 78.4615 7 0.007
52 80 11 0.011
53 81.5385 13 0.013
46 70.7692 17 0.017
47 72.3077 9 0.009
48 73.8462 13 0.013
49 75.3846 13 0.013
50 76.9231 4 0.004
51 78.4615 5 0.005
52 80 6 0.006
53 81.5385 9 0.009
54 83.0769 6 0.006
55 84.6154 4 0.004
56 86.1538 10 0.01
55 84.6154 6 0.006
56 86.1538 9 0.009
57 87.6923 4 0.004
58 89.2308 0 0
59 90.7692 5 0.005
60 92.3077 5 0.005
61 93.8462 5 0.005
62 95.3846 2 0.002
63 96.9231 1 0.001
64 98.4615 2 0.002
58 89.2308 4 0.004
59 90.7692 1 0.001
60 92.3077 2 0.002
61 93.8462 3 0.003
62 95.3846 3 0.003
63 96.9231 4 0.004
64 98.4615 3 0.003
Emp = 0.0338462 width= 0.0415385 MeV
Emp = 0.0307692 width= 0.0384615 MeV
ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer.
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1693453792, 80564918
Current couple of seeds = 1107565906, 1849160895
----------------------------------------
========= Table of registered couples ==============================
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -131,32 +131,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -165,24 +168,29 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -190,13 +198,15 @@ ionIoni: tables are built for GenericIon
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -238,20 +248,23 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -289,7 +302,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 20000
User=159.75s Real=271.78s Sys=47.23s
User=322.06s Real=702.43s Sys=129.03s
======================== run summary ======================
@@ -297,20 +310,20 @@ Run Summary
============================================================
Total Energy deposited = 451.298 keV +- 102.255 keV
Total Energy deposited = 448.957 keV +- 104.060 keV
Track length of primary track = 867.560 um +- 185.114 um
Track length of primary track = 872.644 um +- 187.763 um
Range from EmCalculator = 937.365 um (from full dE/dx)
Projected range = 337.244 um +- 204.936 um
Projected range = 339.833 um +- 206.808 um
Nb of steps of primary track = 87.27 +- 18.50 Step size= 9.932 um +- 94.328 nm
Nb of steps of primary track = 87.79 +- 18.76 Step size= 9.932 um +- 91.913 nm
absorbed = 79.29 % transmit = 5.07 % reflected = 15.64 %
absorbed = 78.31 % transmit = 5.38 % reflected = 16.30 %
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 249103066, 419417247
Current couple of seeds = 1541586117, 1104020368
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -1,4 +1,4 @@
$Id: History,v 1.11 2006/10/25 17:27:02 maire Exp $
$Id: History,v 1.13 2007/04/27 10:38:11 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,7 +14,12 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
27-04-07 mma (testem12-V08-02-01)
- HistoManager : by default, get csdaRange from G4EmCalculator
08-01-07 V.Ivant (testem12-V08-02-00)
- Uncomment hadron ionisation in Livermore builder
24-10-06 mma (testem12-V08-01-00)
- GNUmakefile : LOADLIBS
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -133,32 +133,35 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -167,24 +170,29 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -192,13 +200,15 @@ ionIoni: tables are built for GenericIon
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -240,20 +250,23 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 1 GeV in 70 bins.
@@ -307,7 +320,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10000
User=639.23s Real=740.01s Sys=43.11s
User=1204.52s Real=1426.72s Sys=112.39s
======================== run summary ======================
@@ -315,18 +328,18 @@ Run Summary
============================================================
Total Energy deposited = 3.937 MeV +- 222.512 keV
Total Energy deposited = 3.937 MeV +- 227.712 keV
Track length of primary track = 2.020 cm +- 2.729 mm
Track length of primary track = 2.012 cm +- 2.787 mm
Range from EmCalculator = 2.021 cm (from full dE/dx)
Projected range = 1.315 cm +- 4.420 mm
Projected range = 1.314 cm +- 4.323 mm
Nb of steps of primary track = 238.75 +- 30.39 Step size= 84.595 um +- 4.546 um
Nb of steps of primary track = 238.10 +- 30.94 Step size= 84.472 um +- 4.581 um
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1061622923, 978064961
Current couple of seeds = 1876977844, 634096150
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HistoManager.hh,v 1.3 2006/06/29 16:42:10 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: HistoManager.hh,v 1.4 2007/04/27 10:38:11 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -58,7 +58,7 @@ class HistoManager
void SetFileName (const G4String& name) { fileName[0] = name;};
void SetFileType (const G4String& name) { fileType = name;};
void SetFileOption (const G4String& name) { fileOption = name;};
void book();
void book(G4double);
void save();
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.hh,v 1.3 2006/06/29 16:42:47 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: RunAction.hh,v 1.4 2007/04/27 10:38:11 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -59,7 +59,8 @@ class RunAction : public G4UserRunAction
void AddProjRange (G4double x) { projRange += x; projRange2 += x*x;};
void AddStepSize (G4int nb, G4double s)
{ nbOfSteps += nb; nbOfSteps2 += nb*nb;
stepSize += s ; stepSize2 += s*s; };
stepSize += s ; stepSize2 += s*s; };
private:
DetectorConstruction* detector;
@@ -72,6 +73,8 @@ class RunAction : public G4UserRunAction
G4double projRange, projRange2;
G4int nbOfSteps, nbOfSteps2;
G4double stepSize, stepSize2;
G4double csdaRange;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,4 +1,4 @@
# $Id: run01.mac,v 1.5 2006/10/25 17:27:02 maire Exp $
# $Id: run01.mac,v 1.6 2007/04/27 10:38:11 maire Exp $
#
# limit the step size from histos 1 and 8
#
@@ -21,7 +21,7 @@
/testem/histo/setFileName run01
/testem/histo/setHisto 1 120 0. 2.4 cm #edep profile
/testem/histo/setHisto 3 100 0. 3. cm #true track length
/testem/histo/setcsdaRange 2.037 cm
###/testem/histo/setcsdaRange 2.037 cm
/testem/histo/setHisto 8 120 0. 1.2 none #normalized edep profile
#
/testem/applyStepMax true
@@ -1,4 +1,4 @@
# $Id: run02.mac,v 1.4 2006/10/25 17:27:02 maire Exp $
# $Id: run02.mac,v 1.5 2007/04/27 10:38:11 maire Exp $
#
# limit the step size by geometry
#
@@ -22,7 +22,7 @@
/testem/histo/setFileName run02
/testem/histo/setHisto 1 120 0. 2.4 cm #edep profile
/testem/histo/setHisto 3 100 0. 3. cm #true track length
/testem/histo/setcsdaRange 2.037 cm
###/testem/histo/setcsdaRange 2.037 cm
/testem/histo/setHisto 8 120 0. 1.2 none #normalized edep profile
#
/testem/applyStepMax false
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: HistoManager.cc,v 1.3 2006/06/29 16:43:09 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: HistoManager.cc,v 1.4 2007/04/27 10:38:11 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -65,7 +65,7 @@ HistoManager::HistoManager()
histoMessenger = new HistoMessenger(this);
csdaRange = 1*mm;
csdaRange = 0.;
stepMax = DBL_MAX;
}
@@ -82,7 +82,7 @@ HistoManager::~HistoManager()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::book()
void HistoManager::book(G4double range)
{
#ifdef G4ANALYSIS_USE
if(!af) return;
@@ -121,6 +121,8 @@ void HistoManager::book()
if (factoryOn)
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
#endif
if (csdaRange == 0.) csdaRange = range;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -209,7 +211,7 @@ void HistoManager::SetHisto(G4int ih,
G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl;
}
if (ih == 8) {
if ((ih == 8)&&(csdaRange>0.)) {
stepMax = std::min(stepMax,frac*Width[ih]*csdaRange);
G4cout << " stepMax = " << G4BestUnit(stepMax,"Length") << G4endl;
}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: PhysListEmLivermore.cc,v 1.2 2006/06/29 16:43:19 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: PhysListEmLivermore.cc,v 1.3 2007/01/08 16:33:52 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -108,8 +108,8 @@ void PhysListEmLivermore::ConstructProcess()
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
///pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
///pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 2, 2);
}
}
}
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.cc,v 1.6 2006/06/29 16:43:36 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: RunAction.cc,v 1.7 2007/04/27 10:38:11 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -81,15 +81,26 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
//initialize mean step size
//
nbOfSteps = nbOfSteps2 = 0; stepSize = stepSize2 = 0.;
//get csdaRange from EmCalculator
//
G4EmCalculator emCalculator;
G4Material* material = detector->GetAbsorMaterial();
G4ParticleDefinition* particle = kinematic->GetParticleGun()
->GetParticleDefinition();
G4double energy = kinematic->GetParticleGun()->GetParticleEnergy();
csdaRange = 0.;
if (particle->GetPDGCharge() != 0.)
csdaRange = emCalculator.GetCSDARange(energy,particle,material);
//histograms
//
histoManager->book();
histoManager->book(csdaRange);
//set StepMax from histos
//
G4double stepMax = histoManager->GetStepMax();
physics->GetStepMaxProcess()->SetMaxStep(stepMax);
physics->GetStepMaxProcess()->SetMaxStep(stepMax);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -150,10 +161,10 @@ void RunAction::EndOfRunAction(const G4Run* aRun)
//compare with csda range
//
G4EmCalculator emCalculator;
G4double csdaRange = 0.;
if (particle->GetPDGCharge() != 0.)
csdaRange = emCalculator.GetCSDARange(energy,particle,material);
//G4EmCalculator emCalculator;
//G4double csdaRange = 0.;
//if (particle->GetPDGCharge() != 0.)
// csdaRange = emCalculator.GetCSDARange(energy,particle,material);
G4cout
<< "\n Range from EmCalculator = " << G4BestUnit(csdaRange,"Length")
<< " (from full dE/dx)" << G4endl;
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.cc,v 1.3 2006/06/29 16:43:43 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: SteppingAction.cc,v 1.4 2007/04/27 10:38:11 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -70,7 +70,7 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
histoManager->FillHisto(1, r, edep);
G4double r0 = histoManager->GetcsdaRange();
histoManager->FillHisto(8, r/r0, edep);
if (r0 > 0.) histoManager->FillHisto(8, r/r0, edep);
//step size of primary particle or charged secondaries
//
@@ -1,4 +1,4 @@
$Id: History,v 1.12 2006/10/24 16:04:30 maire Exp $
$Id: History,v 1.13 2007/04/06 16:00:50 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,9 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
06-04-07 mma (testem13-V08-02-00)
- vis.mac : suppress the command drawTracks
24-10-06 mma (testem13-V08-01-00)
- GNUmakefile : LOADLIBS
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -128,25 +128,27 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -156,23 +158,27 @@ annihil: Sampling according eplus2gg model
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
muIoni: tables are built for mu+
@@ -212,15 +218,17 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
@@ -273,7 +281,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100000
User=21.14s Real=21.18s Sys=0s
User=29.7s Real=29.73s Sys=0.01s
The run consists of 100000 gamma of 100 keV through 1 cm of Water (density: 1 g/cm3 )
@@ -340,7 +348,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100000
User=22.03s Real=22.06s Sys=0s
User=32.06s Real=32.07s Sys=0s
The run consists of 100000 e- of 100 MeV through 1 cm of Water (density: 1 g/cm3 )
@@ -27,6 +27,3 @@
# if too many tracks cause core dump => storeTrajectory 0
/tracking/storeTrajectory 1
/vis/scene/endOfEventAction accumulate
#
/testem/event/drawTracks
@@ -1,4 +1,4 @@
$Id: History,v 1.8 2006/10/24 16:54:16 maire Exp $
$Id: History,v 1.9 2007/04/06 16:07:53 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,9 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
06-04-07 mma (testem14-V08-02-00)
- vis.mac : suppress command drawTracks
24-10-06 mma (testem14-V08-01-01)
- GNUmakefile : LOADLIBS
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -129,25 +129,27 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
@@ -157,23 +159,27 @@ annihil: Sampling according eplus2gg model
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
muIoni: tables are built for mu+
@@ -213,15 +219,17 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
@@ -274,7 +282,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100000
User=23s Real=23s Sys=0s
User=33s Real=33s Sys=0s
The run consists of 100000 gamma of 100 keV through 100 m of Water (density: 1 g/cm3 )
@@ -343,7 +351,7 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 100000
User=23s Real=23s Sys=0s
User=34s Real=34s Sys=0s
The run consists of 100000 e- of 100 MeV through 100 m of Water (density: 1 g/cm3 )
@@ -1,5 +1,5 @@
#
# Macro file for the initialization phase of "TestEm13.cc"
# Macro file for the initialization phase of "TestEm14.cc"
#
# Sets some default verbose
# and initializes the graphic.
@@ -27,6 +27,3 @@
# if too many tracks cause core dump => storeTrajectory 0
/tracking/storeTrajectory 1
/vis/scene/endOfEventAction accumulate
#
/testem/event/drawTracks
@@ -1,4 +1,4 @@
$Id: History,v 1.7 2006/10/24 10:28:10 maire Exp $
$Id: History,v 1.8 2007/03/15 15:52:39 maire Exp $
-------------------------------------------------------------------
=========================================================
@@ -15,6 +15,9 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
15-03-07 mma (testem15-V08-02-00)
- SteppingAction: add protection if no lateralDisplacement
24-10-06 mma (testem15-V08-01-00)
- GNUmakefile : LOADLIBS
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -135,29 +135,32 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
@@ -167,35 +170,42 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for proton
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
msc: Model variant of multiple scattering for GenericIon
LateralDisplacementFlag= 0 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for alpha particles below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 2 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -235,19 +245,22 @@ muPairProd: tables are built for mu-
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
msc: Model variant of multiple scattering for pi-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Scaling relation is used to proton dE/dx and range
Bether-Bloch model for Escaled > 0.297504 MeV, ICRU49 parametrisation for protons below.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 1, integral: 0
Region <DefaultRegionForTheWorld> -- appears in <World> world volume
@@ -289,31 +302,31 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10000
User=3.4s Real=3.4s Sys=0s
User=5.6s Real=5.6s Sys=0s
The run consists of 10000 e- of 5 MeV through 100 m of Water (density: 1 g/cm3 )
Process calls frequency ---> msc = 10000
truePathLength : 2.6311 cm +- 2.4801 mm
geomPathLength : 2.0081 cm +- 1.3007 mm
lateralDisplac : 1.1355 cm +- 1.1044 mm
Psi : 513.82 mrad +- 28.091 mrad (29.44 deg +- 1.6095 deg)
truePathLength : 2.7521 cm +- 3.269 nm
geomPathLength : 2.0696 cm +- 11.392 nm
lateralDisplac : 1.1482 cm +- 9.6993 nm
Psi : 506.49 mrad +- 0.00036931 mrad (29.02 deg +- 2.116e-05 deg)
Theta_plane : 1678.5 mrad (96.168 deg)
phi correlation: 0.28825 +- 0.17735 (std::cos(phi_pos - phi_dir))
Theta_plane : 1818.2 mrad (104.18 deg)
phi correlation: 0.26267 +- 0.058466 (std::cos(phi_pos - phi_dir))
Verification from G4EmCalculator.
transport mean free path : 8.346 cm
range from restrict dE/dx: 2.7521 cm
---> effective facRange : 0.31526
---> effective facRange : 1
compute theta0 from Highland : 605.2 mrad (34.676 deg)
compute theta0 from Highland : 620.13 mrad (35.531 deg)
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 178521571, 539724907
Current couple of seeds = 1055489048, 167744914
----------------------------------------
#
/gun/energy 100 keV
@@ -345,7 +358,7 @@ Index : 1 used in the geometry : Yes recalculation needed : No
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 178521571, 539724907
Current couple of seeds = 1055489048, 167744914
----------------------------------------
Start Run processing.
@@ -353,31 +366,31 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10000
User=3.3s Real=3.3s Sys=0s
User=5.4s Real=5.4s Sys=0s
The run consists of 10000 e- of 100 keV through 100 m of Water (density: 1 g/cm3 )
Process calls frequency ---> msc = 10000
truePathLength : 6.3049 um +- 1.816 um
geomPathLength : 6.1688 um +- 1.7433 um
lateralDisplac : 958.03 nm +- 400.61 nm
Psi : 147.6 mrad +- 22.686 mrad (8.4567 deg +- 1.2998 deg)
truePathLength : 6.3051 um +- 5404.2 fm
geomPathLength : 6.1807 um +- 878.92 fm
lateralDisplac : 923.68 nm +- 256.83 fm
Psi : 148.35 mrad +- 8.7703e-05 mrad (8.4998 deg +- 5.025e-06 deg)
Theta_plane : 240.59 mrad (13.785 deg)
phi correlation: 0.087898 +- 0.13241 (std::cos(phi_pos - phi_dir))
Theta_plane : 241.37 mrad (13.83 deg)
phi correlation: 0.090798 +- 0.13131 (std::cos(phi_pos - phi_dir))
Verification from G4EmCalculator.
transport mean free path : 157.63 um
range from restrict dE/dx: 143.16 um
---> effective facRange : 0.039999
---> effective facRange : 0.04
compute theta0 from Highland : 180.68 mrad (10.352 deg)
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 382949488, 373885619
Current couple of seeds = 647930445, 779579682
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.cc,v 1.5 2006/06/29 16:47:20 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: SteppingAction.cc,v 1.6 2007/03/15 15:52:39 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -106,8 +106,10 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
histoManager->FillHisto(7,phiPos);
G4double phiDir = std::atan2(zdir, ydir);
histoManager->FillHisto(8,phiDir);
G4double phiCorrel = (yend*ydir + zend*zdir)/lateralDisplacement;
G4double phiCorrel = 0.;
if (lateralDisplacement > 0.)
phiCorrel = (yend*ydir + zend*zdir)/lateralDisplacement;
runAction->SumPhiCorrel(phiCorrel);
histoManager->FillHisto(9,phiCorrel);
}
@@ -27,6 +27,4 @@
# if too many tracks cause core dump => storeTrajectory 0
/tracking/storeTrajectory 1
/vis/scene/endOfEventAction accumulate
#
/testem/event/drawTracks
@@ -1,4 +1,4 @@
# $Id: GNUmakefile,v 1.3 2006/10/24 10:14:46 maire Exp $
# $Id: GNUmakefile,v 1.5 2007/01/18 10:24:35 vnivanch Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
@@ -24,17 +24,15 @@ include $(G4INSTALL)/config/architecture.gmk
ifdef G4ANALYSIS_USE
# add -v to see what is going on.
# add RunAction.o such that the linker finds AIDA_createAnalysisFactory
# for the aida-config command see the README file
CPPFLAGS += `aida-config --include`
LOADLIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/TestEm16/RunAction.o `aida-config --lib`
LOADLIBS += `aida-config --lib`
endif
include $(G4INSTALL)/config/binmake.gmk
histclean:
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/RunAction.o
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SteppingAction.o
rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/HistoManager.o
visclean:
rm -f g4*.prim g4*.eps g4*.wrl
@@ -1,4 +1,4 @@
$Id: History,v 1.5 2006/10/24 10:14:46 maire Exp $
$Id: History,v 1.6 2007/01/18 10:24:35 vnivanch Exp $
-------------------------------------------------------------------
=========================================================
@@ -14,6 +14,11 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
18-01-07 V.Ivant (testem16-V08-02-00)
- GNUmakefile - minor fix
- HistoManager and HistoMessenger added (H.Burkhardt)
- Command to modify upper step limit is added (H.Burkhardt)
24-10-06 mma (testem16-V08-01-00)
- GNUmakefile : LOADLIBS
@@ -1,4 +1,4 @@
$Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
$Id: README,v 1.3 2007/01/18 09:07:20 hbu Exp $
-------------------------------------------------------------------
=========================================================
@@ -19,11 +19,11 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
The default is 500 m of vacuum.
A transverse uniform magnetic field can be applied.
The default geometry is constructed in DetectorConstruction class,
but all of the above parameters can be changed interactively via
the commands defined in the DetectorMessenger class.
2- PHYSICS LIST
The particle list is the one of novice/exampleN03 and TestEm6
@@ -31,7 +31,7 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
To make the synchrotron radiation easily visible, a very low
pressure "vaccuum" and a magnetic field of by default 1 Tesla
in z-direction is used.
3- AN EVENT : THE PRIMARY GENERATOR
The primary kinematic consists of a single particle which hits the
@@ -54,9 +54,9 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
The initialisation of the drawing is done via the command
> /control/execute vis.mac
> /run/beamOn 1
The detector has a default view which is a longitudinal view of the box.
The tracks are drawn at the end of event, and erased at the end of run.
Optionaly one can choose to draw all particles, only the charged one,
or none. This command is defined in EventActionMessenger class.
@@ -81,10 +81,10 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
- compile and link to generate an executable
% cd geant4/examples/extended/electromagnetic/TestEm16
% make
- execute Test in 'batch' mode from macro files
% TestEm16 run01.mac
- execute Test in 'interactive mode' with visualization
% TestEm16
....
@@ -92,7 +92,19 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
....
Idle> exit
7- HISTOGRAMS
7 - TRACKING : stepMax and setMaxStepLength
In order to control the accuracy of the deposition, the user can limit
'by hand' the maximum step size stepMax of charged particles.
The maximum tracking step length for computing of magnetic field lines
is by default set to 1 km.
Synchrotron radiation in very weak magnetic fields of the order of 1 Gauss
may require longer pathlength.
This can be achieved with using setMaxStepLength like
/testem/tracking/setMaxStepLength 100 km
8- HISTOGRAMS
TestEm16 produces 3 histograms which illustrate synchrotron radiation.
The photon energy spectrum (photons / energy bin) and the power spectrum
@@ -108,5 +120,5 @@ $Id: README,v 1.2 2006/05/24 12:58:49 maire Exp $
make
By default the histograms are saved as testem16.hbook
It is possible to choose the format of the histogram file (hbook, root, XML):
comment/uncomment 1 line in the constructor of RunAction.
It is possible to choose the format of the histogram file (hbook, root, XML)
and the binning using /testem/histo/ command, see run01.mac
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: TestEm16.cc,v 1.2 2006/06/29 16:47:24 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: TestEm16.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -43,6 +43,7 @@
#include "RunAction.hh"
#include "EventAction.hh"
#include "SteppingAction.hh"
#include "HistoManager.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
@@ -73,12 +74,14 @@ int main(int argc,char** argv) {
visManager->Initialize();
#endif
//set user action classes
RunAction* RunAct;
HistoManager* histo = new HistoManager();
runManager->SetUserAction(RunAct = new RunAction);
//set user action classes
RunAction* RunAct;
runManager->SetUserAction(RunAct = new RunAction(histo));
runManager->SetUserAction(new EventAction);
runManager->SetUserAction(new SteppingAction(RunAct));
runManager->SetUserAction(new SteppingAction(RunAct,histo));
//get the pointer to the User Interface manager
G4UImanager* UI = G4UImanager::GetUIpointer();
@@ -1,4 +1,4 @@
# $Id: TestEm16.in,v 1.3 2006/05/24 12:58:49 maire Exp $
# $Id: TestEm16.in,v 1.4 2007/01/18 09:07:20 hbu Exp $
#
# Macro file for "TestEm16.cc"
# (can be run in batch, without graphic)
@@ -20,7 +20,7 @@
/process/inactivate compt
/process/inactivate conv
#
/testem/det/setField 0.1 tesla
/testem/det/setField 1.0 tesla
#
/gun/particle e-
/gun/energy 9.9994890009 GeV
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -53,7 +53,6 @@ Registered filter factories:
originVolumeFilter
attributeFilter
G4ANALYSIS_USE was not set, there will be no AIDA histos
/run/verbose 2
#
/testem/det/setMat Vacuum
@@ -84,7 +83,7 @@ CutLength : 1 km
/process/inactivate conv
/run/physicsModified
#
/testem/det/setField 0.1 tesla
/testem/det/setField 1.0 tesla
#
/gun/particle e-
/gun/energy 9.9994890009 GeV
@@ -110,17 +109,19 @@ conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV f
msc: Model variant of multiple scattering for e-
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
@@ -130,12 +131,13 @@ SynRad: Incoherent Synchrotron Radiation
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Delta cross sections from Moller+Bhabha, good description from 1 KeV to 100 GeV.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 120 bins.
Lambda tables from threshold to 100 TeV in 120 bins.
Total cross sections from a parametrisation based on the EEDL data library.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
@@ -145,6 +147,7 @@ annihil: Sampling according eplus2gg model
msc: Model variant of multiple scattering for mu+
Lambda tables from 100 eV to 100 TeV in 120 bins.
LateralDisplacementFlag= 1 Skin= 0
Boundary/stepping algorithm is active with facrange= 0.02 Step limitation 1
muIoni: tables are built for mu+
@@ -207,29 +210,30 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
Initial seed (index) = 0
Current couple of seeds = 9876, 54321
----------------------------------------
G4ANALYSIS_USE was not set, there will be no AIDA histos
Start Run processing.
---> Begin of Event: 0
G4SynchrotronRadiation::GetMeanFreePath :
MeanFreePath = 1.618 m
MeanFreePath = 16.18 cm
G4SynchrotronRadiation::GetRandomEnergySR :
Ecr = 6.65 keV
Emean = 2.048 keV
E_rms = 3.718 keV
Ecr = 66.5 keV
Emean = 20.48 keV
E_rms = 37.18 keV
Run terminated.
Run Summary
Number of events processed : 100
User=6.38s Real=7.26s Sys=0.03s
User=28.64s Real=29.93s Sys=0.08s
Summary for synchrotron radiation :
Number of photons = 27201
Emean = 2.016 +/- 0.02196 keV
E_rms = 3.621 keV
Energy Max / Mean = 24.16
MeanFreePath = 1.609 m
Number of photons = 64554
Emean = 20.24 +/- 0.1449 keV
E_rms = 36.82 keV
Energy Max / Mean = 29.54
MeanFreePath = 16.2 cm
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 818335740, 669122331
Current couple of seeds = 1554742231, 6856043
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorConstruction.hh,v 1.3 2006/06/29 16:47:26 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: DetectorConstruction.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -57,6 +57,7 @@ class DetectorConstruction : public G4VUserDetectorConstruction
void SetMaterial (G4String);
void SetMagField (G4double);
void SetMaxStepSize (G4double);
void SetMaxStepLength (G4double);
void UpdateGeometry();
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.hh,v 1.3 2006/06/29 16:47:28 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: DetectorMessenger.hh,v 1.4 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -58,14 +58,15 @@ private:
G4UIdirectory* testemDir;
G4UIdirectory* detDir;
G4UIdirectory* trackdir;
G4UIcmdWithAString* MaterCmd;
G4UIcmdWithADoubleAndUnit* SizeCmd;
G4UIcmdWithADoubleAndUnit* MagFieldCmd;
G4UIcmdWithADoubleAndUnit* MaxStepCmd;
G4UIcmdWithADoubleAndUnit* MaxStepLength;
G4UIcmdWithoutParameter* UpdateCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,91 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoManager_h
#define HistoManager_h 1
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace AIDA {
class IAnalysisFactory;
class ITree;
class IHistogram1D;
}
class HistoMessenger;
const G4int MaxHisto = 4;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager
{
public:
HistoManager();
~HistoManager();
void SetFileName (const G4String& name) { fileName[0] = name;};
void SetFileType (const G4String& name) { fileType = name;};
void SetFileOption (const G4String& name) { fileOption = name;};
void book();
void save();
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
void RemoveHisto (G4int);
G4bool HistoExist (G4int id) {return exist[id];}
G4double GetHistoUnit(G4int id) {return Unit[id];}
G4double GetBinWidth (G4int id) {return Width[id];}
private:
G4String fileName[2];
G4String fileType;
G4String fileOption;
AIDA::IAnalysisFactory* af;
AIDA::ITree* tree;
AIDA::IHistogram1D* histo[MaxHisto];
G4bool exist[MaxHisto];
G4String Label[MaxHisto];
G4String Title[MaxHisto];
G4int Nbins[MaxHisto];
G4double Vmin [MaxHisto];
G4double Vmax [MaxHisto];
G4double Unit [MaxHisto];
G4double Width[MaxHisto];
G4bool factoryOn;
HistoMessenger* histoMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoMessenger_h
#define HistoMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager;
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoMessenger: public G4UImessenger
{
public:
HistoMessenger(HistoManager* );
~HistoMessenger();
void SetNewValue(G4UIcommand* ,G4String );
private:
HistoManager* histoManager;
G4UIdirectory* histoDir;
G4UIcmdWithAString* factoryCmd;
G4UIcmdWithAString* typeCmd;
G4UIcmdWithAString* optionCmd;
G4UIcommand* histoCmd;
G4UIcmdWithAnInteger* rmhistoCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.hh,v 1.4 2006/06/29 16:47:42 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: RunAction.hh,v 1.5 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -35,43 +35,31 @@
#include "G4UserRunAction.hh"
#include "globals.hh"
const int n_histos = 3;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4Run;
namespace AIDA {
class IAnalysisFactory;
class ITree;
class IHistogram1D;
}
class HistoManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunAction : public G4UserRunAction
{
public:
RunAction();
RunAction(HistoManager*);
~RunAction();
public:
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
AIDA::IHistogram1D* GetHisto(G4int id) {return histo[id];}
G4int n_gam_sync; // number of synchrotron radiation photons generated
G4double e_gam_sync, e_gam_sync2, e_gam_sync_max; // energy of synchrotron radiation photons generated
G4double lam_gam_sync; // step length between synchrotron radiation photons
private:
AIDA::IAnalysisFactory* af;
AIDA::ITree* tree;
AIDA::IHistogram1D* histo[n_histos]; // 3 histograms
HistoManager* histoManager;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.hh,v 1.2 2006/06/29 16:47:44 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: SteppingAction.hh,v 1.3 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -36,20 +36,21 @@
#include "globals.hh"
class RunAction;
class HistoManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction(RunAction*);
SteppingAction(RunAction*, HistoManager*);
~SteppingAction();
void UserSteppingAction(const G4Step*);
private:
RunAction* runAction;
G4double muonMass;
HistoManager* histoManager;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,4 +1,4 @@
# $Id: run01.mac,v 1.3 2006/05/24 12:58:49 maire Exp $
# $Id: run01.mac,v 1.4 2007/01/18 09:07:20 hbu Exp $
#
# Macro file for "TestEm16.cc"
# (can be run in batch, without graphic)
@@ -6,20 +6,34 @@
#
/control/verbose 2
/run/verbose 2
/testem/det/setMat Vacuum
#
/testem/det/setMat Vacuum
#
/run/initialize
#
# /process/activate SynchrotronRadiation
#
# inactivate other processes to make SynchrotronRadiation more visible
/process/inactivate msc
/process/inactivate eIoni
/process/inactivate eBrem
/process/inactivate annihil
/process/inactivate phot
/process/inactivate compt
/process/inactivate conv
#
/testem/det/setField 1 tesla
#
/gun/particle e-
/gun/energy 9.9994890009 GeV
# set up histos. A reasonable choice for the upper limits is about 5*Ecr and 10*MeanFreePath
/testem/histo/setHisto 1 100 0 400 keV #SynRad Energy
/testem/histo/setHisto 2 100 0 400 keV #SynRad Power
/testem/histo/setHisto 3 100 0 1.6 m #Path Length
/testem/histo/setFileName testem16
/testem/histo/setFileType hbook
#
# next would be 30 degree angle sin 30deg = 0.5 cos 30 deg = 0.866025403
#/gun/direction 0.5 0 0.866025403
#
/run/beamOn 1000
@@ -0,0 +1,38 @@
#
# Macro file for "TestEm16.cc"
# (can be run in batch, without graphic)
#
#
/control/verbose 2
/run/verbose 2
/run/initialize
#
# /process/activate SynchrotronRadiation
#
# inactivate other processes to make SynchrotronRadiation more visible
/process/inactivate msc
/process/inactivate eIoni
/process/inactivate eBrem
/process/inactivate annihil
/process/inactivate phot
/process/inactivate compt
/process/inactivate conv
#
/gun/particle e-
/gun/energy 10 TeV
#
# set up histos. A reasonable choice for the upper limits is about 5*Ecr and 10*MeanFreePath
/testem/histo/setHisto 1 100 0 20 MeV #SynRad Energy
/testem/histo/setHisto 2 100 0 20 MeV #SynRad Power
/testem/histo/setHisto 3 100 0 32 km #Path Length
/testem/histo/setFileName testem16_run02
/testem/histo/setFileType hbook
#
/testem/det/setSize 200 km
/testem/det/setMat Vacuum
/testem/det/update
# very weak magnetic field, increase step length
/testem/det/setField 0.5 gauss
/testem/tracking/setMaxStepLength 100 km
#
/run/beamOn 1000
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorConstruction.cc,v 1.3 2006/06/29 16:47:48 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: DetectorConstruction.cc,v 1.4 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -37,6 +37,7 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4UniformMagField.hh"
#include "G4PropagatorInField.hh"
#include "G4UserLimits.hh"
#include "G4GeometryManager.hh"
@@ -194,6 +195,23 @@ void DetectorConstruction::SetMaxStepSize(G4double val)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::SetMaxStepLength(G4double val)
{
// set the maximum length of tracking step
//
if (val <= DBL_MIN)
{ G4cout << "\n --->warning from SetMaxStepLength: maxStep "
<< val << " out of range. Command refused" << G4endl;
return;
}
G4TransportationManager* tmanager =
G4TransportationManager::GetTransportationManager();
tmanager->GetPropagatorInField()
->SetLargestAcceptableStep(val);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4RunManager.hh"
void DetectorConstruction::UpdateGeometry()
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:47:50 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: DetectorMessenger.cc,v 1.3 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -79,6 +79,16 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
MaxStepCmd->SetRange("Size>0.");
MaxStepCmd->SetUnitCategory("Length");
MaxStepCmd->AvailableForStates(G4State_Idle);
trackdir = new G4UIdirectory("/testem/tracking/");
trackdir->SetGuidance("step length");
MaxStepLength = new G4UIcmdWithADoubleAndUnit("/testem/tracking/setMaxStepLength",this);
MaxStepLength->SetGuidance("Set the maximum length of tracking step");
MaxStepLength->SetGuidance("when integrating magnetic field line.");
MaxStepLength->SetParameterName("Size",false);
MaxStepLength->SetRange("Size>0.");
MaxStepLength->SetUnitCategory("Length");
MaxStepLength->AvailableForStates(G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -90,8 +100,10 @@ DetectorMessenger::~DetectorMessenger()
delete MagFieldCmd;
delete UpdateCmd;
delete MaxStepCmd;
delete MaxStepLength;
delete detDir;
delete testemDir;
delete trackdir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -112,6 +124,9 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
if( command == MaxStepCmd )
{ Detector->SetMaxStepSize(MaxStepCmd->GetNewDoubleValue(newValue));}
if( command == MaxStepLength )
{ Detector->SetMaxStepLength(MaxStepLength->GetNewDoubleValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,218 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "HistoManager.hh"
#include "HistoMessenger.hh"
#include "G4UnitsTable.hh"
#ifdef G4ANALYSIS_USE
#include "AIDA/AIDA.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoManager::HistoManager()
:af(0),tree(0),factoryOn(false)
{
#ifdef G4ANALYSIS_USE
// Creating the analysis factory
af = AIDA_createAnalysisFactory();
if(!af) {
G4cout << " HistoManager::HistoManager() :"
<< " problem creating the AIDA analysis factory."
<< G4endl;
}
#endif
fileName[0] = "testem16";
fileType = "hbook";
fileOption = "--noErrors uncompress";
// histograms
for (G4int k=0; k<MaxHisto; k++) {
histo[k] = 0;
exist[k] = false;
Unit[k] = 1.0;
Width[k] = 1.0;
}
histoMessenger = new HistoMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoManager::~HistoManager()
{
delete histoMessenger;
#ifdef G4ANALYSIS_USE
delete af;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::book()
{
#ifdef G4ANALYSIS_USE
if(!af) {
G4cout << "HistoManager::book: WARNING AnalysisFactory is not created,"
<< " there will be no AIDA histos" << G4endl;
return;
}
G4cout << "\n----> Book AIDA histograms "<< G4endl;
// Creating a tree mapped to an hbook file.
fileName[1] = fileName[0] + "." + fileType;
G4bool readOnly = false;
G4bool createNew = true;
AIDA::ITreeFactory* tf = af->createTreeFactory();
tree = tf->create(fileName[1], fileType, readOnly, createNew, fileOption);
delete tf;
if(!tree) {
G4cout << "HistoManager::book() :"
<< " problem creating the AIDA tree with "
<< " storeName = " << fileName[1]
<< " storeType = " << fileType
<< " readOnly = " << readOnly
<< " createNew = " << createNew
<< " options = " << fileOption
<< G4endl;
return;
}
// Creating a histogram factory, whose histograms will be handled by the tree
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
// create selected histograms
for (G4int k=0; k<MaxHisto; k++) {
if (exist[k]) {
histo[k] = hf->createHistogram1D( Label[k], Title[k],
Nbins[k], Vmin[k], Vmax[k]);
factoryOn = true;
}
}
delete hf;
if (factoryOn)
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
#else
G4cout << "G4ANALYSIS_USE was not set, there will be no AIDA histos"
<< G4endl;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::save()
{
#ifdef G4ANALYSIS_USE
if (factoryOn) {
tree->commit(); // Writing the histograms to the file
tree->close(); // and closing the tree (and the file)
G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl;
delete tree;
tree = 0;
factoryOn = false;
}
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::FillHisto(G4int ih, G4double e, G4double weight)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::FillHisto() : histo " << ih
<< "does not exist; e= " << e << " w= " << weight << G4endl;
return;
}
#ifdef G4ANALYSIS_USE
if(exist[ih]) histo[ih]->fill(e/Unit[ih], weight);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::SetHisto(G4int ih,
G4int nbins, G4double valmin, G4double valmax, const G4String& unit)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih
<< "does not exist" << G4endl;
return;
}
const G4String id[] = { "0", "1", "2", "3" };
const G4String title[] =
{ "dummy", //0
"SynRad Energy", //1
"SynRad Power ", //2
"Path Length" //3
};
G4String titl = title[ih];
G4double vmin = valmin, vmax = valmax;
Unit[ih] = 1.;
if (unit != "none") {
titl = title[ih] + " (" + unit + ")";
Unit[ih] = G4UnitDefinition::GetValueOf(unit);
vmin = valmin/Unit[ih]; vmax = valmax/Unit[ih];
}
exist[ih] = true;
Label[ih] = id[ih];
Title[ih] = titl;
Nbins[ih] = nbins;
Vmin[ih] = vmin;
Vmax[ih] = vmax;
Width[ih] = (valmax-valmin)/nbins;
G4cout << "----> SetHisto " << ih << ": " << titl << "; "
<< nbins << " bins from "
<< vmin << " " << unit << " to " << vmax << " " << unit << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::RemoveHisto(G4int ih)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih
<< "does not exist" << G4endl;
return;
}
histo[ih] = 0; exist[ih] = false;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,132 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "HistoMessenger.hh"
#include <sstream>
#include "HistoManager.hh"
#include "G4UIdirectory.hh"
#include "G4UIcommand.hh"
#include "G4UIparameter.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoMessenger::HistoMessenger(HistoManager* manager)
:histoManager (manager)
{
histoDir = new G4UIdirectory("/testem/histo/");
histoDir->SetGuidance("histograms control");
factoryCmd = new G4UIcmdWithAString("/testem/histo/setFileName",this);
factoryCmd->SetGuidance("set name for the histograms file");
typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this);
typeCmd->SetGuidance("set histograms file type: hbook, root, XML");
typeCmd->SetCandidates("hbook root XML");
optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this);
optionCmd->SetGuidance("set option for the histograms file");
histoCmd = new G4UIcommand("/testem/histo/setHisto",this);
histoCmd->SetGuidance("Set bining of the histo number ih :");
histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)");
//
G4UIparameter* ih = new G4UIparameter("ih",'i',false);
ih->SetGuidance("histo number : from 1 to MaxHisto");
ih->SetParameterRange("ih>0");
histoCmd->SetParameter(ih);
//
G4UIparameter* nbBins = new G4UIparameter("nbBins",'i',false);
nbBins->SetGuidance("number of bins");
nbBins->SetParameterRange("nbBins>0");
histoCmd->SetParameter(nbBins);
//
G4UIparameter* valMin = new G4UIparameter("valMin",'d',false);
valMin->SetGuidance("valMin, expressed in unit");
histoCmd->SetParameter(valMin);
//
G4UIparameter* valMax = new G4UIparameter("valMax",'d',false);
valMax->SetGuidance("valMax, expressed in unit");
histoCmd->SetParameter(valMax);
//
G4UIparameter* unit = new G4UIparameter("unit",'s',true);
unit->SetGuidance("if omitted, vmin and vmax are assumed dimensionless");
unit->SetDefaultValue("none");
histoCmd->SetParameter(unit);
rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this);
rmhistoCmd->SetGuidance("desactivate histo #id");
rmhistoCmd->SetParameterName("id",false);
rmhistoCmd->SetRange("id>0");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoMessenger::~HistoMessenger()
{
delete rmhistoCmd;
delete histoCmd;
delete optionCmd;
delete typeCmd;
delete factoryCmd;
delete histoDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
{
if (command == factoryCmd)
histoManager->SetFileName(newValues);
if (command == typeCmd)
histoManager->SetFileType(newValues);
if (command == optionCmd)
histoManager->SetFileOption(newValues);
if (command == histoCmd)
{ G4int ih,nbBins; G4double vmin,vmax; char unts[30];
const char* t = newValues;
std::istringstream is(t);
is >> ih >> nbBins >> vmin >> vmax >> unts;
G4String unit = unts;
G4double vUnit = 1. ;
if (unit != "none") vUnit = G4UIcommand::ValueOf(unit);
histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit);
}
if (command == rmhistoCmd)
histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: RunAction.cc,v 1.6 2006/06/29 16:48:02 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: RunAction.cc,v 1.8 2007/01/18 10:24:35 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -36,82 +36,24 @@
#include "G4UnitsTable.hh"
#include "Randomize.hh"
#ifdef G4ANALYSIS_USE
#include "AIDA/AIDA.h"
#endif
#include "HistoManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction()
:af(0), tree(0)
RunAction::RunAction(HistoManager* histo)
:histoManager(histo)
{
for (G4int j=0; j<n_histos; j++) histo[j] = 0;
n_gam_sync = 0;
e_gam_sync = 0;
e_gam_sync2 = 0;
e_gam_sync_max =0;
lam_gam_sync = 0;
#ifdef G4ANALYSIS_USE
// Creating the analysis factory
af = AIDA_createAnalysisFactory();
if (af) {
// Creating the tree factory
AIDA::ITreeFactory* tf = af->createTreeFactory();
// Creating a tree mapped to an hbook file.
G4bool readOnly = false;
G4bool createNew = true;
G4String options = "--noErrors uncompress";
tree = tf->create("testem16.hbook","hbook",readOnly,createNew,options);
//tree = tf->create("testem16.root", "root",readOnly,createNew,options);
//tree = tf->create("testem16.xml" ,"xml" ,readOnly,createNew,options);
delete tf;
if (tree) {
// Creating a histogram factory
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
// Creating histograms
const G4double Ecr=66.5025;
histo[0] = hf->createHistogram1D("1","SynRad Energy in keV",100, 0 ,5.*Ecr);
histo[1] = hf->createHistogram1D("2","SynRad Power in keV",100, 0 ,5.*Ecr);
histo[2] = hf->createHistogram1D("3","Path Length in m",100, 0, 1.6);
delete hf;
G4cout << "\n----> Histogram tree is opened" << G4endl;
}
}
G4cout << "G4ANALYSIS_USE was set, there will be AIDA histos" << '\n';
#else
G4cout << "G4ANALYSIS_USE was not set, there will be no AIDA histos" << '\n';
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::~RunAction()
{
#ifdef G4ANALYSIS_USE
bool debug=true;
bool Commit_Ok=tree->commit(); // Writing the histograms to the file
if (Commit_Ok)
{ if(debug) G4cout << "tree->commit() ok. Writing of histogram file done"
<< '\n';
}
else if(!Commit_Ok)
{ G4cout << "tree->commit() not successful, no histogram file written"
<< '\n';
}
tree->close(); // and closing the tree (and the file)
delete tree;
delete af;
#endif
}
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -122,6 +64,9 @@ void RunAction::BeginOfRunAction(const G4Run* aRun)
// save Rndm status
G4RunManager::GetRunManager()->SetRandomNumberStore(true);
CLHEP::HepRandom::showEngineStatus();
//book histograms
histoManager->book();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -145,6 +90,10 @@ void RunAction::EndOfRunAction(const G4Run*)
// show Rndm status
CLHEP::HepRandom::showEngineStatus();
//save histograms
histoManager->save();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.cc,v 1.4 2006/06/29 16:48:04 gunter Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: SteppingAction.cc,v 1.5 2007/01/18 09:07:20 hbu Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -35,15 +35,12 @@
#include "G4VProcess.hh"
#include "G4ParticleTypes.hh"
#include "G4UnitsTable.hh"
#ifdef G4ANALYSIS_USE
#include "AIDA/IHistogram1D.h"
#endif
#include "HistoManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
SteppingAction::SteppingAction(RunAction* RuAct)
:runAction(RuAct)
SteppingAction::SteppingAction(RunAction* RuAct, HistoManager* histo)
:runAction(RuAct), histoManager(histo)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -96,17 +93,10 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep)
<< " PGamma=" << G4BestUnit(PGamma,"Energy")
<< " #secondaries lp=" << lp
<< '\n';
}
#ifdef G4ANALYSIS_USE
// fill histos
if( runAction->GetHisto(0) ) // check the histos exist
{
runAction->GetHisto(0)->fill(Egamma/keV);
runAction->GetHisto(1)->fill(Egamma/keV,Egamma/keV);
runAction->GetHisto(2)->fill(aStep->GetStepLength()/m);
}
#endif
}
histoManager->FillHisto(1,Egamma);
histoManager->FillHisto(2,Egamma,Egamma/keV); // power spectrum : gamma weighted with its energy
histoManager->FillHisto(3,aStep->GetStepLength());
}
}
@@ -1,6 +1,6 @@
*************************************************************
Geant4 version Name: global-V08-01-05 (15-December-2006)
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -137,18 +137,18 @@ Start Run processing.
Run terminated.
Run Summary
Number of events processed : 10000
User=68.79s Real=92.16s Sys=3.33s
User=140.49s Real=246.11s Sys=6.32s
The run consists of 10000 mu+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 )
Number of process calls ---> muIoni : 469540 muPairProd : 63243 muBrems : 645
Number of process calls ---> muIoni : 468767 muPairProd : 63239 muBrems : 694
Simulation: total CrossSection = 0.53343 /cm MeanFreePath = 1.8747 cm massicCrossSection = 0.06778 cm2/g
Simulation: total CrossSection = 0.5327 /cm MeanFreePath = 1.8772 cm massicCrossSection = 0.067687 cm2/g
Theory: total CrossSection = 0.53938 /cm MeanFreePath = 1.854 cm massicCrossSection = 0.068536 cm2/g
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1519165414, 739182601
Current couple of seeds = 758590255, 1816922510
----------------------------------------
Graphics systems deleted.
Visualization Manager deleting...
@@ -0,0 +1,38 @@
# $Id: GNUmakefile,v 1.1 2007/02/13 17:57:19 maire Exp $
# --------------------------------------------------------------
# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
# --------------------------------------------------------------
name := TestEm18
G4TARGET := $(name)
G4EXLIB := true
ifndef G4INSTALL
G4INSTALL = ../../../..
endif
.PHONY: all
all: lib bin
#### G4ANALYSIS_USE := true
ifdef G4ANALYSIS_USE
CPPFLAGS += -DG4ANALYSIS_USE
endif
include $(G4INSTALL)/config/architecture.gmk
ifdef G4ANALYSIS_USE
# for the aida-config command see the README file
CPPFLAGS += `aida-config --include`
LOADLIBS += `aida-config --lib`
endif
include $(G4INSTALL)/config/binmake.gmk
visclean:
rm -f g4*.prim g4*.eps g4*.wrl
rm -f .DAWN_*
histclean:
rm ${G4WORKDIR}/tmp/${G4SYSTEM}/${G4TARGET}/HistoManager.o
@@ -0,0 +1,23 @@
$Id: History,v 1.2 2007/02/16 11:59:47 maire Exp $
----------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
TestEm18 History file
---------------------
This file should be used by the G4 example coordinator to briefly
summarize all major modifications introduced in the code and keep
track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
16-feb-07 mma (testem18-V08-02-01)
- add Water-vapor
- correct RunAction::GetEnergyFromRange()
14-feb-07 michel maire (testem18-V08-02-00)
- created
@@ -0,0 +1,152 @@
$Id: README,v 1.1 2007/02/13 17:57:19 maire Exp $
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
TestEm18
--------
This example allows to study the energy lost by a charged particle in a
single layer, due to ionization and bremsstrahlung. Results are compared to
'reference' values.
1- GEOMETRY DEFINITION
It is a single box of homogeneous medium.
Two parameters define the geometry :
- the material of the box,
- the (full) size of the box.
The default geometry (1 cm of water) is constructed in DetectorConstruction,
but the above parameters can be changed interactively via the commands
defined in DetectorMessenger.
2- PHYSICS
The physics list contains the 'standard' electromagnetic processes.
However the MultipleScattering is not registered, in order to focuse on
fluctuations due to energy loss alone.
3- BEAM
The primary kinematic is a single particle starting at the edge
of the box. The type of the particle and its energy are set in
PrimaryGeneratorAction (e- 10 MeV), and can be changed via the G4
build-in commands of ParticleGun class.
4- RUN
During the tracking of the incident particle, the secondary particles
are immediately killed, after that their energy has been registered
(see StackingAction).
Therefore, we study here the total energy lost by the incident particle,
not the energy deposited in a layer of finite thickness.
At EndOfRun, the above results are compared with 'reference' values,
i.e. the values read from EnergyLoss tables.
5- HISTOGRAMS
The test contains 6 built-in 1D histograms, which are managed by the
HistoManager class and its Messenger.
1 continuous energy loss along primary track
2 energy from secondaries
3 total energy lost by primary track (1+2)
4 energy spectrum of e-+
5 energy spectrum of gamma
6 step size of primary track
The histos can be activated individually with the command :
/testem/histo/setHisto id nbBins valMin valMax unit
where 'unit' is the desired unit for the histo (MeV or KeV, cm or mm, etc..)
One can control the name and the type of the histograms file with
the commands:
/testem/histo/setFileName name (default testem18)
/testem/histo/setFileType name (default hbook)
Note that, by default, histograms are disabled. To activate them, uncomment
the flag G4ANALYSIS_USE in GNUmakefile.
6- VISUALIZATION
The Visualization Manager is set in the main().
The initialisation of the drawing is done via the commands
/vis/... in the macro vis.mac. To get visualisation:
> /control/execute vis.mac
The detector has a default view which is a longitudinal view of the box.
The tracks are drawn at the end of event, and erased at the end of run.
7- HOW TO START ?
compile and link to generate an executable
% cd geant4/examples/extended/electromagnetic/TestEm18
% gmake
execute TestEm18 in 'batch' mode from macro files :
% TestEm18 electron.mac.mac
execute TestEm18 in 'interactive mode' with visualization :
% TestEm18
Idle> control/execute vis.mac
....
Idle> type your commands
....
Idle> exit
8- USING HISTOGRAMS
By default the histograms are not activated. To activate histograms
the environment variable G4ANALYSIS_USE should be defined. For instance
uncomment the flag G4ANALYSIS_USE in GNUmakefile.
Before compilation of the example it is optimal to clean up old files:
gmake histclean
gmake
To use histograms, at least one of the AIDA implementations should be
available (see http://aida.freehep.org).
8a - PI
A package including AIDA and extended interfaces also using Python is PI,
available from: http://cern.ch/pi
Once installed PI or PI-Lite in a specified local area $MYPY, it is required
to add the installation path to $PATH, i.e. for example, for release 1.2.1 of
PI:
setenv PATH ${PATH}:$MYPI/1.2.1/app/releases/PI/PI_1_2_1/rh73_gcc32/bin
CERN users can use the PATH to the LCG area on AFS.
Before running the example the command should be issued:
eval `aida-config --runtime csh`
8b - OpenScientist
OpenScientist is available at http://OpenScientist.lal.in2p3.fr.
You have to "setup" the OpenScientist AIDA implementation before compiling
(then with G4ANALYSIS_USE set) and running your Geant4 application.
On UNIX you setup, with a csh flavoured shell :
csh> source <<OpenScientist install path>/aida-setup.csh
or with a sh flavoured shell :
sh> . <<OpenScientist install path>/aida-setup.sh
On Windows :
DOS> call <<OpenScientist install path>/aida-setup.bat
You can use various file formats for writing (AIDA-XML, hbook, root).
These formats are readable by the Lab onx interactive program
or the OpenPAW application. See the web pages.
With OpenPAW, on a run.hbook file, one can view the histograms
with something like :
OS> opaw
opaw> h/file 1 run.hbook ( or opaw> h/file 1 run.aida or run.root)
opaw> zone 2 2
opaw> h/plot 1
opaw> h/plot 2
@@ -0,0 +1,140 @@
//
// ********************************************************************
// * 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: TestEm18.cc,v 1.1 2007/02/13 17:57:19 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"
#include "Randomize.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
#endif
#include "DetectorConstruction.hh"
#include "PhysicsList.hh"
#include "PrimaryGeneratorAction.hh"
#include "RunAction.hh"
#include "EventAction.hh"
#include "SteppingAction.hh"
#include "SteppingVerbose.hh"
#include "StackingAction.hh"
#include "HistoManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
int main(int argc,char** argv) {
//choose the Random engine
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
//my Verbose output class
G4VSteppingVerbose::SetInstance(new SteppingVerbose);
// Construct the default run manager
G4RunManager * runManager = new G4RunManager;
// set mandatory initialization classes
DetectorConstruction* detector;
detector = new DetectorConstruction;
runManager->SetUserInitialization(detector);
runManager->SetUserInitialization(new PhysicsList());
G4VisManager* visManager = 0;
HistoManager* histo = new HistoManager();
// set user action classes
//
//primaryGenerator
PrimaryGeneratorAction* primary = new PrimaryGeneratorAction(detector);
runManager->SetUserAction(primary);
//runAction
RunAction* runaction = new RunAction(detector,primary,histo);
runManager->SetUserAction(runaction);
//eventAction
EventAction* eventaction = new EventAction(runaction,histo);
runManager->SetUserAction(eventaction);
//stepAction
SteppingAction* steppingaction = new SteppingAction(runaction, eventaction,
histo);
runManager->SetUserAction(steppingaction);
//stackAction
StackingAction* stackingaction = new StackingAction(runaction, eventaction,
histo);
runManager->SetUserAction(stackingaction);
// get the pointer to the User Interface manager
G4UImanager* UI = G4UImanager::GetUIpointer();
if (argc==1) // Define UI terminal for interactive mode
{
#ifdef G4VIS_USE
// visualization manager
visManager = new G4VisExecutive;
visManager->Initialize();
#endif
G4UIsession * session = 0;
#ifdef G4UI_USE_TCSH
session = new G4UIterminal(new G4UItcsh);
#else
session = new G4UIterminal();
#endif
session->SessionStart();
delete session;
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UI->ApplyCommand(command+fileName);
}
// job termination
#ifdef G4VIS_USE
delete visManager;
#endif
delete histo;
delete runManager;
return 0;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,18 @@
# $Id: TestEm18.in,v 1.1 2007/02/13 17:57:19 maire Exp $
#
# macro file for TestEm18.cc
#
/control/verbose 2
/run/verbose 2
#
/testem/det/setMat Water
/testem/det/setSize 1 cm
#
/testem/phys/setCuts 1 mm
#
/run/initialize
#
/gun/particle e-
/gun/energy 10 MeV
#
/run/beamOn 100000
@@ -0,0 +1,282 @@
*************************************************************
Geant4 version Name: geant4-08-03-cand-00 (5-May-2007)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
*************************************************************
***** Table : Nb of materials = 11 *****
Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m
---> Element: Nitrogen (N) Z = 7.0 N = 14.0 A = 14.01 g/mole ElmMassFraction: 70.00 % ElmAbundance 72.71 %
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 30.00 % ElmAbundance 27.29 %
Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm
---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 %
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 %
Material: Water_vapor density: 1.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 360.925 m
---> Element: Hydrogen (H) Z = 1.0 N = 1.0 A = 1.01 g/mole ElmMassFraction: 11.21 % ElmAbundance 66.67 %
---> Element: Oxygen (O) Z = 8.0 N = 16.0 A = 16.00 g/mole ElmMassFraction: 88.79 % ElmAbundance 33.33 %
Material: Carbon density: 2.267 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.833 cm
---> Element: Carbon ( ) Z = 6.0 N = 12.0 A = 12.01 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm
---> Element: Aluminium ( ) Z = 13.0 N = 27.0 A = 26.98 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Silicon density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm
---> Element: Silicon ( ) Z = 14.0 N = 28.1 A = 28.09 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm
---> Element: liquidArgon ( ) Z = 18.0 N = 40.0 A = 39.95 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm
---> Element: Iron ( ) Z = 26.0 N = 55.9 A = 55.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Germanium density: 5.323 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 2.301 cm
---> Element: Germanium ( ) Z = 32.0 N = 72.6 A = 72.61 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm
---> Element: Tungsten ( ) Z = 74.0 N = 183.8 A = 183.85 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm
---> Element: Lead ( ) Z = 82.0 N = 207.2 A = 207.19 g/mole ElmMassFraction: 100.00 % ElmAbundance 100.00 %
/run/verbose 2
#
/testem/det/setMat Water
/testem/det/setSize 1 cm
#
/testem/phys/setCuts 1 mm
#
/run/initialize
userDetector->Construct() start.
The Box is 1 cm of Water
Water is registered to the default region.
physicsList->Construct() start.
physicsList->Construct() start.
physicsList->setCut() start.
PhysicsList::SetCuts:CutLength : 1 mm
#
/gun/particle e-
/gun/energy 10 MeV
#
/run/beamOn 100000
phot: Total cross sections from Sandia parametrisation.
Sampling according PhotoElectric model
compt: Total cross sections has a good parametrisation from 10 KeV to (100/Z) GeV
Sampling according Klein-Nishina model
tables are built for gamma
Lambda tables from 100 eV to 100 GeV in 90 bins.
conv: Total cross sections has a good parametrisation from 1.5 MeV to 100 GeV for all Z;
sampling secondary e+e- according Bethe-Heitler model
tables are built for gamma
Lambda tables from 1.022 MeV to 100 GeV in 100 bins.
eIoni: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
eBrem: tables are built for e-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
eIoni: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Delta cross sections and sampling from MollerBhabha model
Good description from 1 KeV to 100 GeV.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
eBrem: tables are built for e+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Total cross sections and sampling from StandBrem model (based on the EEDL data library)
Good description from 1 KeV to 100 GeV, log scale extrapolation above 100 GeV.
annihil: Sampling according eplus2gg model
tables are built for e+
Lambda tables from 100 eV to 100 TeV in 120 bins.
hIoni: tables are built for proton
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
ionIoni: tables are built for GenericIon
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from BraggIon for protons below.
Stopping Power data for 8 ion/material pairs are used.
Step function: finalRange(mm)= 0.1, dRoverRange= 0.1, integral: 1
CSDA range table up to 100 TeV in 480 bins.
hIoni: tables are built for anti_proton
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 2 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
muIoni: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
radiative corrections for E > 1 GeV
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
muBrems: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Parametrised model
muPairProd: tables are built for mu+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Parametrised model
muIoni: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Bether-Bloch model for E > 0.2 MeV, parametrisation of Bragg peak below,
radiative corrections for E > 1 GeV
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
muBrems: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Parametrised model
muPairProd: tables are built for mu-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Parametrised model
hIoni: tables are built for pi+
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
hIoni: tables are built for pi-
dE/dx and range tables from 100 eV to 100 TeV in 480 bins.
Lambda tables from threshold to 100 TeV in 480 bins.
Scaling relation is used from proton dE/dx and range.
Delta cross sections and sampling from BetheBloch model for scaled energy > 0.297504 MeV
Parametrisation from Bragg for protons below.
Step function: finalRange(mm)= 1, dRoverRange= 0.2, integral: 1
CSDA range table up to 100 TeV in 480 bins.
Region <DefaultRegionForTheWorld> -- appears in <Water> world volume
Materials : Water
Production cuts : gamma 1 mm e- 1 mm e+ 1 mm
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes recalculation needed : No
Material : Water
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm
Energy thresholds : gamma 2.90186 keV e- 347.138 keV e+ 338.695 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
====================================================================
Start closing geometry.
G4GeometryManager::ReportVoxelStats -- Voxel Statistics
Total memory consumed for geometry optimisation: 0 kByte
Total CPU time elapsed for geometry optimisation: 0 seconds
### Run 0 start.
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 9876, 54321
----------------------------------------
Start Run processing.
---> Begin of Event: 0
---> Begin of Event: 10000
---> Begin of Event: 20000
---> Begin of Event: 30000
---> Begin of Event: 40000
---> Begin of Event: 50000
---> Begin of Event: 60000
---> Begin of Event: 70000
---> Begin of Event: 80000
---> Begin of Event: 90000
Run terminated.
Run Summary
Number of events processed : 100000
User=48.74s Real=48.78s Sys=0.02s
======================== run summary ======================
The run was 100000 e- of 10 MeV through 1 cm of Water (density: 1 g/cm3 )
===========================================================
trackLength= 1.0005 cm nb of steps= 1.5573 stepSize= 6.4242 mm
d-rays : eLoss/primary= 249.72 keV nb of d-rays= 0.23634 <Tkin>= 1.0566 MeV Tmin= 347.15 keV Tmax= 4.9638 MeV
brems : eLoss/primary= 173.41 keV nb of gammas= 0.30721 <Tkin>= 564.48 keV Tmin= 2.9024 keV Tmax= 9.6666 MeV
deposit : eLoss/primary= 1.7336 MeV <dEcut > table= 1.7348 MeV ---> simul/reference= 0.99936
total : eLoss/primary= 2.1568 MeV <dEfull> table= 2.1626 MeV ---> simul/reference= 0.99733
--------- Ranecu engine status ---------
Initial seed (index) = 0
Current couple of seeds = 1637293684, 1659265773
----------------------------------------
UserDetectorConstruction deleted.
UserPhysicsList deleted.
UserRunAction deleted.
UserPrimaryGenerator deleted.
G4 kernel has come to Quit state.
EventManager deleted.
Default detector region deleted.
UImanager deleted.
Units table cleared.
StateManager deleted.
RunManagerKernel is deleted.
RunManager is deleting.
@@ -0,0 +1,26 @@
# $Id: csda.mac,v 1.2 2007/02/16 11:59:47 maire Exp $
#
# macro file for TestEm18.cc
#
/control/verbose 2
/run/verbose 2
#
/testem/det/setMat Water
###/testem/det/setMat Water_vapor
/testem/det/setSize 1 cm
#
/testem/phys/setCuts 100 km
#
/run/initialize
#
/process/eLoss/fluct false
/process/eLoss/StepFunction 1 1 mm
#
/gun/particle e-
/gun/energy 20 MeV
#
/run/beamOn 1
#
/testem/stepMax 10 um
#
/run/beamOn 1
@@ -0,0 +1,28 @@
# $Id: electron.mac,v 1.1 2007/02/13 17:57:20 maire Exp $
#
# macro file for TestEm18.cc
#
/control/verbose 2
/run/verbose 2
#
/testem/det/setMat Water
/testem/det/setSize 1 cm
#
/testem/phys/setCuts 100 um
#
/run/initialize
#
/gun/particle e-
/gun/energy 10 MeV
#
/testem/histo/setFileName electron
/testem/histo/setHisto 1 100 0 10 MeV #continuous eLoss
/testem/histo/setHisto 2 100 0 10 MeV #secondary eLoss
/testem/histo/setHisto 3 100 0 10 MeV #total eLoss
/testem/histo/setHisto 4 100 0 10 MeV #e- energy spectrum
/testem/histo/setHisto 5 100 0 10 MeV #gamma energy spectrum
/testem/histo/setHisto 6 100 0 10 mm #step size
#
/testem/event/printModulo 100000
#
/run/beamOn 1000000
@@ -23,55 +23,68 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListIonBinaryCascade.hh,v 1.6 2006/08/10 08:44:39 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
// It is provide PhysicsList for Binary Cascade for
// protons and neutrons with the energy E<3 GeV
//
// $Id: DetectorConstruction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysListIonBinaryCascade_h
#define PhysListIonBinaryCascade_h 1
#ifndef DetectorConstruction_h
#define DetectorConstruction_h 1
#include "G4VPhysicsConstructor.hh"
#include "G4VUserDetectorConstruction.hh"
#include "globals.hh"
class G4LogicalVolume;
class G4Material;
class DetectorMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4DeuteronInelasticProcess;
class G4TritonInelasticProcess;
class G4AlphaInelasticProcess;
class G4HadronInelasticProcess;
class PhysListIonBinaryCascade : public G4VPhysicsConstructor
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
PhysListIonBinaryCascade(const G4String& name = "binary_ion");
virtual ~PhysListIonBinaryCascade();
public:
DetectorConstruction();
~DetectorConstruction();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
void ConstructParticle() {};
public:
G4VPhysicalVolume* Construct();
void SetSize (G4double);
void SetMaterial (G4String);
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
private:
G4DeuteronInelasticProcess* theIPdeuteron;
G4TritonInelasticProcess* theIPtriton;
G4AlphaInelasticProcess* theIPalpha;
G4HadronInelasticProcess* theIPGenericIon;
void UpdateGeometry();
public:
const
G4VPhysicalVolume* GetWorld() {return pBox;};
G4double GetSize() {return BoxSize;};
G4Material* GetMaterial() {return aMaterial;};
void PrintParameters();
private:
G4VPhysicalVolume* pBox;
G4LogicalVolume* lBox;
G4double BoxSize;
G4Material* aMaterial;
DetectorMessenger* detectorMessenger;
private:
void DefineMaterials();
G4VPhysicalVolume* ConstructVolumes();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -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: DetectorMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorMessenger_h
#define DetectorMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithoutParameter;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class DetectorMessenger: public G4UImessenger
{
public:
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
DetectorConstruction* Detector;
G4UIdirectory* testemDir;
G4UIdirectory* detDir;
G4UIcmdWithAString* MaterCmd;
G4UIcmdWithADoubleAndUnit* SizeCmd;
G4UIcmdWithoutParameter* UpdateCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,77 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: EventAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef EventAction_h
#define EventAction_h 1
#include "G4UserEventAction.hh"
#include "globals.hh"
class RunAction;
class HistoManager;
class EventMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class EventAction : public G4UserEventAction
{
public:
EventAction(RunAction* , HistoManager*);
~EventAction();
public:
void BeginOfEventAction(const G4Event*);
void EndOfEventAction(const G4Event*);
void AddEnergyDeposit(G4double edep) {EnergyDeposit += edep;};
void AddSecondary(G4double ekin) {EnergySecondary += ekin;};
void SetDrawFlag(G4String val) {drawFlag = val;};
void SetPrintModulo(G4int val) {printModulo = val;};
private:
RunAction* runaction;
HistoManager* histoManager;
G4double EnergyDeposit;
G4double EnergySecondary;
G4String drawFlag;
G4int printModulo;
EventMessenger* eventMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,62 @@
//
// ********************************************************************
// * 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: EventMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef EventMessenger_h
#define EventMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class EventAction;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class EventMessenger: public G4UImessenger
{
public:
EventMessenger(EventAction*);
~EventMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
EventAction* eventAction;
G4UIdirectory* eventDir;
G4UIcmdWithAString* DrawCmd;
G4UIcmdWithAnInteger* PrintCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,94 @@
//
// ********************************************************************
// * 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: HistoManager.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoManager_h
#define HistoManager_h 1
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
namespace AIDA {
class IAnalysisFactory;
class ITree;
class IHistogram1D;
}
class HistoMessenger;
const G4int MaxHisto = 7;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager
{
public:
HistoManager();
~HistoManager();
void SetFileName (const G4String& name) { fileName[0] = name;};
void SetFileType (const G4String& name) { fileType = name;};
void SetFileOption (const G4String& name) { fileOption = name;};
void book();
void save();
void SetHisto (G4int,G4int,G4double,G4double,const G4String& unit="none");
void FillHisto(G4int id, G4double e, G4double weight = 1.0);
void RemoveHisto (G4int);
G4bool HistoExist (G4int id) {return exist[id];}
G4double GetHistoUnit(G4int id) {return Unit[id];}
G4double GetBinWidth (G4int id) {return Width[id];}
private:
G4String fileName[2];
G4String fileType;
G4String fileOption;
AIDA::IAnalysisFactory* af;
AIDA::ITree* tree;
AIDA::IHistogram1D* histo[MaxHisto];
G4bool exist[MaxHisto];
G4String Label[MaxHisto];
G4String Title[MaxHisto];
G4int Nbins[MaxHisto];
G4double Vmin [MaxHisto];
G4double Vmax [MaxHisto];
G4double Unit [MaxHisto];
G4double Width[MaxHisto];
G4bool factoryOn;
HistoMessenger* histoMessenger;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,73 @@
//
// ********************************************************************
// * 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: HistoMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef HistoMessenger_h
#define HistoMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoManager;
class G4UIdirectory;
class G4UIcommand;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class HistoMessenger: public G4UImessenger
{
public:
HistoMessenger(HistoManager* );
~HistoMessenger();
void SetNewValue(G4UIcommand* ,G4String );
private:
HistoManager* histoManager;
G4UIdirectory* histoDir;
G4UIcmdWithAString* factoryCmd;
G4UIcmdWithAString* typeCmd;
G4UIcmdWithAString* optionCmd;
G4UIcommand* histoCmd;
G4UIcmdWithAnInteger* rmhistoCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,45 +23,35 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListHadronElastic.hh,v 1.5 2006/08/10 08:44:39 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
// It is provide PhysicsList for hadron eleastic process
// $Id: PhysListEmLivermore.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysListHadronElastic_h
#define PhysListHadronElastic_h 1
#ifndef PhysListEmLivermore_h
#define PhysListEmLivermore_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4UHadronElasticProcess;
class PhysListHadronElastic : public G4VPhysicsConstructor
class PhysListEmLivermore : public G4VPhysicsConstructor
{
public:
PhysListHadronElastic(const G4String& name = "elastic");
virtual ~PhysListHadronElastic();
PhysListEmLivermore(const G4String& name = "Livermore");
virtual ~PhysListEmLivermore();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
// This method is dummy for physics
void ConstructParticle() {};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
void ConstructProcess();
private:
// Elastic Process
G4UHadronElasticProcess* theElasticProcess;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,36 +23,34 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListEmPenelope.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef exrdmPhysListEmStandard_h
#define exrdmPhysListEmStandard_h 1
#ifndef PhysListEmPenelope_h
#define PhysListEmPenelope_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class exrdmPhysListEmStandard : public G4VPhysicsConstructor
class PhysListEmPenelope : public G4VPhysicsConstructor
{
public:
exrdmPhysListEmStandard(const G4String& name = "standard");
virtual ~exrdmPhysListEmStandard();
PhysListEmPenelope(const G4String& name = "penelope");
virtual ~PhysListEmPenelope();
public:
// This method is dummy for physics
virtual void ConstructParticle() {};
void ConstructParticle() {};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
virtual void ConstructProcess();
private:
// name of used to differetiate usage with std-hadron phys
G4String name;
void ConstructProcess();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,54 +23,44 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListBinaryCascade.hh,v 1.4 2006/08/10 08:44:39 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-02 $
//
// Class Description:
// This class is an derived class of G4VPhysicsConstructor
// It is provide PhysicsList for Binary Cascade for
// protons and neutrons with the energy E<3 GeV
// $Id: PhysListEmStandard.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysListBinaryCascade_h
#define PhysListBinaryCascade_h 1
#ifndef PhysListEmStandard_h
#define PhysListEmStandard_h 1
#include "G4VPhysicsConstructor.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4ProtonInelasticProcess;
class G4NeutronInelasticProcess;
class G4HadronFissionProcess;
class G4HadronCaptureProcess;
class PhysListBinaryCascade : public G4VPhysicsConstructor
class PhysListEmStandard : public G4VPhysicsConstructor
{
public:
PhysListBinaryCascade(const G4String& name = "binary");
virtual ~PhysListBinaryCascade();
public:
PhysListEmStandard(const G4String& name = "standard");
virtual ~PhysListEmStandard();
public:
// This method will be invoked in the Construct() method.
// each particle type will be instantiated
public:
// This method is dummy for physics
void ConstructParticle() {};
// This method will be invoked in the Construct() method.
// each physics process will be instantiated and
// registered to the process manager of each particle type
// registered to the process manager of each particle type
void ConstructProcess();
private:
G4ProtonInelasticProcess* theIPproton;
G4NeutronInelasticProcess* theIPneutron;
G4HadronFissionProcess* theFissionProcess;
G4HadronCaptureProcess* theCaptureProcess;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,74 @@
//
// ********************************************************************
// * 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: PhysicsList.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsList_h
#define PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "globals.hh"
class G4VPhysicsConstructor;
class PhysicsListMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsList: public G4VModularPhysicsList
{
public:
PhysicsList();
~PhysicsList();
void ConstructParticle();
void ConstructProcess();
void AddPhysicsList(const G4String& name);
void AddStepMax();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
private:
PhysicsListMessenger* pMessenger;
G4String emName;
G4VPhysicsConstructor* emPhysicsList;
G4double cutForGamma;
G4double cutForElectron;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * 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: PhysicsListMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PhysicsListMessenger_h
#define PhysicsListMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class PhysicsList;
class G4UIdirectory;
class G4UIcmdWithAString;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PhysicsListMessenger: public G4UImessenger
{
public:
PhysicsListMessenger(PhysicsList* );
~PhysicsListMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
PhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithAString* pListCmd;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -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: PrimaryGeneratorAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "G4ParticleGun.hh"
#include "globals.hh"
class G4Event;
class DetectorConstruction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction(DetectorConstruction*);
~PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event*);
G4ParticleGun* GetParticleGun() {return particleGun;};
private:
G4ParticleGun* particleGun;
DetectorConstruction* detector;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,103 @@
//
// ********************************************************************
// * 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: RunAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4Run;
class G4ParticleDefinition;
class G4Material;
class DetectorConstruction;
class PrimaryGeneratorAction;
class HistoManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class RunAction : public G4UserRunAction
{
public:
RunAction(DetectorConstruction*, PrimaryGeneratorAction*, HistoManager*);
~RunAction();
public:
void BeginOfRunAction(const G4Run*);
void EndOfRunAction(const G4Run*);
void AddEnergyDeposit (G4double edep)
{energyDeposit += edep;};
void AddTrackLength (G4double step)
{trackLength += step; nbSteps++;};
void AddChargedSecondary (G4double ekin)
{energyCharged += ekin; nbCharged++;
if (ekin<emin[0]) emin[0] = ekin;
if (ekin>emax[0]) emax[0] = ekin;
};
void AddNeutralSecondary (G4double ekin)
{energyNeutral += ekin; nbNeutral++;
if (ekin<emin[1]) emin[1] = ekin;
if (ekin>emax[1]) emax[1] = ekin;
};
public:
G4double GetEnergyFromRestrictedRange
(G4double,G4ParticleDefinition*,G4Material*,G4double);
G4double GetEnergyFromCSDARange
(G4double,G4ParticleDefinition*,G4Material*,G4double);
private:
G4double energyDeposit;
G4double trackLength;
G4double energyCharged, energyNeutral;
G4double emin[2], emax[2];
G4long nbSteps;
G4int nbCharged, nbNeutral;
DetectorConstruction* detector;
PrimaryGeneratorAction* primary;
HistoManager* histoManager;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: StackingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef StackingAction_h
#define StackingAction_h 1
#include "G4UserStackingAction.hh"
#include "globals.hh"
class RunAction;
class EventAction;
class HistoManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class StackingAction : public G4UserStackingAction
{
public:
StackingAction(RunAction*, EventAction*, HistoManager* );
~StackingAction();
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*);
private:
RunAction* runaction;
EventAction* eventaction;
HistoManager* histoManager;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,72 @@
//
// ********************************************************************
// * 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: StepMax.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef StepMax_h
#define StepMax_h 1
#include "globals.hh"
#include "G4VDiscreteProcess.hh"
#include "G4ParticleDefinition.hh"
#include "G4Step.hh"
class StepMaxMessenger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class StepMax : public G4VDiscreteProcess
{
public:
StepMax(const G4String& processName ="UserStepMax");
~StepMax();
G4bool IsApplicable(const G4ParticleDefinition&);
void SetMaxStep(G4double);
G4double PostStepGetPhysicalInteractionLength( const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*)
{return DBL_MAX;}; // it is not needed here !
private:
G4double MaxChargedStep;
StepMaxMessenger* pMess;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,58 @@
//
// ********************************************************************
// * 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: StepMaxMessenger.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef StepMaxMessenger_h
#define StepMaxMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class StepMax;
class G4UIcmdWithADoubleAndUnit;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class StepMaxMessenger: public G4UImessenger
{
public:
StepMaxMessenger(StepMax*);
~StepMaxMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
StepMax* pStepMax;
G4UIcmdWithADoubleAndUnit* StepMaxCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: SteppingAction.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef SteppingAction_h
#define SteppingAction_h 1
#include "G4UserSteppingAction.hh"
#include "globals.hh"
class RunAction;
class EventAction;
class HistoManager;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction(RunAction*,EventAction*,HistoManager* );
~SteppingAction();
void UserSteppingAction(const G4Step*);
private:
RunAction* runaction;
EventAction* eventaction;
HistoManager* histoManager;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,57 @@
//
// ********************************************************************
// * 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: SteppingVerbose.hh,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
// This class manages the verbose outputs in G4SteppingManager.
// It inherits from G4SteppingVerbose.
// It shows how to extract informations during the tracking of a particle.
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef SteppingVerbose_h
#define SteppingVerbose_h 1
#include "G4SteppingVerbose.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class SteppingVerbose : public G4SteppingVerbose {
public:
SteppingVerbose();
~SteppingVerbose();
void StepInfo();
void TrackingStarted();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,27 @@
# $Id: proton.mac,v 1.1 2007/02/13 17:57:20 maire Exp $
#
# macro file for TestEm18.cc
#
/control/verbose 2
/run/verbose 2
#
/testem/det/setMat Water
/testem/det/setSize 1 cm
#
/testem/phys/setCuts 100 um
#
/run/initialize
#
/gun/particle proton
/gun/energy 100 MeV
#
/testem/histo/setFileName proton
/testem/histo/setHisto 1 100 0 10 MeV #continuous eLoss
/testem/histo/setHisto 2 100 0 10 MeV #secondary eLoss
/testem/histo/setHisto 3 100 0 10 MeV #total eLoss
/testem/histo/setHisto 4 100 0 300 keV #e- energy spectrum
/testem/histo/setHisto 6 100 0 10 mm #step size
#
/testem/event/printModulo 100000
#
/run/beamOn 1000000
@@ -0,0 +1,193 @@
//
// ********************************************************************
// * 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: DetectorConstruction.cc,v 1.2 2007/02/16 11:59:47 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "DetectorMessenger.hh"
#include "G4Material.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4GeometryManager.hh"
#include "G4PhysicalVolumeStore.hh"
#include "G4LogicalVolumeStore.hh"
#include "G4SolidStore.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::DetectorConstruction()
:pBox(0), lBox(0), aMaterial(0)
{
BoxSize = 1*cm;
DefineMaterials();
SetMaterial("Water");
detectorMessenger = new DetectorMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::~DetectorConstruction()
{ delete detectorMessenger;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
return ConstructVolumes();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::DefineMaterials()
{
//
// define Elements
//
G4double z,a;
G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
//
// define materials
//
G4double density;
G4int ncomponents, natoms;
G4double fractionmass;
G4Material* Air =
new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
Air->AddElement(N, fractionmass=70.*perCent);
Air->AddElement(O, fractionmass=30.*perCent);
G4Material* H2O =
new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
H2O->AddElement(H, natoms=2);
H2O->AddElement(O, natoms=1);
H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
G4Material* vapor =
new G4Material("Water_vapor", density= 1.000*mg/cm3, ncomponents=2);
vapor->AddElement(H, natoms=2);
vapor->AddElement(O, natoms=1);
vapor->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
new G4Material("Carbon" , z=6., a= 12.01*g/mole, density= 2.267*g/cm3);
new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
{
// Cleanup old geometry
G4GeometryManager::GetInstance()->OpenGeometry();
G4PhysicalVolumeStore::GetInstance()->Clean();
G4LogicalVolumeStore::GetInstance()->Clean();
G4SolidStore::GetInstance()->Clean();
G4Box*
sBox = new G4Box("Container", //its name
BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
lBox = new G4LogicalVolume(sBox, //its shape
aMaterial, //its material
aMaterial->GetName()); //its name
pBox = new G4PVPlacement(0, //no rotation
G4ThreeVector(), //at (0,0,0)
lBox, //its logical volume
aMaterial->GetName(), //its name
0, //its mother volume
false, //no boolean operation
0); //copy number
PrintParameters();
//always return the root volume
//
return pBox;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::PrintParameters()
{
G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
<< " of " << aMaterial->GetName() << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::SetMaterial(G4String materialChoice)
{
// search the material by its name
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
if (pttoMaterial) {
aMaterial = pttoMaterial;
UpdateGeometry();
} else {
G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
<< materialChoice << " not found" << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::SetSize(G4double value)
{
BoxSize = value;
UpdateGeometry();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4RunManager.hh"
void DetectorConstruction::UpdateGeometry()
{
if (pBox)
G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,95 @@
//
// ********************************************************************
// * 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: DetectorMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorMessenger.hh"
#include "DetectorConstruction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithoutParameter.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
:Detector(Det)
{
testemDir = new G4UIdirectory("/testem/");
testemDir->SetGuidance("commands specific to this example");
detDir = new G4UIdirectory("/testem/det/");
detDir->SetGuidance("detector construction");
MaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
MaterCmd->SetGuidance("Select material of the box.");
MaterCmd->SetParameterName("choice",false);
MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
SizeCmd = new G4UIcmdWithADoubleAndUnit("/testem/det/setSize",this);
SizeCmd->SetGuidance("Set size of the box");
SizeCmd->SetParameterName("Size",false);
SizeCmd->SetRange("Size>0.");
SizeCmd->SetUnitCategory("Length");
SizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
UpdateCmd = new G4UIcmdWithoutParameter("/testem/det/update",this);
UpdateCmd->SetGuidance("Update calorimeter geometry.");
UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
UpdateCmd->SetGuidance("if you changed geometrical value(s).");
UpdateCmd->AvailableForStates(G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::~DetectorMessenger()
{
delete MaterCmd;
delete SizeCmd;
delete UpdateCmd;
delete detDir;
delete testemDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
if( command == MaterCmd )
{ Detector->SetMaterial(newValue);}
if( command == SizeCmd )
{ Detector->SetSize(SizeCmd->GetNewDoubleValue(newValue));}
if( command == UpdateCmd )
{ Detector->UpdateGeometry(); }
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,82 +23,78 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListBinaryCascade.cc,v 1.4 2006/08/10 08:44:39 vnivanch Exp $
// GEANT4 tag $Name: geant4-08-02 $
// $Id: EventAction.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListBinaryCascade.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4LFission.hh"
#include "G4LCapture.hh"
#include "G4Proton.hh"
#include "G4Neutron.hh"
#include "EventAction.hh"
#include "G4ProtonInelasticProcess.hh"
#include "G4NeutronInelasticProcess.hh"
#include "G4ProtonInelasticCrossSection.hh"
#include "G4NeutronInelasticCrossSection.hh"
#include "G4HadronFissionProcess.hh"
#include "G4HadronCaptureProcess.hh"
#include "RunAction.hh"
#include "HistoManager.hh"
#include "EventMessenger.hh"
#include "G4BinaryCascade.hh"
#include "G4Event.hh"
#include "G4TrajectoryContainer.hh"
#include "G4Trajectory.hh"
#include "G4VVisManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListBinaryCascade::PhysListBinaryCascade(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListBinaryCascade::~PhysListBinaryCascade()
EventAction::EventAction(RunAction* RA, HistoManager* histo)
:runaction(RA),histoManager(histo),
drawFlag("none"),printModulo(10000)
{
delete theIPproton;
delete theIPneutron;
delete theFissionProcess;
delete theCaptureProcess;
eventMessenger = new EventMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListBinaryCascade::ConstructProcess()
EventAction::~EventAction()
{
// Binary Cascade
G4ParticleDefinition* particle = 0;
G4ProcessManager* pmanager = 0;
G4BinaryCascade* theBC = 0;
// proton
particle = G4Proton::Proton();
pmanager = particle->GetProcessManager();
theBC = new G4BinaryCascade();
theIPproton = new G4ProtonInelasticProcess();
theIPproton->RegisterMe(theBC);
theIPproton->AddDataSet(new G4ProtonInelasticCrossSection);
pmanager->AddDiscreteProcess(theIPproton);
// neutron
particle = G4Neutron::Neutron();
pmanager = particle->GetProcessManager();
theBC = new G4BinaryCascade();
theIPneutron = new G4NeutronInelasticProcess();
theIPneutron->RegisterMe(theBC);
theIPneutron->AddDataSet(new G4NeutronInelasticCrossSection);
pmanager->AddDiscreteProcess(theIPneutron);
// fission
theFissionProcess = new G4HadronFissionProcess;
G4LFission* theFissionModel = new G4LFission;
theFissionProcess->RegisterMe(theFissionModel);
pmanager->AddDiscreteProcess(theFissionProcess);
// capture
theCaptureProcess = new G4HadronCaptureProcess;
G4LCapture* theCaptureModel = new G4LCapture;
theCaptureProcess->RegisterMe(theCaptureModel);
pmanager->AddDiscreteProcess(theCaptureProcess);
delete eventMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void EventAction::BeginOfEventAction(const G4Event* evt)
{
G4int evtNb = evt->GetEventID();
//printing survey
if (evtNb%printModulo == 0)
G4cout << "\n---> Begin of Event: " << evtNb << G4endl;
// initialisation per event
EnergyDeposit = EnergySecondary = 0.;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void EventAction::EndOfEventAction(const G4Event* evt)
{
runaction->AddEnergyDeposit(EnergyDeposit);
histoManager->FillHisto(1, EnergyDeposit);
histoManager->FillHisto(2, EnergySecondary);
histoManager->FillHisto(3, EnergyDeposit+EnergySecondary);
if (G4VVisManager::GetConcreteInstance())
{
G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer();
G4int n_trajectories = 0;
if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();
for (G4int i=0; i<n_trajectories; i++)
{ G4Trajectory* trj = (G4Trajectory*)
((*(evt->GetTrajectoryContainer()))[i]);
if (drawFlag == "all") trj->DrawTrajectory(1000);
else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.))
trj->DrawTrajectory(1000);
else if ((drawFlag == "neutral")&&(trj->GetCharge() == 0.))
trj->DrawTrajectory(1000);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,83 @@
//
// ********************************************************************
// * 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: EventMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "EventMessenger.hh"
#include "EventAction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
EventMessenger::EventMessenger(EventAction* EvAct)
:eventAction(EvAct)
{
eventDir = new G4UIdirectory("/testem/event/");
eventDir->SetGuidance("event control");
DrawCmd = new G4UIcmdWithAString("/testem/event/drawTracks",this);
DrawCmd->SetGuidance("Draw the tracks in the event");
DrawCmd->SetGuidance(" Choice : none,charged,neutral,all");
DrawCmd->SetParameterName("choice",true);
DrawCmd->SetDefaultValue("all");
DrawCmd->SetCandidates("none charged neutral all");
DrawCmd->AvailableForStates(G4State_Idle);
PrintCmd = new G4UIcmdWithAnInteger("/testem/event/printModulo",this);
PrintCmd->SetGuidance("Print events modulo n");
PrintCmd->SetParameterName("EventNb",false);
PrintCmd->SetRange("EventNb>0");
PrintCmd->AvailableForStates(G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
EventMessenger::~EventMessenger()
{
delete DrawCmd;
delete PrintCmd;
delete eventDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void EventMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if(command == DrawCmd)
{eventAction->SetDrawFlag(newValue);}
if(command == PrintCmd)
{eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,215 @@
//
// ********************************************************************
// * 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: HistoManager.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "HistoManager.hh"
#include "HistoMessenger.hh"
#include "G4UnitsTable.hh"
#ifdef G4ANALYSIS_USE
#include "AIDA/AIDA.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoManager::HistoManager()
:af(0),tree(0),factoryOn(false)
{
#ifdef G4ANALYSIS_USE
// Creating the analysis factory
af = AIDA_createAnalysisFactory();
if(!af) {
G4cout << " HistoManager::HistoManager() :"
<< " problem creating the AIDA analysis factory."
<< G4endl;
}
#endif
fileName[0] = "testem18";
fileType = "hbook";
fileOption = "--noErrors uncompress";
// histograms
for (G4int k=0; k<MaxHisto; k++) {
histo[k] = 0;
exist[k] = false;
Unit[k] = 1.0;
Width[k] = 1.0;
}
histoMessenger = new HistoMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoManager::~HistoManager()
{
delete histoMessenger;
#ifdef G4ANALYSIS_USE
delete af;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::book()
{
#ifdef G4ANALYSIS_USE
if(!af) return;
// Creating a tree mapped to an hbook file.
fileName[1] = fileName[0] + "." + fileType;
G4bool readOnly = false;
G4bool createNew = true;
AIDA::ITreeFactory* tf = af->createTreeFactory();
tree = tf->create(fileName[1], fileType, readOnly, createNew, fileOption);
delete tf;
if(!tree) {
G4cout << "HistoManager::book() :"
<< " problem creating the AIDA tree with "
<< " storeName = " << fileName[1]
<< " storeType = " << fileType
<< " readOnly = " << readOnly
<< " createNew = " << createNew
<< " options = " << fileOption
<< G4endl;
return;
}
// Creating a histogram factory, whose histograms will be handled by the tree
AIDA::IHistogramFactory* hf = af->createHistogramFactory(*tree);
// create selected histograms
for (G4int k=0; k<MaxHisto; k++) {
if (exist[k]) {
histo[k] = hf->createHistogram1D( Label[k], Title[k],
Nbins[k], Vmin[k], Vmax[k]);
factoryOn = true;
}
}
delete hf;
if(factoryOn)
G4cout << "\n----> Histogram Tree is opened in " << fileName[1] << G4endl;
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::save()
{
#ifdef G4ANALYSIS_USE
if (factoryOn) {
tree->commit(); // Writing the histograms to the file
tree->close(); // and closing the tree (and the file)
G4cout << "\n----> Histogram Tree is saved in " << fileName[1] << G4endl;
delete tree;
tree = 0;
factoryOn = false;
}
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::FillHisto(G4int ih, G4double e, G4double weight)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::FillHisto() : histo " << ih
<< "does not exist; e= " << e << " w= " << weight << G4endl;
return;
}
#ifdef G4ANALYSIS_USE
if(exist[ih]) histo[ih]->fill(e/Unit[ih], weight);
#endif
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::SetHisto(G4int ih,
G4int nbins, G4double valmin, G4double valmax, const G4String& unit)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::SetHisto() : histo " << ih
<< "does not exist" << G4endl;
return;
}
const G4String id[] = { "0", "1", "2", "3", "4", "5", "6" };
const G4String title[] =
{ "dummy", //0
"continuous energy loss along primary track", //1
"energy from secondaries", //2
"total energy lost by primary track", //3
"energy spectrum of e-+", //4
"energy spectrum of gamma", //5
"step size" //6
};
G4String titl = title[ih];
G4double vmin = valmin, vmax = valmax;
Unit[ih] = 1.;
if (unit != "none") {
titl = title[ih] + " (" + unit + ")";
Unit[ih] = G4UnitDefinition::GetValueOf(unit);
vmin = valmin/Unit[ih]; vmax = valmax/Unit[ih];
}
exist[ih] = true;
Label[ih] = id[ih];
Title[ih] = titl;
Nbins[ih] = nbins;
Vmin[ih] = vmin;
Vmax[ih] = vmax;
Width[ih] = (valmax-valmin)/nbins;
G4cout << "----> SetHisto " << ih << ": " << titl << "; "
<< nbins << " bins from "
<< vmin << " " << unit << " to " << vmax << " " << unit << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoManager::RemoveHisto(G4int ih)
{
if (ih > MaxHisto) {
G4cout << "---> warning from HistoManager::RemoveHisto() : histo " << ih
<< "does not exist" << G4endl;
return;
}
histo[ih] = 0; exist[ih] = false;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,135 @@
//
// ********************************************************************
// * 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: HistoMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "HistoMessenger.hh"
#include <sstream>
#include "HistoManager.hh"
#include "G4UIdirectory.hh"
#include "G4UIcommand.hh"
#include "G4UIparameter.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoMessenger::HistoMessenger(HistoManager* manager)
:histoManager (manager)
{
histoDir = new G4UIdirectory("/testem/histo/");
histoDir->SetGuidance("histograms control");
factoryCmd = new G4UIcmdWithAString("/testem/histo/setFileName",this);
factoryCmd->SetGuidance("set name for the histograms file");
typeCmd = new G4UIcmdWithAString("/testem/histo/setFileType",this);
typeCmd->SetGuidance("set histograms file type: hbook, root, XML");
typeCmd->SetCandidates("hbook root XML");
optionCmd = new G4UIcmdWithAString("/testem/histo/setFileOption",this);
optionCmd->SetGuidance("set option for the histograms file");
histoCmd = new G4UIcommand("/testem/histo/setHisto",this);
histoCmd->SetGuidance("Set bining of the histo number ih :");
histoCmd->SetGuidance(" nbBins; valMin; valMax; unit (of vmin and vmax)");
//
G4UIparameter* ih = new G4UIparameter("ih",'i',false);
ih->SetGuidance("histo number : from 1 to MaxHisto");
ih->SetParameterRange("ih>0");
histoCmd->SetParameter(ih);
//
G4UIparameter* nbBins = new G4UIparameter("nbBins",'i',false);
nbBins->SetGuidance("number of bins");
nbBins->SetParameterRange("nbBins>0");
histoCmd->SetParameter(nbBins);
//
G4UIparameter* valMin = new G4UIparameter("valMin",'d',false);
valMin->SetGuidance("valMin, expressed in unit");
histoCmd->SetParameter(valMin);
//
G4UIparameter* valMax = new G4UIparameter("valMax",'d',false);
valMax->SetGuidance("valMax, expressed in unit");
histoCmd->SetParameter(valMax);
//
G4UIparameter* unit = new G4UIparameter("unit",'s',true);
unit->SetGuidance("if omitted, vmin and vmax are assumed dimensionless");
unit->SetDefaultValue("none");
histoCmd->SetParameter(unit);
rmhistoCmd = new G4UIcmdWithAnInteger("/testem/histo/removeHisto",this);
rmhistoCmd->SetGuidance("desactivate histo #id");
rmhistoCmd->SetParameterName("id",false);
rmhistoCmd->SetRange("id>0");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
HistoMessenger::~HistoMessenger()
{
delete rmhistoCmd;
delete histoCmd;
delete optionCmd;
delete typeCmd;
delete factoryCmd;
delete histoDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void HistoMessenger::SetNewValue(G4UIcommand* command, G4String newValues)
{
if (command == factoryCmd)
histoManager->SetFileName(newValues);
if (command == typeCmd)
histoManager->SetFileType(newValues);
if (command == optionCmd)
histoManager->SetFileOption(newValues);
if (command == histoCmd)
{ G4int ih,nbBins; G4double vmin,vmax; char unts[30];
const char* t = newValues;
std::istringstream is(t);
is >> ih >> nbBins >> vmin >> vmax >> unts;
G4String unit = unts;
G4double vUnit = 1. ;
if (unit != "none") vUnit = G4UIcommand::ValueOf(unit);
histoManager->SetHisto (ih,nbBins,vmin*vUnit,vmax*vUnit,unit);
}
if (command == rmhistoCmd)
histoManager->RemoveHisto(rmhistoCmd->GetNewIntValue(newValues));
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,112 @@
//
// ********************************************************************
// * 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: PhysListEmLivermore.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmLivermore.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4LowEnergyCompton.hh"
#include "G4LowEnergyGammaConversion.hh"
#include "G4LowEnergyPhotoElectric.hh"
#include "G4LowEnergyRayleigh.hh"
#include "G4LowEnergyIonisation.hh"
#include "G4LowEnergyBremsstrahlung.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hLowEnergyIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmLivermore::PhysListEmLivermore(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmLivermore::~PhysListEmLivermore()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmLivermore::ConstructProcess()
{
// Add LowEn or standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4LowEnergyIonisation, -1, 1, 1);
pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 2);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4eIonisation, -1, 1, 1);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2, 2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 3);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 1, 1);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,114 @@
//
// ********************************************************************
// * 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: PhysListEmPenelope.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysListEmPenelope.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4PenelopeCompton.hh"
#include "G4PenelopeGammaConversion.hh"
#include "G4PenelopePhotoElectric.hh"
#include "G4PenelopeRayleigh.hh"
#include "G4PenelopeIonisation.hh"
#include "G4PenelopeBremsstrahlung.hh"
#include "G4PenelopeAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
#include "G4ionIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
: G4VPhysicsConstructor(name)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysListEmPenelope::~PhysListEmPenelope()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmPenelope::ConstructProcess()
{
// Add Penelope or standard EM Processes
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric);
pmanager->AddDiscreteProcess(new G4PenelopeCompton);
pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion);
pmanager->AddDiscreteProcess(new G4PenelopeRayleigh);
} else if (particleName == "e-") {
//electron
pmanager->AddProcess(new G4PenelopeIonisation, -1, 1, 1);
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);
} else if (particleName == "e+") {
//positron
pmanager->AddProcess(new G4PenelopeIonisation, -1, 1, 1);
pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);
pmanager->AddProcess(new G4PenelopeAnnihilation, 0,-1, 3);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
pmanager->AddProcess(new G4MuIonisation, -1, 1, 1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2, 2);
pmanager->AddProcess(new G4MuPairProduction, -1, 3, 3);
} else if( particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4ionIonisation, -1, 1,1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4hIonisation, -1, 1, 1);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -23,9 +23,13 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListEmStandard.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "exrdmPhysListEmStandard.hh"
#include "PhysListEmStandard.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
@@ -33,8 +37,6 @@
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4MultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
@@ -48,20 +50,21 @@
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
exrdmPhysListEmStandard::exrdmPhysListEmStandard(const G4String& na)
: G4VPhysicsConstructor(na)
{name = na;}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
exrdmPhysListEmStandard::~exrdmPhysListEmStandard()
PhysListEmStandard::PhysListEmStandard(const G4String& name)
: G4VPhysicsConstructor(name)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void exrdmPhysListEmStandard::ConstructProcess()
PhysListEmStandard::~PhysListEmStandard()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysListEmStandard::ConstructProcess()
{
// Add standard EM Processes
//
theParticleIterator->reset();
while( (*theParticleIterator)() ){
@@ -70,43 +73,37 @@ void exrdmPhysListEmStandard::ConstructProcess()
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
pmanager->AddDiscreteProcess(new G4ComptonScattering);
pmanager->AddDiscreteProcess(new G4GammaConversion);
} else if (particleName == "e-") {
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
//electron
pmanager->AddProcess(new G4eIonisation, -1, 1,1);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2);
} else if (particleName == "e+") {
pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
pmanager->AddProcess(new G4eIonisation, -1, 2,2);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
} else if( particleName == "mu+" ||
//positron
pmanager->AddProcess(new G4eIonisation, -1, 1,1);
pmanager->AddProcess(new G4eBremsstrahlung, -1, 2,2);
pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,3);
} else if (particleName == "mu+" ||
particleName == "mu-" ) {
pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
} else if (particleName == "GenericIon") {
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
//muon
pmanager->AddProcess(new G4MuIonisation, -1, 1,1);
pmanager->AddProcess(new G4MuBremsstrahlung, -1, 2,2);
pmanager->AddProcess(new G4MuPairProduction, -1, 3,3);
} else if (particleName == "alpha" || particleName == "GenericIon" ) {
pmanager->AddProcess(new G4ionIonisation, -1, 1,1);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
// don't need these if standard hadron is used: std-h-em)
if (name != "std-h-em") {
pmanager->AddProcess(new G4MultipleScattering,-1,1,1);
pmanager->AddProcess(new G4hIonisation, -1,2,2);
}
//all others charged particles except geantino
pmanager->AddProcess(new G4hIonisation, -1,1,1);
}
}
}
@@ -0,0 +1,246 @@
//
// ********************************************************************
// * 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: PhysicsList.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsList.hh"
#include "PhysicsListMessenger.hh"
#include "PhysListEmStandard.hh"
#include "PhysListEmLivermore.hh"
#include "PhysListEmPenelope.hh"
#include "G4LossTableManager.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::PhysicsList() : G4VModularPhysicsList()
{
G4LossTableManager::Instance();
pMessenger = new PhysicsListMessenger(this);
// EM physics
emName = G4String("standard");
emPhysicsList = new PhysListEmStandard(emName);
defaultCutValue = 1.*mm;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
SetVerboseLevel(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsList::~PhysicsList()
{
delete emPhysicsList;
delete pMessenger;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>1) {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
}
if (name == emName) return;
if (name == "standard") {
emName = name;
delete emPhysicsList;
emPhysicsList = new PhysListEmStandard(name);
} else if (name == "livermore") {
emName = name;
delete emPhysicsList;
emPhysicsList = new PhysListEmLivermore(name);
} else if (name == "penelope") {
emName = name;
delete emPhysicsList;
emPhysicsList = new PhysListEmPenelope(name);
} else {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
<< " is not defined"
<< G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Bosons
#include "G4ChargedGeantino.hh"
#include "G4Geantino.hh"
#include "G4Gamma.hh"
// leptons
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "G4MuonPlus.hh"
#include "G4MuonMinus.hh"
// Mesons
#include "G4PionPlus.hh"
#include "G4PionMinus.hh"
#include "G4KaonPlus.hh"
#include "G4KaonMinus.hh"
// Baryons
#include "G4Proton.hh"
#include "G4AntiProton.hh"
#include "G4Neutron.hh"
#include "G4AntiNeutron.hh"
// Nuclei
#include "G4Deuteron.hh"
#include "G4Triton.hh"
#include "G4Alpha.hh"
#include "G4GenericIon.hh"
void PhysicsList::ConstructParticle()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4KaonPlus::KaonPlusDefinition();
G4KaonMinus::KaonMinusDefinition();
// baryons
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
// ions
G4Deuteron::DeuteronDefinition();
G4Triton::TritonDefinition();
G4Alpha::AlphaDefinition();
G4GenericIon::GenericIonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4EmProcessOptions.hh"
void PhysicsList::ConstructProcess()
{
AddTransportation();
emPhysicsList->ConstructProcess();
AddStepMax();
G4EmProcessOptions emOptions;
emOptions.SetBuildCSDARange(true);
emOptions.SetMaxEnergyForCSDARange(100*TeV);
emOptions.SetDEDXBinningForCSDARange(480);
emOptions.SetDEDXBinning(480);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4ProcessManager.hh"
#include "StepMax.hh"
void PhysicsList::AddStepMax()
{
// Step limitation seen as a process
StepMax* stepMaxProcess = new StepMax();
theParticleIterator->reset();
while ((*theParticleIterator)()){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (stepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
{
pmanager ->AddDiscreteProcess(stepMaxProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCuts()
{
if (verboseLevel >0){
G4cout << "PhysicsList::SetCuts:";
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
}
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForElectron, "e+");
if (verboseLevel>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForGamma(G4double cut)
{
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsList::SetCutForElectron(G4double cut)
{
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
SetParticleCuts(cutForElectron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,106 @@
//
// ********************************************************************
// * 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: PhysicsListMessenger.cc,v 1.1 2007/02/13 17:57:20 maire Exp $
// GEANT4 tag $Name: geant4-08-03 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PhysicsListMessenger.hh"
#include "PhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
:pPhysicsList(pPhys)
{
physDir = new G4UIdirectory("/testem/phys/");
physDir->SetGuidance("physics list commands");
pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
pListCmd->SetGuidance("Add modula physics list.");
pListCmd->SetParameterName("PList",false);
pListCmd->AvailableForStates(G4State_PreInit);
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
gammaCutCmd->SetGuidance("Set gamma cut.");
gammaCutCmd->SetParameterName("Gcut",false);
gammaCutCmd->SetUnitCategory("Length");
gammaCutCmd->SetRange("Gcut>0.0");
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
electCutCmd->SetGuidance("Set e-/e+ cut.");
electCutCmd->SetParameterName("Ecut",false);
electCutCmd->SetUnitCategory("Length");
electCutCmd->SetRange("Ecut>0.0");
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
allCutCmd->SetGuidance("Set cut for all.");
allCutCmd->SetParameterName("cut",false);
allCutCmd->SetUnitCategory("Length");
allCutCmd->SetRange("cut>0.0");
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PhysicsListMessenger::~PhysicsListMessenger()
{
delete pListCmd;
delete gammaCutCmd;
delete electCutCmd;
delete allCutCmd;
delete physDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PhysicsListMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
if (command == pListCmd)
{pPhysicsList->AddPhysicsList(newValue);}
if (command == gammaCutCmd)
{pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
if (command == electCutCmd)
{pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
if (command == allCutCmd)
{
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
pPhysicsList->SetCutForGamma(cut);
pPhysicsList->SetCutForElectron(cut);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

Some files were not shown because too many files have changed in this diff Show More