1 #ifndef ALIGENLIGHTNUCLEI_H
2 #define ALIGENLIGHTNUCLEI_H
4 /* Copyright(c) 2009-2010, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 // afterburner to generate light nuclei
8 // Author: Eulogio Serradilla <eulogio.serradilla@cern.h>
10 #include "AliGenCocktail.h"
15 class AliGenLightNuclei: public AliGenCocktail
21 virtual ~AliGenLightNuclei();
23 virtual void Generate();
25 Double_t GetCoalescenceMomentum() const { return fP0; }
27 void SetCoalescenceMomentum(Double_t p0) { fP0 = p0; }
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; }
34 enum {kDeuteron=1000010020, kAntiDeuteron=-1000010020, kTriton=1000010030, kAntiTriton=-1000010030, kHe3Nucleus=1000020030, kAntiHe3Nucleus=-1000020030, kAlpha=1000020040, kAntiAlpha=-1000020040 };
40 AliGenLightNuclei(const AliGenLightNuclei &other);
41 AliGenLightNuclei& operator=(const AliGenLightNuclei &other);
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);
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);
53 void PushNucleus(Int_t pdg, Double_t mass, TParticle* parent1, TParticle* parent2, TParticle* parent3=0, TParticle* parent4=0);
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;
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;
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
69 ClassDef(AliGenLightNuclei,1)
72 #endif // ALIGENLIGHTNUCLEI_H