[904] | 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> |
---|