ATLAS Offline Software
Loading...
Searching...
No Matches
HION12.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2# HION12.py
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import MetadataCategory
7from AthenaCommon.CFElements import seqAND
8
9
12 """Configure the example skimming tool"""
13 acc = ComponentAccumulator()
14
15 ExtraData = []
16 ExtraData += ['xAOD::VertexContainer/PrimaryVertices']
17 if (flags.Input.ProjectName == "data15_hi" or flags.Input.ProjectName == "data18_hi"):
18 ExtraData += ['xAOD::JetContainer/AntiKt4EMTopoJets']
19 ExtraData += ['xAOD::JetContainer/AntiKt4LCTopoJets']
20 ExtraData += ['xAOD::JetContainer/AntiKt4EMPFlowJets']
21 ExtraData += ['xAOD::JetContainer/AntiKt4HIJets']
22 ExtraData += ['xAOD::JetContainer/AntiKt4HITrackJets']
23 ExtraData += ['xAOD::JetContainer/AntiKt10LCTopoJets']
24
25 acc.addSequence( seqAND("HION12Sequence") )
26 acc.getSequence("HION12Sequence").ExtraDataForDynamicConsumers = ExtraData
27 acc.getSequence("HION12Sequence").ProcessDynamicDataDependencies = True
28
29 #Building jet skimming triggers
30 from DerivationFrameworkHI import ListTriggers
31
32 objectSelection = '(count(PrimaryVertices.z < 1000) < 10)'
33 nJetCuts = ListTriggers.GetHION12nJetCuts(flags.Input.ProjectName)
34 triggers = ListTriggers.GetHION12Triggers(flags.Input.ProjectName)
35 filterList = []
36
37 expression = '('+objectSelection+ ' && ' + '(' + ' || '.join(nJetCuts) + ')' + ')'
38
39 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
40 xAODStringSkimmingToolCfg)
41 HION12StringSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
42 xAODStringSkimmingToolCfg(flags, name = "HION12StringSkimmingTool",
43 expression = expression)))
44 filterList += [HION12StringSkimmingTool]
45
46 HION12TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
47 name = "HION12TriggerSkimmingTool", TriggerListOR = triggers)
48 acc.addPublicTool(HION12TriggerSkimmingTool)
49 filterList += [HION12TriggerSkimmingTool]
50
51 HION12SkimmingTool = CompFactory.DerivationFramework.FilterCombinationAND(
52 name="HION12SkimmingTool", FilterList=filterList)
53 acc.addPublicTool(HION12SkimmingTool, primary = True)
54
55 return(acc)
56
57
58def HION12KernelCfg(flags, name='HION12Kernel', **kwargs):
59 """Configure the derivation framework driving algorithm (kernel)"""
60 acc = ComponentAccumulator()
61 from DerivationFrameworkHI.HION7 import (
62 PhysAugmentationsHION7Cfg)
63 acc.merge(PhysAugmentationsHION7Cfg(flags))
64
65 if flags.HeavyIon.doHIBTagging:
66 #Rebuild jets
67 from DerivationFrameworkJetEtMiss.JetCommonConfig import JetCommonCfg
68 acc.merge(JetCommonCfg(flags))
69 from BTagging.FlavorTaggingConfig import FlavorTaggingCfg
70 acc.merge(FlavorTaggingCfg(flags, "AntiKt4EMPFlowJets"))
71 from BTagging.TrackLeptonConfig import TrackLeptonDecorationCfg
72 acc.merge(TrackLeptonDecorationCfg(flags))
73
74
75
77 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg
78
79 thinningTools = []
80 # track thinning for data only, all tracks in MC used for training
81 if not flags.Input.isMC:
82 expression = "abs(InDetTrackParticles.d0)< 1000000000 && abs(InDetTrackParticles.z0*sin(InDetTrackParticles.theta)) < 1000000000 && InDetTrackParticles.pt > 200" #check limits
83 HION12TrackThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
84 flags,
85 name = "HION12TrackThinningTool",
86 StreamName = kwargs['StreamName'],
87 SelectionString = expression,
88 InDetTrackParticlesKey = "InDetTrackParticles"))
89
90 thinningTools = [HION12TrackThinningTool]
91
92 skimmingTool = acc.getPrimaryAndMerge(HION12SkimmingToolCfg(flags))
93
94 DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
95 acc.addEventAlgo(DerivationKernel(name,
96 SkimmingTools = [skimmingTool],
97 ThinningTools = thinningTools),
98 sequenceName = "HION12Sequence")
99
100 return acc
101
102def HION12Cfg(flags):
103
104 acc = ComponentAccumulator()
105 acc.merge(HION12KernelCfg(flags, name="HION12Kernel",StreamName = "StreamDAOD_HION12"))
106
107 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
108 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
109 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
110
111
113 from DerivationFrameworkHI import ListSlimming
114
115 HION12SlimmingHelper = SlimmingHelper("HION12SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
116
117 HION12SlimmingHelper.SmartCollections = ListSlimming.HION12SmartCollections()
118 HION12SlimmingHelper.AllVariables = ListSlimming.HION12AllVarContent(flags.Input.ProjectName)
119 HION12SlimmingHelper.ExtraVariables = ListSlimming.HION12Extra()
120
121
122 HION12ItemList = HION12SlimmingHelper.GetItemList()
123
124 acc.merge(OutputStreamCfg(flags, "DAOD_HION12", ItemList=HION12ItemList, AcceptAlgs=["HION12Kernel"]))
125 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION12", AcceptAlgs=["HION12Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
126
127 return acc
HION12SkimmingToolCfg(flags)
Skiming.
Definition HION12.py:11
HION12KernelCfg(flags, name='HION12Kernel', **kwargs)
Definition HION12.py:58
HION12Cfg(flags)
Definition HION12.py:102