28 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import (
29 BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg,
30 BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg,
32 from JpsiUpsilonTools.JpsiUpsilonToolsConfig
import PrimaryVertexRefittingToolCfg
33 acc = ComponentAccumulator()
34 isSimulation = flags.Input.isMC
35 V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName))
36 vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName))
37 acc.addPublicTool(vkalvrt)
38 acc.addPublicTool(V0Tools)
39 trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName))
40 acc.addPublicTool(trackselect)
41 vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, BPHYDerivationName))
42 acc.addPublicTool(vpest)
43 PVrefit = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
44 acc.addPublicTool(PVrefit)
47 doLRT = flags.Tracking.doLargeD0
48 if not doLRT :
print(
"BPHY28: LRT tracks disabled")
49 mainMuonInput =
"StdWithLRTMuons" if doLRT
else "Muons"
50 mainIDInput =
"InDetWithLRTTrackParticles" if doLRT
else "InDetTrackParticles"
52 from DerivationFrameworkLLP.LLPToolsConfig
import LRTMuonMergerAlg
53 from AthenaConfiguration.Enums
import LHCPeriod
54 acc.merge(LRTMuonMergerAlg( flags,
55 PromptMuonLocation =
"Muons",
56 LRTMuonLocation =
"MuonsLRT",
57 OutputMuonLocation = mainMuonInput,
58 CreateViewCollection =
True,
59 UseRun3WP = flags.GeoModel.Run == LHCPeriod.Run3))
60 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
61 acc.merge(InDetLRTMergeCfg(flags))
62 toRelink = [
"InDetTrackParticles",
"InDetLargeD0TrackParticles"]
if doLRT
else []
63 MuonReLink = [
"Muons",
"MuonsLRT" ]
if doLRT
else []
65 BPHY28_AugOriginalCounts = acc.popToolsAndMerge(
66 AugOriginalCountsCfg(flags, name =
"BPHY28_AugOriginalCounts"))
67 augList += [ BPHY28_AugOriginalCounts ]
69 BPHY28MuMuFinder = CompFactory.Analysis.JpsiFinder(
70 name =
"BPHY28MuMuFinder",
73 TrackAndTrack =
False,
75 invMassUpper = 100000.0,
78 oppChargesOnly =
True,
80 atLeastOneComb =
False,
81 useCombinedMeasurement =
False,
82 muonCollectionKey = mainMuonInput,
83 TrackParticleCollection = mainIDInput,
84 TrkVertexFitterTool = vkalvrt,
85 TrackSelectorTool = trackselect,
86 VertexPointEstimator = vpest,
89 BPHY28MuMuSelectAndWrite = CompFactory.DerivationFramework.Reco_Vertex(name =
"BPHY28MuMuSelectAndWrite",
90 VertexSearchTool = BPHY28MuMuFinder,
91 OutputVtxContainerName = MuMuContainerName,
92 PVContainerName =
"PrimaryVertices",
95 RefPVContainerName =
"SHOULDNOTBEUSED",
96 RelinkTracks = toRelink,
97 RelinkMuons = MuonReLink,
99 augList += [ BPHY28MuMuSelectAndWrite ]
100 thinTrkVtxList += [ MuMuContainerName ]
103 BPHY28_Select_Jpsi2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
104 name =
"BPHY28_Select_Jpsi2mumu",
105 HypothesisName =
"Jpsi",
106 InputVtxContainerName = MuMuContainerName,
108 VtxMassHypo = 3096.916,
111 Chi2Max = 100, Do3d =
False,
113 augList += [ BPHY28_Select_Jpsi2mumu ]
116 BPHY28BsKKMuMu = CompFactory.Analysis.JpsiPlus2Tracks(name =
"BPHY28BsKKMuMu",
117 kaonkaonHypothesis =
True,
118 pionpionHypothesis =
False,
119 kaonpionHypothesis =
False,
120 trkThresholdPt = 500.0,
124 DiTrackMassUpper = 1220,
125 DiTrackMassLower = 820,
127 TrkQuadrupletMassUpper = 6000.0,
128 TrkQuadrupletMassLower = 4800.0,
129 JpsiContainerKey = MuMuContainerName,
130 TrackParticleCollection = mainIDInput,
131 MuonsUsedInJpsi = mainMuonInput,
132 TrkVertexFitterTool = vkalvrt,
133 TrackSelectorTool = trackselect,
134 UseMassConstraint =
False)
137 BPHY28BsKKSelectAndWrite = CompFactory.DerivationFramework.Reco_Vertex(name =
"BPHY28BsKKSelectAndWrite",
138 VertexSearchTool = BPHY28BsKKMuMu,
139 OutputVtxContainerName = BsPhiMuMuContainerName,
140 PVContainerName =
"PrimaryVertices",
142 PVRefitter = PVrefit,
143 RefPVContainerName =
"BPHY28RefittedPrimaryVertices",
144 RefitPV =
True, Do3d =
False,
145 RelinkTracks = toRelink,
146 MaxPVrefit = 10000, DoVertexType = 7)
147 augList += [ BPHY28BsKKSelectAndWrite ]
148 thinTrkVtxList += [ BsPhiMuMuContainerName ]
151 BPHY28_Select_Bs2KKMuMu = CompFactory.DerivationFramework.Select_onia2mumu(
152 name =
"BPHY28_Select_Bs2KKMuMu",
153 HypothesisName =
"Bs",
154 InputVtxContainerName = BsPhiMuMuContainerName,
156 TrkMasses = [105.658, 105.658, 493.677, 493.677],
157 VtxMassHypo = 5366.3,
159 MassMax = 5900.0, Do3d =
False,
161 augList += [ BPHY28_Select_Bs2KKMuMu ]
165 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
166 xAODStringSkimmingToolCfg)
167 BPHY28_SelectBsKKMuMuEvent = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
168 flags, name =
"BPHY28_SelectBsKKMuMuEvent",
169 expression =
"count(BPHY28BsKKMuMuCandidates.passed_Bs) > 0"))
170 skimList += [ BPHY28_SelectBsKKMuMuEvent ]
175 BPHY28_Thin_VtxTracks = CompFactory.DerivationFramework.Thin_vtxTrk( name =
"BPHY28_Thin_VtxTracks",
176 StreamName = streamName,
177 TrackParticleContainerName =
"InDetTrackParticles",
178 VertexContainerNames = thinTrkVtxList,
180 thinList += [ BPHY28_Thin_VtxTracks ]
184 BPHY28_Thin_VtxTracks_LRT = CompFactory.DerivationFramework.Thin_vtxTrk( name =
"BPHY28_Thin_VtxTracks_LRT",
185 StreamName = streamName,
186 TrackParticleContainerName =
"InDetLargeD0TrackParticles",
187 VertexContainerNames = thinTrkVtxList,
189 thinList += [ BPHY28_Thin_VtxTracks_LRT ]
192 for t
in augList + skimList + thinList : acc.addPublicTool(t)
193 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"BPHY28Kernel",
194 AugmentationTools = augList,
196 SkimmingTools = skimList,
197 ThinningTools = thinList))
203 doLRT = flags.Tracking.doLargeD0
204 isSimulation = flags.Input.isMC
206 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
207 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
208 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
209 BPHY28SlimmingHelper =
SlimmingHelper(
"BPHY28SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
210 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import getDefaultAllVariables
211 AllVariables = getDefaultAllVariables()
215 BPHY28SlimmingHelper.IncludeMuonTriggerContent =
True
216 BPHY28SlimmingHelper.IncludeBPhysTriggerContent =
True
219 AllVariables += [
"PrimaryVertices"]
220 StaticContent += [
"xAOD::VertexContainer#BPHY28RefittedPrimaryVertices"]
221 StaticContent += [
"xAOD::VertexAuxContainer#BPHY28RefittedPrimaryVerticesAux."]
225 AllVariables += [
"InDetTrackParticles",
"InDetLargeD0TrackParticles"]
if doLRT
else [
"InDetTrackParticles"]
230 AllVariables += [
"CombinedMuonTrackParticles"]
231 AllVariables += [
"ExtrapolatedMuonTrackParticles"]
234 AllVariables += [
"Muons",
"MuonsLRT"]
if doLRT
else [
"Muons"]
238 StaticContent += [
"xAOD::VertexContainer#%s" % MuMuContainerName]
240 StaticContent += [
"xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % MuMuContainerName]
242 StaticContent += [
"xAOD::VertexContainer#%s" % BsPhiMuMuContainerName]
243 StaticContent += [
"xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BsPhiMuMuContainerName]
247 AllVariables += [
"MuonSpectrometerTrackParticles" ]
248 SmartVar = [
"Photons",
"Electrons",
"LRTElectrons"]
if doLRT
else [
"Photons",
"Electrons"]
253 AllVariables += [
"TruthEvents",
"TruthParticles",
"TruthVertices",
"MuonTruthParticles",
"egammaTruthParticles" ]
256 AllVariables = list(
set(AllVariables))
258 BPHY28SlimmingHelper.AllVariables = AllVariables
259 BPHY28SlimmingHelper.StaticContent = StaticContent
260 BPHY28SlimmingHelper.SmartCollections = SmartVar
261 BPHY28ItemList = BPHY28SlimmingHelper.GetItemList()
262 acc.merge(OutputStreamCfg(flags,
"DAOD_BPHY28", ItemList=BPHY28ItemList, AcceptAlgs=[
"BPHY28Kernel"]))
263 acc.merge(SetupMetaDataForStreamCfg(flags,
"DAOD_BPHY28", AcceptAlgs=[
"BPHY28Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
264 acc.printConfig(withDetails=
True, summariseProps=
True, onlyComponents = [], printDefaults=
True)