28#ifndef _CLASSIC_FIELDS_SECTORFIELD_HH_
29#define _CLASSIC_FIELDS_SECTORFIELD_HH_
123 static void convertToPolar(
const double* position_polar,
double* value);
167 double &rBegin,
double &rEnd)
const;
179 double &yIni,
double &yFinal,
180 double &zIni,
double &zFinal)
const;
205 double bbMaxR,
double bbMaxY,
double bbMaxPhi,
206 double bbTolR,
double bbTolY,
double bbTolPhi);
221 (
double bbMinR,
double bbMinPhi,
double bbMaxR,
double bbMaxPhi);
SectorField is an abstraction type for a sector field map i.e.
std::vector< double > bbMin_m
bounding box minimum as a 3-vector like (x_min, y_min, z_min)
std::vector< std::vector< double > > getCorners(double bbMinR, double bbMinPhi, double bbMaxR, double bbMaxPhi)
std::vector< double > polarBBMin_m
bounding box minimum as a 3-vector like (r_min, y_min, phi_min)
void getFieldDimensions(double &zBegin, double &zEnd, double &rBegin, double &rEnd) const
Fill inputs with the bounding box in Polar coordinates.
virtual std::vector< double > getPolarBoundingBoxMin() const
Get the minimum bounding box in polar coordinates.
static void convertToCartesian(double *position)
Convert a position from polar coordinates to cartesian.
virtual bool getFieldstrength(const Vector_t< double, 3 > &R_c, Vector_t< double, 3 > &E_c, Vector_t< double, 3 > &B_c) const =0
Return the field value in polar coordinates.
std::vector< double > polarBBMax_m
bounding box maximum as a 3-vector like (r_max, y_max, phi_max)
virtual ~SectorField()
Destructor (does nothing)
std::vector< double > bbMax_m
bounding box maximum as a 3-vector like (x_max, y_max, z_max)
bool isInBoundingBox(const double R_p[]) const
Return true if polar vector R_p is within polar bounding box.
std::string Filename_m
Keep the filename.
SectorField(const std::string &file_name)
Make an empty sector field; set bounding box to max double.
virtual std::vector< double > getPolarBoundingBoxMax() const
Get the maximum bounding box in polar coordinates.
static void convertToPolar(double *position)
Convert a position from cartesian to polar coordinates.
void setPolarBoundingBox(double bbMinR, double bbMinY, double bbMinPhi, double bbMaxR, double bbMaxY, double bbMaxPhi, double bbTolR, double bbTolY, double bbTolPhi)
Set the bounding boxes from polar coordinates.