Semi-analytic calculation of two-dimensional configurations consisting of wires, planes, and tubes.
More...
ComponentAnalyticField ()
Constructor.
~ComponentAnalyticField ()
Destructor.
void SetMedium (Medium *medium)
Set the medium inside the cell.
void AddWire (const double x, const double y, const double diameter, const double voltage, const std::string &label="", const double length=100., const double tension=50., const double rho=19.3, const int ntrap=5)
Add a wire at (x, y) .
void AddTube (const double radius, const double voltage, const int nEdges, const std::string &label="")
Add a tube.
void AddPlaneX (const double x, const double voltage, const std::string &label="")
Add a plane at constant x.
void AddPlaneY (const double y, const double voltage, const std::string &label="")
Add a plane at constant y.
void AddPlaneR (const double r, const double voltage, const std::string &label="")
Add a plane at constant radius.
void AddPlanePhi (const double phi, const double voltage, const std::string &label="")
Add a plane at constant phi.
void AddStripOnPlaneX (const char direction, const double x, const double smin, const double smax, const std::string &label, const double gap=-1.)
Add a strip in the y or z direction on an existing plane at constant x.
void AddStripOnPlaneY (const char direction, const double y, const double smin, const double smax, const std::string &label, const double gap=-1.)
Add a strip in the x or z direction on an existing plane at constant y.
void AddStripOnPlaneR (const char direction, const double r, const double smin, const double smax, const std::string &label, const double gap=-1.)
Add a strip in the phi or z direction on an existing plane at constant radius.
void AddStripOnPlanePhi (const char direction, const double phi, const double smin, const double smax, const std::string &label, const double gap=-1.)
Add a strip in the r or z direction on an existing plane at constant phi.
void AddPixelOnPlaneX (const double x, const double ymin, const double ymax, const double zmin, const double zmax, const std::string &label, const double gap=-1., const double rot=0.)
Add a pixel on an existing plane at constant x.
void AddPixelOnPlaneY (const double y, const double xmin, const double xmax, const double zmin, const double zmax, const std::string &label, const double gap=-1., const double rot=0.)
Add a pixel on an existing plane at constant y.
void AddPixelOnPlaneR (const double r, const double phimin, const double phimax, const double zmin, const double zmax, const std::string &label, const double gap=-1.)
Add a pixel on an existing plane at constant radius.
void AddPixelOnPlanePhi (const double phi, const double rmin, const double rmax, const double zmin, const double zmax, const std::string &label, const double gap=-1.)
Add a pixel on an existing plane at constant phi.
void SetPeriodicityX (const double s)
Set the periodic length [cm] in the x-direction.
void SetPeriodicityY (const double s)
Set the periodic length [cm] in the y-direction.
void SetPeriodicityPhi (const double phi)
Set the periodicity [degree] in phi.
bool GetPeriodicityX (double &s)
Get the periodic length in the x-direction.
bool GetPeriodicityY (double &s)
Get the periodic length in the y-direction.
bool GetPeriodicityPhi (double &s)
Get the periodicity [degree] in phi.
void SetCartesianCoordinates ()
Use Cartesian coordinates (default).
void SetPolarCoordinates ()
Use polar coordinates.
bool IsPolar () const
Are polar coordinates being used?
void PrintCell ()
Print all available information on the cell.
void PlotCell (TPad *pad)
Make a plot of the cell layout.
void AddCharge (const double x, const double y, const double z, const double q)
Add a point charge.
void ClearCharges ()
Remove all point charges.
void PrintCharges () const
Print a list of the point charges.
std::string GetCellType ()
Return the cell type.
void AddReadout (const std::string &label, const bool silent=false)
Request calculation of weighting field and potential for a given group of wires or planes.
void SetNumberOfCellCopies (const unsigned int nfourier)
bool MultipoleMoments (const unsigned int iw, const unsigned int order=4, const bool print=false, const bool plot=false, const double rmult=1., const double eps=1.e-4, const unsigned int nMaxIter=20)
Calculate multipole moments for a given wire.
void EnableDipoleTerms (const bool on=true)
Request dipole terms be included for each of the wires (default: off).
void EnableChargeCheck (const bool on=true)
Check the quality of the capacitance matrix inversion (default: off).
unsigned int GetNumberOfWires () const
Get the number of wires.
bool GetWire (const unsigned int i, double &x, double &y, double &diameter, double &voltage, std::string &label, double &length, double &charge, int &ntrap) const
Retrieve the parameters of a wire.
unsigned int GetNumberOfPlanesX () const
Get the number of equipotential planes at constant x.
unsigned int GetNumberOfPlanesY () const
Get the number of equipotential planes at constant y.
unsigned int GetNumberOfPlanesR () const
Get the number of equipotential planes at constant radius.
unsigned int GetNumberOfPlanesPhi () const
Get the number of equipotential planes at constant phi.
bool GetPlaneX (const unsigned int i, double &x, double &voltage, std::string &label) const
Retrieve the parameters of a plane at constant x.
bool GetPlaneY (const unsigned int i, double &y, double &voltage, std::string &label) const
Retrieve the parameters of a plane at constant y.
bool GetPlaneR (const unsigned int i, double &r, double &voltage, std::string &label) const
Retrieve the parameters of a plane at constant radius.
bool GetPlanePhi (const unsigned int i, double &phi, double &voltage, std::string &label) const
Retrieve the parameters of a plane at constant phi.
bool GetTube (double &r, double &voltage, int &nEdges, std::string &label) const
Retrieve the tube parameters.
bool OptimiseOnTrack (const std::vector< std::string > &groups, const std::string &field_function, const double target, const double x0, const double y0, const double x1, const double y1, const unsigned int nP=20, const bool print=true)
Vary the potential of selected electrodes to match (a function of) the potential or field along a given line to a target.
bool OptimiseOnGrid (const std::vector< std::string > &groups, const std::string &field_function, const double target, const double x0, const double y0, const double x1, const double y1, const unsigned int nX=10, const unsigned int nY=10, const bool print=true)
Vary the potential of selected electrodes to match (a function of) the potential or field on an x-y (or r-phi) grid of points.
bool OptimiseOnWires (const std::vector< std::string > &groups, const std::string &field_function, const double target, const std::vector< unsigned int > &wires, const bool print=true)
Vary the potential of selected electrodes to match (a function of) the potential or field on the surfaces of a set of wires.
void SetOptimisationParameters (const double dist=1., const double eps=1.e-4, const unsigned int nMaxIter=10)
Set the conditions at which to allow the iteration to stop.
bool ElectricFieldAtWire (const unsigned int iw, double &ex, double &ey)
Calculate the electric field at a given wire position, as if the wire itself were not there, but with the presence of its mirror images.
void SetScanningGrid (const unsigned int nX, const unsigned int nY)
Set the number of grid lines at which the electrostatic force as function of the wire displacement is computed.
void SetScanningArea (const double xmin, const double xmax, const double ymin, const double ymax)
Specify explicitly the boundaries of the the scanning area (i.
void SetScanningAreaLargest ()
Set the scanning area to the largest area around each wire which is free from other cell elements.
void SetScanningAreaFirstOrder (const double scale=2.)
Set the scanning area based on the zeroth-order estimates of the wire shift, enlarged by a scaling factor.
void EnableExtrapolation (const bool on=true)
Switch on/off extrapolation of electrostatic forces beyond the scanning area (default: off).
void SetGravity (const double dx, const double dy, const double dz)
Set the gravity orientation.
void GetGravity (double &dx, double &dy, double &dz) const
Get the gravity orientation.
void EnableGravity (const bool on=true)
Include gravity in the sag computation or not.
void EnableElectrostaticForce (const bool on=true)
Include the electrostatic force in the sag computation or not.
bool ForcesOnWire (const unsigned int iw, std::vector< double > &xMap, std::vector< double > &yMap, std::vector< std::vector< double > > &fxMap, std::vector< std::vector< double > > &fyMap)
Calculate a table of the forces acting on a wire.
bool WireDisplacement (const unsigned int iw, const bool detailed, std::vector< double > &csag, std::vector< double > &xsag, std::vector< double > &ysag, double &stretch, const bool print=true)
Compute the sag profile of a wire.
void SetNumberOfShots (const unsigned int n)
Set the number of shots used for numerically solving the wire sag differential equation.
void SetNumberOfSteps (const unsigned int n)
Set the number of integration steps within each shot (must be >= 1).
Medium * GetMedium (const double x, const double y, const double z) override
Get the medium at a given location (x, y, z).
void ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, Medium *&m, int &status) override
Calculate the drift field at given point.
void ElectricField (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &v, Medium *&m, int &status) override
Calculate the drift field [V/cm] and potential [V] at (x, y, z).
bool GetVoltageRange (double &pmin, double &pmax) override
Calculate the voltage range [V].
void WeightingField (const double x, const double y, const double z, double &wx, double &wy, double &wz, const std::string &label) override
Calculate the weighting field at a given point and for a given electrode.
double WeightingPotential (const double x, const double y, const double z, const std::string &label) override
Calculate the weighting potential at a given point.
bool GetBoundingBox (double &x0, double &y0, double &z0, double &x1, double &y1, double &z1) override
Get the bounding box coordinates.
bool GetElementaryCell (double &x0, double &y0, double &z0, double &x1, double &y1, double &z1) override
Get the coordinates of the elementary cell.
bool CrossedWire (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc, const bool centre, double &rc) override
Determine whether the line between two points crosses a wire.
bool InTrapRadius (const double q0, const double x0, const double y0, const double z0, double &xw, double &yx, double &rw) override
Determine whether a particle is inside the trap radius of a wire.
bool CrossedPlane (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, double &xc, double &yc, double &zc) override
Determine whether the line between two points crosses a plane.
double StepSizeHint () override
std::array< double, 3 > ElectricField (const double x, const double y, const double z)
Calculate the drift field [V/cm] at (x, y, z).
Component ()=delete
Default constructor.
Component (const std::string &name)
Constructor.
virtual ~Component ()=default
Destructor.
virtual void SetGeometry (Geometry *geo)
Define the geometry.
virtual void Clear ()
Reset.
std::array< double, 3 > ElectricField (const double x, const double y, const double z)
Calculate the drift field [V/cm] at (x, y, z).
virtual double ElectricPotential (const double x, const double y, const double z)
Calculate the (drift) electrostatic potential [V] at (x, y, z).
virtual const std::vector< double > & DelayedSignalTimes (const std::string &)
Return the time steps at which the delayed weighting potential/field are stored/evaluated.
virtual void DelayedWeightingField (const double x, const double y, const double z, const double t, double &wx, double &wy, double &wz, const std::string &label)
Calculate the delayed weighting field at a given point and time and for a given electrode.
virtual double DelayedWeightingPotential (const double x, const double y, const double z, const double t, const std::string &label)
Calculate the delayed weighting potential at a given point and time and for a given electrode.
virtual void DelayedWeightingPotentials (const double x, const double y, const double z, const std::string &label, std::vector< double > &dwp)
Calculate the delayed weighting potentials at a given point and for a given electrode, for a set of pre-defined times.
virtual void MagneticField (const double x, const double y, const double z, double &bx, double &by, double &bz, int &status)
Calculate the magnetic field at a given point.
void SetMagneticField (const double bx, const double by, const double bz)
Set a constant magnetic field.
virtual bool IsReady ()
Ready for use?
virtual bool Is3d ()
Does the component have a 3D field (map)?
double CellSizeX ()
double CellSizeY ()
double CellSizeZ ()
virtual size_t GetNumberOfElements () const
Return the number of mesh elements.
virtual bool GetElementNodes (const size_t, std::vector< size_t > &) const
Get the indices of the nodes constituting a given element.
virtual bool GetElementRegion (const size_t, size_t &, bool &) const
Get the region/material of a mesh element and a flag whether it is associated to an active medium.
virtual size_t GetNumberOfNodes () const
Return the number of mesh nodes.
virtual bool GetNode (const size_t i, double &x, double &y, double &z) const
Get the coordinates of a mesh node.
double IntegrateFluxCircle (const double xc, const double yc, const double r, const unsigned int nI=50)
Integrate the normal component of the electric field over a circle.
double IntegrateFluxSphere (const double xc, const double yc, const double zc, const double r, const unsigned int nI=20)
Integrate the normal component of the electric field over a sphere.
double IntegrateFluxParallelogram (const double x0, const double y0, const double z0, const double dx1, const double dy1, const double dz1, const double dx2, const double dy2, const double dz2, const unsigned int nU=20, const unsigned int nV=20)
Integrate the normal component of the electric field over a parallelogram.
double IntegrateWeightingFluxParallelogram (const std::string &label, const double x0, const double y0, const double z0, const double dx1, const double dy1, const double dz1, const double dx2, const double dy2, const double dz2, const unsigned int nU=20, const unsigned int nV=20)
Integrate the normal component of the weighting field over a parallelogram.
double IntegrateFluxLine (const double x0, const double y0, const double z0, const double x1, const double y1, const double z1, const double xp, const double yp, const double zp, const unsigned int nI, const int isign=0)
Integrate the electric field flux through a line from (x0,y0,z0) to (x1,y1,z1) along a direction (xp,yp,zp).
void EnablePeriodicityX (const bool on=true)
Enable simple periodicity in the direction.
void EnablePeriodicityY (const bool on=true)
Enable simple periodicity in the direction.
void EnablePeriodicityZ (const bool on=true)
Enable simple periodicity in the direction.
void IsPeriodic (bool &perx, bool &pery, bool &perz)
Return periodicity flags.
void EnableMirrorPeriodicityX (const bool on=true)
Enable mirror periodicity in the direction.
void EnableMirrorPeriodicityY (const bool on=true)
Enable mirror periodicity in the direction.
void EnableMirrorPeriodicityZ (const bool on=true)
Enable mirror periodicity in the direction.
void IsMirrorPeriodic (bool &perx, bool &pery, bool &perz)
Return mirror periodicity flags.
void EnableAxialPeriodicityX (const bool on=true)
Enable axial periodicity in the direction.
void EnableAxialPeriodicityY (const bool on=true)
Enable axial periodicity in the direction.
void EnableAxialPeriodicityZ (const bool on=true)
Enable axial periodicity in the direction.
void IsAxiallyPeriodic (bool &perx, bool &pery, bool &perz)
Return axial periodicity flags.
void EnableRotationSymmetryX (const bool on=true)
Enable rotation symmetry around the axis.
void EnableRotationSymmetryY (const bool on=true)
Enable rotation symmetry around the axis.
void EnableRotationSymmetryZ (const bool on=true)
Enable rotation symmetry around the axis.
void IsRotationSymmetric (bool &rotx, bool &roty, bool &rotz)
Return rotation symmetry flags.
void EnableTriangleSymmetricXY (const bool on=true, const bool oct=2)
Enable triangular periodicity in the plane.
void EnableTriangleSymmetricXZ (const bool on=true, const bool oct=2)
Enable triangular periodicity in the plane.
void EnableTriangleSymmetricYZ (const bool on=true, const bool oct=2)
Enable triangular periodicity in the plane.
void EnableDebugging (const bool on=true)
Switch on debugging messages.
void DisableDebugging ()
Switch off debugging messages.
virtual bool HasMagneticField () const
Does the component have a non-zero magnetic field?
virtual bool HasTownsendMap () const
Does the component have maps of the Townsend coefficient?
virtual bool HasAttachmentMap () const
Does the component have maps of the attachment coefficient?
virtual bool HasMobilityMap () const
Does the component have maps of the low-field mobility?
virtual bool HasVelocityMap () const
Does the component have velocity maps?
virtual bool ElectronAttachment (const double, const double, const double, double &eta)
Get the electron attachment coefficient.
virtual bool HoleAttachment (const double, const double, const double, double &eta)
Get the hole attachment coefficient.
virtual bool ElectronMobility (const double, const double, const double, double &mu)
virtual bool HoleMobility (const double, const double, const double, double &mu)
Get the hole Mobility coefficient.
virtual bool ElectronTownsend (const double, const double, const double, double &alpha)
Get the electron Townsend coefficient.
virtual bool HoleTownsend (const double, const double, const double, double &alpha)
Get the hole Townsend coefficient.
virtual bool ElectronVelocity (const double, const double, const double, double &vx, double &vy, double &vz)
Get the electron drift velocity.
virtual bool HoleVelocity (const double, const double, const double, double &vx, double &vy, double &vz)
Get the hole drift velocity.
virtual double CreateGPUTransferObject (ComponentGPU *&comp_gpu)
Create and initialise GPU Transfer class.
void UpdatePeriodicity () override
Verify periodicities.
void Reset () override
Reset the component.
void CellInit ()
bool Prepare ()
bool CellCheck ()
bool WireCheck () const
bool CellType ()
std::string GetCellType (const Cell ) const
bool PrepareStrips ()
bool PrepareSignals ()
bool SetupWireSignals ()
bool SetupPlaneSignals ()
bool Setup ()
bool Update (const std::vector< double > &vw, const std::array< double, 5 > &vp)
bool SetupA00 ()
bool SetupB1X ()
bool SetupB1Y ()
bool SetupB2X ()
bool SetupB2Y ()
bool SetupC10 ()
bool SetupC2X ()
bool SetupC2Y ()
bool SetupC30 ()
bool SetupD10 ()
bool SetupD20 ()
bool SetupD30 ()
bool IprA00 (const int mx, const int my, std::vector< std::vector< std::complex< double > > > &mat)
bool IprB2X (const int my, std::vector< std::vector< std::complex< double > > > &mat)
bool IprB2Y (const int mx, std::vector< std::vector< std::complex< double > > > &mat)
bool IprC2X (std::vector< std::vector< std::complex< double > > > &mat)
bool IprC2Y (std::vector< std::vector< std::complex< double > > > &mat)
bool IprC30 (std::vector< std::vector< std::complex< double > > > &mat)
bool IprD10 (std::vector< std::vector< std::complex< double > > > &mat)
bool IprD30 (std::vector< std::vector< std::complex< double > > > &mat)
bool SetupDipoleTerms ()
bool Charge (std::vector< std::vector< double > > &mat)
int Field (const double xin, const double yin, const double zin, double &ex, double &ey, double &ez, double &volt, const bool opt)
void FieldA00 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldB1X (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldB1Y (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldB2X (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldB2Y (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldC10 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldC2X (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldC2Y (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldC30 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldD10 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldD20 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void FieldD30 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void Field3dA00 (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &volt) const
void Field3dB2X (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &volt) const
void Field3dB2Y (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &volt) const
void Field3dD10 (const double x, const double y, const double z, double &ex, double &ey, double &ez, double &volt) const
bool Wfield (const double x, const double y, const double z, double &ex, double &ey, double &ez, const std::string &label) const
void WfieldWireA00 (const double x, const double y, double &ex, double &ey, const int mx, const int my, const std::vector< double > &qw) const
void WfieldWireB2X (const double x, const double y, double &ex, double &ey, const int my, const std::vector< double > &qw) const
void WfieldWireB2Y (const double x, const double y, double &ex, double &ey, const int mx, const std::vector< double > &qw) const
void WfieldWireC2X (const double x, const double y, double &ex, double &ey, const std::vector< double > &qw) const
void WfieldWireC2Y (const double x, const double y, double &ex, double &ey, const std::vector< double > &qw) const
void WfieldWireC30 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qw) const
void WfieldWireD10 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qw) const
void WfieldWireD30 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qw) const
void WfieldPlaneA00 (const double x, const double y, double &ex, double &ey, const int mx, const int my, const std::vector< double > &qp) const
void WfieldPlaneB2X (const double x, const double y, double &ex, double &ey, const int my, const std::vector< double > &qp) const
void WfieldPlaneB2Y (const double x, const double ypos, double &ex, double &ey, const int mx, const std::vector< double > &qp) const
void WfieldPlaneC2X (const double x, const double y, double &ex, double &ey, const std::vector< double > &qp) const
void WfieldPlaneC2Y (const double x, const double y, double &ex, double &ey, const std::vector< double > &qp) const
void WfieldPlaneC30 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qp) const
void WfieldPlaneD10 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qp) const
void WfieldPlaneD30 (const double x, const double y, double &ex, double &ey, const std::vector< double > &qp) const
void WfieldStripZ (const double x, const double y, double &ex, double &ey, const int ip, const Strip &strip) const
void WfieldStripXy (const double x, const double y, const double z, double &ex, double &ey, double &ez, const int ip, const Strip &strip) const
void WfieldStrip (const double x, const double y, const double g, const double w, double &fx, double &fy) const
void WfieldPixel (const double x, const double y, const double z, double &ex, double &ey, double &ez, const int ip, const Pixel &pixel) const
double Wpot (const double x, const double y, const double z, const std::string &label) const
double WpotWireA00 (const double x, const double y, const int mx, const int my, const std::vector< double > &qw) const
double WpotWireB2X (const double x, const double y, const int my, const std::vector< double > &qw) const
double WpotWireB2Y (const double x, const double y, const int mx, const std::vector< double > &qw) const
double WpotWireC2X (const double x, const double y, const std::vector< double > &qw) const
double WpotWireC2Y (const double x, const double y, const std::vector< double > &qw) const
double WpotWireC30 (const double x, const double y, const std::vector< double > &qw) const
double WpotWireD10 (const double x, const double y, const std::vector< double > &qw) const
double WpotWireD30 (const double x, const double y, const std::vector< double > &qw) const
double WpotPlaneA00 (const double x, const double y, const int mx, const int my, const std::vector< double > &qp) const
double WpotPlaneB2X (const double x, const double y, const int my, const std::vector< double > &qp) const
double WpotPlaneB2Y (const double x, const double y, const int mx, const std::vector< double > &qp) const
double WpotPlaneC2X (const double x, const double y, const std::vector< double > &qp) const
double WpotPlaneC2Y (const double x, const double y, const std::vector< double > &qp) const
double WpotPlaneC30 (const double x, const double y, const std::vector< double > &qp) const
double WpotPlaneD10 (const double x, const double y, const std::vector< double > &qp) const
double WpotPlaneD30 (const double x, const double y, const std::vector< double > &qp) const
double WpotStripZ (const double x, const double y, const int ip, const Strip &strip) const
double WpotStripXy (const double x, const double y, const double z, const int ip, const Strip &strip) const
double WpotPixel (const double x, const double y, const double z, const int ip, const Pixel &pixel) const
void FieldAtWireA00 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireB1X (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireB1Y (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireB2X (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireB2Y (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireC10 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireC2X (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireC2Y (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireC30 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireD10 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireD20 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void FieldAtWireD30 (const double xpos, const double ypos, double &ex, double &ey, const std::vector< bool > &cnalso) const
void DipoleFieldA00 (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void DipoleFieldB1X (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void DipoleFieldB1Y (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void DipoleFieldB2X (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
void DipoleFieldB2Y (const double xpos, const double ypos, double &ex, double &ey, double &volt, const bool opt) const
double Ph2 (const double xpos, const double ypos) const
double Ph2Lim (const double radius) const
void E2Sum (const double xpos, const double ypos, double &ex, double &ey) const
void ConformalMap (const std::complex< double > &z, std::complex< double > &ww, std::complex< double > &wd) const
bool SagDetailed (const Wire &wire, const std::vector< double > &xMap, const std::vector< double > &yMap, const std::vector< std::vector< double > > &fxMap, const std::vector< std::vector< double > > &fyMap, std::vector< double > &csag, std::vector< double > &xsag, std::vector< double > &ysag) const
bool GetForceRatio (const Wire &wire, const double coor, const std::array< double, 2 > &bend, const std::array< double, 2 > &dbend, std::array< double, 2 > &f, const std::vector< double > &xMap, const std::vector< double > &yMap, const std::vector< std::vector< double > > &fxMap, const std::vector< std::vector< double > > &fyMap) const
bool FindZeroes (const Wire &wire, const double h, std::vector< double > &x, const std::vector< double > &xMap, const std::vector< double > &yMap, const std::vector< std::vector< double > > &fxMap, const std::vector< std::vector< double > > &fyMap) const
bool StepRKN (const Wire &wire, const double h, double &x, std::array< double, 2 > &y, std::array< double, 2 > &yp, const std::vector< double > &xMap, const std::vector< double > &yMap, const std::vector< std::vector< double > > &fxMap, const std::vector< std::vector< double > > &fyMap) const
bool Trace (const Wire &wire, const double h, const std::vector< double > &xx, std::vector< double > &f, const std::vector< double > &xMap, const std::vector< double > &yMap, const std::vector< std::vector< double > > &fxMap, const std::vector< std::vector< double > > &fyMap) const
size_t SignalLayer (const int mx, const int my) const
void InitialiseFitParameters (const std::vector< std::string > &groups, std::vector< double > &vw0, std::array< double, 5 > &vp0, std::vector< double > &aFit, std::vector< std::vector< unsigned int > > &wiresInGroup, std::vector< std::vector< unsigned int > > &planesInGroup)