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

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...

#include <raytrace_field_usp.h>

Inheritance diagram for GOAT::raytracing::Raytrace_Field_usp:
GOAT::raytracing::Raytrace

Public Member Functions

void addBoxDetector (Box *box)
 add one box detector
void addBoxDetectorList (std::vector< Box * > BoxDetector)
 add a list of box detectors
void clean ()
 removes all content from SuperArray grid (SA)
void clear ()
 Clears the SuperArray grid (SA)
int findBoxDetectorIntersection (maths::Vector< double > P, maths::Vector< double > k, maths::Vector< double > &pStart, maths::Vector< double > &pStop)
 searches for the intersection point with the next box detector
void init ()
 Initialises the SuperArray grid.
 Raytrace_Field_usp ()
 Raytrace_Field_usp (const Scene &S, INDEX_TYPE n)
void storeData (maths::Vector< double > PStart, maths::Vector< double > Pen, maths::Vector< std::complex< double > > EStart)
void storeStack (maths::Vector< double > PStart, maths::Vector< double > PStop)
void trace ()
 make the raytracing
void traceEnterObject ()
 has to be added since this class is a child of Raytrace (makes nothing)
void traceLeaveObject ()
 has to be added since this class is a child of Raytrace (makes nothing)
void traceOneRay (RayBase *ray, int &Reflexions, int &recur)
 traces one ray
 ~Raytrace_Field_usp ()
Public Member Functions inherited from GOAT::raytracing::Raytrace
void init ()
 this function is called if no object was hidden
void init ()
 this function is called if no object was hidden
 Raytrace ()
 Raytrace ()
 Raytrace (const Scene &S)
 Raytrace (const Scene &S)
void setNumReflex (int numReflex)
 sets number of reflexions
void setNumReflex (int numReflex)
 sets number of reflexions
void setScene (const Scene &S)
 sets Scene
void setScene (const Scene &S)
 sets Scene
void trace ()
 this is the starting point for the raytracing procedure
void trace ()
 this is the starting point for the raytracing procedure
virtual void traceStopObject ()
virtual void traceStopObject ()
virtual void reset ()
void copyRay (RayBase *&dest, RayBase *src)
virtual void reset ()
void copyRay (RayBase *&dest, RayBase *src)

Public Attributes

std::vector< Box * > BoxDetector
 list of the box detectors
int indexCurrentDetector = -1
 index of the current box detector (for internal use only)
int iR = 0
 Number of reflections to consider.
INDEX_TYPE n = 1
 Number of cells in one direction.
int oldObjIndex =-1
maths::Vector< double > pDetStart
maths::Vector< double > pDetStop
std::vector< SuperArray< std::vector< gridEntry > > > SA
 Here, the information for the steps is stored (needed for Fourier transform in pulsecalculation_field)
gridEntry stack
 here, the information from the light source until the region of interest (=box) is reached
Public Attributes inherited from GOAT::raytracing::Raytrace
GOAT::maths::Vector< INDEX_TYPEcurrentIndex = GOAT::maths::Vector<INDEX_TYPE>(-1, -1, -1)
int currentLS
 Number of the current light source, which is currently in the calculation process.
int currentObj
 Number of the last object hit (no object hit: -1)
maths::Vector< std::complex< double > > EStart
maths::Vector< std::complex< double > > EStart2
maths::Vector< std::complex< double > > EStop
 Start and end value of the electric field.
maths::Vector< std::complex< double > > EStop2
 Start and end value of the electric field (second ray in IRay)
int lost
 Rays unintentionally get lost, e.g. due to total internal reflection.
maths::Vector< double > PStart
maths::Vector< double > PStop
 Start and end point of the last step.
maths::Vector< double > kin
 direction of the incident ray
maths::Vector< double > kref
 direction of the reflected ray
maths::Vector< double > ktrans
 direction of the transmitted ray
double PowRef
 Powers stored when ray type is PRay.
double PowIn
 Power of the incident ray.
double PowTrans
 Power of the transmitted ray.
Scene S
 Description of the scene.
bool useRRTParms
 Flag which tells the raytracing procedure if the RRT parameters of scene or the normal parameters are used within the calculation.
int type =RAYTRACER_TYPE_NONE
 Flag which shows which type of raytracer is selected.
RayBaseray
 current ray
RayBasetray
 transmitted ray
bool Abbruch
 flag to stop calculation
int numReflex = RAYTRACE_MAX_REFLEXIONS
 current number of reflections

Detailed Description

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")

Definition at line 18 of file raytrace_field_usp.h.

Constructor & Destructor Documentation

◆ Raytrace_Field_usp() [1/2]

GOAT::raytracing::Raytrace_Field_usp::Raytrace_Field_usp ( )

◆ Raytrace_Field_usp() [2/2]

GOAT::raytracing::Raytrace_Field_usp::Raytrace_Field_usp ( const Scene & S,
INDEX_TYPE n )

◆ ~Raytrace_Field_usp()

GOAT::raytracing::Raytrace_Field_usp::~Raytrace_Field_usp ( )

Member Function Documentation

◆ addBoxDetector()

void GOAT::raytracing::Raytrace_Field_usp::addBoxDetector ( Box * box)
inline

add one box detector

Definition at line 34 of file raytrace_field_usp.h.

◆ addBoxDetectorList()

void GOAT::raytracing::Raytrace_Field_usp::addBoxDetectorList ( std::vector< Box * > BoxDetector)

add a list of box detectors

◆ clean()

void GOAT::raytracing::Raytrace_Field_usp::clean ( )

removes all content from SuperArray grid (SA)

◆ clear()

void GOAT::raytracing::Raytrace_Field_usp::clear ( )

Clears the SuperArray grid (SA)

◆ findBoxDetectorIntersection()

int GOAT::raytracing::Raytrace_Field_usp::findBoxDetectorIntersection ( maths::Vector< double > P,
maths::Vector< double > k,
maths::Vector< double > & pStart,
maths::Vector< double > & pStop )

searches for the intersection point with the next box detector

◆ init()

void GOAT::raytracing::Raytrace_Field_usp::init ( )

Initialises the SuperArray grid.

◆ storeData()

void GOAT::raytracing::Raytrace_Field_usp::storeData ( maths::Vector< double > PStart,
maths::Vector< double > Pen,
maths::Vector< std::complex< double > > EStart )

◆ storeStack()

void GOAT::raytracing::Raytrace_Field_usp::storeStack ( maths::Vector< double > PStart,
maths::Vector< double > PStop )

◆ trace()

void GOAT::raytracing::Raytrace_Field_usp::trace ( )

make the raytracing

◆ traceEnterObject()

void GOAT::raytracing::Raytrace_Field_usp::traceEnterObject ( )
inlinevirtual

has to be added since this class is a child of Raytrace (makes nothing)

Implements GOAT::raytracing::Raytrace.

Definition at line 31 of file raytrace_field_usp.h.

◆ traceLeaveObject()

void GOAT::raytracing::Raytrace_Field_usp::traceLeaveObject ( )
inlinevirtual

has to be added since this class is a child of Raytrace (makes nothing)

Implements GOAT::raytracing::Raytrace.

Definition at line 32 of file raytrace_field_usp.h.

◆ traceOneRay()

void GOAT::raytracing::Raytrace_Field_usp::traceOneRay ( RayBase * ray,
int & Reflexions,
int & recur )
virtual

traces one ray

Parameters
rayray which should be traced,
Reflexionscounter for the number of reflexions made within the ray tracing process. This parameter is needed to stop calculation after the maximal number of reflexions
recurcounter which will be set to the current recursion depth

Reimplemented from GOAT::raytracing::Raytrace.

Member Data Documentation

◆ BoxDetector

std::vector<Box*> GOAT::raytracing::Raytrace_Field_usp::BoxDetector

list of the box detectors

Definition at line 37 of file raytrace_field_usp.h.

◆ indexCurrentDetector

int GOAT::raytracing::Raytrace_Field_usp::indexCurrentDetector = -1

index of the current box detector (for internal use only)

Definition at line 36 of file raytrace_field_usp.h.

◆ iR

int GOAT::raytracing::Raytrace_Field_usp::iR = 0

Number of reflections to consider.

Definition at line 41 of file raytrace_field_usp.h.

◆ n

INDEX_TYPE GOAT::raytracing::Raytrace_Field_usp::n = 1

Number of cells in one direction.

Definition at line 40 of file raytrace_field_usp.h.

◆ oldObjIndex

int GOAT::raytracing::Raytrace_Field_usp::oldObjIndex =-1

Definition at line 44 of file raytrace_field_usp.h.

◆ pDetStart

maths::Vector<double> GOAT::raytracing::Raytrace_Field_usp::pDetStart

Definition at line 43 of file raytrace_field_usp.h.

◆ pDetStop

maths::Vector<double> GOAT::raytracing::Raytrace_Field_usp::pDetStop

Definition at line 43 of file raytrace_field_usp.h.

◆ SA

std::vector<SuperArray <std::vector<gridEntry> > > GOAT::raytracing::Raytrace_Field_usp::SA

Here, the information for the steps is stored (needed for Fourier transform in pulsecalculation_field)

Definition at line 38 of file raytrace_field_usp.h.

◆ stack

gridEntry GOAT::raytracing::Raytrace_Field_usp::stack

here, the information from the light source until the region of interest (=box) is reached

Definition at line 42 of file raytrace_field_usp.h.


The documentation for this class was generated from the following file: