53 fAffineTransformationDefined(false), fEnvelope(anEnvelope),
54 fIsUnique(IsUnique), fEnvelopeLogicalVolume(0), fEnvelopePhysicalVolume(0),
83 if (!fAffineTransformationDefined || !fIsUnique) FRecordsAffineTransformation(theNavigator);
97 fLocalTrackDirection = fLocalTrackMomentum.
unit();
109 G4FastTrack::FRecordsAffineTransformation(
const G4Navigator* theNavigator)
119 if(theNavigator != 0 ) NavigatorToUse = theNavigator;
128 G4int depth = history->GetHistory()->GetDepth();
129 G4int idepth, Done = 0;
130 for (idepth = 0; idepth <= depth; idepth++)
136 fEnvelopePhysicalVolume = currPV;
137 fEnvelopeLogicalVolume = currLV;
138 fEnvelopeSolid = currLV->
GetSolid();
149 ed <<
"Can't find transformation for `" << fEnvelopePhysicalVolume->
GetName() <<
"'" <<
G4endl;
150 G4Exception(
"G4FastTrack::FRecordsAffineTransformation()",
159 fAffineTransformation = history->GetHistory()->GetTransform(idepth);
160 fInverseAffineTransformation = fAffineTransformation.
Inverse();
162 fAffineTransformationDefined =
true;