39  for (
int r = 0; r < model->TPS()->ComponentsNumber(); ++r) {
 
   44    double mn1 = model->ScaledVariancePrimordial(r) * model->Densities()[r] / pow(model->
Parameters().
T, 3) / pow(
xMath::GeVtoifm(), 3);
 
   46    double mn2 = 0., mn3 = 0.;
 
   47    for (
int j = 0; j < model->TPS()->ComponentsNumber(); ++j) {
 
   51      for (
size_t i = 0; i < decayDistributions.size(); ++i) {
 
   52        njavr += decayDistributions[i].first * decayDistributions[i].second[j];
 
   55      mn2 += ch1[j] * njavr;
 
   56      mn3 += ch2[j] * njavr;
 
   59    ret += mn1 * mn2 * mn3;
 
 
   73int main(
int argc, 
char *argv[])
 
   75  int withMonteCarlo = 1;
 
   77    withMonteCarlo = atoi(argv[1]);
 
   81    nevents = atoi(argv[2]);
 
   83  string listname = string(ThermalFIST_INPUT_FOLDER) + 
"/list/PDG2014/list.dat";
 
  124  vector<double> coefsk(parts.
Particles().size(), 0.);
 
  125  coefsk[parts.
PdgToId(321)]  =  1.;
 
  126  coefsk[parts.
PdgToId(-321)] = -1.;
 
  136  double musp = 0., muqp = 0., mucp = 0.;
 
  139  printf(
"Analytic\n");
 
  141  FILE *f = fopen(
"cpc4.analyt.dat", 
"w");
 
  143  fprintf(f, 
"%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s\n",
 
  159  vector<double> ens, Ts, muBs, muQs, muSs;
 
  161  double logSmin = log(smin);
 
  162  double logSmax = log(smax);
 
  163  double dlogS = (logSmax - logSmin) / iterss;
 
  164  for (
int is = 0; is <= iterss; ++is) {
 
  165    double ss = exp(logSmin + is * dlogS);
 
  167    double muB = 
muBss(ss);
 
  186    muQs.push_back(muqp);
 
  187    muSs.push_back(musp);
 
  192    double chi1B = model->CalculateBaryonDensity() / pow(T, 3) / pow(
xMath::GeVtoifm(), 3);
 
  193    double chi1Q = model->CalculateChargeDensity() / pow(T, 3) / pow(
xMath::GeVtoifm(), 3);
 
  194    double chi1S = model->CalculateStrangenessDensity() / pow(T, 3) / pow(
xMath::GeVtoifm(), 3);
 
  214    printf(
"%15lf%15lf%15lf%15lf%15lf%15lf%15lf\n", 
 
  223    fprintf(f, 
"%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf\n",
 
  247  printf(
"%30s %lf s\n", 
"Running time:", (wt2 - wt1));
 
  248  printf(
"%30s %lf s\n", 
"Time per single calculation:", (wt2 - wt1) / iters);
 
  255  printf(
"Monte Carlo\n");
 
  257  f = fopen(
"cpc4.montecarlo.dat", 
"w");
 
  259  fprintf(f, 
"%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s%15s\n",
 
  279  for (
size_t ind = 0; ind < ens.size(); ind++) {
 
  285    double mc_B = 0., mc_Q = 0., mc_S = 0., mc_p = 0., mc_k = 0.;
 
  286    double mc_B2 = 0., mc_Q2 = 0., mc_S2 = 0., mc_BQ = 0., mc_QS = 0., mc_BS = 0.;
 
  287    double mc_p2 = 0., mc_k2 = 0., mc_pk = 0., mc_pQ = 0., mc_Qk = 0.;
 
  297    for (
int i = 0; i < nevents; ++i) {
 
  299      int mcev_B = 0, mcev_Q = 0, mcev_S = 0, mcev_p = 0, mcev_k = 0;
 
  301      for (
size_t part = 0; part < ev.
Particles.size(); ++part) {
 
  302        long long pdgid = ev.
Particles[part].PDGID;
 
  310        else if (pdgid == -2212)
 
  315        else if (pdgid == -321)
 
  319      mc_B += ev.
weight * mcev_B;
 
  320      mc_Q += ev.
weight * mcev_Q;
 
  321      mc_S += ev.
weight * mcev_S;
 
  322      mc_p += ev.
weight * mcev_p;
 
  323      mc_k += ev.
weight * mcev_k;
 
  325      mc_B2 += ev.
weight * mcev_B * mcev_B;
 
  326      mc_Q2 += ev.
weight * mcev_Q * mcev_Q;
 
  327      mc_S2 += ev.
weight * mcev_S * mcev_S;
 
  328      mc_p2 += ev.
weight * mcev_p * mcev_p;
 
  329      mc_k2 += ev.
weight * mcev_k * mcev_k;
 
  331      mc_BQ += ev.
weight * mcev_B * mcev_Q;
 
  332      mc_QS += ev.
weight * mcev_Q * mcev_S;
 
  333      mc_BS += ev.
weight * mcev_B * mcev_S;
 
  334      mc_pQ += ev.
weight * mcev_p * mcev_Q;
 
  335      mc_pk += ev.
weight * mcev_p * mcev_k;
 
  336      mc_Qk += ev.
weight * mcev_Q * mcev_k;
 
  341    double chi1B = mc_B / wsum;
 
  342    double chi1Q = mc_Q / wsum;
 
  343    double chi1S = mc_S / wsum;
 
  345    double chi1p = mc_p / wsum;
 
  346    double chi1k = mc_k / wsum;
 
  348    double chi2B = mc_B2 / wsum - mc_B / wsum * mc_B / wsum;
 
  349    double chi2Q = mc_Q2 / wsum - mc_Q / wsum * mc_Q / wsum;
 
  350    double chi2S = mc_S2 / wsum - mc_S / wsum * mc_S / wsum;
 
  351    double chi11BS = mc_BS / wsum - mc_B / wsum * mc_S / wsum;
 
  352    double chi11QS = mc_QS / wsum - mc_Q / wsum * mc_S / wsum;
 
  353    double chi11BQ = mc_BQ / wsum - mc_B / wsum * mc_Q / wsum;
 
  355    double chi2p = mc_p2 / wsum - mc_p / wsum * mc_p / wsum;
 
  356    double chi2k = mc_k2 / wsum - mc_k / wsum * mc_k / wsum;
 
  357    double chi11pk = mc_pk / wsum - mc_p / wsum * mc_k / wsum;
 
  358    double chi11Qk = mc_Qk / wsum - mc_Q / wsum * mc_k / wsum;
 
  359    double chi11pQ = mc_pQ / wsum - mc_p / wsum * mc_Q / wsum;
 
  361    printf(
"%15lf%15lf%15lf%15lf%15lf%15lf%15lf\n", ens[ind], chi11BS / chi2S, chi11QS / chi2S, chi11BQ / chi2B, chi11pk / chi2k, chi11Qk / chi2k, chi11pQ / chi2p);
 
  364    fprintf(f, 
"%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf%15lf\n",
 
  386  printf(
"%30s %lf s\n", 
"Running time:", (wt2 - wt1));
 
  387  printf(
"%30s %lf s\n", 
"Time per single calculation:", (wt2 - wt1) / iters);
 
 
Class containing all information about a particle specie.
 
int BaryonCharge() const
Particle's baryon number.
 
@ BWTwoGamma
Energy-independent Breit-Wigner in +-2\Gamma interval.
 
void SetStable(bool stable=true)
Sets particle stability flag.
 
int ElectricCharge() const
Particle's electric charge.
 
Class containing the particle list.
 
std::vector< std::pair< double, std::vector< int > > > ResonanceFinalStatesDistribution
 
int PdgToId(long long pdgid) const
Transforms PDG ID to a 0-based particle id number.
 
const std::vector< ThermalParticle > & Particles() const
Returns the vector of all particle species.
 
const ThermalParticle & ParticleByPDG(long long pdgid) const
ThermalParticle object corresponding to particle species with a provided PDG ID.