| 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 | //private: | 
|---|
| 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 | 
|---|