NA64DP  0.0.1
A software pipeline for data processing in NA64 experiment
An Educational Project for NA64 Data Processing

This project had began as an educational fixture devoted to basic analysis of the data produced within the NA64 experiment (CERN, SPS). Refer to How to Install Cheatsheet section below for a list of commands to build everything within a dedicated Docker container.

Repository Content

The project is written on C/C++. There are one shared library that is used by two executable applications or by Python bindings, all produced by this package.

Once build this project will provide na64dp-pipe application that is an entry point to actual data processing.

Optionally, the na64dp-tests application that performs self-testing routines may be built as well.

There is an online documentation page, generated by Doxygen system, based on the source code provided within this project.

Documentation

In the doc/ directory of current repository, one can find detailed explaination on key concepts of the project, various details on how to install and run the project and so on.

Project is documented via Doxygen engine. Check out the generated output for guideines, code reference and various instructive examples (see "Related pages" section of online docs for a full list).

Dependencies

Mandatory vendor-specific dependencies are:

  • CERN's ROOT data analysis framework
  • yaml-cpp – a YAML parser and emitter
  • cap'n'proto for C++ – a serialization protocol package
  • log4cpp – a C++ logging library
  • uriparser C library – a RFC 3986 compliant parsing and handling lib (we will make it optional at some point)
  • CMake, binutils and GCC for building the project.

Optional dependencies, extending the features:

Also, there are some dependencies from NA64 software ecosystem that are not shipped within this project. One may either rely on their own building instructions, or utilize Docker container supported within this project.

How to Install (Cheatsheet)

This is the brief instructions of the recommended install procedure. For detailed version, see doc/install.md.

$ git clone https://bitbucket.org/CrankOne/na64-ecal-edu.git ecal-edu
$ git clone https://gitlab.cern.ch/P348/p348-daq.git
$ git clone https://gitlab.cern.ch/P348/na64-event-exchange.git na64ee
$ mkdir na64ee.build
$ cd ecal-edu/presets/docker
$ docker build -t hepfarm4ecal-edu .
$ cd -

For data located in, say /data, run the interactive session within the container:

$ docker run -p5723 --volume $(readlink -f .):/var/src \
                    --volume /data:/data \
                    --volume /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY \
                    -ti hepfarm4ecal-edu

Build all the libs (in container session we mark prompt with @$ instead of $):

@$ export ROOTSYS=/usr/lib/root/6.12
@$ export PATH="$PATH:/usr/lib/root/6.12/bin"
@$ cd p348-daq
@$ ./build
@$ cd na64ee.build
@$ cmake ../na64ee \
        -DDAQDECODING_LIB_STATIC=../p348-daq/coral/src/DaqDataDecoding/src/libDaqDataDecoding.a \
        -DMONITOR_LIB_STATIC=../p348-daq/date/monitoring/Linux/libmonitor.a \
        -DCMAKE_INSTALL_PREFIX=../bundle.install
@$ make
@$ make install
@$ cd ..

Build this project itself with following commands:

@$ mkdir ecal-edu.build
@$ cd ecal-edu.build
@$ cmake ../ecal-edu -DCMAKE_PREFIX_PATH=../bundle.install/lib/cmake/na64
@$ make

All the built libraries are stored on the host, so there is no need for above procedure to ran each time you enter the container.

Project Structure Details

The following structure is respected:

  • bin/ is directory for executable files. Besides binary executables produced with make there are various Python and Bash scripts that have to be kept there.
  • doc/ lists the documentation assets (guideline pages, examples, etc.)
  • include/ is for C/C++ header files
  • notebooks/ is for Jupyter's notebooks: Python and ROOT.
  • presets/ is for configuration files
  • src/ is for C/C++ inplementation files
  • utils/ is for various utils, tiny subprojects, etc.
  • CMakeLists.txt file is main file that performs build procedure of the project (to be precise, instructs the CMake application how to generate a Makefile that is then used by make to build up everything).
  • README.md is this file

Authors

On behalf of NA64 collaboration:

  • Renat R. Dusaev
  • Ivan Kramoykin
  • Ilya Voronchikhin