/* ------------------------ Projet BAORadio -------------------- Calcul de l'effet de lobe sur Carte2D (angleX,angleY) et cube 3D (angleX,angleY, frquences) R. Ansari , C. Magneville - Juin 2010 --------------------------------------------------------------- */ #ifndef BEAMH_SEEN #define BEAMH_SEEN #include "machdefs.h" // SOPHYA .h #include "sopnamsp.h" // SOPHYA .h #include #include #include #include #include "tarray.h" #include "vector3d.h" #include "mdish.h" #ifndef TF #define TF r_4 #endif class BeamEffect { public: // Definition de l'objet avec la reponse en frequence de l'instrument BeamEffect(Four2DResponse& resp, bool preservefreq0=true); // Applique l'effet d'un lobe fixe (frequency independent) au cube 3D (2 angles, frequence) void ApplyLobe(TArray< TF >& a, double dx, double dy, double freq); // Applique l'effet de lobe au cube 3D (2 angles, frequence), pour chaque plan de frequence successivement // En faisant varier la reponse de lobe avec la frequence void ApplyLobe3D(TArray< TF >& a, double dx, double dy, double f0, double df); // Corrige de l'effet de l'effet de lobe, pour chaque plan de frequence, pour tout ramener au lobe defini par "rep" void Correct2RefLobe(Four2DResponse& rep, TArray< TF >& a, double dx, double dy, double f0, double df, double maxratio=10.); // Applique l'effet de lobe "rep" dans le plan de Fourier pour une frequence (longueur d'onde) fixee void ApplyLobeK2D(Four2DResponse& rep, TArray< complex >& f2d, double dkx, double dky); // Re-echntillonnage du cube 3D en appliquant les facteurs xfac,yfac,zfac selon chaque direction // fac = 2 ---> on double le nombre d'echantillon , fac=0.5 : un echantillon sur deux static TArray< TF > ReSample(TArray< TF >& a, double xfac, double yfac, double zfac); // On ajoute du bruit gaussien au cube 3D - espace des positions static void AddNoise(TArray< TF >& a, double pixsignoise, bool fgcmsig=true); Four2DResponse& fresp_; bool preservefreq0_; }; #endif