91 _gen(std::make_unique<
noise::GammaGenerator>(rngEngine, k)), _k(k)
109 std::unique_ptr<noise::GammaGenerator> _gen;
177 std::unique_ptr<RcsModel>
_model{
nullptr};
199 Target(platform, std::move(name), seed, id), _rcs(rcs)
237 FileTarget(
Platform* platform, std::string name,
const std::string& filename,
unsigned seed,
265 [[nodiscard]]
const std::string&
getFilename() const noexcept {
return _filename; }
268 std::unique_ptr<interp::InterpSet> _azi_samples;
269 std::unique_ptr<interp::InterpSet> _elev_samples;
270 std::string _filename;
285 return std::make_unique<IsoTarget>(platform, std::move(name), rcs, seed,
id);
298 unsigned seed,
const SimId id = 0)
300 return std::make_unique<FileTarget>(platform, std::move(name), filename, seed,
id);
A class representing a vector in spherical coordinates.
RealType getRcs(math::SVec3 &inAngle, math::SVec3 &outAngle, RealType time) const override
Gets the RCS value from file-based data for a specific bistatic geometry and time.
const std::string & getFilename() const noexcept
Gets the filename associated with this target's RCS data.
RealType getRcs(math::SVec3 &, math::SVec3 &, RealType) const noexcept override
Gets the constant RCS value.
RealType getConstRcs() const noexcept
Gets the constant RCS value (without fluctuation model applied).
IsoTarget(Platform *platform, std::string name, const RealType rcs, const unsigned seed, const SimId id=0)
Constructs an isotropic radar target.
Represents a physical object in the radar system.
SimId getId() const noexcept
Retrieves the unique ID of the object.
Chi-square distributed RCS model.
RealType sampleModel() override
Samples the chi-square RCS model.
RealType getK() const noexcept
Gets the 'k' parameter (degrees of freedom) of the distribution.
RcsChiSquare(std::mt19937 &rngEngine, RealType k)
Constructs an RcsChiSquare model.
RealType sampleModel() override
Samples the constant RCS model.
Base class for RCS fluctuation models.
virtual ~RcsModel()=default
RcsModel(const RcsModel &)=delete
RcsModel & operator=(const RcsModel &)=delete
RcsModel & operator=(RcsModel &&)=delete
RcsModel(RcsModel &&)=delete
virtual RealType sampleModel()=0
Samples the RCS model to produce a value.
Base class for radar targets.
unsigned getSeed() const noexcept
Gets the initial seed used for the target's RNG.
std::mt19937 & getRngEngine() noexcept
Gets the target's internal random number generator engine.
SimId getId() const noexcept
Gets the unique ID of the target.
Target(Platform *platform, std::string name, const unsigned seed, const SimId id=0)
Constructs a radar target.
const RcsModel * getFluctuationModel() const
Gets the RCS fluctuation model.
virtual RealType getRcs(math::SVec3 &inAngle, math::SVec3 &outAngle, RealType time) const =0
Gets the RCS value for the target.
std::mt19937 _rng
Per-object random number generator for statistical independence.
unsigned _seed
The initial seed for the RNG.
std::unique_ptr< RcsModel > _model
The RCS fluctuation model for the target.
void setFluctuationModel(std::unique_ptr< RcsModel > in)
Sets the RCS fluctuation model.
Global configuration file for the project.
double RealType
Type for real numbers.
Header file for the interpolation of sets of data.
std::unique_ptr< Target > createIsoTarget(Platform *platform, std::string name, RealType rcs, unsigned seed, const SimId id=0)
Creates an isotropic target.
std::unique_ptr< Target > createFileTarget(Platform *platform, std::string name, const std::string &filename, unsigned seed, const SimId id=0)
Creates a file-based target.
Header file for noise generator classes.
Base class for all physical objects in the radar system.
uint64_t SimId
64-bit Unique Simulation ID.
ObjectType
Categorizes objects for ID generation.