]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/shaker/luxdif.f
Syntax problems on HP-UX corrected
[u/mrichter/AliRoot.git] / PHOS / shaker / luxdif.f
1 *CMZ :          17/07/98  15.44.35  by  Federico Carminati
2 *-- Author :
3 C*********************************************************************
4
5       SUBROUTINE LUXDIF(NC,NJET,KFL,ECM,CHI,THE,PHI)
6
7 C...Purpose: to give the angular orientation of events.
8 *KEEP,LUJETS.
9       COMMON /LUJETS/ N,K(200000,5),P(200000,5),V(200000,5)
10       SAVE /LUJETS/
11 *KEEP,LUDAT1.
12       COMMON /LUDAT1/ MSTU(200),PARU(200),MSTJ(200),PARJ(200)
13       SAVE /LUDAT1/
14 *KEEP,LUDAT2.
15       COMMON /LUDAT2/ KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
16       SAVE /LUDAT2/
17 *KEND.
18
19 C...Charge. Factors depending on polarization for QED case.
20       QF=KCHG(KFL,1)/3.
21       POLL=1.-PARJ(131)*PARJ(132)
22       POLD=PARJ(132)-PARJ(131)
23       IF(MSTJ(102).LE.1.OR.MSTJ(109).EQ.1) THEN
24         HF1=POLL
25         HF2=0.
26         HF3=PARJ(133)**2
27         HF4=0.
28
29 C...Factors depending on flavour, energy and polarization for QFD case.
30       ELSE
31         SFF=1./(16.*PARU(102)*(1.-PARU(102)))
32         SFW=ECM**4/((ECM**2-PARJ(123)**2)**2+(PARJ(123)*PARJ(124))**2)
33         SFI=SFW*(1.-(PARJ(123)/ECM)**2)
34         AE=-1.
35         VE=4.*PARU(102)-1.
36         AF=SIGN(1.,QF)
37         VF=AF-4.*QF*PARU(102)
38         HF1=QF**2*POLL-2.*QF*VF*SFI*SFF*(VE*POLL-AE*POLD)+
39      &  (VF**2+AF**2)*SFW*SFF**2*((VE**2+AE**2)*POLL-2.*VE*AE*POLD)
40         HF2=-2.*QF*AF*SFI*SFF*(AE*POLL-VE*POLD)+2.*VF*AF*SFW*SFF**2*
41      &  (2.*VE*AE*POLL-(VE**2+AE**2)*POLD)
42         HF3=PARJ(133)**2*(QF**2-2.*QF*VF*SFI*SFF*VE+(VF**2+AF**2)*
43      &  SFW*SFF**2*(VE**2-AE**2))
44         HF4=-PARJ(133)**2*2.*QF*VF*SFW*(PARJ(123)*PARJ(124)/ECM**2)*
45      &  SFF*AE
46       ENDIF
47
48 C...Mass factor. Differential cross-sections for two-jet events.
49       SQ2=SQRT(2.)
50       QME=0.
51       IF(MSTJ(103).GE.4.AND.IABS(MSTJ(101)).LE.1.AND.MSTJ(102).LE.1.AND.
52      &MSTJ(109).NE.1) QME=(2.*ULMASS(KFL)/ECM)**2
53       IF(NJET.EQ.2) THEN
54         SIGU=4.*SQRT(1.-QME)
55         SIGL=2.*QME*SQRT(1.-QME)
56         SIGT=0.
57         SIGI=0.
58         SIGA=0.
59         SIGP=4.
60
61 C...Kinematical variables. Reduce four-jet event to three-jet one.
62       ELSE
63         IF(NJET.EQ.3) THEN
64           X1=2.*P(NC+1,4)/ECM
65           X2=2.*P(NC+3,4)/ECM
66         ELSE
67           ECMR=P(NC+1,4)+P(NC+4,4)+SQRT((P(NC+2,1)+P(NC+3,1))**2+
68      &    (P(NC+2,2)+P(NC+3,2))**2+(P(NC+2,3)+P(NC+3,3))**2)
69           X1=2.*P(NC+1,4)/ECMR
70           X2=2.*P(NC+4,4)/ECMR
71         ENDIF
72
73 C...Differential cross-sections for three-jet (or reduced four-jet).
74         XQ=(1.-X1)/(1.-X2)
75         CT12=(X1*X2-2.*X1-2.*X2+2.+QME)/SQRT((X1**2-QME)*(X2**2-QME))
76         ST12=SQRT(1.-CT12**2)
77         IF(MSTJ(109).NE.1) THEN
78           SIGU=2.*X1**2+X2**2*(1.+CT12**2)-QME*(3.+CT12**2-X1-X2)-
79      &    QME*X1/XQ+0.5*QME*((X2**2-QME)*ST12**2-2.*X2)*XQ
80           SIGL=(X2*ST12)**2-QME*(3.-CT12**2-2.5*(X1+X2)+X1*X2+QME)+
81      &    0.5*QME*(X1**2-X1-QME)/XQ+0.5*QME*((X2**2-QME)*CT12**2-X2)*XQ
82           SIGT=0.5*(X2**2-QME-0.5*QME*(X2**2-QME)/XQ)*ST12**2
83           SIGI=((1.-0.5*QME*XQ)*(X2**2-QME)*ST12*CT12+QME*(1.-X1-X2+
84      &    0.5*X1*X2+0.5*QME)*ST12/CT12)/SQ2
85           SIGA=X2**2*ST12/SQ2
86           SIGP=2.*(X1**2-X2**2*CT12)
87
88 C...Differential cross-sect for scalar gluons (no mass or QFD effects).
89         ELSE
90           SIGU=2.*(2.-X1-X2)**2-(X2*ST12)**2
91           SIGL=(X2*ST12)**2
92           SIGT=0.5*SIGL
93           SIGI=-(2.-X1-X2)*X2*ST12/SQ2
94           SIGA=0.
95           SIGP=0.
96         ENDIF
97       ENDIF
98
99 C...Upper bounds for differential cross-section.
100       HF1A=ABS(HF1)
101       HF2A=ABS(HF2)
102       HF3A=ABS(HF3)
103       HF4A=ABS(HF4)
104       SIGMAX=(2.*HF1A+HF3A+HF4A)*ABS(SIGU)+2.*(HF1A+HF3A+HF4A)*
105      &ABS(SIGL)+2.*(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGT)+2.*SQ2*
106      &(HF1A+2.*HF3A+2.*HF4A)*ABS(SIGI)+4.*SQ2*HF2A*ABS(SIGA)+
107      &2.*HF2A*ABS(SIGP)
108
109 C...Generate angular orientation according to differential cross-sect.
110   100 CHI=PARU(2)*RLU(0)
111       CTHE=2.*RLU(0)-1.
112       PHI=PARU(2)*RLU(0)
113       CCHI=COS(CHI)
114       SCHI=SIN(CHI)
115       C2CHI=COS(2.*CHI)
116       S2CHI=SIN(2.*CHI)
117       THE=ACOS(CTHE)
118       STHE=SIN(THE)
119       C2PHI=COS(2.*(PHI-PARJ(134)))
120       S2PHI=SIN(2.*(PHI-PARJ(134)))
121       SIG=((1.+CTHE**2)*HF1+STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGU+
122      &2.*(STHE**2*HF1-STHE**2*(C2PHI*HF3-S2PHI*HF4))*SIGL+
123      &2.*(STHE**2*C2CHI*HF1+((1.+CTHE**2)*C2CHI*C2PHI-2.*CTHE*S2CHI*
124      &S2PHI)*HF3-((1.+CTHE**2)*C2CHI*S2PHI+2.*CTHE*S2CHI*C2PHI)*HF4)*
125      &SIGT-2.*SQ2*(2.*STHE*CTHE*CCHI*HF1-2.*STHE*(CTHE*CCHI*C2PHI-
126      &SCHI*S2PHI)*HF3+2.*STHE*(CTHE*CCHI*S2PHI+SCHI*C2PHI)*HF4)*SIGI+
127      &4.*SQ2*STHE*CCHI*HF2*SIGA+2.*CTHE*HF2*SIGP
128       IF(SIG.LT.SIGMAX*RLU(0)) GOTO 100
129
130       RETURN
131       END