Class BooleanDetector
- java.lang.Object
-
- org.orekit.propagation.events.AbstractDetector<BooleanDetector>
-
- org.orekit.propagation.events.BooleanDetector
-
- All Implemented Interfaces:
Serializable
,EventDetector
public class BooleanDetector extends AbstractDetector<BooleanDetector>
This class provides AND and OR operations for event detectors. This class treats positive values of the g function as true and negative values as false.One example for an imaging satellite might be to only detect events when a satellite is overhead (elevation > 0) AND when the ground point is sunlit (Sun elevation > 0). Another slightly contrived example using the OR operator would be to detect access to a set of ground stations and only report events when the satellite enters or leaves the field of view of the set, but not hand-offs between the ground stations.
For the BooleanDetector is important that the sign of the g function of the underlying event detector is not arbitrary, but has a semantic meaning, e.g. in or out, true or false. This class works well with event detectors that detect entry to or exit from a region, e.g.
EclipseDetector
,ElevationDetector
,LatitudeCrossingDetector
. Using this detector with detectors that are not based on entry to or exit from a region, e.g.DateDetector
,LongitudeCrossingDetector
, will likely lead to unexpected results. To apply conditions to this latter type of event detectors aEventEnablingPredicateFilter
is usually more appropriate.- Author:
- Evan Ward
- See Also:
andCombine(Collection)
,orCombine(Collection)
,notCombine(EventDetector)
,EventEnablingPredicateFilter
,EventSlopeFilter
, Serialized Form
-
-
Field Summary
-
Fields inherited from class org.orekit.propagation.events.AbstractDetector
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static BooleanDetector
andCombine(Collection<? extends EventDetector> detectors)
Create a new event detector that is the logical AND of the given event detectors.static BooleanDetector
andCombine(EventDetector... detectors)
Create a new event detector that is the logical AND of the given event detectors.protected BooleanDetector
create(double newMaxCheck, double newThreshold, int newMaxIter, EventHandler<? super BooleanDetector> newHandler)
Build a new instance.double
g(SpacecraftState s)
Compute the value of the switching function.void
init(SpacecraftState s0, AbsoluteDate t)
Initialize event handler at the start of a propagation.static NegateDetector
notCombine(EventDetector detector)
Create a new event detector that negates the g function of another detector.static BooleanDetector
orCombine(Collection<? extends EventDetector> detectors)
Create a new event detector that is the logical OR or the given event detectors.static BooleanDetector
orCombine(EventDetector... detectors)
Create a new event detector that is the logical OR or the given event detectors.-
Methods inherited from class org.orekit.propagation.events.AbstractDetector
eventOccurred, getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, resetState, withHandler, withMaxCheck, withMaxIter, withThreshold
-
-
-
-
Method Detail
-
andCombine
public static BooleanDetector andCombine(EventDetector... detectors)
Create a new event detector that is the logical AND of the given event detectors.The created event detector's g function is positive if and only if the g functions of all detectors in
detectors
are positive.The starting interval, threshold, and iteration count are set to the most stringent (minimum) of all the
detectors
. The event handlers of the underlyingdetectors
are not used, instead the default handler isContinueOnEvent
.- Parameters:
detectors
- the operands. Must contain at least one detector.- Returns:
- a new event detector that is the logical AND of the operands.
- Throws:
NoSuchElementException
- ifdetectors
is empty.- See Also:
BooleanDetector
,andCombine(Collection)
,orCombine(EventDetector...)
,notCombine(EventDetector)
-
andCombine
public static BooleanDetector andCombine(Collection<? extends EventDetector> detectors)
Create a new event detector that is the logical AND of the given event detectors.The created event detector's g function is positive if and only if the g functions of all detectors in
detectors
are positive.The starting interval, threshold, and iteration count are set to the most stringent (minimum) of the
detectors
. The event handlers of the underlyingdetectors
are not used, instead the default handler isContinueOnEvent
.- Parameters:
detectors
- the operands. Must contain at least one detector.- Returns:
- a new event detector that is the logical AND of the operands.
- Throws:
NoSuchElementException
- ifdetectors
is empty.- See Also:
BooleanDetector
,andCombine(EventDetector...)
,orCombine(Collection)
,notCombine(EventDetector)
-
orCombine
public static BooleanDetector orCombine(EventDetector... detectors)
Create a new event detector that is the logical OR or the given event detectors.The created event detector's g function is positive if and only if at least one of g functions of the event detectors in
detectors
is positive.The starting interval, threshold, and iteration count are set to the most stringent (minimum) of the
detectors
. The event handlers of the underlying EventDetectors are not used, instead the default handler isContinueOnEvent
.- Parameters:
detectors
- the operands. Must contain at least one detector.- Returns:
- a new event detector that is the logical OR of the operands.
- Throws:
NoSuchElementException
- ifdetectors
is empty.- See Also:
BooleanDetector
,orCombine(Collection)
,andCombine(EventDetector...)
,notCombine(EventDetector)
-
orCombine
public static BooleanDetector orCombine(Collection<? extends EventDetector> detectors)
Create a new event detector that is the logical OR or the given event detectors.The created event detector's g function is positive if and only if at least one of g functions of the event detectors in
detectors
is positive.The starting interval, threshold, and iteration count are set to the most stringent (minimum) of the
detectors
. The event handlers of the underlying EventDetectors are not used, instead the default handler isContinueOnEvent
.- Parameters:
detectors
- the operands. Must contain at least one detector.- Returns:
- a new event detector that is the logical OR of the operands.
- Throws:
NoSuchElementException
- ifdetectors
is empty.- See Also:
BooleanDetector
,orCombine(EventDetector...)
,andCombine(Collection)
,notCombine(EventDetector)
-
notCombine
public static NegateDetector notCombine(EventDetector detector)
Create a new event detector that negates the g function of another detector.This detector will be initialized with the same
EventDetector.getMaxCheckInterval()
,EventDetector.getThreshold()
, andEventDetector.getMaxIterationCount()
asdetector
. The event handler of the underlying detector is not used, instead the default handler isContinueOnEvent
.- Parameters:
detector
- to negate.- Returns:
- an new event detector whose g function is the same magnitude but opposite
sign of
detector
. - See Also:
andCombine(Collection)
,orCombine(Collection)
,BooleanDetector
-
g
public double g(SpacecraftState s)
Description copied from class:AbstractDetector
Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as the integrator will need to find its roots to locate the events.- Specified by:
g
in interfaceEventDetector
- Specified by:
g
in classAbstractDetector<BooleanDetector>
- Parameters:
s
- the current state information: date, kinematics, attitude- Returns:
- value of the switching function
-
create
protected BooleanDetector create(double newMaxCheck, double newThreshold, int newMaxIter, EventHandler<? super BooleanDetector> newHandler)
Description copied from class:AbstractDetector
Build a new instance.- Specified by:
create
in classAbstractDetector<BooleanDetector>
- Parameters:
newMaxCheck
- maximum checking interval (s)newThreshold
- convergence threshold (s)newMaxIter
- maximum number of iterations in the event time searchnewHandler
- event handler to call at event occurrences- Returns:
- a new instance of the appropriate sub-type
-
init
public void init(SpacecraftState s0, AbsoluteDate t)
Description copied from class:AbstractDetector
Initialize event handler at the start of a propagation.This method is called once at the start of the propagation. It may be used by the event handler to initialize some internal data if needed.
The default implementation does nothing
This implementation sets the direction of propagation and initializes the event handler. If a subclass overrides this method it should call
super.init(s0, t)
.- Specified by:
init
in interfaceEventDetector
- Overrides:
init
in classAbstractDetector<BooleanDetector>
- Parameters:
s0
- initial statet
- target time for the integration
-
-