Skip to content

drbenmorgan/podio

 
 

Repository files navigation

podio

Bug tracker

Please submit feature requests and bugs to https://sft.its.cern.ch/jira/projects/PODIO

Documentation

Browse the API documentation created with Doxygen at

http://fccsw.web.cern.ch/fccsw/podio/index.html.

Prerequisites

If you are on lxplus, all the necessary software is preinstalled if you use a recent LCG or FCC stack release.

On Mac OS or Ubuntu, you need to install the following software.

ROOT 6.08.06

Install ROOT 6.08.06 (or later) and set up your ROOT environment:

source <root_path>/bin/thisroot.sh

Python 2.7

Check the python version by doing:

python --version

Check that the yaml python module is available

python
>>> import yaml

If the import goes fine (no message), you're all set. If not, you need to install yaml. For that, you need to:

1- install the C++ yaml library, which is used by the python module. On Mac OS, The easiest way to do that is to use homebrew (install homebrew if you don't have it yet):

brew install libyaml

2- install the python yaml module (first install pip if you don't have it yet)

pip install yaml

Check that you can now import the yaml module in python.

Preparing the environment

Full use of PODIO requires you to set the PODIO environment variable and modify LD_LIBRARY_PATH and PYTHONPATH. Some convenience scripts are provided:

# Set PODIO install area to `./install` and setup environment accordingly
source ./init.sh

or

# Setup environment based on current value of `PODIO`
source ./env.sh

Or you can setup the environment entirely under your control: see init.sh and env.sh.

Compiling

If you are using the easy setup from init.sh then create separate build and install areas, and trigger the build:

mkdir build
mkdir install
cd build
cmake -DCMAKE_INSTALL_PREFIX=../install ..
make -j 4 install

To see a list of options, do this in the build-directory:

cmake -LH ..

Running

The examples are for creating a file "example.root",

../install/tests/write

reading it again in C++,

../install/tests/read

and reading it again in python,

python ../tests/read.py

Modifying the data model

Podio features an example event data model, fully described in the yaml file tests/datalayout.yaml. The C++ in tests/datamodel/ has been fully generated by a code generation script, python/podio_class_generator.py.

To run the code generation script, do

mkdir ../Tmp
mkdir ../Tmp/data
mkdir ../Tmp/src
python ../python/podio_class_generator.py ../examples/datalayout.yaml ../Tmp data

The generation script has the following additional options:

  • --clangformat (-c): Apply clang-format after file creation (uses option -style=file with llvm as backup style), needs clang-format in $PATH.
  • --quiet (-q): Suppress all print out to STDOUT
  • --dryrun (-d): Only run the generation logic and validate yaml, do not write files to disk

Running tests

After compilation and installation (!) you can run rudimentary tests with

make test

Packages

No packages published

Languages

  • C++ 88.5%
  • Python 9.3%
  • CMake 1.9%
  • Other 0.3%