Project

General

Profile

Documentation of SBS-offline » History » Version 26

Mark Jones, 07/20/2021 05:03 PM

1 1 Eric Fuchey
h1. Documentation of SBS-offline
2 10 Eric Fuchey
3 9 Eric Fuchey
{{toc}}
4 2 Eric Fuchey
5
h2. Overview
6
7
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
9
h2. Purpose
10
11
This page documents the SBS-offline program code, which purpose is to perform the data analysis for the upcoming SBS experiments.
12
13
h2. Getting the code and building the program
14
15
h3. Prerequisites
16
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
*Working analyzer '''built with cmake'''. for that purpose, refer to the instruction below.
20
21
h3. Instructions for analyzer cmake installation compatible
22 3 Eric Fuchey
23 2 Eric Fuchey
clone the analyzer repository from:
24
 * git clone git@github.com:JeffersonLab/analyzer.git
25
build it with cmake following the instructions at:
26
 * 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
*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
 * setenv ANALYZER $HOME/local/analyzer
31
32
h3. Downloading the repository
33
34 22 Eric Fuchey
h4. for simple users:
35
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
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
42
Cloning the repository defaults to the "master" branch.
43 22 Eric Fuchey
44
h4. for potential contributors:
45
46 23 Eric Fuchey
* Have an individual github account.
47
* On github.com: Fork the JeffersonLab SBS-offline to your account. Setup to “watch” Jlab SBS-offline
48
* git clone git@github.com:GithubUserName/SBS-offline.git (This is ssh access). 
49 26 Mark Jones
** This will be the “origin” remote repo in your local copy.
50
** Please do NOT make commits to the master branch.
51 23 Eric Fuchey
** Create your own branch: git checkout –b NewBranchName
52
* git remote –add upstream git@github.com:JeffersonLab/SBS-offline.git
53 1 Eric Fuchey
** This will be the “upstream” remote repo
54
* You can pull ( or fetch/merge) changes from the upstream (Jefferson Lab) repo.
55 26 Mark Jones
* Always work in your own branch.
56
** You can push commits in your branch to the origin (Personal Github) repo
57
** You can ask others to pull down your branch into their code to test it out.
58
** Make pull request to JeffersonLab SBS-offline
59
* Once the pull request is accepted and put in the JeffersonLab master branch
60
** In your local repo, change to master branch.
61
** Pull the upstream master branch. ("git pull upstream master")
62
** Push the updated master to your origin repo: "git push origin master"
63
** If you have not done any your branch
64
*** Delete the branch "git branch -D MyBranchName"
65
*** Delete the branch on the your remote repo: " git push origin :MyBranchName"
66
*** Start a new branch
67
68
69 2 Eric Fuchey
70
h3. Building and installing the library
71
72
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). 
73 1 Eric Fuchey
You also need to have setup an installation path e.g. /path/to/sbs-offline-install
74 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!
75 12 Eric Fuchey
_The following instructions assume that "build" is parallel to "SBS-offline":_
76 2 Eric Fuchey
If successful, the libsbs library and several other files and folders will be created in the "build" and the "install" directory.
77
78
To build and install, the procedure needs to be completed. From scratch:
79 9 Eric Fuchey
80
bq. mkdir build
81
cd build
82
cmake -DCMAKE_INSTALL_PREFIX=/path/to/sbs-offline-install ../SBS-offline
83
make install
84 2 Eric Fuchey
85
86
Then, the following line should be added in the OS login configuration file to take advantage of this functionality:
87 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)
88 14 Eric Fuchey
89
h2. How to use SBS-offline
90
91 15 Eric Fuchey
A working example script using the SBS-offline library is available in the SBS-offline repository at the following path:
92
 * replay/replay_gmn.C
93
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):
94
 * replay/setup_db.csh
95 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.
96 15 Eric Fuchey
97
The script (and any other script using the SBS-offline library) uses the Hall A analyzer (Podd).
98
To execute this script:
99
100 1 Eric Fuchey
bq. > analyzer
101 20 Eric Fuchey
analyzer [0] .L replay_gmn.C
102 15 Eric Fuchey
analyzer [1] replay_gmn_test("your_input_file_base", -1)
103
104 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.
105
106 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"). 
107 15 Eric Fuchey
The second argument is the number of arguments to process (-1 for all).
108
This will produce a file called "replayed_your_input_file_base.root" containing the information extracted from the analysis of the input file.