33 {
34
36 const_cast<G4ParticleDefinition*
>(
track.GetParticleDefinition());
37 Quirk* quirkDef = dynamic_cast<Quirk*>(part_nc);
38 if (quirkDef == 0) {
39 G4Exception("QuirkWatcher::PostStepDoIt", "NonQuirk", FatalErrorInArgument, "QuirkWatcher run on non-quirk particle");
40 std::abort();
41 }
43
44 if (
track.GetCurrentStepNumber() > 1 && !
string.IsSourceInitialized()) {
45
46
47
48 string.Clear();
49 string.GetReactionForce()->Clear();
50 G4Exception(
51 "QuirkWatcher::PostStepDoIt",
52 "QuirkMissingPartner",
53 JustWarning,
54 "QuirkWatcher: missing partner for quirk; killing orphan track"
55 );
59 }
60
61
62 G4TrackStatus
stat =
track.GetTrackStatus();
63 if (stat == fStopButAlive) {
65 }
66 if (stat == fAlive || stat == fSuspend) {
67 G4bool passControl = !string.HasNextStringVector();
68
69 if (passControl) {
70 if (string.IsSourceAlive()) {
72 } else {
74 }
75 }
76 }
77 if (stat == fStopAndKill || stat == fKillTrackAndSecondaries) {
78 string.TrackKilled();
79 }
80
84}
#define ATLAS_THREAD_SAFE
G4VParticleChange m_particleChange
const InfracolorForce & GetStringIn() const