3 from AthenaConfiguration.ComponentFactory
import CompFactory
4 from AthenaCommon.Logging
import AthenaLogger
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
9 return f
"{basename}_reg{flags.Trigger.FPGATrackSim.region}"
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]
134 FPGATrackSimRawLogic = CompFactory.FPGATrackSimRawToLogicalHitsTool(
nameWithRegionSuffix(flags,name))
135 FPGATrackSimRawLogic.SaveOptional = 2
136 if (flags.Trigger.FPGATrackSim.ActiveConfig.sampleType ==
'skipTruth'):
137 FPGATrackSimRawLogic.SaveOptional = 1
138 FPGATrackSimRawLogic.TowersToMap = [0]
141 result.addPublicTool(FPGATrackSimRawLogic,primary=
True)
146 SpacePointTool = CompFactory.FPGATrackSimSpacePointsTool()
147 SpacePointTool.Filtering = flags.Trigger.FPGATrackSim.ActiveConfig.spacePointFiltering
148 SpacePointTool.FilteringClosePoints =
False
149 SpacePointTool.PhiWindow = 0.004
150 SpacePointTool.Duplication =
True
151 result.addPublicTool(SpacePointTool, primary=
True)
156 newFlags = flags.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag)
162 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutputDataPrep")
163 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
164 FPGATrackSimWriteOutput.OutputTreeName =
"FPGATrackSimDataPrepTree"
165 if not flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
166 FPGATrackSimWriteOutput.EventLimit = 0
168 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
171 FPGATrackSimWriteOutput.RWstatus =
"HEADER"
172 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
173 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
181 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
184 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters_1st")
185 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
186 kwargs.setdefault(
"FPGATrackSimHitInRoadsKey",
"FPGAHitsInRoads")
187 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads")
188 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks")
189 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClustersFromFPGACluster")
190 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClustersFromFPGACluster")
191 kwargs.setdefault(
"xAODStripSpacePointFromFPGAKey",
"xAODStripSpacePoints%sFromFPGA" %(stage))
192 kwargs.setdefault(
"xAODPixelSpacePointFromFPGAKey",
"xAODPixelSpacePoints%sFromFPGA" %(stage))
193 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
194 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
195 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
196 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
197 kwargs.setdefault(
"doHits",
False)
198 kwargs.setdefault(
"doClusters",
True)
199 kwargs.setdefault(
"doActsTrk",
False)
200 kwargs.setdefault(
"useRoads",
False)
204 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
205 ConvertionAlgorithm.ClusterConverter.doLorentzShift=
False
207 result.addEventAlgo(ConvertionAlgorithm)
212 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
213 FPGAClusterConverter.doLorentzShift=
True
215 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
218 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
221 result.setPrivateTools(FPGAClusterConverter)
228 FPGAActsTrkConverter = CompFactory.FPGAActsTrkConverter()
229 result.setPrivateTools(FPGAActsTrkConverter)
236 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
237 from OutputStreamAthenaPool.OutputStreamConfig
import outputStreamName
238 from AthenaConfiguration.Enums
import MetadataCategory
242 MetadataCategory.ByteStreamMetaData,
243 MetadataCategory.LumiBlockMetaData,
244 MetadataCategory.TruthMetaData,
245 MetadataCategory.IOVMetaData,],)
247 log.info(
"AOD ItemList: %s", result.getEventAlgo(
outputStreamName(
"AOD")).ItemList)
248 log.info(
"AOD MetadataItemList: %s", result.getEventAlgo(
outputStreamName(
"AOD")).MetadataItemList)
249 log.info(
"---------- Configured AOD writing")
251 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
252 toAOD = [f
"xAOD::TrackParticleContainer#{finalTrackParticles}",f
"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
253 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
254 toAOD += [
"xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster",
"xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
255 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster",
"xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
256 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
257 toAOD += [
'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
258 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
259 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
260 toAOD += [f
"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
261 f
"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
263 result.merge(
addToAOD(flags, toAOD))
272 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
273 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
274 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
275 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
276 eventSelector.withPU =
False
277 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
280 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
281 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
282 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
283 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
284 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
285 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
287 result.addService(eventSelector, create=
True, primary=
True)
292 eventSelectionTool=CompFactory.FPGATrackSim.FPGATrackSimEventSelectionTool(
nameWithRegionSuffix(flags,name))
295 result.addPublicTool(eventSelectionTool, primary=
True)
301 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
302 mappingSvc.mappingType =
"FILE"
303 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
304 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".subrmap"
305 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".pmap"
306 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
307 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
308 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii_2nd.txt"
309 mappingSvc.loadRadii = (
not flags.Trigger.FPGATrackSim.ActiveConfig.GNN)
and flags.Trigger.FPGATrackSim.loadRadii
310 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
311 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
313 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
314 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
315 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
316 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
317 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
318 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
319 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
320 mappingSvc.layerOverride = []
321 result.addService(mappingSvc, create=
True, primary=
True)
327 InputTool = CompFactory.FPGATrackSimInputHeaderTool(name=
"FPGATrackSimReadInput",
328 InFileName = flags.Trigger.FPGATrackSim.wrapperFileName)
329 result.addPublicTool(InputTool, primary=
True)
334 InputTool2 = CompFactory.FPGATrackSimReadRawRandomHitsTool(name=
"FPGATrackSimReadInput2", InFileName = flags.Trigger.FPGATrackSim.wrapperFileName2)
335 result.addPublicTool(InputTool2, primary=
True)
340 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
341 HitFilteringTool.barrelStubDphiCut = 3.0
342 HitFilteringTool.doRandomRemoval =
False
343 HitFilteringTool.doStubs =
False
344 HitFilteringTool.endcapStubDphiCut = 1.5
345 HitFilteringTool.pixelClusRmFrac = 0
346 HitFilteringTool.pixelHitRmFrac = 0
347 HitFilteringTool.stripClusRmFrac = 0
348 HitFilteringTool.stripHitRmFrac = 0
349 HitFilteringTool.useNstrips =
False
350 result.addPublicTool(HitFilteringTool, primary=
True)
355 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
356 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
357 LorentzAngleTool.shiftGlobalPosition=
True
359 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
362 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
365 result.addPublicTool(LorentzAngleTool, primary=
True)
375 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
376 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
377 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
378 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
379 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
380 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
381 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
384 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
385 for region
in flags.Trigger.FPGATrackSim.regionList:
386 flagsForEachRegion = inputFlags.clone()
387 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
388 flagsForEachRegion.Trigger.FPGATrackSim.region = region
389 flagsForEachRegion.lock()
391 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
394 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
396 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
398 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
399 theFPGATrackSimDataPrepAlg.SGInputTool =
""
401 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
403 theFPGATrackSimDataPrepAlg.InputTool =
""
404 theFPGATrackSimDataPrepAlg.InputTool2 =
""
405 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
407 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
408 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
412 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
413 if not flags.Trigger.FPGATrackSim.wrapperFileName:
415 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
417 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
423 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimLogicalHitsProcessAlgMonitoringCfg
426 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
431 log = AthenaLogger(__name__)
435 flags = flagsIn.clone()
438 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
441 flags.Tracking.ActiveConfig.extension=FinalTracks
444 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass")
445 prefix=flags.Tracking.ActiveConfig.extension
451 from ActsConfig.ActsUtilities
import extractChildKwargs
456 kwargs.setdefault(
'PixelSeedingAlg.InputSpacePoints',[
'ITkPixelSpacePoints'])
457 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints',[
'ITkStripSpacePoints'])
460 kwargs.setdefault(
'TrackFindingAlg.UncalibratedMeasurementContainerKeys',[
'ITkPixelClusters',
'ITkStripClusters'])
463 kwargs.setdefault(
'PixelClusterToTruthAssociationAlg.Measurements',
'ITkPixelClusters')
464 kwargs.setdefault(
'StripClusterToTruthAssociationAlg.Measurements',
'ITkStripClusters')
468 from ActsConfig.ActsSeedingConfig
import ActsSeedingCfg
472 from ActsConfig.ActsTrackFindingConfig
import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
476 if flags.Acts.doAmbiguityResolution:
480 acts_tracks=f
"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution
else f
"{prefix}ResolvedTracks"
484 if(flags.ITk.doTruth):
485 from ActsConfig.ActsTruthConfig
import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
487 name=f
"{prefix}PixelClusterToTruthAssociationAlg",
488 InputTruthParticleLinks=
"xAODTruthLinks",
489 AssociationMapOut=f
"{prefix}ITkPixelClustersToTruthParticles",
490 Measurements=kwargs.get(
'PixelClusterToTruthAssociationAlg.Measurements')))
493 name=f
"{prefix}StripClusterToTruthAssociationAlg",
494 InputTruthParticleLinks=
"xAODTruthLinks",
495 AssociationMapOut=f
"{prefix}ITkStripClustersToTruthParticles",
496 Measurements=kwargs.get(
'StripClusterToTruthAssociationAlg.Measurements')))
499 name=f
"{prefix}TruthParticleHitCountAlg",
500 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
501 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
502 TruthParticleHitCountsOut=f
"{prefix}TruthParticleHitCounts"))
504 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
506 name=f
"{prefix}TrackToTruthAssociationAlg",
507 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
508 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
509 ACTSTracksLocation=acts_tracks,
510 AssociationMapOut=f
"{acts_tracks}ToTruthParticleAssociation"))
513 name=f
"{prefix}TrackFindingValidationAlg",
514 TrackToTruthAssociationMap=f
"{acts_tracks}ToTruthParticleAssociation",
515 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts"
519 from ActsConfig.ActsTrackFindingConfig
import ActsTrackToTrackParticleCnvAlgCfg
521 ACTSTracksLocation=[acts_tracks],
522 TrackParticlesOutKey=f
"{prefix}TrackParticles"))
523 if(flags.ITk.doTruth):
524 from ActsConfig.ActsTruthConfig
import ActsTrackParticleTruthDecorationAlgCfg
526 TrackToTruthAssociationMaps=[f
"{acts_tracks}ToTruthParticleAssociation"],
527 TrackParticleContainerName=f
"{FinalTracks}TrackParticles",
528 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
529 ComputeTrackRecoEfficiency=
True))
532 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
533 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkActsPrepDataToxAODCfg
535 PixelMeasurementContainer =
"ITkPixelMeasurements_offl",
536 StripMeasurementContainer =
"ITkStripMeasurements_offl" ) )
541 if flags.Trigger.FPGATrackSim.regionList ==
"":
542 flags.Trigger.FPGATrackSim.regionList = [flags.Trigger.FPGATrackSim.region]
544 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
552 'FPGATrackSimSPKey':
'FPGAClusters_1st',
553 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
554 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
555 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
557 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
560 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
562 'xAODStripClusterContainer':
'FPGAStripClusters',
563 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
564 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
566 acc.merge(ClusterSorting)
568 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
571 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
574 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
577 pixel_cluster_shortlist = [
'-pixelClusterLink']
578 strip_cluster_shortlist = [
'-sctClusterLink']
580 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
581 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
583 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
584 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
585 'xAOD::StripClusterContainer#ITkStripClusters',
586 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
587 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
591 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
593 perEventReports =
False,
594 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
595 'xAODStripClusterContainers' : [
'ITkStripClusters'],
596 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
597 'isDataPrep':
True} ))
602 flags.Scheduler.ShowDataDeps=
True
603 flags.Scheduler.CheckDependencies=
True
605 flags.Trigger.FPGATrackSim.readOfflineObjects=
False
606 flags.Trigger.FPGATrackSim.doMultiTruth=
False
613 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=
True
614 flags.Tracking.ITkMainPass.doAthenaToActsCluster=
True
615 from ActsConfig.ActsCIFlags
import actsLegacyWorkflowFlags
617 flags.Acts.doRotCorrection =
False
623 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
626 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
630 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
634 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
637 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
640 if flags.Detector.EnableCalo:
641 from CaloRec.CaloRecoConfig
import CaloRecoCfg
644 if not flags.Reco.EnableTrackOverlay:
646 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
648 from InDetConfig.InDetPrepRawDataFormationConfig
import ITkXAODToInDetClusterConversionCfg
650 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
657 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
658 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
660 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
663 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
671 flags.Concurrency.NumThreads=1
672 flags.Concurrency.NumConcurrentEvents=1
673 flags.Concurrency.NumProcs=0
674 flags.Scheduler.ShowDataDeps=
False
675 flags.Scheduler.CheckDependencies=
True
676 flags.Debug.DumpEvtStore=
False
679 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
680 log.info(
"wrapperFile is string, converting to list")
681 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
682 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
684 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
690 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
693 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
694 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
695 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
703 if flags.Trigger.FPGATrackSim.doEDMConversion:
704 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
707 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
709 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
710 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
712 if flags.Trigger.FPGATrackSim.connectToToITkTracking:
713 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
719 **{
'PixelSeedingAlg.InputSpacePoints' : [
'xAODPixelSpacePointsFromFPGA'],
720 'StripSeedingAlg.InputSpacePoints' : [
''],
721 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"xAODPixelClustersFromFPGACluster",
"xAODStripClustersFromFPGACluster"],
722 'PixelClusterToTruthAssociationAlg.Measurements' :
'xAODPixelClustersFromFPGACluster',
723 'StripClusterToTruthAssociationAlg.Measurements' :
'xAODStripClustersFromFPGACluster'}))
726 if flags.Trigger.FPGATrackSim.writeToAOD:
729 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
732 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
734 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
738 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
739 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
740 acc.merge(
FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
741 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
742 'doDiffHistograms':
True,
743 'matchByID' :
True}))
745 acc.store(
open(
'AnalysisConfig.pkl',
'wb'))
747 statusCode = acc.run(flags.Exec.MaxEvents)
748 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"
751 if __name__ ==
"__main__":