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. |