1 #ifndef _ALIGENDEUTERON_H_
\r
2 #define _ALIGENDEUTERON_H_
\r
4 // Afterburner to simulate coalescence of nucleons
\r
7 #include "AliGenerator.h"
\r
9 class AliGenDeuteron: public AliGenerator
\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
17 virtual void Init();
\r
18 virtual void Generate();
\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
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
35 enum { kExpansion, kThermal };
\r
39 AliGenDeuteron(const AliGenDeuteron &other);
\r
40 AliGenDeuteron& operator=(const AliGenDeuteron &other);
\r
42 void FixProductionVertex(class TParticle* i, class TRandom3& rnd);
\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
54 ClassDef(AliGenDeuteron,1)
\r
57 #endif // _ALIGENDEUTERON_H_
\r