84 #define G4MT_theMessenger ((this->subInstanceManager.offset[this->g4vuplInstanceID])._theMessenger) 85 #define G4MT_thePLHelper ((this->subInstanceManager.offset[this->g4vuplInstanceID])._thePLHelper) 86 #define fIsPhysicsTableBuilt ((this->subInstanceManager.offset[this->g4vuplInstanceID])._fIsPhysicsTableBuilt) 87 #define fDisplayThreshold ((this->subInstanceManager.offset[this->g4vuplInstanceID])._fDisplayThreshold) 105 defaultCutValue(1.0 *
mm),
106 isSetDefaultCutValue(false),
107 fRetrievePhysicsTable(false),
108 fStoredInAscii(true),
109 fIsCheckedForRetrievePhysicsTable(false),
110 fIsRestoredCutValues(false),
111 directoryPhysicsTable(
"."),
114 fDisableCheckParticleList(false)
205 if (
this != &right) {
227 if (newParticle == 0)
return;
228 G4Exception(
"G4VUserPhysicsList::AddProcessManager",
230 "This method is obsolete");
239 #ifdef G4MULTITHREADED 241 G4ParticleTable::lockCount++;
258 G4cout <<
"G4VUserPhysicsList::InitializeProcessManager: creating ProcessManager to " 277 G4cout <<
"G4VUserPhysicsList::InitializeProcessManager: copying ProcessManager to " 286 #ifdef G4MULTITHREADED 298 #ifdef G4MULTITHREADED 300 G4ParticleTable::lockCount++;
313 if (pmanager!=0)
delete pmanager;
316 G4cout <<
"G4VUserPhysicsList::RemoveProcessManager: ";
317 G4cout <<
"remove ProcessManager from ";
327 #ifdef G4MULTITHREADED 368 G4cout <<
"G4VUserPhysicsList::SetDefaultCutValue: negative cut values" 369 <<
" :" << value/
mm <<
"[mm]" <<
G4endl;
386 G4cout <<
"G4VUserPhysicsList::SetDefaultCutValue:" 387 <<
"default cut value is changed to :" 401 G4cout <<
"G4VUserPhysicsList::GetCutValue " 402 <<
" : No Default Region " <<
G4endl;
407 "No Default Region");
431 G4cout <<
"G4VUserPhysicsList::SetCutValue " 432 <<
" : No Region of " << rname <<
G4endl;
470 G4cout <<
"G4VUserPhysicsList::SetParticleCuts: negative cut values" 471 <<
" :" << cut/
mm <<
"[mm]" 472 <<
" for "<< particleName <<
G4endl;
484 G4cout <<
"G4VUserPhysicsList::SetParticleCuts " 485 <<
" : No Default Region " <<
G4endl;
488 G4Exception(
"G4VUserPhysicsList::SetParticleCuts ",
490 "No Default Region");
493 region = world_region;
501 if(region != world_region &&
512 G4cout <<
"G4VUserPhysicsList::SetParticleCuts: " 513 <<
" :" << cut/
mm <<
"[mm]" 514 <<
" for "<< particleName <<
G4endl;
536 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable" 537 <<
" Retrieve Cut Table failed !!" <<
G4endl;
540 G4Exception(
"G4VUserPhysicsList::BuildPhysicsTable",
542 "Fail to retrieve Production Cut Table");
546 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable" 547 <<
" Retrieve Cut Table successfully " <<
G4endl;
554 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable" 555 <<
" does not retrieve Cut Table but calculate " <<
G4endl;
575 if( particle!=GammaP &&
592 G4cout <<
"#### G4VUserPhysicsList::BuildPhysicsTable() - BuildPhysicsTable(" 601 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable " 602 <<
"Physics table can not be retreived and will be calculated " 611 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable " 612 <<
" Retrieve Physics Table for " 623 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable " 624 <<
"Calculate Physics Table for " 635 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable " 636 <<
" : No Process Manager for " 639 <<
" should be created in your PhysicsList" <<
G4endl;
642 G4Exception(
"G4VUserPhysicsList::BuildPhysicsTable",
644 "No process manager");
655 G4cout <<
"G4VUserPhysicsList::BuildPhysicsTable " 656 <<
" : No Process Vector for " 660 G4Exception(
"G4VUserPhysicsList::BuildPhysicsTable",
662 "No process Vector");
668 G4cout <<
" ProcessManager : " << pManager <<
" ProcessManagerShadow : " << pManagerShadow <<
G4endl;
669 for(
G4int iv1=0;iv1<pVector->
size();iv1++)
670 {
G4cout <<
" " << iv1 <<
" - " << (*pVector)[iv1]->GetProcessName() <<
G4endl; }
671 G4cout <<
"--------------------------------------------------------------" <<
G4endl;
674 for(
G4int iv2=0;iv2<pVectorShadow->
size();iv2++)
675 {
G4cout <<
" " << iv2 <<
" - " << (*pVectorShadow)[iv2]->GetProcessName() <<
G4endl; }
678 for (
G4int j=0; j < pVector->
size(); ++j) {
683 if ( pManagerShadow == pManager )
685 (*pVector)[j]->BuildPhysicsTable(*particle);
689 (*pVector)[j]->BuildWorkerPhysicsTable(*particle);
711 G4cout<<
"G4VUserPhysicsList::PreparePhysicsTable " 712 <<
": No Process Manager for " 715 <<
" should be created in your PhysicsList" <<
G4endl;
718 G4Exception(
"G4VUserPhysicsList::PreparePhysicsTable",
720 "No process manager");
733 G4cout <<
"G4VUserPhysicsList::PreparePhysicsTable " 734 <<
": No Process Vector for " 738 G4Exception(
"G4VUserPhysicsList::PreparePhysicsTable",
740 "No process Vector");
743 for (
G4int j=0; j < pVector->
size(); ++j) {
749 if ( pManagerShadow == pManager )
751 (*pVector)[j]->PreparePhysicsTable(*particle);
755 (*pVector)[j]->PrepareWorkerPhysicsTable(*particle);
781 G4cout <<
"G4VUserPhysicsList::BuildIntegralPhysicsTable " 782 <<
" BuildPhysicsTable is invoked for " 799 if ((idx++ % 4) == 3) {
834 G4Exception(
"G4VUserPhysicsList::StorePhysicsTable",
836 "Fail to store Cut Table");
841 G4cout <<
"G4VUserPhysicsList::StorePhysicsTable " 842 <<
" Store material and cut values successfully" <<
G4endl;
855 for ( j=0; j < pVector->
size(); ++j) {
856 if (!(*pVector)[j]->StorePhysicsTable(particle,dir,ascii)){
857 G4String comment =
"Fail to store physics table for ";
858 comment += (*pVector)[j]->GetProcessName();
860 G4Exception(
"G4VUserPhysicsList::StorePhysicsTable",
894 for ( j=0; j < pVector->
size(); ++j) {
896 (*pVector)[j]->RetrievePhysicsTable(particle,directory,ascii);
901 G4cout <<
"G4VUserPhysicsList::RetrievePhysicsTable " 902 <<
" Fail to retrieve Physics Table for " 903 << (*pVector)[j]->GetProcessName() <<
G4endl;
904 G4cout <<
"Calculate Physics Table for " 908 (*pVector)[j]->BuildPhysicsTable(*particle);
911 for ( j=0; j < pVector->
size(); ++j) {
923 G4cout <<
"G4VUserPhysicsList::SetApplyCuts for " << name <<
G4endl;
987 G4cout <<
"G4VUserPhysicsList::SetVerboseLevel :" 1002 G4cout <<
"G4VUserPhysicsList::ResetCuts() is obsolete." 1003 <<
" This method gives no effect and you can remove it. "<<
G4endl;
void SetDefaultCutValue(G4double newCutValue)
void BuildIntegralPhysicsTable(G4VProcess *, G4ParticleDefinition *)
void SetApplyCuts(G4bool value, const G4String &name)
G4bool IsShortLived() const
void DumpCutValuesTableIfRequested()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
void RemoveProcessManager()
G4PhysicsListHelper * _thePLHelper
void SetProcessManager(G4ProcessManager *aProcessManager)
G4ProcessVector * GetProcessList() const
void SetCutValue(G4double aCut, const G4String &pname)
G4bool fIsRestoredCutValues
void SetEnergyRange(G4double lowedge, G4double highedge)
void PreparePhysicsTable(G4ParticleDefinition *)
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
G4ProductionCutsTable * fCutsTable
G4bool GetApplyCuts(const G4String &name) const
G4bool fRetrievePhysicsTable
G4double GetCutValue(const G4String &pname) const
G4bool fIsCheckedForRetrievePhysicsTable
void SetProductionCut(G4double cut, G4int index=-1)
void SetCutsForRegion(G4double aCut, const G4String &rname)
G4ProcessManager * GetProcessManager() const
G4ParticleDefinition * GetGenericIon() const
G4ParticleTable * theParticleTable
G4UserPhysicsListMessenger * _theMessenger
void InitializeProcessManager()
G4RUN_DLL G4ThreadLocalStatic T * offset
G4double GetProductionCut(G4int index) const
static G4RegionStore * GetInstance()
G4bool _fIsPhysicsTableBuilt
#define fDisplayThreshold
const G4String & GetProcessName() const
void SetPhysicsTableRetrieved(const G4String &directory="")
void SetParticleCuts(G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
const G4String & GetParticleName() const
void DumpCutValuesTable(G4int flag=1)
void AddProcessManager(G4ParticleDefinition *newParticle, G4ProcessManager *newManager=0)
G4GLOB_DLL std::ostream G4cout
G4int GetInstanceID() const
void SetVerboseLevel(G4int value)
G4bool RetrieveCutsTable(const G4String &directory, G4bool ascii=false)
G4bool GetApplyCutsFlag() const
void SetVerboseLevel(G4int value)
G4ProcessManager * GetMasterProcessManager() const
G4ParticleTable::G4PTblDicIterator * _theParticleIterator
G4VUserPhysicsList & operator=(const G4VUserPhysicsList &)
G4int GetInstanceID() const
G4bool StorePhysicsTable(const G4String &directory=".")
G4bool IsGeneralIon() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4bool isSetDefaultCutValue
static G4ProductionCutsTable * GetProductionCutsTable()
void UseCoupledTransportation(G4bool vl=true)
void SetApplyCutsFlag(G4bool)
G4PART_DLL G4ThreadLocalStatic G4int slavetotalspace
void SetCutsWithDefault()
void DeleteAllParticles()
static G4ParticleTable * GetParticleTable()
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
G4ParticleTable::G4PTblDicIterator * GetParticleIterator() const
static G4PhysicsListHelper * GetPhysicsListHelper()
G4bool StoreCutsTable(const G4String &directory, G4bool ascii=false)
static G4RUN_DLL G4VUPLManager subInstanceManager
static const G4VUPLManager & GetSubInstanceManager()
void ResetCuts()
obsolete methods
#define G4MT_theMessenger
void SetProductionCuts(G4ProductionCuts *cut)
G4int CreateSubInstance()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
G4ProductionCuts * GetProductionCuts() const
G4bool fDisableCheckParticleList
#define fIsPhysicsTableBuilt
G4String directoryPhysicsTable
virtual void RetrievePhysicsTable(G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
virtual ~G4VUserPhysicsList()
G4PTblDicIterator * GetIterator() const
const G4String & GetParticleSubType() const
#define theParticleIterator
void SetMasterProcessManager(G4ProcessManager *aNewPM)