17#ifndef ALICEO2_TPC_TRACKINTERPOLATION_H_
18#define ALICEO2_TPC_TRACKINTERPOLATION_H_
70 UnbinnedResid(
float dyIn,
float dzIn,
float tgSlpIn,
float yIn,
float zIn,
unsigned char rowIn,
unsigned char secIn) :
dy(static_cast<
short>(dyIn * 0x7fff /
param::MaxResid)),
108 std::vector<o2::BaseCluster<float>>
clsITS{};
110 std::vector<o2::trd::CalibratedTracklet>
clsTRD{};
158 std::array<float, NIndices>
y{};
159 std::array<float, NIndices>
z{};
160 std::array<float, NIndices>
sy2{};
161 std::array<float, NIndices>
szy{};
162 std::array<float, NIndices>
sz2{};
163 std::array<float, NIndices>
snp{};
176 std::array<float, param::NPadRows>
zTrk{};
177 std::array<float, param::NPadRows>
xTrk{};
178 std::array<float, param::NPadRows>
dy{};
179 std::array<float, param::NPadRows>
dz{};
180 std::array<float, param::NPadRows>
tglArr{};
236 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;
239 void diffToMA(
const int np,
const std::array<float, param::NPadRows>&
y, std::array<float, param::NPadRows>& diffMA)
const;
277 static constexpr float sFloatEps{1.e-7f};
279 const SpacePointsCalibConfParam* mParams =
nullptr;
280 float mTPCTimeBinMUS{.2f};
281 float mTPCVDriftRef = -1.;
282 float mTPCDriftTimeOffsetRef = 0.;
283 float mSqrtS{13600.f};
285 int mMaxTracksPerTF{-1};
286 int mAddTracksForMapPerTF{0};
287 bool mDumpTrackPoints{
false};
288 bool mProcessSeeds{
false};
289 bool mProcessITSTPConly{
false};
292 bool mSingleSourcesConfigured{
true};
296 std::vector<o2::dataformats::GlobalTrackID> mGIDs{};
297 std::vector<o2::globaltracking::RecoContainer::GlobalIDSet> mGIDtables{};
298 std::vector<float> mTrackTimes{};
299 std::vector<o2::track::TrackParCov> mSeeds{};
300 std::map<int, int> mTrackTypes;
301 std::array<std::vector<uint32_t>, 4> mTrackIndices;
302 gsl::span<const TPCClRefElem> mTPCTracksClusIdx;
303 const ClusterNativeAccess* mTPCClusterIdxStruct =
nullptr;
305 gsl::span<const int> mITSTrackClusIdx;
306 std::vector<o2::BaseCluster<float>> mITSClustersArray;
310 std::vector<TrackData> mTrackData{};
311 std::vector<TrackDataCompact> mTrackDataCompact{};
312 std::vector<TrackDataExtended> mTrackDataExtended{};
313 std::vector<UnbinnedResid> mClRes{};
314 std::vector<TrackData> mTrackDataUnfiltered{};
315 std::vector<TPCClusterResiduals> mClResUnfiltered{};
318 std::array<CacheStruct, constants::MAXGLOBALPADROW> mCache{{}};
319 std::vector<o2::dataformats::GlobalTrackID> mGIDsSuccess;
324 std::unique_ptr<TPCFastTransform> mFastTransform{};
326 bool mInitDone{
false};
327 size_t mRejectedResiduals{};
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.
Parameters used for TPC space point calibration.
Error parameterizations and helper functions for TRD reconstruction.
Definition of the ITS track.
Result of refitting TPC-ITS matched track.
Reference on ITS/MFT clusters set.
TrackInterpolation(const TrackInterpolation &)=delete
void prepareInputTrackSample(const o2::globaltracking::RecoContainer &inp)
Prepare input track sample (not relying on CreateTracksVariadic functionality)
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()
void extrapolateTrack(int iSeed)
TrackInterpolation()=default
Default constructor.
@ 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
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.
std::vector< TrackDataCompact > & getTrackDataCompact()
float checkResiduals(const TrackData &trk, TrackParams ¶ms, const std::vector< TPCClusterResiduals > &clsRes) const
void interpolateTrack(int iSeed)
void setAddTracksForMapPerTF(int n)
In addition to mMaxTracksPerTF up to the set number of additional tracks can be processed.
bool compareToHelix(const TrackData &trk, TrackParams ¶ms, 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()
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 ¶ms, 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 ¶ms, const std::vector< TPCClusterResiduals > &clsRes) const
GLsizei GLsizei GLchar * source
GLenum const GLfloat * params
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::array< GTrackID, GTrackID::NSources > GlobalIDSet
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 residuals associated to this track
uint8_t sourceId
source ID obtained from the global track ID
TrackDataCompact(uint32_t idx, uint8_t nRes, uint8_t source)
uint32_t idxFirstResidual
the index of the first residual from this track
TrackDataCompact()=default
ClassDefNV(TrackDataCompact, 1)
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.
ClassDefNV(TrackDataExtended, 2)
o2::trd::TrackTRD trkTRD
TRD seeding track.
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
unsigned short clAvailTOF
whether or not track seed has a matched TOF cluster
unsigned short nClsITS
number of attached ITS clusters
o2::dataformats::RangeReference clIdx
index of first cluster residual and total number of cluster residuals of this track
float chi2TPC
chi2 of TPC track
unsigned short nClsTPC
number of attached TPC clusters
o2::dataformats::GlobalTrackID gid
global track ID for seeding track
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...
unsigned short clAvailable
std::array< float, NIndices > sz2
std::array< float, NIndices > szy
std::array< float, NIndices > snp
std::array< float, NIndices > sy2
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)
unsigned char sec
TPC sector (0..35)
unsigned char row
TPC pad row.
short tgSlp
tan of the phi angle between padrow and track
ClassDefNV(UnbinnedResid, 1)
short z
z position of the track, needed for binning
short y
y position of the track, needed for binning