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).