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]
133 return flags.Trigger.FPGATrackSim.region >> 5
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)
149 SpacePointTool = CompFactory.FPGATrackSimSpacePointsTool()
150 SpacePointTool.Filtering = flags.Trigger.FPGATrackSim.ActiveConfig.spacePointFiltering
151 SpacePointTool.FilteringClosePoints =
False
152 SpacePointTool.PhiWindow = 0.004
153 SpacePointTool.Duplication =
True
154 result.addPublicTool(SpacePointTool, primary=
True)
159 newFlags = flags.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + flags.Trigger.FPGATrackSim.algoTag)
166 FPGATrackSimWriteOutput = CompFactory.FPGATrackSimOutputHeaderTool(
"FPGATrackSimWriteOutputDataPrep")
167 FPGATrackSimWriteOutput.InFileName = [
"test.root"]
168 FPGATrackSimWriteOutput.OutputTreeName =
"FPGATrackSimDataPrepTree"
169 writeThis=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and ((flags.Trigger.FPGATrackSim.regionToWriteDPTree
in flags.Trigger.FPGATrackSim.regionList)
or (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0))
172 FPGATrackSimWriteOutput.EventLimit = 0
174 FPGATrackSimWriteOutput.EventLimit = flags.Trigger.FPGATrackSim.writeOutputEventLimit
177 FPGATrackSimWriteOutput.RWstatus =
"HEADER"
178 FPGATrackSimWriteOutput.THistSvc = CompFactory.THistSvc()
179 result.addPublicTool(FPGATrackSimWriteOutput, primary=
True)
187 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
190 kwargs.setdefault(
"FPGATrackSimClusterKey",
"FPGAClusters_1st")
191 kwargs.setdefault(
"FPGATrackSimHitKey",
"FPGAHits%s" %(stage))
192 kwargs.setdefault(
"FPGATrackSimHitInRoadsKey",
"FPGAHitsInRoads")
193 kwargs.setdefault(
"FPGATrackSimRoadKey",
"FPGARoads")
194 kwargs.setdefault(
"FPGATrackSimTrackKey",
"FPGATracks")
195 kwargs.setdefault(
"xAODPixelClusterFromFPGAClusterKey",
"xAODPixelClustersFromFPGACluster")
196 kwargs.setdefault(
"xAODStripClusterFromFPGAClusterKey",
"xAODStripClustersFromFPGACluster")
197 kwargs.setdefault(
"xAODStripSpacePointFromFPGAKey",
"xAODStripSpacePoints%sFromFPGA" %(stage))
198 kwargs.setdefault(
"xAODPixelSpacePointFromFPGAKey",
"xAODPixelSpacePoints%sFromFPGA" %(stage))
199 kwargs.setdefault(
"xAODPixelClusterFromFPGAHitKey",
"xAODPixelClusters%sFromFPGAHit" %(stage))
200 kwargs.setdefault(
"xAODStripClusterFromFPGAHitKey",
"xAODStripClusters%sFromFPGAHit" %(stage))
201 kwargs.setdefault(
"ActsProtoTrackFromFPGARoadKey",
"ActsProtoTracks%sFromFPGARoad" %(stage))
202 kwargs.setdefault(
"ActsProtoTrackFromFPGATrackKey",
"ActsProtoTracks%sFromFPGATrack" %(stage))
203 kwargs.setdefault(
"doHits",
False)
204 kwargs.setdefault(
"doClusters",
True)
205 kwargs.setdefault(
"doActsTrk",
False)
206 kwargs.setdefault(
"useRoads",
False)
210 ConvertionAlgorithm = CompFactory.FPGAConversionAlgorithm(name, **kwargs)
211 ConvertionAlgorithm.ClusterConverter.doLorentzShift=
False
213 result.addEventAlgo(ConvertionAlgorithm)
218 FPGAClusterConverter = CompFactory.FPGAClusterConverter()
219 FPGAClusterConverter.doLorentzShift=
True
221 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
224 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
227 result.setPrivateTools(FPGAClusterConverter)
234 FPGAActsTrkConverter = CompFactory.FPGAActsTrkConverter()
235 result.setPrivateTools(FPGAActsTrkConverter)
242 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
243 from OutputStreamAthenaPool.OutputStreamConfig
import outputStreamName
244 from AthenaConfiguration.Enums
import MetadataCategory
248 MetadataCategory.ByteStreamMetaData,
249 MetadataCategory.LumiBlockMetaData,
250 MetadataCategory.TruthMetaData,
251 MetadataCategory.IOVMetaData,],)
253 log.info(
"AOD ItemList: %s", result.getEventAlgo(
outputStreamName(
"AOD")).ItemList)
254 log.info(
"AOD MetadataItemList: %s", result.getEventAlgo(
outputStreamName(
"AOD")).MetadataItemList)
255 log.info(
"---------- Configured AOD writing")
257 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
258 toAOD = [f
"xAOD::TrackParticleContainer#{finalTrackParticles}",f
"xAOD::TrackParticleAuxContainer#{finalTrackParticles}Aux."]
259 if flags.Trigger.FPGATrackSim.writeClustersToAOD:
260 toAOD += [
"xAOD::PixelClusterContainer#xAODPixelClustersFromFPGACluster",
"xAOD::PixelClusterAuxContainer#xAODPixelClustersFromFPGAClusterAux.",
261 "xAOD::StripClusterContainer#xAODStripClustersFromFPGACluster",
"xAOD::StripClusterAuxContainer#xAODStripClustersFromFPGAClusterAux."]
262 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
263 toAOD += [
'xAOD::TrackMeasurementValidationContainer#ITkPixelMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkPixelMeasurements_offlAux.',
264 'xAOD::TrackMeasurementValidationContainer#ITkStripMeasurements_offl',
'xAOD::TrackMeasurementValidationAuxContainer#ITkStripMeasurements_offlAux.']
265 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
266 toAOD += [f
"xAOD::SpacePointContainer#xAODPixelSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODPixelSpacePoints{stage}FromFPGAAux.-measurements",
267 f
"xAOD::SpacePointContainer#xAODStripSpacePoints{stage}FromFPGA",f
"xAOD::SpacePointAuxContainer#xAODStripSpacePoints{stage}FromFPGAAux.-measurements.-sctSpacePointLink"]
269 result.merge(
addToAOD(flags, toAOD))
278 eventSelector.regions = flags.Trigger.FPGATrackSim.slicesFile
279 eventSelector.regionID = flags.Trigger.FPGATrackSim.region
280 eventSelector.sampleType = flags.Trigger.FPGATrackSim.sampleType
281 eventSelector.skipRegionCheck = flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
282 eventSelector.withPU =
False
283 eventSelector.oldRegionDefs = flags.Trigger.FPGATrackSim.oldRegionDefs
286 eventSelector.mind0 = flags.Trigger.FPGATrackSim.d0min
287 eventSelector.maxd0 = flags.Trigger.FPGATrackSim.d0max
288 eventSelector.minz0 = flags.Trigger.FPGATrackSim.z0min
289 eventSelector.maxz0 = flags.Trigger.FPGATrackSim.z0max
290 eventSelector.minqOverPt = flags.Trigger.FPGATrackSim.qOverPtmin
291 eventSelector.maxqOverPt = flags.Trigger.FPGATrackSim.qOverPtmax
293 result.addService(eventSelector, create=
True, primary=
True)
298 eventSelectionTool=CompFactory.FPGATrackSim.FPGATrackSimEventSelectionTool(
nameWithRegionSuffix(flags,name))
301 result.addPublicTool(eventSelectionTool, primary=
True)
307 mappingSvc.regionID = flags.Trigger.FPGATrackSim.region
308 mappingSvc.mappingType =
"FILE"
309 mappingSvc.rmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
310 mappingSvc.subrmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".rmap"
311 mappingSvc.pmap = flags.Trigger.FPGATrackSim.mapsDir+
"/"+
getBaseName(flags)+
".pmap"
312 mappingSvc.modulemap = flags.Trigger.FPGATrackSim.mapsDir+
"/moduleidmap"
313 mappingSvc.radiiFile = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii.txt"
314 mappingSvc.radiiFile2nd = flags.Trigger.FPGATrackSim.mapsDir +
"/"+
getBaseName(flags)+
"_radii_2nd.txt"
315 mappingSvc.loadRadii = (
not flags.Trigger.FPGATrackSim.ActiveConfig.GNN)
and flags.Trigger.FPGATrackSim.loadRadii
316 mappingSvc.loadRegionMap = flags.Trigger.FPGATrackSim.loadRegionMap
317 mappingSvc.DoGNNTrack = flags.Trigger.FPGATrackSim.GNN.doGNNTracking
319 mappingSvc.FakeNNonnx1st = flags.Trigger.FPGATrackSim.FakeNNonnxFile1st
320 mappingSvc.FakeNNonnx2nd = flags.Trigger.FPGATrackSim.FakeNNonnxFile2nd
321 mappingSvc.ParamNNonnx1st = flags.Trigger.FPGATrackSim.ParamNNonnxFile1st
322 mappingSvc.ParamNNonnx2nd = flags.Trigger.FPGATrackSim.ParamNNonnxFile2nd
323 mappingSvc.ExtensionNNVolonnx = flags.Trigger.FPGATrackSim.ExtensionNNVolonnxFile
324 mappingSvc.ExtensionNNHitonnx = flags.Trigger.FPGATrackSim.ExtensionNNHitonnxFile
325 mappingSvc.GNNModuleMap = flags.Trigger.FPGATrackSim.GNN.moduleMapPath
326 mappingSvc.layerOverride = []
327 result.addService(mappingSvc, create=
True, primary=
True)
333 InputTool = CompFactory.FPGATrackSimInputHeaderTool(name=
"FPGATrackSimReadInput",
334 InFileName = flags.Trigger.FPGATrackSim.wrapperFileName)
335 result.addPublicTool(InputTool, primary=
True)
340 InputTool2 = CompFactory.FPGATrackSimReadRawRandomHitsTool(name=
"FPGATrackSimReadInput2", InFileName = flags.Trigger.FPGATrackSim.wrapperFileName2)
341 result.addPublicTool(InputTool2, primary=
True)
346 HitFilteringTool = CompFactory.FPGATrackSimHitFilteringTool()
347 HitFilteringTool.barrelStubDphiCut = 3.0
348 HitFilteringTool.doRandomRemoval =
False
349 HitFilteringTool.doStubs =
False
350 HitFilteringTool.endcapStubDphiCut = 1.5
351 HitFilteringTool.pixelClusRmFrac = 0
352 HitFilteringTool.pixelHitRmFrac = 0
353 HitFilteringTool.stripClusRmFrac = 0
354 HitFilteringTool.stripHitRmFrac = 0
355 HitFilteringTool.useNstrips =
False
356 result.addPublicTool(HitFilteringTool, primary=
True)
361 LorentzAngleTool = CompFactory.FPGATrackSim.LorentzAngleTool()
362 LorentzAngleTool.UseAthenaLorentzAngleTools=
False
363 LorentzAngleTool.shiftGlobalPosition=
True
365 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
368 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
371 result.addPublicTool(LorentzAngleTool, primary=
True)
381 theFPGATrackSimDataPrepAlg=CompFactory.FPGATrackSimDataPrepAlg()
382 theFPGATrackSimDataPrepAlg.HitFiltering = flags.Trigger.FPGATrackSim.ActiveConfig.hitFiltering
383 theFPGATrackSimDataPrepAlg.writeOutputData = flags.Trigger.FPGATrackSim.writeAdditionalOutputData
384 writePreClusterBranch=flags.Trigger.FPGATrackSim.writeAdditionalOutputData
and (flags.Trigger.FPGATrackSim.regionToWriteDPTree < 0)
385 theFPGATrackSimDataPrepAlg.writePreClusterBranch=writePreClusterBranch
387 theFPGATrackSimDataPrepAlg.Clustering = flags.Trigger.FPGATrackSim.clustering
388 theFPGATrackSimDataPrepAlg.doEvtSel=
False if flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
or flags.Trigger.FPGATrackSim.sampleType ==
'skipTruth' else True
389 theFPGATrackSimDataPrepAlg.useInternalTruthTracks = flags.Trigger.FPGATrackSim.useFPGATruthTrackMatching
390 theFPGATrackSimDataPrepAlg.recordHits =
not flags.Trigger.FPGATrackSim.pipeline.startswith(
'F-1')
393 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools = []
394 for region
in flags.Trigger.FPGATrackSim.regionList:
395 flagsForEachRegion = inputFlags.clone()
396 flagsForEachRegion = flagsForEachRegion.cloneAndReplace(
"Trigger.FPGATrackSim.ActiveConfig",
"Trigger.FPGATrackSim." + inputFlags.Trigger.FPGATrackSim.algoTag,keepOriginal=
True)
397 flagsForEachRegion.Trigger.FPGATrackSim.region = region
398 flagsForEachRegion.lock()
400 theFPGATrackSimDataPrepAlg.RawToLogicalHitsTools.append(result.getPrimaryAndMerge(
FPGATrackSimRawLogicCfg(flagsForEachRegion)))
403 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
405 if flags.Trigger.FPGATrackSim.wrapperFileName2
and flags.Trigger.FPGATrackSim.wrapperFileName2
is not None:
407 theFPGATrackSimDataPrepAlg.SecondInputToolN = flags.Trigger.FPGATrackSim.secondInputToolN
408 theFPGATrackSimDataPrepAlg.SGInputTool =
""
410 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
412 theFPGATrackSimDataPrepAlg.InputTool =
""
413 theFPGATrackSimDataPrepAlg.InputTool2 =
""
414 from FPGATrackSimSGInput.FPGATrackSimSGInputConfig
import FPGATrackSimSGInputToolCfg
416 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineClusters=
False
417 theFPGATrackSimDataPrepAlg.SGInputTool.ReadOfflineTracks=
False
421 theFPGATrackSimDataPrepAlg.ClusteringTool = CompFactory.FPGATrackSimClusteringTool()
422 if not flags.Trigger.FPGATrackSim.wrapperFileName:
424 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = flags.Trigger.FPGATrackSim.LorentzAngleShift
426 theFPGATrackSimDataPrepAlg.ClusteringTool.LorentzAngleShift = -1
432 from FPGATrackSimAlgorithms.FPGATrackSimAlgorithmConfig
import FPGATrackSimDataPrepMonitoringCfg
435 result.addEventAlgo(theFPGATrackSimDataPrepAlg)
440 log = AthenaLogger(__name__)
444 flags = flagsIn.clone()
447 from ActsConfig.ActsCIFlags
import actsWorkflowFlags
450 flags.Tracking.ActiveConfig.extension=FinalTracks
453 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass")
454 prefix=flags.Tracking.ActiveConfig.extension
460 from ActsConfig.ActsUtilities
import extractChildKwargs
465 kwargs.setdefault(
'PixelSeedingAlg.InputSpacePoints',[
'ITkPixelSpacePoints'])
466 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints',[
'ITkStripSpacePoints'])
469 kwargs.setdefault(
'TrackFindingAlg.UncalibratedMeasurementContainerKeys',[
'ITkPixelClusters',
'ITkStripClusters'])
472 kwargs.setdefault(
'PixelClusterToTruthAssociationAlg.Measurements',
'ITkPixelClusters')
473 kwargs.setdefault(
'StripClusterToTruthAssociationAlg.Measurements',
'ITkStripClusters')
477 from ActsConfig.ActsSeedingConfig
import ActsSeedingCfg
481 from ActsConfig.ActsTrackFindingConfig
import ActsTrackFindingCfg,ActsAmbiguityResolutionCfg
485 if flags.Acts.doAmbiguityResolution:
489 acts_tracks=f
"{prefix}Tracks" if not flags.Acts.doAmbiguityResolution
else f
"{prefix}ResolvedTracks"
493 if(flags.ITk.doTruth):
494 from ActsConfig.ActsTruthConfig
import ActsTruthParticleHitCountAlgCfg, ActsPixelClusterToTruthAssociationAlgCfg,ActsStripClusterToTruthAssociationAlgCfg
496 name=f
"{prefix}PixelClusterToTruthAssociationAlg",
497 InputTruthParticleLinks=
"xAODTruthLinks",
498 AssociationMapOut=f
"{prefix}ITkPixelClustersToTruthParticles",
499 Measurements=kwargs.get(
'PixelClusterToTruthAssociationAlg.Measurements')))
502 name=f
"{prefix}StripClusterToTruthAssociationAlg",
503 InputTruthParticleLinks=
"xAODTruthLinks",
504 AssociationMapOut=f
"{prefix}ITkStripClustersToTruthParticles",
505 Measurements=kwargs.get(
'StripClusterToTruthAssociationAlg.Measurements')))
508 name=f
"{prefix}TruthParticleHitCountAlg",
509 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
510 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
511 TruthParticleHitCountsOut=f
"{prefix}TruthParticleHitCounts"))
513 from ActsConfig.ActsTruthConfig
import ActsTrackToTruthAssociationAlgCfg, ActsTrackFindingValidationAlgCfg
515 name=f
"{prefix}TrackToTruthAssociationAlg",
516 PixelClustersToTruthAssociationMap=f
"{prefix}ITkPixelClustersToTruthParticles",
517 StripClustersToTruthAssociationMap=f
"{prefix}ITkStripClustersToTruthParticles",
518 ACTSTracksLocation=acts_tracks,
519 AssociationMapOut=f
"{acts_tracks}ToTruthParticleAssociation"))
522 name=f
"{prefix}TrackFindingValidationAlg",
523 TrackToTruthAssociationMap=f
"{acts_tracks}ToTruthParticleAssociation",
524 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts"
528 from ActsConfig.ActsTrackFindingConfig
import ActsTrackToTrackParticleCnvAlgCfg
530 ACTSTracksLocation=[acts_tracks],
531 TrackParticlesOutKey=f
"{prefix}TrackParticles"))
532 if(flags.ITk.doTruth):
533 from ActsConfig.ActsTruthConfig
import ActsTrackParticleTruthDecorationAlgCfg
535 TrackToTruthAssociationMaps=[f
"{acts_tracks}ToTruthParticleAssociation"],
536 TrackParticleContainerName=f
"{FinalTracks}TrackParticles",
537 TruthParticleHitCounts=f
"{prefix}TruthParticleHitCounts",
538 ComputeTrackRecoEfficiency=
True))
541 if flags.Trigger.FPGATrackSim.writeOfflPRDInfo:
542 from InDetConfig.InDetPrepRawDataToxAODConfig
import ITkActsPrepDataToxAODCfg
544 PixelMeasurementContainer =
"ITkPixelMeasurements_offl",
545 StripMeasurementContainer =
"ITkStripMeasurements_offl" ) )
550 if flags.Trigger.FPGATrackSim.regionList ==
"":
551 flags.Trigger.FPGATrackSim.regionList = [flags.Trigger.FPGATrackSim.region]
553 from FPGATrackSimConfTools.FPGATrackSimHelperFunctions
import convertRegionsExpressionToArray
559 if not flags.Trigger.FPGATrackSim.runOnPreProducedHeaderFiles:
562 'FPGATrackSimSPKey':
'FPGAClusters_1st',
563 'xAODPixelClusterFromFPGAClusterKey':
'FPGAPixelClusters',
564 'xAODStripClusterFromFPGAClusterKey':
'FPGAStripClusters',
565 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
568 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
571 from FPGATrackSimConfTools.FPGATrackSimMergeOutputsConfig
import FPGATrackSimMergeOutputsAlgCfg
574 'FPGATrackSimHitKey':
'FPGAHits',
575 'xAODPixelClusterFromFPGAHitKey':
'FPGAPixelClusters',
576 'xAODStripClusterFromFPGAHitKey':
'FPGAStripClusters',
577 'xAODPixelSpacePointFromFPGAKey':
'ITkPixelSpacePoints',
582 'doSP': flags.Trigger.FPGATrackSim.convertSPs,
585 from FPGAClusterSorting.FPGAClusterSortingConfig
import FPGAClusterSortingAlgCfg
587 'xAODStripClusterContainer':
'FPGAStripClusters',
588 'sortedxAODPixelClusterContainer':
'ITkPixelClusters',
589 'sortedxAODStripClusterContainer':
'ITkStripClusters'})
591 acc.merge(ClusterSorting)
593 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
596 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
599 if flags.Acts.EDM.PersistifyClusters
or flags.Acts.EDM.PersistifySpacePoints:
602 pixel_cluster_shortlist = [
'-pixelClusterLink']
603 strip_cluster_shortlist = [
'-sctClusterLink']
605 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
606 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
608 toAOD += [
'xAOD::PixelClusterContainer#ITkPixelClusters',
609 'xAOD::PixelClusterAuxContainer#ITkPixelClustersAux.' + pixel_cluster_variables,
610 'xAOD::StripClusterContainer#ITkStripClusters',
611 'xAOD::StripClusterAuxContainer#ITkStripClustersAux.' + strip_cluster_variables]
612 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
616 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
618 perEventReports =
False,
619 **{
'xAODPixelClusterContainers' : [
'ITkPixelClusters'],
620 'xAODStripClusterContainers' : [
'ITkStripClusters'],
621 'FPGAActsTracks' : [f
'{flags.Tracking.ActiveConfig.extension}Tracks',f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}PixelTracks'],
622 'isDataPrep':
True} ))
627 flags.Scheduler.ShowDataDeps=
True
628 flags.Scheduler.CheckDependencies=
True
630 flags.Trigger.FPGATrackSim.readOfflineObjects=
False
631 flags.Trigger.FPGATrackSim.doMultiTruth=
False
638 flags.Tracking.ITkMainPass.doAthenaToActsSpacePoint=
True
639 flags.Tracking.ITkMainPass.doAthenaToActsCluster=
True
640 from ActsConfig.ActsCIFlags
import actsLegacyWorkflowFlags
642 flags.Acts.doRotCorrection =
False
648 if flags.Trigger.FPGATrackSim.wrapperFileName
and flags.Trigger.FPGATrackSim.wrapperFileName
is not None:
651 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
655 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoCnvAlgCfg
659 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
662 from JetRecConfig.JetRecoSteering
import addTruthPileupJetsToOutputCfg
665 if flags.Detector.EnableCalo:
666 from CaloRec.CaloRecoConfig
import CaloRecoCfg
669 if not flags.Reco.EnableTrackOverlay:
671 from InDetConfig.TrackRecoConfig
import InDetTrackRecoCfg
673 from InDetConfig.InDetPrepRawDataFormationConfig
import ITkXAODToInDetClusterConversionCfg
675 from InDetConfig.InDetPrepRawDataToxAODConfig
import TruthParticleIndexDecoratorAlgCfg
682 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
683 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
685 FinalDataPrepTrackChainxAODTracksKeyPrefix=
"FPGA"
688 from InDetConfig.ConfigurationHelpers
import OnlyTrackingPreInclude
696 flags.Concurrency.NumThreads=1
697 flags.Concurrency.NumConcurrentEvents=1
698 flags.Concurrency.NumProcs=0
699 flags.Scheduler.ShowDataDeps=
False
700 flags.Scheduler.CheckDependencies=
True
701 flags.Debug.DumpEvtStore=
False
704 if isinstance(flags.Trigger.FPGATrackSim.wrapperFileName, str):
705 log.info(
"wrapperFile is string, converting to list")
706 flags.Trigger.FPGATrackSim.wrapperFileName = [flags.Trigger.FPGATrackSim.wrapperFileName]
707 flags.Input.Files =
lambda f: [f.Trigger.FPGATrackSim.wrapperFileName]
709 flags.Tracking.writeExtendedSi_PRDInfo =
not flags.Trigger.FPGATrackSim.writeOfflPRDInfo
715 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
"Tracking.ITkMainPass", keepOriginal=
True)
718 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
719 acc.addService(CompFactory.THistSvc(Output = [f
"EXPERT DATAFILE='{flags.Trigger.FPGATrackSim.outputMonitorFile}', OPT='RECREATE'"]))
720 acc.addService(CompFactory.THistSvc(Output = [
"FPGATRACKSIMOUTPUT DATAFILE='dataprep.root', OPT='RECREATE'"]))
728 if flags.Trigger.FPGATrackSim.doEDMConversion:
729 acc.merge(
FPGAConversionAlgCfg(flags, name =
'FPGAConversionAlg', stage =
'_1st', doActsTrk=
False, doSP =
False))
732 from ActsConfig.ActsSpacePointFormationConfig
import ActsPixelSpacePointFormationAlgCfg
734 **{
'PixelClusters':
"xAODPixelClustersFromFPGACluster",
735 'PixelSpacePoints':
"xAODPixelSpacePointsFromFPGA"}))
737 if flags.Trigger.FPGATrackSim.connectToToITkTracking:
738 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
744 **{
'PixelSeedingAlg.InputSpacePoints' : [
'xAODPixelSpacePointsFromFPGA'],
745 'StripSeedingAlg.InputSpacePoints' : [
''],
746 'TrackFindingAlg.UncalibratedMeasurementContainerKeys' : [
"xAODPixelClustersFromFPGACluster",
"xAODStripClustersFromFPGACluster"],
747 'PixelClusterToTruthAssociationAlg.Measurements' :
'xAODPixelClustersFromFPGACluster',
748 'StripClusterToTruthAssociationAlg.Measurements' :
'xAODStripClustersFromFPGACluster'}))
751 if flags.Trigger.FPGATrackSim.writeToAOD:
754 finalTrackParticles=f
"{FinalDataPrepTrackChainxAODTracksKeyPrefix}TrackParticles"))
757 from FPGATrackSimReporting.FPGATrackSimReportingConfig
import FPGATrackSimReportingCfg
759 perEventReports = (flags.Trigger.FPGATrackSim.sampleType !=
'skipTruth'),
763 if flags.Trigger.FPGATrackSim.writeAdditionalOutputData:
764 from EFTrackingFPGAOutputValidation.FPGAOutputValidationConfig
import FPGAOutputValidationCfg
765 acc.merge(
FPGAOutputValidationCfg(flags, **{
'pixelKeys' : [
"xAODPixelClustersFromFPGACluster",
"ITkPixelClusters"],
766 'stripKeys':[
"xAODStripClustersFromFPGACluster",
"ITkStripClusters"],
767 'doDiffHistograms':
True,
768 'matchByID' :
True}))
770 acc.store(
open(
'AnalysisConfig.pkl',
'wb'))
772 statusCode = acc.run(flags.Exec.MaxEvents)
773 assert statusCode.isSuccess()
is True,
"Application execution did not succeed"
776 if __name__ ==
"__main__":