32 return GetProcessingSettings().trdTrackModelO2 ? RunTRDTrackingInternal<GPUTRDTrackerKernels::o2Version>() : RunTRDTrackingInternal<GPUTRDTrackerKernels::gpuVersion>();
36int32_t GPUChainTracking::RunTRDTrackingInternal()
50 if (!isTriggeredEvent) {
51 Tracker.SetProcessPerTimeFrame(
true);
62 if (!
Tracker.PreCheckTrackTRDCandidate(trk)) {
66 if (!
Tracker.CheckTrackTRDCandidate(trktrd)) {
69 GPUTRDTrackerGPU::HelperTrackAttributes trkAttribs, *trkAttribsPtr{
nullptr};
70 if (!isTriggeredEvent) {
71 const float tpcTBinMUS = 0.199606f;
72 trkAttribs.mTime = trk.GetParam().GetTZOffset() * tpcTBinMUS;
73 trkAttribs.mTimeAddMax = 50.f;
74 trkAttribs.mTimeSubMax = 50.f;
81 trkAttribs.mSide = -1;
84 trkAttribsPtr = &trkAttribs;
86 if (
Tracker.LoadTrack(trktrd,
i,
false, trkAttribsPtr)) {
94 if (!
Tracker.PreCheckTrackTRDCandidate(trk)) {
98 if (!
Tracker.CheckTrackTRDCandidate(trktrd)) {
102 GPUTRDTracker::HelperTrackAttributes trkAttribs, *trkAttribsPtr{
nullptr};
103 if (!isTriggeredEvent) {
104 const float tpcTBinMUS = 0.199606f;
105 trkAttribs.mTime = trk.getTime0() * tpcTBinMUS;
106 trkAttribs.mTimeAddMax = trk.getDeltaTFwd() * tpcTBinMUS;
107 trkAttribs.mTimeSubMax = trk.getDeltaTBwd() * tpcTBinMUS;
108 if (trk.hasASideClustersOnly()) {
109 trkAttribs.mSide = -1;
110 }
else if (trk.hasCSideClustersOnly()) {
111 trkAttribs.mSide = 1;
113 trkAttribsPtr = &trkAttribs;
115 if (
Tracker.LoadTrack(trktrd,
i,
false, trkAttribsPtr)) {
121 DoTRDGPUTracking<I>();
136template <
int32_t I,
class T>
142 if (externalInstance) {
143 if constexpr (std::is_same_v<
decltype(
Tracker),
decltype(externalInstance)>) {
146 throw std::runtime_error(
"Must not provide external instance that does not match template type");
149 Tracker->PrepareTracking(
this);
151 int32_t useStream = 0;
172 if (!
Tracker->GenerateSpacepoints()) {
188 runKernel<GPUTRDTrackerKernels, I>(
GetGridAuto(useStream), externalInstance ?
Tracker :
nullptr);
193 GPUInfo(
"GPU TRD tracker Finished");
198template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::gpuVersion>(
GPUTRDTrackerGPU*);
199template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::gpuVersion>(
GPUTRDTracker*);
200template int32_t GPUChainTracking::DoTRDGPUTracking<GPUTRDTrackerKernels::o2Version>(
GPUTRDTracker*);
201template 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)
GPUReconstruction::RecoStepField GetRecoStepsGPU() const
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)
virtual std::unique_ptr< GPUReconstructionProcessing::threadContext > GetThreadContext()
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)
krnlExec GetGridAuto(int32_t stream, GPUReconstruction::krnlDeviceType d=GPUReconstruction::krnlDeviceType::Auto, GPUDataTypes::RecoStep st=GPUDataTypes::RecoStep::NoRecoStep)
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