ATLAS Offline Software
SlimmingHelper.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 
36 
37 from DerivationFrameworkCore.CompulsoryContent import CompulsoryContent, CompulsoryTriggerNavigation, CompulsoryDynamicContent
38 from DerivationFrameworkCore.ContentHandler import ContentHandler
39 from DerivationFrameworkCore.ContainersOnTheFly import ContainersOnTheFly
40 from DerivationFrameworkCore.FullListOfSmartContainers import FullListOfSmartContainers
41 from AthenaConfiguration.Enums import LHCPeriod
42 import PyUtils.Logging as L
43 msg = L.logging.getLogger('DerivationFramework__SlimmingHelper')
44 msg.setLevel(L.logging.INFO)
45 
46 # This list base class allows the slimming helper to be locked after calling BuildFinalItemList
48  def __init__(self,data=[]):
49  list.__init__(self,data)
50  self.__dict__["_locked"] = False
51  def append(self,name):
52  if self._locked is True:
53  msg.error("Attempting to Modify SlimmingHelper after BuildFinalItemList has Been Called")
54  raise RuntimeError("Late Modification to SlimmingHelper do not modify after calling BuildFinalItemList")
55  else:
56  return list.append(self, name)
57  def __setattr__(self,name,value):
58  if self._locked is True:
59  msg.error("Attempting to Modify SlimmingHelper after BuildFinalItemList has Been Called")
60  raise RuntimeError("Late Modification to SlimmingHelper do not modify after calling BuildFinalItemList")
61  else:
62  self.__dict__[name] = value
63  def lock(self):
64  self.__dict__["_locked"] = True
65 
66 # Builds the "NamesAndTypes" map needed to set up the item list
67 def buildNamesAndTypes(*args):
68  namesAndTypes = {}
69  if len(args)==0:
70  from DerivationFrameworkCore.StaticNamesAndTypes import StaticNamesAndTypes
71  namesAndTypes = StaticNamesAndTypes
72  else:
73  for item in args[0]:
74  item = item.split('#')
75  namesAndTypes[item[1].strip('.')] = item[0]
76  return namesAndTypes
77 
79  def __init__(self, inputName, flags, **kwargs):
80  self.__dict__["_locked"] = False
81  self.name = inputName
82  self.FinalItemList = lockable_list() # The final item list that will be appended to the output stream
83  self.StaticContent = lockable_list() # Content added explicitly via old-style content lists
84  self.ExtraVariables = lockable_list() # Content added by users via variable names (dictionary type:[item1,item,..,N])
85  # Smart slimming (only variables needed for CP + kinematics)
87  self.AllVariables = lockable_list() # Containers for which all branches should be kept
89  self.flags = flags
103  # Choice of whether user provided a typed container list or not (CA vs non-CA)
104  if "NamesAndTypes" in kwargs.keys(): self.NamesAndTypes = buildNamesAndTypes(kwargs["NamesAndTypes"])
105  else: self.NamesAndTypes = buildNamesAndTypes()
106  self.theHandler = ContentHandler(self.name+"Handler",self.NamesAndTypes)
107 
108  # This hack prevents any members from being modified after lock is set to true, this happens in AppendContentToStream
109  def __setattr__(self,name,value):
110  if self._locked is True:
111  msg.error("Attempting to Modify SlimmingHelper "+self.name+" After AppendContentToStream has Been Called")
112  raise RuntimeError("Late Modification to SlimmingHelper, do not modifiy after calling AppendContentToStream")
113  elif type(value)==list:
114  self.__dict__[name] = lockable_list(value)
115  else:
116  self.__dict__[name] = value
117 
118  # Function to check the configuration of the Smart Slimming List
119  def CheckList(self,masterList):
120  conflicted_items=[]
121  for item in CompulsoryContent:
122  if item.endswith("#*"):
123  compare_str=item[:-2].replace("xAOD::","")
124  for m_item in masterList:
125  if m_item.startswith(compare_str) and m_item.replace("Aux.","") not in CompulsoryDynamicContent:
126  conflicted_items.append(m_item)
127  if len(conflicted_items)!=0:
128  msg.error("Slimming list contains " +str(conflicted_items)+" which are already included in compulsory content: please remove these items from slimming list")
129  raise RuntimeError("Conflict in Slimming List and Compulsory Content")
130 
131 
132  # Loops over final ItemList and appends each item to the stream
133  # Used for jobs not set up in the component accumulator
134  def AppendContentToStream(self,Stream):
135  # Check if the SlimmingHelper is locked.
136  # If it is, just loop over the items and append.
137  # If not, build the item list and then append.
138  if self._locked is False:
139  self.BuildFinalItemList()
140  for item in self.FinalItemList:
141  Stream.AddItem(item)
142 
143  # Returns the final item list. Used for component accumulator jobs
144  def GetItemList(self):
145  # Check if the SlimmingHelper is locked.
146  # If it is, just return the item list.
147  # If not, build the item list and then return it.
148  if self._locked is False:
149  self.BuildFinalItemList()
150  return(self.FinalItemList)
151 
153  # Master item list: all items that must be passed to the ContentHandler for processing
154  # This will now be filled
155  masterItemList = []
156  # All variables list: where all variables are requested, no variable lists are needed
157  # This list ensures that variables are not added individually in such cases
158  allVariablesList = []
159  self.AllVariables += CompulsoryDynamicContent
160  # Add all-variable collections
161  if len(self.AllVariables)>0:
162  for item in self.AllVariables: masterItemList.extend(self.GetWholeContentItems(item))
163  for item in masterItemList:
164  if "Aux." in item:
165  allVariablesList.append(item)
166 
167  # Trigger objects: add them by hand to the smart collection list (to keep the previous interface)
168  triggerContent = False
169 
170  if (self.IncludeAdditionalTriggerContent is True):
171  triggerContent = True
172 
173  if (self.IncludeMuonTriggerContent is True):
174  triggerContent = True
175  self.SmartCollections.append("HLT_xAOD__MuonContainer_MuonEFInfo")
176 
177  if (self.IncludeEGammaTriggerContent is True):
178  triggerContent = True
179  self.SmartCollections.append("HLT_xAOD__PhotonContainer_egamma_Photons")
180 
181  if (self.IncludeJetTriggerContent is True):
182  triggerContent = True
183  self.SmartCollections.append("HLT_xAOD__JetContainer_a4tcemsubjesFS")
184  self.SmartCollections.append("HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf") # Run 3 jet collections
185  from DerivationFrameworkCore.JetTriggerFixContent import JetTriggerFixContent
186  for item in JetTriggerFixContent:
187  self.FinalItemList.append(item)
188 
189  if (self.IncludeTrackingTriggerContent is True):
190  triggerContent = True
191  self.SmartCollections.append("HLT_IDVertex_FS")
192  self.SmartCollections.append("HLT_IDTrack_FS_FTF")
193 
194  if (self.IncludeEtMissTriggerContent is True):
195  triggerContent = True
196  self.SmartCollections.append("HLT_xAOD__TrigMissingETContainer_TrigEFMissingET")
197  from DerivationFrameworkCore.EtMissTriggerFixContent import EtMissTriggerFixContent
198  for item in EtMissTriggerFixContent:
199  self.FinalItemList.append(item)
200 
201  if (self.IncludeTauTriggerContent is True):
202  triggerContent = True
203  if self.flags.Trigger.EDMVersion == 2:
204  self.SmartCollections.append("HLT_xAOD__TauJetContainer_TrigTauRecMerged")
205  elif self.flags.Trigger.EDMVersion == 3:
206  self.SmartCollections.append("HLT_TrigTauRecMerged_MVA")
207 
208  if (self.IncludeBJetTriggerContent is True):
209  triggerContent = True
210  self.SmartCollections.append("HLT_xAOD__BTaggingContainer_HLTBjetFex")
211 
212  if (self.IncludeBPhysTriggerContent is True):
213  triggerContent = True
214  self.SmartCollections.append("HLT_xAOD__TrigBphysContainer_EFBMuMuFex")
215 
216  if (self.IncludeMinBiasTriggerContent is True):
217  triggerContent = True
218  self.SmartCollections.append("HLT_xAOD__TrigVertexCountsContainer_vertexcounts")
219 
220  # Smart items
221  if len(self.SmartCollections)>0:
222  for collection in self.SmartCollections:
223  masterItemList.extend(self.GetSmartItems(collection))
224 
225  # Run some basic tests to prevent clashes with CompulsoryContent content
226  self.CheckList(masterItemList)
227 
228  # Add extra variables
229  if len(self.ExtraVariables)>0:
230  for item in self.ExtraVariables:
231  masterItemList.extend(self.GetExtraItems(item))
232 
233  #Add on-the-fly containers to the dictionary
234  for _cont,_type in ContainersOnTheFly(self.flags):
235  if _cont not in self.AppendToDictionary:
236  self.AppendToDictionary[_cont]=_type
237 
238  # Process the master list...
239 
240  # Main containers (this is a simple list of lines, one per container X collection)
241  mainEntries = []
242  # Aux items (this is a dictionary: collection name and list of aux variables)
243  auxEntries = {}
244  self.theHandler.AppendToDictionary = self.AppendToDictionary
245  mainEntries,auxEntries = self.theHandler.GetContent(masterItemList,allVariablesList)
246 
247  # Add processed items to the stream
248  excludedAuxData = "-clusterAssociation.-PseudoJet"
249  excludedAuxEntries= [entry.strip("-") for entry in excludedAuxData.split(".")]
250  for item in mainEntries:
251  self.FinalItemList.append(item)
252  for item in auxEntries.keys():
253  theDictionary = self.NamesAndTypes.copy()
254  theDictionary.update (self.AppendToDictionary)
255  if item in theDictionary.keys():
256  if (theDictionary[item]=='xAOD::JetAuxContainer'):
257  entry = "xAOD::JetAuxContainer#"+item+"."
258  elif (theDictionary[item]=='xAOD::ShallowAuxContainer'):
259  entry = "xAOD::ShallowAuxContainer#"+item+"."
260  elif (theDictionary[item]=='xAOD::MissingETAuxAssociationMap'):
261  entry = "xAOD::MissingETAuxAssociationMap#"+item+"."
262  elif (theDictionary[item]=='xAOD::JetTrigAuxContainer'):
263  entry = "xAOD::JetTrigAuxContainer#"+item+"."
264  elif ("AuxInfo" in theDictionary[item]):
265  entry = "xAOD::AuxInfoBase!#"+item+"."
266  else:
267  entry = "xAOD::AuxContainerBase!#"+item+"."
268  for element in auxEntries[item]:
269  #Skip anything that shouldn't be written out to a DAOD for tracks or jets
270  if ('xAOD::TrackParticleContainer' in theDictionary[item]) and (element in excludedAuxEntries): continue
271  if ('xAOD::JetAuxContainer' in theDictionary[item]) and (element in excludedAuxEntries): continue
272  length = len(auxEntries[item])
273  if (element==(auxEntries[item])[length-1]):
274  entry += element
275  else:
276  entry += element+"."
277  if ('xAOD::TrackParticleContainer' in theDictionary[item] and auxEntries[item]==""):
278  entry+=excludedAuxData
279  if ('xAOD::JetAuxContainer' in theDictionary[item] and auxEntries[item]==""):
280  entry+=excludedAuxData
281  self.FinalItemList.append(entry)
282 
283  # Add compulsory items not covered by smart slimming (so no expansion)
284  for item in CompulsoryContent:
285  self.FinalItemList.append(item)
286 
287  # Add trigger item (not covered by smart slimming so no expansion)
288  # Old, will be removed (kept just to not break some deriavtions)
289  if (self.IncludeJetTauEtMissTriggerContent is True):
290  from DerivationFrameworkCore.JetTauEtMissTriggerContent import JetTauEtMissTriggerContent
291  for item in JetTauEtMissTriggerContent:
292  self.FinalItemList.append(item)
293 
294  # non xAOD collections for MinBias
295  if (self.IncludeMinBiasTriggerContent is True):
296  from DerivationFrameworkCore.MinBiasTrigger_nonxAOD_Content import MinBiasTrigger_nonxAOD_Content
297  for item in MinBiasTrigger_nonxAOD_Content:
298  self.FinalItemList.append(item)
299 
300  if (triggerContent and self.IncludeTriggerNavigation):
301  # Run2
302  for item in CompulsoryTriggerNavigation:
303  self.FinalItemList.append(item)
304  # Run3
305  from TrigDecisionTool.TrigDecisionToolConfig import possible_keys
306  for item in possible_keys:
307  if item == "HLTNav_Summary": # This is not a compact navigation summary collection, unlike the others in this list
308  continue
309  self.FinalItemList.append('xAOD::TrigCompositeContainer#'+item)
310  self.FinalItemList.append('xAOD::TrigCompositeAuxContainer#'+item+'Aux.')
311 
312  # Add non-xAOD and on-the-fly content (not covered by smart slimming so no expansion)
313  badItemsWildcards = []
314  badItemsXAOD = []
315  for item in self.StaticContent:
316  if (self.ValidateStaticContent(item)=="OK"):
317  self.FinalItemList.append(item)
318  if (self.ValidateStaticContent(item)=="WILDCARD"):
319  badItemsWildcards.append(item)
320  if (self.ValidateStaticContent(item)=="XAOD"):
321  badItemsXAOD.append(item)
322  if (len(badItemsWildcards)>0):
323  msg.error("These static items contain wildcards: not permitted")
324  print (badItemsWildcards)
325  raise RuntimeError("Static content list contains wildcards")
326  if (len(badItemsXAOD)>0):
327  msg.error("These static items are xAOD collections: not permitted")
328  print (badItemsXAOD)
329  raise RuntimeError("Static content list contains xAOD collections")
330  #Prevent any more modifications As they will be completely ignored, and hard to debug
331  self.FinalItemList.lock()
332  self.StaticContent.lock()
333  self.ExtraVariables.lock()
334  self.SmartCollections.lock()
335  self.AllVariables.lock()
336  self._locked=True
337 
338 
340 
341 # Get full content (e.g. whole aux store) for this container
342  def GetWholeContentItems(self,collection):
343  items = [collection,collection+"Aux."]
344  return items
345 
346  # Get all branches associated with all tools needed for this container
347  def GetSmartItems(self,collectionName):
348  # Look up what is needed for this container type
349  items = []
350  if collectionName not in FullListOfSmartContainers(self.flags):
351  raise RuntimeError("Smart slimming container "+collectionName+" does not exist or does not have a smart slimming list")
352  if collectionName=="EventInfo":
353  from DerivationFrameworkCore.EventInfoContent import EventInfoContent
354  items.extend(EventInfoContent)
355  elif collectionName=="Electrons":
356  from DerivationFrameworkEGamma.ElectronsCPContent import ElectronsCPContent
357  items.extend(ElectronsCPContent)
358  elif collectionName=="LRTElectrons":
359  from DerivationFrameworkEGamma.LargeD0ElectronsCPContent import LargeD0ElectronsCPContent
360  items.extend(LargeD0ElectronsCPContent)
361  elif collectionName=="Photons":
362  from DerivationFrameworkEGamma.PhotonsCPContent import PhotonsCPContent
363  items.extend(PhotonsCPContent)
364  elif collectionName=="Muons":
365  if not self.flags:
366  raise RuntimeError("We're in the era of component accumulator. Please setup your job with CA if you want to have muons")
367  from DerivationFrameworkMuons.MuonsCommonConfig import MuonCPContentCfg
368  items.extend(MuonCPContentCfg(self.flags))
369  elif collectionName=="MuonsLRT":
370  if not self.flags:
371  raise RuntimeError("We're in the era of component accumulator. Please setup your job with CA if you want to have muons")
372  from DerivationFrameworkMuons.MuonsCommonConfig import MuonCPContentLRTCfg
373  items.extend(MuonCPContentLRTCfg(self.flags))
374  elif collectionName=="TauJets":
375  from DerivationFrameworkTau.TauJetsCPContent import TauJetsCPContent
376  items.extend(TauJetsCPContent)
377  elif collectionName=="DiTauJets":
378  from DerivationFrameworkTau.DiTauJetsCPContent import DiTauJetsCPContent
379  items.extend(DiTauJetsCPContent)
380  elif collectionName=="DiTauJetsLowPt":
381  from DerivationFrameworkTau.DiTauJetsLowPtCPContent import DiTauJetsLowPtCPContent
382  items.extend(DiTauJetsLowPtCPContent)
383  elif collectionName=="TauJets_MuonRM":
384  from DerivationFrameworkTau.TauJets_MuonRMCPContent import TauJets_MuonRMCPContent
385  if "TauJets_MuonRM" not in self.AppendToDictionary:
386  self.AppendToDictionary["TauJets_MuonRM"] = 'xAOD::TauJetContainer'
387  self.AppendToDictionary["TauJets_MuonRMAux"] = 'xAOD::TauJetAuxContainer'
388  self.AppendToDictionary["TauTracks_MuonRM"] = 'xAOD::TauTrackContainer'
389  self.AppendToDictionary["TauTracks_MuonRMAux"] = 'xAOD::TauTrackAuxContainer'
390  self.AppendToDictionary["TauSecondaryVertices_MuonRM"] = 'xAOD::VertexContainer'
391  self.AppendToDictionary["TauSecondaryVertices_MuonRMAux"] = 'xAOD::VertexAuxContainer'
392  self.AppendToDictionary["TauNeutralParticleFlowObjects_MuonRM"] = 'xAOD::PFOContainer'
393  self.AppendToDictionary["TauNeutralParticleFlowObjects_MuonRMAux"] = 'xAOD::PFOAuxContainer'
394  items.extend(TauJets_MuonRMCPContent)
395  elif collectionName=="TauJets_EleRM":
396  from DerivationFrameworkTau.TauJets_EleRMCPContent import TauJets_EleRMCPContent
397  items.extend(TauJets_EleRMCPContent)
398  elif collectionName=="MET_Baseline_AntiKt4EMTopo":
399  from DerivationFrameworkJetEtMiss.MET_Baseline_AntiKt4EMTopoCPContent import MET_Baseline_AntiKt4EMTopoCPContent
400  items.extend(MET_Baseline_AntiKt4EMTopoCPContent)
401  elif collectionName=="MET_Baseline_AntiKt4EMPFlow":
402  from DerivationFrameworkJetEtMiss.MET_Baseline_AntiKt4EMPFlowCPContent import MET_Baseline_AntiKt4EMPFlowCPContent
403  items.extend(MET_Baseline_AntiKt4EMPFlowCPContent)
404  elif collectionName=="AntiKt2TruthJets":
405  from DerivationFrameworkJetEtMiss.AntiKt2TruthJetsCPContent import AntiKt2TruthJetsCPContent
406  items.extend(AntiKt2TruthJetsCPContent)
407  elif collectionName=="AntiKt4TruthJets":
408  from DerivationFrameworkJetEtMiss.AntiKt4TruthJetsCPContent import AntiKt4TruthJetsCPContent
409  items.extend(AntiKt4TruthJetsCPContent)
410  elif collectionName=="AntiKt4TruthWZJets":
411  from DerivationFrameworkJetEtMiss.AntiKt4TruthWZJetsCPContent import AntiKt4TruthWZJetsCPContent
412  items.extend(AntiKt4TruthWZJetsCPContent)
413  elif collectionName=="AntiKt4TruthDressedWZJets":
414  from DerivationFrameworkJetEtMiss.AntiKt4TruthDressedWZJetsCPContent import AntiKt4TruthDressedWZJetsCPContent
415  items.extend(AntiKt4TruthDressedWZJetsCPContent)
416  elif collectionName=="AntiKt2LCTopoJets":
417  from DerivationFrameworkJetEtMiss.AntiKt2LCTopoJetsCPContent import AntiKt2LCTopoJetsCPContent
418  items.extend(AntiKt2LCTopoJetsCPContent)
419  elif collectionName=="AntiKt4LCTopoJets":
420  from DerivationFrameworkJetEtMiss.AntiKt4LCTopoJetsCPContent import AntiKt4LCTopoJetsCPContent
421  items.extend(AntiKt4LCTopoJetsCPContent)
422  elif collectionName=="AntiKt4EMTopoJets":
423  from DerivationFrameworkJetEtMiss.AntiKt4EMTopoJetsCPContent import AntiKt4EMTopoJetsCPContent
424  items.extend(AntiKt4EMTopoJetsCPContent)
425  elif collectionName=="AntiKt4EMTopoLowPtJets":
426  from DerivationFrameworkJetEtMiss.AntiKt4EMTopoLowPtJetsCPContent import AntiKt4EMTopoLowPtJetsCPContent
427  items.extend(AntiKt4EMTopoLowPtJetsCPContent)
428  elif collectionName=="AntiKt4EMTopoNoPtCutJets":
429  from DerivationFrameworkJetEtMiss.AntiKt4EMTopoNoPtCutJetsCPContent import AntiKt4EMTopoNoPtCutJetsCPContent
430  items.extend(AntiKt4EMTopoNoPtCutJetsCPContent)
431  elif collectionName=="AntiKt4EMPFlowJets":
432  from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowJetsCPContent import AntiKt4EMPFlowJetsCPContent
433  items.extend(AntiKt4EMPFlowJetsCPContent)
434  elif collectionName=="AntiKt4EMPFlowLowPtJets":
435  from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowLowPtJetsCPContent import AntiKt4EMPFlowLowPtJetsCPContent
436  items.extend(AntiKt4EMPFlowLowPtJetsCPContent)
437  elif collectionName=="AntiKt4EMPFlowByVertexJets":
438  from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowByVertexJetsCPContent import AntiKt4EMPFlowByVertexJetsCPContent
439  items.extend(AntiKt4EMPFlowByVertexJetsCPContent)
440  elif collectionName=="AntiKt4UFOCSSKJets":
441  from DerivationFrameworkJetEtMiss.AntiKt4UFOCSSKJetsCPContent import AntiKt4UFOCSSKJetsCPContent
442  items.extend(AntiKt4UFOCSSKJetsCPContent)
443  elif collectionName=="AntiKt4UFOCSSKLowPtJets":
444  from DerivationFrameworkJetEtMiss.AntiKt4UFOCSSKLowPtJetsCPContent import AntiKt4UFOCSSKLowPtJetsCPContent
445  items.extend(AntiKt4UFOCSSKLowPtJetsCPContent)
446  elif collectionName=="AntiKt10TruthJets":
447  from DerivationFrameworkJetEtMiss.AntiKt10TruthJetsCPContent import AntiKt10TruthJetsCPContent
448  items.extend(AntiKt10TruthJetsCPContent)
449  elif collectionName=="AntiKt10TruthWZJets":
450  from DerivationFrameworkJetEtMiss.AntiKt10TruthWZJetsCPContent import AntiKt10TruthWZJetsCPContent
451  items.extend(AntiKt10TruthWZJetsCPContent)
452  elif collectionName=="AntiKt10LCTopoJets":
453  from DerivationFrameworkJetEtMiss.AntiKt10LCTopoJetsCPContent import AntiKt10LCTopoJetsCPContent
454  items.extend(AntiKt10LCTopoJetsCPContent)
455  elif collectionName=="AntiKt10TrackCaloClusterJets":
456  from DerivationFrameworkJetEtMiss.AntiKt10TrackCaloClusterJetsCPContent import AntiKt10TrackCaloClusterJetsCPContent
457  items.extend(AntiKt10TrackCaloClusterJetsCPContent)
458  elif collectionName=="AntiKt10UFOCSSKJets":
459  from DerivationFrameworkJetEtMiss.AntiKt10UFOCSSKJetsCPContent import AntiKt10UFOCSSKJetsCPContent
460  items.extend(AntiKt10UFOCSSKJetsCPContent)
461  elif collectionName=="AntiKt10UFOCHSJets":
462  from DerivationFrameworkJetEtMiss.AntiKt10UFOCHSJetsCPContent import AntiKt10UFOCHSJetsCPContent
463  items.extend(AntiKt10UFOCHSJetsCPContent)
464  elif collectionName=="AntiKt10TruthTrimmedPtFrac5SmallR20Jets":
465  from DerivationFrameworkJetEtMiss.AntiKt10TruthTrimmedPtFrac5SmallR20JetsCPContent import AntiKt10TruthTrimmedPtFrac5SmallR20JetsCPContent
466  items.extend(AntiKt10TruthTrimmedPtFrac5SmallR20JetsCPContent)
467  elif collectionName=="AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets":
468  from DerivationFrameworkJetEtMiss.AntiKt10LCTopoTrimmedPtFrac5SmallR20JetsCPContent import AntiKt10LCTopoTrimmedPtFrac5SmallR20JetsCPContent
469  items.extend(AntiKt10LCTopoTrimmedPtFrac5SmallR20JetsCPContent)
470  elif collectionName=="AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20Jets":
471  from DerivationFrameworkJetEtMiss.AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20JetsCPContent import AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20JetsCPContent
472  if "AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20Jets" not in self.AppendToDictionary:
473  self.AppendToDictionary["AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20Jets"]='xAOD::JetContainer'
474  self.AppendToDictionary["AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20JetsAux"]='xAOD::JetAuxContainer'
475  items.extend(AntiKt10TrackCaloClusterTrimmedPtFrac5SmallR20JetsCPContent)
476  elif collectionName=="AntiKt10TruthSoftDropBeta100Zcut10Jets":
477  from DerivationFrameworkJetEtMiss.AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent import AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent
478  items.extend(AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent)
479  elif collectionName=="AntiKt10TruthDressedWZSoftDropBeta100Zcut10Jets":
480  from DerivationFrameworkJetEtMiss.AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent import AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent
481  items.extend(AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent)
482  elif collectionName=="AntiKt10UFOCHSSoftDropBeta100Zcut10Jets":
483  from DerivationFrameworkJetEtMiss.AntiKt10UFOCHSSoftDropBeta100Zcut10JetsCPContent import AntiKt10UFOCHSSoftDropBeta100Zcut10JetsCPContent
484  items.extend(AntiKt10UFOCHSSoftDropBeta100Zcut10JetsCPContent)
485  elif collectionName=="AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets":
486  from DerivationFrameworkJetEtMiss.AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent import AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent
487  items.extend(AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent)
488  elif collectionName=="AntiKtVR30Rmax4Rmin02PV0TrackJets":
489  from DerivationFrameworkJetEtMiss.AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent import AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent
490  items.extend(AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent)
491  elif collectionName=="BTagging_AntiKt4UFOCSSK":
492  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
493  items.extend(BTaggingStandardContent("AntiKt4UFOCSSKJets", self.flags))
494  elif collectionName=="BTagging_AntiKt4UFOCSSK_expert":
495  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
496  items.extend(BTaggingExpertContent("AntiKt4UFOCSSKJets", self.flags))
497  elif collectionName=="BTagging_AntiKt4EMPFlow":
498  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
499  items.extend(BTaggingStandardContent("AntiKt4EMPFlowJets", self.flags))
500  elif collectionName=="BTagging_AntiKt4EMPFlow_expert":
501  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
502  items.extend(BTaggingExpertContent("AntiKt4EMPFlowJets", self.flags))
503  elif collectionName=="BTagging_AntiKt4EMTopo":
504  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
505  items.extend(BTaggingStandardContent("AntiKt4EMTopoJets", self.flags))
506  elif collectionName=="BTagging_AntiKtVR30Rmax4Rmin02Track":
507  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
508  items.extend(BTaggingStandardContent("AntiKtVR30Rmax4Rmin02PV0TrackJets", self.flags))
509  elif collectionName=="BTagging_AntiKtVR30Rmax4Rmin02Track_expert":
510  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
511  items.extend(BTaggingExpertContent("AntiKtVR30Rmax4Rmin02PV0TrackJets", self.flags))
512  elif collectionName=="BTagging_AntiKt2Track":
513  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
514  items.extend(BTaggingStandardContent("AntiKt2PV0TrackJets", self.flags))
515  elif collectionName=="BTagging_AntiKt3Track":
516  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
517  items.extend(BTaggingStandardContent("AntiKt3PV0TrackJets", self.flags))
518  elif collectionName=="BTagging_AntiKt4Track":
519  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
520  items.extend(BTaggingStandardContent("AntiKt4PV0TrackJets", self.flags))
521  elif collectionName=="BTagging_AntiKt8EMTopoExKt2Sub":
522  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
523  items.extend(BTaggingExpertContent("AntiKt8EMTopoExKt2SubJets", self.flags))
524  elif collectionName=="BTagging_AntiKt8EMTopoExKt3Sub":
525  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
526  items.extend(BTaggingExpertContent("AntiKt8EMTopoExKt3SubJets", self.flags))
527  elif collectionName=="BTagging_AntiKt8EMTopoExCoM2Sub":
528  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
529  items.extend(BTaggingExpertContent("AntiKt8EMTopoExCoM2SubJets", self.flags))
530  elif collectionName=="BTagging_AntiKt8EMPFlowExKt2Sub":
531  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
532  items.extend(BTaggingExpertContent("AntiKt8EMPFlowExKt2SubJets", self.flags))
533  elif collectionName=="BTagging_AntiKt8EMPFlowExKt3Sub":
534  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
535  items.extend(BTaggingExpertContent("AntiKt8EMPFlowExKt3SubJets", self.flags))
536  elif collectionName=="BTagging_AntiKt8EMPFlowExKt2GASub":
537  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
538  items.extend(BTaggingExpertContent("AntiKt8EMPFlowExKt2GASubJets", self.flags))
539  elif collectionName=="BTagging_AntiKt8EMPFlowExKt3GASub":
540  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
541  items.extend(BTaggingExpertContent("AntiKt8EMPFlowExKt3GASubJets", self.flags))
542  elif collectionName=="BTagging_DFAntiKt4HI":
543  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
544  items.extend(BTaggingStandardContent("DFAntiKt4HIJets", self.flags))
545  elif collectionName=="BTagging_AntiKt4HI":
546  from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
547  items.extend(BTaggingStandardContent("AntiKt4HIJets", self.flags))
548  elif collectionName=="InDetTrackParticles":
549  from DerivationFrameworkInDet.InDetTrackParticlesCPContent import InDetTrackParticlesCPContent
550  items.extend(InDetTrackParticlesCPContent)
551  if self.flags.GeoModel.Run >= LHCPeriod.Run4:
552  from DerivationFrameworkInDet.InDetTrackParticlesCPContentRun4 import InDetTrackParticlesCPContentRun4
553  items.extend(InDetTrackParticlesCPContentRun4)
554  elif collectionName=="InDetPseudoTrackParticles":
555  from DerivationFrameworkInDet.InDetPseudoTrackParticlesCPContent import InDetPseudoTrackParticlesCPContent
556  items.extend(InDetPseudoTrackParticlesCPContent)
557  elif collectionName=="InDetReplacedWithPseudoTrackParticles":
558  from DerivationFrameworkInDet.InDetReplacedWithPseudoTrackParticlesCPContent import InDetReplacedWithPseudoTrackParticlesCPContent
559  items.extend(InDetReplacedWithPseudoTrackParticlesCPContent)
560  elif collectionName=="InDetReplacedWithPseudoFromBTrackParticles":
561  from DerivationFrameworkInDet.InDetReplacedWithPseudoFromBTrackParticlesCPContent import InDetReplacedWithPseudoFromBTrackParticlesCPContent
562  items.extend(InDetReplacedWithPseudoFromBTrackParticlesCPContent)
563  elif collectionName=="InDetReplacedWithPseudoNotFromBTrackParticles":
564  from DerivationFrameworkInDet.InDetReplacedWithPseudoNotFromBTrackParticlesCPContent import InDetReplacedWithPseudoNotFromBTrackParticlesCPContent
565  items.extend(InDetReplacedWithPseudoNotFromBTrackParticlesCPContent)
566  elif collectionName=="InDetPlusPseudoTrackParticles":
567  from DerivationFrameworkInDet.InDetPlusPseudoTrackParticlesCPContent import InDetPlusPseudoTrackParticlesCPContent
568  items.extend(InDetPlusPseudoTrackParticlesCPContent)
569  elif collectionName=="InDetPlusPseudoFromBTrackParticles":
570  from DerivationFrameworkInDet.InDetPlusPseudoFromBTrackParticlesCPContent import InDetPlusPseudoFromBTrackParticlesCPContent
571  items.extend(InDetPlusPseudoFromBTrackParticlesCPContent)
572  elif collectionName=="InDetPlusPseudoNotFromBTrackParticles":
573  from DerivationFrameworkInDet.InDetPlusPseudoNotFromBTrackParticlesCPContent import InDetPlusPseudoNotFromBTrackParticlesCPContent
574  items.extend(InDetPlusPseudoNotFromBTrackParticlesCPContent)
575  elif collectionName=="InDetNoFakesTrackParticles":
576  from DerivationFrameworkInDet.InDetNoFakesTrackParticlesCPContent import InDetNoFakesTrackParticlesCPContent
577  items.extend(InDetNoFakesTrackParticlesCPContent)
578  elif collectionName=="InDetNoFakesFromBTrackParticles":
579  from DerivationFrameworkInDet.InDetNoFakesFromBTrackParticlesCPContent import InDetNoFakesFromBTrackParticlesCPContent
580  items.extend(InDetNoFakesFromBTrackParticlesCPContent)
581  elif collectionName=="InDetNoFakesNotFromBTrackParticles":
582  from DerivationFrameworkInDet.InDetNoFakesNotFromBTrackParticlesCPContent import InDetNoFakesNotFromBTrackParticlesCPContent
583  items.extend(InDetNoFakesNotFromBTrackParticlesCPContent)
584  elif collectionName=="InDetSiSPSeededTracksParticles":
585  from DerivationFrameworkInDet.InDetSiSPSeededTracksParticlesCPContent import InDetSiSPSeededTracksParticlesCPContent
586  items.extend(InDetSiSPSeededTracksParticlesCPContent)
587  elif collectionName=="InDetLargeD0TrackParticles":
588  from DerivationFrameworkInDet.InDetLargeD0TrackParticlesCPContent import InDetLargeD0TrackParticlesCPContent
589  items.extend(InDetLargeD0TrackParticlesCPContent)
590  elif collectionName=="PrimaryVertices":
591  from DerivationFrameworkInDet.PrimaryVerticesCPContent import PrimaryVerticesCPContent
592  items.extend(PrimaryVerticesCPContent)
593  if self.flags.GeoModel.Run >= LHCPeriod.Run4:
594  from DerivationFrameworkInDet.PrimaryVerticesCPContentRun4 import PrimaryVerticesCPContentRun4
595  items.extend(PrimaryVerticesCPContentRun4)
596  elif self.IncludeAdditionalTriggerContent is True:
597  from DerivationFrameworkCore.AdditionalTriggerContent import AdditionalTriggerContent
598  items.extend(AdditionalTriggerContent)
599  elif collectionName=="HLT_xAOD__MuonContainer_MuonEFInfo":
600  from DerivationFrameworkMuons.MuonTriggerContent import MuonTriggerContent
601  items.extend(MuonTriggerContent)
602  elif collectionName=="HLT_xAOD__PhotonContainer_egamma_Photons":
603  from DerivationFrameworkCore.EGammaTriggerContent import EGammaTriggerContent
604  items.extend(EGammaTriggerContent)
605  elif collectionName=="HLT_xAOD__JetContainer_a4tcemsubjesFS":
606  from DerivationFrameworkCore.JetTriggerContent import JetTriggerContent
607  items.extend(JetTriggerContent)
608  elif collectionName=="HLT_IDVertex_FS":
609  from DerivationFrameworkCore.TrackingTriggerContent import TrackingTriggerContent
610  items.extend(TrackingTriggerContent)
611  elif collectionName=="HLT_IDTrack_FS_FTF":
612  from DerivationFrameworkCore.TrackingTriggerContent import TrackingTriggerContent
613  items.extend(TrackingTriggerContent)
614  elif collectionName=="HLT_xAOD__TrigMissingETContainer_TrigEFMissingET":
615  from DerivationFrameworkCore.EtMissTriggerContent import EtMissTriggerContent
616  items.extend(EtMissTriggerContent)
617  elif collectionName=="HLT_xAOD__TauJetContainer_TrigTauRecMerged":
618  from DerivationFrameworkCore.TauTriggerContent import TauTriggerContentRun2
619  items.extend(TauTriggerContentRun2)
620  elif collectionName=="HLT_TrigTauRecMerged_MVA":
621  from DerivationFrameworkCore.TauTriggerContent import TauTriggerContentRun3
622  items.extend(TauTriggerContentRun3)
623  elif collectionName=="HLT_xAOD__BTaggingContainer_HLTBjetFex":
624  from DerivationFrameworkFlavourTag.BJetTriggerContent import BJetTriggerContent
625  items.extend(BJetTriggerContent)
626  elif collectionName=="HLT_xAOD__TrigBphysContainer_EFBMuMuFex":
627  from DerivationFrameworkCore.BPhysTriggerContent import BPhysTriggerContent
628  items.extend(BPhysTriggerContent)
629  elif collectionName=="HLT_xAOD__TrigVertexCountsContainer_vertexcounts":
630  from DerivationFrameworkCore.MinBiasTriggerContent import MinBiasTriggerContent
631  items.extend(MinBiasTriggerContent)
632  elif collectionName=="HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":
633  from DerivationFrameworkCore.JetTriggerContentRun3 import JetTriggerContentRun3
634  from DerivationFrameworkCore.JetTriggerContentRun3TLA import JetTriggerContentRun3TLA
636  items.extend(JetTriggerContentRun3)
637  else:
638  items.extend(JetTriggerContentRun3TLA)
639 
640  else:
641  raise RuntimeError("Smart slimming container "+collectionName+" does not exist or does not have a smart slimming list")
642  return items
643 
644  # Kinematics content only
645  def GetKinematicsItems(self,collectionName):
646  # Content lines in the same style as is produced by the PrintStats
647  kinematicsLine = collectionName+"Aux."+"pt.eta.phi.m"
648  items = [collectionName,kinematicsLine]
649  return items
650 
651  # Extra content, listed via container
652  def GetExtraItems(self,userInput):
653  # Build up a content list in the same style as is produced by the PrintStats
654  splitup = userInput.split(".")
655  auxContainerName = splitup[0]+"Aux"
656  items = []
657  items.append(splitup[0])
658  auxLine = ""
659  length = len(splitup)
660  for string in splitup:
661  if string==splitup[0]:
662  auxLine = auxContainerName+"."
663  continue
664  if string==splitup[length-1]:
665  auxLine = auxLine+string
666  else:
667  auxLine = auxLine+string+"."
668  items.append(auxLine)
669  return items
670 
671  # Check that static content is legit
672  def ValidateStaticContent(self,item):
673  # No wildcards
674  if ("*" in item):
675  return "WILDCARD"
676  # No xAOD containers
677  sep = item.split("#")
678  if ("xAOD::" in item and sep[1] in self.NamesAndTypes.keys()):
679  return "XAOD"
680  return "OK"
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
SlimmingHelper.SlimmingHelper.FinalItemList
FinalItemList
Definition: SlimmingHelper.py:82
SlimmingHelper.SlimmingHelper.theHandler
theHandler
Definition: SlimmingHelper.py:106
SlimmingHelper.SlimmingHelper.GetItemList
def GetItemList(self)
Definition: SlimmingHelper.py:144
SlimmingHelper.lockable_list.__init__
def __init__(self, data=[])
Definition: SlimmingHelper.py:48
SlimmingHelper.SlimmingHelper.IncludeMinBiasTriggerContent
IncludeMinBiasTriggerContent
Definition: SlimmingHelper.py:101
SlimmingHelper.SlimmingHelper.IncludeAdditionalTriggerContent
IncludeAdditionalTriggerContent
Definition: SlimmingHelper.py:91
SlimmingHelper.SlimmingHelper.flags
flags
Definition: SlimmingHelper.py:89
SlimmingHelper.SlimmingHelper.StaticContent
StaticContent
Definition: SlimmingHelper.py:83
SlimmingHelper.SlimmingHelper.AppendToDictionary
AppendToDictionary
Definition: SlimmingHelper.py:88
SlimmingHelper.SlimmingHelper.IncludeTrackingTriggerContent
IncludeTrackingTriggerContent
Definition: SlimmingHelper.py:96
SlimmingHelper.lockable_list.append
def append(self, name)
Definition: SlimmingHelper.py:51
SlimmingHelper.SlimmingHelper.ValidateStaticContent
def ValidateStaticContent(self, item)
Definition: SlimmingHelper.py:672
python.MuonsCommonConfig.MuonCPContentCfg
def MuonCPContentCfg(flags)
Definition: MuonsCommonConfig.py:201
SlimmingHelper.SlimmingHelper.NamesAndTypes
NamesAndTypes
Definition: SlimmingHelper.py:104
SlimmingHelper.lockable_list.__setattr__
def __setattr__(self, name, value)
Definition: SlimmingHelper.py:57
FullListOfSmartContainers
Definition: FullListOfSmartContainers.py:1
SlimmingHelper.SlimmingHelper.GetWholeContentItems
def GetWholeContentItems(self, collection)
Definition: SlimmingHelper.py:342
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
SlimmingHelper.SlimmingHelper.GetKinematicsItems
def GetKinematicsItems(self, collectionName)
Definition: SlimmingHelper.py:645
ContainersOnTheFly
Definition: ContainersOnTheFly.py:1
python.BTaggingContent.BTaggingExpertContent
def BTaggingExpertContent(jetcol, ConfigFlags=None)
Definition: BTaggingContent.py:153
SlimmingHelper.SlimmingHelper.IncludeEGammaTriggerContent
IncludeEGammaTriggerContent
Definition: SlimmingHelper.py:93
SlimmingHelper.SlimmingHelper
Definition: SlimmingHelper.py:78
SlimmingHelper.SlimmingHelper.__setattr__
def __setattr__(self, name, value)
Definition: SlimmingHelper.py:109
SlimmingHelper.SlimmingHelper.SmartCollections
SmartCollections
Definition: SlimmingHelper.py:86
python.BTaggingContent.BTaggingStandardContent
def BTaggingStandardContent(jetcol, ConfigFlags=None)
Definition: BTaggingContent.py:168
SlimmingHelper.SlimmingHelper.CheckList
def CheckList(self, masterList)
Definition: SlimmingHelper.py:119
SlimmingHelper.buildNamesAndTypes
def buildNamesAndTypes(*args)
Definition: SlimmingHelper.py:67
SlimmingHelper.SlimmingHelper.IncludeBJetTriggerContent
IncludeBJetTriggerContent
Definition: SlimmingHelper.py:99
SlimmingHelper.SlimmingHelper.ExtraVariables
ExtraVariables
Definition: SlimmingHelper.py:84
SlimmingHelper.SlimmingHelper.IncludeEtMissTriggerContent
IncludeEtMissTriggerContent
Definition: SlimmingHelper.py:98
SlimmingHelper.SlimmingHelper.AllVariables
AllVariables
Definition: SlimmingHelper.py:87
SlimmingHelper.SlimmingHelper.AppendContentToStream
def AppendContentToStream(self, Stream)
Definition: SlimmingHelper.py:134
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
SlimmingHelper.SlimmingHelper.GetSmartItems
def GetSmartItems(self, collectionName)
Definition: SlimmingHelper.py:347
SlimmingHelper.SlimmingHelper.IncludeMuonTriggerContent
IncludeMuonTriggerContent
Definition: SlimmingHelper.py:92
SlimmingHelper.SlimmingHelper.__init__
def __init__(self, inputName, flags, **kwargs)
Definition: SlimmingHelper.py:79
ContentHandler
Definition: ContentHandler.py:1
SlimmingHelper.SlimmingHelper.GetExtraItems
def GetExtraItems(self, userInput)
Definition: SlimmingHelper.py:652
SlimmingHelper.lockable_list.lock
def lock(self)
Definition: SlimmingHelper.py:63
SlimmingHelper.SlimmingHelper.IncludeJetTriggerContent
IncludeJetTriggerContent
Definition: SlimmingHelper.py:95
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
SlimmingHelper.SlimmingHelper.IncludeBPhysTriggerContent
IncludeBPhysTriggerContent
Definition: SlimmingHelper.py:100
SlimmingHelper.SlimmingHelper.IncludeTriggerNavigation
IncludeTriggerNavigation
Definition: SlimmingHelper.py:90
str
Definition: BTagTrackIpAccessor.cxx:11
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
python.MuonsCommonConfig.MuonCPContentLRTCfg
def MuonCPContentLRTCfg(flags)
Definition: MuonsCommonConfig.py:225
SlimmingHelper.SlimmingHelper.OverrideJetTriggerContentWithTLAContent
OverrideJetTriggerContentWithTLAContent
Definition: SlimmingHelper.py:102
calibdata.copy
bool copy
Definition: calibdata.py:27
SlimmingHelper.SlimmingHelper.BuildFinalItemList
def BuildFinalItemList(self)
Definition: SlimmingHelper.py:152
SlimmingHelper.SlimmingHelper.IncludeJetTauEtMissTriggerContent
IncludeJetTauEtMissTriggerContent
Definition: SlimmingHelper.py:94
SlimmingHelper.SlimmingHelper._locked
_locked
Definition: SlimmingHelper.py:336
SlimmingHelper.SlimmingHelper.name
name
Definition: SlimmingHelper.py:81
SlimmingHelper.SlimmingHelper.IncludeTauTriggerContent
IncludeTauTriggerContent
Definition: SlimmingHelper.py:97
SlimmingHelper.lockable_list
Definition: SlimmingHelper.py:47