3#ifndef G_COMPONENT_BASE_H
4#define G_COMPONENT_BASE_H
41 virtual void ElectricField(
const double x,
const double y,
const double z,
42 double& ex,
double& ey,
double& ez,
Medium*& m,
45 virtual void ElectricField(
const double x,
const double y,
const double z,
46 double& ex,
double& ey,
double& ez,
double& v,
47 Medium*& m,
int& status) = 0;
53 virtual void WeightingField(
const double x,
const double y,
const double z,
54 double& wx,
double& wy,
double& wz,
55 const std::string label);
57 const double z,
const std::string label);
61 virtual void MagneticField(
const double x,
const double y,
const double z,
62 double& bx,
double& by,
double& bz,
int& status);
70 virtual bool GetBoundingBox(
double& xmin,
double& ymin,
double& zmin,
71 double& xmax,
double& ymax,
double& zmax);
73 virtual bool IsWireCrossed(
const double x0,
const double y0,
const double z0,
74 const double x1,
const double y1,
const double z1,
75 double& xc,
double& yc,
double& zc);
76 virtual bool IsInTrapRadius(
double x0,
double y0,
double z0,
double& xw,
77 double& yw,
double& rw);
void DisableRotationSymmetryZ()
void EnablePeriodicityY()
virtual void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status)=0
GeometryBase * theGeometry
void EnableMirrorPeriodicityZ()
void EnableMirrorPeriodicityX()
void DisablePeriodicityY()
virtual bool IsInTrapRadius(double x0, double y0, double z0, double &xw, double &yw, double &rw)
void DisableAxialPeriodicityX()
void DisableMirrorPeriodicityX()
void EnablePeriodicityX()
virtual void ElectricField(const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status)=0
virtual void UpdatePeriodicity()=0
void SetMagneticField(const double bx, const double by, const double bz)
void DisablePeriodicityZ()
void DisableAxialPeriodicityY()
void EnableAxialPeriodicityZ()
void EnablePeriodicityZ()
virtual void MagneticField(const double x, const double y, const double z, double &bx, double &by, double &bz, int &status)
void EnableRotationSymmetryX()
virtual bool IsWireCrossed(const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc)
void DisablePeriodicityX()
virtual bool GetBoundingBox(double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax)
void EnableRotationSymmetryY()
virtual Medium * GetMedium(const double &x, const double &y, const double &z)
void DisableMirrorPeriodicityZ()
void EnableAxialPeriodicityX()
void EnableRotationSymmetryZ()
virtual void WeightingField(const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string label)
void EnableAxialPeriodicityY()
void DisableAxialPeriodicityZ()
void DisableRotationSymmetryX()
virtual double WeightingPotential(const double x, const double y, const double z, const std::string label)
void EnableMirrorPeriodicityY()
void DisableRotationSymmetryY()
virtual void SetGeometry(GeometryBase *geo)
void DisableMirrorPeriodicityY()
virtual bool GetVoltageRange(double &vmin, double &vmax)=0