| [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
 | 
|---|