DATRW++ library: seismic data I/O with multiple formats
imseedstream_help.cc
Go to the documentation of this file.
1 /*! \file imseedstream_help.cc
2  * \brief imseedstream help function (implementation)
3  *
4  * ----------------------------------------------------------------------------
5  *
6  * \author Thomas Forbriger
7  * \date 05/07/2016
8  *
9  * imseedstream help function (implementation)
10  *
11  * Copyright (c) 2016 by Thomas Forbriger (BFO Schiltach)
12  *
13  * ----
14  * This program is free software; you can redistribute it and/or modify
15  * it under the terms of the GNU General Public License as published by
16  * the Free Software Foundation; either version 2 of the License, or
17  * (at your option) any later version.
18  *
19  * This program is distributed in the hope that it will be useful,
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22  * GNU General Public License for more details.
23  *
24  * You should have received a copy of the GNU General Public License
25  * along with this program. If not, see <http://www.gnu.org/licenses/>.
26 
27  * ----
28  *
29  * REVISIONS and CHANGES
30  * - 05/07/2016 V1.0 Thomas Forbriger
31  * - 12/07/2016 V1.1 thof: new consistency check ID "usec"
32  *
33  * ============================================================================
34  */
35 #define DATRW_IMSEEDSTREAM_HELP_CC_VERSION \
36  "DATRW_IMSEEDSTREAM_HELP_CC V1.1"
37 
38 #include <datrwxx/mseed.h>
39 #include <datrwxx/formatmodifier.h>
40 #include <datrwxx/mseed_keywords.h>
41 
42 namespace datrw {
43 
44  using std::endl;
45  using namespace mseed;
46 
47  void imseedstream::help(std::ostream& os)
48  {
49  os << std::endl;
50  os << "MiniSEED data reading functions" << std::endl;
51  os << "-------------------------------" << std::endl;
52  os << endl;
53  os << "This module is designed to read MiniSEED (data only SEED) files"
54  << endl;
55  os << "created by several different data acquisition systems. It is"
56  << endl;
57  os << "tested with the following systems:"
58  << endl;
59  os << " comserv with Q680 (Quanterra with SeisComP, GRSN setup)"
60  << endl;
61  os << " seedlink (new SeisComP system with EDD plugin)"
62  << endl;
63  os << " Earth Data Logger (EDL raw files)"
64  << endl;
65  os << " Q330HR (Quanterra data acquisition system with Baler)"
66  << endl;
67  os << " Taurus (Nanometrics data acquisition system)"
68  << endl;
69  os << " Q330HR (data streamed from Q330HR)"
70  << endl;
71  os << " Cube3 (data converted by cube2mseed)"
72  << endl;
73  os << endl;
74  os << "Special features:"
75  << endl;
76  os << "Data files written by the datalog client of comserv commence"
77  << endl;
78  os << "with a telemetry volume header which is non-standard MiniSEED."
79  << endl;
80  os << "This module identifies and skips the telemetry volume headers."
81  << endl << endl;
82  os << "The module swaps data bytes if necessary. The SEED standard"
83  << endl;
84  os << "defines (page 12 of SEED manual) that all headers must have"
85  << endl;
86  os << "big-endian byte-sex. The byte-sex of MiniSEED data blocks is"
87  << endl;
88  os << "defined in the header. The Earth Data Logger violates this"
89  << endl;
90  os << "definition and writes headers in little-endian order. The"
91  << endl;
92  os << "module tries to guess the correct byte-sex in this case"
93  << endl;
94  os << "when reading the header blockettes."
95  << endl << endl;
96  os << "Several consistency checks (see below) are applied to the"
97  << endl;
98  os << "data file. The library module this way refuses to read data"
99  << endl;
100  os << "which obviously is corrupt or which header parameters are"
101  << endl;
102  os << "not plausible or are at variance with the data actually read."
103  << endl;
104  os << "There are data of known sources which fail these tests,"
105  << endl;
106  os << "although the data itself is intact. Such files are considered"
107  << endl;
108  os << "to be at variance with the definition of Data Only SEED (MiniSEED)."
109  << endl;
110  os << "To be able to work on such data, consistency checks can be made"
111  << endl;
112  os << "non-fatal or even be switched of by format modifiers (see below)."
113  << endl;
114  os << endl;
115  {
117  os << "Available format modifiers:\n";
118  mh(key::dumpascii)
119  << "dumps ASCII data blocks to stdout\n";
120  mh(key::ttolerance, "T")
121  << "tolerate time jitter, if not larger than\n";
122  mh << "\"T\", where \"T\" is given in microseconds\n";
124  << "estimate number of frames rather than reading\n";
125  mh << "it from blockette1001; this is required for\n";
126  mh << "data created by \"cube2mseed\" which contains\n";
127  mh << "an invalid count of frames\n";
128  mh(key::nonfatal, "ID[,ID,ID]")
129  << "make consistency check \"ID\" non-fatal (report only)\n";
130  mh << "one or more check \"ID\" values may be passed in a list\n";
131  mh(key::skipcheck, "ID[,ID,ID]")
132  << "skip consistency check \"ID\" entirely (ignore)\n";
133  mh << "one or more check \"ID\" values may be passed in a list\n";
134  os << endl;
135  }
136  {
138  os << "Available consistency checks (IDs to be used with modifiers):\n";
139  mh(key::nframes)
140  << "The number of frames to be expected is specified in\n";
141  mh << "the header in Blockette 1001. This value will be\n";
142  mh << "compared against the number of frames actually\n";
143  mh << "used to store data.\n";
144  mh << "This test is only applied if the number of frames\n";
145  mh << "actually is specified in the header. Some data require\n";
146  mh << "the number of frames to be guessed (if Blockette 1001)\n";
147  mh << "is missing.\n";
148  mh(key::nsamples)
149  << "The number of samples to be expected is provided in\n";
150  mh << "the header in the fixed section data header. This\n";
151  mh << "value will be compared against the number of\n";
152  mh << "samples actually provided in the logical record.\n";
153  mh(key::data)
154  << "The sample value of the last sample in the record\n";
155  mh << "is compared against the value of the reverse\n";
156  mh << "integration constant as provided in the first data\n";
157  mh << "frame of the record. Both must be identical.\n";
158  mh(key::usec)
159  << "The SEED Reference Manual (Version 2.4, August, 2012, page 124)\n";
160  mh << "specifies the usec field in [1001] Data Extension Blockette:\n";
161  mh << "The recommended value is from -50 to +49 usecs. At the users\n";
162  mh << "option, this value may be from 0 to +99 usecs.\n";
163  mh(key::all)
164  << "Select all consistency checks\n";
165  os << "Consistency checks will be selected upon a substring match\n"
166  "against check IDs. This means that by passing only a substring\n"
167  "in the argument list to the format modifier several checks\n"
168  "can be selected at once,\n";
169  os << endl;
170  }
171  } // void imseedstream::help(std::ostream& os)
172 
173 } // namespace datrw
174 
175 /* ----- END OF imseedstream_help.cc ----- */
const char *const usec
keywords for consistency checks
provide format modifiers (prototypes)
const char *const nframes
keywords for consistency checks
const char *const ttolerance
keywords for format modifiers
Help formatting modifier online help.
const char *const data
keywords for consistency checks
const char *const dumpascii
keywords for format modifiers
Root namespace of library.
Definition: aalibdatrwxx.cc:16
static void help(std::ostream &os=std::cout)
const char *const skipcheck
keywords for format modifiers
const char *const all
keywords for consistency checks
provide mini-SEED data (prototypes)
const char *const nsamples
number of samples per minute block and channel
const char *const estimateNframes
keywords for format modifiers
const char *const nonfatal
keywords for format modifiers