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;
53class GPUReconstruction;
54class GPUChainTracking;
56struct GPUO2InterfaceConfiguration;
57struct GPUInterfaceOutputs;
58struct GPUInterfaceInputUpdate;
59struct GPUTrackingOutputs;
61struct GPUNewCalibValues;
63struct GPUO2Interface_processingContext;
64struct GPUO2Interface_Internals;
76 void Clear(
bool clearOutputs, uint32_t iThread = 0);
97 bool mContinuous =
false;
99 uint32_t mNContexts = 0;
100 std::unique_ptr<GPUO2Interface_processingContext[]> mCtx;
102 std::unique_ptr<GPUO2InterfaceConfiguration> mConfig;
104 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)
const GPUO2InterfaceConfiguration & getConfig() const
int32_t RunTracking(GPUTrackingInOutPointers *data, GPUInterfaceOutputs *outputs=nullptr, uint32_t iThread=0, GPUInterfaceInputUpdate *inputUpdateCallback=nullptr)
void GetITSTraits(o2::its::TrackerTraits *&trackerTraits, o2::its::VertexerTraits *&vertexerTraits, o2::its::TimeFrame *&timeFrame)
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)
o2::its::TimeFrame TimeFrame
Global TPC definitions and constants.