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