MCPcopy Create free account
hub / github.com/Geant4/geant4 / PopNextTrack

Method PopNextTrack

source/event/src/G4StackManager.cc:137–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135}
136
137G4Track* G4StackManager::PopNextTrack(G4VTrajectory** newTrajectory)
138{
139#ifdef G4VERBOSE
140 if( verboseLevel > 1 )
141 {
142 G4cout << "### pop requested out of "
143 << GetNUrgentTrack() << " stacked tracks." << G4endl;
144 }
145#endif
146
147 while( GetNUrgentTrack() == 0 )
148 {
149#ifdef G4VERBOSE
150 if( verboseLevel > 1 )
151 {
152 G4cout << "### " << GetNWaitingTrack()
153 << " waiting tracks are re-classified to" << G4endl;
154 }
155#endif
156 waitingStack->TransferTo(urgentStack);
157 if(numberOfAdditionalWaitingStacks>0)
158 {
159 for(G4int i=0; i<numberOfAdditionalWaitingStacks; ++i)
160 {
161 if(i==0)
162 {
163 additionalWaitingStacks[0]->TransferTo(waitingStack);
164 }
165 else
166 {
167 additionalWaitingStacks[i]->TransferTo(additionalWaitingStacks[i-1]);
168 }
169 }
170 }
171 if(userStackingAction != nullptr)
172 {
173 userStackingAction->NewStage();
174 }
175
176#ifdef G4VERBOSE
177 if( verboseLevel > 1 )
178 G4cout << " " << GetNUrgentTrack()
179 << " urgent tracks and " << GetNWaitingTrack()
180 << " waiting tracks." << G4endl;
181#endif
182 if( ( GetNUrgentTrack()==0 ) && ( GetNWaitingTrack()==0 ) )
183 return nullptr;
184 }
185
186 G4StackedTrack selectedStackedTrack = urgentStack->PopFromStack();
187 G4Track * selectedTrack = selectedStackedTrack.GetTrack();
188 *newTrajectory = selectedStackedTrack.GetTrajectory();
189
190#ifdef G4VERBOSE
191 if( verboseLevel > 2 )
192 {
193 G4cout << "Selected G4StackedTrack : " << &selectedStackedTrack
194 << " with G4Track " << selectedStackedTrack.GetTrack()

Callers 1

DoProcessingMethod · 0.80

Calls 7

GetTrajectoryMethod · 0.80
TransferToMethod · 0.45
NewStageMethod · 0.45
PopFromStackMethod · 0.45
GetTrackMethod · 0.45
GetTrackIDMethod · 0.45
GetParentIDMethod · 0.45

Tested by

no test coverage detected