ATLAS Offline Software
FilterHit_Skeleton.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 import sys
4 from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
5 from PyJobTransforms.TransformUtils import processPreExec, processPreInclude, processPostExec, processPostInclude
6 
7 # force no legacy job properties
8 from AthenaCommon import JobProperties
9 JobProperties.jobPropertiesDisallowed = True
10 
11 
13  #--------------------------------------------------------------
14  # Specify collections for output HIT files, as not all are required.
15  #--------------------------------------------------------------
16  ItemList = ["McEventCollection#TruthEvent", # mc truth (hepmc)
17  "TrackRecordCollection#MuonEntryLayer", # others not used in pileup
18  "xAOD::JetContainer#AntiKt4TruthJets",
19  "xAOD::AuxContainerBase!#AntiKt4TruthJetsAux.-constituentLinks.-constituentWeights",
20  "xAOD::JetContainer#AntiKt6TruthJets",
21  "xAOD::AuxContainerBase!#AntiKt6TruthJetsAux.-constituentLinks.-constituentWeights",
22  "xAOD::TruthParticleContainer#TruthPileupParticles",
23  "xAOD::TruthParticleAuxContainer#TruthPileupParticlesAux."]
24 
25  if "xAOD::EventInfo#EventInfo" in flags.Input.TypedCollections:
26  ItemList += ["xAOD::EventInfo#EventInfo",
27  "xAOD::EventAuxInfo#EventInfoAux.",
28  "xAOD::EventInfoContainer#*",
29  "xAOD::EventInfoAuxContainer#*"]
30  else:
31  ItemList += ["EventInfo#*"]
32 
33  #PLR
34  if flags.Detector.EnablePLR:
35  ItemList += ["SiHitCollection#PLR_Hits"]
36  #BCM
37  if flags.Detector.EnableBCM:
38  ItemList += ["SiHitCollection#BCMHits"]
39  #Pixels
40  if flags.Detector.EnablePixel:
41  ItemList += ["SiHitCollection#PixelHits"]
42  #SCT
43  if flags.Detector.EnableSCT:
44  ItemList += ["SiHitCollection#SCT_Hits"]
45  #TRT
46  if flags.Detector.EnableTRT:
47  ItemList += ["TRTUncompressedHitCollection#TRTUncompressedHits"]
48  #ITk Pixels
49  if flags.Detector.EnableITkPixel:
50  ItemList += ["SiHitCollection#ITkPixelHits"]
51  #ITk Strip
52  if flags.Detector.EnableITkStrip:
53  ItemList += ["SiHitCollection#ITkStripHits"]
54  #LAr
55  if flags.Detector.EnableLAr:
56  ItemList += ["LArHitContainer#LArHitEMB"]
57  ItemList += ["LArHitContainer#LArHitEMEC"]
58  ItemList += ["LArHitContainer#LArHitHEC"]
59  ItemList += ["LArHitContainer#LArHitFCAL"]
60  #Tile
61  if flags.Detector.EnableTile:
62  ItemList += ["TileHitVector#TileHitVec"]
63  # MBTS
64  if flags.Detector.EnableMBTS:
65  ItemList += ["TileHitVector#MBTSHits"]
66  # HGTD
67  if flags.Detector.EnableHGTD:
68  ItemList += ["SiHitCollection#HGTD_Hits"]
69 
70  if flags.Detector.GeometryMuon:
71  if flags.Muon.usePhaseIIGeoSetup:
72  from MuonSensitiveDetectorsR4.SensitiveDetectorsCfg import OutputSimContainersCfg
73  ItemList += OutputSimContainersCfg(flags)
74  else:
75  from MuonG4SD.MuonG4SDConfig import OutputSimContainersCfg
76  ItemList += OutputSimContainersCfg(flags)
77  return ItemList
78 
79 
80 def fromRunArgs(runArgs):
81  from AthenaCommon.Logging import logging
82  log = logging.getLogger('FilterHit_tf')
83  log.info('****************** STARTING HIT FILTERING *****************')
84 
85  log.info('**** Transformation run arguments')
86  log.info(str(runArgs))
87 
88  log.info('**** Setting-up configuration flags')
89  from AthenaConfiguration.AllConfigFlags import initConfigFlags
90  flags = initConfigFlags()
91 
92  commonRunArgsToFlags(runArgs, flags)
93 
94  if hasattr(runArgs, 'inputHITSFile'):
95  flags.Input.Files = runArgs.inputHITSFile
96  else:
97  raise RuntimeError('No input HITS file defined')
98 
99  # Generate detector list and setup detector flags
100  from SimuJobTransforms.SimulationHelpers import getDetectorsFromRunArgs
101  detectors = getDetectorsFromRunArgs(flags, runArgs)
102  from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
103  setupDetectorFlags(flags, detectors, use_metadata=True, toggle_geometry=True, keep_beampipe=True)
104 
105  if hasattr(runArgs, 'outputHITS_FILTFile'):
106  if runArgs.outputHITS_FILTFile == 'None':
107  flags.Output.HITSFileName = ''
108  # TODO decide if we need a specific HITS_FILTFileName flag
109  else:
110  flags.Output.HITSFileName = runArgs.outputHITS_FILTFile
111  else:
112  raise RuntimeError('No outputHITS_FILTFile defined')
113 
114  # force TreeAutoFlush=1 as events will be accessed randomly
115  flags.Output.TreeAutoFlush = {'HITS': 1}
116 
117  # Pre-include
118  processPreInclude(runArgs, flags)
119 
120  # Pre-exec
121  processPreExec(runArgs, flags)
122 
123  # To respect --athenaopts
124  flags.fillFromArgs()
125 
126  # Lock flags
127  flags.lock()
128 
129  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
130  cfg = MainServicesCfg(flags)
131 
132  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
133  cfg.merge(PoolReadCfg(flags))
134 
135  # Ensure proper metadata propagation
136  from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
137  cfg.merge(IOVDbSvcCfg(flags))
138 
139  # Identifiers
140  from DetDescrCnvSvc.DetDescrCnvSvcConfig import DetDescrCnvSvcCfg
141  cfg.merge(DetDescrCnvSvcCfg(flags))
142 
143  # add LArHitFilter + AddressRemappingSvc
144  if flags.Detector.EnableLAr:
145  from LArHitAlgs.LArHitAlgsConfig import LArHitFilterCfg
146  cfg.merge(LArHitFilterCfg(flags)) # TODO add output configuration here?
147 
148  if hasattr(runArgs, 'TruthReductionScheme'):
149  if runArgs.TruthReductionScheme != 'SingleGenParticle':
150  log.warning(f'Unknown TruthReductionScheme ({runArgs.TruthReductionScheme}). Currently just a dummy value, but please check.')
151 
152  # add McEventCollectionFtiler + AddressRemappingSvc
153  from McEventCollectionFilter.McEventCollectionFilterConfig import McEventCollectionFilterCfg
154  cfg.merge(McEventCollectionFilterCfg(flags))
155  # Check for Truth Containers
156  for entry in flags.Input.Collections:
157  if 'AntiKt4TruthJets' == entry:
158  from McEventCollectionFilter.McEventCollectionFilterConfig import DecoratePileupAntiKt4TruthJetsCfg
159  cfg.merge(DecoratePileupAntiKt4TruthJetsCfg(flags))
160  if 'AntiKt6TruthJets' == entry:
161  from McEventCollectionFilter.McEventCollectionFilterConfig import DecoratePileupAntiKt6TruthJetsCfg
162  cfg.merge(DecoratePileupAntiKt6TruthJetsCfg(flags))
163  if 'TruthPileupParticles' == entry:
164  from McEventCollectionFilter.McEventCollectionFilterConfig import DecorateTruthPileupParticlesCfg
165  cfg.merge(DecorateTruthPileupParticlesCfg(flags))
166 
167  # ID
168  if flags.Detector.EnableBCM:
169  from McEventCollectionFilter.McEventCollectionFilterConfig import BCM_HitsTruthRelinkCfg
170  cfg.merge(BCM_HitsTruthRelinkCfg(flags))
171  if flags.Detector.EnablePixel:
172  from McEventCollectionFilter.McEventCollectionFilterConfig import PixelHitsTruthRelinkCfg
173  cfg.merge(PixelHitsTruthRelinkCfg(flags))
174  if flags.Detector.EnableSCT:
175  from McEventCollectionFilter.McEventCollectionFilterConfig import SCT_HitsTruthRelinkCfg
176  cfg.merge(SCT_HitsTruthRelinkCfg(flags))
177  if flags.Detector.EnableTRT:
178  from McEventCollectionFilter.McEventCollectionFilterConfig import TRT_HitsTruthRelinkCfg
179  cfg.merge(TRT_HitsTruthRelinkCfg(flags))
180  # ITk
181  if flags.Detector.EnableITkPixel:
182  from McEventCollectionFilter.McEventCollectionFilterConfig import ITkPixelHitsTruthRelinkCfg
183  cfg.merge(ITkPixelHitsTruthRelinkCfg(flags))
184  if flags.Detector.EnableITkPixel:
185  from McEventCollectionFilter.McEventCollectionFilterConfig import ITkPixelHitsTruthRelinkCfg
186  cfg.merge(ITkPixelHitsTruthRelinkCfg(flags))
187  if flags.Detector.EnablePLR:
188  from McEventCollectionFilter.McEventCollectionFilterConfig import PLR_HitsTruthRelinkCfg
189  cfg.merge(PLR_HitsTruthRelinkCfg(flags))
190  # HGTD
191  if flags.Detector.EnableHGTD:
192  from McEventCollectionFilter.McEventCollectionFilterConfig import HGTD_HitsTruthRelinkCfg
193  cfg.merge(HGTD_HitsTruthRelinkCfg(flags))
194  # Muons
195  if flags.Detector.EnableCSC:
196  from McEventCollectionFilter.McEventCollectionFilterConfig import CSC_HitsTruthRelinkCfg
197  cfg.merge(CSC_HitsTruthRelinkCfg(flags))
198  if flags.Detector.EnableMDT:
199  from McEventCollectionFilter.McEventCollectionFilterConfig import MDT_HitsTruthRelinkCfg
200  cfg.merge(MDT_HitsTruthRelinkCfg(flags))
201  if flags.Detector.EnableMM:
202  from McEventCollectionFilter.McEventCollectionFilterConfig import MM_HitsTruthRelinkCfg
203  cfg.merge(MM_HitsTruthRelinkCfg(flags))
204  if flags.Detector.EnableRPC:
205  from McEventCollectionFilter.McEventCollectionFilterConfig import RPC_HitsTruthRelinkCfg
206  cfg.merge(RPC_HitsTruthRelinkCfg(flags))
207  if flags.Detector.EnableTGC:
208  from McEventCollectionFilter.McEventCollectionFilterConfig import TGC_HitsTruthRelinkCfg
209  cfg.merge(TGC_HitsTruthRelinkCfg(flags))
210  if flags.Detector.EnablesTGC:
211  from McEventCollectionFilter.McEventCollectionFilterConfig import sTGC_HitsTruthRelinkCfg
212  cfg.merge(sTGC_HitsTruthRelinkCfg(flags))
213 
214  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
215  cfg.merge( OutputStreamCfg(flags, "HITS", ItemList=getStreamHITS_ItemList(flags), disableEventTag="xAOD::EventInfo#EventInfo" not in flags.Input.TypedCollections) )
216 
217  # Add in-file MetaData
218  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
219  cfg.merge(SetupMetaDataForStreamCfg(flags, "HITS"))
220 
221  # Post-include
222  processPostInclude(runArgs, flags, cfg)
223 
224  # Post-exec
225  processPostExec(runArgs, flags, cfg)
226 
227  # Write AMI tag into in-file metadata
228  from PyUtils.AMITagHelperConfig import AMITagCfg
229  cfg.merge(AMITagCfg(flags, runArgs))
230 
231  import time
232  tic = time.time()
233  # Run the final accumulator
234  sc = cfg.run()
235  log.info("Ran FilterHit_tf in " + str(time.time()-tic) + " seconds")
236 
237  sys.exit(not sc.isSuccess())
McEventCollectionFilterConfig.DecorateTruthPileupParticlesCfg
def DecorateTruthPileupParticlesCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:196
McEventCollectionFilterConfig.DecoratePileupAntiKt6TruthJetsCfg
def DecoratePileupAntiKt6TruthJetsCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:216
McEventCollectionFilterConfig.MDT_HitsTruthRelinkCfg
def MDT_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:136
python.TransformUtils.processPreExec
def processPreExec(runArgs, flags)
Definition: Tools/PyJobTransforms/python/TransformUtils.py:41
python.TransformUtils.processPostExec
def processPostExec(runArgs, flags, cfg)
Definition: Tools/PyJobTransforms/python/TransformUtils.py:50
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
McEventCollectionFilterConfig.RPC_HitsTruthRelinkCfg
def RPC_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:160
McEventCollectionFilterConfig.CSC_HitsTruthRelinkCfg
def CSC_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:124
McEventCollectionFilterConfig.HGTD_HitsTruthRelinkCfg
def HGTD_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:112
McEventCollectionFilterConfig.PLR_HitsTruthRelinkCfg
def PLR_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:100
McEventCollectionFilterConfig.SCT_HitsTruthRelinkCfg
def SCT_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:49
python.TransformUtils.processPostInclude
def processPostInclude(runArgs, flags, cfg)
Definition: Tools/PyJobTransforms/python/TransformUtils.py:69
python.TransformUtils.processPreInclude
def processPreInclude(runArgs, flags)
Definition: Tools/PyJobTransforms/python/TransformUtils.py:62
python.DetDescrCnvSvcConfig.DetDescrCnvSvcCfg
def DetDescrCnvSvcCfg(flags, **kwargs)
Definition: DetDescrCnvSvcConfig.py:6
McEventCollectionFilterConfig.ITkPixelHitsTruthRelinkCfg
def ITkPixelHitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:76
LArHitAlgsConfig.LArHitFilterCfg
def LArHitFilterCfg(flags, **kwargs)
Definition: LArHitAlgsConfig.py:11
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
McEventCollectionFilterConfig.BCM_HitsTruthRelinkCfg
def BCM_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:25
python.CommonRunArgsToFlags.commonRunArgsToFlags
def commonRunArgsToFlags(runArgs, configFlags)
Definition: CommonRunArgsToFlags.py:12
python.FilterHit_Skeleton.fromRunArgs
def fromRunArgs(runArgs)
Definition: FilterHit_Skeleton.py:80
python.IOVDbSvcConfig.IOVDbSvcCfg
def IOVDbSvcCfg(flags, **kwargs)
Definition: IOVDbSvcConfig.py:19
McEventCollectionFilterConfig.sTGC_HitsTruthRelinkCfg
def sTGC_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:184
McEventCollectionFilterConfig.McEventCollectionFilterCfg
def McEventCollectionFilterCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:9
python.DetectorConfigFlags.setupDetectorFlags
def setupDetectorFlags(flags, custom_list=None, use_metadata=False, toggle_geometry=False, validate_only=False, keep_beampipe=False)
Definition: DetectorConfigFlags.py:286
McEventCollectionFilterConfig.PixelHitsTruthRelinkCfg
def PixelHitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:37
MuonG4SDConfig.OutputSimContainersCfg
def OutputSimContainersCfg(flags)
Definition: MuonG4SDConfig.py:64
McEventCollectionFilterConfig.DecoratePileupAntiKt4TruthJetsCfg
def DecoratePileupAntiKt4TruthJetsCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:206
python.AMITagHelperConfig.AMITagCfg
def AMITagCfg(flags, runArgs=None, fixBroken=False)
Definition: AMITagHelperConfig.py:77
McEventCollectionFilterConfig.MM_HitsTruthRelinkCfg
def MM_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:148
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
McEventCollectionFilterConfig.TRT_HitsTruthRelinkCfg
def TRT_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:61
str
Definition: BTagTrackIpAccessor.cxx:11
McEventCollectionFilterConfig.TGC_HitsTruthRelinkCfg
def TGC_HitsTruthRelinkCfg(flags, **kwargs)
Definition: McEventCollectionFilterConfig.py:172
python.SimulationHelpers.getDetectorsFromRunArgs
def getDetectorsFromRunArgs(flags, runArgs)
Definition: SimulationHelpers.py:5
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:216
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
python.FilterHit_Skeleton.getStreamHITS_ItemList
def getStreamHITS_ItemList(flags)
Definition: FilterHit_Skeleton.py:12