|
|
|||
File indexing completed on 2026-08-06 09:24:16
0001 // -*- C++ -*- 0002 #ifndef HERWIG_VVKinematics_H 0003 #define HERWIG_VVKinematics_H 0004 // 0005 // This is the declaration of the VVKinematics class. 0006 // 0007 0008 #include "ThePEG/Vectors/Lorentz5Vector.h" 0009 0010 namespace Herwig { 0011 using namespace ThePEG; 0012 0013 /** \ingroup VVKinematics 0014 * The bornVVKinematics class is used to store information on the 0015 * the kinematics of the real emission processes needed for the 0016 * evaluation of matrix elements in the real part of the NLO process. 0017 */ 0018 class bornVVKinematics { 0019 0020 public: 0021 0022 /** 0023 * Default constructor 0024 */ 0025 bornVVKinematics(); 0026 0027 /** 0028 * Meaningful constructor: takes the momenta 0029 * and Bjorken x values of the partons involved 0030 * in the 2->2 scattering of the leading order 0031 * / virtual process and calculates all interesting 0032 * Mandelstam and Born variables. 0033 */ 0034 bornVVKinematics(vector<Lorentz5Momentum> Momenta, double x1, double x2); 0035 0036 public: 0037 0038 /** 0039 * Read-only access to all of the above member variables. 0040 */ 0041 0042 /** 0043 * @name Leading order momentum fractions and associated etabar's: 0044 */ 0045 //@{ 0046 /** 0047 * Leading order momentum fraction for first particle 0048 */ 0049 double x1b() const { return x1b_; } 0050 0051 /** 0052 * Leading order etabar for first particle 0053 */ 0054 double eta1b() const { return eta1b_; } 0055 0056 /** 0057 * Leading order momentum fraction for second particle 0058 */ 0059 double x2b() const { return x2b_; } 0060 0061 /** 0062 * Leading order etabar for second particle 0063 */ 0064 double eta2b() const { return eta2b_; } 0065 //@} 0066 0067 /** 0068 * @name The Born momenta according to the notation of the FMNR papers, 0069 * in the diboson centre of mass frame: 0070 */ 0071 //@{ 0072 /** 0073 * Momentum \f$p_1\f$ 0074 */ 0075 Lorentz5Momentum p1b() const { return p1b_; } 0076 0077 /** 0078 * Momentum \f$p_2\f$ 0079 */ 0080 Lorentz5Momentum p2b() const { return p2b_; } 0081 0082 /** 0083 * Momentum \f$k_1\f$ 0084 */ 0085 Lorentz5Momentum k1b() const { return k1b_; } 0086 0087 /** 0088 * Momentum \f$k_2\f$ 0089 */ 0090 Lorentz5Momentum k2b() const { return k2b_; } 0091 //@} 0092 0093 /** 0094 * @name The diboson invariant mass / shat, that and uhat: 0095 */ 0096 //@{ 0097 /** 0098 * \f$\hat s\f$ 0099 */ 0100 Energy2 sb() const { return sb_; } 0101 0102 /** 0103 * \f$\hat t\f$ 0104 */ 0105 Energy2 tb() const { return tb_; } 0106 0107 /** 0108 * \f$\hat u\f$ 0109 */ 0110 Energy2 ub() const { return ub_; } 0111 //@} 0112 0113 /** 0114 * The diboson rapidity: 0115 * Note Yb_ = + lastY() if flipped = false 0116 * but Yb_ = - lastY() if flipped = true. 0117 * Yb_ is always defined with the quark travelling in the +z direction! 0118 */ 0119 double Yb() const { return Yb_; } 0120 0121 /** 0122 * @name Masses of the final state bosons: 0123 */ 0124 //@{ 0125 /** 0126 * Mass squared og the first boson 0127 */ 0128 Energy2 k12b() const { return k12b_; } 0129 0130 /** 0131 * Mass squared og the second boson 0132 */ 0133 Energy2 k22b() const { return k22b_; } 0134 //@} 0135 0136 /** 0137 * Polar and azimuthal angles of the dibosons in their rest frame: 0138 */ 0139 double theta1b() const { return theta1b_; } 0140 0141 /** 0142 * A check to make sure that the momenta calculated from 0143 * the energies and angles are equal to those of meMomenta(). 0144 */ 0145 void sanityCheck() const; 0146 0147 private: 0148 0149 /** 0150 * Invariants required for the evaluation of 2-> 2 next-to-leading 0151 * order quantities (Frixione et al. NPB.383 WZ production at colliders). 0152 */ 0153 0154 /** 0155 * @name Leading order momentum fractions and associated etabar's: 0156 */ 0157 //@{ 0158 /** 0159 * Leading order momentum fraction for first particle 0160 */ 0161 double x1b_; 0162 0163 /** 0164 * Leading order etabar for first particle 0165 */ 0166 double eta1b_; 0167 0168 /** 0169 * Leading order momentum fraction for second particle 0170 */ 0171 double x2b_; 0172 0173 /** 0174 * Leading order etabar for second particle 0175 */ 0176 double eta2b_; 0177 //@} 0178 0179 /** 0180 * @name The Born momenta according to the notation of the FMNR papers, 0181 * in the diboson centre of mass frame: 0182 */ 0183 //@{ 0184 /** 0185 * Momentum \f$p_1\f$ 0186 */ 0187 Lorentz5Momentum p1b_; 0188 0189 /** 0190 * Momentum \f$p_2\f$ 0191 */ 0192 Lorentz5Momentum p2b_; 0193 0194 /** 0195 * Momentum \f$k_1\f$ 0196 */ 0197 Lorentz5Momentum k1b_; 0198 0199 /** 0200 * Momentum \f$k_2\f$ 0201 */ 0202 Lorentz5Momentum k2b_; 0203 //@} 0204 0205 /** 0206 * @name The diboson invariant mass / shat, that and uhat: 0207 */ 0208 //@{ 0209 /** 0210 * \f$\hat s\f$ 0211 */ 0212 Energy2 sb_; 0213 0214 /** 0215 * \f$\hat t\f$ 0216 */ 0217 Energy2 tb_; 0218 0219 /** 0220 * \f$\hat u\f$ 0221 */ 0222 Energy2 ub_; 0223 //@} 0224 0225 /** 0226 * The diboson rapidity: 0227 * Note Yb_ = + lastY() if flipped = false 0228 * but Yb_ = - lastY() if flipped = true. 0229 * Yb_ is always defined with the quark travelling in the +z direction! 0230 */ 0231 double Yb_; 0232 0233 /** 0234 * @name Masses of the final state bosons: 0235 */ 0236 //@{ 0237 /** 0238 * Mass squared og the first boson 0239 */ 0240 Energy2 k12b_; 0241 0242 /** 0243 * Mass squared og the second boson 0244 */ 0245 Energy2 k22b_; 0246 //@} 0247 0248 /** 0249 * Polar angle of the dibosons in their rest frame: 0250 */ 0251 double theta1b_; 0252 }; 0253 0254 0255 0256 /** \ingroup VVKinematics 0257 * The realVVKinematics class is used to store information on the 0258 * the kinematics of the real emission processes needed for the 0259 * evaluation of matrix elements in the real part of the NLO process. 0260 */ 0261 class realVVKinematics { 0262 0263 public: 0264 0265 /** 0266 * Default constructor 0267 */ 0268 realVVKinematics(); 0269 0270 /** 0271 * Meaningful constructor: takes the Born variables 0272 * from the leading order /virtual 2->2 process and 0273 * the raw \f$\tilde{x}, y\f$ radiative variables and turns 0274 * these into a set of 2->3 momenta with associated 0275 * Mandelstam variables, Bjorken x values etc. 0276 * @param bornVariables The object for the Born kinematics 0277 * @param xt The \f$\tilde{x}\f$ radiative variable. 0278 * @param y The angular radiative variable (the cosine 0279 * of the polar angle of the emitted gluon in the partonic 0280 * @param theta2 The angle \f$\theta_2\f$ 0281 * CMS frame). 0282 */ 0283 realVVKinematics(bornVVKinematics bornVariables,double xt, double y, double theta2); 0284 0285 /** 0286 * A check to make sure that the momenta calculated from 0287 * the energies and angles are equal to those of meMomenta(). 0288 */ 0289 void sanityCheck() const; 0290 0291 public: 0292 0293 /** 0294 * Read-only access to all of the above member variables. 0295 */ 0296 0297 /** 0298 * The bornVVKinematics underlying the 2->3 kinematics 0299 */ 0300 bornVVKinematics bornVariables() const { return bornVariables_; } 0301 0302 /** 0303 * The lower bound on the x integration: 0304 */ 0305 double xbar() const { return xbar_; } 0306 0307 /** 0308 * @name The `raw' radiative variables. 0309 */ 0310 //@{ 0311 /** 0312 * The \f$\tilde{x}\f$ radiative variable 0313 */ 0314 double xt() const { return xt_; } 0315 0316 /** 0317 * The \f$y\f$ radiative variable 0318 */ 0319 double y() const { return y_; } 0320 0321 /** 0322 * The \f$x_r\f$ radiative variable 0323 */ 0324 double xr() const { return xr_; } 0325 //@} 0326 0327 /** 0328 * The momentum fraction of the parton incident from the +z direction. 0329 */ 0330 double x1r() const { return x1r_; } 0331 0332 /** 0333 * The momentum fraction of the parton incident from the -z direction. 0334 */ 0335 double x2r() const { return x2r_; } 0336 0337 /** 0338 * Invariants required for the evaluation of next-to-leading order 0339 * quantities (Frixione et al. NPB.383 WZ production at colliders). 0340 */ 0341 0342 /** 0343 * @name First the Born variables: 0344 */ 0345 //@{ 0346 /** 0347 * \f$s_2\f$ variable from Frixione et al. NPB.383,3 0348 */ 0349 Energy2 s2r() const { return s2r_; } 0350 0351 /** 0352 * \f$k_1^2\f$ mass of first vector boson 0353 */ 0354 Energy2 k12r() const { return k12r_; } 0355 0356 /** 0357 * \f$k_2^2\f$ mass of second vector boson 0358 */ 0359 Energy2 k22r() const { return k22r_; } 0360 0361 /** 0362 * \f$\theta_1\f$ angle from Frixione et al. NPB.383,3 0363 */ 0364 double theta1r() const { return theta1r_; } 0365 0366 /** 0367 * \f$\theta_2\f$ angle from Frixione et al. NPB.383,3 0368 */ 0369 double theta2r() const { return theta2r_; } 0370 //@} 0371 0372 /** 0373 * @name Then the rest: 0374 */ 0375 //@{ 0376 /** 0377 * \f$p_T^2\f$ in the lab frame 0378 */ 0379 Energy2 pT2_in_lab() const { return tkr_*ukr_/sr_; } 0380 0381 /** 0382 * \f$s\f$ from Frixione et al. NPB.383,3 0383 */ 0384 Energy2 sr() const { return sr_; } 0385 0386 /** 0387 * \f$t_k\f$ from Frixione et al. NPB.383,3 0388 */ 0389 Energy2 tkr() const { return tkr_; } 0390 0391 /** 0392 * \f$u_k\f$ from Frixione et al. NPB.383,3 0393 */ 0394 Energy2 ukr() const { return ukr_; } 0395 0396 /** 0397 * \f$\cos\psi\f$ from Frixione et al. NPB.383,3 0398 */ 0399 double cpsir() const { return cpsir_; } 0400 0401 /** 0402 * \f$\cos\psi'\f$ from Frixione et al. NPB.383,3 0403 */ 0404 double cpsipr() const { return cpsiprr_; } 0405 0406 /** 0407 * \f$\beta_x\f$ from Frixione et al. NPB.383,3 0408 */ 0409 double betaxr() const { return betaxr_; } 0410 0411 /** 0412 * \f$v_1\f$ variable from Frixione et al. NPB.383,3 0413 */ 0414 double v1r() const { return v1r_; } 0415 0416 /** 0417 * \f$v_2\f$ variable from Frixione et al. NPB.383,3 0418 */ 0419 double v2r() const { return v2r_; } 0420 0421 /** 0422 * \f$q_1\f$ variable from Frixione et al. NPB.383,3 0423 */ 0424 Energy2 q1r() const { return q1r_; } 0425 0426 /** 0427 * \f$q_2\f$ variable from Frixione et al. NPB.383,3 0428 */ 0429 Energy2 q2r() const { return q2r_; } 0430 0431 /** 0432 * \f$\hat q_1\f$ variable from Frixione et al. NPB.383,3 0433 */ 0434 Energy2 q1hatr() const { return q1hatr_; } 0435 0436 /** 0437 * \f$\hat q_2\f$ variable from Frixione et al. NPB.383,3 0438 */ 0439 Energy2 q2hatr() const { return q2hatr_; } 0440 0441 /** 0442 * \f$\hat w_1\f$ variable from Frixione et al. NPB.383,3 0443 */ 0444 Energy2 w1r() const { return w1r_; } 0445 0446 /** 0447 * \f$\hat w_2\f$ variable from Frixione et al. NPB.383,3 0448 */ 0449 Energy2 w2r() const { return w2r_; } 0450 0451 /** 0452 * 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 0453 */ 0454 Lorentz5Momentum p1r() const { return p1r_; } 0455 0456 /** 0457 * 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 0458 */ 0459 Lorentz5Momentum p2r() const { return p2r_; } 0460 0461 /** 0462 * 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 0463 */ 0464 Lorentz5Momentum kr() const { return kr_ ; } 0465 0466 /** 0467 * 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 0468 */ 0469 Lorentz5Momentum k1r() const { return k1r_; } 0470 0471 /** 0472 * 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 0473 */ 0474 Lorentz5Momentum k2r() const { return k2r_; } 0475 0476 /** 0477 * Set 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 0478 */ 0479 void p1r(Lorentz5Momentum p1r) { p1r_ = p1r; } 0480 0481 /** 0482 * Set 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 0483 */ 0484 void p2r(Lorentz5Momentum p2r) { p2r_ = p2r; } 0485 0486 /** 0487 * Set 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 0488 */ 0489 void kr (Lorentz5Momentum kr ) { kr_ = kr ; } 0490 0491 /** 0492 * Set 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 0493 */ 0494 void k1r(Lorentz5Momentum k1r) { k1r_ = k1r; } 0495 0496 /** 0497 * Set 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 0498 */ 0499 void k2r(Lorentz5Momentum k2r) { k2r_ = k2r; } 0500 //@} 0501 0502 private: 0503 0504 /** 0505 * The bornVVKinematics object underlying the 2->3 kinematics. 0506 */ 0507 bornVVKinematics bornVariables_; 0508 0509 /** 0510 * The lower bound on the x integration. 0511 */ 0512 double xbar_; 0513 0514 // The `raw' radiative variables. 0515 /** 0516 * @name The `raw' radiative variables. 0517 */ 0518 //@{ 0519 /** 0520 * The \f$\tilde{x}\f$ radiative variable 0521 */ 0522 double xt_; 0523 0524 /** 0525 * The \f$y\f$ radiative variable 0526 */ 0527 double y_; 0528 0529 /** 0530 * The \f$x_r\f$ radiative variable 0531 */ 0532 double xr_; 0533 //@} 0534 0535 /** 0536 * The momentum fraction of the parton incident from the +z direction. 0537 */ 0538 double x1r_; 0539 0540 /** 0541 * The momentum fraction of the parton incident from the -z direction. 0542 */ 0543 double x2r_; 0544 0545 /** 0546 * Invariants required for the evaluation of next-to-leading order 0547 * quantities (Frixione et al. NPB.383 WZ production at colliders). 0548 */ 0549 0550 /** 0551 * @name First the Born variables: 0552 */ 0553 //@{ 0554 /** 0555 * \f$s_2\f$ variable from Frixione et al. NPB.383,3 0556 */ 0557 Energy2 s2r_; 0558 0559 /** 0560 * \f$k_1^2\f$ mass of first vector boson 0561 */ 0562 Energy2 k12r_; 0563 0564 /** 0565 * \f$k_2^2\f$ mass of second vector boson 0566 */ 0567 Energy2 k22r_; 0568 0569 /** 0570 * \f$\theta_1\f$ angle from Frixione et al. NPB.383,3 0571 */ 0572 double theta1r_; 0573 0574 /** 0575 * \f$\theta_2\f$ angle from Frixione et al. NPB.383,3 0576 */ 0577 double theta2r_; 0578 //@} 0579 0580 /** 0581 * @name Then the rest: 0582 */ 0583 //@{ 0584 /** 0585 * \f$s\f$ from Frixione et al. NPB.383,3 0586 */ 0587 Energy2 sr_; 0588 0589 /** 0590 * \f$t_k\f$ from Frixione et al. NPB.383,3 0591 */ 0592 Energy2 tkr_; 0593 0594 /** 0595 * \f$u_k\f$ from Frixione et al. NPB.383,3 0596 */ 0597 Energy2 ukr_; 0598 0599 /** 0600 * \f$\cos\psi\f$ from Frixione et al. NPB.383,3 0601 */ 0602 double cpsir_; 0603 0604 /** 0605 * \f$\cos\psi'\f$ from Frixione et al. NPB.383,3 0606 */ 0607 double cpsiprr_; 0608 0609 /** 0610 * \f$\beta_x\f$ from Frixione et al. NPB.383,3 0611 */ 0612 double betaxr_; 0613 0614 /** 0615 * \f$v_1\f$ variable from Frixione et al. NPB.383,3 0616 */ 0617 double v1r_; 0618 0619 /** 0620 * \f$v_2\f$ variable from Frixione et al. NPB.383,3 0621 */ 0622 double v2r_; 0623 0624 /** 0625 * \f$q_1\f$ variable from Frixione et al. NPB.383,3 0626 */ 0627 Energy2 q1r_; 0628 0629 /** 0630 * \f$q_2\f$ variable from Frixione et al. NPB.383,3 0631 */ 0632 Energy2 q2r_; 0633 0634 /** 0635 * \f$\hat q_1\f$ variable from Frixione et al. NPB.383,3 0636 */ 0637 Energy2 q1hatr_; 0638 0639 /** 0640 * \f$\hat q_2\f$ variable from Frixione et al. NPB.383,3 0641 */ 0642 Energy2 q2hatr_; 0643 0644 /** 0645 * \f$\hat w_1\f$ variable from Frixione et al. NPB.383,3 0646 */ 0647 Energy2 w1r_; 0648 0649 /** 0650 * \f$\hat w_2\f$ variable from Frixione et al. NPB.383,3 0651 */ 0652 Energy2 w2r_; 0653 0654 /** 0655 * 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 0656 */ 0657 Lorentz5Momentum p1r_; 0658 0659 /** 0660 * 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 0661 */ 0662 Lorentz5Momentum p2r_; 0663 0664 /** 0665 * 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 0666 */ 0667 Lorentz5Momentum kr_; 0668 0669 /** 0670 * 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 0671 */ 0672 Lorentz5Momentum k1r_; 0673 0674 /** 0675 * 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 0676 */ 0677 Lorentz5Momentum k2r_; 0678 //@} 0679 0680 }; 0681 0682 } 0683 0684 #endif /* HERWIG_VVKinematics_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|