| 1 | <!-- ******************************************************** -->
|
|---|
| 2 | <!-- -->
|
|---|
| 3 | <!-- [History] -->
|
|---|
| 4 | <!-- Created by: Makoto Asai, 30-Mar-2006 -->
|
|---|
| 5 | <!-- Converted to DocBook: Katsuya Amako, Aug-2006 -->
|
|---|
| 6 | <!-- -->
|
|---|
| 7 | <!-- ******************************************************** -->
|
|---|
| 8 |
|
|---|
| 9 |
|
|---|
| 10 | <!-- ******************* Section (Level#1) ****************** -->
|
|---|
| 11 | <sect1 id="sect.Ulim">
|
|---|
| 12 | <title>
|
|---|
| 13 | User Limits
|
|---|
| 14 | </title>
|
|---|
| 15 |
|
|---|
| 16 |
|
|---|
| 17 | <!-- ******************* Section (Level#2) ****************** -->
|
|---|
| 18 | <sect2 id="sect.Ulim.Gene">
|
|---|
| 19 | <title>
|
|---|
| 20 | General Concepts
|
|---|
| 21 | </title>
|
|---|
| 22 |
|
|---|
| 23 | <para>
|
|---|
| 24 | The user can define artificial limits affecting to the Geant4
|
|---|
| 25 | tracking.
|
|---|
| 26 |
|
|---|
| 27 | <informalexample>
|
|---|
| 28 | <programlisting>
|
|---|
| 29 | G4UserLimits(G4double uStepMax = DBL_MAX,
|
|---|
| 30 | G4double uTrakMax = DBL_MAX,
|
|---|
| 31 | G4double uTimeMax = DBL_MAX,
|
|---|
| 32 | G4double uEkinMin = 0.,
|
|---|
| 33 | G4double uRangMin = 0. );
|
|---|
| 34 | </programlisting>
|
|---|
| 35 | </informalexample>
|
|---|
| 36 |
|
|---|
| 37 | <informaltable>
|
|---|
| 38 | <tgroup cols="2">
|
|---|
| 39 | <tbody>
|
|---|
| 40 | <row>
|
|---|
| 41 | <entry>
|
|---|
| 42 | <literal>uStepMax</literal>
|
|---|
| 43 | </entry>
|
|---|
| 44 | <entry>
|
|---|
| 45 | Maximum step length
|
|---|
| 46 | </entry>
|
|---|
| 47 | </row>
|
|---|
| 48 | <row>
|
|---|
| 49 | <entry>
|
|---|
| 50 | <literal>uTrakMax</literal>
|
|---|
| 51 | </entry>
|
|---|
| 52 | <entry>
|
|---|
| 53 | Maximum total track length
|
|---|
| 54 | </entry>
|
|---|
| 55 | </row>
|
|---|
| 56 | <row>
|
|---|
| 57 | <entry>
|
|---|
| 58 | <literal>uTimeMax</literal>
|
|---|
| 59 | </entry>
|
|---|
| 60 | <entry>
|
|---|
| 61 | Maximum global time for a track
|
|---|
| 62 | </entry>
|
|---|
| 63 | </row>
|
|---|
| 64 | <row>
|
|---|
| 65 | <entry>
|
|---|
| 66 | <literal>uEkinMin</literal>
|
|---|
| 67 | </entry>
|
|---|
| 68 | <entry>
|
|---|
| 69 | Minimum remaining kinetic energy for a track
|
|---|
| 70 | </entry>
|
|---|
| 71 | </row>
|
|---|
| 72 | <row>
|
|---|
| 73 | <entry>
|
|---|
| 74 | <literal>uRangMin</literal>
|
|---|
| 75 | </entry>
|
|---|
| 76 | <entry>
|
|---|
| 77 | Minimum remaining range for a track
|
|---|
| 78 | </entry>
|
|---|
| 79 | </row>
|
|---|
| 80 | </tbody>
|
|---|
| 81 | </tgroup>
|
|---|
| 82 | </informaltable>
|
|---|
| 83 |
|
|---|
| 84 | Note that <literal>uStepMax</literal> is affecting to each step, while all
|
|---|
| 85 | other limits are affecting to a track.
|
|---|
| 86 | </para>
|
|---|
| 87 |
|
|---|
| 88 | <para>
|
|---|
| 89 | The user can set <literal>G4UserLimits</literal> to logical volume and/or
|
|---|
| 90 | to a region. User limits assigned to logical volume do not
|
|---|
| 91 | propagate to daughter volumes, while User limits assigned to region
|
|---|
| 92 | propagate to daughter volumes unless daughters belong to another
|
|---|
| 93 | region. If both logical volume and associated region have user
|
|---|
| 94 | limits, those of logical volume win.
|
|---|
| 95 | </para>
|
|---|
| 96 |
|
|---|
| 97 | </sect2>
|
|---|
| 98 |
|
|---|
| 99 |
|
|---|
| 100 | <!-- ******************* Section (Level#2) ****************** -->
|
|---|
| 101 | <sect2 id="sect.Ulim.Proc">
|
|---|
| 102 | <title>
|
|---|
| 103 | Processes co-working with G4UserLimits
|
|---|
| 104 | </title>
|
|---|
| 105 |
|
|---|
| 106 | <para>
|
|---|
| 107 | In addition to instantiating <literal>G4UserLimits</literal> and setting it
|
|---|
| 108 | to logical volume or region, the user has to assign the following
|
|---|
| 109 | process(es) to particle types he/she wants to affect. If none of
|
|---|
| 110 | these processes is assigned, that kind of particle is not affected
|
|---|
| 111 | by <literal>G4UserLimits</literal>.
|
|---|
| 112 |
|
|---|
| 113 | <variablelist>
|
|---|
| 114 | <varlistentry>
|
|---|
| 115 | <term>
|
|---|
| 116 | Limitation to step (<literal>uStepMax</literal>)
|
|---|
| 117 | </term>
|
|---|
| 118 | <listitem><para>
|
|---|
| 119 | <literal>G4StepLimiter</literal> process must be defined to affected
|
|---|
| 120 | particle types. This process limits a step, but it does not kill a
|
|---|
| 121 | track.
|
|---|
| 122 | </para></listitem>
|
|---|
| 123 | </varlistentry>
|
|---|
| 124 | <varlistentry>
|
|---|
| 125 | <term>
|
|---|
| 126 | Limitations to track (<literal>uTrakMax, uTimeMax, uEkinMin,
|
|---|
| 127 | uRangMin</literal>)
|
|---|
| 128 | </term>
|
|---|
| 129 | <listitem><para>
|
|---|
| 130 | <literal>G4UserSpecialCuts</literal> process must be defined to affected
|
|---|
| 131 | particle types. This process limits a step and kills the track when
|
|---|
| 132 | the track comes to one of these limits. Step limitation occurs only
|
|---|
| 133 | for the final step.
|
|---|
| 134 | </para></listitem>
|
|---|
| 135 | </varlistentry>
|
|---|
| 136 | </variablelist>
|
|---|
| 137 | </para>
|
|---|
| 138 |
|
|---|
| 139 | <para>
|
|---|
| 140 | Example of <literal>G4UserLimits</literal> can be found in
|
|---|
| 141 | examples/novice/N02 : see <literal>DetectorConstruction</literal> and
|
|---|
| 142 | <literal>PhysicsList</literal>.
|
|---|
| 143 | </para>
|
|---|
| 144 |
|
|---|
| 145 |
|
|---|
| 146 | </sect2>
|
|---|
| 147 | </sect1> |
|---|