Update master to aliroot
[u/mrichter/AliRoot.git] / TTherminator / Therminator / ParticleType.h
1 /******************************************************************************
2  *                      T H E R M I N A T O R                                 *
3  *                   THERMal heavy-IoN generATOR                              *
4  *                           version 1.0                                      *
5  *                                                                            *
6  * Authors of the model: Wojciech Broniowski, Wojciech.Broniowski@ifj.edu.pl, *
7  *                       Wojciech Florkowski, Wojciech.Florkowski@ifj.edu.pl  *
8  * Authors of the code:  Adam Kisiel, kisiel@if.pw.edu.pl                     *
9  *                       Tomasz Taluc, ttaluc@if.pw.edu.pl                    *
10  * Code designers: Adam Kisiel, Tomasz Taluc, Wojciech Broniowski,            *
11  *                 Wojciech Florkowski                                        *
12  *                                                                            *
13  * For the detailed description of the program and furhter references         * 
14  * to the description of the model plesase refer to: nucl-th/0504047,         *
15  * accessibile at: http://www.arxiv.org/nucl-th/0504047                       *
16  *                                                                            *
17  * Homepage: http://hirg.if.pw.edu.pl/en/therminator/                         *
18  *                                                                            *
19  * This code can be freely used and redistributed. However if you decide to   *
20  * make modifications to the code, please contact the authors, especially     *
21  * if you plan to publish the results obtained with such modified code.       *
22  * Any publication of results obtained using this code must include the       *
23  * reference to nucl-th/0504047 and the published version of it, when         *
24  * available.                                                                 *
25  *                                                                            *
26  *****************************************************************************/
27 #ifndef _BFPW_PARTICLE_TYPE_
28 #define _BFPW_PARTICLE_TYPE_
29
30 #include <iostream>
31 #include "THGlobal.h"
32
33 class DecayChannel;
34 class DecayTable;
35
36 class ParticleType
37 {
38  private:
39
40   int         mNumber;          //particle number
41   float       mMass;            //mass
42   int         mStrangeness;     //strangness
43   int         mBarionN;         //barion number
44   int         mCharmN;          //charm
45   float       mSpin;            //spin
46   float       mI;               //izospin
47   float       mI3;              //izospin3
48   float       mGamma;           //szerokosc polowkowa
49   string      mName;            //particle name
50   int         mPDGCode;
51   int         mDecayChannelCount2;      //number of channels in this case
52   int         mDecayChannelCount3;      //number of channels in this case
53   DecayTable *mTable;
54   float       mFMax;
55
56  public:
57   ParticleType();       //constructor
58   ParticleType(const ParticleType& aParticleType);      //copying constructor
59   ParticleType& operator=(const ParticleType& aParticleType);   //copying constructor
60   ~ParticleType();      //destructor
61
62   int    GetNumber() const;
63   float  GetMass() const;
64   int    GetStrangeness() const;
65   int    GetBarionN() const;
66   int    GetCharmN() const;
67   float  GetSpin() const;
68   float  GetI() const;
69   float  GetI3() const;
70   float  GetGamma() const;
71   string GetName() const;
72   int    GetDecayChannelCount2() const;
73   int    GetDecayChannelCount3() const;
74   int    GetCharge();
75   int    GetPDGCode() const;
76   float  GetFMax() const;
77
78   void SetNumber(int aNumber);
79   void SetMass(float aMass);
80   void SetStrangeness(int aStrangeness);
81   void SetBarionN(int aBarionN);
82   void SetCharmN(int aCharmN);
83   void SetSpin(float aSpin);
84   void SetI(float aI);
85   void SetI3(float aI3);
86   void SetGamma(float aGamma);
87   void SetName(char *aName);
88   void SetDecayChannelCount2(int aDCCount2);
89   void SetDecayChannelCount3(int aDCCount3);
90   void SetPDGCode(int aCode);
91   void SetFMax(float aFMax);
92
93   DecayTable* GetTable() const;
94   void        AddDecayChannel(DecayChannel aChannel);
95   
96   void WriteParticle(int);
97   
98   static int GetParticleTypeNumber(std::string aPartName);
99 };
100
101
102 #endif