IDAlignmentWebDisplay
Inner Detector Alignment Web Monitor
* page in development *
Introduction
The
Alignment Monitoring Web Display is an application intended for monitoring the alignment results obtained at the calibration loop. It helps to display the computed alignment correction plus many plots related with the performance (as the detector residuals).
The run-by-run alignment procedure was successfully introduced in the Tier0
IDAlignmentCalibLoop on early 2011. This prompted a need for an easy way to access to the
IDAlignmentCalibLoop
output in order to spot ID misalignments as soon as posible and take an action. For Run-2, there were observed short time scale movements or drift of the IBL detector and a lift up of the Pixels package at the beginning of the run. Therefore it was necessary to adopt an strategy that checks the alignment at
LumiBlock? level.
The Web application consists in a
server, managed by
ATLAS Distributed Computing, and a collection of scripts to produce plots, update the information and handle the http requests.
How to run the web monitor
The code
The current code is stored in
GitLab and the old version in
SVN . Several changes have been made from the old to the new version. The most significant is the simplification of the code which makes it much more easy to understand and keep updated.
Scripts
-
update_runs.py : This is the main script for handling and updating the information.
When executed it loops over all ID alignment calibration loop folders (
/afs/cern.ch/user/a/atlidali/w0/calibLoop/Tier0/data
) of the selected year looking for new runs. Then, it extracts the run information (number of ID tracks, recordtime, etc), stores the alignlogfiles in the server and saves all the available information in a database file named sever_runinfo201X.db (being 201X the year). The Tier0 calibration loop folders to be read for each year are defined in the function GetFoldersWithCalibLoopOutput
of ConfigServer.py . This data is managed using the functions of RunInfo.py .
The db file stores additional information from AMI using pyAMI commands . Note that for accessing AMI is necessary a grid certificate. This information is managed using the functions of AMIHelper.py .
update_runs.py needs ConfigServer?.py, RunInfo?.py, AMIHelper.py and MsgHelper?.py.
-
ConfigServer.py : This script was created to simplify the structure of update_runs.py in comparison to the equivalent in the old code . Here are specified the paths of the different folders that are accessed and created by update_runs.py, RunInfo?.py and AMIHelper.py. It also contains several functions to extract and print the information, get analysis log files, extract the status of the calibration loop alignment results for a given run, create directories and more. These functions are used in update_runs.py.
-
RunInfo.py : By defining the class
runinfo
, this script contains the functions, lists and classes that handle the information of the runs. The dictionary DB
works as a database where the variables to be read from the calibration loop are stored. The dictionary listOfRuns
defines the lists ands dictionaries that classify the runs attending to different criteria.
-
AMIHelper.py : It is the equivalent of RunInfo?.py but for AMI information. Inside the class
amiServer
are defined the functions to collect the information from ATLAS Metadata Interface (AMI).
-
MakeMajorAlignMonPlots.py : This is the central script to produce plots. It is necessary to provide a configuration file (
MakeAlignmentMonitoringPlots.py -c <configurationFile>
)
-
userConfig.py : Configuration file for MakeMajorAlignMonPlots?. Here the user configures the input files, the directories from where the histograms are imported and the kind of output
-
utilities.py : Contains the functions to draw the different plots.
-
index.py : This script is the main code to handle the http requests. It is based on cherrypy , a light python framework to develop web applications. When it is run in the terminal (
python index.py
) it displays the Alignment Web Monitor in the local server. The local server address is indicated in the terminal with the line =ENGINE Serving on http://127.0.0.1:8080=, note that 127.0.0.1:8080 is just an example and, therefore, your local server may be different.
HTML
CSS
Javascript
--
PabloMartinezAgullo - 05 Jun 2018