ATLAS Offline Software
Loading...
Searching...
No Matches
L1CALOCore Namespace Reference

Functions

 L1CALOCoreCfg (flags, deriv='L1CALO1', **kwargs)
 addEfexTOBs (slimminghelper, allVariables, postFix="")
 addJfexTOBs (slimminghelper, allVariables, postFix="")
 addGfexTOBs (slimminghelper, allVariables, postFix="")

Function Documentation

◆ addEfexTOBs()

L1CALOCore.addEfexTOBs ( slimminghelper,
allVariables,
postFix = "" )
add the list of eFEX containers for given postFix string

Definition at line 655 of file L1CALOCore.py.

655def addEfexTOBs(slimminghelper, allVariables, postFix = ""):
656 """
657 add the list of eFEX containers for given postFix string
658 """
659 slimminghelper.AppendToDictionary.update (
660 {"L1_eEMRoI"+postFix : "xAOD::eFexEMRoIContainer",
661 "L1_eEMRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
662 "L1_eTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
663 "L1_eTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
664 "L1_eTauRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
665 "L1_eTauRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
666 "L1_cTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
667 "L1_cTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
668 "L1_eEMxRoI"+postFix : "xAOD::eFexEMRoIContainer",
669 "L1_eEMxRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
670 "L1_eTauxRoI"+postFix : "xAOD::eFexTauRoIContainer",
671 "L1_eTauxRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
672 "L1_eTauxRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
673 "L1_eTauxRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer"} )
674
675 allVariables += ["L1_eEMRoI" + postFix,
676 "L1_eTauRoI" + postFix,
677 "L1_eTauRoIAlt" + postFix,
678 "L1_cTauRoI" + postFix,
679 "L1_eEMxRoI" + postFix,
680 "L1_eTauxRoI" + postFix,
681 "L1_eTauxRoIAlt" + postFix]
682
683 return slimminghelper, allVariables
684
685

◆ addGfexTOBs()

L1CALOCore.addGfexTOBs ( slimminghelper,
allVariables,
postFix = "" )
add the list of gFEX containers for given postFix string

Definition at line 732 of file L1CALOCore.py.

732def addGfexTOBs(slimminghelper, allVariables, postFix = ""):
733 """
734 add the list of gFEX containers for given postFix string
735 """
736 slimminghelper.AppendToDictionary.update (
737 {"L1_gFexRhoRoI"+postFix : "xAOD::gFexJetRoIContainer",
738 "L1_gFexRhoRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
739 "L1_gFexSRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
740 "L1_gFexSRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
741 "L1_gScalarEJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
742 "L1_gScalarEJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
743 "L1_gFexLRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
744 "L1_gFexLRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
745 "L1_gMETComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
746 "L1_gMETComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
747 "L1_gMHTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
748 "L1_gMHTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
749 "L1_gMSTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
750 "L1_gMSTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer"})
751
752 allVariables += ["L1_gFexRhoRoI" + postFix,
753 "L1_gFexSRJetRoI" + postFix,
754 "L1_gScalarEJwoj" + postFix,
755 "L1_gFexLRJetRoI" + postFix,
756 "L1_gMETComponentsJwoj" + postFix,
757 "L1_gMHTComponentsJwoj" + postFix,
758 "L1_gMSTComponentsJwoj" + postFix]
759
760 return slimminghelper, allVariables

◆ addJfexTOBs()

L1CALOCore.addJfexTOBs ( slimminghelper,
allVariables,
postFix = "" )
add the list of jFEX containers for given postFix string

Definition at line 686 of file L1CALOCore.py.

686def addJfexTOBs(slimminghelper, allVariables, postFix = ""):
687 """
688 add the list of jFEX containers for given postFix string
689 """
690 slimminghelper.AppendToDictionary.update (
691 {"L1_jFexMETRoI"+postFix : "xAOD::jFexMETRoIContainer",
692 "L1_jFexMETRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
693 "L1_jFexTauRoI"+postFix : "xAOD::jFexTauRoIContainer",
694 "L1_jFexTauRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
695 "L1_jFexFwdElRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
696 "L1_jFexFwdElRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
697 "L1_jFexSRJetRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
698 "L1_jFexSRJetRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
699 "L1_jFexLRJetRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
700 "L1_jFexLRJetRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
701 "L1_jFexSumETRoI"+postFix : "xAOD::jFexSumETRoIContainer",
702 "L1_jFexSumETRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer",
703 "L1_jFexMETxRoI"+postFix : "xAOD::jFexMETRoIContainer",
704 "L1_jFexMETxRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
705 "L1_jFexTauxRoI"+postFix : "xAOD::jFexTauRoIContainer",
706 "L1_jFexTauxRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
707 "L1_jFexFwdElxRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
708 "L1_jFexFwdElxRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
709 "L1_jFexSRJetxRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
710 "L1_jFexSRJetxRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
711 "L1_jFexLRJetxRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
712 "L1_jFexLRJetxRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
713 "L1_jFexSumETxRoI"+postFix : "xAOD::jFexSumETRoIContainer",
714 "L1_jFexSumETxRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer"})
715
716 allVariables += ["L1_jFexMETRoI" + postFix,
717 "L1_jFexTauRoI" + postFix,
718 "L1_jFexFwdElRoI" + postFix,
719 "L1_jFexSRJetRoI" + postFix,
720 "L1_jFexLRJetRoI" + postFix,
721 "L1_jFexSumETRoI" + postFix,
722 "L1_jFexMETxRoI" + postFix,
723 "L1_jFexTauxRoI" + postFix,
724 "L1_jFexFwdElxRoI" + postFix,
725 "L1_jFexSRJetxRoI" + postFix,
726 "L1_jFexLRJetxRoI" + postFix,
727 "L1_jFexSumETxRoI" + postFix]
728
729 return slimminghelper, allVariables
730
731

◆ L1CALOCoreCfg()

L1CALOCore.L1CALOCoreCfg ( flags,
deriv = 'L1CALO1',
** kwargs )
Core fragment for L1CALO derivations

Definition at line 15 of file L1CALOCore.py.

15def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs):
16 """
17 Core fragment for L1CALO derivations
18 """
19 from AthenaCommon.Logging import logging
20 log = logging.getLogger('L1CALO')
21 log.info('Called L1CaloCore config for derivation %s',deriv)
22
23 streamNameStem = "DAOD_" + deriv
24 streamName = "Stream" + streamNameStem
25
26 acc = ComponentAccumulator()
27
28 # the derivation can also be run on pool files e.g. MC - need to switch off many decoders etc..
29 # Note: static content not allowed when running on pool
30 isNotPool = flags.Input.Format is not Format.POOL
31
32 fillSuperCells=False
33
34 # has the L1Calo simulation been configured by job flags
35 isL1CaloSim = flags.Trigger.L1.doeFex and flags.Trigger.L1.dojFex and flags.Trigger.L1.dogFex
36
37 # decode the legacy L1Calo information - required because flags.Trigger.doLVL1 is False
38 if isNotPool:
39 from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
40 acc.merge(LVL1CaloRun2ReadBSCfg(flags))
41
42 # set up thinning tools
43 thinningTools = []
44
45 # set up legacy trigger tower thinning for L1CALO1
46 if 'L1CALO1' in deriv and isNotPool:
47 from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerThinningCfg
48 LegacyTowerThinningTool = acc.getPrimaryAndMerge(LegacyTriggerTowerThinningCfg(
49 flags,
50 name = "L1CALOCaloThinningTool",
51 StreamName = streamName,
52 TriggerTowerLocation = "xAODTriggerTowers",
53 MinCaloCellET = 0.8,
54 MinADC = 36,
55 UseRandom = True,
56 MinRandom = 0.01 ) )
57 thinningTools.append(LegacyTowerThinningTool)
58
59 # set up decorators
60 # Legacy Trigger Tower decorator
61 if isNotPool:
62 from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerDecoratorCfg
63 acc.merge(LegacyTriggerTowerDecoratorCfg(flags, name = 'L1CaloTriggerTowerDecorator'))
64
65 # setup skimming tool example (AOD data only)
66 skimmingTools = []
67 if not isNotPool and not flags.Input.isMC:
68 # example trigger skimming tool as with JETM10.py
69 skimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(name = "L1CALOSkimmingTool1",
70 TriggerListOR = ["HLT_noalg_L1XE.*"] )
71 acc.addPublicTool(skimmingTool, primary = True)
72 skimmingTools.append(skimmingTool)
73
74 #
75 augmentationTools = []
76
77 # Set up the derivation kernel
78 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
79 acc.addEventAlgo(DerivationKernel(
80 name = "DFL1CALO_KERN",
81 AugmentationTools = augmentationTools,
82 ThinningTools = thinningTools,
83 SkimmingTools = skimmingTools,
84 RunSkimmingFirst = not isNotPool,
85 doChronoStat=(flags.Concurrency.NumThreads <= 1),
86 OutputLevel = INFO))
87
88 # Phase 1 setup
89 # emulate/decorate the input towers
90 # first need to decode LATOME readout
91 if isNotPool:
92 from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg
93 acc.merge(ReadSCellFromByteStreamCfg(flags))
94
95 # Emulate jFEX input towers
96 emulatedDataTowersKey = "L1_jFexEmulatedTowers"
97 if flags.Trigger.L1.dojFex and isNotPool:
98 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
99 acc.merge(jFexEmulatedTowersCfg(flags, writeKey=emulatedDataTowersKey))
100
101 # Decorate any jFEX data towers
102 extraJfexInfo = False # for decorating with SCell inputs to the towers
103 if flags.Trigger.L1.dojFex and isNotPool:
104 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
105 acc.merge(L1CalojFEXDecoratorCfg(flags, ExtraInfo=extraJfexInfo))
106
107 # Decorate the emulated jFEX towers
108 if flags.Trigger.L1.dojFex and isNotPool:
109 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
110 acc.merge(L1CalojFEXDecoratorCfg(flags,name='jFexTower2SCellEmulatedDecorator',jTowersReadKey=emulatedDataTowersKey,ExtraInfo=extraJfexInfo))
111
112 # determine if enough samples to build SC_ET
113 nsamples=-1
114 if not flags.Input.isMC:
115 from LArConditionsCommon.LArRunFormat import getLArDTInfoForRun
116 runinfo = getLArDTInfoForRun(flags.Input.RunNumbers[0], connstring="COOLONL_LAR/CONDBR2")
117 #
118 for i in range(0,len(runinfo.streamTypes())):
119 log.info("LAr DT runinfo index: %s type: %s nsamples: %s", i, runinfo.streamTypes()[i], runinfo.streamLengths()[i])
120 if "ADC" in runinfo.streamTypes()[i]:
121 nsamples=runinfo.streamLengths()[i]
122
123 # Create SC_ET if sufficient samples in data or it is MC
124 if nsamples==6:
125 # first built the Supercells from the ADC
126 from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
127 acc.merge(LArElecCalibDBSCCfg(flags, condObjs=["DAC2uA", "HVScaleCorr", "MphysOverMcal", "OFC", "Pedestal", "Ramp", "uA2MeV"]))
128 larLATOMEBuilderAlg=CompFactory.LArLATOMEBuilderAlg("LArLATOMEBuilderAlg2")
129 # for standard runs with baseline corrections
130 baselineCorr = True # need to find a run with no baseline corrections and the correct settings to see what to expect
131 larLATOMEBuilderAlg.isADCBas = True if baselineCorr else False
132 larLATOMEBuilderAlg.LArDigitKey = "SC_ADC_BAS" if baselineCorr else 'SC'
133 # output
134 larLATOMEBuilderAlg.LArRawSCKey = "SC_RECO2"
135 acc.addEventAlgo(larLATOMEBuilderAlg)
136
137 # create SCell_ET without timing applied
138 from LArCellRec.LArRAWtoSuperCellConfig import LArRAWtoSuperCellCfg
139 acc.merge(LArRAWtoSuperCellCfg(flags, name="LArRAWRecotoSuperCell2", mask=True, doReco=True, SCIn="SC_RECO2", SCellContainerOut="SCell_ET") )
140 # build jFEX towers from SC_ET
141 acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell_ET", writeKey="L1_jFexEmulatedNoIdTowers",
142 OfflineCaloCell="AllCalo"))
143 elif flags.Input.isMC:
144 # the TriggerTowerDecoration for tile not useable for MC, but we can decorate for LAr
145 # if we do not run the simulation on MC the SCells are written so nothing to do here
146 if isL1CaloSim:
147 # read SCell (default is without timing applied)
148 # Need geometry and conditions for the SCell converter from POOL
149 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
150 acc.merge(LArGMCfg(flags))
151 # build jFEX towers with extra decoration
152 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
153 acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell", writeKey="L1_jFexEmulatedNoIdTowers",
154 OfflineCaloCell="AllCalo"))
155
156 # Emulate eFEX input towers
157 if flags.Trigger.L1.doeFex and isNotPool:
158 from L1CaloFEXAlgos.FexEmulatedTowersConfig import eFexEmulatedTowersCfg
159 eFexEmulatedTool = eFexEmulatedTowersCfg(flags,'L1_eFexEmulatedTowers')
160 acc.merge(eFexEmulatedTool)
161
162
163 # Re-simulate from LATOME (for both data and POOL files with SCells)
164 from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg
165 if isNotPool:
166 acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
167 elif isL1CaloSim:
168 SCellType = flags.Trigger.L1.L1CaloSuperCellContainerName
169 if SCellType in flags.Input.Collections:
170 acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
171 # Need to deal with database for MC productions where L1Calo DB was not in global tag
172 if flags.Input.isMC:
173 from Campaigns.Utils import Campaign
174 log.info("MC Campaign",flags.Input.MCCampaign)
175 if flags.Input.MCCampaign != Campaign.MC23e:
176 if flags.Trigger.L1.doeFex:
177 from IOVDbSvc.IOVDbSvcConfig import addOverride
178 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts', 'EfexNoiseCuts-RUN3-MCDEFAULT-TEST-00'))
179 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib', 'EfexEnergyCalib-RUN3-MCDEFAULT-TEST-00'))
180 if flags.Trigger.L1.dojFex:
181 from IOVDbSvc.IOVDbSvcConfig import addOverride
182 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexSystemSettings', 'JfexSystemSettings-RUN3-MCDEFAULT-TEST'))
183 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexModuleSettings', 'JfexModuleSettings-RUN3-MCDEFAULT-TEST'))
184 acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexNoiseCuts', 'JfexNoiseCuts-RUN3-MCDEFAULT-TEST'))
185
186 # decorate the eFEX TOBs
187 if flags.Trigger.L1.doeFex and isNotPool:
188 # Temporary fix to ensure the L1 TOBs are decoded by the Trigger
189 from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput
190 ExtraInputs = [('xAOD::TrigCompositeContainer', 'StoreGateSvc+'+getRun3NavigationContainerFromInput(flags))]
191 acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecorator',
192 eFexEMRoIContainer = 'L1_eEMRoI',
193 eFexTauRoIContainer = 'L1_eTauRoI',
194 ExtraInputs=ExtraInputs) )
195 acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecoratorSim',
196 eFexEMRoIContainer = 'L1_eEMRoISim',
197 eFexTauRoIContainer = 'L1_eTauRoIAltSim',
198 ExtraInputs=[]) )
199
200 if fillSuperCells:
201 acc.addEventAlgo( CompFactory.LVL1.eFexTOBSuperCellDecorator('eFexTOBSuperCellDecoratorSim',
202 eFexEMRoIContainer = 'L1_eEMRoISim',
203 eFexTauRoIContainer = 'L1_eTauxRoISim') )
204
205 # set up the slimming helper
206 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
207
208 L1CaloSlimmingHelper = SlimmingHelper("L1CaloSlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
209
210 AllVariables = []
211 StaticContent = []
212 SmartCollections = []
213 ExtraVariables = []
214
215 L1CaloSlimmingHelper.IncludeTriggerNavigation = True # Trigger info is actually stored only when running on data...
216 L1CaloSlimmingHelper.IncludeAdditionalTriggerContent = False # precludes EGamma/Jet TriggerContent
217
218 L1CaloSlimmingHelper.IncludeEGammaTriggerContent = True
219 L1CaloSlimmingHelper.IncludeJetTriggerContent = True
220 L1CaloSlimmingHelper.IncludeBJetTriggerContent = True
221 L1CaloSlimmingHelper.IncludeTauTriggerContent = True # does not select any Run3 HLT collections - added below
222 IncludeEtMissTriggerContent = True # very useful to have MET trigger info
223
224 # Container selection based on share/L1CALO versions
225 # Note: if the container is in the on-the-fly list (ContainersOnTheFly.py) then we do not have to add it to the dictionary
226 # We can do smart slimming if the container is in the smart list (FullListOfSmartContainers.py)
227
228 # if we do not run the simulation on MC, write SCells
229 if flags.Input.isMC and not isL1CaloSim:
230 L1CaloSlimmingHelper.AppendToDictionary.update({"SCell":"CaloCellContainer"})
231 AllVariables += ["SCell"]
232
233 # some gymnastics for HLT from RAWD
234 if isNotPool and L1CaloSlimmingHelper.IncludeEGammaTriggerContent:
235 # replicate adding EGammaTriggerContent
236 # switch the eGamma Trigger off for RAW data - smart slimming not required
237 L1CaloSlimmingHelper.IncludeEGammaTriggerContent = False
238 ElToKeep = ['ptcone20', 'ptvarcone20', 'ptcone30', 'ptvarcone30', 'trk_d0','cl_eta2','cl_phi2', 'deltaEta1PearDistortion']
239 ElVars = '.'.join(ElToKeep)
240 StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons"]
241 StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_ElectronsAux."+ElVars]
242 StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons_GSF"]
243 StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_Electrons_GSFAux."+ElVars]
244 # non-slimmed
245 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_CaloEMClusters_Electron":"xAOD::CaloClusterContainer",
246 "HLT_CaloEMClusters_ElectronAux":"xAOD::CaloClusterAuxContainer"})
247 AllVariables += ["HLT_CaloEMClusters_Electron"]
248 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_IDTrig":"xAOD::TrackParticleContainer",
249 "HLT_IDTrack_Electron_IDTrigAux":"xAOD::TrackParticleAuxContainer"})
250 AllVariables += ["HLT_IDTrack_Electron_IDTrig"]
251 L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_GSF":"xAOD::TrackParticleContainer",
252 "HLT_IDTrack_Electron_GSFAux":"xAOD::TrackParticleAuxContainer"})
253 AllVariables += ["HLT_IDTrack_Electron_GSF"]
254
255 if isNotPool and L1CaloSlimmingHelper.IncludeJetTriggerContent:
256 # replicate adding JetTriggerContent - easier because this is genuine smart slimming
257 # Update the dictionary with the containers that will be smart slimmed
258 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_AntiKt4EMTopoJets_nojcalib":"xAOD::JetContainer",
259 "HLT_AntiKt4EMTopoJets_nojcalibAux":"xAOD::JetAuxContainer",
260 "HLT_AntiKt4EMTopoJets_nojcalib_ftf":"xAOD::JetContainer",
261 "HLT_AntiKt4EMTopoJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
262 "HLT_AntiKt4EMTopoJets_subjesIS":"xAOD::JetContainer",
263 "HLT_AntiKt4EMTopoJets_subjesISAux":"xAOD::ShallowAuxContainer",
264 "HLT_AntiKt4EMPFlowJets_nojcalib_ftf":"xAOD::JetContainer",
265 "HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
266 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":"xAOD::JetContainer",
267 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
268 "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf":"xAOD::JetContainer",
269 "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
270 "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf":"xAOD::JetContainer",
271 "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux":"xAOD::JetAuxContainer",
272 "HLT_IDVertex_FS":"xAOD::VertexContainer",
273 "HLT_IDVertex_FSAux":"xAOD::VertexAuxContainer",
274 "HLT_TCEventInfo_jet":"xAOD::TrigCompositeContainer",
275 "HLT_TCEventInfo_jetAux":"xAOD::TrigCompositeAuxContainer",
276 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging": "xAOD::BTaggingContainer",
277 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAux": "xAOD::BTaggingAuxContainer",
278 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets": "xAOD::JetContainer",
279 "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux": "xAOD::JetAuxContainer"})
280
281 AllVariables += ["HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging", "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets"]
282
283 if L1CaloSlimmingHelper.IncludeTauTriggerContent:
284 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_TrigTauRecMerged_MVA":"xAOD::TauJetContainer",
285 "HLT_TrigTauRecMerged_MVAAux":"xAOD::TauJetAuxContainer",
286 "HLT_TrigTauRecMerged_LLP":"xAOD::TauJetContainer",
287 "HLT_TrigTauRecMerged_LLPAux":"xAOD::TauJetAuxContainer",
288 "HLT_TrigTauRecMerged_LRT":"xAOD::TauJetContainer",
289 "HLT_TrigTauRecMerged_LRTAux":"xAOD::TauJetAuxContainer",
290 "HLT_TrigTauRecMerged_CaloMVAOnly":"xAOD::TauJetContainer",
291 "HLT_TrigTauRecMerged_CaloMVAOnlyAux":"xAOD::TauJetAuxContainer"})
292 AllVariables += ["HLT_TrigTauRecMerged_MVA", "HLT_TrigTauRecMerged_LLP", "HLT_TrigTauRecMerged_LRT", "HLT_TrigTauRecMerged_CaloMVAOnly"]
293
294 if IncludeEtMissTriggerContent:
295 L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_MET_tcpufit":"xAOD::TrigMissingETContainer",
296 "HLT_MET_tcpufitAux":"xAOD::TrigMissingETAuxContainer",
297 "HLT_MET_cell":"xAOD::TrigMissingETContainer",
298 "HLT_MET_cellAux":"xAOD::TrigMissingETAuxContainer", # not present
299 "HLT_MET_trkmht":"xAOD::TrigMissingETContainer",
300 "HLT_MET_trkmhtAux":"xAOD::TrigMissingETAuxContainer",
301 "HLT_MET_cvfpufit":"xAOD::TrigMissingETContainer",
302 "HLT_MET_cvfpufitAux":"xAOD::TrigMissingETAuxContainer",
303 "HLT_MET_pfopufit":"xAOD::TrigMissingETContainer",
304 "HLT_MET_pfopufitAux":"xAOD::TrigMissingETAuxContainer",
305 "HLT_MET_mhtpufit_em":"xAOD::TrigMissingETContainer",
306 "HLT_MET_mhtpufit_emAux":"xAOD::TrigMissingETAuxContainer",
307 "HLT_MET_mhtpufit_pf":"xAOD::TrigMissingETContainer",
308 "HLT_MET_mhtpufit_pfAux":"xAOD::TrigMissingETAuxContainer",
309 "HLT_MET_pfsum":"xAOD::TrigMissingETContainer",
310 "HLT_MET_pfsumAux":"xAOD::TrigMissingETAuxContainer",
311 "HLT_MET_pfsum_vssk":"xAOD::TrigMissingETContainer",
312 "HLT_MET_pfsum_vsskAux":"xAOD::TrigMissingETAuxContainer",
313 "HLT_MET_pfsum_cssk":"xAOD::TrigMissingETContainer",
314 "HLT_MET_pfsum_csskAux":"xAOD::TrigMissingETAuxContainer",
315 "HLT_MET_nn":"xAOD::TrigMissingETContainer",
316 "HLT_MET_nnAux":"xAOD::TrigMissingETAuxContainer"})
317
318 AllVariables += ["HLT_MET_tcpufit","HLT_MET_cell","HLT_MET_trkmht","HLT_MET_cvfpufit","HLT_MET_pfopufit","HLT_MET_mhtpufit_em","HLT_MET_mhtpufit_pf","HLT_MET_pfsum","HLT_MET_pfsum_vssk","HLT_MET_pfsum_cssk","HLT_MET_nn"]
319
320 # Generic event info
321 L1CaloSlimmingHelper.AppendToDictionary.update({"EventInfo":"xAOD::EventInfo","EventInfoAux":"xAOD::EventAuxInfo"})
322
323 # We keep all of EventInfo rather than smart slim
324 AllVariables += ["EventInfo","Kt4EMPFlowEventShape"]
325
326 # Physics Objects
327 # Those for which there is smart slimming but not in the on the fly list
328 L1CaloSlimmingHelper.AppendToDictionary.update (
329 {"Muons":"xAOD::MuonContainer", "MuonsAux":"xAOD::MuonAuxContainer",
330 "Photons":"xAOD::PhotonContainer", "PhotonsAux":"xAOD::PhotonAuxContainer",
331 "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"}
332 )
333 AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"]
334 AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
335 # TauJets require smart slimming in order not to cause issues
336 SmartCollections += ["TauJets"]
337
338 # Use unslimmed electrons in order to use Likelihood qualities
339 L1CaloSlimmingHelper.AppendToDictionary.update (
340 {"Electrons":"xAOD::ElectronContainer", "ElectronsAux":"xAOD::ElectronAuxContainer"} )
341 AllVariables += ["Electrons"]
342
343 L1CaloSlimmingHelper.AppendToDictionary.update (
344 {"ForwardElectrons":"xAOD::ElectronContainer", "ForwardElectronsAux":"xAOD::ElectronAuxContainer"} )
345 AllVariables += ["ForwardElectrons"]
346
347 # Missing ET - unslimmed container
348 AllVariables += ["METAssoc_AntiKt4EMPFlow"]
349
350 # using MET slimming as per share/L1CALOX.py
351 if isNotPool:
352 StaticContent += ["xAOD::MissingETContainer#MET_Reference_AntiKt4EMPFlow"]
353 StaticContent += ["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMPFlowAux.-ConstitObjectLinks.-ConstitObjectWeights"]
354
355 StaticContent += ["xAOD::MissingETContainer#MET_Core_AntiKt4EMPFlow"]
356 StaticContent += ["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMPFlowAux.name.mpx.mpy.sumet.source"]
357
358 StaticContent += ["xAOD::MissingETContainer#MET_Track"]
359 StaticContent += ["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"]
360 else:
361 AllVariables += ["MET_Reference_AntiKt4EMPFlow"]
362 AllVariables += ["MET_Core_AntiKt4EMPFlow"]
363 L1CaloSlimmingHelper.AppendToDictionary.update (
364 {"MET_Track":"xAOD::MissingETContainer", "MET_TrackAux":"xAOD::MissingETAuxContainer"} )
365 AllVariables += ["MET_Track"]
366
367 # Primary vertices
368 if isNotPool:
369 StaticContent += ["xAOD::VertexContainer#PrimaryVertices"]
370 StaticContent += ["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"]
371 else:
372 L1CaloSlimmingHelper.AppendToDictionary.update(
373 {"PrimaryVertices":"xAOD::VertexContainer","PrimaryVerticesAux":"xAOD::VertexAuxContainer"}
374 )
375 AllVariables += ["PrimaryVertices"]
376
377
378 # Egamma CP additions
379 L1CaloSlimmingHelper.AppendToDictionary.update (
380 {"egammaTopoSeededClusters":"xAOD::CaloClusterContainer","egammaTopoSeededClustersAux":"xAOD::CaloClusterAuxContainer"}
381 )
382 AllVariables += ["egammaTopoSeededClusters"]
383
384 # GSF vertices and tracks
385 if isNotPool:
386 StaticContent += ["xAOD::VertexContainer#GSFConversionVertices"]
387 # we have to disable vxTrackAtVertex branch since it is not xAOD compatible
388 StaticContent += ["xAOD::VertexAuxContainer#GSFConversionVerticesAux.-vxTrackAtVertex"]
389 #
390 trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
391 StaticContent += ["xAOD::TrackParticleContainer#GSFTrackParticles"]
392 StaticContent += ["xAOD::TrackParticleAuxContainer#GSFTrackParticlesAux."+trackParticleAuxExclusions]
393 else:
394 L1CaloSlimmingHelper.AppendToDictionary.update (
395 {"GSFConversionVertices":"xAOD::VertexContainer",
396 "GSFConversionVerticesAux":"xAOD::VertexAuxContainer",
397 "GSFTrackParticles":"xAOD::TrackParticleContainer",
398 "GSFTrackParticlesAux":"xAOD::TrackParticleAuxContainer"}
399 )
400 AllVariables += ["GSFConversionVertices","GSFTrackParticles"]
401
402 L1CaloSlimmingHelper.AppendToDictionary.update (
403 {"egammaClusters":"xAOD::CaloClusterContainer",
404 "egammaClustersAux":"xAOD::CaloClusterAuxContainer",
405 "TauPi0Clusters":"xAOD::CaloClusterContainer",
406 "TauPi0ClustersAux":"xAOD::CaloClusterAuxContainer",
407 "CaloCalTopoClusters":"xAOD::CaloClusterContainer",
408 "CaloCalTopoClustersAux":"xAOD::CaloClusterAuxContainer",
409 "MuonSegments":"xAOD::MuonSegmentContainer",
410 "MuonSegmentsAux":"xAOD::MuonSegmentAuxContainer"}
411 )
412 AllVariables += ["egammaClusters","TauPi0Clusters","CaloCalTopoClusters","MuonSegments"]
413
414 # Add b-tagging information directly using ExtraVariables - as done for PHYSLITE
415 ExtraVariables += [
416 'BTagging_AntiKt4EMPFlow.DL1dv01_pu.DL1dv01_pc.DL1dv01_pb.GN2v00_pu.GN2v00_pc.GN2v00_pb'
417 ]
418
419 # L1Calo information
420 # Legacy RoI Containers
421 L1CaloSlimmingHelper.AppendToDictionary.update (
422 {"LVL1EmTauRoIs":"xAOD::EmTauRoIContainer",
423 "LVL1EmTauRoIsAux":"xAOD::EmTauRoIAuxContainer",
424 "LVL1EnergySumRoI":"xAOD::EnergySumRoI",
425 "LVL1EnergySumRoIAux":"xAOD::EnergySumRoIAuxInfo",
426 "LVL1JetEtRoI":"xAOD::JetEtRoI",
427 "LVL1JetEtRoIAux":"xAOD::JetEtRoIAuxInfo",
428 "LVL1JetRoIs":"xAOD::JetRoIContainer",
429 "LVL1JetRoIsAux":"xAOD::JetRoIAuxContainer",
430 "LVL1MuonRoIs":"xAOD::MuonRoIContainer",
431 "LVL1MuonRoIsAux":"xAOD::MuonRoIAuxContainer"}
432 )
433 AllVariables += [ "LVL1EmTauRoIs","LVL1EnergySumRoI","LVL1JetEtRoI","LVL1JetRoIs","LVL1MuonRoIs"]
434
435 # Legacy sub-systems
436 L1CaloSlimmingHelper.AppendToDictionary.update (
437 {"JEMTobRoIsRoIB":"xAOD::JEMTobRoIContainer",
438 "JEMTobRoIsRoIBAux":"xAOD::JEMTobRoIAuxContainer",
439 "JEMTobRoIs":"xAOD::JEMTobRoIContainer",
440 "JEMTobRoIsAux":"xAOD::JEMTobRoIAuxContainer",
441 "JEMEtSums":"xAOD::JEMEtSumsContainer",
442 "JEMEtSumsAux":"xAOD::JEMEtSumsAuxContainer"}
443 )
444 AllVariables += ["JEMTobRoIsRoIB",
445 "JEMTobRoIs",
446 "JEMEtSums"]
447
448 L1CaloSlimmingHelper.AppendToDictionary.update (
449 {"CMXCPHits":"xAOD::CMXCPHitsContainer",
450 "CMXCPHitsAux":"xAOD::CMXCPHitsAuxContainer",
451 "CMXCPTobs":"xAOD::CMXCPTobContainer",
452 "CMXCPTobsAux":"xAOD::CMXCPTobAuxContainer",
453 "CMXEtSums":"xAOD::CMXEtSumsContainer",
454 "CMXEtSumsAux":"xAOD::CMXEtSumsAuxContainer",
455 "CMXJetHits":"xAOD::CMXJetHitsContainer",
456 "CMXJetHitsAux":"xAOD::CMXJetHitsAuxContainer",
457 "CMXJetTobs":"xAOD::CMXJetTobContainer",
458 "CMXJetTobsAux":"xAOD::CMXJetTobAuxContainer",
459 "CMXRoIs":"xAOD::CMXRoIContainer",
460 "CMXRoIsAux":"xAOD::CMXRoIAuxContainer"}
461 )
462 AllVariables += ["CMXCPHits",
463 "CMXCPTobs",
464 "CMXEtSums",
465 "CMXJetHits",
466 "CMXJetTobs",
467 "CMXRoIs"]
468
469
470 L1CaloSlimmingHelper.AppendToDictionary.update (
471 {"CPMTobRoIs":"xAOD::CPMTobRoIContainer",
472 "CPMTobRoIsAux":"xAOD::CPMTobRoIAuxContainer",
473 "CPMTobRoIsRoIB":"xAOD::CPMTobRoIContainer",
474 "CPMTobRoIsRoIBAux":"xAOD::CPMTobRoIAuxContainer",
475 "CPMTowers":"xAOD::CPMTowerContainer",
476 "CPMTowersAux":"xAOD::CPMTowerAuxContainer",
477 "CPMTowersOverlap":"xAOD::CPMTowerContainer",
478 "CPMTowersOverlapAux":"xAOD::CPMTowerAuxContainer",
479 "RODHeaders":"xAOD::RODHeaderContainer",
480 "RODHeadersAux":"xAOD::RODHeaderAuxContainer",
481 "xAODTriggerTowers":"xAOD::TriggerTowerContainer",
482 "xAODTriggerTowersAux":"xAOD::TriggerTowerAuxContainer",
483 "JetElements":"xAOD::JetElementContainer",
484 "JetElementsAux":"xAOD::JetElementAuxContainer",
485 "JetElementsOverlap":"xAOD::JetElementContainer",
486 "JetElementsOverlapAux":"xAOD::JetElementAuxContainer",
487 "L1TopoRawData":"xAOD::L1TopoRawDataContainer",
488 "L1TopoRawDataAux":"xAOD::L1TopoRawDataAuxContainer",
489 "L1_Phase1L1TopoRAWData":"xAOD::L1TopoRawDataContainer",
490 "L1_Phase1L1TopoRAWDataAux":"xAOD::L1TopoRawDataAuxContainer"}
491 )
492 AllVariables += ["CPMTobRoIs",
493 "CPMTobRoIsRoIB",
494 "CPMTowers",
495 "CPMTowersOverlap",
496 "RODHeaders",
497 "xAODTriggerTowers",
498 "JetElements",
499 "JetElementsOverlap",
500 "L1TopoRawData",
501 "L1_Phase1L1TopoRAWData"]
502
503
504 # Phase 1
505 # TOBs from HLT
506 L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables)
507 L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables)
508 L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables)
509
510 # re-simulated
511 L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
512 L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
513 L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
514
515
516 # FEX input data towers
517 L1CaloSlimmingHelper.AppendToDictionary.update (
518 {"L1_eFexDataTowers":"xAOD::eFexTowerContainer",
519 "L1_eFexDataTowersAux":"xAOD::eFexTowerAuxContainer",
520 "L1_jFexDataTowers":"xAOD::jFexTowerContainer",
521 "L1_jFexDataTowersAux":"xAOD::jFexTowerAuxContainer",
522 "L1_gFexDataTowers":"xAOD::gFexTowerContainer",
523 "L1_gFexDataTowersAux":"xAOD::gFexTowerAuxContainer"}
524 )
525 AllVariables += ["L1_eFexDataTowers","L1_jFexDataTowers","L1_gFexDataTowers"]
526
527 # Emulated eFEX input tower data from LATOME
528 L1CaloSlimmingHelper.AppendToDictionary.update (
529 {"L1_eFexEmulatedTowers":"xAOD::eFexTowerContainer",
530 "L1_eFexEmulatedTowersAux":"xAOD::eFexTowerAuxContainer"}
531 )
532 AllVariables += ["L1_eFexEmulatedTowers"]
533
534 # Emulated jFEX input tower data from LATOME
535 L1CaloSlimmingHelper.AppendToDictionary.update (
536 {"L1_jFexEmulatedTowers":"xAOD::jFexTowerContainer",
537 "L1_jFexEmulatedTowersAux":"xAOD::jFexTowerAuxContainer"}
538 )
539 AllVariables += ["L1_jFexEmulatedTowers"]
540
541 # jTowers built from SC_ET aka "NoId"
542 L1CaloSlimmingHelper.AppendToDictionary.update (
543 {"L1_jFexEmulatedNoIdTowers":"xAOD::jFexTowerContainer",
544 "L1_jFexEmulatedNoIdTowersAux":"xAOD::jFexTowerAuxContainer"}
545 )
546 AllVariables += ["L1_jFexEmulatedNoIdTowers"]
547
548 # For MC, add emulated gFEX input towers
549 if flags.Input.isMC:
550 L1CaloSlimmingHelper.AppendToDictionary.update (
551 {"L1_gFexEmulatedTowers":"xAOD::gFexTowerContainer",
552 "L1_gFexEmulatedTowersAux":"xAOD::gFexTowerAuxContainer"}
553 )
554 AllVariables += [ "L1_gFexEmulatedTowers" ]
555
556 # In case MC has no jets, b-tagging or MET, schedule reconstruction
557 if flags.Input.isMC:
558 from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow
559 from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger
560 jets_to_schedule = [jet for jet in (AntiKt4EMPFlow, AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger)
561 if jet.fullname() not in flags.Input.Collections]
562
563 if jets_to_schedule:
564 from JetRecConfig.JetRecConfig import JetRecCfg
565 for container in jets_to_schedule:
566 acc.merge(JetRecCfg(flags, container))
567
568 jet_collections = set([_.fullname().replace('Jets','') for _ in jets_to_schedule])
569 btag_jet_collections = set(['AntiKt4EMPFlow'])
570 met_jet_collections = set(['AntiKt4EMPFlow'])
571
572 if jet_collections & btag_jet_collections:
573 log.info('Scheduling b-tagging of rebuilt jets')
574 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
575 acc.merge(BeamSpotCondAlgCfg(flags))
576 from BTagging.BTagConfig import BTagRecoSplitCfg
577 #
578 for container in jet_collections & btag_jet_collections:
579 acc.merge(BTagRecoSplitCfg(flags, [container]))
580
581 # MET
582 if jet_collections & met_jet_collections:
583 log.info('Scheduling rebuild of standard MET')
584 from METReconstruction.METAssociatorCfg import METAssociatorCfg
585 from METUtilities.METMakerConfig import getMETMakerAlg
586 for container in jet_collections & met_jet_collections:
587 if container == 'AntiKt4EMPFlow':
588 # build links between FlowElements and electrons, photons, muons and taus
589 log.info('Scheduling FlowElement linking')
590 from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
591 acc.merge(PFGlobalFlowElementLinkingCfg(flags))
592 acc.merge(METAssociatorCfg(flags, container))
593 acc.addEventAlgo(getMETMakerAlg(container))
594 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
595 acc.merge(CaloNoiseCondAlgCfg(flags)) # Prereq for Calo MET
596 from METReconstruction.METCalo_Cfg import METCalo_Cfg
597 acc.merge(METCalo_Cfg(flags))
598
599
600 # Truth collections
601 if flags.Input.isMC:
602 from DerivationFrameworkMCTruth.MCTruthCommonConfig import PreJetMCTruthAugmentationsCfg
603 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTruthCollectionNavigationDecorationsCfg,AddBornLeptonCollectionCfg
604 from DerivationFrameworkMCTruth.MCTruthCommonConfig import PostJetMCTruthAugmentationsCfg
605
606 acc.merge(PreJetMCTruthAugmentationsCfg(flags,decorationDressing = 'dressedPhoton'))
607 #
608 from JetRecConfig.StandardSmallRJets import AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged
609 from JetRecConfig.StandardLargeRJets import AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop
610 from JetRecConfig.JetRecConfig import JetRecCfg
611 jetList = [AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged,
612 AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop]
613
614 for jd in jetList:
615 if jd.fullname() not in flags.Input.Collections:
616 acc.merge(JetRecCfg(flags,jd))
617
618 if ( "xAOD::MissingETContainer#MET_Truth") not in flags.Input.TypedCollections:
619 from METReconstruction.METTruth_Cfg import METTruth_Cfg
620 acc.merge(METTruth_Cfg(flags))
621
622 acc.merge(PostJetMCTruthAugmentationsCfg(flags, decorationDressing = 'dressedPhoton'))
623 acc.addEventAlgo(CompFactory.DerivationFramework.LockDecorations(name ="L1CALOTruthContentsLockDecoration", Decorations = ['TruthParticles.dressedPhoton']))
624 acc.merge(AddTruthCollectionNavigationDecorationsCfg(flags, ["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos"]))
625 # Special collection for Born leptons
626 acc.merge(AddBornLeptonCollectionCfg(flags))
627
628 AllVariables += [
629 "TruthElectrons",
630 "TruthMuons",
631 "TruthPhotons",
632 "TruthTaus",
633 "TruthNeutrinos",
634 "BornLeptons",
635 "MET_Truth",
636 "AntiKt4TruthJets",
637 "AntiKt4TruthWZJets",
638 "AntiKt10TruthTrimmedPtFrac5SmallR20Jets",
639 "AntiKt10TruthSoftDropBeta100Zcut10Jets"
640 ]
641
642 L1CaloSlimmingHelper.AllVariables = AllVariables
643 L1CaloSlimmingHelper.StaticContent = StaticContent
644 L1CaloSlimmingHelper.SmartCollections = SmartCollections
645 L1CaloSlimmingHelper.ExtraVariables = ExtraVariables
646
647 # Output stream
648 L1CaloItemList = L1CaloSlimmingHelper.GetItemList()
649 acc.merge(OutputStreamCfg(flags, streamNameStem, ItemList=L1CaloItemList, AcceptAlgs=["DFL1CALO_KERN"]))
650 acc.merge(SetupMetaDataForStreamCfg(flags, streamNameStem, AcceptAlgs=["DFL1CALO_KERN"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TriggerMenuMetaData]))
651
652 return acc
653
654
STL class.
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition hcg.cxx:310