8#ifndef MOMENTUMDISTRIBUTION_H
9#define MOMENTUMDISTRIBUTION_H
39 virtual double dndp(
double p)
const = 0;
42 virtual double dndy(
double y)
const = 0;
45 virtual double dnmtdmt(
double mt)
const = 0;
48 virtual double d2ndptdy(
double pt,
double y)
const = 0;
88 m_Gamma = 1. / sqrt(1. - m_Beta * m_Beta);
107 if (pdgid != 0)
m_PDGID = pdgid;
108 m_Gamma = 1. / sqrt(1. - m_Beta * m_Beta);
116 virtual double dndp(
double p)
const;
118 virtual double dndy(
double y)
const;
120 virtual double dnmtdmt(
double mt)
const;
122 virtual double d2ndptdy(
double pt,
double y)
const;
127 double w(
double p)
const {
131 double alpha(
double p)
const {
132 return m_Gamma * m_Beta * p / m_T;
141 std::vector<double> m_xlag, m_wlag;
163 m_FreezeoutModel(freezeoutModel),
164 m_T(T), m_EtaMax(etamax)
166 if (m_FreezeoutModel == NULL) {
169 m_NormY = m_NormPt = m_Norm = 1.;
190 virtual double dndp(
double )
const {
return 0.; }
192 virtual double dndy(
double y)
const;
194 virtual double dnmtdmt(
double mt)
const;
196 virtual double d2ndptdy(
double pt,
double y)
const;
207 virtual double dndysingle(
double y)
const;
209 virtual double dndptsingle(
double pt,
double y)
const;
212 virtual double dndpt(
double pt)
const {
return pt *
dnmtdmt(sqrt(pt * pt +
m_Mass *
m_Mass)); }
214 virtual double dndpt(
double pt,
double y)
const;
216 BoostInvariantFreezeoutParametrization* m_FreezeoutModel;
220 double m_NormY, m_NormPt, m_Norm;
221 std::vector<double> m_xlag, m_wlag;
222 std::vector<double> m_xlegT, m_wlegT;
223 std::vector<double> m_xlegY, m_wlegY;
224 std::vector<double> m_xlegeta, m_wlegeta;
226 SplineFunction m_dndy, m_dndyint;
257 SSHDistribution(
int pdgid = 0,
double mass = 0.,
double T = 0.100,
double betas = 0.5,
double etamax = 0.5,
double npow = 1.,
bool norm =
false) :
259 m_T(T), m_BetaS(betas), m_EtaMax(etamax), m_n(npow)
261 m_NormY = m_NormPt = m_Norm = 1.;
280 void SetParameters(
double T,
double betas,
double etamax,
double npow,
double mass,
int pdgid = 0,
bool norm =
true) {
286 if (pdgid != 0)
m_PDGID = pdgid;
287 m_NormY = m_NormPt = m_Norm = 1.;
301 m_BetaS = (2. + m_n) / 2. * betaT;
307 virtual double dndy(
double y,
double pt)
const;
310 virtual double dndysingle(
double y,
double pt)
const;
313 virtual double dndpt(
double pt)
const;
317 virtual double dndp(
double )
const {
return 0.; }
319 virtual double dndy(
double y)
const;
321 virtual double dnmtdmt(
double mt)
const;
323 virtual double d2ndptdy(
double pt,
double y)
const;
332 virtual double dndptsingle(
double pt,
double y)
const;
335 virtual double dndpt(
double pt,
double y)
const;
337 double w(
double p)
const {
341 double asinh(
double x)
const {
342 return log(x + sqrt(1. + x * x));
345 double atanh(
double x)
const {
346 return 0.5 * log((1. + x) / (1. - x));
349 double betar(
double r)
const {
353 return m_BetaS * r * r;
355 return m_BetaS * pow(r, m_n);
358 double rho(
double r)
const {
return atanh(betar(r)); }
365 double m_BetaS, m_EtaMax;
366 double m_NormY, m_NormPt, m_Norm;
368 std::vector<double> m_xlag, m_wlag;
369 std::vector<double> m_xlegT, m_wlegT;
370 std::vector<double> m_xlegY, m_wlegY;
371 std::vector<double> m_xlegeta, m_wlegeta;
373 SplineFunction m_dndy, m_dndyint;
Base class implementing a longitudinally boost-invariant azimuthally symmetric freeze-out parametriza...
virtual double dndy(double y) const
Distribution density over the longitudinal rapidity.
BoostInvariantMomentumDistribution(BoostInvariantFreezeoutParametrization *freezeoutModel=NULL, int pdgid=0, double mass=0., double T=0.100, double etamax=0.5, bool norm=false)
virtual double ZetaIntegrandpT(double zeta, double pt) const
virtual double dnmtdmt(double mt) const
Transverse mass distribution.
virtual double d2ndptdy(double pt, double y) const
2D distribution density in rapidity and transverse momentum
virtual ~BoostInvariantMomentumDistribution()
virtual double ZetaIntegrandpTYSingleFireball(double zeta, double pt, double y) const
void Normalize()
Normalizes the momentum distribution to unity.
virtual double dndp(double) const
Distribution density over the absolute value of the 3-momentum.
virtual double d2ndptdy(double pt, double y) const =0
2D distribution density in rapidity and transverse momentum
bool m_Normalized
Whether the distribution has been normalized to unity.
Acceptance::AcceptanceFunction * m_acc
Pointer to acceptance function.
virtual void Normalize()=0
Normalizes the momentum distribution to unity.
bool isNormalized() const
Whether the distribution has been normalized to unity.
virtual ~MomentumDistributionBase()
Destructor.
void SetAcceptance(Acceptance::AcceptanceFunction *acc_, double ycm_=0.)
virtual double dndp(double p) const =0
Distribution density over the absolute value of the 3-momentum.
double m_Mass
Mass of a particle.
virtual double dnmtdmt(double mt) const =0
Transverse mass distribution.
virtual double dndy(double y) const =0
Distribution density over the longitudinal rapidity.
MomentumDistributionBase(int pdgid=0, double mass=0.)
int m_PDGID
PDG code of a particle.
bool m_useacc
Whether the acceptance functions are used.
double m_ycm
Center-of-mass rapidity for the acceptance function.
SSHDistribution(int pdgid=0, double mass=0., double T=0.100, double betas=0.5, double etamax=0.5, double npow=1., bool norm=false)
virtual double dndpt(double pt) const
The pT distribution function.
virtual double dndysingle(double y, double pt) const
Rapidity distribution of a single fireball at fixed pT.
virtual double dnmtdmt(double mt) const
Transverse mass distribution.
void SetMeanBetaT(double betaT)
Set the mean transverse flow velocity.
virtual ~SSHDistribution()
void SetParameters(double T, double betas, double etamax, double npow, double mass, int pdgid=0, bool norm=true)
Set the parameters of the longitudinal blast-wave distribution.
virtual double dndy(double y, double pt) const
Rapidity distribution at fixed pT.
virtual double dndp(double) const
Distribution density over the absolute value of the 3-momentum.
virtual double d2ndptdy(double pt, double y) const
2D distribution density in rapidity and transverse momentum
void Normalize()
Normalizes the momentum distribution to unity.
SiemensRasmussenDistribution(int pdgid=0, double mass=0., double T=0.100, double beta=0.5)
void Normalize()
Normalizes the momentum distribution to unity.
virtual ~SiemensRasmussenDistribution()
virtual double dndy(double y) const
Distribution density over the longitudinal rapidity.
void SetParameters(double T, double beta, double mass, int pdgid=0)
Set the parameters of the Siemens-Rasmussen distribution.
virtual double d2ndptdy(double pt, double y) const
2D distribution density in rapidity and transverse momentum
virtual double dndp(double p) const
Distribution density over the absolute value of the 3-momentum.
virtual double dnmtdmt(double mt) const
Transverse mass distribution.
The main namespace where all classes and functions of the Thermal-FIST library reside.
Structure which contains the binomial probabilities for particle with given y and pt to be accepted.