[3160] | 1 | #ifndef BRSOURCE_H
|
---|
| 2 | #define BRSOURCE_H
|
---|
| 3 |
|
---|
| 4 | #include "machdefs.h"
|
---|
| 5 | #include "sopnamsp.h"
|
---|
| 6 | #include "tvector.h"
|
---|
| 7 | #include "ntuple.h"
|
---|
| 8 |
|
---|
| 9 | /*
|
---|
| 10 | Projet BAORadio / HSHS
|
---|
| 11 | Programme de simulation pour reconstruction de lobe radio.
|
---|
| 12 | Reconstruction de lobe a partir de plusieurs cylindres
|
---|
| 13 |
|
---|
| 14 | R. Ansari - LAL Sep 2006
|
---|
| 15 |
|
---|
| 16 | */
|
---|
| 17 |
|
---|
| 18 | //--------------------------------
|
---|
| 19 | // Classe auxiliaire pour generer une liste de sources
|
---|
| 20 | class BRSourceGen {
|
---|
| 21 | public:
|
---|
| 22 | // Pour fabriquer une liste de ns=3*9*5=135 sources, repartis en 3 frequences (0.1,0.25,0.4)
|
---|
| 23 | // regulierement repartis en angle X : 9 angX en +/- pas de Pi/12
|
---|
| 24 | // angle Y : 5 angY en +/- pas de Pi/3000
|
---|
| 25 | BRSourceGen(); // fabrique un pattern fixe de 20 sources
|
---|
| 26 |
|
---|
| 27 | // Generation d'une liste de source aleatoirement reparties en freq,angX,angY
|
---|
| 28 | // @ lambda ~ 0.5 m et D = 50 m , limite de diffraction ~ pi/300
|
---|
[3165] | 29 | BRSourceGen(int ns, double maxangXrad=M_PI/3., double maxangYrad=M_PI/60.,
|
---|
[3160] | 30 | double minfreq=0.05, double minamp=0.3, double maxamp=1.5);
|
---|
| 31 |
|
---|
| 32 | // Generation de nsf sources pour chaque frequence f[k], reparties aleatoirement en angX,Y
|
---|
| 33 | BRSourceGen(vector<double> f, int nsf,
|
---|
| 34 | double maxangXrad=M_PI/3., double maxangYrad=M_PI/500.,
|
---|
| 35 | double minfreq=0.05, double minamp=0.3, double maxamp=1.5);
|
---|
| 36 |
|
---|
| 37 | // Pour relire les sources depuis un fichier
|
---|
| 38 | BRSourceGen(string ppfname);
|
---|
| 39 |
|
---|
| 40 | inline int NbSources() { return freq.Size(); }
|
---|
| 41 |
|
---|
| 42 | void WritePPF(string ppfname);
|
---|
| 43 | void ReadPPF(string ppfname);
|
---|
| 44 |
|
---|
| 45 | void Print(ostream& os);
|
---|
| 46 |
|
---|
| 47 | // Retourne la liste des sources sous forme de NTuple
|
---|
| 48 | // freq0= frequence de base qui s'ajoute aux freq[k]
|
---|
| 49 | NTuple Convert2Table(double freq0=0.);
|
---|
| 50 |
|
---|
[3192] | 51 | //private:
|
---|
[3160] | 52 | //-------- Variables / objets membres
|
---|
| 53 | Vector freq; // frequence des sources
|
---|
| 54 | Vector amp; // amplitude des sources
|
---|
| 55 | Vector angX; // direction des sources en radian, selon l'axe X=N-S : kx=sin(ang)
|
---|
| 56 | Vector angY; // direction des sources selon Y=E-O : ky=sin(angY)
|
---|
| 57 |
|
---|
| 58 | Vector phase; // Phase des sources (choisi aleatoirement pour le moment)
|
---|
| 59 | };
|
---|
| 60 |
|
---|
| 61 |
|
---|
| 62 |
|
---|
| 63 | #endif
|
---|