GSoC/GCI Archive
Google Summer of Code 2012


Web Page:

Mailing List:

CERN (European Organization for Nuclear Research) is one of the world’s largest and most exciting centres for fundamental physics research. CERN is also famous for being the place where Tim Berners-Lee  invented the World Wide Web. Most of the activities at CERN are currently directed towards operating the world’s biggest elementary particle accelerator - the Large Hadron Collider (LHC), and running the four largest experiments at the LHC (ALICE, ATLAS, CMS, LHCb). These seek to expand the frontiers of knowledge and complete our understanding of the constituents of matter and their interactions, of the conditions in the first instants after the Big Bang and of the differences between matter and anti-matter.

Fear not! The vast majority of our GSoC projects do not require any physics knowledge.

The CERN Virtual Machine (CernVM) is an R&D project established in the Software group of CERN’s Physics Department (PH/SFT) to investigate how virtualization technologies can be used to improve and simplify the daily interaction of physicists with experiment software frameworks and the Grid infrastructure. CernVM maintains a Virtual Software Appliance designed to provide a complete and portable environment for developing and running LHC data analysis applications on any end user computer (laptop, desktop) as well as on the Grid and on Clouds.

Geant4 is a toolkit for the simulation of the interactions of radiation with material.  It is used to simulate interactions in the detectors of the LHC and other High Energy Physics (HEP) experiments and in diverse other fields. Examples outside HEP include using it to assess the effects of radiation on the electronics of satellites and to design improved medical detectors with specially designed applications such as GATE. LHC experiments use Geant4 to compare the signatures of events from new physics (such as the Higgs boson and particles which are candidates for dark matter) to the signatures of events coming from known interactions which could mimic them. Geant4 is created by the Geant4 collaboration of 90 physicists and engineers from around the world, spaning teams at leading High Energy Physics laboratories such as CERN (Geneva, Switzerland), Fermilab (Batavia, IL), KEK (Tsukuba, Japan), SLAC (Stanford, CA) and Triumf (Vancouver, Canada), as well as many universities and institutions. The toolkit continues to be developed to improve its precision and scope of application, and to better utilise current and emerging computer architectures.


The ROOT system provides a set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Having the data defined as a set of objects, specialized storage methods are used to get direct access to the separate attributes of the selected objects, without having to touch the bulk of the data. Included are histograming methods in an arbitrary number of dimensions, curve fitting, function evaluation, minimization, graphics and visualization classes to allow the easy setup of an analysis system that can query and process the data interactively or in batch mode, as well as a general parallel processing framework, PROOF, that can considerably speed up an analysis.



  • CernVM Co-Pilot log analysis and visualisation Extending the Co-Pilot's monitoring component with featues which would allow log analysis and visualisation of data generated by Co-Pilot Agents, through a web interface.
  • Continuous cartography of public network services This project aims to develop an algorithm that maps IP addresses of CERN VM clients to mirror servers in such a way that network latency is reduced. The project also involves building a web application to allow administrators to dynamically add/remove mirror servers. Also, the application should allow for visualization of mirror locations across the globe on a Google/OpenStreet map.
  • Dodgy ad-hoc network services for CernVM-FS Application - From CernVM-FS Technical Report: "The CernVM File System is a client-server filesystem developed to deliver software stacks onto virtual machines in a fast, scalable and reliable way. (...) CernVM-FS uses outgoing HTTP connections only." ​​By design, it needs networks services like HTTP and DNS and it needs stability. Under the direction of Jakob Blomer, I want to create a testing environment to check how the CernVM-FS react to some specific errors in network services.
  • Geant 4 on GPUs Radiation transport simulations find use in a variety of applications, especially in the fields of particle physics and in medicine for calculation of doses in radiation therapy. I propose the implementation of a radiation transport algorithm with the Geant4 toolkit using Graphics Processing Units (GPU). GPUs are highly parallel SIMD chips which have been shown to give speedups of several orders of magnitude in many applications. The most accurate method, namely the Monte Carlo method for simulation can greatly benefit from the use of a GPU implementation in terms of speed or number of events simulated. I will write macros for certain parts of Geant4 to allow for the simulation of Gamma particles on a GPU. I will also compare this new parallel implementation with the existing one in terms of speedup, accuracy and try to address potential bottlenecks.
  • iOS Port of CernVM Co-Pilot Agent CERN’s CernVM Co-Pilot is a framework that allows computer users to participate in CERN’s volunteer computing cloud for calculating resource-intensive experiments. The downloading, computing, and uploading of experiments is done by the Co-Pilot Agent software, which users install on their home computers. I propose to port this Co-Pilot Agent to iOS, which would allow CERN to utilize the computing resources of thousands of mobile phones across the globe for the computation of experiments.
  • Profile and reorder execution to improve throughput of Geant4 The purpose of this project is to devise a set of meaningful, reliable, reproducible and automated profiling methodologies acting upon the Geant4 toolkit, and subsequently make changes to the code in order to increase its throughput and decrease its execution times, without compromising its correctness or generating regressions and 2nd-order effects.
  • RootMpi Due to the great significance of the parallel programming within the scientific community and the adventages openmpi brings us for those purposes, it is natural to think on an extension for cern’s ROOT libraries. This project will give openmpi the skill to send and receive ROOT’s native datatypes, this through the redefinition of classes according to the necessity of each group of similar datatypes and the implementation of macros and scripts will give the execution and compilation hability to the ROOT’s interpreter (cint), mpirun-like. The design of the execution module through cint was based on buffers of code which will grant the correct definition as openmpi requires for the code block.