~maddevelopers/mg5amcnlo/2.9.4

« back to all changes in this revision

Viewing changes to Template/NLO/Utilities/split_events.f

pass to v2.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      program split_events
 
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
 
5
      implicit none
 
6
      integer maxevt,ifile,ofile,i,j,npart,mgfile,ifile2,ione
 
7
      parameter(ione=1)
 
8
      integer IDBMUP(2),PDFGUP(2),PDFSUP(2),IDWTUP,NPRUP
 
9
      double precision EBMUP(2),XSECUP,XERRUP,XMAXUP,LPRUP
 
10
      INTEGER MAXNUP
 
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
 
17
      character*140 buff
 
18
      character*10 MonteCarlo
 
19
      character*3 str
 
20
      integer evts,leftover,loc,loc1,loc2,isc,ipdf,jmax
 
21
      integer numscales,numPDFpairs
 
22
      common/cwgxsec1/numscales,numPDFpairs
 
23
c
 
24
      write (*,*) 'Give the name of the original event file'
 
25
      read (*,*) event_file
 
26
      ifile=34
 
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)
 
33
      close(34)
 
34
      write (*,*) 'File contains ',maxevt,' events'
 
35
      write (*,*) 'Give the number of splitted files you want (< 999)'
 
36
      read (*,*) npart
 
37
      if (npart.gt.999) then
 
38
         write (*,*) 'Too many event files (999 is max)', npart
 
39
         stop
 
40
      endif
 
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'
 
45
      write (*,*) ' '
 
46
 
 
47
c$$$      mgfile=36
 
48
c$$$      open (unit=mgfile,file='mcatnlo.cmd',status='unknown')
 
49
c$$$      call open_cmd(mgfile)
 
50
c$$$      write (*,*) ''
 
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
 
56
      executable=' '
 
57
      inputfile=' '
 
58
 
 
59
      loc=index(event_file,' ')
 
60
      loc1=index(executable,' ')
 
61
      loc2=index(inputfile,' ')
 
62
         
 
63
      ifile=34
 
64
      ifile2=44
 
65
      open(unit=ifile,file=event_file,status='old')
 
66
      open(unit=ifile2,file='headfile',status='unknown')
 
67
      call copy_header(ifile,ifile2,evts)
 
68
      close(ifile2)
 
69
      call read_lhef_init(ifile,
 
70
     &     IDBMUP,EBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,
 
71
     &     XSECUP,XERRUP,XMAXUP,LPRUP)
 
72
 
 
73
      do i=1,npart+1
 
74
         jmax=evts
 
75
         if(leftover.eq.0.and.i.eq.npart+1)cycle
 
76
         if(leftover.ne.0.and.i.eq.npart+1)jmax=leftover
 
77
         str='000'
 
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)
 
83
         ofile=35
 
84
         ifile2=44
 
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)
 
91
         do j=1,jmax
 
92
            call read_lhef_event(ifile,
 
93
     &           NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
 
94
     &           IDUP,ISTUP,MOTHUP,ICOLUP,PUP,VTIMUP,SPINUP,buff)
 
95
 
 
96
            call write_lhef_event(ofile,
 
97
     &           NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,
 
98
     &           IDUP,ISTUP,MOTHUP,ICOLUP,PUP,VTIMUP,SPINUP,buff)
 
99
         enddo
 
100
         write(ofile,*)'</LesHouchesEvents>'
 
101
         close(ifile2)
 
102
         close(ofile)
 
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'
 
106
      enddo 
 
107
      close(ifile)
 
108
c$$$      close(mgfile)
 
109
      end
 
110
 
 
111
 
 
112
      subroutine open_cmd(mgfile)
 
113
      implicit none
 
114
      integer 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'
 
121
      return
 
122
      end
 
123