Class FieldEventsLogger<T extends CalculusFieldElement<T>>

  • Type Parameters:
    T - type of the field elements

    public class FieldEventsLogger<T extends CalculusFieldElement<T>>
    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 FieldEventsLogger.FieldLoggedEvent 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

      • FieldEventsLogger

        public FieldEventsLogger()
        Simple constructor.

        Build an empty logger for events detectors.

    • Method Detail

      • monitorDetector

        public FieldEventDetector<T> monitorDetector​(FieldEventDetector<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();
         FieldEventDetector<T> detector = new UvwDetector(...);
         propagator.addEventDetector(logger.monitorDetector(detector));
         

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

        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<FieldEventsLogger.FieldLoggedEvent<T>> 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