forked from AliceO2Group/AliceO2
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathGPUTPCClusterRejection.h
More file actions
77 lines (70 loc) · 2.18 KB
/
GPUTPCClusterRejection.h
File metadata and controls
77 lines (70 loc) · 2.18 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
// 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 GPUTPCClusterRejection.h
/// \author David Rohr
#ifndef GPUTPCCLUSTERREJECTION_H
#define GPUTPCCLUSTERREJECTION_H
#include "GPUTPCGMMergerTypes.h"
namespace o2::gpu
{
struct GPUTPCClusterRejection {
template <bool C, class T = void, class S = void>
static constexpr inline bool GetProtectionStatus(int32_t attach, bool& physics, bool& protect, T* counts = nullptr, S* mev200 = nullptr)
{
(void)counts; // FIXME: Avoid incorrect -Wunused-but-set-parameter warning
(void)mev200;
bool retVal = false;
if (attach == 0) {
retVal = false;
} else if ((attach & gputpcgmmergertypes::attachGoodLeg) == 0) {
if constexpr (C) {
counts->nLoopers++;
}
retVal = true;
} else if (attach & gputpcgmmergertypes::attachHighIncl) {
if constexpr (C) {
counts->nHighIncl++;
}
retVal = true;
} else if (attach & gputpcgmmergertypes::attachTube) {
protect = true;
if constexpr (C) {
if (*mev200) {
counts->nTube200++;
} else {
counts->nTube++;
}
}
retVal = false;
} else if ((attach & gputpcgmmergertypes::attachGood) == 0) {
protect = true;
if constexpr (C) {
counts->nRejected++;
}
retVal = false;
} else {
physics = true;
retVal = false;
}
if (attach & gputpcgmmergertypes::attachProtect) {
protect = true;
retVal = false;
}
return retVal;
}
static constexpr inline bool GetIsRejected(int32_t attach)
{
bool physics = false, protect = false;
return GetProtectionStatus<false>(attach, physics, protect);
}
};
} // namespace o2::gpu
#endif