Electric Tiger DAQ  1.0.0
Data Acquisition Software for the Electric Tiger Experiment
programframe.h
1 #ifndef PROGRAMFRAME_H
2 #define PROGRAMFRAME_H
3 
4 //C System-Headers
5 //
6 //C++ System headers
7 //
8 //Qt Headers
9 //
10 //OpenCV Headers
11 //
12 //Boost Headers
13 //
14 //Project specific headers
15 #include "../ProgramCore/programcore.h"
16 #include "../../ModeTracker/modetrack.h"
17 #include "../../DataSaver/FlatFileSaver/flatfilesaver.h"
18 #include "../../DataTransformatoions/datatransformations.h"
19 
20 namespace etig {
21 
22 class ProgramFrame : public ProgramCore {
23 
24  Q_OBJECT
25 
26  typedef std::vector<data_triple<double>> data_list;
27 
28  public:
29  ProgramFrame( QObject* parent );
30  void Prequel();
31  void ShiftFrequencyWindow( double center_frequency );
32  void SetBackground();
33  void EstablishBinSize();
34  double FindMinimaPeak( data_list formatted_points);
35 
36  protected:
37  ModeTrack mode_tracker;
38  FlatFileSaver data_saver { save_file_path };
39 
40  data_list power_to_data_list ( std::vector< float > power_list,
41  float min_freq,
42  float max_freq );
43 
44  data_list power_to_data_list ( std::vector< double > power_list,
45  double min_freq,
46  double max_freq );
47 
48  template < typename T >
49  std::vector< T > data_list_to_power( std::vector< data_triple <T> > data );
50 
51  double CheckPeak( double possible_mode_position );
52  std::string BuildHeader();
53 
54  private:
55 
56  double DeriveCavityLength();
57  double RecenterPeak(std::vector<data_triple<double> > to_check);
58 
59  //Mode characterization
60  double center_frequency = 0.0;
61  double hwhm = 0.0;
62  double quality_factor = 0.0;
63 
64  const double single_scan_window = 100.0;
65 
66  signals:
67  void UpdateNA( std::vector< double > na_data, double na_span );
68  void UpdateSpec( std::vector< float > spec_data, uint digi_rate );
69 
70  void ToTransmission();
71  void ToReflection();
72  void OutputToDigitizer();
73  void OutputToNA();
74 
75  void Iteration( uint iter );
76  void CavityLength( double length );
77  void LOFrequency( double lo_freq );
78 
79 };
80 
81 }
82 
83 #endif // PROGRAMFRAME_H
Definition: flatfilesaver.h:18
Definition: programframe.h:22
Definition: algorithm.cpp:16
Definition: programcore.h:28
Base Class for mode tracking algorithims; designed to be wrapped with Swig and called from Python mod...
Definition: modetrack.h:26
Definition: generics.h:48