forked from mcoquet642/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGPUO2InterfaceDisplay.cxx
More file actions
75 lines (67 loc) · 2.35 KB
/
GPUO2InterfaceDisplay.cxx
File metadata and controls
75 lines (67 loc) · 2.35 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
// 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 "GPUDisplay.h"
#include "GPUQA.h"
#include "GPUO2InterfaceConfiguration.h"
#include "GPUO2InterfaceDisplay.h"
#include "GPUDisplayBackend.h"
#include "GPUDisplayBackendGlfw.h"
#include <unistd.h>
using namespace o2::gpu;
using namespace o2::tpc;
GPUO2InterfaceDisplay::GPUO2InterfaceDisplay(const GPUO2InterfaceConfiguration* config)
{
mConfig.reset(new GPUO2InterfaceConfiguration(*config));
mBackend.reset(new GPUDisplayBackendGlfw);
mConfig->configProcessing.eventDisplay = mBackend.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(new GPUDisplay(mBackend.get(), nullptr, nullptr, mParam.get(), &mConfig->configCalib, &mConfig->configDisplay));
}
GPUO2InterfaceDisplay::~GPUO2InterfaceDisplay() = default;
int GPUO2InterfaceDisplay::startDisplay()
{
int retVal = mDisplay->StartDisplay();
if (retVal) {
return retVal;
}
mDisplay->WaitForNextEvent();
return 0;
}
int 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 (mBackend->mDisplayControl == 0);
mDisplay->WaitForNextEvent();
return 0;
}
int GPUO2InterfaceDisplay::endDisplay()
{
mBackend->DisplayExit();
return 0;
}