Geant4
9.6.p02
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
geant4_9_6_p02
source
run
include
G4VUserPhysicsList.hh
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
//
27
// $Id$
28
//
29
//
30
// ------------------------------------------------------------
31
// GEANT 4 class header file
32
// Class Description:
33
// This class is an abstract class for
34
// constructing particles and processes.
35
// User must implement following three virtual methods
36
// in his/her own concrete class derived from this class.
37
// G4VUserPhysicsList::ConstructParticle()
38
// Construct particles
39
// G4VUserPhysicsList::ConstructProcess()
40
// Construct procesess and register them to particles
41
//
42
// -------------------------------------------
43
// History
44
// first version 09 Jan. 1998 by H.Kurashige
45
// modified 24 Jan. 1998 by H.Kurashige
46
// rename DumpCutValues/DumpCutValuesTable
47
// change SetCuts method
48
// add SetCutsWithDefault method
49
// modified 06 June 1998 by H.Kurashige
50
// add AddProcessManager
51
// add BuildPhysicsTable
52
// modified 29 June 1998 by H.Kurashige
53
// add AddProcessManager
54
// modified 05 Dec. 1998 by H.Kurashige
55
// add ConstructAllParticles()
56
// modified 14, Apr 1999 by H.Kurashige
57
// change BuildPhysicsTable as public
58
// removed ConstructAllParticles() and related methods
59
// changed SetCuts method argument
60
// modified 08, Nov 2000 by H.Kurashige
61
// added Retrieve/StorePhysicsTable and related methods
62
// modified 08, Mar 2001 by H.Kurashige
63
// added binary mode for Retrieve/StorePhysicsTable
64
// added RetrieveCutValues and related
65
// added Set/ResetStoredInAscii() to switch on ascii mode
66
// for Retrieve/StorePhysicsTable
67
// modified for CUTS per REGION 10, Oct 2002 by H.Kurashige
68
// removed following methods
69
// void ReCalcCutValue()
70
// void SetCutValueForOthers()
71
// void SetCutValueForOtherThan()
72
// void ReCalcCutValueForOthers()
73
// virtual G4bool StoreMaterialInfo()
74
// virtual G4bool StoreCutValues()
75
// virtual G4bool RetrieveCutValues()
76
// virtual G4bool CheckForRetrievePhysicsTable()
77
// virtual G4bool CheckMaterialInfo()
78
// added void BuildPhysicsTable()
79
// Added PhysicsListHelper 29 Apr. 2011 H.Kurashige
80
// Added default impelmentation of SetCuts 10 June 2011 H.Kurashige
81
// SetCuts is not 'pure virtual' any more
82
// ------------------------------------------------------------
83
#ifndef G4VUserPhysicsList_h
84
#define G4VUserPhysicsList_h 1
85
#include "
globals.hh
"
86
#include "
G4ios.hh
"
87
88
#include "
G4ParticleTable.hh
"
89
#include "
G4ParticleDefinition.hh
"
90
#include "
G4ProductionCutsTable.hh
"
91
92
class
G4UserPhysicsListMessenger
;
93
class
G4PhysicsListHelper
;
94
class
G4VProcess
;
95
96
class
G4VUserPhysicsList
97
{
98
public
:
99
G4VUserPhysicsList
();
100
virtual
~G4VUserPhysicsList
();
101
102
// copy constructor and assignment operator
103
G4VUserPhysicsList
(
const
G4VUserPhysicsList
&);
104
G4VUserPhysicsList
&
operator=
(
const
G4VUserPhysicsList
&);
105
106
public
:
// with description
107
// Each particle type will be instantiated
108
// This method is invoked by the RunManger
109
virtual
void
ConstructParticle
() = 0;
110
111
// By calling the "Construct" method,
112
// process manager and processes are created.
113
void
Construct
();
114
115
// Each physics process will be instantiated and
116
// registered to the process manager of each particle type
117
// This method is invoked in Construct method
118
virtual
void
ConstructProcess
() = 0;
119
120
protected
:
// with description
121
// User must invoke this method in his ConstructProcess()
122
// implementation in order to insures particle transportation.
123
void
AddTransportation
();
124
125
//Register a process to the particle type
126
// according to the ordering parameter table
127
// 'true' is returned if the process is registerd successfully
128
G4bool
RegisterProcess
(
G4VProcess
* process,
129
G4ParticleDefinition
* particle);
130
131
public
:
132
void
UseCoupledTransportation
(
G4bool
vl=
true
);
133
135
public
:
// with description
136
// "SetCuts" method sets a cut value for all particle types
137
// in the particle table
138
virtual
void
SetCuts
();
139
140
public
:
// with description
141
// set/get the default cut value
142
// Calling SetDefaultCutValue causes re-calcuration of cut values
143
// and physics tables just before the next event loop
144
void
SetDefaultCutValue
(
G4double
newCutValue);
145
G4double
GetDefaultCutValue
()
const
;
146
148
public
:
// with description
149
// Invoke BuildPhysicsTable for all processes for all particles
150
// In case of "Retrieve" flag is ON, PhysicsTable will be
151
// retrieved from files
152
void
BuildPhysicsTable
();
153
154
// do PreparePhysicsTable for specified particle type
155
void
PreparePhysicsTable
(
G4ParticleDefinition
* );
156
157
// do BuildPhysicsTable for specified particle type
158
void
BuildPhysicsTable
(
G4ParticleDefinition
* );
159
160
// Store PhysicsTable together with both material and cut value
161
// information in files under the specified directory.
162
// (return true if files are sucessfully created)
163
G4bool
StorePhysicsTable
(
const
G4String
& directory =
"."
);
164
165
// Return true if "Retrieve" flag is ON.
166
// (i.e. PhysicsTable will be retrieved from files)
167
G4bool
IsPhysicsTableRetrieved
()
const
;
168
G4bool
IsStoredInAscii
()
const
;
169
170
// Get directory path for physics table files.
171
const
G4String
&
GetPhysicsTableDirectory
()
const
;
172
173
// Set "Retrieve" flag
174
// Directory path can be set together.
175
// Null string (default) means directory is not changed
176
// from the current value
177
void
SetPhysicsTableRetrieved
(
const
G4String
& directory =
""
);
178
void
SetStoredInAscii
();
179
180
// Reset "Retrieve" flag
181
void
ResetPhysicsTableRetrieved
();
182
void
ResetStoredInAscii
();
183
185
public
:
// with description
186
// Print out the List of registered particles types
187
void
DumpList
()
const
;
188
189
public
:
// with description
190
// Request to print out information of cut values
191
// Printing will be performed when all tables are made
192
void
DumpCutValuesTable
(
G4int
flag =1);
193
194
// The following method actually trigger the print-out requested
195
// by the above method. This method must be invoked by RunManager
196
// at the proper moment.
197
void
DumpCutValuesTableIfRequested
();
198
199
public
:
// with description
200
void
SetVerboseLevel
(
G4int
value
);
201
G4int
GetVerboseLevel
()
const
;
202
// set/get controle flag for output message
203
// 0: Silent
204
// 1: Warning message
205
// 2: More
206
208
public
:
// with description
209
// "SetCutsWithDefault" method invokes default SetCuts method
210
// Note: Cut values will not be overwriten with this method
211
// Using default SetCuts method is recommended
212
// (i.e You do not need to implement SetCuts method)
213
void
SetCutsWithDefault
();
214
215
// Following are utility methods for SetCuts
216
217
// SetCutValue sets a cut value for a particle type for the default region
218
void
SetCutValue
(
G4double
aCut,
const
G4String
&
pname
);
219
220
// GetCutValue sets a cut value for a particle type for the default region
221
G4double
GetCutValue
(
const
G4String
& pname)
const
;
222
223
// SetCutValue sets a cut value for a particle type for a region
224
void
SetCutValue
(
G4double
aCut,
const
G4String
& pname,
const
G4String
& rname);
225
226
// Invoke SetCuts for specified particle for a region
227
// If the pointer to the region is NULL, the default region is used
228
// In case of "Retrieve" flag is ON,
229
// Cut values will be retrieved from files
230
void
SetParticleCuts
(
G4double
cut,
G4ParticleDefinition
* particle,
G4Region
* region=0);
231
void
SetParticleCuts
(
G4double
cut,
const
G4String
& particleName,
G4Region
* region=0);
232
233
// Invoke SetCuts for all particles in a region
234
void
SetCutsForRegion
(
G4double
aCut,
const
G4String
& rname);
235
236
// Following are utility methods are obsolete
237
void
ResetCuts
();
238
240
public
:
241
// Get/SetApplyCuts gets/sets the flag for ApplyCuts
242
void
SetApplyCuts
(
G4bool
value,
const
G4String
&
name
);
243
G4bool
GetApplyCuts
(
const
G4String
& name)
const
;
244
246
protected
:
247
// do BuildPhysicsTable for make the integral schema
248
void
BuildIntegralPhysicsTable
(
G4VProcess
* ,
G4ParticleDefinition
* );
249
250
251
protected
:
252
// Retrieve PhysicsTable from files for proccess belongng the particle.
253
// Normal BuildPhysics procedure of processes will be invoked,
254
// if it fails (in case of Process's RetrievePhysicsTable returns false)
255
virtual
void
RetrievePhysicsTable
(
G4ParticleDefinition
* ,
256
const
G4String
& directory,
257
G4bool
ascii =
false
);
258
260
protected
:
261
// adds new ProcessManager to all particles in the Particle Table
262
// this routine is used in Construct()
263
void
InitializeProcessManager
();
264
265
public
:
// with description
266
// remove and delete ProcessManagers for all particles in tha Particle Table
267
// this routine is invoked from RunManager
268
void
RemoveProcessManager
();
269
270
public
:
// with description
271
// add process manager for particles created on-the-fly
272
void
AddProcessManager
(
G4ParticleDefinition
* newParticle,
273
G4ProcessManager
* newManager = 0 );
274
276
public
:
277
// check consistencies of list of particles
278
279
void
CheckParticleList
();
280
281
void
DisableCheckParticleList
();
282
284
protected
:
285
// the particle table has the complete List of existing particle types
286
G4ParticleTable
*
theParticleTable
;
287
G4ParticleTable::G4PTblDicIterator
*
theParticleIterator
;
288
289
protected
:
290
// pointer to G4UserPhysicsListMessenger
291
G4UserPhysicsListMessenger
*
theMessenger
;
292
293
protected
:
294
G4int
verboseLevel
;
295
296
protected
:
297
// this is the default cut value for all particles
298
G4double
defaultCutValue
;
299
G4bool
isSetDefaultCutValue
;
300
301
protected
:
302
// pointer to ProductionCutsTable
303
G4ProductionCutsTable
*
fCutsTable
;
304
305
// flag to determine physics table will be build from file or not
306
G4bool
fRetrievePhysicsTable
;
307
G4bool
fStoredInAscii
;
308
309
G4bool
fIsCheckedForRetrievePhysicsTable
;
310
G4bool
fIsRestoredCutValues
;
311
312
// directory name for physics table files
313
G4String
directoryPhysicsTable
;
314
315
// flag for displaying the range cuts & energy thresholds
316
G4int
fDisplayThreshold
;
317
318
// flag for Physics Table has been built
319
G4bool
fIsPhysicsTableBuilt
;
320
321
// flag for CheckParticleList
322
G4bool
fDisableCheckParticleList
;
323
324
// PhysicsListHelper
325
G4PhysicsListHelper
*
thePLHelper
;
326
327
private
:
328
enum
{ FixedStringLengthForStore = 32 };
329
330
331
};
332
333
inline
void
G4VUserPhysicsList::Construct
()
334
{
335
#ifdef G4VERBOSE
336
if
(
verboseLevel
>1)
G4cout
<<
"G4VUserPhysicsList::Construct()"
<<
G4endl
;
337
#endif
338
339
InitializeProcessManager
();
340
341
#ifdef G4VERBOSE
342
if
(
verboseLevel
>1)
G4cout
<<
"Construct processes "
<<
G4endl
;
343
#endif
344
ConstructProcess
();
345
346
}
347
348
inline
G4double
G4VUserPhysicsList::GetDefaultCutValue
()
const
349
{
350
return
defaultCutValue
;
351
}
352
353
354
inline
G4int
G4VUserPhysicsList::GetVerboseLevel
()
const
355
{
356
return
verboseLevel
;
357
}
358
359
inline
360
G4bool
G4VUserPhysicsList::IsPhysicsTableRetrieved
()
const
361
{
362
return
fRetrievePhysicsTable
;
363
}
364
365
inline
366
G4bool
G4VUserPhysicsList::IsStoredInAscii
()
const
367
{
368
return
fStoredInAscii
;
369
}
370
371
inline
372
const
G4String
&
G4VUserPhysicsList::GetPhysicsTableDirectory
()
const
373
{
374
return
directoryPhysicsTable
;
375
}
376
377
inline
378
void
G4VUserPhysicsList::SetStoredInAscii
()
379
{
380
fStoredInAscii
=
true
;
381
}
382
383
384
inline
385
void
G4VUserPhysicsList::ResetPhysicsTableRetrieved
()
386
{
387
fRetrievePhysicsTable
=
false
;
388
fIsRestoredCutValues
=
false
;
389
fIsCheckedForRetrievePhysicsTable
=
false
;
390
}
391
392
393
inline
394
void
G4VUserPhysicsList::ResetStoredInAscii
()
395
{
396
fStoredInAscii
=
false
;
397
}
398
399
inline
400
void
G4VUserPhysicsList::DisableCheckParticleList
()
401
{
402
fDisableCheckParticleList
=
true
;
403
}
404
405
#endif
406
Generated on Sat May 25 2013 14:34:11 for Geant4 by
1.8.4