//____________________________________________________________________________ /*! \class GAstro \brief A class for astronomical calculation Astronomical algorithms implemented in this library are based on J. Meeus, Astronomical Algorithms, Willmann-Bell, Incorporated, 1991. Equatorial coordinates refer to 2000.0 epoch \author Carla Distefano LNS-INFN, Catania \created February 1, 2016 \cpright Copyright (c) 2016-2019, The KM3NeT Collaboration For the full text of the license see $GSEAGEN/LICENSE */ //____________________________________________________________________________ #ifndef _GASTRO__ #define _GASTRO__ #include #include using namespace std; class GAstro { public: GAstro(double Latitude, double Longitude); GAstro(double Latitude, double Longitude, double UTMConvergeAngle, bool UseUTMSystem); ~GAstro(); void SetCoordinates(double Latitude, double Longitude); double GST(double MJD); // returns GST in radians double LST(double MJD); // returns LST in radians void Eq2Hor(double LST, double RA, double Dec, double * Azimuth, double * Altitude); void Hor2Eq(double Altitude, double Azimuth, double LST, double * RA, double * Dec); void Gal2Eq(string Equinox, double GalLat, double GalLong, double * RA, double * Dec); void Eq2Gal(string Equinox, double RA, double Dec, double * GalLat, double * GalLong); void Hor2Direction(double Azimuth, double Altitude, double * vx, double * vy, double * vz); void Direction2Hor(double vx, double vy, double vz,double * Azimuth, double * Altitude);//// implementare void CalcPrecession(double MJD0, double MJD, double RA0, double Dec0, double *RA, double *Dec); void CalcNutation(double MJD, double RA0, double Dec0, double *RA, double *Dec); void CalcSrcDirMJD(double MJD, double RA, double Dec, double * vx, double * vy, double * vz); void CalcSrcDirMJD(double MJD, double RA, double Dec, double * CosTheta, double * Phi); void CalcSrcDirLST(double LST, double RA, double Dec, double * vx, double * vy, double * vz); void CalcSrcDirLST(double LST, double RA, double Dec, double * CosTheta, double * Phi); static double CalcMJD(string Date); // Date in format dd-mm-yyyy,hh:mm:ss static double CalcMJD(int month, int day, int hour, int min, int sec, int year); static double CalcDate(double MJD, string * Date); static void CalcTimeStamp(double MJD, unsigned int * TimeStampSec, unsigned int * TimeStampTick); static double CalcMJDFromTimeStamp(unsigned int TimeStampSec, unsigned int TimeStampTick); private: double fLatitude; // site latitude in rad double fLongitude; // site longitude in rad, positive westwards from the meridian of Greenwich, and negative to the east. double fUTMConvergeAngle; // convergence angle of UTM system, in rad bool fUseUTMSystem; // if true use the UTM reference system }; #endif // _GASTRO__