Changeset 593


Ignore:
Timestamp:
Oct 28, 2011, 9:45:28 AM (13 years ago)
Author:
campagne
Message:

new ProcessONOFFMeanData (jec)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BAORadio/AmasNancay/trunk/analyse.cc

    r584 r593  
    204204};
    205205
    206 //JEC 22/9/11 Make ON-OFF analysis WO any calibration START
     206
    207207//------------
    208208//Process ON/OFF Raw data
     
    216216  virtual int processCmd() throw(string);
    217217};
    218 //JEC 22/9/11 Make ON-OFF analysis WO any calibration END
     218
     219//------------
     220//Process ON/OFF data treated with the mspec (specmfib) => no filtering at all: paquets & freq.
     221//------------
     222class ProcessONOFFMeanData : public ProcessBase {
     223
     224public:
     225  ProcessONOFFMeanData(){}
     226  virtual ~ProcessONOFFMeanData(){}
     227 
     228  virtual int processCmd() throw(string);
     229};
     230
    219231
    220232//------------
     
    279291  //Init process types
    280292  map<string,IProcess*> process;
    281   //JEC 22/9/11 Make ON-OFF analysis WO any calibration START
    282   process["rawOnOff"] = new ProcessONOFFRawData();
    283   //JEC 22/9/11 Make ON-OFF analysis WO any calibration END
     293  process["meanONOFF"] = new ProcessONOFFMeanData(); //JEC 27/10/11
     294  process["rawOnOff"]  = new ProcessONOFFRawData(); 
    284295  process["dataOnOff"] = new ProcessONOFFData();
    285296  process["gain"]      = new ProcessGain();
     
    391402       << " dateOfRun = " << dateOfRun << "\n"
    392403       << " spectraDirectory = " << spectraDirectory << "\n"
     404       << " spectraName = " << typeOfFile << "\n"
    393405       << " freqBAOCalib = " << freqBAOCalib  << "\n"
    394406       << " bandWidthBAOCalib = " << bandWidthBAOCalib << "\n"
     
    572584int Usage(bool flag) {
    573585  cout << "Analyse.cc usage...." << endl;
    574   cout << "analyse  -act <action_type>: dataOnOff, rawOnOff, gain, calib\n"
     586  cout << "analyse  -act <action_type>: meanONOFF,dataOnOff, rawOnOff, gain, calib\n"
    575587       << "         -inPath <path for input files: default='.'>\n"
    576588       << "         -outPath <path for output files: default='.'>\n"
     
    590602       << "         -calibopt <option>:\n"
    591603       << "            valid for act=calib: indiv OR mean (NOT USED)"
    592        << "         -debuglev <number> [0=default]\n"
     604       << "         -debug <number> [0=default]\n"
    593605       << "           1: normal print\n"
    594606       << "           2: save intermediate spectra\n"
     
    649661  return rc;
    650662}
     663//----------------------------------------------
     664//JEC 27/10/11
     665//Process the files that are output of the specmfib -act = mspec (mean+sigma of signal files)
     666//----------------------------------------------
     667int ProcessONOFFMeanData::processCmd() throw(string) {
     668  int rc = 0;
     669  try {
     670    rc = ProcessBase::processCmd();
     671  }
     672  catch (string s) {
     673    throw s;
     674  }
     675
     676  if(debuglev_>0)cout << "Process Data" << endl;
     677  vector<string> modeList;
     678  modeList.push_back("On");
     679  modeList.push_back("Off");
     680  vector<string>::const_iterator iMode;
     681 
     682  uint_4 id;
     683  string tag;
     684
     685  map< pair<string, sa_size_t>, TMatrix<r_4> > spectreCollect;
     686  map< pair<string, sa_size_t>, TMatrix<r_4> >::iterator iSpectre, iSpectreEnd;
     687 
     688  for (iMode = modeList.begin(); iMode != modeList.end(); ++iMode) {
     689    string mode = *iMode;
     690    if(debuglev_>0)cout << "Process Mean-mspec Mode " << mode << endl;
     691
     692    //------------------------------------------
     693    //Produce mean of the mean spectra per cycle
     694    //------------------------------------------
     695
     696    string directoryName;
     697    list<string> listOfSpecFiles;
     698    list<string>::const_iterator iFile, iFileEnd;
     699   
     700       
     701    //
     702    //loop on cycles
     703    //
     704    for (sa_size_t icycle = ifirstCycle_; icycle <= ilastCycle_; icycle++) {
     705      directoryName = inputPath_ + "/"
     706        + sourceName_ + "/" + dateOfRun_ + StringToLower(sourceName_) + "/"
     707        + mode + "/";
     708      stringstream sicycle;
     709      sicycle << icycle;
     710      directoryName += spectraDirectory_ + sicycle.str() + "/";
     711
     712      //read directory
     713      listOfSpecFiles = ListOfFileInDir(directoryName,typeOfFile_);
     714     
     715
     716      //compute mean of spectra created in a cycle
     717      if(debuglev_>0)cout << "compute mean for cycle " << icycle << endl;
     718      TMatrix<r_4> spectreMean(NUMBER_OF_CHANNELS,NUMBER_OF_FREQ); //implicit init to 0
     719      iFileEnd = listOfSpecFiles.end();
     720      r_4 nSpectres  = 0;
     721      for (iFile = listOfSpecFiles.begin(); iFile != iFileEnd; ++iFile) {
     722        FitsInOutFile aSpectrum(*iFile,FitsInOutFile::Fits_RO);
     723        TMatrix<r_4> spectre(NUMBER_OF_CHANNELS,NUMBER_OF_FREQ);
     724        aSpectrum >> spectre;
     725        spectreMean += spectre;
     726        nSpectres++;
     727      }// end of for files
     728      if(nSpectres>0) spectreMean /= nSpectres;
     729     
     730      //save mean spectrum
     731      spectreCollect.insert( pair< pair<string,sa_size_t>, TMatrix<r_4> >(make_pair(mode,icycle),TMatrix<r_4>(spectreMean,false) ));
     732    }//end of for cycles
     733  }//end loop on mode for raw preocess
     734
     735  if(debuglev_>1) {//save mean spectra on file
     736    cout << "Save mean spectra" << endl;
     737    string fileName;
     738
     739    fileName = "./dataMean_" + dateOfRun_ + "_" + StringToLower(sourceName_) + ".ppf";
     740
     741    POutPersist fos(fileName);
     742    id=0;
     743    iSpectreEnd = spectreCollect.end();
     744    for (iSpectre = spectreCollect.begin();
     745         iSpectre != iSpectreEnd ; ++iSpectre, ++id) {
     746      tag = "specMean";
     747
     748      tag += (iSpectre->first).first;
     749      stringstream sid;
     750      sid << (iSpectre->first).second;
     751      tag += sid.str();
     752      if(debuglev_>9) {
     753        cout << "save tag<" << tag << ">" << endl;
     754      }
     755
     756      fos << PPFNameTag(tag) << iSpectre->second;
     757    }
     758  }//end of save fits
     759 
     760
     761
     762
     763
     764  cout << "OK ProcessONOFFMeanData finished" <<endl;
     765  return rc;
     766}
     767//----------------------------------------------
     768
    651769//JEC 22/9/11 Make ON-OFF analysis WO any calibration START
    652770//----------------------------------------------
     
    693811    //
    694812    for (sa_size_t icycle = ifirstCycle_; icycle <= ilastCycle_; icycle++) {
    695       directoryName = "./" + mode + "/";
     813      directoryName = inputPath_ + "/"
     814        + sourceName_ + "/" + dateOfRun_ + StringToLower(sourceName_) + "/"
     815        + mode + "/";
    696816      stringstream sicycle;
    697817      sicycle << icycle;
     
    8841004    throw s;
    8851005  }
    886    if(debuglev_>0)cout << "Process Data" << endl;
     1006  if(debuglev_>0)cout << "Process Data" << endl;
    8871007  vector<string> modeList;
    8881008  modeList.push_back("On");
Note: See TracChangeset for help on using the changeset viewer.