Brief description of class still missing. More...
#include <PasscalSegYHeader.h>
Public Member Functions | |
Signal::Components | component () const |
double | deltaT () const |
int | nSamples () const |
PasscalSegYHeader () | |
void | read (QDataStream &s) |
int | sampleSize () const |
DateTime | t0 () const |
DateTime | timePick () const |
void | write (QDataStream &s) const |
Static Public Member Functions | |
static SignalFileFormat | determineByteOrder (QString fileName) |
Public Attributes | |
union { | |
struct { | |
char channelName [4] | |
qint32 channelNumber | |
qint16 coordinateScale | |
qint16 coordinateUnit | |
qint16 dataFormat | |
qint16 day | |
qint16 elevationScale | |
qint32 eventNumber | |
qint16 gainConstant | |
qint16 gainType | |
qint16 hour | |
qint32 ignored0 [3] | |
qint16 ignored1 [3] | |
qint32 ignored2 [8] | |
qint32 ignored3 [4] | |
qint16 ignored4 [6] | |
qint16 ignored5 [5] | |
qint16 ignored6 [17] | |
qint16 ignored7 [6] | |
qint16 ignored8 | |
quint16 instrumentSerialNumber | |
qint32 maximumAmplitude | |
qint16 milliseconds | |
qint32 minimumAmplitude | |
qint16 minute | |
quint16 sampleInterval16 | |
qint32 sampleInterval32 | |
quint16 sampleNumber16 | |
qint32 sampleNumber32 | |
float scaleFactor | |
qint16 second | |
char sensorSerial [8] | |
char stationName [6] | |
qint16 timeBase | |
qint16 totalStaticCorrectionHigh | |
qint16 totalStaticCorrectionLow | |
qint16 traceIndentificationCode | |
qint32 traceNumberInFile | |
qint32 traceNumberInReel | |
qint16 triggerDay | |
qint16 triggerHour | |
qint16 triggerMilliseconds | |
qint16 triggerMinute | |
qint16 triggerSecond | |
qint16 triggerYear | |
qint16 year | |
} field | |
struct { | |
qint32 raw0 [7] | |
qint16 raw1 [4] | |
float raw10 | |
qint16 raw11 [2] | |
qint32 raw12 [3] | |
qint32 raw2 [8] | |
qint16 raw3 [2] | |
qint32 raw4 [4] | |
qint16 raw5 [46] | |
char raw6 [18] | |
qint16 raw7 | |
qint32 raw8 | |
qint16 raw9 [8] | |
} raw | |
}; |
Brief description of class still missing.
(from src/include/segy.h in passcal software) The PASSCAL SEGY trace format is a modified form of the SEG-Y trace format. The modification comes is because we use some of the unspecified header words to store information pertinent to the PASSCAL data. The data values for each trace are preceded by a 240 byte header. This format is given below. All integer values are stored with the most significant byte first (big endian). Data values are either 16 0r 32 bit integers depending on byte 206 of the header, the field named "data_form".
PASSCAL SEGY format is also described in many reports that can be downloaded from IRIS: http://dmc.iris.washington.edu/data One example is http://dmc.iris.washington.edu/data/reports/1999/99-002B.pdf
Description of constructor still missing
References TRACE.
{ TRACE; ASSERT(sizeof( PasscalSegYHeader)==240); memset(this, 0, 240); }
References GeopsyCore::Signal::East, field, GeopsyCore::Signal::North, TRACE, GeopsyCore::Signal::UndefinedComponent, and GeopsyCore::Signal::Vertical.
{ TRACE; switch(field.channelNumber) { case 1: case 4: return Signal::Vertical; case 2: case 5: return Signal::North; case 3: case 6: return Signal::East; default: return Signal::UndefinedComponent; } }
double GeopsyCore::PasscalSegYHeader::deltaT | ( | ) | const [inline] |
SignalFileFormat GeopsyCore::PasscalSegYHeader::determineByteOrder | ( | QString | fileName | ) | [static] |
References QGpCoreTools::endl(), GeopsyCore::SignalFileFormat::PasscalSegYBigEndian, GeopsyCore::SignalFileFormat::PasscalSegYLittleEndian, QGpCoreTools::tr(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.
Referenced by GeopsyCore::SignalFileFormat::fromContent(), and GeopsyCore::SignalFileFormat::fromSuffix().
{ TRACE; QFile f(fileName); if( !f.open(QIODevice::ReadOnly) ) { return SignalFileFormat::Unknown; } QDataStream s(&f); #if(QT_VERSION >= QT_VERSION_CHECK(4, 6, 0)) s.setFloatingPointPrecision(QDataStream::SinglePrecision); #endif s.setByteOrder(QDataStream::LittleEndian); bool littleEndian=canReadAll(s, f.size()); f.seek(0); s.setByteOrder(QDataStream::BigEndian); bool bigEndian=canReadAll(s, f.size()); if((littleEndian && bigEndian) || (!littleEndian && !bigEndian)) { App::stream() << tr("Cannot determine byte order for PASSCAL SEGY format.") << endl; return SignalFileFormat::Unknown; } else if(littleEndian) { return SignalFileFormat::PasscalSegYLittleEndian; } else { return SignalFileFormat::PasscalSegYBigEndian; } }
int GeopsyCore::PasscalSegYHeader::nSamples | ( | ) | const [inline] |
void GeopsyCore::PasscalSegYHeader::read | ( | QDataStream & | s | ) |
{ TRACE; for(int i=0;i<7;i++) s >> raw.raw0[i]; for(int i=0;i<4;i++) s >> raw.raw1[i]; for(int i=0;i<8;i++) s >> raw.raw2[i]; for(int i=0;i<2;i++) s >> raw.raw3[i]; for(int i=0;i<4;i++) s >> raw.raw4[i]; for(int i=0;i<46;i++) s >> raw.raw5[i]; s.readRawData(raw.raw6, 18); s >> raw.raw7; s >> raw.raw8; for(int i=0;i<8;i++) s >> raw.raw9[i]; s >> raw.raw10; for(int i=0;i<2;i++) s >> raw.raw11[i]; for(int i=0;i<3;i++) s >> raw.raw12[i]; }
int GeopsyCore::PasscalSegYHeader::sampleSize | ( | ) | const [inline] |
{return field.dataFormat==0 ? 2 : 4;}
DateTime GeopsyCore::PasscalSegYHeader::t0 | ( | ) | const |
References QGpCoreTools::DateTime::addDays(), QGpCoreTools::DateTime::addSeconds(), field, and TRACE.
void GeopsyCore::PasscalSegYHeader::write | ( | QDataStream & | s | ) | const |
{ TRACE; for(int i=0;i<7;i++) s << raw.raw0[i]; for(int i=0;i<4;i++) s << raw.raw1[i]; for(int i=0;i<8;i++) s << raw.raw2[i]; for(int i=0;i<2;i++) s << raw.raw3[i]; for(int i=0;i<4;i++) s << raw.raw4[i]; for(int i=0;i<46;i++) s << raw.raw5[i]; s.writeRawData(raw.raw6, 18); s << raw.raw7; s << raw.raw8; for(int i=0;i<8;i++) s << raw.raw9[i]; s << raw.raw10; for(int i=0;i<2;i++) s << raw.raw11[i]; for(int i=0;i<3;i++) s << raw.raw12[i]; }
union { ... } |
struct { ... } GeopsyCore::PasscalSegYHeader::field |
Referenced by component(), t0(), and timePick().
qint32 GeopsyCore::PasscalSegYHeader::ignored0[3] |
qint16 GeopsyCore::PasscalSegYHeader::ignored1[3] |
qint32 GeopsyCore::PasscalSegYHeader::ignored2[8] |
qint32 GeopsyCore::PasscalSegYHeader::ignored3[4] |
qint16 GeopsyCore::PasscalSegYHeader::ignored4[6] |
qint16 GeopsyCore::PasscalSegYHeader::ignored5[5] |
qint16 GeopsyCore::PasscalSegYHeader::ignored6[17] |
qint16 GeopsyCore::PasscalSegYHeader::ignored7[6] |
struct { ... } GeopsyCore::PasscalSegYHeader::raw |
qint32 GeopsyCore::PasscalSegYHeader::raw0[7] |
qint16 GeopsyCore::PasscalSegYHeader::raw1[4] |
qint16 GeopsyCore::PasscalSegYHeader::raw11[2] |
qint32 GeopsyCore::PasscalSegYHeader::raw12[3] |
qint32 GeopsyCore::PasscalSegYHeader::raw2[8] |
qint16 GeopsyCore::PasscalSegYHeader::raw3[2] |
qint32 GeopsyCore::PasscalSegYHeader::raw4[4] |
qint16 GeopsyCore::PasscalSegYHeader::raw5[46] |
char GeopsyCore::PasscalSegYHeader::raw6[18] |
qint16 GeopsyCore::PasscalSegYHeader::raw9[8] |