RdStationNoiseAnalyser.cc
Go to the documentation of this file.
2 
3 #include <fwk/CentralConfig.h>
4 #include <fwk/RunController.h>
5 #include <fwk/VModule.h>
6 
7 #include <evt/Event.h>
8 #include <revt/REvent.h>
9 #include <revt/Header.h>
10 #include <revt/Station.h>
11 #include <revt/Channel.h>
12 #include <utl/AugerUnits.h>
13 #include <utl/TimeStamp.h>
14 #include <utl/ModifiedJulianDate.h>
15 #include <utl/UTCDateTime.h>
16 #include <utl/TimeInterval.h>
17 #include <utl/Branch.h>
18 #include<utl/SVector.h>
19 #include <det/Detector.h>
20 #include <rdet/RDetector.h>
21 #include <rdet/Channel.h>
22 #include <rdet/Station.h>
23 #include <utl/AugerUnits.h>
24 
25 #include <utl/ErrorLogger.h>
26 #include <string>
27 #include <complex>
28 
29 #include <TH1F.h>
30 #include <TH2F.h>
31 #include <TProfile.h>
32 #include <TTimeStamp.h>
33 #include <TFile.h>
34 #include <TMath.h>
35 #include <TCanvas.h>
36 #include <TGraph.h>
37 
38 using namespace evt;
39 using namespace revt;
40 using namespace fwk;
41 using namespace utl;
42 using std::complex;
43 using std::vector;
44 using std::stringstream;
45 using std::ostringstream;
46 
47 
48 // Heres comes two function for converting time in LST
49 // No reason to keep them as class members
50 // Based on B. Revenu & G. Maurin Works
51 
52 double
53 mod(const double d, const double periode)
54 {
55  if (d >= 0)
56  return d - floor(d/periode) * periode;
57  else
58  return d - ceil(d/periode) * periode + periode;
59 }
60 
61 
62 void
63 ct2lst(double longitude, double jd, double& lst)
64 {
65  const double J2000 = 2451545.0;
66  const double sidereal_coeff[4] = { 280.46061837, 360.98564736629, 0.000387933, 38710000 };
67 
68  double dt = jd - J2000;
69  double dt0 = dt / 36525.;
70  double theta = sidereal_coeff[0] + dt * sidereal_coeff[1] + dt0 * dt0 * (sidereal_coeff[2] - dt0 / sidereal_coeff[3]); // is in degrees
71  lst = mod(theta + longitude, 360.) * 0.066666666666666;
72 }
73 
74 
76  fOutFile(NULL),
77  fAllTrace(0),
78  fLastEventTS(0, 0),
79  fTimeMin(0),
80  fTimeMax(0),
81  fTSMin(0),
82  fTSMax(0),
83  fStationName("toto")
84 {
85  //INFO("Creating RdStationNoiseAnalyser");
86 }
87 
88 
90 {
91  delete fH_RateLST;
92  delete fH_RMSLST1;
93  delete fH_RMSLST2;
94  delete fH_TimeSinceLastEvent;
95  delete fH2_SpectrLST1;
96  delete fH2_SpectrLST2;
98  delete fH_RateLocT;
99  delete fH_RMSLocT2;
100  delete fH_RMSLocT1;
101  delete fH2_SpectrLocT1;
102  delete fH2_SpectrLocT2;
104  delete fH2_RMSLST2D1;
105  delete fH2_RMSLST2D2;
106  //delete fH2_RMSRate;
107  delete fOutFile;
108 }
109 
110 
113 {
114  INFO("RdStationNoiseAnalyser::Init()");
115  ostringstream info;
116  Branch topBranch = CentralConfig::GetInstance()->GetTopBranch("RdStationNoiseAnalyser");
117  topBranch.GetChild("outputFile").GetData(fOutFileName);
118  topBranch.GetChild("NBinTime").GetData(fNbinTime);
119  topBranch.GetChild("NBinFreq").GetData(fNbinFreq);
120  topBranch.GetChild("FrequencyMin").GetData(fFreqMin);
121  topBranch.GetChild("FrequencyMax").GetData(fFreqMax);
122  topBranch.GetChild("RMSMax").GetData(fRMSMax);
123  topBranch.GetChild("PartOfTimeSeriesToUse").GetData(fPartOfTheTraceToUse);
124  topBranch.GetChild("TimeMin").GetData(fTSMin);
125  topBranch.GetChild("TimeMax").GetData(fTSMax);
126  topBranch.GetChild("StationName").GetData(fStationName);
127  float Ts_Min = float(fTSMin.GetGPSSecond() + kGPS_UTC_Offset);
128  float Ts_Max = float(fTSMax.GetGPSSecond() + kGPS_UTC_Offset);
129  ostringstream outinfo;
130  outinfo << "\n-----------------------------------------------------------------------------\n" ;
131  outinfo << int(fTSMin.GetGPSSecond()/*+kGPS_UTC_Offset*/) << " " << int(fTSMax.GetGPSSecond()/*+kGPS_UTC_Offset*/) << "\n";
132  UTCDateTime totestmin(fTSMin.GetGPSSecond());
133  outinfo << totestmin.GetYear() << "-"<<totestmin.GetMonth()<<"-"<<totestmin.GetDay() << "\n";
134  outinfo << "-------------------------------------------------------------------------------\n";
135  fNDay = TMath::Ceil((Ts_Max - Ts_Min)/(24*3600));
136  INFO(outinfo.str().c_str());
137  if (fNDay < 0) {
138  ERROR("Error Number of day cannot be negative");
139  return eFailure;
140  }
141  std::cout << fNDay << std::endl;
142  //fOutFileName="/home/melissas/OffLine/MySeq/Noise.root";
143  fH_RateLST = new TH1F("RateLST", "RateLST", fNbinTime, 0,24);
144  fH_RateLocT = new TH1F("RateLocT", "RateLocT", fNbinTime, 0,24);
145  fH_RateTime = new TH1F("RateTime", "RateTime", fNDay*fNbinTime, Ts_Min, Ts_Max);
146  fH_RMSLST1 = new TH1F("RMSLST1", "RMSLST1", fNbinTime, 0,24);
147  fH_RMSLST2 = new TH1F("RMSLST2", "RMSLST2", fNbinTime, 0,24);
148  fH_RMSLocT1 = new TH1F("RMSLocT1", "RMSLocT1", fNbinTime, 0,24);
149  fH_RMSLocT2 = new TH1F("RMSLocT2", "RMSLocT2", fNbinTime, 0,24);
150  fH_TimeSinceLastEvent = new TH1F("TimeSinceLastEvent", "TimeSinceLastEvent", 200, 0, 4);
151  fH2_TimeSinceLastEventLST = new TH2F("TimeSinceLastEventLST", "TimeSinceLastEventLST", fNbinTime, 0, 24, 800, 0, 4);
152  fH2_TimeSinceLastEventLocT = new TH2F("TimeSinceLastEventLocT", "TimeSinceLastEventLocT", fNbinTime, 0, 24, 800, 0, 4);
153  fH2_SpectrLST1 = new TH2F("SpectrLST1", "SpectrLST1", fNbinTime, 0,24, fNbinFreq, fFreqMin, fFreqMax);
154  fH2_SpectrLST2 = new TH2F("SpectrLST2", "SpectrLST2", fNbinTime, 0,24, fNbinFreq, fFreqMin, fFreqMax);
155  fH2_SpectrLocT1 = new TH2F("SpectrLocT1", "SpectrLocT1", fNbinTime, 0,24, fNbinFreq, fFreqMin, fFreqMax);
156  fH2_SpectrLocT2 = new TH2F("SpectrLocT2", "SpectrLocT2", fNbinTime, 0,24, fNbinFreq, fFreqMin, fFreqMax);
157  fH2_SpectrTime1 = new TH2F("SpectrTime1", "SpectrTime1", fNDay*fNbinTime, Ts_Min, Ts_Max, fNbinFreq, fFreqMin, fFreqMax);
158  fH2_SpectrTime2 = new TH2F("SpectrTime2", "SpectrTime2", fNDay*fNbinTime, Ts_Min, Ts_Max, fNbinFreq, fFreqMin, fFreqMax);
159  fH2_RMSLocT2D1 = new TH2F("RMSLocT2D1", "RMSLocT2D1", fNbinTime, 0, 24, fNDay, Ts_Min, Ts_Max);
160  fH2_RMSLocT2D2 = new TH2F("RMSLocT2D2", "RMSLocT2D2", fNbinTime, 0, 24, fNDay, Ts_Min, Ts_Max);
161  fH2_RateLocT2D = new TH2F("RateLocT2D", "RateLocT2D", fNbinTime, 0, 24, fNDay, Ts_Min, Ts_Max);
162  fH2_RMSLST2D1 = new TH2F("RMSLST2D1", "RMSLST2D1", fNbinTime, 0, 24, 100, 0, fRMSMax);
163  fH2_RMSLST2D2 = new TH2F("RMSLST2D2", "RMSLST2D2", fNbinTime, 0, 24, 100, 0, fRMSMax);
164  if (fPartOfTheTraceToUse > 1.0)
165  return eFailure;
166 
167  info << " Data Will be saved to \n" << fOutFileName
168  << " Number Of Time Bin (0h-24h)" << fNbinTime << "\n"
169  " Number Of Freq Bin (" << fFreqMin << " MHz - " << fFreqMax << " MHz) : " << fNbinFreq << "\n"
170  " Will Use the last " << fPartOfTheTraceToUse*100 << "% of the time series";
171  INFO(info);
172  return eSuccess;
173 }
174 
175 
178 {
179  const rdet::RDetector& rDetector =
180  det::Detector::GetInstance().GetRDetector();
181  revt::REvent& therev = theevent.GetREvent();
182  vector<double> v_RMS1;
183  vector<double> v_RMS2;
184  v_RMS1.clear();
185  v_RMS2.clear();
186  double lst = 0;
187  double loctime = 0;
188  if (fTimeMin == 0 && fTimeMax == 0) {
189  fTimeMin = therev.GetHeader().GetTime().GetGPSSecond();
190  fTimeMax = therev.GetHeader().GetTime().GetGPSSecond();
191  } else {
192  if (fTimeMin > therev.GetHeader().GetTime().GetGPSSecond())
193  fTimeMin = therev.GetHeader().GetTime().GetGPSSecond();
194  if (fTimeMax < therev.GetHeader().GetTime().GetGPSSecond())
195  fTimeMax = therev.GetHeader().GetTime().GetGPSSecond();
196  }
197  TimeInterval interval = therev.GetHeader().GetTime() - fLastEventTS;
198  UTCDateTime utcdate(therev.GetHeader().GetTime());
199 
200  int EventSecond = therev.GetHeader().GetTime().GetGPSSecond() + kGPS_UTC_Offset;
201  fLastEventTS = therev.GetHeader().GetTime();
202  ct2lst(-69, utl:: ModifiedJulianDate(utcdate), lst);
203  loctime = double(utcdate.GetHour()) + double(utcdate.GetMinute())/60.;
204  fH_RateLST->Fill(lst);
205  fH_RateLocT->Fill(loctime);
206  fH_RateTime->Fill(EventSecond);
207  if (interval.GetNanoSecond() > 0 && interval.GetSecond() < 4) {
208  double delay = double(interval.GetSecond()) + double(interval.GetNanoSecond())/1e9;
209  fH_TimeSinceLastEvent->Fill(delay);
210  fH2_TimeSinceLastEventLST->Fill(lst, delay);
211  fH2_TimeSinceLastEventLocT->Fill(loctime, delay);
212  }
213  try {
214  Station& stat=therev.GetStationByName(fStationName);
215  if (!stat.HasChannel(0) && !stat.HasChannel(1)) {
216  WARNING("Channel 0 or 1 not present \n");
217  }
218  ConvertChannelToStation(stat, rDetector);
219  //Creating a virtual station with the physical amplitude
220 // StationFFTDataContainer virtualstationdata;
221 // StationFrequencySpectrum& virtualstationspectrum =
222 // virtualstationdata.GetStationFrequencySpectrum();
223 // Vector3C V3CZero;
224 // Vector3C efield;
225 // V3CZero = complex<double>(0.0), complex<double>(0.0), complex<double>(0.0);
226 // for (int ichan=0;ichan<=1;ichan++) {
227 
228  // }
229  const StationTimeSeries& stseries = stat.GetStationTimeSeries();
230  StationTimeSeries theseries;
231  StationFFTDataContainer stationData;
232  //float normfactorsp=1;
233  int binmin = floor((1 - fPartOfTheTraceToUse)*stseries.GetSize());
234  for (unsigned int i = binmin; i < stseries.GetSize(); ++i) {
235  //double Value[3] = { stseries[i][0], stseries[i][1], stseries[i][2] };
236  SVector<3, double> Value;
237  Value = stseries[i][0], stseries[i][1], stseries[i][2];
238  v_RMS1.push_back(Value[0]/(micro*volt/meter));
239  v_RMS2.push_back(Value[1]/(micro*volt/meter));
240  theseries.PushBack(Value);
241  }
242  theseries.SetBinning(stseries.GetBinning());
243  stationData.GetTimeSeries() = theseries;
244  stationData.SetNyquistZone(stat.GetNyquistZone());
245  const revt::StationFrequencySpectrum& stspectr = stationData.GetFrequencySpectrum();
246  float normfactorsp = 0;
247 // float normfactorsp = abs(float(stspectr.GetSize()) / float(stat.GetFrequencyOfBin(0) - stat.GetFrequencyOfBin(stspectr.GetSize()-1)))*micro*volt/meter/megahertz;
248 
249  // normfactorsp = abs(float(stat.GetFrequencyOfBin(0) - stat.GetFrequencyOfBin(stspectr.GetSize()-1)))/float(stspectr.GetSize());
250  normfactorsp = micro*volt/meter/megahertz;
251 // normfactorsp/=(micro*volt/meter);
252  for (unsigned int i = 0; i < stspectr.GetSize(); ++i) {
253  fH2_SpectrLST1->Fill(lst, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][0])/normfactorsp) ;
254  fH2_SpectrLST2->Fill(lst, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][1])/normfactorsp);
255  fH2_SpectrLocT1->Fill(loctime, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][0])/normfactorsp);
256  fH2_SpectrLocT2->Fill(loctime, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][1])/normfactorsp);
257  fH2_SpectrTime1->Fill(EventSecond, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][0])/normfactorsp);
258  fH2_SpectrTime2->Fill(EventSecond, stationData.GetFrequencyOfBin(i)/megahertz, abs(stspectr[i][1])/normfactorsp);
259  }
260  //cout << therev.GetHeader().GetTime().GetGPSSecond() << " // " << TimeDay.GetGPSSecond() <<endl;
261  double Rms1 = TMath::RMS(v_RMS1.size(), &v_RMS1.front());
262  double Rms2 = TMath::RMS(v_RMS2.size(), &v_RMS1.front());
263  fH2_RMSLocT2D1->Fill(loctime, EventSecond-3600*loctime, Rms1);
264  fH2_RMSLocT2D2->Fill(loctime, EventSecond-3600*loctime, Rms2);
265  fH2_RateLocT2D->Fill(loctime, EventSecond-3600*loctime);
266  fH_RMSLST1->Fill(lst,Rms1);
267  fH_RMSLST2->Fill(lst,Rms2);
268  fH2_RMSLST2D1->Fill(lst, Rms1);
269  fH2_RMSLST2D2->Fill(lst, Rms2);
270  fH_RMSLocT1->Fill(loctime, Rms1);
271  fH_RMSLocT2->Fill(loctime, Rms2);
273  ostringstream warn;
274  warn.str("");
275  warn << "Station " << fStationName << "does not exist for event " << therev.GetHeader().GetId();
276  WARNING(warn.str());
277  }
278  return eSuccess;
279 }
280 
281 
284 {
285  INFO("RdStationNoiseAnalyser::Finish");
286  INFO("Writing outfile");
287  float TotTime = float(fTimeMax - fTimeMin);
288  fOutFile = new TFile(fOutFileName.c_str(),"RECREATE");
289 // fH_RateLST->Scale(1./TotTime);
290  fH_RateLST->Write(); // Can still be used for normalisation (even /s ) but what with empty bin ?
291  fH_RMSLST1->Write();
292  fH_RMSLST2->Write();
293  fH_TimeSinceLastEvent->Write();
294  fH2_SpectrLST1->Write();
295  fH2_SpectrLST2->Write();
296  fH2_TimeSinceLastEventLST->Write();
297  fH_RateLocT->Scale(1./(TotTime));
298  fH_RateLocT->Write();
299  fH_RMSLocT1->Write();
300  fH_RMSLocT2->Write();
301  fH2_SpectrLocT1->Write();
302  fH2_SpectrLocT2->Write();
303  fH2_SpectrTime1->Write();
304  fH2_SpectrTime2->Write();
305  fH_RateTime->Write();
306  fH2_RateLocT2D->Write();
307  fH2_RMSLocT2D1->Write();
308  fH2_RMSLocT2D2->Write();
309  fH2_RMSLST2D1->Write();
310  fH2_RMSLST2D2->Write();
311  fH2_RMSLocT2D2->Write();
312  fH2_TimeSinceLastEventLST->Write();
313  TProfile* Prof_TimeSinceLastEventLST = fH2_TimeSinceLastEventLST->ProfileX("TSinceLastEventProfLST");
314  Prof_TimeSinceLastEventLST->Write();
315  delete Prof_TimeSinceLastEventLST;
317  TProfile* Prof_TimeSinceLastEventLocT = fH2_TimeSinceLastEventLocT->ProfileX("TSinceLastEventProfLocT");
318  Prof_TimeSinceLastEventLocT->Write();
319  delete Prof_TimeSinceLastEventLocT;
320  fOutFile->Close();
321  delete fOutFile;
322  fOutFile = 0;
323  ostringstream info;
324  info << "Total data Time " << TotTime << " (s) ";
325  INFO(info.str());
326  return eSuccess;
327 }
329  // StationTimeSeries& newstationtimeseries=stat.GetStationTimeSeries(); // unused variable
331  bool firststationchannel = true;
332  Vector3C V3CZero;
333  V3CZero= complex<double>(0.0),complex<double>(0.0),complex<double>( 0.0);
334  for (Station::ChannelIterator cIt = stat.ChannelsBegin();
335  cIt != stat.ChannelsEnd(); ++cIt) {
336  Channel& channel = *cIt;
337  if (channel.GetId()>2) continue ;
338 /* fMessage.str("");
339  fMessage << "Copying channel "
340  << channel.GetId()
341  << " of station "
342  << channel.GetStationId()
343  << " to the StationTimeSeries.";
344  INFO(fMessage.str()); */
345 
346  // Work on the trace of this channel
347  // const revt::ChannelTimeSeries& channeltrace =
348  // channel.GetConstChannelTimeSeries(); // unused
349  const revt::ChannelFrequencySpectrum& channelspectr=
350  channel.GetConstChannelFrequencySpectrum();
351 // TGraph gr_chanresponse( channelspectr.GetSize());
352  // when working on the first channel, fill station timeseries with zeroes and set some station-specific quantities
353  if (firststationchannel) {
354  firststationchannel = false;
355  // overwrite the station time series with an empty one of the correct size
356  stspectr = StationFrequencySpectrum(channelspectr.GetSize(),channelspectr.GetBinning(),V3CZero);
357  // set the Nyquist zone of the station, does no check if Nyquist zones of Channels are the same!
358  stat.SetNyquistZone(channel.GetNyquistZone());
359  }
360 
361  // check if newstationtimeseries.GetSize() is correct
362  if (stspectr.GetSize() != channelspectr.GetSize()) {
363  stringstream fMessage;
364  fMessage << "Number of samples in spectrum of "
365  << channel.GetId()
366  << " belonging to station "
367  << channel.GetStationId()
368  << " is different than the number of samples in other channels of that station.";
369  WARNING(fMessage.str());
370  }
371 
372  // now copy over the values, assume Channel 1 is x, Channel 2 is y, Channel 3 is z
373  for (ChannelFrequencySpectrum::SizeType i=0; i<channelspectr.GetSize(); ++i) {
374  double channelfrequency=channel.GetFrequencyOfBin(i);
375 // newstationtimeseries[i][channel.GetId()-1] = channeltrace[i];
376  double response= rDet.GetStation(stat.GetId()).GetChannel(channel.GetId()).GetIntegratedEffectiveAntennaHeight(channelfrequency);
377 // gr_chanresponse.SetPoint(i,channelfrequency/megahertz,response);
378  if (response==0) {
379  ostringstream warn;
380  warn.str("");
381  warn << " Detector response is zero !! \n";
382  warn << " Frequency is " << channelfrequency/megahertz ;
383  WARNING(warn.str());
384  continue;
385  }
386  stspectr[i][channel.GetId()-1]=channelspectr[i]/response;
387 // cout << "VALUES >>>>>> " << channelspectr[i] << " " << response << channelspectr[i]/response << endl;
388  }
389  // ostringstream title;
390  // title.str("");
391  // title << "Response_Station"<<rDet.GetStation(stat.GetId()).GetName() <<"_Chan_"<<channel.GetId();
392  // gr_chanresponse.SetTitle(title.str().c_str());
393  // TCanvas canrep(title.str().c_str(),title.str().c_str(),640,480);
394  // gr_chanresponse.Draw("AL");
395  // canrep.Print((title.str()+".ps").c_str());
396  }
397 
399  }
Branch GetTopBranch() const
Definition: Branch.cc:63
void ConvertChannelToStation(revt::Station &stat, const rdet::RDetector &rDet)
double ModifiedJulianDate(const time_t unixSecond)
StationFrequencySpectrum & GetStationFrequencySpectrum()
retrieve Station Frequency Spectrum (write access, only use this if you intend to change the data) ...
int GetId() const
Return Id of the Channel.
Report success to RunController.
Definition: VModule.h:62
Station & GetStationByName(const std::string &name)
retrieve station by name, throw utl::NonExistentComponentException if n.a.
Definition: REvent.h:194
Interface class to access to the Radio part of an event.
Definition: REvent.h:42
VModule::ResultFlag Run(evt::Event &theevent)
Run: invoked once per event.
utl::TimeStamp GetTime() const
Definition: REvent/Header.h:17
double GetBinning() const
size of one slot
Definition: Trace.h:138
const double meter
Definition: GalacticUnits.h:29
#define INFO(message)
Macro for logging informational messages.
Definition: ErrorLogger.h:161
void ct2lst(double longitude, double jd, double &lst)
revt::REvent & GetREvent()
Base class for exceptions trying to access non-existing components.
Branch GetChild(const std::string &childName) const
Get child of this Branch by child name.
Definition: Branch.cc:211
ChannelIterator ChannelsBegin()
begin Channel iterator for read/write
unsigned int GetNyquistZone() const
Get the Nyquist zone.
int GetYear() const
Definition: UTCDate.h:44
int GetStationId() const
Return Id of the station to which this Channel belongs.
long GetSecond() const
Get the seconds floor for the interval.
Definition: TimeInterval.cc:13
StationTimeSeries & GetStationTimeSeries()
retrieve Station Time Series (write access, only use this if you intend to change the data) ...
unsigned int GetNyquistZone() const
Get the Nyquist zone.
ChannelIterator ChannelsEnd()
end Channel iterator for read/write
Detector description interface for RDetector-related data.
Definition: RDetector.h:46
bool HasChannel(const int pmtId) const
Check if a particular Channel object exists.
Class representing a document branch.
Definition: Branch.h:107
class to hold data at the radio Station level.
C< F > & GetFrequencySpectrum()
read out the frequency spectrum (write access)
std::vector< std::complex< double > >::size_type SizeType
Definition: Trace.h:58
static int delay
Definition: XbAlgo.cc:20
double abs(const SVector< n, T > &v)
Header & GetHeader()
access to REvent Header
Definition: REvent.h:239
C< T > & GetTimeSeries()
read out the time series (write access)
constexpr double megahertz
Definition: AugerUnits.h:155
fwk::VModule::ResultFlag Finish()
Finish: invoked at end of the run (NOT end of the event)
void SetNyquistZone(const unsigned int zone)
Set the Nyquist zone.
SizeType GetSize() const
Definition: Trace.h:156
#define WARNING(message)
Macro for logging warning messages.
Definition: ErrorLogger.h:163
void GetData(bool &b) const
Overloads of the GetData member template function.
Definition: Branch.cc:644
int GetId() const
Get the station Id.
VModule::ResultFlag Init()
Initialize: invoked at beginning of run (NOT beginning of event)
static const int kGPS_UTC_Offset
void SetBinning(const double binning)
Definition: Trace.h:139
Template class for a data container that offers and takes both time series and corresponding frequenc...
A TimeInterval is used to represent time elapsed between two events.
Definition: TimeInterval.h:43
ResultFlag
Flag returned by module methods to the RunController.
Definition: VModule.h:60
unsigned long GetGPSSecond() const
GPS second.
Definition: TimeStamp.h:124
Template class for a FADC data or calibrated data container. Use the typedefs (TraceD, TraceI, etc.) defined in Trace-fwd.h.
Definition: Trace-fwd.h:19
utl::TraceV3C StationFrequencySpectrum
double GetFrequencyOfBin(const ChannelFrequencySpectrum::SizeType bin) const
Get the frequency corresponding to a bin of the frequency spectrum.
Class that holds the data associated to an individual radio channel.
Report failure to RunController, causing RunController to terminate execution.
Definition: VModule.h:64
constexpr double micro
Definition: AugerUnits.h:65
void SetNyquistZone(const unsigned int zone)
set the Nyquist zone
double mod(const double d, const double periode)
double GetNanoSecond() const
Get integer number of nanoseconds past seconds boundary.
Definition: TimeInterval.cc:25
void PushBack(const T &value)
Insert a single value at the end.
Definition: Trace.h:119
#define ERROR(message)
Macro for logging error messages.
Definition: ErrorLogger.h:165
const Station & GetStation(const int stationId) const
Get station by Station Id.
Definition: RDetector.cc:141
int GetId() const
Definition: REvent/Header.h:21
const double volt
Definition: GalacticUnits.h:38

, generated on Tue Sep 26 2023.