Back to home page

EIC code displayed by LXR

 
 

    


Warning, /AID2E-framework/examples/drich/workflow.yml is written in an unsupported language. File is not indexed.

0001 # This example shows:
0002 #   1. Optimization with Ax (Sobol warmup + BO)
0003 #   2. Multi-objective dRICH optimization:
0004 #        maximize pi/K separation and acceptance
0005 #   3. ePIC workflow chain: geo -> sim_rec -> ana -> retrieve_results
0006 # ============================================================================
0007 
0008 # Problem definition
0009 problem:
0010   name: "dRICH Optimization"
0011   problem_type: "EPIC_dRICH"
0012   description: "Optimization of dRICH"
0013 
0014   output_location: "./output"
0015   work_location: "./work"
0016 
0017   design_parameters_file: "./design.params"
0018 
0019   objectives:
0020     - name: "piKsep_etalow"
0021       direction: "maximize"
0022     - name: "piKsep_etahigh"
0023       direction: "maximize"
0024     - name: "acceptance"
0025       direction: "maximize"
0026 
0027   epic_environment:
0028     epic_install: "./work/eic-software"
0029     epic_config: "epic_craterlake"
0030     geometry_mode: "no_build"
0031     eic_shell: "./work/eic-shell"
0032     eic_recon_install: "./work/eic-software/share/epic/local"
0033 
0034   evaluation_config:
0035     npart: 500
0036     bootstrap_samples: 50
0037     nbootstraps: 50
0038     particles: ["pi+", "kaon+"]
0039     analysis_executable: "script/dRICHAna_bootstrap"
0040     output_name: "drich_optimization_toy"
0041     scan_points:
0042       - {p: 15, eta_min: 1.5, eta_max: 2.0, radiator: 0}
0043       - {p: 15, eta_min: 2.0, eta_max: 2.5, radiator: 0}
0044       - {p: 45, eta_min: 2.5, eta_max: 3.0, radiator: 1}
0045       - {p: 45, eta_min: 3.0, eta_max: 3.5, radiator: 1}
0046 
0047     failure_policy: "penalty" # penalty | fail
0048     max_failed_trials: 5
0049     failed_objectives:
0050       piKsep_etalow: 0.0
0051       piKsep_etahigh: 0.0
0052       acceptance: 0.0
0053 
0054 # Optimizer configuration
0055 optimizer:
0056   name: "ax"
0057   type: "bayesian"
0058   parameters:
0059     initialization_strategy: "sobol"
0060     seed: 999
0061 
0062     generator: "BOTORCH_MODULAR"
0063     objective_thresholds:
0064       piKsep_etalow: 3.62
0065       piKsep_etahigh: 4.04
0066       acceptance: 0.80
0067 
0068     n_initial_samples: 10 # n_sobol
0069     n_iterations: 50
0070     batch_size: 5 # n_batch_sobol = n_batch_mobo
0071 
0072 # Global scheduler configuration
0073 scheduler:
0074   runner_type: "JobLibRunner" # JobLibRunner, SlurmRunner, PanDAiDDSRunner
0075   parameters:
0076     n_jobs: 2
0077     backend: "threading"
0078 
0079 # Workflow execution
0080 workflows:
0081   workflows:
0082     - name: "drich_eval"
0083       description: "dRICH evaluation workflow"
0084       stack_type: "epic"
0085 
0086       branches:
0087         - name: "main"
0088           scheduler:
0089             runner_type: "SlurmRunner"
0090             parameters: &drich_stage_slurm
0091               job_name_prefix: "drich"
0092               account: "vossenlab"
0093               partition: "scavenger"
0094               nodes: 1
0095               ntasks: 1
0096               cpus_per_task: 1
0097               mem: "4G"
0098               time: "04:00:00"
0099               poll_interval: 10
0100               capture_stdout: true
0101               capture_stderr: true
0102           stages:
0103             - name: "geo"
0104               # Edit trial XML and run checkOverlaps.
0105               jobs:
0106                 - name: "drich_geo"
0107                   command: &drich_command "{{python_executable}} {{repo_root}}/examples/drich/drich_eval.py"
0108                   rule: &drich_rule_no_job_index "{{command}} --stage {{stage_id}} --trial-index {{payload[trial_index]}} --output-dir {{payload[output_dir]}} --config-path {{payload[config_path]}} --prepared-geometry-dir {{prepared_geometry_dir}}"
0109 
0110             - name: "sim_rec"
0111               # Run npsim and then eicrecon in the same job
0112               jobs:
0113                 - name: "drich_sim_rec"
0114                   command: *drich_command
0115                   rule: &drich_rule_with_job_index "{{command}} --stage {{stage_id}} --job-index {{payload[job_index]}} --trial-index {{payload[trial_index]}} --output-dir {{payload[output_dir]}} --config-path {{payload[config_path]}} --prepared-geometry-dir {{prepared_geometry_dir}}"
0116               job_factory:
0117                 type: "range"
0118                 params:
0119                   # scan_points x particles = 4 x 2
0120                   n: 8
0121 
0122             - name: "ana"
0123               # Run analysis once per scan point using pi+/kaon+ reco files.
0124               jobs:
0125                 - name: "drich_ana"
0126                   command: *drich_command
0127                   rule: *drich_rule_with_job_index
0128               job_factory:
0129                 type: "range"
0130                 params:
0131                   # scan_points = 4
0132                   n: 4
0133 
0134             - name: "retrieve_results"
0135               # Read analysis outputs and compute objectives.
0136               jobs:
0137                 - name: "drich_retrieve_results"
0138                   command: *drich_command
0139                   rule: *drich_rule_no_job_index
0140                   outputs:
0141                     - path: "{{payload[result_json]}}"
0142                       format: "json"