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 ()
 
G4ErrorPropagationNavigatorGetErrorPropagationNavigator () const
 
G4ErrorRunManagerHelperGetErrorRunManagerHelper () const
 
G4ErrorPropagatorGetPropagator () 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 G4ErrorPropagatorManagerGetErrorPropagatorManager ()
 

Private Member Functions

void StartG4ErrorRunManagerHelper ()
 
void StartNavigator ()
 

Private Attributes

G4Mag_UsualEqRhstheEquationOfMotion
 
G4ErrorPropagationNavigatortheG4ErrorPropagationNavigator
 
G4ErrorRunManagerHelpertheG4ErrorRunManagerHelper
 
G4ErrorPropagatorthePropagator
 

Static Private Attributes

static G4ThreadLocal G4ErrorPropagatorManagertheG4ErrorPropagatorManager = 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: