Class EventsLogger

java.lang.Object
org.orekit.propagation.events.EventsLogger

public class EventsLogger extends Object
This class logs events detectors events during propagation.

As events detectors are triggered during orbit propagation, an event specific eventOccurred method is called. This class can be used to add a global logging feature registering all events with their corresponding states in a chronological sequence (or reverse-chronological if propagation occurs backward).

This class works by wrapping user-provided events detectors before they are registered to the propagator. The wrapper monitor the calls to eventOccurred and store the corresponding events as EventsLogger.LoggedEvent instances. After propagation is complete, the user can retrieve all the events that have occurred at once by calling method getLoggedEvents().

Author:
Luc Maisonobe
  • Constructor Details

    • EventsLogger

      public EventsLogger(boolean logResetStates, List<EventsLogger.LoggedEvent> inputLog)
      Constructor from existing log with flag to keep reset states.
      Parameters:
      logResetStates - flag to turn on the storage of reset states (if false, getter in event is set to null)
      inputLog - log to be kept at start

      Build an non-empty logger for events detectors.

      Since:
      14.0
    • EventsLogger

      public EventsLogger(List<EventsLogger.LoggedEvent> inputLog)
      Constructor from existing log.
      Parameters:
      inputLog - log to be kept at start

      Build an non-empty logger for events detectors.

      Since:
      14.0
    • EventsLogger

      public EventsLogger()
      Simple constructor.

      Build an empty logger for events detectors.

  • Method Details

    • monitorDetector

      public <T extends EventDetector> EventDetector monitorDetector(T monitoredDetector)
      Monitor an event detector.

      In order to monitor an event detector, it must be wrapped thanks to this method as follows:

       Propagator propagator = new XyzPropagator(...);
       EventsLogger logger = new EventsLogger();
       EventDetector detector = new UvwDetector(...);
       propagator.addEventDetector(logger.monitorDetector(detector));
       

      Note that the event detector returned by the getEventDetector method in LoggedEvent instances returned by getLoggedEvents() are the monitoredDetector instances themselves, not the wrapping detector returned by this method.

      Type Parameters:
      T - class type for the generic version
      Parameters:
      monitoredDetector - event detector to monitor
      Returns:
      the wrapping detector to add to the propagator
    • clearLoggedEvents

      public void clearLoggedEvents()
      Clear the logged events.
    • getLoggedEvents

      public List<EventsLogger.LoggedEvent> getLoggedEvents()
      Get an immutable copy of the logged events.

      The copy is independent of the logger. It is preserved event if the clearLoggedEvents method is called and the logger reused in another propagation.

      Returns:
      an immutable copy of the logged events