source: trunk/Documentation/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch06.html@ 901

Last change on this file since 901 was 901, checked in by garnier, 17 years ago

Add Geant4 Documentation at 8.12.2008

File size: 12.0 KB
Line 
1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 6.  User Actions</title><link rel="stylesheet" href="../xml/XSLCustomizationLayer/G4HTMLStylesheet.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.71.1"><link rel="start" href="index.html" title="Geant4 User's Guide for Application Developers"><link rel="up" href="index.html" title="Geant4 User's Guide for Application Developers"><link rel="prev" href="ch05s08.html" title="5.8.  Track Error Propagation"><link rel="next" href="ch06s02.html" title="6.2.  Optional User Actions"><script language="JavaScript">
2function remote_win(fName)
3{
4 var url = "AllResources/Detector/geometry.src/" + fName;
5 RemoteWin=window.open(url,"","resizable=no,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,copyhistory=0,width=520,height=520")
6 RemoteWin.creator=self
7}
8</script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. 
9User Actions
10</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05s08.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch06s02.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="chap.UserActions"></a>Chapter 6. 
11User Actions
12</h2></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sect.ManUAct"></a>6.1. 
13Mandatory User Actions and Initializations
14</h2></div></div></div><p>
15Geant4 has three virtual classes whose methods the user must
16override in order to implement a simulation. They require the user
17to define the detector, specify the physics to be used, and
18describe how initial particles are to be generated.
19</p><h5><a name="id490579"></a>
20<code class="literal">G4VUserDetectorConstruction</code>
21</h5><p>
22</p><div class="example"><a name="programlist_ManUAct_1"></a><p class="title"><b>Example 6.1. 
23<code class="literal">G4VUserDetectorConstruction</code>
24</b></p><div class="example-contents"><pre class="programlisting">
25 class G4VUserDetectorConstruction
26 {
27 public:
28 G4VUserDetectorConstruction();
29 virtual ~G4VUserDetectorConstruction();
30
31 public:
32 virtual G4VPhysicalVolume* Construct() = 0;
33 };
34</pre></div></div><p><br class="example-break">
35</p><h5><a name="id490620"></a>
36<code class="literal">G4VUserPhysicsList</code>
37</h5><p>
38This is an abstract class for constructing particles and
39processes. The user must derive a concrete class from it and
40implement three virtual methods:
41
42</p><div class="itemizedlist"><ul type="disc" compact><li><p>
43 <code class="literal">ConstructParticle()</code> to instantiate each requested
44 particle type,
45 </p></li><li><p>
46 <code class="literal">ConstructPhysics()</code> to instantiate the desired physics
47 processes and register each of them with the process managers of
48 the appropriate particles, and
49 </p></li><li><p>
50 <code class="literal">SetCuts(G4double aValue)</code> to set a cut value in range
51 for all particles in the particle table, which invokes the
52 rebuilding of the physics table.
53 </p></li></ul></div><p>
54</p><p>
55When called, the <code class="literal">Construct()</code> method of
56<span class="emphasis"><em>G4VUserPhysicsList</em></span> first invokes
57<code class="literal">ConstructParticle()</code> and then <code class="literal">ConstructProcess()</code>.
58The <code class="literal">ConstructProcess()</code> method must always invoke the
59<code class="literal">AddTransportation()</code> method in order to insure particle
60transportation. <code class="literal">AddTransportation()</code> must never be
61overridden.
62</p><p>
63<span class="emphasis"><em>G4VUserPhysicsList</em></span> provides several utility methods for
64the implementation of the above virtual methods. They are presented
65with comments in the class declaration in <a href="ch06.html#programlist_ManUAct_2" title="Example 6.2. 
66G4VUserPhysicsList
67">Example 6.2</a>.
68
69</p><div class="example"><a name="programlist_ManUAct_2"></a><p class="title"><b>Example 6.2. 
70<code class="literal">G4VUserPhysicsList</code>
71</b></p><div class="example-contents"><pre class="programlisting">
72class G4VUserPhysicsList
73{
74 public:
75 G4VUserPhysicsList();
76 virtual ~G4VUserPhysicsList();
77
78 public: // with description
79 // By calling the "Construct" method,
80 // particles and processes are created
81 void Construct();
82
83 protected: // with description
84 // These two methods of ConstructParticle() and ConstructProcess()
85 // will be invoked in the Construct() method.
86
87 // each particle type will be instantiated
88 virtual void ConstructParticle() = 0;
89
90 // each physics process will be instantiated and
91 // registered to the process manager of each particle type
92 virtual void ConstructProcess() = 0;
93
94 protected: // with description
95 // User must invoke this method in his ConstructProcess()
96 // implementation in order to insures particle transportation.
97 // !! Caution: this class must not be overriden !!
98 void AddTransportation();
99
100 /////////////////////////////////////////////////////////////////
101 public: // with description
102 // "SetCuts" method sets a cut value for all particle types
103 // in the particle table
104 virtual void SetCuts() = 0;
105
106 public: // with description
107 // set/get the default cut value
108 // Calling SetDefaultCutValue causes re-calcuration of cut values
109 // and physics tables just before the next event loop
110 void SetDefaultCutValue(G4double newCutValue);
111 G4double GetDefaultCutValue() const;
112</pre></div></div><p><br class="example-break">
113</p><div class="informalexample"><pre class="programlisting">
114 /////////////////////////////////////////////////////////////////////
115 public: // with description
116 // Invoke BuildPhysicsTable for all processes for all particles
117 // In case of "Retrieve" flag is ON, PhysicsTable will be
118 // retrieved from files
119 void BuildPhysicsTable();
120
121 // do BuildPhysicsTable for specified particle type
122 void BuildPhysicsTable(G4ParticleDefinition* );
123
124 // Store PhysicsTable together with both material and cut value
125 // information in files under the specified directory.
126 // (return true if files are sucessfully created)
127 G4bool StorePhysicsTable(const G4String&amp; directory = ".");
128
129 // Return true if "Retrieve" flag is ON.
130 // (i.e. PhysicsTable will be retrieved from files)
131 G4bool IsPhysicsTableRetrieved() const;
132 G4bool IsStoredInAscii() const;
133
134 // Get directory path for physics table files.
135 const G4String&amp; GetPhysicsTableDirectory() const;
136
137 // Set "Retrieve" flag
138 // Directory path can be set together.
139 // Null string (default) means directory is not changed
140 // from the current value
141 void SetPhysicsTableRetrieved(const G4String&amp; directory = "");
142 void SetStoredInAscii();
143
144 // Reset "Retrieve" flag
145 void ResetPhysicsTableRetrieved();
146 void ResetStoredInAscii();
147
148 ///////////////////////////////////////////////////////////////////////
149 public: // with description
150 // Print out the List of registered particles types
151 void DumpList() const;
152
153 public: // with description
154 // Request to print out information of cut values
155 // Printing will be performed when all tables are made
156 void DumpCutValuesTable(G4int nParticles=3);
157
158 // The following method actually trigger the print-out requested
159 // by the above method. This method must be invoked by RunManager
160 // at the proper moment.
161 void DumpCutValuesTableIfRequested();
162
163 public: // with description
164 void SetVerboseLevel(G4int value);
165 G4int GetVerboseLevel() const;
166 // set/get controle flag for output message
167 // 0: Silent
168 // 1: Warning message
169 // 2: More
170</pre></div><p>
171</p><div class="informalexample"><pre class="programlisting">
172 ///////////////////////////////////////////////////////////////////////////
173 public: // with description
174 // "SetCutsWithDefault" method sets the default cut value
175 // for all particles for the default region.
176 void SetCutsWithDefault();
177
178 // Following are utility methods for SetCuts
179
180 // SetCutValue sets a cut value for a particle type for the default region
181 void SetCutValue(G4double aCut, const G4String&amp; pname);
182
183 // SetCutValue sets a cut value for a particle type for a region
184 void SetCutValue(G4double aCut, const G4String&amp; pname, const G4String&amp; rname);
185
186 // Invoke SetCuts for specified particle for a region
187 // If the pointer to the region is NULL, the default region is used
188 // In case of "Retrieve" flag is ON,
189 // Cut values will be retrieved from files
190 void SetParticleCuts(G4double cut,G4ParticleDefinition* particle,G4Region* region=0);
191
192 // Invoke SetCuts for all particles in a region
193 void SetCutsForRegion(G4double aCut, const G4String&amp; rname);
194
195 // Following are utility methods are obsolete
196 void ResetCuts();
197
198///////////////////////////////////////////////////////////////////
199 public:
200 // Get/SetApplyCuts gets/sets the flag for ApplyCuts
201 void SetApplyCuts(G4bool value, const G4String&amp; name);
202 G4bool GetApplyCuts(const G4String&amp; name) const;
203
204///////////////////////////////////////////////////////////////////////////////
205 protected:
206 // do BuildPhysicsTable for make the integral schema
207 void BuildIntegralPhysicsTable(G4VProcess* ,G4ParticleDefinition* );
208
209
210 protected:
211 // Retrieve PhysicsTable from files for proccess belongng the particle.
212 // Normal BuildPhysics procedure of processes will be invoked,
213 // if it fails (in case of Process's RetrievePhysicsTable returns false)
214 virtual void RetrievePhysicsTable(G4ParticleDefinition* ,
215 const G4String&amp; directory,
216 G4bool ascii = false);
217
218 /////////////////////////////////////////////////////////////////
219 protected:
220 // adds new ProcessManager to all particles in the Particle Table
221 // this routine is used in Construct()
222 void InitializeProcessManager();
223
224 public: // with description
225 // remove and delete ProcessManagers for all particles in tha Particle Table
226 // this routine is invoked from RunManager
227 void RemoveProcessManager();
228
229 public: // with description
230 // add process manager for particles created on-the-fly
231 void AddProcessManager(G4ParticleDefinition* newParticle,
232 G4ProcessManager* newManager = 0 );
233
234};
235</pre></div><p>
236</p><h5><a name="id490880"></a>
237<code class="literal">G4VUserPrimaryGeneratorAction</code>
238</h5><p>
239</p><div class="example"><a name="programlist_ManUAct_3"></a><p class="title"><b>Example 6.3. 
240<code class="literal">G4VUserPrimaryGeneratorAction</code>
241</b></p><div class="example-contents"><pre class="programlisting">
242 class G4VUserPrimaryGeneratorAction
243 {
244 public:
245 G4VUserPrimaryGeneratorAction();
246 virtual ~G4VUserPrimaryGeneratorAction();
247
248 public:
249 virtual void GeneratePrimaries(G4Event* anEvent) = 0;
250 };
251</pre></div></div><p><br class="example-break">
252</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s08.html"><img src="AllResources/IconsGIF/prev.gif" alt="Prev"></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch06s02.html"><img src="AllResources/IconsGIF/next.gif" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">5.8. 
253Track Error Propagation
254 </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="AllResources/IconsGIF/home.gif" alt="Home"></a></td><td width="40%" align="right" valign="top"> 6.2. 
255Optional User Actions
256</td></tr></table></div></body></html>
Note: See TracBrowser for help on using the repository browser.