19#include "BDSFieldMag.hh"
22#include "G4ThreeVector.hh"
23#include "G4Transform3D.hh"
29 transform(G4Transform3D::Identity),
30 inverseTransform(G4Transform3D::Identity)
35 transform(transformIn),
36 inverseTransform(transformIn.inverse())
40 const G4double t)
const
43 {
return G4ThreeVector();}
44 else if (
transform != G4Transform3D::Identity)
46 G4ThreeVector transformedPosition =
inverseTransform * (HepGeom::Point3D<G4double>)position;
47 G4ThreeVector field =
GetField(transformedPosition, t);
48 G4ThreeVector transformedField =
transform * (HepGeom::Vector3D<G4double>)field;
49 return transformedField;
56 G4double* field)
const
58 G4double t = point[3];
61 G4ThreeVector fieldValue =
GetFieldTransformed(G4ThreeVector(point[0], point[1], point[2]), t);
62 field[0] = fieldValue[0];
63 field[1] = fieldValue[1];
64 field[2] = fieldValue[2];
virtual void SetTransform(const G4Transform3D &transformIn)
virtual void GetFieldValue(const G4double point[4], G4double *field) const
virtual G4ThreeVector GetFieldTransformed(const G4ThreeVector &position, const G4double t) const
Get the field value after applying transform for local offset.
virtual G4ThreeVector GetField(const G4ThreeVector &position, const G4double t=0) const =0
G4bool finiteStrength
Flag to cache whether finite nor not.
G4Transform3D inverseTransform
The complimentary transform used to initially rotate the point of query.
G4Transform3D transform
Transform to apply for the field relative to the local coordinates of the geometry.