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