Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ProcessTable.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//
28// $Id$
29//
30//
31// ------------------------------------------------------------
32// GEANT 4 class header file
33//
34// History: first implementation, based on object model of
35// 4th Aug 1998, H.Kurashige
36//
37// Class Description
38// This class is used for "book keeping" of all processes
39// which are registered in all particles
40//
41// History:
42// Added G4ProcessTableMesseneger 16 Aug. 1998, H.Kurashige
43// Use STL vector instead of RW vector 1. Mar 00 H.Kurashige
44//
45// ------------------------------------------------------------
46
47#ifndef G4ProcessTable_h
48#define G4ProcessTable_h 1
49
50#include "globals.hh"
51#include "G4ios.hh"
52#include <vector>
53
54#include "G4ProcTblElement.hh"
55#include "G4ProcessVector.hh"
56class G4UImessenger;
58
60{
61 public:
63 // Constructors
64
66 // Destructor
67
68 private:
69 G4ProcessTable(const G4ProcessTable &right);
70 G4ProcessTable & operator=(const G4ProcessTable &right);
71 // Assignment operator
72 G4int operator==(const G4ProcessTable &right) const;
73 G4int operator!=(const G4ProcessTable &right) const;
74 // equal / unequal operator
75
76
77 public: // with description
79 // return the pointer to G4ProcessTable object
80 // G4ProcessTable is a "singleton" and can get its pointer by this function
81
82 G4int Length() const;
83 // return the number of processes in the table
84
85 G4int Insert(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
86 G4int Remove(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
87 // insert and remove methods
88 // each process object is registered with information of process managers
89 // that use it.
90
91 G4VProcess* FindProcess(const G4String& processName,
92 const G4String& particleName) const;
93 G4VProcess* FindProcess(const G4String& processName,
94 const G4ParticleDefinition* particle) const;
95 G4VProcess* FindProcess(const G4String& processName,
96 const G4ProcessManager* processManager) const;
97 // return the process pointer
98
100 G4ProcessVector* FindProcesses( const G4ProcessManager* processManager );
101 G4ProcessVector* FindProcesses( const G4String& processName );
103 // return pointer of a process vector
104 // which includes processes specified
105 // Note:: User is responsible to delete this process vector object
106
107 void SetProcessActivation( const G4String& processName,
108 G4bool fActive);
109 void SetProcessActivation( const G4String& processName,
110 const G4String& particleName,
111 G4bool fActive );
112 void SetProcessActivation( const G4String& processName,
113 G4ParticleDefinition* particle,
114 G4bool fActive );
115 void SetProcessActivation( const G4String& processName,
116 G4ProcessManager* processManager,
117 G4bool fActive );
118 void SetProcessActivation( G4ProcessType processType,
119 G4bool fActive );
121 const G4String& particleName,
122 G4bool fActive );
124 G4ParticleDefinition* particle,
125 G4bool fActive );
126 void SetProcessActivation( G4ProcessType processType,
127 G4ProcessManager* processManager,
128 G4bool fActive );
129 // These methods are provided to activate or inactivate processes
130
131 public:
132 typedef std::vector<G4ProcTblElement*> G4ProcTableVector;
133 typedef std::vector<G4String> G4ProcNameVector;
134
135 public: // with description
137 // return pointer of the list of process name
138
140 // return pointer of the vector of G4ProcTblElement
141
142 private:
143 G4ProcTableVector* Find( G4ProcTableVector* procTableVector,
144 const G4String& processName );
145 G4ProcTableVector* Find( G4ProcTableVector* procTableVector,
146 G4ProcessType processType );
147 // return pointer of a ProcTableVector
148 // which includes ProcTbleElement specified
149
150 G4ProcessVector* ExtractProcesses( G4ProcTableVector* procTableVector);
151 // extract all process objects from the process table
152
153 public: // with description
154 void DumpInfo(G4VProcess* process, G4ParticleDefinition* particle=0);
155 // dump out information of the process table
156 // second argument is used to specify processes designated by a particle
157
158 public: // with description
160 void DeleteMessenger();
161 // These methods are used by RunManager to let the process table
162 // know the timing of creation/destructuion of messengers
163
164 public: // with description
167 // Set/Get controle flag for output message
168 // 0: Silent
169 // 1: Warning message
170 // 2: More
171
172
173 private:
174 static G4ProcessTable* fProcessTable;
175 G4ProcessTableMessenger* fProcTblMessenger;
176
177 private:
178 G4ProcTableVector* fProcTblVector;
179 G4ProcNameVector* fProcNameVector;
180 // list of G4ProcTblElement
181
182 G4ProcTableVector* tmpTblVector;
183 // used only internaly for temporary buffer.
184
185 private:
186 G4int verboseLevel;
187 // controle flag for output message
188
189};
190
191#include "G4ProcessTable.icc"
192#endif
G4ProcessType
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
void DumpInfo(G4VProcess *process, G4ParticleDefinition *particle=0)
static G4ProcessTable * GetProcessTable()
G4VProcess * FindProcess(const G4String &processName, const G4String &particleName) const
void SetProcessActivation(const G4String &processName, G4ParticleDefinition *particle, G4bool fActive)
G4VProcess * FindProcess(const G4String &processName, const G4ParticleDefinition *particle) const
G4int Insert(G4VProcess *aProcess, G4ProcessManager *aProcMgr)
std::vector< G4ProcTblElement * > G4ProcTableVector
G4int Length() const
G4UImessenger * CreateMessenger()
G4ProcNameVector * GetNameList()
G4int GetVerboseLevel() const
void SetProcessActivation(G4ProcessType processType, const G4String &particleName, G4bool fActive)
std::vector< G4String > G4ProcNameVector
G4int Remove(G4VProcess *aProcess, G4ProcessManager *aProcMgr)
G4ProcTableVector * GetProcTableVector()
void SetProcessActivation(const G4String &processName, G4bool fActive)
void SetProcessActivation(const G4String &processName, const G4String &particleName, G4bool fActive)
void SetProcessActivation(G4ProcessType processType, G4ParticleDefinition *particle, G4bool fActive)
G4ProcessVector * FindProcesses()
void SetVerboseLevel(G4int value)