ATLAS Offline Software
Loading...
Searching...
No Matches
SlimmingHelper.SlimmingHelper Class Reference
Collaboration diagram for SlimmingHelper.SlimmingHelper:

Public Member Functions

 __init__ (self, inputName, flags, **kwargs)
 __setattr__ (self, name, value)
 CheckList (self, masterList)
 AppendContentToStream (self, Stream)
 GetItemList (self)
 BuildFinalItemList (self)
 GetWholeContentItems (self, collection)
 GetSmartItems (self, collectionName)
 GetKinematicsItems (self, collectionName)
 GetExtraItems (self, userInput)
 ValidateStaticContent (self, item)
 CheckDoubleTrigAuxInstruction (self, aux)

Public Attributes

 name = inputName
 FinalItemList = lockable_list()
 StaticContent = lockable_list()
 ExtraVariables = lockable_list()
 SmartCollections = lockable_list()
masterItemList.extend(self.GetWholeContentItems(item)) AllVariables = lockable_list()
dict AppendToDictionary = {}
 flags = flags
bool IncludeTriggerNavigation = True
bool IncludeAdditionalTriggerContent = False
bool IncludeMuonTriggerContent = False
bool IncludeEGammaTriggerContent = False
bool IncludeJetTriggerContent = False
bool IncludeTrackingTriggerContent = False
bool IncludeTauTriggerContent = False
bool IncludeDiTauTriggerContent = False
bool IncludeEtMissTriggerContent = False
bool IncludeBJetTriggerContent = False
bool IncludeBJetTriggerByYearContent = False
bool IncludeBPhysTriggerContent = False
bool IncludeMinBiasTriggerContent = False
str IncludeFullTriggerEDMLevel = ""
bool OverrideJetTriggerContentWithTLAContent = False
 NamesAndTypes = buildNamesAndTypes(kwargs["NamesAndTypes"])
 theHandler = ContentHandler(self.name+"Handler",self.NamesAndTypes)

Protected Attributes

bool _locked = True

Detailed Description

Definition at line 78 of file SlimmingHelper.py.

Constructor & Destructor Documentation

◆ __init__()

SlimmingHelper.SlimmingHelper.__init__ ( self,
inputName,
flags,
** kwargs )

Definition at line 79 of file SlimmingHelper.py.

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)
86 self.SmartCollections = lockable_list()
87 self.AllVariables = lockable_list() # Containers for which all branches should be kept
88 self.AppendToDictionary = {}
89 self.flags = flags
90 self.IncludeTriggerNavigation = True
91 self.IncludeAdditionalTriggerContent = False
92 self.IncludeMuonTriggerContent = False
93 self.IncludeEGammaTriggerContent = False
94 self.IncludeJetTriggerContent = False
95 self.IncludeTrackingTriggerContent = False
96 self.IncludeTauTriggerContent = False
97 self.IncludeDiTauTriggerContent = False
98 self.IncludeEtMissTriggerContent = False
99 self.IncludeBJetTriggerContent = False
100 self.IncludeBJetTriggerByYearContent = False
101 self.IncludeBPhysTriggerContent = False
102 self.IncludeMinBiasTriggerContent = False
103 self.IncludeFullTriggerEDMLevel = "" # Specify an AllowedOutputFormat from TriggerEDM.py
104 self.OverrideJetTriggerContentWithTLAContent = False
105 # Choice of whether user provided a typed container list or not (CA vs non-CA)
106 if "NamesAndTypes" in kwargs.keys(): self.NamesAndTypes = buildNamesAndTypes(kwargs["NamesAndTypes"])
107 else: self.NamesAndTypes = buildNamesAndTypes()
108 self.theHandler = ContentHandler(self.name+"Handler",self.NamesAndTypes)
109

Member Function Documentation

◆ __setattr__()

SlimmingHelper.SlimmingHelper.__setattr__ ( self,
name,
value )

Definition at line 111 of file SlimmingHelper.py.

111 def __setattr__(self,name,value):
112 if self._locked is True:
113 msg.error("Attempting to Modify SlimmingHelper "+self.name+" After AppendContentToStream has Been Called")
114 raise RuntimeError("Late Modification to SlimmingHelper, do not modifiy after calling AppendContentToStream")
115 elif type(value)==list:
116 self.__dict__[name] = lockable_list(value)
117 else:
118 self.__dict__[name] = value
119

◆ AppendContentToStream()

SlimmingHelper.SlimmingHelper.AppendContentToStream ( self,
Stream )

Definition at line 136 of file SlimmingHelper.py.

136 def AppendContentToStream(self,Stream):
137 # Check if the SlimmingHelper is locked.
138 # If it is, just loop over the items and append.
139 # If not, build the item list and then append.
140 if self._locked is False:
141 self.BuildFinalItemList()
142 for item in self.FinalItemList:
143 Stream.AddItem(item)
144

◆ BuildFinalItemList()

SlimmingHelper.SlimmingHelper.BuildFinalItemList ( self)

Definition at line 154 of file SlimmingHelper.py.

154 def BuildFinalItemList(self):
155 # Master item list: all items that must be passed to the ContentHandler for processing
156 # This will now be filled
157 masterItemList = []
158 # All variables list: where all variables are requested, no variable lists are needed
159 # This list ensures that variables are not added individually in such cases
160 allVariablesList = []
161 self.AllVariables += CompulsoryDynamicContent
162 # Add all-variable collections
163 if len(self.AllVariables)>0:
164 for item in self.AllVariables: masterItemList.extend(self.GetWholeContentItems(item))
165 for item in masterItemList:
166 if "Aux." in item:
167 allVariablesList.append(item)
168
169 # Trigger objects: add them by hand to the smart collection list (to keep the previous interface)
170 triggerContent = False
171
172 if (self.IncludeAdditionalTriggerContent is True):
173 triggerContent = True
174
175 if (self.IncludeMuonTriggerContent is True):
176 triggerContent = True
177 self.SmartCollections.append("HLT_xAOD__MuonContainer_MuonEFInfo")
178
179 if (self.IncludeEGammaTriggerContent is True):
180 triggerContent = True
181 self.SmartCollections.append("HLT_xAOD__PhotonContainer_egamma_Photons")
182
183 if (self.IncludeJetTriggerContent is True):
184 triggerContent = True
185 self.SmartCollections.append("HLT_xAOD__JetContainer_a4tcemsubjesFS")
186 self.SmartCollections.append("HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf") # Run 3 jet collections
187 from DerivationFrameworkCore.JetTriggerFixContent import JetTriggerFixContent
188 for item in JetTriggerFixContent:
189 self.FinalItemList.append(item)
190
191 if (self.IncludeTrackingTriggerContent is True):
192 triggerContent = True
193 self.SmartCollections.append("HLT_IDVertex_FS")
194 self.SmartCollections.append("HLT_IDTrack_FS_FTF")
195
196 if (self.IncludeEtMissTriggerContent is True):
197 triggerContent = True
198 self.SmartCollections.append("HLT_xAOD__TrigMissingETContainer_TrigEFMissingET")
199 from DerivationFrameworkCore.EtMissTriggerFixContent import EtMissTriggerFixContent
200 for item in EtMissTriggerFixContent:
201 self.FinalItemList.append(item)
202 if (self.IncludeDiTauTriggerContent is True):
203 triggerContent = True
204 self.SmartCollections.append("HLT_DiTauJets")
205
206 if (self.IncludeTauTriggerContent is True):
207 triggerContent = True
208 if self.flags.Trigger.EDMVersion == 2:
209 self.SmartCollections.append("HLT_xAOD__TauJetContainer_TrigTauRecMerged")
210 elif self.flags.Trigger.EDMVersion == 3:
211 self.SmartCollections.append("HLT_TrigTauRecMerged_MVA")
212
213 if (self.IncludeBJetTriggerContent is True):
214 triggerContent = True
215 self.SmartCollections.append("HLT_xAOD__BTaggingContainer_HLTBjetFex")
216
217 if (self.IncludeBJetTriggerByYearContent is True):
218 triggerContent = True
219 self.SmartCollections.append("HLT_BJetTriggerByYearContent")
220
221 if (self.IncludeBPhysTriggerContent is True):
222 triggerContent = True
223 self.SmartCollections.append("HLT_xAOD__TrigBphysContainer_EFBMuMuFex")
224
225 if (self.IncludeMinBiasTriggerContent is True):
226 triggerContent = True
227 self.SmartCollections.append("HLT_xAOD__TrigVertexCountsContainer_vertexcounts")
228
229 if (self.IncludeFullTriggerEDMLevel):
230 triggerContent = True
231 self.SmartCollections.append("HLT_FULL_EDM")
232
233 # Smart items
234 if len(self.SmartCollections)>0:
235 for collection in self.SmartCollections:
236 masterItemList.extend(self.GetSmartItems(collection))
237
238 # Run some basic tests to prevent clashes with CompulsoryContent content
239 self.CheckList(masterItemList)
240
241 # Add extra variables
242 if len(self.ExtraVariables)>0:
243 for item in self.ExtraVariables:
244 masterItemList.extend(self.GetExtraItems(item))
245
246 #Add on-the-fly containers to the dictionary
247 for _cont,_type in ContainersOnTheFly(self.flags):
248 if _cont not in self.AppendToDictionary:
249 self.AppendToDictionary[_cont]=_type
250
251 # Process the master list...
252
253 # Main containers (this is a simple list of lines, one per container X collection)
254 mainEntries = []
255 # Aux items (this is a dictionary: collection name and list of aux variables)
256 auxEntries = {}
257 self.theHandler.AppendToDictionary = self.AppendToDictionary
258 mainEntries,auxEntries = self.theHandler.GetContent(masterItemList,allVariablesList)
259
260 # Add processed items to the stream
261 excludedAuxData = "-clusterAssociation.-PseudoJet"
262 excludedAuxEntries= [entry.strip("-") for entry in excludedAuxData.split(".")]
263 for item in mainEntries:
264 self.FinalItemList.append(item)
265 for item in auxEntries.keys():
266 theDictionary = self.NamesAndTypes.copy()
267 theDictionary.update (self.AppendToDictionary)
268 if item in theDictionary.keys():
269 if (theDictionary[item]=='xAOD::ShallowAuxContainer'):
270 entry = "xAOD::ShallowAuxContainer#"+item+"."
271 elif (theDictionary[item]=='xAOD::MissingETAuxAssociationMap'):
272 entry = "xAOD::MissingETAuxAssociationMap#"+item+"."
273 elif (theDictionary[item]=='xAOD::JetTrigAuxContainer'):
274 entry = "xAOD::JetTrigAuxContainer#"+item+"."
275 elif ("AuxInfo" in theDictionary[item]):
276 entry = "xAOD::AuxInfoBase!#"+item+"."
277 else:
278 entry = "xAOD::AuxContainerBase!#"+item+"."
279 for element in auxEntries[item]:
280 #Skip anything that shouldn't be written out to a DAOD for tracks or jets
281 if ('xAOD::TrackParticleContainer' in theDictionary[item]) and (element in excludedAuxEntries): continue
282 if ('xAOD::JetAuxContainer' in theDictionary[item]) and (element in excludedAuxEntries): continue
283 length = len(auxEntries[item])
284 if (element==(auxEntries[item])[length-1]):
285 entry += element
286 else:
287 entry += element+"."
288 if ('xAOD::TrackParticleContainer' in theDictionary[item] and auxEntries[item]==""):
289 entry+=excludedAuxData
290 if ('xAOD::JetAuxContainer' in theDictionary[item] and auxEntries[item]=="" and self.CheckDoubleTrigAuxInstruction(item)):
291 entry+=excludedAuxData
292 self.FinalItemList.append(entry)
293
294 # Add compulsory items not covered by smart slimming (so no expansion)
295 for item in CompulsoryContent:
296 self.FinalItemList.append(item)
297
298 # non xAOD collections for MinBias
299 if (self.IncludeMinBiasTriggerContent is True):
300 from DerivationFrameworkCore.MinBiasTrigger_nonxAOD_Content import MinBiasTrigger_nonxAOD_Content
301 for item in MinBiasTrigger_nonxAOD_Content:
302 self.FinalItemList.append(item)
303
304 if (triggerContent and self.IncludeTriggerNavigation):
305 # Run2
306 for item in CompulsoryTriggerNavigation:
307 self.FinalItemList.append(item)
308 # Run3
309 from TrigDecisionTool.TrigDecisionToolHelpers import possible_keys
310 for item in possible_keys:
311 if item == "HLTNav_Summary": # This is not a compact navigation summary collection, unlike the others in this list
312 continue
313 self.FinalItemList.append('xAOD::TrigCompositeContainer#'+item)
314 self.FinalItemList.append('xAOD::TrigCompositeAuxContainer#'+item+'Aux.')
315
316 # Add non-xAOD and on-the-fly content (not covered by smart slimming so no expansion)
317 badItemsWildcards = []
318 badItemsXAOD = []
319 for item in self.StaticContent:
320 if (self.ValidateStaticContent(item)=="OK"):
321 self.FinalItemList.append(item)
322 if (self.ValidateStaticContent(item)=="WILDCARD"):
323 badItemsWildcards.append(item)
324 if (self.ValidateStaticContent(item)=="XAOD"):
325 badItemsXAOD.append(item)
326 if (len(badItemsWildcards)>0):
327 msg.error("These static items contain wildcards: not permitted")
328 print (badItemsWildcards)
329 raise RuntimeError("Static content list contains wildcards")
330 if (len(badItemsXAOD)>0):
331 msg.error("These static items are xAOD collections: not permitted")
332 print (badItemsXAOD)
333 raise RuntimeError("Static content list contains xAOD collections")
334 #Prevent any more modifications As they will be completely ignored, and hard to debug
335 self.FinalItemList.lock()
336 self.StaticContent.lock()
337 self.ExtraVariables.lock()
338 self.SmartCollections.lock()
339 self.AllVariables.lock()
340 self._locked=True
341

◆ CheckDoubleTrigAuxInstruction()

SlimmingHelper.SlimmingHelper.CheckDoubleTrigAuxInstruction ( self,
aux )

Definition at line 650 of file SlimmingHelper.py.

650 def CheckDoubleTrigAuxInstruction(self, aux):
651 if self.IncludeFullTriggerEDMLevel and 'HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux' in aux:
652 return False
653 return True

◆ CheckList()

SlimmingHelper.SlimmingHelper.CheckList ( self,
masterList )

Definition at line 121 of file SlimmingHelper.py.

121 def CheckList(self,masterList):
122 conflicted_items=[]
123 for item in CompulsoryContent:
124 if item.endswith("#*"):
125 compare_str=item[:-2].replace("xAOD::","")
126 for m_item in masterList:
127 if m_item.startswith(compare_str) and m_item.replace("Aux.","") not in CompulsoryDynamicContent:
128 conflicted_items.append(m_item)
129 if len(conflicted_items)!=0:
130 msg.error("Slimming list contains " +str(conflicted_items)+" which are already included in compulsory content: please remove these items from slimming list")
131 raise RuntimeError("Conflict in Slimming List and Compulsory Content")
132
133
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition hcg.cxx:310

◆ GetExtraItems()

SlimmingHelper.SlimmingHelper.GetExtraItems ( self,
userInput )

Definition at line 615 of file SlimmingHelper.py.

615 def GetExtraItems(self,userInput):
616 # Build up a content list in the same style as is produced by the PrintStats
617 splitup = userInput.split(".")
618 auxContainerName = splitup[0]+"Aux"
619 items = []
620 items.append(splitup[0])
621 auxLine = ""
622 length = len(splitup)
623 for string in splitup:
624 if string==splitup[0]:
625 auxLine = auxContainerName+"."
626 continue
627 if string==splitup[length-1]:
628 auxLine = auxLine+string
629 else:
630 auxLine = auxLine+string+"."
631 items.append(auxLine)
632 return items
633

◆ GetItemList()

SlimmingHelper.SlimmingHelper.GetItemList ( self)

Definition at line 146 of file SlimmingHelper.py.

146 def GetItemList(self):
147 # Check if the SlimmingHelper is locked.
148 # If it is, just return the item list.
149 # If not, build the item list and then return it.
150 if self._locked is False:
151 self.BuildFinalItemList()
152 return(self.FinalItemList)
153

◆ GetKinematicsItems()

SlimmingHelper.SlimmingHelper.GetKinematicsItems ( self,
collectionName )

Definition at line 608 of file SlimmingHelper.py.

608 def GetKinematicsItems(self,collectionName):
609 # Content lines in the same style as is produced by the PrintStats
610 kinematicsLine = collectionName+"Aux."+"pt.eta.phi.m"
611 items = [collectionName,kinematicsLine]
612 return items
613

◆ GetSmartItems()

SlimmingHelper.SlimmingHelper.GetSmartItems ( self,
collectionName )

Definition at line 351 of file SlimmingHelper.py.

351 def GetSmartItems(self,collectionName):
352 # Look up what is needed for this container type
353 items = []
354 if collectionName not in FullListOfSmartContainers(self.flags):
355 raise RuntimeError("Smart slimming container "+collectionName+" does not exist or does not have a smart slimming list")
356 if collectionName=="EventInfo":
357 from DerivationFrameworkCore.EventInfoContent import EventInfoContent
358 items.extend(EventInfoContent)
359 elif collectionName=="Electrons":
360 from DerivationFrameworkEGamma.ElectronsCPContent import ElectronsCPContent
361 items.extend(ElectronsCPContent)
362 elif collectionName=="LRTElectrons":
363 from DerivationFrameworkEGamma.LargeD0ElectronsCPContent import LargeD0ElectronsCPContent
364 items.extend(LargeD0ElectronsCPContent)
365 elif collectionName=="Photons":
366 from DerivationFrameworkEGamma.PhotonsCPContent import PhotonsCPContent
367 items.extend(PhotonsCPContent)
368 elif collectionName=="Muons":
369 if not self.flags:
370 raise RuntimeError("We're in the era of component accumulator. Please setup your job with CA if you want to have muons")
371 from DerivationFrameworkMuons.MuonsCommonConfig import MuonCPContentCfg
372 items.extend(MuonCPContentCfg(self.flags))
373 elif collectionName=="MuonsLRT":
374 if not self.flags:
375 raise RuntimeError("We're in the era of component accumulator. Please setup your job with CA if you want to have muons")
376 from DerivationFrameworkMuons.MuonsCommonConfig import MuonCPContentLRTCfg
377 items.extend(MuonCPContentLRTCfg(self.flags))
378 elif collectionName=="TauJets":
379 from DerivationFrameworkTau.TauJetsCPContent import TauJetsCPContent
380 items.extend(TauJetsCPContent)
381 elif collectionName=="DiTauJets":
382 from DerivationFrameworkTau.DiTauJetsCPContent import DiTauJetsCPContent
383 items.extend(DiTauJetsCPContent)
384 elif collectionName=="DiTauJetsLowPt":
385 from DerivationFrameworkTau.DiTauJetsCPContent import DiTauJetsLowPtCPContent
386 items.extend(DiTauJetsLowPtCPContent)
387 elif collectionName=="TauJets_MuonRM":
388 from DerivationFrameworkTau.TauJets_LepRMCPContent import TauJets_MuonRMCPContent
389 if "TauJets_MuonRM" not in self.AppendToDictionary:
390 self.AppendToDictionary["TauJets_MuonRM"] = 'xAOD::TauJetContainer'
391 self.AppendToDictionary["TauJets_MuonRMAux"] = 'xAOD::TauJetAuxContainer'
392 self.AppendToDictionary["TauTracks_MuonRM"] = 'xAOD::TauTrackContainer'
393 self.AppendToDictionary["TauTracks_MuonRMAux"] = 'xAOD::TauTrackAuxContainer'
394 self.AppendToDictionary["TauSecondaryVertices_MuonRM"] = 'xAOD::VertexContainer'
395 self.AppendToDictionary["TauSecondaryVertices_MuonRMAux"] = 'xAOD::VertexAuxContainer'
396 self.AppendToDictionary["TauNeutralParticleFlowObjects_MuonRM"] = 'xAOD::PFOContainer'
397 self.AppendToDictionary["TauNeutralParticleFlowObjects_MuonRMAux"] = 'xAOD::PFOAuxContainer'
398 items.extend(TauJets_MuonRMCPContent)
399 elif collectionName=="TauJets_EleRM":
400 from DerivationFrameworkTau.TauJets_LepRMCPContent import TauJets_EleRMCPContent
401 items.extend(TauJets_EleRMCPContent)
402 elif collectionName=="TauJetsLRT":
403 if "TauJetsLRT" not in self.AppendToDictionary:
404 self.AppendToDictionary["TauJetsLRT"] = 'xAOD::TauJetContainer'
405 self.AppendToDictionary["TauJetsLRTAux"] = 'xAOD::TauJetAuxContainer'
406 self.AppendToDictionary["TauTracksLRT"] = 'xAOD::TauTrackContainer'
407 self.AppendToDictionary["TauTracksLRTAux"] = 'xAOD::TauTrackAuxContainer'
408 self.AppendToDictionary["TauSecondaryVerticesLRT"] = 'xAOD::VertexContainer'
409 self.AppendToDictionary["TauSecondaryVerticesLRTAux"] = 'xAOD::VertexAuxContainer'
410 self.AppendToDictionary["TauNeutralParticleFlowObjectsLRT"] = 'xAOD::PFOContainer'
411 self.AppendToDictionary["TauNeutralParticleFlowObjectsLRTAux"] = 'xAOD::PFOAuxContainer'
412 from DerivationFrameworkTau.TauJetsLRTCPContent import TauJetsLRTCPContent
413 items.extend(TauJetsLRTCPContent)
414 elif collectionName=="MET_Baseline_AntiKt4EMTopo":
415 from DerivationFrameworkJetEtMiss.MET_Baseline_AntiKt4EMTopoCPContent import MET_Baseline_AntiKt4EMTopoCPContent
416 items.extend(MET_Baseline_AntiKt4EMTopoCPContent)
417 elif collectionName=="MET_Baseline_AntiKt4EMPFlow":
418 from DerivationFrameworkJetEtMiss.MET_Baseline_AntiKt4EMPFlowCPContent import MET_Baseline_AntiKt4EMPFlowCPContent
419 items.extend(MET_Baseline_AntiKt4EMPFlowCPContent)
420 elif collectionName=="AntiKt2TruthJets":
421 from DerivationFrameworkJetEtMiss.AntiKt2TruthJetsCPContent import AntiKt2TruthJetsCPContent
422 items.extend(AntiKt2TruthJetsCPContent)
423 elif collectionName=="AntiKt4TruthJets":
424 from DerivationFrameworkJetEtMiss.AntiKt4TruthJetsCPContent import AntiKt4TruthJetsCPContent
425 items.extend(AntiKt4TruthJetsCPContent)
426 elif collectionName=="AntiKt4TruthWZJets":
427 from DerivationFrameworkJetEtMiss.AntiKt4TruthWZJetsCPContent import AntiKt4TruthWZJetsCPContent
428 items.extend(AntiKt4TruthWZJetsCPContent)
429 elif collectionName=="AntiKt4TruthDressedWZJets":
430 from DerivationFrameworkJetEtMiss.AntiKt4TruthDressedWZJetsCPContent import AntiKt4TruthDressedWZJetsCPContent
431 items.extend(AntiKt4TruthDressedWZJetsCPContent)
432 elif collectionName=="AntiKt2LCTopoJets":
433 from DerivationFrameworkJetEtMiss.AntiKt2LCTopoJetsCPContent import AntiKt2LCTopoJetsCPContent
434 items.extend(AntiKt2LCTopoJetsCPContent)
435 elif collectionName=="AntiKt4LCTopoJets":
436 from DerivationFrameworkJetEtMiss.AntiKt4LCTopoJetsCPContent import AntiKt4LCTopoJetsCPContent
437 items.extend(AntiKt4LCTopoJetsCPContent)
438 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
439 items.extend(BTaggingStandardContent(self.flags, "AntiKt4LCTopoJets"))
440 elif collectionName=="AntiKt4EMTopoJets":
441 from DerivationFrameworkJetEtMiss.AntiKt4EMTopoJetsCPContent import AntiKt4EMTopoJetsCPContent
442 items.extend(AntiKt4EMTopoJetsCPContent)
443 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
444 items.extend(BTaggingStandardContent(self.flags, "AntiKt4EMTopoJets"))
445 elif collectionName=="AntiKt4EMTopoLowPtJets":
446 from DerivationFrameworkJetEtMiss.AntiKt4EMTopoLowPtJetsCPContent import AntiKt4EMTopoLowPtJetsCPContent
447 items.extend(AntiKt4EMTopoLowPtJetsCPContent)
448 elif collectionName=="AntiKt4EMTopoNoPtCutJets":
449 from DerivationFrameworkJetEtMiss.AntiKt4EMTopoNoPtCutJetsCPContent import AntiKt4EMTopoNoPtCutJetsCPContent
450 items.extend(AntiKt4EMTopoNoPtCutJetsCPContent)
451 elif collectionName=="AntiKt4EMPFlowJets":
452 from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowJetsCPContent import AntiKt4EMPFlowJetsCPContent
453 items.extend(AntiKt4EMPFlowJetsCPContent)
454 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
455 items.extend(BTaggingStandardContent(self.flags, "AntiKt4EMPFlowJets"))
456 elif collectionName=="AntiKt4EMPFlowJets_FTAG_expert":
457 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
458 items.extend(BTaggingExpertContent(self.flags, "AntiKt4EMPFlowJets"))
459 elif collectionName=="AntiKt4EMPFlowLowPtJets":
460 from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowLowPtJetsCPContent import AntiKt4EMPFlowLowPtJetsCPContent
461 items.extend(AntiKt4EMPFlowLowPtJetsCPContent)
462 elif collectionName=="AntiKt4EMPFlowByVertexJets":
463 from DerivationFrameworkJetEtMiss.AntiKt4EMPFlowByVertexJetsCPContent import AntiKt4EMPFlowByVertexJetsCPContent
464 items.extend(AntiKt4EMPFlowByVertexJetsCPContent)
465 elif collectionName=="AntiKt4UFOCSSKJets":
466 from DerivationFrameworkJetEtMiss.AntiKt4UFOCSSKJetsCPContent import AntiKt4UFOCSSKJetsCPContent
467 items.extend(AntiKt4UFOCSSKJetsCPContent)
468 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingStandardContent
469 items.extend(BTaggingStandardContent(self.flags, "AntiKt4UFOCSSKJets"))
470 elif collectionName=="AntiKt4UFOCSSKJets_FTAG_expert":
471 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingExpertContent
472 items.extend(BTaggingExpertContent(self.flags, "AntiKt4UFOCSSKJets"))
473 elif collectionName=="AntiKt4UFOCSSKLowPtJets":
474 from DerivationFrameworkJetEtMiss.AntiKt4UFOCSSKLowPtJetsCPContent import AntiKt4UFOCSSKLowPtJetsCPContent
475 items.extend(AntiKt4UFOCSSKLowPtJetsCPContent)
476 elif collectionName=="AntiKt10TruthJets":
477 from DerivationFrameworkJetEtMiss.AntiKt10TruthJetsCPContent import AntiKt10TruthJetsCPContent
478 items.extend(AntiKt10TruthJetsCPContent)
479 elif collectionName=="AntiKt10TruthWZJets":
480 from DerivationFrameworkJetEtMiss.AntiKt10TruthWZJetsCPContent import AntiKt10TruthWZJetsCPContent
481 items.extend(AntiKt10TruthWZJetsCPContent)
482 elif collectionName=="AntiKt10LCTopoJets":
483 from DerivationFrameworkJetEtMiss.AntiKt10LCTopoJetsCPContent import AntiKt10LCTopoJetsCPContent
484 items.extend(AntiKt10LCTopoJetsCPContent)
485 elif collectionName=="AntiKt10UFOCSSKJets":
486 from DerivationFrameworkJetEtMiss.AntiKt10UFOCSSKJetsCPContent import AntiKt10UFOCSSKJetsCPContent
487 items.extend(AntiKt10UFOCSSKJetsCPContent)
488 elif collectionName=="AntiKt10TruthSoftDropBeta100Zcut10Jets":
489 from DerivationFrameworkJetEtMiss.AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent import AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent
490 items.extend(AntiKt10TruthSoftDropBeta100Zcut10JetsCPContent)
491 elif collectionName=="AntiKt10TruthDressedWZSoftDropBeta100Zcut10Jets":
492 from DerivationFrameworkJetEtMiss.AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent import AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent
493 items.extend(AntiKt10TruthDressedWZSoftDropBeta100Zcut10JetsCPContent)
494 elif collectionName=="AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets":
495 from DerivationFrameworkJetEtMiss.AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent import AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent
496 items.extend(AntiKt10UFOCSSKSoftDropBeta100Zcut10JetsCPContent)
497 from DerivationFrameworkFlavourTag.BTaggingContent import BTaggingLargeRContent
498 items.extend(BTaggingLargeRContent(self.flags, "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"))
499 elif collectionName=="AntiKtVR30Rmax4Rmin02PV0TrackJets":
500 from DerivationFrameworkJetEtMiss.AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent import AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent
501 items.extend(AntiKtVR30Rmax4Rmin02PV0TrackJetsCPContent)
502 elif collectionName=="InDetTrackParticles":
503 from DerivationFrameworkInDet.InDetTrackParticlesCPContent import InDetTrackParticlesCPContent
504 items.extend(InDetTrackParticlesCPContent)
505 if self.flags.GeoModel.Run >= LHCPeriod.Run4:
506 from DerivationFrameworkInDet.InDetTrackParticlesCPContentRun4 import InDetTrackParticlesCPContentRun4
507 items.extend(InDetTrackParticlesCPContentRun4)
508 elif collectionName=="InDetPseudoTrackParticles":
509 from DerivationFrameworkInDet.InDetPseudoTrackParticlesCPContent import InDetPseudoTrackParticlesCPContent
510 items.extend(InDetPseudoTrackParticlesCPContent)
511 elif collectionName=="InDetReplacedWithPseudoTrackParticles":
512 from DerivationFrameworkInDet.InDetReplacedWithPseudoTrackParticlesCPContent import InDetReplacedWithPseudoTrackParticlesCPContent
513 items.extend(InDetReplacedWithPseudoTrackParticlesCPContent)
514 elif collectionName=="InDetReplacedWithPseudoFromBTrackParticles":
515 from DerivationFrameworkInDet.InDetReplacedWithPseudoFromBTrackParticlesCPContent import InDetReplacedWithPseudoFromBTrackParticlesCPContent
516 items.extend(InDetReplacedWithPseudoFromBTrackParticlesCPContent)
517 elif collectionName=="InDetReplacedWithPseudoNotFromBTrackParticles":
518 from DerivationFrameworkInDet.InDetReplacedWithPseudoNotFromBTrackParticlesCPContent import InDetReplacedWithPseudoNotFromBTrackParticlesCPContent
519 items.extend(InDetReplacedWithPseudoNotFromBTrackParticlesCPContent)
520 elif collectionName=="InDetPlusPseudoTrackParticles":
521 from DerivationFrameworkInDet.InDetPlusPseudoTrackParticlesCPContent import InDetPlusPseudoTrackParticlesCPContent
522 items.extend(InDetPlusPseudoTrackParticlesCPContent)
523 elif collectionName=="InDetPlusPseudoFromBTrackParticles":
524 from DerivationFrameworkInDet.InDetPlusPseudoFromBTrackParticlesCPContent import InDetPlusPseudoFromBTrackParticlesCPContent
525 items.extend(InDetPlusPseudoFromBTrackParticlesCPContent)
526 elif collectionName=="InDetPlusPseudoNotFromBTrackParticles":
527 from DerivationFrameworkInDet.InDetPlusPseudoNotFromBTrackParticlesCPContent import InDetPlusPseudoNotFromBTrackParticlesCPContent
528 items.extend(InDetPlusPseudoNotFromBTrackParticlesCPContent)
529 elif collectionName=="InDetNoFakesTrackParticles":
530 from DerivationFrameworkInDet.InDetNoFakesTrackParticlesCPContent import InDetNoFakesTrackParticlesCPContent
531 items.extend(InDetNoFakesTrackParticlesCPContent)
532 elif collectionName=="InDetNoFakesFromBTrackParticles":
533 from DerivationFrameworkInDet.InDetNoFakesFromBTrackParticlesCPContent import InDetNoFakesFromBTrackParticlesCPContent
534 items.extend(InDetNoFakesFromBTrackParticlesCPContent)
535 elif collectionName=="InDetNoFakesNotFromBTrackParticles":
536 from DerivationFrameworkInDet.InDetNoFakesNotFromBTrackParticlesCPContent import InDetNoFakesNotFromBTrackParticlesCPContent
537 items.extend(InDetNoFakesNotFromBTrackParticlesCPContent)
538 elif collectionName=="InDetSiSPSeededTracksParticles":
539 from DerivationFrameworkInDet.InDetSiSPSeededTracksParticlesCPContent import InDetSiSPSeededTracksParticlesCPContent
540 items.extend(InDetSiSPSeededTracksParticlesCPContent)
541 elif collectionName=="InDetLargeD0TrackParticles":
542 from DerivationFrameworkInDet.InDetLargeD0TrackParticlesCPContent import InDetLargeD0TrackParticlesCPContent
543 items.extend(InDetLargeD0TrackParticlesCPContent)
544 elif collectionName=="PrimaryVertices":
545 from DerivationFrameworkInDet.PrimaryVerticesCPContent import PrimaryVerticesCPContent
546 items.extend(PrimaryVerticesCPContent)
547 if self.flags.GeoModel.Run >= LHCPeriod.Run4:
548 from DerivationFrameworkInDet.PrimaryVerticesCPContentRun4 import PrimaryVerticesCPContentRun4
549 items.extend(PrimaryVerticesCPContentRun4)
550 elif self.IncludeAdditionalTriggerContent is True:
551 from DerivationFrameworkCore.AdditionalTriggerContent import AdditionalTriggerContent
552 items.extend(AdditionalTriggerContent)
553 elif collectionName=="HLT_xAOD__MuonContainer_MuonEFInfo":
554 from DerivationFrameworkMuons.MuonTriggerContent import MuonTriggerContent
555 items.extend(MuonTriggerContent)
556 elif collectionName=="HLT_xAOD__PhotonContainer_egamma_Photons":
557 from DerivationFrameworkCore.EGammaTriggerContent import EGammaTriggerContent
558 items.extend(EGammaTriggerContent)
559 elif collectionName=="HLT_xAOD__JetContainer_a4tcemsubjesFS":
560 from DerivationFrameworkCore.JetTriggerContent import JetTriggerContent
561 items.extend(JetTriggerContent)
562 elif collectionName=="HLT_IDVertex_FS":
563 from DerivationFrameworkCore.TrackingTriggerContent import TrackingTriggerContent
564 items.extend(TrackingTriggerContent)
565 elif collectionName=="HLT_IDTrack_FS_FTF":
566 from DerivationFrameworkCore.TrackingTriggerContent import TrackingTriggerContent
567 items.extend(TrackingTriggerContent)
568 elif collectionName=="HLT_xAOD__TrigMissingETContainer_TrigEFMissingET":
569 from DerivationFrameworkCore.EtMissTriggerContent import EtMissTriggerContent
570 items.extend(EtMissTriggerContent)
571 elif collectionName=="HLT_xAOD__TauJetContainer_TrigTauRecMerged":
572 from DerivationFrameworkCore.TauTriggerContent import TauTriggerContentRun2
573 items.extend(TauTriggerContentRun2)
574 elif collectionName=="HLT_TrigTauRecMerged_MVA":
575 from DerivationFrameworkCore.TauTriggerContent import TauTriggerContentRun3
576 items.extend(TauTriggerContentRun3)
577 elif collectionName=="HLT_DiTauJets":
578 from DerivationFrameworkCore.DiTauTriggerContent import DiTauTriggerContent
579 items.extend(DiTauTriggerContent)
580 elif collectionName=="HLT_xAOD__BTaggingContainer_HLTBjetFex":
581 from DerivationFrameworkFlavourTag.BJetTriggerContent import BJetTriggerContent
582 items.extend(BJetTriggerContent)
583 elif collectionName=="HLT_xAOD__TrigBphysContainer_EFBMuMuFex":
584 from DerivationFrameworkCore.BPhysTriggerContent import BPhysTriggerContent
585 items.extend(BPhysTriggerContent)
586 elif collectionName=="HLT_xAOD__TrigVertexCountsContainer_vertexcounts":
587 from DerivationFrameworkCore.MinBiasTriggerContent import MinBiasTriggerContent
588 items.extend(MinBiasTriggerContent)
589 elif collectionName=="HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":
590 from DerivationFrameworkCore.JetTriggerContentRun3 import JetTriggerContentRun3
591 from DerivationFrameworkCore.JetTriggerContentRun3TLA import JetTriggerContentRun3TLA
592 if not self.OverrideJetTriggerContentWithTLAContent:
593 items.extend(JetTriggerContentRun3)
594 else:
595 items.extend(JetTriggerContentRun3TLA)
596 elif collectionName=="HLT_BJetTriggerByYearContent":
597 from FTagAnalysisAlgorithms.BJetTriggerByYearContent import getBJetTriggerContent
598 items.extend(getBJetTriggerContent(self.flags))
599 elif collectionName=="HLT_FULL_EDM":
600 from DerivationFrameworkTrigger.TrigSlimmingHelper import addTrigEDMSetToOutput
601 items.extend(addTrigEDMSetToOutput(self.flags, self, edmSet=self.IncludeFullTriggerEDMLevel))
602
603 else:
604 raise RuntimeError("Smart slimming container "+collectionName+" does not exist or does not have a smart slimming list")
605 return items
606

◆ GetWholeContentItems()

SlimmingHelper.SlimmingHelper.GetWholeContentItems ( self,
collection )

Definition at line 346 of file SlimmingHelper.py.

346 def GetWholeContentItems(self,collection):
347 items = [collection,collection+"Aux."]
348 return items
349

◆ ValidateStaticContent()

SlimmingHelper.SlimmingHelper.ValidateStaticContent ( self,
item )

Definition at line 635 of file SlimmingHelper.py.

635 def ValidateStaticContent(self,item):
636 # No wildcards
637 if ("*" in item):
638 return "WILDCARD"
639 # No xAOD containers
640 sep = item.split("#")
641 if ("xAOD::" in item and sep[1] in self.NamesAndTypes.keys()):
642 return "XAOD"
643 return "OK"
644

Member Data Documentation

◆ _locked

bool SlimmingHelper.SlimmingHelper._locked = True
protected

Definition at line 340 of file SlimmingHelper.py.

◆ AllVariables

SlimmingHelper.SlimmingHelper.AllVariables = lockable_list()

Definition at line 87 of file SlimmingHelper.py.

◆ AppendToDictionary

SlimmingHelper.SlimmingHelper.AppendToDictionary = {}

Definition at line 88 of file SlimmingHelper.py.

◆ ExtraVariables

SlimmingHelper.SlimmingHelper.ExtraVariables = lockable_list()

Definition at line 84 of file SlimmingHelper.py.

◆ FinalItemList

SlimmingHelper.SlimmingHelper.FinalItemList = lockable_list()

Definition at line 82 of file SlimmingHelper.py.

◆ flags

SlimmingHelper.SlimmingHelper.flags = flags

Definition at line 89 of file SlimmingHelper.py.

◆ IncludeAdditionalTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeAdditionalTriggerContent = False

Definition at line 91 of file SlimmingHelper.py.

◆ IncludeBJetTriggerByYearContent

bool SlimmingHelper.SlimmingHelper.IncludeBJetTriggerByYearContent = False

Definition at line 100 of file SlimmingHelper.py.

◆ IncludeBJetTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeBJetTriggerContent = False

Definition at line 99 of file SlimmingHelper.py.

◆ IncludeBPhysTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeBPhysTriggerContent = False

Definition at line 101 of file SlimmingHelper.py.

◆ IncludeDiTauTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeDiTauTriggerContent = False

Definition at line 97 of file SlimmingHelper.py.

◆ IncludeEGammaTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeEGammaTriggerContent = False

Definition at line 93 of file SlimmingHelper.py.

◆ IncludeEtMissTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeEtMissTriggerContent = False

Definition at line 98 of file SlimmingHelper.py.

◆ IncludeFullTriggerEDMLevel

SlimmingHelper.SlimmingHelper.IncludeFullTriggerEDMLevel = ""

Definition at line 103 of file SlimmingHelper.py.

◆ IncludeJetTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeJetTriggerContent = False

Definition at line 94 of file SlimmingHelper.py.

◆ IncludeMinBiasTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeMinBiasTriggerContent = False

Definition at line 102 of file SlimmingHelper.py.

◆ IncludeMuonTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeMuonTriggerContent = False

Definition at line 92 of file SlimmingHelper.py.

◆ IncludeTauTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeTauTriggerContent = False

Definition at line 96 of file SlimmingHelper.py.

◆ IncludeTrackingTriggerContent

bool SlimmingHelper.SlimmingHelper.IncludeTrackingTriggerContent = False

Definition at line 95 of file SlimmingHelper.py.

◆ IncludeTriggerNavigation

SlimmingHelper.SlimmingHelper.IncludeTriggerNavigation = True

Definition at line 90 of file SlimmingHelper.py.

◆ name

SlimmingHelper.SlimmingHelper.name = inputName

Definition at line 81 of file SlimmingHelper.py.

◆ NamesAndTypes

SlimmingHelper.SlimmingHelper.NamesAndTypes = buildNamesAndTypes(kwargs["NamesAndTypes"])

Definition at line 106 of file SlimmingHelper.py.

◆ OverrideJetTriggerContentWithTLAContent

bool SlimmingHelper.SlimmingHelper.OverrideJetTriggerContentWithTLAContent = False

Definition at line 104 of file SlimmingHelper.py.

◆ SmartCollections

SlimmingHelper.SlimmingHelper.SmartCollections = lockable_list()

Definition at line 86 of file SlimmingHelper.py.

◆ StaticContent

SlimmingHelper.SlimmingHelper.StaticContent = lockable_list()

Definition at line 83 of file SlimmingHelper.py.

◆ theHandler

SlimmingHelper.SlimmingHelper.theHandler = ContentHandler(self.name+"Handler",self.NamesAndTypes)

Definition at line 108 of file SlimmingHelper.py.


The documentation for this class was generated from the following file: