Software for data acquisition
Picture below shows how parts of the DAQ and DCS work together.
DAQ server calculates what lasers should be turned on and what lasers should be turned off. This calculation based on the information in the files
lasers.xml and daqtree.xml.
DAQ server side software contains of different parts and modules. At first it was a big module doing everything and written in Python. Because of the needs growing up this module has been bloating up too. Afterwards it had been split into two modules and had been rewritten in Java programming language. Java programming language has been choosen because of its such features as no memory managing errors, automatic garbage collection, syntax close to C++ , easyness of learning and understanding, "write once, run anywhere" dogma (so it's supposed to write and compile code in Java just once, after that it shopud work on Unix, Windows, etc.) , plenty of different libraries for almost all needs. Moreover Java programming language has lot of good development envirenments.
So, DAQ server side software has been split into two different modules:
Server side DAQ software was designed to be as much flexible as possible. It could be extended to fit any need of the DAQ part of CMS experiment. To extend and work with this software you are better to read and understand key points in this software. Some of them described in the class reference documentation, some - in the tutorials and special purpose helps. But documentation is still incomplete and some classes lack documentation. In this calse you can read the source code. I has documented it fully. Not every linde of the source code is documented but some sophisticated places have comments and thoughts. Anyway I would be glad to recieve your opinions and suggestions about documentation and code as well as design and architecture.
Developer's documentation:
Configuration in XML
Because configuration of the server is written in XML in would be good if you are familiar with shuch things as DTD, XPath, XML. You don't need to be an XML guru. Moreover I am explaining configuration in simple terms and if you don't those things you still can read this manual and work with configuration of the DAQ server side software.
How to extend server side software.
This is yet going to be written manual about how to extend DAQ server side software. It contains guidelines and some suggestions. Also contains examples of the code.
DIM related issues.
This doc describes DIM interface in general and how it has been implemented in DAQ server side software. Also it has some suggestions about how to extend the DAQ server side software in that part which intercommunicates with DCS using DIM interface libraries.
Storing polls data into the database.
It has been supposed that information DAQ server side software obtained from the DCOPS boards should be stored into the small relational database. Because of the lack of the time it has not been implemented. However some suggestions are written here and it's possible to implement database storage in nearest future.
Client side software has been developed at first in Python using PyQT. After the code hase bloated up to the size of 100k it has been re-written in Javaprogramming language. Later Eclipse platform had been choosen to develop the client software. Eclipse platform allows to make software extendable with plug-ins and automate process of updating software. Disadvantage of using Eclipse is the weight of code. Size of the libraries and different modules of the Eclipse can go up to several megabytes. Also work with GUI in Eclipse is little bit confusing and hard to understand for people experienced in the Swing GUI programming. Eclipse has its own GUI subsystem - SWT. It is claimed to be faster than usual Swing library, I didn't tested it though.
I put onto this web page different documentation for developing in Java ( Eclipse and SWT particularly ). This information is in PDF and CHM files. So, you don't need to surf the web looking for tutorials or papers. I hope this information will be useful.
Client side software has not so much code. But it uses Eclipse framework and sometime it's quite difficult to understand how the certain part works. I explained the basics using drawings and pictures.
This software is partly maintained and supported by Evgeniy N. Sharapov. Though you want to participate in this or you have suggestions, please contact me.