diff --git a/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTConfigSvc.cxx b/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTConfigSvc.cxx index be0fc34a324bf145e59fabf1673c30cd30170c1b..217a28293e2e6f2c4dfdd91de0ce1234d83ec8ac 100644 --- a/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTConfigSvc.cxx +++ b/Trigger/TrigConfiguration/TrigConfigSvc/src/HLTConfigSvc.cxx @@ -268,6 +268,8 @@ HLTConfigSvc::initialize() { dummyChains["HLT_j260_320eta490_L1J20"] = "L1_J20"; dummyChains["HLT_j420_L1J20"] = "L1_J20"; dummyChains["HLT_j45_L1J15"] = "L1_J15"; + dummyChains["HLT_j80_j60_L1J15"] = "L1_J15"; + dummyChains["HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20"] = "L1_J20"; dummyChains["HLT_j460_a10_lcw_subjes_L1J20"] = "L1_J20"; dummyChains["HLT_j460_a10r_L1J20"] = "L1_J20"; dummyChains["HLT_mu20_ivar_L1MU6"] = "L1_MU6"; diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref index 9f871965a399544c0118730736419c3278df0a68..3d81ae49a0bd57bdbf956dc91c930887e11dc20c 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref @@ -84,6 +84,10 @@ TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 4 4 0 0 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2019 19 12 0 0 0 0 0 12 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 12 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 14 0 0 0 0 0 14 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 14 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j85_L1J20 19 19 13 0 0 0 0 0 13 TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 13 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 10 10 10 10 8 0 0 0 8 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py index 3a7e9a15cc7a4e7d8d7a56f6b1d990922aa2d42d..ac537f0b74c1b85c81e2c389db8e1ea0950f6c9c 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py @@ -184,17 +184,17 @@ def generateL1DecoderAndChains(): # in symmetric chains, multiplicity=2 but only one sequence is used CombChains =[ - makeChain(name='HLT_mu8_e8_L1MU6_EM7', L1Thresholds=["MU6","EM7"], ChainSteps=[ ChainStep("Step1_mu_em", [mu11, el11], multiplicity=2), - ChainStep("Step2_mu_em", [mu21, el21], multiplicity=2)] ), - makeChain(name='HLT_e5_e8_L1EM3_EM5', L1Thresholds=["EM3","EM5"], ChainSteps=[ ChainStep("Step1_2em", [el11, el11], multiplicity=2), - ChainStep("Step2_2em", [el21, el21], multiplicity=2) ]), - makeChain(name='HLT_2mu6_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=2), - ChainStep("Step2_2mu", [mu21], multiplicity=2) ]), - makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu_empty", multiplicity=2), - ChainStep("Step2_2mu", [mu21], multiplicity=2) ]), - makeChain(name='HLT_2mu4_bDimu_L12MU4', L1Thresholds=["MU4"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=2), + makeChain(name='HLT_mu8_e8_L1MU6_EM7', L1Thresholds=["MU6","EM7"], ChainSteps=[ ChainStep("Step1_mu_em", [mu11, el11], multiplicity=[1,1]), + ChainStep("Step2_mu_em", [mu21, el21], multiplicity=[1,1])] ), + makeChain(name='HLT_e5_e8_L1EM3_EM5', L1Thresholds=["EM3","EM5"], ChainSteps=[ ChainStep("Step1_2em", [el11, el11], multiplicity=[1,1]), + ChainStep("Step2_2em", [el21, el21], multiplicity=[1,1]) ]), + makeChain(name='HLT_2mu6_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=[2]), + ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), + makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu_empty", multiplicity=[2]), + ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), + makeChain(name='HLT_2mu4_bDimu_L12MU4', L1Thresholds=["MU4"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=[2]), step_mu22, - ChainStep("Step3_2mu", [mu31], multiplicity=2)] ) + ChainStep("Step3_2mu", [mu31], multiplicity=[2])] ) ] diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref index 6bb0e3179c4893c6900e5d3644b0f89f71d35369..3150341d6a9c49968b5e70c9814bfe29e6dfebd4 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref @@ -556,6 +556,7 @@ TriggerSummaryStep1 19 0 DEBUG +++ HLT_noalg_L1RD0_FIL TriggerSummaryStep1 19 0 DEBUG +++ HLT_e5_etcut_L1EM3 ID#324908483 TriggerSummaryStep1 19 0 DEBUG +++ HLT_g5_etcut_L1EM3 ID#471243435 TriggerSummaryStep1 19 0 DEBUG +++ HLT_j85_L1J20 ID#510475538 +TriggerSummaryStep1 19 0 DEBUG +++ HLT_j80_j60_L1J15 ID#582699527 TriggerSummaryStep1 19 0 DEBUG +++ HLT_e3_etcut_L1EM3 ID#683953566 TriggerSummaryStep1 19 0 DEBUG +++ HLT_noalg_L1RD0_EMPTY ID#914660695 TriggerSummaryStep1 19 0 DEBUG +++ HLT_j45_L1J15 ID#1364976160 @@ -568,6 +569,7 @@ TriggerSummaryStep1 19 0 DEBUG +++ HLT_2e3_etcut_L12EM TriggerSummaryStep1 19 0 DEBUG +++ HLT_g20_etcut_LArPEB_L1EM15 ID#2706532790 TriggerSummaryStep1 19 0 DEBUG +++ HLT_g5_etcut_LArPEB_L1EM3 ID#3486231698 TriggerSummaryStep1 19 0 DEBUG +++ HLT_xe30_mht_L1XE10 ID#3626903018 +TriggerSummaryStep1 19 0 DEBUG +++ HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 ID#3634067472 TriggerSummaryStep1 19 0 DEBUG +++ HLT_j35_gsc45_bmv2c1070_split_L1J20 ID#3815360851 TriggerSummaryStep1 19 0 DEBUG +++ HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 ID#4034799151 TriggerSummaryStep1 19 0 DEBUG +++ HLT_noalg_L1EM3 ID#4169267792 @@ -680,6 +682,10 @@ TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 20 20 0 0 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2020 20 1 0 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 1 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 1 0 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 1 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_j85_L1J20 20 20 1 0 0 0 0 0 1 TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 1 0 0 0 0 0 TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 20 20 4 4 1 0 0 0 1 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py index 29d601ef900ac7dd4cb1065b5b5b37034aabdd76..8cb91e41bfa1d9baa025eed5b62f0ca54e942a6f 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py @@ -100,20 +100,20 @@ if opt.doMuonSlice == True: # multi muon trigger # 2muons symmetric - step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ muFastSequence()], multiplicity=2) - step2_2muComb_sym= ChainStep("Step1_2muComb_sym", [ muCombSequence()], multiplicity=2) + step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ muFastSequence()], multiplicity=[2]) + step2_2muComb_sym= ChainStep("Step1_2muComb_sym", [ muCombSequence()], multiplicity=[2]) - step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSASequence()], multiplicity=2) - step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBSequence()], multiplicity=2) + step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSASequence()], multiplicity=[2]) + step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBSequence()], multiplicity=[2]) MuonChains += [ makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])] # 2muons asymmetric (this will change): 2 sequences, 2 seeds - step1_2mufast_asym= ChainStep("Step1_2muFast_asym", [ muFastSequence(), muFastSequence()], multiplicity=2) - step2_2muComb_asym= ChainStep("Step1_2muComb_asym", [ muCombSequence(), muCombSequence()], multiplicity=2) + step1_2mufast_asym= ChainStep("Step1_2muFast_asym", [ muFastSequence(), muFastSequence()], multiplicity=[2]) + step2_2muComb_asym= ChainStep("Step1_2muComb_asym", [ muCombSequence(), muCombSequence()], multiplicity=[2]) - step3_2muEFSA_asym= ChainStep("Step3_2muEFSA_asym", [ muEFSASequence(), muEFSASequence()], multiplicity=2) - step4_2muEFCB_asym= ChainStep("Step4_2muEFCB_asym", [ muEFCBSequence(), muEFCBSequence()], multiplicity=2) + step3_2muEFSA_asym= ChainStep("Step3_2muEFSA_asym", [ muEFSASequence(), muEFSASequence()], multiplicity=[2]) + step4_2muEFCB_asym= ChainStep("Step4_2muEFCB_asym", [ muEFCBSequence(), muEFCBSequence()], multiplicity=[2]) MuonChains += [ makeChain(name='HLT_mu6_mu4_L12MU4', @@ -219,7 +219,7 @@ if opt.doMETSlice == True: metCellStep = ChainStep("Step1_met_cell", [metCellSeq]) metClusterPufitStep = ChainStep("Step1_met_clusterpufit", [metClusterPufitSeq]) - comboStep_cell_clusterpufit = ChainStep("Step1_combo_cell_clusterpufit", [metCellSeq, metClusterPufitSeq], multiplicity=2) + comboStep_cell_clusterpufit = ChainStep("Step1_combo_cell_clusterpufit", [metCellSeq, metClusterPufitSeq], multiplicity=[2]) metChains = [ makeChain(name="HLT_xe65_L1XE50", L1Thresholds=["XE50"], ChainSteps=[metCellStep]), @@ -272,8 +272,8 @@ if opt.doCombinedSlice == True: from TriggerMenuMT.HLTMenuConfig.Muon.MuonSequenceSetup import muFastSequence - comboStep_et_mufast = ChainStep("Step1_et_mufast", [fastCaloSeq, muFastSequence()], multiplicity=2) - comboStep_mufast_etcut1_step1 = ChainStep("Step1_mufast_etcut1", [muFastSequence(), fastCaloSeq], multiplicity=2) + comboStep_et_mufast = ChainStep("Step1_et_mufast", [fastCaloSeq, muFastSequence()], multiplicity=[2]) + comboStep_mufast_etcut1_step1 = ChainStep("Step1_mufast_etcut1", [muFastSequence(), fastCaloSeq], multiplicity=[2]) comboChains = [ makeChain(name='HLT_e3_etcut_mu6_L1EM8I_MU10', L1Thresholds=["EM8I", "MU10"], ChainSteps=[comboStep_et_mufast ])] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py index 7db029d599a7842bf7030f0e2fb914209b717331..906e7049b349eb7c55c8d1baabaff08eb5134f7e 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py @@ -94,11 +94,11 @@ class BphysicsChainConfiguration(MuonChainConfiguration): stepName = 'Step2_l2Dimu' log.debug("Configuring step " + stepName) bphySeq = RecoFragmentsPool.retrieve( dimuL2SequenceCfg, None) - return ChainStep(stepName, [bphySeq], multiplicity=1) + return ChainStep(stepName, [bphySeq], multiplicity=[1]) def getdimuEF(self): stepName = 'Step5_efDimu' log.debug("Configuring step " + stepName) bphySeq = RecoFragmentsPool.retrieve( dimuEFSequenceCfg, None) - return ChainStep(stepName, [bphySeq], multiplicity=1) + return ChainStep(stepName, [bphySeq], multiplicity=[1]) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py index 766489a3b7fbe63957464eaad9b56cf9923ee162..674d0b8afc00470e5eed199c7017ba64ea3b5dc5 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py @@ -68,15 +68,15 @@ class ElectronChainConfiguration(ChainConfigurationBase): if stepName == "Step1_electron": log.debug("Configuring step " + stepName) fastCalo = RecoFragmentsPool.retrieve( electronFastCaloCfg, None ) # the None will be used for flags in future - chainStep =ChainStep(stepName, [fastCalo], self.mult) + chainStep =ChainStep(stepName, [fastCalo], [self.mult]) elif stepName == "Step2_electron": log.debug("Configuring step " + stepName) electronReco = RecoFragmentsPool.retrieve( fastElectronSequenceCfg, None ) - chainStep=ChainStep(stepName, [electronReco], self.mult) + chainStep=ChainStep(stepName, [electronReco], [self.mult]) elif stepName == "Step3_electron": log.debug("Configuring step " + stepName) precisionReco = RecoFragmentsPool.retrieve( precisionCaloSequenceCfg, None ) - chainStep=ChainStep(stepName, [precisionReco], self.mult) + chainStep=ChainStep(stepName, [precisionReco], [self.mult]) else: raise RuntimeError("chainStepName unknown: " + stepName ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonDef.py index a8b453f7bc7d7e61aea1af69735338ec9d778c36..635b1b5c32cdc86ca2b8a69cda1a19ac89258d08 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PhotonDef.py @@ -81,26 +81,26 @@ class PhotonChainConfiguration(ChainConfigurationBase): stepName = "Step1_PhotonFastCalo" log.debug("Configuring step " + stepName) fastCalo = RecoFragmentsPool.retrieve( fastPhotonCaloSequenceCfg, None ) # the None will be used for flags in future - return ChainStep(stepName, [fastCalo], self.mult) + return ChainStep(stepName, [fastCalo], [self.mult]) def getFastPhoton(self): stepName = "Step2_L2Photon" log.debug("Configuring step " + stepName) photonReco = RecoFragmentsPool.retrieve( fastPhotonSequenceCfg, None ) - return ChainStep(stepName, [photonReco], self.mult) + return ChainStep(stepName, [photonReco], [self.mult]) def getPrecisionCaloPhoton(self): stepName = "Step3_PhotonPrecisionCalo" log.debug("Configuring step " + stepName) precisionCaloPhoton = RecoFragmentsPool.retrieve( precisionPhotonCaloSequenceCfg, None ) - return ChainStep(stepName, [precisionCaloPhoton], self.mult) + return ChainStep(stepName, [precisionCaloPhoton], [self.mult]) def getPrecisionPhoton(self): stepName = "Step4_PhotonPrecision" log.debug("Configuring step " + stepName) precisionPhoton = RecoFragmentsPool.retrieve( precisionPhotonSequenceCfg, None ) - return ChainStep(stepName, [precisionPhoton], self.mult) + return ChainStep(stepName, [precisionPhoton], [self.mult]) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py index 6b7b665f858462c4ed431945e5521da0828e3d3e..0ac3dbaed317e590c052e9738d36000fc1d16301 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py @@ -53,7 +53,8 @@ class JetChainConfiguration(ChainConfigurationBase): stepName = "Step1_jet_"+jetDefStr jetSeq1 = RecoFragmentsPool.retrieve( jetMenuSequence, None, **self.recoDict ) # the None will be used for flags in future - return ChainStep(stepName, [jetSeq1], self.mult) + return ChainStep(stepName, [jetSeq1], multiplicity=[1]) + diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py index 1d300d65b1cfc16914f4fdf2ad756d66a7dffc38..785ddbda6f17aff1798456a2a69f275621f6d09a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainConfigurationBase.py @@ -44,7 +44,7 @@ class ChainConfigurationBase(object): seqArray = [] for sequenceCfg in sequenceCfgArray: seqArray.append( RecoFragmentsPool.retrieve( sequenceCfg, None)) - return ChainStep(stepName, seqArray, self.mult) + return ChainStep(stepName, seqArray, [self.mult]) def buildChain(self, chainSteps): myChain = Chain(name = self.chainName, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py index 6d6be3142e63a4e2c5e7f901645b8d45c145f77c..91dd26fd9762ffd1477fe821d8c78344fee79a6b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py @@ -74,36 +74,36 @@ def mergeParallel(chainDefList, offset): def makeChainSteps(steps): stepName = '' stepSeq = [] - stepMult = 0 + stepMult = [] stepNumber = '' - log.debug(" steps %s ", steps) + log.verbose(" steps %s ", steps) stepName = "merged" for step in steps: if step is None: continue + log.debug(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) + log.debug(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) + + # this function only works if the input chains are single-object chains (one menu seuqnce) if len(step.sequences) > 1: log.error("More than one menu sequence found in combined chain!!") seq = step.sequences[0] - log.debug(" step type %s", type(step.sequences)) - log.debug(" step.name %s", step.name) - log.debug(" step.seq %s", step.sequences) - log.debug(" step.mult %s", step.multiplicity) + currentStep = step.name stepNameParts = currentStep.split('_') if stepNumber == '': stepNumber = stepNameParts[0] # the step naming for combined chains needs to be revisted!! - stepName += '_' +step.name #stepNumber + '_' + stepNameParts[1] + stepName += '_' +step.name stepSeq.append(seq) - stepMult += step.multiplicity + # set the multiplicity of all the legs + stepMult.append(sum(step.multiplicity)) - log.debug(" - BB stepName %s", stepName) - log.debug(" - BB stepSeq %s", stepSeq) - log.debug(" - BB stepMult %s", stepMult) - - theChainStep = ChainStep(stepName, stepSeq, stepMult) - log.debug(" - BBB the chain step %s", theChainStep) + + theChainStep = ChainStep(stepName, stepSeq, stepMult) + log.debug("Merged step: \n %s", theChainStep) + return theChainStep diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index 6030f5c69e6724daa9ef6aaf4e01f004183c781d..b6421a748716e725ae4c19c39cb57a8750efc947 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -195,8 +195,7 @@ def makeHLTTree(newJO=False, triggerConfigHLT = None): from TriggerMenuMT.HLTMenuConfig.Menu.CFValidation import testHLTTree testHLTTree( topSequence ) - -def matrixDisplay( allCFSeq ): +def matrixDisplayOld( allCFSeq ): from collections import defaultdict longestName = 5 mx = defaultdict(lambda: dict()) @@ -207,13 +206,18 @@ def matrixDisplay( allCFSeq ): longestName = max(longestName, len(seq.step.name) ) longestName = longestName + 1 + def __getHyposOfStep( s ): if len(s.step.sequences): - if type(s.step.sequences[0].hypo) is list: - return s.step.sequences[0].hypo[0].tools - else: - return s.step.sequences[0].hypo.tools + if len(s.step.sequences)==1: + if type(s.step.sequences[0].hypo) is list: + return s.step.sequences[0].hypo[0].tools + else: + return s.step.sequences[0].hypo.tools + else: + return s.step.combo.getChains().keys() return [] + @@ -237,6 +241,50 @@ def matrixDisplay( allCFSeq ): log.debug( "" ) + +def matrixDisplay( allCFSeq ): + + def __getHyposOfStep( step ): + if len(step.sequences): + if len(step.sequences)==1: + if type(step.sequences[0].hypo) is list: + return step.sequences[0].hypo[0].tools + else: + return step.sequences[0].hypo.tools + else: + return step.combo.getChains().keys() + return [] + + + # fill dictionary to cumulate chains on same sequences, in steps (dict with composite keys) + from collections import defaultdict + mx = defaultdict(list) + + for stepNumber,cfseq_list in enumerate(allCFSeq, 1): + for cfseq in cfseq_list: + chains = __getHyposOfStep(cfseq.step) + for seq in cfseq.step.sequences: + mx[stepNumber, seq.sequence.Alg.name()].extend(chains) + + + # sort dictionary by fist key=step + from collections import OrderedDict + sorted_mx = OrderedDict(sorted( mx.items(), key= lambda k: k[0])) + + log.info( "" ) + log.info( "="*90 ) + log.info( "Cumulative Summary of steps") + log.info( "="*90 ) + for (step, seq), chains in sorted_mx.items(): + log.info( "(step, sequence) ==> (%d, %s) is in chains: ", step, seq) + for chain in chains: + log.info( " %s",chain) + + log.info( "="*90 ) + + + + def decisionTree_From_Chains(HLTNode, chains, allDicts, newJO): """ creates the decision tree, given the starting node and the chains containing the sequences """ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index 6b34b17ccdac4919c5b7b8b560f69c600c290e15..6ec57639d928fe1a1d9b1f3d7b285492d0283b21 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -117,7 +117,7 @@ def setupMenu(): TriggerFlags.JetSlice.signatures = [ ChainProp(name='HLT_j85_L1J20', groups=SingleJetGroup), - ChainProp(name='HLT_j45_L1J15', groups=SingleJetGroup), + ChainProp(name='HLT_j45_L1J15', groups=SingleJetGroup), # ChainProp(name='HLT_j420_L1J20', groups=SingleJetGroup), #ChainProp(name='HLT_j225_gsc420_boffperf_split_L1J20', groups=SingleJetGroup), @@ -130,7 +130,7 @@ def setupMenu(): # ATR-20049 ChainProp(name='HLT_j420_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j260_320eta490_L1J75_31ETA49', groups=SingleJetGroup), - ChainProp(name='HLT_j460_a10r_L1J100', groups=SingleJetGroup), + ChainProp(name='HLT_j460_a10r_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j460_a10_lcw_subjes_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_j460_a10t_lcw_jes_L1J100', groups=SingleJetGroup), @@ -140,6 +140,8 @@ def setupMenu(): # ATR-20049 ChainProp(name='HLT_3j200_L1J100', groups=MultiJetGroup), + ChainProp(name='HLT_j80_j60_L1J15', l1SeedThresholds=['']*2, groups=MultiJetGroup), + ChainProp(name='HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20', l1SeedThresholds=['']*3, groups=MultiJetGroup), ] TriggerFlags.BjetSlice.signatures = [ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index d62ab8c069e8b46b37bf200b1b5b9e2e5c0f4ed4..c877d2f56b1590cc036f6771d4fa3ee2cea2e11b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -213,19 +213,18 @@ class InputMakerNode(AlgNode): from DecisionHandling.DecisionHandlingConf import ComboHypo class ComboMaker(AlgNode): - def __init__(self, name): + def __init__(self, name, multiplicity): Alg = ComboHypo(name) log.debug("Making combo Alg %s", name) AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions') self.prop="MultiplicitiesMap" + self.mult=multiplicity def addChain(self, chainDict): chainName = chainDict['chainName'] log.debug("ComboMaker %s adding chain %s", self.Alg.name(),chainName) - from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import getChainMultFromDict - allMultis = [int(x) for x in getChainMultFromDict( chainDict )] - + allMultis = self.mult newdict = {chainName : allMultis} cval = self.Alg.getProperties()[self.prop] # check necessary to see if chain was added already? @@ -271,6 +270,8 @@ def isFilterAlg(alg): class MenuSequence(object): """ Class to group reco sequences with the Hypo""" + """ By construction it has one Hypo Only; behaviour changed to support muFastOvlpRmSequence() which has two, but this will change""" + def __init__(self, Sequence, Maker, Hypo, HypoToolGen, CA=None ): assert Maker.name().startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name()) self.sequence = Node( Alg=Sequence) @@ -282,6 +283,7 @@ class MenuSequence(object): self.ca = CA if type(Hypo) is list: + log.warning("Sequence %s has more than one Hypo; correct your sequence for next develpments") self.name=[] self.hypoToolConf=[] self._hypo=[] @@ -570,15 +572,16 @@ class CFSequence(object): class ChainStep(object): - """Class to describe one step of a chain; if multiplicity is greater than 1, the step is combo/combined""" - def __init__(self, name, Sequences=[], multiplicity=1): + """Class to describe one step of a chain; if multiplicity is greater than 1, the step is combo/combined. Set one multiplicity value per sequence""" + def __init__(self, name, Sequences=[], multiplicity=[1]): + self.name = name self.sequences=[] self.multiplicity = multiplicity - self.isCombo=multiplicity>1 + self.isCombo=sum(multiplicity)>1 self.combo=None if self.isCombo: - self.makeCombo(Sequences) + self.makeCombo(Sequences ) else: self.sequences = Sequences @@ -588,7 +591,7 @@ class ChainStep(object): return # For combo sequences, duplicate the sequence, the Hypo with differnt names and create the ComboHypoAlg - self.combo = ComboMaker(CFNaming.comboHypoName(self.name)) + self.combo = ComboMaker(CFNaming.comboHypoName(self.name), self.multiplicity) duplicatedHypos = [] for sequence in Sequences: if type(sequence.hypo) is list: @@ -622,7 +625,7 @@ class ChainStep(object): self.sequences.append(new_sequence) def __repr__(self): - return "--- ChainStep %s ---\n + isCombo: %d, multiplicity= %d \n + %s \n "%(self.name, self.isCombo,self.multiplicity, ' '.join(map(str, self.sequences) )) + return "--- ChainStep %s ---\n + isCombo = %d, multiplicity = %d \n + MenuSequences = %s \n "%(self.name, self.isCombo,sum(self.multiplicity), ' '.join(map(str, [seq.name for seq in self.sequences]) )) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py index d9ad166472d2d0f6bd629442df0f84a43ac4ee65..5f4c97d80ce71db559659a8be0579db1dbdeacfd 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py @@ -192,7 +192,7 @@ class MuonChainConfiguration(ChainConfigurationBase): stepName = 'Step5_muInvM' log.debug("Configuring step " + stepName) seq = RecoFragmentsPool.retrieve( muEFCBInvMSequenceCfg, None) - return ChainStep(stepName, [seq], multiplicity=1) + return ChainStep(stepName, [seq], multiplicity=[1]) #-------------------- def getLateMu(self):