10 #include<TStopwatch.h>
24 int messageInterval = 1000){
29 cout <<
"Input arguments:" << endl;
30 cout <<
"Output file: " << outFile << endl;
31 cout <<
"Number of events: " << nEvents << endl;
32 cout <<
"Electron momentum: " << pElectron << endl;
33 cout <<
"Proton momentum: " << pProton << endl;
34 cout <<
"Minimum Q2: " << minQ2 << endl;
35 cout <<
"Maximum Q2: " << maxQ2 << endl;
36 cout <<
"Message interval: " << messageInterval << endl;
43 TPythia6* pythia = TPythia6::Instance();
48 pythia->SetMSTP(14, 30);
49 pythia->SetMSTP(15, 0);
50 pythia->SetMSTP(16, 1);
51 pythia->SetMSTP(17, 4);
52 pythia->SetMSTP(18, 3);
53 pythia->SetMSTP(19, 1);
54 pythia->SetMSTP(20, 0);
55 pythia->SetMSTP(32, 8);
56 pythia->SetMSTP(38, 4);
57 pythia->SetMSTP(51, 10800);
58 pythia->SetMSTP(52, 2);
59 pythia->SetMSTP(53, 3);
60 pythia->SetMSTP(54, 1);
61 pythia->SetMSTP(55, 5);
62 pythia->SetMSTP(56, 1);
63 pythia->SetMSTP(57, 1);
64 pythia->SetMSTP(58, 5);
65 pythia->SetMSTP(59, 1);
66 pythia->SetMSTP(60, 7);
67 pythia->SetMSTP(61, 2);
68 pythia->SetMSTP(71, 1);
69 pythia->SetMSTP(81, 0);
70 pythia->SetMSTP(82, 1);
71 pythia->SetMSTP(91, 1);
72 pythia->SetMSTP(92, 3);
73 pythia->SetMSTP(93, 1);
74 pythia->SetMSTP(101, 3);
75 pythia->SetMSTP(102, 1);
76 pythia->SetMSTP(111, 1);
77 pythia->SetMSTP(121, 0);
78 pythia->SetPARP(13, 1);
79 pythia->SetPARP(18, 0.4);
80 pythia->SetPARP(81, 1.9);
81 pythia->SetPARP(89, 1800);
82 pythia->SetPARP(90, 0.16);
83 pythia->SetPARP(91, 0.40);
84 pythia->SetPARP(93, 5.);
85 pythia->SetPARP(99, 0.40);
86 pythia->SetPARP(100, 5);
87 pythia->SetPARP(102, 0.28);
88 pythia->SetPARP(103, 1.0);
89 pythia->SetPARP(104, 0.8);
90 pythia->SetPARP(111, 2.);
91 pythia->SetPARP(161, 3.00);
92 pythia->SetPARP(162, 24.6);
93 pythia->SetPARP(163, 18.8);
94 pythia->SetPARP(164, 11.5);
95 pythia->SetPARP(165, 0.47679);
96 pythia->SetPARP(166, 0.67597);
97 pythia->SetPARJ(1, 0.100);
98 pythia->SetPARJ(2, 0.300);
99 pythia->SetPARJ(11, 0.5);
100 pythia->SetPARJ(12, 0.6);
101 pythia->SetPARJ(21, 0.40);
102 pythia->SetPARJ(32, 1.0);
103 pythia->SetPARJ(33, 0.80);
104 pythia->SetPARJ(41, 0.30);
105 pythia->SetPARJ(42, 0.58);
106 pythia->SetPARJ(45, 0.5);
107 pythia->SetMSTJ(1, 1);
108 pythia->SetMSTJ(12, 1);
109 pythia->SetMSTJ(45, 5);
110 pythia->SetMSTU(112, 5);
111 pythia->SetMSTU(113, 5);
112 pythia->SetMSTU(114, 5);
113 pythia->SetCKIN(1, 1.);
114 pythia->SetCKIN(2, -1.);
115 pythia->SetCKIN(3, 0.);
116 pythia->SetCKIN(4, -1.);
117 pythia->SetCKIN(5, 1.00);
118 pythia->SetCKIN(6, 1.00);
119 pythia->SetCKIN(7, -10.);
120 pythia->SetCKIN(8, 10.);
121 pythia->SetCKIN(9, -40.);
122 pythia->SetCKIN(10, 40.);
123 pythia->SetCKIN(11, -40.);
124 pythia->SetCKIN(12, 40.);
125 pythia->SetCKIN(13, -40.);
126 pythia->SetCKIN(14, 40.);
127 pythia->SetCKIN(15, -40.);
128 pythia->SetCKIN(16, 40.);
129 pythia->SetCKIN(17, -1.);
130 pythia->SetCKIN(18, 1.);
131 pythia->SetCKIN(19, -1.);
132 pythia->SetCKIN(20, 1.);
133 pythia->SetCKIN(21, 0.);
134 pythia->SetCKIN(22, 1.);
135 pythia->SetCKIN(23, 0.);
136 pythia->SetCKIN(24, 1.);
137 pythia->SetCKIN(25, -1.);
138 pythia->SetCKIN(26, 1.);
139 pythia->SetCKIN(27, -1.);
140 pythia->SetCKIN(28, 1.);
141 pythia->SetCKIN(31, 2.);
142 pythia->SetCKIN(32, -1.);
143 pythia->SetCKIN(35, 0.);
144 pythia->SetCKIN(36, -1);
145 pythia->SetCKIN(37, 0.);
146 pythia->SetCKIN(38, -1.);
147 pythia->SetCKIN(39, 4.);
148 pythia->SetCKIN(40, -1.);
149 pythia->SetCKIN(65, minQ2);
150 pythia->SetCKIN(66, maxQ2);
151 pythia->SetCKIN(67, 0.);
152 pythia->SetCKIN(68, -1.);
153 pythia->SetCKIN(77, 2.0);
154 pythia->SetCKIN(78, -1.);
160 pythia->SetP(1, 1, 0.);
161 pythia->SetP(1, 2, 0.);
162 pythia->SetP(1, 3, -pElectron);
163 pythia->SetP(2, 1, 0.);
164 pythia->SetP(2, 2, 0.);
165 pythia->SetP(2, 3, pProton);
172 pythia->SetMRPY(1, random.Integer(900000001));
173 std::cout <<
"PYTHIA random number seed MRPY(1) = " << pythia->GetMRPY(1)
177 char*
target = (
char*)
"p+";
178 char*
beam = (
char*)
"gamma/e-";
179 char* frame = (
char*)
"3MOM";
180 float WIN = pElectron;
181 pythia->Pyinit(frame, beam, target, WIN);
184 TFile*
file =
new TFile(outFile,
"RECREATE");
186 erhic::Pythia6 pythia6(file, factory, nEvents,
"EICTree",
"event", messageInterval);
199 std::cout <<
"Completed in " << timer.RealTime() <<
" seconds" << std::endl;