Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-05-05 02:47:53

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 eventsPerFile_ = 12
0004 gttLatency_ = 156+120
0005 gttNumberOfPVs_ = 10
0006 
0007 #####################################################################################################################
0008 ## Barrel configurations: 54 regions, 6 puppi output links, only write out the layer 1 outputs for now
0009 barrelWriterOutputOnly_ = cms.PSet(
0010     partition = cms.string("Barrel"),
0011     outputLinksPuppi = cms.vuint32(*range(6)),
0012     outputLinkEgamma = cms.int32(6),
0013     nEgammaObjectsOut = cms.uint32(16),
0014     nOutputFramesPerBX = cms.uint32(9),
0015     fileFormat = cms.string("EMP"),
0016     maxLinesPerOutputFile = cms.uint32(1024),
0017     eventsPerFile = cms.uint32(eventsPerFile_),
0018 )
0019 ## Barrel (54) split in 3 eta slices
0020 barrelWriterOutputOnlyEtaConfigs = [
0021     barrelWriterOutputOnly_.clone(
0022         outputRegions = cms.vuint32(*[18*ie+i for i in range(18)]),
0023         outputFileName = cms.string("l1BarrelEta%d-outputs-ideal" % (ie+1)),
0024         outputBoard      = cms.int32(-1), ## can't output e/gamma in eta split regions
0025         outputLinkEgamma = cms.int32(-1), ## since the boards are defined in phi regions
0026     ) for ie in range(3)
0027 ]
0028 ## Barrel (54) split in 3 phi slices
0029 barrelWriterOutputOnlyPhiConfigs = [
0030     barrelWriterOutputOnly_.clone(
0031         outputRegions = cms.vuint32(*[3*ip+9*ie+i for ie in range(6) for i in range(3) ]),
0032         outputBoard = cms.int32(ip),
0033         outputFileName = cms.string("l1BarrelPhi%d-outputs-ideal" % (ip+1))
0034     ) for ip in range(3)
0035 ]
0036 ## Barrel9 (27) split in phi eta slices
0037 barrel9WriterOutputOnlyPhiConfigs = [
0038     barrelWriterOutputOnly_.clone(
0039         outputRegions = cms.vuint32(*[3*ip+9*ie+i for ie in range(3) for i in range(3) ]),
0040         outputBoard = cms.int32(ip),
0041         outputFileName = cms.string("l1Barrel9Phi%d-outputs-ideal" % (ip+1))
0042     ) for ip in range(3)
0043 ]
0044 
0045 barrelWriterConfigs =  barrelWriterOutputOnlyPhiConfigs # + barrelWriterOutputOnlyEtaConfigs  
0046 barrel9WriterConfigs = [] #barrel9WriterOutputOnlyPhiConfigs 
0047 
0048 
0049 #####################################################################################################################
0050 ## HGcal configuration: write out both inputs and outputs
0051 hgcalWriterConfig_ = cms.PSet(
0052     partition = cms.string("HGCal"),
0053     outputRegions = cms.vuint32(*[i+9 for i in range(9)]),
0054     outputBoard = cms.int32(1),
0055     nEgammaObjectsOut = cms.uint32(16),
0056     nInputFramesPerBX = cms.uint32(9),
0057     nOutputFramesPerBX = cms.uint32(9),
0058     fileFormat = cms.string("EMP"),
0059     maxLinesPerInputFile = cms.uint32(1024),
0060     maxLinesPerOutputFile = cms.uint32(1024),
0061     eventsPerFile = cms.uint32(eventsPerFile_),
0062     tfTimeSlices = cms.VPSet(*[cms.PSet(tfSectors = cms.VPSet()) for i in range(3)]),
0063     hgcTimeSlices = cms.VPSet(*[cms.PSet(hgcSectors = cms.VPSet()) for i in range(3)]),
0064     gmtTimeSlices = cms.VPSet(cms.PSet(),cms.PSet(),cms.PSet()),
0065     gmtNumberOfMuons = cms.uint32(12),
0066     gttLink = cms.int32(-1),
0067     gttLatency = cms.uint32(gttLatency_),
0068     gttNumberOfPVs = cms.uint32(gttNumberOfPVs_) 
0069 )
0070 ## Ideal configuration: 27 input links from tf, 36 from hgc, 3 from gmt, 1 from gtt, in this order; output 3 puppi + 1 e/gamma
0071 hgcalPosIdealWriterConfig = hgcalWriterConfig_.clone()
0072 for t in range(3):
0073     hgcalPosIdealWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1))    for i in range(9) ] # neg
0074     hgcalPosIdealWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t)) for i in range(9) ] # pos
0075     hgcalPosIdealWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1))                        for i in range(3) ] # neg
0076     hgcalPosIdealWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[27+12*i+4*t+j for j in range(4)])) for i in range(3) ] # pos
0077     hgcalPosIdealWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(27+36+t)
0078 hgcalPosIdealWriterConfig.gttLink = 27+36+3
0079 hgcalPosIdealWriterConfig.outputLinksPuppi = cms.vuint32(0,1,2)
0080 hgcalPosIdealWriterConfig.outputLinkEgamma = cms.int32(5)
0081 hgcalPosIdealWriterConfig.inputFileName = cms.string("l1HGCalPos-inputs-ideal") 
0082 hgcalPosIdealWriterConfig.outputFileName = cms.string("l1HGCalPos-outputs-ideal")
0083 hgcalNegIdealWriterConfig = hgcalPosIdealWriterConfig.clone(
0084     inputFileName = "",
0085     outputFileName = "l1HGCalNeg-outputs-ideal",
0086     outputRegions = [i for i in range(9)],
0087     outputBoard = 0,
0088 )
0089 ## Current configuration for VU9P at B904 for layer1 - layer2 tests with puppi and e/gamma outputs on links 56-59
0090 hgcalPosVU9PB904egWriterConfig = hgcalWriterConfig_.clone()
0091 for t in range(3):
0092     hgcalPosVU9PB904egWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1))    for i in range(9) ] # neg
0093     hgcalPosVU9PB904egWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*2)) for i in range(4) ] # pos, left quads
0094     hgcalPosVU9PB904egWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*25)) for i in range(5) ] # pos, right quads
0095     hgcalPosVU9PB904egWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1))                        for i in range(3) ] # neg
0096     hgcalPosVU9PB904egWriterConfig.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
0097     hgcalPosVU9PB904egWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4+t)
0098 hgcalPosVU9PB904egWriterConfig.gttLink = 4+3
0099 hgcalPosVU9PB904egWriterConfig.outputLinksPuppi = cms.vuint32(56,57,58)
0100 hgcalPosVU9PB904egWriterConfig.outputLinkEgamma = cms.int32(59)
0101 hgcalPosVU9PB904egWriterConfig.inputFileName = cms.string("l1HGCalPos-inputs-vu9p_B904eg") 
0102 hgcalPosVU9PB904egWriterConfig.outputFileName = cms.string("l1HGCalPos-outputs-vu9p_B904eg")
0103 ## Current configuration for VU13P 
0104 hgcalPosVU13PWriterConfig = hgcalWriterConfig_.clone()
0105 for t in range(3):
0106     hgcalPosVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1))    for i in range(9) ] # neg
0107     hgcalPosVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*0)) for i in range(5) ] # pos, left quads
0108     hgcalPosVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*28)) for i in range(4) ] # pos, right quads
0109     hgcalPosVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # neg
0110     for isec,q0 in (0,12),(1,17),(2,20):
0111         hgcalPosVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ] # pos
0112     hgcalPosVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*27+t)
0113 hgcalPosVU13PWriterConfig.gttLink = 4*27+3
0114 hgcalPosVU13PWriterConfig.outputLinksPuppi = cms.vuint32(0,1,2)
0115 hgcalPosVU13PWriterConfig.outputLinkEgamma = cms.int32(3)
0116 hgcalPosVU13PWriterConfig.inputFileName = cms.string("l1HGCalPos-inputs-vu13p") 
0117 hgcalPosVU13PWriterConfig.outputFileName = cms.string("l1HGCalPos-outputs-vu13p")
0118 hgcalNegVU13PWriterConfig = hgcalWriterConfig_.clone()
0119 for t in range(3):
0120     hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*0)) for i in range(5) ] # neg, left quads
0121     hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(3*i+t+4*28)) for i in range(4) ] # neg, right quads
0122     hgcalNegVU13PWriterConfig.tfTimeSlices[t].tfSectors += [ cms.PSet(tfLink = cms.int32(-1))    for i in range(9) ] # pos
0123     for isec,q0 in (0,12),(1,17),(2,20):
0124         hgcalNegVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(*[4*q0+4*t+j for j in range(4)])) ] # neg
0125     hgcalNegVU13PWriterConfig.hgcTimeSlices[t].hgcSectors += [ cms.PSet(hgcLinks = cms.vint32(-1,-1,-1,-1)) for i in range(3) ] # pos
0126     hgcalNegVU13PWriterConfig.gmtTimeSlices[t].gmtLink = cms.int32(4*27+t)
0127 hgcalNegVU13PWriterConfig.gttLink = 4*27+3
0128 hgcalNegVU13PWriterConfig.outputLinksPuppi = cms.vuint32(0,1,2)
0129 hgcalNegVU13PWriterConfig.outputLinkEgamma = cms.int32(3)
0130 hgcalNegVU13PWriterConfig.inputFileName = cms.string("l1HGCalNeg-inputs-vu13p") 
0131 hgcalNegVU13PWriterConfig.outputFileName = cms.string("l1HGCalNeg-outputs-vu13p")
0132 
0133 ## Enable both
0134 
0135 hgcalWriterConfigs = [ 
0136     hgcalPosIdealWriterConfig, 
0137     hgcalNegIdealWriterConfig, 
0138     hgcalPosVU9PB904egWriterConfig,
0139     hgcalPosVU13PWriterConfig,
0140     hgcalNegVU13PWriterConfig
0141 ]
0142 
0143 #####################################################################################################################
0144 ## Forward HGCal configuration: only outputs for now, 18 regions, 12 candidates x region, 4 output fibers
0145 hgcalNoTKWriterOutputOnlyConfig = cms.PSet(
0146     partition = cms.string("HGCalNoTk"),
0147     outputRegions = cms.vuint32(*range(18)),
0148     nOutputFramesPerBX = cms.uint32(9),
0149     fileFormat = cms.string("EMP"),
0150     maxLinesPerOutputFile = cms.uint32(1024),
0151     eventsPerFile = cms.uint32(eventsPerFile_),
0152     outputLinksPuppi = cms.vuint32(0,1,2,4),
0153     outputFileName = cms.string("l1HGCalNoTk-outputs-ideal")
0154 )
0155 
0156 hgcalNoTKWriterConfigs = [ 
0157     hgcalNoTKWriterOutputOnlyConfig
0158 ]
0159 
0160 #####################################################################################################################
0161 ## HF configuration: not enabled for the moment
0162 #####################################################################################################################
0163 ## HF configuration not realistic, 3 links per endcap, write out the layer 1 outputs for now
0164 hfWriterOutputOnly_ = cms.PSet(
0165     partition = cms.string("HF"),
0166     outputLinksPuppi = cms.vuint32(*range(3)),
0167     nOutputFramesPerBX = cms.uint32(9),
0168     fileFormat = cms.string("EMP"),
0169     maxLinesPerOutputFile = cms.uint32(1024),
0170     eventsPerFile = cms.uint32(eventsPerFile_),
0171 )
0172 hfWriterConfigs = [
0173     hfWriterOutputOnly_.clone(
0174         outputRegions = cms.vuint32(*[9*ie+i for i in range(9)]),
0175         outputFileName = cms.string("l1HF%s-outputs-ideal" % ("Pos" if ie else "Neg")),
0176     ) for ie in range(2)
0177 ]
0178 
0179