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 )'
49 HION4OTightTrackSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
50 xAODStringSkimmingToolCfg(flags, name =
"HION4OTightTrackSkimmingTool",
51 expression = tightTrackOnlySelection)))
52 filterList = [HION4ObjSkimmingTool, HION4OTightTrackSkimmingTool]
54 if flags.Trigger.EDMVersion != -1:
55 from DerivationFrameworkHI
import ListTriggers
56 triggers = ListTriggers.HION4SkimmingTriggersALL()
57 HION4TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
58 name =
"HION4TriggerSkimmingTool", TriggerListOR = triggers)
59 acc.addPublicTool(HION4TriggerSkimmingTool)
60 HION4ObjTriggerSkimmingTool = (
61 CompFactory.DerivationFramework.FilterCombinationAND(
62 name=
"HION4ObjTriggerSkimmingTool",
63 FilterList=[HION4TriggerSkimmingTool, HION4ObjSkimmingTool]))
64 acc.addPublicTool(HION4ObjTriggerSkimmingTool)
66 VMtrigger = ListTriggers.HION4SkimmingTriggersVM()
67 HION4VMTriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
68 name =
"HION4VMTriggerSkimmingTool", TriggerListOR = VMtrigger)
69 acc.addPublicTool(HION4VMTriggerSkimmingTool)
70 HION4OTightTrackTriggerSkimmingTool = (
71 CompFactory.DerivationFramework.FilterCombinationAND(
72 name=
"HION4OTightTrackTriggerSkimmingTool",
73 FilterList=[HION4VMTriggerSkimmingTool, HION4OTightTrackSkimmingTool]))
74 acc.addPublicTool(HION4ObjTriggerSkimmingTool)
76 filterList = [HION4ObjTriggerSkimmingTool, HION4OTightTrackTriggerSkimmingTool]
78 HION4SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
79 name=
"HION4SkimmingTool", FilterList=filterList)
80 acc.addPublicTool(HION4SkimmingTool, primary =
True)
93 """Configure the derivation framework driving algorithm (kernel)"""
94 acc = ComponentAccumulator()
97 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, SkimmingTools = [skimmingTool]),
98 sequenceName=
"HION4Sequence")
133 acc.merge(OutputStreamCfg(flags,
"DAOD_HION4", ItemList=HION4ItemList, AcceptAlgs=[
"HION4Kernel"]))
134 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_HION4", AcceptAlgs=[
"HION4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))