36
45
subroutine write_lhef_header_banner(ifile,nevents,MonteCarlo,path)
38
integer ifile,nevents,iseed,i
39
double precision mcmass(-5:21)
47
integer ifile,nevents,iseed,i,pdf_set_min,pdf_set_max,idwgt
48
double precision mcmass(-5:21),rw_Rscale_down,rw_Rscale_up
49
$ ,rw_Fscale_down,rw_Fscale_up
40
50
character*10 MonteCarlo
42
character*72 buffer,buffer2
52
character*72 buffer,buffer_lc,buffer2
54
common /crwgt_skip/ rwgt_skip
55
logical rwgt_skip_pdf,rwgt_skip_scales
57
common /c_event_id/ event_id
58
include 'reweight_all.inc'
59
c Set the event_id to 0. If 0 or positive, this value will be update
60
c in write_lhe_event. It is set to -99 through a block data
44
64
write(ifile,'(a)') '<LesHouchesEvents version="1.0">'
45
65
write(ifile,'(a)') ' <header>'
64
84
write(ifile,'(a)') ' <MGRunCard>'
65
85
open (unit=92,file=path(1:index(path," ")-1)//'run_card.dat'
88
rwgt_skip_scales=.true.
68
94
read(92,'(a)',err=87,end=87) buffer
96
call case_trap3(72,buffer_lc)
69
97
c Replace the random number seed with the one used...
70
if (index(buffer,'iseed').ne.0 .and. buffer(1:1).ne.'#') then
98
if (index(buffer_lc,'iseed').ne.0 .and. buffer(1:1).ne.'#') then
71
99
open (unit=93,file="randinit",status="old",err=96)
72
100
read(93,'(a)') buffer2
73
101
if (index(buffer2,'=').eq.0) goto 96
77
105
write(buffer,'(i11,a)')iseed,' = iseed'
78
106
c Update the number of events
79
elseif (index(buffer,'nevents').ne.0 .and.
107
elseif (index(buffer_lc,'nevents').ne.0 .and.
80
108
& buffer(1:1).ne.'#') then
81
109
write(buffer,'(i11,a)')nevents,' = nevents'
110
elseif (index(buffer_lc,'reweight_pdf').ne.0 .and.
111
$ index(buffer_lc,'.true.').ne.0 .and.
112
$ buffer(1:1).ne.'#') then
114
rwgt_skip_pdf=.false.
115
elseif (index(buffer_lc,'pdf_set_min').ne.0 .and.
116
& buffer(1:1).ne.'#') then
117
read(buffer(1:index(buffer,'=')-1),*) pdf_set_min
118
elseif (index(buffer_lc,'pdf_set_max').ne.0 .and.
119
& buffer(1:1).ne.'#') then
120
read(buffer(1:index(buffer,'=')-1),*) pdf_set_max
121
elseif (index(buffer_lc,'reweight_scale').ne.0 .and.
122
$ index(buffer_lc,'.true.').ne.0 .and.
123
$ buffer(1:1).ne.'#') then
125
rwgt_skip_scales=.false.
127
elseif (index(buffer_lc,'rw_rscale_down').ne.0 .and.
128
& buffer(1:1).ne.'#') then
129
read(buffer(1:index(buffer,'=')-1),*) rw_Rscale_down
130
elseif (index(buffer_lc,'rw_rscale_up').ne.0 .and.
131
& buffer(1:1).ne.'#') then
132
read(buffer(1:index(buffer,'=')-1),*) rw_Rscale_up
133
elseif (index(buffer_lc,'rw_fscale_down').ne.0 .and.
134
& buffer(1:1).ne.'#') then
135
read(buffer(1:index(buffer,'=')-1),*) rw_Fscale_down
136
elseif (index(buffer_lc,'rw_fscale_up').ne.0 .and.
137
& buffer(1:1).ne.'#') then
138
read(buffer(1:index(buffer,'=')-1),*) rw_Fscale_up
84
141
96 write (*,*) '"randinit" file not found in write_lhef_header_'/
86
143
95 write(ifile,'(a)') buffer
146
if ( (pdf_set_min.ne.-1 .and. pdf_set_max.eq.-1) .or.
147
& (pdf_set_min.eq.-1 .and. pdf_set_max.ne.-1)) then
148
write (*,*) 'Not consistent PDF reweigthing parameters'/
149
$ /' found in the run_card.',pdf_set_min,pdf_set_max
152
if (.not.rwgt_skip_pdf) numPDFpairs=(pdf_set_max-pdf_set_min+1)/2
89
153
write(ifile,'(a)') ' </MGRunCard>'
90
154
write(ifile,'(a)') ' <MonteCarloMasses>'
91
155
call fill_MC_mshell_wrap(MonteCarlo,mcmass)
95
159
write (ifile,'(2x,i6,3x,e12.6)')21,mcmass(21)
96
160
write(ifile,'(a)') ' </MonteCarloMasses>'
161
c Write here the reweight information if need be
162
if (.not.rwgt_skip) then
163
write(ifile,'(a)') ' <initrwgt>'
164
if (numscales.ne.0) then
165
if (numscales.ne.3) then
166
write (*,*) 'Error in handling_lhe_events.f:'
167
write (*,*) 'number of scale not equal to three'
171
write(ifile,'(a)') " <weightgroup "/
172
& /"type='scale_variation' combine='envelope'>"
173
write(ifile,602) " <weight id='1001'>"/
174
$ /" muR=",1d0," muF=",1d0," </weight>"
175
write(ifile,602) " <weight id='1002'>"/
176
$ /" muR=",1d0," muF=",rw_Fscale_up," </weight>"
177
write(ifile,602) " <weight id='1003'>"/
178
$ /" muR=",1d0," muF=",rw_Fscale_down," </weight>"
179
write(ifile,602) " <weight id='1004'>"/
180
$ /" muR=",rw_Rscale_up," muF=",1d0," </weight>"
181
write(ifile,602) " <weight id='1005'> muR="
182
$ ,rw_Rscale_up," muF=",rw_Fscale_up," </weight>"
183
write(ifile,602) " <weight id='1006'> muR="
184
$ ,rw_Rscale_up," muF=",rw_Fscale_down," </weight>"
185
write(ifile,602) " <weight id='1007'> muR="
186
$ ,rw_Rscale_down," muF=",1d0," </weight>"
187
write(ifile,602) " <weight id='1008'> muR="
188
$ ,rw_Rscale_down," muF=",rw_Fscale_up," </weight>"
189
write(ifile,602) " <weight id='1009'> muR="
190
$ ,rw_Rscale_down," muF=",rw_Fscale_down," </weight>"
191
write(ifile,'(a)') " </weightgroup>"
193
if (numPDFpairs.ne.0) then
194
if (pdf_set_min.lt.90000) then ! MSTW & CTEQ
195
write(ifile,'(a)') " <weightgroup "/
196
& /"type='PDF_variation' combine='hessian'>"
198
write(ifile,'(a)') " <weightgroup "/
199
& /"type='PDF_variation' combine='gaussian'>"
203
write(ifile,'(a,i4,a,i6,a)') " <weight id='",idwgt,
204
$ "'> pdfset=",pdf_set_min+(i-1)," </weight>"
206
write(ifile,'(a)') " </weightgroup>"
208
write(ifile,'(a)') ' </initrwgt>'
97
210
write(ifile,'(a)') ' </header>'
270
383
integer isorh_lhe,ifks_lhe,jfks_lhe,fksfather_lhe,ipartner_lhe
271
384
double precision scale1_lhe,scale2_lhe
272
integer ii,j,nps,nng,iFKS
385
integer ii,j,nps,nng,iFKS,idwgt
273
386
double precision wgtcentral,wgtmumin,wgtmumax,wgtpdfmin,wgtpdfmax
388
common /crwgt_skip/ rwgt_skip
390
common /c_event_id/ event_id
274
391
include 'reweight_all.inc'
392
c if event_id is zero or positive (that means that there was a call
393
c to write_lhef_header_banner) update it and write it
394
c RF: don't use the event_id:
397
if (event_id.ge.0) then
399
if (event_id.le.9) then
400
write(ifile,'(a,i1,a)') " <event id='",event_id,"'>"
401
elseif(event_id.le.99) then
402
write(ifile,'(a,i2,a)') " <event id='",event_id,"'>"
403
elseif(event_id.le.999) then
404
write(ifile,'(a,i3,a)') " <event id='",event_id,"'>"
405
elseif(event_id.le.9999) then
406
write(ifile,'(a,i4,a)') " <event id='",event_id,"'>"
407
elseif(event_id.le.99999) then
408
write(ifile,'(a,i5,a)') " <event id='",event_id,"'>"
409
elseif(event_id.le.999999) then
410
write(ifile,'(a,i6,a)') " <event id='",event_id,"'>"
411
elseif(event_id.le.9999999) then
412
write(ifile,'(a,i7,a)') " <event id='",event_id,"'>"
413
elseif(event_id.le.99999999) then
414
write(ifile,'(a,i8,a)') " <event id='",event_id,"'>"
415
elseif(event_id.le.999999999) then
416
write(ifile,'(a,i9,a)') " <event id='",event_id,"'>"
418
write (ifile,*) "ERROR: EVENT ID TOO LARGE",event_id
419
write (*,*) "ERROR: EVENT ID TOO LARGE",event_id
423
write(ifile,'(a)') ' <event>'
278
425
write(ifile,503)NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP
280
427
write(ifile,504)IDUP(I),ISTUP(I),MOTHUP(1,I),MOTHUP(2,I),
282
429
# PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I),PUP(5,I),
283
430
# VTIMUP(I),SPINUP(I)
285
if(buff(1:1).eq.'#') then
432
if(buff(1:1).eq.'#' .and. .not.rwgt_skip) then
286
433
write(ifile,'(a)') buff(1:len_trim(buff))
287
434
read(buff,200)ch1,iSorH_lhe,ifks_lhe,jfks_lhe,
288
435
# fksfather_lhe,ipartner_lhe,
290
437
# jwgtinfo,mexternal,iwgtnumpartn,
291
438
# wgtcentral,wgtmumin,wgtmumax,wgtpdfmin,wgtpdfmax
292
439
if(jwgtinfo.ge.1.and.jwgtinfo.le.4)then
440
write(ifile,'(a)') ' <rwgt>'
295
441
write(ifile,401)wgtref,wgtqes2(2)
296
442
write(ifile,402)wgtxbj(1,1),wgtxbj(2,1),
297
443
# wgtxbj(1,2),wgtxbj(2,2),
412
556
write(ifile,404)wgtxsecPDF(nps),wgtxsecPDF(nng)
558
write(ifile,'(a)') ' </rwgt>'
560
elseif(jwgtinfo.eq.9)then
561
write(ifile,'(a)') ' <rwgt>'
564
idwgt=1000+(i-1)*numscales+j
565
write(ifile,601) " <wgt id='",idwgt,"'>",wgtxsecmu(i
571
write(ifile,601) " <wgt id='",idwgt,"'>",wgtxsecPDF(i)
574
write(ifile,'(a)') ' </rwgt>'
577
write(ifile,'(a)') ' </event>'
420
578
200 format(1a,1x,i1,4(1x,i2),2(1x,e14.8),1x,i1,2(1x,i2),5(1x,e14.8))
421
579
401 format(2(1x,e14.8))
422
580
402 format(8(1x,e14.8))
428
586
442 format(1x,e16.10,2(1x,e14.8))
429
587
503 format(1x,i2,1x,i6,4(1x,e14.8))
430
588
504 format(1x,i8,1x,i2,4(1x,i4),5(1x,e14.8),2(1x,e10.4))
589
601 format(a12,i4,a2,1x,e11.5,a7)
444
603
character*140 buff
445
604
character*80 string
447
608
integer isorh_lhe,ifks_lhe,jfks_lhe,fksfather_lhe,ipartner_lhe
448
609
double precision scale1_lhe,scale2_lhe
449
integer ii,j,nps,nng,iFKS
610
integer ii,j,nps,nng,iFKS,idwgt
450
611
double precision wgtcentral,wgtmumin,wgtmumax,wgtpdfmin,wgtpdfmax
451
612
include 'reweight_all.inc'
604
780
442 format(1x,e16.10,2(1x,e14.8))
605
781
503 format(1x,i2,1x,i6,4(1x,e14.8))
606
782
504 format(1x,i8,1x,i2,4(1x,i4),5(1x,e14.8),2(1x,e10.4))
783
601 format(a12,i4,a2,1x,e11.5,a7)
621
798
character*140 buff
622
799
character*80 string
624
803
integer isorh_lhe,ifks_lhe,jfks_lhe,fksfather_lhe,ipartner_lhe
625
804
double precision scale1_lhe,scale2_lhe
626
integer ii,j,nps,nng,iFKS
805
integer ii,j,nps,nng,iFKS,idwgt
627
806
double precision wgtcentral,wgtmumin,wgtmumax,wgtpdfmin,wgtpdfmax
628
807
include 'reweight_all.inc'
630
809
read(ifile,'(a)')string
631
if(index(string,'<event>').eq.0)then
810
if(index(string,'<event').eq.0)then
632
811
if(index(string,'</LesHouchesEvents>').ne.0)then
791
985
442 format(1x,e16.10,2(1x,e14.8))
792
986
503 format(1x,i2,1x,i6,4(1x,e14.8))
793
987
504 format(1x,i8,1x,i2,4(1x,i4),5(1x,e14.8),2(1x,e10.4))
988
601 format(a12,i4,a2,1x,e11.5,a7)