15 namespace JASTRONOMY {}
16 namespace JPP {
using namespace JASTRONOMY; }
18 namespace JASTRONOMY {
24 double sla_gmsta_(
double& ut1,
double& part_day);
31 double& azimuth,
double& elevation);
32 void sla_dh2e_(
double& azimuth,
double& elevation,
double& observer_latitude,
37 double& ecliptic_longitude,
double& ecliptic_latitude);
38 void sla_ecleq_(
double& ecliptic_longitude,
double& ecliptic_latitude,
double& time,
43 double& galactic_longitude,
double& galactic_latitude);
44 void sla_galeq_(
double& galactic_longitude,
double& galactic_latitude,
48 void sla_galsup_(
double& galactic_longitude,
double& galactic_latitude,
49 double& sgalactic_longitude,
double& sgalactic_latitude);
50 void sla_supgal_(
double& sgalactic_longitude,
double& sgalactic_latitude,
51 double& galactic_longitude,
double& galactic_latitude);
58 double& mjd,
int& status);
61 void sla_clyd_(
int& year,
int& month,
int&
day,
int& nyears,
int& ndays,
int&status);
65 int result[4],
int& status);
76 void sla_rdplan_(
double& dtt,
int&
object,
const double& longitude,
const double& latitude,
77 double& rightascension,
double&
declination,
double& diam);
80 void sla_preces_(
char *system,
double& ep0,
double& ep1,
double& ra,
double& dec,
int length);
85 void sla_prenut_(
double& epoch,
double& mjd,
double rmatpn[3][3] );
102 inline double wrap(
double angle )
104 int n = int(angle / (2 *
JMATH::PI)) - (angle < 0);
125 const double zone_width = 6 *
JMATH::PI / 180;
126 return -
JMATH::PI + (utmzone -1)*zone_width + zone_width/2;
141 double latitude_deg = latitude * 180/
JMATH::PI;
143 if ( latitude_deg > 84. || latitude_deg < -80.)
145 std::cout <<
"UTM coordinate system not defined for given Latitude: %f (max 84 deg N or min -80 deg S), setting meridian convergence angle to 0 deg.";
150 double lambda = longitude;
151 double phi = latitude;
156 double omega = lambda-lambda0;
160 double e2 = 0.0066943800;
162 double rho = a*(1.-e2)/
pow(1.-e2*
pow(
sin(phi),2),3./2.);
163 double nu = a/sqrt(1-e2*
pow(
sin(phi),2.));
168 double gamma =
sin(phi) * omega
169 -
sin(phi) *
pow(omega,3.)/3. *
pow(cos(phi),2.) * (2.*
pow(psi,2.)-psi)
170 -
sin(phi) *
pow(omega,5.)/15. *
pow(cos(phi),4.) * (
pow(psi,4.)*(11.-24.*
pow(t,2.))-
171 pow(psi,3.)*(11.-36.*
pow(t,2.))+
172 2.*
pow(psi,2.)*(1.-7.*
pow(t,2.))+
175 -
sin(phi) *
pow(omega,7.)/315. *
pow(cos(phi),6.) * (17.-26.*
pow(t,2.)+2.*
pow(t,4.));
191 inline void correct_to_j2000(
double& in_dec,
double& in_ra,
double& mjd,
double& out_dec,
double& out_ra,
bool reverse=
false)
199 double rmatpn[3][3] {};
202 JMATH::JMatrix3D M =
JMATH::JMatrix3D(rmatpn[0][0], rmatpn[0][1], rmatpn[0][2], rmatpn[1][0], rmatpn[1][1], rmatpn[1][2], rmatpn[2][0], rmatpn[2][1], rmatpn[2][2]);
209 v[0] =
sin (theta) * cos(phi);
210 v[1] =
sin (theta) *
sin(phi);
223 double phi_2 = atan2( v[1], v[0] );
double theta_2 = acos(v[2]);
225 out_ra =
wrap(phi_2);
255 (
double) amin / 60.0 +
256 (double) asec / 3600.0) / 180.0;
272 double ha = (
JMATH::PI * (double) hour / 12.0 +
306 const double right_ascension) :
322 double dec_j2000;
double ra_j2000;
326 const double const_dec_j2000 = dec_j2000;
327 return const_dec_j2000;
338 double dec_j2000;
double ra_j2000;
342 const double const_ra_j2000 = ra_j2000;
343 return const_ra_j2000;
372 const double gal_longitude) :
407 const double& azimuth) :
443 const double longitude) :
458 const int minutesNorth,
459 const int degreesEast,
460 const int minutesEast)
519 double lst = gmst + longitude + eqeqx;
525 double ha = lst - ra;
533 sla_de2h_(ha, dec, latitude, azimuth, elevation);
535 double theta = -elevation +
JMATH::PI/2.0;
567 double azimuth_geo = azimuth_utm - meridian_convergence_angle;
569 double elevation = -zenith +
JMATH::PI/2.0;
575 sla_dh2e_(azimuth_sla, elevation, latitude, ha, dec);
580 double lst = gmst + longitude + eqeqx;
581 double ra = lst - ha;
602 double &dec_j2000_n =
const_cast<double&
> (dec_j2000);
603 double &ra_j2000_n =
const_cast<double&
> (ra_j2000);
604 double galactic_longitude;
double galactic_latitude;
605 sla_eqgal_(ra_j2000_n, dec_j2000_n, galactic_longitude, galactic_latitude);
631 double elevation = -theta +
JMATH::PI/2.0;
640 sla_dh2e_(azimuth, elevation, latitude, ha, dec);
652 double lst = gmst + longitude + eqeqx;
656 double ra = lst - ha;
static const JGeographicalLocation Sicily(36, 16, 16, 06)
Data structure for angles in three dimensions.
Direction of incident neutrino.
JGeographicalLocation(const int degreesNorth, const int minutesNorth, const int degreesEast, const int minutesEast)
Constructor.
double sla_eqeqx_(double &ut1)
void sla_djcal_(int &precision, double &mjd, int result[4], int &status)
static const JGeographicalLocation ORCA(42, 48, 06, 02)
void sla_eqecl_(double &rightascension, double &declination, double &time, double &ecliptic_longitude, double &ecliptic_latitude)
double getPhi() const
Get phi angle.
void sla_dh2e_(double &azimuth, double &elevation, double &observer_latitude, double &hourangle, double &declination)
void sla_de2h_(double &hourangle, double &declination, double &observer_latitude, double &azimuth, double &elevation)
JNeutrinoDirection getDirectionOfNeutrino(const double &t1, const JSourceLocation &pos) const
Get direction pointing to source.
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product.
double wrap(double angle)
double getHourAngle(const int hour, const int min, const double sec)
Convert hour angle to radians.
double compute_meridian_convergence_angle(double longitude, double latitude)
JMatrix3D & transpose()
Transpose.
void sla_prenut_(double &epoch, double &mjd, double rmatpn[3][3])
JGalacticCoordinates(const double gal_latitude, const double gal_longitude)
Constructor.
double sla_gmsta_(double &ut1, double &part_day)
static const JGeographicalLocation ARCA(36, 17, 15, 58)
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
static const JSourceLocation RXJ1713(getRadians(-39,-46, 0.0), getHourAngle(17, 13, 7))
double getRightAscensionJ2000(const double t1) const
Get Right Ascension in J2000.
double getTheta() const
Get theta angle.
JAstronomy(const JGeographicalLocation &location)
Constructor.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
Auxiliary class to make coordinate transformations for a specific geographical location of the detect...
Location of astrophysical source.
const char *const hourangle
JGalacticCoordinates()
Default constructor.
void sla_ecleq_(double &ecliptic_longitude, double &ecliptic_latitude, double &time, double &rightascension, double &declination)
void sla_dd2tf_(int &ndec, double &day, char sign[1], int result[4])
void sla_galsup_(double &galactic_longitude, double &galactic_latitude, double &sgalactic_longitude, double &sgalactic_latitude)
const double & getZenith() const
const double & getLatitude() const
const double & getDeclination() const
void sla_clyd_(int &year, int &month, int &day, int &nyears, int &ndays, int &status)
double sla_gmst_(double &ut1)
static const double NUMBER_OF_SECONDS_PER_DAY
JGalacticCoordinates getGalacticCoordinatesOfSource(const double t1, const JGEOMETRY3D::JAngle3D &dir) const
Get location of source in galactic coordinates given a neutrino direction and time.
void sla_supgal_(double &sgalactic_longitude, double &sgalactic_latitude, double &galactic_longitude, double &galactic_latitude)
void sla_preces_(char *system, double &ep0, double &ep1, double &ra, double &dec, int length)
const double & getAzimuth() const
JSourceLocation getLocationOfSourceFromZenithAzimuth(const double t1, const JGEOMETRY3D::JAngle3D &dir) const
Get location of source given a neutrino direction (zenith,azimuth) and time.
JGeographicalLocation()
Default constructor.
Singular value decomposition.
T pow(const T &x, const double y)
Power .
static const JGeographicalLocation Pylos(36, 33, 16, 06)
void sla_caldj_(int &year, int &month, int &day, double &mjd, int &status)
static const double PI
Mathematical constants.
static const double MJD_EPOCH
static const JSourceLocation VELAX(getRadians(-45,-10,-35.2), getHourAngle(8, 35, 20.66))
void sla_rdplan_(double &dtt, int &object, const double &longitude, const double &latitude, double &rightascension, double &declination, double &diam)
static const double NUMBER_OF_SECONDS_PER_SEDERIAL_DAY
static const double NUMBER_OF_SECONDS_PER_HOUR
void sla_eqgal_(double &rightascension, double &declination, double &galactic_longitude, double &galactic_latitude)
int get_utm_zone(double lat)
const double & getGalacticLatitude() const
const JMatrix3D & invert(const double precision=1.0e-12) const
Get inverted matrix.
double getDeclinationJ2000(const double t1) const
Get declination in J2000.
static const JGeographicalLocation Antares(42, 48, 06, 10)
double getRadians(const double angle)
Convert angle to radians.
Location of astrophysical source in Galactic coordinates.
double sla_dtt_(double &ut1)
int sign(const T &value)
Get sign of value.
JNeutrinoDirection()
Default constructor.
double longitude_of_central_meridian(int utmzone)
void correct_to_j2000(double &in_dec, double &in_ra, double &mjd, double &out_dec, double &out_ra, bool reverse=false)
Convert (Dec, RA) to J2000.
void sla_galeq_(double &galactic_longitude, double &galactic_latitude, double &rightascension, double &declination)
const double & getLongitude() const
JSourceLocation getLocationOfSource(const double t1, const JNeutrinoDirection &dir) const
Get location of source.
void transform(double &__x, double &__y, double &__z) const
Transform.
static const double NUMBER_OF_SECONDS_PER_YEAR
static const JSourceLocation galacticCenter(-0.5062816,-1.633335)
JSourceLocation()
Default constructor.
JSourceLocation(const double declination, const double right_ascension)
Constructor.
JGeographicalLocation(const double latitude, const double longitude)
Constructor.
JNeutrinoDirection(const double &zenith, const double &azimuth)
Constructor.
const double & getRightAscension() const
const double & getGalacticLongitude() const