ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pyhispli.f
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file pyhispli.f
1 
2 C*********************************************************************
3 
4  SUBROUTINE pyhispli(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  dimension kfl(3)
9 
10 C...Preliminaries. Parton composition.
11  kfa=iabs(kf)
12  kfs=isign(1,kf)
13  kfl(1)=mod(kfa/1000,10)
14  kfl(2)=mod(kfa/100,10)
15  kfl(3)=mod(kfa/10,10)
16  kflr=kflin*kfs
17  kflch=0
18 
19 C...Subdivide meson.
20  IF(kfl(1).EQ.0) THEN
21  kfl(2)=kfl(2)*(-1)**kfl(2)
22  kfl(3)=-kfl(3)*(-1)**iabs(kfl(2))
23  IF(kflr.EQ.kfl(2)) THEN
24  kflsp=kfl(3)
25  ELSEIF(kflr.EQ.kfl(3)) THEN
26  kflsp=kfl(2)
27  ELSEIF(iabs(kflr).EQ.21.AND.rlu(0).GT.0.5) THEN
28  kflsp=kfl(2)
29  kflch=kfl(3)
30  ELSEIF(iabs(kflr).EQ.21) THEN
31  kflsp=kfl(3)
32  kflch=kfl(2)
33  ELSEIF(kflr*kfl(2).GT.0) THEN
34  CALL lukfdi(-kflr,kfl(2),kfdump,kflch)
35  kflsp=kfl(3)
36  ELSE
37  CALL lukfdi(-kflr,kfl(3),kfdump,kflch)
38  kflsp=kfl(2)
39  ENDIF
40 
41 C...Subdivide baryon.
42  ELSE
43  nagr=0
44  DO 100 j=1,3
45  100 IF(kflr.EQ.kfl(j)) nagr=nagr+1
46  IF(nagr.GE.1) THEN
47  ragr=0.00001+(nagr-0.00002)*rlu(0)
48  iagr=0
49  DO 110 j=1,3
50  IF(kflr.EQ.kfl(j)) ragr=ragr-1.
51  110 IF(iagr.EQ.0.AND.ragr.LE.0.) iagr=j
52  ELSE
53  iagr=1.00001+2.99998*rlu(0)
54  ENDIF
55  id1=1
56  IF(iagr.EQ.1) id1=2
57  IF(iagr.EQ.1.AND.kfl(3).GT.kfl(2)) id1=3
58  id2=6-iagr-id1
59  ksp=3
60  IF(mod(kfa,10).EQ.2.AND.kfl(1).EQ.kfl(2)) THEN
61  IF(iagr.NE.3.AND.rlu(0).GT.0.25) ksp=1
62  ELSEIF(mod(kfa,10).EQ.2.AND.kfl(2).GE.kfl(3)) THEN
63  IF(iagr.NE.1.AND.rlu(0).GT.0.25) ksp=1
64  ELSEIF(mod(kfa,10).EQ.2) THEN
65  IF(iagr.EQ.1) ksp=1
66  IF(iagr.NE.1.AND.rlu(0).GT.0.75) ksp=1
67  ENDIF
68  kflsp=1000*kfl(id1)+100*kfl(id2)+ksp
69  IF(kflin.EQ.21) THEN
70  kflch=kfl(iagr)
71  ELSEIF(nagr.EQ.0.AND.kflr.GT.0) THEN
72  CALL lukfdi(-kflr,kfl(iagr),kfdump,kflch)
73  ELSEIF(nagr.EQ.0) THEN
74  CALL lukfdi(10000+kflsp,-kflr,kfdump,kflch)
75  kflsp=kfl(iagr)
76  ENDIF
77  ENDIF
78 
79 C...Add on correct sign for result.
80  kflch=kflch*kfs
81  kflsp=kflsp*kfs
82 
83  RETURN
84  END