Field programmable gate arrays (FPGAs) are configurable digital electronic devices capable of providing high-speed, low-latency and controlled latency digital interfaces to experiments. For example, FPGAs have been used in fluorescence lifetime measurements, various imaging methods, detection of photon correlations, gravitational wave detectors, and gravimeters. This course will equip students with the basic knowledge of how to interface physics experiments to digital electronics, and how to program FPGAs. An introduction to hardware description languages (HDLs) is given on the example of Verilog. HDLs are fundamentally different from computer programming languages and understanding them is crucial for the use of FPGAs. After completion, participants will be able to integrate FPGAs into their own experiments, create simple FPGA configurations, understand common problems and strategies to overcome them, and be aware of resources to help extend these skills

Lecturer: Federica Fabbri

Institution: Glasgow

Hours Equivalent Credit: 12 (4 x 1hour lectures and 4x2hr tutorials)

Assessment: Continuous Assessment

 This course has priority booking for Particle Physics students. Please refer to the timetable and visit the My.SUPA course area for more information.

Course Summary

Programming is used more and more in scientific research to analyse data and simulate nature. Just as in lab research, results when running a software must be reproducible. Instead of writing the same code twice for different applications, only one code should be written and used by both applications. Software should also be easily extended to allow the research to answer new questions that the scientist did not have when the study began. C++ is the programming language that proved most useful for the scientific world, as it satisfies these features, is versatile and is very fast. Furthermore, the same code can be used on different operating systems, once it is compiled again there. To illustrate how useful C++ is, two thirds of the software that powers a smart phone is written in C++!

This course introduces C++ via four pairs of lecture and computer lab. The computer lab gives you access to a Linux environment with C++ compiler and an Emacs or Vim text editors. As it sometimes slows when many people connect at the same time, you are encouraged to bring your own laptop with Linux or Mac OS to work directly in your day to day work environment, if available.

The topics covered are the basic C++ that needs to get you going in your research. However, object-oriented notions, such as classes and inheritance, will not be covered in this introductory C++. The topics covered include: basic C++ syntax; standard C++ data types (bool, float, char, etc); standard C++ streams (cout, cin, error, etc); standard C++ operators (==, &&, %, etc); conditionals and loops (if, for, while, switch, case, etc); standard templated library types (string, vector, map, list, stringstream, etc); pointers and references; functions; overloading functions; passing argument to a function by reference; templated functions; how to compile your code as an executable or a shared library to be used by another piece of code; how to convert on data type to another data type; how to compute the time it takes to run your code; how to pass arguments at the command line.


Lecturer: Carlos Garcia Nuñez

Institution: UWS

Hours Equivalent Credit: 6

Assessment: Continuous Assessment

Course Summary

This course provides an introduction to uncertainty in measurement.  

Topics will include: random error and relation to statistics; probability distributions and their properties; calculation and estimation of uncertainty; least squares model; applications of data analysis.

The course will be in the form of a maths primer intended for beginning PhD students in condensed matter, solid state and photonics. The topics which will be covered include: Matrix diagonalisation, complex integration and residues, Fourier transforms, and a discussion on different notations which the students will encounter during their studies.

Lecturer: Patrik Öhberg

Institution: Heriot Watt

Hours Equivalent Credit: 6

Assessment: Continuous Assessment

(2 x 3 hour Labs)

In experimental particle physics there are very many particle collisions produced by particle accelerators and colliders. Each collision produces a very complex “photograph” captured by a 3D digital camera called particle detector. For scientific research about these fundamental ingredients of the Universe, these particles need to be 1) recorded, 2) analysed statistically and 3) the results be represented in graphical form to be made public in journal papers. Wouldn’t it be nice to have one program to satisfy all these needs?

The CERN laboratory has produced such a program and offers open access to it. It is now used in all particle physics experiments and starts to be used in nuclear physics and astroparticle physics as well. The software is called ROOT and is based on C++. In other words, it is a collection of C++ libraries that address all the three main goals. ROOT is possible thanks to the objectoriented features C++ of classes and inheritance. The data is stored in a very compact format, allowing for big data storage, both in a format for every collision (called tree), or on counts for the entire sample (histograms). All major types of statistical analyses are implemented. Finally, plots are saved to .pdf, .eps, .gif files. There is also an option to use ROOT from within Python, which simplifies the syntax of the commands. This is called PyROOT and is also used more and more.

This class is an introduction to ROOT to get you started in your research. The prerequisites are the knowledge from the SUPACOO class, but classes and inheritance will be discussed in this class. We will read a data tree in a visual mode and in code, will fill histograms from the tree, will fit a histogram to a function, will overlay different histograms to compare them (the standard in physics when the experiment is done in two different conditions and the results are compared) and save the results in graphical form. Depending on the time, we will go further into ROOT. We will also introduce PyROOT, and mention more advanced ROOT tutorials where you can study more.

Assessment: Continuous Assessment