source: Sophya/trunk/Cosmo/RadioBeam/multicyl.h@ 3164

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

debug divers ds RadioBeam - Reza 30/01/2007

File size: 3.8 KB
RevLine 
[3160]1#ifndef MULTICYL_H
2#define MULTICYL_H
3
4#include "machdefs.h"
5#include "sopnamsp.h"
6#include "mbeamcyl.h"
7
8/*
9 Projet BAORadio / HSHS
10 Programme de simulation pour reconstruction de lobe radio.
11 Reconstruction de lobe a partir de plusieurs cylindres
12
13 R. Ansari - LAL Jan 2007
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*/
19
20
21//-----------------------------------------------------------------------
22//--- Classe de reconstruction de plan source correspondant a un cylindre
23class MultiCylinders {
24public :
25 // nr = nb de recepteurs
26 // ns = nb d'echantillons en temps de chaque paquet
[3163]27 // nr = 256 -> resol_ang ~ pi/256 = 0.01 rad ~ 40'
28 // longueur @ f=2 ~ 64 (256*lambda/2 = 256*0.25)
[3160]29 MultiCylinders(int nr=256, int ns=1024);
30 ~MultiCylinders();
31
32 // Niveau de print de debug
33 inline void SetPrintLevel(int prl=0) { PrtLev=prl; }
34
35 // Ajout d'un cylindre, en position posY
36 inline int AddCylinder(double posy)
37 { mCyl.push_back( new MultiBeamCyl(NR, NS, posy) ); return mCyl.size(); }
38
39 MultiBeamCyl & GetCylinder(int i);
40
41 // Specification de la frequence de base f0 et espacement des recepteurs
42 inline void SetBaseFreqDa(double f0=2., double a=0.25)
43 { freq0 = f0; Da = a; }
44
45 // frequences reduites (entre 0 ... 0.5) , angle en radian, amp ~ 1
46 void SetSources(BRSourceGen* brs, bool ad=true);
47 inline void SetSources(BRSourceGen& brs)
48 { SetSources(&brs, false); }
49
50 // Definition du sigma du bruit gaussien sur les echantillons
51 inline void SetNoiseSigma(double sig=0.) { signoise = sig; }
52 // Definition du sigma du jitter d'horloge (typ 0.01)
53 inline void SetTimeJitter(double tjit=0.) { timejitter = tjit; }
54 // Definition du sigma des offsets d'horloge entre recepteurs (typ 0.02)
55 inline void SetTimeOffsetSigma(double tsig=0.) { toffsig = tsig; }
56
57 // Definition du gain et sigma de fluctuations de gain
58 // nzerogain: nb de recepteurs (choisis au hasard) avec gain mis a zero
59 inline void SetGains(double g=1., double sigg=0., int nzerogain=0)
60 { gain=g; siggain=sigg; ngainzero = nzerogain; }
61
62
63 // Fait la configuration des cylindres, et reconstruit le plan source
64 // pour chaque cylindre
65 void ReconstructCylinderPlaneS(bool fgzerocentre=true);
66
67 // Reconstruction de la boite 3D des sources
68 // - halfny : nb de bin en angY = 2*halfny+1
[3163]69 // - stepangy : pas en angle Y (radian)
70 // NOTE: Cette methode appelle ReconstructCylinderPlaneS(true);
71 // La resolution doit etre <= resol en angX --> ~ 1 deg ~ pi/
72 // @f = 2 , lambda = 0.5 ===> posY <~ lambda/(2 sin resol)
73 // ===> posY < ~ 20
74 void ReconstructSourceBox(int halfny=10, double stepangy=M_PI/300);
[3160]75
76
77 // Pour recuperer une tranche reconstruite angX, angY
78 // avec la moyenne des modules entre kfmin <= k (selon z) <= kfmax
79 TMatrix< r_4 > getRecXYSlice(int kfmin, int kfmax);
80
81 // Acces a la boite 3D de sources reconstruite
82 inline TArray< complex<r_4> > & getRecSrcBox() { return cmplx_srcbox; }
83
84 // Configure chaque cylindre a partir des parametres de la classe
85 // est appele automatiquement par ReconstructCylinderPlaneS
86 void ConfigureCylinders();
87
88 //-------------- Variables membres ------------
89 int NR, NS; // nb recepteurs, nb d'echantillons ds chaque paquet
90
91 int PrtLev; // Niveau de print de debug
92
93 double Da; // distance entre recepteurs
94 double freq0; // frequence de base (freqvrai=f+freq0)
95
96 double timejitter; // le sigma du jitter en temps des coups d'horloge
97 double toffsig; // sigma des offsets en temps
98
99 BRSourceGen* src; // Les sources
100 bool adfg; // if true, delete src
101
102 double signoise; // sigma du bruit additif (bruit ampli ... )
103 double gain, siggain;
104 int ngainzero;
105
106 vector<MultiBeamCyl *> mCyl; // Les differents cylindres
107
108 TArray< complex<r_4> > cmplx_srcbox; // boite3D des sources (angX,Y,freq) reconstruit
109 };
110
111
112#endif
Note: See TracBrowser for help on using the repository browser.