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 string.Clear();
46 string.GetReactionForce()->Clear();
47 G4Exception(
48 "QuirkWatcher::PostStepDoIt",
49 "QuirkMissingPartner",
50 EventMustBeAborted,
51 "QuirkWatcher: missing partner for quirk"
52 );
53 }
54
55
56 G4TrackStatus
stat =
track.GetTrackStatus();
57 if (stat == fStopButAlive) {
59 }
60 if (stat == fAlive || stat == fSuspend) {
61 G4bool passControl = !string.HasNextStringVector();
62
63 if (passControl) {
64 if (string.IsSourceAlive()) {
66 } else {
68 }
69 }
70 }
71 if (stat == fStopAndKill || stat == fKillTrackAndSecondaries) {
72 string.TrackKilled();
73 }
74
78}
#define ATLAS_THREAD_SAFE
G4VParticleChange m_particleChange
const InfracolorForce & GetStringIn() const