GSE++ library: reading and writing GSE waveforms

◆ test_dat2cm6()

void GSE2::tests::test_dat2cm6 ( )

Definition at line 163 of file gsexx_tests.cc.

References GSE2::waveform::TWID2::Fauxid, GSE2::waveform::TWID2::Fchannel, GSE2::waveform::TWID2::Fday, GSE2::waveform::TWID2::Finstype, GSE2::waveform::TWID2::Fmonth, GSE2::waveform::TWID2::Fsamprate, GSE2::waveform::TWID2::Fsamps, GSE2::waveform::TWID2::Fstation, GSE2::waveform::TWID2::Fyear, GSE2::waveform::TDAT2sum::hot(), GSE2::waveform::TWID2::line(), and GSE2::waveform::TWID2::read().

Referenced by main().

164 {
165  std::cout << std::endl;
166  std::cout << "Test the DAT2 class with CM6 subformat."
167  << std::endl;
168  std::cout << "1. write waveform"
169  << std::endl;
170 
171  const int msamples=2000;
172  int data[msamples];
173  int indata[msamples];
174  for (int i=0; i<msamples; i++)
175  {
176  data[i]=int(1.e5*std::sin(i*2.*3.141592653*5./(msamples-35)));
177  indata[i]=0;
178  }
179 
180  GSE2::waveform::TWID2 wid2line;
181  wid2line.Fsamps=msamples;
182  wid2line.Fsamprate=1.;
183  wid2line.Fstation="BFO";
184  wid2line.Finstype="STS-2";
185  wid2line.Fchannel="BHZ";
186  std::cout << wid2line.line();
187 
188  GSE2::waveform::TDAT2writeCM6 writer(msamples);
189  int i=0;
190  while (writer.hot())
191  {
192  if (i >= msamples)
193  {
194  std::cerr << "ERROR: missed last sample!" << std::endl;
195  abort();
196  }
197  std::cout << writer(data[i]);
198  i++;
199  }
200 
201  // write to file
202  {
203  std::ofstream os("junk.dat");
204  os << wid2line.line();
205  GSE2::waveform::TDAT2writeCM6 fwriter(msamples);
206  int i=0;
207  while (fwriter.hot())
208  {
209  if (i >= msamples)
210  {
211  std::cerr << "ERROR: missed last sample!" << std::endl;
212  abort();
213  }
214  os << fwriter(data[i]);
215  i++;
216  }
217  }
218 
219  {
220  char c;
221  std::cerr << "manipulate junk.dat - if you like to..." << std::endl;
222  std::cin.get(c);
223  }
224 
225  GSE2::waveform::TWID2 newwid2line;
226  newwid2line.Fstation="STA";
227  newwid2line.Fchannel="CHA";
228  newwid2line.Fauxid="AUX";
229  newwid2line.Fyear=1;
230  newwid2line.Fmonth=2;
231  newwid2line.Fday=3;
232 
233  // read from file
234  {
235  std::ifstream is("junk.dat");
236  GSE2::waveform::TDAT2readCM6 freader(msamples);
237  newwid2line.read(is);
238  int i=0;
239  while (freader.hot())
240  {
241  if (i >= msamples)
242  {
243  std::cerr << "ERROR: missed last sample!" << std::endl;
244  abort();
245  }
246  indata[i] =freader(is);
247  i++;
248  }
249  }
250 
251  // write to second file
252  {
253  std::ofstream os("junk2.dat");
254  os << newwid2line.line();
255  GSE2::waveform::TDAT2writeCM6 fwriter(msamples);
256  int i=0;
257  while (fwriter.hot())
258  {
259  if (i >= msamples)
260  {
261  std::cerr << "ERROR: missed last sample!" << std::endl;
262  abort();
263  }
264  os << fwriter(indata[i]);
265  i++;
266  }
267  }
268 
269 } // test_dat2cm6
std::string Finstype
instrument type
Definition: gsexx.h:146
std::string Fchannel
FDSN channel code.
Definition: gsexx.h:139
Derived class for writing CM6 subformat data.
Definition: gsexx.h:394
double Fsamprate
sampling rate (Hz)
Definition: gsexx.h:143
int Fyear
year of date
Definition: gsexx.h:132
int Fmonth
month of date
Definition: gsexx.h:133
A class to hold and manage the WID2-line. This is a struct - because it is a simple collection of fie...
Definition: gsexx.h:111
std::string Fauxid
Auxiliary identification code.
Definition: gsexx.h:140
int Fsamps
number of samples
Definition: gsexx.h:142
std::string line() const
write the WID2 line
Definition: gsexx_TWID2.cc:74
int Fday
day of date
Definition: gsexx.h:134
Derived class for reading CM6 subformat data.
Definition: gsexx.h:375
std::string Fstation
Station code.
Definition: gsexx.h:138
void read(std::istream &is)
read a WID2 line from a stream
Definition: gsexx_TWID2.cc:99
Here is the call graph for this function:
Here is the caller graph for this function: