SetSeed implementation
[u/mrichter/AliRoot.git] / EVGEN / AliGenLightNuclei.h
1 #ifndef ALIGENLIGHTNUCLEI_H
2 #define ALIGENLIGHTNUCLEI_H
3
4 /* Copyright(c) 2009-2010, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // afterburner to generate light nuclei
8 // Author: Eulogio Serradilla <eulogio.serradilla@cern.h>
9
10 #include "AliGenCocktail.h"
11
12 class TParticle;
13 class AliStack;
14
15 class AliGenLightNuclei: public AliGenCocktail
16 {
17
18  public:
19
20         AliGenLightNuclei();
21         virtual ~AliGenLightNuclei();
22
23         virtual void Generate();
24         
25         Double_t GetCoalescenceMomentum() const { return fP0; }
26         
27         void SetCoalescenceMomentum(Double_t p0) { fP0 = p0; }
28         
29         void SetDeuterons(Bool_t flag = kTRUE) { fGenDeuterons = flag; }
30         void SetTritons(Bool_t flag = kTRUE)   { fGenTritons = flag; }
31         void SetHe3Nuclei(Bool_t flag = kTRUE) { fGenHe3Nuclei = flag; }
32         void SetHe4Nuclei(Bool_t flag = kTRUE) { fGenHe4Nuclei = flag; }
33         
34         enum {kDeuteron=1000010020, kAntiDeuteron=-1000010020, kTriton=1000010030, kAntiTriton=-1000010030, kHe3Nucleus=1000020030, kAntiHe3Nucleus=-1000020030, kAlpha=1000020040, kAntiAlpha=-1000020040 };
35
36         enum {kCluster=77};
37         
38  private:
39  
40         AliGenLightNuclei(const AliGenLightNuclei &other);
41         AliGenLightNuclei& operator=(const AliGenLightNuclei &other);
42         
43         Int_t GenerateDeuterons(const TList* protons, const TList* neutrons);
44         Int_t GenerateTritons(const TList* protons, const TList* neutrons);
45         Int_t GenerateHe3Nuclei(const TList* protons, const TList* neutrons);
46         Int_t GenerateHe4Nuclei(const TList* protons, const TList* neutrons);
47         
48         void PushDeuteron(TParticle* parent1, TParticle* parent2);
49         void PushTriton(TParticle* parent1, TParticle* parent2, TParticle* parent3);
50         void PushHe3Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3);
51         void PushHe4Nucleus(TParticle* parent1, TParticle* parent2, TParticle* parent3, TParticle* parent4);
52         
53         void PushNucleus(Int_t pdg, Double_t mass, TParticle* parent1, TParticle* parent2, TParticle* parent3=0, TParticle* parent4=0);
54         
55         Bool_t Coalescence(const TParticle* n1, const TParticle* n2) const;
56         TParticle* FindPartner(const TParticle* n0, const TList* nucleons, const TParticle* nx=0) const;
57         
58         Double_t GetS(Double_t p1x, Double_t p1y, Double_t p1z, Double_t m1, Double_t p2x, Double_t p2y, Double_t p2z, Double_t m2) const;
59         Double_t GetPcm(Double_t p1x, Double_t p1y, Double_t p1z, Double_t m1, Double_t p2x, Double_t p2y, Double_t p2z, Double_t m2) const;
60         
61  private:
62         
63         Double_t fP0;         // coalescence momentum (radius of the sphere)
64         Bool_t fGenDeuterons; // generate deuterons and anti-deuterons
65         Bool_t fGenTritons;   // generate tritons and anti-tritons
66         Bool_t fGenHe3Nuclei; // generate He3 and anti-He3 nuclei
67         Bool_t fGenHe4Nuclei; // generate He4 and anti-He4 nuclei
68         
69         ClassDef(AliGenLightNuclei,1)
70 };
71
72 #endif // ALIGENLIGHTNUCLEI_H