15#ifndef GPUO2INTERFACE_H
16#define GPUO2INTERFACE_H
19#ifndef GPUCA_TPC_GEOMETRY_O2
20#define GPUCA_TPC_GEOMETRY_O2
22#ifndef GPUCA_O2_INTERFACE
23#define GPUCA_O2_INTERFACE
34template <
typename value_T>
40struct ClusterNativeAccess;
55class GPUReconstruction;
56class GPUChainTracking;
58struct GPUO2InterfaceConfiguration;
59struct GPUInterfaceOutputs;
60struct GPUInterfaceInputUpdate;
61struct GPUTrackingOutputs;
63struct GPUNewCalibValues;
65struct GPUO2Interface_processingContext;
66struct GPUO2Interface_Internals;
78 void Clear(
bool clearOutputs, uint32_t iThread = 0);
99 bool mContinuous =
false;
101 uint32_t mNContexts = 0;
102 std::unique_ptr<GPUO2Interface_processingContext[]> mCtx;
104 std::unique_ptr<GPUO2InterfaceConfiguration> mConfig;
106 std::unique_ptr<GPUO2Interface_Internals> mInternals;
int32_t unregisterMemoryForGPU(const void *ptr)
const o2::base::Propagator * GetDeviceO2Propagator(int32_t iThread=0) const
int32_t Initialize(const GPUO2InterfaceConfiguration &config)
void setErrorCodeOutput(std::vector< std::array< uint32_t, 4 > > *v)
void UseGPUPolynomialFieldInPropagator(o2::base::Propagator *prop) const
void DumpEvent(int32_t nEvent, GPUTrackingInOutPointers *data)
void GetITSTraits(o2::its::TrackerTraits< 7 > *&trackerTraits, o2::its::VertexerTraits *&vertexerTraits, o2::its::TimeFrame< 7 > *&timeFrame)
const GPUO2InterfaceConfiguration & getConfig() const
int32_t RunTracking(GPUTrackingInOutPointers *data, GPUInterfaceOutputs *outputs=nullptr, uint32_t iThread=0, GPUInterfaceInputUpdate *inputUpdateCallback=nullptr)
int32_t registerMemoryForGPU(const void *ptr, size_t size)
void Clear(bool clearOutputs, uint32_t iThread=0)
int32_t UpdateCalibration(const GPUCalibObjectsConst &newCalib, const GPUNewCalibValues &newVals, uint32_t iThread=0)
Global TPC definitions and constants.