Ignore:
Timestamp:
Jul 24, 2002, 12:05:11 PM (23 years ago)
Author:
lemeur
Message:

ouverture FitsBTNtuIntf au lieu de XNTUPLE pour grose BINTABLE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fitsautoreader.cc

    r1371 r2130  
    1919  InitNull();
    2020  inFits_  = new FitsInFile (inputfile);
     21  filename_ = string(inputfile);
    2122}
    2223FITS_AutoReader::FITS_AutoReader(string const & inputfile)
     
    2425  InitNull();
    2526  inFits_  = new FitsInFile (inputfile);
     27  filename_ = inputfile;
    2628}
    2729FITS_AutoReader::~FITS_AutoReader()
     
    3638}
    3739
    38 AnyDataObj* FITS_AutoReader::ReadObject(int hdunum) const
     40 // parametre toutCharger : uniquement pour les BINTABLE et s'il ne
     41 // s'agit pas explicitement d'un objet SOPHYA, on charge toute la
     42 // table en memoire sous forme d'un xntuple si toutCharger= true.
     43 // et si le nombre d'entrees est superieur a 1000.
     44 // sinon (c-a-d : il ne s'agit pas d'un objet connu de SOPHYA
     45 //                c'est une BINTABLE avec plus de 1000 entrees
     46 //                totuCharger = false)
     47 // on ouvre une FitsBTNtuIntf (lecture ulterieure, bufferisee, des valeurs)
     48AnyDataObj* FITS_AutoReader::ReadObject(int hdunum, bool toutCharger) const
    3949{
    4050  if (hdunum<=0)
     
    8090    }
    8191  // si c'est une bintable on cherche le mot cle ORDERING pour identifier
    82   // une spherehelpix
     92  // une spherehealpix
    8393  else if (inFits_->IsFitsTable())
    8494    {
     
    97107          }
    98108        if (index == 0)  return newNTuple();
    99         else return newXNTuple();
     109        else
     110          {
     111            if (!toutCharger )
     112              {
     113                int maxEntries=0;
     114                for (int k=0; k < inFits_->NbColsFromFits(); k++)
     115                  {
     116                    if (inFits_->NentriesFromFits(k) > maxEntries ) maxEntries =  inFits_->NentriesFromFits(k);
     117                  }
     118                if ( maxEntries > 1000) return newFitsBTNtuIntf(hdunum);
     119                else return newXNTuple();
     120              }
     121            else  return newXNTuple();
     122
     123          }
    100124      }
    101125    }
     
    230254}
    231255
     256FitsBTNtuIntf* FITS_AutoReader::newFitsBTNtuIntf(int hdunum) const
     257{
     258      FitsBTNtuIntf* btnptr = new FitsBTNtuIntf(filename_,hdunum);
     259      return btnptr;
     260}
     261
Note: See TracChangeset for help on using the changeset viewer.