Ignore:
Timestamp:
Aug 7, 2006, 11:13:52 AM (19 years ago)
Author:
ansari
Message:

ajout possibilite de specifier numero HDU pour readfits (piappp) - Reza 06/08/2006

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/ProgPI/fitsbtadapter.cc

    r2977 r3042  
    126126kw = "scanfits";
    127127usage = "scanfits: scan fits files and print information on each HDU\n" ;
    128 usage += "Usage: scanfits FileName [slev=0 ... 3]\n";
    129 usage += "slev=1,3: header keywords , slev=2,3: try to read each HDU";
     128usage += "Usage: scanfits FileName [slev=0...3]\n";
     129usage += "slev=1,3: header keywords , slev=2,3: try to read each HDU\n";
     130usage += "See also: readfits writefits fitsadapt ";
    130131mpiac->RegisterCommand(kw, usage, this, hgrp);
    131132
     
    133134usage = "writefits: Write objects to a fits file \n" ;
    134135usage += "Usage: writefits nameobj/pattern FileName \n";
    135 usage += "(use FitsManager) .... ";
    136 usage += "See also  scanfits readfits fitsadapt ";
     136usage += "See also: scanfits readfits fitsadapt ";
    137137mpiac->RegisterCommand(kw, usage, this, hgrp);
    138138
    139139kw = "readfits";
    140 usage = "readfits: Read all HDU's of a fits file \n" ;
    141 usage += "Usage: readfits nameobj/pattern FileName \n";
    142 usage += "(use FitsManager) .... ";
     140usage = "readfits: Read one or all HDU's of a fits file \n" ;
     141usage += "Usage: readfits FileName [num_hdu] \n";
     142usage += " num_hdu=1,..,NbHDU (uses FitsManager) \n";
    143143usage += "See also  scanfits writefits fitsadapt ";
    144144mpiac->RegisterCommand(kw, usage, this, hgrp);
     
    207207else if (kw == "readfits") {
    208208  if(tokens.size() < 1)  {
    209     cout<<"Usage: readfits FileName "<<endl;
     209    cout<<"Usage: readfits FileName [num_hdu]"<<endl;
    210210    return 1;
    211211  }
    212   cout << "readfits: Opening  fits file " << tokens[0] << endl;
     212  cout << "readfits: Opening  fits file " << tokens[0];
    213213  FitsInOutFile fis(tokens[0], FitsInOutFile::Fits_RO);
     214  int k1 = 1;
     215  int k2 = fis.NbHDUs();
     216  if (fis.CurrentHDU() > 1) k1 = k2 = fis.CurrentHDU();
     217  bool fgshdu = false;
     218  if (tokens.size() > 1) {  // Numero de HDU specifie
     219    k2 = k1 = atoi(tokens[1].c_str());
     220    fgshdu = true;
     221    cout << " - HDU Num " << k1 << endl;
     222  }
     223  else cout << " - HDU's " << k1 << "-" << k2 << endl;
     224
    214225  string bnom = omg.GetServiceObj()->FileName2Name(tokens[0]);
    215226  string nom = bnom;
    216227  char bun[16];
    217228  int kon = 0;
    218   for(int k=0; k<fis.NbHDUs(); k++) {
     229  for(int k=k1; k<=k2; k++) {
    219230    try {
     231      if (fgshdu) fis.MoveAbsToHDU(k);
    220232      FitsHandlerInterface* fhi = FitsManager::Read(fis);
    221233      AnyDataObj* obj = fhi->DataObj();
     
    228240       omg.AddObj(obj, nom, false);
    229241       cout << "readfits: " << (string)typeid(*obj).name()
    230             << "  read From HDU " << k+1 << " ->" << nom << endl;
     242            << "  read From HDU " << k << " ->" << nom << endl;
    231243      }
    232244      else delete fhi;
     
    237249      cout << "readfits/Error - HDU=" << k+1 << " : " << exc.Msg() << endl;
    238250    }
    239     fis.MoveToNextHDU();
     251    if (k<k2) fis.MoveToNextHDU();
    240252  }
    241253  return 0; 
Note: See TracChangeset for help on using the changeset viewer.