]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/Tauola/DecayList.h
ATO-97, ATO-78 - speed-up creation of the AliTPCCalPad objects from TTree
[u/mrichter/AliRoot.git] / TEvtGen / Tauola / DecayList.h
CommitLineData
0ca57c2f 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
30using namespace std;
31
32namespace Tauolapp
33{
34
35class TauolaParticle;
36
37class 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