nidas v1.2.3
Extract2D.h
Go to the documentation of this file.
1#ifndef _nidas_dynld_raf_extract2d_h_
2#define _nidas_dynld_raf_extract2d_h_
3
4
14#include <nidas/util/UTime.h>
15#include <nidas/util/util.h>
17#include <nidas/util/Process.h>
18
19namespace nidas { namespace dynld { namespace raf {
20
21
22#define TWOD_BUFFER_SIZE (4096)
23
24// PADS record format. This is what we will repackage the records into.
26{
27 int16_t year;
28 int16_t month;
29 int16_t day;
30 int16_t hour;
31 int16_t minute;
32 int16_t second;
33 int16_t msec; // msec of this record
34 int16_t wday; // overload time, msec
35 unsigned char data[TWOD_BUFFER_SIZE]; // image buffer
36};
37typedef struct PADS_rec PADS_rec;
38
39
40// ADS record format. This is what we will repackage the records into.
41struct P2d_rec
42{
43 short id; // 'P1','C1','P2','C2', H1, H2
44 short hour;
45 short minute;
46 short second;
47 short year;
48 short month;
49 short day;
50 short tas; // true air speed
51 short msec; // msec of this record
52 short overld; // overload time, msec
53 unsigned char data[TWOD_BUFFER_SIZE]; // image buffer
54};
55typedef struct P2d_rec P2d_rec;
56
57
58using namespace nidas::core;
59using namespace nidas::dynld;
60using namespace std;
61
62
63class Probe
64{
65public:
76
77 // Input info.
79
80 // Output info.
81 size_t resolution; // in micron
82 float resolutionM; // in meters
83 short id;
85 float clockFreq; // in Mhz
86 int waveLength; // laser wave length in nanometers
87
88 // File info.
90
91 // Number of diodes, 64 for Fast2D, 32 for old probes.
92 size_t nDiodes;
93
94 // Total number of records found in file.
96
97 // Total number of records rejected.
101
102 /* Count of each diode value of 1 for the entire flight, sync words excluded.
103 * This diagnostic output helps find which diode is bad when the probe runs away.
104 */
105 size_t diodeCount[64]; // 64 is max possible diodes.
106
107 /* Count of number of particles per record.
108 * This diagnostic output helps find which diode is bad when the probe runs away.
109 */
110 size_t particleCount[512]; // 512 is max possible slices/record.
111
113 size_t inDOF;
114
115private:
116 Probe(const Probe&);
118};
119
120
121
123{
124public:
125
126 Extract2D();
127
128 virtual int parseRunstring(int argc, char** argv) throw();
129
130 virtual int usage(const char* argv0);
131
132 virtual int run() throw() = 0;
133
134// static functions
135 static void sigAction(int sig, siginfo_t* siginfo, void*);
136
137 static void setupSignals();
138
143
144protected:
145
149 virtual size_t countParticles(Probe * probe, const unsigned char * record) = 0;
150
156 virtual size_t computeDiodeCount(Probe * probe, const unsigned char * record) = 0;
157
161 void setTimeStamp(P2d_rec & record, Sample *samp);
162 void setTimeStamp(PADS_rec & record, Sample *samp);
163
164 static bool interrupted;
165
167
170
173
176
178
179 list<string> inputFileNames;
180
182
184
186
188
190
192
194};
195
196}}}
197#endif
#define TWOD_BUFFER_SIZE
Definition Extract2D.h:22
DSMSensor provides the basic support for reading, processing and distributing samples from a sensor a...
Definition DSMSensor.h:88
An interface for sending a SampleHeader to a SampleOutput.
Definition HeaderSource.h:43
Definition SampleInputHeader.h:37
Interface of an output stream of samples.
Definition SampleOutput.h:49
Interface to a data sample.
Definition Sample.h:190
Definition Extract2D.h:123
set< dsm_sample_id_t > excludeIds
Definition Extract2D.h:189
bool copyAllRecords
Copy 100% of 2D records from source file to output file, no filtering.
Definition Extract2D.h:175
void setTimeStamp(P2d_rec &record, Sample *samp)
Decode Sample time tag and place into outgoing record.
Definition Extract2D.cc:178
list< string > inputFileNames
Definition Extract2D.h:179
string outputFileName
Definition Extract2D.h:181
static void sigAction(int sig, siginfo_t *siginfo, void *)
Definition Extract2D.cc:58
bool outputDiodeCount
Whether to output diode count histogram.
Definition Extract2D.h:169
int outputFileLength
Definition Extract2D.h:183
map< dsm_sample_id_t, dsm_sample_id_t > newids
Definition Extract2D.h:191
Extract2D()
Definition Extract2D.cc:118
bool outputParticleCount
Whether to output particle count histogram.
Definition Extract2D.h:172
set< dsm_sample_id_t > includeIds
Definition Extract2D.h:187
static void setupSignals()
Definition Extract2D.cc:75
virtual size_t countParticles(Probe *probe, const unsigned char *record)=0
Count number of particles in a record, also report miss-aligned data.
static bool interrupted
Definition Extract2D.h:164
bool outputHeader
Definition Extract2D.h:166
size_t minNumberParticlesRequired
Definition Extract2D.h:193
void sendHeader(dsm_time_t, SampleOutput *out)
Definition Extract2D.cc:173
virtual int usage(const char *argv0)
Definition Extract2D.cc:97
SampleInputHeader header
Definition Extract2D.h:185
virtual size_t computeDiodeCount(Probe *probe, const unsigned char *record)=0
Sum occluded diodes along the flight path.
virtual int parseRunstring(int argc, char **argv)
Definition Extract2D.cc:126
string xmlFileName
Definition Extract2D.h:177
Definition Extract2D.h:64
size_t inDOF
Definition Extract2D.h:113
size_t particleCount[512]
Definition Extract2D.h:110
size_t recordCount
Definition Extract2D.h:95
Probe & operator=(const Probe &)
DSMSensor * sensor
Definition Extract2D.h:78
float clockFreq
Definition Extract2D.h:85
size_t rejectRecordCount
Definition Extract2D.h:98
size_t nDiodes
Definition Extract2D.h:92
size_t diodeCount[64]
Definition Extract2D.h:105
string serialNumber
Definition Extract2D.h:84
size_t hasOverloadCount
Definition Extract2D.h:89
short id
Definition Extract2D.h:83
size_t rejectTooFewParticleCount
Definition Extract2D.h:99
size_t rejectTooFewDiodesCount
Definition Extract2D.h:100
Probe()
Definition Extract2D.h:66
float resolutionM
Definition Extract2D.h:82
int waveLength
Definition Extract2D.h:86
size_t totalParticles
Definition Extract2D.h:112
size_t resolution
Definition Extract2D.h:81
The essential core classes of nidas.
Definition A2DConverter.h:31
Sample * getSample(sampleType type, unsigned int len)
A convienence method for getting a sample of an enumerated type from a pool.
Definition Sample.cc:70
long long dsm_time_t
Posix time in microseconds, the number of non-leap microseconds since 1970 Jan 1 00:00 UTC.
Definition Sample.h:62
unsigned int dsm_sample_id_t
Definition Sample.h:64
The dynamically loadable classes of nidas. The nidas::dynld namespace and any sub namespaces,...
Definition A2DSensor.h:39
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31
Definition Extract2D.h:42
short minute
Definition Extract2D.h:45
short tas
Definition Extract2D.h:50
short msec
Definition Extract2D.h:51
short day
Definition Extract2D.h:49
short id
Definition Extract2D.h:43
short hour
Definition Extract2D.h:44
short second
Definition Extract2D.h:46
unsigned char data[TWOD_BUFFER_SIZE]
Definition Extract2D.h:53
short year
Definition Extract2D.h:47
short overld
Definition Extract2D.h:52
short month
Definition Extract2D.h:48
Definition Extract2D.h:26
int16_t msec
Definition Extract2D.h:33
int16_t minute
Definition Extract2D.h:31
int16_t second
Definition Extract2D.h:32
int16_t year
Definition Extract2D.h:27
int16_t wday
Definition Extract2D.h:34
int16_t month
Definition Extract2D.h:28
int16_t hour
Definition Extract2D.h:30
int16_t day
Definition Extract2D.h:29
unsigned char data[TWOD_BUFFER_SIZE]
Definition Extract2D.h:35