ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/MitProd/Processing/bin/input.py
Revision: 1.2
Committed: Sat Jun 5 02:36:28 2010 UTC (14 years, 11 months ago) by paus
Content type: text/x-python
Branch: MAIN
CVS Tags: Mit_020pre1, Mit_018, Mit_017, Mit_017pre3, Mit_017pre2, Mit_017pre1, Mit_016, Mit_015b, Mit_015a, Mit_015, Mit_014e, Mit_014d, Mit_014c, Mit_014b, Mit_014a
Changes since 1.1: +106 -0 lines
Log Message:
Wow I forgot all about my cvs.

File Contents

# Content
1 #!/usr/bin/env python
2 #---------------------------------------------------------------------------------------------------
3 # Simple interface to command line DBS to prepare my crabTask input files.
4 #---------------------------------------------------------------------------------------------------
5 import os,sys,types,string,getopt
6
7 # Define string to explain usage of the script
8 usage = "Usage: input.py --dataset=<name>\n"
9 usage += " --option=[ lfn, xml ]\n"
10 usage += " --help\n"
11
12 def printLine(option,nEvents,block,lfn,iJob):
13 if option == 'xml':
14 print ' <Job MaxEvents="%d'%nEvents + '" InputFiles="' + lfn \
15 + '" SkipEvents="0" JobID="%d'%iJob + '" > </Job>'
16 else:
17 print "%s %s %d"%(block,lfn,nEvents)
18
19
20 # Define the valid options which can be specified and check out the command line
21 valid = ['db=','dataset=','option=','help']
22 try:
23 opts, args = getopt.getopt(sys.argv[1:], "", valid)
24 except getopt.GetoptError, ex:
25 print usage
26 print str(ex)
27 sys.exit(1)
28
29 # --------------------------------------------------------------------------------------------------
30 # Get all parameters for the production
31 # --------------------------------------------------------------------------------------------------
32 # Set defaults for each option
33 db = None
34 dataset = None
35 option = 'lfn'
36
37 # Read new values from the command line
38 for opt, arg in opts:
39 if opt == "--help":
40 print usage
41 sys.exit(0)
42 if opt == "--db":
43 db = arg
44 if opt == "--dataset":
45 dataset = arg
46 if opt == "--option":
47 option = arg
48
49 # Deal with obvious problems
50 if dataset == None:
51 cmd = "--dataset= required parameter not provided."
52 raise RuntimeError, cmd
53
54 #---------------------------------------------------------------------------------------------------
55 # main
56 #---------------------------------------------------------------------------------------------------
57 if not db:
58 # find relevant blocks
59 cmd = "dbs search --query=\"find block where dataset=" + dataset + "\""
60 cmd += "| grep \# | sort"
61 blocks = []
62 iJob = 1
63 if option == 'xml':
64 print '<arguments>'
65 for line in os.popen(cmd).readlines():
66 line = line[:-1]
67 blocks.append(line)
68 for block in blocks:
69 cmd = "dbs search --query=\"find file,file.numevents where block=" + block + "\""
70 cmd += "| grep store | sort"
71 for line in os.popen(cmd).readlines():
72 line = line[:-1]
73 f = line.split()
74 lfn = f[0]
75 nEvents = int(f[1])
76 f = lfn.split("/")
77 file = f[-1]
78 if nEvents != 0:
79 printLine(option,nEvents,block,lfn,iJob)
80 iJob = iJob + 1
81 if option == 'xml':
82 print '</arguments>'
83
84 if db:
85 cmd = 'cat ' + db
86
87 iJob = 1
88 if option == 'xml':
89 print '<arguments>'
90 for line in os.popen(cmd).readlines():
91 line = line[:-1]
92
93 f = line.split()
94 block = f[0]
95 lfn = f[1]
96 nEvents = int(f[2])
97
98 f = lfn.split("/")
99 file = f[-1]
100
101 if nEvents != 0:
102 printLine(option,nEvents,block,lfn,iJob)
103 iJob = iJob + 1
104
105 if option == 'xml':
106 print '</arguments>'