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
|
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c...this subroutine is used to set the necessary parameters for c
c...the initialization for hadronic production of bc meson. c
c...to use the program youd need to make a directory: (data) to c
c...save all the obtained data-files. c
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c to have a better understanding of setting the parameters c
c you may see the README file to get more detailed information. c
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c copyright (c) z.x zhang, chafik driouich, paula eerola and x.g. wu c
c reference: hep-ph/0309120 c
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
subroutine setparameter
c...preamble: declarations.
implicit double precision(a-h, o-z)
implicit integer(i-n)
#include "bcvegpy_set_par.inc"
c...user process event common block.
common/pypars/mstp(200),parp(200),msti(200),pari(200)
common/pydat1/mstu(200),paru(200),mstj(200),parj(200)
common/pydatr/mrpy(6),rrpy(100)
c...transform of running information.
common/confine/ptcut,etacut
c...parameters transformtion.
double complex colmat,bundamp
common/upcom/ecm,pmbc,pmb,pmc,fbcc,pmomup(5,8),
& colmat(10,64),bundamp(4),pmomzero(5,8)
common/funtrans/nq2,npdfu
common/rconst/pi
common/usertran/ishower,idpp
common/vegcross/vegsec,vegerr,iveggrade
c...to transform the subprocess cross-section.
common/subopen/subfactor,subenergy,isubonly
c...transform of pdf information
common/outpdf/ioutpdf,ipdfnum
c...transform the subprocess information
common/qqbar/iqqbar,iqcode
c...transform of the vegas information
common/vegasinf/number,nitmx
c...transform the events number and bc state.
common/counter/ibcstate,nev
c...transform some variables
common/loggrade/ievntdis,igenerate,ivegasopen,igrade
c...ioctet--whether getting the color-octet component contributions.
c...here only for gg->(c\bar{b})+b+~c, (c\bar{b}) in color-octet
c...s-waee states. coeoct--coefficient for color-octet
c...matrixment: relation between the color-octet matrixment and the
c...color singlet matrixment.
common/coloct/ioctet
common/octmatrix/coeoct
c...transform the first derivative of the wavefunction at the zero or the
c...wavefunction at the zero.
common/wavezero/fbc
c...xbcsec(8) records the total differential cross-sections for different
c...states: 1---singlet 1s0; 2---singlet 3s1; 7---octet 1s0; 8---octet 3s1;
c...3---singlet 1p1; 4---singlet 3p0; 5---singlet 3p1; 6---singlet 3p2.
common/mixevnt/xbcsec(8),imix,imixtype
logical wronginput
c
c... Read parameter setting from file bcvegpy_set_par.nam
c
Call Read_parameter_settings
c
c... change the intitial state of the random number
c mrpy(1) = 19780503 ! default value
mrpy(1) = ibcrandom
write( 6, * ) ' '
write( 6, * ) ' Change default value of random, mrpy(1), to ',
+ mrpy(1)
write( 6, * ) ' '
c... end random change
pi = dacos(-1.0d0)
c*************************************************
c** some commen parameters that are used for both
c** imix=0 or imix=1 are listed here for convenience.
c*************************************************
c...setting the basic parameters. note pmbc should be equal to
c...(pmb+pmc) to ensure the gauge invariance of the amplitude.
c pmb =4.9d0 !b quark mass (gev)
c pmc =1.386d0 !~c quark mass (gev)
pmb = pmassb !b quark mass (gev)
pmc = pmassc !~c quark mass (gev)
pmbc = pmb+pmc !~bc mass (gev)
c------------------------------------------
c...kinematical variables
ptcut =0.0d+0 !bc p_t cut (gev)
etacut=1.0d+9 !bc rapidity (y) cut
c---------------------------------------
c...npdfu=2:lhc=1.40d+4GeV; npdfu=1:tevatron=1.96d+3GeV.
c---------------------------------------
c...hadron information
nq2 =3 !types of q^2 (seven typical energy scales are
c ! designed in program)
c npdfu =2 !types of incoming beams. =1, tevatron; =2, lhc.
npdfu = naccel
if(npdfu.eq.1) ecm=ENERGYOFTEVA !defined in run.F
if(npdfu.eq.2) ecm=ENERGYOFLHC !defined in run.F
mstp(51) =7 !types of parton distribution functions. used for
c !pythia inner pdf and under the condition ioutpdf=0.
idpp =3 !=idwtup: types of pythia generates events
mstu(111)=1 !setting the value of alphas. pythia parameter
paru(111)=0.2d0 !constant value of alphas, used when mstu(111)=0.
ievntdis =0 !switch on/off to get the event number
c !distributions for p_t, rap, shat, pseta, y, z.
c------------------------------------------
c...event information
igenerate =0 !whether generating full events must be with idwtup=1
c ishower=0 !switch off aspects: initial and final state showers,
c !multiple interactions and hadronization.
ishower = i_shower
c...using pythia pdf or not.
ioutpdf =1
c...=100, grv98lo; =200, mrst2001l; =300, cteq6l1
ipdfnum =300
if(ioutpdf.eq.1 .and. ipdfnum.eq.300) call setctq6(4) !cteq6l1
c**************************************************
c**************************************************
c...whether to get the mixed events for bc meson.
c...here, we only consider the mixed results for
c...the dominant gluon-gluon fusion mechanism.
c--------------------------------------------------
c...if(imix==1), then we can generate the mixed events
c...up to the eight states (1s0,3s1,1p1,3p0,3p1,3p2,1s0_8,3s1_8),
c...which are produced through the gluon-gluon fusion mechanism.
c...if(imix==0), then one can generate every states separately.
c**************************************************
c imix=1
imix = i_mix
c--------------------------------------------------
c***** set the parameters for mixing results
c--------------------------------------------------
if (imix.eq.1) then
c*************************************************
c...setting fixed values for mixing processes.
c...imixtype: set how many states need to be mixed:
c...imixtype=1: all the eight states need to be mixed.
c...imixtype=2: the mixed events for two color-singlet s-wave states.
c...imixtype=3: the mixed events for the four color-singlet
c... p-wave plus two color-octet s-wave states,
c************************************************
imixtype=1
c*************************************************
c...some of the parameters are fixed only for simplicity.
c...here, to make our program short, we only provide
c...three possible way to get the mixed results are programmed:
c... 1) ivegasopen=1, no matter what value of igrade.
c... 2) ivegasopen=0 and igrade=1.
c... it is not an appreciable way:
c... 3) ivegasopen=0 and igrade=0.
c*************************************************
mixmethod=1
if(mixmethod.eq.1) then
ivegasopen=1
igrade =0 !or 1, no use.
end if
if(mixmethod.eq.2) then
ivegasopen=0
igrade =1
end if
if(mixmethod.eq.3) then
ivegasopen=0
igrade =0
end if
c----------------------------
c... the following value should be increased
c... to achieve the users precision goal.
c----------------------------
number=NVEGCALL
nitmx =NVEGITMX
nev =NUMOFEVENTS
igrade =1 ! no use when ivegasopen=1
iveggrade=0 ! should be fixed to 0
c---------------------------------------------------
c-- fixed parameter in the case of imix=1
isubonly =0
subenergy=100.0d0 ! no use for present purpose
iqqbar =0 ! should be fixed to 0.
iqcode =2 ! no use for present purpose
return
end if
c--------------------------------------------------
c***** end of the initialization for mixing results
c--------------------------------------------------
c******************************************************
c******************************************************
c***** The following is for generating single state
c******************************************************
c******************************************************
c*****************************************
c*** this is the previous way for easy running. with ireaddata=1,
c*** it will read the all the necessary parameter values from the
c*** datafile (totput.dat).
c***
c*** since now we take ( makefile ) to do the compiling,
c*** such method is not very useful and now is commented out.
c***
c*** ireaddata=0
c*** if(ireaddata.eq.1) goto 1001
c*****************************************
c*****************************************
c...note: the following initial value is only for checking that
c...the program is ok. to do numerical calculations/event generation,
c...one needs to be careful about all these values, especailly
c...those parameters that can improve the precision.
c*****************************************
c****************************************
c...to choose what bc state we need to generate.
c...=1, color-singlet 1s0 ;=2, color-singlet 3s1 ;=3, 1p1 ;=4, 3p0 ;
c...=5, 3p1 ;=6, 3p2 ;=7, color-octet 1s0 ;=8, color-octet 3s1.
ibcstate =4
c*****************************************
c...for s-wave, r(0)=1.241 ---> \psi(0)=(0.35).
ioctet=0
if(ibcstate.eq.7 .or. ibcstate.eq.8) then
ioctet=1
coeoct=0.2d0
if(ibcstate.eq.7) ibcstate=1
if(ibcstate.eq.8) ibcstate=2
end if
c******************************************
if(ibcstate.eq.1 .or. ibcstate.eq.2) then
fbc =1.241
fbcc=dsqrt(3.0d0*fbc**2/pi/pmbc)
else
c...for p-wave, r'(0)=0.44833 ---> \psi'(0)=(0.219); r'(0)**2=(0.201)
fbc =0.44833
c...the value of p-wave matrix element <0|p|0>.
fbcc=fbc**2*9.0d0/(2.0d0*pi)
end if
c****************************************
c...vegas parameters
isingmethod=1
if(isingmethod.eq.1) then
ivegasopen=1 !whether using vegas.
igrade =0 !or 1, no use.
end if
if(isingmethod.eq.2) then
ivegasopen=0
igrade =1 ! whether using existed grade,
end if
if(isingmethod.eq.3) then
ivegasopen=0
igrade =0
end if
number=NVEGCALL !total number of calling fxn in each iteration in vegas
nitmx =NVEGITMX !maximum iteration used in vegas
nev =NUMOFEVENTS !number of events to be generated
c****************************************
c...improve vegas grade
iveggrade=0 ! switch on/off to use the existed grade before
c ! running vegas, the initial condition for the running
c ! and that for getting the existed grade should be the
c ! same. this is used to get a more precise sampling
c ! grade. used together with ivegasopen=1.
c***************************************
c...subprocess information
isubonly =0 !switch on whether only to get the information,
c !for the subprocess including cross-section, pt,
c !rapidity distributions and so on.
c...c.m. energy(gev) of the subprocess gg->bc+b+c~
if(isubonly.eq.1) subenergy=100.0d0
c***************************************
c...mechanism through subprocess q~q->bc
iqqbar =0 !switch on/off whether using the subprocess
c q+\bar{q}-> to generate the bc events.
c...all the quarks are massless.
c...=1, u; =2, d; =3, s
if(iqqbar.eq.1) iqcode=2
c 1001 continue
c****************************************
c****************************************
c****************************************
c**** comment out the method of reading data from outer
c**** data file.
c**** this way is the old way to save compile time and is
c**** not necessary for the present linux version, since
c**** now we use ( make ) to compile the program.
c****************************************
c...open input data file.
c if(ireaddata.eq.1) then
c open(unit=1,file='totput.dat',status='old',access='sequential',
c & form='formatted')
c...read the (zero point wave function) -----> initial for fbcc.
c read(1,*) pmbc,pmb,pmc,fbcc
c*** here the input ibcstate should be 1,2,3,4,5,6.
c read(1,*) ptcut,etacut,ecm,ibcstate,igenerate,ivegasopen
c read(1,*) number,nitmx
c read(1,*) nq2,npdfu,nev
c read(1,*) ishower,mstp51,idpp,mstu111,paru111
c read(1,*) isubonly,subenergy,igrade
c read(1,*) inumevnt,iveggrade,iqqbar,iqcode
c read(1,*) ioutpdf,ipdfnum,ioctet,coeoct
c
c****************************************
c if(ibcstate.eq.7 .or. ibcstate.eq.8) then
c if(ibcstate.eq.7) ibcstate=1
c if(ibcstate.eq.8) ibcstate=2
c ioctet=1
c coeoct=0.2d0
c end if
c****************************************
c if(ibcstate.eq.1 .or. ibcstate.eq.2) then
c...decay constant f_{bc} of s-wave.
c fbc=fbcc
c fbcc=dsqrt(fbcc**2*3.0d0/(pmbc*pi))
c else
c...the value of p-wave matrix element <0|p|0>.
c fbc=fbcc
c fbcc=fbcc**2*9.0d0/(2.0d0*pi)
c end if
c
c mstp(51)=mstp51
c mstu(111)=mstu111
c paru(111)=paru111
c
c close(1)
c end if
c***************************************
c***************************************
c***************************************
c----------------------------------------------
c...error message.
wronginput=.false.
call uperror(wronginput)
if(wronginput) stop '-----input error! stop the program !!!'
call parameters()
call dparameters()
call coupling()
return
end
c***************************************
c***************************************
Subroutine Read_parameter_settings
c
c... Get parameters from namelist
implicit double precision(a-h, o-z)
implicit integer(i-n)
Namelist / bcvegpy_set_par / ENERGYOFTEVA, ENERGYOFLHC,
+ pmassb, pmassc, naccel, i_shower, i_mix,
+ NUMOFEVENTS, NVEGCALL, NVEGITMX, ibcrandom
#include "bcvegpy_set_par.inc"
c
c-------------------------------------------------------------------------------
c
open( unit=1, file='bcvegpy_set_par.nam',Status='Old',Err=99)
read( 1, nml=bcvegpy_set_par, err=90)
write( 6, * ) ' '
write( 6, * ) ' Contents of namelist *bcvegpy_set_par*: '
write( 6, nml=bcvegpy_set_par)
write( 6, * ) ' '
Close( 1 )
Return
c
90 Write( 6, * ) ' !!!!! Unable to read namelist bcvegpy_set_par '
Call Exit
99 Write( 6, * ) ' !!!!! Unable to open bcvegpy_set_par.nam'
Call Exit
End
|