44 if (!isTriggeredEvent) {
45 Tracker.SetProcessPerTimeFrame(
true);
56 if (!
Tracker.PreCheckTrackTRDCandidate(trk)) {
60 if (!
Tracker.CheckTrackTRDCandidate(trktrd)) {
63 GPUTRDTrackerGPU::HelperTrackAttributes trkAttribs, *trkAttribsPtr{
nullptr};
64 if (!isTriggeredEvent) {
65 const float tpcTBinMUS = 0.199606f;
66 trkAttribs.mTime = trk.GetParam().GetTZOffset() * tpcTBinMUS;
67 trkAttribs.mTimeAddMax = 50.f;
68 trkAttribs.mTimeSubMax = 50.f;
75 trkAttribs.mSide = -1;
78 trkAttribsPtr = &trkAttribs;
80 if (
Tracker.LoadTrack(trktrd,
i,
false, trkAttribsPtr)) {
88 if (!
Tracker.PreCheckTrackTRDCandidate(trk)) {
92 if (!
Tracker.CheckTrackTRDCandidate(trktrd)) {
96 GPUTRDTracker::HelperTrackAttributes trkAttribs, *trkAttribsPtr{
nullptr};
97 if (!isTriggeredEvent) {
98 const float tpcTBinMUS = 0.199606f;
99 trkAttribs.mTime = trk.getTime0() * tpcTBinMUS;
100 trkAttribs.mTimeAddMax = trk.getDeltaTFwd() * tpcTBinMUS;
101 trkAttribs.mTimeSubMax = trk.getDeltaTBwd() * tpcTBinMUS;
102 if (trk.hasASideClustersOnly()) {
103 trkAttribs.mSide = -1;
104 }
else if (trk.hasCSideClustersOnly()) {
105 trkAttribs.mSide = 1;
107 trkAttribsPtr = &trkAttribs;
109 if (
Tracker.LoadTrack(trktrd,
i,
false, trkAttribsPtr)) {
115 DoTRDGPUTracking<I>();
130template <
int32_t I,
class T>
136 if (externalInstance) {
137 if constexpr (std::is_same_v<
decltype(
Tracker),
decltype(externalInstance)>) {
140 throw std::runtime_error(
"Must not provide external instance that does not match template type");
143 Tracker->PrepareTracking(
this);
145 int32_t useStream = 0;
166 if (!
Tracker->GenerateSpacepoints()) {
182 runKernel<GPUTRDTrackerKernels, I>(
GetGridAuto(useStream), externalInstance ?
Tracker :
nullptr);
187 GPUInfo(
"GPU TRD tracker Finished");
192template int32_t GPUChainTracking::RunTRDTracking<GPUTRDTrackerKernels::gpuVersion>();
193template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::gpuVersion>(
GPUTRDTrackerGPU*);
194template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::gpuVersion>(
GPUTRDTracker*);
195template int32_t GPUChainTracking::RunTRDTracking<GPUTRDTrackerKernels::o2Version>();
196template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::o2Version>(
GPUTRDTracker*);
197template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::o2Version>(
GPUTRDTrackerGPU*);
Online TRD tracker based on extrapolated TPC tracks.
Used for storing the MC labels for the TRD tracklets.
TRD Tracklet word for GPU tracker - 32bit tracklet info + half chamber ID + index.
GPUTrackingFlatObjects mFlatObjectsDevice
std::unique_ptr< GPUTrackingInputProvider > mInputsHost
int32_t DoTRDGPUTracking(T *externalInstance=nullptr)
GPUTrackingInOutPointers & mIOPtrs
std::unique_ptr< GPUTrackingInputProvider > mInputsShadow
void GPUMemCpy(RecoStep step, void *dst, const void *src, size_t size, int32_t stream, int32_t toGPU, deviceEvent *ev=nullptr, deviceEvent *evList=nullptr, int32_t nEvents=1)
krnlExec GetGridAuto(int32_t stream, GPUReconstruction::krnlDeviceType d=GPUReconstruction::krnlDeviceType::Auto, GPUCA_RECO_STEP st=GPUCA_RECO_STEP::NoRecoStep)
GPUReconstruction::RecoStepField GetRecoStepsGPU() const
virtual std::unique_ptr< gpu_reconstruction_kernels::threadContext > GetThreadContext()
void WriteToConstantMemory(RecoStep step, size_t offset, const void *src, size_t size, int32_t stream=-1, deviceEvent *ev=nullptr)
size_t AllocateRegisteredMemory(GPUProcessor *proc)
GPUConstantMem * processors()
void SetupGPUProcessor(T *proc, bool allocate)
const GPUSettingsProcessing & GetProcessingSettings() const
void SynchronizeStream(int32_t stream)
GPUReconstructionCPU * mRec
GPUConstantMem * processorsShadow()
void TransferMemoryResourcesToHost(RecoStep step, GPUProcessor *proc, int32_t stream=-1, bool all=false)
void TransferMemoryResourcesToGPU(RecoStep step, GPUProcessor *proc, int32_t stream=-1, bool all=false)
void PopNonPersistentMemory(RecoStep step, uint64_t tag)
void PushNonPersistentMemory(uint64_t tag)
GPUTRDTrack_t< trackInterface< TRDBaseTrack > > GPUTRDTrack
GPUTRDTrack_t< trackInterface< TRDBaseTrackGPU > > GPUTRDTrackGPU
constexpr T qStr2Tag(const char *str)
S< o2::trd::GeometryFlat >::type * trdGeometry
GPUCalibObjects mCalibObjects
GPUTrackingInOutPointers ioPtrs
const int32_t * trdTrackletIdxFirst
const GPUTRDSpacePoint * trdSpacePoints
const GPUTRDTrackGPU * trdTracks
const GPUTRDTrackletWord * trdTracklets
const GPUTRDTrack * trdTracksO2
uint32_t nOutputTracksTPCO2
const o2::tpc::TrackTPC * outputTracksTPCO2
const float * trdTriggerTimes
const uint8_t * trdTrigRecMask
uint32_t nTRDTriggerRecords
const GPUTPCGMMergedTrack * mergedTracks
int32_t continuousMaxTimeBin