Skip to content

Commit 29f7ebc

Browse files
authored
v3.0.02 update (#50)
1 parent e57d647 commit 29f7ebc

File tree

10 files changed

+3424
-413
lines changed

10 files changed

+3424
-413
lines changed

PACIAE.sh

Lines changed: 44 additions & 38 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Written by Markdown language.
33
By Anke at CCNU on 17/10/2022
44
5-
Last updated on 13/03/2024
5+
Last updated on 15/10/2024
66
-->
77

88
# The parton and hadron cascade model PACIAE
@@ -122,7 +122,20 @@ The released code are available on https://github.com/ArcsaberHep/PACIAE/release
122122
## Update Notes:
123123
124124
<!----------------------------------------------------------------------------->
125-
...(waiting for updating)
125+
<!-- ...(waiting for updating) -->
126+
127+
<!----------------------------------------------------------------------------->
128+
### <font color=red> 04-10/2024: </font> In version PACIAE 3.0.02
129+
130+
- In "main_30.f" and "parini_30.f", the *NN* total cross section "para1_1" has been recalculated in the program by subroutine "PAXTOT" via Donnachie-Landshoff parameterization instead of the manual input.
131+
- In "main_30.f" and "parini_30.f", the adjustment of energy conservation stemming from diquark breaking-up and recovering has been cancelled. It may cause errors in string fragmentation and abnormal hardening of intermediate and high $p_T$. The cancellation may lead to 0.1-1% energy violation.
132+
- In "parini_30.f", a new "D-framework" has been introduced to take the leading-proton effect into account, mainly for ***p*A** collisions.
133+
- In "parini_30.f", for **AA** and ***p*A** collisions, now the initial positions of projectile and target nucleon/nuclei are setting at (b/2, 0, -20) and (-b/2, 0, 20), respectively.
134+
- In "parcas_30.f", the analytical form of parton-parton cross sections have been introduced replacing the old numerical method of integral cross section calculation, which may cause abnormal sharp peaks at forward and backward rapidities. The mass correction of cross section for heavy c and b quarks has been taken into account now.
135+
- An experimental feature, string fragmentation after the gluon-splitting and the deexcitation of excited quarks, has been introduced in order to enhance the flow effect in string fragmentation model.
136+
- Some statements optimized in program.
137+
- Bug fixed.
138+
- "PACIAE.sh" updated.
126139
127140
<!----------------------------------------------------------------------------->
128141
### <font color=red> 01-03/2024: </font> In version PACIAE 3.0.01

coales_30.f

Lines changed: 123 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ subroutine coales(ijk,neve,nnout,nap,nat,nzp,nzt,i_coal)
3030
common/sa6_p/ithroq_p,ithrob_p,ich_p,non6_p,throe_p(4) ! 201104 300623 Lei
3131
common/sa18/i_deex,n_deex_step,i_pT,i_pT_max,a_FF,aPS_c,aPS_b ! 280823 Lei
3232
common/sa24/adj1(40),nnstop,non24,zstop
33+
common/sa28/nstr,nstra(kszj),nstrv(kszj),nstr0,
34+
& nstr1,nstr1a(kszj),nstr1v(kszj) ! 030620
3335
common/sa36/nglu,nongu,kglu(kszj,5),pglu(kszj,5),vglu(kszj,5) ! 220822
3436
common/sa37/nth,npadth,kth(kszj,5),pth(kszj,5),vth(kszj,5) ! 150922
37+
common/sbe/nbe,nonbe,kbe(kszj,5),pbe(kszj,5),vbe(kszj,5)
3538
common/sbh/nbh,nonh,kbh(kszj,5),pbh(kszj,5),vbh(kszj,5)
3639
common/syspar/ipden,itden,suppm,suptm,suppc,suptc,r0p,r0t,
3740
c napp,natt,nzpp,nztt,pio
@@ -58,19 +61,21 @@ subroutine coales(ijk,neve,nnout,nap,nat,nzp,nzt,i_coal)
5861

5962
c-------------------------------------------------------------------------------
6063
c---------------------------- Junctions removing ---------------------------
64+
if( INT(adj1(40)).eq.3 )then ! 070223
6165
c220822 Remove junctions.
62-
jb = 0
63-
2010 do i1=jb+1,N,1 ! i1 loop
64-
kf = K(i1,2)
65-
kfab = ABS(kf)
66-
if(kfab.ne.88)then
67-
jb = jb + 1
68-
goto 2020
69-
endif
70-
call updad_pyj(N,i1+1,1) ! 090922 'updad_pyj' in sfm_30.f
71-
N = N - 1
72-
goto 2010
73-
2020 enddo ! i1 loop
66+
jb = 0
67+
2010 do i1=jb+1,N,1 ! i1 loop
68+
kf = K(i1,2)
69+
kfab = ABS(kf)
70+
if(kfab.ne.88)then
71+
jb = jb + 1
72+
goto 2020
73+
endif
74+
call updad_pyj(N,i1+1,1) ! 090922 'updad_pyj' in sfm_30.f
75+
N = N - 1
76+
goto 2010
77+
2020 enddo ! i1 loop
78+
endif ! 070223
7479
c---------------------------- Junctions removing ---------------------------
7580
c-------------------------------------------------------------------------------
7681

@@ -83,6 +88,7 @@ subroutine coales(ijk,neve,nnout,nap,nat,nzp,nzt,i_coal)
8388
c-------------------------------------------------------------------------------
8489
c----------------------------- Gluon splitting -----------------------------
8590
c220122
91+
n00 = N ! Original total entries in PYJETS
8692
c Move gluons from 'pyjest' to 'sa36'.
8793
call remo_glu
8894
c Break-up gluon (with E_g>2E_u in 'sa36') -> qqbar string
@@ -100,20 +106,15 @@ subroutine coales(ijk,neve,nnout,nap,nat,nzp,nzt,i_coal)
100106
c-------------------------------------------------------------------------------
101107

102108

103-
c250823 Debug mode. ! 250823 Lei
104-
c Do g-splitting only, without q-deexcitation.
105-
if( INT(adj1(12)).eq.3 ) goto 1000
106-
107-
108109
c-------------------------------------------------------------------------------
109110
c--------------------------- Quark deexcitation ----------------------------
110111
c280822 energetic q (qbar) de-excitation
111-
n00 = N ! Original total entries in PYJETS
112112
i_call_deex = 0
113113
i_daught_gen = 1 ! the #-th newly produced daughter qqbar
114114
n_deex = 0 ! the number of successful deexcitation
115115
jb = 0
116116
n0 = N ! Current total entries in PYJETS
117+
if( i_deex_gen.eq.0 ) goto 900 ! 300324 Lei
117118
700 continue
118119
do i1=jb+1,n0,1
119120
kf0 = K(i1,2)
@@ -147,12 +148,37 @@ subroutine coales(ijk,neve,nnout,nap,nat,nzp,nzt,i_coal)
147148
c300623 Shares the 4-momentum in 'throe_p' among partons. ! 300623 Lei
148149
call share_p_PYJETS ! 300623 Lei
149150
c220122
151+
152+
c300324 Lei
153+
if( INT(adj1(12)).eq.3 )then
154+
c Records the location (line numbers) of new strings (qqbar).
155+
do i1=n00+1,N,2
156+
nstr1 = nstr1 + 1
157+
nstr1a( nstr1 ) = i1
158+
nstr1v( nstr1 ) = i1 + 1
159+
end do
160+
nstr0 = nstr1
161+
c Updates "sbe".
162+
do ii=n00+1,N,1
163+
nbe = nbe + 1
164+
do jj=1,5,1
165+
kbe( nbe, jj ) = K(ii,jj)
166+
pbe( nbe, jj ) = P(ii,jj)
167+
vbe( nbe, jj ) = V(ii,jj)
168+
end do
169+
end do
170+
end if
171+
c300324 Lei
172+
150173
c--------------------------- Quark deexcitation ----------------------------
151174
c-------------------------------------------------------------------------------
152175

153176

154177
c Just do the g-splitting and quark deexcitation, without real coalescence
155-
1000 if( i_coal.eq.0 ) return ! 300623 Lei For adj12 = 2
178+
c250324
179+
1000 continue
180+
if( i_coal.eq.0 ) return ! 300623 Lei For adj12 = 2
181+
c250324
156182

157183

158184
c-------------------------------------------------------------------------------
@@ -506,7 +532,7 @@ subroutine hadpro(rrp,iphas) ! 080324
506532
common/sa6_p/ithroq_p,ithrob_p,ich_p,non6_p,throe_p(4) ! 201104 300623 Lei
507533
common/sa24/adj1(40),nnstop,non24,zstop
508534
common/sa37/nth,npadth,kth(kszj,5),pth(kszj,5),vth(kszj,5) ! 150922
509-
common/coal1/bmrat ! ratio of baryon to meson
535+
common/coal1/bmrat,i_mm ! ratio of baryon to meson
510536
dimension pc(4),rc(3),iar(3),rcp(3)
511537
dimension psu(3),peo(5),pnn(kszj,5)
512538
dimension numb(3) ! 110905
@@ -575,7 +601,7 @@ subroutine hadpro(rrp,iphas) ! 080324
575601
c110324 Lei
576602
KF_in_1 = kf1
577603
KF_in_2 = kf2
578-
c Exchanges KFSs of qbar and q to ensure the first one is q.
604+
c Exchanges KFs of qbar and q to ensure the first one is q.
579605
if( kf1.lt.0 )then
580606
KF_in_1 = kf2
581607
KF_in_2 = kf1
@@ -584,13 +610,13 @@ subroutine hadpro(rrp,iphas) ! 080324
584610
c110324 Lei
585611
if(isucc.eq.0) goto 500
586612

587-
c Phase space adjudgment.
613+
c Phase space adjudgment.
588614
if( iphas.ne.0 )then
589615
call phas(i1,i2,0,isucc,2,iphas)
590616
if( isucc.eq.0 ) goto 500 ! fail
591617
endif
592618

593-
c Proceed for success
619+
c Proceed for success
594620
imes = imes + 1
595621
nme = nme + 1
596622

@@ -659,6 +685,12 @@ subroutine hadpro(rrp,iphas) ! 080324
659685
call findb(kf1,kf2,kf3,cm,kfii,amasi,isucc,1)
660686
if(isucc.eq.0) goto 600
661687

688+
c Phase space adjudgment.
689+
if( iphas.ne.0 )then
690+
call phas(i1,i2,i3,isucc,3,iphas)
691+
if( isucc.eq.0 ) goto 600 ! fail
692+
endif
693+
662694
c Proceed for success.
663695
ibarp = ibarp + 1
664696
nba = nba + 1
@@ -735,6 +767,12 @@ subroutine hadpro(rrp,iphas) ! 080324
735767
call findb(-kf1,-kf2,-kf3,cm,kfii,amasi,isucc,-1)
736768
if(isucc.eq.0) goto 700 ! 110324 Lei
737769

770+
c Phase space adjudgment.
771+
if( iphas.ne.0 )then
772+
call phas(i1,i2,i3,isucc,3,iphas)
773+
if( isucc.eq.0 ) goto 700 ! fail
774+
endif
775+
738776
ibarm = ibarm + 1
739777
nba = nba + 1
740778

@@ -2424,13 +2462,21 @@ subroutine tdgaus(v,pmax,np,pp)
24242462
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
24252463
subroutine remo_glu ! 160822
24262464
c moves gluons from 'pyjets' to 'sa36'
2465+
c290324 Removes gluons from 'sbe', too. ! 290324 Lei
24272466
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
24282467
IMPLICIT INTEGER(I-N)
24292468
INTEGER PYK,PYCHGE,PYCOMP
24302469
PARAMETER (KSZJ=80000)
24312470
COMMON/PYJETS/N,NPAD,K(KSZJ,5),P(KSZJ,5),V(KSZJ,5)
2432-
common/sa36/nglu,nongu,kglu(kszj,5),pglu(kszj,5),vglu(kszj,5)
24332471
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
2472+
common/sa24/adj1(40),nnstop,non24,zstop ! 170205
2473+
common/sa26/ndiq(kszj),npt(kszj),ifcom(kszj),idi,idio ! 220110
2474+
common/sa28/nstr,nstra(kszj),nstrv(kszj),nstr0,
2475+
& nstr1,nstr1a(kszj),nstr1v(kszj) ! 030620
2476+
common/sa36/nglu,nongu,kglu(kszj,5),pglu(kszj,5),vglu(kszj,5)
2477+
common/sbe/nbe,nonbe,kbe(kszj,5),pbe(kszj,5),vbe(kszj,5)
2478+
2479+
24342480
nglu=0
24352481
if(iii.eq.1)then ! 300623 Lei
24362482
kglu=0
@@ -2466,9 +2512,62 @@ subroutine remo_glu ! 160822
24662512
enddo
24672513
enddo
24682514
N=N-1
2515+
c290324 Lei
2516+
if( INT(adj1(12)).eq.3 )then
2517+
c Adjusts line numbers of components of broken diquarks.
2518+
do i_diq = 1, idi, 1
2519+
if( i1.lt.ifcom(i_diq) ) ifcom(i_diq) = ifcom(i_diq) - 1
2520+
if( i1.lt. npt(i_diq) ) npt(i_diq) = npt(i_diq) - 1
2521+
end do
2522+
do j = i1+1, N+1, 1
2523+
ndiq( j-1 ) = ndiq(j)
2524+
end do
2525+
c Adjusts line numbers of the string-locating.
2526+
do i_string = 1, nstr1, 1
2527+
if( i1.le.nstr1a(i_string) )
2528+
& nstr1a(i_string) = nstr1a(i_string) - 1
2529+
if( i1.le.nstr1v(i_string) )
2530+
& nstr1v(i_string) = nstr1v(i_string) - 1
2531+
end do
2532+
end if
2533+
c290324 Lei
24692534
goto 201
24702535
202 enddo ! do loop
24712536
203 continue
2537+
2538+
2539+
c290324 Lei
2540+
if( INT(adj1(12)).eq.3 )then
2541+
c Removes gluons from 'sbe'.
2542+
jb=0
2543+
301 do i1=jb+1,nbe
2544+
kf=kbe(i1,2)
2545+
kfab=iabs(kf)
2546+
eng=pbe(i1,4)
2547+
if(kfab.ne.21)then ! stay
2548+
jb=jb+1
2549+
goto 302
2550+
endif
2551+
if(i1.eq.nbe)then
2552+
nbe=nbe-1
2553+
goto 303
2554+
endif
2555+
c move particle list one step downward from i1+1 to nbe
2556+
do jj=1,5
2557+
do j=i1+1,nbe,1
2558+
kbe(j-1,jj)=kbe(j,jj)
2559+
pbe(j-1,jj)=pbe(j,jj)
2560+
vbe(j-1,jj)=vbe(j,jj)
2561+
enddo
2562+
enddo
2563+
nbe=nbe-1
2564+
goto 301
2565+
302 enddo ! do loop
2566+
303 continue
2567+
end if
2568+
c290324 Lei
2569+
2570+
24722571
return
24732572
end
24742573

hadcas_30.f

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,7 @@ subroutine hadcas(ijk,neve,nout,time_had,ijkk)
145145
c neutron, ...
146146
c initial particle list is compsed of the arraies in common block
147147
c 'sa1_h', 'tau' and 'ishp' in 'sa8_h', and 'numb' in 'sa9_h'
148-
c call prt_sa1_h(nsa) ! sa
149148
call filt_h
150-
c call prt_sa1_h(nsa) ! sa
151149
c280910 time=0.
152150

153151
c calculate position of center of mass of the system. distance of a
@@ -1107,7 +1105,7 @@ subroutine coinel(l,l1,ss,b,pi,pj,icp,pii,pjj,lc,tc,tw,winel,
11071105
c Total 112 channels: 385-496
11081106
c--------------------------------------------
11091107
c D + pion/rho
1110-
c Single production channel.
1108+
c Single production channels.
11111109
c
11121110
c Charge ++, --
11131111
c D+- + pion+-/rho+-
@@ -1132,7 +1130,7 @@ subroutine coinel(l,l1,ss,b,pi,pj,icp,pii,pjj,lc,tc,tw,winel,
11321130
c 400. D*bar0 + rho+ --> Dbar0 + pi+
11331131
c--------------------------------------------
11341132
c D + pion/rho
1135-
c Dual production chennels.
1133+
c Dual production channels.
11361134
c
11371135
c Charge 00
11381136
c D0 + pi0/rho0
@@ -1248,7 +1246,7 @@ subroutine coinel(l,l1,ss,b,pi,pj,icp,pii,pjj,lc,tc,tw,winel,
12481246
c============================================
12491247
c031223 Lei D meson induced reactions.
12501248

1251-
c 489-592: null.
1249+
c 497-592: null.
12521250

12531251
c 593. lambda- + p to K*+ + Omega
12541252
c 594. lambda- + n to K*0 + Omega
@@ -10896,7 +10894,7 @@ subroutine DMeson_coll( iA,iB,KF_A,KF_B,E_AB,icp,lc,tc,tw,ioo )
1089610894
iCharge_D = PYCHGE( KF_D )
1089710895
iCharge_M = PYCHGE( KF_M )
1089810896

10899-
c Single production chennel: 16 chennels, 385-400.
10897+
c Single production channels: 16 channels, 385-400.
1090010898
if( (iCharge_D.gt.0 .AND. iCharge_M.gt.0) .OR. ! ++
1090110899
& (iCharge_D.lt.0 .AND. iCharge_M.lt.0) .OR. ! --
1090210900
& (iCharge_D.eq.0 .AND. iCharge_M.gt.0 .AND. ! 0+, KF-+
@@ -10905,7 +10903,7 @@ subroutine DMeson_coll( iA,iB,KF_A,KF_B,E_AB,icp,lc,tc,tw,ioo )
1090510903
& KF_D.gt.0 .AND. KF_M.lt.0) ! 0-, KF+-
1090610904
& )then
1090710905
call Dmeson1(iA,iB,KF_D,KF_M,E_AB,icp,lc,tc,tw,ioo,i_order)
10908-
c Dual production chennels: 64 channels, 401-464,
10906+
c Dual production channels: 64 channels, 401-464,
1090910907
c else if( (iCharge_D.eq.0 .AND. iCharge_M.eq.0) .OR. ! 00
1091010908
c & (iCharge_D.gt.0 .AND. iCharge_M.lt.0) .OR. ! +-
1091110909
c & (iCharge_D.lt.0 .AND. iCharge_M.gt.0) .OR. ! -+
@@ -11936,8 +11934,12 @@ subroutine upddep(ij,lc,tc,tw,time,iii)
1193611934
i2=i1
1193711935
goto 3001
1193811936
3000 enddo
11937+
c200624 Lei
11938+
3001 continue
1193911939
if(i2.gt.0)then ! 280224 Lei
11940-
3001 do i1=i2,kfmax
11940+
c3001 do i1=i2,kfmax
11941+
do i1=i2,kfmax
11942+
c200624 Lei
1194111943
numb(i1)=numb(i1)-1
1194211944
enddo
1194311945
end if ! 280224 Lei

0 commit comments

Comments
 (0)