![]() |
VieSched++
VieVS VLBI Scheduling Software
|
representation of an VLBI cable wrap More...
#include <AbstractCableWrap.h>
Public Types | |
enum | CableWrapFlag { CableWrapFlag::ccw, CableWrapFlag::n, CableWrapFlag::cw } |
enum to distinguish cable wraps More... | |
Public Member Functions | |
AbstractCableWrap (double axis1_low_deg, double axis1_up_deg, double axis2_low_deg, double axis2_up_deg) | |
constructor More... | |
void | setMinimumOffsets (double axis1_low_offset, double axis1_up_offset, double axis2_low_offset, double axis2_up_offset) noexcept |
sets safety margins for axis limits More... | |
double | getNLow () const |
getter for lower neutral cable wrap limit in radians More... | |
double | getNUp () const |
getter for upper neutral cable wrap limit in radians More... | |
double | getCLow () const |
getter for lower clock wise cable wrap limit in radians More... | |
double | getCUp () const |
getter for upper clock wise cable wrap limit in radians More... | |
double | getWLow () const |
getter for lower counter clock wise cable wrap limit in radians More... | |
double | getWUp () const |
getter for upper counter clock wise cable wrap limit in radians More... | |
std::pair< double, double > | getLimits (char section) const |
getter for limits of cable wrap section in radians More... | |
virtual bool | anglesInside (const PointingVector &p) const noexcept=0 |
checks if this pointing vectors azimuth and elevation are inside the axis limits More... | |
virtual void | unwrapAzNearAz (PointingVector &new_pointingVector, double az_old) const noexcept=0 |
unwraps the current azimuth of pointing vector More... | |
void | calcUnwrappedAz (const PointingVector &old_pointingVector, PointingVector &new_pointingVector) const noexcept |
unwraps the current azimuth of pointing vector More... | |
virtual bool | unwrapAzInSection (PointingVector &pv, char section) const noexcept=0 |
unwraps the current azimuth of pointing vector in specific cable wrap section More... | |
CableWrapFlag | cableWrapFlag (const PointingVector &pointingVector) const noexcept |
cable wrap section based on unwrapped azimuth from pointing vector More... | |
virtual CableWrapFlag | cableWrapFlag (double unaz) const noexcept=0 |
cable wrap section based on unwrapped azimuth More... | |
virtual std::pair< std::string, std::string > | getMotions () const noexcept=0 |
antenna motion names in .vex format More... | |
virtual std::string | vexPointingSectors () const noexcept=0 |
cable wrap sections in .vex format More... | |
double | getAxis2Low () const |
getter for lowest possible value of 2nd axis More... | |
double | getAxis2Up () const |
getter for highest possible value of 2nd axis More... | |
![]() | |
VieVS_Object (unsigned long id) | |
constructor More... | |
const unsigned long | getId () const |
get object id More... | |
bool | hasValidId () const |
check if id is valid More... | |
bool | hasId (unsigned long id) const |
check if object has specific id More... | |
void | setId (unsigned long id) |
set object id More... | |
std::string | printId () const |
object id string More... | |
Protected Types | |
enum | Axis { Axis::axis1, Axis::axis2 } |
enum to distinguish antenna axis More... | |
Protected Member Functions | |
bool | axisInsideCableWrap (double ax1, double ax2) const noexcept |
checks if axis values are inside of possible value range More... | |
std::string | pointingSector (const std::string &motion1, const std::string &motion2, char section) const noexcept |
pointing sector in vex format for one axis More... | |
double | minLow (Axis axis) const |
getter for lowest possible value for this antenna axis More... | |
double | maxUp (Axis axis) const |
getter for uppermost possible value for this antenna axis More... | |
Private Attributes | |
double | axis1Low_ |
lower limit of first axis in radians More... | |
double | axis1Up_ |
upper limit of first axis in radians More... | |
double | axis2Low_ |
lower limit of second axis in radians More... | |
double | axis2Up_ |
upper limit of second axis in radians More... | |
double | axis1LowOffset_ = 0 |
safety margin for lower limit for first axis in radians More... | |
double | axis1UpOffset_ = 0 |
safety margin for upper limit for first axis in radians More... | |
double | axis2LowOffset_ = 0 |
safety margin for lower limit for second axis in radians More... | |
double | axis2UpOffset_ = 0 |
safety margin for upper limit for second axis in radians More... | |
double | nLow_ |
lower limit for neutral cable wrap range More... | |
double | nUp_ |
upper limit for neutral cable wrap range More... | |
double | cLow_ |
lower limit for clockwise cable wrap range More... | |
double | cUp_ |
upper limit for clockwise cable wrap range More... | |
double | wLow_ |
lower limit for counter clockwise cable wrap range More... | |
double | wUp_ |
upper limit for counter clockwise cable wrap range More... | |
Static Private Attributes | |
static unsigned long | nextId = 0 |
next id for this object type More... | |
representation of an VLBI cable wrap
This class serves as the base class for all cable wrap implementations.
|
strongprotected |
|
strong |
AbstractCableWrap::AbstractCableWrap | ( | double | axis1_low_deg, |
double | axis1_up_deg, | ||
double | axis2_low_deg, | ||
double | axis2_up_deg | ||
) |
constructor
axis1_low_deg | lower limit for first axis in degrees |
axis1_up_deg | upper limit for first axis in degrees |
axis2_low_deg | lower limit for second axis in degrees |
axis2_up_deg | upper limit for second axis in degrees |
|
pure virtualnoexcept |
checks if this pointing vectors azimuth and elevation are inside the axis limits
p | pointing vector which should be tested |
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
protectednoexcept |
checks if axis values are inside of possible value range
checks if value ax1 is inside the allowed first axis range and if value ax2 is inside the allowed second axis range. basically checks if target at postion (ax1, ax2) can be observed.
ax1 | value for first axis |
ax2 | value for second axis |
|
inlinenoexcept |
cable wrap section based on unwrapped azimuth from pointing vector
pointingVector | pointing vector whose azimuth is taken for calculation |
|
pure virtualnoexcept |
cable wrap section based on unwrapped azimuth
unaz | unwrapped azimuth in radians |
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
noexcept |
unwraps the current azimuth of pointing vector
The azimuth of one pointing vector is first calculated in the range between [-pi,pi]. This function adds an factor of 2*pi so that the azimuth is inside the axis limits. If there are possible ambiguities, for example if the azimuth axis range is bigger than 360 degrees, the value, which is closest to the old pointing vector is used.
old_pointingVector | closest target antenna pointing vector |
new_pointingVector | pointing vector whose azimuth should be unwrapped |
|
inline |
getter for lowest possible value of 2nd axis
|
inline |
getter for highest possible value of 2nd axis
|
inline |
getter for lower clock wise cable wrap limit in radians
|
inline |
getter for upper clock wise cable wrap limit in radians
pair< double, double > AbstractCableWrap::getLimits | ( | char | section | ) | const |
getter for limits of cable wrap section in radians
This function takes cable wrap section in sked format.
section | cable wrap section in sked format |
|
pure virtualnoexcept |
antenna motion names in .vex format
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
inline |
getter for lower neutral cable wrap limit in radians
|
inline |
getter for upper neutral cable wrap limit in radians
|
inline |
getter for lower counter clock wise cable wrap limit in radians
|
inline |
getter for upper counter clock wise cable wrap limit in radians
|
protected |
getter for uppermost possible value for this antenna axis
axis | antenna axis |
|
protected |
getter for lowest possible value for this antenna axis
axis | antenna axis |
|
protectednoexcept |
pointing sector in vex format for one axis
This function takes cable wrap section in sked format.
motion1 | motion type name for first axis (e.g.: "az") |
motion2 | motion type name for second axis (e.g.: "el") |
section | section name in sked format |
|
noexcept |
sets safety margins for axis limits
axis1_low_offset | safety margin for lower limit for first axis in degrees |
axis1_up_offset | safety margin for upper limit for first axis in degrees |
axis2_low_offset | safety margin for lower limit for second axis in degrees |
axis2_up_offset | safety margin for upper limit for second axis in degrees |
|
pure virtualnoexcept |
unwraps the current azimuth of pointing vector in specific cable wrap section
The azimuth of one pointing vector is first calculated in the range between [-pi,pi]. This function adds an factor of 2*pi so that the azimuth is inside the cable wrap section limits.
This function takes cable wrap section in sked format.
pv | pointing vector whose azimuth should be unwrapped |
section | cable wrap section in sked format |
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
pure virtualnoexcept |
unwraps the current azimuth of pointing vector
The azimuth of one pointing vector is first calculated in the range between [-pi,pi]. This function adds an factor of 2*pi so that the azimuth is inside the axis limits. If there are possible ambiguities, for example if the azimuth axis range is bigger than 360 degrees, the value, which is closest to the second input parameter value (az_old) is used.
new_pointingVector | pointing vector whose azimuth should be unwrapped |
az_old | closest target antenna azimuth in radians |
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
pure virtualnoexcept |
cable wrap sections in .vex format
Implemented in VieVS::CableWrap_AzEl, VieVS::CableWrap_HaDc, and VieVS::CableWrap_XYew.
|
private |
lower limit of first axis in radians
|
private |
safety margin for lower limit for first axis in radians
|
private |
upper limit of first axis in radians
|
private |
safety margin for upper limit for first axis in radians
|
private |
lower limit of second axis in radians
|
private |
safety margin for lower limit for second axis in radians
|
private |
upper limit of second axis in radians
|
private |
safety margin for upper limit for second axis in radians
|
private |
lower limit for clockwise cable wrap range
|
private |
upper limit for clockwise cable wrap range
|
staticprivate |
next id for this object type
|
private |
lower limit for neutral cable wrap range
|
private |
upper limit for neutral cable wrap range
|
private |
lower limit for counter clockwise cable wrap range
|
private |
upper limit for counter clockwise cable wrap range