WSF
WsfClusterCorrelation.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFCLUSTERCORRELATION_HPP
13#define WSFCLUSTERCORRELATION_HPP
14
15#include "wsf_mil_export.h"
16
17#include <vector>
18
19class UtInput;
22#include "WsfEvent.hpp"
23
29class WSF_MIL_EXPORT WsfClusterCorrelation : public WsfCorrelationStrategy
30{
31public:
33 ~WsfClusterCorrelation() override;
34
35 bool ProcessInput(UtInput& aInput) override;
36
37 bool Initialize(WsfTrackManager* aTrackManagerPtr) override;
38
39 WsfCorrelationStrategy* Clone() const override { return new WsfClusterCorrelation(*this); }
40
41 WsfLocalTrack* CorrelateImpl(double aSimTime, const WsfTrack& aNonLocalTrack, WsfLocalTrackList& aTrackList) override;
42
43 void ClusterRawTracksIntoLocalTracks(double aSimTime);
44
46
47 WsfLocalTrack* GetCorrelatedTrack(std::vector<WsfTrack*>& aCluster);
48 WsfLocalTrack* GetCorrelatedTrack(const WsfTrackId& aNonLocalTrackId);
49 void MakeCorrelated(const WsfTrackId& aNonLocalTrackId, WsfLocalTrack& aLocalTrack);
50
51 void MakeCorrelated(std::vector<WsfTrack*>& aCluster, WsfLocalTrack& aLocalTrack);
52
53 void MakeDecorrelated(const WsfTrackId& aNonLocalTrackId, WsfLocalTrack& aLocalTrack);
54 void MakeDecorrelated(WsfLocalTrack& aLocalTrack);
55
56 void MakeDecorrelated(std::vector<WsfTrack*>& aCluster);
57
59
60 double GetMaxMeasurementError(double aSimTime, const WsfTrack& aTrack);
61 double GetUpdateInterval() const { return mUpdateInterval; }
62 double GetLastClusterUpdateTime() const { return mLastReclusterTime; }
63
64private:
65 WsfClusterManager* mClusterManagerPtr;
66 std::map<WsfStringId, double> mSensorIdToRangeMap;
67 double mUpdateInterval;
68 double mLastReclusterTime;
69
70 class ClusterCorrelationEvent : public WsfEvent
71 {
72 public:
73 ClusterCorrelationEvent(double aSimTime, WsfClusterCorrelation* aCorrelatorPtr)
74 : WsfEvent(aSimTime)
75 , mCorrelatorPtr(aCorrelatorPtr)
76 {
77 }
78 EventDisposition Execute() override;
79
80 private:
81 WsfClusterCorrelation* mCorrelatorPtr;
82 };
83};
84
85#endif
WsfTrackListT< WsfLocalTrack > WsfLocalTrackList
Definition WsfTrackList.hpp:89
Definition WsfClusterCorrelation.hpp:30
double GetUpdateInterval() const
Definition WsfClusterCorrelation.hpp:61
double GetLastClusterUpdateTime() const
Definition WsfClusterCorrelation.hpp:62
WsfClusterCorrelation(WsfScenario &aScenario)
Definition WsfClusterCorrelation.cpp:35
WsfCorrelationStrategy * Clone() const override
Create a clone of "this" object.
Definition WsfClusterCorrelation.hpp:39
Definition WsfClusterManager.hpp:136
bool ProcessInput(UtInput &aInput) override
Process input from a common source.
Definition WsfCorrelationStrategy.hpp:59
WsfCorrelationStrategy()
Definition WsfCorrelationStrategy.cpp:21
virtual WsfLocalTrack * CorrelateImpl(double aSimTime, const WsfTrack &aNonLocalTrack, WsfLocalTrackList &aTrackList)=0
virtual bool Initialize(WsfTrackManager *aTrackManagerPtr)
Perform any necessary initialization.
Definition WsfCorrelationStrategy.hpp:62
Definition WsfEvent.hpp:29
Definition WsfLocalTrack.hpp:32
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Definition WsfTrackId.hpp:33
Definition WsfTrackManager.hpp:62
An object that represents an 'track' (perception) of something.
Definition WsfTrack.hpp:120
Copyrights Multiple, All Rights Reserved