]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HIJING/hipyset1_35/lusphe_hijing.F
HLT GPU - to be tested
[u/mrichter/AliRoot.git] / HIJING / hipyset1_35 / lusphe_hijing.F
CommitLineData
e74335a4 1* $Id$
2
3C*********************************************************************
4
5 SUBROUTINE LUSPHE_HIJING(SPH,APL)
6
7C...Purpose: to perform sphericity tensor analysis to give sphericity,
8C...aplanarity and the related event axes.
9#include "lujets_hijing.inc"
10#include "ludat1_hijing.inc"
11#include "ludat2_hijing.inc"
12 DIMENSION SM(3,3),SV(3,3)
13
14C...Calculate matrix to be diagonalized.
15 NP=0
16 DO 100 J1=1,3
17 DO 100 J2=J1,3
18 100 SM(J1,J2)=0.
19 PS=0.
20 DO 120 I=1,N
21 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 120
22 IF(MSTU(41).GE.2) THEN
23 KC=LUCOMP_HIJING(K(I,2))
24 IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
25 & KC.EQ.18) GOTO 120
26 IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE_HIJING(K(I,2))
27 $ .EQ.0)GOTO 120
28 ENDIF
29 NP=NP+1
30 PA=SQRT(P(I,1)**2+P(I,2)**2+P(I,3)**2)
31 PWT=1.
32 IF(ABS(PARU(41)-2.).GT.0.001) PWT=MAX(1E-10,PA)**(PARU(41)-2.)
33 DO 110 J1=1,3
34 DO 110 J2=J1,3
35 110 SM(J1,J2)=SM(J1,J2)+PWT*P(I,J1)*P(I,J2)
36 PS=PS+PWT*PA**2
37 120 CONTINUE
38
39C...Very low multiplicities (0 or 1) not considered.
40 IF(NP.LE.1) THEN
41 CALL LUERRM_HIJING(8
42 $ ,'(LUSPHE_HIJING:) too few particles for analysis')
43 SPH=-1.
44 APL=-1.
45 RETURN
46 ENDIF
47 DO 130 J1=1,3
48 DO 130 J2=J1,3
49 130 SM(J1,J2)=SM(J1,J2)/PS
50
51C...Find eigenvalues to matrix (third degree equation).
52 SQ=(SM(1,1)*SM(2,2)+SM(1,1)*SM(3,3)+SM(2,2)*SM(3,3)-SM(1,2)**2-
53 &SM(1,3)**2-SM(2,3)**2)/3.-1./9.
54 SR=-0.5*(SQ+1./9.+SM(1,1)*SM(2,3)**2+SM(2,2)*SM(1,3)**2+SM(3,3)*
55 &SM(1,2)**2-SM(1,1)*SM(2,2)*SM(3,3))+SM(1,2)*SM(1,3)*SM(2,3)+1./27.
56 SP=COS(ACOS(MAX(MIN(SR/SQRT(-SQ**3),1.),-1.))/3.)
57 P(N+1,4)=1./3.+SQRT(-SQ)*MAX(2.*SP,SQRT(3.*(1.-SP**2))-SP)
58 P(N+3,4)=1./3.+SQRT(-SQ)*MIN(2.*SP,-SQRT(3.*(1.-SP**2))-SP)
59 P(N+2,4)=1.-P(N+1,4)-P(N+3,4)
60 IF(P(N+2,4).LT.1E-5) THEN
61 CALL LUERRM_HIJING(8
62 $ ,'(LUSPHE_HIJING:) all particles back-to-back')
63 SPH=-1.
64 APL=-1.
65 RETURN
66 ENDIF
67
68C...Find first and last eigenvector by solving equation system.
69 DO 170 I=1,3,2
70 DO 140 J1=1,3
71 SV(J1,J1)=SM(J1,J1)-P(N+I,4)
72 DO 140 J2=J1+1,3
73 SV(J1,J2)=SM(J1,J2)
74 140 SV(J2,J1)=SM(J1,J2)
75 SMAX=0.
76 DO 150 J1=1,3
77 DO 150 J2=1,3
78 IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 150
79 JA=J1
80 JB=J2
81 SMAX=ABS(SV(J1,J2))
82 150 CONTINUE
83 SMAX=0.
84 DO 160 J3=JA+1,JA+2
85 J1=J3-3*((J3-1)/3)
86 RL=SV(J1,JB)/SV(JA,JB)
87 DO 160 J2=1,3
88 SV(J1,J2)=SV(J1,J2)-RL*SV(JA,J2)
89 IF(ABS(SV(J1,J2)).LE.SMAX) GOTO 160
90 JC=J1
91 SMAX=ABS(SV(J1,J2))
92 160 CONTINUE
93 JB1=JB+1-3*(JB/3)
94 JB2=JB+2-3*((JB+1)/3)
95 P(N+I,JB1)=-SV(JC,JB2)
96 P(N+I,JB2)=SV(JC,JB1)
97 P(N+I,JB)=-(SV(JA,JB1)*P(N+I,JB1)+SV(JA,JB2)*P(N+I,JB2))/
98 &SV(JA,JB)
99 PA=SQRT(P(N+I,1)**2+P(N+I,2)**2+P(N+I,3)**2)
100 SGN=(-1.)**INT(RLU_HIJING(0)+0.5)
101 DO 170 J=1,3
102 170 P(N+I,J)=SGN*P(N+I,J)/PA
103
104C...Middle axis orthogonal to other two. Fill other codes.
105 SGN=(-1.)**INT(RLU_HIJING(0)+0.5)
106 P(N+2,1)=SGN*(P(N+1,2)*P(N+3,3)-P(N+1,3)*P(N+3,2))
107 P(N+2,2)=SGN*(P(N+1,3)*P(N+3,1)-P(N+1,1)*P(N+3,3))
108 P(N+2,3)=SGN*(P(N+1,1)*P(N+3,2)-P(N+1,2)*P(N+3,1))
109 DO 180 I=1,3
110 K(N+I,1)=31
111 K(N+I,2)=95
112 K(N+I,3)=I
113 K(N+I,4)=0
114 K(N+I,5)=0
115 P(N+I,5)=0.
116 DO 180 J=1,5
117 180 V(I,J)=0.
118
119C...Select storing option. Calculate sphericity and aplanarity.
120 MSTU(61)=N+1
121 MSTU(62)=NP
122 IF(MSTU(43).LE.1) MSTU(3)=3
123 IF(MSTU(43).GE.2) N=N+3
124 SPH=1.5*(P(N+2,4)+P(N+3,4))
125 APL=1.5*P(N+3,4)
126
127 RETURN
128 END