ATLAS Offline Software
HION7.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 # HION7.py
3 
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaConfiguration.Enums import MetadataCategory
7 from AthenaCommon.CFElements import seqAND
8 
9 
12  """Configure the example skimming tool"""
13  acc = ComponentAccumulator()
14  ExtraData = []
15  ExtraData += ['xAOD::JetContainer/AntiKt2HIJets']
16  ExtraData += ['xAOD::JetContainer/AntiKt4HIJets']
17 
18  acc.addSequence( seqAND("HION7Sequence") )
19  acc.getSequence("HION7Sequence").ExtraDataForDynamicConsumers = ExtraData
20  acc.getSequence("HION7Sequence").ProcessDynamicDataDependencies = True
21 
22  expression = ""
23  #Trigger selection
24  from DerivationFrameworkHI import ListTriggers
25  from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
26  info=getTypeForRun(flags.Input.RunNumbers[0])
27  isSmallSystem = False
28  if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
29  isSmallSystem = True
30  if not flags.Input.isMC:
31  print('project: ', flags.Input.ProjectName,', isSmallSystem: ', isSmallSystem)
32  TriggerDict = ListTriggers.GetTriggers(flags.Input.ProjectName, isSmallSystem)
33  for i, key in enumerate(TriggerDict):
34  expression = expression + '(' + key + ' && count(AntiKt4HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 ) ' + '|| (' + key + ' && count(AntiKt2HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 ) '
35  if not i == len(TriggerDict) - 1:
36  expression = expression + ' || '
37 
38  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
39  tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
40  acc.addPublicTool(CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HION7StringSkimmingTool",
41  expression = expression,
42  TrigDecisionTool=tdt),
43  primary = True)
44 
45  return(acc)
46 
48  """Configure the example augmentation tool"""
49  acc = ComponentAccumulator()
50 
51  # Configure the augmentation tool
52  # This adds FCalEtA, FCalEtC, ...
53  augmentation_tool = CompFactory.DerivationFramework.HIGlobalAugmentationTool(name="HION7AugmentationTool",
54  nHarmonic=5 # to capture higher-order harmonics for anisotropic flow
55  )
56  acc.addPublicTool(augmentation_tool, primary=True)
57 
58  return acc
59 
60 
61 def HION7KernelCfg(flags, name='HION7Kernel', **kwargs):
62  """Configure the derivation framework driving algorithm (kernel)"""
63  acc = ComponentAccumulator()
64 
65 
67  from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
68  info=getTypeForRun(flags.Input.RunNumbers[0])
69  isSmallSystem = False
70  if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
71  isSmallSystem = True
72  pTCut = 20
73  if isSmallSystem:
74  pTCut = 15
75  from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg,JetTrackParticleThinningCfg
76 
77  track_thinning_expression = "InDetTrackParticles.pt > 0.9*GeV"
78  TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
79  flags,
80  name = "PHYSTrackParticleThinningTool",
81  StreamName = kwargs['StreamName'],
82  SelectionString = track_thinning_expression,
83  InDetTrackParticlesKey = "InDetTrackParticles"))
84 
85  AntiKt2HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
86  flags,
87  name = "AntiKt2HIJetsThinningTool",
88  StreamName = kwargs['StreamName'],
89  JetKey = "AntiKt2HIJets",
90  SelectionString = "AntiKt2HIJets.pt > "+ str(pTCut) +"*GeV",
91  InDetTrackParticlesKey = "InDetTrackParticles"))
92 
93  AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
94  flags,
95  name = "AntiKt4HIJetsThinningTool",
96  StreamName = kwargs['StreamName'],
97  JetKey = "AntiKt4HIJets",
98  SelectionString = "AntiKt4HIJets.pt > "+ str(pTCut) +"*GeV",
99  InDetTrackParticlesKey = "InDetTrackParticles"))
100 
101 
102  thinningTools = [TrackParticleThinningTool,
103  AntiKt2HIJetsThinningTool,
104  AntiKt4HIJetsThinningTool]
105  if flags.Input.isMC:
106  from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import GenericTruthThinningCfg
107  truth_thinning_expression = "(TruthParticles.status==1) && (TruthParticles.pt > 0.7*GeV) && (abs(TruthParticles.eta) < 2.7)"
108  TruthParticleThinningTool = acc.getPrimaryAndMerge(GenericTruthThinningCfg(flags,
109  name="TruthParticleThinningTool",
110  StreamName=kwargs['StreamName'],
111  ParticleSelectionString = truth_thinning_expression
112  )
113  )
114  thinningTools += [TruthParticleThinningTool]
115 
116  skimmingTool = acc.getPrimaryAndMerge(HION7SkimmingToolCfg(flags))
117  globalAugmentationTool = acc.getPrimaryAndMerge(HION7GlobalAugmentationToolCfg(flags))
118  augmentationTool=[globalAugmentationTool]
119 
120  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,ThinningTools = thinningTools, SkimmingTools = [skimmingTool], AugmentationTools=augmentationTool),sequenceName="HION7Sequence")
121  return acc
122 
123 
124 def HION7Cfg(flags):
125 
126  acc = ComponentAccumulator()
127  acc.merge(HION7KernelCfg(flags, name="HION7Kernel",StreamName = "StreamDAOD_HION7"))
128 
129  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
130  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
131  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
132  from DerivationFrameworkHI import ListSlimming
133 
134 
136  HION7SlimmingHelper = SlimmingHelper("HION7SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
137  HION7SlimmingHelper.SmartCollections = ListSlimming.HION7SmartCollections()
138  all_variables = ListSlimming.HION7AllVarContent()
139  if flags.Input.isMC:
140  all_variables += ListSlimming.HION7AllVarTruthContent()
141  HION7SlimmingHelper.AllVariables = all_variables
142 
143  HION7ItemList = HION7SlimmingHelper.GetItemList()
144 
145  acc.merge(OutputStreamCfg(flags, "DAOD_HION7", ItemList=HION7ItemList, AcceptAlgs=["HION7Kernel"]))
146  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION7", AcceptAlgs=["HION7Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
147 
148  return acc
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=None, MetadataItemList=None, disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=None, HelperTools=None)
Definition: OutputStreamConfig.py:13
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.HION7.HION7Cfg
def HION7Cfg(flags)
Definition: HION7.py:124
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:516
python.HION7.HION7GlobalAugmentationToolCfg
def HION7GlobalAugmentationToolCfg(flags)
Definition: HION7.py:47
python.ParticleTypeUtil.getTypeForRun
def getTypeForRun(run, quiet=False)
Definition: ParticleTypeUtil.py:24
python.TruthDerivationToolsConfig.GenericTruthThinningCfg
def GenericTruthThinningCfg(flags, name, **kwargs)
Definition: TruthDerivationToolsConfig.py:415
python.HION7.HION7KernelCfg
def HION7KernelCfg(flags, name='HION7Kernel', **kwargs)
Definition: HION7.py:61
python.InDetToolsConfig.JetTrackParticleThinningCfg
def JetTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:632
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.TriggerInterface.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TriggerInterface.py:14
python.CFElements.seqAND
def seqAND(name, subs=[], invert=False)
Definition: CFElements.py:27
str
Definition: BTagTrackIpAccessor.cxx:11
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION7.HION7SkimmingToolCfg
def HION7SkimmingToolCfg(flags)
Skiming.
Definition: HION7.py:11