Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // G4VUserPhysicsList 26 // G4VUserPhysicsList 27 // 27 // 28 // Class description: 28 // Class description: 29 // 29 // 30 // This class is an abstract class for constru 30 // This class is an abstract class for constructing particles and processes. 31 // User must implement the following two pure 31 // User must implement the following two pure virtual methods in the concrete 32 // class derived from this class: 32 // class derived from this class: 33 // - G4VUserPhysicsList::ConstructParticle() 33 // - G4VUserPhysicsList::ConstructParticle() 34 // Construct particles 34 // Construct particles 35 // - G4VUserPhysicsList::ConstructProcess() 35 // - G4VUserPhysicsList::ConstructProcess() 36 // Construct procesess and register them t 36 // Construct procesess and register them to particles. 37 37 38 // Original author: H.Kurashige (Kobe Universi 38 // Original author: H.Kurashige (Kobe University), 9 January 1998 39 // ------------------------------------------- 39 // -------------------------------------------------------------------- 40 #ifndef G4VUserPhysicsList_hh 40 #ifndef G4VUserPhysicsList_hh 41 #define G4VUserPhysicsList_hh 1 41 #define G4VUserPhysicsList_hh 1 42 42 >> 43 #include "G4ios.hh" >> 44 #include "globals.hh" >> 45 #include "rundefs.hh" >> 46 #include "tls.hh" >> 47 43 #include "G4ParticleDefinition.hh" 48 #include "G4ParticleDefinition.hh" 44 #include "G4ParticleTable.hh" 49 #include "G4ParticleTable.hh" 45 #include "G4PhysicsModelCatalog.hh" << 46 #include "G4ProductionCutsTable.hh" 50 #include "G4ProductionCutsTable.hh" 47 #include "G4Threading.hh" << 48 #include "G4VUPLSplitter.hh" 51 #include "G4VUPLSplitter.hh" 49 #include "G4ios.hh" << 50 #include "globals.hh" << 51 52 52 #include "rundefs.hh" << 53 #include "G4Threading.hh" 53 #include "tls.hh" << 54 #include "G4PhysicsModelCatalog.hh" 54 55 55 class G4UserPhysicsListMessenger; 56 class G4UserPhysicsListMessenger; 56 class G4PhysicsListHelper; 57 class G4PhysicsListHelper; 57 class G4VProcess; 58 class G4VProcess; 58 59 59 // Encapsulate the fields of class G4VUserPhys << 60 class G4VUPLData 60 class G4VUPLData 61 { 61 { >> 62 // Encapsulate the fields of class G4VUserPhysicsList that are per-thread. >> 63 62 public: 64 public: >> 65 63 void initialize(); 66 void initialize(); 64 67 65 G4ParticleTable::G4PTblDicIterator* _thePa 68 G4ParticleTable::G4PTblDicIterator* _theParticleIterator = nullptr; 66 G4UserPhysicsListMessenger* _theMessenger 69 G4UserPhysicsListMessenger* _theMessenger = nullptr; 67 G4PhysicsListHelper* _thePLHelper = nullpt 70 G4PhysicsListHelper* _thePLHelper = nullptr; 68 G4bool _fIsPhysicsTableBuilt = false; 71 G4bool _fIsPhysicsTableBuilt = false; 69 G4int _fDisplayThreshold = 0; 72 G4int _fDisplayThreshold = 0; 70 }; 73 }; 71 74 72 // The type G4VUPLManager is introduced to enc 75 // The type G4VUPLManager is introduced to encapsulate the methods used by 73 // both the master thread and worker threads t 76 // both the master thread and worker threads to allocate memory space for 74 // the fields encapsulated by the class G4VUPL 77 // the fields encapsulated by the class G4VUPLData. When each thread 75 // changes the value for these fields, it refe 78 // changes the value for these fields, it refers to them using a macro 76 // definition defined below. For every G4VUser 79 // definition defined below. For every G4VUserPhysicsList instance, 77 // there is a corresponding G4VUPLData instanc 80 // there is a corresponding G4VUPLData instance. All G4VUPLData instances 78 // are organized by the class G4VUPLManager as 81 // are organized by the class G4VUPLManager as an array. 79 // The field "int g4vuplInstanceID" is added t 82 // The field "int g4vuplInstanceID" is added to the class G4VUserPhysicsList. 80 // The value of this field in each G4VUserPhys 83 // The value of this field in each G4VUserPhysicsList instance is the 81 // subscript of the corresponding G44VUPLData 84 // subscript of the corresponding G44VUPLData instance. 82 // In order to use the class G44VUPLManager, w 85 // In order to use the class G44VUPLManager, we add a static member in the class 83 // G4VUserPhysicsList as follows: "static G4VU 86 // G4VUserPhysicsList as follows: "static G4VUPLManager subInstanceManager". 84 // Both the master thread and worker threads c 87 // Both the master thread and worker threads change the length of the array 85 // for G44VUPLData instances mutually along wi 88 // for G44VUPLData instances mutually along with G4VUserPhysicsList 86 // instances are created. For each worker thre 89 // instances are created. For each worker thread, it dynamically creates ions. 87 // Consider any thread A, if there is any othe 90 // Consider any thread A, if there is any other thread which creates an ion. 88 // This ion is shared by the thread A. So the 91 // This ion is shared by the thread A. So the thread A leaves an empty space 89 // in the array of G4PDefData instances for th 92 // in the array of G4PDefData instances for the ion. 90 // 93 // 91 // Important Note: you may wonder why we are i 94 // Important Note: you may wonder why we are introducing this mechanism 92 // since there is only one PL 95 // since there is only one PL for each application. 93 // This is true, in the sense 96 // This is true, in the sense that only one PL is allowed 94 // to be associated to a G4Run 97 // to be associated to a G4RunManager, however user can 95 // instantiate as many PLs are 98 // instantiate as many PLs are needed and at run-time select one 96 // of the PLs to be used we th 99 // of the PLs to be used we thus need this mechanism to 97 // guarantee that the system w 100 // guarantee that the system works without problems in case of 98 // this (unusual) case. This m 101 // this (unusual) case. This may be reviewed in the future 99 // 102 // 100 using G4VUPLManager = G4VUPLSplitter<G4VUPLDat 103 using G4VUPLManager = G4VUPLSplitter<G4VUPLData>; 101 using G4VUserPhysicsListSubInstanceManager = G 104 using G4VUserPhysicsListSubInstanceManager = G4VUPLManager; 102 105 103 class G4VUserPhysicsList 106 class G4VUserPhysicsList 104 { 107 { 105 public: 108 public: >> 109 106 G4VUserPhysicsList(); 110 G4VUserPhysicsList(); 107 virtual ~G4VUserPhysicsList(); 111 virtual ~G4VUserPhysicsList(); >> 112 108 G4VUserPhysicsList(const G4VUserPhysicsLis 113 G4VUserPhysicsList(const G4VUserPhysicsList&); 109 G4VUserPhysicsList& operator=(const G4VUse 114 G4VUserPhysicsList& operator=(const G4VUserPhysicsList&); >> 115 // Copy constructor and assignment operator. 110 116 111 // Each particle type will be instantiated << 112 // This method is invoked by the RunManger << 113 virtual void ConstructParticle() = 0; 117 virtual void ConstructParticle() = 0; >> 118 // Each particle type will be instantiated. >> 119 // This method is invoked by the RunManger. 114 120 115 // By calling the "Construct" method, << 116 // process manager and processes are creat << 117 void Construct(); 121 void Construct(); >> 122 // By calling the "Construct" method, >> 123 // process manager and processes are created. 118 124 119 // Each physics process will be instantiat << 120 // registered to the process manager of ea << 121 // Invoked in the Construct() method. << 122 virtual void ConstructProcess() = 0; 125 virtual void ConstructProcess() = 0; >> 126 // Each physics process will be instantiated and >> 127 // registered to the process manager of each particle type. >> 128 // Invoked in the Construct() method. 123 129 124 // Sets a cut value for all particle types << 125 virtual void SetCuts(); 130 virtual void SetCuts(); >> 131 // Sets a cut value for all particle types in the particle table. 126 132 127 // Set/get the default cut value. Calling << 128 // re-calcuration of cut values and physic << 129 // next event loop. << 130 void SetDefaultCutValue(G4double newCutVal 133 void SetDefaultCutValue(G4double newCutValue); 131 G4double GetDefaultCutValue() const; 134 G4double GetDefaultCutValue() const; >> 135 // Set/get the default cut value. Calling SetDefaultCutValue() causes >> 136 // re-calcuration of cut values and physics tables just before the >> 137 // next event loop. 132 138 133 // Invoke BuildPhysicsTable for all proces << 134 // In case of "Retrieve" flag is ON, Physi << 135 // retrieved from files. << 136 void BuildPhysicsTable(); 139 void BuildPhysicsTable(); >> 140 // Invoke BuildPhysicsTable for all processes for all particles. >> 141 // In case of "Retrieve" flag is ON, PhysicsTable will be >> 142 // retrieved from files. 137 143 138 // Prepare the PhysicsTable for specified << 139 void PreparePhysicsTable(G4ParticleDefinit 144 void PreparePhysicsTable(G4ParticleDefinition*); >> 145 // Prepare the PhysicsTable for specified particle type. 140 146 141 // Build the PhysicsTable for specified pa << 142 void BuildPhysicsTable(G4ParticleDefinitio 147 void BuildPhysicsTable(G4ParticleDefinition*); >> 148 // Build the PhysicsTable for specified particle type. 143 149 144 // Store PhysicsTable together with both m << 145 // information in files under the specifie << 146 // Returns "true" if files are successfull << 147 G4bool StorePhysicsTable(const G4String& d 150 G4bool StorePhysicsTable(const G4String& directory = "."); >> 151 // Store PhysicsTable together with both material and cut value >> 152 // information in files under the specified directory. >> 153 // Returns "true" if files are successfully created. 148 154 149 // Return true if "Retrieve" flag is ON. << 150 // (i.e. PhysicsTable will be retrieved fr << 151 G4bool IsPhysicsTableRetrieved() const; 155 G4bool IsPhysicsTableRetrieved() const; 152 G4bool IsStoredInAscii() const; 156 G4bool IsStoredInAscii() const; >> 157 // Return true if "Retrieve" flag is ON. >> 158 // (i.e. PhysicsTable will be retrieved from files). 153 159 154 // Get directory path for physics table fi << 155 const G4String& GetPhysicsTableDirectory() 160 const G4String& GetPhysicsTableDirectory() const; >> 161 // Get directory path for physics table files. 156 162 157 // Set "Retrieve" flag. Directory path can << 158 // Null string (default) means directory i << 159 // from the current value. << 160 void SetPhysicsTableRetrieved(const G4Stri 163 void SetPhysicsTableRetrieved(const G4String& directory = ""); 161 void SetStoredInAscii(); 164 void SetStoredInAscii(); >> 165 // Set "Retrieve" flag. Directory path can be set together. >> 166 // Null string (default) means directory is not changed >> 167 // from the current value. 162 168 163 // Reset "Retrieve" flag. << 164 void ResetPhysicsTableRetrieved(); 169 void ResetPhysicsTableRetrieved(); 165 void ResetStoredInAscii(); 170 void ResetStoredInAscii(); >> 171 // Reset "Retrieve" flag. 166 172 167 // Print out the List of registered partic << 168 void DumpList() const; 173 void DumpList() const; >> 174 // Print out the List of registered particles types. 169 175 170 // Request to print out information of cut << 171 // Printing will be performed when all tab << 172 void DumpCutValuesTable(G4int flag = 1); 176 void DumpCutValuesTable(G4int flag = 1); >> 177 // Request to print out information of cut values. >> 178 // Printing will be performed when all tables are made. 173 179 174 // Triggers the print-out requested by the << 175 // This method must be invoked by RunManag << 176 void DumpCutValuesTableIfRequested(); 180 void DumpCutValuesTableIfRequested(); >> 181 // Triggers the print-out requested by the above method. >> 182 // This method must be invoked by RunManager at the proper moment. 177 183 178 // Set/get control flag for output message << 179 // 0: Silent << 180 // 1: Warning message << 181 // 2: More << 182 void SetVerboseLevel(G4int value); 184 void SetVerboseLevel(G4int value); 183 G4int GetVerboseLevel() const; 185 G4int GetVerboseLevel() const; >> 186 // Set/get control flag for output message >> 187 // 0: Silent >> 188 // 1: Warning message >> 189 // 2: More 184 190 185 void UseCoupledTransportation(G4bool vl = 191 void UseCoupledTransportation(G4bool vl = true); 186 192 187 // Invokes default SetCuts() method. << 188 // Note: cut values will not be overwritte << 189 // Use of default SetCuts() method is reco << 190 void SetCutsWithDefault(); 193 void SetCutsWithDefault(); >> 194 // Invokes default SetCuts() method. >> 195 // Note: cut values will not be overwritten. >> 196 // Use of default SetCuts() method is recommended. 191 197 192 // Sets a cut value for a particle type fo << 193 void SetCutValue(G4double aCut, const G4St 198 void SetCutValue(G4double aCut, const G4String& pname); >> 199 // Sets a cut value for a particle type for the default region. 194 200 195 // Gets a cut value for a particle type fo << 196 G4double GetCutValue(const G4String& pname 201 G4double GetCutValue(const G4String& pname) const; >> 202 // Gets a cut value for a particle type for the default region. 197 203 198 // Sets a cut value for a particle type fo << 204 void SetCutValue(G4double aCut, const G4String& pname, 199 void SetCutValue(G4double aCut, const G4St << 205 const G4String& rname); 200 << 206 // Sets a cut value for a particle type for a region. 201 // Invoke SetCuts for specified particle f << 207 202 // If the pointer to the region is NULL, t << 208 void SetParticleCuts(G4double cut, G4ParticleDefinition* particle, 203 // In case of "Retrieve" flag is ON, cut v << 209 G4Region* region = nullptr); 204 // from files. << 210 void SetParticleCuts(G4double cut, const G4String& particleName, 205 void SetParticleCuts(G4double cut, G4Parti << 211 G4Region* region = nullptr); 206 void SetParticleCuts(G4double cut, const G << 212 // Invoke SetCuts for specified particle for a region. >> 213 // If the pointer to the region is NULL, the default region is used >> 214 // In case of "Retrieve" flag is ON, cut values will be retrieved >> 215 // from files. 207 216 208 // Invoke SetCuts() for all particles in a << 209 void SetCutsForRegion(G4double aCut, const 217 void SetCutsForRegion(G4double aCut, const G4String& rname); >> 218 // Invoke SetCuts() for all particles in a region. 210 219 211 // Gets/sets the flag for ApplyCuts(). << 212 void SetApplyCuts(G4bool value, const G4St 220 void SetApplyCuts(G4bool value, const G4String& name); 213 G4bool GetApplyCuts(const G4String& name) 221 G4bool GetApplyCuts(const G4String& name) const; >> 222 // Gets/sets the flag for ApplyCuts(). 214 223 215 // Remove and delete ProcessManagers for a << 216 // Particle Table. << 217 void RemoveProcessManager(); 224 void RemoveProcessManager(); >> 225 // Remove and delete ProcessManagers for all particles in the >> 226 // Particle Table. 218 227 219 // Remove and delete TrackingManagers for << 220 // Particle Table. << 221 void RemoveTrackingManager(); 228 void RemoveTrackingManager(); >> 229 // Remove and delete TrackingManagers for all particles in the >> 230 // Particle Table. 222 231 223 // Add process manager for particles creat << 224 void AddProcessManager(G4ParticleDefinitio 232 void AddProcessManager(G4ParticleDefinition* newParticle, 225 G4ProcessManager* n 233 G4ProcessManager* newManager = nullptr); >> 234 // Add process manager for particles created on-the-fly. 226 235 227 // Check consistencies of list of particle << 228 void CheckParticleList(); 236 void CheckParticleList(); >> 237 // Check consistencies of list of particles. 229 238 230 void DisableCheckParticleList(); 239 void DisableCheckParticleList(); 231 240 232 inline G4int GetInstanceID() const; 241 inline G4int GetInstanceID() const; 233 static const G4VUPLManager& GetSubInstance 242 static const G4VUPLManager& GetSubInstanceManager(); 234 << 243 // Used by Worker threads on the shared instance of physics-list 235 // Used by Worker threads on the shared in << 244 // to initialise workers. Derived class re-implementing this method 236 // to initialise workers. Derived class re << 245 // must also call this base class method. 237 // must also call this base class method. << 238 virtual void InitializeWorker(); 246 virtual void InitializeWorker(); 239 << 247 // Destroy thread-local data. Note that derived classes 240 // Destroy thread-local data. Note that de << 248 // implementing this method should still call this base class one. 241 // implementing this method should still c << 242 virtual void TerminateWorker(); 249 virtual void TerminateWorker(); 243 250 244 protected: 251 protected: 245 // User must invoke this method in his Con << 252 246 // implementation in order to enable parti << 247 void AddTransportation(); 253 void AddTransportation(); >> 254 // User must invoke this method in his ConstructProcess() >> 255 // implementation in order to enable particle transportation. 248 256 249 // Register a process to the particle type << 250 // according to the ordering parameter tab << 251 // 'true' is returned if the process is re << 252 G4bool RegisterProcess(G4VProcess* process 257 G4bool RegisterProcess(G4VProcess* process, G4ParticleDefinition* particle); >> 258 // Register a process to the particle type >> 259 // according to the ordering parameter table. >> 260 // 'true' is returned if the process is registerd successfully. 253 261 254 // Build PhysicsTable for making the integ << 255 void BuildIntegralPhysicsTable(G4VProcess* 262 void BuildIntegralPhysicsTable(G4VProcess*, G4ParticleDefinition*); >> 263 // Build PhysicsTable for making the integral schema. 256 264 257 // Retrieve PhysicsTable from files for pr << 265 virtual void RetrievePhysicsTable(G4ParticleDefinition*, 258 // Normal BuildPhysics procedure of proces << 266 const G4String& directory, 259 // fails (in case of process's RetrievePhy << 260 virtual void RetrievePhysicsTable(G4Partic << 261 G4bool a 267 G4bool ascii = false); >> 268 // Retrieve PhysicsTable from files for process belonging to the particle. >> 269 // Normal BuildPhysics procedure of processes will be invoked, if it >> 270 // fails (in case of process's RetrievePhysicsTable() returns false). 262 271 263 // Adds new ProcessManager to all particle << 264 // This function is used in Construct(). << 265 void InitializeProcessManager(); 272 void InitializeProcessManager(); >> 273 // Adds new ProcessManager to all particles in the Particle Table. >> 274 // This function is used in Construct(). 266 275 267 G4ParticleTable::G4PTblDicIterator* GetPar 276 G4ParticleTable::G4PTblDicIterator* GetParticleIterator() const; 268 277 269 protected: 278 protected: 270 // The particle table has the complete Lis << 279 271 G4ParticleTable* theParticleTable = nullpt 280 G4ParticleTable* theParticleTable = nullptr; >> 281 // The particle table has the complete List of existing particle types. 272 282 273 G4int verboseLevel = 1; 283 G4int verboseLevel = 1; 274 284 275 // Default cut value for all particles << 276 G4double defaultCutValue = 1.0; 285 G4double defaultCutValue = 1.0; >> 286 // Default cut value for all particles 277 G4bool isSetDefaultCutValue = false; 287 G4bool isSetDefaultCutValue = false; 278 288 279 // Pointer to ProductionCutsTable. << 280 G4ProductionCutsTable* fCutsTable = nullpt 289 G4ProductionCutsTable* fCutsTable = nullptr; >> 290 // Pointer to ProductionCutsTable. 281 291 282 // Flag to determine if physics table will << 283 G4bool fRetrievePhysicsTable = false; 292 G4bool fRetrievePhysicsTable = false; >> 293 // Flag to determine if physics table will be build from file or not. 284 G4bool fStoredInAscii = true; 294 G4bool fStoredInAscii = true; 285 295 286 G4bool fIsCheckedForRetrievePhysicsTable = 296 G4bool fIsCheckedForRetrievePhysicsTable = false; 287 G4bool fIsRestoredCutValues = false; 297 G4bool fIsRestoredCutValues = false; 288 298 289 // Directory name for physics table files. << 290 G4String directoryPhysicsTable = "."; 299 G4String directoryPhysicsTable = "."; >> 300 // Directory name for physics table files. 291 301 292 // Flag for CheckParticleList(). << 293 G4bool fDisableCheckParticleList = false; 302 G4bool fDisableCheckParticleList = false; >> 303 // Flag for CheckParticleList(). 294 304 295 // MT data << 296 G4int g4vuplInstanceID = 0; 305 G4int g4vuplInstanceID = 0; 297 G4RUN_DLL static G4VUPLManager subInstance 306 G4RUN_DLL static G4VUPLManager subInstanceManager; >> 307 // MT data >> 308 >> 309 private: >> 310 >> 311 enum >> 312 { >> 313 FixedStringLengthForStore = 32 >> 314 }; 298 }; 315 }; 299 316 300 // Inline methods implementations 317 // Inline methods implementations 301 318 302 inline void G4VUserPhysicsList::Construct() 319 inline void G4VUserPhysicsList::Construct() 303 { 320 { 304 #ifdef G4VERBOSE << 321 #ifdef G4VERBOSE 305 if (verboseLevel > 1) G4cout << "G4VUserPhys << 322 if(verboseLevel > 1) 306 #endif << 323 G4cout << "G4VUserPhysicsList::Construct()" << G4endl; 307 << 324 #endif 308 if (G4Threading::IsMasterThread()) G4Physics << 309 325 >> 326 if ( G4Threading::IsMasterThread() ) G4PhysicsModelCatalog::Initialize(); >> 327 310 InitializeProcessManager(); 328 InitializeProcessManager(); 311 329 312 #ifdef G4VERBOSE << 330 #ifdef G4VERBOSE 313 if (verboseLevel > 1) G4cout << "Construct p << 331 if(verboseLevel > 1) 314 #endif << 332 G4cout << "Construct processes " << G4endl; >> 333 #endif 315 ConstructProcess(); 334 ConstructProcess(); 316 } 335 } 317 336 318 inline G4double G4VUserPhysicsList::GetDefault 337 inline G4double G4VUserPhysicsList::GetDefaultCutValue() const 319 { 338 { 320 return defaultCutValue; 339 return defaultCutValue; 321 } 340 } 322 341 323 inline G4int G4VUserPhysicsList::GetVerboseLev 342 inline G4int G4VUserPhysicsList::GetVerboseLevel() const 324 { 343 { 325 return verboseLevel; 344 return verboseLevel; 326 } 345 } 327 346 328 inline G4bool G4VUserPhysicsList::IsPhysicsTab 347 inline G4bool G4VUserPhysicsList::IsPhysicsTableRetrieved() const 329 { 348 { 330 return fRetrievePhysicsTable; 349 return fRetrievePhysicsTable; 331 } 350 } 332 351 333 inline G4bool G4VUserPhysicsList::IsStoredInAs 352 inline G4bool G4VUserPhysicsList::IsStoredInAscii() const 334 { 353 { 335 return fStoredInAscii; 354 return fStoredInAscii; 336 } 355 } 337 356 338 inline const G4String& G4VUserPhysicsList::Get 357 inline const G4String& G4VUserPhysicsList::GetPhysicsTableDirectory() const 339 { 358 { 340 return directoryPhysicsTable; 359 return directoryPhysicsTable; 341 } 360 } 342 361 343 inline void G4VUserPhysicsList::SetStoredInAsc 362 inline void G4VUserPhysicsList::SetStoredInAscii() 344 { 363 { 345 fStoredInAscii = true; 364 fStoredInAscii = true; 346 } 365 } 347 366 348 inline void G4VUserPhysicsList::ResetPhysicsTa 367 inline void G4VUserPhysicsList::ResetPhysicsTableRetrieved() 349 { 368 { 350 fRetrievePhysicsTable = false; << 369 fRetrievePhysicsTable = false; 351 fIsRestoredCutValues = false; << 370 fIsRestoredCutValues = false; 352 fIsCheckedForRetrievePhysicsTable = false; 371 fIsCheckedForRetrievePhysicsTable = false; 353 } 372 } 354 373 355 inline void G4VUserPhysicsList::ResetStoredInA 374 inline void G4VUserPhysicsList::ResetStoredInAscii() 356 { 375 { 357 fStoredInAscii = false; 376 fStoredInAscii = false; 358 } 377 } 359 378 360 inline void G4VUserPhysicsList::DisableCheckPa 379 inline void G4VUserPhysicsList::DisableCheckParticleList() 361 { 380 { 362 fDisableCheckParticleList = true; 381 fDisableCheckParticleList = true; 363 } 382 } 364 383 365 inline G4int G4VUserPhysicsList::GetInstanceID 384 inline G4int G4VUserPhysicsList::GetInstanceID() const 366 { 385 { 367 return g4vuplInstanceID; 386 return g4vuplInstanceID; 368 } 387 } 369 388 370 inline const G4VUPLManager& G4VUserPhysicsList 389 inline const G4VUPLManager& G4VUserPhysicsList::GetSubInstanceManager() 371 { 390 { 372 return subInstanceManager; 391 return subInstanceManager; 373 } 392 } 374 393 375 #endif 394 #endif 376 395