/*
* Copyright (C) 2018 Université Clermont Auvergne, CNRS/IN2P3, LPC
* Author: Valentin NIESS (niess@in2p3.fr)
*
* A Geant4 particle source of atmospheric muons using GOUPIL
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see
*/
#pragma once
/* C++ standard library includes */
#include
/* Geant4 includes */
#include "G4UImessenger.hh"
/* IGoupil includes */
#include "IGoupilTopography.hh"
/* Encapsulation of global GOUPIL settings */
class IGoupilSettings : public G4UImessenger {
public:
static IGoupilSettings * GetInstance();
static G4int GetVerboseLevel();
static void SetVerboseLevel(G4int level);
static const G4String& GetVerboseFile();
static void SetVerboseFile(G4String file);
static void SetChargeRandomisation(G4bool value);
static G4bool GetChargeRandomisation();
static G4bool CheckEarthLocation();
static G4double GetEarthLocationLatitude();
static G4double GetEarthLocationLongitude();
static G4double GetEarthLocationAltitude();
static void SetEarthLocation(
G4double latitude, G4double longitude, G4double altitude);
static G4double GetWorldOrientationAlpha();
static G4double GetWorldOrientationBeta();
static G4double GetWorldOrientationGamma();
static void SetWorldOrientation(
G4double alpha, G4double beta, G4double gamma);
static void SetTopography(IGoupilTopography topography);
static const IGoupilTopography & GetTopography();
static void SetTopographyBottom(G4double bottom);
static G4double GetTopographyBottom();
static void SetTopographyReference(G4String reference);
static const G4String & GetTopographyReference();
static void SetPrimaryModel(G4String model);
static const G4String & GetPrimaryModel();
static void SetPrimaryHeight(G4double height);
static G4double GetPrimaryHeight();
static void SetGeomagnetDate(G4int year, G4int month=1, G4int day=1);
static G4int GetGeomagnetDateYear();
static G4int GetGeomagnetDateMonth();
static G4int GetGeomagnetDateDay();
static void SetGeomagnetModel(G4String model);
static const G4String & GetGeomagnetModel();
G4String GetCurrentValue(G4UIcommand * command);
void SetNewValue(G4UIcommand * command, G4String newValue);
private:
IGoupilSettings();
~IGoupilSettings();
};