28 from DerivationFrameworkBPhys.commonBPHYMethodsCfg
import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg)
29 from JpsiUpsilonTools.JpsiUpsilonToolsConfig
import PrimaryVertexRefittingToolCfg
31 isSimulation = flags.Input.isMC
32 V0Tools = acc.popToolsAndMerge(
BPHY_V0ToolCfg(flags, BPHYDerivationName))
34 acc.addPublicTool(vkalvrt)
35 acc.addPublicTool(V0Tools)
37 acc.addPublicTool(trackselect)
39 acc.addPublicTool(vpest)
41 acc.addPublicTool(PVrefit)
44 doLRT = flags.Tracking.doLargeD0
45 if not doLRT :
print(
"BPHY28: LRT tracks disabled")
46 mainMuonInput =
"StdWithLRTMuons" if doLRT
else "Muons"
47 mainIDInput =
"InDetWithLRTTrackParticles" if doLRT
else "InDetTrackParticles"
49 from DerivationFrameworkLLP.LLPToolsConfig
import LRTMuonMergerAlg
50 from AthenaConfiguration.Enums
import LHCPeriod
52 PromptMuonLocation =
"Muons",
53 LRTMuonLocation =
"MuonsLRT",
54 OutputMuonLocation = mainMuonInput,
55 CreateViewCollection =
True,
56 UseRun3WP = flags.GeoModel.Run == LHCPeriod.Run3))
57 from DerivationFrameworkInDet.InDetToolsConfig
import InDetLRTMergeCfg
59 toRelink = [
"InDetTrackParticles",
"InDetLargeD0TrackParticles"]
if doLRT
else []
60 MuonReLink = [
"Muons",
"MuonsLRT" ]
if doLRT
else []
63 BPHY28_AugOriginalCounts = CompFactory.DerivationFramework.AugOriginalCounts(
64 name =
"BPHY28_AugOriginalCounts",
65 VertexContainer =
"PrimaryVertices",
66 TrackContainer =
"InDetTrackParticles",
67 TrackLRTContainer =
"InDetLargeD0TrackParticles" if doLRT
else "")
68 augList += [ BPHY28_AugOriginalCounts ]
70 BPHY28MuMuFinder = CompFactory.Analysis.JpsiFinder(
71 name =
"BPHY28MuMuFinder",
74 TrackAndTrack =
False,
76 invMassUpper = 100000.0,
79 oppChargesOnly =
True,
81 atLeastOneComb =
False,
82 useCombinedMeasurement =
False,
83 muonCollectionKey = mainMuonInput,
84 TrackParticleCollection = mainIDInput,
86 TrkVertexFitterTool = vkalvrt,
87 V0VertexFitterTool =
None,
88 TrackSelectorTool = trackselect,
89 VertexPointEstimator = vpest,
92 BPHY28MuMuSelectAndWrite = CompFactory.DerivationFramework.Reco_Vertex(name =
"BPHY28MuMuSelectAndWrite",
93 VertexSearchTool = BPHY28MuMuFinder,
94 OutputVtxContainerName = MuMuContainerName,
95 PVContainerName =
"PrimaryVertices",
98 RefPVContainerName =
"SHOULDNOTBEUSED",
99 RelinkTracks = toRelink,
100 RelinkMuons = MuonReLink,
102 augList += [ BPHY28MuMuSelectAndWrite ]
103 thinTrkVtxList += [ MuMuContainerName ]
106 BPHY28_Select_Jpsi2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
107 name =
"BPHY28_Select_Jpsi2mumu",
108 HypothesisName =
"Jpsi",
109 InputVtxContainerName = MuMuContainerName,
111 VtxMassHypo = 3096.916,
114 Chi2Max = 200, Do3d =
False,
116 augList += [ BPHY28_Select_Jpsi2mumu ]
119 BPHY28BsKKMuMu = CompFactory.Analysis.JpsiPlus2Tracks(name =
"BPHY28BsKKMuMu",
120 kaonkaonHypothesis =
True,
121 pionpionHypothesis =
False,
122 kaonpionHypothesis =
False,
123 trkThresholdPt = 500.0,
127 DiTrackMassUpper = 1220,
128 DiTrackMassLower = 820,
130 TrkQuadrupletMassUpper = 6000.0,
131 TrkQuadrupletMassLower = 4800.0,
132 JpsiContainerKey = MuMuContainerName,
133 TrackParticleCollection = mainIDInput,
134 MuonsUsedInJpsi = mainMuonInput,
135 TrkVertexFitterTool = vkalvrt,
136 TrackSelectorTool = trackselect,
137 UseMassConstraint =
False)
140 BPHY28BsKKSelectAndWrite = CompFactory.DerivationFramework.Reco_Vertex(name =
"BPHY28BsKKSelectAndWrite",
141 VertexSearchTool = BPHY28BsKKMuMu,
142 OutputVtxContainerName = BsPhiMuMuContainerName,
143 PVContainerName =
"PrimaryVertices",
145 PVRefitter = PVrefit,
146 RefPVContainerName =
"BPHY28RefittedPrimaryVertices",
147 RefitPV =
True, Do3d =
False,
148 RelinkTracks = toRelink,
149 MaxPVrefit = 10000, DoVertexType = 7)
150 augList += [ BPHY28BsKKSelectAndWrite ]
151 thinTrkVtxList += [ BsPhiMuMuContainerName ]
154 BPHY28_Select_Bs2KKMuMu = CompFactory.DerivationFramework.Select_onia2mumu(
155 name =
"BPHY28_Select_Bs2KKMuMu",
156 HypothesisName =
"Bs",
157 InputVtxContainerName = BsPhiMuMuContainerName,
159 TrkMasses = [105.658, 105.658, 493.677, 493.677],
160 VtxMassHypo = 5366.3,
162 MassMax = 5900.0, Do3d =
False,
164 augList += [ BPHY28_Select_Bs2KKMuMu ]
168 BPHY28_SelectBsKKMuMuEvent = CompFactory.DerivationFramework.xAODStringSkimmingTool(
169 name =
"BPHY28_SelectBsKKMuMuEvent",
170 expression =
"count(BPHY28BsKKMuMuCandidates.passed_Bs) > 0")
172 skimList += [ BPHY28_SelectBsKKMuMuEvent ]
177 BPHY28_Thin_VtxTracks = CompFactory.DerivationFramework.Thin_vtxTrk( name =
"BPHY28_Thin_VtxTracks",
178 StreamName = streamName,
179 TrackParticleContainerName =
"InDetTrackParticles",
180 VertexContainerNames = thinTrkVtxList,
182 thinList += [ BPHY28_Thin_VtxTracks ]
186 BPHY28_Thin_VtxTracks_LRT = CompFactory.DerivationFramework.Thin_vtxTrk( name =
"BPHY28_Thin_VtxTracks_LRT",
187 StreamName = streamName,
188 TrackParticleContainerName =
"InDetLargeD0TrackParticles",
189 VertexContainerNames = thinTrkVtxList,
191 thinList += [ BPHY28_Thin_VtxTracks_LRT ]
194 for t
in augList + skimList + thinList : acc.addPublicTool(t)
195 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
"BPHY28Kernel",
196 AugmentationTools = augList,
198 SkimmingTools = skimList,
199 ThinningTools = thinList))