Open PaperOpt
OpenPaperOpt/Filler.h
Go to the documentation of this file.
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