Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-20 01:53:34

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 import math
0004 
0005 from L1Trigger.Phase2L1ParticleFlow.l1tPFTracksFromL1Tracks_cfi import l1tPFTracksFromL1Tracks, l1tPFTracksFromL1TracksExtended
0006 from L1Trigger.Phase2L1ParticleFlow.l1tPFClustersFromL1EGClusters_cfi import l1tPFClustersFromL1EGClusters
0007 from L1Trigger.Phase2L1ParticleFlow.pfClustersFromCombinedCalo_cff import l1tPFClustersFromCombinedCaloHCal, l1tPFClustersFromCombinedCaloHF
0008 
0009 from L1Trigger.Phase2L1ParticleFlow.l1TkEgAlgoEmulator_cfi import tkEgAlgoParameters,tkEgSorterParameters
0010 
0011 from L1Trigger.Phase2L1ParticleFlow.mlAssociation_cfi import NNVtxAssociationPSet
0012 switchOnNNAssoc = cms.bool(False)
0013 
0014 l1tLayer1Barrel = cms.EDProducer("L1TCorrelatorLayer1Producer",
0015     tracks = cms.InputTag('l1tPFTracksFromL1Tracks'),
0016     muons = cms.InputTag('l1tSAMuonsGmt','prompt'),
0017     emClusters = cms.InputTag('l1tPhase2GCTBarrelToCorrelatorLayer1Emulator', 'GCTEmDigiClusters'),
0018     hadClusters = cms.InputTag('l1tPFClustersFromCombinedCaloHCal:calibrated'),
0019     # hadClusters = cms.InputTag('l1tPhase2GCTBarrelToCorrelatorLayer1Emulator', 'GCTHadDigiClusters'),
0020     vtxCollection = cms.InputTag("l1tVertexFinderEmulator","L1VerticesEmulation"),
0021     nVtx = cms.int32(1),
0022     emPtCut = cms.double(0.5),
0023     hadPtCut = cms.double(1.0),
0024     trkPtCut = cms.double(2.0),
0025     trackInputConversionAlgo = cms.string("Emulator"),
0026     trackInputConversionParameters = cms.PSet(
0027         region = cms.string("barrel"),
0028         slimDataFormat = cms.bool(True),
0029         ptLUTBits = cms.uint32(11),
0030         etaLUTBits = cms.uint32(10),
0031         etaShift = cms.uint32(15-10),
0032         phiBits = cms.uint32(10),
0033         z0Bits = cms.uint32(12),
0034         dEtaBarrelBits = cms.uint32(8),
0035         dEtaBarrelZ0PreShift = cms.uint32(2),
0036         dEtaBarrelZ0PostShift = cms.uint32(2),
0037         dPhiBarrelBits = cms.uint32(4),
0038         dPhiBarrelRInvPreShift = cms.uint32(4),
0039         dPhiBarrelRInvPostShift = cms.uint32(4),
0040         ),
0041     muonInputConversionAlgo = cms.string("Emulator"),
0042     gctEmInputConversionAlgo = cms.string("Emulator"),
0043     gctEmInputConversionParameters = cms.PSet(
0044         # gctEmCorrector = cms.string("L1Trigger/Phase2L1ParticleFlow/data/emcorr_barrel.root"),
0045         gctEmCorrector = cms.string(""),
0046         gctEmResol = cms.PSet(
0047             etaBins = cms.vdouble( 0.700,  1.200,  1.600),
0048             offset  = cms.vdouble( 0.873,  1.081,  1.563),
0049             scale   = cms.vdouble( 0.011,  0.015,  0.012),
0050             kind    = cms.string('calo'),
0051         ),
0052     ),
0053     gctHadInputConversionAlgo = cms.string("Ideal"),
0054     regionizerAlgo = cms.string("Ideal"),
0055     pfAlgo = cms.string("PFAlgo3"),
0056     pfAlgoParameters = cms.PSet(
0057         nTrack = cms.uint32(25),
0058         nCalo = cms.uint32(18),
0059         nMu = cms.uint32(2),
0060         nSelCalo = cms.uint32(18),
0061         nEmCalo = cms.uint32(12),
0062         nPhoton = cms.uint32(12),
0063         nAllNeutral = cms.uint32(25),
0064         trackMuDR    = cms.double(0.2), # accounts for poor resolution of standalone, and missing propagations
0065         trackEmDR   = cms.double(0.04), # 1 Ecal crystal size is 0.02, and ~2 cm in HGCal is ~0.007
0066         emCaloDR    = cms.double(0.10),    # 1 Hcal tower size is ~0.09
0067         trackCaloDR = cms.double(0.15),
0068         maxInvisiblePt = cms.double(10.0), # max allowed pt of a track with no calo energy
0069         tightTrackMaxInvisiblePt = cms.double(20),
0070         caloResolution = cms.PSet(
0071             etaBins = cms.vdouble( 0.700,  1.200,  1.600),
0072             offset  = cms.vdouble( 2.909,  2.864,  0.294),
0073             scale   = cms.vdouble( 0.119,  0.127,  0.442),
0074         ),
0075     ),
0076     puAlgo = cms.string("LinearizedPuppi"),
0077     puAlgoParameters = cms.PSet(
0078         nTrack = cms.uint32(22),
0079         nIn = cms.uint32(25),
0080         nOut = cms.uint32(25),
0081         nVtx = cms.uint32(1),
0082         nFinalSort = cms.uint32(18),
0083         finalSortAlgo = cms.string("Insertion"),
0084         dZ     = cms.double(0.5),
0085         dr     = cms.double(0.3),
0086         drMin  = cms.double(0.07),
0087         ptMax  = cms.double(50.),
0088         absEtaCuts         = cms.vdouble( ), # just one bin, so no edge needd
0089         ptCut             = cms.vdouble( 1.0 ),
0090         ptSlopes           = cms.vdouble( 0.3 ), # coefficient for pT
0091         ptSlopesPhoton    = cms.vdouble( 0.3 ),
0092         ptZeros            = cms.vdouble( 4.0 ), # ballpark pT from PU
0093         ptZerosPhoton     = cms.vdouble( 2.5 ),
0094         alphaSlopes        = cms.vdouble( 0.7 ), # coefficient for alpha
0095         alphaZeros         = cms.vdouble( 6.0 ), # ballpark alpha from PU
0096         alphaCrop         = cms.vdouble(  4  ), # max. absolute value for alpha term
0097         priors             = cms.vdouble( 5.0 ),
0098         priorsPhoton      = cms.vdouble( 1.0 ),
0099         useMLAssociation = switchOnNNAssoc, #Enable Association Network
0100         NNVtxAssociation = NNVtxAssociationPSet,
0101     ),
0102     tkEgAlgoParameters = tkEgAlgoParameters.clone(
0103         nTRACK = 25,
0104         nTRACK_EGIN = 13,
0105         nEMCALO_EGIN = 10,
0106         nEM_EGOUT = 10,
0107         algorithm = 4,
0108         trkQualityPtMin = 0.,
0109     ),
0110     tkEgSorterAlgo = cms.string("Barrel"),
0111     tkEgSorterParameters = tkEgSorterParameters.clone(
0112         nObjToSort = 10
0113     ),
0114     caloSectors = cms.VPSet(   # for Ideal regionizer only--don't include the duplicates
0115         cms.PSet(
0116             etaBoundaries = cms.vdouble(-1.5, 0, 1.5),
0117             phiSlices     = cms.uint32(3),
0118             phiZero       = cms.double(math.pi/18)
0119         )
0120     ),
0121     regions = cms.VPSet(
0122         cms.PSet(
0123             etaBoundaries = cms.vdouble(-1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5),
0124             phiSlices     = cms.uint32(9),
0125         ),
0126     ),
0127     boards = cms.VPSet(
0128         cms.PSet(
0129               regions = cms.vuint32(*[0+9*ie+i for ie in range(6) for i in range(3)])), # phi splitting
0130         cms.PSet(
0131               regions = cms.vuint32(*[3+9*ie+i for ie in range(6) for i in range(3)])), # phi splitting
0132         cms.PSet(
0133               regions = cms.vuint32(*[6+9*ie+i for ie in range(6) for i in range(3)])), # phi splitting
0134     ),
0135 )
0136 
0137 l1tLayer1BarrelExtended = l1tLayer1Barrel.clone(tracks = cms.InputTag('l1tPFTracksFromL1TracksExtended'))
0138 
0139 _hgcalSectors = cms.VPSet(
0140     cms.PSet(
0141         etaBoundaries = cms.vdouble(-3.0, -1.5),
0142         phiSlices     = cms.uint32(3),
0143         phiZero       = cms.double(math.pi/2) # The edge of the 0th HGCal sectors is at 30 deg, the center at 30+120/2 = 90 = pi/2
0144     ),
0145     cms.PSet(
0146         etaBoundaries = cms.vdouble(+1.5, +3.0),
0147         phiSlices     = cms.uint32(3),
0148         phiZero       = cms.double(math.pi/2) # As above
0149     )
0150 
0151 )
0152 
0153 l1tLayer1HGCal = cms.EDProducer("L1TCorrelatorLayer1Producer",
0154     tracks = cms.InputTag('l1tPFTracksFromL1Tracks'),
0155     muons = cms.InputTag('l1tSAMuonsGmt','prompt'),
0156     emClusters = cms.InputTag(""), # the em clusters are "intercepted" from the had ones in the regionizer
0157     hadClusters = cms.InputTag("l1tHGCalBackEndLayer2Producer","HGCalBackendLayer2Processor3DClustering"),
0158     vtxCollection = cms.InputTag("l1tVertexFinderEmulator","L1VerticesEmulation"),
0159     nVtx = cms.int32(1),
0160     emPtCut = cms.double(0.5),
0161     hadPtCut = cms.double(1.0),
0162     trkPtCut = cms.double(2.0),
0163     trackInputConversionAlgo = cms.string("Emulator"),
0164     trackInputConversionParameters = cms.PSet(
0165         region = cms.string("endcap"),
0166         slimDataFormat = cms.bool(False),
0167         ptLUTBits = cms.uint32(11),
0168         etaLUTBits = cms.uint32(11),
0169         etaShift = cms.uint32(15-11),
0170         etaPostOffs = cms.int32(150),
0171         phiBits = cms.uint32(10),
0172         z0Bits = cms.uint32(12),
0173         dEtaHGCalBits = cms.uint32(10),
0174         dEtaHGCalZ0PreShift = cms.uint32(2),
0175         dEtaHGCalRInvPreShift = cms.uint32(6),
0176         dEtaHGCalLUTBits = cms.uint32(10),
0177         dEtaHGCalLUTShift = cms.uint32(2),
0178         dPhiHGCalBits = cms.uint32(4),
0179         dPhiHGCalZ0PreShift = cms.uint32(4),
0180         dPhiHGCalZ0PostShift = cms.uint32(6),
0181         dPhiHGCalRInvShift = cms.uint32(4),
0182         dPhiHGCalTanlInvShift = cms.uint32(22),
0183         dPhiHGCalTanlLUTBits = cms.uint32(10),
0184         ),
0185     muonInputConversionAlgo = cms.string("Emulator"),
0186     hgcalInputConversionAlgo = cms.string("Emulator"),
0187     hgcalInputConversionParameters = cms.PSet(
0188         slim = cms.bool(False),
0189         multiclass_id = cms.PSet(
0190             model = cms.string("L1Trigger/Phase2L1ParticleFlow/data/multiclassID/multiclass_EE.json"),
0191             wp_pt = cms.vdouble(20),
0192             wp_PU = cms.vdouble(0.33462133, 0.25283374),
0193             wp_Pi = cms.vdouble(0.26773010, 0.03898286),
0194             wp_PFEm = cms.vdouble(0.29812516, 0.42790125),
0195             wp_EgEm = cms.vdouble(0.29812516, 0.42790125),
0196             wp_EgEm_tight = cms.vdouble(0.76317512, 0.67921004),
0197         ),
0198         corrector = cms.string("L1Trigger/Phase2L1ParticleFlow/data/hadcorr_HGCal3D_TC.root"),
0199         correctorEmfMax = cms.double(1.125),
0200         emulateCorrections = cms.bool(False), # NOTE: should switch this on for FW bit-wise agreement!
0201         emInterpScenario = cms.string("allKeepHad"), # for all clusters, use EM intepretation to redefine the EM part of the energy
0202     ),
0203     regionizerAlgo = cms.string("Multififo"),
0204     regionizerAlgoParameters = cms.PSet(
0205         useAlsoVtxCoords = cms.bool(True),
0206         nEndcaps = cms.uint32(2),
0207         nClocks = cms.uint32(54),
0208         nTkLinks = cms.uint32(2),
0209         nCaloLinks = cms.uint32(3),
0210         nTrack = cms.uint32(30),
0211         nCalo = cms.uint32(20),
0212         nEmCalo = cms.uint32(10),
0213         nMu = cms.uint32(4),
0214         egInterceptMode = cms.PSet(
0215             afterFifo = cms.bool(True),
0216             emIDMask = cms.uint32(0x1E),
0217             nHADCALO_IN = cms.uint32(20),
0218             nEMCALO_OUT = cms.uint32(10),
0219             )
0220         ),
0221     pfAlgo = cms.string("PFAlgo2HGC"),
0222     pfAlgoParameters = cms.PSet(
0223         nTrack = cms.uint32(30),
0224         nCalo = cms.uint32(20),
0225         nMu = cms.uint32(4),
0226         nSelCalo = cms.uint32(20),
0227         trackMuDR    = cms.double(0.2), # accounts for poor resolution of standalone, and missing propagations
0228         trackCaloDR = cms.double(0.1),
0229         maxInvisiblePt = cms.double(10.0), # max allowed pt of a track with no calo energy
0230         tightTrackMaxInvisiblePt = cms.double(20),
0231         caloResolution = cms.PSet(
0232             etaBins = cms.vdouble( 1.700,  1.900,  2.200,  2.500,  2.800,  2.900),
0233             offset  = cms.vdouble( 1.793,  1.827,  2.363,  2.538,  2.812,  2.642),
0234             scale   = cms.vdouble( 0.138,  0.137,  0.124,  0.115,  0.106,  0.121),
0235         ),
0236     ),
0237     puAlgo = cms.string("LinearizedPuppi"),
0238     puAlgoParameters = cms.PSet(
0239         nTrack = cms.uint32(30),
0240         nIn = cms.uint32(20),
0241         nOut = cms.uint32(20),
0242         nVtx        = cms.uint32(1),
0243         nFinalSort = cms.uint32(18),
0244         finalSortAlgo = cms.string("FoldedHybrid"),
0245         dZ     = cms.double(1.33),
0246         dr     = cms.double(0.3),
0247         drMin  = cms.double(0.04),
0248         ptMax  = cms.double(50.),
0249         absEtaCuts         = cms.vdouble( 2.0 ), # two bins in the tracker (different eta); give only the one boundary between them
0250         ptCut             = cms.vdouble( 1.0, 2.0 ),
0251         ptSlopes           = cms.vdouble( 0.3, 0.3 ), # coefficient for pT
0252         ptSlopesPhoton    = cms.vdouble( 0.4, 0.4 ), #When e/g ID not applied, use: cms.vdouble( 0.3, 0.3, 0.3 ),
0253         ptZeros            = cms.vdouble( 5.0, 7.0 ), # ballpark pT from PU
0254         ptZerosPhoton     = cms.vdouble( 3.0, 4.0 ),
0255         alphaSlopes        = cms.vdouble( 1.5, 1.5 ),
0256         alphaZeros         = cms.vdouble( 6.0, 6.0 ),
0257         alphaCrop         = cms.vdouble(  3 ,  3  ), # max. absolute value for alpha term
0258         priors             = cms.vdouble( 5.0, 5.0 ),
0259         priorsPhoton      = cms.vdouble( 1.5, 1.5 ), #When e/g ID not applied, use: cms.vdouble( 3.5, 3.5, 7.0 ),
0260         useMLAssociation = switchOnNNAssoc, #Enable Association Network
0261         NNVtxAssociation = NNVtxAssociationPSet,
0262     ),
0263     tkEgAlgoParameters = tkEgAlgoParameters.clone(
0264         nTRACK = 30,
0265         nTRACK_EGIN = 10,
0266         nEMCALO_EGIN = 10,
0267         nEM_EGOUT = 5,
0268         doBremRecovery = True,
0269         doEndcapHwQual = True,
0270         writeBeforeBremRecovery = False,
0271         writeEGSta = True,
0272         algorithm = 1,
0273         trkQualityPtMin = 0., # This should be 10 GeV when doCompositeTkEle = False
0274         # compositeParametersTkEle=cms.PSet(
0275         #     # NOTE: conifer BDT score is log(p/1-p)
0276         #     # the working points are cuts on BDT output logits [log(p/1-p)]/4 (range -1 to 1 to match the FW dataformat)
0277         #     loose_wp=cms.double(-9999),
0278         #     tight_wp=cms.double(0.0527344),
0279         #     model=cms.string("L1Trigger/Phase2L1ParticleFlow/data/egamma/compositeID_EE_v1.json")
0280         # ),
0281         ), 
0282     tkEgSorterAlgo = cms.string("Endcap"),
0283     tkEgSorterParameters = tkEgSorterParameters.clone(
0284         nObjToSort = 5
0285     ),
0286     caloSectors = _hgcalSectors,
0287     regions = cms.VPSet(
0288         cms.PSet(
0289             etaBoundaries = cms.vdouble(-2.5, -1.5),
0290             phiSlices     = cms.uint32(9),
0291         ),
0292         cms.PSet(
0293             etaBoundaries = cms.vdouble(+1.5, +2.5),
0294             phiSlices     = cms.uint32(9),
0295         )
0296 
0297     ),
0298     boards = cms.VPSet(
0299         cms.PSet(
0300             regions = cms.vuint32(range(0, 9))),
0301         cms.PSet(
0302             regions = cms.vuint32(range(9, 18))),
0303     ),
0304 )
0305 
0306 
0307 l1tLayer1HGCalExtended = l1tLayer1HGCal.clone(tracks = ('l1tPFTracksFromL1TracksExtended'))
0308 
0309 l1tLayer1HGCalElliptic = l1tLayer1HGCal.clone(
0310     tkEgAlgoParameters = l1tLayer1HGCal.tkEgAlgoParameters.clone(
0311         algorithm = 0,
0312         trkQualityPtMin = 10.)
0313 )
0314 
0315 l1tLayer1HGCalNoTK = cms.EDProducer("L1TCorrelatorLayer1Producer",
0316     muons = cms.InputTag('l1tSAMuonsGmt','prompt'),
0317     emClusters = cms.InputTag(""),
0318     hadClusters = cms.InputTag("l1tHGCalBackEndLayer2Producer","HGCalBackendLayer2Processor3DClustering"),
0319     vtxCollection = cms.InputTag("l1tVertexFinderEmulator","L1VerticesEmulation"),
0320     nVtx = cms.int32(1),
0321     emPtCut = cms.double(0.5),
0322     hadPtCut = cms.double(1.0),
0323     trkPtCut = cms.double(2.0),
0324     muonInputConversionAlgo = cms.string("Emulator"),
0325     hgcalInputConversionAlgo = cms.string("Emulator"),
0326     hgcalInputConversionParameters = cms.PSet(
0327         slim = cms.bool(True),
0328         multiclass_id = cms.PSet(
0329             model = cms.string("L1Trigger/Phase2L1ParticleFlow/data/multiclassID/multiclass_EE.json"),
0330             wp_pt = cms.vdouble(20),
0331             wp_PU = cms.vdouble(0.42100209, 0.52275714),
0332             wp_Pi = cms.vdouble(0.12800815, 0.20509825),
0333             wp_PFEm = cms.vdouble(0.35924579, 0.67921004),
0334             wp_EgEm = cms.vdouble(0.35924579, 0.67921004),
0335             wp_EgEm_tight = cms.vdouble(0.76317512, 0.67921004),
0336         ),
0337         corrector = cms.string("L1Trigger/Phase2L1ParticleFlow/data/hadcorr_HGCal3D_TC.root"),
0338         correctorEmfMax = cms.double(1.125),
0339         emInterpScenario = cms.string("allKeepHad"), # for all clusters, use EM intepretation to redefine the EM part of the energy
0340     ),
0341     regionizerAlgo = cms.string("Multififo"),
0342     regionizerAlgoParameters = cms.PSet(
0343         useAlsoVtxCoords = cms.bool(True),
0344         nEndcaps = cms.uint32(2),
0345         nClocks = cms.uint32(54),
0346         nTkLinks = cms.uint32(0),
0347         nCaloLinks = cms.uint32(3),
0348         nTrack = cms.uint32(0),
0349         nCalo = cms.uint32(12),
0350         nEmCalo = cms.uint32(12),
0351         nMu = cms.uint32(4),
0352         egInterceptMode = cms.PSet(
0353             afterFifo = cms.bool(True),
0354             emIDMask = cms.uint32(0x1E),
0355             nHADCALO_IN = cms.uint32(12),
0356             nEMCALO_OUT = cms.uint32(12),
0357             )
0358         ),
0359     pfAlgo = cms.string("PFAlgoDummy"),
0360     pfAlgoParameters = cms.PSet(
0361         nCalo = cms.uint32(12),
0362         nMu = cms.uint32(4), # unused
0363     ),
0364     puAlgo = cms.string("LinearizedPuppi"),
0365     puAlgoParameters = cms.PSet(
0366         nTrack = cms.uint32(0),  # unused
0367         nIn = cms.uint32(12),
0368         nOut = cms.uint32(12),
0369         nFinalSort = cms.uint32(12), # to be tuned
0370         finalSortAlgo = cms.string("Hybrid"),
0371         nVtx = cms.uint32(1),
0372         dZ     = cms.double(1.33),
0373         dr     = cms.double(0.3),
0374         drMin  = cms.double(0.04),
0375         ptMax  = cms.double(50.),
0376         absEtaCuts         = cms.vdouble( ), # just one bin
0377         ptCut             = cms.vdouble( 4.0 ),
0378         ptSlopes           = cms.vdouble( 0.3 ), # coefficient for pT
0379         ptSlopesPhoton    = cms.vdouble( 0.4 ), #When e/g ID not applied, use: cms.vdouble( 0.3, 0.3, 0.3 ),
0380         ptZeros            = cms.vdouble( 9.0 ), # ballpark pT from PU
0381         ptZerosPhoton     = cms.vdouble( 5.0 ),
0382         alphaSlopes        = cms.vdouble( 2.2 ),
0383         alphaZeros         = cms.vdouble( 9.0 ),
0384         alphaCrop         = cms.vdouble(  4  ), # max. absolute value for alpha term
0385         priors             = cms.vdouble( 7.0 ),
0386         priorsPhoton      = cms.vdouble( 5.0 ), #When e/g ID not applied, use: cms.vdouble( 3.5, 3.5, 7.0 ),
0387         useMLAssociation = switchOnNNAssoc, #Enable Association Network
0388         NNVtxAssociation = NNVtxAssociationPSet,
0389     ),
0390     tkEgAlgoParameters = tkEgAlgoParameters.clone(
0391         nTRACK = 30,
0392         nTRACK_EGIN = 10,
0393         nEMCALO_EGIN = 10,
0394         nEM_EGOUT = 5,
0395         doBremRecovery = True,
0396         doEndcapHwQual = True,
0397         writeBeforeBremRecovery = False,
0398         writeEGSta = True),
0399     tkEgSorterAlgo = cms.string("Endcap"),
0400     tkEgSorterParameters = tkEgSorterParameters.clone(
0401         nObjToSort = 5
0402     ),
0403     caloSectors = _hgcalSectors,
0404     regions = cms.VPSet(
0405         cms.PSet(
0406             etaBoundaries = cms.vdouble(-3.0, -2.5),
0407             phiSlices     = cms.uint32(9),
0408         ),
0409         cms.PSet(
0410             etaBoundaries = cms.vdouble(+2.5, +3.0),
0411             phiSlices     = cms.uint32(9),
0412         )
0413 
0414     ),
0415     boards = cms.VPSet(
0416         cms.PSet(regions = cms.vuint32(range(0,18))),
0417     ),
0418 )
0419 
0420 l1tLayer1HF = cms.EDProducer("L1TCorrelatorLayer1Producer",
0421     muons = cms.InputTag('l1tSAMuonsGmt','prompt'),
0422     emClusters = cms.InputTag(''),
0423     hadClusters = cms.InputTag('l1tPFClustersFromCombinedCaloHF:calibrated'),
0424     gctHadInputConversionAlgo = cms.string("Ideal"),
0425     vtxCollection = cms.InputTag("l1tVertexFinderEmulator","L1VerticesEmulation"),
0426     nVtx = cms.int32(1),
0427     emPtCut = cms.double(0.5),
0428     hadPtCut = cms.double(15.0),
0429     trkPtCut = cms.double(2.0),
0430     pfAlgo = cms.string("PFAlgoDummy"),
0431     pfAlgoParameters = cms.PSet(
0432         nCalo = cms.uint32(18),
0433         nMu = cms.uint32(4), # unused
0434         debug = cms.untracked.bool(False)
0435     ),
0436     puAlgo = cms.string("LinearizedPuppi"),
0437     puAlgoParameters = cms.PSet(
0438         nTrack = cms.uint32(0), # unused
0439         nIn = cms.uint32(18),
0440         nOut = cms.uint32(18),
0441         nVtx = cms.uint32(1),
0442         nFinalSort = cms.uint32(10), # to be tuned
0443         finalSortAlgo = cms.string("Insertion"),
0444         dZ     = cms.double(1.33),
0445         dr     = cms.double(0.3),
0446         drMin  = cms.double(0.1),
0447         ptMax  = cms.double(100.),
0448         absEtaCuts         = cms.vdouble(   ), # just one bin
0449         ptCut             = cms.vdouble( 10.0  ),
0450         ptSlopes           = cms.vdouble(  0.25 ),
0451         ptSlopesPhoton    = cms.vdouble(  0.25 ),
0452         ptZeros            = cms.vdouble( 14.0  ),
0453         ptZerosPhoton     = cms.vdouble( 14.0  ),
0454         alphaSlopes        = cms.vdouble(  0.6  ),
0455         alphaZeros         = cms.vdouble(  9.0  ),
0456         alphaCrop         = cms.vdouble(   4   ),
0457         priors             = cms.vdouble(  6.0  ),
0458         priorsPhoton      = cms.vdouble(  6.0  ),
0459         debug = cms.untracked.bool(False),
0460         useMLAssociation = switchOnNNAssoc, #Enable Association Network
0461         NNVtxAssociation = NNVtxAssociationPSet,
0462     ),
0463     tkEgAlgoParameters = tkEgAlgoParameters.clone(
0464         nTRACK = 5,           # to be defined
0465         nTRACK_EGIN = 5,          # to be defined
0466         nEMCALO_EGIN = 5,  # to be defined
0467         nEM_EGOUT = 5,        # to be defined
0468         doBremRecovery = True,
0469         writeEGSta = True),
0470     tkEgSorterAlgo = cms.string("Endcap"),
0471     tkEgSorterParameters = tkEgSorterParameters.clone(),
0472     caloSectors = cms.VPSet(
0473         cms.PSet(
0474             etaBoundaries = cms.vdouble(-5.5, -3.0),
0475             phiSlices     = cms.uint32(9),
0476         ),
0477         cms.PSet(
0478             etaBoundaries = cms.vdouble(+3.0, +5.5),
0479             phiSlices     = cms.uint32(9),
0480         )
0481     ),
0482     regions = cms.VPSet(
0483         cms.PSet(
0484             etaBoundaries = cms.vdouble(-5.5, -3.0),
0485             phiSlices     = cms.uint32(9),
0486         ),
0487         cms.PSet(
0488             etaBoundaries = cms.vdouble(+3.0, +5.5),
0489             phiSlices     = cms.uint32(9),
0490         )
0491     ),
0492     boards = cms.VPSet(),
0493 )
0494 
0495 
0496 l1tLayer1 = cms.EDProducer("L1TPFCandMultiMerger",
0497     pfProducers = cms.VInputTag(
0498         cms.InputTag("l1tLayer1Barrel"),
0499         cms.InputTag("l1tLayer1HGCal"),
0500         cms.InputTag("l1tLayer1HGCalNoTK"),
0501         cms.InputTag("l1tLayer1HF")
0502     ),
0503 
0504 )
0505 
0506 
0507 l1tLayer1Extended = l1tLayer1.clone(
0508     pfProducers = [ ("l1tLayer1BarrelExtended"), ("l1tLayer1HGCalExtended"),
0509         ("l1tLayer1HGCalNoTK"),("l1tLayer1HF")]
0510 )
0511 
0512 l1tLayer1EG = cms.EDProducer(
0513     "L1TEGMultiMerger",
0514     tkElectrons = cms.VPSet(
0515         cms.PSet(
0516             instance = cms.string("L1TkEleEE"),
0517             pfProducers = cms.VInputTag(
0518                 cms.InputTag("l1tLayer1HGCal", 'L1TkEle')
0519             )
0520         ),
0521         cms.PSet(
0522             instance = cms.string("L1TkEleEB"),
0523             pfProducers = cms.VInputTag(
0524                 cms.InputTag("l1tLayer1Barrel", 'L1TkEle')
0525             )
0526         )
0527     ),
0528     tkEms = cms.VPSet(
0529         cms.PSet(
0530             instance = cms.string("L1TkEmEE"),
0531             pfProducers = cms.VInputTag(
0532                 cms.InputTag("l1tLayer1HGCal", 'L1TkEm'),
0533                 cms.InputTag("l1tLayer1HGCalNoTK", 'L1TkEm')
0534             )
0535         ),
0536         cms.PSet(
0537             instance = cms.string("L1TkEmEB"),
0538             pfProducers = cms.VInputTag(
0539                 cms.InputTag("l1tLayer1Barrel", 'L1TkEm')
0540             )
0541         )
0542     ),
0543     tkEgs = cms.VPSet(
0544         cms.PSet(
0545             instance = cms.string("L1EgEE"),
0546             pfProducers = cms.VInputTag(
0547                 cms.InputTag("l1tLayer1HGCal", 'L1Eg'),
0548                 cms.InputTag("l1tLayer1HGCalNoTK", 'L1Eg')
0549             )
0550         )
0551     )
0552 )
0553 
0554 l1tLayer1EGElliptic = cms.EDProducer(
0555     "L1TEGMultiMerger",
0556     tkElectrons = cms.VPSet(
0557         cms.PSet(
0558             instance = cms.string("L1TkEleEE"),
0559             pfProducers = cms.VInputTag(
0560                 cms.InputTag("l1tLayer1HGCalElliptic", 'L1TkEle')
0561             )
0562         ),
0563         cms.PSet(
0564             instance = cms.string("L1TkEleEB"),
0565             pfProducers = cms.VInputTag(
0566                 cms.InputTag("l1tLayer1Barrel", 'L1TkEle')
0567             )
0568         )
0569     ),
0570     tkEms = cms.VPSet(
0571         cms.PSet(
0572             instance = cms.string("L1TkEmEE"),
0573             pfProducers = cms.VInputTag(
0574                 cms.InputTag("l1tLayer1HGCalElliptic", 'L1TkEm'),
0575                 cms.InputTag("l1tLayer1HGCalNoTK", 'L1TkEm')
0576             )
0577         ),
0578         cms.PSet(
0579             instance = cms.string("L1TkEmEB"),
0580             pfProducers = cms.VInputTag(
0581                 cms.InputTag("l1tLayer1Barrel", 'L1TkEm')
0582             )
0583         )
0584     ),
0585     tkEgs = cms.VPSet(
0586         cms.PSet(
0587             instance = cms.string("L1EgEE"),
0588             pfProducers = cms.VInputTag(
0589                 cms.InputTag("l1tLayer1HGCalElliptic", 'L1Eg'),
0590                 cms.InputTag("l1tLayer1HGCalNoTK", 'L1Eg')
0591             )
0592         )
0593     )
0594 )
0595 
0596 
0597 
0598 L1TLayer1TaskInputsTask = cms.Task(
0599     l1tPFClustersFromL1EGClusters,
0600     l1tPFClustersFromCombinedCaloHCal,
0601     l1tPFClustersFromCombinedCaloHF,
0602     l1tPFTracksFromL1Tracks,
0603     l1tPFTracksFromL1TracksExtended
0604 )
0605 
0606 L1TLayer1Task = cms.Task(
0607      l1tLayer1Barrel,
0608      l1tLayer1BarrelExtended,
0609      l1tLayer1HGCal,
0610      l1tLayer1HGCalExtended,
0611      l1tLayer1HGCalNoTK,
0612      l1tLayer1HF,
0613      l1tLayer1,
0614      l1tLayer1Extended,
0615      l1tLayer1HGCalElliptic,
0616      l1tLayer1EG,
0617      l1tLayer1EGElliptic
0618 )