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;
56class GPUReconstruction;
57class GPUChainTracking;
59struct GPUO2InterfaceConfiguration;
60struct GPUInterfaceOutputs;
61struct GPUInterfaceInputUpdate;
62struct GPUTrackingOutputs;
64struct GPUNewCalibValues;
66struct GPUO2Interface_processingContext;
67struct GPUO2Interface_Internals;
79 void Clear(
bool clearOutputs, uint32_t iThread = 0);
100 bool mContinuous =
false;
102 uint32_t mNContexts = 0;
103 std::unique_ptr<GPUO2Interface_processingContext[]> mCtx;
105 std::unique_ptr<GPUO2InterfaceConfiguration> mConfig;
107 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 GetITSTraits(o2::its::TrackerTraits< 7 > *&trackerTraits, o2::its::VertexerTraits< 7 > *&vertexerTraits, o2::its::TimeFrame< 7 > *&timeFrame)
void setErrorCodeOutput(std::vector< std::array< uint32_t, 4 > > *v)
void UseGPUPolynomialFieldInPropagator(o2::base::Propagator *prop) const
void DumpEvent(int32_t nEvent, GPUTrackingInOutPointers *data)
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.