Back to home page

EIC code displayed by LXR

 
 

    


Warning, /epic-lfhcal-tbana/examples/yall/README.md is written in an unsupported language. File is not indexed.

0001 # LFHCal Yall examples
0002 
0003 **New BNL user: start with [SETUP.md](SETUP.md).** It installs in your chosen
0004 software workspace, uses shared PWG raw input and your own scratch work area,
0005 and walks through small host/container tests, the three-task EIC Condor smoke
0006 test, and then `scan-set-1`. All interactive commands use your normal tcsh
0007 login/submit session. FullSet F2 is not the first test.
0008 
0009 ## Production workflows
0010 
0011 `scan-set-1` covers pedestal/muon pairs `296/298`, `299/300`, `303/304`,
0012 `307/308`, `309/310`, using `ToAOffsets_TBSPS2026_ParamScan_1.csv`.
0013 `scan-set-2` covers the later parameter scan, using
0014 `ToAOffsets_TBSPS2026_ParamScan_2.csv`.
0015 
0016 The repository has reproduction examples for all 14 published TB2026 FullSet
0017 B-G merged-muon calibrations:
0018 
0019 | Workflow | Pedestal | Muon runs in Fredi's merge order | Published set |
0020 | --- | ---: | --- | --- |
0021 | `fullset-b1-repro` | 071 | 072–084 | `FullSetB_1` |
0022 | `fullset-b2-repro` | 126 | 127–133 | `FullSetB_2` |
0023 | `fullset-c1-repro` | 137 | 147,148,149,146,145,144,141,142,143,140,139,138 | `FullSetC_1` |
0024 | `fullset-c2-repro` | 188 | 189,194,190,191,193,192 | `FullSetC_2` |
0025 | `fullset-c3-repro` | 278 | 289–293 | `FullSetC_3` |
0026 | `fullset-d1-repro` | 206 | 208–224 | `FullSetD_1` |
0027 | `fullset-d2-repro` | 264 | 266–270 | `FullSetD_2` |
0028 | `fullset-e1-repro` | 372 | 373–378 | `FullSetE_1` |
0029 | `fullset-e2-repro` | 420 | 421,422,423,425,424 | `FullSetE_2` |
0030 | `fullset-e3-repro` | 471 | 473,474,477,478,481,482 | `FullSetE_3` |
0031 | `fullset-f1-repro` | 431 | 426–430 | `FullSetF_1` |
0032 | `fullset-f2-repro` | 471 | 472,475,476,479,480,483 | `FullSetF_2` |
0033 | `fullset-g1-repro` | 485 | 484,486–491 | `FullSetG_1` |
0034 | `fullset-g2-repro` | 529 | 530–537 | `FullSetG_2` |
0035 
0036 The nine published HV-scan calibration tables are covered by
0037 `hvscan-repro`, which shares pedestal 188 across muon runs 194-202 and
0038 reproduces the 42-46 V scan in 0.5 V steps.
0039 
0040 Together with the 14 FullSet references, these workflows cover all 23 calibration text tables currently published under `calibrations/TB2026`.
0041 
0042 Each FullSet workflow has one typed `@table runs type run:` table. A single
0043 `convert-{type}-{run}` family converts every row. `merge-muon` binds
0044 `type=muon`; the `{type}-{run}` pedestal family binds only
0045 `type=pedestal` and inherits its run from the compatible parent.
0046 
0047 FullSet B-F use the V2 summing-board mapping and shared FullSetA-F bad-channel
0048 map. FullSet G uses V1 and the FullSetG bad-channel map. The examples preserve
0049 Fredi's ToA selections, including FullSetC_2 offsets for C3 and FullSetF
0050 offsets for E3.
0051 
0052 The B-E and HV-scan examples include `download_raw.tcsh`, which downloads exactly the
0053 pedestal and merged-muon inputs from the JLab XRootD source. All published
0054 FullSet results can be compared with:
0055 
0056 ```tcsh
0057 python3 "$LFHCAL_REPO/examples/yall/compare_fullset.py" --set-name FullSetC_2
0058 ```
0059 
0060 The comparison tool reports refinement-stage differences and assembles plot
0061 PDFs using `pdfunite`, `qpdf`, or Ghostscript.
0062 
0063 The production Yallfiles read `Run<run>.h2g` from `LFHCAL_DATA` and write
0064 under `LFHCAL_WORK/<example-name>`. Source `env.tcsh` from the example
0065 directory to load the bootstrapped installation and prepare the work area.
0066 
0067 ## Teaching examples
0068 
0069 `hgcroc-study` is a one-task local example. `calibration-pair` demonstrates two
0070 calibration tasks using pre-existing ROOT inputs. `lfhcal-simple` is the bounded
0071 local smoke test: it converts three pedestal/MIP pairs and extracts the three
0072 pedestals with a 1000-event limit. It deliberately stops before MIP scaling and
0073 waveform-summary work because the bounded sample is not intended to populate
0074 those fits and histograms reliably. The pair table is retained so the smoke test
0075 still exercises shared conversion and dependency expansion.
0076 
0077 The `calibration-pair`, `hgcroc-study`, and `hgcroc-study-condor` directories each
0078 contain a README describing the input file that must be supplied. They do not
0079 ship example ROOT data. The notes use TB2026 runs `296/298` as an example
0080 pedestal/MIP pair and run `298` as an example HGCROC study input; those run
0081 numbers are examples rather than hard requirements.
0082 
0083 These older local recipes have their own input assumptions and do not
0084 automatically acquire a container wrapper or switch to scratch output just by
0085 sourcing an environment file. Do not run them as heavy work on a login node.
0086 `hgcroc-study-condor` is a small batch example with a pre-existing converted
0087 input. For a fresh BNL installation, use the no-data EIC/Condor test in SETUP.md
0088 instead.
0089 
0090 ## Runner version and graph checks
0091 
0092 `lfhcal-simple` and the scan workflows require combined named-source `@each`
0093 support from yall-run PR #26 (commit
0094 `a690f2551edb21e099aa2adf4b2b077d12c6a787`). The FullSet workflows also
0095 require partial explicit binding and patterned-parent inheritance from yall-run
0096 PR #33, merged as commit
0097 `1081e9dd39418262588248272618130ce0503b8a`. The explicit account-provenance
0098 policy now raises the minimum to **yall-run 0.12.0a7**, including PR #45
0099 (merged as `5a39498d023b1c9edcaa08926c80f2bb848efda9`). Use `main` containing
0100 that change, not just a matching alpha version string. The Condor workflows
0101 also use the merged payload-wrapper and `%time` features.
0102 
0103 ```tcsh
0104 python3 "$LFHCAL_REPO/examples/yall/check_shared_conversions.py" -v
0105 ```
0106 
0107 This checks graph expansion without ROOT, raw data or scheduler submission.
0108 Conversions visit the ordered union of pedestal and muon columns once each;
0109 shared pedestal runs do not produce duplicate output owners. It also checks all 14 published FullSet task counts, typed conversion
0110 families, muon-only merge fan-in, inherited pedestal runs, and transfer
0111 dependencies that follow the run table. Reusing the same muon run with different pedestal choices still requires
0112 separate work areas or explicitly pair-specific output paths.
0113 
0114 ## Execution boundary
0115 
0116 Yall and Condor run on the host. Production scientific commands use the
0117 `tools/run-in-eic-shell.sh` adapter, which sends a quoted command through
0118 `eic-shell` standard input and preserves argument/exit-status behavior.
0119 The `.sh` suffix identifies its interpreter, not an interactive shell you
0120 need to enter. Do not submit Condor campaigns from inside the container.
0121 
0122 The scan workflows request one CPU and set `ROOT_MAX_THREADS=1` and
0123 `OMP_NUM_THREADS=1` inside the payload environment. The adapter is archived by
0124 Yall; its external EIC launcher and container image are not automatically
0125 archived or pinned. Use the same EIC environment to compile and execute LFHCal.
0126 A launcher pointing at `nightly` still selects a moving image.
0127 
0128 Software, inputs, outputs and campaign records must be visible on batch nodes,
0129 including through the relevant container binds. Host readability alone does
0130 not establish container readability; that is why the batch smoke test comes
0131 before an analysis.
0132 
0133 ## Runtime and existing campaigns
0134 
0135 `%time 2h` is a per-task request, including container startup, not a campaign
0136 runtime estimate. Condor renders it as `+MaxRuntime = 7200`. Enforcement depends
0137 on site policy; it is not the separate `allowed_execute_duration` setting.
0138 Do not assume BNL enforces CERN's runtime policy.
0139 
0140 Pulling code or editing a Yallfile does not update already-created campaigns or
0141 queued jobs. `resume` reuses frozen requests. Use new campaigns and fresh output
0142 roots for changed recipes or resource requests, and do not rebuild the shared
0143 LFHCal checkout while jobs are using it.
0144 
0145 Yall records campaign, task, executable, input/output, scheduler and attempt
0146 provenance separately; it does not inject LFHCal-specific provenance into ROOT
0147 files. Preserve campaign records together with important final products.
0148 
0149 ## Account provenance
0150 
0151 The larger examples explicitly set `%account-provenance off`, with a comment
0152 showing when to select `full`. This directive requires **yall-run 0.12.0a7 or
0153 newer**. Account recording also defaults to off when the directive is omitted.
0154 
0155 Use `full` to preserve creator, submitter, and host-worker account attribution
0156 when permitted by your site's privacy policy. A creation-time
0157 `--account-provenance full` or `--account-provenance off` overrides the recipe;
0158 the resolved choice is frozen for that campaign before any account lookup.
0159 
0160 This controls explicit OS-account snapshots only. Paths, command arguments,
0161 logs, scheduler records, and analysis outputs are not anonymized. Existing
0162 campaigns and their archived workers are not retroactively changed.