1. Jak uniknąć rysowania na ekran przy tworzeniu wykresów do pliku?
Jeśli nie zostało jeszcze stworzone płótno (canvas), można włączyć tryb Batch: gROOT->SetBatch(kTRUE); W przypadku obecności płótna (TCanvas *canvas), można wyłączyć płótno z rysowania na ekranie przez: canvas->SetBatch(kTRUE); W trybie wsadowym (Batch), można wykonywać wykresy do pliku np. canvase->SetBatch(kTRUE); histogram1->Draw(); canvas->Print("canvas.svg"); canvas->SetBatch(kFALSE); histogram2->Draw(); //Ten histogram pokaże się na ekranie Mogą współistnieć płótna widoczne na ekranie oraz płótna w trybie wsadowym. --- Budowanie Root-a: Potrzebne pakiety: git dpkg-dev make g++ gcc binutils libc6-dev libx11-dev libxpm-dev libxft-dev libxext-dev libpng12-dev libjpeg-dev libjpeg cmake cmake-curses-gui ninja-build
Ponadto:
gfortran libssl-dev libpcre3-dev libglu1-mesa-dev libglew1.5-dev libftgl-dev libmysqlclient-dev libfftw3-dev libcfitsio-dev graphviz-dev libavahi-compat-libdnssd-dev libldap2-dev python-dev libxml2-dev libkrb5-dev libgsl0-dev libqt4-dev
mkdir ROOT
cd ROOT
git clone http://root.cern.ch/git/root.git
cd root
git fetch
git tag
git checkout -b v5-34-32 v5-34-32
cd ..
mkdir root-v5-34-32
mkdir root-v5-34-32-build
cd root-v5-34-32-build
cmake -DCMAKE_INSTALL_PREFIX=/home/user/ROOT/root-v5-34-32 -Dpython=ON -G Ninja ../root
(można to wykonać przez ccmake - trzeba potem 2 razy nacisnąć 'c' - configure i nacisnąć 'g' - generate)
cmake --build . --target install
Budowanie Shine:
sudo apt-get install subversion libxext-dev libgif-dev libtiff5-dev libturbojpeg1-dev libexpat1-dev
mkdir SHINE
cd SHINE
svn checkout svn+ssh://svn.cern.ch/reps/na61soft/trunk/Shine src
mkdir -p db/trunk
svn co svn+ssh://svn.cern.ch/reps/na61db/trunk db/trunk
Instalacja slc6 w chroot:
http://verahill.blogspot.fr/2013/03/359-installing-scientific-linux-centos.html
https://twiki.cern.ch/twiki/bin/view/NA61/NewOFInstallation
1. sudo apt-get install yum
2. Skopiować źródła pakietów z działającego systemu slc6 z /etc/yum.repos.d do katalogu /etc/yum/repos.d
Może być konieczne ustawienie w plikach gpgcheck=0
3.Utwórz katalog na system chroot: np. /home/cern/darek/SHINE/slc6Shine
4. sudo linux32 yum --installroot=/home/cern/darek/SHINE/slc6Shine install bash sl-release coreutils yum iputils vim tar patch ssh
5. Ten punkt trzeba zrobić za każdym razem przed uruchomieniem środowiska
sudo cp /etc/resolv.conf /home/cern/darek/SHINE/slc6Shine/etc/
sudo mount -t proc none /home/cern/darek/SHINE/slc6Shine/proc
sudo mount --bind /sys /home/cern/darek/SHINE/slc6Shine/sys
sudo mount --bind /dev /home/cern/darek/SHINE/slc6Shine/dev
6. sudo linux32 chroot /home/cern/darek/SHINE/slc6Shine
7. Będąc już w środowisku,
utworzyć użytkownika np.
adduser darek
passwd darek
yum install sudo
visudo (dodać linijkę darek (ALL)=ALL NOPASSWD: ALL
8. Instalacja zależności drugiego rzędu:
yum install subversion glibc-devel gcc gcc-c++ gcc-gfortran libXpm-devel pcre-devel libgfortran libicu-devel zlib-devel ncurses-devel ncurses-devel bzip2-devel libX11-devel libXft-devel libXpm-devel libpng-devel giflib-devel libtiff-devel libjpeg-turbo-devel libXext-devel freetype-devel libxml2-devel
[ TEN KROK nie jest potrzebny i nie działa. Root powinien utworzyć przy kompilacji bibliotekę libRGL.so, ale tego nie robi. Potrzebne zależności to biblioteki opengl. Wygląda na to, że dla ROOT-a mogą się przydać biblioteki OpenGL, aby to uczynić, należy zainstalować: sudo yum install mesa-libGL-devel masa-libGLU-devel xorg-x11-server-Xorg
Ze strony Root-a:
https://root.cern.ch/build-prerequisites
Required packages:
sudo yum install git make gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel
Optional packages:
sudo yum install gcc-gfortran openssl-devel pcre-devel mesa-libGL-devel glew-devel ftgl-devel mysql-devel sudo yum install fftw-devel cfitsio-devel graphviz-devel avahi-compat-libdns_sd-devel libldap-dev python-devel libxml2-devel gsl-static
]
9. Instalacja Shape
su darek
cd
svn checkout svn+ssh://YOURLXPLUSNAME@svn.cern.ch/reps/na61soft/trunk/Shape Shape
cp Shape/shape.rc.example ~/.shaperc
vim ~/.shaperc
Tutaj zmieniam:w [DEFAULT] na:
odkomentowuję (w przypadku kompilacji na systemie 64 bitowym, opcję #arch=32,
arch=32
base = %(home)s/Shape_install
build = %(home)s/Shape_build
w [shape] zmieniam na 8 rdzeni kompilację:
jobs = 8
Następnie polecenie: (Inne przydatne polecenia ./Shape/shape help ./Shape/shape packages)
./Shape/shape install externals
Tutaj należy sprawdzać, czy kompilacja się powiodła - jeśli pojawiły się gwiazdki, tzn. że trzeba przyjrzeć się log-om i ewentualnie zainstalować brakujące pakiety
10. Ustawić zmienne środowiskowe do budowy SHINE
eval $( ./Shape/shape sh)
11. Powinno się sprawdzić, czy rozmiar pamięci współdzielonej jest odpowiedni (zwykle jest). Można to zrobić sprawdzając plik /etc/sysctl.conf (jako root). Potrzebne wartości to conajmniej:
kernel.shmmax = 536870912
kernel.shmall = 536870912
W razie konieczności zmiany, wywołać jako root: sysctl -p
12. Pobieranie SHINE
svn checkout svn+ssh://YOURLXPLUSNAME@svn.cern.ch/reps/na61soft/trunk/Shine Shine
mkdir Shine_install
mkdir Shine_build
cd Shine_build
cmake -DPRODUCTION=ON -DCMAKE_INSTALL_PREFIX=../Shine_install ../Shine
make -j8
make install
13. Testowanie
make -j8 tests || ctest
14. Instalacja dokumentacji:
cmake -DSHINE_DOCUMENTATION_ENABLED=1 -DCMAKE_INSTALL_PREFIX=../Shine_install ../Shine
15. Ustawienie zmiennych środowiskowych
vim .bashrc
dodaj:
eval $(/home/darek/Shine_install/bin/shine-offline-config --env-sh) 16. Dodaj dostęp do X-ów: xhost +local:darek
Luminance:
https://twiki.cern.ch/twiki/bin/viewauth/NA61/HowToRunLuminance
Tak jak wyżej instalacja Shape
Shape/shape install geant4
Uwaga - nie kompiluje się z powodu braku odnalezienia biblioteki Expat. Biblioteka jest instalowana przez Shape, ale cmake jej nie widzi.
Należy w pliku: Shape/config/geant4.rc wprowadzić następujące zmiany
configureArgs = -DCMAKE_INSTALL_PREFIX=%(prefix)s -DCMAKE_INCLUDE_PATH=%(base)s/External/expat/2.0.1/include -DCMAKE_LIBRARY_PATH=%(base)s/External/expat/2.0.1/lib -DGEANT4_INSTALL_DATA=yes -DGEANT4_INSTALL_DATADIR=%(prefix)s/data -DGEANT4_USE_G3TOG4=1 -DGEANT4_USE_GDML=yes -DXERCESC_ROOT_DIR=${XERCESCROOT} %(sourceDirectory)s
configureArgs32 = -DCMAKE_INSTALL_PREFIX=%(prefix)s -DCMAKE_INCLUDE_PATH=%(base)s/External/expat/2.0.1/include -DCMAKE_LIBRARY_PATH=%(base)s/External/expat/2.0.1/lib DGEANT4_INSTALL_DATA=yes -DGEANT4_INSTALL_DATADIR=%(prefix)s/data -DGEANT4_USE_G3TOG4=1 -DGEANT4_USE_GDML=yes -DXERCESC_ROOT_DIR=${XERCESCROOT} -DCMAKE_CXX_FLAGS="-m32" -DCMAKE_SHARED_LINKER_FLAGS="-m32" %(sourceDirectory)s
[>>>> Ewentualnie można też wejść do pliku: Shape_build/geant4/build/CMakeCache.txt
i zamienić położenie katalogu include z
EXPAT_INCLUDE_DIR:PATH=EXPAT_INCLUDE_DIR-NOTFOUND
na (w moim przypadku):
EXPAT_INCLUDE_DIR:PATH=/home/darek/Shape_install/External/expat/2.0.1/include
oraz
XPAT_LIBRARY:FILEPATH=EXPAT_LIBRARY-NOTFOUND
na (w moim przypadku):
EXPAT_LIBRARY:FILEPATH=/home/darek/Shape_install/External/expat/2.0.1/lib/libexpat.so
[Nie jestem pewien, czy nie trzeba też ustawić katalog na dane Geant-a (GEANT4_INSTALL_DATADIR)], więc lepiej zrobić poprzednią sprawdzoną metodą]
<<<<]
następnie: cd
i ponowne wywołanie:
Shape/shape install geant4 (Ewentualnie: Shape/shape -k -j 8 install geant4 <-- opcja -k nakazuje pozostawienie plików źródłowych w Shape_build, opcja -j 8 - kompilacja na 8 rdzeniach)
[Ten krok chyba jest zbędny...
Shape/shape install geant4_vmc
]
Do ~/.bashrc należy dodać:
eval $(/home/darek/Shape/shape sh)
eval $(/home/darek/Shine_install/bin/shine-offline-config --env-sh)
export SHINECALIBHOME=/home/darek/ShineCalib/db
source /home/darek/Shape_install/External/geant4/4.9.6.p02/bin/geant4.sh