Thermal-FIST 1.5
Package for hadron resonance gas model applications
Loading...
Searching...
No Matches
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
14namespace 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 sinhetaperp(double zeta) const
virtual double coshetaperp(double zeta) const
virtual double tanhetaperp(double zeta) const
virtual bool InverseZetaDistributionIsExplicit() const
Samples zeta for use in Monte Carlo event generator.
virtual double taufunc(double zeta) const
Proper time \tau vs \zeta.
virtual double dRdZeta(double zeta) const
dR/d\zeta
virtual double InverseZetaDistribution(double xi) const
Inverse function of \zeta variable distribution used in random number generation.
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of \zeta.
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the \zeta probability density.
virtual double ZetaProbability(double zeta) const
Proportional to probability of having given \zeta value.
virtual double dtaudZeta(double zeta) const
d\tau/d\zeta
virtual double Rfunc(double zeta) const
Transverse radius vs \zeta.
virtual double Rfunc(double zeta) const
Transverse radius vs \zeta.
virtual double ZetaProbability(double zeta) const
Proportional to probability of having given \zeta value.
virtual bool InverseZetaDistributionIsExplicit() const
Samples zeta for use in Monte Carlo event generator.
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the \zeta probability density.
virtual double InverseZetaDistribution(double xi) const
Inverse function of \zeta variable distribution used in random number generation.
virtual double coshetaperp(double zeta) const
virtual double taufunc(double zeta) const
Proper time \tau vs \zeta.
virtual double sinhetaperp(double zeta) const
virtual double dtaudZeta(double zeta) const
d\tau/d\zeta
CracowFreezeoutParametrization(double RoverTauH=1., double tauH=10.)
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of \zeta.
virtual double dRdZeta(double zeta) const
dR/d\zeta
virtual double taufunc(double zeta) const
Proper time \tau vs \zeta.
virtual double tanhetaperp(double zeta) const
CylindricalBlastWaveParametrization(double betaSurface=0.5, double nPower=1., double tau=10., double Rmax=6.)
virtual double etaperp(double zeta) const
Transverse flow rapidity as a function of \zeta.
virtual double ComputeProbabilitydMaximum()
Computes and sets the maximum of the \zeta probability density.
virtual double Rfunc(double zeta) const
Transverse radius vs \zeta.
virtual double dtaudZeta(double zeta) const
d\tau/d\zeta
virtual double dRdZeta(double zeta) const
dR/d\zeta
virtual double sinhetaperp(double zeta) const
virtual double ZetaProbability(double zeta) const
Proportional to probability of having given \zeta value.
virtual double coshetaperp(double zeta) const
The main namespace where all classes and functions of the Thermal-FIST library reside.
Definition CosmicEoS.h:9