RingDetector.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 210447Snilay@cs.wisc.edu#define __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 310447Snilay@cs.wisc.edu 410447Snilay@cs.wisc.edu#include "util/CommonType.h" 510447Snilay@cs.wisc.edu#include "model/OpticalModel.h" 610447Snilay@cs.wisc.edu#include "model/optical_graph/OpticalReceiver.h" 710447Snilay@cs.wisc.edu 810447Snilay@cs.wisc.edunamespace DSENT 910447Snilay@cs.wisc.edu{ 1010447Snilay@cs.wisc.edu class RingDetector : public OpticalModel, public OpticalReceiver 1110447Snilay@cs.wisc.edu { 1210447Snilay@cs.wisc.edu public: 1310447Snilay@cs.wisc.edu // Receiver topolgy strings 1410447Snilay@cs.wisc.edu static const String INTEGRATINGSENSEAMP; 1510447Snilay@cs.wisc.edu 1610447Snilay@cs.wisc.edu public: 1710447Snilay@cs.wisc.edu RingDetector(const String& instance_name_, const TechModel* tech_model_); 1810447Snilay@cs.wisc.edu virtual ~RingDetector(); 1910447Snilay@cs.wisc.edu 2010447Snilay@cs.wisc.edu public: 2110447Snilay@cs.wisc.edu // Set a list of properties' name needed to construct model 2210447Snilay@cs.wisc.edu void initParameters(); 2310447Snilay@cs.wisc.edu // Set a list of properties' name needed to construct model 2410447Snilay@cs.wisc.edu void initProperties(); 2510447Snilay@cs.wisc.edu // Returns the sensitivity of the receiver given an extinction ratio 2610447Snilay@cs.wisc.edu double getSensitivity(double ER_dB_) const; 2710447Snilay@cs.wisc.edu 2810447Snilay@cs.wisc.edu private: 2910447Snilay@cs.wisc.edu // Precompute values based on tech parameters 3010447Snilay@cs.wisc.edu void precomputeTech(); 3110447Snilay@cs.wisc.edu // Design the receiver helper function 3210447Snilay@cs.wisc.edu void designReceiver(); 3310447Snilay@cs.wisc.edu // Calculates inverse normal cdf 3410447Snilay@cs.wisc.edu double calcInvNormCdf(double num_); 3510447Snilay@cs.wisc.edu 3610447Snilay@cs.wisc.edu protected: 3710447Snilay@cs.wisc.edu // Build the model 3810447Snilay@cs.wisc.edu virtual void constructModel(); 3910447Snilay@cs.wisc.edu virtual void updateModel(); 4010447Snilay@cs.wisc.edu virtual void useModel(); 4110447Snilay@cs.wisc.edu virtual void propagateTransitionInfo(); 4210447Snilay@cs.wisc.edu 4310447Snilay@cs.wisc.edu private: 4410447Snilay@cs.wisc.edu // Precomputed numbers 4510447Snilay@cs.wisc.edu double m_quad_a_; 4610447Snilay@cs.wisc.edu double m_quad_b1_; 4710447Snilay@cs.wisc.edu double m_quad_b2_; 4810447Snilay@cs.wisc.edu double m_quad_c_; 4910447Snilay@cs.wisc.edu 5010447Snilay@cs.wisc.edu }; // class RingDetector 5110447Snilay@cs.wisc.edu} // namespace DSENT 5210447Snilay@cs.wisc.edu 5310447Snilay@cs.wisc.edu#endif // __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 5410447Snilay@cs.wisc.edu 55