// This class provides an interface between the HYDJET++ Monte-Carlo model // and ROOT (by inheriting from the TGenerator class). // Please look into the FASTMC articles for more documentation on the // needed parameters. #ifndef TUHKMGEN_H #define TUHKMGEN_H #ifndef ROOT_TGenerator #include "TGenerator.h" #endif #ifndef INITIALSTATEHYDJET_H #include "UHKM/InitialStateHydjet.h" #endif #ifndef DATABASE_PDG #include "UHKM/DatabasePDG.h" #endif #include using namespace std; //class DatabasePDG; class TUHKMgen : public TGenerator { public: TUHKMgen(); virtual ~TUHKMgen(); virtual void Initialize(); virtual void GenerateEvent(); virtual Int_t ImportParticles(TClonesArray *particles, const Option_t* option="prim"); virtual TObjArray* ImportParticles(const Option_t* option="prim"); // this function makes available the PDG info in our database virtual DatabasePDG* PDGInfo() const {return fInitialState->PDGInfo();} virtual void GetCentrality(Double_t& b, Double_t & npart, Double_t & nbin) {fInitialState->GetCentrality(b, npart, nbin);} // Setters // set reasonable default parameters suited for central Au+Au collisions at RHIC(200GeV) void SetAllParametersRHIC(); // set reasonable default parameters suited for central Pb+Pb collisions at LHC(5.5TeV) void SetAllParametersLHC(); void SetEcms(Double_t value) {fHydjetParams.fSqrtS = value;} // CMS energy per nucleon [GeV] (<2.24 given temperature and ch pot are used) void SetAw(Double_t value) {fHydjetParams.fAw = value;} // nuclei mass number void SetIfb(Int_t value) {fHydjetParams.fIfb = value;} //b-simulation: 0-fix,1-distributed void SetBfix(Double_t value) {fHydjetParams.fBfix = value;} // fix impact parameter void SetBmin(Double_t value) {fHydjetParams.fBmin = value;} // Minimum impact parameter void SetBmax(Double_t value) {fHydjetParams.fBmax = value;} // Maximum impact parameter void SetChFrzTemperature(Double_t value) {fHydjetParams.fT = value;} // Temperature for the chemical freezeout [GeV] void SetMuB(Double_t value) {fHydjetParams.fMuB = value;} // Baryonic chemical potential [GeV] void SetMuS(Double_t value) {fHydjetParams.fMuS = value;} // Strangeness chemical potential [GeV] void SetMuQ(Double_t value) {fHydjetParams.fMuI3 = value;} // Isospin chemical potential [GeV] void SetThFrzTemperature(Double_t value) {fHydjetParams.fThFO = value;} // Temperature for the thermal freezeout [GeV] void SetMuPionThermal(Double_t value) {fHydjetParams.fMu_th_pip = value;} // Chemical potential for pi+ at thermal freezeout [GeV] void SetSeed(Int_t value) {fHydjetParams.fSeed = value;} //parameter to set the random nuber seed (=0 the current time is used //to set the random generator seed, !=0 the value fSeed is //used to set the random generator seed and then the state of random //number generator in PYTHIA MRPY(1)=fSeed void SetTauB(Double_t value) {fHydjetParams.fTau = value;} // Proper time for the freeze-out hypersurface [fm/c] void SetSigmaTau(Double_t value) {fHydjetParams.fSigmaTau = value;} // Standard deviation for the proper time (emission duration) [fm/c] void SetRmaxB(Double_t value) {fHydjetParams.fR = value;} // Maximal transverse radius [fm] void SetYlMax(Double_t value) {fHydjetParams.fYlmax = value;} // Maximal fireball longitudinal rapidity void SetEtaRMax(Double_t value) {fHydjetParams.fUmax = value;} // Maximal transverse velocity void SetMomAsymmPar(Double_t value) {fHydjetParams.fDelta = value;} // Momentum asymmetry parameter void SetCoordAsymmPar(Double_t value) {fHydjetParams.fEpsilon = value;} // Coordinate asymmetry parameter void SetFlagWeakDecay(Double_t value) {fHydjetParams.fWeakDecay = value;} //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0) void SetEtaType(Int_t value) {fHydjetParams.fEtaType = value;} // flag to choose rapidity distribution, if fEtaType<=0, //then uniform rapidity distribution in [-fYlmax,fYlmax] if fEtaType>0, //then Gaussian with dispertion = fYlmax void SetGammaS(Double_t value) {fHydjetParams.fCorrS = value;} // Strangeness suppression parameter (if gamma_s<=0 then it will be calculated) //not needed now void SetHdec(Double_t value) {fHydjetParams.fTime = value;} // Enable/disable hadronic decays (<0 no decays, >=0 decays) //PYQUEN parameters void SetPyquenNhsel(Int_t value) {fHydjetParams.fNhsel = value;} // Flag to choose the type of event to be generated void SetPyquenShad(Int_t value) {fHydjetParams.fIshad = value;} //flag to switch on/off impact parameter dependent nuclear // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off, // 1: shadowing on for fAw=207, 197, 110, 40, default: 1 void SetPyquenPtmin(Double_t value) {fHydjetParams.fPtmin = value;} // Pyquen input parameter for minimum Pt of parton-parton scattering (5GeV UHKM fireball, no jets // fNhsel = 1 --> UHKM fireball, jets with no quenching // fNhsel = 2 --> UHKM fireball, jets with quenching // fNhsel = 3 --> no UHKM fireball, jets with no quenching // fNhsel = 4 --> no UHKM fireball, jets with quenching void SetPyquenT0(Double_t value) {fHydjetParams.fT0 = value;} //proper QGP formation tempereture void SetPyquenTau0(Double_t value) {fHydjetParams.fTau0 = value;} //proper QGP formation time in fm/c (0.01