ATLAS Offline Software
PhysDESDM_DV.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2 #
3 #
4 # ##########################################################################################
5 # Electron/photon/muon augmentation
6 # Use the derivation framework tools directly
7 # ##########################################################################################
8 
9 # Cache the container names (used throughout)
10 jetContainer = primRPVLLDESDM.DV_containerFlags.jetCollectionName
11 METContainer= primRPVLLDESDM.DV_containerFlags.METCollectionName
12 photonContainer = primRPVLLDESDM.DV_containerFlags.photonCollectionName
13 muonContainer = primRPVLLDESDM.DV_containerFlags.muonCollectionName
14 electronContainer = primRPVLLDESDM.DV_containerFlags.electronCollectionName
15 
16 
17 # ##########################################################################################
18 # Selection algorithms setup
19 # ##########################################################################################
20 
21 def DVSelectionString(flags, container):
22  """Construct object selection string based on the flags provided (from DVFlags)
23  """
24 
25  cutList = []
26  try:
27  cutList.append('%s.pt > %s'%(container,flags.cutEtMin))
28  except:
29  pass
30  try:
31  cutList.append('abs(%s.eta) < %s'%(container,flags.cutEtaMax))
32  except:
33  pass
34  try:
35  cutList.append("DV%s%s"%(container,flags.cutIsEM))
36  except:
37  pass
38  cutString = 'count(' + ' && '.join(cutList) + ') > %i'%(flags.nPassed-1)
39  return cutString
40 
41 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool as skimtool
42 from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel as kernel
43 
45  cutString=""
46  if flags.triggers.__len__() >=1:
47  cutString+=flags.triggers[0]
48  if flags.triggers.__len__() >1:
49  for trigger in flags.triggers[1:]:
50  cutString+=" || "+trigger
51  return cutString
52 
53 
57 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationAND
58 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationOR
59 
60 
61 
64 
65 
66 
67 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__DVTracklessJetFilterTool
68 
69 DVSingleTracklessJetFilterTool = DerivationFramework__DVTracklessJetFilterTool( name = "DVSingleTracklessJetFilterTool",
70  JetContainerKey = jetContainer,
71  JetPtCut= primRPVLLDESDM.DV_SingleTracklessJetFilterFlags.cutEtMin,
72  JetEtaCut= primRPVLLDESDM.DV_SingleTracklessJetFilterFlags.cutEtaMax,
73  sumPtTrkCut = primRPVLLDESDM.DV_SingleTracklessJetFilterFlags.cutSumPtTrkMax,
74  nJetsRequired = 1)
75 
76 ToolSvc+=DVSingleTracklessJetFilterTool
77 
78 DVDoubleTracklessJetFilterTool = DerivationFramework__DVTracklessJetFilterTool( name = "DVDoubleTracklessJetFilterTool",
79  JetContainerKey = jetContainer,
80  JetPtCut= primRPVLLDESDM.DV_DoubleTracklessJetFilterFlags.cutEtMin,
81  JetEtaCut= primRPVLLDESDM.DV_DoubleTracklessJetFilterFlags.cutEtaMax,
82  sumPtTrkCut = primRPVLLDESDM.DV_DoubleTracklessJetFilterFlags.cutSumPtTrkMax,
83  nJetsRequired = 2)
84 
85 ToolSvc+=DVDoubleTracklessJetFilterTool
86 
87 
91 
92 
93 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__PrescaleTool
94 DVPrescaleToolForMultijet = DerivationFramework__PrescaleTool(name = "DVPrescaleToolForMultijet",
95  Prescale = primRPVLLDESDM.DV_PrescalerFlags.prescale
96  )
97 ToolSvc+=DVPrescaleToolForMultijet
98 
99 DVCombinedTracklessJetFilterToolForMultijet = DerivationFramework__FilterCombinationOR( name = "DVCombinedTracklessJetFilterToolForMultijet",
100  FilterList = [DVSingleTracklessJetFilterTool,
101  DVDoubleTracklessJetFilterTool,
102  DVPrescaleToolForMultijet],
103 
104  )
105 ToolSvc+=DVCombinedTracklessJetFilterToolForMultijet
106 
107 DVPrescaleToolForMET = DerivationFramework__PrescaleTool(name = "DVPrescaleToolForMET",
108  Prescale = primRPVLLDESDM.DV_PrescalerFlags.prescale
109  )
110 ToolSvc+=DVPrescaleToolForMET
111 
112 DVCombinedTracklessJetFilterToolForMET = DerivationFramework__FilterCombinationOR( name = "DVCombinedTracklessJetFilterToolForMET",
113  FilterList = [DVSingleTracklessJetFilterTool,
114  DVDoubleTracklessJetFilterTool,
115  DVPrescaleToolForMET],
116 
117  )
118 ToolSvc+=DVCombinedTracklessJetFilterToolForMET
119 
120 DVPrescaleToolForPhoton = DerivationFramework__PrescaleTool(name = "DVPrescaleToolForPhoton",
121  Prescale = primRPVLLDESDM.DV_PrescalerFlags.prescale
122  )
123 ToolSvc+=DVPrescaleToolForPhoton
124 
125 DVCombinedTracklessJetFilterToolForPhoton = DerivationFramework__FilterCombinationOR( name = "DVCombinedTracklessJetFilterToolForPhoton",
126  FilterList = [DVSingleTracklessJetFilterTool,
127  DVDoubleTracklessJetFilterTool,
128  DVPrescaleToolForPhoton],
129 
130  )
131 ToolSvc+=DVCombinedTracklessJetFilterToolForPhoton
132 
133 #======================================================================================================================================
134 
138 
139 
140 
143 
144 
145 
146 from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel
147 
148 # Barrel only MS only trigger
149 DVMuonBarrelTriggerFilter = skimtool( name = "DVMuonBarrelTriggerFilter",
150  expression = DVTriggerSelectionString(primRPVLLDESDM.DV_MuonBarrelFilterFlags)
151  )
152 ToolSvc+=DVMuonBarrelTriggerFilter
153 
154 DVMuonBarrelFilterTool = skimtool( name = "DVMuonBarrelFilterTool",
155  expression = DVSelectionString(primRPVLLDESDM.DV_MuonBarrelFilterFlags, muonContainer)
156  )
157 ToolSvc+=DVMuonBarrelFilterTool
158 
159 DV_MuonBarrelFilter = DerivationFramework__FilterCombinationAND( name = "DV_MuonBarrelFilter",
160  FilterList=[DVMuonBarrelFilterTool,DVMuonBarrelTriggerFilter],
161  #OutputLevel=DEBUG
162  )
163 ToolSvc+=DV_MuonBarrelFilter
164 # Full MS only trigger
165 DVMuonFullMSTriggerFilter = skimtool( name = "DVMuonFullMSTriggerFilter",
166  expression = DVTriggerSelectionString(primRPVLLDESDM.DV_MuonFullMSFilterFlags)
167  )
168 ToolSvc+=DVMuonFullMSTriggerFilter
169 
170 DVMuonFullMSFilterTool = skimtool( name = "DVMuonFullMSFilterTool",
171  expression = DVSelectionString(primRPVLLDESDM.DV_MuonFullMSFilterFlags, muonContainer)
172  )
173 ToolSvc+=DVMuonFullMSFilterTool
174 
175 DV_MuonFullMSFilter = DerivationFramework__FilterCombinationAND( name = "DV_MuonFullMSFilter",
176  FilterList=[DVMuonFullMSFilterTool,DVMuonFullMSTriggerFilter],
177  #OutputLevel=DEBUG
178  )
179 ToolSvc+=DV_MuonFullMSFilter
180 
181 # Or of barrel only and full MS
182 DV_MuonFinalFilter = DerivationFramework__FilterCombinationOR( name = "DV_MuonFinalFilter",
183  FilterList=[DV_MuonBarrelFilter,DV_MuonFullMSFilter],
184  #OutputLevel=DEBUG
185  )
186 ToolSvc+=DV_MuonFinalFilter
187 topSequence += kernel("RPVLL_DVMuonFilterKernel",
188  SkimmingTools = [DV_MuonFinalFilter])
189 RPVLLfilterNames.extend(["RPVLL_DVMuonFilterKernel"])
190 
191 
194 
195 DVPhotonTriggerFilter = skimtool( name = "DVPhotonTriggerFilter",
196  expression = DVTriggerSelectionString(primRPVLLDESDM.DV_PhotonFilterFlags)
197  )
198 ToolSvc += DVPhotonTriggerFilter
199 
200 # Photon IsEM
201 
202 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__RpvEgammaIDTool
203 DVPhotonSelection = DerivationFramework__RpvEgammaIDTool( name = "DVPhotonSelection",
204  SelectionVariable = primRPVLLDESDM.DV_PhotonFilterFlags.cutIsEM,
205  CollectionName = photonContainer,
206  EGammaSelectionKey = "DV"+photonContainer+primRPVLLDESDM.DV_PhotonFilterFlags.cutIsEM,
207  )
208 ToolSvc += DVPhotonSelection
209 topSequence += DerivationFramework__DerivationKernel( "DVPhotonAugmentationKernel",
210  AugmentationTools = [DVPhotonSelection]
211  )
212 
213 
214 
215 DVPhotonFilterTool = skimtool( name = "DVPhotonFilterTool",
216  expression = DVSelectionString(primRPVLLDESDM.DV_PhotonFilterFlags, photonContainer),
217  )
218 ToolSvc += DVPhotonFilterTool
219 DV_PhotonFinalFilter = DerivationFramework__FilterCombinationAND( name = "DV_PhotonFinalFilter",
220  FilterList=[DVPhotonFilterTool,DVPhotonTriggerFilter],
221 
222  )
223 
224 ToolSvc+=DV_PhotonFinalFilter
225 
226 DVPhotonPrescaleTool = DerivationFramework__PrescaleTool(name = "DVPhotonPrescaleTool",
227  Prescale = primRPVLLDESDM.DV_PhotonFilterFlags.prescale
228  )
229 ToolSvc+=DVPhotonPrescaleTool
230 
231 DV_PrescaledPhotonFinalFilter = DerivationFramework__FilterCombinationAND(name="DV_PrescaledPhotonFinalFilter",
232  FilterList=[DV_PhotonFinalFilter,DVPhotonPrescaleTool])
233 ToolSvc += DV_PrescaledPhotonFinalFilter
234 
235 topSequence += kernel( "RPVLL_DV_PhotonFilterKernel",
236  SkimmingTools = [DV_PrescaledPhotonFinalFilter]
237  )
238 RPVLLfilterNames.extend(["RPVLL_DV_PhotonFilterKernel"])
239 
240 
243 
244 DV_PhotonPlusTracklessJetFilter = DerivationFramework__FilterCombinationAND(name="DV_PhotonPlusTracklessJetFilter",
245  FilterList=[DV_PhotonFinalFilter,DVCombinedTracklessJetFilterToolForPhoton]
246  )
247 ToolSvc+= DV_PhotonPlusTracklessJetFilter
248 
249 topSequence += kernel( "RPVLL_DV_PhotonPlusTLJetFilterKernel",
250  SkimmingTools = [DV_PhotonPlusTracklessJetFilter]
251  )
252 RPVLLfilterNames.extend(["RPVLL_DV_PhotonPlusTLJetFilterKernel"])
253 
254 
255 
258 
259 DVMultiJetTriggerFilter = skimtool( name = "DVMultiJetTriggerFilter",
260  expression = DVTriggerSelectionString(primRPVLLDESDM.DV_MultiJetTriggerFlags)
261  )
262 ToolSvc += DVMultiJetTriggerFilter
263 
264 DV2JetFilterTool = skimtool( name = "DV2JetFilterTool",
265  expression = DVSelectionString(primRPVLLDESDM.DV_2JetFilterFlags, jetContainer),
266  )
267 ToolSvc += DV2JetFilterTool
268 
269 DV3JetFilterTool = skimtool( name = "DV3JetFilterTool",
270  expression = DVSelectionString(primRPVLLDESDM.DV_3JetFilterFlags, jetContainer),
271  )
272 ToolSvc += DV3JetFilterTool
273 
274 
275 DV3JetFinalFilter = DerivationFramework__FilterCombinationAND( name = "DV3JetFinalFilter",
276  FilterList=[DV3JetFilterTool,DV2JetFilterTool],
277 # OutputLevel=DEBUG
278  )
279 ToolSvc+=DV3JetFinalFilter
280 
281 DV4JetFilterTool = skimtool( name = "DV4JetFilterTool",
282  expression = DVSelectionString(primRPVLLDESDM.DV_4JetFilterFlags, jetContainer),
283  )
284 ToolSvc += DV4JetFilterTool
285 
286 
287 DV5JetFilterTool = skimtool( name = "DV5JetFilterTool",
288  expression = DVSelectionString(primRPVLLDESDM.DV_5JetFilterFlags, jetContainer),
289  )
290 ToolSvc += DV5JetFilterTool
291 
292 
293 DV6JetFilterTool = skimtool( name = "DV6JetFilterTool",
294  expression = DVSelectionString(primRPVLLDESDM.DV_6JetFilterFlags, jetContainer),
295  )
296 ToolSvc += DV6JetFilterTool
297 
298 DV7JetFilterTool = skimtool( name = "DV7JetFilterTool",
299  expression = DVSelectionString(primRPVLLDESDM.DV_7JetFilterFlags, jetContainer),
300  )
301 ToolSvc += DV7JetFilterTool
302 
303 
304 
305 
306 DV_multiJet_offlineJetFilter = DerivationFramework__FilterCombinationOR( name = "DV_multiJet_offlineJetFilter",
307  FilterList=[DV3JetFinalFilter,DV4JetFilterTool,DV5JetFilterTool,DV6JetFilterTool,DV7JetFilterTool],
308 
309  )
310 ToolSvc += DV_multiJet_offlineJetFilter
311 
312 
313 
314 DV_MultiJetFinalTracklessFilter = DerivationFramework__FilterCombinationAND( name = "DV_MultiJetFinalTracklessFilter",
315  FilterList=[DV_multiJet_offlineJetFilter,DVCombinedTracklessJetFilterToolForMultijet,DVMultiJetTriggerFilter],
316 
317  )
318 ToolSvc+= DV_MultiJetFinalTracklessFilter
319 
320 
321 DV_MultiJet2JHighPtFilter = skimtool( name = "DV_MultiJet2JHighPtFilter",
322  expression = DVSelectionString(primRPVLLDESDM.DV_2JetFilterFlags_HighpTCut, jetContainer),
323  )
324 ToolSvc += DV_MultiJet2JHighPtFilter
325 
326 DV_MultiJet3JHighPtFilter = skimtool( name = "DV_MultiJet3JHighPtFilter",
327  expression = DVSelectionString(primRPVLLDESDM.DV_3JetFilterFlags_HighpTCut, jetContainer),
328  )
329 ToolSvc += DV_MultiJet3JHighPtFilter
330 
331 
332 DV_Multi3_2JetHighPtFilter = DerivationFramework__FilterCombinationAND( name = "DV_Multi3_2JetHighPtFilter",
333  FilterList=[DV_MultiJet2JHighPtFilter,DV_MultiJet3JHighPtFilter],
334 
335  )
336 ToolSvc+=DV_Multi3_2JetHighPtFilter
337 
338 
339 DV_MultiJet4JHighPtFilter = skimtool( name = "DV_MultiJet4JHighPtFilter",
340  expression = DVSelectionString(primRPVLLDESDM.DV_4JetFilterFlags_HighpTCut, jetContainer),
341  )
342 ToolSvc += DV_MultiJet4JHighPtFilter
343 
344 
345 DV_MultiJet5JHighPtFilter = skimtool( name = "DV_MultiJet5JHighPtFilter",
346  expression = DVSelectionString(primRPVLLDESDM.DV_5JetFilterFlags_HighpTCut, jetContainer),
347  )
348 ToolSvc += DV_MultiJet5JHighPtFilter
349 
350 
351 DV_MultiJet6JHighPtFilter = skimtool( name = "DV_MultiJet6JHighPtFilter",
352  expression = DVSelectionString(primRPVLLDESDM.DV_6JetFilterFlags_HighpTCut, jetContainer),
353  )
354 ToolSvc += DV_MultiJet6JHighPtFilter
355 
356 
357 DV_MultiJet7JHighPtFilter = skimtool( name = "DV_MultiJet7JHighPtFilter",
358  expression = DVSelectionString(primRPVLLDESDM.DV_7JetFilterFlags_HighpTCut, jetContainer),
359  )
360 ToolSvc += DV_MultiJet7JHighPtFilter
361 
362 
363 DV_MultiJetHighPtFilter = DerivationFramework__FilterCombinationOR( name = "DV_MultiJetHighPtFilter",
364  FilterList=[DV_Multi3_2JetHighPtFilter,DV_MultiJet4JHighPtFilter,DV_MultiJet5JHighPtFilter,DV_MultiJet6JHighPtFilter,DV_MultiJet7JHighPtFilter],
365 
366  )
367 ToolSvc+=DV_MultiJetHighPtFilter
368 
369 
370 DV_MultiJetFinalFilter = DerivationFramework__FilterCombinationOR( name = "DV_MultiJetFinalFilter",
371  FilterList=[DV_MultiJetFinalTracklessFilter,DV_MultiJetHighPtFilter],
372 
373  )
374 ToolSvc+= DV_MultiJetFinalFilter
375 
376 topSequence += kernel( "RPVLL_DV_MultiJetFilterKernel",
377  SkimmingTools = [DV_MultiJetFinalFilter],
378  )
379 RPVLLfilterNames.extend(["RPVLL_DV_MultiJetFilterKernel"])
380 
381 
382 
385 
386 DVMETTriggerFilter = skimtool( name = "DVMETTriggerFilter",
387  expression = DVTriggerSelectionString(primRPVLLDESDM.DV_METFilterFlags)
388  )
389 
390 ToolSvc+=DVMETTriggerFilter
391 
392 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__DVMissingETFilterTool
393 
394 
395 DVMETFilterTool = DerivationFramework__DVMissingETFilterTool(name = "DVMETFilterTool",
396  METContainerKey = METContainer,
397  METCut=primRPVLLDESDM.DV_METFilterFlags.cutMetMin)
398 ToolSvc+=DVMETFilterTool
399 
400 DV_METFinalFilter = DerivationFramework__FilterCombinationAND( name = "DV_METFinalFilter",
401  FilterList=[DVMETFilterTool,DVMETTriggerFilter],
402 
403  )
404 ToolSvc += DV_METFinalFilter
405 
406 topSequence += kernel( "RPVLL_DV_METFilterKernel",
407  SkimmingTools = [DV_METFinalFilter],
408  )
409 RPVLLfilterNames.extend(["RPVLL_DV_METFilterKernel"])
410 
411 
440 
PhysDESDM_DV.DVTriggerSelectionString
def DVTriggerSelectionString(flags)
Definition: PhysDESDM_DV.py:44
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
PhysDESDM_DV.DVSelectionString
def DVSelectionString(flags, container)
Definition: PhysDESDM_DV.py:21