14def BPHY25Cfg(flags):
15 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (
16 BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg,
17 BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg,
18 AugOriginalCountsCfg)
19 from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
20 acc = ComponentAccumulator()
21 isSimulation = flags.Input.isMC
22
23
24 BPHY25_AugOriginalCounts = acc.popToolsAndMerge(
25 AugOriginalCountsCfg(flags, name = "BPHY25_AugOriginalCounts"))
26
27 doLRT = flags.Tracking.doLargeD0
28 mainIDInput = "InDetWithLRTTrackParticles" if doLRT else "InDetTrackParticles"
29 if doLRT:
30 from DerivationFrameworkInDet.InDetToolsConfig import InDetLRTMergeCfg
31 acc.merge(InDetLRTMergeCfg( flags, OutputTrackParticleLocation = mainIDInput ))
32
33 TrkToRelink = ["InDetTrackParticles", "InDetLargeD0TrackParticles"] if doLRT else ["InDetTrackParticles"]
34
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 pvrefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
44 acc.addPublicTool(pvrefitter)
45 from TrkConfig.TrkV0FitterConfig import TrkV0VertexFitter_InDetExtrCfg
46 v0fitter = acc.popToolsAndMerge(TrkV0VertexFitter_InDetExtrCfg(flags))
47 acc.addPublicTool(v0fitter)
48 from TrackToVertex.TrackToVertexConfig import InDetTrackToVertexCfg
49 tracktovtxtool = acc.popToolsAndMerge(InDetTrackToVertexCfg(flags))
50 acc.addPublicTool(tracktovtxtool)
51 from TrkConfig.TrkVKalVrtFitterConfig import V0VKalVrtFitterCfg
52 gammafitter = acc.popToolsAndMerge(V0VKalVrtFitterCfg(
53 flags, BPHYDerivationName+"_GammaFitter",
54 Robustness = 6,
55 usePhiCnst = True,
56 useThetaCnst = True,
57 InputParticleMasses = [0.511,0.511] ))
58 acc.addPublicTool(gammafitter)
59 from InDetConfig.InDetTrackSelectorToolConfig import V0InDetConversionTrackSelectorToolCfg
60 v0trackselect = acc.popToolsAndMerge(V0InDetConversionTrackSelectorToolCfg(flags))
61 acc.addPublicTool(v0trackselect)
62 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
63 extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
64 acc.addPublicTool(extrapolator)
65
66
67 Jpsi_lo = 2600.0
68 Jpsi_hi = 3500.0
69 B_lo = 5080.0
70 B_hi = 5480.0
71 Ks_lo = 430.0
72 Ks_hi = 565.0
73 Ld_lo = 1030.0
74 Ld_hi = 1200.0
75 Xi_lo = 1260.0
76 Xi_hi = 1383.0
77 Omg_lo = 1600.0
78 Omg_hi = 1745.0
79 Ldb0_lo = 5310.0
80 Ldb0_hi = 5910.0
81
82 Mumass = 105.658
83 Pimass = 139.570
84 Kmass = 493.677
85 Ksmass = 497.611
86 Jpsimass = 3096.916
87 B0mass = 5279.66
88 Lambdamass = 1115.683
89 Ximass = 1321.71
90 Omegamass = 1672.45
91 Lambdab0mass = 5619.60
92
93 BPHY25JpsiFinder = CompFactory.Analysis.JpsiFinder(
94 name = "BPHY25JpsiFinder",
95 muAndMu = True,
96 muAndTrack = False,
97 TrackAndTrack = False,
98 assumeDiMuons = True,
99 trackThresholdPt = 3400.,
100 invMassLower = 500.,
101 invMassUpper = 4500.,
102 Chi2Cut = 4.,
103 oppChargesOnly = True,
104 atLeastOneComb = True,
105 useCombinedMeasurement = False,
106 muonCollectionKey = "Muons",
107 TrackParticleCollection = "InDetTrackParticles",
108 TrkVertexFitterTool = vkalvrt,
109 TrackSelectorTool = trackselect,
110 VertexPointEstimator = vpest,
111 useMCPCuts = False )
112 acc.addPublicTool(BPHY25JpsiFinder)
113
114 BPHY25_Reco_mumu = CompFactory.DerivationFramework.Reco_Vertex(
115 name = "BPHY25_Reco_mumu",
116 VertexSearchTool = BPHY25JpsiFinder,
117 OutputVtxContainerName = "BPHY25OniaCandidates",
118 PVContainerName = "PrimaryVertices",
119 RelinkTracks = TrkToRelink,
120 V0Tools = V0Tools,
121 PVRefitter = pvrefitter,
122 RefitPV = True,
123 MaxPVrefit = 500,
124 RefPVContainerName = "BPHY25_mumuRefittedPrimaryVertices",
125 DoVertexType = 7)
126
127
128 BPHY25B0_Jpsi2Trk = CompFactory.Analysis.JpsiPlus2Tracks(
129 name = "BPHY25B0_Jpsi2Trk",
130 kaonkaonHypothesis = False,
131 pionpionHypothesis = False,
132 kaonpionHypothesis = True,
133 kaonprotonHypothesis = False,
134 trkThresholdPt = 760.,
135 trkMaxEta = 2.6,
136 oppChargesOnly = False,
137 JpsiMassLower = Jpsi_lo,
138 JpsiMassUpper = Jpsi_hi,
139 TrkQuadrupletMassLower = B_lo-100,
140 TrkQuadrupletMassUpper = B_hi+100,
141 BMassLower = B_lo,
142 BMassUpper = B_hi,
143 DiTrackMassLower = 500.,
144 DiTrackMassUpper = 1100.,
145 Chi2Cut = 4.,
146 JpsiContainerKey = "BPHY25OniaCandidates",
147 TrackParticleCollection = "InDetTrackParticles",
148 MuonsUsedInJpsi = "Muons",
149 ExcludeJpsiMuonsOnly = True,
150 TrkVertexFitterTool = vkalvrt,
151 TrackSelectorTool = trackselect,
152 UseMassConstraint = True)
153 acc.addPublicTool(BPHY25B0_Jpsi2Trk)
154
155
156 BPHY25Bpm_Jpsi1Trk = CompFactory.Analysis.JpsiPlus1Track(
157 name = "BPHY25Bpm_Jpsi1Trk",
158 pionHypothesis = False,
159 kaonHypothesis = True,
160 trkThresholdPt = 950.,
161 trkMaxEta = 2.6,
162 JpsiMassLower = Jpsi_lo,
163 JpsiMassUpper = Jpsi_hi,
164 TrkTrippletMassLower = B_lo-100,
165 TrkTrippletMassUpper = B_hi+100,
166 BMassLower = B_lo,
167 BMassUpper = B_hi,
168 Chi2Cut = 4.,
169 JpsiContainerKey = "BPHY25OniaCandidates",
170 TrackParticleCollection = "InDetTrackParticles",
171 MuonsUsedInJpsi = "Muons",
172 ExcludeJpsiMuonsOnly = True,
173 TrkVertexFitterTool = vkalvrt,
174 TrackSelectorTool = trackselect,
175 UseMassConstraint = True)
176 acc.addPublicTool(BPHY25Bpm_Jpsi1Trk)
177
178 BPHY25FourTrackReco_B0 = CompFactory.DerivationFramework.Reco_Vertex(
179 name = "BPHY25FourTrackReco_B0",
180 VertexSearchTool = BPHY25B0_Jpsi2Trk,
181 OutputVtxContainerName = "BPHY25FourTrack_B0",
182 PVContainerName = "PrimaryVertices",
183 RelinkTracks = TrkToRelink,
184 V0Tools = V0Tools,
185 PVRefitter = pvrefitter,
186 RefitPV = True,
187 MaxPVrefit = 500,
188 RefPVContainerName = "BPHY25_B0RefittedPrimaryVertices",
189 DoVertexType = 7)
190
191 BPHY25ThreeTrackReco_Bpm = CompFactory.DerivationFramework.Reco_Vertex(
192 name = "BPHY25ThreeTrackReco_Bpm",
193 VertexSearchTool = BPHY25Bpm_Jpsi1Trk,
194 OutputVtxContainerName = "BPHY25ThreeTrack_Bpm",
195 PVContainerName = "PrimaryVertices",
196 RelinkTracks = TrkToRelink,
197 V0Tools = V0Tools,
198 PVRefitter = pvrefitter,
199 RefitPV = True,
200 MaxPVrefit = 500,
201 RefPVContainerName = "BPHY25_BpmRefittedPrimaryVertices",
202 DoVertexType = 7)
203
204 BPHY25Select_Jpsi = CompFactory.DerivationFramework.Select_onia2mumu(
205 name = "BPHY25Select_Jpsi",
206 HypothesisName = "Jpsi",
207 InputVtxContainerName = "BPHY25OniaCandidates",
208 V0Tools = V0Tools,
209 TrkMasses = [Mumass, Mumass],
210 MassMin = Jpsi_lo,
211 MassMax = Jpsi_hi,
212 DoVertexType = 0)
213
214 BPHY25Select_mumu = CompFactory.DerivationFramework.Select_onia2mumu(
215 name = "BPHY25Select_mumu",
216 HypothesisName = "mumu",
217 InputVtxContainerName = "BPHY25OniaCandidates",
218 V0Tools = V0Tools,
219 TrkMasses = [Mumass, Mumass],
220 MassMin = 500.,
221 MassMax = 4500.,
222 DoVertexType = 0)
223
224
228
229 list_disV_hypo = ["JpsiXi", "JpsiOmg", "mumuXi"]
230 list_disV_jxHypo = ["Jpsi", "Jpsi", "mumu"]
231 list_disV_jxCons = [True, True, False]
232 list_disV_disVLo = [Xi_lo, Omg_lo, Xi_lo]
233 list_disV_disVHi = [Xi_hi, Omg_hi, Xi_hi]
234 list_disV_disVDau3Mass = [Pimass, Kmass, Pimass]
235 list_disV_disVDaug3MinPt = [650., 750., 650.]
236 list_disV_jxMass = [Jpsimass, Jpsimass, -9999.]
237 list_disV_disVMass = [Ximass, Omegamass, Ximass]
238
239 list_disV_obj = []
240 for hypo in list_disV_hypo:
241 list_disV_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
242
243 for i in range(len(list_disV_obj)):
244 list_disV_obj[i].JXVertices = "BPHY25OniaCandidates"
245 list_disV_obj[i].JXVtxHypoNames = [list_disV_jxHypo[i]]
246 list_disV_obj[i].TrackParticleCollection = mainIDInput
247 list_disV_obj[i].RelinkTracks = TrkToRelink
248 if i == 0:
249
250 list_disV_obj[i].OutputV0VtxCollection = "V0Collection"
251 else:
252 list_disV_obj[i].V0Vertices = "V0Collection"
253 list_disV_obj[i].UseImprovedMass = True
254 list_disV_obj[i].LambdaMassLowerCut = Ld_lo
255 list_disV_obj[i].LambdaMassUpperCut = Ld_hi
256 list_disV_obj[i].KsMassLowerCut = Ks_lo
257 list_disV_obj[i].KsMassUpperCut = Ks_hi
258 list_disV_obj[i].DisplacedMassLowerCut = list_disV_disVLo[i]
259 list_disV_obj[i].DisplacedMassUpperCut = list_disV_disVHi[i]
260 list_disV_obj[i].MassLowerCut = 0.
261 list_disV_obj[i].MassUpperCut = 20000.
262 list_disV_obj[i].CascadeVertexCollections = ["BPHY25_"+list_disV_hypo[i]+"_CascadeVtx1_sub","BPHY25_"+list_disV_hypo[i]+"_CascadeVtx1","BPHY25_"+list_disV_hypo[i]+"_CascadeMainVtx"]
263 list_disV_obj[i].HasJXSubVertex = False
264 list_disV_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
265 list_disV_obj[i].V0Hypothesis = "Lambda"
266 list_disV_obj[i].MassCutGamma = 10.
267 list_disV_obj[i].Chi2CutGamma = 3.
268 list_disV_obj[i].LxyV0Cut = 1.
269 list_disV_obj[i].LxyDisVtxCut = 2.
270 list_disV_obj[i].HypothesisName = list_disV_hypo[i]
271 list_disV_obj[i].NumberOfJXDaughters = 2
272 list_disV_obj[i].JXDaug1MassHypo = Mumass
273 list_disV_obj[i].JXDaug2MassHypo = Mumass
274 list_disV_obj[i].NumberOfDisVDaughters = 3
275 list_disV_obj[i].DisVDaug3MassHypo = list_disV_disVDau3Mass[i]
276 list_disV_obj[i].DisVDaug3MinPt = list_disV_disVDaug3MinPt[i]
277 list_disV_obj[i].JpsiMass = list_disV_jxMass[i]
278 list_disV_obj[i].LambdaMass = Lambdamass
279 list_disV_obj[i].KsMass = Ksmass
280 list_disV_obj[i].DisVtxMass = list_disV_disVMass[i]
281 list_disV_obj[i].ApplyJpsiMassConstraint = list_disV_jxCons[i]
282 list_disV_obj[i].ApplyV0MassConstraint = True
283 list_disV_obj[i].ApplyDisVMassConstraint = True
284 list_disV_obj[i].ApplyMainVMassConstraint = False
285 list_disV_obj[i].Chi2CutV0 = 4.
286 list_disV_obj[i].Chi2CutDisV = 4.
287 list_disV_obj[i].Chi2Cut = 4.
288 list_disV_obj[i].Trackd0Cut = 3.0
289 list_disV_obj[i].MaxJXCandidates = 10
290 list_disV_obj[i].MaxV0Candidates = 20
291 list_disV_obj[i].MaxDisVCandidates = 30
292 list_disV_obj[i].MaxMainVCandidates = 30
293 list_disV_obj[i].RefitPV = False
294 list_disV_obj[i].PVContainerName = "BPHY25_mumuRefittedPrimaryVertices"
295 list_disV_obj[i].DoCascadeFitWithPV = 2
296 list_disV_obj[i].FirstDecayAtPV = False
297 list_disV_obj[i].TrkVertexFitterTool = vkalvrt
298 list_disV_obj[i].V0VertexFitterTool = v0fitter
299 list_disV_obj[i].GammaFitterTool = gammafitter
300 list_disV_obj[i].PVRefitter = pvrefitter
301 list_disV_obj[i].V0Tools = V0Tools
302 list_disV_obj[i].TrackToVertexTool = tracktovtxtool
303 list_disV_obj[i].V0TrackSelectorTool = v0trackselect
304 list_disV_obj[i].TrackSelectorTool = trackselect
305 list_disV_obj[i].Extrapolator = extrapolator
306
307
310 list_BpmV0_hypo = ["BpmLd", "BpmKs"]
311 list_BpmV0_jxInput = ["BPHY25ThreeTrack_Bpm", "BPHY25ThreeTrack_Bpm"]
312 list_BpmV0_jxDau3Mass = [Kmass, Kmass]
313 list_BpmV0_jxMassLo = [B_lo, B_lo]
314 list_BpmV0_jxMassHi = [B_hi, B_hi]
315 list_BpmV0_v0hypo = ["Lambda", "Ks"]
316
317 list_BpmV0_obj = []
318 for hypo in list_BpmV0_hypo:
319 list_BpmV0_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
320
321 for i in range(len(list_BpmV0_obj)):
322 list_BpmV0_obj[i].JXVertices = list_BpmV0_jxInput[i]
323 list_BpmV0_obj[i].TrackParticleCollection = mainIDInput
324 list_BpmV0_obj[i].RelinkTracks = TrkToRelink
325 list_BpmV0_obj[i].V0Vertices = "V0Collection"
326 list_BpmV0_obj[i].UseImprovedMass = True
327 list_BpmV0_obj[i].LambdaMassLowerCut = Ld_lo
328 list_BpmV0_obj[i].LambdaMassUpperCut = Ld_hi
329 list_BpmV0_obj[i].KsMassLowerCut = Ks_lo
330 list_BpmV0_obj[i].KsMassUpperCut = Ks_hi
331 list_BpmV0_obj[i].JXMassLowerCut = list_BpmV0_jxMassLo[i]
332 list_BpmV0_obj[i].JXMassUpperCut = list_BpmV0_jxMassHi[i]
333 list_BpmV0_obj[i].JpsiMassLowerCut = Jpsi_lo
334 list_BpmV0_obj[i].JpsiMassUpperCut = Jpsi_hi
335 list_BpmV0_obj[i].MassLowerCut = 0.
336 list_BpmV0_obj[i].MassUpperCut = 150000.
337 list_BpmV0_obj[i].CascadeVertexCollections = ["BPHY25_"+list_BpmV0_hypo[i]+"_CascadeVtx1","BPHY25_"+list_BpmV0_hypo[i]+"_CascadeVtx2","BPHY25_"+list_BpmV0_hypo[i]+"_CascadeMainVtx"]
338 list_BpmV0_obj[i].HasJXSubVertex = True
339 list_BpmV0_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
340 list_BpmV0_obj[i].V0Hypothesis = list_BpmV0_v0hypo[i]
341 list_BpmV0_obj[i].MassCutGamma = 10.
342 list_BpmV0_obj[i].Chi2CutGamma = 3.
343 list_BpmV0_obj[i].LxyV0Cut = 3.
344 list_BpmV0_obj[i].HypothesisName = list_BpmV0_hypo[i]
345 list_BpmV0_obj[i].NumberOfJXDaughters = 3
346 list_BpmV0_obj[i].JXDaug1MassHypo = Mumass
347 list_BpmV0_obj[i].JXDaug2MassHypo = Mumass
348 list_BpmV0_obj[i].JXDaug3MassHypo = list_BpmV0_jxDau3Mass[i]
349 list_BpmV0_obj[i].JXPtOrdering = False
350 list_BpmV0_obj[i].NumberOfDisVDaughters = 2
351 list_BpmV0_obj[i].JpsiMass = Jpsimass
352 list_BpmV0_obj[i].LambdaMass = Lambdamass
353 list_BpmV0_obj[i].KsMass = Ksmass
354 list_BpmV0_obj[i].ApplyJXMassConstraint = True
355 list_BpmV0_obj[i].ApplyJpsiMassConstraint = True
356 list_BpmV0_obj[i].ApplyV0MassConstraint = True
357 list_BpmV0_obj[i].ApplyMainVMassConstraint = False
358 list_BpmV0_obj[i].Chi2CutV0 = 4.
359 list_BpmV0_obj[i].Chi2Cut = 4.
360 list_BpmV0_obj[i].Trackd0Cut = 3.0
361 list_BpmV0_obj[i].MaxJXCandidates = 20
362 list_BpmV0_obj[i].MaxV0Candidates = 20
363 list_BpmV0_obj[i].MaxMainVCandidates = 30
364 list_BpmV0_obj[i].RefitPV = False
365 list_BpmV0_obj[i].PVContainerName = "BPHY25_BpmRefittedPrimaryVertices"
366 list_BpmV0_obj[i].DoCascadeFitWithPV = 2
367 list_BpmV0_obj[i].FirstDecayAtPV = True
368 list_BpmV0_obj[i].TrkVertexFitterTool = vkalvrt
369 list_BpmV0_obj[i].V0VertexFitterTool = v0fitter
370 list_BpmV0_obj[i].GammaFitterTool = gammafitter
371 list_BpmV0_obj[i].PVRefitter = pvrefitter
372 list_BpmV0_obj[i].V0Tools = V0Tools
373 list_BpmV0_obj[i].TrackToVertexTool = tracktovtxtool
374 list_BpmV0_obj[i].V0TrackSelectorTool = v0trackselect
375 list_BpmV0_obj[i].TrackSelectorTool = trackselect
376 list_BpmV0_obj[i].Extrapolator = extrapolator
377
378
381
382 list_B0Ld_hypo = ["B0KpiLd", "B0piKLd"]
383 list_B0Ld_jxInput = ["BPHY25FourTrack_B0", "BPHY25FourTrack_B0"]
384 list_B0Ld_jxMass = [B0mass, B0mass]
385 list_B0Ld_jxDau3Mass = [Kmass, Pimass]
386 list_B0Ld_jxDau4Mass = [Pimass, Kmass]
387 list_B0Ld_jxMassLo = [B_lo, B_lo]
388 list_B0Ld_jxMassHi = [B_hi, B_hi]
389
390 list_B0Ld_obj = []
391 for hypo in list_B0Ld_hypo:
392 list_B0Ld_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
393
394 for i in range(len(list_B0Ld_obj)):
395 list_B0Ld_obj[i].JXVertices = list_B0Ld_jxInput[i]
396 list_B0Ld_obj[i].TrackParticleCollection = mainIDInput
397 list_B0Ld_obj[i].RelinkTracks = TrkToRelink
398 list_B0Ld_obj[i].V0Vertices = "V0Collection"
399 list_B0Ld_obj[i].UseImprovedMass = True
400 list_B0Ld_obj[i].LambdaMassLowerCut = Ld_lo
401 list_B0Ld_obj[i].LambdaMassUpperCut = Ld_hi
402 list_B0Ld_obj[i].KsMassLowerCut = Ks_lo
403 list_B0Ld_obj[i].KsMassUpperCut = Ks_hi
404 list_B0Ld_obj[i].JXMassLowerCut = list_B0Ld_jxMassLo[i]
405 list_B0Ld_obj[i].JXMassUpperCut = list_B0Ld_jxMassHi[i]
406 list_B0Ld_obj[i].JpsiMassLowerCut = Jpsi_lo
407 list_B0Ld_obj[i].JpsiMassUpperCut = Jpsi_hi
408 list_B0Ld_obj[i].MassLowerCut = 0.
409 list_B0Ld_obj[i].MassUpperCut = 150000.
410 list_B0Ld_obj[i].CascadeVertexCollections = ["BPHY25_"+list_B0Ld_hypo[i]+"_CascadeVtx1","BPHY25_"+list_B0Ld_hypo[i]+"_CascadeVtx2","BPHY25_"+list_B0Ld_hypo[i]+"_CascadeMainVtx"]
411 list_B0Ld_obj[i].HasJXSubVertex = True
412 list_B0Ld_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
413 list_B0Ld_obj[i].V0Hypothesis = "Lambda"
414 list_B0Ld_obj[i].MassCutGamma = 10.
415 list_B0Ld_obj[i].Chi2CutGamma = 3.
416 list_B0Ld_obj[i].LxyV0Cut = 3.
417 list_B0Ld_obj[i].HypothesisName = list_B0Ld_hypo[i]
418 list_B0Ld_obj[i].NumberOfJXDaughters = 4
419 list_B0Ld_obj[i].JXDaug1MassHypo = Mumass
420 list_B0Ld_obj[i].JXDaug2MassHypo = Mumass
421 list_B0Ld_obj[i].JXDaug3MassHypo = list_B0Ld_jxDau3Mass[i]
422 list_B0Ld_obj[i].JXDaug4MassHypo = list_B0Ld_jxDau4Mass[i]
423 list_B0Ld_obj[i].JXPtOrdering = False
424 list_B0Ld_obj[i].NumberOfDisVDaughters = 2
425 list_B0Ld_obj[i].JXMass = list_B0Ld_jxMass[i]
426 list_B0Ld_obj[i].JpsiMass = Jpsimass
427 list_B0Ld_obj[i].LambdaMass = Lambdamass
428 list_B0Ld_obj[i].KsMass = Ksmass
429 list_B0Ld_obj[i].ApplyJXMassConstraint = True
430 list_B0Ld_obj[i].ApplyJpsiMassConstraint = True
431 list_B0Ld_obj[i].ApplyV0MassConstraint = True
432 list_B0Ld_obj[i].ApplyMainVMassConstraint = False
433 list_B0Ld_obj[i].Chi2CutV0 = 4.
434 list_B0Ld_obj[i].Chi2Cut = 4.
435 list_B0Ld_obj[i].Trackd0Cut = 3.0
436 list_B0Ld_obj[i].MaxJXCandidates = 20
437 list_B0Ld_obj[i].MaxV0Candidates = 20
438 list_B0Ld_obj[i].MaxMainVCandidates = 30
439 list_B0Ld_obj[i].RefitPV = False
440 list_B0Ld_obj[i].PVContainerName = "BPHY25_B0RefittedPrimaryVertices"
441 list_B0Ld_obj[i].DoCascadeFitWithPV = 2
442 list_B0Ld_obj[i].FirstDecayAtPV = True
443 list_B0Ld_obj[i].TrkVertexFitterTool = vkalvrt
444 list_B0Ld_obj[i].V0VertexFitterTool = v0fitter
445 list_B0Ld_obj[i].GammaFitterTool = gammafitter
446 list_B0Ld_obj[i].PVRefitter = pvrefitter
447 list_B0Ld_obj[i].V0Tools = V0Tools
448 list_B0Ld_obj[i].TrackToVertexTool = tracktovtxtool
449 list_B0Ld_obj[i].V0TrackSelectorTool = v0trackselect
450 list_B0Ld_obj[i].TrackSelectorTool = trackselect
451 list_B0Ld_obj[i].Extrapolator = extrapolator
452
453
456
457 list_B0Ks_hypo = ["B0KpiKs", "B0piKKs"]
458 list_B0Ks_jxInput = ["BPHY25FourTrack_B0", "BPHY25FourTrack_B0"]
459 list_B0Ks_jxMass = [B0mass, B0mass]
460 list_B0Ks_jxDau3Mass = [Kmass, Pimass]
461 list_B0Ks_jxDau4Mass = [Pimass, Kmass]
462 list_B0Ks_jxMassLo = [B_lo, B_lo]
463 list_B0Ks_jxMassHi = [B_hi, B_hi]
464
465 list_B0Ks_obj = []
466 for hypo in list_B0Ks_hypo:
467 list_B0Ks_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
468
469 for i in range(len(list_B0Ks_obj)):
470 list_B0Ks_obj[i].JXVertices = list_B0Ks_jxInput[i]
471 list_B0Ks_obj[i].TrackParticleCollection = mainIDInput
472 list_B0Ks_obj[i].RelinkTracks = TrkToRelink
473 list_B0Ks_obj[i].V0Vertices = "V0Collection"
474 list_B0Ks_obj[i].UseImprovedMass = True
475 list_B0Ks_obj[i].LambdaMassLowerCut = Ld_lo
476 list_B0Ks_obj[i].LambdaMassUpperCut = Ld_hi
477 list_B0Ks_obj[i].KsMassLowerCut = Ks_lo
478 list_B0Ks_obj[i].KsMassUpperCut = Ks_hi
479 list_B0Ks_obj[i].JXMassLowerCut = list_B0Ks_jxMassLo[i]
480 list_B0Ks_obj[i].JXMassUpperCut = list_B0Ks_jxMassHi[i]
481 list_B0Ks_obj[i].JpsiMassLowerCut = Jpsi_lo
482 list_B0Ks_obj[i].JpsiMassUpperCut = Jpsi_hi
483 list_B0Ks_obj[i].MassLowerCut = 0.
484 list_B0Ks_obj[i].MassUpperCut = 150000.
485 list_B0Ks_obj[i].CascadeVertexCollections = ["BPHY25_"+list_B0Ks_hypo[i]+"_CascadeVtx1","BPHY25_"+list_B0Ks_hypo[i]+"_CascadeVtx2","BPHY25_"+list_B0Ks_hypo[i]+"_CascadeMainVtx"]
486 list_B0Ks_obj[i].HasJXSubVertex = True
487 list_B0Ks_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
488 list_B0Ks_obj[i].V0Hypothesis = "Ks"
489 list_B0Ks_obj[i].MassCutGamma = 10.
490 list_B0Ks_obj[i].Chi2CutGamma = 3.
491 list_B0Ks_obj[i].LxyV0Cut = 3.
492 list_B0Ks_obj[i].HypothesisName = list_B0Ks_hypo[i]
493 list_B0Ks_obj[i].NumberOfJXDaughters = 4
494 list_B0Ks_obj[i].JXDaug1MassHypo = Mumass
495 list_B0Ks_obj[i].JXDaug2MassHypo = Mumass
496 list_B0Ks_obj[i].JXDaug3MassHypo = list_B0Ks_jxDau3Mass[i]
497 list_B0Ks_obj[i].JXDaug4MassHypo = list_B0Ks_jxDau4Mass[i]
498 list_B0Ks_obj[i].JXPtOrdering = False
499 list_B0Ks_obj[i].NumberOfDisVDaughters = 2
500 list_B0Ks_obj[i].JXMass = list_B0Ks_jxMass[i]
501 list_B0Ks_obj[i].JpsiMass = Jpsimass
502 list_B0Ks_obj[i].LambdaMass = Lambdamass
503 list_B0Ks_obj[i].KsMass = Ksmass
504 list_B0Ks_obj[i].MainVtxMass = 5839.88
505 list_B0Ks_obj[i].ApplyJXMassConstraint = True
506 list_B0Ks_obj[i].ApplyJpsiMassConstraint = True
507 list_B0Ks_obj[i].ApplyV0MassConstraint = True
508 list_B0Ks_obj[i].ApplyMainVMassConstraint = False
509 list_B0Ks_obj[i].Chi2CutV0 = 5.
510 list_B0Ks_obj[i].Chi2Cut = 5.
511 list_B0Ks_obj[i].Trackd0Cut = 3.0
512 list_B0Ks_obj[i].MaxJXCandidates = 20
513 list_B0Ks_obj[i].MaxV0Candidates = 20
514 list_B0Ks_obj[i].MaxMainVCandidates = 30
515 list_B0Ks_obj[i].RefitPV = False
516 list_B0Ks_obj[i].PVContainerName = "BPHY25_B0RefittedPrimaryVertices"
517 list_B0Ks_obj[i].DoCascadeFitWithPV = 2
518 list_B0Ks_obj[i].FirstDecayAtPV = True
519 list_B0Ks_obj[i].TrkVertexFitterTool = vkalvrt
520 list_B0Ks_obj[i].V0VertexFitterTool = v0fitter
521 list_B0Ks_obj[i].GammaFitterTool = gammafitter
522 list_B0Ks_obj[i].PVRefitter = pvrefitter
523 list_B0Ks_obj[i].V0Tools = V0Tools
524 list_B0Ks_obj[i].TrackToVertexTool = tracktovtxtool
525 list_B0Ks_obj[i].V0TrackSelectorTool = v0trackselect
526 list_B0Ks_obj[i].TrackSelectorTool = trackselect
527 list_B0Ks_obj[i].Extrapolator = extrapolator
528
529
532
533 list_2V0A_hypo = ["Jpsi2V0A"]
534
535 list_2V0A_obj = []
536 for hypo in list_2V0A_hypo:
537 list_2V0A_obj.append( CompFactory.DerivationFramework.JpsiXPlus2V0("BPHY25_"+hypo) )
538
539 for i in range(len(list_2V0A_obj)):
540 list_2V0A_obj[i].JXVertices = "BPHY25OniaCandidates"
541 list_2V0A_obj[i].JXVtxHypoNames = ["Jpsi"]
542 list_2V0A_obj[i].TrackParticleCollection = mainIDInput
543 list_2V0A_obj[i].RelinkTracks = TrkToRelink
544 list_2V0A_obj[i].V0Vertices = "V0Collection"
545 list_2V0A_obj[i].UseImprovedMass = True
546 list_2V0A_obj[i].LambdaMassLowerCut = Ld_lo
547 list_2V0A_obj[i].LambdaMassUpperCut = Ld_hi
548 list_2V0A_obj[i].KsMassLowerCut = Ks_lo
549 list_2V0A_obj[i].KsMassUpperCut = Ks_hi
550 list_2V0A_obj[i].JpsiMassLowerCut = Jpsi_lo
551 list_2V0A_obj[i].JpsiMassUpperCut = Jpsi_hi
552 list_2V0A_obj[i].MassLowerCut = 0.
553 list_2V0A_obj[i].MassUpperCut = 150000.
554 list_2V0A_obj[i].CascadeVertexCollections = ["BPHY25_"+list_2V0A_hypo[i]+"_CascadeVtx1","BPHY25_"+list_2V0A_hypo[i]+"_CascadeVtx2","BPHY25_"+list_2V0A_hypo[i]+"_CascadeMainVtx"]
555 list_2V0A_obj[i].HasJXSubVertex = False
556 list_2V0A_obj[i].HasJXV02SubVertex = False
557 list_2V0A_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
558 list_2V0A_obj[i].V01Hypothesis = "Lambda/Ks"
559 list_2V0A_obj[i].V02Hypothesis = "Lambda/Ks"
560 list_2V0A_obj[i].LxyV01Cut = 2.
561 list_2V0A_obj[i].LxyV02Cut = 2.
562 list_2V0A_obj[i].MassCutGamma = 10.
563 list_2V0A_obj[i].Chi2CutGamma = 3.
564 list_2V0A_obj[i].HypothesisName = list_2V0A_hypo[i]
565 list_2V0A_obj[i].NumberOfJXDaughters = 2
566 list_2V0A_obj[i].JXDaug1MassHypo = Mumass
567 list_2V0A_obj[i].JXDaug2MassHypo = Mumass
568 list_2V0A_obj[i].JpsiMass = Jpsimass
569 list_2V0A_obj[i].LambdaMass = Lambdamass
570 list_2V0A_obj[i].KsMass = Ksmass
571 list_2V0A_obj[i].ApplyJpsiMassConstraint = True
572 list_2V0A_obj[i].ApplyV01MassConstraint = True
573 list_2V0A_obj[i].ApplyV02MassConstraint = True
574 list_2V0A_obj[i].ApplyMainVMassConstraint = False
575 list_2V0A_obj[i].Chi2CutV0 = 4.
576 list_2V0A_obj[i].Chi2Cut = 4.
577 list_2V0A_obj[i].Trackd0Cut = 3.0
578 list_2V0A_obj[i].MaxJXCandidates = 10
579 list_2V0A_obj[i].MaxV0Candidates = 20
580 list_2V0A_obj[i].MaxMainVCandidates = 30
581 list_2V0A_obj[i].RefitPV = False
582 list_2V0A_obj[i].PVContainerName = "BPHY25_mumuRefittedPrimaryVertices"
583 list_2V0A_obj[i].DoCascadeFitWithPV = 2
584 list_2V0A_obj[i].FirstDecayAtPV = False
585 list_2V0A_obj[i].TrkVertexFitterTool = vkalvrt
586 list_2V0A_obj[i].V0VertexFitterTool = v0fitter
587 list_2V0A_obj[i].GammaFitterTool = gammafitter
588 list_2V0A_obj[i].PVRefitter = pvrefitter
589 list_2V0A_obj[i].V0Tools = V0Tools
590 list_2V0A_obj[i].TrackToVertexTool = tracktovtxtool
591 list_2V0A_obj[i].V0TrackSelectorTool = v0trackselect
592 list_2V0A_obj[i].Extrapolator = extrapolator
593
594 list_2V0B_hypo = ["Jpsi2V0B1", "Jpsi2V0B2"]
595 list_2V0B_v02hypo = ["Lambda", "Ks"]
596 list_2V0B_jxv02mass = [Lambdab0mass, B0mass]
597 list_2V0B_jxv02massLo = [Ldb0_lo, B_lo]
598 list_2V0B_jxv02massHi = [Ldb0_hi, B_hi]
599
600 list_2V0B_obj = []
601 for hypo in list_2V0B_hypo:
602 list_2V0B_obj.append( CompFactory.DerivationFramework.JpsiXPlus2V0("BPHY25_"+hypo) )
603
604 for i in range(len(list_2V0B_obj)):
605 list_2V0B_obj[i].JXVertices = "BPHY25OniaCandidates"
606 list_2V0B_obj[i].JXVtxHypoNames = ["Jpsi"]
607 list_2V0B_obj[i].TrackParticleCollection = mainIDInput
608 list_2V0B_obj[i].RelinkTracks = TrkToRelink
609 list_2V0B_obj[i].V0Vertices = "V0Collection"
610 list_2V0B_obj[i].UseImprovedMass = True
611 list_2V0B_obj[i].LambdaMassLowerCut = Ld_lo
612 list_2V0B_obj[i].LambdaMassUpperCut = Ld_hi
613 list_2V0B_obj[i].KsMassLowerCut = Ks_lo
614 list_2V0B_obj[i].KsMassUpperCut = Ks_hi
615 list_2V0B_obj[i].JpsiMassLowerCut = Jpsi_lo
616 list_2V0B_obj[i].JpsiMassUpperCut = Jpsi_hi
617 list_2V0B_obj[i].JXV02MassLowerCut = list_2V0B_jxv02massLo[i]
618 list_2V0B_obj[i].JXV02MassUpperCut = list_2V0B_jxv02massHi[i]
619 list_2V0B_obj[i].MassLowerCut = 0.
620 list_2V0B_obj[i].MassUpperCut = 150000.
621 list_2V0B_obj[i].CascadeVertexCollections = ["BPHY25_"+list_2V0B_hypo[i]+"_CascadeVtx1","BPHY25_"+list_2V0B_hypo[i]+"_CascadeVtx2","BPHY25_"+list_2V0B_hypo[i]+"_CascadeVtx3","BPHY25_"+list_2V0B_hypo[i]+"_CascadeMainVtx"]
622 list_2V0B_obj[i].HasJXSubVertex = True
623 list_2V0B_obj[i].HasJXV02SubVertex = True
624 list_2V0B_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
625 list_2V0B_obj[i].V01Hypothesis = "Lambda/Ks"
626 list_2V0B_obj[i].V02Hypothesis = list_2V0B_v02hypo[i]
627 list_2V0B_obj[i].LxyV01Cut = 2.
628 list_2V0B_obj[i].LxyV02Cut = 2.
629 list_2V0B_obj[i].MassCutGamma = 10.
630 list_2V0B_obj[i].Chi2CutGamma = 3.
631 list_2V0B_obj[i].HypothesisName = list_2V0B_hypo[i]
632 list_2V0B_obj[i].NumberOfJXDaughters = 2
633 list_2V0B_obj[i].JXDaug1MassHypo = Mumass
634 list_2V0B_obj[i].JXDaug2MassHypo = Mumass
635 list_2V0B_obj[i].JpsiMass = Jpsimass
636 list_2V0B_obj[i].LambdaMass = Lambdamass
637 list_2V0B_obj[i].KsMass = Ksmass
638 list_2V0B_obj[i].JXV02VtxMass = list_2V0B_jxv02mass[i]
639 list_2V0B_obj[i].ApplyJpsiMassConstraint = True
640 list_2V0B_obj[i].ApplyV01MassConstraint = True
641 list_2V0B_obj[i].ApplyV02MassConstraint = True
642 list_2V0B_obj[i].ApplyJXV02MassConstraint = True
643 list_2V0B_obj[i].ApplyMainVMassConstraint = False
644 list_2V0B_obj[i].Chi2CutV0 = 4.
645 list_2V0B_obj[i].Chi2Cut = 4.
646 list_2V0B_obj[i].Trackd0Cut = 3.0
647 list_2V0B_obj[i].MaxJXCandidates = 10
648 list_2V0B_obj[i].MaxV0Candidates = 20
649 list_2V0B_obj[i].MaxMainVCandidates = 30
650 list_2V0B_obj[i].RefitPV = False
651 list_2V0B_obj[i].PVContainerName = "BPHY25_mumuRefittedPrimaryVertices"
652 list_2V0B_obj[i].DoCascadeFitWithPV = 2
653 list_2V0B_obj[i].FirstDecayAtPV = True
654 list_2V0B_obj[i].TrkVertexFitterTool = vkalvrt
655 list_2V0B_obj[i].V0VertexFitterTool = v0fitter
656 list_2V0B_obj[i].GammaFitterTool = gammafitter
657 list_2V0B_obj[i].PVRefitter = pvrefitter
658 list_2V0B_obj[i].V0Tools = V0Tools
659 list_2V0B_obj[i].TrackToVertexTool = tracktovtxtool
660 list_2V0B_obj[i].V0TrackSelectorTool = v0trackselect
661 list_2V0B_obj[i].Extrapolator = extrapolator
662
663 Collections = [ ]
664 RefPVContainers = [ ]
665 RefPVAuxContainers = [ ]
666 passedCandidates = [ ]
667
668 list_obj = list_disV_obj + list_BpmV0_obj + list_B0Ld_obj + list_B0Ks_obj + list_2V0A_obj + list_2V0B_obj
669
670 for obj in list_obj:
671 Collections += obj.CascadeVertexCollections
672 passedCandidates += ["BPHY25_" + obj.HypothesisName + "_CascadeMainVtx"]
673
674 RefPVContainers += [
675 "xAOD::VertexContainer#BPHY25_mumuRefittedPrimaryVertices",
676 "xAOD::VertexContainer#BPHY25_BpmRefittedPrimaryVertices",
677 "xAOD::VertexContainer#BPHY25_B0RefittedPrimaryVertices"
678 ]
679 RefPVAuxContainers += [
680 "xAOD::VertexAuxContainer#BPHY25_mumuRefittedPrimaryVerticesAux.",
681 "xAOD::VertexAuxContainer#BPHY25_BpmRefittedPrimaryVerticesAux.",
682 "xAOD::VertexAuxContainer#BPHY25_B0RefittedPrimaryVerticesAux."
683 ]
684
685 BPHY25_SelectEvent = CompFactory.DerivationFramework.AnyVertexSkimmingTool(name = "BPHY25_SelectEvent", VertexContainerNames = passedCandidates)
686 acc.addPublicTool(BPHY25_SelectEvent)
687
688 augmentation_tools = [BPHY25_AugOriginalCounts, BPHY25_Reco_mumu,
689 BPHY25FourTrackReco_B0, BPHY25ThreeTrackReco_Bpm,
690 BPHY25Select_Jpsi, BPHY25Select_mumu] + list_obj
691 for t in augmentation_tools : acc.addPublicTool(t)
692
693 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
694 "BPHY25Kernel",
695 AugmentationTools = augmentation_tools,
696 SkimmingTools = [BPHY25_SelectEvent]
697 ))
698
699 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
700 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
701 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
702 BPHY25SlimmingHelper =
SlimmingHelper(
"BPHY25SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
703 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
704 BPHY25_AllVariables = getDefaultAllVariables()
705 BPHY25_StaticContent = []
706
707
708 BPHY25SlimmingHelper.IncludeMuonTriggerContent = True
709 BPHY25SlimmingHelper.IncludeBPhysTriggerContent = True
710
711
712 BPHY25_AllVariables += ["PrimaryVertices"]
713 BPHY25_StaticContent += RefPVContainers
714 BPHY25_StaticContent += RefPVAuxContainers
715
716
717 BPHY25_AllVariables += ["InDetTrackParticles", "InDetLargeD0TrackParticles"]
718
719
722 BPHY25_AllVariables += ["CombinedMuonTrackParticles", "ExtrapolatedMuonTrackParticles"]
723
724
725 BPHY25_AllVariables += ["Muons", "MuonSegments"]
726
727
728 for collection in Collections:
729 BPHY25_StaticContent += ["xAOD::VertexContainer#%s" % collection]
730 BPHY25_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % collection]
731
732
733 if isSimulation:
734 BPHY25_AllVariables += ["TruthEvents","TruthParticles","TruthVertices","MuonTruthParticles"]
735
736 BPHY25SlimmingHelper.SmartCollections = ["Muons", "PrimaryVertices", "InDetTrackParticles", "InDetLargeD0TrackParticles"]
737 BPHY25SlimmingHelper.AllVariables = BPHY25_AllVariables
738 BPHY25SlimmingHelper.StaticContent = BPHY25_StaticContent
739
740 BPHY25ItemList = BPHY25SlimmingHelper.GetItemList()
741 acc.merge(OutputStreamCfg(flags, "DAOD_BPHY25", ItemList=BPHY25ItemList, AcceptAlgs=["BPHY25Kernel"]))
742 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_BPHY25", AcceptAlgs=["BPHY25Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
743 acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True)
744 return acc