[3489] | 1 | #define NP 10
|
---|
| 2 | #define ND 20
|
---|
| 3 |
|
---|
| 4 | #define DIAMETRE 5
|
---|
| 5 |
|
---|
| 6 | // Timer tm;
|
---|
| 7 |
|
---|
| 8 | Vector lesx(ND);
|
---|
| 9 |
|
---|
| 10 | /* int spos[NP] = {1,2,3,5,6,7,10,12,14,16};
|
---|
| 11 | for(int i=0; i<NP; i++) lesx(i) = -spos[NP-i-1];
|
---|
| 12 | for(int i=NP; i<2*NP; i++) lesx(i) = spos[i-NP];
|
---|
| 13 | */
|
---|
| 14 | int spos[ND] = {-15,-13,-12,-10,-7,-6,-5,-3,-2,-1,1,2,3,5,6,7,10,12,14,15};
|
---|
| 15 | for(int i=0; i<ND; i++) lesx(i) = spos[i];
|
---|
| 16 |
|
---|
| 17 |
|
---|
| 18 | Matrix pos(2,ND*ND);
|
---|
| 19 |
|
---|
| 20 | int k = 0;
|
---|
| 21 | for(int i=0; i<ND; i++) {
|
---|
| 22 | for(int j=0; j<ND; j++) {
|
---|
| 23 | pos(0,k) = lesx(i); pos(1,k) = lesx(j); k++;
|
---|
| 24 | }
|
---|
| 25 | }
|
---|
| 26 |
|
---|
| 27 |
|
---|
| 28 | Histo h(-0.5, 31.5, 32);
|
---|
| 29 |
|
---|
| 30 | for(int i=0; i<ND-1; i++)
|
---|
| 31 | for(int j=i+1; j<ND; j++)
|
---|
| 32 | h.Add(fabs(lesx(i)-lesx(j)),1.);
|
---|
| 33 |
|
---|
| 34 | KeepObj(h);
|
---|
| 35 | KeepObj(lesx);
|
---|
| 36 |
|
---|
| 37 |
|
---|
| 38 | Histo2D h2(-0.5, 31.5, 32, -0.5, 31.5, 32);
|
---|
| 39 | for(int i=0; i<ND*ND-1; i++)
|
---|
| 40 | for(int j=i+1; j<ND*ND; j++)
|
---|
| 41 | h2.Add(fabs(pos(0,i)-pos(0,j)),fabs(pos(1,i)-pos(1,j)), 1.);
|
---|
| 42 |
|
---|
| 43 | KeepObj(h2);
|
---|
| 44 |
|
---|
| 45 |
|
---|
| 46 | Histo2D h2f(-0.5, 31.5, 96, -0.5, 31.5, 96);
|
---|
| 47 | for(int i=0; i<ND*ND-1; i++)
|
---|
| 48 | for(int j=i+1; j<ND*ND; j++) {
|
---|
| 49 | FillVis(h2f, fabs(pos(0,i)-pos(0,j)),fabs(pos(1,i)-pos(1,j)));
|
---|
| 50 | }
|
---|
| 51 | KeepObj(h2f);
|
---|
| 52 |
|
---|
| 53 | cout << "h2f OK" << endl;
|
---|
| 54 |
|
---|
| 55 | //---------------------------------------------------------------------
|
---|
| 56 | //----- Disposition compacte d'antennes circulaires -------------------
|
---|
| 57 | //---------------------------------------------------------------------
|
---|
| 58 | {
|
---|
| 59 | double DIAM_FA = 5.;
|
---|
| 60 | double L_FA = 100.;
|
---|
| 61 | double DISTA_FA = DIAM_FA;
|
---|
| 62 |
|
---|
| 63 | int ND1_FA = L_FA/DISTA_FA;
|
---|
| 64 | int ND_FA = ND1_FA*ND1_FA;
|
---|
| 65 |
|
---|
| 66 | Matrix pos_fa(2,ND_FA);
|
---|
| 67 | int kk=0;
|
---|
| 68 | for(int i=0; i<ND1_FA; i++) {
|
---|
| 69 | for(int j=0; j<ND1_FA; j++) {
|
---|
| 70 | pos_fa(0, kk) = i*DISTA_FA; pos_fa(1, kk) = j*DISTA_FA; kk++;
|
---|
| 71 | }
|
---|
| 72 | }
|
---|
| 73 | KeepObj(pos_fa);
|
---|
| 74 | cout << "pos_fa OK" << endl;
|
---|
| 75 |
|
---|
| 76 | Histo2D h2_fa(0., 2*ND1_FA*DIAM_FA, 3*ND1_FA, 0., 2*ND1_FA*DIAM_FA, 3*ND1_FA);
|
---|
| 77 | Histo2D h2ns_fa(0., 2*ND1_FA*DIAM_FA, 4*ND1_FA, 0., 2*ND1_FA*DIAM_FA, 4*ND1_FA);
|
---|
| 78 |
|
---|
| 79 | for(int i=0; i<pos_fa.NCols()-1; i++)
|
---|
| 80 | for(int j=i+1; j<pos_fa.NCols(); j++) {
|
---|
| 81 | h2ns_fa.Add(fabs(pos_fa(0,i)-pos_fa(0,j)),fabs(pos_fa(1,i)-pos_fa(1,j)),1.);
|
---|
| 82 | FillVis(h2_fa, fabs(pos_fa(0,i)-pos_fa(0,j)),fabs(pos_fa(1,i)-pos_fa(1,j)), DIAM_FA);
|
---|
| 83 | }
|
---|
| 84 | KeepObj(h2_fa);
|
---|
| 85 | KeepObj(h2ns_fa);
|
---|
| 86 | cout << "h2_fa OK" << endl;
|
---|
| 87 |
|
---|
| 88 | }
|
---|
| 89 | //---------------------------------------------------------------------
|
---|
| 90 | //------------------ Disposition hexagonale ---------------------------
|
---|
| 91 | //---------------------------------------------------------------------
|
---|
| 92 | {
|
---|
| 93 | int nlayer = 4;
|
---|
| 94 | int nhex = 1;
|
---|
| 95 | for(int i=1; i<=nlayer; i++) {
|
---|
| 96 | nhex += i*6;
|
---|
| 97 | }
|
---|
| 98 | int ndet = nhex*7;
|
---|
| 99 | cout << " NLayer= " << nlayer << " NHex= " << nhex << " NDet= " << ndet << endl;
|
---|
| 100 |
|
---|
| 101 | Matrix posh(2,ndet);
|
---|
| 102 |
|
---|
| 103 | char * names[3] = {"xr", "yr", "sz"};
|
---|
| 104 | NTuple recp(3, names);
|
---|
| 105 | double xnt[5];
|
---|
| 106 | xnt[0] = xnt[1] = xnt[2] = xnt[3] = xnt[4] = 0.;
|
---|
| 107 |
|
---|
| 108 | int kk = 0;
|
---|
| 109 | for(int i=0; i<= nlayer; i++) {
|
---|
| 110 | double rlayer = i*4.5*DIAMETRE;
|
---|
| 111 | // if (i == 1) rlayer = i*4.*DIAMETRE;
|
---|
| 112 | Matrix ph = couche(i,rlayer) ;
|
---|
| 113 | cout << " DEBUG - I=" << i << " / NLayer= " << nlayer << " ph.NCols= " << ph.NCols() << endl;
|
---|
| 114 | for(int j=0; j<ph.NCols(); j++) {
|
---|
| 115 | Matrix hex = hexagon(ph(0,j), ph(1,j), DIAMETRE, ph(2,i));
|
---|
| 116 | for(int k=0; k<hex.NCols(); k++) {
|
---|
| 117 | xnt[0] = posh(0, kk) = hex(0, k);
|
---|
| 118 | xnt[1] = posh(1, kk) = hex(1, k);
|
---|
| 119 | recp.Fill(xnt);
|
---|
| 120 | kk++;
|
---|
| 121 | }
|
---|
| 122 | }
|
---|
| 123 | }
|
---|
| 124 |
|
---|
| 125 | KeepObj(posh);
|
---|
| 126 | KeepObj(recp);
|
---|
| 127 |
|
---|
| 128 | cout << "posh/recp OK" << endl;
|
---|
| 129 |
|
---|
| 130 | Histo2D h2hex(0., 40.*DIAMETRE, 120, 0., 40.*DIAMETRE, 120);
|
---|
| 131 | Histo2D h2nshex(0., 20.*DIAMETRE, 120, 0., 20.*DIAMETRE, 120);
|
---|
| 132 |
|
---|
| 133 | for(int i=0; i<posh.NCols()-1; i++)
|
---|
| 134 | for(int j=i+1; j<posh.NCols(); j++) {
|
---|
| 135 | h2nshex.Add(fabs(posh(0,i)-posh(0,j)),fabs(posh(1,i)-posh(1,j)), 1.);
|
---|
| 136 | FillVis(h2hex, fabs(posh(0,i)-posh(0,j)),fabs(posh(1,i)-posh(1,j)), DIAMETRE);
|
---|
| 137 | FillVis(h2hex, fabs(posh(0,i)-posh(0,j))*0.75,fabs(posh(1,i)-posh(1,j)), DIAMETRE);
|
---|
| 138 | FillVis(h2hex, fabs(posh(0,i)-posh(0,j)),fabs(posh(1,i)-posh(1,j))*0.75, DIAMETRE);
|
---|
| 139 | }
|
---|
| 140 | KeepObj(h2hex);
|
---|
| 141 | KeepObj(h2nshex);
|
---|
| 142 | cout << "h2hex OK" << endl;
|
---|
| 143 | }
|
---|
| 144 |
|
---|