ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/RateMonShiftTool_dev/MakeTriggerJSON.py
Revision: 1.1
Committed: Sat Mar 24 21:24:55 2012 UTC (13 years, 1 month ago) by amott
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-02-06, V00-02-05, V00-02-04, V00-02-03, V00-02-01, V00-01-10, V-00-01-10, V00-01-09, V00-01-08, V00-01-07, V00-01-06, V00-01-05, V00-01-04, V00-01-03, V00-01-02, V00-01-01, V00-00-34, V00-00-33, MenuAnalyzer_V00-00-02, MenuAnalyzer_V00-00-01, MenuAnalyzer_V1, V00-00-32, V00-00-31, V00-00-30, V00-00-29, V00-00-28, V00-00-27, V00-00-26, V00-00-24, V00-00-23, V00-00-22, V00-00-21, V00-00-19, V00-00-18, V00-00-20, HEAD
Log Message:
Update to work with JSON maker

File Contents

# Content
1 #!/usr/bin/env python
2
3 import sys
4 import os
5
6 from selectionParser import selectionParser
7 import CheckPrescales
8 import DatabaseParser
9 import json
10 import OrderedDict
11
12 def usage():
13 print sys.argv[0]+" NewJSON OldJSON OldTriggerJSONFolder"
14
15 def main():
16 if len(sys.argv) < 4:
17 usage()
18 sys.exit(0)
19
20 NewJSONName = sys.argv[1]
21 OldJSONName = sys.argv[2]
22
23 NewJSON = selectionParser(open(sys.argv[1]).read()).runsandls()
24 OldJSON = selectionParser(open(sys.argv[2]).read()).runsandls()
25
26 TrigFolder = sys.argv[3]
27
28 KeyQuery = """
29 SELECT A.TRIGGERMODE, B.HLT_KEY, B.GT_RS_KEY, B.TSC_KEY, C.CONFIGID, D.GT_KEY FROM
30 CMS_WBM.RUNSUMMARY A, CMS_L1_HLT.L1_HLT_CONF B, CMS_HLT.CONFIGURATIONS C, CMS_TRG_L1_CONF.TRIGGERSUP_CONF D WHERE
31 B.ID = A.TRIGGERMODE AND C.CONFIGDESCRIPTOR = B.HLT_KEY AND D.TS_Key = B.TSC_Key AND A.RUNNUMBER=%d
32 """
33
34 JSONS = {}
35 for run in sorted(NewJSON.iterkeys()):
36 if OldJSON.has_key(run):
37 continue # skip already processed runs
38 LSs = NewJSON[run]
39 print "Processing Run: %d" % (run,)
40 parser = DatabaseParser.DatabaseParser()
41 parser.RunNumber = run
42 parser.ParseRunSetup()
43
44 PrescaleTable = CheckPrescales.GetPrescaleTable(parser.HLT_Key,parser.GT_Key,parser.GTRS_Key,[],False)
45
46 for HLT,Prescales in PrescaleTable.iteritems():
47 HLTNoV = DatabaseParser.StripVersion(HLT)
48 oldpath = TrigFolder + "/" + HLTNoV + "_" + OldJSONName
49 if not JSONS.has_key(HLTNoV):
50 if os.path.exists(oldpath):
51 JSONS[HLTNoV] = json.load(open(oldpath))
52 else:
53 JSONS[HLTNoV] = {}
54 tmpLSRange = []
55 for ls in LSs:
56 if Prescales[parser.PSColumnByLS[ls]] == 1:
57 tmpLSRange.append(ls)
58 JSONS[HLTNoV][str(run)] = truncateRange(tmpLSRange)
59 if not os.path.exists(TrigFolder):
60 os.system("mkdir -p %s" % (TrigFolder,))
61 for name in JSONS.iterkeys():
62 thisJSON = JSONS[name]
63 sortedJSON = OrderedDict.OrderedDict()
64 for key in sorted(thisJSON.iterkeys()):
65 sortedJSON[key] = thisJSON[key]
66 newpath = TrigFolder + "/" + DatabaseParser.StripVersion(name) + "_" + NewJSONName
67 #print "Writing %s" % (newpath,)
68 out = open(newpath,'w')
69 out.write(json.dumps(sortedJSON))
70 #out.write(str(oldJSON))
71 out.close()
72
73
74 def truncateRange(inp):
75 if len(inp)==0:
76 return []
77 start = inp[0]
78 out = []
79 for i in range(len(inp)):
80 if i==0: continue # skip the first entry
81 if not inp[i] == inp[i-1]+1:
82 out.append([start,inp[i-1]])
83 start = inp[i]
84 out.append([start,inp[-1]])
85 return out
86
87
88
89 if __name__=='__main__':
90 main()
91