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"
45
46class TTree;
47
48namespace o2
49{
50
51namespace gpu
52{
53class GPUParam;
54}
55
56namespace tpc
57{
58class VDriftCorrFact;
59
62 float dy{};
63 float dz{};
64 float y{};
65 float z{};
66 float snp{};
67 unsigned char sec{};
68 unsigned char dRow{};
69 unsigned char flags{};
71};
72
76 UnbinnedResid() = default;
77 UnbinnedResid(float dyIn, float dzIn, float tgSlpIn, float yIn, float zIn,
78 unsigned char rowIn, unsigned char secIn, short chanIn = -1, bool rejFlag = false) : dy(static_cast<short>(dyIn * 0x7fff / param::MaxResid)),
79 dz(static_cast<short>(dzIn * 0x7fff / param::MaxResid)),
80 tgSlp(static_cast<short>(tgSlpIn * 0x7fff / param::MaxTgSlp)),
81 y(static_cast<short>(yIn * 0x7fff / param::MaxY)),
82 z(static_cast<short>(zIn * 0x7fff / param::MaxZ)),
83 row(rowIn),
84 sec(secIn),
85 channel(chanIn),
86 rejected(rejFlag) {}
87 short dy{0};
88 short dz{0};
89 short tgSlp{0};
90 short y{0};
91 short z{0};
92 unsigned char row{0};
93 unsigned char sec{0};
94 short channel{-1};
95 bool rejected{false};
96
97 bool isTPC() const { return row < constants::MAXGLOBALPADROW; }
98 bool isTRD() const { return row >= 160 && row < 166; }
99 bool isTOF() const { return row == 170; }
100 bool isITS() const { return row >= 180; }
101 int getDetID() const { return isTPC() ? 1 : (isITS() ? 0 : (isTRD() ? 2 : (isTOF() ? 3 : -1))); }
102 int getITSLayer() const { return row - 180; }
103 int getTRDLayer() const { return row - 160; }
104 float getAlpha() const;
105 float getX() const;
106
107 static void init(long timestamp = -1);
108 static void checkInitDone();
109 static bool gInitDone;
110
112};
113
114struct DetInfoResid { // detector info associated with residual
115 uint32_t word = 0; // container interpreted in a different way depending on the detector type
116 //
117 // TPC view: qTot and qMax of the cluster
118 uint16_t qTotTPC() const { return static_cast<uint16_t>(word & 0xFFFFu); }
119 uint16_t qMaxTPC() const { return static_cast<uint16_t>((word >> 16) & 0xFFFFu); }
120 void setTPC(uint16_t qTot, uint16_t qMax) { word = (static_cast<uint32_t>(qMax) << 16) | static_cast<uint32_t>(qTot); }
121 //
122 // TRD view: q0, q1, q2 + calibrated slope (truncated to in +-3.5 range)
123 static constexpr uint32_t TRDQ0NB = 7, TRDQ1NB = 7, TRDQ2NB = 6, TRDSlpNB = 12;
124 static constexpr uint32_t TRDQ0Msk = (1 << TRDQ0NB) - 1, TRDQ1Msk = (1 << TRDQ1NB) - 1, TRDQ2Msk = ((1 << TRDQ2NB) - 1), TRDSlpMsk = (1 << TRDSlpNB) - 1;
125 static constexpr float TRDMaxSlope = 3.5, TRDSlope2Int = ((1 << TRDSlpNB) - 1) / (2 * TRDMaxSlope), TRDInt2Slope = 1.f / TRDSlope2Int;
126 uint16_t q0TRD() const { return static_cast<uint16_t>(word & TRDQ0Msk); }
127 uint16_t q1TRD() const { return static_cast<uint16_t>((word >> TRDQ0NB) & TRDQ1Msk); }
128 uint16_t q2TRD() const { return static_cast<uint16_t>((word >> (TRDQ0NB + TRDQ1NB)) & TRDQ2Msk); }
129 float slopeTRD() const { return ((word >> (TRDQ0NB + TRDQ1NB + TRDQ2NB)) & TRDSlpMsk) * TRDInt2Slope - TRDMaxSlope; }
130 void setTRD(uint8_t q0, uint8_t q1, uint8_t q2, float slope)
131 {
132 float rslope = (slope + TRDMaxSlope) * TRDSlope2Int;
133 if (rslope < 0.f) {
134 rslope = 0;
135 } else if (rslope > TRDSlpMsk) {
136 rslope = TRDSlpMsk;
137 }
138 uint32_t slpI = std::round(rslope);
139 word = (static_cast<uint32_t>(slpI << (TRDQ0NB + TRDQ1NB + TRDQ2NB)) |
140 static_cast<uint32_t>((q2 & TRDQ2Msk) << (TRDQ0NB + TRDQ1NB)) |
141 static_cast<uint32_t>((q1 & TRDQ1Msk) << TRDQ0NB) |
142 static_cast<uint32_t>(q0 & TRDQ0Msk));
143 }
144 //
145 // TOF view (time difference in \mus wrt seeding ITS-TPC track)
146 float timeTOF() const { return std::bit_cast<float>(word); }
147 void setTOF(float t) { word = std::bit_cast<uint32_t>(t); }
148 //
149 // No info for ITS is stored
150 //
151 // PV view (time difference in \mus wrt contributing ITS-TPC track)
152 float timePV() const { return std::bit_cast<float>(word); }
153 void setPV(float t) { word = std::bit_cast<uint32_t>(t); }
154
156};
157
160 TrackDataCompact() = default;
161 TrackDataCompact(uint32_t idx, std::array<uint8_t, 4> mlt, uint8_t nRes, uint8_t source, uint8_t nextraRes = 0, int8_t filt = -1) : idxFirstResidual(idx), multStack{mlt}, nResiduals(nRes), sourceId(source), filterFlag(filt), nExtDetResid(nextraRes) {}
163 std::array<uint8_t, 4> multStack{}; // multiplicity in the stack packed as asinh(x*0.05)/0.05
164 uint8_t nResiduals;
165 uint8_t nExtDetResid = 0;
166 uint8_t sourceId;
167 int8_t filterFlag = -1;
168
169 void setMultStack(float v, int stack)
170 {
171 uint32_t mltPacked = std::round(std::asinh(v * 0.05) / 0.05);
172 multStack[stack] = mltPacked < 0xff ? mltPacked : 0xff;
173 }
174 float getMultStack(int stack) const
175 {
176 return std::sinh(multStack[stack] * 0.05) / 0.05;
177 }
178 float getMultStackPacked(int stack) const { return multStack[stack]; }
179
181};
182
183// TODO add to UnbinnedResid::sec flag if cluster was used or not
184// TODO add to TrackDataCompact::sourceId flag if track was used or not (if possible)
185
203
205struct TrackData {
208 float dEdxTPC{};
209 float chi2TPC{};
210 float chi2ITS{};
211 float chi2TRD{};
212 float deltaTOF{};
213
214 unsigned short nClsTPC{};
215 unsigned short nClsITS{};
216 unsigned short nTrkltsTRD{};
217 unsigned short clAvailTOF{};
218 short TRDTrkltSlope[6] = {};
219 uint8_t nExtDetResid = 0;
220 int8_t filterFlag = -1;
222 std::array<uint8_t, 4> multStack{}; // multiplicity in the stack packed as asinh(x*0.05)/0.05
223 float getT0Error() const { return float(clAvailTOF); }
224 bool isTOFAvail() const { return clAvailTOF != 0; }
225
226 void setMultStack(float v, int stack)
227 {
228 uint32_t mltPacked = std::round(std::asinh(v * 0.05) / 0.05);
229 multStack[stack] = mltPacked < 0xff ? mltPacked : 0xff;
230 }
231 float getMultStack(int stack) const
232 {
233 return std::sinh(multStack[stack] * 0.05) / 0.05;
234 }
235 float getMultStackPacked(int stack) const { return multStack[stack]; }
236
238};
239
245{
246 public:
248
251
252 // since this class has pointer members, we should explicitly delete copy and assignment operators
255
257
259 enum {
260 ExtOut = 0,
263 NIndices
264 };
265
267 struct CacheStruct {
268 std::array<float, NIndices> y{};
269 std::array<float, NIndices> z{};
270 std::array<float, NIndices> sy2{};
271 std::array<float, NIndices> szy{};
272 std::array<float, NIndices> sz2{};
273 std::array<float, NIndices> snp{};
274 float clY{0.f};
275 float clZ{0.f};
276 float clAngle{0.f};
277 unsigned short clAvailable{0};
278 unsigned char clSec{0};
279 unsigned char clFlags{0};
280 };
281
284 float xTrk{0.f};
285 float yTrk{0.f};
286 float zTrk{0.f};
287 float xLab{0.f};
288 float yLab{0.f};
289 float sPath{0.f};
290 float dy{0.f};
291 float dz{0.f};
292 float tglArr{0.f};
293 float residHelixY{0.f};
294 float residHelixZ{0.f};
295 float diffYSmooth{0.f};
296 float diffZSmooth{0.f};
297 int8_t sec{0};
298 bool flagRej{false};
300 };
301
303 float qpt{0.f};
304 float tgl{0.f};
305 float xcLab{0.f};
306 float ycLab{0.f};
307 float r{0.f};
308 float zOffs{0.f};
309 uint8_t nRej = 0;
310 std::vector<ValidationPoint> points;
311 void clear()
312 {
313 points.clear();
314 nRej = 0;
315 }
317 };
318
319 // -------------------------------------- processing functions --------------------------------------------------
320
323
326
329
332
334 bool isTrackSelected(const o2::track::TrackParCov& trk) const;
335
337 void process();
338
341 void extrapolateTrack(int iSeed);
342
345 void interpolateTrack(int iSeed);
346
348 void reset();
349
350 // refit ITS track taking PID (unless already refitted) from the seed and reassign to the seed
352 // -------------------------------------- outlier rejection --------------------------------------------------
353
358 int8_t validateTrack(const TrackData& trk, TrackValidationData& params, const std::vector<TPCClusterResiduals>& clsRes, bool interpol);
359
362 bool outlierFiltering(const TrackData& trk, TrackValidationData& params, const std::vector<TPCClusterResiduals>& clsRes);
363
366 float checkResiduals(const TrackData& trk, TrackValidationData& params, const std::vector<TPCClusterResiduals>& clsRes);
367
370 bool compareToHelix(const TrackData& trk, TrackValidationData& params, const std::vector<TPCClusterResiduals>& clsRes);
371
373 void diffToLocLine(TrackValidationData& params, int start, int np);
374
376 void diffToMA(const int np, const std::array<float, param::NPadRows>& y, std::array<float, param::NPadRows>& diffMA);
377
378 // -------------------------------------- settings --------------------------------------------------
379 void setNHBPerTF(int n) { mNHBPerTF = n; }
380
382
384 void setMatCorr(MatCorrType matCorr) { mMatCorr = matCorr; }
385
387 void setMaxTracksPerTF(int n) { mMaxTracksPerTF = n; }
388
390 void setAddTracksForMapPerTF(int n) { mAddTracksForMapPerTF = n; }
391
393 void setDumpTrackPoints() { mDumpTrackPoints = true; }
394
396 void setITSClusterDictionary(const o2::itsmft::TopologyDictionary* dict) { mITSDict = dict; }
397
399 void setProcessSeeds() { mProcessSeeds = true; }
400
402 void setProcessITSTPConly() { mProcessITSTPConly = true; }
403
405 void setSqrtS(float s) { mSqrtS = s; }
406
407 void setExtDetResid(bool v) { mExtDetResid = v; }
408
409 int processTRDLayer(const o2::trd::TrackTRD& trkTRD, int iLayer, o2::track::TrackParCov& trkWork, std::array<float, 2>* trkltTRDYZ = nullptr,
410 std::array<float, 3>* trkltTRDCov = nullptr, TrackData* trkData = nullptr,
411 o2::trd::Tracklet64* trk64 = nullptr, o2::trd::CalibratedTracklet* trkCalib = nullptr);
412
413 // --------------------------------- output ---------------------------------------------
414 std::vector<UnbinnedResid>& getClusterResiduals() { return mClRes; }
415 std::vector<DetInfoResid>& getClusterResidualsDetInfo() { return mDetInfoRes; }
416 std::vector<TrackDataCompact>& getTrackDataCompact() { return mTrackDataCompact; }
417 std::vector<TrackDataExtended>& getTrackDataExtended() { return mTrackDataExtended; }
418 std::vector<TrackData>& getReferenceTracks() { return mTrackData; }
419
420 void setLane(int lID, int nL)
421 {
422 mLaneID = lID;
423 mNLanes = nL;
424 }
425
426 void finalize();
427
428 private:
429 static constexpr float sFloatEps{1.e-7f};
430 static constexpr int NSTACKS = 4;
431 static constexpr std::array<int, NSTACKS + 1> STACKROWS{0, 63, 97, 127, 152};
432 // parameters + settings
433 const SpacePointsCalibConfParam* mParams = nullptr;
434 std::shared_ptr<o2::gpu::GPUParam> mTPCParam = nullptr;
435 int mLaneID = 0;
436 int mNLanes = 1;
437 int mNHBPerTF = 32;
438 int mNTPCOccBinLength = 16;
439 float mNTPCOccBinLengthInv = 1.f / 16;
440 float mTPCTimeBinMUS{.2f};
441 float mTPCVDriftRef = -1.;
442 float mTPCDriftTimeOffsetRef = 0.;
443 float mSqrtS{13600.f};
444 MatCorrType mMatCorr{MatCorrType::USEMatCorrNONE};
445 int mMaxTracksPerTF{-1};
446 int mAddTracksForMapPerTF{0};
447 bool mDumpTrackPoints{false};
448 bool mExtDetResid{true};
449 bool mProcessSeeds{false};
450 bool mProcessITSTPConly{false};
451 o2::dataformats::GlobalTrackID::mask_t mSourcesConfigured;
452 o2::dataformats::GlobalTrackID::mask_t mSourcesConfiguredMap;
453 bool mSingleSourcesConfigured{true};
454
455 // input
456 const o2::globaltracking::RecoContainer* mRecoCont = nullptr;
457 std::vector<o2::dataformats::GlobalTrackID> mGIDs{};
458 std::vector<o2::globaltracking::RecoContainer::GlobalIDSet> mGIDtables{};
459 std::vector<float> mTrackTimes{};
460 std::vector<int> mTrackPVID{};
461 std::vector<o2::track::TrackParCov> mSeeds{};
462 std::vector<int> mParentID{};
463 std::map<int, int> mTrackTypes;
464 std::array<std::vector<uint32_t>, 4> mTrackIndices;
465 gsl::span<const TPCClRefElem> mTPCTrackClusIdx;
466 gsl::span<const unsigned char> mTPCShClassMap;
467 const ClusterNativeAccess* mTPCClusterIdxStruct = nullptr;
468
469 // ITS specific input only needed for debugging
470 gsl::span<const int> mITSTrackClusIdx;
471 std::vector<o2::BaseCluster<float>> mITSClustersArray;
472 std::vector<int> mITSRefitSeedID;
473 const o2::itsmft::TopologyDictionary* mITSDict = nullptr;
474
475 // output
476 std::vector<TrackData> mTrackData{};
477 std::vector<TrackDataCompact> mTrackDataCompact{};
478 std::vector<TrackDataExtended> mTrackDataExtended{};
479 std::vector<UnbinnedResid> mClRes{};
480 std::vector<DetInfoResid> mDetInfoRes{};
481 std::unique_ptr<o2::utils::TreeStreamRedirector> mDBGOut;
482
483 // cache
484 std::array<CacheStruct, constants::MAXGLOBALPADROW> mCache{{}};
485 std::vector<o2::dataformats::GlobalTrackID> mGIDsSuccess;
486
487 TrackValidationData mTrackValidation;
488
489 // helpers
490 o2::gpu::GPUTRDRecoParam mRecoParam;
491 o2::trd::Geometry* mGeoTRD;
492 std::unique_ptr<TPCFastTransform> mFastTransform{};
493 float mBz;
494 bool mInitDone{false};
495 size_t mRejectedResiduals{};
496 size_t mNRejRefit = 0;
497 size_t mNRejProp = 0;
498 size_t mNRejLoop = 0;
499
500 ClassDefNV(TrackInterpolation, 1);
501};
502
503} // namespace tpc
504
505} // namespace o2
506
507#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
float checkResiduals(const TrackData &trk, TrackValidationData &params, const std::vector< TPCClusterResiduals > &clsRes)
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.
std::vector< TrackData > & getReferenceTracks()
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()
void setAddTracksForMapPerTF(int n)
In addition to mMaxTracksPerTF up to the set number of additional tracks can be processed.
@ 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
void setLane(int lID, int nL)
std::vector< DetInfoResid > & getClusterResidualsDetInfo()
void diffToMA(const int np, const std::array< float, param::NPadRows > &y, std::array< float, param::NPadRows > &diffMA)
For a given set of points, calculate their deviation from the moving average (build from the neighbou...
bool compareToHelix(const TrackData &trk, TrackValidationData &params, const std::vector< TPCClusterResiduals > &clsRes)
void diffToLocLine(TrackValidationData &params, int start, int np)
For a given set of points, calculate the differences from each point to the fitted lines from all oth...
void process()
Main processing function.
void setITSClusterDictionary(const o2::itsmft::TopologyDictionary *dict)
Allow setting the ITS cluster dictionary from outside.
std::vector< UnbinnedResid > & getClusterResiduals()
TrackInterpolation & operator=(const TrackInterpolation &)=delete
void setDumpTrackPoints()
Enable full output.
void setTPCVDrift(const o2::tpc::VDriftCorrFact &v)
void setProcessITSTPConly()
Enable ITS-TPC only processing.
int8_t validateTrack(const TrackData &trk, TrackValidationData &params, const std::vector< TPCClusterResiduals > &clsRes, bool interpol)
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, TrackValidationData &params, const std::vector< TPCClusterResiduals > &clsRes)
void init(o2::dataformats::GlobalTrackID::mask_t src, o2::dataformats::GlobalTrackID::mask_t srcMap)
Initialize everything, set the requested track sources.
GLdouble n
Definition glcorearb.h:1982
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
GLbitfield flags
Definition glcorearb.h:1570
GLboolean r
Definition glcorearb.h:1233
GLuint start
Definition glcorearb.h:469
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, 6)
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
void setMultStack(float v, int stack)
TrackDataCompact(uint32_t idx, std::array< uint8_t, 4 > mlt, uint8_t nRes, uint8_t source, uint8_t nextraRes=0, int8_t filt=-1)
float getMultStack(int stack) const
ClassDefNV(TrackDataCompact, 4)
float getMultStackPacked(int stack) const
int8_t filterFlag
-1: validation was not done, 0: validated, >0 : reason not passing validation, see validateTrack meth...
uint32_t idxFirstResidual
the index of the first residual from this track
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.
std::vector< o2::trd::Tracklet64 > trkltTRD
attached TRD tracklets (if available)
ClassDefNV(TrackDataExtended, 4)
o2::dataformats::GlobalTrackID gid
GID of the most global barrel track.
o2::tpc::TrackTPC trkTPC
TPC track (including dEdx information)
int8_t filterFlag
-1: validation was not done, 0: validated, >0 : reason not passing validation, see validateTrack meth...
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
o2::track::TrackParCov par
ITS track at inner TPC radius.
unsigned short nClsTPC
number of attached TPC clusters
void setMultStack(float v, int stack)
float getMultStack(int stack) const
ClassDefNV(TrackData, 12)
o2::dataformats::GlobalTrackID gid
global track ID for seeding track
float deltaTOF
TOFsignal - T0 - texp(PID), if T0 is available.
int8_t filterFlag
-1: validation was not done, 0: validated, >0 : reason not passing validation, see validateTrack meth...
uint8_t nExtDetResid
number of external detectors (to TPC) residuals stored, on top of clIdx.getEntries
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.
ClassDefNV(UnbinnedResid, 3)
bool rejected
residual is flagged as rejected in the validateTrack
unsigned char sec
TPC sector (0..35)
UnbinnedResid(float dyIn, float dzIn, float tgSlpIn, float yIn, float zIn, unsigned char rowIn, unsigned char secIn, short chanIn=-1, bool rejFlag=false)
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)