RingDetector.h revision 10447
12810Srdreslin@umich.edu#ifndef __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 211051Sandreas.hansson@arm.com#define __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 311051Sandreas.hansson@arm.com 411051Sandreas.hansson@arm.com#include "util/CommonType.h" 511051Sandreas.hansson@arm.com#include "model/OpticalModel.h" 611051Sandreas.hansson@arm.com#include "model/optical_graph/OpticalReceiver.h" 711051Sandreas.hansson@arm.com 811051Sandreas.hansson@arm.comnamespace DSENT 911051Sandreas.hansson@arm.com{ 1011051Sandreas.hansson@arm.com class RingDetector : public OpticalModel, public OpticalReceiver 1111051Sandreas.hansson@arm.com { 1211051Sandreas.hansson@arm.com public: 1311051Sandreas.hansson@arm.com // Receiver topolgy strings 1411051Sandreas.hansson@arm.com static const String INTEGRATINGSENSEAMP; 1511051Sandreas.hansson@arm.com 162810Srdreslin@umich.edu public: 172810Srdreslin@umich.edu RingDetector(const String& instance_name_, const TechModel* tech_model_); 182810Srdreslin@umich.edu virtual ~RingDetector(); 192810Srdreslin@umich.edu 202810Srdreslin@umich.edu public: 212810Srdreslin@umich.edu // Set a list of properties' name needed to construct model 222810Srdreslin@umich.edu void initParameters(); 232810Srdreslin@umich.edu // Set a list of properties' name needed to construct model 242810Srdreslin@umich.edu void initProperties(); 252810Srdreslin@umich.edu // Returns the sensitivity of the receiver given an extinction ratio 262810Srdreslin@umich.edu double getSensitivity(double ER_dB_) const; 272810Srdreslin@umich.edu 282810Srdreslin@umich.edu private: 292810Srdreslin@umich.edu // Precompute values based on tech parameters 302810Srdreslin@umich.edu void precomputeTech(); 312810Srdreslin@umich.edu // Design the receiver helper function 322810Srdreslin@umich.edu void designReceiver(); 332810Srdreslin@umich.edu // Calculates inverse normal cdf 342810Srdreslin@umich.edu double calcInvNormCdf(double num_); 352810Srdreslin@umich.edu 362810Srdreslin@umich.edu protected: 372810Srdreslin@umich.edu // Build the model 382810Srdreslin@umich.edu virtual void constructModel(); 392810Srdreslin@umich.edu virtual void updateModel(); 402810Srdreslin@umich.edu virtual void useModel(); 412810Srdreslin@umich.edu virtual void propagateTransitionInfo(); 4211051Sandreas.hansson@arm.com 4311051Sandreas.hansson@arm.com private: 442810Srdreslin@umich.edu // Precomputed numbers 4511051Sandreas.hansson@arm.com double m_quad_a_; 4611051Sandreas.hansson@arm.com double m_quad_b1_; 472810Srdreslin@umich.edu double m_quad_b2_; 482810Srdreslin@umich.edu double m_quad_c_; 492810Srdreslin@umich.edu 502810Srdreslin@umich.edu }; // class RingDetector 5111051Sandreas.hansson@arm.com} // namespace DSENT 522810Srdreslin@umich.edu 532810Srdreslin@umich.edu#endif // __DSENT_MODEL_OPTICAL_RINGDETECTOR_H__ 5411051Sandreas.hansson@arm.com 552810Srdreslin@umich.edu