WSF
WsfSA_Assess.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2020 Infoscitex, a DCS 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 WSF_SA_ASSESS_HPP
13#define WSF_SA_ASSESS_HPP
14
15#include "wsf_air_combat_export.h"
16
17#include "UtMath.hpp"
18#include "WsfSA_Module.hpp"
19#include "WsfSA_Perceive.hpp"
20
21class WsfAirMover;
22class WsfFuel;
24class WsfSA_Group;
25class WsfSA_Processor;
27
29class WSF_AIR_COMBAT_EXPORT WsfSA_Assess : WsfSA_Module
30{
31public:
32 friend class WsfSA_Processor;
33
37
39 {
40 size_t targetIndex{0};
41 std::string targetName{};
42 std::string targetType{};
43 float angleOff_deg{0.0f};
44 float aspectAngle_deg{0.0f};
45 float currentRange_nm{0.0f};
46 float currentDeltaAlt_ft{0.0f};
47 float trackQuality{0.0f};
48 std::string targetCID{};
49 float threatLevel{0.0f};
50 float targetValue{0.0f};
51 float detectionRange_nm{0.0f};
52 float wezDesiredRange_nm{0.0f};
53 float wezMinimum_nm{0.0f};
54 float wezMaximum_nm{0.0f};
55 float wezNoEscape_nm{0.0f};
56 float risk{0.0f};
57 float defensiveness{0.0f};
58 float urgency{0.0f};
59 bool tgtTracked{false};
60 bool acceptableWez{false};
61 };
62
66 bool ProcessInput(UtInput& aInput);
67
72 void Initialize(double aSimTime);
73
78 double TryUpdateEngagements(double aSimTime);
79
84 double TryUpdatePrioritizedItemData(double aSimTime);
85
90 double TryUpdatePrioritizedItemCalculation(double aSimTime);
91
96 void UpdateEngagements(double aSimTime);
97
101 void UpdatePrioritizedItemData(double aSimTime);
102
107 void UpdatePrioritizedItemCalculation(double aSimTime);
108
113 void UpdateEngagementsData(double aSimTime);
114
119 void UpdatePrioritizedThreatsAndTargetsData(double aSimTime);
120
124 void AssessBogiesBandits(double aSimTime);
125
129 void CalculatePrioritizedThreats(double aSimTime);
130
134 void CalculatePrioritizedTargets(double aSimTime);
135
137 void UpdateWeaponSupport(double aSimTime);
138
140 unsigned int MaxPrioritizedThreats() { return mMaxPrioritizedThreats; }
141
145 void SetMaxPrioritizedThreats(unsigned int aMax) { mMaxPrioritizedThreats = aMax; }
146
148 void ResetMaxPrioritizedThreats() { mMaxPrioritizedThreats = mMaxPrioritizedThreatsInitial; }
149
151 unsigned int MaxPrioritizedTargets() { return mMaxPrioritizedTargets; }
152
156 void SetMaxPrioritizedTargets(unsigned int aMax) { mMaxPrioritizedTargets = aMax; }
157
159 void ResetMaxPrioritizedTargets() { mMaxPrioritizedTargets = mMaxPrioritizedTargetsInitial; }
160
161 // .......................................................................................................................
162
163 // These functions support "angles" related calculations (angle off and aspect angle)
164 // These functions support "angle off" related calculations
165
174 static double AngleOffTarget2D(const WsfPlatform& aPlatform, const WsfPlatform& aTargetPlatform);
175
183 double AngleOffTarget2D(const WsfPlatform& aTargetPlatform) const;
184
194 static double AngleOffTarget3D(const WsfPlatform& aPlatform, const WsfPlatform& aTargetPlatform);
195
204 double AngleOffTarget3D(const WsfPlatform& aTargetPlatform) const;
205
206 // These functions support "aspect angle" related calculations
207
215 static double AspectAngleForTarget2D(const WsfPlatform& aPlatform, const WsfPlatform& aTargetPlatform);
216
223 double AspectAngleForTarget2D(const WsfPlatform& aTargetPlatform) const;
224
233 static double AspectAngleForTarget3D(const WsfPlatform& aPlatform, const WsfPlatform& aTargetPlatform);
234
242 double AspectAngleForTarget3D(const WsfPlatform& aTargetPlatform) const;
243
249 static double OffBoresightAngleForTarget(const WsfPlatform& aPlatform, const WsfPlatform& aTargetPlatform);
250
255 double OffBoresightAngleForTarget(const WsfPlatform& aTargetPlatform) const;
256
261 double OffBoresightAngleForTarget(const double aLocationWCS[3]) const;
262
263 // .......................................................................................................................
264
265 // These functions support "angles" related calculations (angle off and aspect angle)
266 // These functions support "detection" related calculations
267
274 double ExpectedDetectionRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
275
282 double ExpectedDetectionRangeAgainstTarget(size_t aIndex) const;
283
290 double ExpectedDetectionRangeByTarget(const WsfPlatform& aTargetPlatform) const;
291
298 double ExpectedDetectionRangeByTarget(size_t aIndex) const;
299
307 double ExpectedDetectionRange(const WsfPlatform& aSourePlatform, const WsfPlatform& aTargetPlatform) const;
308
312 double ExpectedNormalizedDetectionRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
313
317 double ExpectedNormalizedDetectionRangeAgainstTarget(size_t aIndex) const;
318
319 // .......................................................................................................................
320
321 // These functions support "WEZ" related calculations
322
326 double ExpectedNormalizedWezRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
327
331 double ExpectedNormalizedWezRangeAgainstTarget(size_t aIndex) const;
332
337 double ExpectedWezRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
338
343 double ExpectedWezRangeAgainstTarget(size_t aIndex) const;
344
348 double ExpectedMinimumEngagementRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
349
353 double ExpectedMinimumEngagementRangeAgainstTarget(size_t aIndex) const;
354
358 double ExpectedMaximumEngagementRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
359
363 double ExpectedMaximumEngagementRangeAgainstTarget(size_t aIndex) const;
364
368 double ExpectedNoEscapeRangeAgainstTarget(const WsfPlatform& aTargetPlatform) const;
369
373 double ExpectedNoEscapeRangeAgainstTarget(size_t aIndex) const;
374
379 double ExpectedWezRangeByTarget(const WsfPlatform& aTargetPlatform) const;
380
385 double ExpectedWezRangeByTarget(size_t aIndex) const;
386
387 // .......................................................................................................................
388
389 // These functions support range-related calculations
390
395 double CalcSlantRange(const WsfPlatform& aSourcePlatform, const WsfPlatform& aTargetPlatform) const;
396
400 double CalcSlantRange(const WsfPlatform& aTargetPlatform) const;
401
402 // .......................................................................................................................
403
404 // These functions support altitude-related calculations
405
411 double CalcDeltaAltitude(const WsfPlatform& aSourcePlatform, const WsfPlatform& aTargetPlatform) const;
412
417 double CalcDeltaAltitude(const WsfPlatform& aTargetPlatform) const;
418
419 // .......................................................................................................................
420
421 // These functions support "weapons" related calculations
422
424 bool WeaponBayDoorsOpen() const { return false; }
425
427 bool GetWeaponBayOpen() { return mWeaponBayOpen; }
428
430 void SetWeaponBayOpen(bool aWeaponBayOpen) { mWeaponBayOpen = aWeaponBayOpen; }
431
433 std::string GetSelectedWeapon() { return mSelectedWeapon; }
434
436 void SetSelectedWeapon(const std::string& aSelectedWeapon) { mSelectedWeapon = aSelectedWeapon; }
437
438 // .......................................................................................................................
439
440 // These functions support "speed" related calculations
441
445 double GetCornerSpeed_KCAS() const { return 0; }
446
447 // .......................................................................................................................
448
449 // These functions support "threat" related calculations
450
455 std::vector<WsfSA_PerceivedItem*> PerceivedThreatItems(double aSimTime);
456
460 std::vector<size_t> PrioritizedThreatIds() const { return mPrioritizedThreatIds; }
461
465 std::vector<std::string> PrioritizedThreatNames() const { return mPrioritizedThreatNames; }
466
470 const std::list<UtWeakReference<WsfSA_PerceivedItem>>& GetPrioritizedThreatItems() const
471 {
472 return mPrioritizedThreatItems;
473 }
474
478 std::list<UtWeakReference<WsfSA_PerceivedItem>>& GetPrioritizedThreatItems() { return mPrioritizedThreatItems; }
479
483 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedThreatEntities() const
484 {
485 return mPrioritizedThreatEntities;
486 }
487
491 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedThreatEntities()
492 {
493 return mPrioritizedThreatEntities;
494 }
495
499 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedAircraftThreatEntities() const
500 {
501 return mPrioritizedAircraftThreatEntities;
502 }
503
507 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedAircraftThreatEntities()
508 {
509 return mPrioritizedAircraftThreatEntities;
510 }
511
515 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedMissileThreatEntities() const
516 {
517 return mPrioritizedMissileThreatEntities;
518 }
519
523 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedMissileThreatEntities()
524 {
525 return mPrioritizedMissileThreatEntities;
526 }
527
531 const std::list<UtWeakReference<WsfSA_Group>>& GetPrioritizedThreatGroups() const
532 {
533 return mPrioritizedThreatGroups;
534 }
535
539 std::list<UtWeakReference<WsfSA_Group>>& GetPrioritizedThreatGroups() { return mPrioritizedThreatGroups; }
540
544 WsfSA_PerceivedItem* HighestThreat(double aSimTime);
545
549 WsfSA_EntityPerception* HighestThreatEntity(double aSimTime);
550
554 WsfSA_EntityPerception* HighestThreatAircraft(double aSimTime);
555
559 WsfSA_EntityPerception* HighestThreatMissile(double aSimTime);
560
564 WsfSA_Group* HighestThreatGroup(double aSimTime);
565
566 // .......................................................................................................................
567
568 // These functions support "target" related calculations
569
573 std::vector<size_t> PrioritizedTargetIds() const { return mPrioritizedTargetIds; }
574
578 std::vector<std::string> PrioritizedTargetNames() const { return mPrioritizedTargetNames; }
579
582 const std::list<UtWeakReference<WsfSA_PerceivedItem>>& GetPrioritizedTargetItems() const
583 {
584 return mPrioritizedTargetItems;
585 }
586
589 std::list<UtWeakReference<WsfSA_PerceivedItem>>& GetPrioritizedTargetItems() { return mPrioritizedTargetItems; }
590
593 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedTargetEntities() const
594 {
595 return mPrioritizedTargetEntities;
596 }
597
600 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedTargetEntities()
601 {
602 return mPrioritizedTargetEntities;
603 }
604
607 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedAircraftTargetEntities() const
608 {
609 return mPrioritizedAircraftTargetEntities;
610 }
611
614 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedAircraftTargetEntities()
615 {
616 return mPrioritizedAircraftTargetEntities;
617 }
618
621 const std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedMissileTargetEntities() const
622 {
623 return mPrioritizedMissileTargetEntities;
624 }
625
628 std::list<UtWeakReference<WsfSA_EntityPerception>>& GetPrioritizedMissileTargetEntities()
629 {
630 return mPrioritizedMissileTargetEntities;
631 }
632
635 const std::list<UtWeakReference<WsfSA_Group>>& GetPrioritizedTargetGroups() const
636 {
637 return mPrioritizedTargetGroups;
638 }
639
642 std::list<UtWeakReference<WsfSA_Group>>& GetPrioritizedTargetGroups() { return mPrioritizedTargetGroups; }
643
647 WsfSA_PerceivedItem* BestTarget(double aSimTime);
648
652 WsfSA_EntityPerception* BestTargetEntity(double aSimTime);
653
657 WsfSA_EntityPerception* BestTargetAircraft(double aSimTime);
658
662 WsfSA_EntityPerception* BestTargetMissile(double aSimTime);
663
667 WsfSA_Group* BestTargetGroup(double aSimTime);
668
669 // .......................................................................................................................
670
671 // These functions support "track" related calculations
672
674 std::vector<std::size_t> CurrentlyTrackedPlatformIds() const { return mCurrentlyTrackedPlatformIds; }
675
677 std::vector<std::string> CurrentlyTrackedPlatformNames() const { return mCurrentlyTrackedPlatformNames; }
678
680 bool IsCurrentlyBeingTracked(size_t aPlatformId) const;
681
682 // .......................................................................................................................
683
684 // These functions support perceived groups
685
687 const std::list<WsfSA_Group*>& PerceivedGroups() const { return GetSAP()->GetData()->mCurrentlyPerceivedGroups; }
688
690 const std::list<WsfSA_Group*>& FocusedGroups() const { return mFocusedGroups; }
691
693 const std::list<WsfSA_Group*>& UnfocusedGroups() const { return mUnfocusedGroups; }
694
696 void UpdateGroupFocusLists();
697
702 void SortedGroups(int aSortingEnum, std::vector<WsfSA_Group*>& aGroups) const;
703
707 WsfSA_Group* GetGroup(const std::string& aName) const;
708
709 // .......................................................................................................................
710
711 // These functions support situation assessment calculations
712
714 std::string MissionTask() const { return mMissionTask; }
715
717 {
718 LOW = 0,
721 };
722
724 AcceptableRiskLevel AcceptableLevelOfRisk() const { return mAcceptableLevelOfRisk; }
725
727 uint8_t AcceptableLevelOfRiskByte() const { return static_cast<uint8_t>(mAcceptableLevelOfRisk); }
728
730 double Risk() const { return mRisk; }
731
733 double Defensiveness() const { return mDefensiveness; }
734
736 double Urgency() const { return mUrgency; }
737
739 double SelfRisk() const { return mSelfRisk; }
740
742 double FlightRisk() const { return mFlightRisk; }
743
745 double PackageRisk() const { return mPackageRisk; }
746
748 double MissionRisk() const { return mMissionRisk; }
749
751 bool SupportingWeapon() const { return mSupportingWeapon; }
752
754 bool IgnoreMissilesAsThreats() const { return mIgnoreMissilesAsThreats; }
755
757 bool IgnoreBogiesAsThreats() const { return mIgnoreBogiesAsThreats; }
758
760 bool IgnoreMissilesAsTargets() const { return mIgnoreMissilesAsTargets; }
761
763 bool IgnoreBogiesAsTargets() const { return mIgnoreBogiesAsTargets; }
764
766 {
769 , wingArea(0.0)
770 , tailArea(0.0)
771 , engineInletArea(0.0)
772 , engineExitArea(0.0)
773 , sweepAngle(0.0)
777
778 {
779 }
780 AircraftSignatureParameters(double aFuselageFrontalArea,
781 double aWingArea,
782 double aTailArea,
783 double aEngineInletArea,
784 double aEngineExitArea,
785 double aSweepAngle,
786 double aSignatureReductionFactorOverall,
787 double aSignatureReductionFactorNose,
788 double aNoseSignatureReductionAngle)
789 : fuselageFrontalArea(aFuselageFrontalArea)
790 , wingArea(aWingArea)
791 , tailArea(aTailArea)
792 , engineInletArea(aEngineInletArea)
793 , engineExitArea(aEngineExitArea)
794 , sweepAngle(aSweepAngle)
795 , signatureReductionFactorOverall(aSignatureReductionFactorOverall)
796 , signatureReductionFactorNose(aSignatureReductionFactorNose)
797 , noseSignatureReductionAngle(aNoseSignatureReductionAngle)
798 {
799 }
801 double wingArea = 0.0;
802 double tailArea = 0.0;
803 double engineInletArea = 0.0;
804 double engineExitArea = 0.0;
805 double sweepAngle = 0.0;
809 };
810
811 // .......................................................................................................................
812
813protected:
814 WsfSA_Assess(const WsfSA_Assess&) = default;
815
819 void CalculateTrackedPlatforms(double aSimTime);
820
824 bool PlatformIsCurrentlyBeingTracked(size_t aTgtPlatformIndex) const;
825
831 WsfLocalTrack* GetPerceivedTrackedPlatformWithTarget(size_t aTgtPlatformIndex);
832
837 void CalculateOverallRisks(double aSimTime);
838
843 void CalculateOverallDefensiveness(double aSimTime);
844
849 void CalculateOverallUrgency(double aSimTime);
850
857 double CalculateThreatLevel(double aSimTime, WsfSA_PerceivedItem* aThreatItem, bool aIsBogie);
858
865 double CalculateTargetValue(double aSimTime, WsfSA_PerceivedItem* aTargetItem, bool aIsBogie);
866
873 double CalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception* aThreatItem, bool aIsBogie);
874
881 double CalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception* aTargetItem, bool aIsBogie);
882
888 double CalculateRisk(double aSimTime, WsfSA_EntityPerception* aThreatItem);
889
895 double CalculateDefensiveness(double aSimTime, WsfSA_EntityPerception* aThreatItem);
896
902 double CalculateUrgency(double aSimTime, WsfSA_EntityPerception* aThreatItem);
903
904 // This structure is used internally by threat and target scoring and prioritization
906 {
908 explicit PlatormScorePairing(WsfPlatform* aPlatform) { platform = aPlatform; }
909 PlatormScorePairing(WsfPlatform* aPlatform, double aScore)
910 {
911 platform = aPlatform;
912 score = aScore;
913 }
914
916 double score = 0.0;
917 };
918
919 static bool CompareScore(const PlatormScorePairing& first, const PlatormScorePairing& second);
920
926 double ExecuteCalculateRisk(double aSimTime);
927
932 double ExecuteCalculateSelfRisk(double aSimTime);
933
938 double ExecuteCalculateFlightRisk(double aSimTime);
939
944 double ExecuteCalculatePackageRisk(double aSimTime);
945
950 double ExecuteCalculateMissionRisk(double aSimTime);
951
956 double ExecuteCalculateDefensiveness(double aSimTime);
957
962 double ExecuteCalculateUrgency(double aSimTime);
963
970 double ExecuteCalculateEntityThreatLevel(double aSimTime, WsfSA_EntityPerception* aThreatItem, bool aIsBogie);
971
978 double ExecuteCalculateEntityTargetValue(double aSimTime, WsfSA_EntityPerception* aTargetItem, bool aIsBogie);
979
986 double ExecuteCalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception* aThreatItem, bool aIsBogie);
987
994 double ExecuteCalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception* aTargetItem, bool aIsBogie);
995
1002 double ExecuteCalculateGroupThreatLevel(double aSimTime, WsfSA_Group* aThreatItem, bool aIsBogie);
1003
1010 double ExecuteCalculateGroupTargetValue(double aSimTime, WsfSA_Group* aTargetItem, bool aIsBogie);
1011
1014 bool ExecuteCalcWeaponSupport(double aSimTime);
1015
1016private:
1017 struct MissilePkParameters
1018 {
1019 MissilePkParameters(double aNominalPk, double aHeadOnReduction, double aBroadsideReduction)
1020 : nominalPk(aNominalPk)
1021 , headOnReduction(aHeadOnReduction)
1022 , broadsideReduction(aBroadsideReduction)
1023 {
1024 }
1025 double nominalPk = 0.0;
1026 double headOnReduction = 0.0;
1027 double broadsideReduction = 0.0;
1028 };
1029
1030 struct MissileWezParameters
1031 {
1032 MissileWezParameters(double aAvgSpeed,
1033 double aMaxTimeFlight,
1034 double aMaxOffBoresightAngle,
1035 double aMinTimeFlight,
1036 const MissilePkParameters& aPkData)
1037 : avgSpeed(aAvgSpeed)
1038 , maxTimeFlight(aMaxTimeFlight)
1039 , maxOffBoresightAngle(aMaxOffBoresightAngle)
1040 , minTimeFlight(aMinTimeFlight)
1041 , pkData(aPkData)
1042 {
1043 }
1044 MissileWezParameters(double aAvgSpeed,
1045 double aMaxTimeFlight,
1046 double aMaxOffBoresightAngle,
1047 double aMinTimeFlight,
1048 double aNominalPk,
1049 double aHeadOnReduction,
1050 double aBroadsideReduction)
1051 : avgSpeed(aAvgSpeed)
1052 , maxTimeFlight(aMaxTimeFlight)
1053 , maxOffBoresightAngle(aMaxOffBoresightAngle)
1054 , minTimeFlight(aMinTimeFlight)
1055 , pkData(aNominalPk, aHeadOnReduction, aBroadsideReduction)
1056 {
1057 }
1058 double avgSpeed = 0.0;
1059 double maxTimeFlight = 0.0;
1060 double maxOffBoresightAngle = UtMath::cPI;
1061 double minTimeFlight = 0.0;
1062 MissilePkParameters pkData;
1063 };
1064
1065 struct MissileRangeParameters
1066 {
1067 MissileRangeParameters()
1068 : range(0.0)
1069 , time(0.0)
1070 , pk(0.0)
1071 {
1072 }
1073 MissileRangeParameters(double aRange, double aTime, double aPk)
1074 : range(aRange)
1075 , time(aTime)
1076 , pk(aPk)
1077 {
1078 }
1079 double range = 0.0;
1080 double time = 0.0;
1081 double pk = 0.0;
1082 };
1083
1093 bool SimpleWezCalculationAircraft(const WsfPlatform& aTargetPlatform,
1094 MissileRangeParameters& aRmax,
1095 MissileRangeParameters& aRne,
1096 MissileRangeParameters& aRmin,
1097 double& aCurrentRange,
1098 bool& aEngageable) const;
1099
1110 bool SimpleWezCalculationAircraft(const WsfPlatform& aAircraftPlatform,
1111 const WsfPlatform& aTargetPlatform,
1112 MissileRangeParameters& aRmax,
1113 MissileRangeParameters& aRne,
1114 MissileRangeParameters& aRmin,
1115 double& aCurrentRange,
1116 bool& aEngageable) const;
1117
1128 bool SimpleMissileWezCalculation(const WsfPlatform& aTargetPlatform,
1129 const MissileWezParameters& aMissileParameters,
1130 MissileRangeParameters& aRmax,
1131 MissileRangeParameters& aRne,
1132 MissileRangeParameters& aRmin,
1133 double& aCurrentRange,
1134 bool& aEngageable) const;
1135
1147 bool SimpleMissileWezCalculation(const WsfPlatform& aAircraftPlatform,
1148 const WsfPlatform& aTargetPlatform,
1149 const MissileWezParameters& aMissileParameters,
1150 MissileRangeParameters& aRmax,
1151 MissileRangeParameters& aRne,
1152 MissileRangeParameters& aRmin,
1153 double& aCurrentRange,
1154 bool& aEngageable) const;
1155
1167 bool LaunchComputerMissileWezLookup(const WsfPlatform& aAircraftPlatform,
1168 const WsfPlatform& aTargetPlatform,
1169 const MissileWezParameters& aMissileParameters,
1170 MissileRangeParameters& aRmax,
1171 MissileRangeParameters& aRne,
1172 MissileRangeParameters& aRmin,
1173 double& aCurrentRange,
1174 bool& aEngageable) const;
1175
1185 bool SimpleMissileWezCalculationInflight(const WsfPlatform& aMissilePlatform,
1186 WsfPlatform& aTargetPlatform,
1187 const MissileWezParameters& aMissileParameters,
1188 double& aRemainingRange,
1189 double& aRemainingTime,
1190 double& aPk) const;
1191
1199 double SimpleCalcPkBasedOnAngleOff(const MissilePkParameters& aParameters, double aAngleOff) const;
1200
1205 bool IsMediumRangeMissile(const std::string& aName) const;
1206
1211 bool IsShortRangeMissile(const std::string& aName) const;
1212
1218 double TargetCrossSection(const WsfPlatform& aTargetPlatform, double aAzimuth, double aElevation) const;
1219
1220 // Script-based Functions
1221 // ..........................................................................................................
1222
1223 UtScript* mCalculateRiskScriptPtr{nullptr};
1224 UtScript* mCalculateSelfRiskScriptPtr{nullptr};
1225 UtScript* mCalculateFlightRiskScriptPtr{nullptr};
1226 UtScript* mCalculatePackageRiskScriptPtr{nullptr};
1227 UtScript* mCalculateMissionRiskScriptPtr{nullptr};
1228 UtScript* mCalculateDefensivenessScriptPtr{nullptr};
1229 UtScript* mCalculateUrgencyScriptPtr{nullptr};
1230 UtScript* mCalculateEntityThreatLevelScriptPtr{
1231 nullptr};
1232 UtScript* mCalculateEntityTargetValueScriptPtr{
1233 nullptr};
1234 UtScript* mCalculateMissileThreatLevelScriptPtr{
1235 nullptr};
1236 UtScript* mCalculateMissileTargetValueScriptPtr{
1237 nullptr};
1238 UtScript* mCalculateGroupThreatLevelScriptPtr{
1239 nullptr};
1240 UtScript* mCalculateGroupTargetValueScriptPtr{
1241 nullptr};
1242 UtScript* mCalculateRiskPosedByEntityScriptPtr{
1243 nullptr};
1244 UtScript* mCalculateDefensivenessInducedByEntityScriptPtr{
1245 nullptr};
1246 UtScript* mCalculateUrgencyInducedByEntityScriptPtr{
1247 nullptr};
1248
1249 // Movers and fuel objects
1250 // ..........................................................................................................
1251
1252 WsfP6DOF_Mover* mP6DofMover{nullptr};
1253 wsf::six_dof::Mover* mSixDOF_Mover{nullptr};
1254 WsfBrawlerMover* mBrawlerMover{nullptr};
1255 WsfBrawlerFuel* mBrawlerFuel{nullptr};
1256 WsfAirMover* mAirMover{nullptr};
1257 WsfFuel* mAirMoverFuel{nullptr};
1258
1259 // Weapon data
1260 // ......................................................................................................................
1261
1262 UtScript* mCalculateWeaponSupport{nullptr};
1263 std::string mSelectedWeapon;
1264 bool mWeaponBayOpen{false};
1265 bool mSupportingWeapon{false};
1266
1267 // Perceived data and groups
1268 // ........................................................................................................
1269
1270 const WsfSA_Processor::PerceiveData* mPerceivedDataSummary{
1271 nullptr};
1272 std::list<WsfSA_Group*> mFocusedGroups;
1273 std::list<WsfSA_Group*> mUnfocusedGroups;
1274
1275 // Mission task, risk, defensiveness and urgency
1276 // ....................................................................................
1277
1278 std::string mMissionTask;
1279 AcceptableRiskLevel mAcceptableLevelOfRisk{LOW};
1280 double mRisk{0.0};
1281 double mDefensiveness{0.0};
1282 double mUrgency{0.0};
1283 double mSelfRisk{0.0};
1284 double mFlightRisk{0.0};
1285 double mPackageRisk{0.0};
1286 double mMissionRisk{0.0};
1287
1288 // Prioritized threats and targets
1289 // ..................................................................................................
1290
1291 unsigned int mMaxPrioritizedThreats{0};
1292 unsigned int mMaxPrioritizedThreatsInitial{0};
1293 unsigned int mMaxPrioritizedTargets{0};
1294 unsigned int mMaxPrioritizedTargetsInitial{0};
1295
1296 std::list<UtWeakReference<WsfSA_PerceivedItem>> mPrioritizedThreatItems;
1297 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedThreatEntities;
1298 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedAircraftThreatEntities;
1300 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedMissileThreatEntities;
1302 std::list<UtWeakReference<WsfSA_Group>> mPrioritizedThreatGroups;
1303 std::list<UtWeakReference<WsfSA_PerceivedItem>> mPrioritizedTargetItems;
1304 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedTargetEntities;
1305 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedAircraftTargetEntities;
1307 std::list<UtWeakReference<WsfSA_EntityPerception>> mPrioritizedMissileTargetEntities;
1309 std::list<UtWeakReference<WsfSA_Group>> mPrioritizedTargetGroups;
1310
1311 double mBogieThreatScoreMultiplier{1.0};
1312 double mBogieTargetScoreMultiplier{1.0};
1313
1314 // Engagement data
1315 // ..................................................................................................................
1316
1317 // Prioritized threats
1318 std::vector<size_t> mPrioritizedThreatIds;
1319 std::vector<std::string> mPrioritizedThreatNames;
1320
1321 // Prioritized targets
1322 std::vector<size_t> mPrioritizedTargetIds;
1323 std::vector<std::string> mPrioritizedTargetNames;
1324
1325 // Currently tracked platforms
1326 std::vector<size_t> mCurrentlyTrackedPlatformIds;
1327 std::vector<std::string> mCurrentlyTrackedPlatformNames;
1328
1329 // List of engagements
1330 std::vector<AssessEngagementData> mEngagementDataList;
1331
1332 // Temporary detection and WEZ range data
1333 // ...........................................................................................
1334
1335 MissileWezParameters mBlueMissileParametersMRM;
1336 MissileWezParameters mBlueMissileParametersSRM;
1337 MissileWezParameters mRedMissileParametersMRM;
1338 MissileWezParameters mRedMissileParametersSRM;
1339 AircraftSignatureParameters mBlueAircraftSignature;
1340 AircraftSignatureParameters mRedAircraftSignature;
1341
1342 // Other data
1343 // .......................................................................................................................
1344
1345 bool mIgnoreMissilesAsThreats{false};
1346 bool mIgnoreBogiesAsThreats{false};
1347 bool mIgnoreMissilesAsTargets{true};
1348 bool mIgnoreBogiesAsTargets{true};
1349 double mLastTimeCalculatedTrackedPlatforms{0.0};
1350
1351 // ----------------------------------------------------------------------------------------------------------------------------------
1352};
1353
1354#endif
Definition WsfAirMover.hpp:32
Definition WsfFuel.hpp:30
Definition WsfLocalTrack.hpp:32
Platforms represent a entity within the simulation.
Definition WsfPlatform.hpp:115
const std::list< WsfSA_Group * > & FocusedGroups() const
This returns a list of WsfSA_Groups that are focused.
Definition WsfSA_Assess.hpp:690
double CalculateRisk(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the risk posed by the specified threat SA entity to the current platform Risk is normalized...
Definition WsfSA_Assess.cpp:3023
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedThreatEntities() const
This returns a const list of prioritized threat perceived entities, beginning with the highest priori...
Definition WsfSA_Assess.hpp:483
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftThreatEntities() const
This returns a const list of prioritized aircraft threat entity perceptions, beginning with the highe...
Definition WsfSA_Assess.hpp:499
std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedTargetGroups()
This returns a list of prioritized target unfocused groups, beginning with the highest priority targe...
Definition WsfSA_Assess.hpp:642
std::vector< size_t > PrioritizedTargetIds() const
This returns a list of prioritized target platform ids, beginning with the highest priority target an...
Definition WsfSA_Assess.hpp:573
void SetSelectedWeapon(const std::string &aSelectedWeapon)
This sets the name of the current selected weapon.
Definition WsfSA_Assess.hpp:436
double ExecuteCalculateGroupTargetValue(double aSimTime, WsfSA_Group *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateGroupTargetValue".
Definition WsfSA_Assess.cpp:3478
double ExecuteCalculateUrgency(double aSimTime)
This will call an AFSIM script function "CalculateUrgency".
Definition WsfSA_Assess.cpp:3318
double Urgency() const
This returns a normalized urgency level, ranging from 0 (no urgency) to 1 (maximum urgency).
Definition WsfSA_Assess.hpp:736
const std::list< WsfSA_Group * > & UnfocusedGroups() const
This returns a list of WsfSA_Groups that are unfocused.
Definition WsfSA_Assess.hpp:693
unsigned int MaxPrioritizedThreats()
Return the max prioritized threat count the platform can handle.
Definition WsfSA_Assess.hpp:140
std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedThreatGroups()
This returns a list of prioritized threat unfocused groups, beginning with the highest priority threa...
Definition WsfSA_Assess.hpp:539
std::vector< std::string > PrioritizedTargetNames() const
This returns a list of prioritized target platform names, beginning with the highest priority target ...
Definition WsfSA_Assess.hpp:578
std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedTargetItems()
This returns a list of prioritized target perceived items, beginning with the highest priority target...
Definition WsfSA_Assess.hpp:589
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftThreatEntities()
This returns a list of prioritized aircraft threat entity perceptions, beginning with the highest pri...
Definition WsfSA_Assess.hpp:507
bool ExecuteCalcWeaponSupport(double aSimTime)
This will call an AFSIM script function "CalcWeaponSupport".
Definition WsfSA_Assess.cpp:3504
const std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedThreatGroups() const
This returns a const list of prioritized threat unfocused groups, beginning with the highest priority...
Definition WsfSA_Assess.hpp:531
bool IgnoreBogiesAsTargets() const
This returns true if bogies should be ignored as targets.
Definition WsfSA_Assess.hpp:763
std::vector< std::size_t > CurrentlyTrackedPlatformIds() const
This returns a list of platform ids that are currently being tracked.
Definition WsfSA_Assess.hpp:674
double ExecuteCalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateMissileThreatLevel".
Definition WsfSA_Assess.cpp:3398
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileThreatEntities()
This returns a list of prioritized missile threat entity perceptions, beginning with the highest prio...
Definition WsfSA_Assess.hpp:523
double MissionRisk() const
This returns a normalized mission-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:748
double ExecuteCalculateDefensiveness(double aSimTime)
This will call an AFSIM script function "CalculateDefensiveness".
Definition WsfSA_Assess.cpp:3292
void CalculateOverallRisks(double aSimTime)
Calculate the overall risk, self-risk, flight-risk, package-risk, and mission-risk level for the curr...
Definition WsfSA_Assess.cpp:2374
double FlightRisk() const
This returns a normalized flight-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:742
std::string GetSelectedWeapon()
This returns the name of the current selected weapon.
Definition WsfSA_Assess.hpp:433
friend class WsfSA_Processor
Definition WsfSA_Assess.hpp:32
WsfSA_Assess(const WsfSA_Assess &)=default
bool PlatformIsCurrentlyBeingTracked(size_t aTgtPlatformIndex) const
This returns true if the specified target platform index is in the list of currently tracked platform...
Definition WsfSA_Assess.cpp:2085
bool SupportingWeapon() const
This returns true if at least one weapon is being supported.
Definition WsfSA_Assess.hpp:751
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftTargetEntities() const
This returns a const list of prioritized aircraft target entity perceptions, beginning with the highe...
Definition WsfSA_Assess.hpp:607
double CalculateThreatLevel(double aSimTime, WsfSA_PerceivedItem *aThreatItem, bool aIsBogie)
Calculate the threat level posed by the specified threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:2591
bool IgnoreMissilesAsThreats() const
This returns true if missiles should be ignored as threats.
Definition WsfSA_Assess.hpp:754
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedTargetEntities() const
This returns a const list of prioritized target perceived entities, beginning with the highest priori...
Definition WsfSA_Assess.hpp:593
double ExecuteCalculateSelfRisk(double aSimTime)
This will call an AFSIM script function "CalculateSelfRisk".
Definition WsfSA_Assess.cpp:3188
double ExecuteCalculateEntityTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateTargetValue".
Definition WsfSA_Assess.cpp:3371
WsfSA_Assess & operator=(const WsfSA_Assess &)=delete
const std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedTargetItems() const
This returns a const list of prioritized target perceived items, beginning with the highest priority ...
Definition WsfSA_Assess.hpp:582
unsigned int MaxPrioritizedTargets()
Return the max prioritized target count the platform can handle.
Definition WsfSA_Assess.hpp:151
bool WeaponBayDoorsOpen() const
A placeholder function that, in the future, will return whether a platform's weapon bay doors are ope...
Definition WsfSA_Assess.hpp:424
const std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedThreatItems() const
This returns a const list of prioritized threat perceived items, beginning with the highest priority ...
Definition WsfSA_Assess.hpp:470
double ExecuteCalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
This will call an AFSIM script function "CalculateMissileTargetValue".
Definition WsfSA_Assess.cpp:3425
static bool CompareScore(const PlatormScorePairing &first, const PlatormScorePairing &second)
Definition WsfSA_Assess.cpp:3152
double CalculateMissileThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
Calculate the threat level posed by the specified missile threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:2859
double CalculateMissileTargetValue(double aSimTime, WsfSA_EntityPerception *aTargetItem, bool aIsBogie)
Calculate the target value presented by the specified missile SA entity to the current platform Targe...
Definition WsfSA_Assess.cpp:2937
double ExecuteCalculateRisk(double aSimTime)
This will call an AFSIM script function "CalculateRisk".
Definition WsfSA_Assess.cpp:3162
std::vector< size_t > PrioritizedThreatIds() const
This returns a list of prioritized threat platform ids, beginning with the highest priority threat an...
Definition WsfSA_Assess.hpp:460
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedAircraftTargetEntities()
This returns a list of prioritized aircraft target entity perceptions, beginning with the highest pri...
Definition WsfSA_Assess.hpp:614
WsfLocalTrack * GetPerceivedTrackedPlatformWithTarget(size_t aTgtPlatformIndex)
This returns a pointer to the first track containing the specified target platform index,...
Definition WsfSA_Assess.cpp:2098
bool GetWeaponBayOpen()
This returns the state of the weapon bay doors.
Definition WsfSA_Assess.hpp:427
void ResetMaxPrioritizedTargets()
Set the max prioritized target to the value provided during initialization (default is 0 where not pr...
Definition WsfSA_Assess.hpp:159
void SetMaxPrioritizedTargets(unsigned int aMax)
Set the prioritized target maximum.
Definition WsfSA_Assess.hpp:156
bool IgnoreMissilesAsTargets() const
This returns true if missiles should be ignored as targets.
Definition WsfSA_Assess.hpp:760
double GetCornerSpeed_KCAS() const
A placeholder function that, in the future, will return the minimum speed required to reach the platf...
Definition WsfSA_Assess.hpp:445
void SetWeaponBayOpen(bool aWeaponBayOpen)
This sets the state of the weapon bay doors.
Definition WsfSA_Assess.hpp:430
double CalculateTargetValue(double aSimTime, WsfSA_PerceivedItem *aTargetItem, bool aIsBogie)
Calculate the target value presented by the specified threat SA entity to the current platform Target...
Definition WsfSA_Assess.cpp:2721
void ResetMaxPrioritizedThreats()
Set the max prioritized target to the value provided during initialization (default is 0 where not pr...
Definition WsfSA_Assess.hpp:148
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedThreatEntities()
This returns a list of prioritized threat perceived entities, beginning with the highest priority thr...
Definition WsfSA_Assess.hpp:491
void CalculateOverallDefensiveness(double aSimTime)
Calculate the overall defensiveness level for the current platform Defensiveness is normalized,...
Definition WsfSA_Assess.cpp:2521
double ExecuteCalculatePackageRisk(double aSimTime)
This will call an AFSIM script function "CalculatePackageRisk".
Definition WsfSA_Assess.cpp:3240
double ExecuteCalculateGroupThreatLevel(double aSimTime, WsfSA_Group *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateGroupThreatLevel".
Definition WsfSA_Assess.cpp:3452
double ExecuteCalculateMissionRisk(double aSimTime)
This will call an AFSIM script function "CalculateMissionRisk".
Definition WsfSA_Assess.cpp:3266
uint8_t AcceptableLevelOfRiskByte() const
This returns the acceptable level of risk, expressed as an uint8_t.
Definition WsfSA_Assess.hpp:727
double Risk() const
This returns a normalized risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:730
AcceptableRiskLevel
Definition WsfSA_Assess.hpp:717
@ MEDIUM
Definition WsfSA_Assess.hpp:719
@ LOW
Definition WsfSA_Assess.hpp:718
@ HIGH
Definition WsfSA_Assess.hpp:720
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileTargetEntities() const
This returns a const list of prioritized missile target entity perceptions, beginning with the highes...
Definition WsfSA_Assess.hpp:621
double PackageRisk() const
This returns a normalized package-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:745
void CalculateTrackedPlatforms(double aSimTime)
Calculate the currently tracked platforms for the current platform.
Definition WsfSA_Assess.cpp:2036
const std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileThreatEntities() const
This returns a const list of prioritized missile threat entity perceptions, beginning with the highes...
Definition WsfSA_Assess.hpp:515
double SelfRisk() const
This returns a normalized self-risk level, ranging from 0 (no risk) to 1 (maximum risk).
Definition WsfSA_Assess.hpp:739
void SetMaxPrioritizedThreats(unsigned int aMax)
Set the prioritized threat maximum.
Definition WsfSA_Assess.hpp:145
std::vector< std::string > CurrentlyTrackedPlatformNames() const
This returns a list of platform names that are currently being tracked.
Definition WsfSA_Assess.hpp:677
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedTargetEntities()
This returns a list of prioritized target perceived entities, beginning with the highest priority tar...
Definition WsfSA_Assess.hpp:600
double ExecuteCalculateFlightRisk(double aSimTime)
This will call an AFSIM script function "CalculateFlightRisk".
Definition WsfSA_Assess.cpp:3214
AcceptableRiskLevel AcceptableLevelOfRisk() const
This returns the acceptable level of risk, expressed as an enum.
Definition WsfSA_Assess.hpp:724
std::vector< std::string > PrioritizedThreatNames() const
This returns a list of prioritized threat platform names, beginning with the highest priority threat ...
Definition WsfSA_Assess.hpp:465
const std::list< UtWeakReference< WsfSA_Group > > & GetPrioritizedTargetGroups() const
This returns a const list of prioritized target unfocused groups, beginning with the highest priority...
Definition WsfSA_Assess.hpp:635
std::list< UtWeakReference< WsfSA_EntityPerception > > & GetPrioritizedMissileTargetEntities()
This returns a list of prioritized missile target entity perceptions, beginning with the highest prio...
Definition WsfSA_Assess.hpp:628
std::string MissionTask() const
This returns a string indicating the primary mission task.
Definition WsfSA_Assess.hpp:714
WsfSA_Assess(WsfSA_Processor *aSA_ProcPtr, WsfSA_Processor::PerceiveData *aDataPtr)
Definition WsfSA_Assess.cpp:132
double CalculateDefensiveness(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the defensiveness caused by the specified threat SA entity to the current platform.
Definition WsfSA_Assess.cpp:3066
double ExecuteCalculateEntityThreatLevel(double aSimTime, WsfSA_EntityPerception *aThreatItem, bool aIsBogie)
This will call an AFSIM script function "CalculateThreatLevel".
Definition WsfSA_Assess.cpp:3344
double CalculateUrgency(double aSimTime, WsfSA_EntityPerception *aThreatItem)
Calculate the urgency created by the specified threat SA entity to the current platform Urgency is no...
Definition WsfSA_Assess.cpp:3109
double Defensiveness() const
This returns a normalized defensiveness level, ranging from 0 (fully non-defensive) to 1 (fully defen...
Definition WsfSA_Assess.hpp:733
void CalculateOverallUrgency(double aSimTime)
Calculate the overall sense of urgency for the current platform Urgency is normalized,...
Definition WsfSA_Assess.cpp:2556
const std::list< WsfSA_Group * > & PerceivedGroups() const
This returns a list of SA_PerceivedGroups that are currently perceived and assessed.
Definition WsfSA_Assess.hpp:687
std::list< UtWeakReference< WsfSA_PerceivedItem > > & GetPrioritizedThreatItems()
This returns a list of prioritized threat perceived items, beginning with the highest priority threat...
Definition WsfSA_Assess.hpp:478
bool IgnoreBogiesAsThreats() const
This returns true if bogies should be ignored as threats.
Definition WsfSA_Assess.hpp:757
Definition WsfSA_EntityPerception.hpp:37
Definition WsfSA_Group.hpp:24
WsfSA_Processor * GetSAP() const
Return a pointer to the SA Processor that owns this module.
Definition WsfSA_Module.hpp:34
WsfSA_Module(WsfSA_Processor *aSA_ProcPtr, WsfSA_Processor::PerceiveData *aDataPtr)
Definition WsfSA_Module.cpp:14
The WsfSA_PerceivedItem class is used as a base class for WsfSA_EntityPerception and WsfSA_Group,...
Definition WsfSA_PerceivedItem.hpp:38
Definition WsfSA_Processor.hpp:60
const WsfSA_Processor::PerceiveData * GetData() const
Return a const reference to the perceive data.
Definition WsfSA_Processor.hpp:274
AircraftSignatureParameters()
Definition WsfSA_Assess.hpp:767
double fuselageFrontalArea
Definition WsfSA_Assess.hpp:800
double engineInletArea
Definition WsfSA_Assess.hpp:803
double engineExitArea
Definition WsfSA_Assess.hpp:804
double wingArea
Definition WsfSA_Assess.hpp:801
double tailArea
Definition WsfSA_Assess.hpp:802
double sweepAngle
Definition WsfSA_Assess.hpp:805
double signatureReductionFactorNose
Definition WsfSA_Assess.hpp:807
double signatureReductionFactorOverall
Definition WsfSA_Assess.hpp:806
AircraftSignatureParameters(double aFuselageFrontalArea, double aWingArea, double aTailArea, double aEngineInletArea, double aEngineExitArea, double aSweepAngle, double aSignatureReductionFactorOverall, double aSignatureReductionFactorNose, double aNoseSignatureReductionAngle)
Definition WsfSA_Assess.hpp:780
double noseSignatureReductionAngle
Definition WsfSA_Assess.hpp:808
Definition WsfSA_Assess.hpp:39
bool tgtTracked
Definition WsfSA_Assess.hpp:59
float currentRange_nm
Definition WsfSA_Assess.hpp:45
float wezMaximum_nm
Definition WsfSA_Assess.hpp:54
std::string targetType
Definition WsfSA_Assess.hpp:42
float targetValue
Definition WsfSA_Assess.hpp:50
float aspectAngle_deg
Definition WsfSA_Assess.hpp:44
float risk
Definition WsfSA_Assess.hpp:56
float wezNoEscape_nm
Definition WsfSA_Assess.hpp:55
std::string targetName
Definition WsfSA_Assess.hpp:41
float threatLevel
Definition WsfSA_Assess.hpp:49
float urgency
Definition WsfSA_Assess.hpp:58
float detectionRange_nm
Definition WsfSA_Assess.hpp:51
float currentDeltaAlt_ft
Definition WsfSA_Assess.hpp:46
float defensiveness
Definition WsfSA_Assess.hpp:57
float wezDesiredRange_nm
Definition WsfSA_Assess.hpp:52
float trackQuality
Definition WsfSA_Assess.hpp:47
float wezMinimum_nm
Definition WsfSA_Assess.hpp:53
bool acceptableWez
Definition WsfSA_Assess.hpp:60
std::string targetCID
Definition WsfSA_Assess.hpp:48
size_t targetIndex
Definition WsfSA_Assess.hpp:40
float angleOff_deg
Definition WsfSA_Assess.hpp:43
Definition WsfSA_Assess.hpp:906
PlatormScorePairing(WsfPlatform *aPlatform)
Definition WsfSA_Assess.hpp:908
PlatormScorePairing()
Definition WsfSA_Assess.hpp:907
WsfPlatform * platform
Definition WsfSA_Assess.hpp:915
PlatormScorePairing(WsfPlatform *aPlatform, double aScore)
Definition WsfSA_Assess.hpp:909
double score
Definition WsfSA_Assess.hpp:916
Definition WsfSA_Processor.hpp:86
std::list< WsfSA_Group * > mCurrentlyPerceivedGroups
Perceived groups (these persist).
Definition WsfSA_Processor.hpp:119
Copyrights Multiple, All Rights Reserved