2
c Split events files into event files with lower number of events
3
c gfortran -I../SubProcesses/P0_<anydir> -o split_events split_events.f
4
c handling_lhe_events.f fill_MC_mshell.f
6
integer maxevt,ifile,ofile,i,j,npart,mgfile,ifile2,ione
8
integer IDBMUP(2),PDFGUP(2),PDFSUP(2),IDWTUP,NPRUP
9
double precision EBMUP(2),XSECUP,XERRUP,XMAXUP,LPRUP
11
PARAMETER (MAXNUP=500)
12
INTEGER NUP,IDPRUP,IDUP(MAXNUP),ISTUP(MAXNUP),
13
# MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP)
14
DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,
15
# PUP(5,MAXNUP),VTIMUP(MAXNUP),SPINUP(MAXNUP)
16
character*80 event_file,fname1,executable,inputfile
18
character*10 MonteCarlo
20
integer evts,leftover,loc,loc1,loc2,isc,ipdf,jmax
21
integer numscales,numPDFpairs
22
common/cwgxsec1/numscales,numPDFpairs
24
write (*,*) 'Give the name of the original event file'
27
open(unit=ifile,file=event_file,status='old')
28
call read_lhef_header_full(ifile,maxevt,isc,ipdf,MonteCarlo)
29
numscales=int(sqrt(dble(isc)))
30
call read_lhef_init(ifile,
31
& IDBMUP,EBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,
32
& XSECUP,XERRUP,XMAXUP,LPRUP)
34
write (*,*) 'File contains ',maxevt,' events'
35
write (*,*) 'Give the number of splitted files you want (< 999)'
37
if (npart.gt.999) then
38
write (*,*) 'Too many event files (999 is max)', npart
41
evts=int(dble(maxevt)/dble(npart))
42
leftover=maxevt-evts*npart
43
write (*,*) npart,' files will have',evts,' events each'
44
write (*,*) ione,' file will have',leftover,' events'
48
c$$$ open (unit=mgfile,file='mcatnlo.cmd',status='unknown')
49
c$$$ call open_cmd(mgfile)
51
c$$$ write (*,*) 'To write condor cmd file we need some extra info'
52
c$$$ write (*,*) 'Give the name for the MCatNLO executable'
53
c$$$ read (*,*) executable
54
c$$$ write (*,*) 'Give the name for the MCatNLO input file'
55
c$$$ read (*,*) inputfile
59
loc=index(event_file,' ')
60
loc1=index(executable,' ')
61
loc2=index(inputfile,' ')
65
open(unit=ifile,file=event_file,status='old')
66
open(unit=ifile2,file='headfile',status='unknown')
67
call copy_header(ifile,ifile2,evts)
69
call read_lhef_init(ifile,
70
& IDBMUP,EBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,
71
& XSECUP,XERRUP,XMAXUP,LPRUP)
75
if(leftover.eq.0.and.i.eq.npart+1)cycle
76
if(leftover.ne.0.and.i.eq.npart+1)jmax=leftover
78
if (i.le.9) write (str(3:3),'(i1)') i
79
if (i.gt.9.and.i.le.99) write (str(2:3),'(i2)') i
80
if (i.gt.99.and.i.le.999) write (str(1:3),'(i3)') i
81
fname1=event_file(1:loc-1)//'.'//str
82
write (*,*) 'writing event file ',fname1(1:40)
85
open(unit=ofile,file=fname1,status='unknown')
86
open(unit=ifile2,file='headfile',status='old')
87
call copy_header(ifile2,ofile,jmax)
88
call write_lhef_init(ofile,
89
& IDBMUP,EBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,
90
& XSECUP,XERRUP,XMAXUP,LPRUP)
92
call read_lhef_event(ifile,
93
& NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
94
& IDUP,ISTUP,MOTHUP,ICOLUP,PUP,VTIMUP,SPINUP,buff)
96
call write_lhef_event(ofile,
97
& NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
98
& IDUP,ISTUP,MOTHUP,ICOLUP,PUP,VTIMUP,SPINUP,buff)
100
write(ofile,*)'</LesHouchesEvents>'
103
c$$$ write (mgfile,'(a)') 'Arguments = '//executable(1:loc1)//
104
c$$$ & inputfile(1:loc2)//event_file(1:loc)//str
105
c$$$ write (mgfile,'(a)') 'queue'
112
subroutine open_cmd(mgfile)
115
write (mgfile,'(a)') 'universe = vanilla'
116
write (mgfile,'(a)') 'executable = ajob'
117
write (mgfile,'(a)') 'output = /dev/null'
118
write (mgfile,'(a)') 'error = /dev/null'
119
write (mgfile,'(a)') 'requirements = (MADGRAPH == True)'
120
write (mgfile,'(a)') 'log = /dev/null'