Back Midas Rome Roody Rootana
  Midas DAQ System  Not logged in ELOG logo
Entry  24 Apr 2020, Pintaudi Giorgio, Forum, API to read MIDAS format file 
    Reply  24 Apr 2020, Stefan Ritt, Forum, API to read MIDAS format file 
       Reply  24 Apr 2020, Pintaudi Giorgio, Forum, API to read MIDAS format file 
          Reply  24 Apr 2020, Stefan Ritt, Forum, API to read MIDAS format file 
    Reply  25 Apr 2020, Konstantin Olchanski, Forum, API to read MIDAS format file 
       Reply  03 May 2020, Pintaudi Giorgio, Forum, API to read MIDAS format file 
          Reply  03 May 2020, Konstantin Olchanski, Forum, API to read MIDAS format file 
             Reply  04 May 2020, Pintaudi Giorgio, Forum, API to read MIDAS format file 
          Reply  03 May 2020, Stefan Ritt, Forum, API to read MIDAS format file ReferenceCardForMac.pdf
             Reply  26 May 2020, Pintaudi Giorgio, Forum, API to read MIDAS format file 
Message ID: 1884     Entry time: 25 Apr 2020     In reply to: 1878     Reply to this: 1901
Author: Konstantin Olchanski 
Topic: Forum 
Subject: API to read MIDAS format file 
<p>[quote=&quot;Pintaudi Giorgio&quot;]Dear MIDAS people, I need to borrow your 
wisdom for a bit. I am developing a piece of software that should read the history data 
stored in a [FONT=Times New Roman].midas[/FONT] file (MIDAS format) and integrate it 
into the WAGASCI data quality output. In other words, I need to read some temperature 
values stored in a [FONT=Times New Roman].midas[/FONT] file and compare them with 
the MPPC gains and check for temperature/gain dependence. I see three possibilities: 
[LIST] [*] write a custom parser in C++ using the instructions contained in the 
[URL=https://midas.triumf.ca/MidasWiki/index.php/Mhformat]Mhformat page[/URL]; [*] call 
the mhist program from within my application; [*] call the mhdump program from within my 
application; [/LIST] [B]Which solution do you think is the best?[/B] Because there is no 
need for raw performance, if possible, I would like to write my application in Python3 but 
C++ is also an option. [/quote]</p>

(Please write messages in plain text format, thank you)

The format of .hst midas history files is pretty simple and mhdump.cxx is an easy to read 
illustration on how to read it from basic principles (without going through the midas library, 
which can be somewhat complicated). The newer "FILE" format for history is even simpler 
to read because it is just fixed-record-size binary data prepended by a text header.

You can also use the mh2sql program to import history data into an sql database (mysql 
and sqlite should work) or to convert .hst files to "FILE" format files. This works well
for "archiving" history data, because the "FILE" format works better for looking at old data,
and for looking at data in "months" or "years" timescale.

Back to your question, you can certainly use "mhdump" as is, using a pipe (popen()), or 
you can package mhdump.cxx as a c++ class and use it in your application. If you go this 
route, your contribution of such a c++ class back to midas would be very welcome.

You can also use mhist, but the mhist code cannot be trivially packaged as a c++ class
to use in your application.

You can also suggest that we write an easier to use history utility, we are always open to 
suggested improvements.

Let us know how it works out for you. Good luck!

K.O.
ELOG V3.1.4-2e1708b5