// -*- C++ -*-
// =====================================================================
/*!
//
//  \file install.doxy
//  \brief インストール方法を簡単に解説します.
//  \author Go IWAI <goiwai@users.sourceforge.jp>
//
//  $Id: install.doxy,v 1.2 2003/11/03 13:13:06 goiwai Exp $
//  $Name: doxygen-1-01-00 $
//
//  $Log: install.doxy,v $
//  Revision 1.2  2003/11/03 13:13:06  goiwai
//  *** empty log message ***
//
//  Revision 1.1.1.1  2003/11/02 05:57:32  goiwai
//  CLDAQモジュールをDoxygenでドキュメント化するための設定ファイルやスクリ
//  プト,ドキュメントそのものを同梱します.
//
//
*/
// =====================================================================

/*!
  \page Install インストール

  \section InstallLibrary CLDAQが必要とするライブラリ
  \par
開発時間を短くしたいということもありまして,CLDAQはいろんなライブラリに依存します.必要になるライブラリは<a href="http://cldaq.sourceforge.jp/link.html#lib">リンクのページ</a>に列挙してありますので,そこから飛んでいってください.
\par
もっとも,大抵のディストリビューションにはインストール時に入っちゃってるのがほとんどだと思うのですけれど, <a href="http://proj-clhep.web.cern.ch/proj-clhep/">CLHEP</a>と<a href="http://root.cern.ch/">ROOT</a>という,非高エネ業界の人々には覚えのないものも使用します.
\par
どちらもインストールは至極簡単ですが,一応,インストール方法を書いておきます.


\subsection InstallLibraryCLHEP CLHEPのインストール
\par
CLHEPはクラスライブラリです.これを使用することによってベクトルやマトリックスの表現,物理定数や乱数を簡単に操作することが出来ます.便利なのでCLDAQ では積極的に使用しています.
\par
まずは <a href="http://proj-clhep.web.cern.ch/proj-clhep/">ここから最新版をダウンロードしてきます.</a> (リンク先切れてたら<a href="http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=CLHEP&btnG=Google+Search">Google</a>してちょうだい) このドキュメントを書いている時点での最新版は <a href="http://cern.ch/clhep/clhep-1.8.0.0.tgz">バージョン1.8.0.0</a>でした.
\par
CLHEPのインストールは超簡単で,今までうまくいかなかったりハマったりしたことはないです.もしハマるようなら,そんなディストリビューションは捨てたほうがいいんでないでしょうか？

\verbatim
% tar zxvf clhep-1.8.0.0.tgz
% cd CLHEP 
% ./configure 
% make 
% su
# make install
# cd /usr/local/lib
# ln -s libCLHEP-g++.1.8.0.0.a libCLHEP.a
\endverbatim

\par
これで終わりです. configure \&\& make ですむソフトウェアは楽でいいですね.(こんなことを言う人はUNIXに犯されてる証拠)



\subsection InstallLibraryROOT ROOTのインストール
\par
実はROOTはCLDAQの機能を使用するには必要ないんですが,同梱される多くのアプリケーションコードでROOTのライブラリを使用して,プロットを作っています.
\par
CLDAQには解析パッケージなるもの(CLDAQ/source/analysis) が含まれていて,開発初期の構想においては解析ステーション(様々な解析ソフトウェアが集まる場所という位置づけで,ワークステーションを真似たプレイステーションの真似)というものを用意し,あらゆる解析ソフトウェアに対応する予定でした.少なくともそうゆうフレームワークにしてリリースする予定でした.
\par
ところがこの部分を作っているときに肺炎になってしまい(2002年9月頃),その後, どんどん忙しくなってしまって,放置された状態が続き,今なお放置されています.
\par
高エネ業界では歴史的に古くはPAWという解析ソフトウェアが使用され,また新世代にはこのROOTがよく使用されているようです.僕も以前はPAWを使用していたクチですが,内輪(GLC)で標準的にになってきたということもあり,ためらいつつもROOTに移行しました.
\par
そんな個人的背景もあって,CLDAQのアプリケーションコードではROOTを頻繁に利用しますので,まともに動いてる様子を御覧になりたければ,ROOTをインストールしておくことを強く奨めます.
\par
インストールは簡単です.まずは ここから最新版をダウンロードしてきてください.バイナリ版も配布されていますが,ここでは Version 3.05/07 のソースからビルドする場合を例にとって解説します.
\par
内輪では実行時リンク型のライブラリをビルドするのが流行っているようですので,ちょっと嫌なんだけど,共有(ダイナミック)ライブラリをビルドします.ちょっとややこしいので,以下のようなスクリプトを用意しました.

\verbatim
#! /bin/sh -x
RR="/usr/local/root"

./configure linux \
    --aclocaldir=$RR/aclocal \
    --datadir=$RR \
    --docdir=$RR/doc \
    --elispdir=$RR/site-lisp \
    --etcdir=$RR/etc \
    --fontdir=$RR/fonts \
    --iconpath=$RR/icons \
    --incdir=$RR/include \
    --libdir=$RR/lib \
    --macrodir=$RR/macros \
    --mandir=$RR/man/man1 \
    --prefix=$RR \
    --srcdir=$RR/src \
    --testdir=$RR/test \
    --tutdir=$RR/tutorial \
    --enable-ldap \
    --enable-mysql \
    --enable-opengl \
    --enable-pgsql \
    --enable-shared \
    --enable-soversion \
    --enable-table \
    --enable-thread \
    --with-ldap-incdir=/usr/include \
    --with-ldap-libdir=/usr/lib \
    --with-mysql-incdir=/usr/include/mysql \
    --with-mysql-libdir=/usr/lib/mysql \
    --with-opengl-incdir=/usr/include \
    --with-opengl-libdir=/usr/lib \
    --with-pgsql-incdir=/usr/include \
    --with-pgsql-libdir=/usr/lib \
    --with-thread-libdir=/usr/lib \
    --with-xpm-libdir=/usr/X11R6/lib
\endverbatim

\par
もっとも,たいていの場合は
\verbatim
% ./configure linux
% make
# make install
\endverbatim

\par
で済んでしまう話です.
\par
これを実行すれば,ビルドされたものは /usr/local/root 以下に置かれます. PythiaとCERNライブラリを生かしたければ,さらに以下の行をスクリプト中につけ加えます.

\verbatim
--enable-pythia6 \
--with-pythia6-libdir=$CERN_ROOT/lib \
--enable-cern \
--with-cern-libdir=$CERN_ROOT/lib \
\endverbatim
\par
この<a href="http://cldaq.sourceforge.jp/root-run-config">root-run-config</a>を持っていったら,実行するだけです.

\verbatim
% tar zxvf root_v3.05.05.source.tar.gz
% cd root
% ./root-run-config
% make
% su
# make install
# echo "/usr/local/root/lib" >> /etc/ld.so.conf
# ldconfig
\endverbatim

\par
これで終わりです. 


\section InstallCLDAQ CLDAQ本体のビルド
\par
さて,必要なものが揃ったところで,CLDAQをビルドしましょう. ダウンロードページから最新版をダウンロードしてください.とりあえず,ホームディレクトリにインストールする例を紹介します. シェルは csh系 を使っています.

\verbatim
% cd $HOME
% tar zxvf CLDAQ-x.xx.xx.tar.gz
% source CLDAQ/config/scripts/cldaq-setup.csh
% cd CLDAQ/source
% make
\endverbatim

\par
うまくいけばこれで終わりです.

\par
CLDAQには便利なconfigureスクリプトは存在しません.(将来的には用意しますが) 上の例中の3行目で cldaq-setup.csh というファイルを source している行がありますが,これが非常に重要です. CLDAQではライブラリをビルドするとき,あらかじめ設定されてある環境変数を使いまくります.
\par
ビルド時に参照される環境変数は以下のようなものがあります.特に始めの5行は必須項目ですので必ず設定してください.出来れば,\$HOME/.tcshrcなどに書くか,sourceされるようにしておくとよいでしょう.

\par
<table class=par>
 <tr><td>環境変数</td><td>設定例</td><td>意味</td></tr>
 <tr><td>CLDAQ_INSTALL</td><td>\$HOME/CLDAQ</td><td>CLDAQの展開先</td></tr>
 <tr><td>CLDAQ_CLHEP_BASE_DIR</td><td>/usr/local</td><td>CLHEPのルートパス</td></tr>
 <tr><td>CLDAQ_CLHEP_LIB_NAME</td><td>CLHEP</td><td>CLHEPのライブラリ名</td></tr>
 <tr><td>CLDAQ_ZLIB_USE</td><td>1</td><td>zlibを使用するかどうか</td></tr>
 <tr><td>CLDAQ_ROOT_USE</td><td>1</td><td>ROOTを使用するかどうか</td></tr>

 <tr>
  <td>CLDAQ_INCLUDES</td>
  <td>-\I$HOME/local/include -I/net/include</td>
  <td>その他のヘッダファイルへのパス(makeにこけたらこれを設定してみるとよいかも)</td>
 </tr>
 <tr>
  <td>CLDAQ_LIBS</td><td>-L\$HOME/local/lib -lfoo -lbar -lbaz</td>
  <td>その他のライブラリパス(makeにこけたらこれを設定してみるとよいかも)</td>
 </tr>

 <tr><td>CLDAQ_PAW_USE</td><td>0</td><td>PAWを使用するかどうか</td></tr>
 <tr><td>CLDAQ_X11_USE</td><td>1</td><td>X11を使用するかどうか</td></tr>
 <tr>
  <td>CLDAQ_X11_LIB_DIR</td><td>/usr/X11R6/lib</td>
  <td>Xライブラリへのパス</td>
 </tr>
 <tr>
  <td>CLDAQ_X11_INC_DIR</td><td>/usr/X11R6/include</td>
  <td>Xヘッダファイルへのパス</td>
 </tr>

 <tr><td>CLDAQ_GTK_USE</td><td>1</td><td>Gtkを使用するかどうか</td></tr>
 <tr><td>CLDAQ_QT_USE</td><td>1</td><td>Gtkを使用するかどうか</td></tr>
 <tr><td>CLDAQ_QT_BASE_DIR</td><td>/usr/lib/qt-2.3.1</td><td>Qtのルートパス</td></tr>
 <tr><td>CLDAQ_QT_LIB_DIR</td><td>\$CLDAQ_QT_BASE_DIR/lib</td>
  <td>Qtライブラリへのパス</td></tr>
<tr><td>CLDAQ_QT_INC_DIR</td><td>\$CLDAQ_QT_BASE_DIR/include</td>
 <td>Qtヘッダファイルへのパス</td></tr>
</table>


\par
なお, sh系のシェルを使用している場合は以下のようにして環境変数の設定箇所を以下に読み換えてください.


\verbatim
% . CLDAQ/config/scripts/cldaq-setup.sh
\endverbatim



\section InstallTest 動作テスト
\par
ライブラリのビルドが終われば,\$CLDAQ_INSTALL/lib/libCLDAQ.aが生成されたはずです.これであなたはCLDAQをいつでも使用できると思います.きちんとした使用方法については <a href="http://cldaq.sourceforge.jp/beginner.html">初心者むけのふざけた解説</a>や <a href="http://cldaq.sourceforge.jp/advanced.html">上級者むけのまじめな解説</a>で解説したいと思いますが,ひとまず,ちゃんとビルドされて動くものかどうかテストしたいところですね.
\par
動作のテストは \$CLDAQ_INSTALL/tests にあるコードで行います.どれも数10行〜100行程度の短いプログラムですが, CLDAQの使い方を簡単に理解し,動作しているかどうかを調べるにはここから始めるのが良いでしょう.
\par
もし,ここまでのビルドが終わっているならば,あとは簡単です.
\verbatim
% cd $CLDAQ_INSTALL/tests
% make
\endverbatim

\par
で終わりです.

\verbatim
% ls $CLDAQ_INSTALL/bin
\endverbatim

\par
なにやらいろいろ出来ていますよね？デバイスを必要とするプログラムはドライバとデバイスの接続を必要としますが,その他のプログラムは今すぐ動くはずです.ゲッティンスタートなのです.


*/
