Import Geant4 8.3.0 source tree
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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>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>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
@@ -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
@@ -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
@@ -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
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
+48
-35
@@ -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
|
||||
|
||||
+8
-18
@@ -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......
|
||||
+11
-13
@@ -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......
|
||||
+20
-30
@@ -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......
|
||||
+57
-61
@@ -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......
|
||||
|
||||
+34
-37
@@ -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
Reference in New Issue
Block a user