Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:28:28

0001 #!/usr/bin/env python3
0002 # SPDX-License-Identifier: LGPL-3.0-or-later
0003 # Copyright (C) 2024 Shujie Li
0004 
0005 import os
0006 import warnings
0007 from pathlib import Path
0008 import argparse
0009 
0010 import acts
0011 from acts.examples import (
0012     GaussianVertexGenerator,
0013     ParametricParticleGenerator,
0014     FixedMultiplicityGenerator,
0015     EventGenerator,
0016     RandomNumbers,
0017 )
0018 
0019 import acts.examples.dd4hep
0020 import acts.examples.geant4
0021 
0022 import epic
0023 from material_recording import runMaterialRecording
0024 
0025 u = acts.UnitConstants
0026 
0027 _material_recording_executed = False
0028 
0029 
0030 def main():
0031 
0032     p = argparse.ArgumentParser()
0033     p.add_argument(
0034         "-n", "--events", type=int, default=1000, help="Number of events to generate"
0035     )
0036     p.add_argument(
0037         "-t", "--tracks", type=int, default=100, help="Particle tracks per event"
0038     )
0039     p.add_argument(
0040         "-i", "--xmlFile", type=str, default=os.environ.get("DETECTOR_PATH", "") + os.environ.get("DETECTOR_CONFIG", "") + ".xml", help="DD4hep input file"
0041     )
0042     p.add_argument(
0043         "-o", "--outputName", type=str, default="geant4_material_tracks.root", help="Name of the output rootfile"
0044     )
0045     p.add_argument(
0046         "--eta_min",
0047         type=float,
0048         default=-8.0,
0049         help="eta min (optional)",
0050     )
0051     p.add_argument(
0052         "--eta_max",
0053         type=float,
0054         default=8.0,
0055         help="eta max (optional)",
0056     )
0057     args = p.parse_args()
0058 
0059     detector = epic.getDetector(
0060         args.xmlFile)
0061 
0062     runMaterialRecording(
0063         detector=detector,
0064         tracksPerEvent=args.tracks,
0065         outputDir=os.getcwd(),
0066         etaRange=(args.eta_min, args.eta_max),
0067         s=acts.examples.Sequencer(events=args.events, numThreads=1),
0068     ).run()
0069 
0070 
0071 if "__main__" == __name__:
0072     main()