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