| 63 | } |
| 64 | |
| 65 | void G4SubEventTrackStack::PushToStack(const G4StackedTrack& aStackedTrack) |
| 66 | { |
| 67 | if(fCurrentSE==nullptr) |
| 68 | { |
| 69 | fCurrentSE = new G4SubEvent(fSubEventType,fMaxEnt); |
| 70 | fCurrentSE->SetEvent(fCurrentEvent); |
| 71 | } |
| 72 | else if(fCurrentSE->size()==fMaxEnt) |
| 73 | { |
| 74 | // current sus-event is already full. Transfer it to G4Event and create a new sub-event. |
| 75 | auto nSubEv = G4EventManager::GetEventManager() |
| 76 | ->StoreSubEvent(fCurrentEvent,fSubEventType,fCurrentSE); |
| 77 | if(verboseLevel>1) |
| 78 | { |
| 79 | G4cout << "### event id " << fCurrentEvent->GetEventID() |
| 80 | << " -- sub-evnet " << nSubEv << " with " << fCurrentSE->size() |
| 81 | << " tracks is stored" << G4endl; |
| 82 | } |
| 83 | fCurrentSE = new G4SubEvent(fSubEventType,fMaxEnt); |
| 84 | fCurrentSE->SetEvent(fCurrentEvent); |
| 85 | } |
| 86 | |
| 87 | // Sanity check |
| 88 | if(fCurrentEvent == nullptr || fCurrentSE->GetEvent() == nullptr |
| 89 | || fCurrentEvent != fCurrentSE->GetEvent()) |
| 90 | { |
| 91 | G4ExceptionDescription ed; |
| 92 | ed << "Event object is broken or storing tracks of more than one events. PANIC!!!"; |
| 93 | G4Exception("G4SubEventTrackStack::PushToStack()","SubEvt7003",FatalException,ed); |
| 94 | } |
| 95 | |
| 96 | fCurrentSE->PushToStack(aStackedTrack); |
| 97 | } |
| 98 | |
| 99 | void G4SubEventTrackStack::ReleaseSubEvent() |
| 100 | { |
nothing calls this directly
no test coverage detected