G4ITModelManager Class Reference

#include <G4ITModelManager.hh>


Public Member Functions

 G4ITModelManager ()
 ~G4ITModelManager ()
void Initialize ()
 G4ITModelManager (const G4ITModelManager &other)
G4ITModelManageroperator= (const G4ITModelManager &rhs)
void SetModel (G4VITModel *aModel, G4double startingTime)
G4VITModelGetModel (const G4double globalTime)

Protected Types

typedef std::map< G4double,
G4VITModel * > 
mapModels

Protected Attributes

mapModels fModels
G4bool fIsInitialized


Detailed Description

G4ITModelManager chooses which model to use according to the global simulation time.

Definition at line 50 of file G4ITModelManager.hh.


Member Typedef Documentation

typedef std::map<G4double , G4VITModel* > G4ITModelManager::mapModels [protected]

Definition at line 63 of file G4ITModelManager.hh.


Constructor & Destructor Documentation

G4ITModelManager::G4ITModelManager (  ) 

Definition at line 42 of file G4ITModelManager.cc.

00042                                    : fIsInitialized(FALSE)
00043 {;}

G4ITModelManager::~G4ITModelManager (  ) 

Definition at line 45 of file G4ITModelManager.cc.

References fModels.

00046 {
00047     //dtor
00048     mapModels::iterator it ;
00049 
00050     for(it = fModels.begin() ; it != fModels.end() ; it ++)
00051     {
00052         delete it->second;
00053     }
00054     fModels.clear();
00055 }

G4ITModelManager::G4ITModelManager ( const G4ITModelManager other  ) 

Definition at line 57 of file G4ITModelManager.cc.

References fIsInitialized, and fModels.

00058 {
00059     mapModels::const_iterator it = right.fModels.begin();
00060 
00061     for ( ; it != right.fModels.end() ; it++)
00062     {
00063         fModels[it->first] = it->second->Clone();
00064     }
00065 
00066     fIsInitialized = right.fIsInitialized;
00067 }


Member Function Documentation

G4VITModel * G4ITModelManager::GetModel ( const G4double  globalTime  ) 

Definition at line 103 of file G4ITModelManager.cc.

References FatalErrorInArgument, fModels, G4BestUnit, and G4Exception().

00104 {
00105     if(!fModels.empty())
00106     {
00107         mapModels::reverse_iterator rit = fModels.rbegin();
00108         if(rit != fModels.rend())
00109         {
00110             if(globalTime > rit->first)
00111             {
00112                 return rit->second;
00113             }
00114             else
00115             {
00116                 mapModels::iterator it = fModels.begin();
00117 
00118                 if(globalTime < it->first)
00119                 {
00120                     G4ExceptionDescription exceptionDescription ;
00121                     exceptionDescription << "No model was found at time ";
00122                     exceptionDescription << G4BestUnit(globalTime,"Time");
00123                     exceptionDescription << ". The first model is registered at time : ";
00124                     exceptionDescription << G4BestUnit(it->first,"Time") << ". ";
00125                     G4Exception("G4ITModelManager::GetModel","ITModelManager003",
00126                                 FatalErrorInArgument,exceptionDescription);
00127                 }
00128 
00129                 it = fModels.lower_bound(globalTime);
00130 
00131                 if(it != fModels.end()) return it->second;
00132             }
00133         }
00134     }
00135 
00136     G4ExceptionDescription exceptionDescription ;
00137     exceptionDescription << "No model was found.";
00138     G4Exception("G4ITModelManager::GetModel","ITModelManager004",
00139                 FatalErrorInArgument,exceptionDescription);
00140     return 0;
00141 }

void G4ITModelManager::Initialize (  ) 

Definition at line 76 of file G4ITModelManager.cc.

References fModels.

00077 {
00078     mapModels::iterator it = fModels.begin();
00079 
00080     for( ; it != fModels.end() ; it ++)
00081     {
00082         G4VITModel* model = it ->second;
00083         if(model!=0)
00084         {
00085             model->Initialize();
00086         }
00087     }
00088 }

G4ITModelManager & G4ITModelManager::operator= ( const G4ITModelManager rhs  ) 

Definition at line 69 of file G4ITModelManager.cc.

00070 {
00071     if (this == &rhs) return *this; // handle self assignment
00072     //assignment operator
00073     return *this;
00074 }

void G4ITModelManager::SetModel ( G4VITModel aModel,
G4double  startingTime 
)

Definition at line 90 of file G4ITModelManager.cc.

References FALSE, FatalErrorInArgument, fIsInitialized, fModels, and G4Exception().

00091 {
00092     assert(fIsInitialized == FALSE);
00093     if(fIsInitialized == true)
00094     {
00095         G4ExceptionDescription exceptionDescription ;
00096         exceptionDescription << "You are trying to insert a new model after initialization of th model manager.";
00097         G4Exception("G4ITModelManager::SetModel","ITModelManager001",
00098                     FatalErrorInArgument,exceptionDescription);
00099     }
00100     fModels[startingTime] = aModel;
00101 }


Field Documentation

G4bool G4ITModelManager::fIsInitialized [protected]

Definition at line 65 of file G4ITModelManager.hh.

Referenced by G4ITModelManager(), and SetModel().

mapModels G4ITModelManager::fModels [protected]

Definition at line 64 of file G4ITModelManager.hh.

Referenced by G4ITModelManager(), GetModel(), Initialize(), SetModel(), and ~G4ITModelManager().


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