| 89 | } |
| 90 | |
| 91 | void G4EventManager::DoProcessing(G4Event* anEvent, |
| 92 | G4TrackVector* trackVector, G4bool IDhasAlreadySet) |
| 93 | { |
| 94 | abortRequested = false; |
| 95 | G4ApplicationState currentState = stateManager->GetCurrentState(); |
| 96 | if(currentState != G4State_GeomClosed) |
| 97 | { |
| 98 | G4Exception("G4EventManager::ProcessOneEvent", "Event0002", JustWarning, |
| 99 | "IllegalState -- Geometry not closed: cannot process an event."); |
| 100 | return; |
| 101 | } |
| 102 | currentEvent = anEvent; |
| 103 | if(!subEventParaWorker) stateManager->SetNewState(G4State_EventProc); |
| 104 | if(storetRandomNumberStatusToG4Event > 1) |
| 105 | { |
| 106 | std::ostringstream oss; |
| 107 | CLHEP::HepRandom::saveFullState(oss); |
| 108 | randomNumberStatusToG4Event = oss.str(); |
| 109 | currentEvent->SetRandomNumberStatusForProcessing(randomNumberStatusToG4Event); |
| 110 | } |
| 111 | |
| 112 | // Resetting Navigator has been moved to G4EventManager, |
| 113 | // so that resetting is now done for every event. |
| 114 | G4ThreeVector center(0,0,0); |
| 115 | G4Navigator* navigator = G4TransportationManager::GetTransportationManager() |
| 116 | ->GetNavigatorForTracking(); |
| 117 | navigator->LocateGlobalPointAndSetup(center,nullptr,false); |
| 118 | |
| 119 | G4Track* track = nullptr; |
| 120 | G4TrackStatus istop = fAlive; |
| 121 | |
| 122 | #ifdef G4VERBOSE |
| 123 | if ( verboseLevel > 0 ) |
| 124 | { |
| 125 | G4cout << "=====================================" << G4endl; |
| 126 | G4cout << " G4EventManager::ProcessOneEvent() " << G4endl; |
| 127 | if(trackVector!=nullptr) G4cout << " for a sub-event" << G4endl; |
| 128 | G4cout << "=====================================" << G4endl; |
| 129 | } |
| 130 | #endif |
| 131 | |
| 132 | trackContainer->PrepareNewEvent(currentEvent); |
| 133 | |
| 134 | #ifdef G4_STORE_TRAJECTORY |
| 135 | trajectoryContainer = nullptr; |
| 136 | // trajectoryContainer = currentEvent->GetTrajectoryContainer(); |
| 137 | // if(trajectoryContainer==nullptr) { |
| 138 | // trajectoryContainer = new G4TrajectoryContainer; |
| 139 | // currentEvent->SetTrajectoryContainer(trajectoryContainer); |
| 140 | // } |
| 141 | #endif |
| 142 | |
| 143 | sdManager = G4SDManager::GetSDMpointerIfExist(); |
| 144 | if(sdManager != nullptr) |
| 145 | { currentEvent->SetHCofThisEvent(sdManager->PrepareNewEvent()); } |
| 146 | |
| 147 | if(!subEventParaWorker && userEventAction != nullptr) userEventAction->BeginOfEventAction(currentEvent); |
| 148 |
nothing calls this directly
no test coverage detected