source: Sophya/trunk/Cosmo/RadioBeam/multicyl.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: 3.6 KB
Line 
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
27 MultiCylinders(int nr=256, int ns=1024);
28 ~MultiCylinders();
29
30 // Niveau de print de debug
31 inline void SetPrintLevel(int prl=0) { PrtLev=prl; }
32
33 // Ajout d'un cylindre, en position posY
34 inline int AddCylinder(double posy)
35 { mCyl.push_back( new MultiBeamCyl(NR, NS, posy) ); return mCyl.size(); }
36
37 MultiBeamCyl & GetCylinder(int i);
38
39 // Specification de la frequence de base f0 et espacement des recepteurs
40 inline void SetBaseFreqDa(double f0=2., double a=0.25)
41 { freq0 = f0; Da = a; }
42
43 // frequences reduites (entre 0 ... 0.5) , angle en radian, amp ~ 1
44 void SetSources(BRSourceGen* brs, bool ad=true);
45 inline void SetSources(BRSourceGen& brs)
46 { SetSources(&brs, false); }
47
48 // Definition du sigma du bruit gaussien sur les echantillons
49 inline void SetNoiseSigma(double sig=0.) { signoise = sig; }
50 // Definition du sigma du jitter d'horloge (typ 0.01)
51 inline void SetTimeJitter(double tjit=0.) { timejitter = tjit; }
52 // Definition du sigma des offsets d'horloge entre recepteurs (typ 0.02)
53 inline void SetTimeOffsetSigma(double tsig=0.) { toffsig = tsig; }
54
55 // Definition du gain et sigma de fluctuations de gain
56 // nzerogain: nb de recepteurs (choisis au hasard) avec gain mis a zero
57 inline void SetGains(double g=1., double sigg=0., int nzerogain=0)
58 { gain=g; siggain=sigg; ngainzero = nzerogain; }
59
60
61 // Fait la configuration des cylindres, et reconstruit le plan source
62 // pour chaque cylindre
63 void ReconstructCylinderPlaneS(bool fgzerocentre=true);
64
65 // Reconstruction de la boite 3D des sources
66 // - halfny : nb de bin en angY = 2*halfny+1
67 // - stepangy : pas en angle Y (radian) 1 arcmin= 0.00029 rad (~Pi/11000)
68 // Cette methode appelle ReconstructCylinderPlaneS(true);
69 void ReconstructSourceBox(int halfny=15, double stepangy=M_PI/10000);
70
71
72 // Pour recuperer une tranche reconstruite angX, angY
73 // avec la moyenne des modules entre kfmin <= k (selon z) <= kfmax
74 TMatrix< r_4 > getRecXYSlice(int kfmin, int kfmax);
75
76 // Acces a la boite 3D de sources reconstruite
77 inline TArray< complex<r_4> > & getRecSrcBox() { return cmplx_srcbox; }
78
79 // Configure chaque cylindre a partir des parametres de la classe
80 // est appele automatiquement par ReconstructCylinderPlaneS
81 void ConfigureCylinders();
82
83 //-------------- Variables membres ------------
84 int NR, NS; // nb recepteurs, nb d'echantillons ds chaque paquet
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 double timejitter; // le sigma du jitter en temps des coups d'horloge
92 double toffsig; // sigma des offsets en temps
93
94 BRSourceGen* src; // Les sources
95 bool adfg; // if true, delete src
96
97 double signoise; // sigma du bruit additif (bruit ampli ... )
98 double gain, siggain;
99 int ngainzero;
100
101 vector<MultiBeamCyl *> mCyl; // Les differents cylindres
102
103 TArray< complex<r_4> > cmplx_srcbox; // boite3D des sources (angX,Y,freq) reconstruit
104 };
105
106
107#endif
Note: See TracBrowser for help on using the repository browser.