|
Open PaperOpt
|
00001 #pragma once 00002 #ifndef FILLER_H 00003 #define FILLER_H 00004 00005 #include "Distribution.h" 00006 #include "WavePacket.h" 00007 #include "Transform.h" 00008 #include "Basesheet.h" 00009 #include "Component.h" 00010 #include "Fluorescence.h" 00011 #include "utilities.h" 00012 #include <vector> 00013 #include <complex> 00014 using namespace std; 00015 class Filler : public Component 00016 { 00017 public: 00018 Filler(){}; 00019 00035 Filler(vector<complex_LC>& rRefrIndex, vector<double>& rQScat, vector<double>& rQAbs, 00036 vector<double>& rQAbsFluo,double ContactReduction, V2<float>* pRoughness, 00037 Distributions::Distribution* pDistScat, 00038 double Theta, double Phi, double PolAngle, 00039 double A, double B, double Ellip, const Basesheet* const pBasesheet); 00040 00044 virtual ~Filler(void); 00045 00058 int Process(WavePacket& wp, int ComponentNumber, bool EntryScattering = false, complex_LC *pPrevRefrIndex = 0) const; 00059 int Process(WavePacket& wp) const; 00060 00068 // TODO: this function is never called (LC) 00069 void SetIterationLimit(long N) { mIterationLimit = N; } 00070 00071 00072 protected: 00077 enum Position 00078 { 00079 IN_FILLER, 00080 OUTSIDE 00081 }; 00082 00089 void InterceptWall(const V3<double>& rDirection, V3<double>& rPosition, V3<double>& rNormal) const; 00093 V3<double> mAVector; 00094 00099 double mEllipticity; 00103 double mTheta; 00107 double mPhi; 00111 double mPolAngle; 00115 double mA; 00119 double mB; 00120 /* 00121 * Filler z-axis size 00122 */ 00123 double mC; 00127 Transform mGlobalToLocal; 00128 }; 00129 00130 #endif // FILLER_H