Thermal-FIST  1.3
Package for hadron resonance gas model applications
FreezeoutModels.h
Go to the documentation of this file.
1 /*
2  * Thermal-FIST package
3  *
4  * Copyright (c) 2019-2019 Volodymyr Vovchenko
5  *
6  * GNU General Public License (GPLv3 or later)
7  */
8 #ifndef FREEZEOUTMODELS_H
9 #define FREEZEOUTMODELS_H
10 
11 //#include "HRGEventGenerator/RandomGenerators.h"
12 #include <cmath>
13 
14 namespace thermalfist {
15 
29  public:
30 
31  BoostInvariantFreezeoutParametrization() : m_ProbabilityMaximumComputed(false), m_ProbabilityMaximum(1.) {}
33 
37  virtual double Rfunc(double zeta) const { return zeta; }
38 
42  virtual double dRdZeta(double zeta) const { return (Rfunc(zeta + dzeta) - Rfunc(zeta)) / dzeta; }
43 
47  virtual double taufunc(double zeta) const { return 1.; }
48 
52  virtual double dtaudZeta(double zeta) const { return (taufunc(zeta + dzeta) - taufunc(zeta)) / dzeta; }
53 
57  virtual double etaperp(double zeta) const { return 0.; }
58 
59  virtual double sinhetaperp(double zeta) const { return sinh(etaperp(zeta)); }
60  virtual double coshetaperp(double zeta) const { return cosh(etaperp(zeta)); }
61  virtual double tanhetaperp(double zeta) const { return sinhetaperp(zeta) / coshetaperp(zeta); }
62 
69  virtual double ZetaProbability(double zeta) const;// { return zeta; }
70 
71  virtual double ProbabilityMaximum();
72 
79  //virtual double GetRandomZeta(MTRand& rangen = RandomGenerators::randgenMT);
80 
84  virtual bool InverseZetaDistributionIsExplicit() const { return false; }
85 
89  virtual double InverseZetaDistribution(double xi) const { return 0.; }
90 
91 
92  protected:
96  virtual double ComputeProbabilitydMaximum();
97 
98 
99  private:
105  virtual double TernarySearchForIntegrandMaximum(double zetaMin = 0., double zetaMax = 1.) const;
106 
107  static const double dzeta;
108 
109  bool m_ProbabilityMaximumComputed;
110  double m_ProbabilityMaximum;
111  };
112 
120  public:
121 
131  CylindricalBlastWaveParametrization(double betaSurface = 0.5, double nPower = 1., double tau = 10., double Rmax = 6.);
132 
134 
135  // Override functions begin
136 
137  virtual double Rfunc(double zeta) const { return zeta * m_R; }
138 
139  virtual double dRdZeta(double zeta) const { return m_R; }
140 
141  virtual double taufunc(double zeta) const { return m_tau; }
142 
143  virtual double dtaudZeta(double zeta) const { return 0.; }
144 
145  virtual double etaperp(double zeta) const { return atanh(m_BetaS * pow(zeta, m_n)); }
146 
147 
148  virtual double sinhetaperp(double zeta) const { return m_BetaS * pow(zeta, m_n) / sqrt(1. - m_BetaS * m_BetaS * pow(zeta, 2. * m_n)); }
149  virtual double coshetaperp(double zeta) const { return 1. / sqrt(1. - m_BetaS * m_BetaS * pow(zeta, 2. * m_n)); }
150  virtual double tanhetaperp(double zeta) const { return m_BetaS * pow(zeta, m_n); }
151 
152  virtual double ZetaProbability(double zeta) const;
153 
154  protected:
155  virtual double ComputeProbabilitydMaximum() { return ZetaProbability(1.); }
156 
157  // Override functions end
158 
159  private:
160  double m_BetaS, m_n;
161  double m_tau, m_R;
162  };
163 
171  public:
172 
180  CracowFreezeoutParametrization(double RoverTauH = 1., double tauH = 10.);
181 
183 
184  // Override functions begin
185 
186  virtual double Rfunc(double zeta) const { return zeta * Rmax(); }
187 
188  virtual double dRdZeta(double zeta) const { return Rmax(); }
189 
190  virtual double taufunc(double zeta) const { return m_tauH * coshetaperp(zeta); }
191 
192  virtual double dtaudZeta(double zeta) const { return Rmax() * sinhetaperp(zeta) / coshetaperp(zeta); }
193 
194  virtual double etaperp(double zeta) const { return asinh(zeta * m_RoverTauH); }
195 
196 
197  virtual double sinhetaperp(double zeta) const { return zeta * m_RoverTauH; }
198  virtual double coshetaperp(double zeta) const { return sqrt(1. + zeta * zeta * m_RoverTauH * m_RoverTauH); }
199 
200  virtual double ZetaProbability(double zeta) const;
201 
202  //virtual double GetRandomZeta(MTRand& rangen = RandomGenerators::randgenMT);
203 
204  protected:
205  virtual double ComputeProbabilitydMaximum() { return ZetaProbability(1.); }
206 
207  virtual bool InverseZetaDistributionIsExplicit() const { return true; }
208 
209  virtual double InverseZetaDistribution(double xi) const { return sqrt(xi); }
210 
211  // Override functions end
212 
213  private:
214  double Rmax() const { return m_RoverTauH * m_tauH; }
215 
216  double m_RoverTauH, m_tauH;
217  };
218 
219 } // namespace thermalfist
220 
221 #endif
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of .
virtual double taufunc(double zeta) const
Proper time vs .
virtual double taufunc(double zeta) const
Proper time vs .
virtual double coshetaperp(double zeta) const
virtual double dtaudZeta(double zeta) const
d/d
virtual double tanhetaperp(double zeta) const
virtual double ZetaProbability(double zeta) const
Proportional to probability of having given value.
virtual double dtaudZeta(double zeta) const
d/d
virtual double dtaudZeta(double zeta) const
d/d
virtual double tanhetaperp(double zeta) const
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the probability density.
virtual double InverseZetaDistribution(double xi) const
Inverse function of variable distribution used in random number generation.
Implements the cylindrically symmetric blast-wave model parametrization.
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the probability density.
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the probability density.
virtual double taufunc(double zeta) const
Proper time vs .
virtual double Rfunc(double zeta) const
Transverse radius vs .
virtual double dRdZeta(double zeta) const
dR/d
virtual double InverseZetaDistribution(double xi) const
Inverse function of variable distribution used in random number generation.
virtual double dRdZeta(double zeta) const
dR/d
virtual double coshetaperp(double zeta) const
virtual double dRdZeta(double zeta) const
dR/d
virtual bool InverseZetaDistributionIsExplicit() const
Samples zeta for use in Monte Carlo event generator.
Base class implementing a longitudinally boost-invariant azimuthally symmetric freeze-out parametriza...
virtual double sinhetaperp(double zeta) const
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of .
virtual bool InverseZetaDistributionIsExplicit() const
Samples zeta for use in Monte Carlo event generator.
virtual double sinhetaperp(double zeta) const
virtual double Rfunc(double zeta) const
Transverse radius vs .
virtual double coshetaperp(double zeta) const
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of .
The main namespace where all classes and functions of the Thermal-FIST library reside.
Implements the Cracow (Hubble-like) freeze-out model parametrization.
virtual double Rfunc(double zeta) const
Transverse radius vs .
virtual double sinhetaperp(double zeta) const