source: trunk/FACT++/MAINPAGE.md@ 19779

Last change on this file since 19779 was 18634, checked in by tbretz, 8 years ago
Minor updates.
File size: 14.3 KB
Line 
1/** @mainpage
2
3@brief FACT++ - The FACT slow control software
4
5@author thomas.bretz@phys.ethz.ch et al.
6<!--@version 1.0-->
7
8<hr width="100%">
9
10@section toc Table of contents
11<table border='1' bgcolor=#FAFAFA width='100%'>
12<tr>
13<td>
14<ul>
15<li> @ref install_sec
16 <ul>
17 <li> @ref rootwarning
18 <li> @ref packages
19 <li> @ref installroot
20 </ul>
21<li> @ref demos
22<li> @ref dimremarks
23<li> @ref addtab
24<li> @ref Documentation
25<li> @ref References
26 <ul>
27 <li> @ref generalref
28 <li> @ref boostref
29 <li> @ref fitsref
30 <li> @ref qtroot
31 </ul>
32<li> @ref availableprograms
33<li> @ref Examples
34</ul>
35</tr>
36</td>
37</table>
38
39@section install_sec Installation
40
41FACT++ can be downloaded from the svn by
42
43\verbatim
44 svn checkout https://www.fact-project.org/svn/trunk/FACT++ [localdir]
45\endverbatim
46
47it includes a dim version which is automatically compiled.
48
49For compilation use
50
51\verbatim
52 ./configure
53 make
54\endverbatim
55
56Check the \b ./configure options with \b --help. It might look
57confusing, but some features like FITS or QT4 can be switched off,
58if the necessary library is not at hand and the feature is not needed.
59For example, if the GUI is not needed its compilation can be switched
60off by disabling QT4 support with \b --without-qt4.
61
62If you use a custom built root version on your system without QT
63support, but have a distribution packe (e.g. debian package) with
64QT support available, you can give the path to root executables,
65for example, with <B>--with-rootsys=/usr/bin</B>. All other paths
66are extracted from subsequent calls to \b root-config.
67
68Running \b ./configure will take some time. It tries to really check
69carefully that everything needed is available on your system, so that you
70get errors before you start compilation.
71
72If \b ./configure fails and you send a bug report please attach
73the file config.log.
74
75If \b make fails and you send a bug report please attach
76the complete output of <B>make V=1</B>.
77
78\b Reminder: These programs use shared libraries, i.e. whenever you re-compile
79part of the project some of them might be re-compiled as well. As a result
80already running programs might crash unexpectedly! This is \b not a bug.
81
82In principle configure also supports
83
84\verbatim
85 make install
86\endverbatim
87
88which would install the package and the libraries in your system,
89although at the moment this is not recommended
90
91@subsection rootwarning ROOT warnings during compilation
92
93During compilation of the GUI you get some warning from root's
94TQtWidget.h. These warnings are completely harmless and can be ignored.
95However, it is sometimes advicable to get rid of them to get a clean
96compiler run which makes development easier.
97
98Therefore replace
99\verbatim
100inline void resize(const QSize &size) { QPixmap newSize(size); *(QPixmap *)this = newSize; }
101\endverbatim
102by
103\verbatim
104inline void resize(const QSize &sz) { QPixmap newSize(sz); *(QPixmap *)this = newSize; }
105\endverbatim
106in TQtWidget.h
107
108
109@subsection packages Required packages
110
111The following section gives a list of packages which were necessary after
112a fresh Ubuntu 11.04 installation. In addition to all the development
113packages the corresponding package with the library is needed.
114
115Note that a recent C++ compiler is needed supporting the latest C++0x
116standard.
117
118<i>Required (configure will fail without them)</i>
119- subversion
120- gcc
121- g++
122- make
123- libreadline6-dev
124- libboost-all-dev
125- libx11-dev (needed for lesstif, qt4, root)
126
127<i>FITS file support (datalogger, event builder)</i>
128- libccfits-dev
129
130<i>MySQL support (command line options, scheduler)</i>
131- libmysqlclient-dev (optional for MySQL support)
132- libmysql++-dev (option for MySQL support)
133
134<i>If you want 'did'</i>
135- lesstif2-dev
136
137<i>For JavaScrip support</i>
138- libv8-dev
139
140<i>To compile the GUIs</i>
141- libqt4-dev
142- root (see section about root, currently recommended versions 5.18/00b-5.26/00e)
143
144<i>To compile the raw data viewer</i>
145- libglu1-mesa-dev
146
147<i>To compile smartfact with astronomy support and moon</i>
148- libnova-dev
149
150<i>To compile tngweather</i>
151- libsoprano-dev
152
153<i>To compile skypeclient</i>
154- libdbus-1-dev
155- libdbus-glib-1-dev
156
157<i>To create your own documentation</i>
158- graphviz
159- doxygen
160- help2man
161- groff
162- ps2pdf
163
164<i>To create JavaScript documentation</i>
165- jsdoc-toolkit
166
167<i>For developers</i>
168- autoconf
169- autoconf-archive
170- libtool
171- qt4-designer
172
173If you intend to change only Makefile.am but not configure.ac the \b automake
174package instead of the \b autoconf package should be enough.
175
176<i>Some nice to have (FACT++)</i>
177- colorgcc
178- colordiff
179
180<i>Some nice to have (system)</i>
181- fte
182- efte
183- htop
184
185<i>Documentation (usually accessible through http://localhost/ for the tools above:</I>
186- autoconf-doc
187- gcc-doc
188- graphviz-doc
189- libboost-doc
190- libmysql++-doc
191- libtool-doc
192- make-doc
193- qt4-dev-tools [qt4-assistant]
194- qt4-doc-html
195
196
197<!--
198VIEWER
199libqwt5-qt4-dev
200libqwt5-doc
201-->
202
203@subsection installroot How to install root 5.26/00 on Ubuntu 11.04 (natty)
204
205- install gpp4.4, gcc4.4, g++4.4 (root does not compile with gcc4.5)
206- make links to hidden X11 libraries:
207<B><pre>
208cd /usr/local
209sudo ln -s x86_64-linux-gnu/libX* .
210</pre></B>
211- in the root source directory
212<B><pre>
213./configure --enable-qt --with-cc=gcc-4.4 --with-cxx=g++-4.4 --with-xrootd-opts=--syslibs=/usr/lib/x86_64-linux-gnu --prefix=/usr/local
214</pre></B>
215- \b make
216- <b>sudo make install</b>
217- pray
218- don't forget to set LD_LIBRARY_PATH correctly before you try to start the fact gui
219
220
221@section demos Current demonstration programs
222
223- \b dserver2: A virtual board (A TCP/IP server). It is sending a
224 "hello" message after accepting a communication and then in 3s
225 intervals the current UTC time. The board can be set to state 1 or back
226 to state 0 (just as a demonstration)
227- \b dclient5: A control program. It accesses two viratual boards (start them
228 with 'dserver2 5000' and 'dserver2 4001') If both boards are connected the START
229 command can be issued to get them to state 'Running'. In this state
230 an asynchronous time stamp can be requested sending the TIME command.
231 to get back from Running to Connected use STOP.
232- \b test3: a dim console which allows to control all dim servers
233 by sending commands via the dim network.
234- Both, \b dclient5 and \b test3 accept the command line options -c0, -c1, -c2
235 to switch between different console types (or no console in the case of
236 \b dclient5). In the console you get help with 'h' and the available
237 command with 'c' You get the avilable command-line options with --help
238
239First start the two dserver2s. Then start a dclient5 (if you want it
240with console use one of the -c options) and a test3 console (with one
241of the console options if you like) you can now control the hardware
242boards with the START, STOP and TIME commands or stop (Ctrl-C) and
243start one of the programs to see what's happening. In the test3 case
244you first have to \e cd to the server to which you want to talk by \b
245DATA_LOGGER. Don't forget to start \b dns if you want to control dclient5
246from test3 via Dim.
247
248@section dimremarks Remarks about Dim usage
249
250To be able to write all received data directly to the FITS files,
251padding has been disabled calling dic_diable_padding() and
252dis_disable_padding(). This is done in our own error handler
253DimErrorRedirecter. Since this should be one of the first
254objects created in any environment it is quite save. However, every
255Dim client or server in our network which does not use the
256DimErrorRedirecter \b must call these two functions as early as
257possible.
258
259<!--
260@section exitcodes Exit Code
261@section newcommand How to add a new command?
262@section description How to add help textes to services and commands?
263-->
264
265@section blocking Blocking programs at startup
266
267At startup most programs try to resolve the name of the dim-dns
268as well as their local IP address. After this Dim is initialized
269and tries to contact the dns. These are so far the only blocking operations.
270Be patient at program startup. They will usually timeout after a while and
271give you proper informations.
272
273
274@section addtab How to add a new tab in the gui?
275
276Do the following steps in exactly this order:
277- Insert the new page from the context menu of the QTabWidget
278- Copy the QDockWidget from one of the other tabs to the clipboard
279- Paste the copied QDockWidget and add it to the new tab (only the tab should be highlited)
280- Now click on the context menu of the region in the tab (QWidget) and change the layout to grid layout
281
282
283@section Documentation
284
285Each program has an extensive help text (except the examples). This
286help text can be displayed with the \b --help option. For each program
287a man-page is automatically created (from the help-output), which (at
288the moment) can be accessed with <B>man ./program.man</B> (Don't forget
289the ./ before the filename). With <B>make program.html</B> and
290<B>make program.pdf</B> a HTML page and a pdf document can be created
291from the man-page.
292
293With <B>make doxygen-doc</B> the HTML documentation as well as a pdf
294with the whole code documentation can be created.
295
296@subsection FACT++ programs
297
298Each documentation is also available with <B>program --help</B> or
299<B>man ./program.man</B>.
300
301In alphabetic order:
302
303- <A HREF="man/biasctrl.html">biasctrl</A> [<A HREF="pdf/biasctrl.pdf">pdf</A>]
304- <A HREF="man/datalogger.html">datalogger</A> [<A HREF="pdf/datalogger.pdf">pdf</A>]
305- <A HREF="man/dimctrl.html">dimctrl</A> [<A HREF="pdf/dimctrl.pdf">pdf</A>]
306- <A HREF="man/drivectrl.html">drivectrl</A> [<A HREF="pdf/drivrctrl.pdf">pdf</A>]
307- <A HREF="man/evtserver.html">evtserver</A> [<A HREF="pdf/evtserver.pdf">pdf</A>]
308- <A HREF="man/fadctrl.html">fadctrl</A> [<A HREF="pdf/fadctrl.pdf">pdf</A>]
309- <A HREF="man/feedback.html">feedback</A> [<A HREF="pdf/feedback.pdf">pdf</A>]
310- <A HREF="man/fitsdump.html">fitsdump</A> [<A HREF="pdf/fitsdump.pdf">pdf</A>]
311- <A HREF="man/fitscheck.html">fitscheck</A> [<A HREF="pdf/fitscheck.pdf">pdf</A>]
312- <A HREF="man/fitsselect.html">fitsselect</A> [<A HREF="pdf/fitsselect.pdf">pdf</A>]
313- <A HREF="man/fscctrl.html">fscctrl</A> [<A HREF="pdf/fscctrl.pdf">pdf</A>]
314- <A HREF="man/ftmctrl.html">ftmctrl</A> [<A HREF="pdf/ftmctrl.pdf">pdf</A>]
315- <A HREF="man/getevent.html">getevent</A> [<A HREF="pdf/getevent.pdf">pdf</A>]
316- <A HREF="man/gpsctrl.html">gpsctrl</A> [<A HREF="pdf/gpsctrl.pdf">pdf</A>]
317- <A HREF="man/lidctrl.html">lidctrl</A> [<A HREF="pdf/lidctrl.pdf">pdf</A>]
318- <A HREF="man/magiclidar.html">magiclidar</A> [<A HREF="pdf/magiclidar.pdf">pdf</A>]
319- <A HREF="man/magicweather.html">magicweather</A> [<A HREF="pdf/magicweather.pdf">pdf</A>]
320- <A HREF="man/mcp.html">mcp</A> [<A HREF="pdf/mcp.pdf">pdf</A>]
321- <A HREF="man/pfminictrl.html">pfminictrl</A> [<A HREF="pdf/pfminictrl.pdf">pdf</A>]
322- <A HREF="man/pwrctrl.html">pwrctrl</A> [<A HREF="pdf/pwrctrl.pdf">pdf</A>]
323- <A HREF="man/ratecontrol.html">ratecontrol</A> [<A HREF="pdf/ratecontrol.pdf">pdf</A>]
324- <A HREF="man/ratescan.html">ratescan</A> [<A HREF="pdf/ratescan.pdf">pdf</A>]
325- <A HREF="man/showlog.html">showlog</A> [<A HREF="pdf/showlog.pdf">pdf</A>]
326- <A HREF="man/smartfact.html">smartfact</A> [<A HREF="pdf/smartfact.pdf">pdf</A>]
327- <A HREF="man/sqmctrl.html">sqmctrl</A> [<A HREF="pdf/sqmctrl.pdf">pdf</A>]
328- <A HREF="man/temperature.html">temperature</A> [<A HREF="pdf/temperature.pdf">pdf</A>]
329- <A HREF="man/timecheck.html">timecheck</A> [<A HREF="pdf/timecheck.pdf">pdf</A>]
330- <A HREF="man/tngweather.html">tngweather</A> [<A HREF="pdf/tngweather.pdf">pdf</A>]
331- <A HREF="man/zfits.html">zfits</A> [<A HREF="pdf/zfits.pdf">pdf</A>]
332
333@section References
334
335@subsection generalref General references
336- <A HREF="http://www.cplusplus.com/reference">The C++ reference</A>
337- <A HREF="http://www.boost.org">boost.org: The boost C++ libraries</A>
338- <A HREF="http://www.highscore.de/cpp/boost/titelseite.html">Boris Sch&auml;ling: Die Boost C++ Bibliotheken</A>
339- <A HREF="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">GNU Readline</A>
340- <A HREF="http://www.gnu.org/software/ncurses">GNU Ncurses</A>
341- <A HREF="http://dim.web.cern.ch/">Distributed Information Management (DIM)</A>
342- <A HREF="http://dim.web.cern.ch/dim/cpp_doc/DimCpp.html">Distributed Information Management (DIM) - C++ reference</A>
343- <A HREF="http://qt.nokia.com/">Qt homepage</A>
344- <A HREF="http://qt.nokia.com/downloads/">Qt downloads</A>
345
346@subsection boostref Boost references
347- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html">boost::bind (V1.45.0)</A>
348- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio.html">boost asio (V1.45.0)</A>
349- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/date_time.html">boost date_time (V1.45.0)</A>
350- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/program_options.html">boost program_options (V1.45.0)</A>
351- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v3/doc/index.htm">boost filesystem (V1.45.0)</A>
352- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/index.html">boost regex (V1.45.0)</A>
353- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/system/doc/index.html">boost system (error codes) (V1.45.0)</A>
354- <A HREF="http://www.boost.org/doc/libs/1_45_0/doc/html/thread.html">boost thread (V1.45.0)</A>
355- <A HREF="http://www.boost.org/doc/libs/1_45_0/libs/conversion/lexical_cast.htm">boost lexical_cast (V1.45.0)</A>
356
357@subsection fitsref FITS references
358- <A HREF="http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html">The FITS data format</A>
359- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/">FITS homepage</A>
360- <A HREF="http://heasarc.gsfc.nasa.gov/fitsio/CCfits/">CCfits - A C++ wrapper to cfitsio</A>
361- <A HREF="http://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/">fv - A very simple viewer to FITS file contents</A>
362- <A HREF="http://www.star.bris.ac.uk/~mbt/topcat/">topcat - <B>T</B>ool for <B>OP</B>erations on <B>C</B>atalogues <B>A</B>nd <B>T</B>ables
363
364@subsection qtroot How to integrate root in QT?
365
366- <A HREF="http://doc.trolltech.com/4.3/designer-creating-custom-widgets.html">QT4: Creating custom widgets</A>
367- <A HREF="http://root.cern.ch/download/doc/26ROOTandQt.pdf">root: QT integration (pdf)</A>
368
369
370@section availableprograms Available programs
371
372- dns: Dim's domain-name-server (needed for any communication between Dim servers and clients)
373- did: A simple graphical interface to analyse everything in a Dim network
374
375@section Examples
376
377There are a few example programs
378- \b ./argv: Example for usage of the class Configure (command line options, configuration file)
379- \b ./time: Example for the usage of the class Time (time input/output, conversion)
380- \b ./log, \b ./logtime: A simple Dim-Service/-Client combination using MessageDimRX/MessageDimTX
381
382**/
Note: See TracBrowser for help on using the repository browser.