Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FieldManagerStore Class Reference

G4FieldManagerStore is a container for all field managers, with functionality derived from std::vector<T>. The class is a singleton. All field managers should be registered with G4FieldManagerStore, and removed on their destruction. Intended principally to enable resetting of 'state' at start of an event. More...

#include <G4FieldManagerStore.hh>

Inheritance diagram for G4FieldManagerStore:

Public Member Functions

void ClearAllChordFindersState ()
 ~G4FieldManagerStore ()

Static Public Member Functions

static G4FieldManagerStoreGetInstance ()
static G4FieldManagerStoreGetInstanceIfExist ()
static void Register (G4FieldManager *pFieldMan)
static void DeRegister (G4FieldManager *pFieldMan)
static void Clean ()

Detailed Description

G4FieldManagerStore is a container for all field managers, with functionality derived from std::vector<T>. The class is a singleton. All field managers should be registered with G4FieldManagerStore, and removed on their destruction. Intended principally to enable resetting of 'state' at start of an event.

Definition at line 57 of file G4FieldManagerStore.hh.

Constructor & Destructor Documentation

◆ ~G4FieldManagerStore()

G4FieldManagerStore::~G4FieldManagerStore ( )

Destructor: takes care to delete the allocated field managers.

Definition at line 78 of file G4FieldManagerStore.cc.

79{
80 Clean();
81 fgInstance = nullptr;
82}

Member Function Documentation

◆ Clean()

void G4FieldManagerStore::Clean ( )
static

Deletes all managers from the store.

Definition at line 88 of file G4FieldManagerStore.cc.

89{
90 // Locks store for deletion of field managers. De-registration will be
91 // performed at this stage. G4FieldManagers will not de-register themselves.
92 //
93 locked = true;
94
95 G4FieldManagerStore* store = GetInstance();
96
97 for(const auto & pos : *store)
98 {
99 delete pos;
100 }
101
102 locked = false;
103 store->clear();
104}
static G4FieldManagerStore * GetInstance()

Referenced by ~G4FieldManagerStore().

◆ ClearAllChordFindersState()

void G4FieldManagerStore::ClearAllChordFindersState ( )

Loops over all field managers and calls each one to reset step estimate.

Definition at line 139 of file G4FieldManagerStore.cc.

140{
141 G4ChordFinder* pChordFnd;
142
143 for (const auto & mgr : *GetInstance())
144 {
145 pChordFnd = mgr->GetChordFinder();
146 if( pChordFnd != nullptr )
147 {
148 pChordFnd->ResetStepEstimate();
149 }
150 }
151}
void ResetStepEstimate()

Referenced by G4Transportation::StartTracking().

◆ DeRegister()

void G4FieldManagerStore::DeRegister ( G4FieldManager * pFieldMan)
static

Removes the field manager from the collection.

Definition at line 119 of file G4FieldManagerStore.cc.

120{
121 if (!locked) // Do not de-register if locked !
122 {
123 for (auto i=GetInstance()->cbegin(); i!=GetInstance()->cend(); ++i)
124 {
125 if (*i==pFieldMgr) // For LogVol was **i == *pLogVolume ... Reason?
126 {
127 GetInstance()->erase(i);
128 break;
129 }
130 }
131 }
132}

Referenced by G4FieldManager::~G4FieldManager().

◆ GetInstance()

G4FieldManagerStore * G4FieldManagerStore::GetInstance ( )
static

Gets a pointer to the unique G4FieldManagerStore, creating it if necessary.

Definition at line 46 of file G4FieldManagerStore.cc.

47{
48 if (fgInstance == nullptr)
49 {
50 fgInstance = new G4FieldManagerStore;
51 }
52 return fgInstance;
53}

Referenced by Clean(), ClearAllChordFindersState(), DeRegister(), Register(), G4ITTransportation::StartTracking(), and G4Transportation::StartTracking().

◆ GetInstanceIfExist()

G4FieldManagerStore * G4FieldManagerStore::GetInstanceIfExist ( )
static

Definition at line 59 of file G4FieldManagerStore.cc.

60{
61 return fgInstance;
62}

Referenced by G4RunManagerKernel::~G4RunManagerKernel().

◆ Register()

void G4FieldManagerStore::Register ( G4FieldManager * pFieldMan)
static

Adds the field manager to the collection.

Definition at line 110 of file G4FieldManagerStore.cc.

111{
112 GetInstance()->push_back(pFieldManager);
113}

Referenced by G4FieldManager::G4FieldManager(), and G4FieldManager::G4FieldManager().


The documentation for this class was generated from the following files: