File EnergyDistribution.h¶
File List > Beamline > EnergyDistribution.h
Go to the documentation of this file
#pragma once
#include <variant>
#include "Core.h"
#include "DatFile.h"
namespace rayx {
enum class SpreadType { HardEdge, SoftEdge, SeparateEnergies }; // default WhiteBand
enum class EnergyDistributionType { File, Values, Total, Param }; // default ET_VALUES
struct RAYX_API HardEdge {
double m_centerEnergy;
double m_energySpread;
HardEdge(double centerEnergy, double energySpread) : m_centerEnergy(centerEnergy), m_energySpread(energySpread) {}
};
struct RAYX_API SoftEdge {
double m_centerEnergy;
double m_sigma;
SoftEdge(double centerEnergy, double sigma) : m_centerEnergy(centerEnergy), m_sigma(sigma) {}
};
struct RAYX_API SeparateEnergies {
double m_centerEnergy;
double m_energySpread;
int m_numberOfEnergies;
SeparateEnergies(double centerEnergy, double energySpread, int numberOfEnergies)
: m_centerEnergy(centerEnergy), m_energySpread(energySpread), m_numberOfEnergies(numberOfEnergies) {}
};
using EnergyDistributionVariant = std::variant<DatFile, HardEdge, SoftEdge, SeparateEnergies>;
} // namespace rayx