]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TUHKMgen/UHKM/InitialStateHydjet.h
remove VV inheritance from STEER
[u/mrichter/AliRoot.git] / TUHKMgen / UHKM / InitialStateHydjet.h
1 // InitialStateHydjet is the class which controls the entire 
2 // event simulation (input parameters, physics, output)
3 // InitialStateHydjet inherits from class InitialState
4 // MultIni() member function initializes PYQUEN and calculates the average soft multiplicities 
5 // Initialize() member function calls the PYQUEN soubroutine for the hard part of the event
6 // The resonance decay is performed by the function InitialState::Evolve()
7
8 /*                                                                            
9                                                                             
10         Nikolai Amelin, Ludmila Malinina, Timur Pocheptsov (C) JINR/Dubna
11       amelin@sunhe.jinr.ru, malinina@sunhe.jinr.ru, pocheptsov@sunhe.jinr.ru 
12                            November. 2, 2005                                
13
14 */
15
16 #ifndef INITIALSTATEHYDJET_H
17 #define INITIALSTATEHYDJET_H
18
19 #include "InitialState.h"
20
21 class ParticleAllocator;
22
23 const Int_t kNPartTypes = 1000;
24
25 struct InitialParamsHydjet_t {
26
27   Int_t fNevnt; //number of events
28   Double_t fSqrtS;        //cms energy per nucleon
29   Double_t fAw;        // atomic number of colliding nuclei
30   Int_t fIfb;      // flag of type of centrality generation (=0 is fixed by fBfix, not 0 
31                                    //impact parameter is generated in each event between fBfmin 
32                                    //and fBmax according with Glauber model (f-la 30)
33    Double_t fBmin;         //minimum impact parameter in units of nuclear radius RA 
34    Double_t fBmax;         //maximum impact parameter in units of nuclear radius RA
35    Double_t fBfix;         //fix impact parameter in units of nuclear radius RA
36
37    Int_t fSeed;         //parameter to set the random nuber seed (=0 the current time is used
38                                    //to set the random generator seed, !=0 the value fSeed is 
39                                    //used to set the random generator seed and then the state of random
40                                    //number generator in PYTHIA MRPY(1)=fSeed
41        
42    Double_t fT;     //chemical freeze-out temperature in GeV    
43    Double_t fMuB;     //baryon potential 
44    Double_t fMuS;    //strangeness potential 
45    Double_t fMuI3;    //isospin potential   
46    Double_t fThFO;    //thermal freeze-out temperature T^th in GeV
47    Double_t fMu_th_pip;    // effective chemical potential of positivly charged pions at thermal in GeV 
48
49        
50    Double_t fTau;     //proper time value
51    Double_t fSigmaTau;     //its standart deviation (emission duration)
52    Double_t fR;     //maximal transverse radius 
53    Double_t fYlmax;     //maximal longitudinal rapidity 
54    Double_t fUmax;     //maximal transverse velocity multiplaed on \gamma_r 
55    Double_t fDelta;     //momentum asymmetry parameter
56    Double_t fEpsilon;     //coordinate asymmetry parameter
57   
58    Int_t fDecay;    // flag to switch on/off hadron decays<0: decays off,>=0: decays on, (default: 0)
59    Double_t fWeakDecay;    //flag to switch on/off weak hadron decays <0: decays off, >0: decays on, (default: 0)
60    Int_t fPythDecay;    //Flag to choose how to decay resonances in high-pt part, fPythDecay: 0 by PYTHIA decayer, 
61                                      //1 by FASTMC decayer(mstj(21)=0)  
62   
63    Int_t fEtaType;     // 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   
67    Int_t fTMuType;     // flag to use calculated chemical freeze-out temperature,
68                                      //baryon potential and strangeness potential as a function of fSqrtS 
69
70    Double_t fCorrS;     // flag and value to include strangeness supression factor    
71    Int_t fNhsel;         //flag to switch on/off jet and hydro-state production (0: jet
72                                      // production off and hydro on, 1: jet production on and jet quenching
73                                      // off and hydro on, 2: jet production on and jet quenching on and
74                                      // hydro on, 3: jet production on and jet quenching off and hydro
75                                      // off, 4: jet production on and jet quenching on and hydro off
76  
77    Int_t fIshad;         //flag to switch on/off impact parameter dependent nuclear
78                                     // shadowing for gluons and light sea quarks (u,d,s) (0: shadowing off,
79                                     // 1: shadowing on for fAw=207, 197, 110, 40, default: 1
80   
81    Double_t fPtmin;       //minimal transverse momentum transfer p_T of hard
82                                    // parton-parton scatterings in GeV (the PYTHIA parameter ckin(3)=fPtmin)
83    
84 //  PYQUEN energy loss model parameters:
85  
86    Double_t fT0;          // initial temperature (in GeV) of QGP for
87                                    //central Pb+Pb collisions at mid-rapidity (initial temperature for other
88                                   //centralities and atomic numbers will be calculated automatically) (allowed range is 0.2<fT0<2) 
89   
90    Double_t fTau0;        //proper QGP formation time in fm/c (0.01<fTau0<10)
91    Int_t fNf;          //number of active quark flavours N_f in QGP fNf=0, 1,2 or 3 
92    Int_t fIenglu;      // flag to fix type of in-medium partonic energy loss 
93                                   //(0: radiative and collisional loss, 1: radiative loss only, 2:
94                                   //collisional loss only) (default: 0);
95    Int_t fIanglu;      //flag to fix type of angular distribution of in-medium emitted
96                                   // gluons (0: small-angular, 1: wide-angular, 2:collinear) (default: 0).
97   
98   
99   Int_t    fNPartTypes;                   //counter of hadron species  
100   Int_t    fPartEnc[kNPartTypes];                 //Hadron encodings. Maximal number of hadron species is 100!!!
101   Double_t fPartMult[2*kNPartTypes];                //Multiplicities of hadron species
102   Double_t fPartMu[2*kNPartTypes];                //Chemical potentials of hadron species
103
104   Double_t fMuTh[kNPartTypes];                    //Chemical potentials at thermal freezeout of hadron species
105
106 };
107
108
109 class InitialStateHydjet : public InitialState {
110  public:
111    
112   InitialStateHydjet() : fParams(), fVolEff(0), fBgen(0), fNpart(0), fNcoll(0) {};
113   ~InitialStateHydjet() {};
114   
115   void SetVolEff(Double_t value) {fVolEff = value;}
116   Double_t GetVolEff() const {return fVolEff;}
117   //  virtual Double_t GetTime() {return fParams.fDecay;}
118   virtual Bool_t RunDecays() {return (fParams.fDecay>0 ? kTRUE : kFALSE);}
119   virtual Int_t GetNev() {return fParams.fNevnt;}
120   virtual Double_t GetWeakDecayLimit() {return fParams.fWeakDecay;}  
121   
122   virtual void Initialize(List_t &source, ParticleAllocator &allocator);
123   virtual Bool_t ReadParams();
124   virtual Bool_t MultIni();
125   virtual void GetCentrality(Double_t& b, Double_t & npart, Double_t & nbin)
126       {b = fBgen; npart = fNpart; nbin = fNcoll;}
127   
128   Bool_t IniOfThFreezeoutParameters();
129   
130   InitialParamsHydjet_t fParams;             // the list of initial state parameters
131   
132   private:
133    Double_t fVolEff;                     // the effective volume
134    // Collision geometry
135    Double_t    fBgen;                       // Generated impact parameter
136    Double_t    fNpart;                      // Number of participants
137    Double_t    fNcoll;                      // Number of collisions 
138       
139    Double_t F2(Double_t x, Double_t y);
140    
141    Double_t SimpsonIntegrator(Double_t a, Double_t b, Double_t phi);
142    Double_t SimpsonIntegrator2(Double_t a, Double_t b);
143    Double_t MidpointIntegrator2(Double_t a, Double_t b);
144 };
145
146 #endif