]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/pythia/pyspli.F
New version of MUON from M.Bondila & A.Morsch
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pyspli.F
1  
2 C*********************************************************************
3  
4       SUBROUTINE PYSPLI(KF,KFLIN,KFLCH,KFLSP)
5  
6 C...In case of a hadron remnant which is more complicated than just a
7 C...quark or a diquark, split it into two (partons or hadron + parton).
8       COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
9       COMMON/PYINT1/MINT(400),VINT(400)
10       SAVE /PYPARS/,/PYINT1/
11       DIMENSION KFL(3)
12  
13 C...Preliminaries. Parton composition.
14       KFA=IABS(KF)
15       KFS=ISIGN(1,KF)
16       KFL(1)=MOD(KFA/1000,10)
17       KFL(2)=MOD(KFA/100,10)
18       KFL(3)=MOD(KFA/10,10)
19       IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN
20         KFL(2)=INT(1.5+RLU(0))
21         IF(MINT(105).EQ.333) KFL(2)=3
22         IF(MINT(105).EQ.443) KFL(2)=4
23         KFL(3)=KFL(2)
24       ELSEIF((KFA.EQ.111.OR.KFA.EQ.113).AND.RLU(0).GT.0.5) THEN
25         KFL(2)=2
26         KFL(3)=2
27       ELSEIF(KFA.EQ.223.AND.RLU(0).GT.0.5) THEN
28         KFL(2)=1
29         KFL(3)=1
30       ENDIF
31       IF(KFLIN.NE.21.AND.KFLIN.NE.22.AND.KFLIN.NE.23) THEN
32         KFLR=KFLIN*KFS
33       ELSE
34         KFLR=KFLIN
35       ENDIF
36       KFLCH=0
37  
38 C...Subdivide lepton.
39       IF(KFA.GE.11.AND.KFA.LE.18) THEN
40         IF(KFLR.EQ.KFA) THEN
41           KFLSP=KFS*22
42         ELSEIF(KFLR.EQ.22) THEN
43           KFLSP=KFA
44         ELSEIF(KFLR.EQ.-24.AND.MOD(KFA,2).EQ.1) THEN
45           KFLSP=KFA+1
46         ELSEIF(KFLR.EQ.24.AND.MOD(KFA,2).EQ.0) THEN
47           KFLSP=KFA-1
48         ELSEIF(KFLR.EQ.21) THEN
49           KFLSP=KFA
50           KFLCH=KFS*21
51         ELSE
52           KFLSP=KFA
53           KFLCH=-KFLR
54         ENDIF
55  
56 C...Subdivide photon.
57       ELSEIF(KFA.EQ.22.AND.MINT(109).NE.2) THEN
58         IF(KFLR.NE.21) THEN
59           KFLSP=-KFLR
60         ELSE
61           RAGR=0.75*RLU(0)
62           KFLSP=1
63           IF(RAGR.GT.0.125) KFLSP=2
64           IF(RAGR.GT.0.625) KFLSP=3
65           IF(RLU(0).GT.0.5) KFLSP=-KFLSP
66           KFLCH=-KFLSP
67         ENDIF
68  
69 C...Subdivide Reggeon or Pomeron.
70       ELSEIF(KFA.EQ.28.OR.KFA.EQ.29) THEN
71         IF(KFLIN.EQ.21) THEN
72           KFLSP=KFS*21
73         ELSE
74           KFLSP=-KFLIN
75         ENDIF
76  
77 C...Subdivide meson.
78       ELSEIF(KFL(1).EQ.0) THEN
79         KFL(2)=KFL(2)*(-1)**KFL(2)
80         KFL(3)=-KFL(3)*(-1)**IABS(KFL(2))
81         IF(KFLR.EQ.KFL(2)) THEN
82           KFLSP=KFL(3)
83         ELSEIF(KFLR.EQ.KFL(3)) THEN
84           KFLSP=KFL(2)
85         ELSEIF(KFLR.EQ.21.AND.RLU(0).GT.0.5) THEN
86           KFLSP=KFL(2)
87           KFLCH=KFL(3)
88         ELSEIF(KFLR.EQ.21) THEN
89           KFLSP=KFL(3)
90           KFLCH=KFL(2)
91         ELSEIF(KFLR*KFL(2).GT.0) THEN
92           CALL LUKFDI(-KFLR,KFL(2),KFDUMP,KFLCH)
93           KFLSP=KFL(3)
94         ELSE
95           CALL LUKFDI(-KFLR,KFL(3),KFDUMP,KFLCH)
96           KFLSP=KFL(2)
97         ENDIF
98  
99 C...Subdivide baryon.
100       ELSE
101         NAGR=0
102         DO 100 J=1,3
103         IF(KFLR.EQ.KFL(J)) NAGR=NAGR+1
104   100   CONTINUE
105         IF(NAGR.GE.1) THEN
106           RAGR=0.00001+(NAGR-0.00002)*RLU(0)
107           IAGR=0
108           DO 110 J=1,3
109           IF(KFLR.EQ.KFL(J)) RAGR=RAGR-1.
110           IF(IAGR.EQ.0.AND.RAGR.LE.0.) IAGR=J
111   110     CONTINUE
112         ELSE
113           IAGR=1.00001+2.99998*RLU(0)
114         ENDIF
115         ID1=1
116         IF(IAGR.EQ.1) ID1=2
117         IF(IAGR.EQ.1.AND.KFL(3).GT.KFL(2)) ID1=3
118         ID2=6-IAGR-ID1
119         KSP=3
120         IF(MOD(KFA,10).EQ.2.AND.KFL(1).EQ.KFL(2)) THEN
121           IF(IAGR.NE.3.AND.RLU(0).GT.0.25) KSP=1
122         ELSEIF(MOD(KFA,10).EQ.2.AND.KFL(2).GE.KFL(3)) THEN
123           IF(IAGR.NE.1.AND.RLU(0).GT.0.25) KSP=1
124         ELSEIF(MOD(KFA,10).EQ.2) THEN
125           IF(IAGR.EQ.1) KSP=1
126           IF(IAGR.NE.1.AND.RLU(0).GT.0.75) KSP=1
127         ENDIF
128         KFLSP=1000*KFL(ID1)+100*KFL(ID2)+KSP
129         IF(KFLR.EQ.21) THEN
130           KFLCH=KFL(IAGR)
131         ELSEIF(NAGR.EQ.0.AND.KFLR.GT.0) THEN
132           CALL LUKFDI(-KFLR,KFL(IAGR),KFDUMP,KFLCH)
133         ELSEIF(NAGR.EQ.0) THEN
134           CALL LUKFDI(10000+KFLSP,-KFLR,KFDUMP,KFLCH)
135           KFLSP=KFL(IAGR)
136         ENDIF
137       ENDIF
138  
139 C...Add on correct sign for result.
140       KFLCH=KFLCH*KFS
141       KFLSP=KFLSP*KFS
142  
143       RETURN
144       END