C++InterfacetoTauola
include/Tauola/DecayList.h
1 #ifndef _DecayList_h_included_
2 #define _DecayList_h_included_
3 
4 /**
5  * @class DecayList
6  *
7  * @brief Storage class for keeping track of TauolaParticles and
8  * their index (as passed to Tauola).
9  *
10  * This class contains a list of TauolaParticles. The index of the
11  * TauolaParticle in the list is passed to FORTRAN TAUOLA (as we can
12  * not pass TauolaParticles directly). A static copy of the class is
13  * used for any run of Tauola and is cleared after each decay generation.
14  * To be compatible with how indicies are used in Tauola, those that are:
15  * - < 0 are relative to some other given position in the list
16  * - = 0 is the position one greater than some given position in the list.
17  * - > 0 are absolute. 1 is the first item (which should generally be
18  * the tau's position)
19  *
20  * @author Nadia Davidson
21  * @date 17 June 2008
22  */
23 
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <iostream>
27 
28 #include "TauolaParticle.h"
29 
30 using namespace std;
31 
32 namespace Tauolapp
33 {
34 
35 class TauolaParticle;
36 
37 class DecayList {
38 
39  public:
40  /** Return the TauolaParticle corresponding to the index (absolute)
41  in the list of particle */
42  static TauolaParticle * getParticle(int index);
43 
44  /** Adds the new particle into the list and delete the previous
45  particle at the same position if it exists */
46  static void updateList(TauolaParticle * new_particle,
47  int index);
48 
49  /** Adds the new particle to the end of list */
50  static void addToEnd(TauolaParticle * new_particle);
51 
52  /** clear all entries from the list */
53  static void clear();
54 
55  /** Translates index (absolute and relative) to
56  absolute index. If a relative index is given (negative integer)
57  it is taken relative from the end of the list */
58  static int getAbsoluteIndex(int index);
59 
60  /** Translates index (absolute and relative) to
61  absolute index. If a relative index is given (negative integer)
62  it is taken relative to the parameter "neg_index_relative_to" */
63  static int getAbsoluteIndex(int index,
64  int neg_index_relative_to);
65 
66  /** Return index (absolute) of "particle" */
67  static int getAbsoluteIndex(TauolaParticle * particle);
68 
69  /** Print the contents of the list */
70  static void print();
71 
72  private:
73  /** vector used for TauolaParticle mapping */
74  static vector<TauolaParticle*> m_particle_list;
75 
76 };
77 
78 } // namespace Tauolapp
79 #endif
static vector< TauolaParticle * > m_particle_list