79 static void RegisterCurvilinearBridgeWorld(G4VPhysicalVolume* curvilinearBridgeWorldPVIn)
82 static void ResetNavigatorStates();
86 const G4ThreeVector* direction =
nullptr,
87 const G4bool pRelativeSearch =
true,
88 const G4bool ignoreDirection =
true,
89 G4bool useCurvilinear =
true)
const;
95 G4bool useCurvilinear =
true)
const;
102 G4bool useCurvilinear =
true)
const;
112 const G4ThreeVector& globalDirection,
113 const G4double stepLength = 0,
114 const G4bool useCurvilinear =
true,
115 const G4double marginLength = 1)
const;
122 const G4ThreeVector& localDirection,
123 const G4bool useCurvilinear =
true)
const;
129 const G4bool useCurvilinear =
true)
const;
133 const G4bool useCurvilinear =
true)
const;
137 const G4bool useCurvilinear =
true)
const;
145 const G4bool useCurvilinear =
true)
const;
151 const G4double globalAxis[3],
152 const G4bool useCurvilinear =
true)
const;
156 const G4ThreeVector& globalAxis,
157 const G4bool useCurvilinear =
true)
const;
164 const G4bool useCurvilinear =
true)
const;
170 std::pair<G4ThreeVector, G4ThreeVector>
ConvertAxisToGlobal(
const std::pair<G4ThreeVector, G4ThreeVector>& localAxis,
171 const G4bool useCurvilinear =
true)
const;
176 const G4bool useCurvilinear =
true)
const;
181 const G4ThreeVector& localAxis,
182 const G4bool useCurvilinear =
true)
const;
187 const G4ThreeVector& localPosition,
188 const G4bool useCurvilinear =
true)
const;
193 const G4ThreeVector& unitField,
194 const G4double angle,
195 const G4ThreeVector& position,
196 const G4ThreeVector& unitMomentum,
198 const G4bool useCurvilinearWorld,
200 const G4double tilt = 0);
203 const G4ThreeVector& unitMomentum,
205 const G4bool useCurvilinearWorld);
207 BDSStep CurvilinearToGlobal(
const G4ThreeVector& localPosition,
208 const G4ThreeVector& localMomentum,
209 const G4bool useCurvilinearWorld);
211 BDSStep CurvilinearToGlobal(
const G4double fieldArcLength,
212 const G4ThreeVector& unitField,
213 const G4double angle,
214 const G4ThreeVector& CLPosition,
215 const G4ThreeVector& CLMomentum,
216 const G4bool useCurvilinearWorld,
218 const G4double tilt = 0);
221 mutable G4AffineTransform globalToLocal;
222 mutable G4AffineTransform localToGlobal;
223 mutable G4AffineTransform globalToLocalCL;
224 mutable G4AffineTransform localToGlobalCL;
225 mutable G4bool bridgeVolumeWasUsed;
243 G4Navigator*
Navigator(G4bool curvilinear)
const;
246 const G4AffineTransform&
GlobalToLocal(G4bool curvilinear)
const;
247 const G4AffineTransform&
LocalToGlobal(G4bool curvilinear)
const;
250 void InitialiseTransform(
const G4bool massworld =
true,
251 const G4bool curvilinearWorld =
true)
const;
259 void InitialiseTransform(
const G4ThreeVector& globalPosition)
const;
265 void InitialiseTransform(
const G4ThreeVector& globalPosition,
266 const G4ThreeVector& globalMomentum,
267 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)