+// InitialStateHydjet is the class which controls the entire
+// event simulation (input parameters, physics, output)
+// InitialStateHydjet inherits from class InitialState
+// MultIni() member function initializes PYQUEN and calculates the average soft multiplicities
+// Initialize() member function calls the PYQUEN soubroutine for the hard part of the event
+// The resonance decay is performed by the function InitialState::Evolve()
+
/*
Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
*/
-#ifndef INITIALSTATEHYDJET_INCLUDED
-#define INITIALSTATEHYDJET_INCLUDED
+#ifndef INITIALSTATEHYDJET_H
+#define INITIALSTATEHYDJET_H
-#ifndef DATABASE_PDG
-#include "DatabasePDG.h"
-#endif
-#ifndef PARTICLE_INCLUDED
-#include "Particle.h"
-#endif
-#ifndef INITIAL_STATE
#include "InitialState.h"
-#endif
+
+class ParticleAllocator;
+
+const Int_t kNPartTypes = 1000;
struct InitialParamsHydjet_t {
Double_t fEpsilon; //coordinate asymmetry parameter
Int_t fDecay; // flag to switch on/off hadron decays<0: decays off,>=0: decays on, (default: 0)
- Int_t fWeakDecay; //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
+ Double_t fWeakDecay; //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
Int_t fPythDecay; //Flag to choose how to decay resonances in high-pt part, fPythDecay: 0 by PYTHIA decayer,
//1 by FASTMC decayer(mstj(21)=0)
// gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
-
Int_t fNPartTypes; //counter of hadron species
- Int_t fPartEnc[1000]; //Hadron encodings. Maximal number of hadron species is 100!!!
- Double_t fPartMult[2000]; //Multiplicities of hadron species
- Double_t fPartMu[2000]; //Chemical potentials of hadron species
-
- Double_t fMuTh[1000]; //Chemical potentials at thermal freezeout of hadron species
+ Int_t fPartEnc[kNPartTypes]; //Hadron encodings. Maximal number of hadron species is 100!!!
+ Double_t fPartMult[2*kNPartTypes]; //Multiplicities of hadron species
+ Double_t fPartMu[2*kNPartTypes]; //Chemical potentials of hadron species
+ Double_t fMuTh[kNPartTypes]; //Chemical potentials at thermal freezeout of hadron species
};
+
class InitialStateHydjet : public InitialState {
public:
- InitialStateHydjet() : fParams(), fVolEff(0){};
+
+ InitialStateHydjet() : fParams(), fVolEff(0), fBgen(0), fNpart(0), fNcoll(0) {};
~InitialStateHydjet() {};
void SetVolEff(Double_t value) {fVolEff = value;}
- Double_t GetVolEff() {return fVolEff;}
- virtual Double_t GetTime() {return fParams.fDecay;}
+ Double_t GetVolEff() const {return fVolEff;}
+ // virtual Double_t GetTime() {return fParams.fDecay;}
+ virtual Bool_t RunDecays() {return (fParams.fDecay>0 ? kTRUE : kFALSE);}
virtual Int_t GetNev() {return fParams.fNevnt;}
virtual Double_t GetWeakDecayLimit() {return fParams.fWeakDecay;}
virtual void Initialize(List_t &source, ParticleAllocator &allocator);
virtual Bool_t ReadParams();
virtual Bool_t MultIni();
+ virtual void GetCentrality(Double_t& b, Double_t & npart, Double_t & nbin)
+ {b = fBgen; npart = fNpart; nbin = fNcoll;}
+
Bool_t IniOfThFreezeoutParameters();
-
- Double_t f(Double_t);
- Double_t f2(Double_t, Double_t);
-
- Double_t SimpsonIntegrator(Double_t, Double_t, Double_t);
- Double_t SimpsonIntegrator2(Double_t, Double_t);
- Double_t MidpointIntegrator2(Double_t, Double_t);
- public:
- InitialParamsHydjet_t fParams; // the list of initial state parameters
- private:
- Double_t fVolEff; // the effective volume
-
+ InitialParamsHydjet_t fParams; // the list of initial state parameters
+
+ private:
+ Double_t fVolEff; // the effective volume
+ // Collision geometry
+ Double_t fBgen; // Generated impact parameter
+ Double_t fNpart; // Number of participants
+ Double_t fNcoll; // Number of collisions
+
+ Double_t F2(Double_t x, Double_t y);
+
+ Double_t SimpsonIntegrator(Double_t a, Double_t b, Double_t phi);
+ Double_t SimpsonIntegrator2(Double_t a, Double_t b);
+ Double_t MidpointIntegrator2(Double_t a, Double_t b);
};
#endif