diff --git a/src/rssm.cpp b/src/rssm.cpp index a35ac17e63cc7e70b70d07d0f05f5ef5863b8b00..5b8936c921756d18f5a3c4a61ce07f4e7f5fdd40 100644 --- a/src/rssm.cpp +++ b/src/rssm.cpp @@ -616,7 +616,7 @@ void NRSSM::ReadSeries( int format, int flag ) { char tstrg[30]; - string fser, name; + string fser, fnam, name; time_t t; int ret, isub; vector<RssmRawFile> RR; @@ -624,41 +624,43 @@ void NRSSM::ReadSeries( int format, int flag ) // Read consolidated files: fser = wask("Read SPHERES data from series"); for( isub=0; ; ++isub ){ - RR.push_back( RssmRawFile() ); if ( format==2 ) { - ret = RR.back().RdRawXml( fser+"c"+strg(isub) ); + RR.push_back( RssmRawFile() ); + fnam = fser+"a"+strg(isub); + ret = RR.back().RdRawXml( fnam ); if( ret==1 ){ printf( "ignore the above warning\n" ); RR.pop_back(); break; } } else if( format==5 ) { - string fnam = fser+"a"+strg(isub); + fnam = fser+"a"+strg(isub); FILE *F_in; if( !(F_in = fopen( fnam.c_str(), "r" ) ) ) break; + // cout << "successfully opened "<<fnam<<"\n"; try{ - RR.back().RdRawYam( F_in ); + RssmRawFile rf; + rf.RdRawYam( F_in ); + RR.push_back( rf ); } catch(exception& e) { cerr << e.what() << endl; if (F_in) fclose(F_in); return; } + ret = 0; } else { - printf( "invalid format" ); - return; + throw string( "invalid format parameter" ); } if ( ret ) return; } int nsub = RR.size(); if( nsub==0 ) - return; - else if( nsub==1 ){ - printf( "series contains just one scan -> use a simpler method\n" ); - return; - } + throw string( "could not open file " ) + fnam; + else if( nsub==1 ) + throw string( "series contains just one scan -> use a simpler method"); printf( "successfully read %d files\n", nsub ); // Correct time: @@ -679,12 +681,14 @@ void NRSSM::ReadSeries( int format, int flag ) bool incremental_in = RR[0].incremental; for( isub=1; isub<nsub; ++isub ){ - if( RR[isub].angles.size()!=ndet || - RR[isub].daq_time_step!=tstep || - RR[isub].incremental!=incremental_in ){ - printf( "SEVERE essential parameters are inconsistent\n" ); - return; - } + if( RR[isub].angles.size()!=ndet ) + throw string( "inconsistent no of det: file " ) + strg(isub) + + " has " + strg(RR[isub].angles.size()) + " instead of " + + strg(ndet); + if( RR[isub].daq_time_step!=tstep ) + throw string( "inconsistent time step" ); + if( RR[isub].incremental!=incremental_in ) + throw string( "inconsistent increment status" ); } // Set file headers: