47 {
return fpEventManager; }
50 :currentEvent(0),trajectoryContainer(0),
51 verboseLevel(0),tracking(false),abortRequested(false),
52 storetRandomNumberStatusToG4Event(false)
57 "G4EventManager::G4EventManager() has already been made.");
67 fpEventManager =
this;
69 userStackingAction = 0;
70 userTrackingAction = 0;
71 userSteppingAction = 0;
82 delete trackContainer;
86 if(userEventAction)
delete userEventAction;
99 void G4EventManager::DoProcessing(
G4Event* anEvent)
101 abortRequested =
false;
107 "IllegalApplicationState -- Geometry is not closed : cannot process an event.");
110 currentEvent = anEvent;
112 if(storetRandomNumberStatusToG4Event>1)
114 std::ostringstream oss;
116 randomNumberStatusToG4Event = oss.str();
131 if ( verboseLevel > 0 )
133 G4cout <<
"=====================================" <<
G4endl;
134 G4cout <<
" G4EventManager::ProcessOneEvent() " <<
G4endl;
135 G4cout <<
"=====================================" <<
G4endl;
141 #ifdef G4_STORE_TRAJECTORY
142 trajectoryContainer = 0;
152 if ( verboseLevel > 1 )
155 <<
" vertices passed from G4Event." <<
G4endl;
160 { StackTracks( transformer->
GimmePrimaries( currentEvent, trackIDCounter ),true ); }
163 if ( verboseLevel > 0 )
166 <<
"are passed from G4EventTransformer." <<
G4endl;
167 G4cout <<
"!!!!!!! Now start processing an event !!!!!!!" <<
G4endl;
172 while( ( track = trackContainer->
PopNextTrack(&previousTrajectory) ) != 0 )
176 if ( verboseLevel > 1 )
180 <<
") is passed to G4TrackingManager." <<
G4endl;
190 if ( verboseLevel > 0 )
194 <<
") is processed with stopping code " << istop <<
G4endl;
199 #ifdef G4_STORE_TRAJECTORY
202 if(previousTrajectory)
206 aTrajectory = previousTrajectory;
210 if(!trajectoryContainer)
213 trajectoryContainer->
insert(aTrajectory);
223 StackTracks( secondaries );
228 StackTracks( secondaries );
232 StackTracks( secondaries );
237 G4cout <<
"Illeagal TrackStatus returned from G4TrackingManager!"
243 for(
size_t i=0;i<secondaries->size();i++)
244 {
delete (*secondaries)[i]; }
245 secondaries->clear();
253 if ( verboseLevel > 0 )
255 G4cout <<
"NULL returned from G4StackManager." <<
G4endl;
256 G4cout <<
"Terminate current event processing." <<
G4endl;
267 abortRequested =
false;
277 size_t n_passedTrack = trackVector->size();
278 if( n_passedTrack == 0 )
return;
279 for(
size_t i = 0; i < n_passedTrack; i++ )
281 newTrack = (*trackVector)[ i ];
296 if ( verboseLevel > 1 )
298 G4cout <<
"A new track " << newTrack
301 <<
") is passed to G4StackManager." <<
G4endl;
305 trackVector->clear();
311 userEventAction = userAction;
317 userStackingAction = userAction;
323 userTrackingAction = userAction;
329 userSteppingAction = userAction;
336 DoProcessing(anEvent);
342 if (!randStat) randStat =
new G4String;
350 if(storetRandomNumberStatusToG4Event==1 || storetRandomNumberStatusToG4Event==3)
352 std::ostringstream oss;
356 StackTracks(trackVector,
false);
357 DoProcessing(anEvent);
369 "G4VUserEventInformation cannot be set because of ansense of G4Event.");
390 abortRequested =
true;
391 trackContainer->
clear();
G4int GetParentID() const
G4VTrajectory * GimmeTrajectory() const
G4VUserEventInformation * GetUserInformation() const
void ProcessOneTrack(G4Track *apValueG4Track)
void SetOriginTouchableHandle(const G4TouchableHandle &apValue)
const G4DynamicParticle * GetDynamicParticle() const
virtual void EndOfEventAction(const G4Event *anEvent)
G4int GetNumberOfPrimaryVertex() const
G4int GetNTotalTrack() const
G4TrackStatus GetTrackStatus() const
G4Navigator * GetNavigatorForTracking() const
void SetRandomNumberStatusForProcessing(G4String &st)
void SetHCofThisEvent(G4HCofThisEvent *value)
virtual void BeginOfEventAction(const G4Event *anEvent)
G4Track * PopNextTrack(G4VTrajectory **newTrajectory)
void TerminateCurrentEvent(G4HCofThisEvent *HCE)
virtual void MergeTrajectory(G4VTrajectory *secondTrajectory)=0
static G4StateManager * GetStateManager()
void SetUserInformation(G4VUserEventInformation *anInfo)
void SetUserStackingAction(G4UserStackingAction *value)
G4GLOB_DLL std::ostream G4cout
G4bool SetNewState(G4ApplicationState requestedState)
G4TrackVector * GimmeSecondaries() const
void SetUserInformation(G4VUserEventInformation *anInfo)
void SetEventManager(G4EventManager *value)
void SetTrackID(G4int id)
G4int PushOneTrack(G4Track *newTrack, G4VTrajectory *newTrajectory=0)
G4ApplicationState GetCurrentState() const
G4PrimaryParticle * GetPrimaryParticle() const
const G4TouchableHandle & GetTouchableHandle() const
void SetUserAction(G4UserTrackingAction *apAction)
G4bool insert(G4VTrajectory *p)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void SetRandomNumberStatus(G4String &st)
static G4TransportationManager * GetTransportationManager()
G4HCofThisEvent * PrepareNewEvent()
std::vector< G4Track * > G4TrackVector
void SetUserAction(G4UserEventAction *userAction)
static G4EventManager * GetEventManager()
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
void ProcessOneEvent(G4Event *anEvent)
static std::ostream & saveFullState(std::ostream &os)
G4HCofThisEvent * GetHCofThisEvent() const
void SetTrajectoryContainer(G4TrajectoryContainer *value)
void KeepTheEvent(G4bool vl=true)
void KeepTheCurrentEvent()
void SetTrackID(const G4int aValue)
static G4SDManager * GetSDMpointerIfExist()
G4VUserEventInformation * GetUserInformation()