diff --git a/benchmarks/calo_pid/Snakefile b/benchmarks/calo_pid/Snakefile index 3d32bd64008f666c93208ce3979f2a980b35d8f7..05c77f3e6e6ef639e81cf124397c68ad1e24ca6a 100644 --- a/benchmarks/calo_pid/Snakefile +++ b/benchmarks/calo_pid/Snakefile @@ -64,22 +64,25 @@ exec env DETECTOR_CONFIG={wildcards.DETECTOR_CONFIG} \ """ -rule calo_pid: +rule calo_pid_input_list: input: electrons=expand( - "sim_output/calo_pid/{{DETECTOR_CONFIG}}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX:04d}.eicrecon.tree.edm4eic.root", - PARTICLE=["e-"], - ENERGY=["100MeVto20GeV"], - PHASE_SPACE=["130to177deg"], - INDEX=range(100), - ), - pions=expand( - "sim_output/calo_pid/{{DETECTOR_CONFIG}}/{PARTICLE}/{ENERGY}/{PHASE_SPACE}/{PARTICLE}_{ENERGY}_{PHASE_SPACE}.{INDEX:04d}.eicrecon.tree.edm4eic.root", - PARTICLE=["pi-"], + "sim_output/calo_pid/{{DETECTOR_CONFIG}}/{{PARTICLE}}/{ENERGY}/{PHASE_SPACE}/{{PARTICLE}}_{ENERGY}_{PHASE_SPACE}.{INDEX:04d}.eicrecon.tree.edm4eic.root", ENERGY=["100MeVto20GeV"], PHASE_SPACE=["130to177deg"], INDEX=range(100), ), + output: + "listing/calo_pid/{DETECTOR_CONFIG}/{PARTICLE}.lst", + run: + with open(output[0], "wt") as fp: + fp.write("\n".join(input)) + + +rule calo_pid: + input: + electrons="listing/calo_pid/{DETECTOR_CONFIG}/e-.lst", + pions="listing/calo_pid/{DETECTOR_CONFIG}/pi-.lst", matplotlibrc=".matplotlibrc", script="benchmarks/calo_pid/calo_pid.py", output: diff --git a/benchmarks/calo_pid/calo_pid.org b/benchmarks/calo_pid/calo_pid.org index a46aec027c76ad47774796fc95a152cfc4430f58..965af1400e13dcc7229908bda4b2a0a7aa251a9a 100644 --- a/benchmarks/calo_pid/calo_pid.org +++ b/benchmarks/calo_pid/calo_pid.org @@ -32,8 +32,8 @@ vector.register_awkward() #+begin_src jupyter-python :results silent DETECTOR_CONFIG=os.environ.get("DETECTOR_CONFIG") PLOT_TITLE=os.environ.get("PLOT_TITLE") -INPUT_PIONS=os.environ.get("INPUT_PIONS", "").split(" ") -INPUT_ELECTRONS=os.environ.get("INPUT_ELECTRONS", "").split(" ") +INPUT_PIONS=os.environ.get("INPUT_PIONS") +INPUT_ELECTRONS=os.environ.get("INPUT_ELECTRONS") output_dir=Path(os.environ.get("OUTPUT_DIR", "./")) output_dir.mkdir(parents=True, exist_ok=True) @@ -75,8 +75,13 @@ def filter_pointing(events): cond = (part_momentum.eta[:,0] > -3.5) & (part_momentum.eta[:,0] < -2.) return events[cond] -e = filter_pointing(uproot.concatenate({filename: "events" for filename in INPUT_ELECTRONS}, filter_name=["MCParticles.*", "*EcalEndcapN*"])) -pi = filter_pointing(uproot.concatenate({filename: "events" for filename in INPUT_PIONS}, filter_name=["MCParticles.*", "*EcalEndcapN*"])) +def readlist(path): + with open(path, "rt") as fp: + paths = [line.rstrip() for line in fp.readlines()] + return paths + +e = filter_pointing(uproot.concatenate({filename: "events" for filename in readlist(INPUT_ELECTRONS)}, filter_name=["MCParticles.*", "*EcalEndcapN*"])) +pi = filter_pointing(uproot.concatenate({filename: "events" for filename in readlist(INPUT_PIONS)}, filter_name=["MCParticles.*", "*EcalEndcapN*"])) e_train = e[:len(pi)//2] pi_train = pi[:len(pi)//2]