OpticalFilter.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_OPTICALGRAPH_OPTICALFILTER_H__
210447Snilay@cs.wisc.edu#define __DSENT_MODEL_OPTICALGRAPH_OPTICALFILTER_H__
310447Snilay@cs.wisc.edu
410447Snilay@cs.wisc.edu#include "model/optical_graph/OpticalNode.h"
510447Snilay@cs.wisc.edu#include "util/CommonType.h"
610447Snilay@cs.wisc.edu
710447Snilay@cs.wisc.edunamespace DSENT
810447Snilay@cs.wisc.edu{
910447Snilay@cs.wisc.edu    class OpticalFilter : public OpticalNode
1010447Snilay@cs.wisc.edu    {
1110447Snilay@cs.wisc.edu        public:
1210447Snilay@cs.wisc.edu            OpticalFilter(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, bool drop_all_, const WavelengthGroup& drop_wavelengths_);
1310447Snilay@cs.wisc.edu            ~OpticalFilter();
1410447Snilay@cs.wisc.edu
1510447Snilay@cs.wisc.edu        public:
1610447Snilay@cs.wisc.edu            // Get the drop all flag
1710447Snilay@cs.wisc.edu            bool getDropAll() const;
1810447Snilay@cs.wisc.edu            // Get drop wavelengths
1910447Snilay@cs.wisc.edu            WavelengthGroup getDropWavelengths() const;
2010447Snilay@cs.wisc.edu            // Set and get the drop loss
2110447Snilay@cs.wisc.edu            void setDropLoss(double drop_loss_);
2210447Snilay@cs.wisc.edu            double getDropLoss() const;
2310447Snilay@cs.wisc.edu            // Set and get drop port
2410447Snilay@cs.wisc.edu            void setDropPort(OpticalNode* drop_port_);
2510447Snilay@cs.wisc.edu            OpticalNode* getDropPort();
2610447Snilay@cs.wisc.edu            // Checks to see if a set of wavelengths will be dropped
2710447Snilay@cs.wisc.edu            bool isDropped(const WavelengthGroup& wavelengths_) const;
2810447Snilay@cs.wisc.edu
2910447Snilay@cs.wisc.edu        private:
3010447Snilay@cs.wisc.edu            // Disable copy constructor
3110447Snilay@cs.wisc.edu            OpticalFilter(const OpticalFilter& node_);
3210447Snilay@cs.wisc.edu
3310447Snilay@cs.wisc.edu        private:
3410447Snilay@cs.wisc.edu            // Whether to drop all the optical signal for the drop wavelengths
3510447Snilay@cs.wisc.edu            // i.e. so that the drop wavelengths are not traced anymore
3610447Snilay@cs.wisc.edu            const bool m_drop_all_;
3710447Snilay@cs.wisc.edu            // The loss incurred from in to drop port
3810447Snilay@cs.wisc.edu            double m_drop_loss_;
3910447Snilay@cs.wisc.edu            // The wavelengths that are dropped
4010447Snilay@cs.wisc.edu            const WavelengthGroup m_drop_wavelengths_;
4110447Snilay@cs.wisc.edu            // The node at the drop port
4210447Snilay@cs.wisc.edu            OpticalNode* m_drop_port_;
4310447Snilay@cs.wisc.edu    };
4410447Snilay@cs.wisc.edu
4510447Snilay@cs.wisc.edu} // namespace DSENT
4610447Snilay@cs.wisc.edu
4710447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_OPTICALGRAPH_OPTICALFILTER_H__
4810447Snilay@cs.wisc.edu
49