Skip to content

Commit 3063b45

Browse files
authored
Merge branch 'AliceO2Group:dev' into fd3_digits
2 parents bc37575 + 231abca commit 3063b45

116 files changed

Lines changed: 6512 additions & 2351 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-tidy

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,42 @@
1+
---
2+
Checks:
3+
- -*
4+
- modernize-avoid-bind
5+
- modernize-deprecated-headers
6+
- modernize-make-shared
7+
- modernize-raw-string-literal
8+
- modernize-redundant-void-arg
9+
- modernize-replace-auto-ptr
10+
- modernize-replace-random-shuffle
11+
- modernize-shrink-to-fit
12+
- modernize-unary-static-assert
13+
- modernize-use-equals-default
14+
- modernize-use-noexcept
15+
- modernize-use-nullptr
16+
- modernize-use-override
17+
- modernize-use-transparent-functors
18+
- modernize-use-uncaught-exceptions
19+
- readability-braces-around-statements
20+
- -clang-diagnostic-vla-cxx-extension
121
CheckOptions:
2-
- key: CheckPathRegex
3-
value: '.*/O2/.*'
22+
# Naming conventions
23+
readability-identifier-naming.ClassCase: CamelCase
24+
readability-identifier-naming.ClassMemberPrefix: m
25+
readability-identifier-naming.ConceptCase: CamelCase
26+
readability-identifier-naming.ConstexprVariableCase: CamelCase
27+
readability-identifier-naming.EnumCase: CamelCase
28+
readability-identifier-naming.EnumConstantCase: CamelCase
29+
readability-identifier-naming.EnumConstantIgnoredRegexp: "^k?[A-Z][a-zA-Z0-9_]*$" # Allow "k" prefix and non-trailing underscores in PDG names.
30+
readability-identifier-naming.FunctionCase: camelBack
31+
readability-identifier-naming.MacroDefinitionCase: UPPER_CASE
32+
readability-identifier-naming.MacroDefinitionIgnoredRegexp: "^[A-Z][A-Z0-9_]*_$" # Allow the trailing underscore in header guards.
33+
readability-identifier-naming.MemberCase: camelBack
34+
readability-identifier-naming.NamespaceCase: lower_case
35+
readability-identifier-naming.ParameterCase: camelBack
36+
readability-identifier-naming.StructCase: CamelCase
37+
readability-identifier-naming.TemplateParameterCase: CamelCase
38+
readability-identifier-naming.TypeAliasCase: CamelCase
39+
readability-identifier-naming.TypedefCase: CamelCase
40+
readability-identifier-naming.TypeTemplateParameterCase: CamelCase
41+
readability-identifier-naming.VariableCase: camelBack
42+
...

Common/Utils/include/CommonUtils/NameConf.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ class NameConf : public o2::conf::ConfigurableParamHelper<NameConf>
100100
// CTF Dictionary
101101
static std::string getCTFDictFileName();
102102

103+
// O2 Raw TF Filename
104+
static std::string getRawTFFileName(uint32_t run, uint32_t orb, uint32_t id, const std::string& host, const std::string_view prefix = "o2_rawtf_dump");
105+
103106
// Default CCDB server
104107
static std::string getCCDBServer();
105108

Common/Utils/src/NameConf.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ std::string NameConf::getCTFFileName(uint32_t run, uint32_t orb, uint32_t id, co
9595
return o2::utils::Str::concat_string(prefix, '_', fmt::format("run{:08d}_orbit{:010d}_tf{:010d}_{}", run, orb, id, host), ".root");
9696
}
9797

98+
std::string NameConf::getRawTFFileName(uint32_t run, uint32_t orb, uint32_t id, const std::string& host, const std::string_view prefix)
99+
{
100+
return o2::utils::Str::concat_string(prefix, '_', fmt::format("run{:08d}_orbit{:010d}_tf{:010d}_{}", run, orb, id, host), ".tf");
101+
}
102+
98103
std::string NameConf::getCTFDictFileName()
99104
{
100105
return o2::utils::Str::concat_string(CTFDICT, ".root");

DataFormats/Detectors/TPC/include/DataFormatsTPC/CMV.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,13 @@ struct Data {
8585
return positive ? magnitude : -magnitude;
8686
}
8787

88-
// Encode from float: clamps magnitude to 15 bits, range ±255.992
88+
// Encode from float: truncates magnitude to 15 bits, range ±255.992
8989
void setCMVFloat(float value)
9090
{
9191
const bool positive = (value >= 0.f);
92-
const uint16_t magnitude = static_cast<uint16_t>(std::abs(value) * 128.f + 0.5f) & 0x7FFF;
92+
const uint16_t magnitude = static_cast<uint16_t>(
93+
std::lround(std::abs(value) * 128.f)) &
94+
0x7FFF;
9395
cmv = (positive ? 0x8000 : 0x0000) | magnitude;
9496
}
9597
};
@@ -119,4 +121,4 @@ struct Container {
119121

120122
} // namespace o2::tpc::cmv
121123

122-
#endif
124+
#endif

Detectors/CTF/workflow/src/CTFWriterSpec.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ size_t CTFWriterSpec::processDet(o2::framework::ProcessingContext& pc, DetID det
310310
if (det == DetID::ITS) {
311311
nLayers = mInput.doITSStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
312312
} else if (det == DetID::MFT) {
313-
nLayers = mInput.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
313+
nLayers = mInput.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::MFT>::getNLayers() : 1;
314314
}
315315
for (uint32_t iLayer = 0; iLayer < nLayers; iLayer++) {
316316
auto binding = getBinding(det.getName(), iLayer);
@@ -431,7 +431,7 @@ size_t CTFWriterSpec::estimateCTFSize(ProcessingContext& pc)
431431
if (det == DetID::ITS) {
432432
nLayers = mInput.doITSStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
433433
} else if (det == DetID::MFT) {
434-
nLayers = mInput.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
434+
nLayers = mInput.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::MFT>::getNLayers() : 1;
435435
}
436436
for (uint32_t iLayer = 0; iLayer < nLayers; iLayer++) {
437437
auto binding = getBinding(det.getName(), iLayer);
@@ -818,7 +818,7 @@ DataProcessorSpec getCTFWriterSpec(const o2::ctf::CTFWriterInp& inp)
818818
if (det == DetID::ITS) {
819819
nLayers = inp.doITSStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
820820
} else if (det == DetID::MFT) {
821-
nLayers = inp.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::ITS>::getNLayers() : 1;
821+
nLayers = inp.doMFTStaggering ? o2::itsmft::DPLAlpideParam<DetID::MFT>::getNLayers() : 1;
822822
}
823823
for (uint32_t iLayer = 0; iLayer < nLayers; iLayer++) {
824824
inputs.emplace_back(CTFWriterSpec::getBinding(det.getName(), iLayer), det.getDataOrigin(), "CTFDATA", iLayer, Lifetime::Timeframe);

Detectors/ITSMFT/ITS/tracking/GPU/ITStrackingGPU/TimeFrameGPU.h

Lines changed: 55 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ class TimeFrameGPU : public TimeFrame<NLayers>
3131
using typename TimeFrame<NLayers>::ROFOverlapTableN;
3232
using typename TimeFrame<NLayers>::ROFVertexLookupTableN;
3333
using typename TimeFrame<NLayers>::ROFMaskTableN;
34+
using typename TimeFrame<NLayers>::TrackingTopologyN;
3435
using typename TimeFrame<NLayers>::TrackSeedN;
36+
static constexpr int MaxTransitions = TrackingTopologyN::MaxTransitions;
37+
static constexpr int MaxCells = TrackingTopologyN::MaxCells;
38+
static constexpr int MaxStreams = MaxCells > NLayers ? MaxCells : NLayers;
3539

3640
public:
3741
TimeFrameGPU() = default;
@@ -42,30 +46,32 @@ class TimeFrameGPU : public TimeFrame<NLayers>
4246
void popMemoryStack(const int);
4347
void registerHostMemory(const int);
4448
void unregisterHostMemory(const int);
45-
void initialise(const int, const TrackingParameters&, const int);
46-
void loadIndexTableUtils(const int);
47-
void loadTrackingFrameInfoDevice(const int, const int);
48-
void createTrackingFrameInfoDeviceArray(const int);
49-
void loadUnsortedClustersDevice(const int, const int);
50-
void createUnsortedClustersDeviceArray(const int, const int = NLayers);
51-
void loadClustersDevice(const int, const int);
52-
void createClustersDeviceArray(const int, const int = NLayers);
53-
void loadClustersIndexTables(const int, const int);
54-
void createClustersIndexTablesArray(const int);
55-
void createUsedClustersDevice(const int, const int);
56-
void createUsedClustersDeviceArray(const int, const int = NLayers);
49+
void initialise(const TrackingParameters&, int maxLayers);
50+
void initialise(const TrackingParameters&, int maxLayers, int iteration);
51+
void loadIndexTableUtils();
52+
void loadTrackingTopologies();
53+
void loadTrackingFrameInfoDevice(const int);
54+
void createTrackingFrameInfoDeviceArray();
55+
void loadUnsortedClustersDevice(const int);
56+
void createUnsortedClustersDeviceArray(const int = NLayers);
57+
void loadClustersDevice(const int);
58+
void createClustersDeviceArray(const int = NLayers);
59+
void loadClustersIndexTables(const int);
60+
void createClustersIndexTablesArray();
61+
void createUsedClustersDevice(const int);
62+
void createUsedClustersDeviceArray(const int = NLayers);
5763
void loadUsedClustersDevice();
58-
void loadROFrameClustersDevice(const int, const int);
59-
void createROFrameClustersDeviceArray(const int);
64+
void loadROFrameClustersDevice(const int);
65+
void createROFrameClustersDeviceArray();
6066
void loadROFCutMask(const int);
61-
void loadVertices(const int);
62-
void loadROFOverlapTable(const int);
63-
void loadROFVertexLookupTable(const int);
64-
void updateROFVertexLookupTable(const int);
67+
void loadVertices();
68+
void loadROFOverlapTable();
69+
void loadROFVertexLookupTable();
70+
void updateROFVertexLookupTable();
6571

6672
///
67-
void createTrackletsLUTDevice(const int, const int);
68-
void createTrackletsLUTDeviceArray(const int);
73+
void createTrackletsLUTDevice(bool, const int);
74+
void createTrackletsLUTDeviceArray();
6975
void loadTrackletsDevice();
7076
void loadTrackletsLUTDevice();
7177
void loadCellsDevice();
@@ -74,18 +80,18 @@ class TimeFrameGPU : public TimeFrame<NLayers>
7480
void loadTrackSeedsChi2Device();
7581
void loadTrackSeedsDevice(bounded_vector<TrackSeedN>&);
7682
void createTrackletsBuffers(const int);
77-
void createTrackletsBuffersArray(const int);
83+
void createTrackletsBuffersArray();
7884
void createCellsBuffers(const int);
79-
void createCellsBuffersArray(const int);
85+
void createCellsBuffersArray();
8086
void createCellsDevice();
8187
void createCellsLUTDevice(const int);
82-
void createCellsLUTDeviceArray(const int);
88+
void createCellsLUTDeviceArray();
8389
void createNeighboursIndexTablesDevice(const int);
8490
void createNeighboursDevice(const unsigned int layer);
8591
void createNeighboursLUTDevice(const int, const unsigned int);
8692
void createTrackITSExtDevice(const size_t);
8793
void downloadTrackITSExtDevice();
88-
void downloadCellsNeighboursDevice(std::vector<bounded_vector<std::pair<int, int>>>&, const int);
94+
void downloadCellsNeighboursDevice(std::vector<bounded_vector<CellNeighbour>>&, const int);
8995
void downloadNeighboursLUTDevice(bounded_vector<int>&, const int);
9096
void downloadCellsDevice();
9197
void downloadCellsLUTDevice();
@@ -109,6 +115,7 @@ class TimeFrameGPU : public TimeFrame<NLayers>
109115
const auto getDeviceROFOverlapTableView() { return mDeviceROFOverlapTableView; }
110116
const auto getDeviceROFVertexLookupTableView() { return mDeviceROFVertexLookupTableView; }
111117
const auto getDeviceROFMaskTableView() { return mDeviceROFMaskTableView; }
118+
const auto getDeviceTrackingTopologyView() const { return mDeviceTrackingTopologyView; }
112119
int* getDeviceROFramesClusters(const int layer) { return mROFramesClustersDevice[layer]; }
113120
auto& getTrackITSExt() { return mTrackITSExt; }
114121
Vertex* getDeviceVertices() { return mPrimaryVerticesDevice; }
@@ -120,10 +127,9 @@ class TimeFrameGPU : public TimeFrame<NLayers>
120127
TrackITSExt* getDeviceTrackITSExt() { return mTrackITSExtDevice; }
121128
int* getDeviceNeighboursLUT(const int layer) { return mNeighboursLUTDevice[layer]; }
122129
gsl::span<int*> getDeviceNeighboursLUTs() { return mNeighboursLUTDevice; }
123-
gpuPair<int, int>* getDeviceNeighbourPairs(const int layer) { return mNeighbourPairsDevice[layer]; }
124-
std::array<int*, NLayers - 2>& getDeviceNeighboursAll() { return mNeighboursDevice; }
125-
int* getDeviceNeighbours(const int layer) { return mNeighboursDevice[layer]; }
126-
int** getDeviceNeighboursArray() { return mNeighboursDevice.data(); }
130+
CellNeighbour** getDeviceArrayNeighbours() { return mNeighboursDeviceArray; }
131+
std::array<CellNeighbour*, MaxCells>& getDeviceNeighboursAll() { return mNeighboursDevice; }
132+
CellNeighbour* getDeviceNeighbours(const int layer) { return mNeighboursDevice[layer]; }
127133
TrackingFrameInfo* getDeviceTrackingFrameInfo(const int);
128134
const TrackingFrameInfo** getDeviceArrayTrackingFrameInfo() const { return mTrackingFrameInfoDeviceArray; }
129135
const Cluster** getDeviceArrayClusters() const { return mClustersDeviceArray; }
@@ -147,10 +153,10 @@ class TimeFrameGPU : public TimeFrame<NLayers>
147153
void setDevicePropagator(const o2::base::PropagatorImpl<float>* p) final { this->mPropagatorDevice = p; }
148154

149155
// Host-specific getters
150-
gsl::span<int, NLayers - 1> getNTracklets() { return mNTracklets; }
151-
gsl::span<int, NLayers - 2> getNCells() { return mNCells; }
156+
gsl::span<int> getNTracklets() { return {mNTracklets.data(), static_cast<gsl::span<int>::size_type>(this->mTrackingTopologyView.nTransitions)}; }
157+
gsl::span<int> getNCells() { return {mNCells.data(), static_cast<gsl::span<int>::size_type>(this->mTrackingTopologyView.nCells)}; }
152158
auto& getArrayNCells() { return mNCells; }
153-
gsl::span<int, NLayers - 3> getNNeighbours() { return mNNeighbours; }
159+
gsl::span<int> getNNeighbours() { return {mNNeighbours.data(), static_cast<gsl::span<int>::size_type>(this->mTrackingTopologyView.nCells)}; }
154160
auto& getArrayNNeighbours() { return mNNeighbours; }
155161

156162
// Host-available device getters
@@ -169,16 +175,18 @@ class TimeFrameGPU : public TimeFrame<NLayers>
169175
void allocMem(void**, size_t, bool, int32_t = o2::gpu::GPUMemoryResource::MEMORY_GPU); // Abstract owned and unowned memory allocations on default stream
170176

171177
// Host-available device buffer sizes
172-
std::array<int, NLayers - 1> mNTracklets;
173-
std::array<int, NLayers - 2> mNCells;
174-
std::array<int, NLayers - 3> mNNeighbours;
178+
std::array<int, MaxTransitions> mNTracklets{};
179+
std::array<int, MaxCells> mNCells{};
180+
std::array<int, MaxCells> mNNeighbours{};
175181

176182
// Device pointers
177183
IndexTableUtilsN* mIndexTableUtilsDevice;
178184
// device navigation views
179185
ROFOverlapTableN::View mDeviceROFOverlapTableView;
180186
ROFVertexLookupTableN::View mDeviceROFVertexLookupTableView;
181187
ROFMaskTableN::View mDeviceROFMaskTableView;
188+
std::vector<typename TrackingTopologyN::View> mDeviceTrackerTopologyViews;
189+
typename TrackingTopologyN::View mDeviceTrackingTopologyView;
182190

183191
// Hybrid pref
184192
Vertex* mPrimaryVerticesDevice;
@@ -193,30 +201,29 @@ class TimeFrameGPU : public TimeFrame<NLayers>
193201
const int** mClustersIndexTablesDeviceArray;
194202
uint8_t** mUsedClustersDeviceArray;
195203
const int** mROFramesClustersDeviceArray;
196-
std::array<Tracklet*, NLayers - 1> mTrackletsDevice;
197-
std::array<int*, NLayers - 1> mTrackletsLUTDevice;
198-
std::array<int*, NLayers - 2> mCellsLUTDevice;
199-
std::array<int*, NLayers - 3> mNeighboursLUTDevice;
204+
std::array<Tracklet*, MaxTransitions> mTrackletsDevice{};
205+
std::array<int*, MaxTransitions> mTrackletsLUTDevice{};
206+
std::array<int*, MaxCells> mCellsLUTDevice{};
207+
std::array<int*, MaxCells> mNeighboursLUTDevice{};
200208

201209
Tracklet** mTrackletsDeviceArray{nullptr};
202210
int** mCellsLUTDeviceArray{nullptr};
203-
int** mNeighboursCellDeviceArray{nullptr};
204211
int** mNeighboursCellLUTDeviceArray{nullptr};
205212
int** mTrackletsLUTDeviceArray{nullptr};
206-
std::array<CellSeed*, NLayers - 2> mCellsDevice;
213+
std::array<CellSeed*, MaxCells> mCellsDevice{};
207214
CellSeed** mCellsDeviceArray;
208-
std::array<int*, NLayers - 3> mNeighboursIndexTablesDevice;
215+
std::array<int*, MaxCells> mNeighboursIndexTablesDevice{};
209216
TrackSeedN* mTrackSeedsDevice{nullptr};
210217
int* mTrackSeedsLUTDevice{nullptr};
211218
unsigned int mNTracks{0};
212-
std::array<o2::track::TrackParCovF*, NLayers - 2> mCellSeedsDevice;
219+
std::array<o2::track::TrackParCovF*, MaxCells> mCellSeedsDevice{};
213220
o2::track::TrackParCovF** mCellSeedsDeviceArray;
214-
std::array<float*, NLayers - 2> mCellSeedsChi2Device;
221+
std::array<float*, MaxCells> mCellSeedsChi2Device{};
215222
float** mCellSeedsChi2DeviceArray;
216223

217224
TrackITSExt* mTrackITSExtDevice;
218-
std::array<gpuPair<int, int>*, NLayers - 2> mNeighbourPairsDevice;
219-
std::array<int*, NLayers - 2> mNeighboursDevice;
225+
std::array<CellNeighbour*, MaxCells> mNeighboursDevice{};
226+
CellNeighbour** mNeighboursDeviceArray{nullptr};
220227
std::array<TrackingFrameInfo*, NLayers> mTrackingFrameInfoDevice;
221228
const TrackingFrameInfo** mTrackingFrameInfoDeviceArray;
222229

@@ -245,19 +252,19 @@ inline std::vector<unsigned int> TimeFrameGPU<NLayers>::getClusterSizes()
245252
template <int NLayers>
246253
inline size_t TimeFrameGPU<NLayers>::getNumberOfTracklets() const
247254
{
248-
return std::accumulate(mNTracklets.begin(), mNTracklets.end(), 0);
255+
return std::accumulate(mNTracklets.begin(), mNTracklets.begin() + this->mTrackingTopologyView.nTransitions, 0);
249256
}
250257

251258
template <int NLayers>
252259
inline size_t TimeFrameGPU<NLayers>::getNumberOfCells() const
253260
{
254-
return std::accumulate(mNCells.begin(), mNCells.end(), 0);
261+
return std::accumulate(mNCells.begin(), mNCells.begin() + this->mTrackingTopologyView.nCells, 0);
255262
}
256263

257264
template <int NLayers>
258265
inline size_t TimeFrameGPU<NLayers>::getNumberOfNeighbours() const
259266
{
260-
return std::accumulate(mNNeighbours.begin(), mNNeighbours.end(), 0);
267+
return std::accumulate(mNNeighbours.begin(), mNNeighbours.begin() + this->mTrackingTopologyView.nCells, 0);
261268
}
262269

263270
} // namespace o2::its::gpu

0 commit comments

Comments
 (0)