Helios++
Helios software for LiDAR simulations
Survey.h
1 #pragma once
2 
3 #include <Asset.h>
4 #include <Scanner.h>
5 #include <AbstractDetector.h>
6 #include <Leg.h>
7 
8 class SurveyPlayback;
9 
13 class Survey : public Asset {
14 public:
15  // *** ATTRIBUTES *** //
16  // ******************** //
20  std::string name = "Unnamed Survey Playback";
24  int numRuns = -1;
29  std::shared_ptr<Scanner> scanner = nullptr;
33  double simSpeedFactor = 1;
38  std::vector<std::shared_ptr<Leg>> legs;
39 
40 private:
44  double length = 0; // Distance passing through all the legs
45 
46 public:
47  // *** CONSTRUCTION / DESTRUCTION *** //
48  // ************************************ //
52  Survey() = default;
53  Survey(Survey &survey);
54  ~Survey() override {scanner->setAllDetectors(nullptr);}
55 
56  // *** M E T H O D S *** //
57  // *********************** //
64  void addLeg(int insertIndex, std::shared_ptr<Leg> leg);
70  void removeLeg(int legIndex);
71 
76  void calculateLength();
82  double getLength();
88  void hatch(SurveyPlayback &sp);
89 };
Base class for all assets.
Definition: Asset.h:10
Survey playback class, used to extend simulation functionalities so it can be controlled.
Definition: SurveyPlayback.h:18
Class representing a Helios++ survey.
Definition: Survey.h:13
void addLeg(int insertIndex, std::shared_ptr< Leg > leg)
Add a leg to the survey at given index.
Definition: Survey.cpp:35
int numRuns
Number of runs for the survey.
Definition: Survey.h:24
double getLength()
Obtain survey length (distance passing through all legs)
Definition: Survey.cpp:58
std::vector< std::shared_ptr< Leg > > legs
All legs belonging to the survey.
Definition: Survey.h:38
double simSpeedFactor
Simulation speed factor for the survey.
Definition: Survey.h:33
void calculateLength()
Compute survey length (distance passing through all legs)
Definition: Survey.cpp:45
void hatch(SurveyPlayback &sp)
Hatch all pending eggs.
Definition: Survey.cpp:62
double length
Distance passing through all legs.
Definition: Survey.h:44
std::string name
Survey name.
Definition: Survey.h:20
Survey()=default
Survey default constructor.
void removeLeg(int legIndex)
Remove a leg from the survey.
Definition: Survey.cpp:41
std::shared_ptr< Scanner > scanner
Scanner used by the survey.
Definition: Survey.h:29