]>
Commit | Line | Data |
---|---|---|
7b7936e9 | 1 | // This class provides an interface between the HYDJET++ Monte-Carlo model |
2 | // and AliRoot (by inheriting from the AliGenMC class). | |
3 | // This class uses the TUHKMgen class (which inherits from TGenerator) to | |
4 | // transmit parameters and receive output from the model. | |
5 | ||
b1c2e580 | 6 | #ifndef ALIGENUHKM_H |
7 | #define ALIGENUHKM_H | |
8 | ||
03896fc4 | 9 | #include <string> |
10 | ||
11 | //#include <TString.h> | |
12 | //#include <TParticle.h> | |
13 | ||
b1c2e580 | 14 | #include "AliGenMC.h" |
b1c2e580 | 15 | #include "TUHKMgen.h" |
3fa37a65 | 16 | #ifndef INITIALSTATEHYDJET_H |
b1c2e580 | 17 | #include "InitialStateHydjet.h" |
18 | #endif | |
19 | ||
b1c2e580 | 20 | using namespace std; |
21 | ||
b1c2e580 | 22 | |
23 | class AliGenUHKM : public AliGenMC | |
24 | { | |
03896fc4 | 25 | |
b1c2e580 | 26 | public: |
27 | AliGenUHKM(); | |
28 | AliGenUHKM(Int_t npart); | |
29 | ||
30 | virtual ~AliGenUHKM(); | |
31 | virtual void Generate(); | |
32 | virtual void Init(); | |
33 | // virtual void AddHeader(AliGenEventHeader* header); | |
7b7936e9 | 34 | |
b1c2e580 | 35 | // Setters |
36 | // set reasonable default parameters suited for central Au+Au collisions at RHIC(200GeV) | |
37 | void SetAllParametersRHIC(); | |
38 | // set reasonable default parameters suited for central Pb+Pb collisions at LHC(5.5TeV) | |
39 | void SetAllParametersLHC(); | |
7b7936e9 | 40 | |
b1c2e580 | 41 | void SetEcms(Double_t value) {fHydjetParams.fSqrtS = value;} // CMS energy per nucleon [GeV] (<2.24 given temperature and ch pot are used) |
42 | void SetAw(Double_t value) {fHydjetParams.fAw = value;} // nuclei mass number | |
43 | void SetBmin(Double_t value) {fHydjetParams.fBmin = value;} // Minimum impact parameter | |
44 | void SetBmax(Double_t value) {fHydjetParams.fBmax = value;} // Maximum impact parameter | |
45 | void SetChFrzTemperature(Double_t value) {fHydjetParams.fT = value;} // Temperature for the chemical freezeout [GeV] | |
46 | void SetMuB(Double_t value) {fHydjetParams.fMuB = value;} // Baryonic chemical potential [GeV] | |
47 | void SetMuS(Double_t value) {fHydjetParams.fMuS = value;} // Strangeness chemical potential [GeV] | |
48 | void SetMuQ(Double_t value) {fHydjetParams.fMuI3 = value;} // Isospin chemical potential [GeV] | |
49 | void SetThFrzTemperature(Double_t value) {fHydjetParams.fThFO = value;} // Temperature for the thermal freezeout [GeV] | |
50 | void SetMuPionThermal(Double_t value) {fHydjetParams.fMu_th_pip = value;} // Chemical potential for pi+ at thermal freezeout [GeV] | |
51 | void SetSeed(Int_t value) {fHydjetParams.fSeed = value;} //parameter to set the random nuber seed (=0 the current time is used | |
52 | //to set the random generator seed, !=0 the value fSeed is | |
53 | //used to set the random generator seed and then the state of random | |
54 | //number generator in PYTHIA MRPY(1)=fSeed | |
55 | void SetTauB(Double_t value) {fHydjetParams.fTau = value;} // Proper time for the freeze-out hyper surface [fm/c] | |
56 | void SetSigmaTau(Double_t value) {fHydjetParams.fSigmaTau = value;} // Standard deviation for the proper time (emission duration) [fm/c] | |
57 | void SetRmaxB(Double_t value) {fHydjetParams.fR = value;} // Maximal transverse radius [fm] | |
58 | void SetYlMax(Double_t value) {fHydjetParams.fYlmax = value;} // Maximal fireball longitudinal rapidity | |
59 | void SetEtaRMax(Double_t value) {fHydjetParams.fUmax = value;} // Maximal transverse velocity | |
60 | void SetMomAsymmPar(Double_t value) {fHydjetParams.fDelta = value;} // Momentum asymmetry parameter | |
61 | void SetCoordAsymmPar(Double_t value) {fHydjetParams.fEpsilon = value;} // Coordinate asymmetry parameter | |
62 | ||
b1c2e580 | 63 | void SetEtaType(Int_t value) {fHydjetParams.fEtaType = value;} // flag to choose rapidity distribution, if fEtaType<=0, |
64 | //then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0, | |
65 | //then Gaussian with dispertion = fYlmax | |
66 | void SetGammaS(Double_t value) {fHydjetParams.fCorrS = value;} // Strangeness suppression parameter (if gamma_s<=0 then it will be calculated) | |
67 | ||
68 | //PYQUEN parameters | |
69 | void SetPyquenNhsel(Int_t value) {fHydjetParams.fNhsel = value;} // Flag to choose the type of event to be generated | |
70 | // fNhsel = 0 --> UHKM fireball, no jets | |
71 | // fNhsel = 1 --> UHKM fireball, jets with no quenching | |
72 | // fNhsel = 2 --> UHKM fireball, jets with quenching | |
73 | // fNhsel = 3 --> no UHKM fireball, jets with no quenching | |
74 | // fNhsel = 4 --> no UHKM fireball, jets with quenching | |
75 | void SetPyquenShad(Int_t value) {fHydjetParams.fIshad = value;}//flag to switch on/off impact parameter dependent nuclear | |
76 | // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off, | |
77 | // 1: shadowing on for fAw=207, 197, 110, 40, default: 1 | |
78 | void SetPyquenPtmin(Double_t value) {fHydjetParams.fPtmin = value;} // Pyquen input parameter for minimum Pt of parton-parton scattering (5GeV<pt<500GeV) | |
79 | void SetPyquenT0(Double_t value) {fHydjetParams.fT0 = value;} //proper QGP formation tempereture | |
80 | void SetPyquenTau0(Double_t value) {fHydjetParams.fTau0 = value;} //proper QGP formation time in fm/c (0.01<fTau0<10) | |
81 | void SetPyquenNf(Int_t value) {fHydjetParams.fNf = value;} //number of active quark flavours N_f in QGP fNf=0, 1,2 or 3 | |
82 | void SetPyquenIenglu(Int_t value) {fHydjetParams.fIenglu = value;} // flag to fix type of in-medium partonic energy loss | |
83 | //(0: radiative and collisional loss, 1: radiative loss only, 2: | |
84 | //collisional loss only) (default: 0); | |
85 | void SetPyquenIanglu(Int_t value) {fHydjetParams.fIanglu = value;} //flag to fix type of angular distribution of in-medium emitted | |
86 | //gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0). | |
87 | ||
88 | ||
f17399a2 | 89 | void SetPDGParticleFile(const Char_t *name) {strncpy(fParticleFilename, name, 255);}//Set the filename containing the particle PDG info |
90 | void SetPDGDecayFile(const Char_t *name) {strncpy(fDecayFilename, name, 255);} //Set the filename containing the PDG decay channels info | |
b1c2e580 | 91 | void SetPDGParticleStable(Int_t pdg, Bool_t value) { // Turn on/off the decay flag for a PDG particle |
92 | fStableFlagPDG[fStableFlagged] = pdg; | |
93 | fStableFlagStatus[fStableFlagged++] = value; | |
94 | } | |
b1c2e580 | 95 | |
96 | // Getters | |
7b7936e9 | 97 | Double_t GetEcms() const {return fHydjetParams.fSqrtS;} |
98 | Double_t GetAw() const {return fHydjetParams.fAw;} | |
99 | Double_t GetBmin() const {return fHydjetParams.fBmin;} | |
100 | Double_t GetBmax() const {return fHydjetParams.fBmax;} | |
101 | Double_t GetChFrzTemperature() const {return fHydjetParams.fT;} | |
102 | Double_t GetMuB() const {return fHydjetParams.fMuB;} | |
103 | Double_t GetMuS() const {return fHydjetParams.fMuS;} | |
104 | Double_t GetMuQ() const {return fHydjetParams.fMuI3;} | |
105 | Double_t GetThFrzTemperature() const {return fHydjetParams.fThFO;} | |
106 | Double_t GetMuPionThermal() const {return fHydjetParams.fMu_th_pip;} | |
107 | Int_t GetSeed() const {return fHydjetParams.fSeed;} | |
108 | Double_t GetTauB() const {return fHydjetParams.fTau;} | |
109 | Double_t GetSigmaTau() const {return fHydjetParams.fSigmaTau;} | |
110 | Double_t GetRmaxB() const {return fHydjetParams.fR;} | |
111 | Double_t GetYlMax() const {return fHydjetParams.fYlmax;} | |
112 | Double_t GetEtaRMax() const {return fHydjetParams.fUmax;} | |
113 | Double_t GetMomAsymmPar() const {return fHydjetParams.fDelta;} | |
114 | Double_t GetCoordAsymmPar() const {return fHydjetParams.fEpsilon;} | |
115 | Int_t GetEtaType() const {return fHydjetParams.fEtaType;} | |
116 | Double_t GetGammaS() const {return fHydjetParams.fCorrS;} | |
117 | Int_t GetPyquenNhsel() const {return fHydjetParams.fNhsel;} | |
118 | Int_t GetPyquenShad() const {return fHydjetParams.fIshad;} | |
119 | Double_t GetPyquenPtmin() const {return fHydjetParams.fPtmin;} | |
120 | Double_t GetPyquenT0() const {return fHydjetParams.fT0;} | |
121 | Double_t GetPyquenTau0() const {return fHydjetParams.fTau0;} | |
122 | Double_t GetPyquenNf() const {return fHydjetParams.fNf;} | |
123 | Double_t GetPyquenIenglu() const {return fHydjetParams.fIenglu;} | |
124 | Double_t GetPyquenIanglu() const {return fHydjetParams.fIanglu;} | |
125 | const Char_t* GetPDGParticleFile() const {return fParticleFilename;} | |
126 | const Char_t* GetPDGDecayFile() const {return fDecayFilename;} | |
786056a2 | 127 | |
03896fc4 | 128 | protected: |
129 | Int_t fTrials; // Number of trials | |
130 | TUHKMgen *fUHKMgen; // UHKM | |
131 | ||
132 | InitialParamsHydjet_t fHydjetParams; // list of parameters for the initial state | |
133 | // details for the PDG database | |
134 | Char_t fParticleFilename[256]; // particle list filename | |
135 | Char_t fDecayFilename[256]; // decay table filename | |
136 | Int_t fStableFlagPDG[500]; // array of PDG codes flagged | |
137 | Bool_t fStableFlagStatus[500]; // array of decay flag status | |
138 | Int_t fStableFlagged; // number of toggled decay flags | |
139 | ||
140 | void SetAllParameters(); | |
141 | void CheckPDGTable(); | |
142 | ||
143 | private: | |
144 | void Copy(TObject &rhs) const; | |
145 | AliGenUHKM(const AliGenUHKM&); | |
146 | AliGenUHKM & operator = (const AliGenUHKM &); | |
147 | ||
b1c2e580 | 148 | ClassDef(AliGenUHKM, 6) // AliGenerator interface to UHKM |
149 | }; | |
150 | #endif | |
151 | ||
152 | ||
153 | ||
154 | ||
155 |