OpticalFilter.cc revision 10447:a465576671d4
1 2#include "model/optical_graph/OpticalFilter.h" 3 4namespace DSENT 5{ 6 OpticalFilter::OpticalFilter(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, bool drop_all_, const WavelengthGroup& drop_wavelengths_) 7 : OpticalNode(OpticalNode::FILTER, instance_name_, model_, wavelengths_), m_drop_all_(drop_all_), m_drop_wavelengths_(drop_wavelengths_) 8 { 9 m_drop_loss_ = 0.0; 10 m_drop_port_ = NULL; 11 } 12 13 OpticalFilter::~OpticalFilter() 14 { 15 16 } 17 18 bool OpticalFilter::getDropAll() const 19 { 20 return m_drop_all_; 21 } 22 23 WavelengthGroup OpticalFilter::getDropWavelengths() const 24 { 25 return m_drop_wavelengths_; 26 } 27 28 void OpticalFilter::setDropLoss(double drop_loss_) 29 { 30 m_drop_loss_ = drop_loss_; 31 return; 32 } 33 34 double OpticalFilter::getDropLoss() const 35 { 36 return m_drop_loss_; 37 } 38 39 void OpticalFilter::setDropPort(OpticalNode* drop_port_) 40 { 41 m_drop_port_ = drop_port_; 42 } 43 44 OpticalNode* OpticalFilter::getDropPort() 45 { 46 return m_drop_port_; 47 } 48 49 bool OpticalFilter::isDropped(const WavelengthGroup& wavelengths_) const 50 { 51 // Check that the lower limits are within bounds 52 bool lower_match = (wavelengths_.first >= getDropWavelengths().first); 53 // Check that the upper limits are within bounds 54 bool upper_match = (wavelengths_.second <= getDropWavelengths().second); 55 // Assert that there are no misalignments 56 ASSERT(lower_match == upper_match, "[Error] " + getInstanceName() + 57 " -> Wavelength group misalignment!" + 58 " InWavelength" + toString(wavelengths_) + 59 ", DropWavelength" + toString(getDropWavelengths())); 60 // Both upper and lower bounds must match 61 return (upper_match && lower_match); 62 } 63} // namespace DSENT 64 65 66