#include #include #include using namespace std; #include "Pixel.h" //static members initializations const double Pixel::fgk_DetSizeX=5; // expressed in cm const double Pixel::fgk_DetSizeY=5; // expressed in cm const double Pixel::fgk_PixelSizeX=0.05; // expressed in cm const double Pixel::fgk_PixelSizeY=0.05; // expressed in cm ifstream Pixel::f_calibFile; Pixel::Pixel():f_index(-1),f_x(0),f_y(0),f_dx(0),f_dy(0){ f_Par.ax=0.; f_Par.bx=0.; f_Par.ay=0.; f_Par.by=0.; } Pixel::Pixel(int index){ //parametric constructor Set(index); } void Pixel::Set(int index){ //Global Setter CalibratePixel(index); f_index=index; f_x=f_Par.ax*(-fgk_DetSizeX/2+(index%100+0.5)*fgk_PixelSizeX)+f_Par.bx; f_y=f_Par.ay*( fgk_DetSizeY/2-(index/100+0.5)*fgk_PixelSizeY)+f_Par.by; f_dx=fgk_PixelSizeX/sqrt(12); f_dy=fgk_PixelSizeY/sqrt(12); } void Pixel::OpenCalibFile(){ //static method to open calibration file f_calibFile.open("calibPos.dat"); } void Pixel::CalibratePixel(int index) const{ //method to fetch calibration parameters for a given channel f_calibFile.seekg((index)*sizeof(f_Par)); f_calibFile.read((char*)&f_Par,sizeof(f_Par)); } void Pixel::CloseCalibFile(){ //static method to close calibration file f_calibFile.close(); }