source: trunk/FACT++/MAINPAGE@ 18253

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