/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 17.10.0 ] */ /* [wxMaxima: title start ] massive-spin1-pol.wxm Explicit Polarization 3-Vectors and 4-Vectors for a Massive Particle with Spin 1 [wxMaxima: title end ] */ /* [wxMaxima: comment start ] massive-spin1-pol.wxm, June 3, 2019 Edwin (Ted) Woollett, Maxima by Example, ch. 12, Dirac Algebra and Quantum Electrodynamics, ver. 3, "Dirac3" http://web.csulb.edu/~woollett/ We use Heaviside-Lorentz electromagnetic units. In general, we follow the conventions in Peskin & Schroeder: Quantum Field Theory. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ load(dirac3); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Massive Vector boson (V) with pvec = [0, 0, p] [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] Linear Polarization 3-Vectors ek1, ek2, ek3 [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Consider a massive vector boson (V) moving in the + z direction with 3-momentum p, with pvec = p z-hat. Construct a pair of linear polarization 3-vectors ek1 and ek2 such that each is normalized to 1, they are perpendicular to each other, and ek1 X ek2 = pvec/p = p-hat = z-hat, using the 3-vector cross product. ek3 is a linear polarization 3-vector in the direction of p-hat. We choose ek1 to be the unit vector x-hat along the positive x-axis, ek2 is y-hat, the unit vector along the y-axis, in a right-handed coordinate system. We are simply defining basis 3-vectors here. We use our package function vprod(a,b) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ pvec : [0, 0, p]$ ek1 : [1, 0, 0]$ ek2 : [0, 1, 0]$ ek3 : [0,0,1]$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ek1 . ek1; ek2 . ek2; ek3 . ek3; ek1 . ek2; ek1 . ek3; ek2 . ek3; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ is (equal (vprod (ek1,ek2), ek3)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vprod (ek1, ek2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fundef (vprod); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ fundef (Cross); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Transverse Circular Polarization 3-Vectors [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] We now use the usual combinations of the linear polarization 3-vectors to define ekR (right circularly polarized) and ekL (left circularly polarized) 3-vectors. (See Halzen/Martin, p. 135 and photon2.wxmx). The 3-vector ekR corresponds to helicity +1, and the 3-vector ekL corresponds to helicity -1. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ekR : -(ek1 + %i*ek2)/sqrt(2); ekL : (ek1 - %i*ek2)/sqrt(2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] These complex circular polarization 3-vectors have the " orthonormality" properties: ekR . (ekR)^c = 1, where ( )^c stands for complex conjugate, ekL . (ekL)^c = 1, ekR . (ekL)^c = 0, [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ekR . conjugate ( ekR); ekL . conjugate ( ekL); ekR . conjugate ( ekL); ekL . conjugate ( ekR); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] and are orthogonal to ek3 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ekR . ek3; ekL . ek3; /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Linear Polarization 4-vectors Ek1, Ek2, Ek3 [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Use comp_def to define four dimensional (zero based) arrays Ek1 and Ek2 whose zero component is equal to 0. For Ek1 and Ek2 spatial components we use ek1 and ek2. Then we next need to define Ek3 in a way that we have a covariant description. We also define the components of the 4-vector p4 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ comp_def ( p4 (E, 0, 0, p), Ek1 (0, 1, 0, 0 ), Ek2 (0, 0, 1, 0) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] VP(a, b) is the 4-vector dot product with our metric tensor choice. We can use VP to explore the "orthonormality" of the linear polarization 4-vectors Ek1 and Ek2, relative to each other and to p4. With our choice of metric, VP(Ek1,Ek1) = -1 = VP(Ek2,Ek2) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ VP (a, b); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ grind(%)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ VP (p4, p4); VP (Ek1, Ek1); VP (Ek2, Ek2); VP (Ek1, Ek2); VP (Ek1, p4); VP (Ek2, p4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ psq_to_Esq ( VP(p4, p4), p, E, m); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] We seek a third linear polarization 4-vector Ek3 with the four properties VP(Ek3,Ek3) = -1, VP (Ek3, p4) = 0, VP(Ek3,Ek1) = 0, VP(Ek3,Ek2) = 0. We start by defining the array Ek3 to depend on four unknown constants a,b,c,d. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ comp_def(Ek3(a,b,c,d))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ listarray(Ek3); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] We now define four equations we can use with solve. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ eq1 : VP(Ek3,Ek3) = -1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eq2 : VP(Ek3,p4) = 0; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eq3 : VP(Ek3,Ek1) = 0; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eq4 : VP(Ek3,Ek2) = 0; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solns : solve ([eq1,eq2,eq3,eq4],[a,b,c,d]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] We can make use of E^2 = m^2 + p^2 by hand, or make use of some of our package functions, just for fun. The function Ep_to_m(expr, p,E,m) replaces the product of the square roots. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ fundef (Ep_to_m); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ grind(%)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Ep_to_m(sqrt(E-p)*sqrt(E+p), p,E,m); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solns : Ep_to_m(solns, p,E,m); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] The function Esq_to_psq does the rest of the job. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ fundef (Esq_to_psq); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solns : Esq_to_psq(solns,p,E,m); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] We choose the solution with positive elements rather than negative elements. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ soln : solns[2]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Now we can redefine the array Ek3, using comp_def again, taking into account our four conditions which have led to the list soln. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ comp_def(Ek3(a,b,c,d)), soln$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Let's check what we have: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ listarray(Ek3); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Transverse Circular Polarization 4-vectors epsR and epsL [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] We define transverse complex circular polarization 4-vectors epsR and epsL in terms of transverse linear polarization 4-vectors Ek1 and Ek2. epsR = - (Ek1 + %i*Ek2) / sqrt(2) epsL = (Ek1 - %i*Ek2) / sqrt(2) and the complex conjugates of epsR and epsL: epsRc = conjugate (epsR) = - (Ek1 - %i*Ek2) / sqrt(2) epsLc = conjugate (epsL) = (Ek1 + %i*Ek2) / sqrt(2) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ comp_def ( epsR (0, -1/sqrt(2), -%i/sqrt(2), 0 ), epsL (0, 1/sqrt(2), -%i/sqrt(2), 0), epsRc (0, -1/sqrt(2), %i/sqrt(2), 0 ), epsLc (0, 1/sqrt(2), %i/sqrt(2), 0) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ map ('listarray, [epsR, epsL, epsRc, epsLc] ); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] All are 4-orthogonal to the 4-vector p4 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ VP (epsR, p4); VP (epsL, p4); VP (epsRc, p4); VP (epsLc, p4); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] and, of course, the real 4-vector Ek3 was designed to be 4-orthogonal to p4 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ VP(Ek3,p4); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] mutual orthonormality properties for complex polarization 4-vectors (summation convention on repeated Lorentz indices) epsR ^{μ} epsRc_{μ} = -1 epsL ^{μ} epsLc_{μ} = -1 epsR ^{μ} epsLc_{μ} = 0 epsL ^{μ} epsRc_{μ} = 0 Ek3^{μ} Ek3_{μ} = -1 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ VP (epsR, epsRc); VP (epsL, epsLc); VP (epsR, epsLc); VP (epsL, epsRc); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Check normalization and orthogonality of real 4-vector Ek3. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ VP(Ek3,Ek3); VP(Ek3,p4); VP(Ek3, epsR); VP(Ek3, epsL); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] To get the ' -1 ' norm we need to massage the result of VP. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ( VP (Ek3, Ek3), Esq_to_psq(%%, p, E, m) ); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Or just do it directly using ratsubst: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsubst (m^2 + p^2, E^2, VP (Ek3, Ek3)); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Check the Completeness Relation for this Case [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] check the completeness relation for this example of polarization 4-vectors (see Thomson p. 531 or H/M p. 139): Σ(λ) ε^{μ} (p4, λ) conjugate ( ε^{ν} (p4, λ) ) = - g^{μ, ν} + (1/m^2) p4^{μ} p4^{ν} Bringing all terms to the lefthand side, we define C(mu,nu) below, all of whose terms should then equal 0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ listarray(epsR); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ listarray(epsRc); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ conjugate (epsR[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ gmet[0,0]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ listarray (p4); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] The polarization 4-vector Eps(1) describes the polarization state |S, Sz> = |1, 1> The polarization 4-vector Eps(0) describes the polarization state |S, Sz> = |1, 0> The polarization 4-vector Eps(-1) describes the polarization state |S, Sz> = |1, -1> [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Eps(lam) := (if lam = 1 then epsR else if lam = 0 then Ek3 else if lam = -1 then epsL else ( print (" error "), done) ) $ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Eps(1) [2]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ conjugate ( Eps(1) [2] ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ listarray (p4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ C(mu,nu) := sum (Eps(lam)[mu] * conjugate (Eps(lam)[nu]), lam, -1, 1 ) + gmet[mu,nu] - p4[mu] * p4[nu] / m^2 $ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ C(0,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Esq_to_psq (%, p,E,m); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] let's include this simplification in the definition of C(mu,nu). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ C(mu,nu) := ( sum (Eps(lam)[mu] * conjugate (Eps(lam)[nu]), lam, -1, 1 ) + gmet[mu,nu] - p4[mu] * p4[nu] / m^2, Esq_to_psq (%%, p,E,m) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ C (0, 0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Now we test all sixteen combinations of mu and nu: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ for i:0 thru 3 do for j:0 thru 3 do if C(i, j) # 0 then print (i, j, C(i,j)); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] which confirms the advertised completeness relation for this example. [wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$