HOWTO read GlueX hddm data from a jupyter notebook

From GlueXWiki
Jump to: navigation, search

Two public python modules are available for reading hddm event data into a python session on a jupyter notebook environment like https://colab.research.google.com.

  • gluex.hddm_s - python module for reading hddm_s events that encode raw hit information, either from simulation or real data converted from evio to hddm format.
  • gluex.hddm_r - python module for reading hddm_r events that encode reconstructed event information in REST format.

Below are some examples of jupyter notebooks that demonstrate this capability in a jupyter notebook on Google colab. To enable the same functionality on your desktop or portable device, the python modules can be installed using the familiar "pip install" command.

$ python3 -m pip install --user gluex.hddm_s
$ python3 -m pip install --user gluex.hddm_r

To demonstrate this capability in a jupyter environment, cut and paste the following block into a code cell within a freshly opened notebook. Running this cell produces a series of lines "found run 71000, event X000" where X increases from 1 to 40.

!python3 -m pip install --user gluex.hddm_s
from gluex import hddm_s
for rec in hddm_s.istream("root://nod25.phys.uconn.edu/Gluex/simulation" +
                          "/simsamples/particle_gun-v5.2.0/particle_gun001_019.hddm"):
   for pe in rec.getPhysicsEvents():
      if pe.eventNo % 10000 == 0:
         print(f"found run {pe.runNo}, event {pe.eventNo}")

Here is a similar demonstration where the input data are in REST format instead of raw hits. Running this cell produces a similar output to what the above cell generates.

!python3 -m pip install --user gluex.hddm_r
from gluex import hddm_r
for rec in hddm_r.istream("root://nod25.phys.uconn.edu/Gluex/simulation" +
                          "/simsamples/particle_gun-v5.2.0/particle_gun001_019_rest.hddm"):
   for pe in rec.getReconstructedPhysicsEvents():
      if pe.eventNo % 10000 == 0:
         print(f"found run {pe.runNo}, event {pe.eventNo}")