1 #ifndef __RAT_TimeSort__
2 #define __RAT_TimeSort__
11 inline bool TimeSort(
const std::pair<T, T> &firstPair,
const std::pair<T, T> &secondPair) {
12 return (firstPair.first < secondPair.first);
16 inline void TimeSortMerge(std::vector<std::pair<int, int>> &pulseTimes) {
17 sort(pulseTimes.begin(), pulseTimes.end(), TimeSort<int>);
19 if (pulseTimes.size() == 0)
return;
21 std::vector<std::pair<int, int>> merged;
22 std::pair<int, int> current = pulseTimes[0];
24 for (
unsigned int i = 1; i < pulseTimes.size(); i++) {
26 if (pulseTimes[i].first - 1 <= current.second) {
27 if (current.second < pulseTimes[i].second) current.second = pulseTimes[i].second;
29 merged.push_back(current);
30 current = pulseTimes[i];
33 merged.push_back(current);
36 pulseTimes.swap(merged);
39 inline void TimeSortMerge(std::vector<std::pair<double, double>> &pulseTimes) {
40 sort(pulseTimes.begin(), pulseTimes.end(), TimeSort<double>);
42 if (pulseTimes.size() == 0)
return;
44 std::vector<std::pair<double, double>> merged;
45 std::pair<double, double> current = pulseTimes[0];
47 for (
unsigned int i = 1; i < pulseTimes.size(); i++) {
48 if (pulseTimes[i].first <= current.second) {
49 if (current.second < pulseTimes[i].second) current.second = pulseTimes[i].second;
51 merged.push_back(current);
52 current = pulseTimes[i];
55 merged.push_back(current);
58 pulseTimes.swap(merged);
Definition: CCCrossSecMessenger.hh:29
bool TimeSort(const std::pair< T, T > &firstPair, const std::pair< T, T > &secondPair)
Definition: TimeSort.hh:11