GOAT (Geometrical optics application tool) 0.1
Loading...
Searching...
No Matches
GOAT::raytracing Namespace Reference

Raytracer used for ultrashort pulse calculation with raytracing only. More...

Classes

class  asphericLens
 Representation of aspheric lens The left and the right side is described by a formula \( z(r)=\frac{r^2}{R\left( 1+\sqrt{1-(1+\kappa)\frac{r^2}{R^2}}\right)}+\sum_l \alpha_l r^l \) or the side can also be plano. More...
struct  asphericLensParms
struct  asphericLensSide
 Structure to describe one side of an aspheric lens The surface is described by \( z(r)=\frac{r^2}{R\left( 1+\sqrt{1-(1+\kappa)\frac{r^2}{R^2}}\right)}+\sum_l\alpha_lr^l\). More...
class  Box
 class which represents a box (cuboid). It is derived by class ObjectShape This class is mainly used for the octree calculation, but can also be used for general purposes More...
class  Cone
 This class represents a cone. The cone is defined by the reference point (position), the height and the radius. More...
class  Cylinder
 This class provides a cylindrical object. Here, a cylindrical object is provided. The reference point is situated in the center of bottom face. The cylinder is described by its height and radius. It is oriented in the z-direction. More...
class  Detector
 The abstract Detector class provides an interface to a detector to store the information about the electric field into any kind of an array. More...
class  DetectorPlane
 This class provides a plane detector, defined by its center point and its side length. The detector plane is spanned by the vectors e1 and e2. The absolute value of the vectors e1 and e2 are the cell widths in the corresponding direction. More...
class  Ellipsoid
 This class represents an ellipsoid This class represents an ellipsoid, defined by its half axis a, b and c according to the formula: \(\frac{x^2}{a^2}+\frac{y^2}{b^2}+\frac{z^2}{c^2}=1\). More...
struct  Gauss
class  GlobalParms
class  grid
 This class provides a grid used for inelastic scattering calculation. More...
struct  gridEntry
 Structure which holds all steps from the light source to the grid point In this structure every step is stored from the light source to the grid point and additonally the electric field at the grid point. For the electric field determination, only the Fresnel matrices, which describes the interaction between the ray and the object's surface, will be considered This structure is needed within the ultrashort pulse calculation. More...
struct  indexList
class  IRay
 This class represents a single ray. More...
class  Kirchhoff
 This class makes a Kirchhoff calculation This class is directly connect with a Detector. The calculation itself works as follows: At first, a normal raytracing step is performed to calculate the electric field at a detector. This detector is used as a source field for the next step, where the field at a given area is calculated with help of the Kirhhoff integral. More...
struct  lensa
 Structure to describe one side of an spheric lens For this type of lens one side can either be spherical (convex or concave) or flat. More...
struct  lensParms
 Structure, which holds the full information about the spheric lens The side surfaces of the lens are described by left and right. The thickness of the lens is described by offset and the height/radius of the lens by radius (for details, see also the documentation of the class sphericLens) More...
class  LightSrc
 This abstract class is the basic class for all light sources used in this raytracing library. It provides all necessary interfaces. More...
class  LightSrcGauss
 This class describes a focused gaussian beam. More...
class  LightSrcGauss_mc
 This class provides a gaussian beam with arbitrary distributed rays. More...
class  LightSrcLine
 This class provides a light source, which emitts along a straight line. More...
class  LightSrcLine_mc
 This class provides a light source, which emitts along a straight line (random ray distribution) More...
class  LightSrcPlane
 class derived from LightSrc. It represents a plane wave described by the electric field \( \vec{E}(\vec{P})=\vec{E}_0 \cdot e^{i\vec{k}\cdot\Delta\vec{P}} \) More...
class  LightSrcPlane_mc
 Plane wave with random ray distribution. This class provides a plane (square sized) wave with a given width. The rays are arbitrarily but uniformly distributed inside the light source area. More...
class  LightSrcPoint_mc
 This class provides a point light source. More...
class  LightSrcRing
 This class describes a ring shaped This class represents a ring shaped light source, defined by the inner radius rmin and the outer radius rmax. More...
class  LightSrcRing_mc
 Ring shaped light source. This class provides a ring shaped light source with arbitrary, uniform distributed rays within the light source area. More...
class  LightSrcRingGauss_mc
 The LightSrcRingGauss_mc provides a ring shaped light source with a gaussian distribution This class describes a light source which cuts a ring out of a gaussian shape. Unlike in class LightSrcGauss_mc, the phase distribution at the light source is constant. The default value of the full with at half maximum (FWHM) of the intensity distribution is set to 1. More...
struct  MemInfo
struct  objectInfo
class  ObjectShape
 Abstract base class for all volume objects This abstract class provides a template for all volume objects. The refractive index is complex to be able to consider absorption. More...
class  Octree
 This template class is used for internal purposes and represents an octree. More...
struct  OptProp
class  Plane
struct  Point
class  pulseCalculation
 This class provides functionality to calculate field distributions for short pulses. More...
class  pulseCalculation_Field
 This class provides functionality to calculate field distributions for short pulses. More...
class  pulseCalculation_field
class  pulseCalculation_rt
 This class provides pulse calculation (only with ray tracing) The pulses from a mode-locked laser can be described by series of frequency modes. The electric field at a certain location at time t can be described by \( \vec E(\vec r,t)=\sum\). More...
struct  pulseParameters
class  Ray_pow
 This class provides a ray which carries a special power. More...
class  RayBase
 Abstract base class for all rays used for the raytracing process. This abstract base class for all rays is the parent class, from which all ray classes are derived. More...
struct  rayListEntry
class  Raytrace
 This class provides all functionalities for the base raytracing code. It follows all rays from all light sources through the scene. More...
class  Raytrace_Field
 Class which stores the electric field inside a box This raytracer can store the electric field even if there are objects in at least one box (we will call this box a "box detector"). The different box detectors must not interfere ! (In the moment, this will not be checked!) More...
class  Raytrace_Field_usp
 This class provides a raytracer to calculate the field distribution in a box detector for a ultrashort pulsed light source Unlike the class Raytrace_usp, the field in more than one object or in parts of objects can stored. As in Raytrace_usp, in the SuperArray grid the information (step length, index of the object involved in the step) for each step from the light source to the corresponding point in the grid is stored. For each reflection order one grid will be created. The field will be stored within one or more boxes (called "box detector") More...
class  Raytrace_Inel
 Class for calculating inelastic scattering (Raman) More...
class  Raytrace_OT
 This class provides functionality to calculate the forces for optical tweezers. It is derived by the class Raytrace. More...
class  Raytrace_Path
 Class which stores the start and end points of each step into a file. More...
class  Raytrace_pure
 This class makes a raytracing without any output (except detectors) In this ray tracing class no reactions at the surface is included. It is intended for calculation only with detectors. More...
class  Raytrace_usp
 This class performs ray tracing in preparation for a later calculation of short pulses This class performs ray tracing and stores the length and the refractive index as an index of each step into a SuperArray class named SA. This information is necessary for the calculation of the short pulses. More...
class  Raytrace_usp_rt
struct  RRTParms
class  RRTParmsInfo
 Class used to set the parameters for inelastic scattering (may replaced later) More...
class  Scene
 Class defining a scene with lightsources and objects. This is a container used to inform the Raytracer about all necessary settings. Here, all informations about light sources and objects are stored. Light sources are described by classes derived from the virtual LightSrc base class. All objects are described by classes derived from the virtual class ObjectShape. More...
class  shortPulse
 Class for the calculation of short pulses. More...
class  sphericLens
 This class provides a lens with spherical surfaces The lens consists of two side surfaces and one lateral surface. The properties of the lens is described in the structure lp Each side surface can either be convex, concave or flat. The center of the lens is situate in the center between the to side surfaces. The distance between this surfaces is the offset parameter in lp. Left side (convex): More...
struct  stepEntry
 Structure to store the information about one raytracing step In this structure, the information about a single raytracing step is stored. It is used within the ultrashort pulse calculation process. More...
struct  StrahlArray
struct  StrahlInfo
class  SuperArray
 Template class to store arbitrary information in a 3D-grid This template class provides a virtual 3D-grid of arbitrary values which can be used to store e.g. the electric field in a volume. It circumscribes a sphere with radius r0 and virtual means here, that only the parts which are needed were allocated, but for the programmer it seems like a whole array or grid. By adding an object to the grid, the memory for the grid around the object (circumscribed box) is allocated, so one can store the electric field inside the object. The cells of the grid can be addressed with help of the bracket()-operator with different arguments. More...
class  SuperGrid
class  surface
 This class represents objects those surface is described by triangles. More...
struct  SysMemInfo
class  Trafo
 This class calculates the time dependence of a field which calculated before. More...
struct  TrafoParms
 Structure, which acts as a container for all informations needed to process the calculation. More...
class  triangle
 This class describes a triangle, represented by its corner points. It is intented for internal purposes. The triangle class is mainly used in class surface. More...
class  tubedRay
 This class represents a ray with a finite cross section. class tubedRay: This class represents a ray with a finite cross section. Therefore it is defined by four edge rays and one probe ray in the middle. Therefore, selffocusing of the ray can be considered. Each of these rays has its own electric field and directional vector. The probe ray is used to decide wether an object is hidden or not. More...
struct  tubedRayBuffer
class  VortexPlate
 This class provides a vortex phase plate object. Here, a vortex phase plate object is provided. The reference point is situated in the center of bottom face. More...
struct  wavelengthRange

Typedefs

typedef long long int INDEX_TYPE
typedef struct GOAT::raytracing::lensa lensSide
 Structure to describe one side of an spheric lens For this type of lens one side can either be spherical (convex or concave) or flat.

Enumerations

enum  Curvature { convex , concave , flat }
enum class  NFUNCTYPE {
  vacuum , air , bk7 , silica ,
  lasf5 , pmma
}

Functions

double abs2 (double x)
 returns the squared absolute value of x
std::complex< double > acos (const std::complex< double > &)
void add_Gitter (GlobalParms parms, maths::Vector< std::complex< double > > **Erg, maths::Vector< std::complex< double > > **Gitter1, maths::Vector< std::complex< double > > **Gitter2)
void addTriangleToTriangle (Octree< triangle > &O, triangle D)
void addTriangleToTriangle (Octree< triangle > *O, triangle D, int rek)
void binRead (Gauss &Gs, std::ifstream &is)
 write the Gauss structure to a binary file
void binRead (lensParms lp, std::ifstream &is)
 read a lensParms structure from a binary file
void binRead (lensSide ls, std::ifstream &is)
 read a lensSide structure from a binary file
void binReadInc (std::ifstream &is, ObjectShape *&E, bool isNew)
void binReadIncList (std::ifstream &is, std::vector< ObjectShape * > &E, int anz)
void binReadLSList (std::ifstream &is, int nLS, LightSrc **&ls)
 Reads list of light sources from a binary file and allocates the memory for the light source list.
void binWrite (Gauss gs, std::ofstream &os)
void binWrite (lensParms lp, std::ofstream &os)
 write a lensParms structure in a binary file
void binWrite (lensSide ls, std::ofstream &os)
 write a lensSide structure in a binary file
void binWriteInc (std::ofstream &os, ObjectShape *E)
void binWriteIncList (std::ofstream &os, std::vector< ObjectShape * > E, int anz)
void binWriteLSList (std::ofstream &os, int nLS, LightSrc **ls)
 Writes a list of light sources into a binary file.
RRTParms calcDetDirParms (double theta, double phi, double wvlinel)
 Calculates the parameters for the detector with help of the spherical coordinates theta and phi This function generates a RRTParms structure for a scattering detection in the direction determined by the spherical coordinates theta and phi.
void checkObjectIntersection (double r0, maths::Vector< double > &anf, const maths::Vector< double > &end, const maths::Vector< double > k, int numObj, objectInfo *Obj, maths::Vector< double > &Ps, int &Index)
void checkObjectIntersection (double r0, maths::Vector< double > &anf, const maths::Vector< double > &end, StrahlInfo &S, int numObj, objectInfo *Obj, maths::Vector< double > &Ps, int &Index)
void checkObjectIntersection (maths::Vector< double > &anf, const maths::Vector< double > &end, StrahlInfo &S, int numObj, objectInfo *Obj, maths::Vector< double > &Ps, int &Index)
bool checkTriangleBoxIntersection (Box B, triangle D)
void clear (GlobalParms parms, maths::Vector< std::complex< double > > **Gitter)
maths::Matrix< double > computeInertia (ObjectShape *F)
 calculates inertia matrix
void copy (StrahlInfo &dest, StrahlInfo src)
void copyFormList (std::vector< ObjectShape * > &d, std::vector< ObjectShape * > s, int anz)
void copyInc (ObjectShape *&d, ObjectShape *s)
void copyLightSrcList (LightSrc **&d, LightSrc **s, int nLS)
 Copy the given light source list.
void Delete (int n, maths::Vector< std::complex< double > > **Gitter)
void deleteInc (ObjectShape *E)
maths::Vector< double > drehphivektor (maths::Vector< double > vein, double phi)
maths::Vector< double > drehvektor (maths::Vector< double > vein, double theta, double phi)
void error (int nerr, std::string msg)
maths::Vector< double > force (maths::Vector< double > norm, tubedRay Se, tubedRay Sr, tubedRay St, double df)
std::complex< double > gaussphase (maths::Vector< double > P, maths::Vector< double > F, maths::Vector< double > k, double w0, double k0)
double gaussw (double z, double wvl, double w0)
Point get_grid_point (const GlobalParms &parms, maths::Vector< double > P)
double grad (const GlobalParms &parms, maths::Vector< std::complex< double > > **Gitter, const maths::Vector< double > &P)
void init_Strahl (GlobalParms Parms, StrahlArray *Strahl)
void initInc (ObjectShape *E)
Curvature int2Curvature (int index)
 converts integer value to Curvature enum
bool intersectionTest (ObjectShape &A, ObjectShape &B)
 Test if object A and object B may intersect each other (i.e. the bounding boxes around the objects intersect each other)
maths::Vector< double > kart2sph (maths::Vector< double > v)
std::istream & loadbinGlobalParms (std::istream &os, GlobalParms &parms)
double max3 (double x, double y, double z)
MemInfo memstat ()
double min3 (double x, double y, double z)
double minmax (double a, double b)
void minmax (double x, double dx, int &min, int &max)
std::complex< double > n_ABS (double wvl)
 refractive index function for highly absorbing medium with real part 1.0
std::complex< double > n_Air (double wvl)
 refractive index of air according to refractiveindex.info
std::complex< double > n_BK7 (double wvl)
 refractive index of BK7 (glass, Schott) according to refractiveindex.info
std::complex< double > n_fused_silica (double wvl)
 refractive index of fused silica according to refractiveindex.info
std::complex< double > n_Glass (double wvl)
 refractive index of 1.5
std::complex< double > n_LASF55 (double wvl)
 refractive index of LASF55-glass from Schott (coefficients according taken from www.schott.com)
std::complex< double > n_lin (double wvl)
std::complex< double > n_PMMA (double wvl)
 refractive index function of Poly(methyl mathacrylate), PMMA refractive index function for PMMA taken from refractiveindex.info (Sultanova et al., Acta Physica Polonica A 116, 585-587 (2009))
std::complex< double > n_Sellmeier (double lambda, double C[3], double B[3])
 refractive index formula used for glasses from Schott
std::complex< double > n_test (double wvl)
std::complex< double > n_Vacuum (double wvl)
 refractive index of vacuum (=1.0) for compatibility
double NA2w0 (double lambda, double NA, std::complex< double > n)
maths::Vector< double > next (const GlobalParms &parms, const maths::Vector< double > &P0, const maths::Vector< double > &k)
maths::Vector< double > nextP (maths::Vector< double > P, maths::Vector< double > k, maths::Vector< double > OK, double rK, bool &found)
std::ostream & operator<< (std::ostream &os, Box B)
 output operator for the Box class
std::ostream & operator<< (std::ostream &os, const gridEntry &ge)
std::ostream & operator<< (std::ostream &os, const stepEntry &se)
 operator << Output operator for the stepEntry structure
std::ostream & operator<< (std::ostream &os, const SuperArray< std::vector< gridEntry > > &S)
template<class T>
std::ostream & operator<< (std::ostream &os, const SuperArray< T > &S)
template<class T>
std::ostream & operator<< (std::ostream &os, const SuperGrid< T > &S)
std::ostream & operator<< (std::ostream &os, const surface &su)
std::ostream & operator<< (std::ostream &os, const triangle &dr)
std::ostream & operator<< (std::ostream &os, Gauss gs)
 read the Gauss structure from a binary file
std::ostream & operator<< (std::ostream &os, GlobalParms &parms)
std::ostream & operator<< (std::ostream &os, objectInfo E)
std::ostream & operator<< (std::ostream &os, Octree< triangle > &)
std::ostream & operator<< (std::ostream &os, SysMemInfo smi)
bool operator== (objectInfo a, objectInfo b)
std::istream & operator>> (std::istream &is, GlobalParms &parms)
void output (int nx, int ny, maths::Vector< std::complex< double > > **G)
maths::Vector< double > pnext (maths::Vector< double > p0, maths::Vector< double > k0, maths::Vector< double > d, double eps=1E-50)
template<class T>
maths::Vector< double > pnext (maths::Vector< double > p0, maths::Vector< double > k0, SuperArray< T > &git, GOAT::maths::Vector< INDEX_TYPE > &currentIndex)
template<class T>
maths::Vector< double > pnext (maths::Vector< double > p0, maths::Vector< double > k0, SuperArray< T > &git, GOAT::maths::Vector< INDEX_TYPE > &currentIndex, double eps)
maths::Vector< double > pnext (Plane E, maths::Vector< double > p0s, maths::Vector< double > k0s, maths::Vector< double > d, double eps=1E-50)
double rayOctreeIntersection (Octree< triangle > &T, maths::Vector< double > P, maths::Vector< double > k, triangle &D)
GlobalParms readGlobalParms (bool old, std::ifstream &is)
GlobalParms readGlobalParms (bool old, std::ifstream *is)
float readLE_float32 (std::istream &is)
int readLE_int32 (std::istream &is)
RRTParmsInfo readRRTParms (bool old, std::ifstream &is)
RRTParmsInfo readRRTParms (bool old, std::ifstream *is)
void readRRTParms (std::ifstream &is, RRTParmsInfo &erg)
bool saveabsE (SuperArray< maths::Vector< std::complex< double > > > &S, std::string FName, int i=0)
 save the square of the absolute value of the z-component of the electric field Save the square of the absolute value of the z-component of the electric field, i.e. \( \sum_i E_i \cdot conj(E_i) \) the i-th object of the SuperArray
bool saveabsEbin (SuperArray< maths::Vector< std::complex< double > > > &S, std::string FName, int i=0)
std::ostream & savebinGlobalParms (std::ostream &os, GlobalParms parms)
bool saveExPhase (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
 save the phase of the x-component of the electric field Save the phase of the x-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray
bool saveExPol (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
bool saveEyPhase (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
 save the phase of the y-component of the electric field Save the phase of the y-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray
bool saveEyPol (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
bool saveEzPhase (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
 save the phase of the z-component of the electric field Save the phase of the z-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray
bool saveEzPol (SuperArray< maths::Vector< std::complex< double > > > &S, char *FName, int i=0)
maths::Vector< double > set_grid_point (const GlobalParms &parms, Point P)
void setR0 (ObjectShape *E, double r0)
maths::Vector< double > sph2kart (maths::Vector< double > v)
maths::Vector< double > startpunkt (int ix, int iy, grid &git, double r, double theta, double phi)
maths::Vector< double > startpunkt (int ix, int iy, grid &git, double theta, double phi)
void sub_Gitter (GlobalParms parms, maths::Vector< std::complex< double > > **Erg, maths::Vector< std::complex< double > > **Gitter1, maths::Vector< std::complex< double > > **Gitter2)
SysMemInfo sysmem ()
void toString (char *S, objectInfo *E, int i)
bool triangleAABBIntersection (const Box &B, const triangle &d)
int triBoxOverlap (const maths::Vector< double > boxcenter, const maths::Vector< double > boxhalfsize, const maths::Vector< double > triverts[3])
int triBoxOverlap (double boxcenter[3], double boxhalfsize[3], double triverts[3][3])
maths::Vector< double > ursprungrot (double dr, double theta, double phi, maths::Vector< double > &exrot, maths::Vector< double > &eyrot, grid &git)
void writeRRTParms (std::ofstream &os, RRTParmsInfo erg)
void writeTriangleOctree (char *Fname, Octree< triangle > &)
operators on surface

Operators, which act directly on the surface class

surface operator+ (const surface &s, const maths::Vector< double > &v)
 {
surface operator- (const surface &s, const maths::Vector< double > &v)
 subtracts vector v from all corners of the triangle list of the surface object s
surface operator+ (const maths::Vector< double > &v, const surface &s)
 adds vector v to all corners of the triangle list of the surface object s
surface operator- (const maths::Vector< double > &v, const surface &s)
 subtracts vector v from all corners of the triangle list of the surface object s
surface operator* (const maths::Matrix< double > &M, const surface &s)
surface generateHexagonCylinder (double a, double h, maths::Matrix< double > M=maths::UNITY)
 }
surface generateHollowHexagonalCylinder (double a, double h, double t, maths::Matrix< double > M=maths::UNITY)
 generates a cylinder with hexagonal cross section. At the upper and lower faces, there are pyramidal dips.
surfacegenerateBullet (double a, double h, double t, maths::Matrix< double > M=maths::UNITY)
 generates a cylinder with hexagonal cross section with a pyramid-shaped tip on the upper surface.
surface generateEllipsoid (double a, double b, int N, double r0=1.0, maths::Matrix< double > M=maths::UNITY)
 Generiert einen hexagonalen Zylinder mit Seitenl�nge a und H�he h und einer pyramidalen Spitze.
surface generatePill (double a, double b, double h, int N, double r0=1.0, maths::Matrix< double > M=maths::UNITY)
 Generates a cylinder with ellipsoidal caps.
surface generatePolyBullet (int n, double a, double h, double t, maths::Matrix< double > M=maths::UNITY)
void getMinMax (int numTriangles, triangle *S, double &min, double &max)
 calculates the longest and shortest side length
Operators on triangle
triangle operator+ (const triangle &dr, const maths::Vector< double > &v)
 add vector v to the corners of the triangle dr
triangle operator- (const triangle &dr, const maths::Vector< double > &v)
 subtract vector v from the corners of the triangle dr
triangle operator+ (const maths::Vector< double > &v, const triangle &dr)
 add vector v to the corners of the triangle dr
triangle operator- (const maths::Vector< double > &v, const triangle &dr)
 subtract vector v from the corners of the triangle dr
triangle operator* (const maths::Matrix< double > &M, const triangle &dr)
 multiply matrix M to every corner of triangle dr
triangle operator* (const triangle &dr, double a)
 multiply the corners of the triangle dr with the scalar a
triangle operator* (double a, const triangle &dr)
 multiply the corners of the triangle dr with the scalar a
triangle operator/ (const triangle &dr, double a)
 divide the corners of the triangle dr by the scalar a

Variables

constexpr double C_LIGHT = 299792458
 speed of light in \( m\cdot s^{-1}\)
constexpr double c_light =299792458.0
 speed of light in vacuum in m/s
constexpr double C_LIGHT_MU = 299792458E+6
 speed of light in \(\mu m*s^{-1} \)
constexpr double C_LIGHT_MU_FS = 0.299792458
 speed of light in \( m*fs^{-1}\)
template<class T>
dummy
constexpr double eps0 =8.854187817E-12
 vacuum permittvity in \(F\cdot m^{-1}\)
const Plane Exy = Plane(maths::Vector<double>(0.0, 0.0, 0.0), maths::ex, maths::ey)
const Plane Exz = Plane(maths::Vector<double>(0.0, 0.0, 0.0), maths::ex, maths::ez)
constexpr int INEL_CALCPHASE_EXCITATION =1
constexpr int INEL_CALCPHASE_EXCITATION_ONLY =3
constexpr int INEL_CALCPHASE_RRT =2
constexpr int INEL_EXPORT_EXCITATION_FIELD_ABS =0
constexpr int INEL_EXPORT_EXCITATION_FIELD_VECTOR =1
constexpr int INEL_MAX_NREFLEX =1
constexpr int INEL_RADIATION_COHERENT =1
constexpr int INEL_RADIATION_INCOHERENT =2
constexpr int INEL_RADIATION_TYPE_FLOURESCENCE =1
constexpr int INEL_RADIATION_TYPE_RAMAN =2
constexpr int INEL_SAVE_ABSE =1
constexpr double INF = std::numeric_limits<double>::infinity()
constexpr int LIGHTSRC_SRCTYPE_GAUSS =2
 Light source is a gaussian wave.
constexpr int LIGHTSRC_SRCTYPE_GAUSS_MC = 12
 Light source is a gaussian wave (random distribution)
constexpr int LIGHTSRC_SRCTYPE_LINE = 5
 Light source along a straight line.
constexpr int LIGHTSRC_SRCTYPE_LINE_MC = 14
 Light source along a straight line (random distribution)
constexpr int LIGHTSRC_SRCTYPE_PLANE =1
 Light source is a plane wave.
constexpr int LIGHTSRC_SRCTYPE_PLANE_MC = 11
 Light source is a plane wave (random distribution)
constexpr int LIGHTSRC_SRCTYPE_POINT = 6
 Point light source.
constexpr int LIGHTSRC_SRCTYPE_POINT_MC = 15
 Point light source (random distribution)
constexpr int LIGHTSRC_SRCTYPE_RING = 3
 Light source is a ring shaped wave.
constexpr int LIGHTSRC_SRCTYPE_RING_MC = 13
 Light source is a ring (random distribution)
constexpr int LIGHTSRC_SRCTYPE_TOPHAT =4
 Light source is a top hat.
constexpr int log2n =10
 2^log2n support points for FFT
constexpr double mu0 =1.25663706127E-6
 vacuum permeability in \(F\cdot A^{-2}\)
constexpr int N_INTEGRAL = 500
const Gauss ohne_gauss = { 0,maths::Vector<double>(0,0,0),maths::Vector<double>(0,0,0),false }
constexpr int PULSECALCULATION_NOT_CLEAR_RESULT = 2
 Flag, set when the results should not be cleared when calling field () in pulseCalculation.
constexpr double standard_pulse_width = 1E-9
 standard pulse width in seconds
constexpr int SUPERGRID_NOERRORS = -1

Detailed Description

Raytracer used for ultrashort pulse calculation with raytracing only.

Typedef Documentation

◆ INDEX_TYPE

typedef long long int GOAT::raytracing::INDEX_TYPE

Definition at line 16 of file superarray.h.

◆ lensSide

Structure to describe one side of an spheric lens For this type of lens one side can either be spherical (convex or concave) or flat.

Enumeration Type Documentation

◆ Curvature

Enumerator
convex 
concave 
flat 

Definition at line 10 of file lens.h.

◆ NFUNCTYPE

enum class GOAT::raytracing::NFUNCTYPE
strong
Enumerator
vacuum 
air 
bk7 
silica 
lasf5 
pmma 

Definition at line 54 of file objectshape.h.

Function Documentation

◆ abs2()

double GOAT::raytracing::abs2 ( double x)

returns the squared absolute value of x

◆ acos()

std::complex< double > GOAT::raytracing::acos ( const std::complex< double > & )

◆ add_Gitter()

void GOAT::raytracing::add_Gitter ( GlobalParms parms,
maths::Vector< std::complex< double > > ** Erg,
maths::Vector< std::complex< double > > ** Gitter1,
maths::Vector< std::complex< double > > ** Gitter2 )

◆ addTriangleToTriangle() [1/2]

void GOAT::raytracing::addTriangleToTriangle ( Octree< triangle > & O,
triangle D )

◆ addTriangleToTriangle() [2/2]

void GOAT::raytracing::addTriangleToTriangle ( Octree< triangle > * O,
triangle D,
int rek )

◆ binRead() [1/3]

void GOAT::raytracing::binRead ( Gauss & Gs,
std::ifstream & is )

write the Gauss structure to a binary file

◆ binRead() [2/3]

void GOAT::raytracing::binRead ( lensParms lp,
std::ifstream & is )

read a lensParms structure from a binary file

◆ binRead() [3/3]

void GOAT::raytracing::binRead ( lensSide ls,
std::ifstream & is )

read a lensSide structure from a binary file

◆ binReadInc()

void GOAT::raytracing::binReadInc ( std::ifstream & is,
ObjectShape *& E,
bool isNew )

◆ binReadIncList()

void GOAT::raytracing::binReadIncList ( std::ifstream & is,
std::vector< ObjectShape * > & E,
int anz )

◆ binReadLSList()

void GOAT::raytracing::binReadLSList ( std::ifstream & is,
int nLS,
LightSrc **& ls )

Reads list of light sources from a binary file and allocates the memory for the light source list.

Parameters
isInput file stream to read the data
nLSNumber of light sources to read
lsList of the light sources read from the input file

◆ binWrite() [1/3]

void GOAT::raytracing::binWrite ( Gauss gs,
std::ofstream & os )

◆ binWrite() [2/3]

void GOAT::raytracing::binWrite ( lensParms lp,
std::ofstream & os )

write a lensParms structure in a binary file

◆ binWrite() [3/3]

void GOAT::raytracing::binWrite ( lensSide ls,
std::ofstream & os )

write a lensSide structure in a binary file

◆ binWriteInc()

void GOAT::raytracing::binWriteInc ( std::ofstream & os,
ObjectShape * E )

◆ binWriteIncList()

void GOAT::raytracing::binWriteIncList ( std::ofstream & os,
std::vector< ObjectShape * > E,
int anz )

◆ binWriteLSList()

void GOAT::raytracing::binWriteLSList ( std::ofstream & os,
int nLS,
LightSrc ** ls )

Writes a list of light sources into a binary file.

Parameters
osOutput file stream to write the data
nLSNumber of light sources to write
lsList of the light sources

◆ calcDetDirParms()

RRTParms GOAT::raytracing::calcDetDirParms ( double theta,
double phi,
double wvlinel )

Calculates the parameters for the detector with help of the spherical coordinates theta and phi This function generates a RRTParms structure for a scattering detection in the direction determined by the spherical coordinates theta and phi.

◆ checkObjectIntersection() [1/3]

void GOAT::raytracing::checkObjectIntersection ( double r0,
maths::Vector< double > & anf,
const maths::Vector< double > & end,
const maths::Vector< double > k,
int numObj,
objectInfo * Obj,
maths::Vector< double > & Ps,
int & Index )

◆ checkObjectIntersection() [2/3]

void GOAT::raytracing::checkObjectIntersection ( double r0,
maths::Vector< double > & anf,
const maths::Vector< double > & end,
StrahlInfo & S,
int numObj,
objectInfo * Obj,
maths::Vector< double > & Ps,
int & Index )

◆ checkObjectIntersection() [3/3]

void GOAT::raytracing::checkObjectIntersection ( maths::Vector< double > & anf,
const maths::Vector< double > & end,
StrahlInfo & S,
int numObj,
objectInfo * Obj,
maths::Vector< double > & Ps,
int & Index )

◆ checkTriangleBoxIntersection()

bool GOAT::raytracing::checkTriangleBoxIntersection ( Box B,
triangle D )

◆ clear()

void GOAT::raytracing::clear ( GlobalParms parms,
maths::Vector< std::complex< double > > ** Gitter )

◆ computeInertia()

maths::Matrix< double > GOAT::raytracing::computeInertia ( ObjectShape * F)

calculates inertia matrix

◆ copy()

void GOAT::raytracing::copy ( StrahlInfo & dest,
StrahlInfo src )

◆ copyFormList()

void GOAT::raytracing::copyFormList ( std::vector< ObjectShape * > & d,
std::vector< ObjectShape * > s,
int anz )

◆ copyInc()

void GOAT::raytracing::copyInc ( ObjectShape *& d,
ObjectShape * s )

◆ copyLightSrcList()

void GOAT::raytracing::copyLightSrcList ( LightSrc **& d,
LightSrc ** s,
int nLS )

Copy the given light source list.

Parameters
dDestination light source list (memory will be allocated within this function)
sSource light source list (this list will be copied)
nLSNumber of light sources to copy

◆ Delete()

void GOAT::raytracing::Delete ( int n,
maths::Vector< std::complex< double > > ** Gitter )

◆ deleteInc()

void GOAT::raytracing::deleteInc ( ObjectShape * E)

◆ drehphivektor()

maths::Vector< double > GOAT::raytracing::drehphivektor ( maths::Vector< double > vein,
double phi )

◆ drehvektor()

maths::Vector< double > GOAT::raytracing::drehvektor ( maths::Vector< double > vein,
double theta,
double phi )

◆ error()

void GOAT::raytracing::error ( int nerr,
std::string msg )

◆ force()

maths::Vector< double > GOAT::raytracing::force ( maths::Vector< double > norm,
tubedRay Se,
tubedRay Sr,
tubedRay St,
double df )

◆ gaussphase()

std::complex< double > GOAT::raytracing::gaussphase ( maths::Vector< double > P,
maths::Vector< double > F,
maths::Vector< double > k,
double w0,
double k0 )

◆ gaussw()

double GOAT::raytracing::gaussw ( double z,
double wvl,
double w0 )

◆ generateBullet()

surface & GOAT::raytracing::generateBullet ( double a,
double h,
double t,
maths::Matrix< double > M = maths::UNITY )

generates a cylinder with hexagonal cross section with a pyramid-shaped tip on the upper surface.

Parameters
aside length
htotal height
theight of the tip
Mrotation matrix

◆ generateEllipsoid()

surface GOAT::raytracing::generateEllipsoid ( double a,
double b,
int N,
double r0 = 1.0,
maths::Matrix< double > M = maths::UNITY )

Generiert einen hexagonalen Zylinder mit Seitenl�nge a und H�he h und einer pyramidalen Spitze.

generates a triangulated ellipsoid

Parameters
afirst half axis
bsecond half axis
Nresolution

◆ generateHexagonCylinder()

surface GOAT::raytracing::generateHexagonCylinder ( double a,
double h,
maths::Matrix< double > M = maths::UNITY )

}

Generates a cylinder with hexagonal cross section

Parameters
aside length
hheight
Mrotation matrix

◆ generateHollowHexagonalCylinder()

surface GOAT::raytracing::generateHollowHexagonalCylinder ( double a,
double h,
double t,
maths::Matrix< double > M = maths::UNITY )

generates a cylinder with hexagonal cross section. At the upper and lower faces, there are pyramidal dips.

Parameters
aside length
hheight
tdepth of the dip
Mrotation matrix

◆ generatePill()

surface GOAT::raytracing::generatePill ( double a,
double b,
double h,
int N,
double r0 = 1.0,
maths::Matrix< double > M = maths::UNITY )

Generates a cylinder with ellipsoidal caps.

Parameters
ahei

◆ generatePolyBullet()

surface GOAT::raytracing::generatePolyBullet ( int n,
double a,
double h,
double t,
maths::Matrix< double > M = maths::UNITY )

◆ get_grid_point()

Point GOAT::raytracing::get_grid_point ( const GlobalParms & parms,
maths::Vector< double > P )

◆ getMinMax()

void GOAT::raytracing::getMinMax ( int numTriangles,
triangle * S,
double & min,
double & max )

calculates the longest and shortest side length

Parameters
numTrianglesnumber of triangles
triangleList of the triangles
Returns
min shortest side length
max longest side length

◆ grad()

double GOAT::raytracing::grad ( const GlobalParms & parms,
maths::Vector< std::complex< double > > ** Gitter,
const maths::Vector< double > & P )

◆ init_Strahl()

void GOAT::raytracing::init_Strahl ( GlobalParms Parms,
StrahlArray * Strahl )

◆ initInc()

void GOAT::raytracing::initInc ( ObjectShape * E)

◆ int2Curvature()

Curvature GOAT::raytracing::int2Curvature ( int index)

converts integer value to Curvature enum

◆ intersectionTest()

bool GOAT::raytracing::intersectionTest ( ObjectShape & A,
ObjectShape & B )

Test if object A and object B may intersect each other (i.e. the bounding boxes around the objects intersect each other)

◆ kart2sph()

maths::Vector< double > GOAT::raytracing::kart2sph ( maths::Vector< double > v)

◆ loadbinGlobalParms()

std::istream & GOAT::raytracing::loadbinGlobalParms ( std::istream & os,
GlobalParms & parms )

◆ max3()

double GOAT::raytracing::max3 ( double x,
double y,
double z )
inline

Definition at line 20 of file triangle_box_intersection.h.

◆ memstat()

MemInfo GOAT::raytracing::memstat ( )

◆ min3()

double GOAT::raytracing::min3 ( double x,
double y,
double z )
inline

Definition at line 12 of file triangle_box_intersection.h.

◆ minmax() [1/2]

double GOAT::raytracing::minmax ( double a,
double b )

◆ minmax() [2/2]

void GOAT::raytracing::minmax ( double x,
double dx,
int & min,
int & max )

◆ n_ABS()

std::complex< double > GOAT::raytracing::n_ABS ( double wvl)

refractive index function for highly absorbing medium with real part 1.0

◆ n_Air()

std::complex< double > GOAT::raytracing::n_Air ( double wvl)

refractive index of air according to refractiveindex.info

Parameters
wvlwavelength (in um)
Returns
refractive index

◆ n_BK7()

std::complex< double > GOAT::raytracing::n_BK7 ( double wvl)

refractive index of BK7 (glass, Schott) according to refractiveindex.info

Parameters
wvlwavelength
Returns
refractive index

◆ n_fused_silica()

std::complex< double > GOAT::raytracing::n_fused_silica ( double wvl)

refractive index of fused silica according to refractiveindex.info

Parameters
wvlwavelength (in um)
Returns
refractive index

◆ n_Glass()

std::complex< double > GOAT::raytracing::n_Glass ( double wvl)

refractive index of 1.5

Parameters
wvlwavelength (in um)
Returns
refractive index

◆ n_LASF55()

std::complex< double > GOAT::raytracing::n_LASF55 ( double wvl)

refractive index of LASF55-glass from Schott (coefficients according taken from www.schott.com)

◆ n_lin()

std::complex< double > GOAT::raytracing::n_lin ( double wvl)

◆ n_PMMA()

std::complex< double > GOAT::raytracing::n_PMMA ( double wvl)

refractive index function of Poly(methyl mathacrylate), PMMA refractive index function for PMMA taken from refractiveindex.info (Sultanova et al., Acta Physica Polonica A 116, 585-587 (2009))

◆ n_Sellmeier()

std::complex< double > GOAT::raytracing::n_Sellmeier ( double lambda,
double C[3],
double B[3] )

refractive index formula used for glasses from Schott

◆ n_test()

std::complex< double > GOAT::raytracing::n_test ( double wvl)

◆ n_Vacuum()

std::complex< double > GOAT::raytracing::n_Vacuum ( double wvl)

refractive index of vacuum (=1.0) for compatibility

◆ NA2w0()

double GOAT::raytracing::NA2w0 ( double lambda,
double NA,
std::complex< double > n )

◆ next()

maths::Vector< double > GOAT::raytracing::next ( const GlobalParms & parms,
const maths::Vector< double > & P0,
const maths::Vector< double > & k )

◆ nextP()

maths::Vector< double > GOAT::raytracing::nextP ( maths::Vector< double > P,
maths::Vector< double > k,
maths::Vector< double > OK,
double rK,
bool & found )

◆ operator*() [1/4]

surface GOAT::raytracing::operator* ( const maths::Matrix< double > & M,
const surface & s )

multiply every corner of the triangles from surface s by the matrix M

◆ operator*() [2/4]

triangle GOAT::raytracing::operator* ( const maths::Matrix< double > & M,
const triangle & dr )

multiply matrix M to every corner of triangle dr

◆ operator*() [3/4]

triangle GOAT::raytracing::operator* ( const triangle & dr,
double a )

multiply the corners of the triangle dr with the scalar a

◆ operator*() [4/4]

triangle GOAT::raytracing::operator* ( double a,
const triangle & dr )

multiply the corners of the triangle dr with the scalar a

◆ operator+() [1/4]

surface GOAT::raytracing::operator+ ( const maths::Vector< double > & v,
const surface & s )

adds vector v to all corners of the triangle list of the surface object s

◆ operator+() [2/4]

triangle GOAT::raytracing::operator+ ( const maths::Vector< double > & v,
const triangle & dr )

add vector v to the corners of the triangle dr

◆ operator+() [3/4]

surface GOAT::raytracing::operator+ ( const surface & s,
const maths::Vector< double > & v )

{

adds vector v to all corners of the triangle list of the surface object s

◆ operator+() [4/4]

triangle GOAT::raytracing::operator+ ( const triangle & dr,
const maths::Vector< double > & v )

add vector v to the corners of the triangle dr

◆ operator-() [1/4]

surface GOAT::raytracing::operator- ( const maths::Vector< double > & v,
const surface & s )

subtracts vector v from all corners of the triangle list of the surface object s

◆ operator-() [2/4]

triangle GOAT::raytracing::operator- ( const maths::Vector< double > & v,
const triangle & dr )

subtract vector v from the corners of the triangle dr

◆ operator-() [3/4]

surface GOAT::raytracing::operator- ( const surface & s,
const maths::Vector< double > & v )

subtracts vector v from all corners of the triangle list of the surface object s

◆ operator-() [4/4]

triangle GOAT::raytracing::operator- ( const triangle & dr,
const maths::Vector< double > & v )

subtract vector v from the corners of the triangle dr

◆ operator/()

triangle GOAT::raytracing::operator/ ( const triangle & dr,
double a )

divide the corners of the triangle dr by the scalar a

◆ operator<<() [1/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
Box B )

output operator for the Box class

◆ operator<<() [2/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const gridEntry & ge )

◆ operator<<() [3/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const stepEntry & se )

operator << Output operator for the stepEntry structure

Parameters
osstream to write on
sestepEntry object to write
Returns

◆ operator<<() [4/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const SuperArray< std::vector< gridEntry > > & S )

◆ operator<<() [5/13]

template<class T>
std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const SuperArray< T > & S )

Definition at line 944 of file superarray.h.

◆ operator<<() [6/13]

template<class T>
std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const SuperGrid< T > & S )

Definition at line 769 of file supergrid.h.

◆ operator<<() [7/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const surface & su )

◆ operator<<() [8/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
const triangle & dr )

◆ operator<<() [9/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
Gauss gs )

read the Gauss structure from a binary file

◆ operator<<() [10/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
GlobalParms & parms )

◆ operator<<() [11/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
objectInfo E )

◆ operator<<() [12/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
Octree< triangle > &  )

◆ operator<<() [13/13]

std::ostream & GOAT::raytracing::operator<< ( std::ostream & os,
SysMemInfo smi )

◆ operator==()

bool GOAT::raytracing::operator== ( objectInfo a,
objectInfo b )

◆ operator>>()

std::istream & GOAT::raytracing::operator>> ( std::istream & is,
GlobalParms & parms )

◆ output()

void GOAT::raytracing::output ( int nx,
int ny,
maths::Vector< std::complex< double > > ** G )

◆ pnext() [1/4]

maths::Vector< double > GOAT::raytracing::pnext ( maths::Vector< double > p0,
maths::Vector< double > k0,
maths::Vector< double > d,
double eps = 1E-50 )

◆ pnext() [2/4]

template<class T>
maths::Vector< double > GOAT::raytracing::pnext ( maths::Vector< double > p0,
maths::Vector< double > k0,
SuperArray< T > & git,
GOAT::maths::Vector< INDEX_TYPE > & currentIndex )

Definition at line 68 of file inel_calc.h.

◆ pnext() [3/4]

template<class T>
maths::Vector< double > GOAT::raytracing::pnext ( maths::Vector< double > p0,
maths::Vector< double > k0,
SuperArray< T > & git,
GOAT::maths::Vector< INDEX_TYPE > & currentIndex,
double eps )

Definition at line 116 of file inel_calc.h.

◆ pnext() [4/4]

maths::Vector< double > GOAT::raytracing::pnext ( Plane E,
maths::Vector< double > p0s,
maths::Vector< double > k0s,
maths::Vector< double > d,
double eps = 1E-50 )

◆ rayOctreeIntersection()

double GOAT::raytracing::rayOctreeIntersection ( Octree< triangle > & T,
maths::Vector< double > P,
maths::Vector< double > k,
triangle & D )

◆ readGlobalParms() [1/2]

GlobalParms GOAT::raytracing::readGlobalParms ( bool old,
std::ifstream & is )

◆ readGlobalParms() [2/2]

GlobalParms GOAT::raytracing::readGlobalParms ( bool old,
std::ifstream * is )

◆ readLE_float32()

float GOAT::raytracing::readLE_float32 ( std::istream & is)

◆ readLE_int32()

int GOAT::raytracing::readLE_int32 ( std::istream & is)

◆ readRRTParms() [1/3]

RRTParmsInfo GOAT::raytracing::readRRTParms ( bool old,
std::ifstream & is )

◆ readRRTParms() [2/3]

RRTParmsInfo GOAT::raytracing::readRRTParms ( bool old,
std::ifstream * is )

◆ readRRTParms() [3/3]

void GOAT::raytracing::readRRTParms ( std::ifstream & is,
RRTParmsInfo & erg )

◆ saveabsE()

bool GOAT::raytracing::saveabsE ( SuperArray< maths::Vector< std::complex< double > > > & S,
std::string FName,
int i = 0 )

save the square of the absolute value of the z-component of the electric field Save the square of the absolute value of the z-component of the electric field, i.e. \( \sum_i E_i \cdot conj(E_i) \) the i-th object of the SuperArray

Parameters
SSuperArray in which the field is stored
FNameFilename of the file
iNumber of the object
Returns
true on success

◆ saveabsEbin()

bool GOAT::raytracing::saveabsEbin ( SuperArray< maths::Vector< std::complex< double > > > & S,
std::string FName,
int i = 0 )

◆ savebinGlobalParms()

std::ostream & GOAT::raytracing::savebinGlobalParms ( std::ostream & os,
GlobalParms parms )

◆ saveExPhase()

bool GOAT::raytracing::saveExPhase ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

save the phase of the x-component of the electric field Save the phase of the x-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray

Parameters
SSuperArray in which the field is stored
FNameFilename of the file
iNumber of the object
Returns
true on success

◆ saveExPol()

bool GOAT::raytracing::saveExPol ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

◆ saveEyPhase()

bool GOAT::raytracing::saveEyPhase ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

save the phase of the y-component of the electric field Save the phase of the y-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray

Parameters
SSuperArray in which the field is stored
FNameFilename of the file
iNumber of the object
Returns
true on success

◆ saveEyPol()

bool GOAT::raytracing::saveEyPol ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

◆ saveEzPhase()

bool GOAT::raytracing::saveEzPhase ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

save the phase of the z-component of the electric field Save the phase of the z-component of the electric field, i.e. atan of the ratio imaginary part/real part, inside the i-th object of the SuperArray

Parameters
SSuperArray in which the field is stored
FNameFilename of the file
iNumber of the object
Returns
true on success

◆ saveEzPol()

bool GOAT::raytracing::saveEzPol ( SuperArray< maths::Vector< std::complex< double > > > & S,
char * FName,
int i = 0 )

◆ set_grid_point()

maths::Vector< double > GOAT::raytracing::set_grid_point ( const GlobalParms & parms,
Point P )

◆ setR0()

void GOAT::raytracing::setR0 ( ObjectShape * E,
double r0 )

◆ sph2kart()

maths::Vector< double > GOAT::raytracing::sph2kart ( maths::Vector< double > v)

◆ startpunkt() [1/2]

maths::Vector< double > GOAT::raytracing::startpunkt ( int ix,
int iy,
grid & git,
double r,
double theta,
double phi )

◆ startpunkt() [2/2]

maths::Vector< double > GOAT::raytracing::startpunkt ( int ix,
int iy,
grid & git,
double theta,
double phi )

◆ sub_Gitter()

void GOAT::raytracing::sub_Gitter ( GlobalParms parms,
maths::Vector< std::complex< double > > ** Erg,
maths::Vector< std::complex< double > > ** Gitter1,
maths::Vector< std::complex< double > > ** Gitter2 )

◆ sysmem()

SysMemInfo GOAT::raytracing::sysmem ( )

◆ toString()

void GOAT::raytracing::toString ( char * S,
objectInfo * E,
int i )

◆ triangleAABBIntersection()

bool GOAT::raytracing::triangleAABBIntersection ( const Box & B,
const triangle & d )

◆ triBoxOverlap() [1/2]

int GOAT::raytracing::triBoxOverlap ( const maths::Vector< double > boxcenter,
const maths::Vector< double > boxhalfsize,
const maths::Vector< double > triverts[3] )

◆ triBoxOverlap() [2/2]

int GOAT::raytracing::triBoxOverlap ( double boxcenter[3],
double boxhalfsize[3],
double triverts[3][3] )

◆ ursprungrot()

maths::Vector< double > GOAT::raytracing::ursprungrot ( double dr,
double theta,
double phi,
maths::Vector< double > & exrot,
maths::Vector< double > & eyrot,
grid & git )

◆ writeRRTParms()

void GOAT::raytracing::writeRRTParms ( std::ofstream & os,
RRTParmsInfo erg )

◆ writeTriangleOctree()

void GOAT::raytracing::writeTriangleOctree ( char * Fname,
Octree< triangle > &  )

Variable Documentation

◆ C_LIGHT

double GOAT::raytracing::C_LIGHT = 299792458
constexpr

speed of light in \( m\cdot s^{-1}\)

Definition at line 17 of file constants.h.

◆ c_light

double GOAT::raytracing::c_light =299792458.0
constexpr

speed of light in vacuum in m/s

Definition at line 8 of file constants.h.

◆ C_LIGHT_MU

double GOAT::raytracing::C_LIGHT_MU = 299792458E+6
constexpr

speed of light in \(\mu m*s^{-1} \)

Definition at line 19 of file constants.h.

◆ C_LIGHT_MU_FS

double GOAT::raytracing::C_LIGHT_MU_FS = 0.299792458
constexpr

speed of light in \( m*fs^{-1}\)

Definition at line 18 of file constants.h.

◆ dummy

template<class T>
T GOAT::raytracing::dummy

Definition at line 184 of file superarray.h.

◆ eps0

double GOAT::raytracing::eps0 =8.854187817E-12
constexpr

vacuum permittvity in \(F\cdot m^{-1}\)

Definition at line 14 of file constants.h.

◆ Exy

const Plane GOAT::raytracing::Exy = Plane(maths::Vector<double>(0.0, 0.0, 0.0), maths::ex, maths::ey)

Definition at line 69 of file plane.h.

◆ Exz

const Plane GOAT::raytracing::Exz = Plane(maths::Vector<double>(0.0, 0.0, 0.0), maths::ex, maths::ez)

Definition at line 68 of file plane.h.

◆ INEL_CALCPHASE_EXCITATION

int GOAT::raytracing::INEL_CALCPHASE_EXCITATION =1
constexpr

Definition at line 14 of file raytrace_inel.h.

◆ INEL_CALCPHASE_EXCITATION_ONLY

int GOAT::raytracing::INEL_CALCPHASE_EXCITATION_ONLY =3
constexpr

Definition at line 16 of file raytrace_inel.h.

◆ INEL_CALCPHASE_RRT

int GOAT::raytracing::INEL_CALCPHASE_RRT =2
constexpr

Definition at line 15 of file raytrace_inel.h.

◆ INEL_EXPORT_EXCITATION_FIELD_ABS

int GOAT::raytracing::INEL_EXPORT_EXCITATION_FIELD_ABS =0
constexpr

Definition at line 27 of file raytrace_inel.h.

◆ INEL_EXPORT_EXCITATION_FIELD_VECTOR

int GOAT::raytracing::INEL_EXPORT_EXCITATION_FIELD_VECTOR =1
constexpr

Definition at line 28 of file raytrace_inel.h.

◆ INEL_MAX_NREFLEX

int GOAT::raytracing::INEL_MAX_NREFLEX =1
constexpr

Definition at line 18 of file raytrace_inel.h.

◆ INEL_RADIATION_COHERENT

int GOAT::raytracing::INEL_RADIATION_COHERENT =1
constexpr

Definition at line 24 of file raytrace_inel.h.

◆ INEL_RADIATION_INCOHERENT

int GOAT::raytracing::INEL_RADIATION_INCOHERENT =2
constexpr

Definition at line 25 of file raytrace_inel.h.

◆ INEL_RADIATION_TYPE_FLOURESCENCE

int GOAT::raytracing::INEL_RADIATION_TYPE_FLOURESCENCE =1
constexpr

Definition at line 21 of file raytrace_inel.h.

◆ INEL_RADIATION_TYPE_RAMAN

int GOAT::raytracing::INEL_RADIATION_TYPE_RAMAN =2
constexpr

Definition at line 22 of file raytrace_inel.h.

◆ INEL_SAVE_ABSE

int GOAT::raytracing::INEL_SAVE_ABSE =1
constexpr

Definition at line 19 of file raytrace_inel.h.

◆ INF

double GOAT::raytracing::INF = std::numeric_limits<double>::infinity()
constexpr

Definition at line 12 of file resutil.h.

◆ LIGHTSRC_SRCTYPE_GAUSS

int GOAT::raytracing::LIGHTSRC_SRCTYPE_GAUSS =2
constexpr

Light source is a gaussian wave.

Definition at line 20 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_GAUSS_MC

int GOAT::raytracing::LIGHTSRC_SRCTYPE_GAUSS_MC = 12
constexpr

Light source is a gaussian wave (random distribution)

Definition at line 27 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_LINE

int GOAT::raytracing::LIGHTSRC_SRCTYPE_LINE = 5
constexpr

Light source along a straight line.

Definition at line 23 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_LINE_MC

int GOAT::raytracing::LIGHTSRC_SRCTYPE_LINE_MC = 14
constexpr

Light source along a straight line (random distribution)

Definition at line 29 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_PLANE

int GOAT::raytracing::LIGHTSRC_SRCTYPE_PLANE =1
constexpr

Light source is a plane wave.

Definition at line 19 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_PLANE_MC

int GOAT::raytracing::LIGHTSRC_SRCTYPE_PLANE_MC = 11
constexpr

Light source is a plane wave (random distribution)

Definition at line 26 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_POINT

int GOAT::raytracing::LIGHTSRC_SRCTYPE_POINT = 6
constexpr

Point light source.

Definition at line 24 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_POINT_MC

int GOAT::raytracing::LIGHTSRC_SRCTYPE_POINT_MC = 15
constexpr

Point light source (random distribution)

Definition at line 30 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_RING

int GOAT::raytracing::LIGHTSRC_SRCTYPE_RING = 3
constexpr

Light source is a ring shaped wave.

Definition at line 21 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_RING_MC

int GOAT::raytracing::LIGHTSRC_SRCTYPE_RING_MC = 13
constexpr

Light source is a ring (random distribution)

Definition at line 28 of file lightsrc.h.

◆ LIGHTSRC_SRCTYPE_TOPHAT

int GOAT::raytracing::LIGHTSRC_SRCTYPE_TOPHAT =4
constexpr

Light source is a top hat.

Definition at line 22 of file lightsrc.h.

◆ log2n

int GOAT::raytracing::log2n =10
constexpr

2^log2n support points for FFT

Definition at line 36 of file short_pulses.h.

◆ mu0

double GOAT::raytracing::mu0 =1.25663706127E-6
constexpr

vacuum permeability in \(F\cdot A^{-2}\)

Definition at line 13 of file constants.h.

◆ N_INTEGRAL

int GOAT::raytracing::N_INTEGRAL = 500
constexpr

Definition at line 15 of file fft.h.

◆ ohne_gauss

const Gauss GOAT::raytracing::ohne_gauss = { 0,maths::Vector<double>(0,0,0),maths::Vector<double>(0,0,0),false }

Definition at line 78 of file tubedray.h.

◆ PULSECALCULATION_NOT_CLEAR_RESULT

int GOAT::raytracing::PULSECALCULATION_NOT_CLEAR_RESULT = 2
constexpr

Flag, set when the results should not be cleared when calling field () in pulseCalculation.

Definition at line 17 of file pulsecalculation.h.

◆ standard_pulse_width

double GOAT::raytracing::standard_pulse_width = 1E-9
constexpr

standard pulse width in seconds

Definition at line 37 of file short_pulses.h.

◆ SUPERGRID_NOERRORS

int GOAT::raytracing::SUPERGRID_NOERRORS = -1
constexpr

Definition at line 14 of file supergrid.h.