source: Sophya/trunk/Cosmo/RadioBeam/mbeamcyl.h@ 3160

Last change on this file since 3160 was 3160, checked in by ansari, 19 years ago

Creation du module Cosmo/RadioBeam de simulation pour reconstruction de lobe par FFT et correlation (manip BAORadio/HSHS) - Reza 29/01/2007

File size: 4.3 KB
Line 
1#ifndef MBEAMCYL_H
2#define MBEAMCYL_H
3
4#include "machdefs.h"
5#include "sopnamsp.h"
6#include "tvector.h"
7#include "brsrc.h"
8
9/*
10 Classe de simulation simple pour estimer les effets de bruit
11 (ampli, ...) et decalages, bruit de phase d'horloge pour la
12 reconstruction de la position des sources (manip BAO-radio)
13 R. Ansari - LAL Sept 2006
14
15 Note : On travaille ds un systeme sans dimension
16 unite de temps = 1 = temps d'echantillonnage (f_echant = 1)
17 vitesse de propagation (c) = 1
18 Donc, lambda=1 pour f = 1
19
20 On specifie les frequences des sources (BRSourceGen) en frequence reduite
21 dans la premiere zone de Nyquist (f = 0 ... 0.5)
22 Neanmoins, on a besoin de la frequence vrai des sources --> methode SetBaseFreqDa
23*/
24
25
26//-----------------------------------------------------------------------
27//--- Classe de reconstruction de plan source correspondant a un cylindre
28class MultiBeamCyl {
29public :
30 // nr = nb de recepteurs (antennes) le long du cylindre
31 // ns = nb d'echantillons en temps de chaque paquet
32 // posy = position spatiale en Y pour chaque cylindre (unite ou lambda=1 pour f=1)
33 MultiBeamCyl(int nr=1024, int ns=4096, double posy=0.);
34 ~MultiBeamCyl();
35
36 // Niveau de print de debug
37 inline void SetPrintLevel(int prl=0) { PrtLev=prl; }
38
39 // Reponse angulaire pour un recepteur (cylindre+antenne)
40 // Modifier cette fonction pour tenir compte de la response angulaire
41 inline double AngResponse(double angx, double angy) { return 1.; }
42
43 inline double getCylinderYPos() { return posY; }
44 // Specification de la frequence de base f0 et espacement des recepteurs
45 // freq_vrai = freq_BRSourceGen + f0
46 // pour f_vrai = 2, lambda = 0.5 et lambda/2 = 0.25
47 inline void SetBaseFreqDa(double f0=2., double a=0.25)
48 { freq0 = f0; Da = a; }
49
50 // frequences reduites (entre 0 ... 0.5) , angle en radian, amp ~ 1
51 void SetSources(BRSourceGen* brs, bool ad=true);
52 inline void SetSources(BRSourceGen& brs)
53 { SetSources(&brs, false); }
54
55 // Definition du sigma du bruit gaussien sur les echantillons
56 inline void SetNoiseSigma(double sig=0.) { signoise = sig; }
57 // Definition du sigma du jitter d'horloge (typ 0.01)
58 inline void SetTimeJitter(double tjit=0.) { timejitter = tjit; }
59 // Definition du sigma des offsets d'horloge entre recepteurs (typ 0.02)
60 inline void SetTimeOffsetSigma(double tsig=0.) { toffsig = tsig; }
61
62 // Definition du gain et sigma de fluctuations de gain
63 // nzerogain: nb de recepteurs (choisis au hasard) avec gain mis a zero
64 void SetGains(double g=1., double sigg=0., int nzerogain=0);
65
66 // Calcule les vecteurs de temps (0 1 2 ...ns-1)
67 void ComputeTimeVectors();
68 // Recalcule un nouveau vecteur temps - avec jitter
69 void NewTJitVector(int num=-1);
70
71 // Calcul du vecteur signal (s(t)) - et les vecteurs TF
72 // pour le recepteur numero numdet
73 // si fgsignojit==true, on calcule aussi pour Temps_Sans_Jitter
74 int ComputeSignalVector(int numdet=0, bool fgsignojit=true);
75
76 // Calcul de la matrice reconstruction du plan source (freq vs angle)
77 // fgzerocentre -> angle zero au mileiu de la matrice
78 void ReconstructSourcePlane(bool fgzerocentre=true);
79
80 inline TMatrix< complex<r_4> > & getRecSrcPlane() { return cmplx_srcplane; }
81
82 //-------------- Variables membres ------------
83 int NR, NS; // nb recepteurs, nb d'echantillons ds chaque paquet
84 double posY; // Position selon Y (E-O) de la ligne de recepteurs
85
86 int PrtLev; // Niveau de print de debug
87
88 double Da; // distance entre recepteurs
89 double freq0; // frequence de base (freqvrai=f+freq0)
90
91 Vector texact; // les temps exact
92 Vector tjitt; // temps avec jitter
93 Vector toffset; // Offset en temps entre recepteurs
94 double timejitter; // le sigma du jitter en temps des coups d'horloge
95 double toffsig; // sigma des offsets en temps
96
97 BRSourceGen* src; // Les sources
98 bool adfg; // if true, delete src
99
100 double signoise; // sigma du bruit additif (bruit ampli ... )
101
102 TVector<r_4> gain; // Gain de chaque recepteur
103
104 TVector<r_4> signal; // signal sans jitter en temps
105 TVector<r_4> sigjitt; // signal avec jitter en temps
106
107 TVector< complex<r_4> > f_sig, f_sigjit; // TF des vecteurs signal , sigjitt
108
109 TMatrix< complex<r_4> > cmplx_srcplane; // composantes complexe du plan-source reconstruit
110 // TMatrix<r_4> rec_srcplane; // Matrice plan source colonnes->angX, lignes->freq
111 };
112
113
114#endif
Note: See TracBrowser for help on using the repository browser.