]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/PHOTOS/phint.F
Updated version.
[u/mrichter/AliRoot.git] / TEvtGen / PHOTOS / phint.F
1
2       FUNCTION PHINT(IDUM)
3 C.----------------------------------------------------------------------
4 C.
5 C.    PHINT:   PHotos INTerference
6 C.
7 C.    Purpose:  Calculates interference between emission of photons from
8 C.              different possible chaged daughters stored in
9 C.              the  HEP common /PHOEVT/. 
10 C.
11 C.    Input Parameter:    commons /PHOEVT/ /PHOMOM/ /PHOPHS/
12 C.    
13 C.
14 C.    Output Parameters:  
15 C.                        
16 C.
17 C.    Author(s):  Z. Was,                         Created at:  10/08/93
18 C.                                                Last Update: 
19 C.
20 C.----------------------------------------------------------------------
21
22       IMPLICIT NONE
23       REAL*8 PHINT,phint1
24       REAL*8 PHOCHA
25       INTEGER IDUM
26       INTEGER NMXPHO
27       PARAMETER (NMXPHO=10000)
28       INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
29       REAL*8 PPHO,VPHO
30       COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
31      &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
32       DOUBLE PRECISION MCHSQR,MNESQR
33       REAL*8 PNEUTR
34       COMMON/PHOMOM/MCHSQR,MNESQR,PNEUTR(5)
35       DOUBLE PRECISION COSTHG,SINTHG
36       REAL*8 XPHMAX,XPHOTO
37       COMMON/PHOPHS/XPHMAX,XPHOTO,COSTHG,SINTHG
38       REAL*8 MPASQR,XX,BETA,PQ1(4),PQ2(4),PPHOT(4)
39       REAL*8 SS,PP2,PP,E1,E2,Q1,Q2,COSTHE
40       LOGICAL IFINT
41       INTEGER K,IDENT 
42 C
43       DO  K=JDAPHO(2,1),JDAPHO(1,1),-1
44          IF(IDPHO(K).NE.22) THEN
45            IDENT=K
46            GOTO 20
47          ENDIF
48       ENDDO
49  20   CONTINUE
50 C check if there is a photon
51       IFINT= NPHO.GT.IDENT
52 C check if it is two body + gammas reaction
53       IFINT= IFINT.AND.(IDENT-JDAPHO(1,1)).EQ.1
54 C check if two body was particle antiparticle (we improve on it !
55 C      IFINT= IFINT.AND.IDPHO(JDAPHO(1,1)).EQ.-IDPHO(IDENT)
56 C check if particles were charged
57       IFINT= IFINT.AND.abs(PHOCHA(IDPHO(IDENT))).GT.0.01D0
58 C check if they have both charge
59       IFINT= IFINT.AND.
60      $       abs(PHOCHA(IDPHO(JDAPHO(1,1)))).gt.0.01D0
61 C calculates interference weight contribution
62       IF(IFINT) THEN
63         MPASQR = PPHO(5,1)**2
64         XX=4.D0*MCHSQR/MPASQR*(1.-XPHOTO)/(1.-XPHOTO+(MCHSQR-MNESQR)/
65      &     MPASQR)**2
66          BETA=SQRT(1.D0-XX)
67          PHINT  = 2D0/(1D0+COSTHG**2*BETA**2)
68          SS =MPASQR*(1.D0-XPHOTO)
69          PP2=((SS-MCHSQR-MNESQR)**2-4*MCHSQR*MNESQR)/SS/4
70          PP =SQRT(PP2)
71          E1 =SQRT(PP2+MCHSQR)
72          E2 =SQRT(PP2+MNESQR)
73          PHINT= (E1+E2)**2/((E2+COSTHG*PP)**2+(E1-COSTHG*PP)**2)
74 C
75       q1=PHOCHA(IDPHO(JDAPHO(1,1)))
76       q2=PHOCHA(IDPHO(IDENT))
77       do k=1,4
78        pq1(k)=ppho(k,JDAPHO(1,1))
79        pq2(k)=ppho(k,JDAPHO(1,1)+1)
80        pphot(k)=ppho(k,npho)
81       enddo
82        costhe=(pphot(1)*pq1(1)+pphot(2)*pq1(2)+pphot(3)*pq1(3))
83        costhe=costhe/sqrt(pq1(1)**2+pq1(2)**2+pq1(3)**2)
84        costhe=costhe/sqrt(pphot(1)**2+pphot(2)**2+pphot(3)**2)
85 C
86 ! --- this IF checks whether JDAPHO(1,1) was MCH or MNE. 
87 ! --- COSTHG angle (and in-generation variables) may be better choice 
88 ! --- than costhe. note that in the formulae below amplitudes were 
89 ! --- multiplied by (E2+COSTHG*PP)*(E1-COSTHG*PP). 
90         IF (costhg*costhe.GT.0) then
91
92          PHINT= (q1*(E2+COSTHG*PP)-q2*(E1-COSTHG*PP))**2
93      &         /(q1**2*(E2+COSTHG*PP)**2+q2**2*(E1-COSTHG*PP)**2)
94         ELSE
95
96          PHINT= (q1*(E1-COSTHG*PP)-q2*(E2+COSTHG*PP))**2
97      &         /(q1**2*(E1-COSTHG*PP)**2+q2**2*(E2+COSTHG*PP)**2)
98         ENDIF
99       ELSE
100          PHINT  = 1D0
101       ENDIF
102          phint1=1
103       END