-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain_40.f90
More file actions
6582 lines (5881 loc) · 245 KB
/
Main_40.f90
File metadata and controls
6582 lines (5881 loc) · 245 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
!! Main_40.f90 is a part of the PACIAE event generator.
!! Copyright (C) 2025 PACIAE Group.
!! PACIAE is licensed under the GNU GPL v2 or later, see LICENSE for details.
!! Open source: https://github.com/ArcsaberHep/PACIAE4
!! Author: Ben-Hao Sa, ???? 2006 - February 2025.
!> This is the main program to administrate the Monte Carlo simulation for
!! the relativistic hh, hA(Ah), AB, ll, lh(hl) and lA(Al) collisions.
!! By Ben-Hao at CIAE on DD/MM/2006
!! Last updated by An-Ke at UiO on 04/02/2025
!ccccccccccccccccccccccccccc Brief Introduction ccccccccccccccccccccccccccc
! PACIAE4.0 is developed from PACIAE3.0, which is from PACIAE2.0.
! PACIAE2.0, in turn, is from PACIAE1.0, which is the rename of
! JPCIAE, after JETSET integrated into PYTHIA. PACIAE1.0 is based on
! JETSET7.4 and PYTHIA5.7 having implementation of partonic and hadronic
! rescattering, respectively, before and after hadronization. PACIAE1.0
! was next to LUCIAE, which is a extension of FRITIOF with performance
! of hadronic rescattering after hadronization.
! Ben-Hao Sa and An Tai began constructing the LUCIAE model at around
! 1993 with encouragement of Xu Cai. Subsequently, Zhong-Dao Lu,
! Zhong-Qi Wang, Guang Song, Zhong-Han Feng, Xiao-Mei Li, Xiao-Long
! Wang, Dai-Mei Zhou, Guo-Liang Ma, Zhi-Guang Tan, Bao-Guo Dong,
! Yu-Liang Yan, Hai-Liang Ma, Sheng-Qin Feng, Gang Chen, Zhi-Lei She,
! Yun Cheng, Du-Juan Wang, An-Ke Lei, and Liang Zheng, took part in
! the PACIAE group one behind the other. Later on, Gao-Chan Yong,
! Wen-Chao Zhang, Hua Zheng, and Li-Ling Zhu are joined with us.
! An-Ke Lei is the main author of PACIAE4.0 and Dai-Mei Zhou is the
! head of PACIAE group.
! Ben-Hao Sa on 05/04/2024
!ccccccccccccccccccccccccccc Brief Introduction ccccccccccccccccccccccccccc
program main
!! Administrates the MC simulation for relativistic hh, hA(Ah), AB,
!! ll, lN(Nl) & lA(Al) collisions.
!
! The program comprises Main_40.f90, Parini_40.f90, Parcas_40.f90,
! Sfm_40.f90, Coales_40.f90, Hadcas_40.f90, Analy_40.f90, P_40.f,
! Pythia8_fort_interface.f90, Pythia8CppInterface.cpp,
! PaciaeUserHooks.cpp, Pythia8CppInterface.hpp, and
! PaciaeUserHooks.hpp.
!
! Main_40.f90: administrates the MC simulation.
! Parini_40.f90: generates partonic initial state of colliding system.
! Parcas_40.f90: performs parton rescattering, where 2->2 processes
! are considered only, and the LO pQCD cross section or its regularized
! approximation is used.
! Sfm_40.f90: hadronization with Lund string fragmentation model
! Coales_40.f90: hadronization with Monte Carlo coalescence model
! Hadcas_40.f90: performs hadronic rescattering
! Analy_40.f90: an example of event analysis subroutine, users are free
! to replace it with your own one.
! P_40.f (PYTHIA 6.4.28): for the generation of the partonic initial state
! and/or string hadronization via PYTHIA 6.
! Pythia8_fort_interface.f90: the Fortran interface of PACIAE
! to C++-based PYTHIA 8.
! Pythia8CppInterface.cpp: the C++ interface of PACIAE
! to C++-based PYTHIA 8.
! Pythia8CppInterface.hpp: the C++ interface header file.
! PaciaeUserHooks.cpp: PACIAE-defined Userhooks and HIUserhooks for
! the interaction with PYTHIA 8.
! PaciaeUserHooks.hpp: PACIAE-defined Userhooks and HIUserhooks
! header file.
!
! Rms_analysis.f90 : standalone averaging program.
!
! PYTHIA 8 has been interfaced in.
! Both PYTHIA 6.4.28 and PYTHIA 8.3.13 are available now.
!
! Note: for historical reasons, part of the Fortran programs
! were written in case-insensitive mode. Type ": set ic + enter key"
! before searching in Vi/Vim.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
common/sa24/adj1(40),nnstop,non24,zstop
COMMON/SA1_PY8/ i_mode, i_tune, KF_woDecay(100), &
KF_proj, KF_targ, win, energy_B, psno, b_min, b_max
! Final particle information will be stored in /PYJETS/ except for gammas,
! which will be stored in /sgam/.
! i_mode: = 1, low energy simulation A-framework;
! = 2, PYTHIA-like simulation B-framework via PYTHIA 6;
! = 3, PACIAE simulation C-framework via PYTHIA 6;
! = 4, PACIAE simulation D-framework via PYTHIA 6;
! = 5, PACIAE simulation B-framework via PYTHIA 8;
! = 6, PACIAE simulation C-framework via PYTHIA 8;
! = 7, dummy, reserved for future expansion;
! = 8, PACIAE simulation B-framework via PYTHIA8/Angantyr;
! = 9, PACIAE simulation C-framework via PYTHIA8/Angantyr.
! See subroutine "read_input_parameter" and "usu.dat" file for more details.
! Records the time the program starting running.
call CPU_TIME( time_simulation_start )
call read_input_parameter
call identify_collision_system
call open_output_file
call set_simulation_parameter
call initialize_global_event_variable
call initialize_system
call set_stable_particle
call set_subprocess
call calculate_optical_glauber
call record_simulation_parameter
!*******************************************************************************
!---------------------------- Event Generating -----------------------------
! The current run count.
iii = 0
! Optional simulation stopping point.
i_stop_point = INT( adj1(40) )
! Loops over events.
100 iii = iii + 1
! Generates an NN (hh, hA/Ah, AB, ll, lh/hl, lA/Al etc.) collision event.
!-------------------------------------------------------------------------------
call initialize_single_event_variable
call get_impact_parameter
!-------------------------------------------------------------------------------
call do_initial_state_generation( i_error, i_pure_hadron )
if( i_error == 1 ) goto 100
if( i_stop_point == 1 .OR. i_stop_point == 3 )then
call stop_event_at_this_point( i_stop_point )
goto 666
end if
!-------------------------------------------------------------------------------
call do_partonic_rescattering( i_pure_hadron )
if( i_stop_point == 2 )then
call stop_event_at_this_point( i_stop_point )
goto 666
end if
!-------------------------------------------------------------------------------
call do_hadronization( i_error, i_pure_hadron )
if( i_error == 1 ) goto 100
!-------------------------------------------------------------------------------
call do_hadronic_rescattering
!-------------------------------------------------------------------------------
! call do_unstable_hadron_decay !Lei_debug
!-------------------------------------------------------------------------------
666 continue
! Moves partons from "PYJETS" to "sbe" if any, for the error check.
! if( i_stop_point > 2 .AND. i_mode /= 1 ) call remop !Lei_debug
!-------------------------------------------------------------------------------
call output_final_particle_information
call analyze_event
!-------------------------------------------------------------------------------
! Prompts the current number of events.
if( MOD(iii,nout) == 0 )then
write(*,*) "i-event =", iii
end if
open( 18, file = "nout.out", status = "unknown" )
write(18,*) "iii=", iii
close(18)
! Simulates the next event.
if( iii < neve ) goto 100
!---------------------------- Event Generating -----------------------------
!*******************************************************************************
!-------------------------------------------------------------------------------
! Statistics of subprocesses generated.
! In Pythia8_fort_interface.f90.
call PASTAT(1,0)
!-------------------------------------------------------------------------------
! Releases memory from the heap for PYTHIA 8 objects.
! In Pythia8_fort_interface.f90.
call PADELE
call print_time_consumption( time_simulation_start )
call close_output_file
stop
end
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine read_input_parameter
!! Opens the input file and reads parameters.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
common/sa7/ispmax,isdmax,iflmax,ispkf(100),n_bin_hist,asd(10), &
afl(100,10,2),i_y_or_eta
common/sa10/csnn,cspin,cskn,cspipi,cspsn,cspsm,rcsit,ifram, &
iabsb,iabsm,i_sigma_AQM,ajpsi,csspn,csspm,csen
common/sa12/ppsa(5),nchan,nsjp,sjp,ttaup,taujp
common/sa13/kjp20,non13,vjp20,vjp21,vjp22,vjp23
common/sa16/x_ratio,decpro,dni(10),dpi(10),edi(10),bmin,bmax, &
bar(10),abar(10),barf(10),abarf(10),emin(10),eminf(10), &
eplu(10),epluf(10),nmax
common/sa18/i_deex,n_deex_step,i_pT_coal,i_pT_endpoint,a_FF,aPS_c,aPS_b
common/sa24/adj1(40),nnstop,non24,zstop
common/sa25/i_inel_proc,i_time_shower,i_diquark,ipad25,para1_1,para1_2
common/sa27/itime,kjp22,gtime,astr,akapa(6),parj1,parj2,parj3, &
parj21,parj4,adiv,gpmax,nnc
common/sa29/i_color_reconnection,NCR,parp2
common/sa33/smadel,ecce,secce,parecc,iparres
common/sa34/itorw,iikk,cp0,cr0,kkii
common/sa38/ prob_ratio_q(6), am(6), amqq(6)
common/papr/t0,cspipiKK,dep,ddt,edipi,epin,ecsnn,ekn,ecspsn,ecspsm, &
rnt,rnp,rao,rou0,vneu,vneum,ecsspn,ecsspm,ecsen
common/coal1/bmrat,i_mm
! For the calculation of the single, multiple string tension.
common/string_kapa1/ parj10, ww0, seco
! For cross sections of hh collisions etc.
common/para_h1/ para(100)
! For the independent Optical Clauber calculation.
common/Glauber1/ kjp23, kjp24
! For the simulation control.
COMMON/SA1_PY8/ i_mode, i_tune, KF_woDecay(100), &
KF_proj, KF_targ, win, energy_B, psno, b_min, b_max
open( 11, file = "usu.dat", status = "unknown" )
!-------------------------------------------------------------------------------
!------------------------------ Input Reading ------------------------------
! Reads input variables for event generation.
read(11,*) neve, nout, nosc
read(11,*) KF_proj, KF_targ
read(11,*) i_mode, ifram, nchan
read(11,*) win, energy_B
read(11,*) bmin, bmax, psno, nmax
b_min = bmin
b_max = bmax
read(11,*) kjp21, x_ratio, decpro
! Reads input variables for event analyses.
read(11,*) ispmax, isdmax, iflmax, n_bin_hist, i_y_or_eta
KF_woDecay = 0
ispkf = 0
afl = 0D0
read(11,*) ( KF_woDecay(i), i=1,10,1 )
read(11,*) ( KF_woDecay(i), i=11,ispmax,1 )
read(11,*) ( ispkf(i), i=1,10,1 )
read(11,*) ( ispkf(i), i=11,ispmax,1 )
read(11,*) ( asd(i), i=1,isdmax,1 )
if( iflmax > 0 )then
do kk=1,ispmax
do i=1,iflmax
read(11,*) ( afl(kk,i,j), j=1,2,1 )
end do
end do
end if
! Reads input variables for the event generation.
read(11,*) ddt, i_mm
read(11,*) iparres, i_inel_proc, i_time_shower, i_diquark
para = 0D0
read(11,*) para(7), ttaup, taujp, para(10)
read(11,*) i_sigma_AQM, kjp20
read(11,*) para1_1, para1_2, ( para(i), i=2,5,1 )
read(11,*) ( para(i), i=13,16,1 )
read(11,*) ( adj1(i), i=1,10,1 )
read(11,*) ( adj1(i), i=11,20,1 )
read(11,*) ( adj1(i), i=21,30,1 )
read(11,*) ( adj1(i), i=31,40,1 )
read(11,*) kjp22, kjp23, kjp24, i_color_reconnection, i_tune
read(11,*) parecc, smadel, cp0, cr0, seco
read(11,*) i_deex, n_deex_step, i_pT_coal, i_pT_endpoint
read(11,*) a_FF, aPS_c, aPS_b, bmrat
read(11,*) ( prob_ratio_q(i), i=1,6,1 )
!------------------------------ Input Reading ------------------------------
!-------------------------------------------------------------------------------
close(11)
! neve: number of events to be generated
! nout: output the event logs (main.out, rms.out) per nout events
! nosc: = 0, no OSCAR output (oscar.out), see subroutine "oscar"
! = 1, OSCAR1997A (final_id_p_x, just PACIAE final output).
! Space-time information at the final evolution time.
! = 2, OSCAR1999A (full_event_history)
! Space-time information at the final evolution time.
! = 3, OSCAR1997A (final_id_p_x, just PACIAE final output).
! Space-time information at particle's own freeze-out time.
! = 4, OSCAR1999A (full_event_history)
! Space-time information at particle's own freeze-out time.
! KF_proj, KF_targ: standard PDG code (id/KF code) of the incoming
! projectile and target particles, l, h & A,
! E.g. 11 = e-, -11 = e+, 2212 = p, 2112 = n,
! 1000822080 = Pb(208,82), 10000791970 = Au(197,79), ...
! Cf.
! 1. PDG RPP2024: Phys.Rev.D 110 (2024) 3, 030001
! https://pdg.lbl.gov/2024/reviews/rpp2024-rev-monte-carlo-numbering.pdf
! 2. PYTHIA 6.4 munual: JHEP 05 (2006) 026
! https://arxiv.org/abs/hep-ph/0603175
! 3. PYTHIA 8 online manual:
! https://pythia.org//latest-manual/ParticleData.html
! 4. The end part of "usu.dat".
! i_mode: = 1, low energy simulation A-framework;
! = 2, PYTHIA-like simulation B-framework via PYTHIA 6;
! = 3, PACIAE simulation C-framework via PYTHIA 6;
! = 4, PACIAE simulation D-framework via PYTHIA 6;
! = 5, PACIAE simulation B-framework via PYTHIA 8;
! = 6, PACIAE simulation C-framework via PYTHIA 8;
! = 7, dummy, reserved for future expansion;
! = 8, PACIAE simulation B-framework via PYTHIA8/Angantyr;
! = 9, PACIAE simulation C-framework via PYTHIA8/Angantyr.
! ifram: = 0, for fixed target (FXT)
! = 1, for collider (CMS)
! = 2, back-to-back asymmetric system (BKB)
! win: = incident momentum +pz if ifram=0 (GeV)
! = sqrt(s) if ifram=1 (GeV)
! = energy_A if ifram=2, for back-to-back system (GeV)
! energy_B: if ifram=2; energy_A, +Z direction; energy_B, -Z direction
! nchan: = 0 , inelastic (INEL)
! = 1 , Non Single Diffractive (NSD)
! = 2 , Drell-Yan process
! = 3 , J/psi production (color singlet)
! = 4 , heavy-flavor production
! = 5 , direct photon
! = 6 , soft only
! = 7 , W+/- production
! = 8 , PYTHIA default (msel=1)
! = 9 , Z0 production
! = 10, inelastic, non-diffractive
! < 0 , -MSEL defined in PYTHIA 6
! = -61, NRQCD charmonium production
! = -62, NRQCD bottomonium production
! = -63, NRQCD onia production (charm- and bottom-)
! = other, user-defined subprocessses in "pythia6_extra.cfg"
! for PYTHIA 6 or "pythia8_extra.cfg" for PYTHIA 8.
! ifram: = 0, for fixed target (FXT)
! = 1, for collider (CMS)
! = 2, back-to-back asymmetric system (BKB)
! win: = incident momentum +pz if ifram=0 (GeV)
! = sqrt(s) if ifram=1 (GeV)
! = energy_A if ifram=2, for back-to-back system (GeV)
! energy_B: if ifram=2; energy_A, +Z direction; energy_B, -Z direction
! bmin,bmax : minimum and maximum impact parameters, bmin=bmax means
! definite impact parameter
! psno: = 0, fixed impact parameter (=bmin), zero impact parameter angle
! = 1, systematic sampling method, zero impact parameter angle
! = 2, random sampling method, zero impact parameter angle
! For Angantyr mode,
! = 3, same as 0, but random 2*pi impact parameter angle (phi)
! = 4, same as 1, but random 2*pi impact parameter angle (phi)
! = 5, same as 2, but random 2*pi impact parameter angle (phi)
! = 6, for PYTHIA8/ mode, the original Gaussian sampling.
! This option will generate weighted events and set a
! large range of 0 < b < 20+ fm automatically.
! 2*nmax: the number of intervals segmented in [bmin,bmax] for the
! systematic sampling (psno=1)
! kjp21: = 0, without hadron rescattering;
! = 1, with hadron rescattering via PACIAE;
! x_ratio: ratio of inela. cross section to total cross section,
! i.e. PARAM(6) in hadcas_40.f90, with default value of
! D=0.85 for the high energy and D=0.1 for the low energy
! decpro is Delta particle decay probability in low energy A-framework
! ispmax: the maximum number of particle KF code to be counted (max=100)
! isdmax: the maximum number of statistical distributions (max=10)
! iflmax: the maximum number of the kinematic cuts (max=2, pT & y/eta)
! n_bin_hist: the maximum number of bins for histograms.
! i_y_or_eta: select y or eta in partial phase-space statistics.
! = 0 , y
! = 1 , eta
! KF_woDecay: KF code of particles specified not to decay (max=100).
! ispkf(i): KF code of i-th particle to be counted (max=100)
! asd(i=1,isdmax): bin width, interval of the i-th distribution
! for pp, pbarp, pA(Ap), AB etc.
! i=1: rapidity distribution (dN/dy v.s. y)
! =2: invariant transverse momentum distribution
! (1/pT*dN/dpT v.s. pT)
! =3: pseudorapidity distribution (dN/deta v.s. eta)
! =4: transverse mass distribution (1/mT*dN/dmT v.s. mT)
! =5: event-wise multiplicity distribution (dNev/dmult)
! =6: transverse momentum distribution (dN/dpT v.s. pT)
! =7: mean transverse momentum distribution (<pT> v.s. mult)
! for ep, nu_ep, etc.
! i=1: Q^2=-q^2 (fq2 in code) distribution
! =2: W^2 (w21) distribution
! =3: y (yyl) distribution
! =4: p_h (pph) distribution
! =5: z (zl) distribution
! afl(j,i,1): lower-boundary cut of i-th window for j-th particle
! afl(j,i,2): upper-boundary cut of i-th window for j-th particle
! for pp, pbarp, pA(Ap), AB etc.
! i=1, rapidity/pseudorapidity window (depends on i_y_or_eta)
! =2, transverse momentum
! for ep, nu_ep, etc.
! i=1, Q^2=-q^2 window
! =2, W^2
! =3, y
! =4, p_h (hadron momentum)
! =5: z
! ddt : time accuracy used in parini, i.e. the minimum distinguishable
! collision time interval used in partonic initiation
! i_mm: only the hadrons below numb(i_mm) (cf. 'filt' in parini.f90)
! join in updating the hh collision time list (cf. parini.f90).
! Originally i_mm=2, i.e. only p (proton) and n (neutron) join in
! updating the collision time list in parton initialization;
! if i_mm=6, p, n, pbar, nbar, pi+ and pi- will join in updating
! the collision time list in parton initialization.
! iparres: =0, consider only the elastic processes in parton rescattering
! =1, elastic + inelastic
! i_inel_proc: = 1, with only light quarks related inelastic processes
! in the parton rescattering
! = 2, with both light and heavy quarks related inel. proc.
! i_time_shower: =0, without the final state time-like parton shower
! in the parton rescattering
! =1, performs shower with once branching per parton
! =2, performs shower untill the cutoff
! i_diquark: =0, without diquarks breaking-up before parton rescattering
! =1, with
! para(7): proper formation time in rest-frame of particle
! ttaup: extra factor of the formation time of particles
! (protons in parini, all of hadrons in hadcas)
! taujp: extra factor of the formation time of J/psi in parini
! para(10): the largest allowed time of the hadronic cascade
! i_sigma_AQM: = 1, uses input total cross sections of piN, KN, pi+pi,
! Jpsi(psi')+N, Jpsi(psi')+N, Jpsi(psi')+pi/rho,
! and AQM cross sections for D+N/pi/rho in hadcas.
! Ignores the channels which are not well defined.
! = 2, uses input cross sections of piN, KN, ... ,
! AQM cross sections for D+N/pi/rho and the channels
! which are not well defined (treated as elastic).
! = 3, uses AQM cross sections of piN, KN,... and D+N/pi/rho.
! Ignores the channels which are not well defined.
! = 4, uses AQM cross sections of piN, KN, ..., D+N/pi/rho,
! and the channels which are not well defined (treated
! as elastic).
! kjp20: = 1, constant cross sections for piN -> K+Sigma/Lambda/Delta,
! piN -> pi+Delta and NN -> N+Delta in hadcas.
! = 0, energy dependent cross sections for them in hadcas.
! para1_1: NN total cross section, used in parini_40.f90
! <= 0, it will be evaluated in the program (PAXTOT)
! > 0, accept the input one
! para1_2: NN total cross section, used in hadcas_40.f90
! para(2): total cross-section of pi + N
! para(3): total cross-section of K + N
! para(4): total cross-section of pi + pi
! para(5): cross-section of pi+pi -> K+K
! para(13): total cross-section of J/psi + N
! para(14): total cross-section of J/psi + pi/rho
! para(15): total cross-section of psi' + N
! para(16): total cross-section of psi' + pi/rho
! adj1(i), i=
! 1: K factor used in parton rescattering; K=0: no parton rescattering
! 2: parameter alpha_s ('as' in program) in parton rescattering
! 3: parameter mu ('tcut' in program): to avoid divergence in
! calculating parton-parton differential cross section in parcas_40.f90
! 4: parameter idw, # of integration intervals in parcas_40.
! 5: choice of nuclear shadowing or nPDF for partons in nuclei,
! available only for the ion-collisions.
! =0, without nuclear shadowing or nPDF.
! For PYTHIA 6:
! =1, Wang's nuclear shadowing (PLB 527 (2002) 85).
! =2, EPS09 nPDF. (not available temporarily)
! =other, same as 1.
! For PYTHIA 8:
! =-1, only Isospin effect.
! = 1, EPS09, LO nPDF.
! = 2, EPS09, NLO nPDF.
! = 3, EPPS16, NLO nPDF.
! EPS/EPPS nPDF requirs for grid files. There is only one default
! EPS09 LO grid file of Pb208 in PYTHIA 8. One needs to add other
! grid files manually for other nulei or NLO nPDF.
! 6: parameter 'a', i.e. PARJ(41), in Lund string fragmentation function
! 7: parameter 'b', i.e. PARJ(42), in Lund string fragmentation function
! 8: 'a' in the Lund deexcitation function of coal model. See adj1(29).
! 9: 'b' in the Lund deexcitation function of coal model. See adj1(29).
! 10: PARP(31), K factor in PYTHIA
! 11: time accuracy used in the hadronic rescattering.
! 12: model of hadronization:
! =0, string fragmentation model (SFM).
! =1, coalescence model (Coal);
! =2, with gluon splitting & quark deexcitation before parcas and
! hadronized by coalescence model. (same as adj1(12)=1 + kjp22=2)
! =3, with gluon splitting & quark deexcitation before parcas and
! hadronized by string fragmentation model (not available for
! PYTHIA8 mode).
! The subclasses please see kjp22.
! 13: not used.
! 14: not used.
! 15: default string tension (D= 1 GeV/fm ~ 0.2 GeV^2)
! 16: allowable number of generations of q/qbar deexcitation
! in coales_40.f90.
! 0 = without deexcitation.
! 1 = deexcites only the original 1-th q/qbars.
! 2 = same as 1, and deexcites the 2-th q/qbars excited from 1-th.
! 3/4/... = ...
! 17: threshold energy in deexcitation of energetic quarks in coales.f90
! 18: =0, rest partons hadronize by string fragmentation via PYTHIA 6
! =1, rest partons hadronize by coalescence
! <0, no treatment for the rest partons
! 19: time accuracy used in parcas_40.f90 ('dddt' in program)
! 20: =1, small angle and zero-mass approximations for light quarks in
! elastic parton-parton cross sections with the regulator.
! =2, full LO-pQCD and massive forms for parton-parton cross sections
! with the regulator.
! =3, small angle and zero-mass approximations for light quarks in
! elastic parton-parton cross sections
! with cutoffs in the integral limits.
! =4, full LO-pQCD and massive forms for parton-parton cross sections
! with cutoffs in the integral limits.
! 21: =0, without phase space requirement in coales_40.f90
! =1, with complete phase space requirement
! =2, with requirement in spatial phase space only
! =3, with requirement in momentum phase space only
! 22: critical value of the product of radii both in coordinate and
! momentum phase space (4 is assumed) used in coales_40.f90
! 23: switch for chiral magnetic effect (CME) induced charge seperation
! =0: CME off
! =1: CME on
! 24: = 'tl0' , the virtuality cut in time-like radiation in parcas_40.f90
! 4*tl0 is assumed
! 25: Lambda_QCD used in parcas_40.f90
! 26: selection of random number seed
! =0, default seed = 20240116, can be used for debug
! =1, seed from the real-time colock
! >1, sets seed as adj1(26)
! 27: not used
! 28: the largest allowed time of the partonic cascade
! 29: For coal, the function used to sample deexcited daughter qqbar-pair
! energy fraction z taking from mother.
! =0 : random z
! =1 : Lund symmetric function, see PARJ(41) - PARJ(45)
! =2 : Field–Feynman + Peterson/SLAC, see PARJ(51) PARJ(59)
! =3 : Lund + Peterson/SLAC (light flavor + heavier)
! =4 : Lund + Bowler
! =5 : as = 4, but interpolate for c and b; see PARJ(46) and PARJ(47)
! For coal, when using 11, 12 or 13, it is the simple Lund/FF/PS.
! 30: =1: distributes participant nucleons in overlapping areas forcely
! =0: no more requirements
! 31: not used
! 32: not used
! 33: not used
! 34: PARJ(21) (Lund) width of px/py/pT sampling in PYPTDI.
! 35: width of px/py/pT sampling in the coalescence model. See i_pT_coal.
! 36: =0 without phenomenological parton energy loss in parcas_40.f90
! =1 with (Do not use this option with the paronic rescattering
! openning altogether. If so, double-counting!)
! 37: the coefficient ('c') in phenomenological parton energy loss
! 38: pt cut in phenomenological parton energy loss
! 39: not used
! 40: =1 simulation ends after partonic initiation
! =2 simulation ends after partonic rescattering
! =3 hadronization by coalescence model follows partonic initiation
! =4 simulation ends after the entire simulation
! kjp22: hadronization subclass.
! For Lund string fragmentation model (sfm):
! =1, fragmentation string by string, with the single string
! structure induced variable string tension and PARJ(1) etc.
! =2, fragmentation string by string, with the multiple string
! interaction induced variable string tension and PARJ(1) etc.
! =3, fragmentation string by string, with the (single string
! structure + multiple string interaction) induced variable
! string tension and PARJ(1) etc.
! =4, fragmentation of all strings at once with the
! default string tension and parj(1) etc.
! =5, fragmentation NN pair by pair with the
! default string tension and parj(1) etc.
! For PYTHIA 8 only:
! =6, fragmentation by the Rope Hadronization with Flavour Ropes.
! =7, fragmentation by the Rope Hadronization with String Shoving.
! =8, fragmentation by Rope Hadronization with Flavour Ropes
! + String Shoving.
! =9, Thermodynamical String Fragmentation.
! For PACIAE coalescence model (coal):
! =1, mode 1, gluon splitting and energetic quark
! deexcitation AFTER the partonic rescattering,
! via the traversal coalescence.
! =2, mode 2, gluon splitting and energetic quark
! deexcitation BEFORE the partonic rescattering
! via the traversal coalescence (same as adj1(12)=2 ).
! =3, mode 3, as = 1, but with only the quark deexcitation.
! =4, mode 4, as = 2, but with only the quark deexcitation.
! =5, as = 2, to keep the consistency of "kjp22" switch.
! =6, mode 6, as = 1, but via the random coalescence.
! =7, mode 7, as = 2, but via the random coalescence.
! =8, mode 8, as = 3, but via the random coalescence.
! =9, mode 9, as = 4, but via the random coalescence.
! For the independent Optical Glauber model.
! kjp23: = 1 Npart is calculated by geometric model
! kjp23: = 2 Npart is calculated by Glauber model
! kjp24: = 1 sharp sphere in Glauber model
! kjp24: = 2 Woods-Saxon in Glauber model
! i_color_reconnection: Selection of color-reconnection (CR) model.
! = 0, No color-reconnection.
! In PYTHIA 6 == "MSTP(95)" :
! 'S': Seattle model, 'P': Paquis model.
! = 1, Old cut-and-paste style CR, handled in PYMIHK.
! = 2, Annealing Type I(no gg loops); hadron-hadron only.
! = 3, Annealing Type I(no gg loops); all beams.
! = 4, Annealing Type II(gg loops) ; hadron-hadron only.
! = 5, Annealing Type II(gg loops) ; all beams.
! = 6, Annealing Type S ; hadron-hadron only.
! = 7, Annealing Type S ; all beams.
! = 8, Annealing Type P ; hadron-hadron only.
! = 9, Annealing Type P ; all beams.
! = 11, Soft Color Interaction (SCI model).
! = 12, SCI without diffraction (no inter-remnant CR).
! = 13, Generalized Area Law (GAL model).
! = 14, GAL without diffraction (no inter-remnant CR).
! In PYTHIA 8 and PYTHIA8/Angantyr :
! < 15, The default PYTHIA 8 MPI-based scheme. (MPI-CR)
! = 15, The new more QCD based scheme. (QCD-CR, QCD-CR-BLC)
! = 16, The new gluon-move model.
! = 17, The SK I e+e- CR model.
! = 18, The SK II e+e- CR model.
! i_tune: basic PYTHIA parameter set, tune number.
! =0, "Perugia 2011 Tune" as the basis for PYTHIA6;
! "Monash 2013 Tune" as the basis for PYTHIA8/Angantyr.
! >0, correspinding tune "i_tune".
! parecc: a parameter converting initial spatial space eccentricity
! to final momentum space ellipticity
! smadel: small perpurbation of ellipse relative to circle for pT
! cp0,cr0: parameters in the parameterization of the multiple string
! effect (kjp22= 2 / 3).
! seco: parameter in the popcorn mechanism for the correction of PARJ(1)
! i_deex: the deexcitation scheme used in the coalescence model
! = 1, light-cone momentum scheme
! = 2, energy scheme
! = 3, logitudinal momentum pz scheme
! n_deex_step: the number of deexcitation steps per q/qbar
! i_pT_coal: the pT sampling method of the daughter qqbar pair in coal
! = 0, 0 pT (collinear)
! = 1, Gaussian pT (px and py) with width adj1(35)
! = 2, Exponential pT with width adj1(35)
! i_pT_endpoint: generation of transverse momentum for endpoint/mother
! quarks in coal
! = 0, no transverse momentum for endpoint quarks
! = 1, endpoint quarks obtain transverse momenta like
! exited qqbars
! a_FF: parameter for light u, d and s in Field-Feynman function
! aPS_c: parameter for c in Petersono/SLAC
! aPS_b: parameter for b in P/S function
! bmrat: parameter related to the ratio of baryon to meson in Coal
! prob_ratio_q: probability ratio of excited qqbar
! u-ubar : d-dbar : s-sbar : c-cbar : b-bbar : t-tbar
! used in the gluon splitting and the quark deexcitation.
return
end
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine identify_collision_system
!! Identfies and sets the collision system and some
!! mistake-proofing measures.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
INTEGER PYCHGE
LOGICAL IS_PYTHIA8,IS_NUCLEUS
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
common/sa12/ppsa(5),nchan,nsjp,sjp,ttaup,taujp
common/sa16/x_ratio,decpro,dni(10),dpi(10),edi(10),bmin,bmax, &
bar(10),abar(10),barf(10),abarf(10),emin(10),eminf(10), &
eplu(10),epluf(10),nmax
common/sa18/i_deex,n_deex_step,i_pT_coal,i_pT_endpoint,a_FF,aPS_c,aPS_b
common/sa24/adj1(40),nnstop,non24,zstop
common/sa25/i_inel_proc,i_time_shower,i_diquark,ipad25,para1_1,para1_2
common/sa27/itime,kjp22,gtime,astr,akapa(6),parj1,parj2,parj3, &
parj21,parj4,adiv,gpmax,nnc
common/sa30/vneump,vneumt,mstptj
common/syspar/ipden,itden,suppm,suptm,suppc,suptc,r0p,r0t, &
nap,nat,nzp,nzt,pio
! For the simulation control.
COMMON/SA1_PY8/ i_mode, i_tune, KF_woDecay(100), &
KF_proj, KF_targ, win, energy_B, psno, b_min, b_max
! KF_proj, KF_targ: standard PDG code (id/KF code) of the incoming
! projectile and target particles, l, h & A,
! E.g. 11 = e-, -11 = e+, 2212 = p, 2112 = n,
! 1000822080 = Pb(208,82), 10000791970 = Au(197,79), ...
!
! The standard PDG (hyper)nucleus codes are 10-digit:
! +-10LZZZAAAI.
! +- denotes (hyper)nucleus and anti-one.
! L = n_Lambda, total number of strange quarks (Lambda hyperons).
! Z = n_p, total charges (protons).
! A = n_p + n_n + n_Lambda, total baryon number.
! n_n, total number of neutrons.
! I = isomer level, = 0: groud state,
! > 0: excitations. m, n, p, q = 1, 2, 3, 4.
! Cf. PDG RPP "Monte Carlo particle numbering scheme".
! Here for normal ions, we use
! id = 100ZZZAAA0 = 1,000,000,000 + Z*10,000 + A*10 + 0.
! For example, deuteron D/2H: 1000010020; 197Au: 1000791970;
! 208Pb: 1000822080, etc.
! ipden: =0, if projectile is proton/anti-proton/neutron
! =1, if projectile is nucleus
! =2, for e+e- collisions ! 180921 yan
! =11, projectile is e- (e+)
! =12, projectile is nu_e (nu_ebar)
! =13, projectile is mu- (mu+)
! =14, projectile is nu_mu (nu_mubar)
! =15, projectile is tau- (tau+)
! =16, projectile is nu_tau (nu_taubar)
! =0, any other subatomic partices in principle
! itden: =0, if target is proton/anti-proton/neutron
! =1, if target is nucleus
! =2, for e+e- collisions ! 180921 yan
! =...
! =0, any other subatomic partices in principle
! nap (nzp) : # of nucleons (protons) in projectile nucleus
! nat (nzt) : # of nucleons (protons) in target nucleus
! for e-A: formally sets nap=1,nzp=-1,ipden=11,itden=1, kf=11;
! for e+A: formally sets nap=1,nzp=1,ipden=11,itden=1, kf=-11;
! for nu_eA: formally sets nap=1,nzp=-1,ipden=12,itden=1, kf=12;
! for nu_ebarA: formally sets nap=1,nzp=1,ipden=12,itden=1, kf=-12;
! If projectile is lepton, set nap =1
! Here formally setting nzp=-1 is presently, when one uses it later,
! one should make nzp=iabs(nzp)
! ipden, itden, nap, nzp, nat and nzt will be assigned automatically
! according to the incoming beams.
! mstptj: =0, sets MSTP(111) = 0 to PYTHIA,
! for PACIAE simulation developed from partonic initial stage,
! to partonic rescattering, hadronization, and to hadronic
! rescttering stage
! mstptj: =1, PYTHIA-like simulation without partonic
! rescatterings and low energy simulation
!-------------------------------------------------------------------------------
!------------------------------ Beams Setting ------------------------------
KF_proj_abs = ABS( KF_proj )
KF_targ_abs = ABS( KF_targ )
nap = 1
nzp = 1
! Non-nucleus.
if( .NOT.IS_NUCLEUS(KF_proj) ) nzp = SIGN(1, PYCHGE( KF_proj ))
nat = 1
nzt = 1
! Non-nucleus.
if( .NOT.IS_NUCLEUS(KF_targ) ) nzt = SIGN(1, PYCHGE( KF_targ ))
! Flags of collision system the PACIAE defined.
ipden = 0
itden = 0
! Projectile.
select case( KF_proj_abs )
! e, nu_e, mu, nu_mu, tau and nu_tau
case( 11:16 )
ipden = KF_proj_abs
! e+ + e-
if( KF_proj_abs == 11 .AND. KF_targ_abs == 11 &
.AND. KF_targ*KF_targ < 0 ) ipden = 2
! A
case( 1000000000: )
ipden = 1
nap = MOD( MOD( KF_proj_abs, 10000000 ), 10000 ) / 10
nzp = MOD( KF_proj_abs, 10000000 ) / 10000
end select
! Target.
select case( KF_targ_abs )
! e, nu_e, mu, nu_mu, tau, and nu_tau
case( 11:16 )
itden = KF_targ_abs
! e+ + e-
if( KF_proj_abs == 11 .AND. KF_targ_abs == 11 &
.AND. KF_targ*KF_targ < 0 ) itden = 2
! B
case( 1000000000: )
itden = 1
nat = MOD( MOD( KF_targ_abs, 10000000 ), 10000 ) / 10
nzt = MOD( KF_targ_abs, 10000000 ) / 10000
end select
!------------------------------ Beams Setting ------------------------------
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!---------------------------- Mistake-proofing -----------------------------
! Automatic assignment of values avoiding some manual input mistakes
! in "usu.dat".
! For subatomic-particle + subatomic-particle.
if( .NOT.IS_NUCLEUS(KF_proj) .AND. .NOT.IS_NUCLEUS(KF_targ) )then
bmin = 0D0
bmax = 0D0
psno = 0D0
if( i_mode == 8 .OR. i_mode == 9 ) psno = 3D0
! Without nuclear shadowing.
adj1(5) = 0D0
! For e+e- .
if( KF_proj_abs == 11 .AND. KF_targ_abs == 11 &
.AND. KF_proj*KF_targ < 0 ) nchan = 2
end if
! The hadronization model.
i_had_model = INT( adj1(12) )
! Lets Coal5 and special versions of SFM and Coal2 work well.
if( i_had_model == 1 )then
if( kjp22 < 0 .OR. kjp22 > 9 ) kjp22 = 2
if( kjp22 == 5 ) kjp22 = 2
else if( i_had_model == 2 )then
adj1(12) = 1D0
kjp22 = 2
else if( i_had_model == 3 )then
if( kjp22 < 0 .OR. kjp22 > 4 ) kjp22 = 4
! PYTHIA 6 only.
i_mode = 3
end if
! Lets "kjp22" of SFM with PYTHIA 6 works well.
if( i_had_model == 0 .AND. .NOT.IS_PYTHIA8( i_mode ) )then
if( kjp22 < 0 .OR. kjp22 > 5 ) kjp22 = 5
!#TODO(Lei20241014): for SFM with PYTHIA 8 , kjp22 >= 5, temporarily.
else if( i_had_model == 0 .AND. IS_PYTHIA8( i_mode ) )then
if( kjp22 < 5 .OR. kjp22 > 9 ) kjp22 = 5
end if
! Lets D-framework with SFM work well. Special simulation modes.
if( i_mode == 4 .AND. ( i_had_model == 0 .OR. i_had_model == 3 ) &
.AND. ( kjp22 < 0 .OR. kjp22 > 4 ) ) kjp22 = 4
! Fragmentes partons directly after partonic initialization, or not.
mstptj = 0
if( i_mode == 1 .OR. i_mode == 2 &
.OR. i_mode == 5 .OR. i_mode == 8 )then
mstptj = 1
! Without partonic rescattering.
adj1(1) = 0D0
end if
! Simulation mode warning.
if( i_mode < 1 .OR. i_mode == 7 .OR. i_mode > 9 )then
write(*,*) "Error, unrecognized i_mode:", i_mode, ", STOP!"
write(22,*) "Error, unrecognized i_mode:", i_mode, ", STOP!"
stop
end if
if( i_mode == 4 .AND. ipden /= 1 .AND. itden /= 1 )then
write(*,*) "D-framework is only available for the nucleus!"
write(22,*) "D-framework is only available for the nucleus!"
stop
end if
! Unneccesary in A- and D-framework. (?)
if( i_mode == 1 .OR. i_mode == 4 ) adj1(30) = 0D0
! Lets "psno=3" work well. Angantyr Gaussian b-parameter generator.
if( (psno < 0D0 .OR. psno > 2D0) .AND. i_mode /= 8 .AND. i_mode /= 9 ) &
psno = 2D0
! For the debug.
if( i_had_model == 1 .AND. i_deex > 99 )then
i_diquark = 0
end if
!---------------------------- Mistake-proofing -----------------------------
!-------------------------------------------------------------------------------
return
end
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine open_output_file
!! Opens the output files "main.out", "rms0.out", "oscar.out", etc.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
!-------------------------------------------------------------------------------
!------------------------------ Files Openning -----------------------------
! Opens a PACIAE and PYTHIA 6 log file.
open( 22, file = "main.out", status = "unknown" )
! Sets the output file of PYTHIA 6 (original unit = 6).
MSTU(11) = 22
! Opens a PACIAE analysis output file.
open( 19, file = "rms0.out", status = "unknown" )
! Opens and prints the OSCAR file header if nosc > 0.
if( nosc > 0 )then
open( 34, file = "oscar.out", status = "unknown" )
! In main.f90.
call oscar(-1)
end if
!------------------------------ Files Openning -----------------------------
!-------------------------------------------------------------------------------
return
end
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine close_output_file
!! Closes the output files "main.out", "rms0.out", "oscar.out", etc.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
common/sa1/kjp21,non1,bp,iii,neve,nout,nosc
!-------------------------------------------------------------------------------
!------------------------------ Files Closing ------------------------------
close(22)
close(19)
if(nosc > 0) close(34)
!------------------------------ Files Closing ------------------------------
!-------------------------------------------------------------------------------
return
end
!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine set_simulation_parameter
!! Sets basic parameters of the simulation.
!! Parameters are categorized to "PACIAE-" and "PYTHIA-" related.
IMPLICIT DOUBLE PRECISION(A-H, O-Z)
IMPLICIT INTEGER(I-N)
LOGICAL IS_PYTHIA8,IS_NUCLEUS
PARAMETER (KSZJ=80000)
COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
common/pycidat2/kfmaxt,nont2,PARAM(100)
common/sa4_c/kqh(80,2),kfh(80,2),proh(80,2),amash(80,2),imc
common/sa5_c/kqb(80,3),kfb(80,2),prob(80,2),amasb(80,2),ibc
common/sa10/csnn,cspin,cskn,cspipi,cspsn,cspsm,rcsit,ifram, &
iabsb,iabsm,i_sigma_AQM,ajpsi,csspn,csspm,csen
common/sa12/ppsa(5),nchan,nsjp,sjp,ttaup,taujp
common/sa16/x_ratio,decpro,dni(10),dpi(10),edi(10),bmin,bmax, &
bar(10),abar(10),barf(10),abarf(10),emin(10),eminf(10), &
eplu(10),epluf(10),nmax
common/sa24/adj1(40),nnstop,non24,zstop
common/sa25/i_inel_proc,i_time_shower,i_diquark,ipad25,para1_1,para1_2
common/sa27/itime,kjp22,gtime,astr,akapa(6),parj1,parj2,parj3, &
parj21,parj4,adiv,gpmax,nnc
common/sa29/i_color_reconnection,NCR,parp2
common/sa30/vneump,vneumt,mstptj