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)
310 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
311 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
312 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
313 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
314 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
315 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
316 mappingSvc.layerOverride = []
317 result.addService(mappingSvc, create=
True, primary=
True)
323 InputTool = CompFactory.FPGATrackSimInputHeaderTool(name=
"FPGATrackSimReadInput",
324 InFileName = flags.Trigger.FPGATrackSim.wrapperFileName)
325 result.addPublicTool(InputTool, primary=
True)
330 InputTool2 = CompFactory.FPGATrackSimReadRawRandomHitsTool(name=
"FPGATrackSimReadInput2", InFileName = flags.Trigger.FPGATrackSim.wrapperFileName2)
331 result.addPublicTool(InputTool2, primary=
True)
336 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
337 HitFilteringTool.barrelStubDphiCut = 3.0
338 HitFilteringTool.doRandomRemoval =
False
339 HitFilteringTool.doStubs =
False
340 HitFilteringTool.endcapStubDphiCut = 1.5
341 HitFilteringTool.pixelClusRmFrac = 0
342 HitFilteringTool.pixelHitRmFrac = 0
343 HitFilteringTool.stripClusRmFrac = 0
344 HitFilteringTool.stripHitRmFrac = 0
345 HitFilteringTool.useNstrips =
False
346 result.addPublicTool(HitFilteringTool, primary=
True)
351 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
352 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
353 LorentzAngleTool.shiftGlobalPosition=
True
355 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
358 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
361 result.addPublicTool(LorentzAngleTool, primary=
True)
371 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
372 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
373 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
374 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
375 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
376 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
377 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
380 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
381 for region
in flags.Trigger.FPGATrackSim.regionList:
382 flagsForEachRegion = inputFlags.clone()
383 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
384 flagsForEachRegion.Trigger.FPGATrackSim.region = region
385 flagsForEachRegion.lock()
387 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
390 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
392 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
394 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
395 theFPGATrackSimDataPrepAlg.SGInputTool =
""
397 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
399 theFPGATrackSimDataPrepAlg.InputTool =
""
400 theFPGATrackSimDataPrepAlg.InputTool2 =
""
401 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
403 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
404 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
408 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
409 if not flags.Trigger.FPGATrackSim.wrapperFileName:
411 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
413 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
419 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimLogicalHitsProcessAlgMonitoringCfg
422 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
427 log = AthenaLogger(__name__)
431 flags = flagsIn.clone()
434 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
437 flags.Tracking.ActiveConfig.extension=FinalTracks
440 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass")
441 prefix=flags.Tracking.ActiveConfig.extension
447 from ActsConfig.ActsUtilities
import extractChildKwargs
452 kwargs.setdefault(
'PixelSeedingAlg.InputSpacePoints',[
'ITkPixelSpacePoints'])
453 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints',[
'ITkStripSpacePoints'])
456 kwargs.setdefault(
'TrackFindingAlg.UncalibratedMeasurementContainerKeys',[
'ITkPixelClusters',
'ITkStripClusters'])
459 kwargs.setdefault(
'PixelClusterToTruthAssociationAlg.Measurements',
'ITkPixelClusters')
460 kwargs.setdefault(
'StripClusterToTruthAssociationAlg.Measurements',
'ITkStripClusters')
464 from ActsConfig.ActsSeedingConfig
import ActsSeedingCfg
468 from ActsConfig.ActsTrackFindingConfig
import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
472 if flags.Acts.doAmbiguityResolution:
476 acts_tracks=f
"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution
else f
"{prefix}ResolvedTracks"
480 if(flags.ITk.doTruth):
481 from ActsConfig.ActsTruthConfig
import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
483 name=f
"{prefix}PixelClusterToTruthAssociationAlg",
484 InputTruthParticleLinks=
"xAODTruthLinks",
485 AssociationMapOut=f
"{prefix}ITkPixelClustersToTruthParticles",
486 Measurements=kwargs.get(
'PixelClusterToTruthAssociationAlg.Measurements')))
489 name=f
"{prefix}StripClusterToTruthAssociationAlg",
490 InputTruthParticleLinks=
"xAODTruthLinks",
491 AssociationMapOut=f
"{prefix}ITkStripClustersToTruthParticles",
492 Measurements=kwargs.get(
'StripClusterToTruthAssociationAlg.Measurements')))
495 name=f
"{prefix}TruthParticleHitCountAlg",
496 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
497 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
498 TruthParticleHitCountsOut=f
"{prefix}TruthParticleHitCounts"))
500 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
502 name=f
"{prefix}TrackToTruthAssociationAlg",
503 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
504 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
505 ACTSTracksLocation=acts_tracks,
506 AssociationMapOut=f
"{acts_tracks}ToTruthParticleAssociation"))
509 name=f
"{prefix}TrackFindingValidationAlg",
510 TrackToTruthAssociationMap=f
"{acts_tracks}ToTruthParticleAssociation",
511 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts"
515 from ActsConfig.ActsTrackFindingConfig
import ActsTrackToTrackParticleCnvAlgCfg
517 ACTSTracksLocation=[acts_tracks],
518 TrackParticlesOutKey=f
"{prefix}TrackParticles"))
519 if(flags.ITk.doTruth):
520 from ActsConfig.ActsTruthConfig
import ActsTrackParticleTruthDecorationAlgCfg
522 TrackToTruthAssociationMaps=[f
"{acts_tracks}ToTruthParticleAssociation"],
523 TrackParticleContainerName=f
"{FinalTracks}TrackParticles",
524 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
525 ComputeTrackRecoEfficiency=
True))
528 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
529 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkActsPrepDataToxAODCfg
531 PixelMeasurementContainer =
"ITkPixelMeasurements_offl",
532 StripMeasurementContainer =
"ITkStripMeasurements_offl" ) )
537 if flags.Trigger.FPGATrackSim.regionList ==
"":
538 flags.Trigger.FPGATrackSim.regionList = [flags.Trigger.FPGATrackSim.region]
540 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
548 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
549 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
554 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
556 'xAODStripClusterContainer':
'FPGAStripClusters',
557 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
558 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
560 acc.merge(ClusterSorting)
562 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
565 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
568 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
571 pixel_cluster_shortlist = [
'-pixelClusterLink']
572 strip_cluster_shortlist = [
'-sctClusterLink']
574 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
575 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
577 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
578 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
579 'xAOD::StripClusterContainer#ITkStripClusters',
580 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
581 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
587 flags.Scheduler.ShowDataDeps=
True
588 flags.Scheduler.CheckDependencies=
True
590 flags.Concurrency.NumThreads=1
591 flags.Concurrency.NumConcurrentEvents=1
592 flags.Concurrency.NumProcs=0
594 flags.Trigger.FPGATrackSim.readOfflineObjects=
False
595 flags.Trigger.FPGATrackSim.writeAdditionalOutputData=
False
596 flags.Trigger.FPGATrackSim.doMultiTruth=
False
603 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=
True
604 flags.Tracking.ITkMainPass.doAthenaToActsCluster=
True
605 from ActsConfig.ActsCIFlags
import actsLegacyWorkflowFlags
607 flags.Acts.doRotCorrection =
False
613 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
616 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
620 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
624 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
627 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
630 if flags.Detector.EnableCalo:
631 from CaloRec.CaloRecoConfig
import CaloRecoCfg
634 if not flags.Reco.EnableTrackOverlay:
636 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
638 from InDetConfig.InDetPrepRawDataFormationConfig
import ITkXAODToInDetClusterConversionCfg
640 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
647 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
648 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
650 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
653 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
661 flags.Concurrency.NumThreads=1
662 flags.Concurrency.NumConcurrentEvents=1
663 flags.Concurrency.NumProcs=0
664 flags.Scheduler.ShowDataDeps=
False
665 flags.Scheduler.CheckDependencies=
True
666 flags.Debug.DumpEvtStore=
False
669 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
670 log.info(
"wrapperFile is string, converting to list")
671 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
672 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
674 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
680 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
683 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
684 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
685 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
693 if flags.Trigger.FPGATrackSim.doEDMConversion:
694 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
697 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
699 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
700 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
702 if flags.Trigger.FPGATrackSim.connectToToITkTracking:
703 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
709 **{
'PixelSeedingAlg.InputSpacePoints' : [
'xAODPixelSpacePointsFromFPGA'],
710 'StripSeedingAlg.InputSpacePoints' : [
''],
711 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"xAODPixelClustersFromFPGACluster",
"xAODStripClustersFromFPGACluster"],
712 'PixelClusterToTruthAssociationAlg.Measurements' :
'xAODPixelClustersFromFPGACluster',
713 'StripClusterToTruthAssociationAlg.Measurements' :
'xAODStripClustersFromFPGACluster'}))
716 if flags.Trigger.FPGATrackSim.writeToAOD:
719 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
722 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
724 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
728 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
729 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
730 acc.merge(
FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
731 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
732 'doDiffHistograms':
True,
733 'matchByID' :
True}))
735 acc.store(
open(
'AnalysisConfig.pkl',
'wb'))
737 statusCode = acc.run(flags.Exec.MaxEvents)
738 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"
741 if __name__ ==
"__main__":