18#ifndef BDSNAVIGATORPLACEMENTS_H
19#define BDSNAVIGATORPLACEMENTS_H
21#include "G4AffineTransform.hh"
22#include "G4Navigator.hh"
23#include "G4ThreeVector.hh"
28class G4VPhysicalVolume;
58 static void ResetNavigatorStates();
64 G4bool& foundAPlacementVolume)
const;
79 std::pair<G4ThreeVector, G4ThreeVector>
ConvertAxisToGlobal(
const std::pair<G4ThreeVector, G4ThreeVector>& localAxis)
const;
82 mutable G4AffineTransform globalToLocal;
83 mutable G4AffineTransform localToGlobal;
91 inline const G4AffineTransform&
GlobalToLocal()
const {
return globalToLocal;}
92 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