WAVEFUNC::WAVEFUNC( WAVEFUNC& other ) { iPosX = other.iPosX; iPosY = other.iPosY; detPosX = other.detPosX; detPosY = other.detPosY; strcpy(fileStart, other.fileStart); strcpy(fileout, other.fileout); strcpy(avgName, other.avgName); nx = other.nx; ny = other.ny; diffpat = float2D(nx,ny,"diffpat"); avgArray = float2D(nx,ny,"avgArray"); #if FLOAT_PRECISION == 1 wave = complex2Df(nx, ny, "wave"); fftPlanWaveForw = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, FFTW_ESTIMATE); fftPlanWaveInv = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, FFTW_ESTIMATE); #else wave = complex2D(nx, ny, "wave"); fftPlanWaveForw = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, fftMeasureFlag); fftPlanWaveInv = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, fftMeasureFlag); #endif }
WAVEFUNC::WAVEFUNC(int x, int y) : detPosX(0), detPosY(0), iPosX(0), iPosY(0), thickness(0.0), nx(0), ny(0) { char waveFile[256]; const char *waveFileBase = "mulswav"; nx = x; ny = y; diffpat = float2D(nx,ny,"diffpat"); avgArray = float2D(nx,ny,"avgArray"); #if FLOAT_PRECISION == 1 wave = complex2Df(nx, ny, "wave"); fftPlanWaveForw = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, FFTW_ESTIMATE); fftPlanWaveInv = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, FFTW_ESTIMATE); #else wave = complex2D(nx, ny, "wave"); fftPlanWaveForw = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, fftMeasureFlag); fftPlanWaveInv = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, fftMeasureFlag); #endif sprintf(waveFile,"%s.img",waveFileBase); strcpy(fileout,waveFile); sprintf(fileStart,"mulswav.img"); }
WAVEFUNC::WAVEFUNC(int x, int y, float_tt resX, float_tt resY) : detPosX(0), detPosY(0), iPosX(0), iPosY(0), thickness(0.0), nx(x), ny(y), resolutionX(resX), resolutionY(resY) { char waveFile[256]; const char *waveFileBase = "mulswav"; #if FLOAT_PRECISION == 1 diffpat = float2D(nx,ny,"diffpat"); avgArray = float2D(nx,ny,"avgArray"); #else diffpat = double2D(nx,ny,"diffpat"); avgArray = double2D(nx,ny,"avgArray"); #endif m_imageIO=ImageIOPtr(new CImageIO(nx, ny, thickness, resolutionX, resolutionY)); #if FLOAT_PRECISION == 1 wave = complex2Df(nx, ny, "wave"); fftPlanWaveForw = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, FFTW_ESTIMATE); fftPlanWaveInv = fftwf_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, FFTW_ESTIMATE); #else wave = complex2D(nx, ny, "wave"); fftPlanWaveForw = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_FORWARD, fftMeasureFlag); fftPlanWaveInv = fftw_plan_dft_2d(nx,ny,wave[0],wave[0],FFTW_BACKWARD, fftMeasureFlag); #endif sprintf(waveFile,"%s.img",waveFileBase); strcpy(fileout,waveFile); sprintf(fileStart,"mulswav.img"); }