Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
677c5a0
GPU: remove obsolete config code
davidrohr Oct 16, 2026
0083813
GPU Display: Fix FPE with display width = 0, e.g. with none backend
davidrohr Oct 22, 2026
e6c1431
GPU: Possibility to generate run time type information about config s…
davidrohr Oct 16, 2026
891fcb5
GPU Display: Reorganize frontend to have GPUSettingsFrontendConfig.cx…
davidrohr Oct 16, 2026
9dfde9d
GPU Display Frontend: move key binding constants to separate header
davidrohr Oct 24, 2026
07ea796
GPU Display: Build config RTTI Structs
davidrohr Oct 22, 2026
681ce03
GPU Display: Remove mKeysShifted helper array
davidrohr Oct 24, 2026
43fd542
GPU Display: Assemble all variables controlling the display in a cont…
davidrohr Oct 25, 2026
b235c0f
GPU Display: Add option to list configuration bindings for keyboard a…
davidrohr Oct 24, 2026
c263c60
GPU Display Frontend: move key handling to RTTI callbacks instead of …
davidrohr Oct 24, 2026
6bf6636
GPU Display Frontend: Add a map for key down actions, and assign keys…
davidrohr Oct 27, 2026
adc47c2
GPU Display: Switch help-text to auto-generated help text from key bi…
davidrohr Oct 27, 2026
eadd4a0
GPU Display: Info messages per configuration value, not per key, so t…
davidrohr Oct 27, 2026
b001c93
GPU Display: Unify calling DrawGLScene and handling of events
davidrohr Oct 27, 2026
82cd839
GPU Display: Clean up full screen / maximized setting, make them idem…
davidrohr Oct 28, 2026
0be70e3
GPU Display: Cleanup: check for config changes only once
davidrohr Oct 28, 2026
044d502
GPU Display backend glut: support maximizing the window
davidrohr Oct 28, 2026
8e6bab8
GPU Display: Modernize GLUT backend: Use callbacks with user-data for…
davidrohr Oct 28, 2026
4792696
GPU Display Frontend: Use condition_variable to signal stop and confi…
davidrohr Oct 29, 2026
ec24505
GPU Wayland Display: Fix handling of F keys
davidrohr Oct 29, 2026
7202794
GPU Display: Drop / implement some simple TODOs
davidrohr Oct 29, 2026
09d4064
GPU Display: Fix creating unrequested screenshot, when enabling savin…
davidrohr Oct 29, 2026
6b46c77
GPU Display Frontend: auto-generate info message for key-press if non…
davidrohr Oct 29, 2026
3629a2d
GPU Display: Order key bindings for better grouping in the help text
davidrohr Oct 29, 2026
a571628
GPU Display: Drop obsolete compat profile for OpenGL
davidrohr Oct 31, 2026
b35ec2a
GPU Display: Wrap lines of help text if they do not fit on screen
davidrohr Oct 31, 2026
20fe020
GPU Display: Fix do not exit on arrow key presses in the console
davidrohr Nov 3, 2026
73dcdd6
GPU Display Qt GUI: Add proper passing of frames with config elements…
davidrohr Oct 29, 2026
3afbc90
GPU Display GUI: Get rid of Qt ui file, since all elements are create…
davidrohr Nov 4, 2026
b42533c
GPU: Can load GPUSettingsList.h - like structs from multiple files
davidrohr Nov 4, 2026
9d04d1d
GPU Config: Clean up header guards
davidrohr Nov 6, 2026
be26f4c
GPU: Fix missing newline in RTC param code
davidrohr Nov 6, 2026
07d4168
GPU: Improve settings handling and make GPUDisplayControl a qconfig G…
davidrohr Nov 6, 2026
6c8335b
GPU Display Frontend: Use RTTI for configuring GPUDisplayControl
davidrohr Nov 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions GPU/GPUTracking/Base/GPUParam.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "GPUCommonDef.h"
#include "GPUCommonMath.h"
#include "GPUDef.h"
#define GPUSETTINGS_PARAM
#include "GPUSettings.h"
#include "GPUTPCGMPolynomialField.h"
#include "DataFormatsTPC/Constants.h"
Expand Down
2 changes: 2 additions & 0 deletions GPU/GPUTracking/Base/GPUParamRTC.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
#define GPUPARAMRTC_H

#include "GPUParam.h"
#define GPUSETTINGS_ALL
#include "GPUSettings.h"
#include <string>

namespace o2::gpu
Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ set(SRCS_DATATYPES DataTypes/GPUDataTypesConfig.cxx DataTypes/GPUConfigDump.cxx

set(HDRS_CINT_O2 Merger/GPUTPCGMTrackParam.h Merger/GPUTPCGMMergedTrack.h Merger/GPUTPCGMSectorTrack.h Merger/GPUTPCGMBorderTrack.h TRDTracking/GPUTRDInterfaces.h)
set(HDRS_CINT_DATATYPES DataTypes/GPUTPCGMMergedTrackHit.h)
set(HDRS_CINT_O2_ADDITIONAL DataTypes/GPUSettings.h Definitions/GPUSettingsList.h DataTypes/GPUDataTypesIO.h DataTypes/GPUDataTypesConfig.h DataTypes/GPUDataTypesQA.h DataTypes/GPUTRDTrack.h DataTypes/GPUTRDRecoParam.h DataTypes/CalibdEdxTrackTopologyPol.h DataTypes/CalibdEdxTrackTopologySpline.h) # Manual dependencies for ROOT dictionary generation
set(HDRS_CINT_O2_ADDITIONAL DataTypes/GPUSettings.h DataTypes/GPUSettingsTypes.h Definitions/GPUSettingsList.h DataTypes/GPUDataTypesIO.h DataTypes/GPUDataTypesConfig.h DataTypes/GPUDataTypesQA.h DataTypes/GPUTRDTrack.h DataTypes/GPUTRDRecoParam.h DataTypes/CalibdEdxTrackTopologyPol.h DataTypes/CalibdEdxTrackTopologySpline.h) # Manual dependencies for ROOT dictionary generation

set(SRCS_NO_CINT
DataTypes/GPUMemorySizeScalers.cxx
Expand Down
6 changes: 2 additions & 4 deletions GPU/GPUTracking/DataTypes/GPUConfigDump.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include "GPUConfigDump.h"
#include "GPUDataTypesIO.h"
#define GPUSETTINGS_ALL
#include "GPUSettings.h"

#include <functional>
Expand All @@ -27,10 +28,7 @@ using namespace o2::gpu;
namespace
{
GPUSettingsStandalone configStandalone;
std::vector<std::function<void()>> qprint_global;
#define QCONFIG_PRINT
#include "utils/qconfig_internal.h"
#undef QCONFIG_PRINT
#include "utils/qconfig_print.inc"
} // namespace

void GPUConfigDump::dumpConfig(const GPUSettingsRec* rec, const GPUSettingsProcessing* proc, const GPUSettingsQA* qa, const GPUSettingsDisplay* display, const GPUSettingsDeviceBackend* device, const GPURecoStepConfiguration* workflow)
Expand Down
66 changes: 2 additions & 64 deletions GPU/GPUTracking/DataTypes/GPUSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,76 +16,14 @@
#define GPUSETTINGS_H

#include "GPUCommonDef.h"
#include "GPUDataTypesConfig.h"
#include "GPUTPCGMMergedTrackHit.h"
#ifndef GPUCA_GPUCODE_DEVICE
#include <vector>
#include <string>
#endif

namespace o2::gpu
{
class GPUDisplayFrontendInterface;
class GPUReconstruction;

class GPUSettings
{
public:
enum CompressionModes { CompressionTruncate = 1,
CompressionDifferences = 2,
CompressionTrackModel = 4,
CompressionFull = 7 };
enum CompressionSort { SortTime = 0,
SortPad = 1,
SortZTimePad = 2,
SortZPadTime = 3,
SortNoSort = 4 };
enum CompressionRejection { RejectionNone = 0,
RejectionStrategyA = 1,
RejectionStrategyB = 2 };

static GPUglobalconstexpr() const uint32_t TPC_MAX_TF_TIME_BIN = ((256 * 3564 + 2 * 8 - 2) / 8);
};

// Settings describing the global run parameters
struct GPUSettingsGRP {
// All new members must be sizeof(int32_t) resp. sizeof(float) for alignment reasons!, default value for newly added members for old data will be 0.
float solenoidBzNominalGPU = -5.00668f; // solenoid field strength
int32_t constBz = 0; // for test-MC events with constant Bz
int32_t removed0 = 0; // Obsolete parameter, dummy value needed to support reading old dumps
int32_t grpContinuousMaxTimeBin = -2; // 0 for triggered events, -1 for automatic setting, -2 invalid default
int32_t needsClusterer = 0; // Set to true if the data requires the clusterizer
int32_t doCompClusterDecode = 0; // Set to true if the data contains compressed TPC clusters
int32_t tpcCutTimeBin = 0; // Cut TPC clusters and digits >= this cut
};

// Parameters of the current time frame
struct GPUSettingsTF {
int32_t hasTfStartOrbit = 0;
int32_t tfStartOrbit = 0;
int32_t hasRunStartOrbit = 0;
int32_t runStartOrbit = 0;
int32_t hasSimStartOrbit = 0;
int32_t simStartOrbit = 0;
int32_t hasNHBFPerTF = 0;
int32_t nHBFPerTF = 0;
};

// Settings defining the setup of the GPUReconstruction processing (basically selecting the device / class instance)
struct GPUSettingsDeviceBackend {
uint32_t deviceType = gpudatatypes::DeviceType::CPU; // Device type, shall use gpudatatypes::DEVICE_TYPE constants, e.g. CPU / CUDA
uint8_t forceDeviceType = 1; // Fail if device initialization fails, otherwise falls back to CPU
GPUReconstruction* master = nullptr; // GPUReconstruction master object
};

} // namespace o2::gpu
#endif // GPUSETTINGS_H

// Outside of header guard, since might run it multiple times for different config structs
#ifdef GPUCA_GPUCODE_DEVICE
#define QCONFIG_GPU
#endif
// See GPUSettingsList.h for a list of all available settings of GPU Reconstruction
#ifndef GPUCA_GPUCODE_GENRTC
#include "utils/qconfig.h"
#endif

#endif
23 changes: 23 additions & 0 deletions GPU/GPUTracking/DataTypes/GPUSettingsParam.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// 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 GPUSettingsParam.h
/// \author David Rohr

// clang-format off

// No include guard: included multiple times by qconfig with different macro definitions

// Derrived parameters used in GPUParam
BeginHiddenConfig(GPUSettingsParam, param)
AddVariableRTC(continuousTracking, int8_t, 0) // Continuous tracking, estimate bz and errors for abs(z) = 125cm during seeding
AddVariableRTC(dodEdx, int8_t, 0) // Do dEdx computation
EndConfig()
83 changes: 83 additions & 0 deletions GPU/GPUTracking/DataTypes/GPUSettingsTypes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// 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 GPUSettingsTypes.h
/// \author David Rohr

#ifndef GPUSETTINGSTYPES_H
#define GPUSETTINGSTYPES_H

#include "GPUCommonDef.h"
#include "GPUDataTypesConfig.h"
#include "GPUTPCGMMergedTrackHit.h"
#ifndef GPUCA_GPUCODE_DEVICE
#include <vector>
#include <string>
#endif

namespace o2::gpu
{
class GPUDisplayFrontendInterface;
class GPUReconstruction;

class GPUSettings
{
public:
enum CompressionModes { CompressionTruncate = 1,
CompressionDifferences = 2,
CompressionTrackModel = 4,
CompressionFull = 7 };
enum CompressionSort { SortTime = 0,
SortPad = 1,
SortZTimePad = 2,
SortZPadTime = 3,
SortNoSort = 4 };
enum CompressionRejection { RejectionNone = 0,
RejectionStrategyA = 1,
RejectionStrategyB = 2 };

static GPUglobalconstexpr() const uint32_t TPC_MAX_TF_TIME_BIN = ((256 * 3564 + 2 * 8 - 2) / 8);
};

// Settings describing the global run parameters
struct GPUSettingsGRP {
// All new members must be sizeof(int32_t) resp. sizeof(float) for alignment reasons!, default value for newly added members for old data will be 0.
float solenoidBzNominalGPU = -5.00668f; // solenoid field strength
int32_t constBz = 0; // for test-MC events with constant Bz
int32_t removed0 = 0; // Obsolete parameter, dummy value needed to support reading old dumps
int32_t grpContinuousMaxTimeBin = -2; // 0 for triggered events, -1 for automatic setting, -2 invalid default
int32_t needsClusterer = 0; // Set to true if the data requires the clusterizer
int32_t doCompClusterDecode = 0; // Set to true if the data contains compressed TPC clusters
int32_t tpcCutTimeBin = 0; // Cut TPC clusters and digits >= this cut
};

// Parameters of the current time frame
struct GPUSettingsTF {
int32_t hasTfStartOrbit = 0;
int32_t tfStartOrbit = 0;
int32_t hasRunStartOrbit = 0;
int32_t runStartOrbit = 0;
int32_t hasSimStartOrbit = 0;
int32_t simStartOrbit = 0;
int32_t hasNHBFPerTF = 0;
int32_t nHBFPerTF = 0;
};

// Settings defining the setup of the GPUReconstruction processing (basically selecting the device / class instance)
struct GPUSettingsDeviceBackend {
uint32_t deviceType = gpudatatypes::DeviceType::CPU; // Device type, shall use gpudatatypes::DEVICE_TYPE constants, e.g. CPU / CUDA
uint8_t forceDeviceType = 1; // Fail if device initialization fails, otherwise falls back to CPU
GPUReconstruction* master = nullptr; // GPUReconstruction master object
};

} // namespace o2::gpu

#endif // GPUSETTINGSTYPES_H
58 changes: 21 additions & 37 deletions GPU/GPUTracking/Definitions/GPUSettingsList.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,12 @@
// Create plain-C struct for GPU code.
// Create static constexpr with default values for GPU run time compilation

#include "GPUCommonDef.h"
#ifndef GPUSETTINGS_H
#error Please include GPUSettings.h!
#endif
#include "GPUSettingsTypes.h"

// clang-format off
#if (!defined(__CLING__) && !defined(G__DICTIONARY)) || defined(BeginSubConfig) // File should not be included without defining the macros, but rootcling will do for dictionary generation

#ifdef QCONFIG_INSTANCE
using namespace o2::gpu;
#endif
#ifdef BeginNamespace // File should not be included without defining the macros, but rootcling will do for dictionary generation
BeginNamespace(o2)
BeginNamespace(gpu)
// clang-format off
BeginNamespace(o2::gpu)

// Settings concerning the reconstruction, stored as parameters in GPU constant memory
// There must be no bool in here, use int8_t, as sizeof(bool) is compiler dependent and fails on GPUs!!!!!!
Expand Down Expand Up @@ -436,7 +429,7 @@ EndConfig()
#ifndef GPUCA_GPUCODE_DEVICE
// Light settings concerning the event display (can be changed without rebuilding vertices)
BeginSubConfig(GPUSettingsDisplayLight, light, configStandalone.display, "GLL", 'g', "Light OpenGL display settings", display_light)
AddOption(animationMode, int32_t, 0, "", 0, "")
AddOption(animationMode, int32_t, 0, "", 0, "", min(0), max(6))
AddOption(smoothPoints, bool, true, "", 0, "Apply smoothing to points")
AddOption(smoothLines, bool, false, "", 0, "Apply smoothing to lines")
AddOption(depthBuffer, bool, false, "", 0, "Enable Z-buffer")
Expand All @@ -449,19 +442,19 @@ AddOption(drawTracks, bool, false, "", 0, "Highlight sector tracks")
AddOption(drawExtrapolatedTracks, bool, false, "", 0, "Highlight global sector tracks prolonged into adjacent sector")
AddOption(drawFinal, bool, false, "", 0, "Highlight final tracks")
AddOption(excludeClusters, int32_t, 0, "", 0, "Exclude clusters from selected draw objects from display, (2 = exclude clusters but still show tracks)")
AddOption(drawSector, int32_t, -1, "", 0, "Show individual sector")
AddOption(drawSector, int32_t, -1, "", 0, "Show individual sector", min(-1), max(35))
AddOption(drawRelatedSectors, int32_t, 0, "", 0, "Show related sectors (if drawSector != -1)")
AddOption(drawGrid, int32_t, 0, "", 0, "Highlight grid")
AddOption(propagateTracks, int32_t, 0, "", 0, "Propagate final tracks further (inward / outward / show MC tracks)")
AddOption(showCollision, int32_t, -1, "", 0, "Show only individual collision")
AddOption(colorCollisions, int32_t, 0, "", 0, "Distinguish collisions in timeframe by color")
AddOption(colorClusters, int32_t, 1, "", 0, "Color clusters belonging to track objects")
AddOption(pointSize, float, 2.0f, "", 0, "Set point size")
AddOption(lineWidth, float, 1.4f, "", 0, "Set line width")
AddOption(pointSize, float, 2.0f, "", 0, "Set point size", min(0.8f), max(20.f))
AddOption(lineWidth, float, 1.4f, "", 0, "Set line width", min(0.4f), max(20.f))
AddOption(drawTPC, bool, true, "", 0, "Enable drawing TPC data")
AddOption(drawTRD, bool, true, "", 0, "Enabale drawing TRD data")
AddOption(drawTOF, bool, true, "", 0, "Enabale drawing TOF data")
AddOption(drawITS, bool, true, "", 0, "Enabale drawing ITS data")
AddOption(drawTRD, bool, true, "", 0, "Enable drawing TRD data")
AddOption(drawTOF, bool, true, "", 0, "Enable drawing TOF data")
AddOption(drawITS, bool, true, "", 0, "Enable drawing ITS data")
AddOption(drawField, bool, false, "", 0, "Enable drawing magnetic field")
AddOption(bFieldStepSize, float, 5.0f, "", 0, "Set field line step size")
AddOption(bFieldStepCount, int32_t, 100, "", 0, "Set field line step count")
Expand All @@ -477,7 +470,7 @@ AddOption(drawITSTracks, bool, true, "", 0, "Show tracks with ITS contribution")
AddOption(drawTRDTracks, bool, true, "", 0, "Show tracks with TRD contribution")
AddOption(drawTOFTracks, bool, true, "", 0, "Show tracks with TOF contribution")
AddOption(drawTracksAndFilter, bool, false, "", 0, "Use AND filter instead of OR filter for selecting tracks")
AddOption(propagateLoopers, bool, false, "", 0, "Enabale propagation of loopers")
AddOption(propagateLoopers, bool, false, "", 0, "Enable propagation of loopers")
AddOption(clustersOnly, bool, false, "", 0, "Visualize clusters only")
AddOption(clustersOnNominalRow, bool, false, "", 0, "Show clusters at nominal x of pad row for early-transformed data")
AddOption(separateExtrapolatedTracks, bool, false, "", 0, "Draw track segments propagated to adjacent sectors separately")
Expand All @@ -490,8 +483,7 @@ AddOption(hideRejectedTracks, int32_t, 1, "", 0, "Hide rejected tracks")
AddOption(hideUnmatchedClusters, int32_t, 0, "", 0, "Hide unmatched clusters")
AddOption(trackFilter, int32_t, 0, "", 0, "Apply filter on tracks to be displayed")
AddOption(projectXY, int32_t, 0, "", 0, "Project everything on the XY-plane")
AddOption(xAdd, float, 0, "", 0, "Separate sectors, increase X coordinate")
AddOption(zAdd, float, 0, "", 0, "Separate sides, increase Z coordinate")
AddOption(xzAdd, float, 0, "", 0, "Separate sectors, increase X coordinate", min(0.f), max(300.f))
AddHelp("help", 'h')
EndConfig()

Expand All @@ -502,15 +494,14 @@ AddOption(camYUp, bool, false, "", 0, "Orient the camera such that the y-axis is
AddOption(cameraMode, int32_t, 0, "", 0, "Camera mode")
AddOption(fullScreen, bool, false, "", 0, "Full Screen")
AddOption(maximized, bool, true, "", 0, "Maximized window")
AddOption(rendererCompatSmoothing, bool, false, "", 0, "Use compat smoothing (if available) instead of shader for smooth lines / points")
AddOption(drawQualityMSAA, int32_t, 0, "", 0, "MultiSample Anti Aliasing")
AddOption(drawQualityDownsampleFSAA, int32_t, 0, "", 0, "Downsampling Anti Aliasing")
AddOption(drawQualityMSAA, int32_t, 0, "", 0, "MultiSample Anti Aliasing", min(0), max(8))
AddOption(drawQualityDownsampleFSAA, int32_t, 0, "", 0, "Downsampling Anti Aliasing", min(0), max(4))
AddOption(drawQualityVSync, bool, true, "", 0, "Enable Vertical Sync")
AddOption(fpsLimit, int32_t, 1, "", 0, "FPS limit: 0 = none (maximum rate), 1 = display refresh rate (no limit without VSync), 2 = fpsRate")
AddOption(fpsRate, int32_t, 100, "", 0, "Target frame rate (frames per second) for fpsLimit 2, or if the backend cannot limit to the refresh rate (0 = no limit)")
AddOption(fpsRate, int32_t, 100, "", 0, "Target frame rate (frames per second) for fpsLimit 2, or if the backend cannot limit to the refresh rate", min(1), max(9999))
AddOption(useGLIndirectDraw, bool, true, "", 0, "Use OpenGL indirect draws to reduce number of draw calls")
AddOption(screenshotScaleFactor, int32_t, 1, "", 0, "Resolution scale factor when taking screenshots")
AddOption(fov, int32_t, 45, "", 0, "Display FOV")
AddOption(screenshotScaleFactor, int32_t, 1, "", 0, "Resolution scale factor when taking screenshots", min(1), max(4))
AddOption(fov, float, 45.f, "", 0, "Display FOV", min(5.f), max(175.f))
AddHelp("help", 'h')
EndConfig()

Expand All @@ -534,6 +525,7 @@ AddOption(displayFrontend, std::string, "auto", "displayFrontend", 0, "Frontend
AddOptionVec(filterMacros, std::string, "", 0, "ROOT macros used as track filter")
AddOption(guiReplyTimeout, uint32_t, 100, "", 0, "Time in ms the Qt GUI waits at most for the display to process its update")
AddOption(guiMaxUpdatesAhead, uint32_t, 3, "", 0, "Number of updates the Qt GUI may send ahead of the last one the display has processed, before it waits for the display")
AddOption(listFrontendOptionHandling, bool, false, "", 0, "List all assigned keys in frontend, Configurable settings in Qt GUI, and missing configuration options")
AddSubConfig(GPUSettingsDisplayLight, light)
AddSubConfig(GPUSettingsDisplayHeavy, heavy)
AddSubConfig(GPUSettingsDisplayRenderer, renderer)
Expand Down Expand Up @@ -720,14 +712,6 @@ EndConfig()
#endif // !GPUCA_STANDALONE
#endif // !GPUCA_GPUCODE_DEVICE

// Derrived parameters used in GPUParam
BeginHiddenConfig(GPUSettingsParam, param)
AddVariableRTC(continuousTracking, int8_t, 0) // Continuous tracking, estimate bz and errors for abs(z) = 125cm during seeding
AddVariableRTC(dodEdx, int8_t, 0) // Do dEdx computation
EndConfig()

EndNamespace() // gpu
EndNamespace() // o2
#endif // #ifdef BeginNamespace
EndNamespace() // o2::gpu

// clang-format on
#endif // (!defined(__CLING__) && !defined(G__DICTIONARY)) || defined(BeginSubConfig)
6 changes: 6 additions & 0 deletions GPU/GPUTracking/Global/GPUChainTracking.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,12 @@ int32_t GPUChainTracking::RunChainFinalize()
usleep(10000);
if (GetProcessingSettings().runsStandalone) {
iKey = kbhit() ? getch() : 0;
if (iKey == 27 && kbhit()) { // Escape sequence (arrow keys, ...), not the ESC key
while (kbhit()) {
getch();
}
iKey = 0;
}
if (iKey == 27) {
GetProcessingSettings().eventDisplay->setDisplayControl(2);
} else if (iKey == 'n') {
Expand Down
Loading
Loading