19#include "BDSFieldMag.hh"
20#include "BDSModulator.hh"
23#include "G4ThreeVector.hh"
24#include "G4Transform3D.hh"
30 transform(G4Transform3D::Identity),
31 transformIsNotIdentity(false),
33 inverseTransform(G4Transform3D::Identity)
38 transform(transformIn),
39 transformIsNotIdentity(transformIn != G4Transform3D::Identity),
41 inverseTransform(transformIn.inverse())
45 const G4double t)
const
48 {
return G4ThreeVector();}
51 G4ThreeVector transformedPosition =
inverseTransform * (HepGeom::Point3D<G4double>)position;
52 G4ThreeVector field =
GetField(transformedPosition, t);
58 G4ThreeVector transformedField =
transform * (HepGeom::Vector3D<G4double>)field;
59 return transformedField;
63 G4ThreeVector field =
GetField(position, t);
74 G4double* field)
const
76 G4double t = point[3];
79 G4ThreeVector fieldValue =
GetFieldTransformed(G4ThreeVector(point[0], point[1], point[2]), t);
80 field[0] = fieldValue[0];
81 field[1] = fieldValue[1];
82 field[2] = fieldValue[2];
BDSModulator * modulator
Optional modulator;.
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.
G4bool transformIsNotIdentity
Cache of whether to use transform at all.
virtual G4double Factor(const G4ThreeVector &xyz, G4double T) const =0