OpticalDetector.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_OPTICALGRAPH_OPTICALDETECTOR_H__
210447Snilay@cs.wisc.edu#define __DSENT_MODEL_OPTICALGRAPH_OPTICALDETECTOR_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 OpticalReceiver;
1010447Snilay@cs.wisc.edu
1110447Snilay@cs.wisc.edu    class OpticalDetector : public OpticalNode
1210447Snilay@cs.wisc.edu    {
1310447Snilay@cs.wisc.edu        public:
1410447Snilay@cs.wisc.edu            OpticalDetector(const String& instance_name_, OpticalModel* model_, const WavelengthGroup& wavelengths_, OpticalReceiver* receiver_);
1510447Snilay@cs.wisc.edu            ~OpticalDetector();
1610447Snilay@cs.wisc.edu
1710447Snilay@cs.wisc.edu        public:
1810447Snilay@cs.wisc.edu            // Set the responsitivity of the photodetector
1910447Snilay@cs.wisc.edu            void setResponsivity(double responsivity_);
2010447Snilay@cs.wisc.edu
2110447Snilay@cs.wisc.edu            // Get the detector sensitivity given an extinction ratio (in Watts)
2210447Snilay@cs.wisc.edu            double getSensitivity(double ER_dB_) const;
2310447Snilay@cs.wisc.edu
2410447Snilay@cs.wisc.edu            // Ask the receiver for its power (ONLY use for power optimization, as this
2510447Snilay@cs.wisc.edu            // assumes an activity of 1.0)
2610447Snilay@cs.wisc.edu            double getPower() const;
2710447Snilay@cs.wisc.edu
2810447Snilay@cs.wisc.edu        private:
2910447Snilay@cs.wisc.edu            // Disable copy constructor
3010447Snilay@cs.wisc.edu            OpticalDetector(const OpticalDetector& node_);
3110447Snilay@cs.wisc.edu
3210447Snilay@cs.wisc.edu        private:
3310447Snilay@cs.wisc.edu            // The required laser power
3410447Snilay@cs.wisc.edu            double m_sensitivity_;
3510447Snilay@cs.wisc.edu            // The receiver connected to this detector
3610447Snilay@cs.wisc.edu            OpticalReceiver* m_receiver_;
3710447Snilay@cs.wisc.edu            // Responsivity of the photodetector
3810447Snilay@cs.wisc.edu            double m_responsivity_;
3910447Snilay@cs.wisc.edu
4010447Snilay@cs.wisc.edu    };
4110447Snilay@cs.wisc.edu
4210447Snilay@cs.wisc.edu} // namespace DSENT
4310447Snilay@cs.wisc.edu
4410447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_OPTICALGRAPH_OPTICALDETECTOR_H__
4510447Snilay@cs.wisc.edu
46