Documentation of libsbsdig » History » Version 20
Eric Fuchey, 07/09/2020 12:48 PM
1 | 1 | Eric Fuchey | h1. Documentation of libsbsdig |
---|---|---|---|
2 | |||
3 | h2. Overview |
||
4 | |||
5 | 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 libsbsdig on github. |
||
6 | |||
7 | h2. Purpose |
||
8 | |||
9 | This page documents the libsbsdig code, which purpose is to transform the output data from [https://hallaweb.jlab.org/wiki/index.php/Documentation_of_g4sbs G4SBS] to digital values such as ADCs or TDCs. |
||
10 | These produce files which can be analyzed with [https://hallaweb.jlab.org/wiki/index.php/Documentation_of_SBS-offline SBS-offline]. |
||
11 | |||
12 | h2. Getting the code and building the program |
||
13 | |||
14 | h3. Prerequisites |
||
15 | |||
16 | *Working [https://root.cern.ch/drupal/ ROOT] installation. '''libsbsdig is compatible with ROOT version 5 and ROOT version 6'''. '''''ROOT 6 is strongly recommended''''' |
||
17 | *Working [https://redmine.jlab.org/projects/podd/wiki analyzer] installation. '''libsbsdig is compatible with analyzer versions 1.6 and beyond'''. |
||
18 | *Working [https://hallaweb.jlab.org/wiki/index.php/Documentation_of_SBS-offline SBS-offline] installation. |
||
19 | |||
20 | h3. Downloading the repository |
||
21 | |||
22 | The code is hosted on a github repository owned by JLab. To clone via ssh (preferred method on JLab batch farm), do: |
||
23 | |||
24 | 5 | Eric Fuchey | bq. git clone git@github.com:JeffersonLab/libsbsdig.git |
25 | 1 | Eric Fuchey | |
26 | 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.) |
||
27 | |||
28 | Cloning the repository defaults to the "master" branch. |
||
29 | |||
30 | h3. Building and installing the library |
||
31 | |||
32 | 2 | Eric Fuchey | Create a "build" directory that is parallel to the "libsbsdig" source directory (this is not strictly required, but the build directory must be separate from the "SBS-offline" directory in any case). |
33 | You also need to have setup an installation path e.g. /path/to/libsbsdig-install |
||
34 | *NB*: similarly to the build directory, the /path/to/libsbsdig-install directory shall '''not''' be the same as the source directory! |
||
35 | _The following instructions assume that "build" is parallel to "libsbsdig":_ |
||
36 | 9 | Eric Fuchey | If successful, the libsbsdig library and several other files and folders will be created in the "build" and the "install" directory. |
37 | 1 | Eric Fuchey | |
38 | 2 | Eric Fuchey | To build and install, the procedure needs to be completed. From scratch: |
39 | |||
40 | bq. mkdir build |
||
41 | cd build |
||
42 | cmake -DCMAKE_INSTALL_PREFIX=/path/to/libsbsdig-install ../libsbsdig |
||
43 | make install |
||
44 | 1 | Eric Fuchey | |
45 | 3 | Eric Fuchey | Then, the following line should be added in the OS login configuration file to take advantage of this functionality: |
46 | * source /path/to/libsbsdig-install/bin/sbsdigenv.sh (or source /path/to/g4sbs_install/bin/sbsdigenv.csh on the batch farm) |
||
47 | 1 | Eric Fuchey | |
48 | 13 | Eric Fuchey | h2. digitization library use |
49 | 1 | Eric Fuchey | |
50 | 13 | Eric Fuchey | h3. how to use the digitization library |
51 | |||
52 | 9 | Eric Fuchey | A working example script of using the digitization library is available in the libsbsdig repository at |
53 | example/digi_gmn.C |
||
54 | The input arguments for this scripts are explained in the script comments. |
||
55 | It has to be executed with the Hall A analyzer: |
||
56 | 10 | Eric Fuchey | > analyzer |
57 | > > .L digi_gmn.C |
||
58 | > > digi_gmn("simdig_outfile.root", 1000, "gmn13.5_elastic_prod.txt") |
||
59 | 1 | Eric Fuchey | |
60 | 13 | Eric Fuchey | h3. Root output documentation |
61 | 1 | Eric Fuchey | |
62 | 15 | Eric Fuchey | For each detector, several structures are stored under the form of an ensemble of vectors of integers and doubles. |
63 | There are three types of structures: |
||
64 | - the "trackmchits" storing the information of the Monte Carlo track intercepting the detector; |
||
65 | - the "simhits" storing the true energy deposits and corresponding number of photoelectrons for each g4sbs hit processed by libsbsdig; |
||
66 | - the "hits", storing the adc and tdc information; |
||
67 | |||
68 | 17 | Eric Fuchey | h4. "trackmchit" structure |
69 | 16 | Eric Fuchey | |
70 | 15 | Eric Fuchey | nhits (int): number of entries for this structure and this detector |
71 | source (std::vector<short>): type of file where the MC track comes from (0 if signal, >0 if background) |
||
72 | trid (std::vector<short>): track ID in G4SBS (mostly useful to distinguish primary tracks) |
||
73 | pid (std::vector<int>): track PDG PID |
||
74 | xhit (std::vector<double>) estimated point of intercept of the track at the detector surface, in the dispersive direction (transport coordinates) |
||
75 | yhit (std::vector<double>) estimated point of intercept of the track at the detector surface, in the non-dispersive direction (transport coordinate) |
||
76 | thit (std::vector<double>) estimated time of intercept of the track at the detector surface |
||
77 | e (std::vector<double>) track total energy |
||
78 | weight (std::vector<double>) weight of the event from which the track is issued (not implemented yet) |
||
79 | |||
80 | 18 | Eric Fuchey | h4. "simhit" structure |
81 | |||
82 | nhits (int) |
||
83 | src (std::vector<short>): type of file where the sim hit comes from (0 if signal, >0 if background) |
||
84 | trid (std::vector<short>): ID of track responsible of hit in G4SBS (n. i. y.) |
||
85 | pid (std::vector<int>): PDG PID of track responsible of hit in G4SBS (n. i. y.) |
||
86 | chan (std::vector<short>): channel number in which the hit is recorded |
||
87 | edep (std::vector<double>): energy deposit recorded in g4sbs (in GeV) |
||
88 | npe (std::vector<int>): recorded or estimated number of photoelectrons detected |
||
89 | time (std::vector<double>): time of hit as recorded by g4sbs or estimated by libsbsdig (if photons are estimated) |
||
90 | t_lead(std::vector<double>): estimated time when the pulse rises over threshold (for detectors with TDCs) |
||
91 | t_trail(std::vector<double>): estimated time when the pulse falls under threshold (for detectors with TDCs) |
||
92 | |||
93 | Note: |
||
94 | for calorimeters without TDCs, t_lead and t_trail are not applicable and will not be stored; |
||
95 | for cherenkov detectors, edep is not applicable and will not be stored; |
||
96 | |||
97 | h4. "hit" structure |
||
98 | 20 | Eric Fuchey | |
99 | 19 | Eric Fuchey | nhits (int) |
100 | chan (std::vector<short>) |
||
101 | dataword (std::vector<unsigned int>) |
||
102 | adc (std::vector<int>) |
||
103 | tdc_l (std::vector<int>) |
||
104 | tdc_t (std::vector<int>) |
||
105 | 1 | Eric Fuchey | |
106 | 20 | Eric Fuchey | std::vector<unsigned int> *sbs_hcal_hit_nsamps; |
107 | std::vector<vector<int> > *sbs_hcal_hit_samps_adc; |
||
108 | std::vector<vector<unsigned int> > *sbs_hcal_hit_samps_datawords; |