3 #include <Geant4/G4Step.hh>
4 #include <Geant4/G4TouchableHistory.hh>
5 #include <Geant4/G4Track.hh>
11 G4StepPoint* pPreStepPoint = aStep.GetPreStepPoint();
12 G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint();
13 G4VParticleChange* pParticleChange = G4OpBoundaryProcess::PostStepDoIt(aTrack, aStep);
62 if (aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens3" && pPostStepPoint->GetPosition().z() > pPreStepPoint->GetPosition().z())
64 pParticleChange->ProposeTrackStatus(fStopAndKill);
69 if (GetStatus() == FresnelRefraction && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName() ==
"wDirc")
71 pParticleChange->ProposeTrackStatus(fStopAndKill);
74 if ((aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens1" || aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens2") && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName() ==
"wDirc")
76 pParticleChange->ProposeTrackStatus(fStopAndKill);
87 if (aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens1" && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens1")
89 pParticleChange->ProposeTrackStatus(fStopAndKill);
91 if (aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens2" && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName() ==
"wLens2")
93 pParticleChange->ProposeTrackStatus(fStopAndKill);
96 return pParticleChange;