Project
Loading...
Searching...
No Matches
TrackInterpolation.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
16
17#ifndef ALICEO2_TPC_TRACKINTERPOLATION_H_
18#define ALICEO2_TPC_TRACKINTERPOLATION_H_
19
20#include <gsl/span>
42#include "GPUTRDRecoParam.h"
43#include "TRDBase/Geometry.h"
44
45class TTree;
46
47namespace o2
48{
49
50namespace gpu
51{
52class GPUParam;
53}
54
55namespace tpc
56{
57class VDriftCorrFact;
58
61 float dy{};
62 float dz{};
63 float y{};
64 float z{};
65 float snp{};
66 unsigned char sec{};
67 unsigned char dRow{};
69};
70
74 UnbinnedResid() = default;
75 UnbinnedResid(float dyIn, float dzIn, float tgSlpIn, float yIn, float zIn, unsigned char rowIn, unsigned char secIn, short chanIn = -1) : dy(static_cast<short>(dyIn * 0x7fff / param::MaxResid)),
76 dz(static_cast<short>(dzIn * 0x7fff / param::MaxResid)),
77 tgSlp(static_cast<short>(tgSlpIn * 0x7fff / param::MaxTgSlp)),
78 y(static_cast<short>(yIn * 0x7fff / param::MaxY)),
79 z(static_cast<short>(zIn * 0x7fff / param::MaxZ)),
80 row(rowIn),
81 sec(secIn),
82 channel(chanIn) {}
83 short dy{0};
84 short dz{0};
85 short tgSlp{0};
86 short y{0};
87 short z{0};
88 unsigned char row{0};
89 unsigned char sec{0};
90 short channel{-1};
91
92 bool isTPC() const { return row < constants::MAXGLOBALPADROW; }
93 bool isTRD() const { return row >= 160 && row < 166; }
94 bool isTOF() const { return row == 170; }
95 bool isITS() const { return row >= 180; }
96 int getDetID() const { return isTPC() ? 1 : (isITS() ? 0 : (isTRD() ? 2 : (isTOF() ? 3 : -1))); }
97 int getITSLayer() const { return row - 180; }
98 int getTRDLayer() const { return row - 170; }
99 float getAlpha() const;
100 float getX() const;
101
102 static void init(long timestamp = -1);
103 static void checkInitDone();
104 static bool gInitDone;
105
107};
108
109struct DetInfoResid { // detector info associated with residual
110 uint32_t word = 0; // container interpreted in a different way depending on the detector type
111 //
112 // TPC view: qTot and qMax of the cluster
113 uint16_t qTotTPC() const { return static_cast<uint16_t>(word & 0xFFFFu); }
114 uint16_t qMaxTPC() const { return static_cast<uint16_t>((word >> 16) & 0xFFFFu); }
115 void setTPC(uint16_t qTot, uint16_t qMax) { word = (static_cast<uint32_t>(qMax) << 16) | static_cast<uint32_t>(qTot); }
116 //
117 // TRD view: q0, q1, q2 + calibrated slope (truncated to in +-3.5 range)
118 static constexpr uint32_t TRDQ0NB = 7, TRDQ1NB = 7, TRDQ2NB = 6, TRDSlpNB = 12;
119 static constexpr uint32_t TRDQ0Msk = (1 << TRDQ0NB) - 1, TRDQ1Msk = (1 << TRDQ1NB) - 1, TRDQ2Msk = ((1 << TRDQ2NB) - 1), TRDSlpMsk = (1 << TRDSlpNB) - 1;
120 static constexpr float TRDMaxSlope = 3.5, TRDSlope2Int = ((1 << TRDSlpNB) - 1) / (2 * TRDMaxSlope), TRDInt2Slope = 1.f / TRDSlope2Int;
121 uint16_t q0TRD() const { return static_cast<uint16_t>(word & TRDQ0Msk); }
122 uint16_t q1TRD() const { return static_cast<uint16_t>((word >> TRDQ0NB) & TRDQ1Msk); }
123 uint16_t q2TRD() const { return static_cast<uint16_t>((word >> (TRDQ0NB + TRDQ1NB)) & TRDQ2Msk); }
124 float slopeTRD() const { return ((word >> (TRDQ0NB + TRDQ1NB + TRDQ2NB)) & TRDSlpMsk) * TRDInt2Slope - TRDMaxSlope; }
125 void setTRD(uint8_t q0, uint8_t q1, uint8_t q2, float slope)
126 {
127 float rslope = (slope + TRDMaxSlope) * TRDSlope2Int;
128 if (rslope < 0.f) {
129 rslope = 0;
130 } else if (rslope > TRDSlpMsk) {
131 rslope = TRDSlpMsk;
132 }
133 uint32_t slpI = std::round(rslope);
134 word = (static_cast<uint32_t>(slpI << (TRDQ0NB + TRDQ1NB + TRDQ2NB)) |
135 static_cast<uint32_t>((q2 & TRDQ2Msk) << (TRDQ0NB + TRDQ1NB)) |
136 static_cast<uint32_t>((q1 & TRDQ1Msk) << TRDQ0NB) |
137 static_cast<uint32_t>(q0 & TRDQ0Msk));
138 }
139 //
140 // TOF view (time difference in \mus wrt seeding ITS-TPC track)
141 float timeTOF() const { return std::bit_cast<float>(word); }
142 void setTOF(float t) { word = std::bit_cast<uint32_t>(t); }
143 //
144 // No info for ITS is stored
145 //
146 // PV view (time difference in \mus wrt contributing ITS-TPC track)
147 float timePV() const { return std::bit_cast<float>(word); }
148 void setPV(float t) { word = std::bit_cast<uint32_t>(t); }
149
151};
152
155 TrackDataCompact() = default;
156 TrackDataCompact(uint32_t idx, std::array<uint8_t, 4> mlt, uint8_t nRes, uint8_t source, uint8_t nextraRes = 0) : idxFirstResidual(idx), multStack{mlt}, nResiduals(nRes), sourceId(source), nExtDetResid(nextraRes) {}
158 std::array<uint8_t, 4> multStack{}; // multiplicity in the stack packed as asinh(x*0.05)/0.05
159 uint8_t nResiduals;
160 uint8_t nExtDetResid = 0;
161 uint8_t sourceId;
162
163 void setMultStack(float v, int stack)
164 {
165 uint32_t mltPacked = std::round(std::asinh(v * 0.05) / 0.05);
166 multStack[stack] = mltPacked < 0xff ? mltPacked : 0xff;
167 }
168 float getMultStack(int stack) const
169 {
170 return std::sinh(multStack[stack] * 0.05) / 0.05;
171 }
172 float getMultStackPacked(int stack) const { return multStack[stack]; }
173
175};
176
177// TODO add to UnbinnedResid::sec flag if cluster was used or not
178// TODO add to TrackDataCompact::sourceId flag if track was used or not (if possible)
179
196
198struct TrackData {
201 float dEdxTPC{};
202 float chi2TPC{};
203 float chi2ITS{};
204 float chi2TRD{};
205 float deltaTOF{};
206
207 unsigned short nClsTPC{};
208 unsigned short nClsITS{};
209 unsigned short nTrkltsTRD{};
210 unsigned short clAvailTOF{};
211 short TRDTrkltSlope[6] = {};
212 uint8_t nExtDetResid = 0;
214 std::array<uint8_t, 4> multStack{}; // multiplicity in the stack packed as asinh(x*0.05)/0.05
215 float getT0Error() const { return float(clAvailTOF); }
216 bool isTOFAvail() const { return clAvailTOF != 0; }
217
218 void setMultStack(float v, int stack)
219 {
220 uint32_t mltPacked = std::round(std::asinh(v * 0.05) / 0.05);
221 multStack[stack] = mltPacked < 0xff ? mltPacked : 0xff;
222 }
223 float getMultStack(int stack) const
224 {
225 return std::sinh(multStack[stack] * 0.05) / 0.05;
226 }
227 float getMultStackPacked(int stack) const { return multStack[stack]; }
228
230};
231
237{
238 public:
240
243
244 // since this class has pointer members, we should explicitly delete copy and assignment operators
247
249 enum {
250 ExtOut = 0,
253 NIndices
254 };
255
257 struct CacheStruct {
258 std::array<float, NIndices> y{};
259 std::array<float, NIndices> z{};
260 std::array<float, NIndices> sy2{};
261 std::array<float, NIndices> szy{};
262 std::array<float, NIndices> sz2{};
263 std::array<float, NIndices> snp{};
264 float clY{0.f};
265 float clZ{0.f};
266 float clAngle{0.f};
267 unsigned short clAvailable{0};
268 unsigned char clSec{0};
269 };
270
272 struct TrackParams {
273 TrackParams() = default;
274 float qpt{0.f};
275 float tgl{0.f};
276 std::array<float, param::NPadRows> zTrk{};
277 std::array<float, param::NPadRows> xTrk{};
278 std::array<float, param::NPadRows> dy{};
279 std::array<float, param::NPadRows> dz{};
280 std::array<float, param::NPadRows> tglArr{};
281 std::bitset<param::NPadRows> flagRej{};
282 };
283
284 // -------------------------------------- processing functions --------------------------------------------------
285
288
291
294
297
299 bool isTrackSelected(const o2::track::TrackParCov& trk) const;
300
302 void process();
303
306 void extrapolateTrack(int iSeed);
307
310 void interpolateTrack(int iSeed);
311
313 void reset();
314
315 // refit ITS track taking PID (unless already refitted) from the seed and reassign to the seed
317 // -------------------------------------- outlier rejection --------------------------------------------------
318
323 bool validateTrack(const TrackData& trk, TrackParams& params, const std::vector<TPCClusterResiduals>& clsRes) const;
324
327 bool outlierFiltering(const TrackData& trk, TrackParams& params, const std::vector<TPCClusterResiduals>& clsRes) const;
328
331 float checkResiduals(const TrackData& trk, TrackParams& params, const std::vector<TPCClusterResiduals>& clsRes) const;
332
335 bool compareToHelix(const TrackData& trk, TrackParams& params, const std::vector<TPCClusterResiduals>& clsRes) const;
336
338 void diffToLocLine(const int np, int idxOffset, const std::array<float, param::NPadRows>& x, const std::array<float, param::NPadRows>& y, std::array<float, param::NPadRows>& diffY) const;
339
341 void diffToMA(const int np, const std::array<float, param::NPadRows>& y, std::array<float, param::NPadRows>& diffMA) const;
342
343 // -------------------------------------- settings --------------------------------------------------
344 void setNHBPerTF(int n) { mNHBPerTF = n; }
345
347
349 void setMatCorr(MatCorrType matCorr) { mMatCorr = matCorr; }
350
352 void setMaxTracksPerTF(int n) { mMaxTracksPerTF = n; }
353
355 void setAddTracksForMapPerTF(int n) { mAddTracksForMapPerTF = n; }
356
358 void setDumpTrackPoints() { mDumpTrackPoints = true; }
359
361 void setITSClusterDictionary(const o2::itsmft::TopologyDictionary* dict) { mITSDict = dict; }
362
364 void setProcessSeeds() { mProcessSeeds = true; }
365
367 void setProcessITSTPConly() { mProcessITSTPConly = true; }
368
370 void setSqrtS(float s) { mSqrtS = s; }
371
372 void setExtDetResid(bool v) { mExtDetResid = v; }
373
374 int processTRDLayer(const o2::trd::TrackTRD& trkTRD, int iLayer, o2::track::TrackParCov& trkWork, std::array<float, 2>* trkltTRDYZ = nullptr,
375 std::array<float, 3>* trkltTRDCov = nullptr, TrackData* trkData = nullptr,
376 o2::trd::Tracklet64* trk64 = nullptr, o2::trd::CalibratedTracklet* trkCalib = nullptr);
377
378 // --------------------------------- output ---------------------------------------------
379 std::vector<UnbinnedResid>& getClusterResiduals() { return mClRes; }
380 std::vector<DetInfoResid>& getClusterResidualsDetInfo() { return mDetInfoRes; }
381 std::vector<TrackDataCompact>& getTrackDataCompact() { return mTrackDataCompact; }
382 std::vector<TrackDataExtended>& getTrackDataExtended() { return mTrackDataExtended; }
383 std::vector<TrackData>& getReferenceTracks() { return mTrackData; }
384 std::vector<TPCClusterResiduals>& getClusterResidualsUnfiltered() { return mClResUnfiltered; }
385 std::vector<TrackData>& getReferenceTracksUnfiltered() { return mTrackDataUnfiltered; }
386
387 private:
388 static constexpr float sFloatEps{1.e-7f};
389 static constexpr int NSTACKS = 4;
390 static constexpr std::array<int, NSTACKS + 1> STACKROWS{0, 63, 97, 127, 152};
391 // parameters + settings
392 const SpacePointsCalibConfParam* mParams = nullptr;
393 std::shared_ptr<o2::gpu::GPUParam> mTPCParam = nullptr;
394 int mNHBPerTF = 32;
395 int mNTPCOccBinLength = 16;
396 float mNTPCOccBinLengthInv = 1.f / 16;
397 float mTPCTimeBinMUS{.2f};
398 float mTPCVDriftRef = -1.;
399 float mTPCDriftTimeOffsetRef = 0.;
400 float mSqrtS{13600.f};
401 MatCorrType mMatCorr{MatCorrType::USEMatCorrNONE};
402 int mMaxTracksPerTF{-1};
403 int mAddTracksForMapPerTF{0};
404 bool mDumpTrackPoints{false};
405 bool mExtDetResid{true};
406 bool mProcessSeeds{false};
407 bool mProcessITSTPConly{false};
408 o2::dataformats::GlobalTrackID::mask_t mSourcesConfigured;
409 o2::dataformats::GlobalTrackID::mask_t mSourcesConfiguredMap;
410 bool mSingleSourcesConfigured{true};
411
412 // input
413 const o2::globaltracking::RecoContainer* mRecoCont = nullptr;
414 std::vector<o2::dataformats::GlobalTrackID> mGIDs{};
415 std::vector<o2::globaltracking::RecoContainer::GlobalIDSet> mGIDtables{};
416 std::vector<float> mTrackTimes{};
417 std::vector<int> mTrackPVID{};
418 std::vector<o2::track::TrackParCov> mSeeds{};
419 std::vector<int> mParentID{};
420 std::map<int, int> mTrackTypes;
421 std::array<std::vector<uint32_t>, 4> mTrackIndices;
422 gsl::span<const TPCClRefElem> mTPCTracksClusIdx;
423 const ClusterNativeAccess* mTPCClusterIdxStruct = nullptr;
424 // ITS specific input only needed for debugging
425 gsl::span<const int> mITSTrackClusIdx;
426 std::vector<o2::BaseCluster<float>> mITSClustersArray;
427 std::vector<int> mITSRefitSeedID;
428 const o2::itsmft::TopologyDictionary* mITSDict = nullptr;
429
430 // output
431 std::vector<TrackData> mTrackData{};
432 std::vector<TrackDataCompact> mTrackDataCompact{};
433 std::vector<TrackDataExtended> mTrackDataExtended{};
434 std::vector<UnbinnedResid> mClRes{};
435 std::vector<DetInfoResid> mDetInfoRes{};
436 std::vector<TrackData> mTrackDataUnfiltered{};
437 std::vector<TPCClusterResiduals> mClResUnfiltered{};
438
439 // cache
440 std::array<CacheStruct, constants::MAXGLOBALPADROW> mCache{{}};
441 std::vector<o2::dataformats::GlobalTrackID> mGIDsSuccess;
442
443 // helpers
444 o2::gpu::GPUTRDRecoParam mRecoParam;
445 o2::trd::Geometry* mGeoTRD;
446 std::unique_ptr<TPCFastTransform> mFastTransform{};
447 float mBz;
448 bool mInitDone{false};
449 size_t mRejectedResiduals{};
450
451 ClassDefNV(TrackInterpolation, 1);
452};
453
454} // namespace tpc
455
456} // namespace o2
457
458#endif
Wrapper container for different reconstructed object types.
Definition of the ITSMFT cluster.
Definition of the ClusterTopology class.
Definition of the TOF cluster.
Base track model for the Barrel, params only, w/o covariance.
Class to store event ID and index in the event for objects like track, cluster...
Global index for barrel track: provides provenance (detectors combination), index in respective array...
Class to store the output of the matching to TOF.
Class to refer to the 1st entry and N elements of some group in the continuous container.
uint16_t slope
Definition RawData.h:1
uint32_t stack
Definition RawData.h:1
Parameters used for TPC space point calibration.
class to create TPC fast transformation
Definition of the ITS track.
Result of refitting TPC-ITS matched track.
Reference on ITS/MFT clusters set.
Cluster class for TOF.
Definition Cluster.h:37
TrackInterpolation(const TrackInterpolation &)=delete
void prepareInputTrackSample(const o2::globaltracking::RecoContainer &inp)
Prepare input track sample (not relying on CreateTracksVariadic functionality)
int processTRDLayer(const o2::trd::TrackTRD &trkTRD, int iLayer, o2::track::TrackParCov &trkWork, std::array< float, 2 > *trkltTRDYZ=nullptr, std::array< float, 3 > *trkltTRDCov=nullptr, TrackData *trkData=nullptr, o2::trd::Tracklet64 *trk64=nullptr, o2::trd::CalibratedTracklet *trkCalib=nullptr)
bool isInputTrackAccepted(const o2::dataformats::GlobalTrackID &gid, const o2::globaltracking::RecoContainer::GlobalIDSet &gidTable, const o2::dataformats::PrimaryVertex &pv) const
Check if input track passes configured cuts.
void diffToMA(const int np, const std::array< float, param::NPadRows > &y, std::array< float, param::NPadRows > &diffMA) const
For a given set of points, calculate their deviation from the moving average (build from the neighbou...
std::vector< TrackData > & getReferenceTracks()
void diffToLocLine(const int np, int idxOffset, const std::array< float, param::NPadRows > &x, const std::array< float, param::NPadRows > &y, std::array< float, param::NPadRows > &diffY) const
For a given set of points, calculate the differences from each point to the fitted lines from all oth...
std::vector< TrackData > & getReferenceTracksUnfiltered()
TrackInterpolation()=default
Default constructor.
std::vector< TrackDataExtended > & getTrackDataExtended()
o2::dataformats::GlobalTrackID::Source findValidSource(const o2::dataformats::GlobalTrackID::mask_t mask, const o2::dataformats::GlobalTrackID::Source src) const
For given vertex track source which is not in mSourcesConfigured find the seeding source which is ena...
void setMatCorr(MatCorrType matCorr)
Sets the flag if material correction should be applied when extrapolating the tracks.
void setProcessSeeds()
Enable processing of seeds.
void setMaxTracksPerTF(int n)
Sets the maximum number of tracks to be processed (successfully) per TF.
bool refITSTrack(o2::dataformats::GlobalTrackID, int iSeed)
std::vector< TrackDataCompact > & getTrackDataCompact()
float checkResiduals(const TrackData &trk, TrackParams &params, const std::vector< TPCClusterResiduals > &clsRes) const
void setAddTracksForMapPerTF(int n)
In addition to mMaxTracksPerTF up to the set number of additional tracks can be processed.
std::vector< DetInfoResid > & getClusterResidualsDetInfo()
bool compareToHelix(const TrackData &trk, TrackParams &params, const std::vector< TPCClusterResiduals > &clsRes) const
std::vector< TPCClusterResiduals > & getClusterResidualsUnfiltered()
void process()
Main processing function.
void setITSClusterDictionary(const o2::itsmft::TopologyDictionary *dict)
Allow setting the ITS cluster dictionary from outside.
std::vector< UnbinnedResid > & getClusterResiduals()
@ ExtIn
extrapolation inwards of TRD/TOF track
@ NIndices
total number of indices (3)
@ Int
interpolation (mean positions of both extrapolations)
@ ExtOut
extrapolation outwards of ITS track
TrackInterpolation & operator=(const TrackInterpolation &)=delete
void setDumpTrackPoints()
Enable full output.
void setTPCVDrift(const o2::tpc::VDriftCorrFact &v)
void setProcessITSTPConly()
Enable ITS-TPC only processing.
void setSqrtS(float s)
Set the centre of mass energy required for pT downsampling Tsalis function.
bool isTrackSelected(const o2::track::TrackParCov &trk) const
Given the defined downsampling factor tsalisThreshold check if track is selected.
void reset()
Reset cache and output vectors.
bool outlierFiltering(const TrackData &trk, TrackParams &params, const std::vector< TPCClusterResiduals > &clsRes) const
void init(o2::dataformats::GlobalTrackID::mask_t src, o2::dataformats::GlobalTrackID::mask_t srcMap)
Initialize everything, set the requested track sources.
bool validateTrack(const TrackData &trk, TrackParams &params, const std::vector< TPCClusterResiduals > &clsRes) const
GLdouble n
Definition glcorearb.h:1982
GLint GLenum GLint x
Definition glcorearb.h:403
GLenum src
Definition glcorearb.h:1767
const GLdouble * v
Definition glcorearb.h:832
GLsizei GLsizei GLchar * source
Definition glcorearb.h:798
GLenum const GLfloat * params
Definition glcorearb.h:272
GLenum GLfloat param
Definition glcorearb.h:271
GLint GLuint mask
Definition glcorearb.h:291
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843
constexpr int MAXGLOBALPADROW
Definition Constants.h:34
TrackParCovF TrackParCov
Definition Track.h:33
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::array< GTrackID, GTrackID::NSources > GlobalIDSet
static constexpr uint32_t TRDQ2Msk
ClassDefNV(DetInfoResid, 1)
static constexpr float TRDSlope2Int
static constexpr uint32_t TRDQ1Msk
static constexpr uint32_t TRDSlpMsk
static constexpr uint32_t TRDQ0NB
static constexpr uint32_t TRDQ2NB
void setTRD(uint8_t q0, uint8_t q1, uint8_t q2, float slope)
static constexpr float TRDInt2Slope
static constexpr float TRDMaxSlope
void setTPC(uint16_t qTot, uint16_t qMax)
static constexpr uint32_t TRDQ1NB
static constexpr uint32_t TRDQ0Msk
static constexpr uint32_t TRDSlpNB
Internal struct used to store the unbinned TPC cluster residuals with float values.
unsigned char dRow
distance to previous row in units of pad rows
ClassDefNV(TPCClusterResiduals, 4)
unsigned char sec
sector number 0..35
float snp
sin of the phi angle between padrow and track
Structure for the information required to associate each residual with a given track type (ITS-TPC-TR...
uint8_t nResiduals
total number of TPC residuals associated to this track
uint8_t sourceId
source ID obtained from the global track ID
uint8_t nExtDetResid
number of external detectors (wrt TPC) residuals stored, on top of clIdx.getEntries
std::array< uint8_t, 4 > multStack
ClassDefNV(TrackDataCompact, 3)
void setMultStack(float v, int stack)
float getMultStack(int stack) const
float getMultStackPacked(int stack) const
uint32_t idxFirstResidual
the index of the first residual from this track
TrackDataCompact(uint32_t idx, std::array< uint8_t, 4 > mlt, uint8_t nRes, uint8_t source, uint8_t nextraRes=0)
Heavy structure with track parameterizations + track points for debugging.
o2::dataformats::RangeReference clIdx
index of first cluster residual and total number of cluster residuals of this track
std::vector< o2::trd::CalibratedTracklet > clsTRD
the TRD space points (if available)
o2::dataformats::MatchInfoTOF matchTOF
TOF matching information.
o2::track::TrackPar trkOuter
refit of TRD and/or TOF points
o2::its::TrackITS trkITS
ITS seeding track.
uint8_t nExtDetResid
number of external detectors (to TPC) residuals stored, on top of clIdx.getEntries
o2::trd::TrackTRD trkTRD
TRD seeding track.
ClassDefNV(TrackDataExtended, 3)
std::vector< o2::trd::Tracklet64 > trkltTRD
attached TRD tracklets (if available)
o2::dataformats::GlobalTrackID gid
GID of the most global barrel track.
o2::tpc::TrackTPC trkTPC
TPC track (including dEdx information)
std::vector< o2::BaseCluster< float > > clsITS
attached ITS clusters
o2::tof::Cluster clsTOF
the TOF cluster (if available)
Structure filled for each track with track quality information and a vector with TPCClusterResiduals.
float chi2TRD
chi2 of TRD track
float dEdxTPC
TPC dEdx information.
unsigned short nTrkltsTRD
number of attached TRD tracklets
float getMultStackPacked(int stack) const
unsigned short clAvailTOF
whether or not track seed has a matched TOF cluster, if so, gives the resolution of the T0 in ps
std::array< uint8_t, 4 > multStack
short TRDTrkltSlope[6]
TRD tracklet slope 0x7fff / param::MaxTRDSlope.
unsigned short nClsITS
number of attached ITS clusters
o2::dataformats::RangeReference clIdx
index of first cluster residual and total number of TPC cluster residuals of this track
float chi2TPC
chi2 of TPC track
unsigned short nClsTPC
number of attached TPC clusters
void setMultStack(float v, int stack)
float getMultStack(int stack) const
o2::dataformats::GlobalTrackID gid
global track ID for seeding track
ClassDefNV(TrackData, 10)
float deltaTOF
TOFsignal - T0 - texp(PID), if T0 is available.
uint8_t nExtDetResid
number of external detectors (to TPC) residuals stored, on top of clIdx.getEntries
o2::track::TrackPar par
ITS track at inner TPC radius.
float chi2ITS
chi2 of ITS track
Structure for caching positions, covariances and angles for extrapolations from ITS and TRD/TOF and f...
Structure for on-the-fly re-calculated track parameters at the validation stage.
std::array< float, param::NPadRows > dz
std::array< float, param::NPadRows > tglArr
std::bitset< param::NPadRows > flagRej
std::array< float, param::NPadRows > dy
std::array< float, param::NPadRows > xTrk
std::array< float, param::NPadRows > zTrk
UnbinnedResid(float dyIn, float dzIn, float tgSlpIn, float yIn, float zIn, unsigned char rowIn, unsigned char secIn, short chanIn=-1)
unsigned char sec
TPC sector (0..35)
ClassDefNV(UnbinnedResid, 2)
unsigned char row
TPC pad row.
short tgSlp
tan of the phi angle between padrow and track
static void init(long timestamp=-1)
short channel
extra channel info (ITS chip ID, TRD chamber, TOF main pad within the sector)