1 gaskelld 1.1 subroutine loren(gam,bx,by,bz,e,x,y,z,ef1,pxf,pyf,pzf,pf1)
2
3 ! This subroutine takes a particle with energy/momentum (e,x,y,z), and
4 ! gives back it's momentum is a frame with velocity (bx,by,bz) WITH RESPECT
5 ! TO THE INITIAL FRAME, so be careful of the sign. For example, when
6 ! we model decay of particles, we generate the decay products in the
7 ! rest frame of the initial particle, and then boost them back into the
8 ! lab frame (along the directio of the inital particle). So the boost
9 ! vector (bx,by,bz) is opposite of the initial particle's momentum, because
10 ! we are boosting from the moving particle's rest frame back into the lab
11 ! frame.
12
13 implicit none
14
15 real*8 gam,bx,by,bz,e,x,y,z
16 real*8 gam1,pxf,pyf,pzf,pf1,ef1
17
18 gam1=gam**2/(1.+gam)
19 ef1 = gam*(e-bx*x-by*y-bz*z)
20 pxf = (1+gam1*bx**2)*x + gam1*bx*(by*y+bz*z) - gam*bx*e
21 pyf = (1+gam1*by**2)*y + gam1*by*(bx*x+bz*z) - gam*by*e
22 gaskelld 1.1 pzf = (1+gam1*bz**2)*z + gam1*bz*(by*y+bx*x) - gam*bz*e
23 pf1 = sqrt(pxf**2+pyf**2+pzf**2)
24
25 return
26 end
|