Skip to content

Commit a9682e8

Browse files
authored
Merge pull request #44963 from gpetruc/correlator_gtt_serenity_multiboard_cmsswmaster
[L1T Phase-2] Correlator Layer 1 pattern file producer updates for multi-board tests
2 parents 1a3e7c1 + 28b0041 commit a9682e8

File tree

5 files changed

+189
-71
lines changed

5 files changed

+189
-71
lines changed

L1Trigger/Phase2L1ParticleFlow/interface/L1TCorrelatorLayer1PatternFileWriter.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ class L1TCorrelatorLayer1PatternFileWriter {
3030
const unsigned int tfTmuxFactor_ = 18, tfLinksFactor_ = 1; // numbers not really configurable in current architecture
3131
const unsigned int hgcTmuxFactor_ = 18, hgcLinksFactor_ = 4; // not really configurable in current architecture
3232
const unsigned int gctTmuxFactor_ = 1, gctSectors_ = 3; // not really configurable in current architecture
33-
const unsigned int gctLinksEcal_ = 1, gctLinksHad_ = 2; // could be made configurable later
3433
const unsigned int gmtTmuxFactor_ = 18, gmtLinksFactor_ = 1; // not really configurable in current architecture
3534
const unsigned int gttTmuxFactor_ = 6, gttLinksFactor_ = 1; // not really configurable in current architecture
3635
const unsigned int tfTimeslices_, hgcTimeslices_, gctTimeslices_, gmtTimeslices_, gttTimeslices_;
36+
uint32_t gctLinksEcal_, gctLinksHad_;
37+
bool gctSingleLink_;
3738
uint32_t gmtNumberOfMuons_;
3839
uint32_t gttNumberOfPVs_;
3940
uint32_t gttLatency_;

L1Trigger/Phase2L1ParticleFlow/interface/regionizer/middle_buffer_multififo_regionizer_ref.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ namespace l1ct {
8585

8686
void reset();
8787

88+
static void encode(const l1ct::EmCaloObjEmu& from, l1ct::HadCaloObjEmu& to);
89+
static void encode(const l1ct::HadCaloObjEmu& from, l1ct::HadCaloObjEmu& to);
90+
static void decode(l1ct::HadCaloObjEmu& had, l1ct::EmCaloObjEmu& em);
91+
8892
protected:
8993
const unsigned int NTK_SECTORS, NCALO_SECTORS;
9094
const unsigned int NTK_LINKS, HCAL_LINKS, ECAL_LINKS, NMU_LINKS;
@@ -115,10 +119,6 @@ namespace l1ct {
115119
const std::vector<DetectorSector<l1ct::HadCaloObjEmu>>& had_in,
116120
std::vector<l1ct::HadCaloObjEmu>& links,
117121
std::vector<bool>& valid);
118-
119-
void encode(const l1ct::EmCaloObjEmu& from, l1ct::HadCaloObjEmu& to);
120-
void encode(const l1ct::HadCaloObjEmu& from, l1ct::HadCaloObjEmu& to);
121-
void decode(l1ct::HadCaloObjEmu& had, l1ct::EmCaloObjEmu& em);
122122
};
123123
} // namespace l1ct
124124

L1Trigger/Phase2L1ParticleFlow/python/l1ctLayer1_patternWriters_cff.py

Lines changed: 83 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
maxLinesPerOutputFile = cms.uint32(1024),
2222
eventsPerFile = cms.uint32(_eventsPerFile),
2323
tfTimeSlices = cms.VPSet(),
24+
gctNLinksEcal = cms.uint32(1),
25+
gctNLinksHad = cms.uint32(2),
2426
gctSectors = cms.VPSet(),
2527
gmtTimeSlices = cms.VPSet(),
2628
gmtNumberOfMuons = cms.uint32(12),
@@ -51,7 +53,8 @@
5153
outputFileName = cms.string("l1BarrelPhi1Serenity-outputs")
5254
)
5355
barrelSerenityVU13PPhi1Config = barrelSerenityPhi1Config.clone(
54-
gttLink = cms.int32(4*31+3),
56+
gttLink = cms.int32(4*25+3),
57+
gmtTimeSlices = cms.VPSet(*[cms.PSet(gmtLink = cms.int32(4*18+t)) for t in range(3)]),
5558
inputFileName = cms.string("l1BarrelPhi1Serenity-inputs-vu13p"),
5659
)
5760
for t in range(3):
@@ -65,8 +68,9 @@
6568
for i,s in enumerate([0,1]):
6669
barrelSerenityVU9PPhi1Config.gctSectors[s].gctLinksHad = [3*i+4*18, 3*i+4*18+1]
6770
barrelSerenityVU9PPhi1Config.gctSectors[s].gctLinksEcal = [3*i+4*18+2]
68-
barrelSerenityVU13PPhi1Config.gctSectors[s].gctLinksHad = [3*i+4*18, 3*i+4*18+1]
69-
barrelSerenityVU13PPhi1Config.gctSectors[s].gctLinksEcal = [3*i+4*18+2]
71+
gctLinks = list(range(4*17,4*17+4)) + list(range(4*19,4*19+2))
72+
barrelSerenityVU13PPhi1Config.gctSectors[s].gctLinksHad = [gctLinks[3*i], gctLinks[3*i+1]]
73+
barrelSerenityVU13PPhi1Config.gctSectors[s].gctLinksEcal = [gctLinks[3*i+2]]
7074

7175
barrelWriterConfigs = barrelWriterOutputOnlyPhiConfigs
7276

@@ -115,19 +119,22 @@
115119
hgcalNegVU9PWriterConfig = _hgcalNegWriterConfig.clone()
116120
for t in range(3):
117121
hgcalPosVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1)) for i in range(9) ] # neg
118-
hgcalPosVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*2)) for i in range(4) ] # pos, left quads
119-
hgcalPosVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*25)) for i in range(5) ] # pos, right quads
120-
hgcalNegVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*2)) for i in range(4) ] # neg, left quads
121-
hgcalNegVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*25)) for i in range(5) ] # neg, right quads
122+
hgcalPosVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*1)) for i in range(4) ] # pos, left quads
123+
hgcalPosVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*26)) for i in range(5) ] # pos, right quads
124+
hgcalNegVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*1)) for i in range(4) ] # neg, left quads
125+
hgcalNegVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*26)) for i in range(5) ] # neg, right quads
122126
hgcalNegVU9PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1)) for i in range(9) ] # pos
123-
hgcalPosVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # neg
124-
hgcalPosVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*11+12*i+4*t+j for j in range(4)])) for i in range(3) ] # pos
125-
hgcalNegVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*11+12*i+4*t+j for j in range(4)])) for i in range(3) ] # neg
126-
hgcalNegVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # pos
127-
hgcalPosVU9PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4+t)
128-
hgcalNegVU9PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4+t)
129-
hgcalPosVU9PWriterConfig.gttLink = 4+3
130-
hgcalNegVU9PWriterConfig.gttLink = 4+3
127+
hgcQuads = [list(range(4*i,4*i+4)) for i in [10,11,12,13]]
128+
hgcQuads += [[4*14+1,4*14+2,4*14+3,4*15+3]] # mixed quad
129+
hgcQuads += [list(range(4*i,4*i+4)) for i in [16,17,18,19]]
130+
hgcalPosVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # neg
131+
hgcalPosVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*hgcQuads[3*i+t])) for i in range(3) ] # pos
132+
hgcalNegVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*hgcQuads[3*i+t])) for i in range(3) ] # neg
133+
hgcalNegVU9PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # pos
134+
hgcalPosVU9PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*15+((t+2)%3))
135+
hgcalNegVU9PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*15+((t+2)%3))
136+
hgcalPosVU9PWriterConfig.gttLink = 4*14+0
137+
hgcalNegVU9PWriterConfig.gttLink = 4*14+0
131138
hgcalPosVU9PWriterConfig.inputFileName = cms.string("l1HGCalPos-inputs-vu9p")
132139
hgcalNegVU9PWriterConfig.inputFileName = cms.string("l1HGCalNeg-inputs-vu9p")
133140
## Current configurations for VU13P
@@ -140,15 +147,15 @@
140147
hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*0)) for i in range(5) ] # neg, left quads
141148
hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*28)) for i in range(4) ] # neg, right quads
142149
hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1)) for i in range(9) ] # pos
150+
hgcQuads = [list(range(4*i,4*i+4)) for i in [12,13,14, 16,17, 19,20,21,22]]
143151
hgcalPosVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # neg
144-
for isec,q0 in (0,12),(1,17),(2,20):
145-
hgcalPosVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ] # pos
146-
hgcalNegVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ] # neg
152+
hgcalPosVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*hgcQuads[3*i+t])) for i in range(3) ] # pos
153+
hgcalNegVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*hgcQuads[3*i+t])) for i in range(3) ] # neg
147154
hgcalNegVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # pos
148-
hgcalPosVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*27+t)
149-
hgcalNegVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*27+t)
150-
hgcalPosVU13PWriterConfig.gttLink = 4*27+3
151-
hgcalNegVU13PWriterConfig.gttLink = 4*27+3
155+
hgcalPosVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*18+t)
156+
hgcalNegVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*18+t)
157+
hgcalPosVU13PWriterConfig.gttLink = 4*25+3
158+
hgcalNegVU13PWriterConfig.gttLink = 4*25+3
152159
hgcalPosVU13PWriterConfig.inputFileName = cms.string("l1HGCalPos-inputs-vu13p")
153160
hgcalNegVU13PWriterConfig.inputFileName = cms.string("l1HGCalNeg-inputs-vu13p")
154161

@@ -190,8 +197,8 @@
190197
hgcalNoTKVU13PWriterConfig = _hgcalNoTKWriterConfig.clone()
191198
for t in range(3):
192199
for isec in range(6):
193-
q0 = 3*isec + 6
194-
hgcalNoTKVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ] # pos
200+
q0 = 3*isec + (6 if isec < 3 else 8)
201+
hgcalNoTKVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ]
195202
hgcalNoTKVU13PWriterConfig.inputFileName = cms.string("l1HGCalNoTK-inputs-vu13p") # vu9p uses the same cabling for now
196203

197204
hgcalNoTKWriterConfigs = [
@@ -200,7 +207,42 @@
200207
]
201208

202209
#####################################################################################################################
203-
## HGCal TM18 configuration
210+
## TM18 configuration
211+
_barrelSerenityTM18 = _barrelWriterOutputOnly.clone(
212+
tmuxFactor = cms.uint32(18),
213+
tfTimeSlices = None,
214+
tfSectors = cms.VPSet(*[cms.PSet(tfLink = cms.int32(-1)) for i in range(18)]),
215+
gmtTimeSlices = None,
216+
gmtLink = cms.int32(4*18+0),
217+
gttLink = 4*28+3,
218+
eventsPerFile = 4,
219+
)
220+
barrelSerenityOutputTM18WriterConfig = _barrelSerenityTM18.clone(
221+
outputRegions = cms.vuint32(*range(54)),
222+
outputBoard = cms.int32(0),
223+
outputFileName = cms.string("l1BarrelSerenityTM18-outputs")
224+
)
225+
barrelSerenityVU13PTM18WriterConfig = _barrelSerenityTM18.clone(
226+
inputFileName = cms.string("l1BarrelSerenityTM18-inputs-vu13p"),
227+
gttLatency = cms.uint32(167), # shorter, to fit 6 events in 1024 lines
228+
maxLinesPerInputFile = cms.uint32(1024+167), # anything beyond 986 will be nulls
229+
gctNLinksEcal = 1,
230+
gctNLinksHad = 1,
231+
gctSectors = cms.VPSet(*[cms.PSet(
232+
gctLinksHad = cms.vint32(4*18+1+s),
233+
gctLinksEcal = cms.vint32(4*18+1+s),
234+
) for s in range(3)]),
235+
)
236+
for ie in range(2):
237+
for iphi in range(9):
238+
isec = 9*ie+iphi
239+
barrelSerenityVU13PTM18WriterConfig.tfSectors[isec].tfLink = (isec if isec < 12 else (4*30+(isec-12)))
240+
241+
barrelSerenityTM18WriterConfigs = [
242+
barrelSerenityOutputTM18WriterConfig,
243+
barrelSerenityVU13PTM18WriterConfig
244+
]
245+
204246
_hgcalWriterTM18 = _hgcalWriterConfig.clone(
205247
tmuxFactor = cms.uint32(18),
206248
tfTimeSlices = None,
@@ -210,7 +252,7 @@
210252
gmtTimeSlices = None,
211253
gmtLink = cms.int32(4*27+0),
212254
gttLink = 4*27+3,
213-
eventsPerFile = 6,
255+
eventsPerFile = 4,
214256
)
215257
hgcalWriterOutputTM18WriterConfig = _hgcalWriterTM18.clone(
216258
outputFileName = cms.string("l1HGCalTM18-outputs"),
@@ -222,19 +264,31 @@
222264
inputFileName = cms.string("l1HGCalTM18-inputs-vu9p"),
223265
gttLatency = cms.uint32(167), # shorter, to fit 6 events in 1024 lines
224266
maxLinesPerInputFile = cms.uint32(1024+167), # anything beyond 986 will be nulls
267+
gmtLink = 4*15+2,
268+
gttLink = 0,
225269
)
226270
hgcalWriterVU13PTM18WriterConfig = hgcalWriterVU9PTM18WriterConfig.clone(
227271
inputFileName = cms.string("l1HGCalTM18-inputs-vu13p"),
272+
gmtLink = 4*18+0,
273+
gttLink = 4*28+3,
228274
)
229275
for ie in range(2):
230276
for iphi in range(9):
231277
isec, ilink = 9*ie+iphi, 2*iphi+ie
232-
hgcalWriterVU9PTM18WriterConfig.tfSectors[isec].tfLink = (ilink if ilink < 12 else (4*28+(ilink-12)))
278+
hgcalWriterVU9PTM18WriterConfig.tfSectors[isec].tfLink = (ilink+2 if ilink < 10 else (4*28+(ilink-10)))
233279
hgcalWriterVU13PTM18WriterConfig.tfSectors[isec].tfLink = (ilink if ilink < 12 else (4*30+(ilink-12)))
234280
for iphi in range(3):
235281
isec, ilink = 3*ie+iphi, 2*iphi+ie
236-
hgcalWriterVU9PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(12+ilink),4*(12+ilink)+4)
237-
hgcalWriterVU13PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(13+ilink),4*(13+ilink)+4)
282+
if ilink < 2:
283+
hgcalWriterVU9PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(12+ilink),4*(12+ilink)+4)
284+
else:
285+
hgcalWriterVU9PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(14+ilink),4*(14+ilink)+4)
286+
if ilink < 3:
287+
hgcalWriterVU13PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(12+ilink),4*(12+ilink)+4)
288+
elif ilink < 5:
289+
hgcalWriterVU13PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(13+ilink),4*(13+ilink)+4)
290+
else:
291+
hgcalWriterVU13PTM18WriterConfig.hgcSectors[isec].hgcLinks += range(4*(14+ilink),4*(14+ilink)+4)
238292

239293
hgcalTM18WriterConfigs = [
240294
hgcalWriterOutputTM18WriterConfig,

0 commit comments

Comments
 (0)