Project
Loading...
Searching...
No Matches
testGPUCATracking.cxx
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
15
16#define BOOST_TEST_MODULE Test TPC CATracking
17#define BOOST_TEST_MAIN
18#define BOOST_TEST_DYN_LINK
19#include <boost/test/unit_test.hpp>
26
28#include "TPCFastTransform.h"
29#include "GPUO2Interface.h"
30#include "GPUO2InterfaceUtils.h"
32#include "TPCPadGainCalib.h"
33#include "CalibdEdxContainer.h"
34
35using namespace o2::gpu;
36
37#include <vector>
38#include <iostream>
39#include <iomanip>
40
41using namespace o2::dataformats;
42
43namespace o2
44{
45namespace tpc
46{
47
49BOOST_AUTO_TEST_CASE(CATracking_test1)
50{
51 GPUO2Interface tracker;
52
53 float solenoidBz = -5.00668; //B-field
54 float refX = 1000.; //transport tracks to this x after tracking, >500 for disabling
55 bool continuous = false; //time frame data v.s. triggered events
56
58 config.configDeviceBackend.deviceType = GPUDataTypes::DeviceType::CPU;
60
61 config.configProcessing.ompThreads = 4; //4 threads if we run on the CPU, 1 = default, 0 = auto-detect
62 config.configProcessing.runQA = false; //Run QA after tracking
63 config.configProcessing.eventDisplay = nullptr; //Ptr to event display backend, for running standalone OpenGL event display
64
65 config.configGRP.solenoidBzNominalGPU = solenoidBz;
66 config.configGRP.grpContinuousMaxTimeBin = continuous ? GPUSettings::TPC_MAX_TF_TIME_BIN : 0; // Number of timebins in timeframe if continuous, 0 otherwise
67
68 config.configReconstruction.tpc.nWays = 3; //Should always be 3!
69 config.configReconstruction.tpc.nWaysOuter = true; //Will create outer param for TRD
70 config.configReconstruction.tpc.searchWindowDZDR = 2.5f; //Should always be 2.5 for looper-finding and/or continuous tracking
71 config.configReconstruction.tpc.trackReferenceX = refX;
72
73 config.configWorkflow.steps.set(GPUDataTypes::RecoStep::TPCConversion, GPUDataTypes::RecoStep::TPCSectorTracking,
74 GPUDataTypes::RecoStep::TPCMerging, GPUDataTypes::RecoStep::TPCCompression, GPUDataTypes::RecoStep::TPCdEdx);
75 config.configWorkflow.inputs.set(GPUDataTypes::InOutType::TPCClusters);
76 config.configWorkflow.outputs.set(GPUDataTypes::InOutType::TPCMergedTracks);
77
78 std::unique_ptr<TPCFastTransform> fastTransform(TPCFastTransformHelperO2::instance()->create(0));
79 std::unique_ptr<CorrectionMapsHelper> fastTransformHelper(new CorrectionMapsHelper());
80 fastTransformHelper->setCorrMap(fastTransform.get());
81 config.configCalib.fastTransform = fastTransform.get();
82 config.configCalib.fastTransformHelper = fastTransformHelper.get();
83 auto dEdxCalibContainer = GPUO2InterfaceUtils::getCalibdEdxContainerDefault();
84 config.configCalib.dEdxCalibContainer = dEdxCalibContainer.get();
85 std::unique_ptr<TPCPadGainCalib> gainCalib = GPUO2InterfaceUtils::getPadGainCalibDefault();
86 config.configCalib.tpcPadGain = gainCalib.get();
87
88 tracker.Initialize(config);
89 std::vector<ClusterNativeContainer> cont(constants::MAXGLOBALPADROW);
90
91 for (int i = 0; i < constants::MAXGLOBALPADROW; i++) {
92 cont[i].sector = 0;
93 cont[i].globalPadRow = i;
94 cont[i].clusters.resize(1);
95 cont[i].clusters[0].setTimeFlags(2, 0);
96 cont[i].clusters[0].setPad(0);
97 cont[i].clusters[0].setSigmaTime(1);
98 cont[i].clusters[0].setSigmaPad(1);
99 cont[i].clusters[0].qMax = 10;
100 cont[i].clusters[0].qTot = 50;
101 }
102 std::unique_ptr<ClusterNative[]> clusterBuffer;
103 std::unique_ptr<ClusterNativeAccess> clusters = ClusterNativeHelper::createClusterNativeIndex(clusterBuffer, cont, nullptr, nullptr);
104
106 ptrs.clustersNative = clusters.get();
107
108 int retVal = tracker.RunTracking(&ptrs);
110 BOOST_CHECK_EQUAL((int)ptrs.nMergedTracks, 1);
111}
112} // namespace tpc
113} // namespace o2
Definition of container class for dE/dx corrections.
Helper class to read the binary format of TPC ClusterNative.
Class of a TPC cluster in TPC-native coordinates (row, time)
Helper class to access correction maps.
Helper class for memory management of TPC Data Formats, external from the actual data type classes to...
int32_t i
int32_t retVal
class to create TPC fast transformation
Definition of TPCFastTransform class.
void set(S v)
Definition bitfield.h:59
static std::unique_ptr< TPCPadGainCalib > getPadGainCalibDefault()
static std::unique_ptr< o2::tpc::CalibdEdxContainer > getCalibdEdxContainerDefault()
int32_t Initialize(const GPUO2InterfaceConfiguration &config)
int32_t RunTracking(GPUTrackingInOutPointers *data, GPUInterfaceOutputs *outputs=nullptr, uint32_t iThread=0, GPUInterfaceInputUpdate *inputUpdateCallback=nullptr)
static constexpr const uint32_t TPC_MAX_TF_TIME_BIN
Definition GPUSettings.h:47
static std::unique_ptr< ClusterNativeAccess > createClusterNativeIndex(std::unique_ptr< ClusterNative[]> &buffer, std::vector< ClusterNativeContainer > &clusters, MCLabelContainer *bufferMC=nullptr, std::vector< MCLabelContainer > *mcTruth=nullptr)
static TPCFastTransformHelperO2 * instance()
Singleton.
Definition of a container to keep/associate and arbitrary number of labels associated to an index wit...
constexpr int MAXGLOBALPADROW
Definition Constants.h:34
BOOST_AUTO_TEST_CASE(ClusterHardware_test1)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
S< o2::tpc::CalibdEdxContainer >::type * dEdxCalibContainer
S< TPCFastTransform >::type * fastTransform
S< TPCPadGainCalib >::type * tpcPadGain
S< CorrectionMapsHelper >::type * fastTransformHelper
GPUDataTypes::InOutTypeField outputs
GPUDataTypes::RecoStepField steps
GPUDataTypes::InOutTypeField inputs
const o2::tpc::ClusterNativeAccess * clustersNative
std::vector< Cluster > clusters
BOOST_CHECK_EQUAL(triggersD.size(), triggers.size())