ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ProcessTable.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ProcessTable.hh
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 //
29 //
30 // ------------------------------------------------------------
31 // GEANT 4 class header file
32 //
33 // History: first implementation, based on object model of
34 // 4th Aug 1998, H.Kurashige
35 //
36 // Class Description
37 // This class is used for "book keeping" of all processes
38 // which are registered in all particles
39 //
40 // History:
41 // Added G4ProcessTableMesseneger 16 Aug. 1998, H.Kurashige
42 // Use STL vector instead of RW vector 1. Mar 00 H.Kurashige
43 //
44 // ------------------------------------------------------------
45 
46 #ifndef G4ProcessTable_h
47 #define G4ProcessTable_h 1
48 
49 #include "globals.hh"
50 #include "G4ios.hh"
51 #include <vector>
52 
53 #include "G4ProcTblElement.hh"
54 #include "G4ProcessVector.hh"
56 
57 class G4UImessenger;
59 
61 {
62 
64 
65  public:
67  // Constructors
68 
70  // Destructor
71 
72  private:
75  // Assignment operator
76  G4bool operator==(const G4ProcessTable &right) const;
77  G4bool operator!=(const G4ProcessTable &right) const;
78  // equal / unequal operator
79 
80 
81  public: // with description
83  // return the pointer to G4ProcessTable object
84  // G4ProcessTable is a "singleton" and can get its pointer by this function
85 
86  G4int Length() const;
87  // return the number of processes in the table
88 
89  G4int Insert(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
90  G4int Remove(G4VProcess* aProcess, G4ProcessManager* aProcMgr);
91  // insert and remove methods
92  // each process object is registered with information of process managers
93  // that use it.
94 
95  G4VProcess* FindProcess(const G4String& processName,
96  const G4String& particleName) const;
97  G4VProcess* FindProcess(const G4String& processName,
98  const G4ParticleDefinition* particle) const;
99  G4VProcess* FindProcess(const G4String& processName,
100  const G4ProcessManager* processManager) const;
101  // return the process pointer
102 
104  G4ProcessVector* FindProcesses( const G4ProcessManager* processManager );
105  G4ProcessVector* FindProcesses( const G4String& processName );
107  // return pointer of a process vector
108  // which includes processes specified
109  // Note:: User is responsible to delete this process vector object
110 
111  void SetProcessActivation( const G4String& processName,
112  G4bool fActive);
113  void SetProcessActivation( const G4String& processName,
114  const G4String& particleName,
115  G4bool fActive );
116  void SetProcessActivation( const G4String& processName,
118  G4bool fActive );
119  void SetProcessActivation( const G4String& processName,
120  G4ProcessManager* processManager,
121  G4bool fActive );
122  void SetProcessActivation( G4ProcessType processType,
123  G4bool fActive );
124  void SetProcessActivation( G4ProcessType processType,
125  const G4String& particleName,
126  G4bool fActive );
127  void SetProcessActivation( G4ProcessType processType,
129  G4bool fActive );
130  void SetProcessActivation( G4ProcessType processType,
131  G4ProcessManager* processManager,
132  G4bool fActive );
133  // These methods are provided to activate or inactivate processes
134 
135  public:
136  typedef std::vector<G4ProcTblElement*> G4ProcTableVector;
137  typedef std::vector<G4String> G4ProcNameVector;
138 
139  public: // with description
141  // return pointer of the list of process name
142 
144  // return pointer of the vector of G4ProcTblElement
145 
146  private:
147  G4ProcTableVector* Find( G4ProcTableVector* procTableVector,
148  const G4String& processName );
149  G4ProcTableVector* Find( G4ProcTableVector* procTableVector,
150  G4ProcessType processType );
151  // return pointer of a ProcTableVector
152  // which includes ProcTbleElement specified
153 
155  // extract all process objects from the process table
156 
157  public: // with description
159  // dump out information of the process table
160  // second argument is used to specify processes designated by a particle
161 
162  public: // with description
164  G4int GetVerboseLevel() const;
165  // Set/Get controle flag for output message
166  // 0: Silent
167  // 1: Warning message
168  // 2: More
169 
170 
171  private:
174 
175  private:
178  // list of G4ProcTblElement
179 
181  // used only internaly for temporary buffer.
182 
183  private:
185  // controle flag for output message
186 
187 };
188 
189 #include "G4ProcessTable.icc"
190 #endif