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