My 2017 Summer Internship at CERN

After an exciting and rewarding summer interning for Adriaan Rijllart at the European Organization for Nuclear Research (CERN) improving a model of the Large Hadron Collider (LHC) accelerator in 2017, this summer I followed up with a project for the actual working accelerator.

Before a research group at CERN using the LHC receives the beam of particles, they receive a series of electronic pulses which convey the current status of beam. These pulses are used to ensure that the scientific equipment is correctly set for the incoming beam of particles. I was tasked with writing software to simulate these pulses to make it possible to test the equipment when there is no incoming particle beam.

For this task, I used a National Instruments cRIO 9068 with Ni 9473 and 9403 modules. The 9473 acts as a digital output module, while the 9403 acts as a digital input module. The cRIO was also connected to a touch screen, so the software could be configured without a computer. The programming was done in LabView because it interfaces well with National Instruments hardware and is the standard programming language for experimental physicists.

The software has two modes. In the timed output mode, the software outputs six configurable-length pulses with delays between them at a given repetition rate. For example, the software could output a 1µs pulse on the first output channel, followed by a delay of 1ms and then a 2µs pulse on the second output channel followed by a delay of 1.25ms. This pattern of pulses and delays would continue through all six outputs. The program would stop the outputs for 100ms until the cycle repeats itself. In the pulse response mode, the software waits for an input pulse, and then produces an output pulse after a specified delay. For instance, the software could wait for a pulse on the first input channel, and when this pulse is received, it would pause for the specified delay, and then output a pulse of the specified length on its respective output channel. Simultaneously the software could receive a pulse on the second input channel, wait for a different specified delay, and then output a different specified-length pulse on its output channel. This could happen concurrently on all six channels.

The software is split into three files. The first file, which runs on the NI Linux RT system, receives information from the front panel interface and relays these settings to the other files. This file provides the basic cycle repetition rate clock for the timed output mode. Both of the other programs run on the cRIO’s FPGA, a special computer designed to do very specific tasks very quickly in parallel. These second and third files handle the timed output and pulse response modes, respectively.
Screenshot of the software front panel in timed output mode

Overall this internship was a great experience. I further improved my LabView programming skills, and learned how to use it to control scientific hardware. I look forward to applying these skills in the future. Again, I am especially grateful to Adriaan Rijllart for being my mentor during this internship.