Project
Loading...
Searching...
No Matches
GPUITSFitter.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#ifndef GPUITSFITTER_H
16#define GPUITSFITTER_H
17
18#include "GPUProcessor.h"
19#include "GPUITSTrack.h"
20
21namespace o2::its
22{
23template <uint8_t N>
24class Road;
25struct TrackingFrameInfo;
26struct Cluster;
27class Cell;
28} // namespace o2::its
29
30namespace o2::gpu
31{
32class GPUITSTrack;
33
35{
36 public:
37#ifndef GPUCA_GPUCODE
41
42 void* SetPointersInput(void* mem);
43 void* SetPointersTracks(void* mem);
44 void* SetPointersMemory(void* mem);
45#endif
46
47 GPUd() o2::its::Road<5>* roads()
48 {
49 return mRoads;
50 }
51 GPUd() void SetNumberOfRoads(int32_t v) { mNumberOfRoads = v; }
52 GPUd() int32_t NumberOfRoads() { return mNumberOfRoads; }
53 GPUd() GPUITSTrack* tracks()
54 {
55 return mTracks;
56 }
57 GPUd() GPUAtomic(uint32_t) & NumberOfTracks()
58 {
59 return mMemory->mNumberOfTracks;
60 }
61 GPUd() void SetNumberOfLayers(int32_t i) { mNumberOfLayers = i; }
62 GPUd() int32_t NumberOfLayers() { return mNumberOfLayers; }
63 GPUd() void SetNumberTF(int32_t i, int32_t v) { mNTF[i] = v; }
64 GPUd() o2::its::TrackingFrameInfo** trackingFrame()
65 {
66 return mTF;
67 }
68 GPUd() const o2::its::Cluster** clusters()
69 {
70 return mClusterPtrs;
71 }
72 GPUd() const o2::its::Cell** cells()
73 {
74 return mCellPtrs;
75 }
76
77 void clearMemory();
78
79 struct Memory {
80 GPUAtomic(uint32_t) mNumberOfTracks = 0;
81 };
82
83 protected:
85 int32_t mNumberOfRoads = 0;
86 int32_t mNMaxTracks = 0;
87 int32_t* mNTF = nullptr;
88 Memory* mMemory = nullptr;
90 o2::its::TrackingFrameInfo** mTF = {nullptr};
91 GPUITSTrack* mTracks = nullptr;
92
95
96 int16_t mMemoryResInput = -1;
97 int16_t mMemoryResTracks = -1;
98 int16_t mMemoryResMemory = -1;
99};
100} // namespace o2::gpu
101
102#endif
int32_t i
#define GPUAtomic(type)
GPUd() int32_t NumberOfLayers()
void * SetPointersTracks(void *mem)
GPUd() GPUITSTrack *tracks()
GPUd() void SetNumberTF(int32_t i
GPUd() GPUAtomic(uint32_t) &NumberOfTracks()
GPUd() void SetNumberOfRoads(int32_t v)
void * SetPointersInput(void *mem)
o2::its::Road< 5 > * mRoads
GPUITSTrack * mTracks
void * SetPointersMemory(void *mem)
const o2::its::Cluster ** mClusterPtrs
const o2::its::Cell ** mCellPtrs
void SetMaxData(const GPUTrackingInOutPointers &io)
GPUd() void SetNumberOfLayers(int32_t i)
o2::its::TrackingFrameInfo ** mTF
GPUd() int32_t NumberOfRoads()
HMPID cluster implementation.
Definition Cluster.h:27
const GLdouble * v
Definition glcorearb.h:832
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
GPUAtomic(uint32_t) mNumberOfTracks=0
std::vector< Cluster > clusters
std::vector< Cell > cells