Project

General

Profile

Replay Output Variables » History » Version 50

Gary Penman, 08/14/2024 10:18 AM

1 1 Sean Jeffas
h1. Replay Output Variables
2 2 Sean Jeffas
3 18 Sean Jeffas
{{toc}}
4
5 2 Sean Jeffas
h1. Description
6
7
* One can search any working build of SBS-offline or Podd for “rVarDef” to find the location of these definitions.
8
* From the build src directory: grep -nr “rvardef*” .
9 3 Sean Jeffas
* All definitions below are recorded in the following order: { <variable extension>, <Definition>, <SBS-offline designation> }
10
11
h1. Tracking Definition
12
13 5 Sean Jeffas
* These definitions are defined in Podd. See github [https://github.com/JeffersonLab/analyzer].
14 3 Sean Jeffas
** THaSpectrometer.cxx
15 46 Sean Jeffas
* All definitions below are accesed from the tree with the prepend *bb.*.
16 15 Sean Jeffas
** Ex. *bb.tr.vz*
17 6 Sean Jeffas
18 10 Sean Jeffas
h3. Track Variables
19 6 Sean Jeffas
20 11 Sean Jeffas
<pre>
21 12 Sean Jeffas
 { "tr.n",    "Number of tracks",             "GetNTracks()" },
22 8 Sean Jeffas
 { "tr.x",    "Track x coordinate (m)",       "fTracks.THaTrack.fX" },
23
 { "tr.y",    "Track x coordinate (m)",       "fTracks.THaTrack.fY" },
24
 { "tr.th",   "Tangent of track theta angle", "fTracks.THaTrack.fTheta" },
25
 { "tr.ph",   "Tangent of track phi angle",   "fTracks.THaTrack.fPhi" },
26
 { "tr.p",    "Track momentum (GeV)",         "fTracks.THaTrack.fP" },
27
 { "tr.flag", "Track status flag",            "fTracks.THaTrack.fFlag" },
28
 { "tr.chi2", "Track's chi2 from hits",       "fTracks.THaTrack.fChi2" },
29
 { "tr.ndof", "Track's NDoF",                 "fTracks.THaTrack.fNDoF" },
30
 { "tr.d_x",  "Detector x coordinate (m)",    "fTracks.THaTrack.fDX" },
31
 { "tr.d_y",  "Detector y coordinate (m)",    "fTracks.THaTrack.fDY" },
32
 { "tr.d_th", "Detector tangent of theta",    "fTracks.THaTrack.fDTheta" },
33
 { "tr.d_ph", "Detector tangent of phi",      "fTracks.THaTrack.fDPhi" },
34
 { "tr.r_x",  "Rotated x coordinate (m)",     "fTracks.THaTrack.fRX" },
35
 { "tr.r_y",  "Rotated y coordinate (m)",     "fTracks.THaTrack.fRY" },
36
 { "tr.r_th", "Rotated tangent of theta",     "fTracks.THaTrack.fRTheta" },
37
 { "tr.r_ph", "Rotated tangent of phi",       "fTracks.THaTrack.fRPhi" },
38
 { "tr.tg_y", "Target y coordinate",          "fTracks.THaTrack.fTY"},
39
 { "tr.tg_th", "Tangent of target theta angle", "fTracks.THaTrack.fTTheta"},
40
 { "tr.tg_ph", "Tangent of target phi angle",   "fTracks.THaTrack.fTPhi"},    
41
 { "tr.tg_dp", "Target delta",                "fTracks.THaTrack.fDp"},
42
 { "tr.px",    "Lab momentum x (GeV)",        "fTracks.THaTrack.GetLabPx()"},
43
 { "tr.py",    "Lab momentum y (GeV)",        "fTracks.THaTrack.GetLabPy()"},
44
 { "tr.pz",    "Lab momentum z (GeV)",        "fTracks.THaTrack.GetLabPz()"},
45
 { "tr.vx",    "Vertex x (m)",                "fTracks.THaTrack.GetVertexX()"},
46
 { "tr.vy",    "Vertex y (m)",                "fTracks.THaTrack.GetVertexY()"},
47
 { "tr.vz",    "Vertex z (m)",                "fTracks.THaTrack.GetVertexZ()"},
48
 { "tr.pathl", "Pathlength from tg to fp (m)","fTracks.THaTrack.GetPathLen()"},
49
 { "tr.time",  "Time of track@Ref Plane (s)", "fTracks.THaTrack.GetTime()"},
50
 { "tr.dtime", "uncer of time (s)",           "fTracks.THaTrack.GetdTime()"},
51
 { "tr.beta",  "Beta of track",               "fTracks.THaTrack.GetBeta()"},
52
 { "tr.dbeta", "uncertainty of beta",         "fTracks.THaTrack.GetdBeta()"},
53
 { "status",   "Bits of completed analysis stages", "fStagesDone" }
54 7 Sean Jeffas
</code></pre>
55 13 Sean Jeffas
56 25 Sean Jeffas
h1. Calorimeters, HCal and BBCal
57
58
* HCal and BBCal share the same class so their variable definitions are the same, but with a different prefix.
59
** HCal variables have the prefix *sbs.hcal.*
60
** BBCal variables have the prefix *bb.*
61 1 Sean Jeffas
* These definitions from the following source files defined in SBS-offline. See github for more information.
62
** SBSCalorimeter.cxx
63
** SBSGenericDetector.cxx
64 27 Sean Jeffas
65 28 Sean Jeffas
h3. HCal Variable Definitions
66 27 Sean Jeffas
67 1 Sean Jeffas
* All definitions below are accessed from the tree with the prepend *sbs.hcal*.
68
** Ex. *sbs.hcal.clus_blk.atime*
69
70 28 Sean Jeffas
h3. BBCal (Shower + PreShower) Variable Definitions
71 27 Sean Jeffas
72
* All definitions below are accessed from the tree with the prepend *bb.sh.* for Shower and *bb.ps.* for PreShower
73
** Ex. *bb.sh.e*
74
75 16 Sean Jeffas
h3. ADC Variables
76
77
78
<pre>
79
 { "adcrow", "Row for block in data vectors",  "fGood.ADCrow" }),
80
 { "adccol", "Col for block in data vectors",  "fGood.ADCcol" }),
81
 { "adcelemID", "Element ID for block in data vectors",  "fGood.ADCelemID" }),
82
 { "adclayer", "Layer for block in data vectors",  "fGood.ADClayer" }),
83
 { "ped", "Pedestal for block in data vectors",  "fGood.ped" }),
84
 { "a","ADC integral", "fGood.a"} );
85
 { "a_mult","ADC # hits in channel", "fGood.a_mult"} );
86
 { "a_p","ADC integral - ped", "fGood.a_p"} );
87
 { "a_c","(ADC integral - ped)*gain", "fGood.a_c"} );
88
 { "a_amp","ADC pulse amplitude", "fGood.a_amp"} );
89
 { "a_amp_p","ADC pulse amplitude -ped", "fGood.a_amp_p"} );
90
 { "a_amp_c","(ADC pulse amplitude -ped)*gain*AmpToIntRatio", "fGood.a_amp_p"} );
91
 { "a_amptrig_p","(ADC pulse amplitude -ped)*AmpToIntRatio", "fGood.a_amp_p"} );
92
 { "a_amptrig_c","(ADC pulse amplitude -ped)*gain*AmpToIntRatio", "fGood.a_amp_p"} );
93
 { "a_time","ADC pulse time", "fGood.a_time"} );
94
 { "hits.a",   "All ADC inntegrals",  "fRaw.a" });
95
 { "hits.a_amp",   "All ADC amplitudes",  "fRaw.a_amp" });
96
 { "hits.a_time",   "All ADC pulse times",  "fRaw.a_time" });
97
</code></pre>
98 17 Sean Jeffas
99
h3. ADC Waveform Variables
100
101
<pre>
102
 { "samps_idx", "Index in samples vector for given row-col module", "fGood.sidx" });
103
 { "nsamps" , "Number of samples for given row-col", "fGood.nsamps"});
104
 { "samps", "Calibrated ADC samples",  "fGood.samps" });
105
 { "samps_elemID", "Calibrated ADC samples",  "fGood.samps_elemID" });
106
</code></pre>
107 19 Sean Jeffas
108
h3. TDC Variables
109
110
<pre>
111
 { "tdcrow", "Row for block in data vectors",  "fGood.TDCrow" }),
112
 { "tdccol", "Col for block in data vectors",  "fGood.TDCcol" }),
113
 { "tdcelemID", "Element ID for block in data vectors",  "fGood.TDCelemID" }),
114
 { "tdclayer", "Layer for block in data vectors",  "fGood.TDClayer" }),
115
 { "tdc", "Calibrated TDC value", "fGood.t" });
116
 { "tdc_mult", "TDC # of hits per channel", "fGood.t_mult" });
117
 { "tdc_te", "Calibrated TDC trailing info", "fGood.t_te" });
118
 { "tdc_tot", "Time Over Threshold", "fGood.t_ToT" });
119
 { "hits.TDCelemID",   "All TDC Element ID",  "fRaw.TDCelemID" });
120
 { "hits.t",   "All TDC leading edge times",  "fRaw.t" });
121
 { "hits.t_te",   "All TDC trailing edge times",  "fRaw.t_te" });
122
 { "hits.t_tot",  "All TDC Time-over-threshold",  "fRaw.t_ToT" });
123
</code></pre>
124 20 Sean Jeffas
125
h3. Cluster Variables
126
127
<pre>
128
 { "nclus", "Number of clusters meeting threshold", "fNclus" },
129
 { "e",      "Energy (MeV) of largest cluster",    "GetE()" },
130
 { "e_c",    "Corrected Energy (MeV) of largest cluster",    "GetECorrected()" },
131
 { "atimeblk", "ADC time of highest energy block in the largest cluster", "GetAtime()" },
132
 { "tdctimeblk", "TDC time of highest energy block in the largest cluster", "GetTDCtime()" },
133
 { "eblk",   "Energy (MeV) of highest energy block in the largest cluster",    "GetEBlk()" },
134
 { "eblk_c", "Corrected Energy (MeV) of highest energy block in the largest cluster",    "GetEBlkCorrected()" },
135
 { "rowblk", "Row of block with highest energy in the largest cluster",    "GetRow()" },
136
 { "colblk", "Col of block with highest energy in the largest cluster",    "GetCol()" },
137
 { "x",      "x-position (mm) of largest cluster", "GetX()" },
138
 { "y",      "y-position (mm) of largest cluster", "GetY()" },
139
 { "nblk",   "Number of blocks in the largest cluster",    "GetNblk()" },
140
 { "idblk",  "Logic number of block with highest energy in cluster",    "GetBlkID()" },
141 47 Gary Penman
 { "index", "Index of best cluster in the array of all clusters", "fBestClusterIndex" },
142
 { "tdctime", "Energy-weighted mean TDC time, main cluster", "GetTDCtimeMean()" },
143
 { "adctime", "Energy-weighted mean ADC time, main cluster", "GetAtimeMean()" },
144
 { "e_goodtdc", "Energy sum in blocks with good TDC, main cluster", "GetEGoodTDC()" },
145
 { "eblk_goodtdc", "Energy in highest-energy block with good TDC, main cluster", "GetEBlkGoodTDC()" },
146
 { "nblk_goodtdc", "Number of blocks with good TDC hits, main cluster", "GetNblkGoodTDC()" },
147
 { "rowblk_goodtdc", "Row of highest-energy block with good TDC hit, main cluster", "GetRowGoodTDC()" },
148
 { "colblk_goodtdc", "Column of highest-energy block with good TDC hit, main cluster", "GetColGoodTDC()" },
149
 { "idblk_goodtdc", "element ID of highest-energy block with good TDC hit, main cluster", "GetBlkIDGoodTDC()" },
150 20 Sean Jeffas
</code></pre>
151
152
h3. Cluster Member Variables
153
154 1 Sean Jeffas
<pre>
155
 { "clus.e", "Energy of cluster", "fOutclus.e"},
156 47 Gary Penman
 { "clus.atimeblk", "ADC time of highest energy block in the cluster", "fOutclus.atime"},
157
 { "clus.tdctimeblk", "TDC time of highest energy block in the cluster", "fOutclus.tdctime"},
158 20 Sean Jeffas
 { "clus.e_c","Energy calibrated of cluster", "fOutclus.e_c"},
159
 { "clus.x", "x-position of cluster", "fOutclus.x"},
160
 { "clus.y", "y-position of cluster", "fOutclus.y"},
161
 { "clus.row","block row in cluster with highest energy",    "fOutclus.row" },
162
 { "clus.col","block col in cluster with highest energy",    "fOutclus.col" },
163 1 Sean Jeffas
 { "clus.id","block number in cluster",    "fOutclus.id" },
164
 { "clus.nblk","number of blocks in cluster",    "fOutclus.n" },
165
 { "clus.eblk", "Energy of block with highest energy in cluster", "fOutclus.blk_e"},
166 47 Gary Penman
 { "clus.adctime", "Energy-weighted mean ADC time", "fOutclus.atime_mean" },
167
 { "clus.tdctime", "Energy-weighted mean TDC time", "fOutclus.tdctime_mean" },
168
 { "clus.e_goodtdc", "sum of energy in blocks with good TDC", "fOutclus.e_goodtdc" },
169
 { "clus.eblk_goodtdc", "highest single-block energy with good TDC in cluster", "fOutclus.blk_e_goodtdc" },
170
 { "clus.nblk_goodtdc", "number of blocks with good tdc in cluster", "fOutclus.ngoodtdc" },
171
 { "clus.row_goodtdc", "row of highest-energy block with good TDC in cluster", "fOutclus.rowgoodtdc" },
172
 { "clus.col_goodtdc", "column of highest-energy block with good TDC in cluster", "fOutclus.colgoodtdc" },
173
 { "clus.id_goodtdc", "id of highest-energy block with good TDC in cluster", "fOutclus.idgoodtdc" },
174 20 Sean Jeffas
</code></pre>
175
176
h3. "Good" Block Variables
177
178
<pre>
179
 { "goodblock.e", "Energy of good blocks", "fGoodBlocks.e"},
180
 { "goodblock.atime", "Energy of good blocks", "fGoodBlocks.ADCTime"},
181
 { "goodblock.tdctime", "Energy of good blocks", "fGoodBlocks.TDCTime"},
182 21 Sean Jeffas
 { "goodblock.row", "Row of good blocks", "fGoodBlocks.row"},
183
 { "goodblock.col", "Col of good blocks", "fGoodBlocks.col"},
184 23 Sean Jeffas
 { "goodblock.x", "x pos (m) of good blocks", "fGoodBlocks.x"},
185
 { "goodblock.y", "y pos (m) of good blocks", "fGoodBlocks.y"},
186
 { "goodblock.id", "Element ID of good blocks", "fGoodBlocks.id"},
187
</code></pre>
188
189 1 Sean Jeffas
h1. GEM Definitions
190 30 Sean Jeffas
191
* All definitions below are accessed from the tree with the prepend *bb.gem.*
192 34 Sean Jeffas
** ex. *bb.gem.track.ntrack*
193 35 Sean Jeffas
* All definitions coming from the module class, SBSGEMModule.cxx, has an extra prefix for that module. 
194
* GEM modules are labeled numerically as m1, m2, m3, etc. We will generically list this as *m#*.
195
** Therefore the prefix will be *bb.gem.m#.*
196
** ex. *bb.gem.m3.strip.nstripsfired*
197
198 31 Sean Jeffas
199
h3. Track Variables
200
201
* These variables come from SBSGEMSpectrometerTracker.cxx
202 33 Sean Jeffas
203
<pre>
204
   { "track.ntrack", "number of tracks found", "fNtracks_found" },
205
   { "track.nhits", "number of hits on track", "fNhitsOnTrack" },
206
   { "track.x", "Track X (TRANSPORT)", "fXtrack" }, //might be redundant with spectrometer variables, but probably needed for "non-tracking" version
207
   { "track.y", "Track Y (TRANSPORT)", "fYtrack" },
208
   { "track.xp", "Track dx/dz (TRANSPORT)", "fXptrack" },
209
   { "track.yp", "Track dy/dz (TRANSPORT)", "fYptrack" },
210
   { "track.chi2ndf", "Track Chi2/ndf", "fChi2Track" },
211
   { "track.besttrack", "Index of 'best' track", "fBestTrackIndex" },
212
</code></pre>
213
214
h3. Cluster Variables
215
216
* These variables come from SBSGEMSpectrometerTracker.cxx
217
218
<pre>
219
   { "hit.ngoodhits", "Total number of hits on all found tracks", "fNgoodhits" },
220
   { "hit.trackindex", "Index of track containing this hit", "fHitTrackIndex" },
221
   { "hit.module", "Module index of this hit", "fHitModule" },
222
   { "hit.layer", "Layer index of this hit", "fHitLayer" },
223
   { "hit.nstripu", "number of U strips on this hit", "fHitNstripsU" },
224
   { "hit.nstripv", "number of V strips on this hit", "fHitNstripsV" },
225
   { "hit.ustripmax", "index of u strip with max ADC in this hit", "fHitUstripMax" },
226
   { "hit.vstripmax", "index of v strip with max ADC in this hit", "fHitVstripMax" },
227
   { "hit.ustriplo", "index of minimum u strip in this hit", "fHitUstripLo" },
228
   { "hit.vstriplo", "index of minimum v strip in this hit", "fHitVstripLo" },
229
   { "hit.ustriphi", "index of maximum u strip in this hit", "fHitUstripHi" },
230
   { "hit.vstriphi", "index of maximum v strip in this hit", "fHitVstripHi" },
231
   { "hit.u", "reconstructed hit position along u", "fHitUlocal" },
232
   { "hit.v", "reconstructed hit position along v", "fHitVlocal" },
233
   { "hit.xlocal", "reconstructed local x position of hit (internal module coordinates)", "fHitXlocal" },
234
   { "hit.ylocal", "reconstructed local y position of hit (internal module coordinates)", "fHitYlocal" },
235
   { "hit.xglobal", "reconstructed global x position of hit", "fHitXglobal" },
236
   { "hit.yglobal", "reconstructed global y position of hit", "fHitYglobal" },
237
   { "hit.zglobal", "reconstructed global z position of hit", "fHitZglobal" },
238
   { "hit.umoment", "U cluster moment (consult source code or A. Puckett for definition)", "fHitUmoment" },
239
   { "hit.vmoment", "V cluster moment (consult source code or A. Puckett for definition)", "fHitVmoment" },
240
   { "hit.usigma", "U cluster rms", "fHitUsigma" },
241
   { "hit.vsigma", "V cluster rms", "fHitVsigma" },
242
   { "hit.residu", "u hit residual with fitted track (inclusive method)", "fHitResidU" },
243
   { "hit.residv", "v hit residual with fitted track (inclusive method)", "fHitResidV" },
244
   { "hit.eresidu", "u hit residual with fitted track (exclusive method)", "fHitEResidU" },
245
   { "hit.eresidv", "v hit residual with fitted track (exclusive method)", "fHitEResidV" },
246
   { "hit.ADCU", "cluster ADC sum, U strips", "fHitUADC" },
247
   { "hit.ADCV", "cluster ADC sum, V strips", "fHitVADC" },
248
   { "hit.ADCavg", "cluster ADC average", "fHitADCavg" },
249
   { "hit.ADCmaxstripU", "ADC sum of max U strip", "fHitUADCmaxstrip" },
250
   { "hit.ADCmaxstripV", "ADC sum of max V strip", "fHitVADCmaxstrip" },
251
   { "hit.ADCmaxsampU", "max sample of max U strip", "fHitUADCmaxsample" },
252
   { "hit.ADCmaxsampV", "max sample of max V strip", "fHitVADCmaxsample" },
253
   { "hit.ADCmaxsampUclust", "max U cluster-summed ADC time sample", "fHitUADCmaxclustsample" },
254
   { "hit.ADCmaxsampVclust", "max V cluster-summed ADC time sample", "fHitVADCmaxclustsample" },
255
   { "hit.ADCasym", "Hit ADC asymmetry: (ADCU - ADCV)/(ADCU + ADCV)", "fHitADCasym" },
256
   { "hit.Utime", "cluster timing based on U strips", "fHitUTime" },
257
   { "hit.Vtime", "cluster timing based on V strips", "fHitVTime" },
258
   { "hit.UtimeMaxStrip", "cluster timing based on U strips", "fHitUTimeMaxStrip" },
259
   { "hit.VtimeMaxStrip", "cluster timing based on V strips", "fHitVTimeMaxStrip" },
260
   { "hit.deltat", "cluster U time - V time", "fHitDeltaT" },
261
   { "hit.Tavg", "hit T average", "fHitTavg" },
262
   { "hit.isampmaxUclust", "peak time sample in cluster-summed U ADC samples", "fHitIsampMaxUclust" },
263
   { "hit.isampmaxVclust", "peak time sample in cluster-summed V ADC samples", "fHitIsampMaxVclust" },
264
   { "hit.isampmaxUstrip", "peak time sample in max U strip", "fHitIsampMaxUstrip" },
265
   { "hit.isampmaxVstrip", "peak time sample in max V strip", "fHitIsampMaxVstrip" },
266
   { "hit.ccor_clust", "correlation coefficient between cluster-summed U and V samples", "fHitCorrCoeffClust" },
267
   { "hit.ccor_strip", "correlation coefficient between U and V samples on strips with max ADC", "fHitCorrCoeffMaxStrip" },
268
   { "hit.ENABLE_CM_U", "Enable CM flag for max U strip in this hit", "fHitU_ENABLE_CM" },
269
   { "hit.ENABLE_CM_V", "Enable CM flag for max V strip in this hit", "fHitV_ENABLE_CM" },
270
   { "hit.CM_GOOD_U", "Enable CM flag for max U strip in this hit", "fHitU_CM_GOOD" },
271
   { "hit.CM_GOOD_V", "Enable CM flag for max V strip in this hit", "fHitV_CM_GOOD" },
272
   { "hit.BUILD_ALL_SAMPLES_U", "Enable CM flag for max U strip in this hit", "fHitU_BUILD_ALL_SAMPLES" },
273
   { "hit.BUILD_ALL_SAMPLES_V", "Enable CM flag for max V strip in this hit", "fHitV_BUILD_ALL_SAMPLES" },
274
   { "hit.ADCfrac0_Umax", "Max U strip ADC0/ADCsum", "fHitADCfrac0_MaxUstrip" },
275
   { "hit.ADCfrac1_Umax", "Max U strip ADC1/ADCsum", "fHitADCfrac1_MaxUstrip" },
276
   { "hit.ADCfrac2_Umax", "Max U strip ADC2/ADCsum", "fHitADCfrac2_MaxUstrip" },
277
   { "hit.ADCfrac3_Umax", "Max U strip ADC3/ADCsum", "fHitADCfrac3_MaxUstrip" },
278
   { "hit.ADCfrac4_Umax", "Max U strip ADC4/ADCsum", "fHitADCfrac4_MaxUstrip" },
279
   { "hit.ADCfrac5_Umax", "Max U strip ADC5/ADCsum", "fHitADCfrac5_MaxUstrip" },
280
   { "hit.ADCfrac0_Vmax", "Max V strip ADC0/ADCsum", "fHitADCfrac0_MaxVstrip" },
281
   { "hit.ADCfrac1_Vmax", "Max V strip ADC1/ADCsum", "fHitADCfrac1_MaxVstrip" },
282
   { "hit.ADCfrac2_Vmax", "Max V strip ADC2/ADCsum", "fHitADCfrac2_MaxVstrip" },
283
   { "hit.ADCfrac3_Vmax", "Max V strip ADC3/ADCsum", "fHitADCfrac3_MaxVstrip" },
284
   { "hit.ADCfrac4_Vmax", "Max V strip ADC4/ADCsum", "fHitADCfrac4_MaxVstrip" },
285
   { "hit.ADCfrac5_Vmax", "Max V strip ADC5/ADCsum", "fHitADCfrac5_MaxVstrip" },
286
   { "nlayershit", "number of layers with any strip fired", "fNlayers_hit" },
287
   { "nlayershitu", "number of layers with any U strip fired", "fNlayers_hitU" },
288
   { "nlayershitv", "number of layers with any V strip fired", "fNlayers_hitV" },
289
   { "nlayershituv", "number of layers with at least one 2D hit", "fNlayers_hitUV" },
290
   { "nstripsu_layer", "total number of U strips fired by layer", "fNstripsU_layer" },
291
   { "nstripsv_layer", "total number of V strips fired by layer", "fNstripsV_layer" },
292
   { "nclustu_layer", "total number of U clusters by layer", "fNclustU_layer" },
293
   { "nclustv_layer", "total number of V clusters by layer", "fNclustV_layer" },
294
   { "n2Dhit_layer", "total_number of 2D hits by layer", "fN2Dhit_layer" },
295 36 Sean Jeffas
   { "clust.nclustu",   "Number of clusters in u",   "fNclustU" },
296
   { "clust.clustu_strips",   "u clusters strip multiplicity",   "fUclusters.nstrips" },
297
   { "clust.clustu_pos",   "u clusters position",   "fUclusters.hitpos_mean" },
298
   { "clust.clustu_adc",   "u clusters adc sum",   "fUclusters.clusterADCsum" },
299
   { "clust.clustu_time",   "u clusters time",   "fUclusters.t_mean" },
300
   { "clust.nclustv",   "Number of clusters in v",   "fNclustV" },
301
   { "clust.clustv_strips",   "v clusters strip multiplicity",   "fVclusters.nstrips" },
302
   { "clust.clustv_pos",   "v clusters position",   "fVclusters.hitpos_mean" },
303
   { "clust.clustv_adc",   "v clusters adc sum",   "fVclusters.clusterADCsum" },
304
   { "clust.clustv_time",   "v clusters time",   "fVclusters.t_mean" },
305
   { "hit.nhits2d",   "Number of 2d hits",   "fN2Dhits" },
306 45 Sean Jeffas
   { "hit.x",   "local X coordinate of hit",   "fHits.xhit" },
307
   { "hit.y",   "local Y coordinate of hit",   "fHits.yhit" },
308
   { "hit.xg",   "transport X coordinate of hit",   "fHits.xghit" },
309
   { "hit.yg",   "transport Y coordinate of hit",   "fHits.yghit" },
310
   { "hit.ADCasym",   "hit ADC asymmetry (ADCU-ADCV)/2",   "fHits.ADCasym" },
311
   { "hit.ADCavg",  "(ADCU+ADCV)/2", "fHits.Ehit" },
312
   { "hit.Tdiff",   "hit time difference (u-v)",   "fHits.tdiff" },
313
   { "hit.Tavg",   "average time of 2D hit", "fHits.thitcorr" },
314 36 Sean Jeffas
   { "hit.hit_iuclust", "index in u cluster array", "fHits.iuclust" },
315
   { "hit.hit_ivclust", "index in v cluster array", "fHits.ivclust" },
316
   { "hit.ontrack", "hit is on track", "fHits.ontrack" },
317 34 Sean Jeffas
</code></pre>
318
319
h3. Strip Variables
320
321
* These variables come from SBSGEMModule.cxx
322
* GEM modules are labeled numerically as m1, m2, m3, etc. We will generically list this as *m#*.
323
* For the module definitions below there is an extra prefix for each module, *bb.gem.m#.*
324
** ex. *bb.gem.m3.strip.nstripsfired*
325
326
<pre>
327
   { "strip.nstripsfired", "Number of strips fired", kUInt, 0, &fNstrips_hit },
328
   { "strip.nstrips_keep", "Number of fired strips passing basic timing cuts", kUInt, 0, &fNstrips_keep },
329
   { "strip.nstrips_keepU", "Number of U/X strips passing basic timing cuts", kUInt, 0, &fNstrips_keepU },
330
   { "strip.nstrips_keepV", "Number of V/Y strips passing basic timing cuts", kUInt, 0, &fNstrips_keepV },
331
   { "strip.nstrips_keep_lmax", "Number of strips passing local max thresholds and basic timing cuts", kUInt, 0, &fNstrips_keep_lmax },
332
   { "strip.nstrips_keep_lmaxU", "Number of U/X strips passing local max thresholds and basic timing cuts", kUInt, 0, &fNstrips_keep_lmaxU },
333
   { "strip.nstrips_keep_lmaxV", "Number of V/Y strips passing local max thresholds and basic timing cuts", kUInt, 0, &fNstrips_keep_lmaxV },
334
   { "strip.istrip", "strip index", kUInt, 0, &(fStrip[0]), &fNstrips_hit },
335
   { "strip.IsU", "U strip?", kUInt, 0, &(fStripIsU[0]), &fNstrips_hit },
336
   { "strip.IsV", "V strip?", kUInt, 0, &(fStripIsV[0]), &fNstrips_hit },
337
   { "strip.ADCsamples", "ADC samples (index = isamp+Nsamples*istrip)", kDouble, 0, &(fADCsamples1D[0]), &fNdecoded_ADCsamples },
338
   { "strip.rawADCsamples", "raw ADC samples (no baseline subtraction)", kInt, 0, &(fRawADCsamples1D[0]), &fNdecoded_ADCsamples },
339
   { "strip.ADCsum", "Sum of ADC samples on a strip", kDouble, 0, &(fADCsums[0]), &fNstrips_hit },
340
   { "strip.isampmax", "sample in which max ADC occurred on a strip", kUInt, 0, &(fMaxSamp[0]), &fNstrips_hit },
341
   { "strip.ADCmax", "Value of max ADC sample on a strip", kDouble, 0, &(fADCmax[0]), &fNstrips_hit },
342
   { "strip.Tmean", "ADC-weighted mean strip time", kDouble, 0, &(fTmean[0]), &fNstrips_hit },
343
   { "strip.Tsigma", "ADC-weighted rms strip time", kDouble, 0, &(fTsigma[0]), &fNstrips_hit },
344
   { "strip.Tcorr", "Corrected strip time", kDouble, 0, &(fTcorr[0]), &fNstrips_hit },
345
   { "strip.Tfit", "Fitted strip time", kDouble, 0, &(fStripTfit[0]), &fNstrips_hit },
346
   { "strip.Tdiff", "time diff. wrt max strip in cluster (or perhaps cluster tmean)", kDouble, 0, &(fStripTdiff[0]), &fNstrips_hit },
347
   { "strip.TSchi2", "chi2 of strip pulse shape (time samples) wrt average good strip pulse shape", kDouble, 0, &(fStripTSchi2[0]), &fNstrips_hit },
348
   { "strip.CorrCoeff", "Correlation coefficient of strip wrt max strip on cluster (or perhaps cluster tmean)", kDouble, 0, &(fStripCorrCoeff[0]), &fNstrips_hit },
349
   { "strip.itrack", "Index of track containing this strip (-1 if not on any track)", kInt, 0, &(fStripTrackIndex[0]), &fNstrips_hit },
350
   { "strip.ontrack", "Is this strip on any track (0/1)?", kUInt, 0, &(fStripOnTrack[0]), &fNstrips_hit },
351
   { "strip.ADCavg", "average of ADC samples on a strip", kDouble, 0, &(fStripADCavg[0]), &fNstrips_hit },
352
   { "strip.ENABLE_CM", "online common-mode enabled?", kUInt, 0, &(fStrip_ENABLE_CM[0]), &fNstrips_hit },
353
   { "strip.CM_GOOD", "common-mode out of range? (online failed)", kUInt, 0, &(fStrip_CM_GOOD[0]), &fNstrips_hit },
354
   { "strip.BUILD_ALL_SAMPLES", "online or offline zero suppression", kUInt, 0, &(fStrip_BUILD_ALL_SAMPLES[0]), &fNstrips_hit },
355
   { "strip.ontrackU", "U strip on track", kUInt, 0, &(fStripUonTrack[0]), &fNstrips_hit },
356
   { "strip.ontrackV", "V strip on track", kUInt, 0, &(fStripVonTrack[0]), &fNstrips_hit },
357 36 Sean Jeffas
</code></pre>
358
359 37 Sean Jeffas
h3. Timing Variables
360 36 Sean Jeffas
361 37 Sean Jeffas
* These variables come from SBSGEMModule.cxx
362 36 Sean Jeffas
363
<pre>
364 37 Sean Jeffas
   { "time.T0_by_APV", "Coarse MPD timestamp of first event", "fT0_by_APV" },
365
   { "time.Tref_coarse", "Reference coarse MPD time stamp for this event", "fTref_coarse" },
366
   { "time.Tcoarse_by_APV", "Coarse MPD timestamp by APV relative to Tref_coarse", "fTcoarse_by_APV" },
367
   { "time.Tfine_by_APV", "Fine MPD timestamp by APV", "fTfine_by_APV" },
368
   { "time.EventCount_by_APV", "MPD event counter by APV (these should all agree in any one event)", "fEventCount_by_APV" },
369
   { "time.T_ns_by_APV", "Time stamp in ns relative to coarse T_ref", "fTimeStamp_ns_by_APV" },
370 33 Sean Jeffas
</code></pre>
371 38 Sean Jeffas
372
h1. Timing Hodoscope Variable Definitions
373
374
* These definitions from the following source files defined in SBS-offline. See github for more information.
375
** SBSTimingHodoscope.cxx
376
** SBSGenericDetector.cxx
377
* All definitions below are accessed from the tree with the prepend *bb.hodotdc.*
378 39 Sean Jeffas
** Ex. *bb.hodotdc.tdc_tot*
379 50 Gary Penman
* IMPORTANT: The new (Spring 2024) variables *.tleft,tright,totleft,totright, are RAW meaning there are no corrections applied. These are used for the purposes of calibrations.
380 1 Sean Jeffas
h3. Scint. Bar TDC Variables
381 42 Sean Jeffas
382 41 Sean Jeffas
<pre>
383 39 Sean Jeffas
   { "bar.ngoodbars",          "Number of good bars",                  "GetGoodBarsSize()"},
384
   { "bar.tdc.id",             "TDC Hit Bar ID",                       "fGoodBarIDsTDC"},
385
   { "bar.tdc.meantime",       "Bar Mean Time [ns]",                   "fGoodBarTDCmean"},
386
   { "bar.tdc.timediff",       "Bar Time Diff [ns]",                   "fGoodBarTDCdiff"},
387
   { "bar.tdc.timehitpos",     "Bar Time Hit pos from L [m]",          "fGoodBarTDCpos"},
388
   { "bar.tdc.vpos",           "Bar vertical position [m]",            "fGoodBarTDCvpos"},
389
   { "bar.tdc.L.le",           "Left pmt time LE [ns]",                "fGoodBarTDCLle"},
390
   { "bar.tdc.L.leW",          "Left pmt time LE walk corr [ns]",      "fGoodBarTDCLleW"},
391
   { "bar.tdc.L.te",           "Left pmt time TE [ns]",                "fGoodBarTDCLte"},
392
   { "bar.tdc.L.teW",          "Left pmt time TE walk corr [ns]",      "fGoodBarTDCLteW"},
393
   { "bar.tdc.L.tot",          "Left pmt tot [ns]",                    "fGoodBarTDCLtot"},
394
   { "bar.tdc.L.totW",         "Left pmt tot walk corr [ns]",          "fGoodBarTDCLtotW"},
395
   { "bar.tdc.R.le",           "Right pmt time LE [ns]",               "fGoodBarTDCRle"},
396
   { "bar.tdc.R.leW",          "Right pmt time LE walk corr [ns]",     "fGoodBarTDCRleW"},
397
   { "bar.tdc.R.te",           "Right pmt time TE [ns]",               "fGoodBarTDCRte"},
398
   { "bar.tdc.R.teW",          "Right pmt time TE walk corr [ns[",     "fGoodBarTDCRteW"},
399
   { "bar.tdc.R.tot",          "Right pmt tot [ns[",                   "fGoodBarTDCRtot"},
400 1 Sean Jeffas
   { "bar.tdc.R.totW",         "Right pmt tot walk corr [ns]",         "fGoodBarTDCRtotW"},
401 41 Sean Jeffas
</code></pre>
402 43 Sean Jeffas
403
h3. Scint. Bar ADC Variables
404
405
<pre>
406
   { "bar.adc.id",             "ADC Hit Bar ID",                       "fGoodBarIDsADC"},
407
   { "bar.adc.mean",           "ADC Hit Bar Mean [bins]",              "fGoodBarADCmean"},
408
   { "bar.adc.L.a",            "Left ADC [bins]",                      "fGoodBarADCLa"},
409
   { "bar.adc.L.ap",           "Left ADC ped corr [bins]",             "fGoodBarADCLap"},
410
   { "bar.adc.L.ac",           "Left ADC ped corr [GeV]",              "fGoodBarADCLac"},
411
   { "bar.adc.R.a",            "Right ADC [bins]",                     "fGoodBarADCRa"},
412
   { "bar.adc.R.ap",           "Right ADC ped corr [bins]",            "fGoodBarADCRap"},
413
   { "bar.adc.R.ac",           "Right ADC ped corr [GeV]",             "fGoodBarADCRac"},
414
</code></pre>
415
416
h3. All Cluster Variables
417
418
<pre>
419
   { "allclus.size",           "cluster size",                         "fOutClus.n"},
420
   { "allclus.id",             "cluster max bar id",                   "fOutClus.id" },
421
   { "allclus.xmean",          "cluster mean X",                       "fOutClus.x"},
422
   { "allclus.ymean",          "cluster mean Y",                       "fOutClus.y"},
423
   { "allclus.tmean",          "cluster mean T",                       "fOutClus.t"},
424
   { "allclus.totmean",        "cluster mean ToT",                     "fOutClus.tot"},
425
   { "allclus.tdiff",          "cluster max bar tdiff",                "fOutClus.tdiff"},
426
   { "allclus.itrack",         "track index",                          "fOutClus.trackindex"},
427 48 Gary Penman
   { "allclus.tleft", "cluster max bar tleft", "fOutClus.tleft"},
428
   { "allclus.tright", "cluster max bar tright", "fOutClus.tright"},
429
   { "allclus.totleft", "cluster max bar totleft", "fOutClus.totleft"},
430
   { "allclus.totright", "cluster max bar totright", "fOutClus.totright"},
431
    
432 43 Sean Jeffas
</code></pre>
433 44 Sean Jeffas
434
h3. Cluster Bar Variables
435
436
<pre>
437
   { "clus.bar.tdc.id",        "main clus TDC Hit Bar ID",             "fMainClusBars.id"},
438
   { "clus.bar.tdc.meantime",  "main clus Bar Mean Time [ns]",         "fMainClusBars.t"},
439
   { "clus.bar.tdc.meantot",   "main clus Bar Mean ToT [ns]",          "fMainClusBars.tot"},
440
   { "clus.bar.tdc.timediff",  "main clus Bar Time Diff [ns]",         "fMainClusBars.tdiff"},
441
   { "clus.bar.tdc.timehitpos","main clus Bar Time Hit pos from L [m]","fMainClusBars.y"},
442
   { "clus.bar.tdc.vpos",      "main clus Bar vertical position [m]",  "fMainClusBars.x"},
443
   { "clus.bar.tdc.itrack",    "main clus Bar track index",            "fMainClusBars.trackindex" },
444 48 Gary Penman
   { "clus.bar.tdc.tleft", "main clus Bar tleft, no corrections", "fMainClusBars.tleft" },
445
   { "clus.bar.tdc.tright", "main clus Bar tright, no corrections", "fMainClusBars.tright" },
446
   { "clus.bar.tdc.totleft", "main clus Bar tot left, no corrections", "fMainClusBars.totleft" },
447
   { "clus.bar.tdc.totright", "main clus Bar tot right, no corrections", "fMainClusBars.totright" },
448 44 Sean Jeffas
</code></pre>
449
450
h3. Cluster Variables
451
452
<pre>
453
   { "nclus",                  "number of clusters",                   "GetNClusters()"},
454
   { "clus.id",                "cluster max bar id",                   "fMainClus.id"},
455
   { "clus.size",              "cluster size",                         "fMainClus.n"},
456
   { "clus.xmean",             "cluster mean X",                       "fMainClus.x"},
457
   { "clus.ymean",             "cluster mean Y",                       "fMainClus.y"},
458
   { "clus.tmean",             "cluster mean T",                       "fMainClus.t"},
459
   { "clus.totmean",           "cluster mean ToT",                     "fMainClus.tot"},
460
   { "clus.tdiff",             "cluster max bar tdiff",                "fMainClus.tdiff"},
461 49 Gary Penman
   { "clus.tdiff", "cluster max bar tdiff", "fMainClus.tdiff"},
462
   { "clus.tleft", "cluster max bar tleft", "fMainClus.tleft"},
463
   { "clus.tright", "cluster max bar tright", "fMainClus.tright"},
464
   { "clus.totleft", "cluster max bar totleft", "fMainClus.totleft"},
465
   { "clus.totright", "cluster max bar totright", "fMainClus.totright"}   
466 44 Sean Jeffas
   { "clus.trackindex",        "cluster track index",                  "fMainClus.trackindex"},
467
</code></pre>
468
469
h3. Generic Detector TDC Variables
470
471
<pre>
472
   { "tdcrow",                 "Row for block in data vectors",        "fGood.TDCrow" }),
473
   { "tdccol",                 "Col for block in data vectors",        "fGood.TDCcol" }),
474
   { "tdcelemID",              "Element ID for block in data vectors", "fGood.TDCelemID" }),
475
   { "tdclayer",               "Layer for block in data vectors",      "fGood.TDClayer" }),
476
   { "tdc",                    "Calibrated TDC value",                 "fGood.t" });
477
   { "tdc_mult",               "TDC # of hits per channel",            "fGood.t_mult" });
478
   { "tdc_te",                 "Calibrated TDC trailing info",         "fGood.t_te" });
479
   { "tdc_tot",                "Time Over Threshold",                  "fGood.t_ToT" });
480
   { "hits.TDCelemID",         "All TDC Element ID",                   "fRaw.TDCelemID" });
481
   { "hits.t",                 "All TDC leading edge times",           "fRaw.t" });
482
   { "hits.t_te",              "All TDC trailing edge times",          "fRaw.t_te" });
483
   { "hits.t_tot",             "All TDC Time-over-threshold",          "fRaw.t_ToT" });
484
   { "nhits",                  "Nhits",                                "fNhits" },
485
   { "nrefhits",               "Number of reference time hits",        "fNRefhits" },
486
   { "ngoodTDChits",           "NGoodTDChits",                         "fNGoodTDChits" },
487
   { "ngoodADChits",           "NGoodADChits",                         "fNGoodADChits" },
488
</code></pre>