IAP GITLAB

Skip to content
Snippets Groups Projects
RootCoordinateSystem.h 1.19 KiB
Newer Older
/*
 * (c) Copyright 2018 CORSIKA Project, corsika-project@lists.kit.edu
 *
 * See file AUTHORS for a list of contributors.
 *
 * This software is distributed under the terms of the GNU General Public
 * Licence version 3 (GPL Version 3). See file LICENSE for a full version of
 * the license.
 */

#ifndef _include_corsika_geometry_rootcoordinatesystem_h_
#define _include_corsika_geometry_rootcoordinatesystem_h_

#include <corsika/utl/Singleton.h>

#include <corsika/geometry/CoordinateSystem.h>

/*!
 * This is the only way to get a root-coordinate system, and it is a
 * singleton. All other CoordinateSystems must be relative to the
 * RootCoordinateSystem
 */

namespace corsika::geometry {

  class RootCoordinateSystem : public corsika::utl::Singleton<RootCoordinateSystem> {
ralfulrich's avatar
ralfulrich committed

    friend class corsika::utl::Singleton<RootCoordinateSystem>;
ralfulrich's avatar
ralfulrich committed

  protected:
    RootCoordinateSystem() {}

ralfulrich's avatar
ralfulrich committed
  public:
    corsika::geometry::CoordinateSystem& GetRootCoordinateSystem() { return fRootCS; }
    const corsika::geometry::CoordinateSystem& GetRootCoordinateSystem() const {
      return fRootCS;
    }

  private:
    corsika::geometry::CoordinateSystem fRootCS; // THIS IS IT
  };
ralfulrich's avatar
ralfulrich committed

} // namespace corsika::geometry