Overlaps corrected, new shape of sectors
[u/mrichter/AliRoot.git] / EVGEN / AliGenLightNuclei.h
CommitLineData
a36106b2 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
12class TParticle;
13class AliStack;
14
15class 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