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