#include #include #include class MetroProMap { // purpose: A class to decode surface profile information // from a Zygo white light interferometer written // in native binary format by Zygo's MetroPro software. // // author: richard.t.jones at uconn.edu // version: November 12, 2011 public: MetroProMap(); MetroProMap(MetroProMap &map); ~MetroProMap(); TH2D *makeHist2D(std::string name, std::string title); int getRfactor() const; double getAverageHeight(int inmm=1) const; double getMaximumHeight(int inmm=1) const; double getMinimumHeight(int inmm=1) const; double getZygos2height(int inmm=1) const; double getZresolution(int inmm=1) const; double getPixelPitch(int inmm=1) const; int getWidth() const; int getHeight() const; int getXorig() const; int getYorig() const; int getIntensity(int ix, int iy) const; int getPhase(int ix, int iy) const; double getElevation(int ix, int iy, int inmm=1) const; friend std::istream &operator>>(std::istream &istr, MetroProMap &map); static double inches2mm; static double pixels2mm; protected: char *fHeader; int fMagicNumber; int fHeaderFormat; int fHeaderSize; int fIntens_ac_org_x; int fIntens_ac_org_y; int fIntens_ac_width; int fIntens_ac_height; int fIntens_ac_n_buckets; int fIntens_ac_range; int fIntens_ac_n_bytes; int fPhase_cn_org_x; int fPhase_cn_org_y; int fPhase_cn_width; int fPhase_cn_height; int fPhase_cn_n_bytes; float fPhase_intf_scale_factor; float fPhase_wavelength_in; float fPhase_obliquity_factor; float fPhase_pixel_pitch; int fPhase_phase_res; short int *fIntensData; int *fPhaseData; }; inline int MetroProMap::getWidth() const { return fIntens_ac_width; } inline int MetroProMap::getHeight() const { return fIntens_ac_height; } inline int MetroProMap::getXorig() const { return fIntens_ac_org_x; } inline int MetroProMap::getYorig() const { return fIntens_ac_org_y; } inline double MetroProMap::getPixelPitch(int inmm) const { return fPhase_pixel_pitch*((inmm==1)? 1000 : 1000/inches2mm); } inline double MetroProMap::getZresolution(int inmm) const { return getZygos2height(); }