6.9.2

# scevent

Associates an Origin to an Event or forms a new Event if no match is found. Selects the preferred origin, magnitude and focal mechanism.

## Description

As a consequence of a real-time system the SeisComP modules creates several origins (results of localization processes) for one earthquake or other seismic events because as time goes by more seismic phases are available. scevent receives these origins and associates the origins to events. It is also possible to import and associate origins from other agencies.

The main tasks of scevent are:

- Associate origins to events.

- Set the ID of events.

- Set the preferred origin from all available origins.

- Set the preferred magnitude from all available magnitudes.

- Set the preferred focal mechanism from all available focal mechanisms.

- Optional: Set the event type of automatic origins based by the plugin evrc based on the hypocenter location of the preferred origin. This requires the configuration of the evrc plugin and of geographic regions by polygons in BNA or GeoJSON format.

## Origin Association

scevent associates origins to events by searching for the best match of the new (incoming) origin to other origins for existing events:

- Associate origins belonging to belonging to the same seismic event to the same event object in SeisComP.

- Associate origins belonging to different seismic events to different event objects in SeisComP.

If no match can be found, a new event can be formed.

Origins can be filtered/ignored based on

- ID of agency which has created the origin: `processing.blacklist.agencies`, `processing.whitelist.agencies` (global parameters),

- Hypocenter parameters: `eventAssociation.region.rect`, `eventAssociation.region.minDepth`, `eventAssociation.region.maxDepth`.

### Origin match

The new origin is matched to existing origins by comparing differences in epicenter, origin time, and arrivals (associated picks). The new origin is matched to an existing origin which has the highest rank in the following three groups (1, 2, 3):

1. Location and Time (lowest)

   The difference in horizontal location is less than `eventAssociation.maximumDistance` (degrees) and the difference in origin times is less than `eventAssociation.maximumTimeSpan`.

2. Picks

   The two origins have more than `eventAssociation.minimumMatchingArrivals` matching picks. Picks are matched either by ID or by time depending on `eventAssociation.maximumMatchingArrivalTimeDiff`.

3. Picks and Location and Time (highest)

   This is the best match, for which both the location-and-time and picks criteria above are satisfied.

If more than one origin is found in the highest ranking class, then the first one of them is chosen.

Note

For efficiency events in the cache are scanned first and if no matches are found, the database is scanned for the time window `eventAssociation.eventTimeBefore` - `eventAssociation.eventTimeAfter` around the incoming Origin time. The cached events are ordered by eventID and thus in time.

### No origin match

If no event with an origin that matches the incoming origin is found, then a new event is formed and the origin is associated to that event. The following criteria are applied to allow the creation of the new event:

- The agency for the origin is not black listed (`processing.blacklist.agencies`).

- The origin is automatic and it has more than `eventAssociation.minimumDefiningPhases` arrivals (associated picks).

Association of an origin to an event by matching picks.

## Preferred Origin

The preferred origin is set by ranking of all associated origins. The ranking is controlled by `eventAssociation.priorities` and related configuration parameters.

## Preferred Magnitude

The preferred magnitude is set by ranking of the summary magnitude and all network magnitudes of the preferred origin. The ranking is mainly controlled by `eventAssociation.magTypes` and `eventAssociation.minimumMagnitudes` and related configuration parameters.

Magnitudes where the evaluation mode is ‘rejected’ are ignored.

## Preferred Focal Mechanism

The most recent manual focal mechanism or, if no manual ones are unavailable, the most recent automatic focal mechnisms becomes preferred.

## ID of Events

The ID of an event or eventID uniquely identifies an event. The ID is derived from the time of occurrence of the event within a year. As configured by `eventIDPattern` it typically consists of a prefix configured by `eventIDPrefix` and a string containing the year and a set of characters or numbers defining the time.

## Journals

scevent can be commanded by journals to do a certain action. Journal entries are being received via the messaging bus to any of the subscribed groups. A journal entry contains an action, a subject (a publicID of an object) and optional parameters. Journals can be interactively sent to the messaging by scsendjournal.

If scevent has handled an action, it will send a reply journal entry with an action formed from the origin action name plus OK or Failed. The parameters of the journal entry contain a possible reason.

The following actions are supported by scevent:

EvGrabOrg(objectID, parameters)

  Grabs an origin and associates it to the given event. If the origin is already associated with another event then its reference to this event will be removed.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The ID of the origin to be grabbed

EvMerge(objectID, parameters)

  Merges an event (source) into another event (target). After successful completion the source event will be deleted.

  Parameters:

    - objectID – The ID of an existing event (target)

    - parameters – The ID of an existing event (source)

EvName(objectID, parameters)

  Adds or updates the event description with type “earthquake name”.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – An event name

EvNewEvent(objectID, parameters)

  Creates a new event based on a given origin. The origin must not yet be associated with another event.

  Parameters:

    - objectID – The origin publicID of the origin which will be used to create the new event.

    - parameters – Unused

EvOpComment(objectID, parameters)

  Adds or updates the event comment text with id “Operator”.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The comment text

EvPrefFocMecID(objectID, parameters)

  Sets the preferred focal mechanism ID of an event. If a focal mechanism ID is passed then it will be fixed as preferred solution for this event and any subsequent focal mechanism associations will not cause a change of the preferred focal mechanism.

  If an empty focal mechanism ID is passed then this is considered as “unfix” and scevent will switch back to automatic preferred selection mode.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The focal mechanism ID which will become preferred or empty.

EvPrefMagType(objectID, parameters)

  Set the preferred magnitude of the event matching the requested magnitude type.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The desired preferred magnitude type

EvPrefMw(objectID, parameters)

  Sets the moment magnitude (Mw) of the preferred focal mechanism as preferred magnitude of the event.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – Boolean flag, either “true” or “false”

EvPrefOrgAutomatic(objectID, parameters)

  Releases the fixed origin constraint. This call is equal to `EvPrefOrgID(eventID, '')`.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – Unused

EvPrefOrgEvalMode(objectID, parameters)

  Sets the preferred origin based on an evaluation mode. The configured priorities are still valid. If an empty evaluation mode is passed then scevent releases this constraint.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The evaluation mode (“automatic”, “manual”) or empty

EvPrefOrgID(objectID, parameters)

  Sets the preferred origin ID of an event. If an origin ID is passed then it will be fixed as preferred solution for this event and any subsequent origin associations will not cause a change of the preferred origin.

  If an empty origin ID is passed then this is considered as “unfix” and scevent will switch back to automatic preferred selection mode.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The origin ID which will become preferred or empty.

EvRefresh(objectID, parameters)

  Refreshes the event information. This operation can be useful if the configured fep region files have changed on disc and scevent should update the region information. Changed plugin parameters can be another reason to refresh the event status.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – Unused

EvSplitOrg(objectID, parameters)

  Remove an origin reference from an event and create a new event for this origin.

  Parameters:

    - objectID – The ID of an existing event holding a reference to the given origin ID.

    - parameters – The ID of the origin to be split

EvType(objectID, parameters)

  Sets the event type to the passed value.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The event type

EvTypeCertainty(objectID, parameters)

  Sets the event type certainty to the passed value.

  Parameters:

    - objectID – The ID of an existing event

    - parameters – The event type certainty

## Plugins

- EventType

  evtype plugin for scevent

- RegionCheck

  evrc plugin for scevent

## Module Configuration

`etc/defaults/global.cfg`
`etc/defaults/scevent.cfg`
`etc/global.cfg`
`etc/scevent.cfg`
`~/.seiscomp/global.cfg`
`~/.seiscomp/scevent.cfg`

scevent inherits global options.

eventIDPrefix

  Type: string

  Prefix for all Event IDs

eventIDPattern

  Default: `%p%Y%04c`

  Type: string

  Defines the pattern to generate an event ID.

  %p : prefix

  %Y : year

  %[w]c: alpha character

  %[w]C: upper case alpha character

  %[w]d: decimal

  %[w]x: hexadecimal

  %[w]X: upper case hexadecimal

  [w] is an optional width parameter.

eventIDLookupMargin

  Default: `-1`

  Type: integer

  Configures the number of event ID slots to look back and forth when an event ID is already taken. The default in previous versions was 5. Now -1 means that the margin is determined automatically based on "eventAssociation.eventTimeBefore" and "eventAssociation.eventTimeAfter". According to the configured "eventIDPattern" a fixed time range per slot can be computed and with that width the number of look ahead slots and look back slots can be computed based on the given time ranges for event association.

populateFERegion

  Default: `false`

  Type: boolean

  If enabled, then the EventDescription with type ‘Flinn-Engdahl region’ will be populated with the Flinn-Engdahl region name.

restAPI

  Type: string

  Defines the bind adress of the REST API endpoint. This API allows to query for possible event associations of origin candidates.

processing.blacklist.eventIDs

  Type: list:string

  Defines a list of event ID patterns to be blocked. The items of this list are only matched against %c, %C, %d, %x and %X of the eventIDPattern description. Year (%Y) and prefix (%p) are not matched. The match is case-sensitive, so ‘abcd’ would only by blocked in combination with %c. If %C is used, ‘ABCD’ is matched.

Note

eventAssociation.* Criteria defining if Origins are associated to an event and which Origins and magnitudes become preferred.

eventAssociation.minimumDefiningPhases

  Default: `10`

  Type: int

  Minimum number of Picks for an Origin that is automatic and cannot be associated with an Event to be allowed to form an new Event.

eventAssociation.minimumScore

  Type: double

  Minimum score of an automatic Origin to be allowed to form an new Event. This requires an activated score plugin and a score processor. Configure "score" for defining the score processor and the score processor parameters. If minimumScore is defined, "minimumDefiningPhases" has no effect on association as this phase check will be superseded by the score check. It is the task of the score processor to evaluate a proper score for all input Origins.

eventAssociation.ignoreFMDerivedOrigins

  Default: `true`

  Type: boolean

  Ignore and do not associate Origins derived from CMT/MT inversions.

eventAssociation.eventTimeBefore

  Default: `1800`

  Type: double

  Unit: s

  Time range before the Origin time of an incoming Origin to search for matching events.

eventAssociation.eventTimeAfter

  Default: `1800`

  Type: double

  Unit: s

  Time range after the Origin time of an incoming Origin to search for matching events.

eventAssociation.minimumMatchingArrivals

  Default: `3`

  Type: int

  Minimum number of matching picks between two Origins to be associated to the same event.

eventAssociation.maximumMatchingArrivalTimeDiff

  Default: `-1`

  Type: double

  Unit: s

  Negative time window: compare only pickIDs to find matching arrivals. A non negative value (including 0) compares pick times regardless of the pickID. Pass: |pick1.time - pick2.time| <= threshold

eventAssociation.compareAllArrivalTimes

  Default: `true`

  Type: boolean

  This parameter is only used in conjunction with eventAssociation.maximumMatchingArrivalTimeDiff. If a station has multiple associated arrivals for a particular event, this flag defines if the time distance of a new pick to all arrivals must be within eventAssociation.maximumMatchingArrivalTimeDiff or if one matching arrival is enough.

eventAssociation.allowLooseAssociatedArrivals

  Default: `false`

  Type: boolean

  Allows to match picks that are associated with weight 0.

eventAssociation.maximumTimeSpan

  Default: `60`

  Type: double

  Unit: s

  Associates an Origin with an existing event if the Origin time differs not more than 60 seconds unless the minimumMatchingArrivals criteria matches.

eventAssociation.maximumDistance

  Default: `5`

  Type: double

  Unit: degrees

  Allowed location difference between an incoming Origin compared with preferred Origins to get associated.

eventAssociation.magTypes

  Default: `M`

  Type: list:string

  Magnitude type priority list for becoming a preferred magnitude for an event.

  Example:

  M, mBc, Mw(mB), Mwp, ML, MLh, MLv, mb

eventAssociation.enableFallbackMagnitude

  Default: `false`

  Type: boolean

  If true, one magnitude will be preferred even if magnitude criteria are not fullfilled.

eventAssociation.minimumMagnitudes

  Default: `4`

  Type: int

  Minimum number of station magnitudes referenced to a network magnitude to become a preferred magnitude.

eventAssociation.minMwCount

  Default: `8`

  Type: int

  Minimum number of station magnitudes required for Mw(mB) to be considered as preferred magnitude.

eventAssociation.mbOverMwCount

  Default: `30`

  Type: int

  Minimum number of station magnitudes which ensures that Mw(mB) will be preferred and not mb.

eventAssociation.mbOverMwValue

  Default: `6`

  Type: double

  Average between mb and Mw(mB) which must be exceeded to become Mw(mB) preferred.

eventAssociation.magPriorityOverStationCount

  Default: `false`

  Type: boolean

  If false then the station count rules out the magnitude priority which is only taken into account if two magnitudes have the same station count.

  If true then the priority rules out the station count which is only taken into account if two magnitudes have the same priority.

eventAssociation.priorities

  Default: `AGENCY, STATUS, PHASES_AUTOMATIC, TIME_AUTOMATIC`

  Type: list:string

  The general priority list to decide if an Origin becomes preferred. The priority decreases in the order of the parameters. This list is not used unless this parameter is activated.

  Empty priority list: scevent replicates the default hard wired behaviour: AGENCY, STATUS, PHASES_AUTOMATIC, TIME_AUTOMATIC

  Each item in the list corresponds to a check that is performed. Each check computes a score of the incoming Origin (s1) and the current preferred Origin (s2). If the s1 is lower than s2, the incoming Origin is rejected and does not become preferred. All subsequent checks are ignored. If s1 is equal to s2, the next check in the list is performed. If s1 is larger than s2, the Origin becomes preferred and all subsequent checks are ignored.

  Available tokens:

  AGENCY: check based on agency priorities

  AUTHOR: check based on author priorities

  MODE: evaluation mode priority: 0 = unset, 1 = automatic, 2 = manual, manual over-rules automatic

  STATUS: priority combined from evaluation status and evaluation mode: -100 = status is rejected, -1 = status is reported, 0 = status is preliminary or status is unset and mode is automatic, 1 = status is confirmed or status is unset and mode is manual, 2 = status is reviewed, 3 = status is final,

  METHOD: check based on the method priorities

  PHASES: higher phase count = higher priority

  PHASES_AUTOMATIC: only checks phase priorities for incoming automatic Origins

  RMS: lower rms = higher priority

  RMS_AUTOMATIC: only check RMS on incoming automatic Origins

  TIME: more recent Origins (creationTime) have higher priorities

  TIME_AUTOMATIC: only check creationTime priority on incoming automatic Origins

  SCORE: evaluates the score according to a configured ScoreProcessor and prefers the Origin/Focalmechanism with the highest score.

eventAssociation.agencies

  Type: list:string

  The agencyID priority list. When the eventtool comes to the point to select a preferred Origin based on AGENCY it orders all Origins by its agency priority and selects then the best one among the highest priority agency. It also defines the agency priority for custom priority checks (eventAssociation.priorities).

  The parameter is only considered when defined in "priorities".

eventAssociation.authors

  Type: list:string

  The author priority list. When the eventtool comes to the point to select a preferred Origin based on AUTHOR it orders all Origins by its author priority and selects then the best one among the highest priority author. It also defines the author priority for custom priority checks (eventAssociation.priorities).

  The parameter is only considered when defined in "priorities".

eventAssociation.methods

  Type: list:string

  The method priority list. When the eventtool comes to the point to select a preferred Origin based on METHOD it orders all Origins by its methodID priority and selects then the best one among the highest priority method. It also defines the method priority for custom priority checks (eventAssociation.priorities). A defined method string must match exactly the string in Origin.methodID.

  The parameter is only considered when defined in "priorities".

eventAssociation.score

  Type: string

  Defines the ScoreProcessor interface to be used along with priority "SCORE".

  The parameter is only considered when defined in "priorities".

eventAssociation.declareFakeEventForRejectedOrigin

  Default: `false`

  Type: boolean

  If the preferred Origin has evaluation status ‘rejected’, the Event type will be set to ‘not existing’ unless the Event type has been fixed by an operator or the preferred Origin has been fixed.

eventAssociation.delayTimeSpan

  Type: int

  Unit: s

  Configures a timespan to delay Event creation. If a new Origin arrives which cannot be associated to an existing Event, delay the Event creation for a certain timespan.

Note

eventAssociation.region.* Region filter for creating events. Use with care! Origins outside may be ignored even if they would become preferred otherwise.

eventAssociation.region.rect

  Type: string

  Region by geographic coordinates.

  Format: "South, East, North, West"

eventAssociation.region.minDepth

  Type: double

  Unit: km

  Minimum depth.

eventAssociation.region.maxDepth

  Type: double

  Unit: km

  Maximum depth.

Note

eventAssociation.delayFilter.* The delayFilter group configures an Origin filter to activate the delay feature for this Origin. If more than one filter is given they are combined with AND.

eventAssociation.delayFilter.agencyID

  Type: string

  The agencyID of the Origin to be delayed.

eventAssociation.delayFilter.author

  Type: string

  The author of the Origin to be delayed.

eventAssociation.delayFilter.evaluationMode

  Type: string

  The evaluation mode of the Origin to be delayed. Can be either "manual" or "automatic".

### EventType extension

evtype plugin for scevent

Note

eventType.* Set the event type based on type comments of picks. Add the plugin “evtype” to the list of plugins in the order of priority to make this feature available.

eventType.setEventType

  Default: `false`

  Type: boolean

  Allow setting the event type. The type of events which have manual origins will not be changed unless configured explicitely by "overwriteManual".

eventType.overwriteEventType

  Default: `true`

  Type: boolean

  Allow overwriting existing event types set by other modules.

eventType.overwriteManual

  Default: `false`

  Type: boolean

  Allow setting the event type if the mode of the preferred origin is manual or if the event type was set manually.

eventType.pickCommentIDs

  Default: `scrttv:eventTypeHint,deepc:eventTypeHint`

  Type: list:string

  Consider comments of picks which have one of the given values. An empty list disables setting the type.

### RegionCheck extension

evrc plugin for scevent

Note

rc.* Test if events lie within or outside geographic regions defined by polygons. Events within a region are flagged as positive, outside as negative. The event type is set accordingly. Add the plugin “evrc” to the plugins parameter in the order of priority to make this feature available. Read the documentation of the RegionCheck for more details.

rc.setEventType

  Default: `true`

  Type: boolean

  Allow setting the event type. The type of events which have manual origins will not be changed unless configured explicitely by "overwriteManual".

rc.overwriteEventType

  Default: `true`

  Type: boolean

  Allow overwriting existing event types. Disabling does not allow accounting for changes in source region.

rc.overwriteManual

  Default: `false`

  Type: boolean

  Allow setting the event type if the mode of the preferred origin is manual or if the event type was set manually.

rc.regions

  Default: `!reject`

  Type: list:string

  The list of closed polygon names defining regions for flagging event as positive or negative. A polygon name defines a positive region but names with prefix ! (exclamation mark) define negative regions. Evaluation is done in the order of the polygons. The last matching criteria applies and the event type is set accordingly.

  Default: If events are not positive or are negative regions the event type is set to "outside of network interest". Default: "!reject", use "accecpt" to overwrite the default.

  Examples:

  Events are flagged positive within the polygon "germany":

  germany

  All events are flagged positive but events within the polygon "quarries" are negative:

  accept,!quarries

  Events within the polygon "germany" are flagged positive but all other events and events within the polygon "quarries" are negaitve:

  germany,!quarries

  All events are flagged positive but events within the polygon "germany" are negative and all events within the polygon "saxony" are positive:

  accept,!germany,saxony

rc.readEventTypeFromBNA

  Default: `false`

  Type: boolean

  Consider the event type, minDepth and maxDepth values from the polygons defined by GeoJSON or BNA files. Read the documentation of the RegionCheck plugin for the details.

  When eventType is defined in the polygons, the value supersedes values of ‘eventTypePositive’ and ‘eventTypeNegative’. If not set, ‘eventTypePositive’ and ‘eventTypeNegative’ are considered.

rc.eventTypePositive

  Type: string

  New type of an event which is flagged positive. Ignored if ‘readEventTypeFromBNA’ is active and the polygons define eventType.

  Empty: Do not set type.

rc.eventTypeNegative

  Default: `"outside of network interest"`

  Type: string

  New type of an event which is flagged negative. Ignored if ‘readEventTypeFromBNA’ is active and the polygons define eventType.

  Empty means default: "outside of network interest"

## Command-Line Options

### Generic

-h, --help

  Show help message.

-V, --version

  Show version information.

--config-file arg

  Use alternative configuration file. When this option is used the loading of all stages is disabled. Only the given configuration file is parsed and used. To use another name for the configuration create a symbolic link of the application or copy it. Example: scautopick -> scautopick2.

--plugins arg

  Load given plugins.

-D, --daemon

  Run as daemon. This means the application will fork itself and doesn’t need to be started with &.

--auto-shutdown arg

  Enable/disable self-shutdown because a master module shutdown. This only works when messaging is enabled and the master module sends a shutdown message (enabled with --start-stop-msg for the master module).

--shutdown-master-module arg

  Set the name of the master-module used for auto-shutdown. This is the application name of the module actually started. If symlinks are used, then it is the name of the symlinked application.

--shutdown-master-username arg

  Set the name of the master-username of the messaging used for auto-shutdown. If "shutdown-master-module" is given as well, this parameter is ignored.

-x, --expiry time

  Time span in hours after which objects expire.

-O, --origin-id publicID

  OriginID to be associated. When given no messages are sent. Only the status of the association is written to stdout.

### Verbosity

--verbosity arg

  Verbosity level [0..4]. 0:quiet, 1:error, 2:warning, 3:info, 4:debug.

-v, --v

  Increase verbosity level (may be repeated, eg. -vv).

-q, --quiet

  Quiet mode: no logging output.

--component arg

  Limit the logging to a certain component. This option can be given more than once.

-s, --syslog

  Use syslog logging backend. The output usually goes to /var/lib/messages.

-l, --lockfile arg

  Path to lock file.

--console arg

  Send log output to stdout.

--debug

  Execute in debug mode. Equivalent to --verbosity=4 --console=1 .

--log-file arg

  Use alternative log file.

### Messaging

-u, --user arg

  Overrides configuration parameter `connection.username`.

-H, --host arg

  Overrides configuration parameter `connection.server`.

-t, --timeout arg

  Overrides configuration parameter `connection.timeout`.

-g, --primary-group arg

  Overrides configuration parameter `connection.primaryGroup`.

-S, --subscribe-group arg

  A group to subscribe to. This option can be given more than once.

--start-stop-msg arg

  Set sending of a start and a stop message.

### Database

--db-driver-list

  List all supported database drivers.

-d, --database arg

  The database connection string, format: service://user:pwd@host/database. "service" is the name of the database driver which can be queried with "--db-driver-list".

--config-module arg

  The config module to use.

--inventory-db arg

  Load the inventory from the given database or file, format: [service://]location .

--db-disable

  Do not use the database at all