19#ifndef BDSNAVIGATORPLACEMENTS_H
20#define BDSNAVIGATORPLACEMENTS_H
22#include "G4AffineTransform.hh"
23#include "G4Navigator.hh"
24#include "G4ThreeVector.hh"
29class G4VPhysicalVolume;
59 static void ResetNavigatorStates();
65 G4bool& foundAPlacementVolume)
const;
80 std::pair<G4ThreeVector, G4ThreeVector>
ConvertAxisToGlobal(
const std::pair<G4ThreeVector, G4ThreeVector>& localAxis)
const;
83 mutable G4AffineTransform globalToLocal;
84 mutable G4AffineTransform localToGlobal;
92 inline const G4AffineTransform&
GlobalToLocal()
const {
return globalToLocal;}
93 inline const G4AffineTransform&
LocalToGlobal()
const {
return localToGlobal;}
Extra G4Navigator to get coordinate transforms for placement world.
const G4AffineTransform & LocalToGlobal() const
Utility function to select appropriate transform.
static G4int numberOfInstances
G4bool InitialiseTransform(const G4ThreeVector &globalPosition) const
static void AttachWorldVolumeToNavigator(G4VPhysicalVolume *worldPVIn)
Setup the navigator w.r.t. to a world volume - typically real world.
G4ThreeVector ConvertToLocalNoSetup(const G4ThreeVector &globalPosition) const
Similar to above function but does NOT initialise the transforms.
const G4AffineTransform & GlobalToLocal() const
Utility function to select appropriate transform.
G4ThreeVector ConvertToLocal(const G4ThreeVector &globalPosition, G4bool &foundAPlacementVolume) const
G4ThreeVector ConvertAxisToGlobal(const G4ThreeVector &localAxis) const
static G4VPhysicalVolume * worldPV
Cache of world PV to test if we're getting the wrong volume for the transform.
static G4Navigator * navigator