1#ifndef __JTOOLS__JCOMBINATORICS__
2#define __JTOOLS__JCOMBINATORICS__
34 std::pair<int, int>(-1, -1)
45 std::pair<int, int>(first, second)
58 if (first.first == second.first)
59 return first.second < second.second;
61 return first.first < second.first;
104 zbuf2D.resize(numberOfIndices);
106 for (
int i = 0; i != numberOfIndices; ++i) {
107 zbuf2D[i].resize(numberOfIndices);
110 for (
int i = 0; i != numberOfIndices; ++i) {
114 for (
int j = i; ++
j != numberOfIndices; ) {
154 int getIndex(
const int first,
const int second)
const
156 return zbuf2D[first][second];
168 return getIndex(pair.first, pair.second);
189 template<
class JComparator_t>
190 void sort(JComparator_t comparator)
192 std::stable_sort(
zbuf1D.begin(),
zbuf1D.end(), comparator);
194 for (
int i = 0; i != (int)
zbuf1D.size(); ++i) {
198 zbuf2D[pair.first][pair.second] = i;
199 zbuf2D[pair.second][pair.first] = i;
202 for (
int i = 0; i != (int)
zbuf2D.size(); ++i) {
215 static int getSign(
const int first,
const int second)
217 return (second >= first ? +1 : -1);
229 return getSign(pair.first, pair.second);
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).