30 def loadRules(self,docname):
31 self.rules = { 'asInt' : {},
32 'asArray' : [],
33 'asMultiArray' : [],
34 'ignoreElement' : [],
35 'ignoreAttrib' : [],
36 'promote' : {},
37 'rename' : {}
38 }
39
40 if docname == "LVL1Config":
41 self.rules['asInt'] = {
42 "TriggerItem" : ["partition", "complex_deadtime", "ctpid"],
43 "TriggerThreshold" : ["bitnum", "mapping", "version", "active", "id"],
44 "TriggerThresholdValue" : [ "thresholdval", "etamin", "etamax", "phimin", "phimax",
45 "em_isolation", "window", "priority", "had_veto", "had_isolation"],
46 "Signal" : [ "range_end", "range_begin" ],
47 "Random" : ["cut0", "cut1", "cut2", "cut3"],
48 "PrescaleSet" : ["menuPartition"],
49 "Prescale" : ["ctpid"],
50 "TriggerCondition" : ["multi"],
51 "METSignificance" : ["xeMax", "teSqrtMax", "xsSigmaOffset", "teSqrtMin", "xsSigmaScale", "xeMin"],
52 "MinimumTOBPt" : [ "priority", "etamin", "ptmin", "etamax", "window" ],
53 "Parametrization" : [ "slope", "isobit", "priority", "etamin", "offset", "mincut", "etamax", "upperlimit"],
54 "CaloInfo" : [ "global_em_scale", "global_jet_scale"],
55 "BunchGroupSet" : [ "menuPartition" ],
56 "BunchGroup" : [ "internalNumber" ],
57 "MuctpiInfo" : [ "high_pt", "max_cand", "low_pt" ],
58 "PrescaledClock" : [ "clock1", "clock2" ],
59 "LVL1Config" : [ "l1Version", "ctpVersion" ]
60 }
61 self.rules['asArray'] = [ 'AND', 'OR' ]
62 self.rules['asMultiArray'] = [ ('PrescaleSet', 'Prescale'),
63 ('TriggerThreshold', 'TriggerThresholdValue'),
64 ('TriggerCounterList', 'TriggerCounter'),
65 ('Isolation', 'Parametrization'),
66 ('TriggerMenu', 'TriggerItem'),
67 ('CaloInfo', 'MinimumTOBPt'),
68 ('CaloInfo', 'Isolation'),
69 ('BunchGroupSet', 'BunchGroup'),
70 ('OR', 'TriggerCondition'),
71 ('TriggerThresholdList', 'TriggerThreshold'),
72 ('AND', 'TriggerCondition'),
73 ('AND', 'OR'),
74 ('AND', 'InternalTrigger')
75 ]
76 self.rules['ignoreElement'] = []
77 self.rules['promote'] = {"TriggerThresholdList" : "TriggerThreshold"}
78 self.rules['rename'] = { "TriggerItem" : "items", "TriggerMenu" : "menu", "l1Version" : "version", "ctpid" : "ctpId",
79 "complex_deadtime" : "complexDeadtime", "trigger_type" : "triggerType", "TriggerThreshold" : "thresholds",
80 "triggerthreshold" : "triggerThreshold", "TriggerCondition" : "triggerCondition", "InternalTrigger" : "internalTrigger",
81 "Cable" : "cable", "Signal" : "signal", "range_begin" : "rangeBegin", "range_end" : "rangeEnd",
82 "TriggerThresholdValue" : "thresholdValues" }
83
84 elif docname == "HLT_MENU":
85
86 self.rules['asInt'] = {
87 "CHAIN": ["EBstep", "chain_counter"],
88 "SIGNATURE": ["signature_counter"]
89 }
90 self.rules['asMultiArray'] = [ ('SEQUENCE_LIST', 'SEQUENCE'),
91 ('GROUP_LIST', 'GROUP'),
92 ('SIGNATURE_LIST', 'SIGNATURE'),
93 ('CHAIN_LIST', 'CHAIN'),
94 ('STREAMTAG_LIST', 'STREAMTAG'),
95 ('SIGNATURE', 'TRIGGERELEMENT')
96 ]
97 self.rules['ignoreElement'] = [ "SEQUENCE_LIST", "SIGNATURE_LIST", "TRIGGERTYPE_LIST" ]
98 self.rules['ignoreAttrib'] = [ ("CHAIN", "level"),
99 ("CHAIN", "EBstep"),
100 ("CHAIN", "pass_through"),
101 ("CHAIN", "prescale"),
102 ("CHAIN", "rerun_prescale"),
103 ("HLT_MENU", "prescale_set_name")]
104 self.rules['promote'] = {"GROUP_LIST" : "GROUP", "STREAMTAG_LIST" : "STREAMTAG", "CHAIN_LIST" : "CHAIN"}
105 self.rules['rename'] = { "GROUP" : "groups", "STREAMTAG" : "streams", "CHAIN" : "chains",
106 "menu_name" : "name",
107 "chain_name" : "name", "chain_counter" : "counter", "lower_chain_name" : "l1item",
108 "stream" : "name"}
109
110 elif docname == "TOPO_MENU":
111
112 self.rules['asInt'] = {
113 "Parameter": ["pos", "value"],
114 "Bit": ["selection"],
115 "Input": ["position"],
116 "Output": ["bits", "fpga", "clock", "algoId", "module", "firstbit"],
117 "SortAlgo": ["algoId"],
118 "DecisionAlgo": ["algoId"],
119 }
120 self.rules['asMultiArray'] = [ ('OutputList', 'Output'),
121 ('Fixed', 'Generic'),
122 ('Fixed', 'Input'),
123 ('TOPO_MENU', 'SortAlgo'),
124 ('TOPO_MENU', 'DecisionAlgo'),
125 ('Variable', 'Parameter'),
126 ('Output', 'Bit'),
127 ('SIGNATURE', 'TRIGGERELEMENT')
128 ]
129 self.rules['promote'] = { "OutputList" : "Output" }
130 self.rules['rename'] = { "menu_name" : "name", "menu_version" : "version",
131 "algname" : "algName", "algoId" : "algId", "firstbit" : "firstBit", "module" : "board", "triggerline" : "triggerLines",
132 "SortAlgo" : "sortingAlgorithms", "DecisionAlgo" : "decisionAlgorithms",
133 "Fixed" : "fixedParameters", "Input" : "inputs", "Output" : "outputs", "Generic" : "generics",
134 "Variable" : "variableParameters", "Parameter" : "parameters"}
135 else:
136 print(
"Unknown document with root element %s" % docname)
137 return 1
138 return 0
139
140