Jpp  18.0.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
JTOOLS::JCombinatorics Class Reference

Auxiliary class to convert pair of indices to unique index and back. More...

#include <JCombinatorics.hh>

Inheritance diagram for JTOOLS::JCombinatorics:
JCALIBRATE::JFitK40_t< JNullType >

Public Types

typedef std::pair< int, int > pair_type
 Data structure for a pair of indices. More...
 

Public Member Functions

 JCombinatorics ()
 Default constructor. More...
 
 JCombinatorics (const int numberOfIndices)
 Constructor. More...
 
const JCombinatorics & getCombinatorics () const
 Get combinatorics. More...
 
void configure (const int numberOfIndices)
 Configure. More...
 
size_t getNumberOfIndices () const
 Get number of indices. More...
 
size_t getNumberOfPairs () const
 Get number of pairs. More...
 
int getIndex (const int first, const int second) const
 Get index of pair of indices. More...
 
const pair_type & getPair (const int index) const
 Get pair of indices for given index. More...
 
template<class JComparator_t >
void sort (JComparator_t comparator)
 Sort address pairs. More...
 

Static Public Member Functions

static int getSign (const int first, const int second)
 Sign of pair of indices. More...
 
static int getSign (const pair_type &pair)
 Sign of pair of indices. More...
 

Protected Attributes

std::vector< pair_type > zbuf1D
 
std::vector< std::vector< int > > zbuf2D
 

Detailed Description

Auxiliary class to convert pair of indices to unique index and back.

Definition at line 22 of file JCombinatorics.hh.

Member Typedef Documentation

Data structure for a pair of indices.

Definition at line 28 of file JCombinatorics.hh.

Constructor & Destructor Documentation

JTOOLS::JCombinatorics::JCombinatorics ( )
inline

Default constructor.

Definition at line 34 of file JCombinatorics.hh.

35  {}
JTOOLS::JCombinatorics::JCombinatorics ( const int  numberOfIndices)
inline

Constructor.

Parameters
numberOfIndicesnumber of indices

Definition at line 43 of file JCombinatorics.hh.

44  {
45  configure(numberOfIndices);
46  }
void configure(const int numberOfIndices)
Configure.

Member Function Documentation

const JCombinatorics& JTOOLS::JCombinatorics::getCombinatorics ( ) const
inline

Get combinatorics.

Returns
combinatorics

Definition at line 54 of file JCombinatorics.hh.

55  {
56  return *this;
57  }
void JTOOLS::JCombinatorics::configure ( const int  numberOfIndices)
inline

Configure.

Parameters
numberOfIndicesnumber of indices

Definition at line 65 of file JCombinatorics.hh.

66  {
67  zbuf1D.clear();
68 
69  zbuf2D.resize(numberOfIndices);
70 
71  for (int i = 0; i != numberOfIndices; ++i) {
72  zbuf2D[i].resize(numberOfIndices);
73  }
74 
75  for (int i = 0; i != numberOfIndices; ++i) {
76 
77  zbuf2D[i][i] = -1;
78 
79  for (int j = i; ++j != numberOfIndices; ) {
80 
81  zbuf2D[i][j] = zbuf1D.size();
82  zbuf2D[j][i] = zbuf1D.size();
83 
84  zbuf1D.push_back(pair_type(i,j));
85  }
86  }
87  }
std::vector< std::vector< int > > zbuf2D
std::pair< int, int > pair_type
Data structure for a pair of indices.
std::vector< pair_type > zbuf1D
int j
Definition: JPolint.hh:703
size_t JTOOLS::JCombinatorics::getNumberOfIndices ( ) const
inline

Get number of indices.

Returns
number of indices

Definition at line 95 of file JCombinatorics.hh.

96  {
97  return zbuf2D.size();
98  }
std::vector< std::vector< int > > zbuf2D
size_t JTOOLS::JCombinatorics::getNumberOfPairs ( ) const
inline

Get number of pairs.

Returns
number of pairs

Definition at line 106 of file JCombinatorics.hh.

107  {
108  return zbuf1D.size();
109  }
std::vector< pair_type > zbuf1D
int JTOOLS::JCombinatorics::getIndex ( const int  first,
const int  second 
) const
inline

Get index of pair of indices.

Parameters
firstfirst address
secondsecond address
Returns
index (-1 if first and second address are equal)

Definition at line 119 of file JCombinatorics.hh.

120  {
121  return zbuf2D[first][second];
122  }
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
std::vector< std::vector< int > > zbuf2D
const pair_type& JTOOLS::JCombinatorics::getPair ( const int  index) const
inline

Get pair of indices for given index.

Parameters
indexindex
Returns
pair of indices

Definition at line 131 of file JCombinatorics.hh.

132  {
133  return zbuf1D[index];
134  }
std::vector< pair_type > zbuf1D
template<class JComparator_t >
void JTOOLS::JCombinatorics::sort ( JComparator_t  comparator)
inline

Sort address pairs.

Parameters
comparatorcomparator for pairs

Definition at line 143 of file JCombinatorics.hh.

144  {
145  std::stable_sort(zbuf1D.begin(), zbuf1D.end(), comparator);
146 
147  for (int i = 0; i != (int) zbuf1D.size(); ++i) {
148 
149  const pair_type pair = zbuf1D[i];
150 
151  zbuf2D[pair.first][pair.second] = i;
152  zbuf2D[pair.second][pair.first] = i;
153  }
154 
155  for (int i = 0; i != (int) zbuf2D.size(); ++i) {
156  zbuf2D[i][i] = -1;
157  }
158  }
std::vector< std::vector< int > > zbuf2D
std::pair< int, int > pair_type
Data structure for a pair of indices.
std::vector< pair_type > zbuf1D
static int JTOOLS::JCombinatorics::getSign ( const int  first,
const int  second 
)
inlinestatic

Sign of pair of indices.

Parameters
firstfirst address
secondsecond address
Returns
+1 if second >= first; else -1

Definition at line 168 of file JCombinatorics.hh.

169  {
170  return (second >= first ? +1 : -1);
171  }
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
static int JTOOLS::JCombinatorics::getSign ( const pair_type &  pair)
inlinestatic

Sign of pair of indices.

Parameters
pairpair of indices
Returns
+1 if second >= first; else -1

Definition at line 180 of file JCombinatorics.hh.

181  {
182  return getSign(pair.first, pair.second);
183  }
static int getSign(const int first, const int second)
Sign of pair of indices.

Member Data Documentation

std::vector<pair_type> JTOOLS::JCombinatorics::zbuf1D
protected

Definition at line 187 of file JCombinatorics.hh.

std::vector<std::vector<int> > JTOOLS::JCombinatorics::zbuf2D
protected

Definition at line 188 of file JCombinatorics.hh.


The documentation for this class was generated from the following file: