4 #include <Geant4/G4ios.hh>
8 : G4OpBoundaryProcess()
13 G4StepPoint* pPreStepPoint = aStep.GetPreStepPoint();
14 G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint();
33 G4VParticleChange* particleChange = G4OpBoundaryProcess::PostStepDoIt(aTrack, aStep);
49 if(aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName()==
"wExpVol" && pPostStepPoint->GetPosition().z() > pPreStepPoint->GetPosition().z()){
50 particleChange->ProposeTrackStatus(fStopAndKill);
53 if(aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"wLens3" && pPostStepPoint->GetPosition().z() > pPreStepPoint->GetPosition().z()){
54 particleChange->ProposeTrackStatus(fStopAndKill);
59 if(GetStatus() == FresnelRefraction
60 && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName()==
"wDirc"){
61 particleChange->ProposeTrackStatus(fStopAndKill);
64 if((aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"wLens1"
65 || aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"wLens2")
66 && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName()==
"wDirc"){
67 particleChange->ProposeTrackStatus(fStopAndKill);
79 if(aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"wLens1"
80 && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName()==
"wLens1"){
81 particleChange->ProposeTrackStatus(fStopAndKill);
83 if(aStep.GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"wLens2"
84 && aStep.GetPostStepPoint()->GetPhysicalVolume()->GetName()==
"wLens2"){
85 particleChange->ProposeTrackStatus(fStopAndKill);
89 return particleChange;