19#include "BDSNavigatorPlacements.hh"
21#include "G4AffineTransform.hh"
22#include "G4Navigator.hh"
23#include "G4ThreeVector.hh"
31BDSNavigatorPlacements::BDSNavigatorPlacements():
32 globalToLocal(G4AffineTransform()),
33 localToGlobal(G4AffineTransform())
38BDSNavigatorPlacements::~BDSNavigatorPlacements()
48void BDSNavigatorPlacements::ResetNavigatorStates()
54 G4bool& foundAPlacementVolume)
const
57 if (!foundAPlacementVolume)
58 {
return G4ThreeVector();}
59 return globalToLocal.TransformPoint(globalPosition);
64 return globalToLocal.TransformPoint(globalPosition);
69 return localToGlobal.TransformAxis(localAxis);
74 G4ThreeVector globalB = localToGlobal.TransformAxis(localAxis.first);
75 G4ThreeVector globalE = localToGlobal.TransformAxis(localAxis.second);
76 return std::make_pair(globalB, globalE);
81 G4VPhysicalVolume* foundPVVolume =
navigator->LocateGlobalPointAndSetup(globalPosition);
84 globalToLocal =
navigator->GetGlobalToLocalTransform();
85 localToGlobal =
navigator->GetLocalToGlobalTransform();
static G4int numberOfInstances
G4bool InitialiseTransform(const G4ThreeVector &globalPosition) const
G4ThreeVector ConvertToLocalNoSetup(const G4ThreeVector &globalPosition) const
Similar to above function but does NOT initialise the transforms.
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