Warning, /epic-lfhcal-tbana/examples/yall/fullset-g2-repro/Yallfile is written in an unsupported language. File is not indexed.
0001 campaign lfhcal-tb2026-fullset-g2-repro
0002 backend condor
0003
0004 # Set to full to record operator accounts when permitted by your site's privacy policy.
0005 %account-provenance off
0006
0007 # Reproduce Fredi's SPS H2 FullSetG_2 calibration chain from raw data.
0008 # Source recipe:
0009 # NewStructure/convertDataHGCROC_TBSPSH2_2026.sh
0010 # NewStructure/runHGCROCCalibration_TBSPSH2_2026.sh
0011 # NewStructure/helperCalibHGCROC.sh
0012 # NewStructure/stripCalib_TBSPSH2_2026.sh
0013 #
0014 # FullSetG_2 uses pedestal run 529 and muon runs
0015 # 530, 531, 532, 533, 534, 535, 536, and 537 merged as Muon_FullSetG_2.
0016 #
0017 # Unlike FullSet F, Set G uses the V1 summing-board mapping together with the
0018 # FullSetG bad-channel map and FullSetG ToA offsets.
0019 #
0020 # Fredi's published reference calibration is:
0021 # ../../../calibrations/TB2026/calib_SPS-H2_FullSetG_2.txt
0022 #
0023 # The ToA offsets are consumed from the published FullSetG file. This workflow
0024 # does not rederive them from hadron run 498.
0025 #
0026 # fixSetup is intentionally omitted: it repairs already-converted files after
0027 # mapping changes. This workflow converts fresh from raw using the current map.
0028
0029 @env LFHCAL_DATA
0030 @env LFHCAL_WORK
0031 @env EIC_SHELL
0032
0033 @set BUILD ../../../NewStructure/build
0034 @set TB2026_CONFIG ../../../configs/TB2026
0035 @set WORK fullset-g2-repro
0036 @set SET FullSetG_2
0037 @set MAPPING ../../../configs/TB2026/mapping_HGCROC_SPSH2TB_sumV1_default.csv
0038 @set BAD_CHANNELS ../../../configs/TB2026/badChannel_HGCROC_SPSTB2026_FullSetG.txt
0039 @set TOA ../../../configs/TB2026/ToAOffsets_TBSPS2026_FullSetG.csv
0040 @set RUNDB ../../../configs/TB2026/DataTakingDB_TBSPSH2_202605_HGCROC.csv
0041
0042 # Scientific run configuration lives here.
0043 @table runs type run:
0044 pedestal 529
0045 muon 530
0046 muon 531
0047 muon 532
0048 muon 533
0049 muon 534
0050 muon 535
0051 muon 536
0052 muon 537
0053
0054 %cpus 1
0055 %memory 4GB
0056 %disk 8GB
0057 %time 2h
0058 %getenv true
0059 %wrapper ../../../tools/run-in-eic-shell.sh {EIC_SHELL} /usr/bin/env ROOT_MAX_THREADS=1 OMP_NUM_THREADS=1
0060
0061 # Lightweight directory setup runs during `yall-run create`, not as a Condor job.
0062 %preflight /bin/mkdir -p \
0063 {LFHCAL_WORK}/{WORK}/converted \
0064 {LFHCAL_WORK}/{WORK}/pedestal \
0065 {LFHCAL_WORK}/{WORK}/transfer \
0066 {LFHCAL_WORK}/{WORK}/mip \
0067 {LFHCAL_WORK}/{WORK}/selected \
0068 {LFHCAL_WORK}/{WORK}/refine1 \
0069 {LFHCAL_WORK}/{WORK}/refine2 \
0070 {LFHCAL_WORK}/{WORK}/refine3 \
0071 {LFHCAL_WORK}/{WORK}/refine4 \
0072 {LFHCAL_WORK}/{WORK}/refine5 \
0073 {LFHCAL_WORK}/{WORK}/final \
0074 {LFHCAL_WORK}/{WORK}/plots/pedestal \
0075 {LFHCAL_WORK}/{WORK}/plots/transfer \
0076 {LFHCAL_WORK}/{WORK}/plots/mip \
0077 {LFHCAL_WORK}/{WORK}/plots/refine1 \
0078 {LFHCAL_WORK}/{WORK}/plots/refine2 \
0079 {LFHCAL_WORK}/{WORK}/plots/refine3 \
0080 {LFHCAL_WORK}/{WORK}/plots/refine4 \
0081 {LFHCAL_WORK}/{WORK}/plots/refine5
0082
0083 # Convert every raw run through one task family.
0084 convert-{type}-{run}:
0085 @each type run in runs
0086 @input raw {LFHCAL_DATA}/Run{run}.h2g
0087 @input mapping {MAPPING}
0088 @input rundb {RUNDB}
0089 @output root {LFHCAL_WORK}/{WORK}/converted/rawHGCROC_{run}.root
0090 %memory 2GB
0091 {BUILD}/Convert -d 0 -f -w -c @input.raw \
0092 -o @output.root -m @input.mapping -r @input.rundb
0093
0094 # Binding type=muon restricts the patterned parent fan-in, and therefore
0095 # @input.parts, to the eight muon conversions.
0096 merge-{type}: convert-{type}-{run}
0097 @each type muon
0098 @input parts {LFHCAL_WORK}/{WORK}/converted/rawHGCROC_{run}.root
0099 @output root {LFHCAL_WORK}/{WORK}/converted/rawHGCROC_Muon_{SET}.root
0100 hadd -f @output.root @input.parts
0101
0102 # Bind type here; run is inherited from the compatible conversion row.
0103 {type}-{run}: convert-{type}-{run}
0104 @each type pedestal
0105 @input raw {LFHCAL_WORK}/{WORK}/converted/rawHGCROC_{run}.root
0106 @input rundb {RUNDB}
0107 @output root {LFHCAL_WORK}/{WORK}/pedestal/rawHGCROC_wPed.root
0108 @output calib {LFHCAL_WORK}/{WORK}/pedestal/rawHGCROC_wPed_calib.txt
0109 @output hists {LFHCAL_WORK}/{WORK}/pedestal/rawHGCROC_wPed_Hists.root
0110 @output plots {LFHCAL_WORK}/{WORK}/plots/pedestal/Run{run}
0111 {BUILD}/DataPrep -a -d 1 -p -i @input.raw -f \
0112 -o @output.root -O @output.plots -r @input.rundb -F pdf
0113
0114 # The patterned pedestal parent keeps this dependency tied to the run table.
0115 transfer-g2: merge-muon {type}-{run}
0116 @input pedestal {LFHCAL_WORK}/{WORK}/pedestal/rawHGCROC_wPed.root
0117 @input raw {LFHCAL_WORK}/{WORK}/converted/rawHGCROC_Muon_{SET}.root
0118 @input bad {BAD_CHANNELS}
0119 @input toa {TOA}
0120 @input rundb {RUNDB}
0121 @output root {LFHCAL_WORK}/{WORK}/transfer/rawHGCROC_wPed_wBC_Muon_{SET}.root
0122 @output plots {LFHCAL_WORK}/{WORK}/plots/transfer/Muon_{SET}
0123 {BUILD}/DataPrep -d 1 -e -f -P @input.pedestal \
0124 -i @input.raw -o @output.root -O @output.plots \
0125 -r @input.rundb -B @input.bad -G @input.toa
0126
0127 mip-g2: transfer-g2
0128 @input root {LFHCAL_WORK}/{WORK}/transfer/rawHGCROC_wPed_wBC_Muon_{SET}.root
0129 @input rundb {RUNDB}
0130 @output root {LFHCAL_WORK}/{WORK}/mip/rawHGCROC_wPedwMuon_wBC_Muon_{SET}.root
0131 @output calib {LFHCAL_WORK}/{WORK}/mip/rawHGCROC_wPedwMuon_wBC_Muon_{SET}_calib.txt
0132 @output hists {LFHCAL_WORK}/{WORK}/mip/rawHGCROC_wPedwMuon_wBC_Muon_{SET}_Hists.root
0133 @output plots {LFHCAL_WORK}/{WORK}/plots/mip/Muon_{SET}
0134 {BUILD}/DataPrep -a -f -d 1 -e -s -i @input.root \
0135 -o @output.root -O @output.plots -r @input.rundb
0136
0137 select-g2: mip-g2
0138 @input root {LFHCAL_WORK}/{WORK}/mip/rawHGCROC_wPedwMuon_wBC_Muon_{SET}.root
0139 @output root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0140 {BUILD}/DataPrep -f -d 1 -X -i @input.root -o @output.root
0141
0142 # Fredi's *_red_woE recipe keeps fitting the same skimmed MIP sample and feeds
0143 # the previous pass's text calibration back with -k. It does not feed the
0144 # previous ROOT output into the next pass.
0145 refine1-g2: select-g2
0146 @input root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0147 @input rundb {RUNDB}
0148 @output root {LFHCAL_WORK}/{WORK}/refine1/rawHGCROC_wPedwMuon_wBC_ImpR_Muon_{SET}.root
0149 @output calib {LFHCAL_WORK}/{WORK}/refine1/rawHGCROC_wPedwMuon_wBC_ImpR_Muon_{SET}_calib.txt
0150 @output plots {LFHCAL_WORK}/{WORK}/plots/refine1/Muon_{SET}
0151 {BUILD}/DataPrep -x -a -f -d 1 -S -i @input.root \
0152 -o @output.root -O @output.plots -r @input.rundb
0153
0154 refine2-g2: refine1-g2
0155 @input root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0156 @input prev {LFHCAL_WORK}/{WORK}/refine1/rawHGCROC_wPedwMuon_wBC_ImpR_Muon_{SET}_calib.txt
0157 @input rundb {RUNDB}
0158 @output root {LFHCAL_WORK}/{WORK}/refine2/rawHGCROC_wPedwMuon_wBC_Imp2R_Muon_{SET}.root
0159 @output calib {LFHCAL_WORK}/{WORK}/refine2/rawHGCROC_wPedwMuon_wBC_Imp2R_Muon_{SET}_calib.txt
0160 @output plots {LFHCAL_WORK}/{WORK}/plots/refine2/Muon_{SET}
0161 {BUILD}/DataPrep -x -a -f -d 1 -S -i @input.root -k @input.prev \
0162 -o @output.root -O @output.plots -r @input.rundb
0163
0164 refine3-g2: refine2-g2
0165 @input root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0166 @input prev {LFHCAL_WORK}/{WORK}/refine2/rawHGCROC_wPedwMuon_wBC_Imp2R_Muon_{SET}_calib.txt
0167 @input rundb {RUNDB}
0168 @output root {LFHCAL_WORK}/{WORK}/refine3/rawHGCROC_wPedwMuon_wBC_Imp3R_Muon_{SET}.root
0169 @output calib {LFHCAL_WORK}/{WORK}/refine3/rawHGCROC_wPedwMuon_wBC_Imp3R_Muon_{SET}_calib.txt
0170 @output plots {LFHCAL_WORK}/{WORK}/plots/refine3/Muon_{SET}
0171 {BUILD}/DataPrep -x -a -f -d 1 -S -i @input.root -k @input.prev \
0172 -o @output.root -O @output.plots -r @input.rundb
0173
0174 refine4-g2: refine3-g2
0175 @input root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0176 @input prev {LFHCAL_WORK}/{WORK}/refine3/rawHGCROC_wPedwMuon_wBC_Imp3R_Muon_{SET}_calib.txt
0177 @input rundb {RUNDB}
0178 @output root {LFHCAL_WORK}/{WORK}/refine4/rawHGCROC_wPedwMuon_wBC_Imp4R_Muon_{SET}.root
0179 @output calib {LFHCAL_WORK}/{WORK}/refine4/rawHGCROC_wPedwMuon_wBC_Imp4R_Muon_{SET}_calib.txt
0180 @output plots {LFHCAL_WORK}/{WORK}/plots/refine4/Muon_{SET}
0181 {BUILD}/DataPrep -x -a -f -d 1 -S -i @input.root -k @input.prev \
0182 -o @output.root -O @output.plots -r @input.rundb
0183
0184 refine5-g2: refine4-g2
0185 @input root {LFHCAL_WORK}/{WORK}/selected/rawHGCROC_mipTrigg_wPedwMuon_wBC_Muon_{SET}.root
0186 @input prev {LFHCAL_WORK}/{WORK}/refine4/rawHGCROC_wPedwMuon_wBC_Imp4R_Muon_{SET}_calib.txt
0187 @input rundb {RUNDB}
0188 @output root {LFHCAL_WORK}/{WORK}/refine5/rawHGCROC_wPedwMuon_wBC_Imp5R_Muon_{SET}.root
0189 @output calib {LFHCAL_WORK}/{WORK}/refine5/rawHGCROC_wPedwMuon_wBC_Imp5R_Muon_{SET}_calib.txt
0190 @output plots {LFHCAL_WORK}/{WORK}/plots/refine5/Muon_{SET}
0191 {BUILD}/DataPrep -x -a -f -d 1 -S -i @input.root -k @input.prev \
0192 -o @output.root -O @output.plots -r @input.rundb
0193
0194 final-g2: refine5-g2
0195 @input root {LFHCAL_WORK}/{WORK}/refine5/rawHGCROC_wPedwMuon_wBC_Imp5R_Muon_{SET}.root
0196 @input calib {LFHCAL_WORK}/{WORK}/refine5/rawHGCROC_wPedwMuon_wBC_Imp5R_Muon_{SET}_calib.txt
0197 @output root {LFHCAL_WORK}/{WORK}/final/calib_Final_Muon_{SET}.root
0198 @output calib {LFHCAL_WORK}/{WORK}/final/calib_Final_Muon_{SET}_calib.txt
0199 ! /bin/mkdir -p {LFHCAL_WORK}/{WORK}/final && \
0200 /bin/cp @input.root @output.root && /bin/cp @input.calib @output.calib