Class 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 Detail

      • EventsLogger

        public EventsLogger()
        Simple constructor.

        Build an empty logger for events detectors.

    • Method Detail

      • monitorDetector

        public <T extends EventDetectorEventDetector 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