13def BPHY6Cfg(flags):
14 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import (BPHY_V0ToolCfg, BPHY_InDetDetailedTrackSelectorToolCfg, BPHY_VertexPointEstimatorCfg, BPHY_TrkVKalVrtFitterCfg)
15 from JpsiUpsilonTools.JpsiUpsilonToolsConfig import PrimaryVertexRefittingToolCfg
16 acc = ComponentAccumulator()
17 isSimulation = flags.Input.isMC
18
19 dimuon_chi2_max = 50.
20 dimuon_mass_min = 100.
21 dimuon_mass_max = 150e3
22
23 V0Tools = acc.popToolsAndMerge(BPHY_V0ToolCfg(flags, BPHYDerivationName))
24 vkalvrt = acc.popToolsAndMerge(BPHY_TrkVKalVrtFitterCfg(flags, BPHYDerivationName))
25 acc.addPublicTool(vkalvrt)
26 acc.addPublicTool(V0Tools)
27 trackselect = acc.popToolsAndMerge(BPHY_InDetDetailedTrackSelectorToolCfg(flags, BPHYDerivationName))
28 acc.addPublicTool(trackselect)
29 vpest = acc.popToolsAndMerge(BPHY_VertexPointEstimatorCfg(flags, BPHYDerivationName))
30 acc.addPublicTool(vpest)
31 from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
32 extrap = acc.popToolsAndMerge(InDetExtrapolatorCfg(flags))
33 acc.addPublicTool(extrap)
34 BPHY6_Extrap_Tool = CompFactory.DerivationFramework.MuonExtrapolationTool(name = "BPHY6_ExtrapolationTool", Extrapolator = extrap)
35 BPHY6JpsiFinder = CompFactory.Analysis.JpsiFinder(
36 name = "BPHY6JpsiFinder",
37 muAndMu = True,
38 muAndTrack = False,
39 TrackAndTrack = False,
40 assumeDiMuons = True,
41 invMassUpper = dimuon_mass_max,
42 invMassLower = dimuon_mass_min,
43 Chi2Cut = dimuon_chi2_max,
44 oppChargesOnly = True,
45 atLeastOneComb = True,
46 useCombinedMeasurement = False,
47 muonCollectionKey = "Muons",
48 TrackParticleCollection = "InDetTrackParticles",
49 V0VertexFitterTool = None,
50 useV0Fitter = False,
51 TrkVertexFitterTool = vkalvrt,
52 TrackSelectorTool = trackselect,
53 VertexPointEstimator = vpest,
54 useMCPCuts = False )
55
56 BPHY6_Reco_mumu = CompFactory.DerivationFramework.Reco_Vertex(
57 name = "BPHY6_Reco_mumu",
58 VertexSearchTool = BPHY6JpsiFinder,
59 OutputVtxContainerName = "BPHY6OniaCandidates",
60 V0Tools = V0Tools,
61 PVRefitter = acc.popToolsAndMerge(PrimaryVertexRefittingToolCfg(flags)),
62 PVContainerName = "PrimaryVertices",
63 RefPVContainerName = "BPHY6RefittedPrimaryVertices")
64
65 BPHY6_Select_Jpsi2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
66 name = "BPHY6_Select_Jpsi2mumu",
67 HypothesisName = "Jpsi",
68 InputVtxContainerName = "BPHY6OniaCandidates",
69 V0Tools = V0Tools,
70 VtxMassHypo = 3096.916,
71 MassMin = 2700.0,
72 MassMax = 3500.0,
73 Chi2Max = 20)
74
75 BPHY6_Select_Psi2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
76 name = "BPHY6_Select_Psi2mumu",
77 HypothesisName = "Psi",
78 InputVtxContainerName = "BPHY6OniaCandidates",
79 V0Tools = V0Tools,
80 VtxMassHypo = 3686.09,
81 MassMin = 3200.0,
82 MassMax = 4200.0,
83 Chi2Max = 20)
84
85 BPHY6_Select_Upsi2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
86 name = "BPHY6_Select_Upsi2mumu",
87 HypothesisName = "Upsi",
88 InputVtxContainerName = "BPHY6OniaCandidates",
89 V0Tools = V0Tools,
90 VtxMassHypo = 9460.30,
91 MassMin = 8000.0,
92 MassMax = 12000.0,
93 Chi2Max = 20)
94
95 BPHY6_Select_Bmumu2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
96 name = "BPHY6_Select_Bmumu2mumu",
97 HypothesisName = "Bmumu",
98 InputVtxContainerName = "BPHY6OniaCandidates",
99 V0Tools = V0Tools,
100 VtxMassHypo = 5366.77,
101 MassMin = 4200.0,
102 MassMax = 8000.0,
103 Chi2Max = 20)
104
105 BPHY6_Select_Zmumu2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
106 name = "BPHY6_Select_Zmumu2mumu",
107 HypothesisName = "Zmumu",
108 InputVtxContainerName = "BPHY6OniaCandidates",
109 V0Tools = V0Tools,
110 VtxMassHypo = 91187.6,
111 MassMin = 60000.0,
112 MassMax = 120000.0,
113 Chi2Max = 20)
114
115 BPHY6_Select_Onia2mumu = CompFactory.DerivationFramework.Select_onia2mumu(
116 name = "BPHY6_Select_Onia2mumu",
117 HypothesisName = "Onia",
118 InputVtxContainerName = "BPHY6OniaCandidates",
119 V0Tools = V0Tools,
120 VtxMassHypo = 3096.916,
121 MassMin = dimuon_mass_min,
122 MassMax = dimuon_mass_max,
123 Chi2Max = 20)
124
125 skimmingTools = []
126
127 if flags.Trigger.EDMVersion >= 0:
128 trigger_list = [r'HLT_\d?mu\d+']
129 BPHY6TrigSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
130 name = "BPHY6TrigSkimmingTool",
131 TriggerListOR = trigger_list )
132 skimmingTools += [BPHY6TrigSkimmingTool]
133
134 expression = "count(BPHY6OniaCandidates.passed_Onia) > 0 "
135 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
136 xAODStringSkimmingToolCfg)
137 BPHY6_SelectEvent = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
138 flags, name = "BPHY6_SelectEvent", expression = expression))
139 skimmingTools += [BPHY6_SelectEvent]
140
141 BPHY6Thin_vtxTrk = CompFactory.DerivationFramework.Thin_vtxTrk(
142 name = "BPHY6Thin_vtxTrk",
143 TrackParticleContainerName = "InDetTrackParticles",
144 StreamName = streamName,
145 VertexContainerNames = ["BPHY6OniaCandidates"],
146 PassFlags = ["passed_Onia"], )
147 BPHY6MuonTPThinningTool = CompFactory.DerivationFramework.MuonTrackParticleThinning(name = "BPHY6MuonTPThinningTool",
148 MuonKey = "Muons",
149 StreamName = streamName,
150 InDetTrackParticlesKey = "InDetTrackParticles")
151
152
153 BPHY6ThinningTools = [BPHY6Thin_vtxTrk, BPHY6MuonTPThinningTool]
154 if isSimulation:
155 BPHY6TruthThinTool = CompFactory.DerivationFramework.GenericTruthThinning(name = "BPHY6TruthThinTool",
156 ParticleSelectionString = "TruthParticles.pdgId == 443 || TruthParticles.pdgId == 100443 || TruthParticles.pdgId == 553 || TruthParticles.pdgId == 100553 || TruthParticles.pdgId == 200553 || TruthParticles.pdgId == 23 || TruthParticles.pdgId == 531 || TruthParticles.pdgId == 511 || TruthParticles.pdgId == 521 || TruthParticles.pdgId == 541",
157 PreserveDescendants = True,
158 StreamName = streamName,
159 PreserveAncestors = True)
160 BPHY6ThinningTools.append(BPHY6TruthThinTool)
161
162 SkimmingORTool = CompFactory.DerivationFramework.FilterCombinationOR(
163 "BPHY6SkimmingOR",
164 FilterList = skimmingTools)
165
166 augTools = [BPHY6_Reco_mumu, BPHY6_Select_Jpsi2mumu, BPHY6_Select_Psi2mumu,
167 BPHY6_Select_Upsi2mumu, BPHY6_Select_Bmumu2mumu,
168 BPHY6_Select_Zmumu2mumu, BPHY6_Select_Onia2mumu, BPHY6_Extrap_Tool]
169 for t in augTools + BPHY6ThinningTools + [SkimmingORTool] + skimmingTools:
170 acc.addPublicTool(t)
171
172 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel("BPHY6Kernel",
173 AugmentationTools = augTools,
174 SkimmingTools = [SkimmingORTool],
175 ThinningTools = BPHY6ThinningTools ))
176
177 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
178 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
179 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
180 BPHY6SlimmingHelper =
SlimmingHelper(
"BPHY6SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
181
182
183 BPHY6SlimmingHelper.IncludeMuonTriggerContent = True
184 BPHY6SlimmingHelper.IncludeBPhysTriggerContent = True
185 from DerivationFrameworkBPhys.commonBPHYMethodsCfg import getDefaultAllVariables
186 AllVariables = getDefaultAllVariables()
187 StaticContent = []
188 AllVariables += ["LVL1MuonRoIs"]
189
190
191 AllVariables += ["PrimaryVertices"]
192 StaticContent += ["xAOD::VertexContainer#BPHY6RefittedPrimaryVertices"]
193 StaticContent += ["xAOD::VertexAuxContainer#BPHY6RefittedPrimaryVerticesAux."]
194
195
196 AllVariables += ["InDetTrackParticles"]
197
198 AllVariables += ["HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Muon_EFID"]
199 AllVariables += ["HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Muon_IDTrig"]
200 AllVariables += ["HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Muon_FTF"]
201 AllVariables += ["HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Bphysics_FTF"]
202 AllVariables += ["HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Bphysics_IDTrig"]
203
204
205
206
209 AllVariables += ["CombinedMuonTrackParticles"]
210 AllVariables += ["ExtrapolatedMuonTrackParticles"]
211 AllVariables += ["MuonSpectrometerTrackParticles"]
212
213
214 AllVariables += ["Muons"]
215 AllVariables += ["HLT_xAOD__L2StandAloneMuonContainer_MuonL2SAInfo"]
216 AllVariables += ["HLT_xAOD__L2CombinedMuonContainer_MuonL2CBInfo"]
217 AllVariables += ["HLT_xAOD__MuonContainer_MuonEFInfo"]
218
219
220 AllVariables += ["HLT_xAOD__TrigBphysContainer_L2BMuMuXFex" ]
221 AllVariables += ["HLT_xAOD__TrigBphysContainer_EFBMuMuXFex" ]
222 AllVariables += ["HLT_xAOD__TrigBphysContainer_L2BMuMuFex" ]
223 AllVariables += ["HLT_xAOD__TrigBphysContainer_EFBMuMuFex" ]
224 AllVariables += ["HLT_xAOD__TrigBphysContainer_L2TrackMass" ]
225 AllVariables += ["HLT_xAOD__TrigBphysContainer_EFTrackMass" ]
226 AllVariables += ["HLT_xAOD__TrigBphysContainer_L2MultiMuFex"]
227 AllVariables += ["HLT_xAOD__TrigBphysContainer_EFMultiMuFex"]
228
229
230
231 StaticContent += ["xAOD::VertexContainer#%s" % BPHY6_Reco_mumu.OutputVtxContainerName]
232 StaticContent += ["xAOD::VertexAuxContainer#%sAux.-vxTrackAtVertex" % BPHY6_Reco_mumu.OutputVtxContainerName]
233
234 if isSimulation:
235 AllVariables += ["TruthEvents","TruthParticles","TruthVertices","MuonTruthParticles"]
236 BPHY6SlimmingHelper.AllVariables = AllVariables
237 BPHY6SlimmingHelper.StaticContent = StaticContent
238 BPHY6ItemList = BPHY6SlimmingHelper.GetItemList()
239 acc.merge(OutputStreamCfg(flags, "DAOD_BPHY6", ItemList=BPHY6ItemList, AcceptAlgs=["BPHY6Kernel"]))
240 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_BPHY6", AcceptAlgs=["BPHY6Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
241 acc.printConfig(withDetails=True, summariseProps=True, onlyComponents = [], printDefaults=True)
242 return acc