/*
* 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
/* Encapsulation of a datum for a topography layer */
typedef std::pair IGoupilTopographyDatum;
/* Container for an ordered set of data */
typedef std::list IGoupilTopographyData;
/* Container for a topography layer */
class IGoupilTopographyLayer {
public:
IGoupilTopographyLayer(
G4String name, G4String material, G4double density=0) :
fName(name), fMaterial(material), fDensity(density) {}
void AddData(G4String path, G4double offset=0) {
fData.push_back(IGoupilTopographyDatum(path, offset));
}
void ResetData() {
fData.clear();
}
G4String GetName() const {return fName;}
G4String GetMaterial() const {return fMaterial;}
G4double GetDensity() const {return fDensity;}
const IGoupilTopographyData & GetData() const {return fData;}
void SetName(G4String name) {fName = name;}
void SetMaterial(G4String material) {fMaterial = material;}
void SetDensity(G4double density) {fDensity = density;}
private:
G4String fName;
G4String fMaterial;
G4double fDensity;
IGoupilTopographyData fData;
};
/* Container for describing a topography */
typedef std::list IGoupilTopography;