G4FieldManagerStore Class Reference

#include <G4FieldManagerStore.hh>


Public Member Functions

void ClearAllChordFindersState ()
virtual ~G4FieldManagerStore ()

Static Public Member Functions

static void Register (G4FieldManager *pVolume)
static void DeRegister (G4FieldManager *pVolume)
static G4FieldManagerStoreGetInstance ()
static void Clean ()

Protected Member Functions

 G4FieldManagerStore ()


Detailed Description

Definition at line 58 of file G4FieldManagerStore.hh.


Constructor & Destructor Documentation

G4FieldManagerStore::~G4FieldManagerStore (  )  [virtual]

Definition at line 63 of file G4FieldManagerStore.cc.

References Clean().

00064 {
00065   Clean();
00066 }

G4FieldManagerStore::G4FieldManagerStore (  )  [protected]

Definition at line 53 of file G4FieldManagerStore.cc.

00054  : std::vector<G4FieldManager*>()
00055 {
00056   reserve(100);
00057 }


Member Function Documentation

void G4FieldManagerStore::Clean (  )  [static]

Definition at line 72 of file G4FieldManagerStore.cc.

References G4cout, G4endl, and GetInstance().

Referenced by ~G4FieldManagerStore().

00073 {
00074   // Locks store for deletion of field managers. De-registration will be
00075   // performed at this stage. G4FieldManagers will not de-register themselves.
00076   //
00077   locked = true;  
00078 
00079   size_t i=0;
00080   G4FieldManagerStore* store = GetInstance();
00081 
00082   for(iterator pos=store->begin(); pos!=store->end(); pos++)
00083   {
00084     if (*pos) { delete *pos; }
00085     i++;
00086   }
00087 
00088 #ifdef G4GEOMETRY_DEBUG
00089   if (store->size() < i-1)
00090     { G4cout << "No field managers deleted. Already deleted by user ?" << G4endl; }
00091   else
00092     { G4cout << i-1 << " field managers deleted !" << G4endl; }
00093 #endif
00094 
00095   locked = false;
00096   store->clear();
00097 }

void G4FieldManagerStore::ClearAllChordFindersState (  ) 

Definition at line 146 of file G4FieldManagerStore.cc.

References GetInstance(), and G4ChordFinder::ResetStepEstimate().

Referenced by G4Transportation::StartTracking(), G4ITTransportation::StartTracking(), and G4CoupledTransportation::StartTracking().

00147 {
00148   G4ChordFinder *pChordFnd;
00149    
00150   for (iterator i=GetInstance()->begin(); i!=GetInstance()->end(); i++)
00151   {
00152     pChordFnd = (*i)->GetChordFinder();
00153     if( pChordFnd )
00154     {
00155       pChordFnd->ResetStepEstimate();
00156     }
00157   }
00158 }

void G4FieldManagerStore::DeRegister ( G4FieldManager pVolume  )  [static]

Definition at line 112 of file G4FieldManagerStore.cc.

References GetInstance().

Referenced by G4FieldManager::~G4FieldManager().

00113 {
00114   if (!locked)    // Do not de-register if locked !
00115   {
00116     for (iterator i=GetInstance()->begin(); i!=GetInstance()->end(); i++)
00117     {
00118       if (*i==pFieldMgr)  //   For LogVol was **i == *pLogVolume ... Reason?
00119       {
00120         GetInstance()->erase(i);
00121         break;
00122       }
00123     }
00124   }
00125 }

G4FieldManagerStore * G4FieldManagerStore::GetInstance (  )  [static]

Definition at line 131 of file G4FieldManagerStore.cc.

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

00132 {
00133   static G4FieldManagerStore worldStore;
00134   if (!fgInstance)
00135   {
00136     fgInstance = &worldStore;
00137   }
00138   return fgInstance;
00139 }

void G4FieldManagerStore::Register ( G4FieldManager pVolume  )  [static]

Definition at line 103 of file G4FieldManagerStore.cc.

References GetInstance().

Referenced by G4FieldManager::G4FieldManager().

00104 {
00105   GetInstance()->push_back(pFieldManager);
00106 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:51:59 2013 for Geant4 by  doxygen 1.4.7