File indexing completed on 2024-04-06 12:20:02
0001 import FWCore.ParameterSet.Config as cms
0002
0003
0004 l1GtPatternGenerator = cms.EDAnalyzer("L1GtPatternGenerator",
0005
0006 GtInputTag = cms.InputTag("gtDigis"),
0007 GmtInputTag = cms.InputTag("gmtDigis"),
0008 GctInputTag = cms.InputTag("gctDigis"),
0009 CscInputTag = cms.InputTag("gtDigis", "CSC"),
0010 DtInputTag = cms.InputTag("gtDigis", "DT"),
0011 RpcbInputTag = cms.InputTag("gtDigis", "RPCb"),
0012 RpcfInputTag = cms.InputTag("gtDigis", "RPCf"),
0013
0014
0015 PatternFileName = cms.string("GT_GMT_patterns.txt"),
0016
0017
0018 bx = cms.vint32(0),
0019
0020
0021 PatternFileHeader = cms.string(
0022 """#GT_GMT_patterns_VD
0023 #
0024 # editors - HB 220606
0025 #
0026 # remarks:
0027 # values in this template are for version VD (same as VB) for the cond-chips of GTL9U (from IVAN)
0028 #
0029 # syntax:
0030 # character "#" indicates a comment line
0031 # header line 1 => hardware of sim- and spy-memories
0032 # header line 2 => hardware location (FPGA-chip) of sim-memories
0033 # header line 3 => channel number of sim-memories (PSB)
0034 # header line 4 => hardware location (FPGA-chip) of spy-memories
0035 # header line 5 => name of patterns
0036 # header line 6 => number of objects (calos, muons) or other declarations
0037 # (header line 7 => only graphics)
0038 # (header line 8 => only text and graphics)
0039 # header line 9 => number of columns, starting with 0
0040 #
0041 # patterns:
0042 # values in column 0 are event numbers (decimal), starting with 0 (synchronisation data)
0043 # patterns for 1024 events (memories of cond-chips on GTL9U can contain only 1024 events) are in this file
0044 # values in columns 1-119 are the hexadecimal patterns, the rightmost digit in a string is LSB
0045 #
0046 # header:
0047 # e |<--------------------------------------------------------------------------PSB/GTL9U(REC)------------------------------------------------------------------------------------------------------------->|<--------------------------------------------------------------------------PSB/GMT(AUF,AUB)--------------------------------------------------------------------------------------------------------------------------------------------------->|<----------------------------------------------------------------GMT REGIONAL MUONs----------------------------------------------------------->|<----GMT(SORT)/GTL9U(REC)----->|<--------------GTL9U(COND)/FDL(ALGO)---------------->|<-----------FDL----------->|
0048 # 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 |
0049 # 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 | |
0050 # 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 | |
0051 # 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 | |
0052 # | 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| |
0053 # | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
0054 # columns: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
0055 # 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 |
0056 """),
0057
0058
0059 PatternFileFooter = cms.string(""),
0060
0061
0062 PatternFileColumns = cms.vstring(),
0063
0064 PatternFileLengths = cms.vuint32(),
0065
0066 PatternFileDefaultValues = cms.vuint32(),
0067
0068
0069 DebugOutput = cms.bool(False)
0070 )
0071
0072 def addBlock(analyzer, name, count, length, default):
0073 for i in range(1,count+1):
0074 analyzer.PatternFileColumns.append("%s%d" % (name, i))
0075 analyzer.PatternFileLengths.append(length)
0076 analyzer.PatternFileDefaultValues.append(default)
0077
0078 def addPSB(analyzer, name):
0079 addBlock(analyzer, name, 4, 16, 0)
0080
0081
0082 def addRegionalMuons(analyzer, name):
0083
0084
0085 addBlock(analyzer, name, 4, 32, 0x0000ff00)
0086
0087 def addGMTMuons(analyzer, name):
0088 addBlock(analyzer, name, 4, 26, 0)
0089
0090
0091 fields = l1GtPatternGenerator.PatternFileColumns
0092 lengths = l1GtPatternGenerator.PatternFileLengths
0093 defaults = l1GtPatternGenerator.PatternFileDefaultValues
0094
0095
0096 for name in [ "gctIsoEm", "gctEm", "cenJet", "forJet", "tauJet" ]:
0097 addPSB(l1GtPatternGenerator, name)
0098
0099
0100
0101 fields += ["etTotal1", "etMiss1", "etHad1", "etMissPhi1"]
0102 lengths += [ 16, 16, 16, 16]
0103 defaults += [ 0, 0, 0, 0]
0104
0105
0106
0107 fields += [ "hfPsbValue1_l", "htMiss1", "hfPsbValue1_h", "unknown"]
0108 lengths += [ 16, 16, 16, 16]
0109 defaults += [ 0, 0, 0, 0]
0110
0111
0112 addPSB(l1GtPatternGenerator, "unknown")
0113
0114
0115 addPSB(l1GtPatternGenerator, "unknown")
0116
0117
0118
0119 addBlock(l1GtPatternGenerator, "unknown", 4, 16, 0xffff)
0120
0121
0122 for i in range(12):
0123 addPSB(l1GtPatternGenerator, "unknown")
0124
0125
0126 addRegionalMuons(l1GtPatternGenerator, "fwdMuon")
0127 addRegionalMuons(l1GtPatternGenerator, "cscMuon")
0128 addRegionalMuons(l1GtPatternGenerator, "dtMuon")
0129 addRegionalMuons(l1GtPatternGenerator, "brlMuon")
0130
0131
0132 addGMTMuons(l1GtPatternGenerator, "gmtMuon")
0133
0134
0135 addBlock(l1GtPatternGenerator, "gtDecisionExt", 2, 32, 0)
0136 addBlock(l1GtPatternGenerator, "gtDecision", 4, 32, 0)
0137
0138
0139
0140 fields += ["gtTechTrigger1_l", "gtTechTrigger2_l", "gtTechTrigger1_h", "gtTechTrigger2_h"]
0141 lengths += [ 16, 16, 16, 16]
0142 defaults += [ 0, 0, 0, 0]
0143
0144 fields += ["gtFinalOr"]
0145 lengths += [ 9]
0146 defaults += [ 0]
0147
0148
0149 if len(fields) != 119:
0150 raise ValueError("Expecting 119 data fields (120 - event number) in pattern file format, got %d!" % len(fields) )
0151
0152
0153
0154
0155