]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenDeuteron.h
New class for deuteron generation
[u/mrichter/AliRoot.git] / EVGEN / AliGenDeuteron.h
1 #ifndef _ALIGENDEUTERON_H_\r
2 #define _ALIGENDEUTERON_H_\r
3 \r
4 // Afterburner to simulate coalescence of nucleons\r
5 //\r
6 \r
7 #include "AliGenerator.h"\r
8 \r
9 class AliGenDeuteron: public AliGenerator\r
10 {\r
11 \r
12  public:\r
13 \r
14         AliGenDeuteron(Int_t sign=1, Double_t pmax=0.3, Double_t rmax=2.1, Double_t rsrc=1.5, Int_t model=1);\r
15         virtual ~AliGenDeuteron();\r
16 \r
17         virtual void Init();\r
18         virtual void Generate();\r
19         \r
20         Double_t GetCoalescenceDistance() const { return fRmax*1.e+13; }\r
21         Double_t GetCoalescenceMomentum() const { return fPmax; }\r
22         Double_t GetSourceRadius() const { return fRsrc*1.e+13; }\r
23         Double_t GetSpinProbability() const { return fSpinProb; }\r
24         Int_t GetFreezeOutModel() const { return fModel; }\r
25         Int_t GetSign() const { return fSign;}\r
26         \r
27         void SetCoalescenceDistance(Double_t r=2.1) { fRmax = r*1.e-13; }\r
28         void SetCoalescenceMomentum(Double_t p=0.3) { fPmax = p; }\r
29         void SetSourceRadius(Double_t r=1.5) { fRsrc = r*1.e-13; }\r
30         void SetSpinProbability(Double_t s=0.75) { fSpinProb = s; }\r
31         void SetFreezeOutModel(Int_t model = kThermal) { fModel = model; }\r
32         void SetSign(Int_t sign) {  fSign = sign > 0 ? 1 : -1;}\r
33         \r
34  public:\r
35         enum { kExpansion, kThermal };\r
36         \r
37  private:\r
38  \r
39         AliGenDeuteron(const AliGenDeuteron &other);\r
40         AliGenDeuteron& operator=(const AliGenDeuteron &other);\r
41         \r
42         void FixProductionVertex(class TParticle* i, class TRandom3& rnd);\r
43         \r
44  private:\r
45         \r
46         const Double_t fDeuteronMass;\r
47         Double_t fPmax; // Maximum p-n momentum difference (GeV/c)\r
48         Double_t fRmax; // Maximum p-n distance (cm)\r
49         Double_t fRsrc; // Emitting source radius (cm)\r
50         Double_t fSpinProb; // cluster formation probability due to spin\r
51         Int_t fModel;   // How to place the nucleons at freeze-out stage\r
52         Int_t fSign; // +1 for deuteron, -1 for antideuterons\r
53         \r
54         ClassDef(AliGenDeuteron,1)\r
55 };\r
56 \r
57 #endif // _ALIGENDEUTERON_H_\r