Skip to content

File LightSource.h

File List > Intern > rayx-core > src > Shader > LightSources > LightSource.h

Go to the documentation of this file

#pragma once

#include <array>
#include <glm.hpp>
#include <string>
#include <vector>

#include "Core.h"
#include "Element/Element.h"
#include "EnergyDistributions/EnergyDistribution.h"
#include "Rml/xml.h"
#include "Shader/Ray.h"

namespace rayx {

enum class SourceDist { Uniform, Gaussian, Thirds, Circle };  // SourceDist::Thirds represents PixelSource Footprint
enum class ElectronEnergyOrientation { Clockwise, Counterclockwise };
enum class EnergySpreadUnit { EU_PERCENT, EU_eV };
enum class SigmaType { ST_STANDARD, ST_ACCURATE };
enum class SourcePulseType { None };

class DesignSource;

class RAYX_API LightSourceBase {
  protected:
    LightSourceBase(const DesignSource&);

    RAYX_FN_ACC static glm::dvec3 getDirectionFromAngles(double phi, double psi);

    int32_t m_numberOfRays;
};

}  // namespace rayx