Ignore:
Timestamp:
Aug 2, 1999, 3:45:52 PM (26 years ago)
Author:
ansari
Message:

archtoi 2 aout 99

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Poubelle/archTOI.old/ssthandler.cc

    r315 r342  
    77// free parameters = period + phase
    88
    9 #define DIODE_UNUSED_1 3
    10 #define DIODE_UNUSED_2 7
    11 
    129#include <math.h>
    1310#include "ssthandler.h"
     11
     12// diodpermut[i] = channel de la diode i
     13int SSTHandler::diodpermut[46]=
     14 { 8,24,40, 9,25,41,10,26,42,11,
     15  27,43,16,32, 1,17,33, 2,18,34,
     16   3,19,35,12,28,44,13,29,45,14,
     17  30,46,15,31,47,20,36, 5,21,37,
     18   6,22,38, 7,23,39};
     19 // voies 0 et 4 non connectees, voie 1 en panne.
    1420
    1521SSTHandler::SSTHandler()
     
    2127  lastBlkNum = -1;
    2228 
    23   Has2Bars(false);
     29  //Has2Bars(false);
    2430  prcTodo=0;
     31  seuil=100;
     32 
    2533}
    2634
     
    3644   
    3745  prcTodo    = x.prcTodo;
    38   has2bars   = x.has2bars;
    39   elecOffset = x.elecOffset;
     46 // has2bars   = x.has2bars;
     47 // elecOffset = x.elecOffset;
    4048  lastBlkNum = x.lastBlkNum;
     49  seuil      = x.seuil;
    4150}
    4251
     
    5362   
    5463  prcTodo    = x.prcTodo;
    55   has2bars   = x.has2bars;
    56   elecOffset = x.elecOffset;
     64 // has2bars   = x.has2bars;
     65 // elecOffset = x.elecOffset;
    5766  lastBlkNum = x.lastBlkNum;
     67  seuil      = x.seuil;
    5868 
    5969  return *this;
     
    7484}
    7585
     86bool SSTHandler::has2bars = false;
     87int  SSTHandler::elecOffset = 1;
     88
    7689void SSTHandler::Has2Bars(bool has, int eo)
    7790{
     
    89102    RemoveOffset();
    90103  }
    91  
     104  if (prcTodo & findStars) {
     105    FindStars();
     106  }
    92107}
    93108
     
    101116  // numero de la diode (0-47) = j*8+l;
    102117  // indice dans le bloc sst du mot de 32 bits (0-17) = j*3+k;
    103   // indice dans mot de 32 bits du premier bit utile = 28-4*l;
     118  // indice dans mot de 32 bits du premier bit utile = 4*l;
    104119   
    105120  for (j=0; j<48; j++) diod[j] = 0;
     
    108123    for (k=0; k<3; k++)
    109124      for (l=0; l<8; l++) {
    110         long word = blk->sst[i][j*3+k];
    111         word = (word >> (28-4*l)) & 0xF;
    112         //printf("diode %d mot %d valeur %d\n", j*8+l, k, word);
     125        int4 word = blk->sst[i][j*3+k];
     126        word = (word >> (4*l)) & 0xF;
     127        // printf("diode %d mot %d valeur %d\n", j*8+l, k, word);
    113128        diod[j*8+l] = (diod[j*8+l] << 4) + word;
    114129      }
     130
     131  //for (j=0; j<48; j++) if (diod[j]>2047) diod[j] -= 4096;
     132  for (j=0; j<48; j++)  diod[j] -= 2048;
     133 
    115134}
    116135
     
    124143 
    125144  for (int j=0; j<nb_per_block*2; j++) {
    126     // suppression des positions non utilisees. 3 et 7 ?
    127     for (int i=0; i<DIODE_UNUSED_1; i++)
    128       diode(j+j0,i) = diodeRaw[j][i];
    129     for (int i=DIODE_UNUSED_1; i<46; i++)
    130       diode(j+j0,i) = diodeRaw[j][ i<DIODE_UNUSED_2-1 ? i+1 : i+2 ];
    131  
     145    // permutation des diodes
     146    for (int i=0; i<46; i++)
     147      diode(j+j0,i) = diodeRaw[j][diodpermut[i]];
     148 
     149    /*
    132150    // calcul d'un fond sur la rangee. Moyenne clippee.
    133151    float m = 0; float sig = 1.e10;
     
    147165    for (int i=0; i<46; i++)
    148166      diode(j+j0,i) -= m;
     167    */
    149168  }
    150169}
     
    164183}
    165184
    166 
     185int SSTHandler::getStarZ(int imesure, int istar) // for last block
     186{
     187  int j0 = starHistLength-(nb_per_block*2);
     188  if (imesure+j0<0 || imesure>=nb_per_block*2) return -99999;
     189  if (istar < 0 || istar >= stars[imesure+j0].size()) return -99999;
     190  return stars[imesure+j0][istar].z;
     191}
     192
     193int SSTHandler::getStarF(int imesure, int istar) // for last block
     194{
     195  int j0 = starHistLength-(nb_per_block*2);
     196  if (imesure+j0<0 || imesure>=nb_per_block*2) return -99999;
     197  if (istar < 0 || istar >= stars[imesure+j0].size()) return -99999;
     198  return stars[imesure+j0][istar].m;
     199}
     200
     201
     202void SSTHandler::FindStars()  // sur les 72 derniers echantillons dans diode.
     203{
     204  int js0 = starHistLength-(nb_per_block*2);
     205  int jd0 = diodeHistLength-(nb_per_block*2);
     206  // Decalage vers la gauche de la taille d'un bloc
     207  for (int i=0; i<js0; i++) {
     208    stars[i] = stars[i+(nb_per_block*2)];
     209  }
     210 
     211  // Recherche d'etoiles
     212  for (int i=0; i<(nb_per_block*2); i++) {
     213    stars[js0+i].clear();
     214    for (int idiode=0; idiode<46; idiode++) {
     215      if (diode(jd0+i,idiode) < -seuil) {
     216        if (has2bars) {
     217          for (int j=-2; j>=-5; j--) {
     218            if (diode(jd0+i+j,(idiode+elecOffset)%46) < -seuil) {
     219              star s;
     220              s.z = idiode;
     221              s.m = -diode(jd0+i,idiode);
     222              s.t = i; // $CHECK$ need absolute time...
     223              stars[js0+i].push_back(s);
     224              break;
     225            } else if (idiode<45 && diode(jd0+i+j,(idiode+1+elecOffset)%46) > seuil) {
     226              star s;
     227              s.z = idiode+.5;
     228              s.m = -diode(jd0+i,idiode);
     229              s.t = i; // $CHECK$ need absolute time...
     230              stars[js0+i].push_back(s);
     231              break;
     232            }
     233          }
     234        } else {
     235          if (diode(jd0+i,idiode) > diode(jd0+i-1,idiode)) {
     236            star s;
     237            s.z = idiode;
     238            s.m = -diode(jd0+i-1,idiode);
     239            s.t = i; // $CHECK$ need absolute time...
     240            stars[js0+i].push_back(s);
     241          }
     242        }
     243      }
     244    }
     245  }
     246
     247
     248}
Note: See TracChangeset for help on using the changeset viewer.