Documentation of SBS-offline » History » Version 25

Eric Fuchey, 06/19/2021 03:34 PM

1 1 Eric Fuchey
h1. Documentation of SBS-offline
2 10 Eric Fuchey
3 9 Eric Fuchey
{{toc}}
4 2 Eric Fuchey
5 2 Eric Fuchey
h2. Overview
6 2 Eric Fuchey
7 2 Eric Fuchey
This page is maintained by the UConn group (Eric Fuchey + Andrew Puckett) and as of February 14, 2020 is specific to the '''''master''''' branch of SBS-offline on github.
8 2 Eric Fuchey
9 2 Eric Fuchey
h2. Purpose
10 2 Eric Fuchey
11 2 Eric Fuchey
This page documents the SBS-offline program code, which purpose is to perform the data analysis for the upcoming SBS experiments.
12 2 Eric Fuchey
13 2 Eric Fuchey
h2. Getting the code and building the program
14 2 Eric Fuchey
15 2 Eric Fuchey
h3. Prerequisites
16 2 Eric Fuchey
17 4 Eric Fuchey
*Working [https://root.cern.ch/drupal/ ROOT] installation. '''libsbsdig is compatible with ROOT version 5 and ROOT version 6'''. '''''ROOT 6 is strongly recommended'''
18 2 Eric Fuchey
*Working installation of cmake '''version 3.9 minimum'''
19 2 Eric Fuchey
*Working analyzer '''built with cmake'''. for that purpose, refer to the instruction below.
20 2 Eric Fuchey
21 2 Eric Fuchey
h3. Instructions for analyzer cmake installation compatible
22 3 Eric Fuchey
23 2 Eric Fuchey
clone the analyzer repository from:
24 2 Eric Fuchey
 * git clone git@github.com:JeffersonLab/analyzer.git
25 2 Eric Fuchey
build it with cmake following the instructions at:
26 2 Eric Fuchey
 * https://github.com/JeffersonLab/analyzer#compiling-with-cmake
27 11 Eric Fuchey
_2 precisions:_ 
28 2 Eric Fuchey
*it seems that in these instructions the "build" directory ''has to be'' in the analyzer directory.
29 2 Eric Fuchey
*for your environment settings, in addition to the two lines mentionned in the instructions, you still want to define ANALYZER as the path to your install directory e.g.
30 2 Eric Fuchey
 * setenv ANALYZER $HOME/local/analyzer
31 2 Eric Fuchey
32 2 Eric Fuchey
h3. Downloading the repository
33 2 Eric Fuchey
34 22 Eric Fuchey
h4. for simple users:
35 22 Eric Fuchey
36 2 Eric Fuchey
The code is hosted on a github repository owned by JLab. To clone via ssh (preferred method on JLab batch farm), do: 
37 1 Eric Fuchey
38 9 Eric Fuchey
bq. git clone git@github.com:JeffersonLab/SBS-offline.git
39 2 Eric Fuchey
40 2 Eric Fuchey
For this method to work, the ssh public key on the machine where you want to get the code must be added to your github account (see [https://help.github.com/articles/generating-ssh-keys/ Guide] to generating ssh keys and adding to your github.com account.)
41 2 Eric Fuchey
42 2 Eric Fuchey
Cloning the repository defaults to the "master" branch.
43 22 Eric Fuchey
44 22 Eric Fuchey
h4. for potential contributors:
45 22 Eric Fuchey
46 23 Eric Fuchey
* Have an individual github account.
47 23 Eric Fuchey
* On github.com: Fork the JeffersonLab SBS-offline to your account. Setup to “watch” Jlab SBS-offline
48 23 Eric Fuchey
* git clone git@github.com:GithubUserName/SBS-offline.git (This is ssh access). 
49 23 Eric Fuchey
** This will be the “origin” remote repo;
50 23 Eric Fuchey
** Create your own branch: git checkout –b NewBranchName
51 23 Eric Fuchey
* git remote –add upstream git@github.com:JeffersonLab/SBS-offline.git
52 23 Eric Fuchey
** This will be the “upstream” remote repo
53 25 Eric Fuchey
* You can pull ( or fetch/merge) changes from the upstream (Jefferson Lab) repo.
54 25 Eric Fuchey
* You can push commits in your branch to the origin (Personal Github) repo and then make pull requests.
55 2 Eric Fuchey
56 2 Eric Fuchey
h3. Building and installing the library
57 2 Eric Fuchey
58 2 Eric Fuchey
Create a "build" directory that is parallel to the "SBS-offline" source directory (this is not strictly required, but the build directory must be separate from the "SBS-offline" directory in any case). 
59 1 Eric Fuchey
You also need to have setup an installation path e.g. /path/to/sbs-offline-install
60 10 Eric Fuchey
*NB*: similarly to the build directory, the /path/to/gsbs-offline-install directory shall '''not''' be the same as the source directory!
61 12 Eric Fuchey
_The following instructions assume that "build" is parallel to "SBS-offline":_
62 2 Eric Fuchey
If successful, the libsbs library and several other files and folders will be created in the "build" and the "install" directory.
63 2 Eric Fuchey
64 2 Eric Fuchey
To build and install, the procedure needs to be completed. From scratch:
65 9 Eric Fuchey
66 9 Eric Fuchey
bq. mkdir build
67 9 Eric Fuchey
cd build
68 9 Eric Fuchey
cmake -DCMAKE_INSTALL_PREFIX=/path/to/sbs-offline-install ../SBS-offline
69 9 Eric Fuchey
make install
70 2 Eric Fuchey
71 2 Eric Fuchey
72 2 Eric Fuchey
Then, the following line should be added in the OS login configuration file to take advantage of this functionality:
73 13 Eric Fuchey
* source /path/to/sbs-offline-install/bin/sbsenv.sh (or source /path/to/g4sbs_install/bin/sbsenv.csh on the batch farm)
74 14 Eric Fuchey
75 14 Eric Fuchey
h2. How to use SBS-offline
76 14 Eric Fuchey
77 15 Eric Fuchey
A working example script using the SBS-offline library is available in the SBS-offline repository at the following path:
78 15 Eric Fuchey
 * replay/replay_gmn.C
79 15 Eric Fuchey
It is recommended prior to use it to source a short environment file to setup the database path correctly (and optionally the directory where to retrieve the data):
80 15 Eric Fuchey
 * replay/setup_db.csh
81 18 Eric Fuchey
It is preferable to not use them in this directory but copy them in another directory outside of your copy of the SBS-offline repository.
82 15 Eric Fuchey
83 15 Eric Fuchey
The script (and any other script using the SBS-offline library) uses the Hall A analyzer (Podd).
84 15 Eric Fuchey
To execute this script:
85 15 Eric Fuchey
86 1 Eric Fuchey
bq. > analyzer
87 20 Eric Fuchey
analyzer [0] .L replay_gmn.C
88 15 Eric Fuchey
analyzer [1] replay_gmn_test("your_input_file_base", -1)
89 15 Eric Fuchey
90 21 Eric Fuchey
Note: doing ".L replay_gmn.C+" will not work unless a rootlogon.C file (attached to this page) is present in the directory you want to process your script in.
91 21 Eric Fuchey
92 17 Eric Fuchey
The first argument "your_input_file_base" is the base name of the input file minus the ".root" file suffix (i.e. the full file name would be "your_input_file_base.root"). 
93 15 Eric Fuchey
The second argument is the number of arguments to process (-1 for all).
94 15 Eric Fuchey
This will produce a file called "replayed_your_input_file_base.root" containing the information extracted from the analysis of the input file.