Project

General

Profile

Meeting 2016 06 24

Agenda

  • Improvements on GQLink + QSS polynomials
  • Using safety on standard GQLink to avoid calling LocateGlobalPointAndSetup
  • Possible next steps

GQLink + QSS polynomials: results

Soon's Homework

1) How to access the GetCopyNumber of G4Touchable/GetTouchableHandle at the start point of each step

 
G4double G4Transportation::AlongStepGetPhysicalInteractionLength(const G4Track&  track, ...) {
...
  G4int copyNumber = track.GetStep()->GetPreStepPoint()->GetTouchable()->GetCopyNumber();
//or equivalently
//G4int copyNumber = track.GetStep()->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber();
//
//pass copyNumber to GQLink which will not be changed up to the safety
...
}

2) Q. Simplified version of LocateGlobalPointAndSetup(point, direction, ...)?

A. It seems that there is no subset of this functionality except the Setup - to avoid a potential conflict with the default Geant4 navigator,
better to use a separate navigator for the purpose of GQLink (i.e., only for query the volume id).
LocateGlobalPointWithinVolume cannot be a substitute as it only updates the navigation state within the same volume.

So, practically we will call LocateGlobalPointAndSetup(point ...) just once after the sum of sub-step length exceed the current safety.
If we implement 1), the overhead of the volume id query in GQLink should not be more than that of IntersectChord inside G4PropagationInField,
which in turn invokes LocateGlobalPointAndSetup at least once to find the physical volume - so that it can calculate the linear distance by DistanceToOut/In
to judge intersect = (linear distance < chord length between the start and the end point)
(see G4VIntersectionLocator::IntersectChord and G4Navigator::ComputeStep).