1
c++++++++++++++++++++++
3
c++++++++++++++++++++++
5
c real*8 function PROJ_ETA(P,NHEL,IC)
6
c real*8 function PROJ_psi(P,NHEL,IC)
7
c real*8 function PROJ_PSI_REL(P,NHEL,IC)
8
c real*8 function PROJ_CHI(P,NHEL,IC,J_qn)
9
c real*8 function PROJ_H(P,NHEL,IC)
10
c real*8 function PROJ_PSILEPT(P,NHEL,IC)
12
c subroutine spin_projection(P,NHEL,IC,TEMP)
13
c subroutine spin_singlet_proj(P,NHEL,IC,TEMP)
14
c subroutine pseudoscalar(P1,P2,LAMBDA1,LAMBDA2,MC,PS)
15
c subroutine pseudoscalar0(P1,P2,LAMBDA1,LAMBDA2,M1,M2,PS)
16
c subroutine vector0(P1,P2,LAMBDA1,LAMBDA2,M1,M2,jio)
17
c subroutine VECTOR(P1,P2,LAMBDA1,LAMBDA2,MQ,jio)
18
c subroutine vectorBc(P1,P2,LAMBDA1,LAMBDA2,M1,M2,jio)
19
c subroutine leptonic_current(k1,k2,l1,l2,mq, jio)
20
c subroutine genmom_lept(P,x,k1,k2,three_k1)
21
c SUBROUTINE polariz(P,EPS)
22
c subroutine get_helicity(P,eps)
23
c subroutine get_helicity2(P,eps)
27
real*8 function PROJ_ETA(P,NHEL,IC)
29
C******************************************************************************
30
C THIS FUNCTION PROJECTS THE AMPLITUDE ONTO A CC~(3S1) STATE *
32
C THE ROUTINE IS UNIVERSAL *
33
C******************************************************************************
36
include 'nexternal.inc'
38
include 'color_data.inc'
42
INTEGER NEXT_AMP ! number of particles
43
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
47
double precision P(0:3,NEXTERNAL)
48
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
52
C 1. for the projection
53
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K,n
55
DOUBLE PRECISION P_AMP(0:3,next_amp),
56
& P1(0:3),P2(0:3) ! MOMENTA OF c AND c~
59
COMPLEX*16 JAMP(NCOLOR)
60
DOUBLE COMPLEX PROJAMP(NCOLOR)
62
C 2. to square the amplitude
66
DOUBLE PRECISION qmass(2)
72
C SPECIFYING THE MOMENTA OF C,C~ + THE TOTAL MOMENTUM
75
weight1=qmass(1)/(qmass(1)+qmass(2))
76
weight2=qmass(2)/(qmass(1)+qmass(2))
82
P_AMP(L1,next_amp-1)=P(L1,nexternal)*weight1
83
P_AMP(L1,next_amp)=P(L1,nexternal)*weight2
84
P1(L1)=P(L1,nexternal)*weight1
85
P2(L1)=P(L1,nexternal)*weight2
88
C RECORD THE POLARIZATIONS
97
C*************************************
99
C*************************************
104
projamp(K)=(0.0D0,0.0D0)
107
DO L1=-1,1,2 ! SUM OVER HELICITIES
109
NHEL_AMP(next_amp-1)=L1
110
NHEL_AMP(next_amp)=L2
115
CALL pseudoscalar0(P1,P2,L1,L2,qmass(1),
118
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP)
119
c write(*,*) 'Jamp',Jamp
121
DO K=1, NCOLOR ! INDEX OF JAMP
122
projamp(K)=projamp(K)+JAMP(K)*PS ! THE COLOR FACTOR IS INCLUDED IN SQAMP
128
C************************************
129
C SQUARE THE AMPLITUDE
130
C***********************************
136
ZTEMP = ZTEMP + CF(J,n)*PROJAMP(J)
139
& +dble(ZTEMP*DCONJG(PROJAMP(n))/DENOM(n))
144
real*8 function PROJ_psi(P,NHEL,IC)
146
C******************************************************************************
147
C THIS FUNCTION PROJECT THE AMPLITUDE ONTO A QQ~(3S1) STATE *
149
C THE ROUTINE IS UNIVERSAL *
150
C******************************************************************************
153
include 'nexternal.inc'
155
include 'color_data.inc'
160
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
164
REAL*8 P(0:3,NEXTERNAL)
165
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
169
C 1. for the projection
170
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K
171
DOUBLE COMPLEX JIO(6),TEMP(4,NCOLOR)
172
DOUBLE PRECISION P_AMP(0:3,next_amp),
173
& P1(0:3),P2(0:3),PTOT(0:3) ! MOMENTA OF c AND c~ AND TOTAL MOMENTUM
174
DOUBLE complex EPS(0:3,-1:1)
176
COMPLEX*16 JAMP(NCOLOR)
177
DOUBLE COMPLEX PROJAMP(NCOLOR)
179
C 2. to square the amplitude
183
DOUBLE PRECISION qmass(2)
184
COMMON/to_qmass/qmass
185
DOUBLE PRECISION weight1,weight2
190
C SPECIFYING THE MOMENTA OF C,C~ + THE TOTAL MOMENTUM
193
weight1=qmass(1)/(qmass(1)+qmass(2))
194
weight2=qmass(2)/(qmass(1)+qmass(2))
198
P_AMP(L1,L2)=P(L1,L2)
200
P_AMP(L1,next_amp-1)=P(L1,nexternal)*weight1
201
P_AMP(L1,next_amp)=P(L1,nexternal)*weight2
202
P1(L1)=P(L1,nexternal)*weight1
203
P2(L1)=P(L1,nexternal)*weight2
204
PTOT(L1)=P1(L1)+P2(L1)
208
C RECORD THE POLARIZATIONS
217
C*************************************
219
C*************************************
225
TEMP(J,K)=(0.0D0,0.0D0)
229
DO L1=-1,1,2 ! SUM OVER HELICITIES
231
NHEL_AMP(next_amp-1)=L1
232
NHEL_AMP(next_amp)=L2
233
CALL VECTOR0(P1,P2,L1,L2,qmass(1),qmass(2),JIO)
236
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP)
239
DO K=1, NCOLOR ! INDEX OF JAMP
240
DO J=1,4,1 ! PAY ATTENTION TO THE RANGE : J IN [1,4]
241
TEMP(J,K)=TEMP(J,K)+JAMP(K)*JIO(J) ! THE COLOR FACTOR IS INCLUDED IN SQAMP
248
c CALL polariz(PTOT,EPS)
249
CALL get_helicity2(PTOT,EPS,(qmass(1)+qmass(2)))
253
PROJAMP(K)=TEMP(1,K)*EPS(0,NHEL(nexternal))-
254
& TEMP(2,K)*EPS(1,NHEL(nexternal))-
255
& TEMP(3,K)*EPS(2,NHEL(nexternal))-
256
& TEMP(4,K)*EPS(3,NHEL(nexternal))
260
C************************************
261
C SQUARE THE AMPLITUDE
262
C***********************************
268
ZTEMP = ZTEMP + CF(J,I)*PROJAMP(J)
271
& +DBLE(ZTEMP*DCONJG(PROJAMP(I)))/DENOM(I)
276
real*8 function PROJ_PSI_REL(P,NHEL,IC)
278
C******************************************************************************
279
C THIS FUNCTION PROJECT THE AMPLITUDE ONTO A CC~(3S1) STATE *
281
C THE ROUTINE IS UNIVERSAL *
282
C******************************************************************************
284
include 'nexternal.inc'
286
include 'color_data.inc'
290
INTEGER NEXT_AMP ! number of particles
291
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
295
REAL*8 P(0:3,NEXTERNAL)
296
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
300
C 1. for the projection
301
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K
302
DOUBLE COMPLEX JIO(6),TEMP(4,NCOLOR)
303
DOUBLE COMPLEX JIOSTAR(6),TEMPSTAR(4,NCOLOR)
304
DOUBLE PRECISION P_AMP(0:3,next_amp),
305
& P1(0:3),P2(0:3),PTOT(0:3) ! MOMENTA OF c AND c~ AND TOTAL MOMENTUM
306
DOUBLE PRECISION P_AMPSTAR(0:3,next_amp),
307
& P1STAR(0:3),P2STAR(0:3)
308
DOUBLE PRECISION EPS(0:3,-1:1)
310
COMPLEX*16 JAMP(NCOLOR)
311
DOUBLE COMPLEX PROJAMP(NCOLOR)
312
COMPLEX*16 JAMPSTAR(NCOLOR)
313
DOUBLE COMPLEX PROJAMPSTAR(NCOLOR)
315
C 2. to square the amplitude
317
complex*16 proj_matrix_temp
320
DOUBLE PRECISION qmass(2)
321
COMMON/to_qmass/qmass
325
double precision prel1(0:3),prel2(0:3)
326
double precision BOUND, RHOSQ ! BOUND IS THE UPPER BOUND FOR q_{REL}^2
327
common /to_rel_mom/prel1,prel2,BOUND, RHOSQ
332
C SPECIFYING THE MOMENTA OF C,C~ + THE TOTAL MOMENTUM
336
P_AMP(L1,L2)=P(L1,L2)
337
P_AMPSTAR(L1,L2)=P(L1,L2)
340
P_AMP(L1,next_amp-1)=P(L1,nexternal)/2+prel1(L1)
341
P_AMP(L1,next_amp)=P(L1,nexternal)/2-prel1(L1)
342
P1(L1)=P(L1,nexternal)/2+prel1(L1)
343
P2(L1)=P(L1,nexternal)/2-prel1(L1)
344
C in the compl. conj. amplitude
345
P_AMPSTAR(L1,next_amp-1)=P(L1,nexternal)/2+prel2(L1)
346
P_AMPSTAR(L1,next_amp)=P(L1,nexternal)/2-prel2(L1)
347
P1STAR(L1)=P(L1,nexternal)/2+prel2(L1)
348
P2STAR(L1)=P(L1,nexternal)/2-prel2(L1)
350
PTOT(L1)=P(L1,nexternal)
353
C RECORD THE POLARIZATIONS
362
C*************************************
364
C*************************************
371
TEMP(J,K)=(0.0D0,0.0D0)
372
TEMPSTAR(J,K)=(0.0D0,0.0D0)
376
DO L1=-1,1,2 ! SUM OVER HELICITIES
378
NHEL_AMP(next_amp-1)=L1
379
NHEL_AMP(next_amp)=L2
380
CALL VECTOR(P1,P2,L1,L2,qmass(1),JIO) ! for amp.
381
CALL VECTOR(P1STAR,P2STAR,L1,L2,qmass(1),JIOSTAR) ! for amp*
383
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP) ! for amp.
384
CALL matrix(P_AMPSTAR,NHEL_AMP,IC_AMP,JAMPSTAR) ! for amp*
387
DO K=1, NCOLOR ! INDEX OF JAMP
388
DO J=1,4,1 ! PAY ATTENTION TO THE RANGE : J IN [1,4]
389
C THE COLOR FACTOR IS INCLUDED IN SQAMP
390
TEMP(J,K)=TEMP(J,K)+JAMP(K)*JIO(J) ! for amp
391
TEMPSTAR(J,K)=TEMPSTAR(J,K)+JAMPSTAR(K)*JIOSTAR(J) ! for amp*
399
CALL polariz(PTOT,EPS)
403
PROJAMP(K)=TEMP(1,K)*EPS(0,NHEL(nexternal))-
404
& TEMP(2,K)*EPS(1,NHEL(nexternal))-
405
& TEMP(3,K)*EPS(2,NHEL(nexternal))-
406
& TEMP(4,K)*EPS(3,NHEL(nexternal))
408
PROJAMPSTAR(K)=TEMPSTAR(1,K)*EPS(0,NHEL(nexternal))-
409
& TEMPSTAR(2,K)*EPS(1,NHEL(nexternal))-
410
& TEMPSTAR(3,K)*EPS(2,NHEL(nexternal))-
411
& TEMPSTAR(4,K)*EPS(3,NHEL(nexternal))
415
C************************************
416
C SQUARE THE AMPLITUDE
417
C***********************************
419
PROJ_MATRIX_TEMP = (0.0D0,0.0D0)
423
ZTEMP = ZTEMP + CF(J,I)*PROJAMP(J)
425
PROJ_MATRIX_TEMP =PROJ_MATRIX_TEMP
426
& +ZTEMP*DCONJG(PROJAMPSTAR(I))/DENOM(I)
429
PROJ_PSI_REL = DBLE(proj_matrix_temp)
433
real*8 function PROJ_CHI(PP,NHEL,IC,J_qn)
435
C******************************************************************************
436
C THIS FUNCTION PROJECT THE AMPLITUDE ONTO A P wave CC~ STATE *
438
C THE ROUTINE IS UNIVERSAL. *
439
C MOMENTA MUST BE GIVEN IN THE QUARKONIUM REST FRAME *
441
C******************************************************************************
444
include 'nexternal.inc'
446
include 'color_data.inc'
450
REAL*8 PP(0:3,NEXTERNAL)
451
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL),J_qn
455
C 1. for the projection
456
DOUBLE PRECISION Pboost(0:3) !,Pboostnd(0:3)
457
Double precision P(0:3,NEXTERNAL),Z(0:3)
458
double complex eps(1:3,-1:1)
459
c double precision Ponium(0:3),Poniumnd(0:3)
461
DOUBLE COMPLEX TEMP(4,NCOLOR),
462
& TEMP1(4,NCOLOR),TEMP2(4,NCOLOR),TEMP3(4,NCOLOR)
464
DOUBLE COMPLEX AMP(3,3,NCOLOR)
465
DOUBLE COMPLEX hel_AMP(NCOLOR)
466
DOUBLE COMPLEX hel_AMPJm1(NCOLOR,3),spin_mat(NCOLOR,3,-1:1)
468
C 2. to square the amplitude
469
double precision sqm2,sqm6,sqm3
471
integer j,k,l,ia,ib,mu
474
DOUBLE PRECISION qmass(2)
475
COMMON/to_qmass/qmass
479
double precision prel(0:3)
480
common /to_pWAVE/prel
482
double precision pnd(0:3,nexternal),delta
484
double complex rho11,rho00,rho1m1,rhom1m1,rhom11
485
double precision plam,pnu
486
common /to_pol_param/rho11,rho00,rho1m1,rhom1m1,rhom11,plam,pnu
495
c go to the quarkonium rest frame
499
pboost(0)=pp(0,nexternal)
501
pboost(k)=-pp(k,nexternal)
504
call boostx(PP(0,j),pboost,P(0,j))
509
Pnd(0,nexternal)=dsqrt(P(0,nexternal)**2+delta**2)
511
c define the tensor projected amplitude with UPPER indices
513
c PAY ATTENTION : d/dq_i = - d/d_q^j
515
c a) no relative momentum
521
prel(1)=delta/1000000d0
522
call spin_projection(P,NHEL,IC,TEMP)
528
call spin_projection(Pnd,NHEL,IC,TEMP1)
535
call spin_projection(Pnd,NHEL,IC,TEMP2)
542
call spin_projection(Pnd,NHEL,IC,TEMP3)
544
c computing derivatives
548
c amp(0,j,k)=(0d0, 0d0)
549
amp(1,j,k)=-(temp1(j+1,k)-temp(j+1,k))/dcmplx(delta)
550
amp(2,j,k)=-(temp2(j+1,k)-temp(j+1,k))/dcmplx(delta)
551
amp(3,j,k)=-(temp3(j+1,k)-temp(j+1,k))/dcmplx(delta)
555
C************************************
556
C Select helicity state
557
C***********************************
560
call get_helicity(PP(0,nexternal),eps)
573
hel_amp(l)=hel_amp(l)+ amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,-1)
574
&+eps(Ia,-1)*eps(Ib,1) -eps(Ia,0)*eps(Ib,0))*sqm3
580
elseif(j_qn.eq.1) then
585
if (nhel(nexternal).eq.1 ) then
588
hel_amp(l)=hel_amp(l)+
589
& amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,0)-eps(Ia,0)*eps(Ib,1))*sqm2
593
elseif (nhel(nexternal).eq.0 ) then
596
hel_amp(l)=hel_amp(l)+
597
& amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,-1)-eps(Ia,-1)*eps(Ib,1))*sqm2
601
elseif (nhel(nexternal).eq.-1 ) then
604
hel_amp(l)=hel_amp(l)+
605
& amp(Ia,Ib,L)*(eps(Ia,0)*eps(Ib,-1)-eps(Ia,-1)*eps(Ib,0))*sqm2
612
elseif(j_qn.eq.2) then
617
if (nhel(nexternal).eq.2 ) then
620
hel_amp(l)=hel_amp(l)+
621
& amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,1))
625
elseif (nhel(nexternal).eq.1 ) then
628
hel_amp(l)=hel_amp(l)+
629
& amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,0)+eps(Ia,0)*eps(Ib,1))*sqm2
633
elseif (nhel(nexternal).eq.0 ) then
636
hel_amp(l)=hel_amp(l)+
637
& amp(Ia,Ib,L)*(eps(Ia,1)*eps(Ib,-1)+eps(Ia,-1)*eps(Ib,1)+
638
& 2d0*eps(Ia,0)*eps(Ib,0))*sqm6
642
elseif (nhel(nexternal).eq.-1 ) then
645
hel_amp(l)=hel_amp(l)+
646
& amp(Ia,Ib,L)*(eps(Ia,0)*eps(Ib,-1)+eps(Ia,-1)*eps(Ib,0))*sqm2
650
elseif (nhel(nexternal).eq.-2 ) then
653
hel_amp(l)=hel_amp(l)+
654
& amp(Ia,Ib,L)*eps(Ia,-1)*eps(Ib,-1)
659
c write(*,*) 'hel_amp for hel,col',nhel(nexternal),L,hel_amp(l)
663
elseif(j_qn.eq.-1) then
664
c here is a special option:
665
c * I average over the angular momentum degrees of freedom
666
c * I keep track of the spin of the QQ~ pair
667
c This is used for polarization studies involving transitions 3PJ[8]> J/psi
670
hel_ampJm1(L,Ia)=(0d0,0d0)
673
hel_ampJm1(l,Ia)=hel_ampJm1(l,Ia)+
674
& amp(Ia,Ib,L)*eps(Ib,nhel(nexternal))
677
enddo !angular momentum
681
do Ia=1,3 !angular momentum
684
ZTEMP = ZTEMP+CF(K,L)*hel_ampJm1(K,Ia)*dconjg(hel_ampJm1(L,Ia))/DENOM(L)
688
PROJ_CHI = DBLE(ztemp)
691
elseif(j_qn.eq.-7) then
692
c here is another special option:
693
c * I average over the angular momentum degrees of freedom
694
c * I compute the spin density matrix
695
c This is used for polarization studies involving transitions 3PJ[8]> J/psi
698
hel_ampJm1(L,Ia)=(0d0,0d0)
699
spin_mat(l,Ia,-1)=(0d0,0d0)
700
spin_mat(l,Ia,1)=(0d0,0d0)
701
spin_mat(l,Ia,0)=(0d0,0d0)
705
spin_mat(l,Ia,-1)=spin_mat(l,Ia,-1)+
706
& amp(Ia,Ib,L)*eps(Ib,-1)
707
spin_mat(l,Ia,1)=spin_mat(l,Ia,1)+
708
& amp(Ia,Ib,L)*eps(Ib,1)
709
spin_mat(l,Ia,0)=spin_mat(l,Ia,0)+
710
& amp(Ia,Ib,L)*eps(Ib,0)
720
ZTEMP = ZTEMP+CF(K,L)*amp(Ia,Ib,K)*dconjg(amp(Ia,Ib,L))/DENOM(L)
725
PROJ_CHI = DBLE(ztemp)
730
rho11 = rho11+CF(K,L)*spin_mat(K,Ia,1)*dconjg(spin_mat(L,Ia,1))/DENOM(L)
731
rho00 = rho00+CF(K,L)*spin_mat(K,Ia,0)*dconjg(spin_mat(L,Ia,0))/DENOM(L)
732
rho1m1 = rho1m1+CF(K,L)*spin_mat(K,Ia,1)*dconjg(spin_mat(L,Ia,-1))/DENOM(L)
733
rhom11 = rhom11+CF(K,L)*spin_mat(K,Ia,-1)*dconjg(spin_mat(L,Ia,1))/DENOM(L)
734
rhom1m1 = rhom1m1+CF(K,L)*spin_mat(K,Ia,-1)*dconjg(spin_mat(L,Ia,-1))/DENOM(L)
742
endif ! end if J_qn= ...
744
C************************************
745
C sum over colored amplitudes
746
C***********************************
751
ZTEMP = ZTEMP+CF(K,L)*hel_amp(K)*dconjg(hel_amp(L))/DENOM(L)
753
c PROJ_chi =proj_chi+ZTEMP*DCONJG(JAMP(L))/DENOM(L)
755
PROJ_CHI = DBLE(ztemp)
756
c write(*,*) 'proj_chi',proj_chi
761
c Here I directly sum over the chi_c polarization (not used anymore)
768
c if (j_qn.eq.0) then
769
c ztemp=ztemp+amp(Ia,Ia,K)*DCONJG(amp(Ib,Ib,L))/3d0
770
c & *CF(K,L)/DENOM(L)
771
c elseif (j_qn.eq.1) then
772
c ztemp=ztemp+(amp(Ia,Ib,K)*DCONJG(amp(Ia,Ib,L))-
773
c & amp(Ia,Ib,K)*DCONJG(amp(Ib,Ia,L)))
774
c & *CF(K,L)/DENOM(L)/2d0
775
c elseif (j_qn.eq.2) then
776
c ztemp=ztemp+((amp(Ia,Ib,K)*DCONJG(amp(Ia,Ib,L))+
777
c & amp(Ia,Ib,K)*DCONJG(amp(Ib,Ia,L)))/2d0-
778
c & amp(Ia,Ia,K)*DCONJG(amp(Ib,Ib,L))/3d0)
779
c & *CF(K,L)/DENOM(L)
786
c PROJ_CHI = DBLE(ztemp)
794
subroutine spin_projection(P,NHEL,IC,TEMP)
795
c***********************************************************
796
c This subroutine performs the spin projection.
797
c The relative momentum is recorded in common block
798
c NHEL runs from 1 to nexternal-2, since the sum over
799
c helicities of the bound state is performed in proj_matrix
800
c***********************************************************
801
include 'nexternal.inc'
803
include 'color_data.inc'
807
INTEGER NEXT_AMP ! number of particles
808
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
812
REAL*8 P(0:3,NEXTERNAL)
813
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
814
c double precision Ponium(0:3), Pboost(0:3)
818
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K
819
DOUBLE COMPLEX JIO(6),TEMP(4,NCOLOR)
820
DOUBLE PRECISION P_AMP(0:3,next_amp),
821
& P1(0:3),P2(0:3),PTOT(0:3) ! MOMENTA OF c AND c~ AND TOTAL MOMENTUM
822
double precision Pthree2,Eq2_quark1,Eq2_quark2
824
COMPLEX*16 JAMP(NCOLOR)
825
DOUBLE PRECISION WEIGHT1, WEIGHT2
826
c DOUBLE COMPLEX PROJAMP(NCOLOR)
830
double precision prel(0:3)
831
common /to_pWAVE/prel
833
double precision qmass(2)
834
COMMON/to_qmass/qmass
836
c include 'qmass.inc'
838
Pthree2=P(1,nexternal)**2
839
& +P(2,nexternal)**2+P(3,nexternal)**2
840
if(Pthree2.gt.0.001d0) then
841
write(*,*) 'warning : we are not in the Quarkonium rest frame'
843
Eq2_quark1=prel(1)**2+prel(2)**2+prel(3)**2+qmass(1)**2
844
Eq2_quark2=prel(1)**2+prel(2)**2+prel(3)**2+qmass(2)**2
845
PTOT(0)=dsqrt( Eq2_quark1)+dsqrt( Eq2_quark2)
850
weight1=dsqrt(Eq2_quark1)/(dsqrt(Eq2_quark1)+dsqrt(Eq2_quark2))
851
weight2=dsqrt(Eq2_quark2)/(dsqrt(Eq2_quark1)+dsqrt(Eq2_quark2))
855
P_AMP(L1,L2)=P(L1,L2)
858
P_AMP(L1,next_amp-1)=PTOT(L1)*weight1+prel(L1)
859
P_AMP(L1,next_amp)=PTOT(L1)*weight2-prel(L1)
860
P1(L1)=PTOT(L1)*weight1+prel(L1)
861
P2(L1)=PTOT(L1)*weight2-prel(L1)
864
C RECORD THE POLARIZATIONS
873
C*************************************
875
C*************************************
881
TEMP(J,K)=(0.0D0,0.0D0)
885
DO L1=-1,1,2 ! SUM OVER HELICITIES
887
NHEL_AMP(next_amp-1)=L1
888
NHEL_AMP(next_amp)=L2
889
CALL VECTOR0(P1,P2,L1,L2,qmass(1),qmass(2),JIO)! for amp.
891
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP) ! for amp.
895
DO K=1, NCOLOR ! INDEX OF JAMP
896
DO J=1,4,1 ! PAY ATTENTION TO THE RANGE : J IN [1,4]
897
C THE COLOR FACTOR IS INCLUDED IN SQAMP
898
TEMP(J,K)=TEMP(J,K)+JAMP(K)*JIO(J)
906
c above, J is the spin index, K is the color index
910
real*8 function PROJ_H(PP,NHEL,IC)
912
C******************************************************************************
913
C THIS FUNCTION PROJECTS THE AMPLITUDE ONTO A P wave CC~ STATE *
915
C THE ROUTINE IS UNIVERSAL. *
916
C MOMENTA MUST BE GIVEN IN THE QUARKONIUM REST FRAME *
917
C******************************************************************************
920
include 'nexternal.inc'
922
include 'color_data.inc'
926
REAL*8 PP(0:3,NEXTERNAL)
927
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
931
C 1. for the projection
932
DOUBLE PRECISION Pboost(0:3) !,Pboostnd(0:3)
933
REAL*8 P(0:3,NEXTERNAL)
934
c double precision Ponium(0:3),Poniumnd(0:3)
936
DOUBLE COMPLEX TEMP(NCOLOR),
937
& TEMP1(NCOLOR),TEMP2(NCOLOR),TEMP3(NCOLOR)
939
DOUBLE COMPLEX AMP(3,NCOLOR)
940
DOUBLE COMPLEX hel_AMP(NCOLOR),eps(3,-1:1)
942
C 2. to square the amplitude
947
DOUBLE PRECISION qmass(2)
948
COMMON/to_qmass/qmass
952
double precision prel(0:3)
953
common /to_pWAVE/prel
955
double precision pnd(0:3,nexternal),delta
956
c common/modif_p/pnd,delta
964
c go to the quarkonium rest frame
967
pboost(0)=pp(0,nexternal)
968
c pboostnd(0)=pnd(0,nexternal)
970
pboost(k)=-pp(k,nexternal)
971
c pboostnd(k)=-pnd(k,nexternal)
974
call boostx(PP(0,j),pboost,P(0,j))
975
c call boostx(Pnd(0,j),pboostnd,Pnd(0,j))
981
Pnd(0,nexternal)=dsqrt(P(0,nexternal)**2+delta**2)
984
c a) no relative momentum
991
prel(1)=delta/10000d0
992
call spin_singlet_proj(P,NHEL,IC,TEMP)
999
call spin_singlet_proj(Pnd,NHEL,IC,TEMP1)
1006
call spin_singlet_proj(Pnd,NHEL,IC,TEMP2)
1013
call spin_singlet_proj(Pnd,NHEL,IC,TEMP3)
1015
c computing derivatives
1018
amp(1,k)=-(temp1(k)-temp(k))/dcmplx(delta)
1019
amp(2,k)=-(temp2(k)-temp(k))/dcmplx(delta)
1020
amp(3,k)=-(temp3(k)-temp(k))/dcmplx(delta)
1023
C************************************
1024
C Selecting helicity state
1025
C and squaring the amplitude
1026
C************************************
1028
call get_helicity(PP(0,nexternal),eps)
1031
hel_amp(l)=(0d0,0d0)
1033
hel_amp(l)=hel_amp(l)+amp(Ia,l)*eps(Ia,nhel(nexternal))
1040
ztemp=ztemp+hel_amp(K)
1041
&*DCONJG(hel_amp(L))
1046
PROJ_H = DBLE(ztemp)
1053
subroutine spin_singlet_proj(P,NHEL,IC,TEMP)
1054
c***********************************************************
1055
c This subroutine performs the spin projection.
1056
c The relative momentum is recorded in common block
1057
c NHEL runs from 1 to nexternal-1, since the sum over
1058
c helicities of the bound state is performed in proj_matrix
1059
c***********************************************************
1060
include 'nexternal.inc'
1062
include 'color_data.inc'
1066
INTEGER NEXT_AMP ! number of particles
1067
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
1071
REAL*8 P(0:3,NEXTERNAL)
1072
INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
1073
c double precision Ponium(0:3), Pboost(0:3)
1077
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K
1078
DOUBLE COMPLEX PS,TEMP(NCOLOR)
1079
DOUBLE PRECISION P_AMP(0:3,next_amp),
1080
& P1(0:3),P2(0:3),PTOT(0:3) ! MOMENTA OF c AND c~ AND TOTAL MOMENTUM
1081
double precision Pthree2,Eq2_quark1,Eq2_quark2,weight1,weight2
1083
COMPLEX*16 JAMP(NCOLOR)
1084
c DOUBLE COMPLEX PROJAMP(NCOLOR)
1089
double precision prel(0:3)
1090
common /to_pWAVE/prel
1092
DOUBLE PRECISION qmass(2)
1093
COMMON/to_qmass/qmass
1097
Pthree2=P(1,nexternal)**2+P(2,nexternal)**2
1098
& +P(3,nexternal)**2
1099
if(Pthree2.gt.0.001d0) then
1100
write(*,*) 'warning : we are not in the Quarkonium rest frame'
1102
Eq2_quark1=prel(1)**2+prel(2)**2+prel(3)**2+qmass(1)**2
1103
Eq2_quark2=prel(1)**2+prel(2)**2+prel(3)**2+qmass(2)**2
1104
PTOT(0)=dsqrt(Eq2_quark1)+dsqrt(Eq2_quark2)
1110
P_AMP(L1,L2)=P(L1,L2)
1113
weight1=dsqrt(Eq2_quark1)/(dsqrt(Eq2_quark1)+dsqrt(Eq2_quark2))
1114
weight2=dsqrt(Eq2_quark2)/(dsqrt(Eq2_quark1)+dsqrt(Eq2_quark2))
1116
P_AMP(L1,next_amp-1)=PTOT(L1)*weight1+prel(L1)
1117
P_AMP(L1,next_amp)=PTOT(L1)*weight2-prel(L1)
1118
P1(L1)=PTOT(L1)*weight1+prel(L1)
1119
P2(L1)=PTOT(L1)*weight2-prel(L1)
1126
c call boostx(p_amp(0,k),Ponium,p_amp(0,k))
1129
P1(L1)=p_amp(L1,next_amp-1)
1130
P2(L1)=p_amp(L1,next_amp)
1133
C RECORD THE POLARIZATIONS
1139
IC_AMP(next_amp-1)=1
1142
C*************************************
1144
C*************************************
1150
TEMP(K)=(0.0D0,0.0D0)
1153
DO L1=-1,1,2 ! SUM OVER HELICITIES
1155
NHEL_AMP(next_amp-1)=L1
1156
NHEL_AMP(next_amp)=L2
1157
CALL pseudoscalar0(P1,P2,L1,L2,
1158
& qmass(1),qmass(2),PS) ! for amp.
1160
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP) ! for amp.
1165
DO K=1, NCOLOR ! INDEX OF JAMP
1166
C THE COLOR FACTOR IS INCLUDED IN SQAMP
1167
TEMP(K)=TEMP(K)+JAMP(K)*PS
1173
c above, J is the spin index, K is the color index
1177
c go back to the rest frame
1180
c call boostx(temp(1,k),pboost,temp(1,k))
1187
real*8 function PROJ_PSILEPT(P,NHEL,IC)
1189
C******************************************************************************
1190
C THIS FUNCTION PROJECT THE AMPLITUDE ONTO A CC~(3S1) STATE *
1191
C AND SQUARE IT. The quarkonium is decayed into leptons. *
1192
C The routine is universal. *
1193
C******************************************************************************
1196
include 'nexternal.inc'
1198
include 'color_data.inc'
1202
INTEGER NEXT_AMP ! initial number of particles
1203
PARAMETER (NEXT_AMP=NEXTERNAL+1) ! # of external particles before the projection
1207
REAL*8 P(0:3,NEXTERNAL)
1208
INTEGER NHEL(NEXT_amp), IC(NEXTERNAL) ! number of helicities =nexternal !
1212
C 1. for the projection
1213
INTEGER NHEL_AMP(next_amp),IC_AMP(next_amp), L1,L2,J,K
1214
DOUBLE COMPLEX JIO(6),TEMP(4,NCOLOR), jio_lept(6)
1215
DOUBLE PRECISION P_AMP(0:3,next_amp),
1216
& P1(0:3),P2(0:3),PTOT(0:3) ! MOMENTA OF c AND c~ AND TOTAL MOMENTUM
1218
DOUBLE PRECISION WEIGHT1, WEIGHT2
1219
c DOUBLE PRECISION EPS(0:3,-1:1)
1221
COMPLEX*16 JAMP(NCOLOR)
1222
DOUBLE COMPLEX PROJAMP(NCOLOR)
1224
C 3. to square the amplitude
1227
double precision k1(0:3),k2(0:3),three_k1(3)
1228
common /lepton_stuff/ k1,k2,three_k1
1231
DOUBLE PRECISION qmass(2)
1232
COMMON/to_qmass/qmass
1234
C SPECIFYING THE MOMENTA OF C,C~ + THE TOTAL MOMENTUM
1237
weight1=qmass(1)/(qmass(1)+qmass(2))
1238
weight2=qmass(2)/(qmass(1)+qmass(2))
1242
P_AMP(L1,L2)=P(L1,L2)
1244
P_AMP(L1,next_amp-1)=P(L1,nexternal)*WEIGHT1
1245
P_AMP(L1,next_amp)=P(L1,nexternal)*WEIGHT2
1246
P1(L1)=P(L1,nexternal)*WEIGHT1
1247
P2(L1)=P(L1,nexternal)*WEIGHT2
1248
PTOT(L1)=P1(L1)+P2(L1)
1252
C RECORD THE POLARIZATIONS
1258
IC_AMP(next_amp-1)=1
1261
C*************************************
1263
C*************************************
1269
TEMP(J,K)=(0.0D0,0.0D0)
1273
DO L1=-1,1,2 ! SUM OVER HELICITIES
1275
NHEL_AMP(next_amp-1)=L1
1276
NHEL_AMP(next_amp)=L2
1277
CALL VECTOR0(P1,P2,L1,L2,qmass(1),qmass(2),JIO)
1280
CALL matrix(P_AMP,NHEL_AMP,IC_AMP,JAMP)
1283
DO K=1, NCOLOR ! INDEX OF JAMP
1284
DO J=1,4,1 ! PAY ATTENTION TO THE RANGE : J IN [1,4]
1285
TEMP(J,K)=TEMP(J,K)+JAMP(K)*JIO(J) ! THE COLOR FACTOR IS INCLUDED IN SQAMP
1294
call leptonic_current(k1,k2,l1,l2,qmass(1), jio_lept)
1297
PROJAMP(K)=TEMP(1,K)*jio_lept(1)-
1298
& TEMP(2,K)*jio_lept(2)-
1299
& TEMP(3,K)*jio_lept(3)-
1300
& TEMP(4,K)*jio_lept(4)
1304
C************************************
1305
C SQUARE THE AMPLITUDE
1306
C***********************************
1312
ZTEMP = ZTEMP + CF(J,I)*PROJAMP(J)
1314
PROJ_PSILEPT =PROJ_PSILEPT
1315
& +DBLE(ZTEMP*DCONJG(PROJAMP(I)))/DENOM(I)
1317
c write(*,*) 'result ', projected_matrix
1321
subroutine pseudoscalar(P1,P2,LAMBDA1,LAMBDA2,MC,PS)
1323
c This subroutine computes the relevant current for s=0 projection.
1325
c input : P1 = momentum of c
1326
c P2 = momentum of c~
1327
c LAMBDA1 = helicity of c
1328
c LAMBDA2 = helicity of c~
1330
c output : PS = the scalar current
1334
double complex fi(6),fo(6),PS, MOMENTUM(2)
1335
double precision q(0:3),MC,Norm,q2
1337
DOUBLE COMPLEX MAT1(1:4,1:4),GAM5(1:4,1:4),MATRIX(1:4,1:4)
1339
c "MAT1" IS THE MATRIX SL(q)+2 E
1340
c "MATRIX" IS THE MATRIX GAMMA^5 * MAT1
1343
integer J1, J2,K,LAMBDA1,LAMBDA2
1345
DOUBLE PRECISION P1(0:3), P2(0:3)
1346
double complex cImag, cZero, cOne
1347
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ),
1348
& cOne=(1.0D0,0.0D0) )
1350
CALL IXXXXX(P1,MC,LAMBDA1,1,FI)
1351
CALL OXXXXX(P2,MC,LAMBDA2,-1,FO)
1353
MOMENTUM(1) = -fo(5)+fi(5)
1354
MOMENTUM(2) = -fo(6)+fi(6)
1356
q(0) = dble( MOMENTUM(1))
1357
q(1) = dble( MOMENTUM(2))
1358
q(2) = dimag(MOMENTUM(2))
1359
q(3) = dimag(MOMENTUM(1))
1360
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
1363
C DEFINITION OF MAT1
1368
MAT1(1,4)=-q(1)+cImag*q(2)
1371
MAT1(2,3)=-q(1)-cImag*q(2)
1374
MAT1(3,2)=q(1)-cImag*q(2)
1377
MAT1(4,1)=q(1)+cImag*q(2)
1382
C INITIALIZATION OF GAMMA MATRICES
1390
C DEFINITION OF GAMMA 5 MATRIX
1391
C CHIRAL REPRESENTATION
1402
c DEFINITION OF MAT2 = GAMMA^MU (SL(q)+2E)
1408
MATRIX(J1,J2)=MATRIX(J1,J2)+GAM5(J1,K)*MAT1(K,J2)
1414
C NORMALIZATION - does not contain the factor 1/sqrt(E) from the wave function
1416
Norm=1.0D0/(4*E*DSQRT(2.0D0)*(E+MC))
1418
c DEFINITION OF THE CURRENT
1424
PS=PS+Norm*FO(J1)*MATRIX(J1,J2)*FI(J2)
1429
subroutine pseudoscalar0(P1,P2,LAMBDA1,LAMBDA2,M1,M2,PS)
1431
c This subroutine computes the relevant current for s=0 projection.
1433
c input : P1 = momentum of c
1434
c P2 = momentum of c~
1435
c LAMBDA1 = helicity of c
1436
c LAMBDA2 = helicity of c~
1438
c output : PS = the scalar current
1442
double complex fi(6),fo(6),PS
1443
double precision M1,M2,N
1444
integer lambda1,lambda2
1446
DOUBLE PRECISION P1(0:3), P2(0:3)
1447
double complex cImag, cZero, cOne
1448
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ),
1449
& cOne=(1.0D0,0.0D0) )
1451
CALL IXXXXX(P1,M1,LAMBDA1,1,FI)
1452
CALL OXXXXX(P2,M2,LAMBDA2,-1,FO)
1454
N=dsqrt(8.0d0*M1*M2)
1456
PS = (-fo(1)*fi(1)-fo(2)*fi(2)+fo(3)*fi(3)+fo(4)*fi(4))/N
1459
subroutine vector0(P1,P2,LAMBDA1,LAMBDA2,M1,M2,jio)
1461
c This subroutine computes an off-shell vector current from an external
1462
c fermion pair. The vector boson propagator is given in Feynman gauge
1463
c for a massless vector and in unitary gauge for a massive vector.
1466
c complex fi(6) : flow-in fermion |fi>
1467
c complex fo(6) : flow-out fermion <fo|
1468
c complex gc(2) : coupling constants gvf
1469
c real vmass : mass of OUTPUT vector v
1470
c real vwidth : width of OUTPUT vector v
1473
c complex jio(6) : vector current j^mu(<fo|v|fi>)
1476
double complex fi(6),fo(6),gc(2),jio(6)
1477
double precision q(0:3),q2,p1(0:3),p2(0:3),N
1478
integer lambda1,lambda2
1479
double precision m1,m2
1481
double complex cImag
1482
parameter( cImag = ( 0.0d0, 1.0d0 ) )
1487
CALL IXXXXX(P1,M1,LAMBDA1,1,FI)
1488
CALL OXXXXX(P2,M2,LAMBDA2,-1,FO)
1490
N=dsqrt(8.0d0*M1*M2)
1491
jio(5) = -fo(5)+fi(5)
1492
jio(6) = -fo(6)+fi(6)
1494
q(0) = dble( jio(5))
1495
q(1) = dble( jio(6))
1496
q(2) = dimag(jio(6))
1497
q(3) = dimag(jio(5))
1498
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
1503
jio(1) = ( gc(1)*( fo(3)*fi(1)+fo(4)*fi(2))
1504
& +gc(2)*( fo(1)*fi(3)+fo(2)*fi(4)) )/N
1505
jio(2) = (-gc(1)*( fo(3)*fi(2)+fo(4)*fi(1))
1506
& +gc(2)*( fo(1)*fi(4)+fo(2)*fi(3)) )/N
1507
jio(3) = ( gc(1)*( fo(3)*fi(2)-fo(4)*fi(1))
1508
& +gc(2)*(-fo(1)*fi(4)+fo(2)*fi(3)))
1510
jio(4) = ( gc(1)*(-fo(3)*fi(1)+fo(4)*fi(2))
1511
& +gc(2)*( fo(1)*fi(3)-fo(2)*fi(4)) )/N
1516
subroutine VECTOR(P1,P2,LAMBDA1,LAMBDA2,MQ,jio)
1518
c This subroutine computes the relevant current for s=1 projection.
1520
c input : P1 = momentum of c
1521
c P2 = momentum of c~
1522
c LAMBDA1 = helicity of c
1523
c LAMBDA2 = helicity of c~
1525
c output : jio(1->4) = the current,
1526
c jio(5->6) = the total momentum q=p1+p2
1529
double complex fi(6),fo(6),jio(6)
1530
double precision q(0:3),MQ,Norm,q2
1532
DOUBLE COMPLEX MAT1(1:4,1:4),GAM(1:4,1:4,0:3),MATRIX(1:4,1:4,0:3)
1534
c "MAT1" IS THE MATRIX SL(q)+2 E
1535
c "MATRIX" IS THE MATRIX GAMMA^\MU * MAT1
1538
integer J1, J2,K,L,LAMBDA1,LAMBDA2
1539
DOUBLE PRECISION P1(0:3), P2(0:3)
1540
double complex cImag, cZero, cOne
1541
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ),
1542
& cOne=(1.0D0,0.0D0) )
1544
CALL IXXXXX(P1,MQ,LAMBDA1,1,FI)
1545
CALL OXXXXX(P2,MQ,LAMBDA2,-1,FO)
1547
jio(5) = -fo(5)+fi(5)
1548
jio(6) = -fo(6)+fi(6)
1550
q(0) = dble( jio(5))
1551
q(1) = dble( jio(6))
1552
q(2) = dimag(jio(6))
1553
q(3) = dimag(jio(5))
1554
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
1557
C DEFINITION OF MAT1
1562
MAT1(1,4)=-q(1)+cImag*q(2)
1565
MAT1(2,3)=-q(1)-cImag*q(2)
1568
MAT1(3,2)=q(1)-cImag*q(2)
1571
MAT1(4,1)=q(1)+cImag*q(2)
1576
C INITIALIZATION OF GAMMA MATRICES
1587
C DEFINITION OF GAMMA MATRICES
1588
C CHIRAL REPRESENTATION
1624
c DEFINITION OF MAT2 = GAMMA^MU (SL(q)+2E)
1629
MATRIX(J1,J2,L)=cZero
1631
MATRIX(J1,J2,L)=MATRIX(J1,J2,L)+GAM(J1,K,L)*MAT1(K,J2)
1638
C NORMALIZATION - does not contain the factor 1/sqrt(E) from the wave function
1640
Norm=1.0D0/(4*E*DSQRT(2.0D0)*(E+MQ))
1642
c DEFINITION OF THE CURRENT
1649
jio(L+1)=jio(L+1)+Norm*FO(J1)*MATRIX(J1,J2,L)*FI(J2)
1657
subroutine vectorBc(P1,P2,LAMBDA1,LAMBDA2,M1,M2,jio)
1659
c This subroutine computes an off-shell vector current from an external
1660
c fermion pair. The vector boson propagator is given in Feynman gauge
1661
c for a massless vector and in unitary gauge for a massive vector.
1664
c complex fi(6) : flow-in fermion |fi>
1665
c complex fo(6) : flow-out fermion <fo|
1666
c complex gc(2) : coupling constants gvf
1667
c real vmass : mass of OUTPUT vector v
1668
c real vwidth : width of OUTPUT vector v
1671
c complex jio(6) : vector current j^mu(<fo|v|fi>)
1674
double complex fi(6),fo(6),gc(2),jio(6)
1675
double precision q(0:3),q2,p1(0:3),p2(0:3),N
1676
integer lambda1,lambda2
1677
double precision m1,m2
1679
double precision rZero, rOne
1680
parameter( rZero = 0.0d0, rOne = 1.0d0 )
1681
double complex cImag, cZero
1682
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ) )
1687
CALL IXXXXX(P1,M1,LAMBDA1,1,FI)
1688
CALL OXXXXX(P2,M2,LAMBDA2,-1,FO)
1690
N=dsqrt(2d0*2d0*M1*2d0*M2)
1691
jio(5) = -fo(5)+fi(5)
1692
jio(6) = -fo(6)+fi(6)
1694
q(0) = dble( jio(5))
1695
q(1) = dble( jio(6))
1696
q(2) = dimag(jio(6))
1697
q(3) = dimag(jio(5))
1698
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
1703
jio(1) = ( gc(1)*( fo(3)*fi(1)+fo(4)*fi(2))
1704
& +gc(2)*( fo(1)*fi(3)+fo(2)*fi(4)) )/N
1705
jio(2) = (-gc(1)*( fo(3)*fi(2)+fo(4)*fi(1))
1706
& +gc(2)*( fo(1)*fi(4)+fo(2)*fi(3)) )/N
1707
jio(3) = ( gc(1)*( fo(3)*fi(2)-fo(4)*fi(1))
1708
& +gc(2)*(-fo(1)*fi(4)+fo(2)*fi(3)))
1710
jio(4) = ( gc(1)*(-fo(3)*fi(1)+fo(4)*fi(2))
1711
& +gc(2)*( fo(1)*fi(3)-fo(2)*fi(4)) )/N
1716
subroutine leptonic_current(k1,k2,l1,l2,mq, jio)
1722
double precision k1(0:3),k2(0:3),mq
1724
double complex jio(6)
1728
double complex fi(6),fo(6),gc(2)
1731
double precision rZero, pi
1732
parameter( rZero = 0.0d0, PI=3.1415926d0 )
1733
double complex cImag
1734
parameter( cImag = ( 0.0d0, 1.0d0 ))
1736
N=dsqrt(3.0d0)/(8.0d0*MQ*dsqrt(pi))
1738
call oxxxxx(k1,rZero,l1,1,FO)
1739
call ixxxxx(k2,rZero,l2,-1,FI)
1744
jio(5) = fo(5)-fi(5)
1745
jio(6) = fo(6)-fi(6)
1747
jio(1) = ( gc(1)*( fo(3)*fi(1)+fo(4)*fi(2))
1748
& +gc(2)*( fo(1)*fi(3)+fo(2)*fi(4)) )*N
1749
jio(2) = (-gc(1)*( fo(3)*fi(2)+fo(4)*fi(1))
1750
& +gc(2)*( fo(1)*fi(4)+fo(2)*fi(3)) )*N
1751
jio(3) = ( gc(1)*( fo(3)*fi(2)-fo(4)*fi(1))
1752
& +gc(2)*(-fo(1)*fi(4)+fo(2)*fi(3)))
1754
jio(4) = ( gc(1)*(-fo(3)*fi(1)+fo(4)*fi(2))
1755
& +gc(2)*( fo(1)*fi(3)-fo(2)*fi(4)) )*N
1760
subroutine genmom_lept(P,x,k1,k2,three_k1)
1761
C************************************************************************
1762
C GIVEN X(2) AND P SETS UP THE MOMENTUM k1-k2
1763
C AND ALSO SETS UP THE APPROPRIATE
1764
C JACOBIAN VALUE = JAC AND PHASESPACE WEIGTH PSWGT
1765
C X(1) = COSTHETA OF FIRST DECAY psi -> mu mu
1766
C X(2) = PHI OF FIRST DECAY psi -> mu mu
1767
C************************************************************************
1773
PARAMETER (ZERO=0D0, PI=3.1415926d0 )
1777
REAL*8 P(0:3),k1(0:3),k2(0:3)
1783
REAL*8 RSH,SH,COSTH,PHI
1792
DOUBLE PRECISION S,X1,X2,PSWGT,JAC
1793
COMMON /PHASESPACE/ S,X1,X2,PSWGT,JAC
1798
C PICK VALUE OF THETA AND PHI FOR FIRST DECAY SH->M1+S1
1800
COSTH=-1.D0+2.D0*X(1)
1803
C DETERMINE JACOBIAN FOR THETA AND PHI
1807
C CALCULATE COMPONENTS OF MOMENTUM FOUR-VECTORS
1808
C OF THE FINAL STATE MASSLESS PARTONS IN THEIR CM FRAME
1810
CALL MOM2CX(RSH,zero,zero,COSTH,PHI,k1,k2)
1818
c boost the momenta in the lab frame
1820
call boostx(k1,P,k1)
1821
call boostx(k2,P,k2)
1826
C*********************************************************************
1827
SUBROUTINE polariz(P,EPS)
1828
C*********************************************************************
1833
DOUBLE PRECISION P(0:3),EPS(0:3,-1:1)
1838
DOUBLE PRECISION E1(1:3),E2(1:3),E3(1:3)
1839
DOUBLE PRECISION J1(1:3),J2(1:3)
1840
DOUBLE PRECISION ALPHA(3),BETA(2)
1842
DOUBLE PRECISION SQP, SQNORM_P
1843
DOUBLE PRECISION EPS_SQMIN,EPS_SQMAX,j2_epsmin,norm1,norm2
1847
DOUBLE PRECISION DOT
1852
DOUBLE PRECISION ZERO
1853
PARAMETER (ZERO=0.0D0)
1855
C POLARIZATIONS OF J=1 STATE
1870
C IF THE STATE IS AT REST, THE SUBROUTINE RETURNS
1871
C THE THREE VECTORS ABOVE
1873
IF (P(1).EQ.zero.AND.P(2).eq.zero.AND.P(3).eq.zero) THEN
1892
IF (dabs(ALPHA(1)).LT.dabs(ALPHA(3)).AND.dabs(ALPHA(2))
1893
&.LT.dabs(ALPHA(3))) THEN
1900
ELSEIF (dabs(ALPHA(1)).LT.dabs(ALPHA(2)).AND.dabs(ALPHA(3))
1901
& .LT.dabs(ALPHA(2))) THEN
1908
ELSEIF (dabs(ALPHA(2)).LT.dabs(ALPHA(1)).AND.dabs(ALPHA(3)).LT.
1909
& dabs(ALPHA(1))) THEN
1918
SQNORM_P=P(1)**2+P(2)**2+P(3)**2
1924
EPS(J,-1)=J1(J)-BETA(1)*P(J)/SQNORM_P
1926
EPS_SQMIN=EPS_SQMIN+EPS(J,-1)*EPS(J,-1)
1927
j2_epsmin=j2_epsmin+EPS(j,-1)*J2(J)
1930
NORM1=DSQRT(EPS_SQMIN)
1931
j2_epsmin=j2_epsmin/norm1
1934
EPS(J,-1)=EPS(J,-1)/norm1
1935
EPS(J,1)=J2(J)-BETA(2)*P(J)/SQNORM_P-j2_epsmin*EPS(J,-1)
1936
EPS_SQMAX=EPS_SQMAX+EPS(J,1)*EPS(J,1)
1938
NORM2=DSQRT(EPS_SQMAX)
1943
SQP=P(0)**2-SQNORM_P
1945
EPS(J,1)=EPS(J,1)/norm2
1946
EPS(J,0)=P(0)*P(J)/DSQRT(SQNORM_P*SQP)
1948
EPS(0,0)=DSQRT(SQNORM_P/SQP)
1952
subroutine get_helicity(P,eps)
1954
c Given P (momentum in the lab), this subroutine gets the polarization vector
1955
c Frame: px=py=pz=0 (rest frame of the particle)
1956
c Quantization axis: P
1961
double precision P(0:3)
1962
double complex eps(3,-1:1)
1966
double precision pt, pp,sqh
1970
pt=dsqrt(p(1)**2+p(2)**2)
1971
pp=dsqrt(p(1)**2+p(2)**2+p(3)**2)
1974
eps(1,0)=dcmplx(p(1)/pp)
1975
eps(2,0)=dcmplx(p(2)/pp)
1976
eps(3,0)=dcmplx(p(3)/pp)
1978
eps(1,1)=dcmplx(-p(2)/pt*sqh , p(3)*p(1)/(pt*pp)*sqh)
1979
eps(2,1)=dcmplx(p(1)/pt*sqh , p(3)*p(2)/(pt*pp)*sqh)
1980
eps(3,1)=dcmplx( 0d0 , -pt/pp*sqh )
1982
eps(1,-1)=dcmplx( p(2)/pt*sqh , p(3)*p(1)/(pt*pp)*sqh)
1983
eps(2,-1)=dcmplx(-p(1)/pt*sqh , p(3)*p(2)/(pt*pp)*sqh)
1984
eps(3,-1)=dcmplx( 0d0 , -pt/pp*sqh )
1989
subroutine get_helicity2(P,eps,m)
1991
c Given P (momentum in the lab), this subroutine gets the polarization vector
1993
c Quantization axis: P
1998
double precision P(0:3),m
1999
double complex eps(0:3,-1:1)
2003
double precision pt, pp,sqh
2007
pt=dsqrt(p(1)**2+p(2)**2)
2008
pp=dsqrt(p(1)**2+p(2)**2+p(3)**2)
2012
eps(0,0)=dcmplx(pp/m)
2013
eps(1,0)=dcmplx(p(1)/pp*P(0)/m)
2014
eps(2,0)=dcmplx(p(2)/pp*P(0)/m)
2015
eps(3,0)=dcmplx(p(3)/pp*P(0)/m)
2017
eps(0,1)=dcmplx(0d0)
2018
eps(1,1)=dcmplx(-p(2)/pt*sqh , p(3)*p(1)/(pt*pp)*sqh)
2019
eps(2,1)=dcmplx(p(1)/pt*sqh , p(3)*p(2)/(pt*pp)*sqh)
2020
eps(3,1)=dcmplx( 0d0 , -pt/pp*sqh )
2022
eps(0,-1)=dcmplx(0d0)
2023
eps(1,-1)=dcmplx( p(2)/pt*sqh , p(3)*p(1)/(pt*pp)*sqh)
2024
eps(2,-1)=dcmplx(-p(1)/pt*sqh , p(3)*p(2)/(pt*pp)*sqh)
2025
eps(3,-1)=dcmplx( 0d0 , -pt/pp*sqh )
2029
eps(0,0)=dcmplx(p(3)/m)
2030
eps(1,0)=dcmplx(0d0)
2031
eps(2,0)=dcmplx(0d0)
2032
eps(3,0)=dcmplx(P(0)/m)
2034
eps(0,1)=dcmplx(0d0)
2035
eps(1,1)=dcmplx(-sqh , 0d0)
2036
eps(2,1)=dcmplx( 0d0 , sign(sqh,p(3)))
2037
eps(3,1)=dcmplx( 0d0 )
2039
eps(0,-1)=dcmplx(0d0)
2040
eps(1,-1)=dcmplx( sqh , 0d0)
2041
eps(2,-1)=dcmplx(0d0 , sign(sqh,p(3)))
2042
eps(3,-1)=dcmplx( 0d0 )