4 l1GtPatternGenerator = cms.EDAnalyzer(
"L1GtPatternGenerator",
6 GtInputTag = cms.InputTag(
"gtDigis"),
7 GmtInputTag = cms.InputTag(
"gmtDigis"),
8 GctInputTag = cms.InputTag(
"gctDigis"),
9 CscInputTag = cms.InputTag(
"gtDigis",
"CSC"),
10 DtInputTag = cms.InputTag(
"gtDigis",
"DT"),
11 RpcbInputTag = cms.InputTag(
"gtDigis",
"RPCb"),
12 RpcfInputTag = cms.InputTag(
"gtDigis",
"RPCf"),
15 PatternFileName = cms.string(
"GT_GMT_patterns.txt"),
21 PatternFileHeader = cms.string(
22 """#GT_GMT_patterns_VD
27 # values in this template are for version VD (same as VB) for the cond-chips of GTL9U (from IVAN)
30 # character "#" indicates a comment line
31 # header line 1 => hardware of sim- and spy-memories
32 # header line 2 => hardware location (FPGA-chip) of sim-memories
33 # header line 3 => channel number of sim-memories (PSB)
34 # header line 4 => hardware location (FPGA-chip) of spy-memories
35 # header line 5 => name of patterns
36 # header line 6 => number of objects (calos, muons) or other declarations
37 # (header line 7 => only graphics)
38 # (header line 8 => only text and graphics)
39 # header line 9 => number of columns, starting with 0
42 # values in column 0 are event numbers (decimal), starting with 0 (synchronisation data)
43 # patterns for 1024 events (memories of cond-chips on GTL9U can contain only 1024 events) are in this file
44 # values in columns 1-119 are the hexadecimal patterns, the rightmost digit in a string is LSB
47 # e |<--------------------------------------------------------------------------PSB/GTL9U(REC)------------------------------------------------------------------------------------------------------------->|<--------------------------------------------------------------------------PSB/GMT(AUF,AUB)--------------------------------------------------------------------------------------------------------------------------------------------------->|<----------------------------------------------------------------GMT REGIONAL MUONs----------------------------------------------------------->|<----GMT(SORT)/GTL9U(REC)----->|<--------------GTL9U(COND)/FDL(ALGO)---------------->|<-----------FDL----------->|
48 # v |PSB slot13/ch6+7 |PSB slot13/ch4+5 |PSB slot13/ch2+3 |PSB slot13/ch0+1 |PSB slot14/ch6+7 |PSB slot14/ch4+5 |PSB slot14/ch2+3 |PSB slot14/ch0+1 |PSB slot15/ch2+3 |PSB slot15/ch0+1 |PSB slot19/ch6+7 |PSB slot19/ch4+5 |PSB slot19/ch2+3 |PSB slot19/ch0+1 |PSB slot20/ch6+7 |PSB slot20/ch4+5 |PSB slot20/ch2+3 |PSB slot20/ch0+1 |PSB slot21/ch6+7 |PSB slot21/ch4+5 |PSB slot21/ch2+3 |PSB slot21/ch0+1 |GMT INF |GMT INC |GMT IND |GMT INB |GMT SORT |COND1 |COND2 |PSB slot9/ch0+1 |FINOR |
49 # e |ch6 ch7 ch6 ch7 |ch4 ch5 ch4 ch5 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 |ch6 ch7 ch6 ch7 |ch4 ch5 ch4 ch5 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 |ch6 ch7 ch6 ch7 |ch4 ch5 ch4 ch5 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 |ch6 ch7 ch6 ch7 |ch4 ch5 ch4 ch5 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 |ch6 ch7 ch6 ch7 |ch4 ch5 ch4 ch5 |ch2 ch3 ch2 ch3 |ch0 ch1 ch0 ch1 | | | | | | | |ch0 ch1 ch0 ch1 | |
50 # n |GTL9U REC1 |GTL9U REC1 |GTL9U REC2 |GTL9U REC2 |GTL9U REC2 |GTL9U REC2 |GTL9U REC3 |GTL9U REC3 |GTL9U REC3 |GTL9U REC3 |GMT AUF |GMT AUF |GMT AUB |GMT AUB |GMT AUF |GMT AUF |GMT AUB |GMT AUB |GMT AUF |GMT AUF |GMT AUB |GMT AUB | | | | |GTL9U REC1 |FDL ALGO |FDL ALGO |FDL ALGO | |
51 # t |calo1 (ieg) |calo2 (eg) |calo3 (jet) |calo4 (fwdjet) |calo5 (tau) |calo6 (esums) |calo7 (hfbc/etsums)|calo8 (free) |calo9 (totem) |calo10 (free) |MQF4 |MQF3 |MQB2 |MQB1 |MQF8 |MQF7 |MQB6 |MQB5 |MQF12 |MQF11 |MQB10 |MQB9 |RPC forward |CSC |DT |RPC barrel |muon (sorted four) |algo |algo |techtrigger | |
52 # | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 |45M 45Q 6M 6Q |45M 45Q 6M 6Q |01M 01Q 23M 23Q |01M 01Q 23M 23Q |45M 45Q 6M 6Q |45M 45Q 6M 6Q |01M 01Q 23M 23Q |01M 01Q 23M 23Q |45M 45Q 6M 6Q |45M 45Q 6M 6Q |01M 01Q 23M 23Q |01M 01Q 23M 23Q | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 | 1 2 3 4 |191--160 159--128 127---96|95----64 63----32 31-----0|15-0 47-32 31-16 63-48| |
53 # | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
54 # columns: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
55 # 0 | 1 2 3 4 | 5 6 7 8 | 9 10 11 12 | 13 14 15 16 | 17 18 19 20 | 21 22 23 24 | 25 26 27 28 | 29 30 31 32 | 33 34 35 36 | 37 38 39 40 | 41 42 43 44 | 45 46 47 48 | 49 50 51 52 | 53 54 55 56 | 57 58 59 60 | 61 62 63 64 | 65 66 67 68 | 69 70 71 72 | 73 74 75 76 | 77 78 79 80 | 81 82 83 84 | 85 86 87 88 | 89 90 91 92 | 93 94 95 96 | 97 98 99 100 | 101 102 103 104 | 105 106 107 108 | 109 110 111 | 112 113 114 | 115 116 117 118|119 |
59 PatternFileFooter = cms.string(
""),
62 PatternFileColumns = cms.vstring(),
64 PatternFileLengths = cms.vuint32(),
66 PatternFileDefaultValues = cms.vuint32(),
69 DebugOutput = cms.bool(
False)
72 def addBlock(analyzer, name, count, length, default):
73 for i
in range(1,count+1):
74 analyzer.PatternFileColumns.append(
"%s%d" % (name, i))
75 analyzer.PatternFileLengths.append(length)
76 analyzer.PatternFileDefaultValues.append(default)
85 addBlock(analyzer, name, 4, 32, 0x0000ff00)
91 fields = l1GtPatternGenerator.PatternFileColumns
92 lengths = l1GtPatternGenerator.PatternFileLengths
93 defaults = l1GtPatternGenerator.PatternFileDefaultValues
96 for name
in [
"gctIsoEm",
"gctEm",
"cenJet",
"forJet",
"tauJet" ]:
97 addPSB(l1GtPatternGenerator, name)
101 fields += [
"etTotal1",
"etMiss1",
"etHad1",
"etMissPhi1"]
102 lengths += [ 16, 16, 16, 16]
103 defaults += [ 0, 0, 0, 0]
107 fields += [
"hfPsbValue1_l",
"htMiss1",
"hfPsbValue1_h",
"unknown"]
108 lengths += [ 16, 16, 16, 16]
109 defaults += [ 0, 0, 0, 0]
112 addPSB(l1GtPatternGenerator,
"unknown")
115 addPSB(l1GtPatternGenerator,
"unknown")
119 addBlock(l1GtPatternGenerator,
"unknown", 4, 16, 0xffff)
123 addPSB(l1GtPatternGenerator,
"unknown")
135 addBlock(l1GtPatternGenerator,
"gtDecisionExt", 2, 32, 0)
136 addBlock(l1GtPatternGenerator,
"gtDecision", 4, 32, 0)
140 fields += [
"gtTechTrigger1_l",
"gtTechTrigger2_l",
"gtTechTrigger1_h",
"gtTechTrigger2_h"]
141 lengths += [ 16, 16, 16, 16]
142 defaults += [ 0, 0, 0, 0]
144 fields += [
"gtFinalOr"]
149 if len(fields) != 119:
150 raise ValueError(
"Expecting 119 data fields (120 - event number) in pattern file format, got %d!" % len(fields) )