{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Normal Move Out Trace Processor","description":"Accelerate E&P application development and protect your innovation by consuming our Data and Domain APIs / Platform APIs.","lang":"en-US","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":false}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"normal-move-out-trace-processor","__idx":0},"children":["Normal Move Out Trace Processor"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This article details the implementation of a simple trace processor that performs a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Normal Move Out"]}," with a constant velocity."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The entire NetBeans project for this plugin can be downloaded at the bottom of this page. This project was developed with INTViewer 5.1.1."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When plugged in, this processor shows in the \"Trace Processors\" tab as follow:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once \"NMO\" is selected, this dialog changes to:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"the-main-class-where-the-maths-occur-is-normalmoveoutprocessor","__idx":1},"children":["The main class where the maths occur is NormalMoveOutProcessor"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["preProcess"]}," method gathers information about the dataset about to be processed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["processTrace"]}," method performs the processing."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["saveState"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["restoreState"]}," methods remember the user settings."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"the-class-where-the-parameters-can-be-entered-by-the-user-is-normalmoveoutpanel","__idx":2},"children":["The class where the parameters can be entered by the user is NormalMoveOutPanel"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This class was written using the Swing editor built-in NetBeans."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"the-class-linking-the-panel-and-the-processor-is-normalmoveouteditor","__idx":3},"children":["The class linking the panel and the processor is NormalMoveOutEditor"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"the-class-where-preferences-are-remembered-is-normalmoveoutpreferencesutil","__idx":4},"children":["The class where preferences are remembered is NormalMoveOutPreferencesUtil"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"this-trace-processor-is-registered-as-follow-in-the-layerxml-file","__idx":5},"children":["This trace processor is registered as follow in the layer.xml file:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"prior-to-adding-this-processor-this-dataset-is-visualized-as-follow","__idx":6},"children":["Prior to adding this processor, this dataset is visualized as follow:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"after-adding-this-processor-this-dataset-is-visualized-as-follow","__idx":7},"children":["After adding this processor, this dataset is visualized as follow:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This screenshot shows that the NMO correction works for the first reflection, but no so well for deep reflections. A more complex processor could allow the user to enter multiple velocities, depending on the depth."]}]},"headings":[{"value":"Normal Move Out Trace Processor","id":"normal-move-out-trace-processor","depth":1},{"value":"The main class where the maths occur is NormalMoveOutProcessor","id":"the-main-class-where-the-maths-occur-is-normalmoveoutprocessor","depth":3},{"value":"The class where the parameters can be entered by the user is NormalMoveOutPanel","id":"the-class-where-the-parameters-can-be-entered-by-the-user-is-normalmoveoutpanel","depth":3},{"value":"The class linking the panel and the processor is NormalMoveOutEditor","id":"the-class-linking-the-panel-and-the-processor-is-normalmoveouteditor","depth":3},{"value":"The class where preferences are remembered is NormalMoveOutPreferencesUtil","id":"the-class-where-preferences-are-remembered-is-normalmoveoutpreferencesutil","depth":3},{"value":"This trace processor is registered as follow in the layer.xml file:","id":"this-trace-processor-is-registered-as-follow-in-the-layerxml-file","depth":3},{"value":"Prior to adding this processor, this dataset is visualized as follow:","id":"prior-to-adding-this-processor-this-dataset-is-visualized-as-follow","depth":3},{"value":"After adding this processor, this dataset is visualized as follow:","id":"after-adding-this-processor-this-dataset-is-visualized-as-follow","depth":3}],"frontmatter":{"title":"Normal Move Out Trace Processor","pageId":"other-useful-intviewer-apis/traceprocess-plugins/normal-move-out-trace-processor","seo":{"title":"Normal Move Out Trace Processor"}},"lastModified":"2026-10-22T14:32:05.579Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solutions/intviewer/other-useful-intviewer-apis/traceprocess-plugins/normal-move-out-trace-processor","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}