ATLAS Offline Software
TCAL1.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 #!/usr/bin/env python
3 
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaConfiguration.Enums import BeamType, MetadataCategory
7 from AthenaCommon.SystemOfUnits import GeV
8 
9 
10 def TCAL1TrackToolsCfg(flags, **kwargs):
11  """ Configure the TrackTools tool """
12 
13  acc = ComponentAccumulator()
14 
15  from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
16  kwargs.setdefault('ParticleCaloExtensionTool', acc.popToolsAndMerge(
18 
19  kwargs.setdefault('IsCollision', flags.Beam.Type is BeamType.Collisions)
20 
21  TrackTools = CompFactory.TileCal.TrackTools
22  acc.setPrivateTools(TrackTools(**kwargs))
23 
24  return acc
25 
26 def TCAL1TileCellsMuonDecoratorCfg(flags, **kwargs):
27  """ Configure the Tile Cells Muon decorator augmentation tool """
28 
29  acc = ComponentAccumulator()
30 
31  from TileGeoModel.TileGMConfig import TileGMCfg
32  acc.merge(TileGMCfg(flags))
33 
34  from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
35  acc.merge(TileCablingSvcCfg(flags))
36 
37  kwargs.setdefault('name', 'TCAL1TileCellsMuonDecorator')
38  kwargs.setdefault('Prefix', 'TCAL1_')
39  kwargs.setdefault('SelectMuons', flags.Beam.Type is BeamType.Collisions)
40  kwargs.setdefault('MinMuonPt', 10 * GeV)
41  kwargs.setdefault('MaxAbsMuonEta', 1.7)
42  kwargs.setdefault('IsoCone', 0.4)
43  kwargs.setdefault('MaxRelETrkInIsoCone', 100000)
44 
45  kwargs.setdefault('TrackTools', acc.popToolsAndMerge(TCAL1TrackToolsCfg(flags)) )
46 
47  TileCellsDecorator = CompFactory.DerivationFramework.TileCellsDecorator
48  kwargs.setdefault('CellsDecorator', TileCellsDecorator(Prefix=kwargs['Prefix']))
49 
50  kwargs.setdefault('TracksInConeTool', CompFactory.xAOD.TrackParticlesInConeTool())
51 
52  TileCellsMuonDecorator = CompFactory.DerivationFramework.TileCellsMuonDecorator
53  acc.addPublicTool(TileCellsMuonDecorator(**kwargs), primary = True)
54 
55  return acc
56 
57 
58 def TCAL1StringSkimmingToolCfg(flags, **kwargs):
59  """Configure TCAL1 derivation framework skimming tool"""
60 
61  prefix = kwargs.pop('Prefix', 'TCAL1_')
62 
63  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
64  acc = ComponentAccumulator()
65  tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
66 
67  selectionExpression = ""
68  if flags.Beam.Type is BeamType.Collisions:
69  selectionExpression = f'(Muons.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500 + 0.4 * Muons.neflowisol20) / Muons.pt < 0.18 && Muons.{prefix}SelectedMuon'
70  else:
71  selectionExpression = 'abs(Muons.eta) < 1.7'
72 
73  skimmingExpression = f'count({selectionExpression}) > 0'
74 
75  kwargs.setdefault('name', 'TCAL1StringSkimmingTool')
76  kwargs.setdefault('expression', skimmingExpression)
77  kwargs.setdefault('TrigDecisionTool', tdt)
78 
79  xAODStringSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool
80  acc.addPublicTool(xAODStringSkimmingTool(**kwargs), primary = True)
81 
82  return acc
83 
84 
85 def TCAL1MuonTPThinningToolCfg(flags, streamName, **kwargs):
86  """Configure TCAL1 derivation framework thinning tool"""
87 
88  acc = ComponentAccumulator()
89 
90  kwargs['StreamName'] = streamName
91  kwargs.setdefault('name', 'TCAL1MuonTPThinningTool')
92  kwargs.setdefault('MuonKey', 'Muons')
93  kwargs.setdefault('InDetTrackParticlesKey', 'InDetTrackParticles')
94 
95  from DerivationFrameworkInDet.InDetToolsConfig import MuonTrackParticleThinningCfg
96  muonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(flags, **kwargs))
97 
98  acc.addPublicTool(muonTPThinningTool, primary = True)
99 
100  return acc
101 
102 
103 def TCAL1KernelCfg(flags, name='TCAL1Kernel', **kwargs):
104  """Configure the TCAL1 derivation framework driving algorithm (kernel)"""
105 
106  acc = ComponentAccumulator()
107 
108  prefix = kwargs.pop('Prefix', 'TCAL1_')
109  streamName = kwargs.pop('StreamName', 'StreamDAOD_TCAL1')
110 
111  # Common augmentations
112  triggerListsHelper = kwargs.pop('TriggerListsHelper', 'TriggerListsHelper')
113  from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
114  acc.merge(PhysCommonAugmentationsCfg(flags, TriggerListsHelper = triggerListsHelper))
115 
116  cellsMuonDecorator = acc.getPrimaryAndMerge( TCAL1TileCellsMuonDecoratorCfg(flags, Prefix=prefix) )
117  kwargs.setdefault('AugmentationTools', [cellsMuonDecorator])
118 
119  skimmingTool = acc.getPrimaryAndMerge(TCAL1StringSkimmingToolCfg(flags, Prefix=prefix))
120  kwargs.setdefault('SkimmingTools', [skimmingTool])
121 
122  thinningTool = acc.getPrimaryAndMerge(TCAL1MuonTPThinningToolCfg(flags, streamName=streamName))
123  kwargs.setdefault('ThinningTools', [thinningTool])
124 
125  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
126  acc.addEventAlgo(DerivationKernel(name, **kwargs))
127 
128  return acc
129 
130 
131 def TCAL1Cfg(flags):
132  """Configure the TCAL1 derivation framework"""
133 
134  TCAL1Prefix = 'TCAL1_'
135  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
136  TCAL1TriggerListsHelper = TriggerListsHelper(flags)
137 
138  acc = ComponentAccumulator()
139  acc.merge(TCAL1KernelCfg(flags, name="TCAL1Kernel", StreamName="StreamDAOD_TCAL1", Prefix=TCAL1Prefix, TriggerListsHelper=TCAL1TriggerListsHelper))
140 
141  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
142  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
143  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
144  TCAL1SlimmingHelper = SlimmingHelper("TCAL1SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
145  TCAL1SlimmingHelper.SmartCollections = ['EventInfo', 'Muons', 'AntiKt4EMTopoJets', 'AntiKt4EMPFlowJets', 'MET_Baseline_AntiKt4EMTopo', 'MET_Baseline_AntiKt4EMPFlow', 'PrimaryVertices', 'BTagging_AntiKt4EMPFlow']
146 
147  TCAL1ExtraVariables = f'Muons.{TCAL1Prefix}etrkcone40'
148 
149  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_'.join(['', 'energy', 'et', 'eta', 'phi', 'gain', 'bad', 'time', 'quality'])
150  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_'.join(['', 'sampling', 'sinTh', 'cosTh', 'cotTh', 'x', 'y', 'z'])
151 
152  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_'.join(['', 'side', 'section', 'module', 'tower', 'sample'])
153  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_'.join(['', 'r', 'dx', 'dy', 'dz', 'dr', 'dphi', 'deta', 'volume'])
154 
155  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_muon_'.join(['', 'dx', 'dedx', 'x', 'y', 'z', 'eta', 'phi'])
156  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_to_muon_'.join(['', 'dx', 'dy', 'dz', 'deta', 'dphi'])
157 
158  for pmt in ['pmt1', 'pmt2']:
159  TCAL1ExtraVariables += f'.{TCAL1Prefix}cells_{pmt}_'.join(['', 'ros', 'drawer', 'channel', 'energy', 'time', 'quality', 'qbit', 'bad', 'gain'])
160 
161  TCAL1SlimmingHelper.ExtraVariables = [TCAL1ExtraVariables]
162 
163 
164  # Trigger matching
165  # Run 2
166  if flags.Trigger.EDMVersion == 2:
167  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
168  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TCAL1SlimmingHelper,
169  OutputContainerPrefix = "TrigMatch_",
170  TriggerList = TCAL1TriggerListsHelper.Run2TriggerNamesTau)
171  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = TCAL1SlimmingHelper,
172  OutputContainerPrefix = "TrigMatch_",
173  TriggerList = TCAL1TriggerListsHelper.Run2TriggerNamesNoTau)
174  # Run 3
175  if flags.Trigger.EDMVersion == 3:
176  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
178 
179  TCAL1ItemList = TCAL1SlimmingHelper.GetItemList()
180  acc.merge(OutputStreamCfg(flags, "DAOD_TCAL1", ItemList=TCAL1ItemList, AcceptAlgs=["TCAL1Kernel"]))
181  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_TCAL1", AcceptAlgs=["TCAL1Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
182 
183  return acc
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:97
SystemOfUnits
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:67
TCAL1.TCAL1TileCellsMuonDecoratorCfg
def TCAL1TileCellsMuonDecoratorCfg(flags, **kwargs)
Definition: TCAL1.py:26
TrackTools
Definition: D3PDMaker/TileD3PDMaker/src/TrackTools.h:19
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:30
TCAL1.TCAL1MuonTPThinningToolCfg
def TCAL1MuonTPThinningToolCfg(flags, streamName, **kwargs)
Definition: TCAL1.py:85
TCAL1.TCAL1StringSkimmingToolCfg
def TCAL1StringSkimmingToolCfg(flags, **kwargs)
Definition: TCAL1.py:58
python.InDetToolsConfig.MuonTrackParticleThinningCfg
def MuonTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:494
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
TCAL1.TCAL1Cfg
def TCAL1Cfg(flags)
Definition: TCAL1.py:131
python.TriggerInterface.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TriggerInterface.py:14
python.PhysCommonConfig.PhysCommonAugmentationsCfg
def PhysCommonAugmentationsCfg(flags, **kwargs)
Definition: PhysCommonConfig.py:14
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:216
SlimmingHelper
Definition: SlimmingHelper.py:1
TCAL1.TCAL1KernelCfg
def TCAL1KernelCfg(flags, name='TCAL1Kernel', **kwargs)
Definition: TCAL1.py:103
python.TileCablingSvcConfig.TileCablingSvcCfg
def TileCablingSvcCfg(flags)
Definition: TileCablingSvcConfig.py:11
TrackToCaloConfig.ParticleCaloExtensionToolCfg
def ParticleCaloExtensionToolCfg(flags, name='ParticleCaloExtensionTool', **kwargs)
Definition: TrackToCaloConfig.py:10
TCAL1.TCAL1TrackToolsCfg
def TCAL1TrackToolsCfg(flags, **kwargs)
Definition: TCAL1.py:10
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7