During the last month I was completely engaged in getting the ROOT client working with Naradabrokering and Clarens so that the Physicist can submit and monitor analysis jobs collaboratively. It was not just another implementation problem, but a implementation+integration task which requires different hetrogenous components to work together. The user case that we tried to achieve.
- A Physicist identify a dataset from a partial physics experiment
- He then write an analysis script based on some analysis criteria using ROOT language and test it using a sample data file in his computer.
- Now he needs to execute this analysis on all the data files available for a particular experiment.
- While the jobs are getting processed, he should be able to monitor the results of each analysis sub task, which is a histogram.
- The client program that needs to be developed should be able to display and merge the resulting histograms in real time.
- Also, any other physicist who would like to see the result of the analysis as an when it is happening, should be able to connect to the same experiment and see the results getting merged one by one in his Client Software.
Some explanation about the software:
- Main canvas shows the histogram of the results. All the histograms generated at each analysis sub task is merged and displayed to the user
- Panel at the top right; shows the connected server. In this example, it has been connected to three Clarens servers running in three different machines.
- Panel below that; shows the available data files at each server. This panel also shows the status of each file, whether it has been processed or not by changing color. "Grey" color indicates that the file has not yet been processed, "Red" color indicates that the resulting histogram for that file has been received and in the process of merging it with the available results so far, and the "Blue" color indicates that the file has been processed and the resulting histogram has been merged with the existing results.
Few Implementation Details:
The GUI is completely written in the interpreted language provided by the ROOT framework.
It uses a C++ bridge for Naradabrokering and C++ client library for Clarens server internally.
It also uses a python script to submit analysis tasks to multiple Rootlets (A concept similar to Servlet) concurrently. This is especially required because the interpreted ROOT language does not support multi-threading.