You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1265833
Browse filesBrowse the repository at this point in the historyBrowse files
MapCreation GRID: hybrid time sampling for pp and MC mode
- Hybrid time sampling (pp): with MAKE_HYBRID_MAPS=true, SLOT_LENGTH_MIN
("fine") maps for the first FINE_WINDOW_MIN minutes of each fill and
SLOT_LENGTH_MIN_COARSE ("coarse") maps for the rest. The cutoff is anchored
to the fill start, read from optional <fill> <startTimestampMs> columns in
the discoverResiduals.sh batch file. Per-slot mapMeta.txt in the output.
- MC mode: discoverResiduals.sh --mc [--mc-cycle] searches
/alice/sim/<year>/<prodTag>/<cycle>/<run>/ and reads the merged residuals.
MC_MODE=true in submitMapCreation.sh (stageSlotsForGrid.py --mc) makes one
map per run without the per-TF time cut, since MC residual files carry no
time label.
- Post-process: request 1 core (single-threaded macros), shorter c1D/c2D QA
PNG names.
- README: hybrid and MC usage, MC examples in the Quickstart.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This searches `/alice/sim/<year>/<prodTag>/0/<run>/ResidualTPCmerging/Stage_0/` for the production's
38
+
merged residuals, falling back to the per-job files under `/alice/sim/<year>/<prodTag>/0/<run>/` with
39
+
a warning when there are none (`--mc-cycle <n>` for a production cycle other than `0`). In step 2, also set `MC_MODE=true` and `BAD_RANGES_NAME=""`. Details: "MC productions" in
40
+
"The chain, in order" below.
27
41
28
42
2.**Submit stage 1 (map creation).** In `submitMapCreation.sh`, set:
29
43
-`BAD_RANGES_NAME` — the bad-time-ranges file for this data period (keep the default if it still
@@ -43,6 +57,39 @@ left as-is.
43
57
This takes hours per map — watch progress on alimonitor and wait for it to finish (or mostly finish)
44
58
before continuing.
45
59
60
+
**pp hybrid production** (fine-length maps early in each fill, coarse-length for the rest — see
61
+
"Hybrid time sampling (pp)" below): also set `MAKE_HYBRID_MAPS=true`, `SLOT_LENGTH_MIN_COARSE`,
62
+
`FINE_WINDOW_MIN`, and it's worth pinning `RUNS_FILTER` explicitly since `./lists/` accumulates across
63
+
batches. For example:
64
+
65
+
```bash
66
+
JOBNAME="mapcreation-pp-lowfield-v1"# unique per submission
67
+
BAD_RANGES_NAME="<your pp bad-ranges file>"# or "" to disable -- the default is PbPb-specific
Edit the config block at the top of **`submitMapCreation.sh`**:
@@ -229,7 +322,11 @@ Edit the config block at the top of **`submitMapCreation.sh`**:
229
322
|---|---|
230
323
|`JOBNAME`| Identifies this production. Tags the AliEn manifest (`mapSlots.<JOBNAME>.tsv`) and the small `stage1Workdir.<JOBNAME>.txt` pointer file (see Step 3) — **must be unique per submission** so concurrent/repeated productions don't clobber each other's manifest or pointer. Stage 2 needs to know this value (see Step 4). |
231
324
|`TOPWORKDIR`| Static top-level bucket under your GRID home for this job's working directory (replaces `grid_submit.sh`'s generic `selfjobs` default with something identifiable). |
232
-
|`SLOT_LENGTH_MIN`| Target length of **one map**, in minutes. Each run is cut into whole steps of this length; a trailing remainder shorter than half a step is absorbed into the last window rather than left as a runt that would fail `MIN_TRACKS_PER_SLICE`. `0` = one map per run. A 20 min run at `5` gives 4 maps, a 60 min run gives 12 — the count follows the run length instead of being fixed. |
325
+
|`SLOT_LENGTH_MIN`| Target length of **one map**, in minutes. Each run is cut into whole steps of this length; a trailing remainder shorter than half a step is absorbed into the last window rather than left as a runt that would fail `MIN_TRACKS_PER_SLICE`. `0` = one map per run. A 20 min run at `5` gives 4 maps, a 60 min run gives 12 — the count follows the run length instead of being fixed. With `MAKE_HYBRID_MAPS=true`, this is reused as the **fine** map length (see below). |
326
+
|`MAKE_HYBRID_MAPS`|`true`/`false` (default `false`). Hybrid time sampling for pp: `SLOT_LENGTH_MIN`-length ("fine") maps for the first `FINE_WINDOW_MIN` minutes of each **fill**, `SLOT_LENGTH_MIN_COARSE`-length ("coarse") maps for the rest of that fill — see "Hybrid time sampling (pp)" below. |
327
+
|`SLOT_LENGTH_MIN_COARSE`| Only used when `MAKE_HYBRID_MAPS=true`: target length of one **coarse** map, in minutes. Same `0`/trailing-remainder semantics as `SLOT_LENGTH_MIN`, applied independently within the coarse region. |
328
+
|`FINE_WINDOW_MIN`| Only used when `MAKE_HYBRID_MAPS=true`: duration, in minutes, of the fine-sampling window measured from the fill's start (default `60`). |
329
+
|`MC_MODE`|`true`/`false` (default `false`). `true` for lists from `discoverResiduals.sh --mc`: one map per run, no time cut, `SLOT_LENGTH_MIN` ignored — see "MC productions" under Step 1. |
233
330
|`PACKAGESPEC`| O2/O2DPG software tag to run under — set this to the async-reco tag matching your data. Also determines whether `MACRO_SOURCE=official` can find the macros (see "Where the macros come from" above). |
234
331
|`ASUSER`| AliEn account this job runs/is charged as, e.g. `pwg_pp` (your account must already be a member of that group) instead of your own personal account/quota. Determines both which quota pays for the job and where its `${ALIEN_JDL_OUTPUTDIR}` lands (see Step 3). Verify on alimonitor that the first job is really attributed correctly before relying on it for a big batch. |
235
332
|`MACRO_SOURCE` / `MACRO_LOCAL_PATH`| See "Where the macros come from" above. |
@@ -259,6 +356,32 @@ Note: the macro no longer reads IDC scalers from CCDB directly (`useCTPLumi`/`nS
259
356
are gone from its signature) — luminosity values are joined back offline by `SmoothingExtrapolate.C` in
260
357
stage 2 instead (its own `USE_CTP_LUMI`, see Step 4).
261
358
359
+
#### Hybrid time sampling (pp)
360
+
361
+
pp fills need denser time sampling right after the fill starts, while space charge is still building up,
362
+
than for the rest of the fill — the same physics motivation as the old SLURM-era
363
+
`makeStaggerd.py`/`combinedSampling.py` hybrid tooling this mirrors. Set `MAKE_HYBRID_MAPS=true` and
364
+
`stageSlotsForGrid.py` cuts `SLOT_LENGTH_MIN`-length ("fine") windows for the first `FINE_WINDOW_MIN`
365
+
minutes of each **fill**, `SLOT_LENGTH_MIN_COARSE`-length ("coarse") windows for the rest of it — instead
366
+
of `SLOT_LENGTH_MIN` uniformly everywhere.
367
+
368
+
The cutoff is anchored to the **fill's own start**, not each run's — deliberately, since a pp fill
369
+
routinely spans several runs, and the build-up being sampled densely is a property of the fill, not of
370
+
where a run happens to start within it. Concretely: the fill's start is the earliest `startTimestampMs`
371
+
among that fill's runs present under `listsDir` for *this* submission (same "what's actually in this
372
+
production" scoping `RUNS_FILTER` already uses elsewhere in this doc) — so a run that starts 70 minutes
373
+
into its fill gets windowed entirely coarse, even though it is only 10 minutes old itself, while a run
374
+
straddling the cutoff gets fine windows before it and coarse windows after, with no runt window on either
375
+
side of the boundary (each region absorbs its own short trailing remainder independently, same as the
376
+
non-hybrid case).
377
+
378
+
This needs every selected run's `discoverResiduals.sh` batch-file line to have carried the optional
379
+
`<fill> <startTimestampMs>` columns (see Step 1) — that's what produces each run's `<run>.fillinfo.txt`
380
+
sidecar. If any selected run is missing it, `stageSlotsForGrid.py` fails loudly and locally, before
381
+
anything is submitted, listing exactly which run(s) — not a silent fall-back to per-run windowing, which
382
+
would silently change the physics. A non-hybrid submission (`MAKE_HYBRID_MAPS=false`, the default) needs
383
+
none of this — plain 2-column batch-file rows are enough, same as before this feature existed.
0 commit comments