ATLAS Offline Software
Loading...
Searching...
No Matches
BPHY26.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2#====================================================================
3# BPHY26.py (Based on BPHY8, BPHY16, and BPHY13)
4# Contact: yue.xu@cern.ch
5#====================================================================
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9from AthenaConfiguration.Enums import MetadataCategory
10from AthenaCommon.Logging import logging
11log_BPHY26 = logging.getLogger('BPHY26')
12
13BPHYDerivationName = "BPHY26"
14streamName = "StreamDAOD_BPHY26"
15
16def BPHY26KernelCfg(flags, **kwargs):
17 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg)
18 from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
19 acc = ComponentAccumulator()
20
21 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
22 BPHY26TriggerListsHelper = TriggerListsHelper(flags)
23
24 V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName))
25 acc.addPublicTool(V0Tools)
26 vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName)) # VKalVrt vertex fitter
27 acc.addPublicTool(vkalvrt)
28 trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName))
29 acc.addPublicTool(trackselect)
30 vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, BPHYDerivationName))
31 acc.addPublicTool(vpest)
32 pvrefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags))
33 acc.addPublicTool(pvrefitter)
34
35 # mass limits and constants used in the following
36 Phimass = 1019.461
37 Jpsimass = 3096.916
38 Upsimass = 9460.30
39 Wmass = 80377.
40
41 Jpsimass_lower = 770.0
42 Jpsimass_upper = 10000.0 #Three channels, Phi + pi, Jpsi + pi and Upsilon +pi, are actually considered
43 Wmass_lower = 40000.
44 Wmass_upper = 13000000
45
46 BPHY26JpsiFinder = CompFactory.Analysis.JpsiFinder( # phi, psi, upsilon
47 name = "BPHY26JpsiFinder",
48 muAndMu = True,
49 muAndTrack = False,
50 TrackAndTrack = False,
51 assumeDiMuons = True, # If true, will assume dimu hypothesis and use PDG value for mu mass
52 trackThresholdPt = 2500.,
53 invMassUpper = Jpsimass_upper,
54 invMassLower = Jpsimass_lower,
55 Chi2Cut = 30.,
56 oppChargesOnly = True,
57 atLeastOneComb = True,
58 useCombinedMeasurement = False, # Only takes effect if combOnly=True
59 muonCollectionKey = "Muons",
60 TrackParticleCollection = "InDetTrackParticles",
61 TrkVertexFitterTool = vkalvrt, # VKalVrt vertex fitter
62 TrackSelectorTool = trackselect,
63 VertexPointEstimator = vpest,
64 useMCPCuts = False )
65
66 acc.addPublicTool(BPHY26JpsiFinder)
67
68 BPHY26_Reco_mumu = CompFactory.DerivationFramework.Reco_Vertex(
69 name = "BPHY26_Reco_mumu",
70 VertexSearchTool = BPHY26JpsiFinder,
71 OutputVtxContainerName = "BPHY26OniaCandidates",
72 PVContainerName = "PrimaryVertices",
73 RefPVContainerName = "SHOULDNOTBEUSED",
74 V0Tools = V0Tools,
75 RefitPV = True,
76 PVRefitter = pvrefitter,
77 DoVertexType = 1)
78 #https://gitlab.cern.ch/atlas/athena/-/blob/21.2/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/src/BPhysPVTools.cxx#L259
79 # bit pattern: doZ0BA|doZ0|doA0|doPt
80
81
82 BPHY26Plus1Track = CompFactory.Analysis.JpsiPlus1Track(
83 name = "BPHY26Plus1Track",
84 pionHypothesis = True,
85 kaonHypothesis = False,
86 trkThresholdPt = 3000,
87 trkMaxEta = 2.6,
88 JpsiMassLower = Jpsimass_lower,
89 JpsiMassUpper = Jpsimass_upper,
90 TrkTrippletMassLower = Wmass_lower,
91 TrkTrippletMassUpper = Wmass_upper,
92 Chi2Cut = 30.0,
93 JpsiContainerKey = "BPHY26OniaCandidates",
94 TrackParticleCollection = "InDetTrackParticles",
95 MuonsUsedInJpsi = "Muons",
96 ExcludeJpsiMuonsOnly = True,
97 TrkVertexFitterTool = vkalvrt,
98 TrackSelectorTool = trackselect,
99 UseMassConstraint = False)
100
101 acc.addPublicTool(BPHY26Plus1Track)
102
103 BPHY26ThreeTrackSelectAndWrite = CompFactory.DerivationFramework.Reco_Vertex(
104 name = "BPHY26ThreeTrackSelectAndWrite",
105 VertexSearchTool = BPHY26Plus1Track,
106 OutputVtxContainerName = "BPHY26ThreeTrack",
107 PVContainerName = "PrimaryVertices",
108 RefPVContainerName = "BPHY26RefPrimaryVertices1",
109 RefitPV = True,
110 V0Tools = V0Tools,
111 PVRefitter = pvrefitter,
112 MaxPVrefit = 10000,
113 DoVertexType = 7)
114
115
116 BPHY26_Select_ThreeTrack = CompFactory.DerivationFramework.Select_onia2mumu(
117 name = "BPHY26_Select_ThreeTrack",
118 HypothesisName = "ThreeTracks",
119 InputVtxContainerName = "BPHY26ThreeTrack",
120 V0Tools = V0Tools,
121 TrkMasses = [105.658, 105.658, 139.570],
122 VtxMassHypo = Wmass,
123 MassMin = Wmass_lower,
124 MassMax = Wmass_upper,
125 Chi2Max = 30.)
126
127 #====================================================================
128 # Isolation
129 #====================================================================
130 #Track isolation for candidates
131
132 BPHY26TrackIsolationDecorator = CompFactory.DerivationFramework.VertexTrackIsolation(
133 name = "BPHY26TrackIsolationDecorator",
134 TrackIsoTool = "xAOD::TrackIsolationTool",
135 TrackContainer = "InDetTrackParticles",
136 InputVertexContainer = "BPHY26ThreeTrack",
137 PassFlags = ["passed_ThreeTracks"],
138 DoIsoPerTrk = True,
139 RemoveDuplicate = 2
140 )
141
142 #====================================================================
143 # Revertex with mass constraint
144 #====================================================================
145
146 BPHY26_Revertex_phipi = CompFactory.DerivationFramework.ReVertex(
147 name = "BPHY26_Revertex_phipi",
148 InputVtxContainerName = "BPHY26ThreeTrack",
149 TrackIndices = [ 0, 1, 2 ],
150 SubVertexTrackIndices = [ 1, 2 ], # Track indices start from 1 (not 0)! (https://gitlab.cern.ch/atlas/athena/-/blob/21.2/Tracking/TrkVertexFitter/TrkVKalVrtCore/src/PrCFit.cxx#L170)
151 RefitPV = True,
152 RefPVContainerName = "BPHY26phipiRefPrimaryVertices", # use existing refitted PVs
153 UseMassConstraint = False,
154 SubVertexMass = Phimass,
155 MassInputParticles = [105.658, 105.658, 139.570],
156 TrkVertexFitterTool = vkalvrt,
157 PVRefitter = pvrefitter,
158 V0Tools = V0Tools,
159 OutputVtxContainerName = "BPHY26Revtx_phipi")
160
161 BPHY26_Select_phipi = CompFactory.DerivationFramework.Select_onia2mumu(
162 name = "BPHY26_Select_phipi",
163 HypothesisName = "phipi",
164 InputVtxContainerName = "BPHY26Revtx_phipi",
165 TrkMasses = [105.658, 105.658, 139.570],
166 VtxMassHypo = Wmass,
167 MassMin = Wmass_lower,
168 MassMax = Wmass_upper,
169 Chi2Max = 30.)
170
171 BPHY26_Revertex_Jpsipi = CompFactory.DerivationFramework.ReVertex(
172 name = "BPHY26_Revertex_Jpsipi",
173 InputVtxContainerName = "BPHY26ThreeTrack",
174 TrackIndices = [ 0, 1, 2 ],
175 SubVertexTrackIndices = [ 1, 2 ],
176 RefitPV = True,
177 RefPVContainerName = "BPHY26JpsipiRefPrimaryVertices",
178 UseMassConstraint = True,
179 SubVertexMass = Jpsimass,
180 MassInputParticles = [105.658, 105.658, 139.570],
181 TrkVertexFitterTool = vkalvrt,
182 PVRefitter = pvrefitter,
183 V0Tools = V0Tools,
184 OutputVtxContainerName = "BPHY26Revtx_Jpsipi")
185
186 BPHY26_Select_Jpsipi = CompFactory.DerivationFramework.Select_onia2mumu(
187 name = "BPHY26_Select_Jpsipi",
188 HypothesisName = "Jpsipi",
189 InputVtxContainerName = "BPHY26Revtx_Jpsipi",
190 TrkMasses = [105.658, 105.658, 139.570],
191 VtxMassHypo = Wmass,
192 MassMin = Wmass_lower,
193 MassMax = Wmass_upper,
194 Chi2Max = 30.)
195
196 BPHY26_Revertex_Upsipi = CompFactory.DerivationFramework.ReVertex(
197 name = "BPHY26_Revertex_Upsipi",
198 InputVtxContainerName = "BPHY26ThreeTrack",
199 TrackIndices = [ 0, 1, 2 ],
200 SubVertexTrackIndices = [ 1, 2 ],
201 RefitPV = True,
202 RefPVContainerName = "BPHY26UpsipiRefPrimaryVertices",
203 UseMassConstraint = True,
204 SubVertexMass = Upsimass,
205 MassInputParticles = [105.658, 105.658, 139.570],
206 TrkVertexFitterTool = vkalvrt,
207 PVRefitter = pvrefitter,
208 V0Tools = V0Tools,
209 OutputVtxContainerName = "BPHY26Revtx_Upsipi")
210
211 BPHY26_Select_Upsipi = CompFactory.DerivationFramework.Select_onia2mumu(
212 name = "BPHY26_Select_Upsipi",
213 HypothesisName = "Upsipi",
214 InputVtxContainerName = "BPHY26Revtx_Upsipi",
215 TrkMasses = [105.658, 105.658, 139.570],
216 VtxMassHypo = Wmass,
217 MassMin = Wmass_lower,
218 MassMax = Wmass_upper,
219 Chi2Max = 30.)
220
221
222 #--------------------------------------------------------------------
223
230
231 # Common augmentations
232 from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
233 acc.merge(PhysCommonAugmentationsCfg(
234 flags,
235 TriggerListsHelper = BPHY26TriggerListsHelper
236 ))
237
238
239 expression = "( count(BPHY26ThreeTrack.passed_ThreeTracks) > 0 && ( count(BPHY26Revtx_Jpsipi.passed_Jpsipi) + count(BPHY26Revtx_Upsipi.passed_Upsipi) + count(BPHY26Revtx_phipi.passed_phipi) ) > 0)"
240 BPHY26_SelectEvent = CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "BPHY26_SelectEvent", expression = expression)
241
242 augTools = [BPHY26_Reco_mumu, BPHY26ThreeTrackSelectAndWrite, BPHY26_Select_ThreeTrack]
243 augTools += [BPHY26TrackIsolationDecorator, BPHY26_Revertex_phipi , BPHY26_Select_phipi, BPHY26_Revertex_Jpsipi, BPHY26_Select_Jpsipi , BPHY26_Revertex_Upsipi , BPHY26_Select_Upsipi]
244 skimTools = [BPHY26_SelectEvent]
245 for t in augTools +skimTools : acc.addPublicTool(t)
246 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel("BPHY26Kernel",
247 AugmentationTools = augTools,
248 #Only skim if not MC
249 SkimmingTools = skimTools,
250 ThinningTools = []))
251
252
253 from IsolationAlgs.DerivationTrackIsoConfig import DerivationTrackIsoCfg
254 acc.merge(DerivationTrackIsoCfg(flags, object_types=("Muons")))
255
256 # IFF augmentation - Adding Lepton Taggers
257 #from LeptonTaggers.LeptonTaggersConfig import DecoratePLITAlgsCfg
258 #acc.merge(DecoratePLITAlgsCfg(flags))
259
260 from IsolationSelection.IsolationSelectionConfig import IsoCloseByAlgsCfg
261 contNames = [ "Muons"]
262 acc.merge(IsoCloseByAlgsCfg(flags, isPhysLite = False, containerNames = contNames, useSelTools = True, stream_name = "StreamDAOD_BPHY26"))
263
264
265 from BTagging.FlavorTaggingConfig import FlavorTaggingCfg
266 acc.merge(FlavorTaggingCfg(flags, "AntiKt4EMPFlowJets"), sequenceName="BPHY26Sequence")
267
268
269 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
270 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
271 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
272
273 BPHY26SlimmingHelper = SlimmingHelper("BPHY26SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
274
275 BPHY26SlimmingHelper.SmartCollections = ["EventInfo",
276 "Electrons",
277 "Photons",
278 "Muons",
279 "PrimaryVertices",
280 "InDetTrackParticles",
281 "AntiKt4EMTopoJets",
282 "AntiKt4EMPFlowJets",
283 "MET_Baseline_AntiKt4EMTopo",
284 "MET_Baseline_AntiKt4EMPFlow",
285 "TauJets",
286 "TauJets_MuonRM",
287 "DiTauJets",
288 "DiTauJetsLowPt",
289 "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets",
290 "AntiKtVR30Rmax4Rmin02PV0TrackJets",
291 ]
292
293 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
294 BPHY26_AllVariables = getDefaultAllVariables()
295 BPHY26_StaticContent = []
296
297
298
299 BPHY26_AllVariables += ["PrimaryVertices"]
300 BPHY26_StaticContent += ["xAOD::VertexContainer#BPHY26RefPrimaryVertices1"]
301 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#BPHY26RefPrimaryVertices1Aux."]
302 BPHY26_StaticContent += ["xAOD::VertexContainer#BPHY26phipiRefPrimaryVertices"]
303 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#BPHY26phipiRefPrimaryVerticesAux."]
304 BPHY26_StaticContent += ["xAOD::VertexContainer#BPHY26JpsipiRefPrimaryVertices"]
305 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#BPHY26JpsipiRefPrimaryVerticesAux."]
306 BPHY26_StaticContent += ["xAOD::VertexContainer#BPHY26UpsipiRefPrimaryVertices"]
307 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#BPHY26UpsipiRefPrimaryVerticesAux."]
308
309
310 BPHY26_AllVariables += ["InDetTrackParticles"]
311
312
315 BPHY26_AllVariables += ["CombinedMuonTrackParticles", "ExtrapolatedMuonTrackParticles"]
316
317
318 BPHY26_AllVariables += ["Muons","MuonSegments"]
319
320 BPHY26_StaticContent += ["xAOD::VertexContainer#%s" % BPHY26_Reco_mumu.OutputVtxContainerName]
321 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY26_Reco_mumu.OutputVtxContainerName]
322
323 BPHY26_StaticContent += ["xAOD::VertexContainer#%s" % BPHY26ThreeTrackSelectAndWrite.OutputVtxContainerName]
324 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY26ThreeTrackSelectAndWrite.OutputVtxContainerName]
325
326 BPHY26_StaticContent += ["xAOD::VertexContainer#%s" % BPHY26_Revertex_phipi.OutputVtxContainerName]
327 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY26_Revertex_phipi.OutputVtxContainerName]
328
329 BPHY26_StaticContent += ["xAOD::VertexContainer#%s" % BPHY26_Revertex_Jpsipi.OutputVtxContainerName]
330 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY26_Revertex_Jpsipi.OutputVtxContainerName]
331
332 BPHY26_StaticContent += ["xAOD::VertexContainer#%s" % BPHY26_Revertex_Upsipi.OutputVtxContainerName]
333 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY26_Revertex_Upsipi.OutputVtxContainerName]
334
335 excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
336 BPHY26_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
337 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
338 BPHY26_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
339 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
340 BPHY26_StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
341 BPHY26_StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
342
343
344
345 # Truth content
346 if flags.Input.isMC:
347 from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
348 addTruth3ContentToSlimmerTool(BPHY26SlimmingHelper)
349 BPHY26SlimmingHelper.ExtraVariables += ["Electrons.TruthLink","Muons.TruthLink","Photons.TruthLink","AntiKt4TruthDressedWZJets.IsoFixedCone5Pt"]
350
351 BPHY26_AllVariables += ["TruthLHEParticles","TruthHFWithDecayParticles","TruthHFWithDecayVertices","TruthCharm","TruthPileupParticles","InTimeAntiKt4TruthJets","OutOfTimeAntiKt4TruthJets",
352 "TruthPrimaryVertices","TruthEvents","TruthParticles","TruthVertices","TruthElectrons","TruthMuons","TruthTaus"]
353
354 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTauAndDownstreamParticlesCfg
355 acc.merge(AddTauAndDownstreamParticlesCfg(flags))
356 BPHY26_AllVariables += ["TruthTausWithDecayParticles","TruthTausWithDecayVertices"]
357
358 BPHY26SlimmingHelper.SmartCollections += [
359 "AntiKt4TruthDressedWZJets",
360 "AntiKt4TruthWZJets",
361 "AntiKt4TruthJets"
362 ]
363
364
365 MuonsExtraContent = [ ".".join( [
366 "Muons",
367 "MeasEnergyLoss.MeasEnergyLossSigma.EnergyLossSigma.ParamEnergyLoss",
368 "ParamEnergyLossSigmaMinus.ParamEnergyLossSigmaPlus.clusterLink.scatteringCurvatureSignificance",
369 "deltaPhiRescaled2.deltaPhiFromLastMeasurement.scatteringNeighbourSignificance",
370 "ptcone20.ptcone30.ptcone40.ptvarcone20.ptvarcone30.ptvarcone40.topoetcone30",
371 "neflowisol20.neflowisol30.neflowisol40.ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt500",
372 "ptvarcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500",
373 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt500",
374 "ptvarcone40_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500",
375 "ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone30_Nonprompt_All_MaxWeightTTVA_pt500",
376 "ptcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone40_Nonprompt_All_MaxWeightTTVA_pt500",
377 "ptcone40_Nonprompt_All_MaxWeightTTVA_pt1000",
378 "msInnerMatchChi2", "isoSelIsOK", "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500_CloseByCorr",
379 "ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000_CloseByCorr", "neflowisol20_CloseByCorr", "topoetcone20_CloseByCorr"
380 ] ) ]
381
382 BPHY26SlimmingHelper.ExtraVariables += ["AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.IsoFixedCone5PtPUsub",
383 "AntiKt4EMPFlowJets.QGTransformer_ConstScore.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.ConeExclBHadronsFinal.ConeExclCHadronsFinal.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.isJvtHS.isJvtPU.IsoFixedCone5PtPUsub",
384 "TruthPrimaryVertices.t.x.y.z",
385 "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT.numberOfTRTHits.numberOfTRTOutliers",
386 "EventInfo.GenFiltHT.GenFiltMET.GenFiltHTinclNu.GenFiltPTZ.GenFiltFatJ.HF_Classification.HF_SimpleClassification",
387 "TauJets.dRmax.etOverPtLeadTrk",
388 "TauJets_MuonRM.dRmax.etOverPtLeadTrk",
389 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET.ex.ey",
390 "HLT_xAOD__TrigMissingETContainer_TrigEFMissingET_mht.ex.ey"]
391
392 BPHY26SlimmingHelper.ExtraVariables += MuonsExtraContent
393
394 from IsolationSelection.IsolationSelectionConfig import setupIsoCloseBySlimmingVariables
395 setupIsoCloseBySlimmingVariables(BPHY26SlimmingHelper)
396
397 BPHY26SlimmingHelper.AllVariables = BPHY26_AllVariables
398 BPHY26SlimmingHelper.StaticContent = BPHY26_StaticContent
399
400 # Needed for trigger objects
401 BPHY26SlimmingHelper.IncludeMuonTriggerContent = True
402 BPHY26SlimmingHelper.IncludeBPhysTriggerContent = True
403
404 # Trigger matching
405 # Run 2
406 if flags.Trigger.EDMVersion == 2:
407 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
408 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = BPHY26SlimmingHelper,
409 OutputContainerPrefix = "TrigMatch_",
410 TriggerList = BPHY26TriggerListsHelper.Run2TriggerNamesTau)
411 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = BPHY26SlimmingHelper,
412 OutputContainerPrefix = "TrigMatch_",
413 TriggerList = BPHY26TriggerListsHelper.Run2TriggerNamesNoTau)
414
415 # Run 3, or Run 2 with navigation conversion
416 if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
417 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
418 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(BPHY26SlimmingHelper)
419
420 # L1 trigger objects
421 from Campaigns.Utils import getDataYear
422 if getDataYear(flags) >= 2024:
423 # Run 3 with Phase I jet RoIs.
424 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddjFexRoIsToSlimmingHelper
425 AddjFexRoIsToSlimmingHelper(SlimmingHelper = BPHY26SlimmingHelper)
426 elif getDataYear(flags) >= 2015:
427 # Run 2 and early Run 3, legacy L1 RoIs
428 from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddLegacyL1JetRoIsToSlimmingHelper
429 AddLegacyL1JetRoIsToSlimmingHelper(SlimmingHelper = BPHY26SlimmingHelper)
430
431
432 BPHY26ItemList = BPHY26SlimmingHelper.GetItemList()
433 acc.merge(OutputStreamCfg(flags, "DAOD_BPHY26", ItemList=BPHY26ItemList, AcceptAlgs=["BPHY26Kernel"]))
434 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_BPHY26", AcceptAlgs=["BPHY26Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
435 acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True)
436 return acc
437
438def BPHY26Cfg(flags):
439 log_BPHY26.info('****************** STARTING BPHY26 ******************')
440 acc = ComponentAccumulator()
441 # Get the lists of triggers needed for trigger matching.
442 # This is needed at this scope (for the slimming) and further down in the config chain
443 # for actually configuring the matching, so we create it here and pass it down
444 # TODO: this should ideally be called higher up to avoid it being run multiple times in a train
445
446 # dedicated augmentations
447 acc.merge(BPHY26KernelCfg(flags, name="BPHY26Kernel", StreamName = streamName))
448
449 return acc
450
BPHY26Cfg(flags)
Definition BPHY26.py:438
BPHY26KernelCfg(flags, **kwargs)
Definition BPHY26.py:16