13def BPHY4Cfg(flags):
14 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_TrkVKalVrtFitterCfg)
15 from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
16 acc = ComponentAccumulator()
17 V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName))
18 vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName))
19 acc.addPublicTool(vkalvrt)
20 acc.addPublicTool(V0Tools)
21 trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName))
22 acc.addPublicTool(trackselect)
23 PVrefit = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
24 acc.addPublicTool(PVrefit)
25 BPHY4FourMuonTool = CompFactory.DerivationFramework.FourMuonTool(
26 name = "BPHY4FourMuonTool",
27 ptCut = 2500.0,
28 etaCut = 2.5,
29 muonCollectionKey = "Muons",
30 TrackParticleCollection = "InDetTrackParticles",
31 V0VertexFitterTool = None,
32 useV0Fitter = False,
33 TrkVertexFitterTool = vkalvrt,
34 TrackSelectorTool = trackselect)
35 BPHY4_Reco_4mu = CompFactory.DerivationFramework.Reco_4mu(
36 name = "BPHY4_Reco_4mu",
37 FourMuonTool = BPHY4FourMuonTool,
38 V0Tools = V0Tools,
39 PVRefitter = PVrefit,
40 PairContainerName = "BPHY4Pairs",
41 QuadrupletContainerName = "BPHY4Quads",
42 PVContainerName = "PrimaryVertices",
43 RefPVContainerName = "BPHY4RefittedPrimaryVertices",
44 RefitPV = True,
45 MaxPVrefit = 100000,
46 DoVertexType = 7)
47
48 BPHY4MuonTPThinningTool = CompFactory.DerivationFramework.MuonTrackParticleThinning(name = "BPHY4MuonTPThinningTool",
49 MuonKey = "Muons",
50 StreamName = streamName,
51 InDetTrackParticlesKey = "InDetTrackParticles")
52 BPHY4ElectronTPThinningTool = CompFactory.DerivationFramework.EgammaTrackParticleThinning(name = "BPHY4ElectronTPThinningTool",
53 SGKey = "Electrons",
54 GSFTrackParticlesKey = "GSFTrackParticles",
55 StreamName = streamName,
56 InDetTrackParticlesKey = "InDetTrackParticles")
57
58
59 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
60 xAODStringSkimmingToolCfg)
61 BPHY4_SelectEvent = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
62 flags, name = 'BPHY4_SelectEvent',
63 expression = '(count(Muons.BPHY4MuonIndex>=0)>0)'))
64
65 BPHY4ThinningTools = [BPHY4MuonTPThinningTool, BPHY4ElectronTPThinningTool]
66 BPHY4SlimTools = [BPHY4_SelectEvent]
67 BPHY4AugTools = [BPHY4_Reco_4mu]
68 for t in BPHY4ThinningTools + BPHY4SlimTools + BPHY4AugTools: acc.addPublicTool(t)
69 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel("BPHY4Kernel",
70 AugmentationTools= BPHY4AugTools, SkimmingTools = BPHY4SlimTools, ThinningTools = BPHY4ThinningTools ))
71
72 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
73 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
74 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
75 BPHY4SlimmingHelper =
SlimmingHelper(
"BPHY4SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
76 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
77 BPHY4AllVariables = getDefaultAllVariables()
78 BPHY4StaticContent = []
79 BPHY4SmartVariables =[]
80 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
81
82
83 BPHY4SlimmingHelper.IncludeMuonTriggerContent = True
84 BPHY4SlimmingHelper.IncludeBPhysTriggerContent = True
85
86
87 BPHY4AllVariables += ["PrimaryVertices"]
88 BPHY4StaticContent += ["xAOD::VertexContainer#BPHY4RefittedPrimaryVertices"]
89 BPHY4StaticContent += ["xAOD::VertexAuxContainer#BPHY4RefittedPrimaryVerticesAux."]
90
91
92 BPHY4AllVariables += ["InDetTrackParticles"]
93 BPHY4SmartVariables += ["InDetTrackParticles"]
94
95
98 BPHY4AllVariables += ["CombinedMuonTrackParticles"]
99 BPHY4AllVariables += ["ExtrapolatedMuonTrackParticles"]
100
101
102 BPHY4SmartVariables += ["Muons"]
103
104
105 BPHY4SmartVariables += ["Electrons"]
106
107
108 BPHY4StaticContent += ["xAOD::VertexContainer#%s" % BPHY4_Reco_4mu.PairContainerName]
109 BPHY4StaticContent += ["xAOD::VertexContainer#%s" % BPHY4_Reco_4mu.QuadrupletContainerName]
110
111
112 BPHY4StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY4_Reco_4mu.PairContainerName]
113 BPHY4StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY4_Reco_4mu.QuadrupletContainerName]
114
115 BPHY4SlimmingHelper.AllVariables = BPHY4AllVariables
116 BPHY4SlimmingHelper.StaticContent = BPHY4StaticContent
117 BPHY4SlimmingHelper.SmartCollections = BPHY4SmartVariables
118 BPHY4ItemList = BPHY4SlimmingHelper.GetItemList()
119 acc.merge(OutputStreamCfg(flags, "DAOD_BPHY4", ItemList=BPHY4ItemList, AcceptAlgs=["BPHY4Kernel"]))
120 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_BPHY4", AcceptAlgs=["BPHY4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
121 acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True)
122 return acc