newly implemented model for slow nucleon production
[u/mrichter/AliRoot.git] / EVGEN / AliGenDeuteron.h
CommitLineData
be66cf70 1#ifndef ALIGENDEUTERON_H
2#define ALIGENDEUTERON_H
3
4
5/* Copyright(c) 2009-2010, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
7
8// Afterburner to simulate coalescence of (anti)nucleons
9// Author: Eulogio Serradilla <eulogio.serradilla@ciemat.es>
10// Arturo Menchaca <menchaca@fisica.unam.mx>
11
12#include "AliGenerator.h"
13
14
15class AliGenDeuteron: public AliGenerator
16{
17
18 public:
19
20 AliGenDeuteron(Int_t sign=1, Double_t pmax=0.3, Double_t rmax=2.1, Int_t cluster=0 );
21 virtual ~AliGenDeuteron();
22
23 virtual void Init();
24 virtual void Generate();
25
26 Int_t GetSign() const { return fSign;}
27 Double_t GetCoalescenceMomentum() const { return fPmax; }
28 Double_t GetCoalescenceDistance() const { return fRmax; }
29 Double_t GetSpinProbability() const { return fSpinProb; }
30 Double_t GetFreezeOutRadius() const { return fMaxRadius; }
31 Double_t GetCoalescenceProbability(const TParticle* nucleon1, const TParticle* nucleon2) const;
32 Int_t GetClusterType() const { return fClusterType; }
33 Int_t GetFreezeOutModel() const { return fModel; }
34 Double_t GetFreezeOutTime() const { return fTimeLength; }
35
36 void SetSign(Int_t sign) { fSign = sign > 0 ? 1 : -1;}
37 void SetCoalescenceMomentum(Double_t p) { fPmax = p; }
38 void SetCoalescenceDistance(Double_t r) { fRmax = r; }
39 void SetSpinProbability(Double_t s) { fSpinProb = s; }
40 void SetFreezeOutRadius(Double_t r) { fMaxRadius = r; }
41 void SetClusterType(Int_t cluster) { fClusterType = cluster; }
42 void SetFreezeOutModel(Int_t model, Double_t timeLength=2.5) { fModel = model; fTimeLength=timeLength;}
43
44 public:
45
46 enum { kFirstPartner, kLowestMomentum, kLowestDistance, kBoth };
47 enum { kNone, kThermal, kExpansion };
48
49 private:
50
51 AliGenDeuteron(const AliGenDeuteron &other);
52 AliGenDeuteron& operator=(const AliGenDeuteron &other);
53
54 void FixProductionVertex(class TParticle* i);
55 void FirstPartner(const TList* protons, TList* neutrons);
56 void WeightMatrix(const TList* protons, const TList* neutrons);
57 void PushDeuteron(TParticle* parent1, TParticle* parent2);
58
59 private:
60
61 Int_t fSign; // +1 for deuterons, -1 for antideuterons
62 Double_t fPmax; // Maximum p-n momentum difference (GeV/c)
63 Double_t fRmax; // Maximum p-n distance (fm)
64 Double_t fSpinProb; // cluster formation probability due to spin
65 Double_t fMaxRadius; // Maximum freeze-out radius (fm)
66 Int_t fClusterType; // Probability criteria to find clusters
67 Int_t fModel; // Model to override generator source
68 Double_t fTimeLength; // Thermal and chemical freeze-out time (fm/c)
69 Double_t fB; // Impact parameter (fm)
70 Double_t fR; // Projectile/Target nuclear radius (fm)
71 Double_t fPsiR; // Reaction plane angle
72 AliStack* fCurStack; //! current event stack
73 Int_t fNtrk; //! number of the stored track
74
75 ClassDef(AliGenDeuteron,1)
76};
77
78#endif // ALIGENDEUTERON_H