Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/management/include/G4ParticleTable.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /particles/management/include/G4ParticleTable.hh (Version 11.3.0) and /particles/management/include/G4ParticleTable.hh (Version 11.0.p3,)


** Warning: Cannot open xref database.

  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4ParticleTable                                
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // G4ParticleTable is the table of pointers to    
 31 // It is a "singleton" (only one static object    
 32 // Each G4ParticleDefinition pointer is stored    
 33 // to itself. So, each G4ParticleDefinition ob    
 34 // name.                                          
 35                                                   
 36 // Authors: G.Cosmo, 2 December 1995 - Design,    
 37 //          H.Kurashige, 27 June 1996 - First     
 38 // History:                                       
 39 // - 14 Nov 1997, H.Kurashige - Added messenge    
 40 // - 24 Sep 1998, H.Kurashige - Added dictiona    
 41 // - 28 Oct 1999, H.Kurashige - Migration to S    
 42 // - 15 Sep 2017, K.L.Genser - Added support f    
 43 // -------------------------------------------    
 44 #ifndef G4ParticleTable_hh                        
 45 #define G4ParticleTable_hh 1                      
 46                                                   
 47 #include "G4ParticleDefinition.hh"                
 48 #include "G4ParticleTableIterator.hh"             
 49 #include "G4Threading.hh"                         
 50 #include "G4ios.hh"                               
 51 #include "globals.hh"                             
 52                                                   
 53 #include <map>                                    
 54                                                   
 55 class G4UImessenger;                              
 56 class G4ParticleMessenger;                        
 57 class G4IonTable;                                 
 58                                                   
 59 class G4ParticleTable                             
 60 {                                                 
 61   public:                                         
 62     using G4PTblDictionary = G4ParticleTableIt    
 63     using G4PTblDicIterator = G4ParticleTableI    
 64     using G4PTblEncodingDictionary = G4Particl    
 65     using G4PTblEncodingDicIterator = G4Partic    
 66                                                   
 67     virtual ~G4ParticleTable();                   
 68                                                   
 69     // Copy constructor and assignment operato    
 70     G4ParticleTable(const G4ParticleTable&) =     
 71     G4ParticleTable& operator=(const G4Particl    
 72                                                   
 73     // This method is similar to the construct    
 74     // thread to achieve the partial effect as    
 75     void WorkerG4ParticleTable();                 
 76                                                   
 77     // This method is similar to the destructo    
 78     // thread to achieve the partial effect as    
 79     void DestroyWorkerG4ParticleTable();          
 80                                                   
 81     // Return the pointer to the G4ParticleTab    
 82     // G4ParticleTable is a "singleton" and ca    
 83     // function. At the first time of calling     
 84     // G4ParticleTable object is instantiated     
 85     static G4ParticleTable* GetParticleTable()    
 86                                                   
 87     // Returns TRUE if the ParticleTable conta    
 88     inline G4bool contains(const G4ParticleDef    
 89     G4bool contains(const G4String& particle_n    
 90                                                   
 91     // Returns the number of particles in the     
 92     G4int entries() const;                        
 93     G4int size() const;                           
 94                                                   
 95     // Returns a pointer to the i-th particle     
 96     // 0 <= index < entries()                     
 97     G4ParticleDefinition* GetParticle(G4int in    
 98                                                   
 99     // Returns the name of i-th particle in th    
100     const G4String& GetParticleName(G4int inde    
101                                                   
102     // Returns a pointer to the particle (0 if    
103     G4ParticleDefinition* FindParticle(G4int P    
104     G4ParticleDefinition* FindParticle(const G    
105     G4ParticleDefinition* FindParticle(const G    
106                                                   
107     // Returns a pointer to its anti-particle     
108     inline G4ParticleDefinition* FindAntiParti    
109     inline G4ParticleDefinition* FindAntiParti    
110     inline G4ParticleDefinition* FindAntiParti    
111                                                   
112     // Returns the pointer to the Iterator        
113     G4PTblDicIterator* GetIterator() const;       
114                                                   
115     // Dumps information of particles specifie    
116     void DumpTable(const G4String& particle_na    
117                                                   
118     // Returns the pointer to the G4IonTable o    
119     G4IonTable* GetIonTable() const;              
120                                                   
121     // Inserts the particle into ParticleTable    
122     // Returned value is the same as particle     
123     //   or the pointer to another G4ParticleD    
124     //      which has same particle name          
125     //   or nullptr if failing to insert by ot    
126     G4ParticleDefinition* Insert(G4ParticleDef    
127                                                   
128     // Removes the particle from the table (no    
129     G4ParticleDefinition* Remove(G4ParticleDef    
130                                                   
131     // Removes all particles from G4ParticleTa    
132     void RemoveAllParticles();                    
133                                                   
134     // Removes and deletes all particles from     
135     void DeleteAllParticles();                    
136                                                   
137     // Creates messenger                          
138     G4UImessenger* CreateMessenger();             
139                                                   
140     void SelectParticle(const G4String& name);    
141                                                   
142     inline const G4ParticleDefinition* GetSele    
143                                                   
144     inline void SetVerboseLevel(G4int value);     
145     inline G4int GetVerboseLevel() const;         
146                                                   
147     inline void SetReadiness(G4bool val = true    
148     inline G4bool GetReadiness() const;           
149                                                   
150     inline G4ParticleDefinition* GetGenericIon    
151     inline void SetGenericIon(G4ParticleDefini    
152                                                   
153     inline G4ParticleDefinition* GetGenericMuo    
154     inline void SetGenericMuonicAtom(G4Particl    
155                                                   
156     // Public data ---------------------------    
157                                                   
158     // These fields should be thread local or     
159     // class, we can change any member field a    
160     // because there is only one instance. The    
161     // "G4ThreadLocal"                            
162     G4ParticleMessenger* fParticleMessenger =     
163     static G4ThreadLocal G4PTblDictionary* fDi    
164     static G4ThreadLocal G4PTblDicIterator* fI    
165     static G4ThreadLocal G4PTblEncodingDiction    
166                                                   
167     // Particle table is being shared             
168     static G4ParticleTable* fgParticleTable;      
169                                                   
170     // This field should be thread private. Ho    
171     // of the ion table pointer. So we change     
172     // G4IonTable to be thread local              
173     G4IonTable* fIonTable = nullptr;              
174                                                   
175     // These shadow pointers are used by each     
176     // from the master thread                     
177     //                                            
178     static G4PTblDictionary* fDictionaryShadow    
179     static G4PTblDicIterator* fIteratorShadow;    
180     static G4PTblEncodingDictionary* fEncoding    
181                                                   
182 #ifdef G4MULTITHREADED                            
183     // Shared instance of a mutex                 
184     static G4GLOB_DLL G4Mutex& particleTableMu    
185     static G4GLOB_DLL G4int& lockCount();         
186 #endif                                            
187                                                   
188   protected:                                      
189     const G4PTblDictionary* GetDictionary() co    
190                                                   
191     // Returns key value of the particle (i.e.    
192     inline const G4String& GetKey(const G4Part    
193                                                   
194     // Returns the pointer to EncodingDictiona    
195     const G4PTblEncodingDictionary* GetEncodin    
196                                                   
197   private:                                        
198     // Provate default constructor                
199     G4ParticleTable();                            
200                                                   
201     void CheckReadiness() const;                  
202                                                   
203     // Private data --------------------------    
204                                                   
205     G4ParticleDefinition* genericIon = nullptr    
206     G4ParticleDefinition* genericMuonicAtom =     
207     const G4ParticleDefinition* selectedPartic    
208                                                   
209     const G4String noName = " ";                  
210     G4String selectedName = "undefined";          
211                                                   
212     // Control flag for output message            
213     //  0: Silent                                 
214     //  1: Warning message                        
215     //  2: More                                   
216     G4int verboseLevel = 1;                       
217                                                   
218     G4bool readyToUse = false;                    
219 };                                                
220                                                   
221 #include "G4ParticleTable.icc"                    
222                                                   
223 #endif                                            
224