[3489] | 1 | char * names[10] = {"m","teta0","teta","wre","wim","wmod2","wx","wy","lwx","lwy"};
|
---|
| 2 | NTuple lobes(10, names);
|
---|
| 3 | int N = 7;
|
---|
| 4 | int NO2 = N/2;
|
---|
| 5 | int NTET=1000;
|
---|
| 6 | // double dtet0 = Lambda/(NO2*DELX);
|
---|
| 7 |
|
---|
| 8 | /* #define LobeW1D LobeSquare
|
---|
| 9 | #define LobeW1D LobeGauss
|
---|
| 10 | double dtet = M_PI/30./NTET;
|
---|
| 11 | double dtet0 = M_PI/60./NO2;
|
---|
| 12 | */
|
---|
| 13 |
|
---|
| 14 | /* */
|
---|
| 15 | #define LobeW1D LobeDipoleDemiLambda
|
---|
| 16 | double dtet = M_PI/2./NTET;
|
---|
| 17 | double dtet0 = M_PI/3./NO2;
|
---|
| 18 | DELX = Lambda/2.;
|
---|
| 19 | /* */
|
---|
| 20 |
|
---|
| 21 | cout << " DTeta= " << dtet << " DTeta0= " << dtet0 << endl;
|
---|
| 22 | cout << " LobeW1D(0.) = " << LobeW1D(0.) << endl;
|
---|
| 23 | Timer tm("LOBES");
|
---|
| 24 |
|
---|
| 25 | Vector lobe1d(2*NTET+1),vteta(2*NTET+1);
|
---|
| 26 | TVector< complex<r_8> > lobeS(2*NTET+1);
|
---|
| 27 |
|
---|
| 28 | for(int i=-NTET; i<=NTET; i++) {
|
---|
| 29 | double teta = i*dtet;
|
---|
| 30 | lobe1d(i+NTET) = LobeW1D(teta);
|
---|
| 31 | vteta(i+NTET) = teta;
|
---|
| 32 | complex<r_8> ws(0., 0.);
|
---|
| 33 | for(int n=-NO2; n<=NO2; n++) {
|
---|
| 34 | double phase = 2.*M_PI*DELX/Lambda*n*teta;
|
---|
| 35 | ws += complex< r_8 >( cos(phase), sin(phase) )*LobeW1D(teta);
|
---|
| 36 | }
|
---|
| 37 | lobeS(i+NTET) = ws;
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | KeepObj(lobe1d);
|
---|
| 41 | KeepObj(vteta);
|
---|
| 42 | KeepObj(lobeS);
|
---|
| 43 |
|
---|
| 44 |
|
---|
| 45 | double xnt[20];
|
---|
| 46 | for(int m=-NO2; m<=NO2; m++) {
|
---|
| 47 | if (m%10 == 0) tm.Split();
|
---|
| 48 | xnt[0] = m; xnt[1] = m*dtet0;
|
---|
| 49 | for(int i=-NTET; i<=NTET; i++) {
|
---|
| 50 | double teta = i*dtet;
|
---|
| 51 | xnt[2] = teta;
|
---|
| 52 | complex<r_8> ws(0., 0.);
|
---|
| 53 | complex<r_8> wsck(0., 0.);
|
---|
| 54 | for(int n=-NO2; n<=NO2; n++) {
|
---|
| 55 | double phase = 2.*M_PI*DELX/Lambda*n*(teta-m*dtet0);
|
---|
| 56 | ws += complex< r_8 >( cos(phase), sin(phase) )*LobeW1D(teta);
|
---|
| 57 | }
|
---|
| 58 | xnt[3] = ws.real();
|
---|
| 59 | xnt[4] = ws.imag();
|
---|
| 60 | // xnt[5] = sqrt(ws.real()*ws.real()+ws.imag()*ws.imag());
|
---|
| 61 | xnt[5] = ws.real()*ws.real()+ws.imag()*ws.imag();
|
---|
| 62 | xnt[6] = xnt[5]*cos(teta);
|
---|
| 63 | xnt[7] = xnt[5]*sin(teta);
|
---|
| 64 | if (xnt[5] > 1.e-9) {
|
---|
| 65 | xnt[8] = 10.*log10(xnt[5])*cos(teta);
|
---|
| 66 | xnt[9] = 10.*log10(xnt[5])*sin(teta);
|
---|
| 67 | }
|
---|
| 68 | else xnt[8] = xnt[9] = -90.;
|
---|
| 69 |
|
---|
| 70 | lobes.Fill(xnt);
|
---|
| 71 | }
|
---|
| 72 | }
|
---|
| 73 |
|
---|
| 74 | cout << lobes;
|
---|
| 75 | KeepObj(lobes);
|
---|