From 3f69b8260a3328380ee4b744888d53cc26b065a7 Mon Sep 17 00:00:00 2001 From: Stewart Martin-Haugh <stewart.martin-haugh@cern.ch> Date: Tue, 23 Nov 2021 12:22:27 +0100 Subject: [PATCH] Supercell emulation in newJO --- .../python/TileCablingSvcConfig.py | 49 ++++++++++++------- .../python/TileConfigFlags.py | 7 +++ .../TrigCaloRec/python/TrigCaloRecConfig.py | 17 +++++++ .../L1CaloFEXSim/python/L1CaloFEXSimCfg.py | 27 +++++----- .../python/EmulationConfig.py | 29 +++++++++++ .../python/Lvl1SimulationConfig.py | 8 +-- 6 files changed, 103 insertions(+), 34 deletions(-) diff --git a/TileCalorimeter/TileConditions/python/TileCablingSvcConfig.py b/TileCalorimeter/TileConditions/python/TileCablingSvcConfig.py index 66ab034a086..c3994d4dc37 100644 --- a/TileCalorimeter/TileConditions/python/TileCablingSvcConfig.py +++ b/TileCalorimeter/TileConditions/python/TileCablingSvcConfig.py @@ -25,26 +25,37 @@ def TileCablingSvcCfg(flags): tileCablingSvc = CompFactory.TileCablingSvc() geometry = flags.GeoModel.AtlasVersion - runNumber = flags.Input.RunNumber[0] run = flags.GeoModel.Run - if run == 'RUN1': - if runNumber > 219651: - # Choose RUN2 cabling for old geometry tags starting from 26-MAR-2013 - tileCablingSvc.CablingType = 4 - msg.warning("Forcing RUN2 cabling for run %s with geometry %s", runNumber, geometry) - - elif run == 'RUN2': - if (flags.Input.isMC and runNumber >= 310000) or runNumber >= 343000 or runNumber < 1: - # Choose RUN2a cabling for R2 geometry tags starting from 31-Jan-2018 - tileCablingSvc.CablingType = 5 - msg.info("Forcing RUN2a (2018) cabling for run %s with geometry %s", runNumber, geometry) - - else: - tileCablingSvc.CablingType = 4 - msg.info("Forcing RUN2 (2014-2017) cabling for run %s with geometry %s", runNumber, geometry) - elif run == 'RUN3': - tileCablingSvc.CablingType = 6 - msg.info("Forcing RUN3 cabling for run %s with geometry %s", run, geometry) + + if not flags.Common.isOnline: + runNumber = flags.Input.RunNumber[0] + if run == 'RUN1': + if runNumber > 219651: + # Choose RUN2 cabling for old geometry tags starting from 26-MAR-2013 + tileCablingSvc.CablingType = 4 + msg.warning("Forcing RUN2 cabling for run %s with geometry %s", runNumber, geometry) + + elif run == 'RUN2': + if (flags.Input.isMC and runNumber >= 310000) or runNumber >= 343000 or runNumber < 1: + # Choose RUN2a cabling for R2 geometry tags starting from 31-Jan-2018 + tileCablingSvc.CablingType = 5 + msg.info("Forcing RUN2a (2018) cabling for run %s with geometry %s", runNumber, geometry) + + else: + tileCablingSvc.CablingType = 4 + msg.info("Forcing RUN2 (2014-2017) cabling for run %s with geometry %s", runNumber, geometry) + elif run == 'RUN3': + tileCablingSvc.CablingType = 6 + msg.info("Forcing RUN3 cabling for run %s with geometry %s", run, geometry) + else: #Running online or simulating running online: either way, do not access run number + if run == 'RUN2': + tileCablingSvc.CablingType = 5 + msg.info("Forcing RUN2a (2018) cabling for online run with geometry %s", geometry) + elif run == 'RUN3': + tileCablingSvc.CablingType = 6 + msg.info("Forcing RUN3 cabling for online run with geometry %s", geometry) + else: + log.error("CablingType only defined for Run 2 and Run 3 geometries") acc.addService(tileCablingSvc, primary = True) diff --git a/TileCalorimeter/TileConfiguration/python/TileConfigFlags.py b/TileCalorimeter/TileConfiguration/python/TileConfigFlags.py index 07368f70b3b..46865d9d5d7 100644 --- a/TileCalorimeter/TileConfiguration/python/TileConfigFlags.py +++ b/TileCalorimeter/TileConfiguration/python/TileConfigFlags.py @@ -39,6 +39,13 @@ def createTileConfigFlags(): def _doOpt2ByDefault(prevFlags): + #For online operation don't check run number + if prevFlags.Common.isOnline: + if 'collisions' in prevFlags.Beam.Type: + return False # Use OF without iterations for collisions + else: + return True + runNumber = prevFlags.Input.RunNumber[0] # Run Optimal Filter with iterations (Opt2) by default, # both for cosmics and collisions data before 2011 diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py index 886c27a3c64..39a03868cfe 100755 --- a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py +++ b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py @@ -707,6 +707,23 @@ def hltCaloCellMakerCfg(flags, name=None, roisKey='UNSPECIFIED'): acc.addEventAlgo(cellMaker, primary=True) return acc +def hltCaloCellSeedlessMakerCfg(flags, roisKey='UNSPECIFIED'): + acc = ComponentAccumulator() + from TrigT2CaloCommon.TrigCaloDataAccessConfig import trigCaloDataAccessSvcCfg, CaloDataAccessSvcDependencies + acc.merge(trigCaloDataAccessSvcCfg(flags)) + + hltCaloCellSeedLessMaker = CompFactory.HLTCaloCellMaker("CaloCellSeedLessFS", ExtraInputs = CaloDataAccessSvcDependencies, + RoIs = roisKey, + CellsName ="SeedLessFS") + + acc.addEventAlgo(hltCaloCellSeedLessMaker, primary=True) + + from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg + acc.merge(CaloNoiseCondAlgCfg(flags, noisetype="electronicNoise")) + acc.addCondAlgo(CompFactory.CaloNoiseSigmaDiffCondAlg()) + + return acc + def hltTopoClusterMakerCfg(flags, name, clustersKey, cellsKey="CaloCells"): acc = ComponentAccumulator() from CaloRec.CaloTopoClusterConfig import ( diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py index feeb56db43d..b0baeff31ae 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py @@ -6,28 +6,31 @@ def L1CaloFEXSimCfg(flags): from AthenaConfiguration.ComponentFactory import CompFactory acc = ComponentAccumulator() - from TrigT1CaloFexPerf.L1PerfControlFlags import L1Phase1PerfFlags as simflags if flags.Input.isMC: - SCellType = "SCell" + sCellType = "SCell" else: - SCellType = simflags.Calo.SCellType() + sCellType = "EmulatedSCell" + from TrigT1CaloFexPerf.EmulationConfig import emulateSC_Cfg + acc.merge(emulateSC_Cfg(flags,SCOut=sCellType)) + + eFEX = CompFactory.LVL1.eFEXDriver('eFEXDriver', - SCell=SCellType ) - eFEX.eSuperCellTowerMapperTool.SCell=SCellType - eFEX.eFEXSysSimTool.SCell=SCellType + SCell=sCellType ) + eFEX.eSuperCellTowerMapperTool = CompFactory.LVL1.eSuperCellTowerMapper('eSuperCellTowerMapper', SCell=sCellType) + eFEX.eFEXSysSimTool = CompFactory.LVL1.eFEXSysSim('eFEXSysSimTool', SCell=sCellType) acc.addEventAlgo(eFEX) # jFEX part jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver', - SCell=SCellType ) - jFEX.jSuperCellTowerMapperTool.SCell=SCellType - jFEX.jFEXSysSimTool.SCell=SCellType + SCell=sCellType ) + jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType) + jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool', SCell=sCellType) acc.addEventAlgo(jFEX) gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver', - SCell=SCellType ) - gFEX.gSuperCellTowerMapperTool.SCell=SCellType - gFEX.gFEXSysSimTool.SCell=SCellType + SCell=sCellType ) + gFEX.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper', SCell=sCellType) + gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool', SCell=sCellType) acc.addEventAlgo(gFEX) return acc diff --git a/Trigger/TrigT1/TrigT1CaloFexPerf/python/EmulationConfig.py b/Trigger/TrigT1/TrigT1CaloFexPerf/python/EmulationConfig.py index c486bbabc8f..6e2dfb28ec0 100644 --- a/Trigger/TrigT1/TrigT1CaloFexPerf/python/EmulationConfig.py +++ b/Trigger/TrigT1/TrigT1CaloFexPerf/python/EmulationConfig.py @@ -56,3 +56,32 @@ def emulateSC(sCell_sequence, CellsIn="SeedLessFS", SCOut="EmulatedSCell"): if(perfFlags.Calo.ApplyEmulatedPedestal()): #Apply the pedestal correction. There may be cases we do not want this. sCell_sequence+=larscbea + +def emulateSC_Cfg(flags, CellsIn="SeedLessFS", SCOut="EmulatedSCell"): + + from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + from AthenaConfiguration.ComponentFactory import CompFactory + acc = ComponentAccumulator() + if flags.Input.isMC: + from LArCabling.LArCablingConfig import LArFebRodMappingCfg + acc.merge(LArFebRodMappingCfg(flags)) + + from TrigCaloRec.TrigCaloRecConfig import hltCaloCellSeedlessMakerCfg + acc.merge(hltCaloCellSeedlessMakerCfg(flags, roisKey = "")) + + + #Use SCEmulation tool that randomly samples time histograms to estimate time for low energy and negative cells forming a supercell + acc.addEventAlgo(CompFactory.LVL1.SCEmulation(InputCells=CellsIn, OutputSuperCells = "EmulatedSCellNoBCID")) + + from LArROD.LArSCSimpleMakerConfig import LArSuperCellBCIDEmAlgCfg + + larSCargs = {} + larSCargs["SCellContainerIn"] = "EmulatedSCellNoBCID" + larSCargs["SCellContainerOut"] = SCOut + + if(perfFlags.Calo.ApplyEmulatedPedestal()): + #Apply the pedestal correction. There may be cases we do not want this. + #The default input to LARSuperCellBCIDEmAlg (which applies the BCID correction) is the same: SCellContainer + acc.merge(LArSuperCellBCIDEmAlgCfg(flags, **larSCargs)) + + return acc diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py index e113c6211e2..8e8aa612b3e 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py @@ -205,9 +205,11 @@ def Lvl1SimulationCfg(flags, seqName = None): from TrigT1CaloSim.TrigT1CaloSimRun2Config import L1CaloLegacySimCfg acc.merge(L1CaloLegacySimCfg(flags), sequenceName='L1CaloLegacySimSeq') - #acc.addSequence(seqAND('L1CaloSimSeq'), parentName='L1SimSeq') - #from TrigT1CaloSim.TrigT1CaloSimRun2Config import L1CaloSimCfg - #acc.merge(L1CaloSimCfg(flags), sequenceName='L1CaloSimSeq') + acc.addSequence(seqAND('L1CaloSimSeq'), parentName='L1SimSeq') + + if flags.Trigger.enableL1CaloPhase1: + from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg + acc.merge(L1CaloFEXSimCfg(flags), sequenceName = 'L1CaloSimSeq') acc.addSequence(seqAND('L1MuonSimSeq'), parentName='L1SimSeq') from TriggerJobOpts.Lvl1MuonSimulationConfig import Lvl1MuonSimulationCfg -- GitLab