78 static void RegisterCurvilinearBridgeWorld(G4VPhysicalVolume* curvilinearBridgeWorldPVIn)
81 static void ResetNavigatorStates();
85 const G4ThreeVector* direction =
nullptr,
86 const G4bool pRelativeSearch =
true,
87 const G4bool ignoreDirection =
true,
88 G4bool useCurvilinear =
true)
const;
94 G4bool useCurvilinear =
true)
const;
101 G4bool useCurvilinear =
true)
const;
111 const G4ThreeVector& globalDirection,
112 const G4double stepLength = 0,
113 const G4bool useCurvilinear =
true,
114 const G4double marginLength = 1)
const;
121 const G4ThreeVector& localDirection,
122 const G4bool useCurvilinear =
true)
const;
128 const G4bool useCurvilinear =
true)
const;
132 const G4bool useCurvilinear =
true)
const;
136 const G4bool useCurvilinear =
true)
const;
144 const G4bool useCurvilinear =
true)
const;
150 const G4double globalAxis[3],
151 const G4bool useCurvilinear =
true)
const;
155 const G4ThreeVector& globalAxis,
156 const G4bool useCurvilinear =
true)
const;
163 const G4bool useCurvilinear =
true)
const;
169 std::pair<G4ThreeVector, G4ThreeVector>
ConvertAxisToGlobal(
const std::pair<G4ThreeVector, G4ThreeVector>& localAxis,
170 const G4bool useCurvilinear =
true)
const;
175 const G4bool useCurvilinear =
true)
const;
180 const G4ThreeVector& localAxis,
181 const G4bool useCurvilinear =
true)
const;
186 const G4ThreeVector& localPosition,
187 const G4bool useCurvilinear =
true)
const;
192 const G4ThreeVector& unitField,
193 const G4double angle,
194 const G4ThreeVector& position,
195 const G4ThreeVector& unitMomentum,
197 const G4bool useCurvilinearWorld,
199 const G4double tilt = 0);
202 const G4ThreeVector& unitMomentum,
204 const G4bool useCurvilinearWorld);
206 BDSStep CurvilinearToGlobal(
const G4ThreeVector& localPosition,
207 const G4ThreeVector& localMomentum,
208 const G4bool useCurvilinearWorld);
210 BDSStep CurvilinearToGlobal(
const G4double fieldArcLength,
211 const G4ThreeVector& unitField,
212 const G4double angle,
213 const G4ThreeVector& CLPosition,
214 const G4ThreeVector& CLMomentum,
215 const G4bool useCurvilinearWorld,
217 const G4double tilt = 0);
220 mutable G4AffineTransform globalToLocal;
221 mutable G4AffineTransform localToGlobal;
222 mutable G4AffineTransform globalToLocalCL;
223 mutable G4AffineTransform localToGlobalCL;
224 mutable G4bool bridgeVolumeWasUsed;
242 G4Navigator*
Navigator(G4bool curvilinear)
const;
245 const G4AffineTransform&
GlobalToLocal(G4bool curvilinear)
const;
246 const G4AffineTransform&
LocalToGlobal(G4bool curvilinear)
const;
249 void InitialiseTransform(
const G4bool massworld =
true,
250 const G4bool curvilinearWorld =
true)
const;
258 void InitialiseTransform(
const G4ThreeVector& globalPosition)
const;
264 void InitialiseTransform(
const G4ThreeVector& globalPosition,
265 const G4ThreeVector& globalMomentum,
266 const G4double stepLength);
G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=nullptr, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true, G4bool useCurvilinear=true) const
A wrapper for the underlying static navigator instance located within this class.
BDSStep GlobalToCurvilinear(const G4double fieldArcLength, const G4ThreeVector &unitField, const G4double angle, const G4ThreeVector &position, const G4ThreeVector &unitMomentum, const G4double h, const G4bool useCurvilinearWorld, const G4double FCof, const G4double tilt=0)