evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtAmpIndex.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
22 
23 #include "EvtGenBase/EvtPatches.hh"
24 
25 #include <vector>
26 using std::vector;
27 
28 EvtAmpIndex::EvtAmpIndex( std::vector<int> ind ) :
29  _ind( ind ), _size( ind.size() ), _state( ind.size() ), _nstate( ind.size() )
30 {
31  int i;
32 
33  for ( i = 0; i < _size; i++ ) {
34  _state[i] = 0;
35  if ( i == 0 ) {
36  _nstate[i] = 1;
37  } else {
38  _nstate[i] = _nstate[i - 1] * _ind[i];
39  }
40  }
41 }
42 
44 {
45  int i;
46  for ( i = 0; i < _size; i++ ) {
47  _state[i] = 0;
48  }
49 }
50 
52 {
53  int i;
54  for ( i = 0; i < _size; i++ ) {
55  _state[i]++;
56  if ( _state[i] < _ind[i] ) {
57  return true;
58  } else {
59  _state[i] = 0;
60  }
61  }
62  return false;
63 }
64 
66 {
67  int i;
68  int ind = 0;
69 
70  for ( i = 0; i < _size; i++ ) {
71  ind += _state[i] * _nstate[i];
72  }
73 
74  return ind;
75 }
void reset()
Definition: EvtAmpIndex.cpp:43
EvtAmpIndex(std::vector< int > ind)
Definition: EvtAmpIndex.cpp:28
std::vector< int > _state
Definition: EvtAmpIndex.hh:41
std::vector< int > _nstate
Definition: EvtAmpIndex.hh:42
std::vector< int > _ind
Definition: EvtAmpIndex.hh:39