53 fAffineTransformationDefined( false ),
54 fEnvelope ( anEnvelope ),
55 fIsUnique ( IsUnique ),
56 fEnvelopeLogicalVolume ( nullptr ),
57 fEnvelopePhysicalVolume ( nullptr ),
58 fEnvelopeSolid ( nullptr )
86 if (!fAffineTransformationDefined || !fIsUnique) FRecordsAffineTransformation(theNavigator);
100 fLocalTrackDirection = fLocalTrackMomentum.
unit();
112 G4FastTrack::FRecordsAffineTransformation(
const G4Navigator* theNavigator)
122 if(theNavigator != 0 ) NavigatorToUse = theNavigator;
131 G4int depth = history->GetHistory()->GetDepth();
132 G4int idepth, Done = 0;
133 for (idepth = 0; idepth <= depth; idepth++)
139 fEnvelopePhysicalVolume = currPV;
140 fEnvelopeLogicalVolume = currLV;
141 fEnvelopeSolid = currLV->
GetSolid();
152 ed <<
"Can't find transformation for `" << fEnvelopePhysicalVolume->
GetName() <<
"'" <<
G4endl;
153 G4Exception(
"G4FastTrack::FRecordsAffineTransformation()",
162 fAffineTransformation = history->GetHistory()->GetTransform(idepth);
163 fInverseAffineTransformation = fAffineTransformation.
Inverse();
165 fAffineTransformationDefined =
true;
const G4ThreeVector & GetPolarization() const
std::ostringstream G4ExceptionDescription
virtual G4TouchableHistoryHandle CreateTouchableHistoryHandle() const
const G4ThreeVector & GetPosition() const
G4Navigator * GetNavigatorForTracking() const
G4VSolid * GetSolid() const
G4Region * GetRegion() const
G4FastTrack(G4Envelope *anEnvelope, G4bool IsUnique)
const G4String & GetName() const
G4bool IsRootRegion() const
void SetCurrentTrack(const G4Track &, const G4Navigator *a=0)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4TransportationManager * GetTransportationManager()
G4ThreeVector GetMomentum() const
G4LogicalVolume * GetLogicalVolume() const