19#include "BDSFieldE.hh"
20#include "BDSModulator.hh"
23#include "G4ThreeVector.hh"
24#include "G4Transform3D.hh"
28 transform(G4Transform3D::Identity),
29 transformIsNotIdentity(false),
31 inverseTransform(G4Transform3D::Identity)
36 transform(transformIn),
37 transformIsNotIdentity(transformIn != G4Transform3D::Identity),
39 inverseTransform(transformIn.inverse())
43 const G4double t)
const
46 {
return G4ThreeVector();}
49 G4ThreeVector transformedPosition =
inverseTransform * (HepGeom::Point3D<G4double>)position;
50 G4ThreeVector field =
GetField(transformedPosition, t);
56 G4ThreeVector transformedField =
transform * (HepGeom::Vector3D<G4double>)field;
57 return transformedField;
61 G4ThreeVector field =
GetField(position,t);
72 G4double* field)
const
79 field[3] = fieldValue[0];
80 field[4] = fieldValue[1];
81 field[5] = fieldValue[2];
G4Transform3D inverseTransform
The complimentary transform used to initially rotate the point of query.
BDSModulator * modulator
Optional modulator;.
virtual G4ThreeVector GetField(const G4ThreeVector &position, const G4double t=0) const =0
virtual G4ThreeVector GetFieldTransformed(const G4ThreeVector &position, const G4double t) const
Get the field value after applying transform for local offset.
virtual void GetFieldValue(const G4double point[4], G4double *field) const
G4bool finiteStrength
Flag to cache whether finite nor not.
G4Transform3D transform
Transform to apply for the field relative to the local coordinates of the geometry.
G4bool transformIsNotIdentity
Cache of whether to use transform at all.
virtual void SetTransform(const G4Transform3D &transformIn)
virtual G4double Factor(const G4ThreeVector &xyz, G4double T) const =0