16 if (nPiOver16Min >= 32
or nPiOver16Min < 0):
17 print(
"You are asking for nPiOver16 = ",nPiOver16Min,
" but we only have 32 phi bins! Returning -1")
19 if (minAbsEta > 3.8
or minAbsEta < 0):
20 print(
"You are asking for minAbsEta = ",minAbsEta,
" but we only have 20 abs eta bins! Returning -1")
22 if not (isPositiveEta == 0
or isPositiveEta == 1):
23 print(
"You are asking for isPositiveEta = ",isPositiveEta,
" but this should only be 0 or 1! Returning -1")
26 etanum = round(minAbsEta / binSizeEta)
27 mineta = binSizeEta*etanum
28 maxeta = binSizeEta*(etanum+1)
29 if (
not isPositiveEta):
30 mineta = -binSizeEta*(etanum+1)
31 maxeta = -binSizeEta*etanum
33 region = region | ((isPositiveEta & 0x1) << 5)
34 region = region | (etanum << 6)
36 print(
"I am returning the region number for minphi =",nPiOver16Min,
"*pi/16, which is equal to",binSizePhi*nPiOver16Min)
37 print(
" and maxphi =",nPiOver16Min+1,
"*pi/16, which is equal to",binSizePhi*(nPiOver16Min+1))
38 print(
" and mineta =",mineta,
"and max eta =", maxeta)
44 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
45 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
46 return flags.Trigger.FPGATrackSim.baseName
47 elif (flags.Trigger.FPGATrackSim.region == 0):
48 return 'eta0103phi0305'
49 elif (flags.Trigger.FPGATrackSim.region == 1):
50 return 'eta0709phi0305'
51 elif (flags.Trigger.FPGATrackSim.region == 2):
52 return 'eta1214phi0305'
53 elif (flags.Trigger.FPGATrackSim.region == 3):
54 return 'eta2022phi0305'
55 elif (flags.Trigger.FPGATrackSim.region == 4):
56 return 'eta3234phi0305'
57 elif (flags.Trigger.FPGATrackSim.region == 5):
58 return 'eta0103phi1113'
59 elif (flags.Trigger.FPGATrackSim.region == 6):
60 return 'eta0103phi1921'
61 elif (flags.Trigger.FPGATrackSim.region == 7):
62 return 'eta0103phi3436'
66 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return 'default'
68 return "region"+str(flags.Trigger.FPGATrackSim.region)
71 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
72 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
74 elif (flags.Trigger.FPGATrackSim.region == 0):
76 elif (flags.Trigger.FPGATrackSim.region == 1):
78 elif (flags.Trigger.FPGATrackSim.region == 2):
80 elif (flags.Trigger.FPGATrackSim.region == 3):
82 elif (flags.Trigger.FPGATrackSim.region == 4):
84 elif (flags.Trigger.FPGATrackSim.region == 5):
86 elif (flags.Trigger.FPGATrackSim.region == 6):
88 elif (flags.Trigger.FPGATrackSim.region == 7):
94 phiBin=flags.Trigger.FPGATrackSim.region & 0x1f
95 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [binSize*2,binSize*3]
97 return [binSize*phiBin,binSize*(phiBin+1)]
100 if (flags.Trigger.FPGATrackSim.oldRegionDefs):
101 if (
not (flags.Trigger.FPGATrackSim.baseName ==
'')):
103 elif (flags.Trigger.FPGATrackSim.region == 0):
105 elif (flags.Trigger.FPGATrackSim.region == 1):
107 elif (flags.Trigger.FPGATrackSim.region == 2):
109 elif (flags.Trigger.FPGATrackSim.region == 3):
111 elif (flags.Trigger.FPGATrackSim.region == 4):
113 elif (flags.Trigger.FPGATrackSim.region == 5):
115 elif (flags.Trigger.FPGATrackSim.region == 6):
117 elif (flags.Trigger.FPGATrackSim.region == 7):
122 if (flags.Trigger.FPGATrackSim.region >= 1280
or flags.Trigger.FPGATrackSim.region < 0):
return [0.2,0.4]
125 side = (flags.Trigger.FPGATrackSim.region >> 5) & 0x1
126 etaBin = (flags.Trigger.FPGATrackSim.region >> 6) & 0x1f
127 if (side):
return [binSize*etaBin,binSize*(etaBin+1)]
128 else:
return [-binSize*(etaBin+1),-binSize*etaBin]
136 result=ComponentAccumulator()
137 FPGATrackSimRawLogic = CompFactory.FPGATrackSimRawToLogicalHitsTool(
nameWithRegionSuffix(flags,name))
138 FPGATrackSimRawLogic.SaveOptional = 2
139 if (flags.Trigger.FPGATrackSim.ActiveConfig.sampleType ==
'skipTruth'):
140 FPGATrackSimRawLogic.SaveOptional = 1
141 FPGATrackSimRawLogic.TowersToMap = [0]
144 result.addPublicTool(FPGATrackSimRawLogic,primary=
True)
164 result=ComponentAccumulator()
166 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutputDataPrep")
167 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
168 FPGATrackSimWriteOutput.OutputTreeName =
"FPGATrackSimDataPrepTree"
169 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
170 writeThis=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and ((flags.Trigger.FPGATrackSim.regionToWriteDPTree
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList))
or (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0))
173 FPGATrackSimWriteOutput.EventLimit = 0
175 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
176 if flags.Trigger.FPGATrackSim.writeRegion>=0:
177 FPGATrackSimWriteOutput.RequireActivation=
True
180 FPGATrackSimWriteOutput.RWstatus =
"HEADER"
181 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
182 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
189 result=ComponentAccumulator()
190 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
191 result.merge(ITkStripReadoutGeometryCfg(flags))
193 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters_1st")
194 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
195 kwargs.setdefault(
"FPGATrackSimHitInRoadsKey",
"FPGAHitsInRoads")
196 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads")
197 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks")
198 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClustersFromFPGACluster")
199 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClustersFromFPGACluster")
200 kwargs.setdefault(
"xAODStripSpacePointFromFPGAKey",
"xAODStripSpacePoints%sFromFPGA" %(stage))
201 kwargs.setdefault(
"xAODPixelSpacePointFromFPGAKey",
"xAODPixelSpacePoints%sFromFPGA" %(stage))
202 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
203 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
204 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
205 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
206 kwargs.setdefault(
"doHits",
False)
207 kwargs.setdefault(
"doClusters",
True)
208 kwargs.setdefault(
"doActsTrk",
False)
209 kwargs.setdefault(
"useRoads",
False)
213 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
214 ConvertionAlgorithm.ClusterConverter.doLorentzShift=
False
216 result.addEventAlgo(ConvertionAlgorithm)
220 result=ComponentAccumulator()
221 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
222 FPGAClusterConverter.doLorentzShift=
True
224 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
225 FPGAClusterConverter.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
227 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
228 FPGAClusterConverter.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
230 result.setPrivateTools(FPGAClusterConverter)
244 result = ComponentAccumulator()
245 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
246 from OutputStreamAthenaPool.OutputStreamConfig
import outputStreamName
247 from AthenaConfiguration.Enums
import MetadataCategory
249 result.merge( SetupMetaDataForStreamCfg( flags,
"AOD",
251 MetadataCategory.ByteStreamMetaData,
252 MetadataCategory.LumiBlockMetaData,
253 MetadataCategory.TruthMetaData,
254 MetadataCategory.IOVMetaData,],)
256 log.info(
"AOD ItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).ItemList)
257 log.info(
"AOD MetadataItemList: %s", result.getEventAlgo(outputStreamName(
"AOD")).MetadataItemList)
258 log.info(
"---------- Configured AOD writing")
260 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
261 toAOD = [f
"xAOD::TrackParticleContainer#{finalTrackParticles}",f
"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
262 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
263 toAOD += [
"xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster",
"xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
264 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster",
"xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
265 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
266 toAOD += [
'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
267 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
268 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
269 toAOD += [f
"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
270 f
"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
272 result.merge(addToAOD(flags, toAOD))
279 result=ComponentAccumulator()
281 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
282 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
283 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
284 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
285 eventSelector.withPU =
False
286 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
289 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
290 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
291 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
292 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
293 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
294 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
296 result.addService(eventSelector, create=
True, primary=
True)
308 result=ComponentAccumulator()
310 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
311 mappingSvc.mappingType =
"FILE"
312 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
313 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
314 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".pmap"
315 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
316 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
317 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii_2nd.txt"
318 mappingSvc.loadRadii = (
not flags.Trigger.FPGATrackSim.ActiveConfig.GNN)
and flags.Trigger.FPGATrackSim.loadRadii
319 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
320 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
322 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
323 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
324 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
325 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
326 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
327 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
328 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
329 mappingSvc.layerOverride = []
330 result.addService(mappingSvc, create=
True, primary=
True)
348 result=ComponentAccumulator()
349 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
350 HitFilteringTool.barrelStubDphiCut = 3.0
351 HitFilteringTool.doRandomRemoval =
False
352 HitFilteringTool.doStubs =
False
353 HitFilteringTool.endcapStubDphiCut = 1.5
354 HitFilteringTool.pixelClusRmFrac = 0
355 HitFilteringTool.pixelHitRmFrac = 0
356 HitFilteringTool.stripClusRmFrac = 0
357 HitFilteringTool.stripHitRmFrac = 0
358 HitFilteringTool.useNstrips =
False
359 result.addPublicTool(HitFilteringTool, primary=
True)
363 result=ComponentAccumulator()
364 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
365 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
366 LorentzAngleTool.shiftGlobalPosition=
True
368 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
369 LorentzAngleTool.LorentzAngleToolPixel = result.popToolsAndMerge(ITkPixelLorentzAngleToolCfg(flags))
371 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
372 LorentzAngleTool.LorentzAngleToolStrip = result.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags))
374 result.addPublicTool(LorentzAngleTool, primary=
True)
381 result=ComponentAccumulator()
384 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
385 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
386 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
387 writePreClusterBranch=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0)
388 theFPGATrackSimDataPrepAlg.writePreClusterBranch=writePreClusterBranch
390 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
391 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
392 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
393 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
394 theFPGATrackSimDataPrepAlg.writeRegion = flags.Trigger.FPGATrackSim.writeRegion
397 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
398 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
399 for region
in convertRegionsExpressionToArray(flags.Trigger.FPGATrackSim.regionList):
400 flagsForEachRegion = inputFlags.clone()
401 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
402 flagsForEachRegion.Trigger.FPGATrackSim.region = region
403 flagsForEachRegion.lock()
405 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
408 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
410 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
412 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
413 theFPGATrackSimDataPrepAlg.SGInputTool =
""
415 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
416 result.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags))
417 theFPGATrackSimDataPrepAlg.InputTool =
""
418 theFPGATrackSimDataPrepAlg.InputTool2 =
""
419 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
420 theFPGATrackSimDataPrepAlg.SGInputTool = result.getPrimaryAndMerge(FPGATrackSimSGInputToolCfg(flags))
421 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
422 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
426 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
427 if not flags.Trigger.FPGATrackSim.wrapperFileName:
429 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
431 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
437 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimDataPrepMonitoringCfg
438 theFPGATrackSimDataPrepAlg.MonTool = result.getPrimaryAndMerge(FPGATrackSimDataPrepMonitoringCfg(flags))
440 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
449 flags = flagsIn.clone()
452 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
453 actsWorkflowFlags(flags)
455 flags.Tracking.ActiveConfig.extension=FinalTracks
458 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass")
459 prefix=flags.Tracking.ActiveConfig.extension
461 result = ComponentAccumulator()
465 from ActsConfig.ActsUtilities
import extractChildKwargs
470 kwargs.setdefault(
'PixelSeedingAlg.InputSpacePoints',[
'ITkPixelSpacePoints'])
471 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints',[
'ITkStripSpacePoints'])
474 kwargs.setdefault(
'TrackFindingAlg.UncalibratedMeasurementContainerKeys',[
'ITkPixelClusters',
'ITkStripClusters'])
477 kwargs.setdefault(
'PixelClusterToTruthAssociationAlg.Measurements',
'ITkPixelClusters')
478 kwargs.setdefault(
'StripClusterToTruthAssociationAlg.Measurements',
'ITkStripClusters')
482 from ActsConfig.ActsSeedingConfig
import ActsSeedingCfg
483 result.merge(ActsSeedingCfg(flags, **kwargs))
486 from ActsConfig.ActsTrackFindingConfig
import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
487 result.merge(ActsTrackFindingCfg(flags,**extractChildKwargs(prefix=
'TrackFindingAlg.', **kwargs)))
490 if flags.Acts.doAmbiguityResolution:
491 result.merge(ActsAmbiguityResolutionCfg(flags,**extractChildKwargs(prefix=
'AmbiguityResolutionAlg.',**kwargs)))
494 acts_tracks=f
"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution
else f
"{prefix}ResolvedTracks"
498 if(flags.ITk.doTruth):
499 from ActsConfig.ActsTruthConfig
import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
500 result.merge(ActsPixelClusterToTruthAssociationAlgCfg(flags,
501 name=f
"{prefix}PixelClusterToTruthAssociationAlg",
502 InputTruthParticleLinks=
"xAODTruthLinks",
503 AssociationMapOut=f
"{prefix}ITkPixelClustersToTruthParticles",
504 Measurements=kwargs.get(
'PixelClusterToTruthAssociationAlg.Measurements')))
506 result.merge(ActsStripClusterToTruthAssociationAlgCfg(flags,
507 name=f
"{prefix}StripClusterToTruthAssociationAlg",
508 InputTruthParticleLinks=
"xAODTruthLinks",
509 AssociationMapOut=f
"{prefix}ITkStripClustersToTruthParticles",
510 Measurements=kwargs.get(
'StripClusterToTruthAssociationAlg.Measurements')))
512 result.merge(ActsTruthParticleHitCountAlgCfg(flags,
513 name=f
"{prefix}TruthParticleHitCountAlg",
514 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
515 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
516 TruthParticleHitCountsOut=f
"{prefix}TruthParticleHitCounts"))
518 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
519 result.merge(ActsTrackToTruthAssociationAlgCfg(flags,
520 name=f
"{prefix}TrackToTruthAssociationAlg",
521 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
522 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
523 ACTSTracksLocation=acts_tracks,
524 AssociationMapOut=f
"{acts_tracks}ToTruthParticleAssociation"))
526 result.merge(ActsTrackFindingValidationAlgCfg(flags,
527 name=f
"{prefix}TrackFindingValidationAlg",
528 TrackToTruthAssociationMap=f
"{acts_tracks}ToTruthParticleAssociation",
529 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts"
533 from ActsConfig.ActsTrackFindingConfig
import ActsTrackToTrackParticleCnvAlgCfg
534 result.merge(ActsTrackToTrackParticleCnvAlgCfg(flags, name=f
"{prefix}TrackToTrackParticleCnvAlg",
535 ACTSTracksLocation=[acts_tracks],
536 TrackParticlesOutKey=f
"{prefix}TrackParticles"))
537 if(flags.ITk.doTruth):
538 from ActsConfig.ActsTruthConfig
import ActsTrackParticleTruthDecorationAlgCfg
539 result.merge(ActsTrackParticleTruthDecorationAlgCfg(flags, name=f
"{prefix}TrackParticleTruthDecorationAlg",
540 TrackToTruthAssociationMaps=[f
"{acts_tracks}ToTruthParticleAssociation"],
541 TrackParticleContainerName=f
"{FinalTracks}TrackParticles",
542 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
543 ComputeTrackRecoEfficiency=
True))
546 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
547 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkActsPrepDataToxAODCfg
548 result.merge( ITkActsPrepDataToxAODCfg( flags,
549 PixelMeasurementContainer =
"ITkPixelMeasurements_offl",
550 StripMeasurementContainer =
"ITkStripMeasurements_offl" ) )
563 acc=ComponentAccumulator()
564 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
567 'FPGATrackSimSPKey':
'FPGAClusters_1st',
568 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
569 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
570 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
573 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
576 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig
import FPGATrackSimMergeOutputsAlgCfg
577 acc.merge(FPGATrackSimMergeOutputsAlgCfg(flags))
579 'FPGATrackSimHitKey':
'FPGAHits',
580 'xAODPixelClusterFromFPGAHitKey':
'FPGAPixelClusters',
581 'xAODStripClusterFromFPGAHitKey':
'FPGAStripClusters',
582 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
587 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
590 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
591 ClusterSorting = FPGAClusterSortingAlgCfg(flags,**{
'xAODPixelClusterContainer':
'FPGAPixelClusters',
592 'xAODStripClusterContainer':
'FPGAStripClusters',
593 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
594 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
596 acc.merge(ClusterSorting)
598 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
599 acc.merge(ITkPixelDetectorElementStatusAlgCfg(flags))
601 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
602 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
604 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
607 pixel_cluster_shortlist = [
'-pixelClusterLink']
608 strip_cluster_shortlist = [
'-sctClusterLink']
610 pixel_cluster_variables =
'.'.join(pixel_cluster_shortlist)
611 strip_cluster_variables =
'.'.join(strip_cluster_shortlist)
613 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
614 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
615 'xAOD::StripClusterContainer#ITkStripClusters',
616 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
617 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
618 acc.merge(addToAOD(flags, toAOD))
621 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
622 acc.merge(FPGATrackSimReportingCfg(flags,
623 perEventReports =
False,
624 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
625 'xAODStripClusterContainers' : [
'ITkStripClusters'],
626 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
627 'isDataPrep':
True} ))
652 acc = ComponentAccumulator()
653 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
656 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
657 acc.merge(PoolReadCfg(flags))
660 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
661 acc.merge(EventInfoCnvAlgCfg(flags))
664 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
665 acc.merge(GEN_AOD2xAODCfg(flags))
667 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
668 acc.merge(addTruthPileupJetsToOutputCfg(flags))
670 if flags.Detector.EnableCalo:
671 from CaloRec.CaloRecoConfig
import CaloRecoCfg
672 acc.merge(CaloRecoCfg(flags))
674 if not flags.Reco.EnableTrackOverlay:
676 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
677 acc.merge(InDetTrackRecoCfg(flags))
678 from InDetConfig.InDetPrepRawDataFormationConfig
import ITkXAODToInDetClusterConversionCfg
679 acc.merge(ITkXAODToInDetClusterConversionCfg(flags))
680 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
681 acc.merge( TruthParticleIndexDecoratorAlgCfg(flags) )
687 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
688 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
690 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
692 flags = initConfigFlags()
693 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
694 OnlyTrackingPreInclude(flags)
701 flags.Concurrency.NumThreads=1
702 flags.Concurrency.NumConcurrentEvents=1
703 flags.Concurrency.NumProcs=0
704 flags.Scheduler.ShowDataDeps=
False
705 flags.Scheduler.CheckDependencies=
True
706 flags.Debug.DumpEvtStore=
False
709 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
710 log.info(
"wrapperFile is string, converting to list")
711 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
712 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
714 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
720 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
722 acc=MainServicesCfg(flags)
723 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
724 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
725 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
733 if flags.Trigger.FPGATrackSim.doEDMConversion:
734 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
737 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
738 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,name=
"FPGAActsPixelSpacePointFormationAlg",
739 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
740 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
742 if flags.Trigger.FPGATrackSim.connectToToITkTracking:
743 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
749 **{
'PixelSeedingAlg.InputSpacePoints' : [
'xAODPixelSpacePointsFromFPGA'],
750 'StripSeedingAlg.InputSpacePoints' : [
''],
751 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"xAODPixelClustersFromFPGACluster",
"xAODStripClustersFromFPGACluster"],
752 'PixelClusterToTruthAssociationAlg.Measurements' :
'xAODPixelClustersFromFPGACluster',
753 'StripClusterToTruthAssociationAlg.Measurements' :
'xAODStripClustersFromFPGACluster'}))
756 if flags.Trigger.FPGATrackSim.writeToAOD:
759 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
762 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
763 acc.merge(FPGATrackSimReportingCfg(flags,stage=
"_1st",
764 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
768 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
769 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
770 acc.merge(FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
771 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
772 'doDiffHistograms':
True,
773 'matchByID' :
True}))
775 acc.store(open(
'AnalysisConfig.pkl',
'wb'))
777 statusCode = acc.run(flags.Exec.MaxEvents)
778 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"