ATLAS Offline Software
JetHIConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from JetRecConfig import JetRecConfig
6 from AthenaConfiguration.ComponentFactory import CompFactory
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 
9 from TrigEDMConfig.TriggerEDM import recordable
10 
11 from . import JetRecoCommon
12 from JetRecConfig.JetDefinition import JetModifier
13 from JetRecConfig.JetRecConfig import getJetCopyAlg
14 
15 from AthenaCommon.Logging import logging
16 logging.getLogger().info("JetHIConfig LOG: Importing %s",__name__)
17 log = logging.getLogger(__name__)
18 
19 
20 # For now all duplicated from jetHIRecoSequenceCA -- to be cleaned up by experts
21 def HeavyIonJetRecoDataDeps(flags, **jetRecoDict):
22  # The template unsubtracted jet definition
23  jetNamePrefix = JetRecoCommon.getHLTPrefix()
24  clustersKey = JetRecoCommon.getClustersKey(jetRecoDict)
25  jetDef_unsub = JetRecoCommon.defineHIJets(jetRecoDict,clustersKey=clustersKey,prefix=jetNamePrefix,suffix="_Unsubtracted")
26  jetDef_unsub._internalAtt['finalPJContainer'] = "PseudoJet"+clustersKey
27  target_jetReco = f"_for_{jetRecoDict['jetDefStr']}"
28 
29  # Seed jets for subtraction
30  associationName = "%s_DR8Assoc" % (clustersKey)
31  jetDef_seed0 = jetDef_unsub.clone()
32  jetDef_seed0.suffix = jetDef_unsub.suffix.replace("Unsubtracted", "seed0"+target_jetReco)
33  jetDef_seed0.radius = 0.2
34  jetsFullName_seed0 = jetDef_seed0.fullname()
35 
36  # Add this to the standard modifiers as we use this repeatedly
37  stdJetModifiers.update(
38  # we give a function as PtMin : it will be evaluated when instantiating the tool (modspec will come alias usage like "Filter:10000" --> PtMin=100000)
39  HLTHIJetAssoc = JetModifier("HIJetDRAssociationTool","HIJetDRAssociation", ContainerKey=clustersKey, DeltaR=0.8, AssociationName=associationName),
40  )
41 
42  # These mods are custom and used only here
43  jetDef_seed0.modifiers=[
44  "HLTHIJetAssoc",
45  JetModifier("HIJetMaxOverMeanTool","HIJetMaxOverMean"+target_jetReco, JetContainer = jetsFullName_seed0),
46  JetModifier("HIJetDiscriminatorTool","HIJetDiscriminator", MaxOverMeanCut = 4, MinimumETMaxCut=3000),
47  "Filter:5000"
48  ]
49 
50  JES_is_data=False
51  calib_seq='EtaJES' #only do in situ for R=0.4 jets in data
52  if jetRecoDict["jetCalib"].endswith("IS") and not flags.Input.isMC:
53  JES_is_data=True
54  calib_seq += "_Insitu"
55 
56  # Second seed
57  # Copy default jets: seed1
58  jetDef_seed1 = jetDef_unsub.clone()
59  jetDef_seed1.suffix = jetDef_seed0.suffix.replace("_seed0","_seed1")
60  jetDef_seed1.radius = 0.2
61  jetDef_seed1.modifiers=["HLTHIJetAssoc", "HLTHIJetConstSub_iter0:iter0", "HLTHIJetSeedCalib:{}___{}".format(calib_seq, JES_is_data), "Filter:25000"]
62 
63  # Final subracted jets
64  jetDef_final = jetDef_unsub.clone()
65  jetDef_final.suffix = jetDef_unsub.suffix.replace("_Unsubtracted","")
66  jetDef_final.modifiers=["HLTHIJetConstSub_iter1:iter1", "HLTHIJetJetConstMod_iter1", "HLTHIJetCalib:{}___{}".format(calib_seq, JES_is_data), "Sort", "Filter:20000"]
67 
68  jetDefDict = {
69  "unsub": (jetDef_unsub.fullname(), jetDef_unsub),
70  "seed0": (jetDef_seed0.fullname(), jetDef_seed0),
71  "seed1": (jetDef_seed1.fullname(), jetDef_seed1),
72  "final": (jetDef_final.fullname(), jetDef_final),
73  }
74  return jetDefDict
75 
76 def jetHIEventShapeSequenceCA(configFlags, clustersKey, towerKey):
77  acc = ComponentAccumulator()
78 
79  #Import the map tool - it will have to harvest configuration along the path
80  eventShapeMapToolKey="HLTHIEventShapeMapTool"
81  theMapTool=CompFactory.HIEventShapeMapTool(eventShapeMapToolKey)
82 
83  #Make new event shape at tower level
84  EventShapeKey='HLTHIEventShapeWeighted'
85  ESAlg_W=CompFactory.HIEventShapeMaker("ESAlg_W")
86  ESAlg_W.OutputContainerKey=EventShapeKey
87  ESAlg_W.InputTowerKey=clustersKey
88  ESAlg_W.NaviTowerKey=towerKey
89 
90  #Add filler tool
91  ESFiller=CompFactory.HIEventShapeFillerTool("WeightedFiller")
92  ESFiller.UseClusters=True
93 
94  #Add weight tool to filler tool
95  TWTool=CompFactory.HITowerWeightTool()
96  TWTool.ApplyCorrection=True
97  TWTool.ConfigDir='HIJetCorrection/'
98  from HIJetRec.HIJetRecUtilsCA import getHIClusterGeoWeightFile
99  TWTool.InputFile=getHIClusterGeoWeightFile(configFlags)
100 
101  ESFiller.TowerWeightTool=TWTool
102  ESFiller.EventShapeMapTool=theMapTool
103  #Add to top sequence
104  ESAlg_W.HIEventShapeFillerTool=ESFiller
105  acc.addEventAlgo(ESAlg_W)
106 
107  return acc, EventShapeKey, theMapTool
108 
109 
110 # JetModifier dictionary
111 from JetRecConfig.StandardJetMods import stdJetModifiers
112 stdJetModifiers.update(
113  HLTHIJetCalib = JetModifier("JetCalibrationTool",
114  "HLTHICalibTool_{modspec}",
115  JetCollection=lambda _, modspec: modspec.split('___')[2] if len(modspec.split('___')) > 2 else "AntiKt4HI",
116  PrimaryVerticesContainerName="",
117  ConfigFile='JES_MC16_HI_Jan2021_5TeV.config',
118  CalibSequence=lambda _, modspec: modspec.split('___')[0],
119  IsData=lambda _, modspec: modspec.split('___')[1] == 'True'),
120  )
121 
122 stdJetModifiers.update(
123  HLTHIJetSeedCalib = JetModifier("JetCalibrationTool",
124  "HLTHISeedCalibTool_{modspec}",
125  JetCollection="AntiKt2HI",
126  PrimaryVerticesContainerName="",
127  ConfigFile='JES_MC16_HI_Jan2021_5TeV.config',
128  CalibSequence=lambda _, modspec: modspec.split('___')[0],
129  IsData=lambda _, modspec: modspec.split('___')[1] == 'True'),
130  )
131 
132 def jetHIRecoSequenceCA(configFlags, clustersKey, towerKey, **jetRecoDict):
133  """This build the standard heavy ion style jet.
134 
135  This is similar to JetRecConfig.getJetDefAlgs(). However due to how the alg flow is organized in the
136  chain steps, we can't use this function directly.
137  Instead we
138  - construct a JetDefinition
139  - use lower-level function in JetRecConfig with this JetDefinition to get the necessary algs and build our sequence manually.
140 
141  """
142  acc = ComponentAccumulator()
143 
144  if jetRecoDict["ionopt"] == "noion":
145  raise ValueError("Jet reco for heavy ion called without a ion option!")
146 
147  dataSource = "mc" if configFlags.Input.isMC else "data"
148 
149  jetHIEvtShapeSequence, eventShapeKey, eventShapeMapTool = jetHIEventShapeSequenceCA(configFlags, clustersKey=clustersKey, towerKey=towerKey)
150  acc.merge(jetHIEvtShapeSequence)
151 
152  jetNamePrefix = JetRecoCommon.getHLTPrefix()
153  jetDef = JetRecoCommon.defineHIJets(jetRecoDict,clustersKey=clustersKey,prefix=jetNamePrefix,suffix="_Unsubtracted")
154  jetsFullName_Unsub = jetDef.fullname()
155 
156  #This is used for calibration and monitoring
157  jet_collection_name = jetsFullName_Unsub.split('_')[1].replace("Jets", "")
158 
159  # Add the PseudoJetGetter alg to the sequence
160  pjgalg = CompFactory.PseudoJetAlgorithm(
161  "pjgalg_HI",
162  InputContainer = clustersKey,
163  OutputContainer = "PseudoJet"+clustersKey,
164  Label = "pjgHLTHI",
165  SkipNegativeEnergy = False,
166  TreatNegativeEnergyAsGhost=True
167  )
168  acc.addEventAlgo(pjgalg)
169  finalpjs = str(pjgalg.OutputContainer)
170 
171  # Set the name of the final PseudoJetContainer to be used as input :
172  jetDef._internalAtt['finalPJContainer'] = finalpjs
173 
174 
175  from JetRec import JetOnlineMon
176  monTool = JetOnlineMon.getMonTool_TrigJetAlgorithm(configFlags, "HLTJets/" + jet_collection_name + "/")
177 
178  # Reconstruction
179  jetRecAlg = getHIJetRecAlg(jetDef, jetsFullName_Unsub, monTool=monTool)
180  acc.addEventAlgo(jetRecAlg)
181 
182  associationName = "%s_DR8Assoc" % (clustersKey)
183 
184  jetsInUnsub = jetsFullName_Unsub
185 
186  JES_is_data=False
187  calib_seq='EtaJES' #only do in situ for R=0.4 jets in data
188  if jetRecoDict["jetCalib"].endswith("IS") and (dataSource=="data"):
189  JES_is_data=True
190  calib_seq += "_Insitu"
191 
192  target_jetReco = f'_for_{jetRecoDict["jetDefStr"]}'
193 
194  # Copy unsubtracted jets: seed0
195  jetDef_seed0 = jetDef.clone()
196  jetDef_seed0.suffix = jetDef.suffix.replace("Unsubtracted", "seed0"+target_jetReco)
197  jetDef_seed0.radius = 0.2
198  jetsFullName_seed0 = jetDef_seed0.fullname()
199  jetDef_seed0.modifiers=[
200  JetModifier("HIJetDRAssociationTool","HIJetDRAssociation", ContainerKey=clustersKey, DeltaR=0.8, AssociationName=associationName),
201  JetModifier("HIJetMaxOverMeanTool","HIJetMaxOverMean"+target_jetReco, JetContainer = jetsFullName_seed0),
202  JetModifier("HIJetDiscriminatorTool","HIJetDiscriminator", MaxOverMeanCut = 4, MinimumETMaxCut=3000),
203  "Filter:5000"
204  ]
205 
206  copySeed0Alg = getJetCopyAlg(jetsin=jetsInUnsub,jetsoutdef=jetDef_seed0,decorations=[],shallowcopy=False,shallowIO=False,monTool=monTool)
207  acc.addEventAlgo(copySeed0Alg)
208 
209  # First iteration!
210  iter0=HLTAddIteration(configFlags, jetsFullName_seed0, eventShapeKey, clustersKey, map_tool=eventShapeMapTool, assoc_name=associationName, suffix="iter0"+target_jetReco) # subtract UE from jets
211  acc.addEventAlgo(HLTRunTools([iter0], "jetalgHI_iter0"+target_jetReco))
212  modulator0=iter0.Modulator
213  subtractor0=iter0.Subtractor
214 
215  HLTMakeSubtractionTool(configFlags, iter0.OutputEventShapeKey, Modulator=modulator0, EventShapeMapTool=eventShapeMapTool, Subtractor=subtractor0, label="HLTHIJetConstSub_iter0"+target_jetReco)
216 
217  cluster_key_iter0_deep=clustersKey+"_iter0_temp"+target_jetReco
218  happy_iter0_Tool = ApplySubtractionToClustersHLT(configFlags, EventShapeKey="HLTHIEventShapeWeighted_iter0"+target_jetReco, ClusterKey=clustersKey, OutClusterKey=cluster_key_iter0_deep, Modulator=modulator0, EventShapeMapTool=eventShapeMapTool, Subtractor=subtractor0, SetMoments=False, ApplyOriginCorrection=False)
219  acc.addEventAlgo(HLTRunTools([happy_iter0_Tool], "jetalgHI_clusterSub_iter0"+target_jetReco))
220 
221  GetConstituentsModifierToolHLT(configFlags, name="HIJetConstituentModifierTool", ClusterKey=cluster_key_iter0_deep, ApplyOriginCorrection=False, label="HLTHIJetJetConstMod_iter0"+target_jetReco)
222 
223  # Copy default jets: seed1
224  jetDef_seed1 = jetDef.clone()
225  jetDef_seed1.suffix = jetDef_seed0.suffix.replace("_seed0","_seed1")
226  jetDef_seed1.radius = 0.2
227  jetDef_seed1.modifiers=["HLTHIJetAssoc", f"HLTHIJetConstSub_iter0{target_jetReco}:iter0", "HLTHIJetSeedCalib:{}___{}".format(calib_seq, JES_is_data), "Filter:25000"]
228  jetsFullName_seed1 = jetDef_seed1.fullname()
229  copySeed1Alg = getJetCopyAlg(jetsin=jetsInUnsub,jetsoutdef=jetDef_seed1,decorations=[],shallowcopy=False,shallowIO=False,monTool=monTool)
230  acc.addEventAlgo(copySeed1Alg)
231 
232  iter1=HLTAddIteration(configFlags, jetsFullName_seed1, eventShapeKey, clustersKey, map_tool=eventShapeMapTool, assoc_name=associationName, sub_tool=subtractor0, suffix="iter1"+target_jetReco)
233  iter1.OutputEventShapeKey="HLTHIEventShape_iter1"+target_jetReco
234  modulator1=iter1.Modulator
235  subtractor1=iter1.Subtractor
236 
237  HLTMakeSubtractionTool(configFlags, iter1.OutputEventShapeKey, Modulator=modulator1, EventShapeMapTool=eventShapeMapTool, label="HLTHIJetConstSub_iter1"+target_jetReco)
238 
239  acc.addEventAlgo(HLTRunTools([iter1], "jetalgHI_clusterSub_egamma"+target_jetReco))
240 
241  #
242  cluster_key_final_deep=clustersKey+"_final"+target_jetReco
243  subToClusterTool = ApplySubtractionToClustersHLT(configFlags, EventShapeKey="HLTHIEventShape_iter1"+target_jetReco, ClusterKey=clustersKey, OutClusterKey=cluster_key_final_deep, Modulator=modulator1, EventShapeMapTool=eventShapeMapTool, Subtractor=subtractor1, SetMoments=False, ApplyOriginCorrection=False)
244  acc.addEventAlgo(HLTRunTools([subToClusterTool], "jetalgHI_clusterSub"+target_jetReco))
245 
246  GetConstituentsModifierToolHLT(configFlags, name="HIJetConstituentModifierTool", ClusterKey=cluster_key_final_deep, ApplyOriginCorrection=False, label="HLTHIJetJetConstMod_iter1"+target_jetReco)
247 
248  jetDef_final = jetDef.clone()
249  jetDef_final.suffix = jetDef.suffix.replace("_Unsubtracted","")
250  jetDef_final.modifiers=[f"HLTHIJetConstSub_iter1{target_jetReco}:iter1", "HLTHIJetJetConstMod_iter1"+target_jetReco, "HLTHIJetCalib:{}___{}___{}".format(calib_seq, JES_is_data, jet_collection_name), "Sort", "Filter:20000"]
251  copyAlg_final= getJetCopyAlg(jetsin=jetsInUnsub,jetsoutdef=jetDef_final,decorations=[],shallowcopy=False,shallowIO=False,monTool=monTool)
252  acc.addEventAlgo(copyAlg_final)
253 
254  jetsFinal = recordable(jetDef_final.fullname())
255 
256  jetsOut = jetsFinal
257 
258  return acc, jetsOut, jetDef_final
259 
260 def HLTRunTools(toollist, algoName):
261 
262  theAlg = CompFactory.JetAlgorithm(algoName)
263  theAlg.Tools = toollist
264 
265  return theAlg
266 
267 def getHIJetRecAlg( jetdef, jetsName, monTool = None):
268  """Returns the configured HIJetRecAlg instance corresponding to jetdef
269 
270  IMPORTANT : jetdef must have its dependencies solved (i.e. it must result from solveDependencies() )
271  """
272  pjContNames = jetdef._internalAtt['finalPJContainer']
273  jclust = CompFactory.JetClusterer(
274  "builder",
275  JetAlgorithm = jetdef.algorithm,
276  JetRadius = jetdef.radius,
277  PtMin = jetdef.ptmin,
278  InputPseudoJets = pjContNames,
279  GhostArea = 0.0,
280  JetInputType = int(jetdef.inputdef.jetinputtype),
281  RandomOption = 1,
282  )
283 
284  mods = JetRecConfig.getJetModifierTools(jetdef)
285 
286  jetname = jetsName
287  jra = CompFactory.JetRecAlg(
288  "jetrecalg_"+jetname,
289  Provider = jclust,
290  Modifiers = mods,
291  OutputContainer = jetname,
292  )
293  if monTool:
294  # this option can't be set in AnalysisBase -> set only if explicitly asked :
295  jra.MonTool = monTool
296 
297  return jra
298 
299 # Same as AddIteration in Reconstruction/HeavyIonRec/HIJetRec/HIJetRecUtils.py but without jtm
300 def HLTAddIteration(configFlags, seed_container,shape_name,clustersKey, **kwargs) :
301  out_shape_name=shape_name
302  if 'suffix' in kwargs.keys() : out_shape_name+='_' + kwargs['suffix']
303  mod_shape_key=out_shape_name+'_Modulate'
304  remodulate=True
305  if remodulate :
306  if 'modulator' in kwargs.keys() : mod_tool=kwargs['modulator']
307  else :
308  log.info( "In HLTAddIteration function, HIUEModulatorTool is created using HLTMakeModulatorTool with mod_shape_key = {}".format(mod_shape_key) )
309  mod_tool=HLTMakeModulatorTool(mod_shape_key,**kwargs)
310 
311  if 'map_tool' in kwargs.keys() : map_tool=kwargs['map_tool']
312  else :
313  map_tool=CompFactory.HIEventShapeMapTool()
314 
315  if 'sub_tool' in kwargs.keys() : sub_tool=kwargs['sub_tool']
316  else :
317  from HIJetRec.HIJetRecUtilsCA import getHIClusterGeoWeightFile
318  weightInputFile=getHIClusterGeoWeightFile(configFlags)
319 
320  HIJetClusterSubtractorTool=CompFactory.HIJetClusterSubtractorTool
321  sub_tool=HIJetClusterSubtractorTool("HLTHIJetClusterSubtractor", ConfigDir='HIJetCorrection/', InputFile=weightInputFile)
322  sub_tool.UseSamplings=False
323 
324  if 'assoc_name' in kwargs.keys() : assoc_name=kwargs['assoc_name']
325  else :
326  log.info( "In HLTAddIteration function, HIJetDRAssociationTool is created with clustersKey= {}".format(clustersKey) )
327  assoc=CompFactory.HIJetDRAssociationTool("HIJetDRAssociation")
328  assoc.ContainerKey=clustersKey
329  assoc.DeltaR=0.8
330  assoc.AssociationName="%s_DR8Assoc" % (clustersKey)
331  assoc_name=assoc.AssociationName
332 
333  HIEventShapeJetIteration=CompFactory.HIEventShapeJetIteration
334  iter_tool=HIEventShapeJetIteration('HLTHIJetIteration_%s' % out_shape_name )
335 
336  iter_tool.InputEventShapeKey=shape_name
337  iter_tool.OutputEventShapeKey=out_shape_name
338  iter_tool.AssociationKey=assoc_name
339  iter_tool.CaloJetSeedContainerKey=seed_container
340  iter_tool.Subtractor=sub_tool
341  iter_tool.ModulationScheme=1
342  iter_tool.RemodulateUE=True
343  iter_tool.Modulator=mod_tool
344  iter_tool.ShallowCopy=False
345  iter_tool.ModulationEventShapeKey=mod_shape_key
346  iter_tool.EventShapeMapTool=map_tool
347 
348  return iter_tool
349 
350 def HLTBuildHarmonicName(shape_key, **kwargs) :
351  tname=shape_key
352  if 'harmonics' in kwargs.keys() :
353  for n in kwargs['harmonics'] :
354  tname = str(tname) + str('_V%d' % n)
355  return tname
356 
358  tname='NullUEModulator'
359  HIUEModulatorTool=CompFactory.HIUEModulatorTool
360  mod=HIUEModulatorTool(tname)
361  mod.EventShapeKey=''
362  for n in [2,3,4] : setattr(mod,'DoV%d' % n,False)
363  return mod
364 
365 def HLTMakeModulatorTool(mod_key, **kwargs):
366  harmonics = kwargs.pop('harmonics', [2, 3, 4])
367  tname = kwargs.pop('mod_name', 'Modulator_{}'.format(HLTBuildHarmonicName(mod_key, harmonics=harmonics)))
368 
369  if 'suffix' in kwargs.keys():
370  tname += '_' + kwargs['suffix']
371 
372  if len(harmonics) == 0:
373  return HLTGetNullModulator()
374 
375  HIUEModulatorTool=CompFactory.HIUEModulatorTool
376  mod=HIUEModulatorTool(tname)
377  mod.EventShapeKey=mod_key
378 
379  for n in [2,3,4] :
380  val=(n in harmonics)
381  attr_name='DoV%d' % n
382  setattr(mod,attr_name,val)
383 
384  if 'label' in kwargs.keys():
385  label = kwargs['label']
386  stdJetModifiers[label] = JetModifier(
387  "HIUEModulatorTool",
388  tname,
389  DoV2 = mod.DoV2,
390  DoV3 = mod.DoV3,
391  DoV4 = mod.DoV4,
392  EventShapeKey=mod_key)
393 
394  return mod
395 
397  from HIJetRec.HIJetRecUtilsCA import getHIClusterGeoWeightFile
398  weightInputFile=getHIClusterGeoWeightFile(configFlags)
399 
400  HIJetClusterSubtractorTool = CompFactory.HIJetClusterSubtractorTool
401  sub_tool = HIJetClusterSubtractorTool("HLTHIJetClusterSubtractor", ConfigDir='HIJetCorrection/', InputFile=weightInputFile)
402  sub_tool.UseSamplings = False
403 
404  return sub_tool
405 
406 #same as MakeSubtractionTool in Reconstruction/HeavyIonRec/HIJetRec/HIJetRecUtils.py but without jtm
407 def HLTMakeSubtractionTool(configFlags, shapeKey, moment_name='', momentOnly=False, **kwargs) :
408 
409  alg_props = {
410  'EventShapeKey': shapeKey,
411  'Modulator': HLTGetNullModulator(),
412  'EventShapeMapTool': CompFactory.HIEventShapeMapTool(),
413  'Subtractor': HLTHIJetClusterSubtractorGetter(configFlags),
414  'MomentName': 'HLTJetSubtractedScale{}Momentum'.format(moment_name),
415  'SetMomentOnly': momentOnly,
416  'ApplyOriginCorrection': True,
417  }
418 
419  suffix = shapeKey.toStringProperty()
420  if momentOnly is True:
421  suffix += '_' + moment_name
422 
423  alg_props.update(kwargs)
424 
425  label = alg_props.pop('label', None)
426 
427  HIJetConstituentSubtractionTool = CompFactory.HIJetConstituentSubtractionTool
428  subtr = HIJetConstituentSubtractionTool("HLTHICS_" + suffix, **alg_props)
429 
430  stdJetModifiers[label] = JetModifier(
431  "HIJetConstituentSubtractionTool",
432  "HLTHICS_HLTHIEventShapeWeighted_{modspec}",
433  Modulator=subtr.Modulator,
434  EventShapeMapTool=subtr.EventShapeMapTool,
435  Subtractor=subtr.Subtractor,
436  EventShapeKey=subtr.EventShapeKey,
437  MomentName=subtr.MomentName,
438  SetMomentOnly=subtr.SetMomentOnly,
439  ApplyOriginCorrection=True)
440 
441  return subtr
442 
443 def HLTHIClusterGetter(dummyFlags, tower_key="CombinedTower", cell_key="AllCalo", cluster_key="HLT_HIClusters") :
444  """Function to equip HLT HI cluster builder from towers and cells, adds to output AOD stream"""
445 
446  HIClusterMaker=CompFactory.HIClusterMaker
447  theAlg=HIClusterMaker()
448  theAlg.InputTowerKey=tower_key
449  theAlg.CaloCellContainerKey=cell_key
450  theAlg.OutputContainerKey=cluster_key
451 
452  return theAlg
453 
454 
455 def ApplySubtractionToClustersHLT(configFlags, **kwargs) :
456 
457  alg_props = {
458  'EventShapeKey': "HLTHIEventShape_iter1",
459  'ClusterKey': "HLT_HIClusters",
460  'Modulator': HLTGetNullModulator(),
461  'EventShapeMapTool': CompFactory.HIEventShapeMapTool(),
462  'UpdateOnly': False,
463  'ApplyOriginCorrection': True,
464  'Subtractor': HLTHIJetClusterSubtractorGetter(configFlags),
465  'SetMoments': False,
466  }
467 
468  alg_props.update(kwargs)
469 
470  toolName = alg_props.pop('toolName', 'HIClusterSubtraction')
471 
472  HIClusterSubtraction = CompFactory.HIClusterSubtraction
473  theAlg = HIClusterSubtraction(toolName, **alg_props)
474 
475  return theAlg
476 
477 def GetConstituentsModifierToolHLT(configFlags, **kwargs) :
478  #For the cluster key, same exact logic as used for ApplySubtractionToClusters
479 
480  alg_props = {
481  'ClusterKey': "HLT_HIClusters",
482  'ApplyOriginCorrection': True,
483  'Subtractor': HLTHIJetClusterSubtractorGetter(configFlags),
484  }
485 
486  alg_props.update(kwargs)
487 
488  toolName = alg_props.pop('name', 'HIJetConstituentModifierTool')
489  label = alg_props.pop('label', None)
490 
491  HIJetConstituentModifierTool = CompFactory.HIJetConstituentModifierTool
492  cmod = HIJetConstituentModifierTool(toolName, **alg_props)
493 
494  stdJetModifiers[label] = JetModifier(
495  "HIJetConstituentModifierTool",
496  "HLTHIJetConstituentModifierTool_{modspec}",
497  ClusterKey=cmod.ClusterKey,
498  Subtractor=cmod.Subtractor,
499  ApplyOriginCorrection=cmod.ApplyOriginCorrection)
500 
501  return cmod
grepfile.info
info
Definition: grepfile.py:38
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
HIClusterMaker
Algorithm to build HI-style clusters, which are essentially towers. Cluster energy is sum of cell ene...
Definition: HIClusterMaker.h:37
HIJetRecUtilsCA.getHIClusterGeoWeightFile
def getHIClusterGeoWeightFile(flags)
Definition: HIJetRecUtilsCA.py:7
python.HLT.Jet.JetHIConfig.jetHIRecoSequenceCA
def jetHIRecoSequenceCA(configFlags, clustersKey, towerKey, **jetRecoDict)
Definition: JetHIConfig.py:132
python.HLT.Jet.JetHIConfig.HLTHIJetClusterSubtractorGetter
def HLTHIJetClusterSubtractorGetter(configFlags)
Definition: JetHIConfig.py:396
HIJetConstituentSubtractionTool
JetModifier that actual does the background subtraction. This tool is the most important one applied ...
Definition: HIJetConstituentSubtractionTool.h:44
python.HLT.Jet.JetHIConfig.ApplySubtractionToClustersHLT
def ApplySubtractionToClustersHLT(configFlags, **kwargs)
Definition: JetHIConfig.py:455
HIUEModulatorTool
Definition: HIUEModulatorTool.h:17
python.HLT.Jet.JetHIConfig.GetConstituentsModifierToolHLT
def GetConstituentsModifierToolHLT(configFlags, **kwargs)
Definition: JetHIConfig.py:477
python.HLT.Jet.JetHIConfig.HLTAddIteration
def HLTAddIteration(configFlags, seed_container, shape_name, clustersKey, **kwargs)
Definition: JetHIConfig.py:300
python.HLT.Jet.JetHIConfig.HLTGetNullModulator
def HLTGetNullModulator()
Definition: JetHIConfig.py:357
JetOnlineMon.getMonTool_TrigJetAlgorithm
def getMonTool_TrigJetAlgorithm(flags, path)
Definition: JetOnlineMon.py:4
python.HLT.Jet.JetHIConfig.getHIJetRecAlg
def getHIJetRecAlg(jetdef, jetsName, monTool=None)
Definition: JetHIConfig.py:267
python.HLT.Jet.JetHIConfig.jetHIEventShapeSequenceCA
def jetHIEventShapeSequenceCA(configFlags, clustersKey, towerKey)
Definition: JetHIConfig.py:76
HIJetClusterSubtractorTool
Concrete implementation of HIJetSubtractorToolBase. Class used by HIClusterSubtraction and HIJetConst...
Definition: HIJetClusterSubtractorTool.h:32
python.HLT.Jet.JetHIConfig.HLTMakeSubtractionTool
def HLTMakeSubtractionTool(configFlags, shapeKey, moment_name='', momentOnly=False, **kwargs)
Definition: JetHIConfig.py:407
HIEventShapeJetIteration
Definition: HIEventShapeJetIteration.h:25
python.HLT.Jet.JetHIConfig.HLTBuildHarmonicName
def HLTBuildHarmonicName(shape_key, **kwargs)
Definition: JetHIConfig.py:350
HIClusterSubtraction
Algorithm that applies background subtraction to clusters. The subtraction needs to be handled separa...
Definition: HIClusterSubtraction.h:40
python.JetRecConfig.getJetCopyAlg
def getJetCopyAlg(jetsin, jetsoutdef, decorations=[], shallowcopy=True, shallowIO=True, monTool=None)
Definition: JetRecConfig.py:494
python.HLT.Jet.JetHIConfig.HLTMakeModulatorTool
def HLTMakeModulatorTool(mod_key, **kwargs)
Definition: JetHIConfig.py:365
HIJetConstituentModifierTool
Definition: HIJetConstituentModifierTool.h:24
python.HLT.Jet.JetHIConfig.HLTRunTools
def HLTRunTools(toollist, algoName)
Definition: JetHIConfig.py:260
python.TriggerEDM.recordable
def recordable(arg, runVersion=3)
Definition: TriggerEDM.py:34
str
Definition: BTagTrackIpAccessor.cxx:11
python.HLT.Jet.JetHIConfig.HeavyIonJetRecoDataDeps
def HeavyIonJetRecoDataDeps(flags, **jetRecoDict)
Definition: JetHIConfig.py:21
python.HLT.Jet.JetHIConfig.HLTHIClusterGetter
def HLTHIClusterGetter(dummyFlags, tower_key="CombinedTower", cell_key="AllCalo", cluster_key="HLT_HIClusters")
Definition: JetHIConfig.py:443