72 G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
73 G4StepStatus preStepStatus = preStepPoint->GetStepStatus();
74 if (preStepStatus != G4StepStatus::fGeomBoundary)
80 G4ThreeVector globalPos = preStepPoint->GetPosition();
81 G4ThreeVector globalMom = preStepPoint->GetMomentum();
86 G4VSolid* preStepSolid = preStepPoint->GetPhysicalVolume()->GetLogicalVolume()->GetSolid();
88 G4ThreeVector surfaceNormal = preStepSolid->SurfaceNormal(posLocal);
94 G4ThreeVector radius(posLocal.x(), posLocal.y(), 0);
95 if (radius.dot(surfaceNormal) < 0)
96 {surfaceNormal *= -1;}
100 G4double dotProduct = surfaceNormal.dot(localPosMom.
PreStepPoint());
101 G4bool leavingBeamPipe = dotProduct >= 0;
102 if (!leavingBeamPipe)
106 G4ThreeVector momLocalUnit = momLocal.unit();
107 G4double x = posLocal.x();
108 G4double y = posLocal.y();
110 G4int beamlineIndex = -1;
121 S = info->
GetSPos() + posLocal.z();
122 beamlineIndex = info->GetBeamlineIndex();
126 {UpdateParams(theInfo);}
129 G4ThreeVector unitDir = globalMom.unit();
130 G4ThreeVector newPos = globalPos + 1e-3*unitDir;
134 {UpdateParams(theInfo);}
138 G4Track* track = aStep->GetTrack();
139 G4int nElectrons = track->GetDynamicParticle()->GetTotalOccupancy();
141 preStepPoint->GetKineticEnergy(),
147 preStepPoint->GetWeight(),
148 preStepPoint->GetGlobalTime(),
149 track->GetDefinition()->GetPDGEncoding(),
151 track->GetParentID(),