![]() |
|
|||
File indexing completed on 2025-04-19 09:10:07
0001 #ifndef METOOLS_Main_Polarization_Tools_H 0002 #define METOOLS_Main_Polarization_Tools_H 0003 0004 #ifndef SQRT_05 0005 #define SQRT_05 0.70710678118654757 0006 #endif 0007 0008 #include <map> 0009 #include <iostream> 0010 #include "ATOOLS/Math/MyComplex.H" 0011 #include "ATOOLS/Phys/Flavour.H" 0012 #include "ATOOLS/Phys/Spinor.H" 0013 #include "ATOOLS/Math/Vector.H" 0014 #include "ATOOLS/Math/Matrix.H" 0015 0016 namespace METOOLS 0017 { 0018 typedef ATOOLS::Spinor<double> SpinorType; 0019 0020 class Polarization_Vector : public std::vector<ATOOLS::Vec4C> { 0021 SpinorType m_kp; 0022 SpinorType m_km; 0023 ATOOLS::Vec4D m_k; 0024 0025 void Init(ATOOLS::Vec4D p, ATOOLS::Vec4D ref_mom=ATOOLS::Vec4D(1.0,SQRT_05,SQRT_05,0.0)); 0026 ATOOLS::Vec4C VT(const SpinorType &a,const SpinorType &b); 0027 ATOOLS::Vec4C EM(const ATOOLS::Vec4D &p); 0028 ATOOLS::Vec4C EP(const ATOOLS::Vec4D &p); 0029 ATOOLS::Vec4C EMM(const ATOOLS::Vec4D &p); 0030 ATOOLS::Vec4C EMP(const ATOOLS::Vec4D &p); 0031 ATOOLS::Vec4C EML(const ATOOLS::Vec4D &p); 0032 public: 0033 Polarization_Vector(ATOOLS::Vec4D p, double M2, bool anti=false, bool out=false); 0034 Polarization_Vector(ATOOLS::Vec4D p, bool anti=false, bool out=false); 0035 Polarization_Vector(ATOOLS::Vec4D p, ATOOLS::Vec4D ref_mom); 0036 void Test(ATOOLS::Vec4D p=ATOOLS::Vec4D(3.0399e+00, 1.7523e+00,-1.4883e-01, 3.1938e-01)); 0037 0038 vector<vector<Complex>> BasisTrafo(const Polarization_Vector& old_basis, bool pol_checks=0) const; 0039 }; 0040 0041 class Polarization_Tensor : public std::vector<ATOOLS::CMatrix> { 0042 public: 0043 Polarization_Tensor(ATOOLS::Vec4D p, double M2, bool anti=false, bool out=false); 0044 void Test(ATOOLS::Vec4D p=ATOOLS::Vec4D(3.0399e+00, 1.7523e+00,-1.4883e-01, 3.1938e-01)); 0045 }; 0046 0047 /*! 0048 \file Polarization_Tools.H 0049 \brief Declares the class ATOOLS::Polarization_Vector and ATOOLS::Polarization_Tensor 0050 */ 0051 /*! 0052 \class Polarization_Vectors 0053 \brief Calculation of polarization vectors used for matrix element calculation 0054 */ 0055 /*! 0056 \fn Polarization_Vector::Init(ATOOLS::ATOOLS::Vec4D p, ATOOLS::Vec4D ref_mom=ATOOLS::Vec4D(1.0,SQRT_05,SQRT_05,0.0) ) 0057 \brief Helper function of constructor; calculates complex circular polarization vectors of a massive spin-1 boson. 0058 0059 Calculations according to arxiv: 9601359 eq. (25) or 9805445 eq. (3.19) (+ transformation back to vector 0060 representation); 0061 The ordering in the resulting Polarization_Vector is 0062 - \f$0 \to \epsilon^+\f$ 0063 - \f$1 \to \epsilon^-\f$ 0064 - \f$2 \to \epsilon^0\f$ 0065 - \f$3 \to \epsilon^s\f$ 0066 . 0067 BUT: currently transverse polarizations seems to be exchanged 0068 \param p momentum of particle 0069 \param ref_mom arbitrary, light-like reference momentum, defines spin axis for massive particles 0070 */ 0071 /*! 0072 \fn Polarization_Vector::BasisTrafo(const Polarization_Vector& old_basis, bool pol_checks) () 0073 \brief Method determine transformation coefficients from one basis (e.g. spin basis given by reference vector in 0074 Weyl-van-der-Waerden formalism or reference frame for defining the polarisation) for defining polarisation 0075 vectors to another, if the new polarization vectors can be determined as a linear combination of the ones 0076 defined in the old basis; 0077 \param old_basis Polarization vectors in old basis (in the most cases COMIX default polarization vectors) 0078 \param pol_checks Boolean specifies whether polarization consistency checks should be done (especially 0079 unpol=polsum+int and checks whether transformation works properly and is unitary) 0080 */ 0081 /*! 0082 \return \c vector<vector<Complex>>, which contains the transformation coefficients for each new polarization vector as 0083 one vector respectively, polarization ordering according to Polarization_Vector 0084 */ 0085 } 0086 0087 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |