Project
Loading...
Searching...
No Matches
TrackableFilter.h
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
12#ifndef O2_MCH_ROFFILTERING_TRACKABLE_FILTER_H_
13#define O2_MCH_ROFFILTERING_TRACKABLE_FILTER_H_
14
15#include <functional>
17#include <array>
18#include <gsl/span>
19#include "MCHBase/Trackable.h"
21
22namespace o2::mch
23{
36template <typename T>
38 createTrackableFilter(gsl::span<const T> items,
39 std::array<bool, 5> requestStation = {true, true, true, true, true},
40 bool moreCandidates = false)
41{
42 return [items, requestStation, moreCandidates](const ROFRecord& rof) {
43 std::array<int, 10> nofItemsPerChamber = perChamber(items.subspan(rof.getFirstIdx(), rof.getNEntries()));
44 return isTrackable(nofItemsPerChamber, requestStation, moreCandidates);
45 };
46}
47
62template <typename T1, typename T2>
64 createTrackableFilter(gsl::span<const T1> items,
65 gsl::span<const T2> subitems,
66 std::array<bool, 5> requestStation = {true, true, true, true, true},
67 bool moreCandidates = false)
68{
69 return [items, subitems, requestStation, moreCandidates](const ROFRecord& rof) {
70 std::array<int, 10> nofItemsPerChamber = perChamber(items.subspan(rof.getFirstIdx(), rof.getNEntries()), subitems);
71 return isTrackable(nofItemsPerChamber, requestStation, moreCandidates);
72 };
73}
74
75} // namespace o2::mch
76
77#endif
Definition of the MCH ROFrame record.
std::function< bool(const ROFRecord &)> ROFFilter
Definition ROFFilter.h:25
bool isTrackable(std::array< int, 10 > itemsPerChamber, std::array< bool, 5 > requestStation={true, true, true, true, true}, bool moreCandidates=false)
Definition Trackable.cxx:20
std::array< int, 10 > perChamber(gsl::span< const T > items)
ROFFilter createTrackableFilter(gsl::span< const T > items, std::array< bool, 5 > requestStation={true, true, true, true, true}, bool moreCandidates=false)