New generator: TUHKMgen
[u/mrichter/AliRoot.git] / TUHKMgen / UHKM / InitialState.h
1 /*
2   Ludmila Malinina  malinina@lav01.sinp.msu.ru,   SINP MSU/Moscow and JINR/Dubna
3   Ionut Arsene  i.c.arsene@fys.uio.no,            Oslo University and ISS-Bucharest
4   Date        : 2007/05/30
5   Updated     : 2008/08/11
6 */
7
8 #ifndef INITIAL_STATE
9 #define INITIAL_STATE
10 // Virtual class for the initial state classes
11 // Include here common methods, but always declare them as virtual
12 #ifndef PARTICLE_INCLUDED
13 #include "Particle.h"
14 #endif
15 #ifndef DATABASE_PDG
16 #include "DatabasePDG.h"
17 #endif
18
19 class InitialState {
20  protected:
21    DatabasePDG *fDatabase;
22  public:
23   InitialState() : fDatabase(new DatabasePDG()) {};
24   virtual ~InitialState() {
25     if(fDatabase)
26       delete fDatabase;
27   };
28
29   virtual void SetPDGParticleFilename(Char_t *filename) {fDatabase->SetParticleFilename(filename);}
30   virtual void SetPDGDecayFilename(Char_t *filename) {fDatabase->SetDecayFilename(filename);}
31   virtual void SetUseCharmParticles(Bool_t flag) {fDatabase->SetUseCharmParticles(flag);}
32   virtual void SetMinimumWidth(Double_t value) {fDatabase->SetMinimumWidth(value);}
33   virtual void SetMaximumWidth(Double_t value) {fDatabase->SetMaximumWidth(value);}
34   virtual void SetMinimumMass(Double_t value) {fDatabase->SetMinimumMass(value);}
35   virtual void SetMaximumMass(Double_t value) {fDatabase->SetMaximumMass(value);}
36   virtual void SetWidthRange(Double_t min, Double_t max) {fDatabase->SetWidthRange(min, max);}
37   virtual void SetMassRange(Double_t min, Double_t max) {fDatabase->SetMassRange(min, max);}
38   virtual void LoadPDGInfo() {fDatabase->LoadData();}
39   virtual void SetPDGParticleStable(Int_t pdg, Bool_t value) {fDatabase->SetStable(pdg, value);}
40   virtual Bool_t GetPDGParticleStableStatus(Int_t pdg) {return fDatabase->GetStableStatus(pdg);}
41   virtual Bool_t GetUseCharmParticles() {return fDatabase->GetUseCharmParticles();}
42   virtual Double_t GetMinimumWidth() {return fDatabase->GetMinimumWidth();}
43   virtual Double_t GetMaximumWidth() {return fDatabase->GetMaximumWidth();}
44   virtual Double_t GetMinimumMass() {return fDatabase->GetMinimumMass();}
45   virtual Double_t GetMaximumMass() {return fDatabase->GetMaximumMass();}
46
47   virtual DatabasePDG* PDGInfo() const {return fDatabase;}
48  
49   virtual void Initialize(List_t &source, ParticleAllocator &allocator) = 0;
50   virtual Bool_t ReadParams() = 0;
51   virtual Bool_t MultIni() = 0;
52   virtual Double_t GetTime() = 0;
53   virtual Int_t GetNev() = 0;
54   virtual Double_t GetWeakDecayLimit() = 0;
55     
56   virtual void Evolve(List_t &source, List_t &secondaries, ParticleAllocator &allocator, Double_t weakDecayLimit);
57 };
58
59 #endif