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 
0003 import os
0004 
0005 import acts
0006 import acts.examples
0007 import acts.examples.hepmc3
0008 import acts.examples.dd4hep
0009 import acts.examples.geant4
0010 import acts.examples.geant4.dd4hep
0011 import acts.examples.geant4.hepmc3
0012 from acts.examples.odd import getOpenDataDetector
0013 
0014 
0015 u = acts.UnitConstants
0016 
0017 
0018 def runEventRecording(detectorConstructionFactory, outputDir, s=None):
0019     hepmc_dir = os.path.join(outputDir, "hepmc3")
0020     if not os.path.exists(hepmc_dir):
0021         os.mkdir(hepmc_dir)
0022 
0023     s = s or acts.examples.Sequencer(
0024         events=int(os.environ.get("NEVENTS", 100)), numThreads=1
0025     )
0026 
0027     rnd = acts.examples.RandomNumbers(seed=42)
0028     evGen = acts.examples.EventGenerator(
0029         level=acts.logging.INFO,
0030         generators=[
0031             acts.examples.EventGenerator.Generator(
0032                 multiplicity=acts.examples.FixedMultiplicityGenerator(n=2),
0033                 vertex=acts.examples.GaussianVertexGenerator(
0034                     stddev=acts.Vector4(0, 0, 0, 0), mean=acts.Vector4(0, 0, 0, 0)
0035                 ),
0036                 particles=acts.examples.ParametricParticleGenerator(
0037                     p=(1 * u.GeV, 10 * u.GeV),
0038                     eta=(-2, 2),
0039                     phi=(0, 90 * u.degree),
0040                     randomizeCharge=True,
0041                     numParticles=4,
0042                 ),
0043             )
0044         ],
0045         outputParticles="particles_input",
0046         outputVertices="vertices_input",
0047         randomNumbers=rnd,
0048     )
0049 
0050     s.addReader(evGen)
0051 
0052     erAlgCfg = acts.examples.geant4.hepmc3.EventRecording.Config(
0053         inputParticles=evGen.config.outputParticles,
0054         outputHepMcTracks="geant-event",
0055         seed1=43,
0056         seed2=44,
0057         detectorConstructionFactory=detectorConstructionFactory,
0058     )
0059 
0060     erAlg = acts.examples.geant4.hepmc3.EventRecording(
0061         config=erAlgCfg, level=acts.logging.INFO
0062     )
0063 
0064     s.addAlgorithm(erAlg)
0065 
0066     s.addWriter(
0067         acts.examples.hepmc3.HepMC3AsciiWriter(
0068             level=acts.logging.INFO,
0069             outputDir=hepmc_dir,
0070             outputStem="events",
0071             inputEvents=erAlg.config.outputHepMcTracks,
0072         )
0073     )
0074 
0075     return s
0076 
0077 
0078 if "__main__" == __name__:
0079     detector, trackingGeometry, decorators = getOpenDataDetector()
0080 
0081     detectorConstructionFactory = (
0082         acts.examples.geant4.dd4hep.DDG4DetectorConstructionFactory(detector)
0083     )
0084 
0085     runEventRecording(
0086         detectorConstructionFactory=detectorConstructionFactory,
0087         outputDir=os.getcwd(),
0088     ).run()