Geant4-11
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
G4ErrorPropagatorManager Class Reference

#include <G4ErrorPropagatorManager.hh>

Public Member Functions

G4bool CloseGeometry ()
 
void EventTermination ()
 
 G4ErrorPropagatorManager ()
 
G4ErrorPropagationNavigator * GetErrorPropagationNavigator () const
 
G4ErrorRunManagerHelper * GetErrorRunManagerHelper () const
 
G4ErrorPropagator * GetPropagator () const
 
G4bool InitFieldForBackwards ()
 
void InitGeant4e ()
 
void InitTrackPropagation ()
 
G4String PrintG4ErrorState ()
 
G4String PrintG4ErrorState (G4ErrorState state)
 
G4String PrintG4State ()
 
G4String PrintG4State (G4ApplicationState state)
 
G4int Propagate (G4ErrorTrajState *currentTS, const G4ErrorTarget *target, G4ErrorMode mode=G4ErrorMode_PropForwards)
 
G4int PropagateOneStep (G4ErrorTrajState *currentTS, G4ErrorMode mode=G4ErrorMode_PropForwards)
 
void RunTermination ()
 
void SetSteppingManagerVerboseLevel ()
 
void SetUserAction (G4UserSteppingAction *userAction)
 
void SetUserAction (G4UserTrackingAction *userAction)
 
void SetUserInitialization (G4VPhysicalVolume *userInit)
 
void SetUserInitialization (G4VUserDetectorConstruction *userInit)
 
void SetUserInitialization (G4VUserPhysicsList *userInit)
 
 ~G4ErrorPropagatorManager ()
 

Static Public Member Functions

static G4ErrorPropagatorManager * GetErrorPropagatorManager ()
 

Private Member Functions

void StartG4ErrorRunManagerHelper ()
 
void StartNavigator ()
 

Private Attributes

G4Mag_UsualEqRhs * theEquationOfMotion
 
G4ErrorPropagationNavigator * theG4ErrorPropagationNavigator
 
G4ErrorRunManagerHelper * theG4ErrorRunManagerHelper
 
G4ErrorPropagator * thePropagator
 

Static Private Attributes

static G4ThreadLocal G4ErrorPropagatorManager * theG4ErrorPropagatorManager = 0
 

Detailed Description

Definition at line 62 of file G4ErrorPropagatorManager.hh.

Constructor & Destructor Documentation

◆ G4ErrorPropagatorManager()

G4ErrorPropagatorManager::G4ErrorPropagatorManager ( )

Definition at line 79 of file G4ErrorPropagatorManager.cc.

80{
81 //----- Initialize a few things
82 // o theG4ErrorPropagatorManager = this;
83
84 char* g4emverb = std::getenv("G4EVERBOSE");
85 if(!g4emverb)
86 {
88 }
89 else
90 {
92 }
93
94 thePropagator = 0;
95
97
99
102
104
105 StartNavigator(); // navigator has to be initialized at the beggining !?!?!
106}
@ G4ErrorState_PreInit
static void SetVerbose(G4int ver)
static G4ErrorPropagatorData * GetErrorPropagatorData()
void SetState(G4ErrorState sta)
G4ErrorPropagationNavigator * theG4ErrorPropagationNavigator

References G4ErrorState_PreInit, G4ErrorPropagatorData::GetErrorPropagatorData(), G4ErrorPropagatorData::SetState(), G4ErrorPropagatorData::SetVerbose(), StartG4ErrorRunManagerHelper(), StartNavigator(), theEquationOfMotion, theG4ErrorPropagationNavigator, and thePropagator.

Referenced by GetErrorPropagatorManager().

◆ ~G4ErrorPropagatorManager()

G4ErrorPropagatorManager::~G4ErrorPropagatorManager ( )

Member Function Documentation

◆ CloseGeometry()

G4bool G4ErrorPropagatorManager::CloseGeometry ( )

Definition at line 335 of file G4ErrorPropagatorManager.cc.

336{
338 geomManager->OpenGeometry();
339 if(G4StateManager::GetStateManager()->GetCurrentState() != G4State_GeomClosed)
340 {
342 }
343
344 return TRUE;
345}
@ G4State_Quit
@ G4State_GeomClosed
#define TRUE
Definition: Globals.hh:27
static G4GeometryManager * GetInstance()
void OpenGeometry(G4VPhysicalVolume *vol=nullptr)
static G4StateManager * GetStateManager()
G4bool SetNewState(const G4ApplicationState &requestedState)

References G4State_GeomClosed, G4State_Quit, G4GeometryManager::GetInstance(), G4StateManager::GetStateManager(), G4GeometryManager::OpenGeometry(), G4StateManager::SetNewState(), and TRUE.

◆ EventTermination()

void G4ErrorPropagatorManager::EventTermination ( )

◆ GetErrorPropagationNavigator()

G4ErrorPropagationNavigator * G4ErrorPropagatorManager::GetErrorPropagationNavigator ( ) const
inline

Definition at line 133 of file G4ErrorPropagatorManager.hh.

134 {
136 }

References theG4ErrorPropagationNavigator.

◆ GetErrorPropagatorManager()

G4ErrorPropagatorManager * G4ErrorPropagatorManager::GetErrorPropagatorManager ( )
static

◆ GetErrorRunManagerHelper()

G4ErrorRunManagerHelper * G4ErrorPropagatorManager::GetErrorRunManagerHelper ( ) const
inline

Definition at line 126 of file G4ErrorPropagatorManager.hh.

127 {
129 }

References theG4ErrorRunManagerHelper.

◆ GetPropagator()

G4ErrorPropagator * G4ErrorPropagatorManager::GetPropagator ( ) const
inline

Definition at line 138 of file G4ErrorPropagatorManager.hh.

138{ return thePropagator; }

References thePropagator.

◆ InitFieldForBackwards()

G4bool G4ErrorPropagatorManager::InitFieldForBackwards ( )

Definition at line 247 of file G4ErrorPropagatorManager.cc.

248{
250 G4cout << " G4ErrorPropagatorManager::InitFieldForBackwards() " << G4endl;
251 //----- Gets the current equation of motion
252 G4FieldManager* fieldMgr =
254 // G4cout << " fieldMgr " << fieldMgr << G4endl;
255 if(!fieldMgr)
256 return 0;
257
258 // G4Field* myfield = fieldMgr->GetDetectorField();
259 G4ChordFinder* cf = fieldMgr->GetChordFinder();
260 if(!cf)
261 return 0;
262 auto driver = cf->GetIntegrationDriver();
263 if(!driver)
264 return 0;
265 auto equation = driver->GetEquationOfMotion();
266
267 //----- Replaces the equation by a G4ErrorMag_UsualEqRhs to handle backwards
268 //tracking
269 if(!dynamic_cast<G4ErrorMag_UsualEqRhs*>(equation))
270 {
271 G4MagneticField* myfield = (G4MagneticField*) fieldMgr->GetDetectorField();
272
273 // G4Mag_UsualEqRhs* fEquation_usual =
274 // dynamic_cast<G4Mag_UsualEqRhs*>(equation);
275 if(theEquationOfMotion == 0)
277
278 //---- Pass the equation of motion to the G4MagIntegratorStepper
279 driver->SetEquationOfMotion(theEquationOfMotion);
280
281 //--- change stepper for speed tests
282 G4MagIntegratorStepper* g4eStepper =
284 // G4MagIntegratorStepper* g4eStepper = new
285 // G4ExactHelixStepper(theEquationOfMotion);
286
287 //----
288 G4MagneticField* field = static_cast<G4MagneticField*>(
289 const_cast<G4Field*>(fieldMgr->GetDetectorField()));
290 G4ChordFinder* pChordFinder =
291 new G4ChordFinder(field, 1.0e-2 * mm, g4eStepper);
292
293 fieldMgr->SetChordFinder(pChordFinder);
294 }
295
296 return 1;
297}
static constexpr double mm
Definition: G4SIunits.hh:95
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4VIntegrationDriver * GetIntegrationDriver()
void SetChordFinder(G4ChordFinder *aChordFinder)
const G4Field * GetDetectorField() const
G4ChordFinder * GetChordFinder()
static G4TransportationManager * GetTransportationManager()
G4FieldManager * GetFieldManager() const
virtual G4EquationOfMotion * GetEquationOfMotion()=0

References G4cout, G4endl, G4FieldManager::GetChordFinder(), G4FieldManager::GetDetectorField(), G4VIntegrationDriver::GetEquationOfMotion(), G4TransportationManager::GetFieldManager(), G4ChordFinder::GetIntegrationDriver(), G4TransportationManager::GetTransportationManager(), mm, G4FieldManager::SetChordFinder(), theEquationOfMotion, and G4ErrorPropagatorData::verbose().

Referenced by InitGeant4e().

◆ InitGeant4e()

void G4ErrorPropagatorManager::InitGeant4e ( )

Definition at line 177 of file G4ErrorPropagatorManager.cc.

178{
180 G4cout << "InitGeant4e GEANT4e State= " << PrintG4ErrorState()
181 << " GEANT4 State= " << PrintG4State() << G4endl;
182 G4ApplicationState currentState =
184 //----- Initialize run
185 // if( G4StateManager::GetStateManager()->GetCurrentState() ==
186 // G4State_PreInit) {
187
190 {
191 if(currentState == G4State_PreInit || currentState == G4State_Idle)
192 {
193 // G4eRunManager::GetRunManager()->Initialize();
196 }
197
199
200 //- G4StateManager::GetStateManager()->SetNewState(G4State_Idle);
201
203 G4cout << " bef theG4ErrorPropagatorManager->RunInitialization() "
207 G4cout << " aft theG4ErrorPropagatorManager->RunInitialization() "
209
210 if(!thePropagator)
212 new G4ErrorPropagator(); // currently the only propagator possible
213
215 }
216 else
217 {
218 std::ostringstream message;
219 message << "Illegal GEANT4e State= " << PrintG4ErrorState();
220 G4Exception("G4ErrorPropagatorManager::InitGeant4e()", "IllegalState",
221 JustWarning, message);
222 }
223
224 //----- Set the tracking geometry for this propagation
225 // t SetTrackingGeometry();
226 //----- Set the physics list for this propagation
227 // t SetPhysicsList();
228 //----- Set the field propagation parameters for this propagation
229 // t SetFieldPropagationParameters();
231
233 G4cout << "End InitGeant4e GEANT4e State= " << PrintG4ErrorState()
234 << " GEANT4 State= " << PrintG4State() << G4endl;
235}
G4ApplicationState
@ G4State_Idle
@ G4State_PreInit
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
const G4ApplicationState & GetCurrentState() const

References G4cout, G4endl, G4ErrorState_Init, G4ErrorState_PreInit, G4Exception(), G4State_Idle, G4State_PreInit, G4StateManager::GetCurrentState(), G4ErrorPropagatorData::GetErrorPropagatorData(), G4StateManager::GetStateManager(), InitFieldForBackwards(), G4ErrorRunManagerHelper::InitializeGeometry(), G4ErrorRunManagerHelper::InitializePhysics(), InitTrackPropagation(), JustWarning, PrintG4ErrorState(), PrintG4State(), G4ErrorRunManagerHelper::RunInitialization(), G4ErrorPropagatorData::SetState(), theG4ErrorRunManagerHelper, thePropagator, and G4ErrorPropagatorData::verbose().

◆ InitTrackPropagation()

void G4ErrorPropagatorManager::InitTrackPropagation ( )

◆ PrintG4ErrorState() [1/2]

G4String G4ErrorPropagatorManager::PrintG4ErrorState ( )

◆ PrintG4ErrorState() [2/2]

G4String G4ErrorPropagatorManager::PrintG4ErrorState ( G4ErrorState  state)

Definition at line 410 of file G4ErrorPropagatorManager.cc.

411{
412 G4String nam = "";
413 switch(state)
414 {
416 nam = "G4ErrorState_PreInit";
417 break;
419 nam = "G4ErrorState_Init";
420 break;
422 nam = "G4ErrorState_Propagating";
423 break;
425 nam = "G4ErrorState_TargetCloserThanBoundary";
426 break;
428 nam = "G4ErrorState_StoppedAtTarget";
429 break;
430 }
431
432 return nam;
433}
@ G4ErrorState_TargetCloserThanBoundary
@ G4ErrorState_StoppedAtTarget

References G4ErrorState_Init, G4ErrorState_PreInit, G4ErrorState_Propagating, G4ErrorState_StoppedAtTarget, and G4ErrorState_TargetCloserThanBoundary.

◆ PrintG4State() [1/2]

G4String G4ErrorPropagatorManager::PrintG4State ( )

Definition at line 436 of file G4ErrorPropagatorManager.cc.

437{
438 return PrintG4State(G4StateManager::GetStateManager()->GetCurrentState());
439}

References G4StateManager::GetStateManager(), and PrintG4State().

Referenced by InitGeant4e(), and PrintG4State().

◆ PrintG4State() [2/2]

G4String G4ErrorPropagatorManager::PrintG4State ( G4ApplicationState  state)

Definition at line 442 of file G4ErrorPropagatorManager.cc.

443{
444 G4String nam = "";
445 switch(state)
446 {
447 case G4State_PreInit:
448 nam = "G4State_PreInit";
449 break;
450 case G4State_Init:
451 nam = "G4State_Init";
452 break;
453 case G4State_Idle:
454 nam = "G4State_Idle";
455 break;
457 nam = "G4State_GeomClosed";
458 break;
460 nam = "G4State_EventProc";
461 break;
462 case G4State_Quit:
463 nam = "G4State_Quit";
464 break;
465 case G4State_Abort:
466 nam = "G4State_Abort";
467 break;
468 }
469
470 return nam;
471}
@ G4State_EventProc
@ G4State_Init
@ G4State_Abort

References G4State_Abort, G4State_EventProc, G4State_GeomClosed, G4State_Idle, G4State_Init, G4State_PreInit, and G4State_Quit.

◆ Propagate()

G4int G4ErrorPropagatorManager::Propagate ( G4ErrorTrajState *  currentTS,
const G4ErrorTarget *  target,
G4ErrorMode  mode = G4ErrorMode_PropForwards 
)

Definition at line 300 of file G4ErrorPropagatorManager.cc.

303{
305 if(!thePropagator)
307 new G4ErrorPropagator(); // currently the only propagator possible
308
311
312 G4int ierr = thePropagator->Propagate(currentTS, target, mode);
313
315
316 return ierr;
317}
int G4int
Definition: G4Types.hh:85
void SetMode(G4ErrorMode mode)
G4int Propagate(G4ErrorTrajState *currentTS, const G4ErrorTarget *target, G4ErrorMode mode=G4ErrorMode_PropForwards)

References EventTermination(), G4ErrorPropagatorData::GetErrorPropagatorData(), InitTrackPropagation(), G4ErrorPropagator::Propagate(), G4ErrorPropagatorData::SetMode(), SetSteppingManagerVerboseLevel(), and thePropagator.

◆ PropagateOneStep()

G4int G4ErrorPropagatorManager::PropagateOneStep ( G4ErrorTrajState *  currentTS,
G4ErrorMode  mode = G4ErrorMode_PropForwards 
)

◆ RunTermination()

void G4ErrorPropagatorManager::RunTermination ( )

◆ SetSteppingManagerVerboseLevel()

void G4ErrorPropagatorManager::SetSteppingManagerVerboseLevel ( )

◆ SetUserAction() [1/2]

void G4ErrorPropagatorManager::SetUserAction ( G4UserSteppingAction *  userAction)

Definition at line 375 of file G4ErrorPropagatorManager.cc.

376{
378}
void SetUserAction(G4UserEventAction *userAction)

References G4EventManager::GetEventManager(), and G4EventManager::SetUserAction().

◆ SetUserAction() [2/2]

void G4ErrorPropagatorManager::SetUserAction ( G4UserTrackingAction *  userAction)

◆ SetUserInitialization() [1/3]

void G4ErrorPropagatorManager::SetUserInitialization ( G4VPhysicalVolume *  userInit)

Definition at line 355 of file G4ErrorPropagatorManager.cc.

357{
359}
void SetUserInitialization(G4VUserDetectorConstruction *userInit)

References G4ErrorRunManagerHelper::SetUserInitialization(), and theG4ErrorRunManagerHelper.

◆ SetUserInitialization() [2/3]

void G4ErrorPropagatorManager::SetUserInitialization ( G4VUserDetectorConstruction *  userInit)

◆ SetUserInitialization() [3/3]

void G4ErrorPropagatorManager::SetUserInitialization ( G4VUserPhysicsList *  userInit)

◆ StartG4ErrorRunManagerHelper()

void G4ErrorPropagatorManager::StartG4ErrorRunManagerHelper ( )
private

Definition at line 119 of file G4ErrorPropagatorManager.cc.

120{
121 //----- Initialize G4ErrorRunManagerHelper
123
125 {
127 }
128
129 //----- User Initialization classes
130 //--- GEANT4e PhysicsList
132 G4cout << " G4ErrorPropagatorManager::StartG4eRunManager() done "
134 //- theG4eRunManager->SetUserInitialization(new G4ErrorPhysicsList);
135}
static G4ErrorRunManagerHelper * GetRunManagerKernel()

References G4cout, G4endl, G4ErrorRunManagerHelper::GetRunManagerKernel(), theG4ErrorRunManagerHelper, and G4ErrorPropagatorData::verbose().

Referenced by G4ErrorPropagatorManager().

◆ StartNavigator()

void G4ErrorPropagatorManager::StartNavigator ( )
private

Definition at line 138 of file G4ErrorPropagatorManager.cc.

139{
141 {
142 G4TransportationManager* transportationManager =
144
145 G4Navigator* g4navi = transportationManager->GetNavigatorForTracking();
146
147 G4VPhysicalVolume* world = g4navi->GetWorldVolume();
148 G4int verb = g4navi->GetVerboseLevel();
149 delete g4navi;
150
152
153 if(world != 0)
154 {
156 }
158
159 transportationManager->SetNavigatorForTracking(
161 transportationManager->GetPropagatorInField()
168 // G4ThreeVector center(0,0,0);
169 // theG4ErrorPropagationNavigator->LocateGlobalPointAndSetup(center,0,false);
170 }
171
173 G4cout << " theState at StartNavigator " << PrintG4ErrorState() << G4endl;
174}
void SetVerboseLevel(G4int level)
G4int GetVerboseLevel() const
void SetWorldVolume(G4VPhysicalVolume *pWorld)
G4VPhysicalVolume * GetWorldVolume() const
G4VIntersectionLocator * GetIntersectionLocator()
void SetNavigator(G4Navigator *value)
G4PropagatorInField * GetPropagatorInField() const
G4Navigator * GetNavigatorForTracking() const
void SetNavigatorForTracking(G4Navigator *newNavigator)
void SetNavigatorFor(G4Navigator *fNavigator)

References G4cout, G4endl, G4EventManager::GetEventManager(), G4PropagatorInField::GetIntersectionLocator(), G4TransportationManager::GetNavigatorForTracking(), G4TransportationManager::GetPropagatorInField(), G4TrackingManager::GetSteppingManager(), G4EventManager::GetTrackingManager(), G4TransportationManager::GetTransportationManager(), G4Navigator::GetVerboseLevel(), G4Navigator::GetWorldVolume(), PrintG4ErrorState(), G4SteppingManager::SetNavigator(), G4VIntersectionLocator::SetNavigatorFor(), G4TransportationManager::SetNavigatorForTracking(), G4Navigator::SetVerboseLevel(), G4Navigator::SetWorldVolume(), theG4ErrorPropagationNavigator, and G4ErrorPropagatorData::verbose().

Referenced by G4ErrorPropagatorManager().

Field Documentation

◆ theEquationOfMotion

G4Mag_UsualEqRhs* G4ErrorPropagatorManager::theEquationOfMotion
private

◆ theG4ErrorPropagationNavigator

G4ErrorPropagationNavigator* G4ErrorPropagatorManager::theG4ErrorPropagationNavigator
private

◆ theG4ErrorPropagatorManager

G4ThreadLocal G4ErrorPropagatorManager * G4ErrorPropagatorManager::theG4ErrorPropagatorManager = 0
staticprivate

◆ theG4ErrorRunManagerHelper

G4ErrorRunManagerHelper* G4ErrorPropagatorManager::theG4ErrorRunManagerHelper
private

◆ thePropagator

G4ErrorPropagator* G4ErrorPropagatorManager::thePropagator
private

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