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