Cheetah - SKA - PSS - Prototype Time Domain Search Pipeline
Public Member Functions | List of all members
ska::cheetah::tdrt::test::TdrtTDTReference Class Reference

Time Domain Resampler Reference Model. More...

#include <cheetah/tdrt/test/src/Tdrt-TDT-Reference.h>

Collaboration diagram for ska::cheetah::tdrt::test::TdrtTDTReference:
Collaboration graph

Public Member Functions

void process (TimeSeries< float > &h_input, TimeSeries< float > &h_output, float acceleration)
 
void const_accel_pulsar (double acceleration, float period, TimeSeries< float > &h_output)
 
void sine_calibration_signal (float period, TimeSeries< float > &h_output)
 
double resampled_period (double acceleration, double period, double tsamp, int length)
 
float tdrt_correlation (TimeSeries< float > &h_tsA, TimeSeries< float > &h_tsB)
 
float tdrt_bin_diff (TimeSeries< float > &h_tsA, TimeSeries< float > &h_tsB)
 
double fold_pulsar (TimeSeries< float > &h_ts, double period, int adjacent)
 
std::tuple< float, size_t > tdrt_recover_amp (TimeSeries< float > &h_ts)
 
void tdrt_bin_spacing (TimeSeries< float > &h_ts)
 

Detailed Description

Time Domain Resampler Reference Model.

Definition at line 41 of file Tdrt-TDT-Reference.h.

Member Function Documentation

◆ process()

void ska::cheetah::tdrt::test::TdrtTDTReference::process ( TimeSeries< float > &  h_input,
TimeSeries< float > &  h_output,
float  acceleration 
)

lateWeight = 1 - lateWeight;

Definition at line 40 of file Tdrt-TDT-Reference.cpp.

43 {
44  assert(h_input.get_length() == h_output.get_length());
45  assert(h_input.get_delta_t() == h_output.get_delta_t());
46 
47  long long numTimeSamps= h_input.get_length();;
48  double sampTime= h_input.get_delta_t();
49  double pulsarTime= 0.0;
50  double timeThru= 0.0;
51  double earthTime= 0.0;
52 
53  const double c = 299792458.0; // speed of light
54 
55  float obsLen = sampTime * numTimeSamps;
56  float tau0 = sampTime/(1 + acceleration * obsLen/(2 * c));
57  // float earlyWeight, lateWeight;
58 
59  long long nsamp;
60  long long samp_out;
61 
62  float* input = h_input.get_data();
63  float* output = h_output.get_data();
64  for (nsamp=0; nsamp < numTimeSamps; nsamp++)
65  {
66  // Time interval on Earth
67  earthTime = nsamp * sampTime;
68 
69  timeThru = pulsarTime;
70 
71  // Relate the time interval at Earth to that of the pulsar
72  pulsarTime = pulsarTime + tau0 * (1 + acceleration * earthTime/c);
73 
74  // samp_out = (int) floor(timeThru/sampTime);
75  samp_out = (int) round(timeThru/sampTime);
76 
77  // earlyWeight = (timeThru - samp_out * sampTime)/sampTime;
79 
80  if (samp_out >= 0 && samp_out < numTimeSamps)
81  {
82  // output[samp_out] += lateWeight * input[nsamp];
83  output[samp_out] = input[nsamp];
84  }
85  /*
86  if (samp_out >= -1 && samp_out < (numTimeSamps - 1))
87  {
88  output[samp_out+1] = earlyWeight * input[nsamp];
89  }
90  */
91  }
92 }

The documentation for this class was generated from the following files: