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
|
---|
29 | BRSourceGen(int ns, double maxangXrad=M_PI/3., double maxangYrad=M_PI/60.,
|
---|
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 |
|
---|
51 | //-------- Variables / objets membres
|
---|
52 | Vector freq; // frequence des sources
|
---|
53 | Vector amp; // amplitude des sources
|
---|
54 | Vector angX; // direction des sources en radian, selon l'axe X=N-S : kx=sin(ang)
|
---|
55 | Vector angY; // direction des sources selon Y=E-O : ky=sin(angY)
|
---|
56 |
|
---|
57 | Vector phase; // Phase des sources (choisi aleatoirement pour le moment)
|
---|
58 | };
|
---|
59 |
|
---|
60 |
|
---|
61 |
|
---|
62 | #endif
|
---|