|
| 1 | +% SegyTraceHeader=CheckSegyTraceHeader(SegyTraceHeader); |
| 2 | +% |
| 3 | +% Checks that all fields of the SegyTraceHeader is set. |
| 4 | +% If not, they are initialized. |
| 5 | +% |
| 6 | + |
| 7 | +% |
| 8 | +% (C) 2004, Thomas Mejer Hansen, tmh@gfy.ku.dk/thomas@cultpenguin.com |
| 9 | +% |
| 10 | +% |
| 11 | +% |
| 12 | +% This program is free software; you can redistribute it and/or modify |
| 13 | +% it under the terms of the GNU General Public License as published by |
| 14 | +% the Free Software Foundation; either version 2 of the License, or |
| 15 | +% (at your option) any later version. |
| 16 | +% |
| 17 | +% This program is distributed in the hope that it will be useful, |
| 18 | +% but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 19 | +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 20 | +% GNU General Public License for more details. |
| 21 | +% |
| 22 | +% You should have received a copy of the GNU General Public License |
| 23 | +% along with this program; if not, write to the Free Software |
| 24 | +% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 25 | +% |
| 26 | +function SegyTraceHeader=CheckSegyTraceHeader(SegyTraceHeader); |
| 27 | +%% SET UP SegyTraceHeader |
| 28 | + NA=0; |
| 29 | + |
| 30 | + if ~isfield(SegyTraceHeader,'TraceSequenceLine'), SegyTraceHeader.TraceSequenceLine=NA;end |
| 31 | + if ~isfield(SegyTraceHeader,'TraceSequenceFile'), SegyTraceHeader.TraceSequenceFile=NA;end |
| 32 | + if ~isfield(SegyTraceHeader,'FieldRecord'), SegyTraceHeader.FieldRecord=NA;end |
| 33 | + if ~isfield(SegyTraceHeader,'TraceNumber'), SegyTraceHeader.TraceNumber=NA;end |
| 34 | + if ~isfield(SegyTraceHeader,'EnergySourcePoint'), SegyTraceHeader.EnergySourcePoint=NA;end |
| 35 | + if ~isfield(SegyTraceHeader,'cdp'), SegyTraceHeader.cdp=NA;end |
| 36 | + if ~isfield(SegyTraceHeader,'cdpTrace'), SegyTraceHeader.cdpTrace=NA;end |
| 37 | + if ~isfield(SegyTraceHeader,'TraceIdenitifactionCode'), SegyTraceHeader.TraceIdenitifactionCode=NA;end |
| 38 | + if ~isfield(SegyTraceHeader,'NSummedTraces'), SegyTraceHeader.NSummedTraces=NA;end |
| 39 | + if ~isfield(SegyTraceHeader,'NStackedTraces'), SegyTraceHeader.NStackedTraces=NA;end |
| 40 | + if ~isfield(SegyTraceHeader,'DataUse'), SegyTraceHeader.DataUse=NA;end |
| 41 | + if ~isfield(SegyTraceHeader,'offset'), SegyTraceHeader.offset=NA;end |
| 42 | + if ~isfield(SegyTraceHeader,'ReceiverGroupElevation'), SegyTraceHeader.ReceiverGroupElevation=NA;end |
| 43 | + if ~isfield(SegyTraceHeader,'SourceSurfaceElevation'), SegyTraceHeader.SourceSurfaceElevation=NA;end |
| 44 | + if ~isfield(SegyTraceHeader,'SourceDepth'), SegyTraceHeader.SourceDepth=NA;end |
| 45 | + if ~isfield(SegyTraceHeader,'ReceiverDatumElevation'), SegyTraceHeader.ReceiverDatumElevation=NA;end |
| 46 | + if ~isfield(SegyTraceHeader,'SourceDatumElevation'), SegyTraceHeader.SourceDatumElevation=NA;end |
| 47 | + if ~isfield(SegyTraceHeader,'SourceWaterDepth'), SegyTraceHeader.SourceWaterDepth=NA;end |
| 48 | + if ~isfield(SegyTraceHeader,'GroupWaterDepth'), SegyTraceHeader.GroupWaterDepth=NA;end |
| 49 | + if ~isfield(SegyTraceHeader,'ElevationScalar'), SegyTraceHeader.ElevationScalar=NA;end |
| 50 | + % Multiply/divide next number for following 4 values |
| 51 | + if ~isfield(SegyTraceHeader,'SourceGroupScalar'), SegyTraceHeader.SourceGroupScalar=NA;end |
| 52 | + if ~isfield(SegyTraceHeader,'SourceX'), SegyTraceHeader.SourceX=NA;end |
| 53 | + if ~isfield(SegyTraceHeader,'SourceY'), SegyTraceHeader.SourceY=NA;end |
| 54 | + if ~isfield(SegyTraceHeader,'GroupX'), SegyTraceHeader.GroupX=NA;end |
| 55 | + if ~isfield(SegyTraceHeader,'GroupY'), SegyTraceHeader.GroupY=NA;end |
| 56 | + if ~isfield(SegyTraceHeader,'CoordinateUnits'), SegyTraceHeader.CoordinateUnits=NA;end |
| 57 | + if ~isfield(SegyTraceHeader,'WeatheringVelocity'), SegyTraceHeader.WeatheringVelocity=NA;end |
| 58 | + if ~isfield(SegyTraceHeader,'SubWeatheringVelocity'), SegyTraceHeader.SubWeatheringVelocity=NA;end |
| 59 | + if ~isfield(SegyTraceHeader,'SourceUpholeTime'), SegyTraceHeader.SourceUpholeTime=NA;end |
| 60 | + if ~isfield(SegyTraceHeader,'GroupUpholeTime'), SegyTraceHeader.GroupUpholeTime=NA;end |
| 61 | + if ~isfield(SegyTraceHeader,'SourceStaticCorrection'), SegyTraceHeader.SourceStaticCorrection=NA;end |
| 62 | + if ~isfield(SegyTraceHeader,'GroupStaticCorrection'), SegyTraceHeader.GroupStaticCorrection=NA;end |
| 63 | + if ~isfield(SegyTraceHeader,'TotalStaticApplied'), SegyTraceHeader.TotalStaticApplied=NA;end |
| 64 | + if ~isfield(SegyTraceHeader,'LagTimeA'), SegyTraceHeader.LagTimeA=NA;end |
| 65 | + if ~isfield(SegyTraceHeader,'LagTimeB'), SegyTraceHeader.LagTimeB=NA;end |
| 66 | + if ~isfield(SegyTraceHeader,'DelayRecordingTime'), SegyTraceHeader.DelayRecordingTime=NA;end |
| 67 | + if ~isfield(SegyTraceHeader,'MuteTimeStart'), SegyTraceHeader.MuteTimeStart=NA;end |
| 68 | + if ~isfield(SegyTraceHeader,'MuteTimeEND'), SegyTraceHeader.MuteTimeEND=NA;end |
| 69 | + if ~isfield(SegyTraceHeader,'ns'), SegyTraceHeader.ns=NA;end |
| 70 | + if ~isfield(SegyTraceHeader,'dt'), SegyTraceHeader.dt=NA;end |
| 71 | + if ~isfield(SegyTraceHeader,'GainType'), SegyTraceHeader.GainType=NA;end |
| 72 | + if ~isfield(SegyTraceHeader,'InstrumentGainConstant'), SegyTraceHeader.InstrumentGainConstant=NA;end |
| 73 | + if ~isfield(SegyTraceHeader,'InstrumentInitialGain'), SegyTraceHeader.InstrumentInitialGain=NA;end |
| 74 | + if ~isfield(SegyTraceHeader,'Correlated'), SegyTraceHeader.Correlated=NA;end |
| 75 | + if ~isfield(SegyTraceHeader,'SweepFrequenceStart'), SegyTraceHeader.SweepFrequenceStart=NA;end |
| 76 | + if ~isfield(SegyTraceHeader,'SweepFrequenceEnd'), SegyTraceHeader.SweepFrequenceEnd=NA;end |
| 77 | + if ~isfield(SegyTraceHeader,'SweepLength'), SegyTraceHeader.SweepLength=NA;end |
| 78 | + if ~isfield(SegyTraceHeader,'SweepType'), SegyTraceHeader.SweepType=NA;end |
| 79 | + if ~isfield(SegyTraceHeader,'SweepTraceTaperLengthStart'), SegyTraceHeader.SweepTraceTaperLengthStart=NA;end |
| 80 | + if ~isfield(SegyTraceHeader,'SweepTraceTaperLengthEnd'), SegyTraceHeader.SweepTraceTaperLengthEnd=NA;end |
| 81 | + if ~isfield(SegyTraceHeader,'TaperType'), SegyTraceHeader.TaperType=NA;end |
| 82 | + if ~isfield(SegyTraceHeader,'AliasFilterFrequency'), SegyTraceHeader.AliasFilterFrequency=NA;end |
| 83 | + if ~isfield(SegyTraceHeader,'AliasFilterSlope'), SegyTraceHeader.AliasFilterSlope=NA;end |
| 84 | + if ~isfield(SegyTraceHeader,'NotchFilterFrequency'), SegyTraceHeader.NotchFilterFrequency=NA;end |
| 85 | + if ~isfield(SegyTraceHeader,'NotchFilterSlope'), SegyTraceHeader.NotchFilterSlope=NA;end |
| 86 | + if ~isfield(SegyTraceHeader,'LowCutFrequency'), SegyTraceHeader.LowCutFrequency=NA;end |
| 87 | + if ~isfield(SegyTraceHeader,'HighCutFrequency'), SegyTraceHeader.HighCutFrequency=NA;end |
| 88 | + if ~isfield(SegyTraceHeader,'LowCutSlope'), SegyTraceHeader.LowCutSlope=NA;end |
| 89 | + if ~isfield(SegyTraceHeader,'HighCutSlope'), SegyTraceHeader.HighCutSlope=NA;end |
| 90 | + da=clock; |
| 91 | + if ~isfield(SegyTraceHeader,'YearDataRecorded'), SegyTraceHeader.YearDataRecorded=da(1);end |
| 92 | + DayOfYear=datenum(0,da(2),da(3)); % 22/7-2002 by Michael Toews (mwtoews@ucalgary.ca) |
| 93 | + if ~isfield(SegyTraceHeader,'DayOfYear'), SegyTraceHeader.DayOfYear=DayOfYear;end |
| 94 | + if ~isfield(SegyTraceHeader,'HourOfDay'), SegyTraceHeader.HourOfDay=da(4);end |
| 95 | + if ~isfield(SegyTraceHeader,'MinuteOfHour'), SegyTraceHeader.MinuteOfHour=da(5);end |
| 96 | + if ~isfield(SegyTraceHeader,'SecondOfMinute'), SegyTraceHeader.SecondOfMinute=round(da(6));end |
| 97 | + if ~isfield(SegyTraceHeader,'TimeBaseCode'), SegyTraceHeader.TimeBaseCode=NA;end |
| 98 | + if ~isfield(SegyTraceHeader,'TraceWeightningFactor'), SegyTraceHeader.TraceWeightningFactor=NA;end |
| 99 | + if ~isfield(SegyTraceHeader,'GeophoneGroupNumberRoll1'), SegyTraceHeader.GeophoneGroupNumberRoll1=NA;end |
| 100 | + if ~isfield(SegyTraceHeader,'GeophoneGroupNumberFirstTraceOrigField'), SegyTraceHeader.GeophoneGroupNumberFirstTraceOrigField=NA;end |
| 101 | + if ~isfield(SegyTraceHeader,'GeophoneGroupNumberLastTraceOrigField'), SegyTraceHeader.GeophoneGroupNumberLastTraceOrigField=NA;end |
| 102 | + if ~isfield(SegyTraceHeader,'GapSize'), SegyTraceHeader.GapSize=NA;end |
| 103 | + if ~isfield(SegyTraceHeader,'OverTravel'), SegyTraceHeader.OverTravel=NA;end |
| 104 | + if ~isfield(SegyTraceHeader,'cdpX'), SegyTraceHeader.cdpX=NA;end |
| 105 | + if ~isfield(SegyTraceHeader,'cdpY'), SegyTraceHeader.cdpY=NA;end |
| 106 | + if ~isfield(SegyTraceHeader,'Inline3D'), SegyTraceHeader.Inline3D=NA;end |
| 107 | + if ~isfield(SegyTraceHeader,'Crossline3D'), SegyTraceHeader.Crossline3D=NA;end |
| 108 | + if ~isfield(SegyTraceHeader,'ShotPoint'), SegyTraceHeader.ShotPoint=NA;end |
| 109 | + if ~isfield(SegyTraceHeader,'ShotPointScalar'), SegyTraceHeader.ShotPointScalar=NA;end |
| 110 | + if ~isfield(SegyTraceHeader,'TraceValueMeasurementUnit'), SegyTraceHeader.TraceValueMeasurementUnit=NA;end |
| 111 | + if ~isfield(SegyTraceHeader,'TransductionConstantMantissa'), SegyTraceHeader.TransductionConstantMantissa=NA;end |
| 112 | + if ~isfield(SegyTraceHeader,'TransductionConstantPower'), SegyTraceHeader.TransductionConstantPower=NA;end |
| 113 | + if ~isfield(SegyTraceHeader,'TransductionUnit'), SegyTraceHeader.TransductionUnit=NA;end |
| 114 | + if ~isfield(SegyTraceHeader,'TraceIdentifier'), SegyTraceHeader.TraceIdentifier=NA;end |
| 115 | + if ~isfield(SegyTraceHeader,'ScalarTraceHeader'), SegyTraceHeader.ScalarTraceHeader=NA;end |
| 116 | + |
| 117 | + |
| 118 | + if ~isfield(SegyTraceHeader,'SourceType'), SegyTraceHeader.SourceType=NA;end |
| 119 | + if ~isfield(SegyTraceHeader,'SourceEnergyDirectionMantissa'), SegyTraceHeader.SourceEnergyDirectionMantissa=NA;end |
| 120 | + if ~isfield(SegyTraceHeader,'SourceEnergyDirectionExponent'), SegyTraceHeader.SourceEnergyDirectionExponent=NA;end |
| 121 | + if ~isfield(SegyTraceHeader,'SourceMeasurementMantissa'), SegyTraceHeader.SourceMeasurementMantissa=NA;end |
| 122 | + if ~isfield(SegyTraceHeader,'SourceMeasurementExponent'), SegyTraceHeader.SourceMeasurementExponent=NA;end |
| 123 | + if ~isfield(SegyTraceHeader,'SourceMeasurementUnit'), SegyTraceHeader.SourceMeasurementUnit=NA;end |
| 124 | + |
| 125 | + if ~isfield(SegyTraceHeader,'UnassignedInt1'), SegyTraceHeader.UnassignedInt1=NA;end |
| 126 | + if ~isfield(SegyTraceHeader,'UnassignedInt2'), SegyTraceHeader.UnassignedInt2=NA;end |
| 127 | + |
0 commit comments