University of Hamburg
Particle Physics & Detector Development, Institute of Experimental Physics

Physics campus Bahrenfeld, Building 68, room 119
Luruper Chaussee 149
D-22761 Hamburg, Germany

Are you looking for a research project in our Particle Physics & Detector Development group at the Institute of Experimental Physics?
Please contact me, Prof. Schleper, or other members in our group.

What is the LHC and CMS?

To read more about CMS, you can read this introduction to the LHC and CMS.

First steps in ROOT

To get acquainted with ROOT, follow these tutorials on installing ROOT, debugging and documentation, interactive sessions with ROOTfiles, writing analysis code, storing results, (or download all at once).

Alternatively, you can follow the steps described in this document with first ROOT commands.

First steps in python

To get acquanted with python, please repeat all the steps described in this short tutorial. To execute the commands, I recommend you use (install) ptpython, bpython, or ipython
See my python seminar for more links on python; it is easy to write and read and has many features for data analysis.

Workflow: ipython notebook

To document your work, I recommend you use jupyter notebooks (similar to mathematica). You can convert these to pdfs for documentation or embedding in presentations; your results ideally look something like this pdf document. See also this description.

Please install jupyter notebook, and follow the steps in the LIGO gravitational wave data in ipython Jupyter notebooks.
Please make sure to have ROOT installed with python support. Also, it is useful to have the files rootnotes and rootprint with utils. In orderr to be able to import them in any program anywhere, please add the directory where you save them (e.g. ~/bin/python) to your python path.
To get familiar with ROOT in python, please do the tutorials measuring the D0 lifetime at the LHC and obtaining signal variable distributions from the LHCb masterclass.
For more examples see this gallery.

Introduction to the linux shell

Please follow the instructions in this short introduction to z-shell (zsh). You can also use these examples of a config, aliases, inputrc, and profile (to be saved under ~/.zshrc, ~/.aliases, ~/.zshinputrc, and ~/.zprofile, resp.) for inspiration. You may find the aliases especially helpful, as they contain DESY- and CMS-specific commands.
Then, have a look at what a shell is and how to use it. Some alternatives to zsh are described; however, I recommend you still use zsh.
To read more about zsh, see: here and here.
You can create short names for logging in through ssh. See this example of an ssh config.

To not lose your work on a remote machine you can use for example tmux or screen that create session that you can detach and attach when you log in another time and/or from elsewhere. These sessions can also be set up so that they are shared. You can remap shorcuts in for example tmux, see this example of a tmux config.

Introduction to Vim

Please play around at this interactive vim tutorial.
See also this tutorial and this page for more on this editor.
You can use alternatives like emacs as well, but I recommend you use vim. You can use gvim as a start (graphical vim).
I recommend to save a vimrc similar to this example that is to be saved under ~/.vimrc. If you use this entire example, you will need to create the directories ~/.vim, ~/.vim/swaps, and ~/.vim/backups.
Or, have a look at the very nice vimrc among other "dotfiles" here.

Introduction to LaTeX

Please create the document for your thesis in LaTeX right now with a title, contents, and references section. See LaTeX in minutes or this introduction by Andy Roberts if you are not yet familiar with latex.

Introduction to C++

It is very important that you are familiar with C(++). Please create your own "Hello world" program following this example and execute it.
Also, create the loop examples described in lesson 3 of a C tutorial and execute the programs.
For comparison, create a program with a for loop in python just like the one above in C, and execute it.
Whenever you start frowning at the quirks of C(++), please refer to these very nice introductions to C.


See this example for opening a ROOT file and plotting or printing content in an ipython notebook
For this you will need some helper code rootnotes, rootprint, and utils.

Alternatively, try to open, read, write, and draw a ROOT file following this pyroot example from DESY.

See also this interface between ROOT and NumPy for converting trees to arrays and vice-versa.
Andre Holzner has a few pyROOT examples on his blog, for example filling an ntuple and using TCanvases (but I recommend using matplotlib instead, e.g. this rootpy example or just starting from e.g. arrays or dataframes of data).
There is also a CERN manual on pyROOT with examples,
See also this miniAOD example and and these examples.
Note that the TSelector class of ROOT could come in handy as well for reading and analyzing ROOT trees.

Machine learning (ML) in high energy physics (HEP)

Please refer to this school with here the lectures and exercises for machine learning examples in high energy physics.
Examples of TMVA in python can be found here and here.
Alternatively, you can use for example scikit-learn instead of TMVA.


The exercises of the CMS Data Analysis School can be very helpful for reference.
If you have the chance, do attend this school.

Multijet and missing energy all-hadronic analysis

If you work on this analysis, please refer to this twiki for information about the ntuples created.

Getting help

For programming problems, has many answered questions.