Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:10:08

0001 #!/usr/bin/env python3
0002 import pathlib, acts, acts.examples, acts.examples.itk
0003 from acts.examples.simulation import (
0004     addParticleGun,
0005     MomentumConfig,
0006     EtaConfig,
0007     ParticleConfig,
0008     addPythia8,
0009     addFatras,
0010     ParticleSelectorConfig,
0011     addDigitization,
0012 )
0013 from acts.examples.reconstruction import (
0014     addSeeding,
0015     SeedingAlgorithm,
0016     TruthSeedRanges,
0017     addCKFTracks,
0018     TrackSelectorConfig,
0019 )
0020 
0021 ttbar_pu200 = False
0022 u = acts.UnitConstants
0023 geo_dir = pathlib.Path("acts-itk")
0024 outputDir = pathlib.Path.cwd() / "itk_output"
0025 # acts.examples.dump_args_calls(locals())  # show acts.examples python binding calls
0026 
0027 detector, trackingGeometry, decorators = acts.examples.itk.buildITkGeometry(geo_dir)
0028 field = acts.examples.MagneticFieldMapXyz(str(geo_dir / "bfield/ATLAS-BField-xyz.root"))
0029 rnd = acts.examples.RandomNumbers(seed=42)
0030 
0031 s = acts.examples.Sequencer(events=100, numThreads=1, outputDir=str(outputDir))
0032 
0033 if not ttbar_pu200:
0034     addParticleGun(
0035         s,
0036         MomentumConfig(1.0 * u.GeV, 10.0 * u.GeV, transverse=True),
0037         EtaConfig(-4.0, 4.0, uniform=True),
0038         ParticleConfig(2, acts.PdgParticle.eMuon, randomizeCharge=True),
0039         rnd=rnd,
0040     )
0041 else:
0042     addPythia8(
0043         s,
0044         hardProcess=["Top:qqbar2ttbar=on"],
0045         npileup=200,
0046         vtxGen=acts.examples.GaussianVertexGenerator(
0047             stddev=acts.Vector4(0.0125 * u.mm, 0.0125 * u.mm, 55.5 * u.mm, 5.0 * u.ns),
0048             mean=acts.Vector4(0, 0, 0, 0),
0049         ),
0050         rnd=rnd,
0051         outputDirRoot=outputDir,
0052     )
0053 
0054 addFatras(
0055     s,
0056     trackingGeometry,
0057     field,
0058     rnd=rnd,
0059     preSelectParticles=ParticleSelectorConfig(
0060         rho=(0.0 * u.mm, 28.0 * u.mm),
0061         absZ=(0.0 * u.mm, 1.0 * u.m),
0062         eta=(-4.0, 4.0),
0063         pt=(150 * u.MeV, None),
0064         removeNeutral=True,
0065     )
0066     if ttbar_pu200
0067     else ParticleSelectorConfig(),
0068     outputDirRoot=outputDir,
0069 )
0070 
0071 addDigitization(
0072     s,
0073     trackingGeometry,
0074     field,
0075     digiConfigFile=geo_dir
0076     / "itk-hgtd/itk-smearing-config.json",  # change this file to make it do digitization
0077     outputDirRoot=outputDir,
0078     rnd=rnd,
0079 )
0080 
0081 addSeeding(
0082     s,
0083     trackingGeometry,
0084     field,
0085     TruthSeedRanges(pt=(1.0 * u.GeV, None), eta=(-4.0, 4.0), nHits=(9, None))
0086     if ttbar_pu200
0087     else TruthSeedRanges(),
0088     seedingAlgorithm=SeedingAlgorithm.Gbts,
0089     *acts.examples.itk.itkSeedingAlgConfig(
0090         acts.examples.itk.InputSpacePointsType.PixelSpacePoints
0091     ),
0092     geoSelectionConfigFile=geo_dir / "itk-hgtd/geoSelection-ITk.json",
0093     layerMappingConfigFile=geo_dir / "itk-hgtd/ACTS_FTF_mapinput.csv",
0094     connector_inputConfigFile=geo_dir / "itk-hgtd/binTables_ITK_RUN4.txt",
0095     outputDirRoot=outputDir,
0096 )
0097 
0098 addCKFTracks(
0099     s,
0100     trackingGeometry,
0101     field,
0102     TrackSelectorConfig(
0103         pt=(1.0 * u.GeV if ttbar_pu200 else 0.0, None),
0104         absEta=(None, 4.0),
0105         nMeasurementsMin=6,
0106     ),
0107     outputDirRoot=outputDir,
0108 )
0109 
0110 
0111 s.run()