Changeset 1443 in Sophya for trunk/ArchTOIPipe/ProcWSophya


Ignore:
Timestamp:
Mar 15, 2001, 4:46:21 PM (25 years ago)
Author:
ansari
Message:

debug de Deglitcher, amelioration FITSTOIWriter - Reza 15/3/2001

Location:
trunk/ArchTOIPipe/ProcWSophya
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ArchTOIPipe/ProcWSophya/rztoi.cc

    r1442 r1443  
    212212    cout << " ... Processing remaining Samples - SN="
    213213         << snlast << " ->" << sne << endl;
    214     for(ii=snlast; ii<sne; ii++) {
     214    for(ii=snlast; ii<=sne; ii++) {
    215215      val = getData(0, ii);
    216216      putData(0, ii, val*_fact);
  • trunk/ArchTOIPipe/ProcWSophya/simtoipr.cc

    r1442 r1443  
    1717  maxpoints = maxnpt;
    1818  totnscount = glnscount = glcount = 0;
     19  deglitchdone = false;
    1920}
    2021
    2122SimpleDeglitcher::~SimpleDeglitcher()
    2223{
     24}
     25
     26void SimpleDeglitcher::PrintStatus(ostream & os)
     27{
     28  os << "\n ------------------------------------------------------ \n"
     29     << " SimpleDeglitcher::PrintStatus() - WindowSize=" << WSize()
     30     << "  NbSigmas=" << NbSigmas() << " MaxPoints=" << MaxPoints() << endl;
     31  TOIProcessor::PrintStatus(os);
     32  if (deglitchdone) os << " Deglitching performed " << endl;
     33  else os << " NO deglitching done " << endl;
     34  double nst = (TotalSampleCount() > 0) ? TotalSampleCount() : 1.;
     35  os << " TotalSampleCount=" << TotalSampleCount() << " GlitchCount= "
     36     << GlitchCount() << " GlitchSampleCount=" << GlitchSampleCount()
     37     << "( " << (double)GlitchSampleCount()*100./nst << " % )" << endl;
     38  os << " ------------------------------------------------------ " << endl;
    2339}
    2440
     
    2945  declareOutput("mean");
    3046  declareOutput("sigma");
     47  declareOutput("incopie");
    3148  name = "SimpleDeglitcher";
    3249  //  upExtra = 1;   A quoi ca sert ?
     
    4259  bool fgmean = checkOutputTOIIndex(1);
    4360  bool fgsigma = checkOutputTOIIndex(2);
     61  bool fgincopie = checkOutputTOIIndex(3);
    4462 
    4563  if (!checkInputTOIIndex(0)) {
     
    4866    throw ParmError("SimpleDeglitcher::run() Input TOI (in) not connected!");
    4967  }
    50   if (!fgout && !fgmean && !fgsigma) {
     68  if (!fgout && !fgmean && !fgsigma &&!fgincopie) {
    5169    cerr << " SimpleDeglitcher::run() - No Output TOI connected! "
    5270         << endl;
     
    5977  }
    6078
    61   cout << " SimpleDeglitcher::run() SN=" << snb << " - " << sne << endl;
     79  cout << " SimpleDeglitcher::run() SNRange=" << snb << " - " << sne << endl;
    6280  try {
     81    Timer tm("SimpleDeglitcher::run()");
    6382    // Le debut
    6483    int wsz2 = wsize/2;
     
    6786    for(k=0; k<wsize; k++)
    6887      vin(k) = getData(0, k+snb);
    69     double s = vin.Sum()/wsize;
     88    double s = vin.Sum();
    7089    double mean = s/wsize;
    7190    double s2 = vin.SumX2();
     
    7594    bool fgglitch = false;
    7695    double valcur,valsub,valadd;
    77     for(k=0;k<sne-snb;k++) {
     96    for(k=0;k<=sne-snb;k++) {
    7897      totnscount++;
    79       if (k%10000 == 0) cout << " DBG: K=" << k << endl;
     98//       if (k%10000 == 0) cout << " DBG: K=" << k << endl;
    8099      // Calcul mean-sigma
    81100      if ((k>wsz2) && (k<sne-snb-wsz2)) {
    82101        valsub = vin((k+wsz2)%wsize);
    83         vin((k+wsz2)%wsize) = valadd = getData(0, k+snb);
     102        vin((k+wsz2)%wsize) = valadd = getData(0, k+wsz2+snb);
    84103        s += (valadd-valsub);
    85         s2 += (valadd*valadd-valsub-valsub);
     104        s2 += (valadd*valadd-valsub*valsub);
    86105        mean = s/wsize;
    87106        sigma = sqrt(s2/wsize-mean*mean);
     
    94113        putData(2, k+snb, sigma, 0);
    95114
     115      valcur = vin(k%wsize);
     116      if (fgincopie)
     117        putData(3, k+snb, valcur, 0);
     118       
    96119      if (!fgout)   continue;  // Pas de sortie out (deglitche)
    97120
    98       valcur = vin(k%wsize);
     121     
     122//             if (k<100) {
     123//              cout << "DBG-A-Deglitch[" << k << "] mean="
     124//                   << mean << " sigma=" << sigma << " valcur="
     125//                   << valcur << " Kgl=" << kgl ;
     126//              if (fgglitch) cout << " In Glitch" ;
     127//              cout << endl;
     128//            }
    99129
    100130      if (valcur < mean+nsig*sigma) {  // inferieur au seuil
     
    139169      }
    140170
    141       if (k%5000 == 0) cout << " ---DBG2: K=" << k << " glcount="
    142                             << glcount << " LastPut= " << lastput << endl;
    143     }  // Boucle sur les num-sample
    144     cout << " La fin lastput=" << lastput << " SNE=" << sne;
    145     for(k=lastput-snb; k<sne-snb; k++)
    146       putData(0, k+snb, vin(k%wsize), 0);
    147     cout << " DBG3- OUT of try bloc ! " << endl;
    148      
     171//           if (k%5000 == 0) cout << " ---DBG2: K=" << k << " glcount="
     172//                              << glcount << " LastPut= " << lastput << endl;
     173    }  // Fin de Boucle sur les num-sample
     174
     175    //DBG    cout << " La fin lastput=" << lastput << " SNE=" << sne;
     176    //DBG    for(k=lastput-snb+1; k<sne-snb; k++)
     177    //DBG      putData(0, k+snb, vin(k%wsize), 0);
     178    //    cout << " DBG3- OUT of try bloc ! " << endl;
     179    cout << " SimpleDeglitcher::run() - End of processing "
     180    << " TotalSampleCount=" << TotalSampleCount()
     181    <<  " GlitchCount= " << GlitchCount() << endl;
     182    if (fgout) deglitchdone = true;
    149183  }  // Bloc try
    150184  catch (PException & exc) {
     
    174208}
    175209
     210void SimpleFilter::PrintStatus(ostream & os)
     211{
     212  os << "\n ------------------------------------------------------ \n"
     213     << " SimpleFilter::PrintStatus() - WindowSize=" << WSize()
     214     << " FilterKind= " << Type() << endl;
     215  TOIProcessor::PrintStatus(os);
     216  os << " Coeff= " ;
     217  for(int k=0; k<wsize; k++) os << coef[k] << " " ;
     218  os << endl;
     219  os << " TotalSampleCount=" << TotalSampleCount() << endl;
     220  os << " ------------------------------------------------------ " << endl;
     221}
     222
    176223void SimpleFilter::init() {
    177224  cout << "SimpleFilter::init" << endl;
    178225  declareInput("in");
    179226  declareOutput("out");
     227  declareOutput("incopie");
    180228  name = "SimpleFilter";
    181229  //  upExtra = 1;
     
    187235  int sne = getMaxIn();
    188236
    189   cout << " SimpleFilter::run(): snb=" << snb << " sne=" << sne << endl;
    190 
    191237  bool fgout = checkOutputTOIIndex(0);
     238  bool fgincopie = checkOutputTOIIndex(1);
    192239
    193240  if (!checkInputTOIIndex(0)) {
     
    201248    throw ParmError("SimpleFilter::run() No output TOI connected!");
    202249  }
     250
     251  cout << " SimpleFilter::run() SNRange=" << snb << " - " << sne << endl;
    203252 
    204253
    205254  try {
     255    Timer tm("SimpleFilter::run()");
    206256    // Le debut
    207257    int wsz2 = wsize/2;
     
    212262    double mean = vin.Sum()/wsize;
    213263    for(k=0; k<wsize/2; k++) vin(k) = mean;
    214     for(k=0;k<sne-snb;k++) {
     264    for(k=0;k<=sne-snb;k++) {
    215265      totnscount++;
    216266      // Calcul mean-sigma
     
    224274      }
    225275      putData(0,k+snb,sortie,0);
     276      if (fgincopie) putData(1,k+snb,vin(k%wsize),0);
    226277    }  // Boucle sur les num-sample
     278    cout << " SimpleFilter::run() - End of processing " << endl;
    227279  }  // Bloc try
    228280
  • trunk/ArchTOIPipe/ProcWSophya/simtoipr.h

    r1442 r1443  
    2727  inline int    GlitchSampleCount() const { return glnscount; }
    2828 
     29  virtual void  PrintStatus(ostream & os) ; // const plus tard
     30 
    2931protected:
    3032  int totnscount;   // Nombre total d'echantillon processe
    3133  int glnscount;    // Nombre total de glitch
    3234  int glcount;      // Nombre de glitch detecte
     35  bool deglitchdone;  // Deglitch effectue
    3336
    3437  int wsize;        // Taille de fenetre de travail
     
    6265  inline int    TotalSampleCount() const { return totnscount; }
    6366
     67  virtual void  PrintStatus(ostream & os) ; // const plus tard
     68
    6469  virtual void  init(); 
    6570  virtual void  run();
Note: See TracChangeset for help on using the changeset viewer.