File indexing completed on 2025-08-03 08:20:08
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #ifndef MATTER_H
0017 #define MATTER_H
0018
0019 #include "JetEnergyLossModule.h"
0020 #include "Pythia8/Pythia.h"
0021
0022 using namespace Jetscape;
0023
0024 class Matter : public JetEnergyLossModule<
0025 Matter>
0026 {
0027 public:
0028 Matter();
0029 virtual ~Matter();
0030
0031 void Init();
0032
0033
0034 void DoEnergyLoss(double deltaT, double time, double Q2, vector<Parton> &pIn,
0035 vector<Parton> &pOut);
0036 void WriteTask(weak_ptr<JetScapeWriter> w);
0037 void Dump_pIn_info(int i, vector<Parton> &pIn);
0038
0039 double generate_L(double form_time);
0040 double sudakov_Pgg(double g0, double g1, double loc_c, double E);
0041 double sud_val_GG(double h0, double h1, double h2, double loc_d, double E1);
0042 double sud_z_GG(double cg, double cg1, double loc_e, double l_fac, double E2);
0043 double P_z_gg_int(double cg, double cg1, double loc_e, double cg3,
0044 double l_fac, double E2);
0045 double sudakov_Pqg(double g0, double g1, double loc_c, double E);
0046 double sud_val_QG(double h0, double h1, double h2, double loc_d, double E1);
0047 double sud_z_QG(double cg, double cg1, double loc_e, double l_fac, double E2);
0048 double P_z_qg_int(double cg, double cg1, double loc_e, double cg3,
0049 double l_fac, double E2);
0050 double sudakov_Pqg_w_M(double M, double g0, double g1, double loc_c,
0051 double E);
0052 double sud_val_QG_w_M(double M, double h0, double h1, double h2, double loc_d,
0053 double E1);
0054 double sud_z_QG_w_M(double M, double cg, double cg1, double loc_e,
0055 double l_fac, double E2);
0056 double P_z_qg_int_w_M(double M, double cg, double cg1, double loc_e,
0057 double cg3, double l_fac, double E2);
0058 double sudakov_Pqq(double q0, double q1, double loc_c, double E);
0059
0060 double sud_val_QQ(double h0, double h1, double h2, double loc_d, double E1);
0061 double sud_z_QQ(double cg, double cg1, double loc_e, double l_fac, double E2);
0062 double P_z_qq_int(double cg, double cg1, double loc_e, double cg3,
0063 double l_fac, double E2);
0064 double P_z_qp_int(double cg, double cg1, double loc_e, double cg3,
0065 double l_fac, double E2);
0066 double sud_z_QP(double cg, double cg1, double loc_e, double l_fac, double E2);
0067 double sud_val_QP(double h0, double h1, double h2, double loc_d, double E1);
0068 double sudakov_Pqp(double g0, double g1, double loc_c, double E);
0069
0070 double sudakov_Pqq_w_M_vac_only(double M, double q0, double q1, double loc_c,
0071 double E);
0072 double sud_val_QQ_w_M_vac_only(double M, double h0, double h1, double h2,
0073 double loc_d, double E1);
0074 double sud_z_QQ_w_M_vac_only(double M, double cg, double cg1, double loc_e,
0075 double l_fac, double E2);
0076 double P_z_qq_int_w_M_vac_only(double M, double cg, double cg1, double loc_e,
0077 double cg3, double l_fac, double E2);
0078
0079
0080 double generate_vac_t(int p_id, double nu, double t0, double t, double loc_a,
0081 int isp);
0082 double generate_vac_t_w_M(int p_id, double M, double nu, double t0, double t,
0083 double loc_a, int is);
0084 double generate_vac_z(int p_id, double t0, double t, double loc_b, double nu,
0085 int is);
0086 double generate_vac_z_w_M(int p_id, double M, double t0, double t,
0087 double loc_b, double nu, int is);
0088 double alpha_s(double q2);
0089 double profile(double zeta);
0090
0091 double generate_angle();
0092 double generate_kt(double local_qhat, double dzeta);
0093
0094 double qhat = 0.0;
0095 double ehat = 0.0;
0096 double e2hat = 0.0;
0097 double length = 0.0;
0098
0099 unsigned int MaxColor = 0;
0100
0101
0102 double fillQhatTab(double y);
0103 double fncQhat(double zeta);
0104 double fncAvrQhat(double zeta, double tau);
0105
0106 bool matter_on, in_vac, brick_med, recoil_on, broadening_on;
0107 double hydro_Tc, qhat0, alphas, brick_length, vir_factor;
0108 double initR0, initRx, initRy, initRz, initVx, initVy, initVz, initRdotV,
0109 initVdotV, initEner;
0110 double Q00, Q0, T0;
0111
0112 static const int dimQhatTab = 151;
0113 double qhatTab1D[dimQhatTab] = {0.0};
0114 double qhatTab2D[dimQhatTab][dimQhatTab] = {{0.0}};
0115
0116 double tStart;
0117 int iEvent;
0118 bool debug_flag = 0;
0119 long NUM1;
0120
0121
0122 static const int N_p1 = 500;
0123 static const int N_T = 60;
0124 static const int N_e2 = 75;
0125 static double distFncB[N_T][N_p1][N_e2], distFncF[N_T][N_p1][N_e2],
0126 distMaxB[N_T][N_p1][N_e2], distMaxF[N_T][N_p1][N_e2];
0127 static double distFncBM[N_T][N_p1], distFncFM[N_T][N_p1];
0128 double min_p1 = 0.0;
0129 double max_p1 = 1000.0;
0130 double bin_p1 = (max_p1 - min_p1) / N_p1;
0131 double min_T = 0.1;
0132 double max_T = 0.7;
0133 double bin_T = (max_T - min_T) / N_T;
0134 double min_e2 = 0.0;
0135 double max_e2 = 15.0;
0136 double bin_e2 = (max_e2 - min_e2) / N_e2;
0137
0138 static double RHQ[60][20];
0139 static double RHQ11[60][20];
0140 static double RHQ12[60][20];
0141 static double qhatHQ[60][20];
0142
0143
0144 static bool flag_init;
0145
0146
0147
0148 int QhatParametrizationType;
0149 double GeneralQhatFunction(int QhatParametrization, double Temperature, double EntropyDensity, double FixAlphas, double Qhat0, double E, double muSquare);
0150 double RunningAlphaS(double muSquare);
0151 double VirtualityQhatFunction(int QhatParametrization, double enerLoc, double muSquare);
0152 double ModifiedProbability(int QhatParametrization, double tempLoc, double sdLoc, double enerLoc, double muSquare);
0153 double IntegralPDF(double xB, double a, double b);
0154 double qhatA, qhatB, qhatC, qhatD;
0155
0156
0157 void flavor(int &CT, int &KATT0, int &KATT2, int &KATT3,
0158 unsigned int &max_color, unsigned int &color0,
0159 unsigned int &anti_color0, unsigned int &color2,
0160 unsigned int &anti_color2, unsigned int &color3,
0161 unsigned int &anti_color3);
0162 void colljet22(int CT, double temp, double qhat0ud, double v0[4],
0163 double p0[4], double p2[4], double p3[4], double p4[4],
0164 double &qt);
0165 void trans(double v[4], double p[4]);
0166 void transback(double v[4], double p[4]);
0167 void rotate(double px, double py, double pz, double pr[4], int icc);
0168 float ran0(long *idum);
0169 double solve_alphas(double var_qhat, double var_ener, double var_temp);
0170 double fnc0_alphas(double var_alphas, double var_qhat, double var_ener,
0171 double var_temp);
0172 double fnc0_derivative_alphas(double var_alphas, double var_qhat,
0173 double var_ener, double var_temp);
0174
0175 void read_tables();
0176 double Mgc2gc(double s, double t, double M);
0177 double Mqc2qc(double s, double t, double M);
0178 void collHQ22(int CT, double temp, double qhat0ud, double v0[4], double p0[4],
0179 double p2[4], double p3[4], double p4[4], double &qt);
0180
0181 protected:
0182 uniform_real_distribution<double> ZeroOneDistribution;
0183
0184 private:
0185
0186 static RegisterJetScapeModule<Matter> reg;
0187 double tscale;
0188 };
0189
0190 #endif