forked from AliceO2Group/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathGPUO2InterfaceDisplay.cxx
More file actions
92 lines (82 loc) · 2.9 KB
/
GPUO2InterfaceDisplay.cxx
File metadata and controls
92 lines (82 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
/// \file GPUO2InterfaceDisplay.cxx
/// \author David Rohr
#include "GPUParam.h"
#include "display/GPUDisplayInterface.h"
#include "GPUQA.h"
#include "GPUO2InterfaceConfiguration.h"
#include "GPUO2InterfaceDisplay.h"
#include <unistd.h>
using namespace o2::gpu;
using namespace o2::tpc;
GPUO2InterfaceDisplay::GPUO2InterfaceDisplay(const GPUO2InterfaceConfiguration* config)
{
mConfig.reset(new GPUO2InterfaceConfiguration(*config));
mFrontend.reset(GPUDisplayFrontendInterface::getFrontend(mConfig->configDisplay.displayFrontend.c_str()));
mConfig->configProcessing.eventDisplay = mFrontend.get();
mConfig->configDisplay.showTPCTracksFromO2Format = true;
mParam.reset(new GPUParam);
mParam->SetDefaults(&config->configGRP, &config->configReconstruction, &config->configProcessing, nullptr);
mParam->par.earlyTpcTransform = 0;
if (mConfig->configProcessing.runMC) {
mQA.reset(new GPUQA(nullptr, &config->configQA, mParam.get()));
mQA->InitO2MCData();
}
mDisplay.reset(GPUDisplayInterface::getDisplay(mFrontend.get(), nullptr, mQA.get(), mParam.get(), &mConfig->configCalib, &mConfig->configDisplay, &mConfig->configProcessing));
}
GPUO2InterfaceDisplay::~GPUO2InterfaceDisplay() = default;
int32_t GPUO2InterfaceDisplay::startDisplay()
{
int32_t retVal = mDisplay->StartDisplay();
if (retVal) {
return retVal;
}
mDisplay->WaitForNextEvent();
return 0;
}
int32_t GPUO2InterfaceDisplay::show(const GPUTrackingInOutPointers* ptrs)
{
std::unique_ptr<GPUTrackingInOutPointers> tmpPtr;
if (mConfig->configProcessing.runMC) {
tmpPtr = std::make_unique<GPUTrackingInOutPointers>(*ptrs);
mQA->InitO2MCData(tmpPtr.get());
ptrs = tmpPtr.get();
}
mDisplay->ShowNextEvent(ptrs);
do {
usleep(10000);
} while (mFrontend->getDisplayControl() == 0);
if (mFrontend->getDisplayControl() == 2) {
return 1;
}
mFrontend->setDisplayControl(0);
mDisplay->WaitForNextEvent();
return 0;
}
int32_t GPUO2InterfaceDisplay::endDisplay()
{
mFrontend->DisplayExit();
return 0;
}
void GPUO2InterfaceDisplay::UpdateCalib(const GPUCalibObjectsConst* calib)
{
mDisplay->UpdateCalib(calib);
}
void GPUO2InterfaceDisplay::UpdateGRP(const GPUSettingsGRP* grp)
{
mConfig->configGRP = *grp;
mParam->UpdateSettings(&mConfig->configGRP);
mDisplay->UpdateParam(mParam.get());
if (mConfig->configProcessing.runMC) {
mQA->UpdateParam(mParam.get());
}
}