Jpp  17.1.1
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 JCombinatoricsgetCombinatorics () 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_typegetPair (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_typezbuf1D
 
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: