39 return KM3NETDAQ::getDataType<T>();
49 int main(
int argc,
char **argv)
55 Long64_t numberOfEvents;
60 JParser<> zap(
"Auxiliary program to convert binary data to ROOT formatted data.");
64 zap[
'n'] =
make_field(numberOfEvents) = numeric_limits<Long64_t>::max();
69 catch(
const exception &error) {
70 FATAL(error.what() << endl);
80 JAutoTreeWriter<int> writer;
84 if (!writer.is_open())
93 Long64_t event_count = 0;
97 STATUS(
"File: " << *i << endl);
99 ifstream in(i->c_str());
101 for (JStreamReader is(in); event_count < numberOfEvents; ++event_count) {
103 STATUS(
"event: " << setw(10) << event_count <<
'\r');
DEBUG(endl);
105 if (!(is >> preamble))
108 DEBUG(
"length " << preamble.getLength() << endl);
109 DEBUG(
"type " << preamble.getDataType() << endl);
111 if (preamble.getLength() < JDAQPreamble::sizeOf()) {
113 ERROR(
"File " << *i <<
" invalid length " << preamble.getLength() << endl);
118 JAutoTreeWriter<int>::iterator i = writer.find(preamble.getDataType());
120 if (i != writer.end()) {
122 buffer.resize(preamble.getLength());
124 memcpy(buffer.data(), static_cast<JDAQAbstractPreamble*>(&preamble), JDAQPreamble::sizeOf());
126 is.read(buffer.data() + JDAQPreamble::sizeOf(),
127 preamble.getLength() - JDAQPreamble::sizeOf());
129 JByteArrayReader bin(buffer.data(), buffer.size());
131 i->second->copy(bin);
135 in.ignore((streamsize) (preamble.getLength() - JDAQPreamble::sizeOf()));
137 ERROR(
"Illegal data type, skip" << endl);