<!-- ******************************************************** -->
<!--  Docbook Version:  For Toolkit Developers Guide          -->
<!-- ******************************************************** -->

<!-- ******************** Top of Section ******************** -->
<sect1 id="sect.DsgnFuncPhysProc">
<title>
Physics Processes
</title>

<!-- ******************* Section (Level#2) ****************** -->
<sect2 id="sect.DsgnFuncPhysProc.DsgPhlsp">
<title>
Design Philosophy
</title>

<para>
The processes category contains the implementations of particle transportation 
and physical interactions.  All physics process conform to the basic interface 
<literal>G4VProcess</literal>, but different approaches have been developed for 
the detailed design of each sub-category.
</para>

<para>
For the decay sub-category, the decays of all long-lived, unstable particles 
are handled by a single process.  This process gets the step length from the
mean life of the particle.  The generation of decay products requires a 
knowledge of the branching ratios and/or data distributions stored in the 
particle class.
</para>

<para>
The electromagnetic sub-category is divided further into the following 
packages:

<itemizedlist spacing="compact">
  <listitem><para>
    <literal>standard</literal>: handling basic properties for electron, 
    positron, photon and hadron interactions,
  </para></listitem>
  <listitem><para>
    <literal>low energy</literal>: providing alternative models extended down 
    to lower energies than the standard package, 
  </para></listitem>
  <listitem><para>
    <literal>muons</literal>: handling muon interactions,
  </para></listitem>
  <listitem><para>
    <literal>x-rays</literal>: providing specific code for x-ray physics,
  </para></listitem>
  <listitem><para>
    <literal>optical</literal>: providing specific code for optical photons,
  </para></listitem>
  <listitem><para>
    <literal>utils</literal>: collecting utility classes used by the above 
    packages.
  </para></listitem>
</itemizedlist>
</para>

<para>
It provides the features of openness and extensibilty resulting from the use 
of object-oriented technology;  alternative physics models, obeying the same
process abstract interface, are often available for a given type of 
interaction.
</para>

<para>
For hadronic physics, an additional set of implementation frameworks was
added to accommodate the large number of possible modeling approaches.
The top-level framework provides the basic interface to other Geant4
categories.  It satisfies the most general use-case for hadronic shower
simulations, namely to provide inclusive cross sections and final state
generation.  The frameworks are then refined for increasingly specific
use-cases, building a hierarchy in which each level implements the 
interface specified by the level above it.  A given hadronic process may
be implemented at any one of these levels.  For example, the process 
may be implemented by one of several models, and each of the models may
in turn be implemented by several sub-models at the lower framework levels.
</para>

</sect2>

<!-- ******************* Section (Level#2) ****************** -->
<sect2 id="sect.DsgnFuncPhysProc.ClassDsg">
<title>
Class Design
</title>

<!-- ******************* Section (Level#3) ****************** -->
<sect3 id="sect.DsgnFuncPhysProc.ClassDsg.Gen">
<title>
General
</title>

<para>
The object-oriented design of the generic physics process G4VProcess and its
relation to the process manager is shown in <xref linkend="fig.DsgnFuncPhysProc_1" />.  
<xref linkend="fig.DsgnFuncPhysProc_2" /> shows how specific physics processes are 
related to G4VProcess.

<figure id="fig.DsgnFuncPhysProc_1">
<title>
  Management of Physics Processes
</title>
<mediaobject>
  <imageobject role="fo">
    <imagedata fileref="./AllResources/OOAnalysisDesign/PhysicsProcesses/classDgmProcessMain.jpg"
               format="JPG" contentwidth="10.0cm" align="center" />
  </imageobject>
  <imageobject role="html">
    <imagedata fileref="./AllResources/OOAnalysisDesign/PhysicsProcesses/classDgmProcessMain.jpg"
               format="JPG" contentwidth="120%" align="center" />
  </imageobject>
</mediaobject>
</figure>

<figure id="fig.DsgnFuncPhysProc_2">
<title>
  Management of Physics Processes
</title>
<mediaobject>
  <imageobject role="fo">
    <imagedata fileref="./AllResources/OOAnalysisDesign/PhysicsProcesses/classDgmProcessProcesses.jpg"
               format="JPG" contentwidth="10.0cm" align="center" />
  </imageobject>
  <imageobject role="html">
    <imagedata fileref="./AllResources/OOAnalysisDesign/PhysicsProcesses/classDgmProcessProcesses.jpg"
               format="JPG" contentwidth="120%" align="center" />
  </imageobject>
</mediaobject>
</figure>
</para>

</sect3>

<!-- ******* Bridgehead ******* -->
<bridgehead role="revisionHistory" renderas='sect4'>
[Status of this chapter]
</bridgehead>

<para>
<simplelist type="var">
  <member>
    27.06.05 section on design philosophy added by D.H. Wright
  </member>
  <member>
    Dec. 2006 Conversion from latex to Docbook verson by K. Amako
  </member>
</simplelist>
</para>

</sect2>
</sect1>
