10 #include <tst/Verify.h>
12 #include <revt/Channel.h>
13 #include <revt/Station.h>
15 #include <utl/FFTDataContainer.h>
16 #include <utl/AugerException.h>
17 #include <utl/AugerUnits.h>
19 #include <cppunit/extensions/HelperMacros.h>
31 static const long numtestsamples = 1999;
35 CPPUNIT_TEST(testChannelFFTs);
36 CPPUNIT_TEST(testStationFFTs);
38 CPPUNIT_TEST_SUITE_END();
71 for(
unsigned int i=0; i<numtestsamples; i++)
73 timeSeries.
PushBack(numtestsamples-i);
76 ourChannelContainer.SetNyquistZone(2);
79 const ChannelTimeSeries ourTimeSeries1 = ourChannelContainer.GetConstTimeSeries();
81 for (
unsigned int i=0; i<numtestsamples; i++)
83 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries1[i], static_cast<double>(numtestsamples-i)));
88 CPPUNIT_ASSERT(Verify<CloseTo>(ourChannelContainer.GetFrequencyOfBin(0),80.0*
megahertz));
89 CPPUNIT_ASSERT(Verify<CloseTo>(ourChannelContainer.GetFrequencyOfBin(ourFrequencySpectrum1.
GetSize()-1),40.0*
megahertz));
92 double energyInFreq = 0.0;
93 for (
unsigned int i=0; i<ourFrequencySpectrum1.
GetSize(); i++)
95 energyInFreq +=
pow(
abs(ourFrequencySpectrum1[i]),2)*ourFrequencySpectrum1.
GetBinning();
97 energyInFreq +=
pow(
abs(ourFrequencySpectrum1[i]),2)*ourFrequencySpectrum1.
GetBinning();
101 const ChannelTimeSeries ourTimeSeries2 = ourChannelContainer.GetConstTimeSeries();
103 for (
unsigned int i=0; i<numtestsamples-1; i++)
106 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries2[i], static_cast<double>(numtestsamples-i)));
114 const ChannelTimeSeries ourTimeSeries3 = ourChannelContainer.GetConstTimeSeries();
115 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3.
GetBinning(),12.5*
ns));
116 double energyInTime = 0.0;
117 for (
unsigned int i=0; i<numtestsamples-1; i++)
120 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3[i], static_cast<double>(numtestsamples-i)));
121 energyInTime +=
pow(ourTimeSeries3[i],2)*ourTimeSeries3.
GetBinning();
124 CPPUNIT_ASSERT(Verify<CloseTo>(energyInTime,energyInFreq));
133 double tmpvector[3]={0.0,0.0,0.0};
134 for(
unsigned int i=0; i<numtestsamples; i++)
136 tmpvector[0]=(numtestsamples-i);
137 tmpvector[1]=(numtestsamples-i)*2.0;
138 tmpvector[2]=(numtestsamples-i)*3.0;
144 const StationTimeSeries ourTimeSeries1 = ourStationContainer.GetConstTimeSeries();
146 for (
unsigned int i=0; i<numtestsamples; i++)
148 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries1[i][0], static_cast<double>(numtestsamples-i)));
149 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries1[i][1], static_cast<double>(numtestsamples-i)*2.0));
150 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries1[i][2], static_cast<double>(numtestsamples-i)*3.0));
155 CPPUNIT_ASSERT(Verify<CloseTo>(ourStationContainer.GetFrequencyOfBin(0),0.0*
megahertz));
156 CPPUNIT_ASSERT(Verify<CloseTo>(ourStationContainer.GetFrequencyOfBin(ourFrequencySpectrum1.
GetSize()-1),40.0*
megahertz));
159 double energyInFreq = 0.0;
160 for (
unsigned int i=0; i<ourFrequencySpectrum1.
GetSize(); i++)
162 energyInFreq += ourFrequencySpectrum1[i].GetMag2()*ourFrequencySpectrum1.
GetBinning();
164 energyInFreq += ourFrequencySpectrum1[i].GetMag2()*ourFrequencySpectrum1.
GetBinning();
168 const StationTimeSeries ourTimeSeries2 = ourStationContainer.GetConstTimeSeries();
170 for (
unsigned int i=0; i<numtestsamples-1; i++)
173 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries2[i][0], static_cast<double>(numtestsamples-i)));
174 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries2[i][1], static_cast<double>(numtestsamples-i)*2.0));
175 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries2[i][2], static_cast<double>(numtestsamples-i)*3.0));
183 const StationTimeSeries ourTimeSeries3 = ourStationContainer.GetConstTimeSeries();
184 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3.
GetBinning(),12.5*
ns));
185 double energyInTime = 0.0;
186 for (
unsigned int i=0; i<numtestsamples-1; i++)
189 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3[i][0], static_cast<double>(numtestsamples-i)));
190 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3[i][1], static_cast<double>(numtestsamples-i)*2.0));
191 CPPUNIT_ASSERT(Verify<CloseTo>(ourTimeSeries3[i][2], static_cast<double>(numtestsamples-i)*3.0));
192 energyInTime += ourTimeSeries3[i].GetMag2()*ourTimeSeries3.
GetBinning();
196 CPPUNIT_ASSERT(Verify<CloseTo>(energyInTime,energyInFreq));
double GetBinning() const
size of one slot
ChannelFFTDataContainer ourChannelContainer
utl::SVector< 3, double > Vector3D
double pow(const double x, const unsigned int i)
CPPUNIT_TEST_SUITE_REGISTRATION(testAiresShowerFile)
StationFFTDataContainer ourStationContainer
std::vector< double >::size_type SizeType
double abs(const SVector< n, T > &v)
constexpr double megahertz
void SetBinning(const double binning)
void PushBack(const T &value)
Insert a single value at the end.