12 """Configure the example skimming tool"""
13 acc = ComponentAccumulator()
16 ExtraData += [
'xAOD::MuonContainer/Muons']
17 ExtraData += [
'xAOD::ElectronContainer/Electrons']
18 ExtraData += [
'xAOD::PhotonContainer/Photons']
19 ExtraData += [
'xAOD::TrackParticleContainer/InDetTrackParticles']
21 acc.addSequence( seqAND(
"HION4Sequence") )
22 acc.getSequence(
"HION4Sequence").ExtraDataForDynamicConsumers = ExtraData
23 acc.getSequence(
"HION4Sequence").ProcessDynamicDataDependencies =
True
25 muonsRequirements =
'(Muons.pt >= 2.0*GeV) && (abs(Muons.eta) < 2.6)'
26 muonOnlySelection =
'count('+muonsRequirements+
') >= 1'
28 electronsRequirements =
'(Electrons.pt > 1.5*GeV) && (abs(Electrons.eta) < 2.6)'
29 electronOnlySelection =
'count('+electronsRequirements+
') >= 1'
31 photonsRequirements =
'(Photons.pt >= 1.5*GeV)'
32 photonOnlySelection =
'count('+photonsRequirements+
') >=2'
34 electronPhotonSelection =
'(count('+electronsRequirements+
') + count('+photonsRequirements+
')) >= 2'
36 trackRequirements =
'(InDetTrackParticles.pt >= 0.2*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
37 trackOnlySelection =
'( count('+trackRequirements+
') >= 2 && 5 >= count('+trackRequirements+
') )'
39 objectSelection =
'('+muonOnlySelection+
' || '+electronOnlySelection+
' || '+photonOnlySelection+
' || '+electronPhotonSelection+
' || '+trackOnlySelection+
')'
41 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
42 xAODStringSkimmingToolCfg)
43 HION4ObjSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
44 xAODStringSkimmingToolCfg(flags, name =
"HION4ObjSkimmingTool",
45 expression = objectSelection)))
47 tightTrackRequirements =
'(InDetTrackParticles.pt >= 1*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
48 tightTrackOnlySelection =
'( count('+tightTrackRequirements+
') == 2 )'
50 HION4TightTrackSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
51 xAODStringSkimmingToolCfg(flags, name =
"HION4TightTrackSkimmingTool",
52 expression = tightTrackOnlySelection)))
53 filterList = [HION4ObjSkimmingTool, HION4TightTrackSkimmingTool]
55 if flags.Trigger.EDMVersion != -1:
56 from DerivationFrameworkHI
import ListTriggers
57 triggers = ListTriggers.HION4SkimmingTriggersALL()
58 HION4TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
59 name =
"HION4TriggerSkimmingTool", TriggerListOR = triggers)
60 acc.addPublicTool(HION4TriggerSkimmingTool)
61 HION4ObjTriggerSkimmingTool = (
62 CompFactory.DerivationFramework.FilterCombinationAND(
63 name=
"HION4ObjTriggerSkimmingTool",
64 FilterList=[HION4TriggerSkimmingTool, HION4ObjSkimmingTool]))
65 acc.addPublicTool(HION4ObjTriggerSkimmingTool)
67 VMtrigger = ListTriggers.HION4SkimmingTriggersVM()
68 HION4VMTriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
69 name =
"HION4VMTriggerSkimmingTool", TriggerListOR = VMtrigger)
70 acc.addPublicTool(HION4VMTriggerSkimmingTool)
71 HION4TightTrackTriggerSkimmingTool = (
72 CompFactory.DerivationFramework.FilterCombinationAND(
73 name=
"HION4TightTrackTriggerSkimmingTool",
74 FilterList=[HION4VMTriggerSkimmingTool, HION4TightTrackSkimmingTool]))
75 acc.addPublicTool(HION4TightTrackTriggerSkimmingTool)
77 filterList = [HION4ObjTriggerSkimmingTool, HION4TightTrackTriggerSkimmingTool]
79 HION4SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
80 name=
"HION4SkimmingTool", FilterList=filterList)
81 acc.addPublicTool(HION4SkimmingTool, primary =
True)
94 """Configure the derivation framework driving algorithm (kernel)"""
95 acc = ComponentAccumulator()
98 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, SkimmingTools = [skimmingTool]),
99 sequenceName=
"HION4Sequence")
134 acc.merge(OutputStreamCfg(flags,
"DAOD_HION4", ItemList=HION4ItemList, AcceptAlgs=[
"HION4Kernel"]))
135 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_HION4", AcceptAlgs=[
"HION4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))