Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
BPHY25.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 #====================================================================
3 # BPHY25.py
4 # Contact: xin.chen@cern.ch
5 #====================================================================
6 
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 from AthenaConfiguration.ComponentFactory import CompFactory
9 from AthenaConfiguration.Enums import MetadataCategory
10 
11 BPHYDerivationName = "BPHY25"
12 streamName = "StreamDAOD_BPHY25"
13 
14 def BPHY25Cfg(flags):
15  from AthenaServices.PartPropSvcConfig import PartPropSvcCfg
16  from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg)
17  from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
18  acc = ComponentAccumulator()
19  acc.getPrimaryAndMerge(PartPropSvcCfg(flags))
20  isSimulation = flags.Input.isMC
21 
22  doLRT = True
23  # Adds primary vertex counts and track counts to EventInfo before they are thinned
24  BPHY25_AugOriginalCounts = CompFactory.DerivationFramework.AugOriginalCounts(
25  name = "BPHY25_AugOriginalCounts",
26  VertexContainer = "PrimaryVertices",
27  TrackContainer = "InDetTrackParticles",
28  TrackLRTContainer = "InDetLargeD0TrackParticles" if doLRT else "" )
29  acc.addPublicTool(BPHY25_AugOriginalCounts)
30 
31  mainIDInput = "InDetWithLRTTrackParticles" if doLRT else "InDetTrackParticles"
32  if doLRT:
33  from DerivationFrameworkInDet.InDetToolsConfig import InDetLRTMergeCfg
34  acc.merge(InDetLRTMergeCfg( flags, OutputTrackParticleLocation = mainIDInput ))
35 
36  TrkToRelink = ["InDetTrackParticles", "InDetLargeD0TrackParticles"] if doLRT else ["InDetTrackParticles"]
37 
38  V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName))
39  vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName)) # VKalVrt vertex fitter
40  acc.addPublicTool(vkalvrt)
41  acc.addPublicTool(V0Tools)
42  trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName))
43  acc.addPublicTool(trackselect)
44  vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, BPHYDerivationName))
45  acc.addPublicTool(vpest)
46  pvrefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
47  acc.addPublicTool(pvrefitter)
48  from TrkConfig.TrkV0FitterConfig import TrkV0VertexFitter_InDetExtrCfg
49  v0fitter = acc.popToolsAndMerge(TrkV0VertexFitter_InDetExtrCfg(flags))
50  acc.addPublicTool(v0fitter)
51  from TrackToVertex.TrackToVertexConfig import InDetTrackToVertexCfg
52  tracktovtxtool = acc.popToolsAndMerge(InDetTrackToVertexCfg(flags))
53  acc.addPublicTool(tracktovtxtool)
54  from TrkConfig.TrkVKalVrtFitterConfig import V0VKalVrtFitterCfg
55  gammafitter = acc.popToolsAndMerge(V0VKalVrtFitterCfg(
56  flags, BPHYDerivationName+"_GammaFitter",
57  Robustness = 6,
58  usePhiCnst = True,
59  useThetaCnst = True,
60  InputParticleMasses = [0.511,0.511] ))
61  acc.addPublicTool(gammafitter)
62  from InDetConfig.InDetTrackSelectorToolConfig import V0InDetConversionTrackSelectorToolCfg
63  v0trackselect = acc.popToolsAndMerge(V0InDetConversionTrackSelectorToolCfg(flags))
64  acc.addPublicTool(v0trackselect)
65  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
66  extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
67  acc.addPublicTool(extrapolator)
68 
69  # mass limits and constants used in the following
70  Jpsi_lo = 2600.0
71  Jpsi_hi = 3500.0
72  B_lo = 5080.0
73  B_hi = 5480.0
74  Ks_lo = 430.0
75  Ks_hi = 565.0
76  Ld_lo = 1030.0
77  Ld_hi = 1200.0
78  Xi_lo = 1260.0
79  Xi_hi = 1383.0
80  Omg_lo = 1600.0
81  Omg_hi = 1745.0
82  Xib_lo = 5500.0
83  Xib_hi = 6090.0
84  Ldb0_lo = 5310.0
85  Ldb0_hi = 5910.0
86 
87  Mumass = 105.658
88  Pimass = 139.570
89  Kmass = 493.677
90  Ksmass = 497.611
91  Protonmass = 938.2721
92  Jpsimass = 3096.916
93  B0mass = 5279.66
94  Lambdamass = 1115.683
95  Ximass = 1321.71
96  Omegamass = 1672.45
97  Lambdab0mass = 5619.60
98 
99  BPHY25JpsiFinder = CompFactory.Analysis.JpsiFinder(
100  name = "BPHY25JpsiFinder",
101  muAndMu = True,
102  muAndTrack = False,
103  TrackAndTrack = False,
104  assumeDiMuons = True, # If true, will assume dimu hypothesis and use PDG value for mu mass
105  trackThresholdPt = 3800.,
106  invMassLower = Jpsi_lo,
107  invMassUpper = Jpsi_hi,
108  Chi2Cut = 4., # NDF=1 if no mass constraint
109  oppChargesOnly = True,
110  atLeastOneComb = True,
111  useCombinedMeasurement = False, # Only takes effect if combOnly=True
112  muonCollectionKey = "Muons",
113  TrackParticleCollection = "InDetTrackParticles",
114  V0VertexFitterTool = None,
115  useV0Fitter = False, # if False a TrkVertexFitterTool will be used
116  TrkVertexFitterTool = vkalvrt, # VKalVrt vertex fitter
117  TrackSelectorTool = trackselect,
118  VertexPointEstimator = vpest,
119  useMCPCuts = False )
120  acc.addPublicTool(BPHY25JpsiFinder)
121 
122  BPHY25_Reco_mumu = CompFactory.DerivationFramework.Reco_Vertex(
123  name = "BPHY25_Reco_mumu",
124  VertexSearchTool = BPHY25JpsiFinder,
125  OutputVtxContainerName = "BPHY25OniaCandidates",
126  PVContainerName = "PrimaryVertices",
127  RelinkTracks = TrkToRelink,
128  V0Tools = V0Tools,
129  PVRefitter = pvrefitter,
130  RefitPV = False,
131  DoVertexType = 0)
132 
133  # B0 -> J/psi + K pi
134  BPHY25B0_Jpsi2Trk = CompFactory.Analysis.JpsiPlus2Tracks(
135  name = "BPHY25B0_Jpsi2Trk",
136  kaonkaonHypothesis = False,
137  pionpionHypothesis = False,
138  kaonpionHypothesis = True,
139  kaonprotonHypothesis = False,
140  trkThresholdPt = 760.,
141  trkMaxEta = 2.6,
142  oppChargesOnly = False,
143  JpsiMassLower = Jpsi_lo,
144  JpsiMassUpper = Jpsi_hi,
145  TrkQuadrupletMassLower = B_lo-100,
146  TrkQuadrupletMassUpper = B_hi+100,
147  BMassLower = B_lo,
148  BMassUpper = B_hi,
149  DiTrackMassLower = 500.,
150  DiTrackMassUpper = 1100.,
151  Chi2Cut = 4.,
152  JpsiContainerKey = "BPHY25OniaCandidates",
153  TrackParticleCollection = "InDetTrackParticles",
154  MuonsUsedInJpsi = "Muons",
155  ExcludeJpsiMuonsOnly = True,
156  TrkVertexFitterTool = vkalvrt,
157  TrackSelectorTool = trackselect,
158  UseMassConstraint = True)
159  acc.addPublicTool(BPHY25B0_Jpsi2Trk)
160 
161  # B+ -> J/psi K
162  BPHY25Bpm_Jpsi1Trk = CompFactory.Analysis.JpsiPlus1Track(
163  name = "BPHY25Bpm_Jpsi1Trk",
164  pionHypothesis = False,
165  kaonHypothesis = True,
166  trkThresholdPt = 950.,
167  trkMaxEta = 2.6,
168  JpsiMassLower = Jpsi_lo,
169  JpsiMassUpper = Jpsi_hi,
170  TrkTrippletMassLower = B_lo-100,
171  TrkTrippletMassUpper = B_hi+100,
172  BMassLower = B_lo,
173  BMassUpper = B_hi,
174  Chi2Cut = 4.,
175  JpsiContainerKey = "BPHY25OniaCandidates",
176  TrackParticleCollection = "InDetTrackParticles",
177  MuonsUsedInJpsi = "Muons",
178  ExcludeJpsiMuonsOnly = True,
179  TrkVertexFitterTool = vkalvrt,
180  TrackSelectorTool = trackselect,
181  UseMassConstraint = True)
182  acc.addPublicTool(BPHY25Bpm_Jpsi1Trk)
183 
184  BPHY25FourTrackReco_B0 = CompFactory.DerivationFramework.Reco_Vertex(
185  name = "BPHY25FourTrackReco_B0",
186  VertexSearchTool = BPHY25B0_Jpsi2Trk,
187  OutputVtxContainerName = "BPHY25FourTrack_B0",
188  PVContainerName = "PrimaryVertices",
189  RelinkTracks = TrkToRelink,
190  V0Tools = V0Tools,
191  PVRefitter = pvrefitter,
192  RefitPV = False,
193  DoVertexType = 0)
194 
195  BPHY25ThreeTrackReco_Bpm = CompFactory.DerivationFramework.Reco_Vertex(
196  name = "BPHY25ThreeTrackReco_Bpm",
197  VertexSearchTool = BPHY25Bpm_Jpsi1Trk,
198  OutputVtxContainerName = "BPHY25ThreeTrack_Bpm",
199  PVContainerName = "PrimaryVertices",
200  RelinkTracks = TrkToRelink,
201  V0Tools = V0Tools,
202  PVRefitter = pvrefitter,
203  RefitPV = False,
204  DoVertexType = 0)
205 
206  BPHY25Select_Jpsi = CompFactory.DerivationFramework.Select_onia2mumu(
207  name = "BPHY25Select_Jpsi",
208  HypothesisName = "Jpsi",
209  InputVtxContainerName = "BPHY25OniaCandidates",
210  V0Tools = V0Tools,
211  TrkMasses = [Mumass, Mumass],
212  MassMin = Jpsi_lo,
213  MassMax = Jpsi_hi,
214  DoVertexType = 0)
215 
216 
220 
221  list_disV_hypo = ["JpsiXi", "JpsiOmg"]
222  list_disV_jxHypo = ["Jpsi", "Jpsi"]
223  list_disV_disVLo = [Xi_lo, Omg_lo]
224  list_disV_disVHi = [Xi_hi, Omg_hi]
225  list_disV_disVDau3Mass = [Pimass, Kmass]
226  list_disV_disVDaug3MinPt = [650., 750.]
227  list_disV_jxMass = [Jpsimass, Jpsimass]
228  list_disV_disVMass = [Ximass, Omegamass]
229 
230  list_disV_obj = []
231  for hypo in list_disV_hypo:
232  list_disV_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
233 
234  for i in range(len(list_disV_obj)):
235  list_disV_obj[i].JXVertices = "BPHY25OniaCandidates"
236  list_disV_obj[i].JXVtxHypoNames = [list_disV_jxHypo[i]]
237  list_disV_obj[i].TrackParticleCollection = mainIDInput
238  list_disV_obj[i].RelinkTracks = TrkToRelink
239  if i == 0:
240  # create V0 container for all following instances
241  list_disV_obj[i].OutputV0VtxCollection = "V0Collection"
242  else:
243  list_disV_obj[i].V0Vertices = "V0Collection"
244  list_disV_obj[i].UseImprovedMass = True
245  list_disV_obj[i].LambdaMassLowerCut = Ld_lo
246  list_disV_obj[i].LambdaMassUpperCut = Ld_hi
247  list_disV_obj[i].KsMassLowerCut = Ks_lo
248  list_disV_obj[i].KsMassUpperCut = Ks_hi
249  list_disV_obj[i].DisplacedMassLowerCut = list_disV_disVLo[i]
250  list_disV_obj[i].DisplacedMassUpperCut = list_disV_disVHi[i]
251  list_disV_obj[i].MassLowerCut = 0.
252  list_disV_obj[i].MassUpperCut = 12200.
253  list_disV_obj[i].CascadeVertexCollections = ["BPHY25_"+list_disV_hypo[i]+"_CascadeVtx1_sub","BPHY25_"+list_disV_hypo[i]+"_CascadeVtx1","BPHY25_"+list_disV_hypo[i]+"_CascadeMainVtx"]
254  list_disV_obj[i].HasJXSubVertex = False
255  list_disV_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
256  list_disV_obj[i].V0Hypothesis = "Lambda"
257  list_disV_obj[i].MassCutGamma = 10.
258  list_disV_obj[i].Chi2CutGamma = 3.
259  list_disV_obj[i].LxyV0Cut = 5.
260  list_disV_obj[i].LxyDisVtxCut = 5.
261  list_disV_obj[i].HypothesisName = list_disV_hypo[i]
262  list_disV_obj[i].NumberOfJXDaughters = 2
263  list_disV_obj[i].JXDaug1MassHypo = Mumass
264  list_disV_obj[i].JXDaug2MassHypo = Mumass
265  list_disV_obj[i].NumberOfDisVDaughters = 3
266  list_disV_obj[i].DisVDaug3MassHypo = list_disV_disVDau3Mass[i]
267  list_disV_obj[i].DisVDaug3MinPt = list_disV_disVDaug3MinPt[i]
268  list_disV_obj[i].JpsiMass = list_disV_jxMass[i]
269  list_disV_obj[i].LambdaMass = Lambdamass
270  list_disV_obj[i].KsMass = Ksmass
271  list_disV_obj[i].DisVtxMass = list_disV_disVMass[i]
272  list_disV_obj[i].ApplyJpsiMassConstraint = True
273  list_disV_obj[i].ApplyV0MassConstraint = True
274  list_disV_obj[i].ApplyDisVMassConstraint = True
275  list_disV_obj[i].ApplyMainVMassConstraint = False
276  list_disV_obj[i].Chi2CutV0 = 4.
277  list_disV_obj[i].Chi2CutDisV = 4.
278  list_disV_obj[i].Chi2Cut = 4.
279  list_disV_obj[i].Trackd0Cut = 3.0
280  list_disV_obj[i].MaxJXCandidates = 10
281  list_disV_obj[i].MaxV0Candidates = 20
282  list_disV_obj[i].MaxDisVCandidates = 30
283  list_disV_obj[i].MaxMainVCandidates = 30
284  list_disV_obj[i].RefitPV = True
285  list_disV_obj[i].MaxnPV = 50
286  list_disV_obj[i].RefPVContainerName = "BPHY25_"+list_disV_hypo[i]+"_RefPrimaryVertices"
287  list_disV_obj[i].TrkVertexFitterTool = vkalvrt
288  list_disV_obj[i].V0VertexFitterTool = v0fitter
289  list_disV_obj[i].GammaFitterTool = gammafitter
290  list_disV_obj[i].PVRefitter = pvrefitter
291  list_disV_obj[i].V0Tools = V0Tools
292  list_disV_obj[i].TrackToVertexTool = tracktovtxtool
293  list_disV_obj[i].V0TrackSelectorTool = v0trackselect
294  list_disV_obj[i].TrackSelectorTool = trackselect
295  list_disV_obj[i].Extrapolator = extrapolator
296 
297 
300  list_BpmLd_hypo = ["BpmLd"]
301  list_BpmLd_jxInput = ["BPHY25ThreeTrack_Bpm"]
302  list_BpmLd_jxDau3Mass = [Kmass]
303  list_BpmLd_jxMassLo = [B_lo]
304  list_BpmLd_jxMassHi = [B_hi]
305 
306  list_BpmLd_obj = []
307  for hypo in list_BpmLd_hypo:
308  list_BpmLd_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
309 
310  for i in range(len(list_BpmLd_obj)):
311  list_BpmLd_obj[i].JXVertices = list_BpmLd_jxInput[i]
312  list_BpmLd_obj[i].TrackParticleCollection = mainIDInput
313  list_BpmLd_obj[i].RelinkTracks = TrkToRelink
314  list_BpmLd_obj[i].V0Vertices = "V0Collection"
315  list_BpmLd_obj[i].UseImprovedMass = True
316  list_BpmLd_obj[i].LambdaMassLowerCut = Ld_lo
317  list_BpmLd_obj[i].LambdaMassUpperCut = Ld_hi
318  list_BpmLd_obj[i].KsMassLowerCut = Ks_lo
319  list_BpmLd_obj[i].KsMassUpperCut = Ks_hi
320  list_BpmLd_obj[i].JXMassLowerCut = list_BpmLd_jxMassLo[i]
321  list_BpmLd_obj[i].JXMassUpperCut = list_BpmLd_jxMassHi[i]
322  list_BpmLd_obj[i].JpsiMassLowerCut = Jpsi_lo
323  list_BpmLd_obj[i].JpsiMassUpperCut = Jpsi_hi
324  list_BpmLd_obj[i].MassLowerCut = 6200.
325  list_BpmLd_obj[i].MassUpperCut = 100000.
326  list_BpmLd_obj[i].CascadeVertexCollections = ["BPHY25_"+list_BpmLd_hypo[i]+"_CascadeVtx1","BPHY25_"+list_BpmLd_hypo[i]+"_CascadeVtx2","BPHY25_"+list_BpmLd_hypo[i]+"_CascadeMainVtx"]
327  list_BpmLd_obj[i].HasJXSubVertex = True
328  list_BpmLd_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
329  list_BpmLd_obj[i].V0Hypothesis = "Lambda"
330  list_BpmLd_obj[i].MassCutGamma = 10.
331  list_BpmLd_obj[i].Chi2CutGamma = 3.
332  list_BpmLd_obj[i].LxyV0Cut = 5.
333  list_BpmLd_obj[i].HypothesisName = list_BpmLd_hypo[i]
334  list_BpmLd_obj[i].NumberOfJXDaughters = 3
335  list_BpmLd_obj[i].JXDaug1MassHypo = Mumass
336  list_BpmLd_obj[i].JXDaug2MassHypo = Mumass
337  list_BpmLd_obj[i].JXDaug3MassHypo = list_BpmLd_jxDau3Mass[i]
338  list_BpmLd_obj[i].JXPtOrdering = False
339  list_BpmLd_obj[i].NumberOfDisVDaughters = 2
340  list_BpmLd_obj[i].JpsiMass = Jpsimass
341  list_BpmLd_obj[i].LambdaMass = Lambdamass
342  list_BpmLd_obj[i].KsMass = Ksmass
343  list_BpmLd_obj[i].ApplyJpsiMassConstraint = True
344  list_BpmLd_obj[i].ApplyJXMassConstraint = False
345  list_BpmLd_obj[i].ApplyV0MassConstraint = False
346  list_BpmLd_obj[i].ApplyMainVMassConstraint = False
347  list_BpmLd_obj[i].Chi2CutV0 = 4.
348  list_BpmLd_obj[i].Chi2Cut = 4.
349  list_BpmLd_obj[i].Trackd0Cut = 3.0
350  list_BpmLd_obj[i].MaxJXCandidates = 20
351  list_BpmLd_obj[i].MaxV0Candidates = 20
352  list_BpmLd_obj[i].MaxMainVCandidates = 30
353  list_BpmLd_obj[i].RefitPV = True
354  list_BpmLd_obj[i].MaxnPV = 50
355  list_BpmLd_obj[i].RefPVContainerName = "BPHY25_"+list_BpmLd_hypo[i]+"_RefPrimaryVertices"
356  list_BpmLd_obj[i].TrkVertexFitterTool = vkalvrt
357  list_BpmLd_obj[i].V0VertexFitterTool = v0fitter
358  list_BpmLd_obj[i].GammaFitterTool = gammafitter
359  list_BpmLd_obj[i].PVRefitter = pvrefitter
360  list_BpmLd_obj[i].V0Tools = V0Tools
361  list_BpmLd_obj[i].TrackToVertexTool = tracktovtxtool
362  list_BpmLd_obj[i].V0TrackSelectorTool = v0trackselect
363  list_BpmLd_obj[i].TrackSelectorTool = trackselect
364  list_BpmLd_obj[i].Extrapolator = extrapolator
365 
366 
369 
370  list_B0Ld_hypo = ["B0KpiLd", "B0piKLd"]
371  list_B0Ld_jxInput = ["BPHY25FourTrack_B0", "BPHY25FourTrack_B0"]
372  list_B0Ld_jxMass = [B0mass, B0mass]
373  list_B0Ld_jxDau3Mass = [Kmass, Pimass]
374  list_B0Ld_jxDau4Mass = [Pimass, Kmass]
375  list_B0Ld_jxMassLo = [B_lo, B_lo]
376  list_B0Ld_jxMassHi = [B_hi, B_hi]
377 
378  list_B0Ld_obj = []
379  for hypo in list_B0Ld_hypo:
380  list_B0Ld_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
381 
382  for i in range(len(list_B0Ld_obj)):
383  list_B0Ld_obj[i].JXVertices = list_B0Ld_jxInput[i]
384  list_B0Ld_obj[i].TrackParticleCollection = mainIDInput
385  list_B0Ld_obj[i].RelinkTracks = TrkToRelink
386  list_B0Ld_obj[i].V0Vertices = "V0Collection"
387  list_B0Ld_obj[i].UseImprovedMass = True
388  list_B0Ld_obj[i].LambdaMassLowerCut = Ld_lo
389  list_B0Ld_obj[i].LambdaMassUpperCut = Ld_hi
390  list_B0Ld_obj[i].KsMassLowerCut = Ks_lo
391  list_B0Ld_obj[i].KsMassUpperCut = Ks_hi
392  list_B0Ld_obj[i].JXMassLowerCut = list_B0Ld_jxMassLo[i]
393  list_B0Ld_obj[i].JXMassUpperCut = list_B0Ld_jxMassHi[i]
394  list_B0Ld_obj[i].JpsiMassLowerCut = Jpsi_lo
395  list_B0Ld_obj[i].JpsiMassUpperCut = Jpsi_hi
396  list_B0Ld_obj[i].MassLowerCut = 0.
397  list_B0Ld_obj[i].MassUpperCut = 100000.
398  list_B0Ld_obj[i].CascadeVertexCollections = ["BPHY25_"+list_B0Ld_hypo[i]+"_CascadeVtx1","BPHY25_"+list_B0Ld_hypo[i]+"_CascadeVtx2","BPHY25_"+list_B0Ld_hypo[i]+"_CascadeMainVtx"]
399  list_B0Ld_obj[i].HasJXSubVertex = True
400  list_B0Ld_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
401  list_B0Ld_obj[i].V0Hypothesis = "Lambda"
402  list_B0Ld_obj[i].MassCutGamma = 10.
403  list_B0Ld_obj[i].Chi2CutGamma = 3.
404  list_B0Ld_obj[i].LxyV0Cut = 5.
405  list_B0Ld_obj[i].HypothesisName = list_B0Ld_hypo[i]
406  list_B0Ld_obj[i].NumberOfJXDaughters = 4
407  list_B0Ld_obj[i].JXDaug1MassHypo = Mumass
408  list_B0Ld_obj[i].JXDaug2MassHypo = Mumass
409  list_B0Ld_obj[i].JXDaug3MassHypo = list_B0Ld_jxDau3Mass[i]
410  list_B0Ld_obj[i].JXDaug4MassHypo = list_B0Ld_jxDau4Mass[i]
411  list_B0Ld_obj[i].JXPtOrdering = False
412  list_B0Ld_obj[i].NumberOfDisVDaughters = 2
413  list_B0Ld_obj[i].JXMass = list_B0Ld_jxMass[i]
414  list_B0Ld_obj[i].JpsiMass = Jpsimass
415  list_B0Ld_obj[i].LambdaMass = Lambdamass
416  list_B0Ld_obj[i].KsMass = Ksmass
417  list_B0Ld_obj[i].ApplyJXMassConstraint = True
418  list_B0Ld_obj[i].ApplyJpsiMassConstraint = True
419  list_B0Ld_obj[i].ApplyV0MassConstraint = False
420  list_B0Ld_obj[i].ApplyMainVMassConstraint = False
421  list_B0Ld_obj[i].Chi2CutV0 = 4.
422  list_B0Ld_obj[i].Chi2Cut = 4.
423  list_B0Ld_obj[i].Trackd0Cut = 3.0
424  list_B0Ld_obj[i].MaxJXCandidates = 20
425  list_B0Ld_obj[i].MaxV0Candidates = 20
426  list_B0Ld_obj[i].MaxMainVCandidates = 30
427  list_B0Ld_obj[i].RefitPV = True
428  list_B0Ld_obj[i].MaxnPV = 50
429  list_B0Ld_obj[i].RefPVContainerName = "BPHY25_"+list_B0Ld_hypo[i]+"_RefPrimaryVertices"
430  list_B0Ld_obj[i].TrkVertexFitterTool = vkalvrt
431  list_B0Ld_obj[i].V0VertexFitterTool = v0fitter
432  list_B0Ld_obj[i].GammaFitterTool = gammafitter
433  list_B0Ld_obj[i].PVRefitter = pvrefitter
434  list_B0Ld_obj[i].V0Tools = V0Tools
435  list_B0Ld_obj[i].TrackToVertexTool = tracktovtxtool
436  list_B0Ld_obj[i].V0TrackSelectorTool = v0trackselect
437  list_B0Ld_obj[i].TrackSelectorTool = trackselect
438  list_B0Ld_obj[i].Extrapolator = extrapolator
439 
440 
443 
444  list_B0Ks_hypo = ["B0KpiKs", "B0piKKs"]
445  list_B0Ks_jxInput = ["BPHY25FourTrack_B0", "BPHY25FourTrack_B0"]
446  list_B0Ks_jxMass = [B0mass, B0mass]
447  list_B0Ks_jxDau3Mass = [Kmass, Pimass]
448  list_B0Ks_jxDau4Mass = [Pimass, Kmass]
449  list_B0Ks_jxMassLo = [B_lo, B_lo]
450  list_B0Ks_jxMassHi = [B_hi, B_hi]
451 
452  list_B0Ks_obj = []
453  for hypo in list_B0Ks_hypo:
454  list_B0Ks_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
455 
456  for i in range(len(list_B0Ks_obj)):
457  list_B0Ks_obj[i].JXVertices = list_B0Ks_jxInput[i]
458  list_B0Ks_obj[i].TrackParticleCollection = mainIDInput
459  list_B0Ks_obj[i].RelinkTracks = TrkToRelink
460  list_B0Ks_obj[i].V0Vertices = "V0Collection"
461  list_B0Ks_obj[i].UseImprovedMass = True
462  list_B0Ks_obj[i].LambdaMassLowerCut = Ld_lo
463  list_B0Ks_obj[i].LambdaMassUpperCut = Ld_hi
464  list_B0Ks_obj[i].KsMassLowerCut = Ks_lo
465  list_B0Ks_obj[i].KsMassUpperCut = Ks_hi
466  list_B0Ks_obj[i].JXMassLowerCut = list_B0Ks_jxMassLo[i]
467  list_B0Ks_obj[i].JXMassUpperCut = list_B0Ks_jxMassHi[i]
468  list_B0Ks_obj[i].JpsiMassLowerCut = Jpsi_lo
469  list_B0Ks_obj[i].JpsiMassUpperCut = Jpsi_hi
470  list_B0Ks_obj[i].MassLowerCut = 0.
471  list_B0Ks_obj[i].MassUpperCut = 9400.
472  list_B0Ks_obj[i].CascadeVertexCollections = ["BPHY25_"+list_B0Ks_hypo[i]+"_CascadeVtx1","BPHY25_"+list_B0Ks_hypo[i]+"_CascadeVtx2","BPHY25_"+list_B0Ks_hypo[i]+"_CascadeMainVtx"]
473  list_B0Ks_obj[i].HasJXSubVertex = True
474  list_B0Ks_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
475  list_B0Ks_obj[i].V0Hypothesis = "Ks"
476  list_B0Ks_obj[i].MassCutGamma = 10.
477  list_B0Ks_obj[i].Chi2CutGamma = 3.
478  list_B0Ks_obj[i].LxyV0Cut = 5.
479  list_B0Ks_obj[i].HypothesisName = list_B0Ks_hypo[i]
480  list_B0Ks_obj[i].NumberOfJXDaughters = 4
481  list_B0Ks_obj[i].JXDaug1MassHypo = Mumass
482  list_B0Ks_obj[i].JXDaug2MassHypo = Mumass
483  list_B0Ks_obj[i].JXDaug3MassHypo = list_B0Ks_jxDau3Mass[i]
484  list_B0Ks_obj[i].JXDaug4MassHypo = list_B0Ks_jxDau4Mass[i]
485  list_B0Ks_obj[i].JXPtOrdering = False
486  list_B0Ks_obj[i].NumberOfDisVDaughters = 2
487  list_B0Ks_obj[i].JXMass = list_B0Ks_jxMass[i]
488  list_B0Ks_obj[i].JpsiMass = Jpsimass
489  list_B0Ks_obj[i].LambdaMass = Lambdamass
490  list_B0Ks_obj[i].KsMass = Ksmass
491  list_B0Ks_obj[i].ApplyJXMassConstraint = True
492  list_B0Ks_obj[i].ApplyJpsiMassConstraint = True
493  list_B0Ks_obj[i].ApplyV0MassConstraint = True
494  list_B0Ks_obj[i].ApplyMainVMassConstraint = False
495  list_B0Ks_obj[i].Chi2CutV0 = 4.
496  list_B0Ks_obj[i].Chi2Cut = 4.
497  list_B0Ks_obj[i].Trackd0Cut = 3.0
498  list_B0Ks_obj[i].MaxJXCandidates = 20
499  list_B0Ks_obj[i].MaxV0Candidates = 20
500  list_B0Ks_obj[i].MaxMainVCandidates = 30
501  list_B0Ks_obj[i].RefitPV = True
502  list_B0Ks_obj[i].MaxnPV = 50
503  list_B0Ks_obj[i].RefPVContainerName = "BPHY25_"+list_B0Ks_hypo[i]+"_RefPrimaryVertices"
504  list_B0Ks_obj[i].TrkVertexFitterTool = vkalvrt
505  list_B0Ks_obj[i].V0VertexFitterTool = v0fitter
506  list_B0Ks_obj[i].GammaFitterTool = gammafitter
507  list_B0Ks_obj[i].PVRefitter = pvrefitter
508  list_B0Ks_obj[i].V0Tools = V0Tools
509  list_B0Ks_obj[i].TrackToVertexTool = tracktovtxtool
510  list_B0Ks_obj[i].V0TrackSelectorTool = v0trackselect
511  list_B0Ks_obj[i].TrackSelectorTool = trackselect
512  list_B0Ks_obj[i].Extrapolator = extrapolator
513 
514 
518 
519  list_3bodyA_hypo = ["Bpm3body", "Xibpm3body"]
520  list_3bodyA_extraTrkMass = [Protonmass, Pimass]
521  list_3bodyA_extraTrkPt = [480.0, 760.0]
522  list_3bodyA_massLo = [B_lo, Xib_lo]
523  list_3bodyA_massHi = [B_hi, Xib_hi]
524 
525  list_3bodyA_obj = []
526  for hypo in list_3bodyA_hypo:
527  list_3bodyA_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
528 
529  for i in range(len(list_3bodyA_obj)):
530  list_3bodyA_obj[i].JXVertices = "BPHY25OniaCandidates"
531  list_3bodyA_obj[i].JXVtxHypoNames = ["Jpsi"]
532  list_3bodyA_obj[i].TrackParticleCollection = mainIDInput
533  list_3bodyA_obj[i].RelinkTracks = TrkToRelink
534  list_3bodyA_obj[i].V0Vertices = "V0Collection"
535  list_3bodyA_obj[i].UseImprovedMass = True
536  list_3bodyA_obj[i].LambdaMassLowerCut = Ld_lo
537  list_3bodyA_obj[i].LambdaMassUpperCut = Ld_hi
538  list_3bodyA_obj[i].KsMassLowerCut = Ks_lo
539  list_3bodyA_obj[i].KsMassUpperCut = Ks_hi
540  list_3bodyA_obj[i].JpsiMassLowerCut = Jpsi_lo
541  list_3bodyA_obj[i].JpsiMassUpperCut = Jpsi_hi
542  list_3bodyA_obj[i].MassLowerCut = list_3bodyA_massLo[i]
543  list_3bodyA_obj[i].MassUpperCut = list_3bodyA_massHi[i]
544  list_3bodyA_obj[i].CascadeVertexCollections = ["BPHY25_"+list_3bodyA_hypo[i]+"_CascadeVtx1","BPHY25_"+list_3bodyA_hypo[i]+"_CascadeMainVtx"]
545  list_3bodyA_obj[i].HasJXSubVertex = False
546  list_3bodyA_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
547  list_3bodyA_obj[i].V0Hypothesis = "Lambda"
548  list_3bodyA_obj[i].MassCutGamma = 10.
549  list_3bodyA_obj[i].Chi2CutGamma = 3.
550  list_3bodyA_obj[i].LxyV0Cut = 5.
551  list_3bodyA_obj[i].HypothesisName = list_3bodyA_hypo[i]
552  list_3bodyA_obj[i].NumberOfJXDaughters = 2
553  list_3bodyA_obj[i].JXDaug1MassHypo = Mumass
554  list_3bodyA_obj[i].JXDaug2MassHypo = Mumass
555  list_3bodyA_obj[i].NumberOfDisVDaughters = 2
556  list_3bodyA_obj[i].ExtraTrack1MassHypo = list_3bodyA_extraTrkMass[i]
557  list_3bodyA_obj[i].ExtraTrack1MinPt = list_3bodyA_extraTrkPt[i]
558  list_3bodyA_obj[i].JpsiMass = Jpsimass
559  list_3bodyA_obj[i].LambdaMass = Lambdamass
560  list_3bodyA_obj[i].KsMass = Ksmass
561  list_3bodyA_obj[i].ApplyJpsiMassConstraint = True
562  list_3bodyA_obj[i].ApplyV0MassConstraint = True
563  list_3bodyA_obj[i].ApplyMainVMassConstraint = False
564  list_3bodyA_obj[i].Chi2CutV0 = 4.
565  list_3bodyA_obj[i].Chi2Cut = 4.
566  list_3bodyA_obj[i].Trackd0Cut = 3.0
567  list_3bodyA_obj[i].MaxJXCandidates = 10
568  list_3bodyA_obj[i].MaxV0Candidates = 20
569  list_3bodyA_obj[i].MaxMainVCandidates = 30
570  list_3bodyA_obj[i].RefitPV = True
571  list_3bodyA_obj[i].MaxnPV = 50
572  list_3bodyA_obj[i].RefPVContainerName = "BPHY25_"+list_3bodyA_hypo[i]+"_RefPrimaryVertices"
573  list_3bodyA_obj[i].TrkVertexFitterTool = vkalvrt
574  list_3bodyA_obj[i].V0VertexFitterTool = v0fitter
575  list_3bodyA_obj[i].GammaFitterTool = gammafitter
576  list_3bodyA_obj[i].PVRefitter = pvrefitter
577  list_3bodyA_obj[i].V0Tools = V0Tools
578  list_3bodyA_obj[i].TrackToVertexTool = tracktovtxtool
579  list_3bodyA_obj[i].V0TrackSelectorTool = v0trackselect
580  list_3bodyA_obj[i].TrackSelectorTool = trackselect
581  list_3bodyA_obj[i].Extrapolator = extrapolator
582 
583 
587 
588  list_3bodyB_hypo = ["Xib03body", "Lambdab03body"]
589  list_3bodyB_extraTrkMass = [Pimass, Kmass]
590  list_3bodyB_extraTrkPt = [660.0, 660.0]
591  list_3bodyB_massLo = [Xib_lo, Ldb0_lo]
592  list_3bodyB_massHi = [Xib_hi, Ldb0_hi]
593 
594  list_3bodyB_obj = []
595  for hypo in list_3bodyB_hypo:
596  list_3bodyB_obj.append( CompFactory.DerivationFramework.JpsiXPlusDisplaced("BPHY25_"+hypo) )
597 
598  for i in range(len(list_3bodyB_obj)):
599  list_3bodyB_obj[i].JXVertices = "BPHY25OniaCandidates"
600  list_3bodyB_obj[i].JXVtxHypoNames = ["Jpsi"]
601  list_3bodyB_obj[i].TrackParticleCollection = mainIDInput
602  list_3bodyB_obj[i].RelinkTracks = TrkToRelink
603  list_3bodyB_obj[i].V0Vertices = "V0Collection"
604  list_3bodyB_obj[i].UseImprovedMass = True
605  list_3bodyB_obj[i].LambdaMassLowerCut = Ld_lo
606  list_3bodyB_obj[i].LambdaMassUpperCut = Ld_hi
607  list_3bodyB_obj[i].KsMassLowerCut = Ks_lo
608  list_3bodyB_obj[i].KsMassUpperCut = Ks_hi
609  list_3bodyB_obj[i].JpsiMassLowerCut = Jpsi_lo
610  list_3bodyB_obj[i].JpsiMassUpperCut = Jpsi_hi
611  list_3bodyB_obj[i].DisplacedMassLowerCut = Xi_lo
612  list_3bodyB_obj[i].DisplacedMassUpperCut = Xi_hi
613  list_3bodyB_obj[i].MassLowerCut = list_3bodyB_massLo[i]
614  list_3bodyB_obj[i].MassUpperCut = list_3bodyB_massHi[i]
615  list_3bodyB_obj[i].CascadeVertexCollections = ["BPHY25_"+list_3bodyB_hypo[i]+"_CascadeVtx1_sub","BPHY25_"+list_3bodyB_hypo[i]+"_CascadeVtx1","BPHY25_"+list_3bodyB_hypo[i]+"_CascadeMainVtx"]
616  list_3bodyB_obj[i].HasJXSubVertex = False
617  list_3bodyB_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
618  list_3bodyB_obj[i].V0Hypothesis = "Lambda"
619  list_3bodyB_obj[i].MassCutGamma = 10.
620  list_3bodyB_obj[i].Chi2CutGamma = 3.
621  list_3bodyB_obj[i].LxyV0Cut = 5.
622  list_3bodyB_obj[i].LxyDisVtxCut = 5.
623  list_3bodyB_obj[i].HypothesisName = list_3bodyB_hypo[i]
624  list_3bodyB_obj[i].NumberOfJXDaughters = 2
625  list_3bodyB_obj[i].JXDaug1MassHypo = Mumass
626  list_3bodyB_obj[i].JXDaug2MassHypo = Mumass
627  list_3bodyB_obj[i].NumberOfDisVDaughters = 3
628  list_3bodyB_obj[i].DisVDaug3MassHypo = Pimass
629  list_3bodyB_obj[i].DisVDaug3MinPt = 650.
630  list_3bodyB_obj[i].ExtraTrack1MassHypo = list_3bodyB_extraTrkMass[i]
631  list_3bodyB_obj[i].ExtraTrack1MinPt = list_3bodyB_extraTrkPt[i]
632  list_3bodyB_obj[i].JpsiMass = Jpsimass
633  list_3bodyB_obj[i].LambdaMass = Lambdamass
634  list_3bodyB_obj[i].KsMass = Ksmass
635  list_3bodyB_obj[i].DisVtxMass = Ximass
636  list_3bodyB_obj[i].ApplyJpsiMassConstraint = True
637  list_3bodyB_obj[i].ApplyV0MassConstraint = True
638  list_3bodyB_obj[i].ApplyDisVMassConstraint = True
639  list_3bodyB_obj[i].ApplyMainVMassConstraint = False
640  list_3bodyB_obj[i].Chi2CutV0 = 4.
641  list_3bodyB_obj[i].Chi2CutDisV = 4.
642  list_3bodyB_obj[i].Chi2Cut = 4.
643  list_3bodyB_obj[i].Trackd0Cut = 3.0
644  list_3bodyB_obj[i].MaxJXCandidates = 10
645  list_3bodyB_obj[i].MaxV0Candidates = 20
646  list_3bodyB_obj[i].MaxDisVCandidates = 30
647  list_3bodyB_obj[i].MaxMainVCandidates = 30
648  list_3bodyB_obj[i].RefitPV = True
649  list_3bodyB_obj[i].MaxnPV = 50
650  list_3bodyB_obj[i].RefPVContainerName = "BPHY25_"+list_3bodyB_hypo[i]+"_RefPrimaryVertices"
651  list_3bodyB_obj[i].TrkVertexFitterTool = vkalvrt
652  list_3bodyB_obj[i].V0VertexFitterTool = v0fitter
653  list_3bodyB_obj[i].GammaFitterTool = gammafitter
654  list_3bodyB_obj[i].PVRefitter = pvrefitter
655  list_3bodyB_obj[i].V0Tools = V0Tools
656  list_3bodyB_obj[i].TrackToVertexTool = tracktovtxtool
657  list_3bodyB_obj[i].V0TrackSelectorTool = v0trackselect
658  list_3bodyB_obj[i].TrackSelectorTool = trackselect
659  list_3bodyB_obj[i].Extrapolator = extrapolator
660 
661 
664 
665  list_2V0A_hypo = ["Jpsi2V0A"]
666 
667  list_2V0A_obj = []
668  for hypo in list_2V0A_hypo:
669  list_2V0A_obj.append( CompFactory.DerivationFramework.JpsiXPlus2V0("BPHY25_"+hypo) )
670 
671  for i in range(len(list_2V0A_obj)):
672  list_2V0A_obj[i].JXVertices = "BPHY25OniaCandidates"
673  list_2V0A_obj[i].JXVtxHypoNames = ["Jpsi"]
674  list_2V0A_obj[i].TrackParticleCollection = mainIDInput
675  list_2V0A_obj[i].RelinkTracks = TrkToRelink
676  list_2V0A_obj[i].V0Vertices = "V0Collection"
677  list_2V0A_obj[i].UseImprovedMass = True
678  list_2V0A_obj[i].LambdaMassLowerCut = Ld_lo
679  list_2V0A_obj[i].LambdaMassUpperCut = Ld_hi
680  list_2V0A_obj[i].KsMassLowerCut = Ks_lo
681  list_2V0A_obj[i].KsMassUpperCut = Ks_hi
682  list_2V0A_obj[i].JpsiMassLowerCut = Jpsi_lo
683  list_2V0A_obj[i].JpsiMassUpperCut = Jpsi_hi
684  list_2V0A_obj[i].MassLowerCut = 0.
685  list_2V0A_obj[i].MassUpperCut = 9400.
686  list_2V0A_obj[i].CascadeVertexCollections = ["BPHY25_"+list_2V0A_hypo[i]+"_CascadeVtx1","BPHY25_"+list_2V0A_hypo[i]+"_CascadeVtx2","BPHY25_"+list_2V0A_hypo[i]+"_CascadeMainVtx"]
687  list_2V0A_obj[i].HasJXSubVertex = False
688  list_2V0A_obj[i].HasJXV02SubVertex = False
689  list_2V0A_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
690  list_2V0A_obj[i].V01Hypothesis = "Lambda/Ks"
691  list_2V0A_obj[i].V02Hypothesis = "Lambda/Ks"
692  list_2V0A_obj[i].LxyV01Cut = 5.
693  list_2V0A_obj[i].LxyV02Cut = 5.
694  list_2V0A_obj[i].MassCutGamma = 10.
695  list_2V0A_obj[i].Chi2CutGamma = 3.
696  list_2V0A_obj[i].HypothesisName = list_2V0A_hypo[i]
697  list_2V0A_obj[i].NumberOfJXDaughters = 2
698  list_2V0A_obj[i].JXDaug1MassHypo = Mumass
699  list_2V0A_obj[i].JXDaug2MassHypo = Mumass
700  list_2V0A_obj[i].JpsiMass = Jpsimass
701  list_2V0A_obj[i].LambdaMass = Lambdamass
702  list_2V0A_obj[i].KsMass = Ksmass
703  list_2V0A_obj[i].ApplyJpsiMassConstraint = True
704  list_2V0A_obj[i].ApplyV01MassConstraint = True
705  list_2V0A_obj[i].ApplyV02MassConstraint = True
706  list_2V0A_obj[i].ApplyMainVMassConstraint = False
707  list_2V0A_obj[i].Chi2CutV0 = 4.
708  list_2V0A_obj[i].Chi2Cut = 4.
709  list_2V0A_obj[i].Trackd0Cut = 3.0
710  list_2V0A_obj[i].MaxJXCandidates = 10
711  list_2V0A_obj[i].MaxV0Candidates = 20
712  list_2V0A_obj[i].MaxMainVCandidates = 30
713  list_2V0A_obj[i].RefitPV = True
714  list_2V0A_obj[i].MaxnPV = 50
715  list_2V0A_obj[i].RefPVContainerName = "BPHY25_"+list_2V0A_hypo[i]+"_RefPrimaryVertices"
716  list_2V0A_obj[i].TrkVertexFitterTool = vkalvrt
717  list_2V0A_obj[i].V0VertexFitterTool = v0fitter
718  list_2V0A_obj[i].GammaFitterTool = gammafitter
719  list_2V0A_obj[i].PVRefitter = pvrefitter
720  list_2V0A_obj[i].V0Tools = V0Tools
721  list_2V0A_obj[i].TrackToVertexTool = tracktovtxtool
722  list_2V0A_obj[i].V0TrackSelectorTool = v0trackselect
723  list_2V0A_obj[i].Extrapolator = extrapolator
724 
725  list_2V0B_hypo = ["Jpsi2V0B1", "Jpsi2V0B2"]
726  list_2V0B_v02hypo = ["Lambda", "Ks"]
727  list_2V0B_jxv02mass = [Lambdab0mass, B0mass]
728  list_2V0B_jxv02massLo = [Ldb0_lo, B_lo]
729  list_2V0B_jxv02massHi = [Ldb0_hi, B_hi]
730 
731  list_2V0B_obj = []
732  for hypo in list_2V0B_hypo:
733  list_2V0B_obj.append( CompFactory.DerivationFramework.JpsiXPlus2V0("BPHY25_"+hypo) )
734 
735  for i in range(len(list_2V0B_obj)):
736  list_2V0B_obj[i].JXVertices = "BPHY25OniaCandidates"
737  list_2V0B_obj[i].JXVtxHypoNames = ["Jpsi"]
738  list_2V0B_obj[i].TrackParticleCollection = mainIDInput
739  list_2V0B_obj[i].RelinkTracks = TrkToRelink
740  list_2V0B_obj[i].V0Vertices = "V0Collection"
741  list_2V0B_obj[i].UseImprovedMass = True
742  list_2V0B_obj[i].LambdaMassLowerCut = Ld_lo
743  list_2V0B_obj[i].LambdaMassUpperCut = Ld_hi
744  list_2V0B_obj[i].KsMassLowerCut = Ks_lo
745  list_2V0B_obj[i].KsMassUpperCut = Ks_hi
746  list_2V0B_obj[i].JpsiMassLowerCut = Jpsi_lo
747  list_2V0B_obj[i].JpsiMassUpperCut = Jpsi_hi
748  list_2V0B_obj[i].JXV02MassLowerCut = list_2V0B_jxv02massLo[i]
749  list_2V0B_obj[i].JXV02MassUpperCut = list_2V0B_jxv02massHi[i]
750  list_2V0B_obj[i].MassLowerCut = 0.
751  list_2V0B_obj[i].MassUpperCut = 9400.
752  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"]
753  list_2V0B_obj[i].HasJXSubVertex = True
754  list_2V0B_obj[i].HasJXV02SubVertex = True
755  list_2V0B_obj[i].VxPrimaryCandidateName = "PrimaryVertices"
756  list_2V0B_obj[i].V01Hypothesis = "Lambda/Ks"
757  list_2V0B_obj[i].V02Hypothesis = list_2V0B_v02hypo[i]
758  list_2V0B_obj[i].LxyV01Cut = 5.
759  list_2V0B_obj[i].LxyV02Cut = 5.
760  list_2V0B_obj[i].MassCutGamma = 10.
761  list_2V0B_obj[i].Chi2CutGamma = 3.
762  list_2V0B_obj[i].HypothesisName = list_2V0B_hypo[i]
763  list_2V0B_obj[i].NumberOfJXDaughters = 2
764  list_2V0B_obj[i].JXDaug1MassHypo = Mumass
765  list_2V0B_obj[i].JXDaug2MassHypo = Mumass
766  list_2V0B_obj[i].JpsiMass = Jpsimass
767  list_2V0B_obj[i].LambdaMass = Lambdamass
768  list_2V0B_obj[i].KsMass = Ksmass
769  list_2V0B_obj[i].JXV02VtxMass = list_2V0B_jxv02mass[i]
770  list_2V0B_obj[i].ApplyJpsiMassConstraint = True
771  list_2V0B_obj[i].ApplyV01MassConstraint = True
772  list_2V0B_obj[i].ApplyV02MassConstraint = True
773  list_2V0B_obj[i].ApplyJXV02MassConstraint = True
774  list_2V0B_obj[i].ApplyMainVMassConstraint = False
775  list_2V0B_obj[i].Chi2CutV0 = 4.
776  list_2V0B_obj[i].Chi2Cut = 4.
777  list_2V0B_obj[i].Trackd0Cut = 3.0
778  list_2V0B_obj[i].MaxJXCandidates = 10
779  list_2V0B_obj[i].MaxV0Candidates = 20
780  list_2V0B_obj[i].MaxMainVCandidates = 30
781  list_2V0B_obj[i].RefitPV = True
782  list_2V0B_obj[i].MaxnPV = 50
783  list_2V0B_obj[i].RefPVContainerName = "BPHY25_"+list_2V0B_hypo[i]+"_RefPrimaryVertices"
784  list_2V0B_obj[i].TrkVertexFitterTool = vkalvrt
785  list_2V0B_obj[i].V0VertexFitterTool = v0fitter
786  list_2V0B_obj[i].GammaFitterTool = gammafitter
787  list_2V0B_obj[i].PVRefitter = pvrefitter
788  list_2V0B_obj[i].V0Tools = V0Tools
789  list_2V0B_obj[i].TrackToVertexTool = tracktovtxtool
790  list_2V0B_obj[i].V0TrackSelectorTool = v0trackselect
791  list_2V0B_obj[i].Extrapolator = extrapolator
792 
793  BPHY25Rev_JpsiXi = CompFactory.DerivationFramework.ReVertex(
794  name = "BPHY25Rev_JpsiXi",
795  InputVtxContainerName = "BPHY25_JpsiXi_CascadeMainVtx",
796  TrackIndices = [ 0, 1 ],
797  UseMassConstraint = True,
798  VertexMass = Jpsimass,
799  MassInputParticles = [Mumass, Mumass],
800  Chi2Cut = 25.,
801  TrkVertexFitterTool = vkalvrt,
802  PVRefitter = pvrefitter,
803  V0Tools = V0Tools,
804  RefitPV = False,
805  PVContainerName = "BPHY25_JpsiXi_RefPrimaryVertices",
806  OutputVtxContainerName = "BPHY25_JpsiXi_JpsiVtx")
807 
808  BPHY25Rev_JpsiOmg = CompFactory.DerivationFramework.ReVertex(
809  name = "BPHY25Rev_JpsiOmg",
810  InputVtxContainerName = "BPHY25_JpsiOmg_CascadeMainVtx",
811  TrackIndices = [ 0, 1 ],
812  UseMassConstraint = True,
813  VertexMass = Jpsimass,
814  MassInputParticles = [Mumass, Mumass],
815  Chi2Cut = 25.,
816  TrkVertexFitterTool = vkalvrt,
817  PVRefitter = pvrefitter,
818  V0Tools = V0Tools,
819  RefitPV = False,
820  PVContainerName = "BPHY25_JpsiOmg_RefPrimaryVertices",
821  OutputVtxContainerName = "BPHY25_JpsiOmg_JpsiVtx")
822 
823  BPHY25Rev_BpmLd = CompFactory.DerivationFramework.ReVertex(
824  name = "BPHY25Rev_BpmLd",
825  InputVtxContainerName = "BPHY25_BpmLd_CascadeVtx2",
826  TrackIndices = [ 0, 1, 2 ],
827  SubVertexTrackIndices = [ 1, 2 ],
828  UseMassConstraint = True,
829  SubVertexMass = Jpsimass,
830  MassInputParticles = [Mumass, Mumass, Kmass],
831  Chi2Cut = 25.,
832  TrkVertexFitterTool = vkalvrt,
833  PVRefitter = pvrefitter,
834  V0Tools = V0Tools,
835  RefitPV = False,
836  PVContainerName = "BPHY25_BpmLd_RefPrimaryVertices",
837  OutputVtxContainerName = "BPHY25_BpmLd_BpmVtx")
838 
839  BPHY25Rev_B0KpiLd = CompFactory.DerivationFramework.ReVertex(
840  name = "BPHY25Rev_B0KpiLd",
841  InputVtxContainerName = "BPHY25_B0KpiLd_CascadeVtx2",
842  TrackIndices = [ 0, 1, 2, 3 ],
843  SubVertexTrackIndices = [ 1, 2 ],
844  UseMassConstraint = True,
845  VertexMass = B0mass,
846  SubVertexMass = Jpsimass,
847  MassInputParticles = [Mumass, Mumass, Kmass, Pimass],
848  Chi2Cut = 25.,
849  TrkVertexFitterTool = vkalvrt,
850  PVRefitter = pvrefitter,
851  V0Tools = V0Tools,
852  RefitPV = False,
853  PVContainerName = "BPHY25_B0KpiLd_RefPrimaryVertices",
854  OutputVtxContainerName = "BPHY25_B0KpiLd_B0Vtx")
855 
856  BPHY25Rev_B0piKLd = CompFactory.DerivationFramework.ReVertex(
857  name = "BPHY25Rev_B0piKLd",
858  InputVtxContainerName = "BPHY25_B0piKLd_CascadeVtx2",
859  TrackIndices = [ 0, 1, 2, 3 ],
860  SubVertexTrackIndices = [ 1, 2 ],
861  UseMassConstraint = True,
862  VertexMass = B0mass,
863  SubVertexMass = Jpsimass,
864  MassInputParticles = [Mumass, Mumass, Pimass, Kmass],
865  Chi2Cut = 25.,
866  TrkVertexFitterTool = vkalvrt,
867  PVRefitter = pvrefitter,
868  V0Tools = V0Tools,
869  RefitPV = False,
870  PVContainerName = "BPHY25_B0piKLd_RefPrimaryVertices",
871  OutputVtxContainerName = "BPHY25_B0piKLd_B0Vtx")
872 
873  BPHY25Rev_B0KpiKs = CompFactory.DerivationFramework.ReVertex(
874  name = "BPHY25Rev_B0KpiKs",
875  InputVtxContainerName = "BPHY25_B0KpiKs_CascadeVtx2",
876  TrackIndices = [ 0, 1, 2, 3 ],
877  SubVertexTrackIndices = [ 1, 2 ],
878  UseMassConstraint = True,
879  VertexMass = B0mass,
880  SubVertexMass = Jpsimass,
881  MassInputParticles = [Mumass, Mumass, Kmass, Pimass],
882  Chi2Cut = 25.,
883  TrkVertexFitterTool = vkalvrt,
884  PVRefitter = pvrefitter,
885  V0Tools = V0Tools,
886  RefitPV = False,
887  PVContainerName = "BPHY25_B0KpiKs_RefPrimaryVertices",
888  OutputVtxContainerName = "BPHY25_B0KpiKs_B0Vtx")
889 
890  BPHY25Rev_B0piKKs = CompFactory.DerivationFramework.ReVertex(
891  name = "BPHY25Rev_B0piKKs",
892  InputVtxContainerName = "BPHY25_B0piKKs_CascadeVtx2",
893  TrackIndices = [ 0, 1, 2, 3 ],
894  SubVertexTrackIndices = [ 1, 2 ],
895  UseMassConstraint = True,
896  VertexMass = B0mass,
897  SubVertexMass = Jpsimass,
898  MassInputParticles = [Mumass, Mumass, Pimass, Kmass],
899  Chi2Cut = 25.,
900  TrkVertexFitterTool = vkalvrt,
901  PVRefitter = pvrefitter,
902  V0Tools = V0Tools,
903  RefitPV = False,
904  PVContainerName = "BPHY25_B0piKKs_RefPrimaryVertices",
905  OutputVtxContainerName = "BPHY25_B0piKKs_B0Vtx")
906 
907  BPHY25Rev_Bpm3body = CompFactory.DerivationFramework.ReVertex(
908  name = "BPHY25Rev_Bpm3body",
909  InputVtxContainerName = "BPHY25_Bpm3body_CascadeMainVtx",
910  TrackIndices = [ 0, 1, 2 ],
911  SubVertexTrackIndices = [ 1, 2 ],
912  UseMassConstraint = True,
913  SubVertexMass = Jpsimass,
914  MassInputParticles = [Mumass, Mumass, Protonmass],
915  Chi2Cut = 25.,
916  TrkVertexFitterTool = vkalvrt,
917  PVRefitter = pvrefitter,
918  V0Tools = V0Tools,
919  RefitPV = False,
920  PVContainerName = "BPHY25_Bpm3body_RefPrimaryVertices",
921  OutputVtxContainerName = "BPHY25_Bpm3body_JpsiPVtx")
922 
923  BPHY25Rev_Xibpm3body = CompFactory.DerivationFramework.ReVertex(
924  name = "BPHY25Rev_Xibpm3body",
925  InputVtxContainerName = "BPHY25_Xibpm3body_CascadeMainVtx",
926  TrackIndices = [ 0, 1, 2 ],
927  SubVertexTrackIndices = [ 1, 2 ],
928  UseMassConstraint = True,
929  SubVertexMass = Jpsimass,
930  MassInputParticles = [Mumass, Mumass, Pimass],
931  Chi2Cut = 25.,
932  TrkVertexFitterTool = vkalvrt,
933  PVRefitter = pvrefitter,
934  V0Tools = V0Tools,
935  RefitPV = False,
936  PVContainerName = "BPHY25_Xibpm3body_RefPrimaryVertices",
937  OutputVtxContainerName = "BPHY25_Xibpm3body_JpsiPiVtx")
938 
939  BPHY25Rev_Xib03body = CompFactory.DerivationFramework.ReVertex(
940  name = "BPHY25Rev_Xib03body",
941  InputVtxContainerName = "BPHY25_Xib03body_CascadeMainVtx",
942  TrackIndices = [ 0, 1 ],
943  UseMassConstraint = True,
944  VertexMass = Jpsimass,
945  MassInputParticles = [Mumass, Mumass],
946  Chi2Cut = 25.,
947  TrkVertexFitterTool = vkalvrt,
948  PVRefitter = pvrefitter,
949  V0Tools = V0Tools,
950  RefitPV = False,
951  PVContainerName = "BPHY25_Xib03body_RefPrimaryVertices",
952  OutputVtxContainerName = "BPHY25_Xib03body_JpsiVtx")
953 
954  BPHY25Rev_Lambdab03body = CompFactory.DerivationFramework.ReVertex(
955  name = "BPHY25Rev_Lambdab03body",
956  InputVtxContainerName = "BPHY25_Lambdab03body_CascadeMainVtx",
957  TrackIndices = [ 0, 1 ],
958  UseMassConstraint = True,
959  VertexMass = Jpsimass,
960  MassInputParticles = [Mumass, Mumass],
961  Chi2Cut = 25.,
962  TrkVertexFitterTool = vkalvrt,
963  PVRefitter = pvrefitter,
964  V0Tools = V0Tools,
965  RefitPV = False,
966  PVContainerName = "BPHY25_Lambdab03body_RefPrimaryVertices",
967  OutputVtxContainerName = "BPHY25_Lambdab03body_JpsiVtx")
968 
969  BPHY25Rev_Jpsi2V0A = CompFactory.DerivationFramework.ReVertex(
970  name = "BPHY25Rev_Jpsi2V0A",
971  InputVtxContainerName = "BPHY25_Jpsi2V0A_CascadeMainVtx",
972  TrackIndices = [ 0, 1 ],
973  UseMassConstraint = True,
974  VertexMass = Jpsimass,
975  MassInputParticles = [Mumass, Mumass],
976  Chi2Cut = 25.,
977  TrkVertexFitterTool = vkalvrt,
978  PVRefitter = pvrefitter,
979  V0Tools = V0Tools,
980  RefitPV = False,
981  PVContainerName = "BPHY25_Jpsi2V0A_RefPrimaryVertices",
982  OutputVtxContainerName = "BPHY25_Jpsi2V0A_JpsiVtx")
983 
984  BPHY25Rev_Jpsi2V0B1 = CompFactory.DerivationFramework.ReVertex(
985  name = "BPHY25Rev_Jpsi2V0B1",
986  InputVtxContainerName = "BPHY25_Jpsi2V0B1_CascadeVtx3",
987  TrackIndices = [ 0, 1 ],
988  UseMassConstraint = True,
989  VertexMass = Jpsimass,
990  MassInputParticles = [Mumass, Mumass],
991  Chi2Cut = 25.,
992  TrkVertexFitterTool = vkalvrt,
993  PVRefitter = pvrefitter,
994  V0Tools = V0Tools,
995  RefitPV = False,
996  PVContainerName = "BPHY25_Jpsi2V0B1_RefPrimaryVertices",
997  OutputVtxContainerName = "BPHY25_Jpsi2V0B1_JpsiVtx")
998 
999  BPHY25Rev_Jpsi2V0B2 = CompFactory.DerivationFramework.ReVertex(
1000  name = "BPHY25Rev_Jpsi2V0B2",
1001  InputVtxContainerName = "BPHY25_Jpsi2V0B2_CascadeVtx3",
1002  TrackIndices = [ 0, 1 ],
1003  UseMassConstraint = True,
1004  VertexMass = Jpsimass,
1005  MassInputParticles = [Mumass, Mumass],
1006  Chi2Cut = 25.,
1007  TrkVertexFitterTool = vkalvrt,
1008  PVRefitter = pvrefitter,
1009  V0Tools = V0Tools,
1010  RefitPV = False,
1011  PVContainerName = "BPHY25_Jpsi2V0B2_RefPrimaryVertices",
1012  OutputVtxContainerName = "BPHY25_Jpsi2V0B2_JpsiVtx")
1013 
1014  Collections = [ ]
1015  RefPVContainers = [ ]
1016  RefPVAuxContainers = [ ]
1017  passedCandidates = [ ]
1018 
1019  list_obj = list_disV_obj + list_BpmLd_obj + list_B0Ld_obj + list_B0Ks_obj + list_3bodyA_obj + list_3bodyB_obj + list_2V0A_obj + list_2V0B_obj
1020  list_rev = [BPHY25Rev_JpsiXi, BPHY25Rev_JpsiOmg, BPHY25Rev_BpmLd, BPHY25Rev_B0KpiLd, BPHY25Rev_B0piKLd, BPHY25Rev_B0KpiKs, BPHY25Rev_B0piKKs, BPHY25Rev_Bpm3body, BPHY25Rev_Xibpm3body, BPHY25Rev_Xib03body, BPHY25Rev_Lambdab03body, BPHY25Rev_Jpsi2V0A, BPHY25Rev_Jpsi2V0B1, BPHY25Rev_Jpsi2V0B2]
1021 
1022  for obj in list_obj:
1023  Collections += obj.CascadeVertexCollections
1024  RefPVContainers += ["xAOD::VertexContainer#BPHY25_" + obj.HypothesisName + "_RefPrimaryVertices"]
1025  RefPVAuxContainers += ["xAOD::VertexAuxContainer#BPHY25_" + obj.HypothesisName + "_RefPrimaryVerticesAux."]
1026  passedCandidates += ["BPHY25_" + obj.HypothesisName + "_CascadeMainVtx"]
1027 
1028  for obj in list_rev:
1029  Collections += [ obj.OutputVtxContainerName ]
1030 
1031  BPHY25_SelectEvent = CompFactory.DerivationFramework.AnyVertexSkimmingTool(name = "BPHY25_SelectEvent", VertexContainerNames = passedCandidates)
1032  acc.addPublicTool(BPHY25_SelectEvent)
1033 
1034  augmentation_tools = [BPHY25_AugOriginalCounts, BPHY25_Reco_mumu, BPHY25FourTrackReco_B0, BPHY25ThreeTrackReco_Bpm, BPHY25Select_Jpsi] + list_obj + list_rev
1035  for t in augmentation_tools : acc.addPublicTool(t)
1036 
1037  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
1038  "BPHY25Kernel",
1039  AugmentationTools = augmentation_tools,
1040  SkimmingTools = [BPHY25_SelectEvent]
1041  ))
1042 
1043  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
1044  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
1045  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
1046  BPHY25SlimmingHelper = SlimmingHelper("BPHY25SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
1047  from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
1048  BPHY25_AllVariables = getDefaultAllVariables()
1049  BPHY25_StaticContent = []
1050 
1051  # Needed for trigger objects
1052  BPHY25SlimmingHelper.IncludeMuonTriggerContent = True
1053  BPHY25SlimmingHelper.IncludeBPhysTriggerContent = True
1054 
1055 
1056  BPHY25_AllVariables += ["PrimaryVertices"]
1057  BPHY25_StaticContent += RefPVContainers
1058  BPHY25_StaticContent += RefPVAuxContainers
1059 
1060 
1061  BPHY25_AllVariables += ["InDetTrackParticles", "InDetLargeD0TrackParticles"]
1062 
1063 
1066  BPHY25_AllVariables += ["CombinedMuonTrackParticles", "ExtrapolatedMuonTrackParticles"]
1067 
1068 
1069  BPHY25_AllVariables += ["Muons", "MuonSegments"]
1070 
1071 
1072  for collection in Collections:
1073  BPHY25_StaticContent += ["xAOD::VertexContainer#%s" % collection]
1074  BPHY25_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % collection]
1075 
1076  # Truth information for MC only
1077  if isSimulation:
1078  BPHY25_AllVariables += ["TruthEvents","TruthParticles","TruthVertices","MuonTruthParticles"]
1079 
1080  BPHY25SlimmingHelper.SmartCollections = ["Muons", "PrimaryVertices", "InDetTrackParticles", "InDetLargeD0TrackParticles"]
1081  BPHY25SlimmingHelper.AllVariables = BPHY25_AllVariables
1082  BPHY25SlimmingHelper.StaticContent = BPHY25_StaticContent
1083 
1084  BPHY25ItemList = BPHY25SlimmingHelper.GetItemList()
1085  acc.merge(OutputStreamCfg(flags, "DAOD_BPHY25", ItemList=BPHY25ItemList, AcceptAlgs=["BPHY25Kernel"]))
1086  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_BPHY25", AcceptAlgs=["BPHY25Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
1087  acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True, printComponentsOnly=False)
1088  return acc
python.HIGG1D1CustomVertexConfig.PrimaryVertexRefittingToolCfg
def PrimaryVertexRefittingToolCfg(flags, **kwargs)
Definition: HIGG1D1CustomVertexConfig.py:7
python.TrkV0FitterConfig.TrkV0VertexFitter_InDetExtrCfg
def TrkV0VertexFitter_InDetExtrCfg(flags, name="TrkV0VertexFitter_InDetExtr", **kwargs)
Definition: TrkV0FitterConfig.py:22
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
commonBPHYMethodsCfg.BPHY_TrkVKalVrtFitterCfg
def BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName, **kwargs)
Definition: commonBPHYMethodsCfg.py:6
BPHY25.BPHY25Cfg
def BPHY25Cfg(flags)
Definition: BPHY25.py:14
python.AtlasExtrapolatorConfig.AtlasExtrapolatorCfg
def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator')
Definition: AtlasExtrapolatorConfig.py:63
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
python.PartPropSvcConfig.PartPropSvcCfg
def PartPropSvcCfg(flags, **kwargs)
Definition: PartPropSvcConfig.py:6
commonBPHYMethodsCfg.BPHY_V0ToolCfg
def BPHY_V0ToolCfg(flags, BPHYDerivationName)
Definition: commonBPHYMethodsCfg.py:11
python.InDetConversionFinderToolsConfig.BPHY_VertexPointEstimatorCfg
def BPHY_VertexPointEstimatorCfg(flags, name="BPHY_VertexPointEstimator", **kwargs)
Definition: InDetConversionFinderToolsConfig.py:69
commonBPHYMethodsCfg.getDefaultAllVariables
def getDefaultAllVariables()
Definition: commonBPHYMethodsCfg.py:32
python.InDetToolsConfig.InDetLRTMergeCfg
def InDetLRTMergeCfg(flags, name="InDetLRTMerge", **kwargs)
Definition: InDetToolsConfig.py:14
python.TrkVKalVrtFitterConfig.V0VKalVrtFitterCfg
def V0VKalVrtFitterCfg(flags, name="V0VKalVrtFitter", **kwargs)
Definition: TrkVKalVrtFitterConfig.py:57
TrackToVertexConfig.InDetTrackToVertexCfg
def InDetTrackToVertexCfg(flags, name='InDetTrackToVertex', **kwargs)
Definition: TrackToVertexConfig.py:18
python.InDetTrackSelectorToolConfig.V0InDetConversionTrackSelectorToolCfg
def V0InDetConversionTrackSelectorToolCfg(flags, name='InDetV0VxTrackSelector', **kwargs)
Definition: InDetTrackSelectorToolConfig.py:38
python.InDetTrackSelectorToolConfig.BPHY_InDetDetailedTrackSelectorToolCfg
def BPHY_InDetDetailedTrackSelectorToolCfg(flags, name='BPHY_InDetDetailedTrackSelectorTool', **kwargs)
Definition: InDetTrackSelectorToolConfig.py:213
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1