74G4Mutex& G4ParticleTable::particleTableMutex()
 
   79G4int& G4ParticleTable::lockCount()
 
   81  static G4int _instance = 0;
 
  146#ifdef G4MULTITHREADED 
  147  G4MUTEXLOCK(&G4ParticleTable::particleTableMutex());
 
  148  G4ParticleTable::lockCount()++;
 
  183#ifdef G4MULTITHREADED 
  273    G4cout << 
"G4ParticleTable::DeleteAllParticles() " << 
G4endl;
 
  289    delete (piter->
value());
 
  299    G4Exception(
"G4ParticleTable::RemoveAllParticle()",
 
  301        "No effects because readyToUse is true.");    
 
  308    G4cout << 
"G4ParticleTable::RemoveAllParticles() " << 
G4endl;
 
  329  if ((particle == 
nullptr) || (
GetKey(particle).
empty()))
 
  333        "Particle witnout name can not be registered.");    
 
  337      G4cout << 
"The particle[Addr:" << particle << 
"] has no name "<< 
G4endl;
 
  354      msg += 
"  has already been registered in the Particle Table ";
 
  366#ifdef G4MULTITHREADED 
  380        pedic->insert( std::pair<
G4int,
 
  382#ifdef G4MULTITHREADED 
  404           << 
" is inserted in the ParticleTable " << 
G4endl;
 
  415  if( particle == 
nullptr) 
return nullptr;
 
  416#ifdef G4MULTITHREADED 
  421       << 
" is ignored as it is invoked from a worker thread.";
 
  432      G4String msg = 
"Request of removing ";
 
  434      msg += 
" has No effects other than Pre_Init";
 
  444           << 
" will be removed from the ParticleTable " << 
G4endl;
 
  476           << 
" is removed from the ParticleTable " << 
G4endl;
 
  487  if ( (index >=0) && (index < 
entries()) )
 
  490    piter -> reset(
false);
 
  494      if ( counter == index ) 
return piter->
value();
 
  501    G4cout << 
" G4ParticleTable::GetParticle" 
  502           << 
" invalid index (=" << index << 
")" << 
G4endl;
 
  512  if (aParticle != 
nullptr)
 
  526  G4PTblDictionary::iterator it = 
fDictionary->find(particle_name);
 
  533#ifdef G4MULTITHREADED 
  537      G4MUTEXLOCK(&G4ParticleTable::particleTableMutex());
 
  542        ptcl = (*its).second;
 
  564#ifdef G4MULTITHREADED 
  565      G4MUTEXLOCK(&G4ParticleTable::particleTableMutex());
 
  569#ifdef G4MULTITHREADED 
  590  if (aPDGEncoding == 0)
 
  595      G4cout << 
"PDGEncoding  [" <<  aPDGEncoding << 
"] is not valid " 
  607      G4PTblEncodingDictionary::iterator it =  pedic->find(aPDGEncoding );
 
  608      if (it != pedic->end())
 
  610        particle = (*it).second;
 
  614#ifdef G4MULTITHREADED 
  617      G4MUTEXLOCK(&G4ParticleTable::particleTableMutex());
 
  618      G4PTblEncodingDictionary::iterator its
 
  622        particle = (*its).second;
 
  635      G4cout << 
"CODE:" << aPDGEncoding << 
" does not exist in ParticleTable " 
  646  if (( particle_name == 
"ALL" ) || (particle_name == 
"all"))
 
  669    G4cout << 
" G4ParticleTable::DumpTable : "  
  670           << particle_name << 
" does not exist in ParticleTable " 
  684    msg = 
"Illegal use of G4ParticleTable :\n";
 
  685    msg += 
"Access to G4ParticleTable for finding a particle or equivalent\n";
 
  686    msg += 
"operation occurs before G4VUserPhysicsList is instantiated and\n";
 
  687    msg += 
"assigned to G4RunManager. Such an access is prohibited since\n";
 
  688    msg += 
"Geant4 version 8.0. To fix this problem, please make sure that\n";
 
  689    msg += 
"your main() instantiates G4VUserPhysicsList and set it to\n";
 
  690    msg += 
"G4RunManager before instantiating other user classes such as\n";
 
  691    msg += 
"G4VUserPrimaryParticleGeneratorAction.";
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
void Remove(const G4ParticleDefinition *particle)
void DestroyWorkerG4IonTable()
static G4bool IsIon(const G4ParticleDefinition *)
void Insert(const G4ParticleDefinition *particle)
G4int GetPDGEncoding() const
void SetVerboseLevel(G4int value)
const G4String & GetParticleName() const
void reset(G4bool ifSkipIon=true)
G4IonTable * GetIonTable() const
static G4ThreadLocal G4PTblEncodingDictionary * fEncodingDictionary
G4ParticleDefinition * GetParticle(G4int index) const
static G4PTblEncodingDictionary * fEncodingDictionaryShadow
void DestroyWorkerG4ParticleTable()
G4bool contains(const G4ParticleDefinition *particle) const
const G4ParticleDefinition * selectedParticle
static G4ParticleTable * fgParticleTable
G4PTblDicIterator * GetIterator() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4ParticleDefinition * Insert(G4ParticleDefinition *particle)
void SelectParticle(const G4String &name)
G4ParticleTableIterator< G4int, G4ParticleDefinition * >::Map G4PTblEncodingDictionary
G4ParticleDefinition * Remove(G4ParticleDefinition *particle)
static G4PTblDictionary * fDictionaryShadow
static G4PTblDicIterator * fIteratorShadow
void RemoveAllParticles()
void DeleteAllParticles()
G4ParticleTableIterator< G4String, G4ParticleDefinition * > G4PTblDicIterator
void WorkerG4ParticleTable()
G4UImessenger * CreateMessenger()
void CheckReadiness() const
virtual ~G4ParticleTable()
G4ParticleMessenger * fParticleMessenger
const G4String & GetKey(const G4ParticleDefinition *particle) const
static G4ThreadLocal G4PTblDicIterator * fIterator
const G4PTblDictionary * GetDictionary() const
const G4PTblEncodingDictionary * GetEncodingDictionary() const
const G4String & GetParticleName(G4int index) const
G4ParticleTableIterator< G4String, G4ParticleDefinition * >::Map G4PTblDictionary
static G4ThreadLocal G4PTblDictionary * fDictionary
void DumpTable(const G4String &particle_name="ALL")
const G4ApplicationState & GetCurrentState() const
static G4StateManager * GetStateManager()
const char * name(G4int ptype)