#ifndef _fwk_CoordinateSystemRegistry_h_ #define _fwk_CoordinateSystemRegistry_h_ /** \file Registry for well-known auger coordinate systems \author Lukas Nellen \version $Id: CoordinateSystemRegistry.h 19020 2011-04-13 11:58:47Z paul $ \date 31 Oct 2003 */ static const char CVSId_fwk_CoordinateSystemRegistry[] = "$Id: CoordinateSystemRegistry.h 19020 2011-04-13 11:58:47Z paul $"; #include #include #include namespace fwk { /** \namespace fwk::CoordinateSystemRegistry CoordinateSystemRegistry.h "fwk/CoordinateSystemRegistry.h" \brief Collection of useful pre-defined coordinate systems This class registers all well-known Auger coordinate systems and provides symbolic names for them. \author Lukas Nellen \date 31 Oct 2003 \ingroup geometry det_interface */ namespace CoordinateSystemRegistry { /// Identifiers for all well-known coordinate systems enum CoordinateSystemID { /// Earth centred, Earth fixed CS eECEF = 1, /// southern site CS as of conventions eMalargue, /// Approximate centre of the southern site ePampaAmarilla, /// The central laser facility CLF eCLF, /// The X-treme laser facility XLF eXLF, /// northern site CS (exact position to be decided...) // Leave a gap in the enum, in case we have to add more coordinate systems to the south. eLamar = 16, eNewYork = 32 }; /// Get a well-known Coordinate System utl::CoordinateSystemPtr Get(const CoordinateSystemID& theID); /// Initialise the registry void Init(); /** \class InvalidCoordinateSystemException CoordinateSystemRegistry.h fwk/CoordinateSystemRegistry.h \brief Base class for exceptions in the CoordinateSystemRegistry \ingroup geometry det_interface */ class InvalidCoordinateSystemException : public utl::AugerException { public: /// Construct coordinate system exception with message InvalidCoordinateSystemException(std::string message = std::string()) : AugerException(message) { } /// Retrieve verbose exception name virtual std::string GetExceptionName() const { return "Invalid coordinate system in registry exception"; } }; } // CoordinateSystemRegistry } // fwk #endif // _fwk_CoordinateSystemRegistry_h_ // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. -k" // End: