Skip to content

Commit 7d8ae86

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 4c694eb + e03096e commit 7d8ae86

40 files changed

Lines changed: 6158 additions & 75 deletions

File tree

DATA/common/setenv_calib.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if [[ $SYNCMODE != 1 ]] && has_detector_reco TPC; then CAN_DO_CALIB_ASYNC_EXTRAC
4040
if has_detector CTP; then export CALIB_TPC_SCDCALIB_CTP_INPUT="--enable-ctp"; else export CALIB_TPC_SCDCALIB_CTP_INPUT=""; fi
4141
if [[ ${DISABLE_TRD_PH:-} == 1 ]]; then CAN_DO_CALIB_TRD_T0=0; fi
4242

43-
: ${CALIB_TPC_SCDCALIB_SLOTLENGTH:=600} # the slot length needs to be known both on the aggregator and the processing nodes, therefore it is defined (in seconds!) here
43+
: ${CALIB_TPC_SCDCALIB_SLOTLENGTH:=300} # the slot length needs to be known both on the aggregator and the processing nodes, therefore it is defined (in seconds!) here
4444
: ${CALIB_TPC_SCDCALIB_SENDTRKDATA:=1} # by default, we want to write the track information in addition to unbinned residuals to allow finer filtering offline
4545

4646
if [[ $BEAMTYPE != "cosmic" ]] || [[ ${FORCECALIBRATIONS:-} == 1 ]] ; then # Calibrations enabled in non-COSMIC runs
@@ -263,7 +263,10 @@ if [[ -z ${CALIBDATASPEC_BARREL_TF:-} ]]; then
263263
if [[ $CALIB_PRIMVTX_MEANVTX == 1 ]]; then add_semicolon_separated CALIBDATASPEC_BARREL_TF "pvtx:GLO/PVTX/0"; fi
264264

265265
# ITS
266-
if [[ $CALIB_ITS_DEADMAP_TIME == 1 ]]; then add_semicolon_separated CALIBDATASPEC_BARREL_TF "itsChipStatus:ITS/CHIPSSTATUS/0"; fi
266+
if [[ $CALIB_ITS_DEADMAP_TIME == 1 ]]; then
267+
add_semicolon_separated CALIBDATASPEC_BARREL_TF "itsChipStatus:ITS/CHIPSSTATUS/0"
268+
add_semicolon_separated CALIBDATASPEC_BARREL_TF "itsErrorInfo:ITS/ErrorInfo/0"
269+
fi
267270

268271
# MFT
269272
if [[ $CALIB_MFT_DEADMAP_TIME == 1 ]]; then add_semicolon_separated CALIBDATASPEC_BARREL_TF "mftChipStatus:MFT/CHIPSSTATUS/0"; fi

DATA/production/configurations/asyncReco/async_pass.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ fi
308308
if [[ $ALIEN_JDL_DOEMCCALIB == "1" ]]; then
309309
SETTING_ROOT_OUTPUT+="ENABLE_ROOT_OUTPUT_o2_emcal_emc_offline_calib_workflow= "
310310
fi
311-
if [[ $DO_TPC_RESIDUAL_EXTRACTION == "1" ]]; then
311+
if [[ -n "$DO_TPC_RESIDUAL_EXTRACTION" && $DO_TPC_RESIDUAL_EXTRACTION != "0" ]]; then
312312
SETTING_ROOT_OUTPUT+="ENABLE_ROOT_OUTPUT_o2_calibration_residual_aggregator= "
313313
fi
314314
if [[ $ALIEN_JDL_DOTRDVDRIFTEXBCALIB == "1" ]]; then

DATA/production/configurations/asyncReco/setenv_extra.sh

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ isFT0inDataTaking=`echo $RUN_DETECTOR_LIST | grep FT0`
289289
# For runs shorter than 10 minutes we have only a single slot.
290290
# In that case we have to adopt the slot length in order to
291291
# set the maximum number of processed tracks per TF correctly
292-
if (( RUN_DURATION < 600 )); then
292+
if (( RUN_DURATION < 300 )); then
293293
export CALIB_TPC_SCDCALIB_SLOTLENGTH=$RUN_DURATION
294294
fi
295295

@@ -716,17 +716,21 @@ if [[ $ADD_CALIB == "1" ]]; then
716716
export CALIB_TOF_INTEGRATEDCURR=0
717717
export CALIB_ITS_DEADMAP_TIME=0
718718
export CALIB_MFT_DEADMAP_TIME=0
719-
if [[ $DO_TPC_RESIDUAL_EXTRACTION == "1" ]]; then
719+
if [[ -n "$DO_TPC_RESIDUAL_EXTRACTION" && $DO_TPC_RESIDUAL_EXTRACTION != "0" ]]; then
720+
: ${ALIEN_JDL_TPCRESIDUALTRKSOURCESMAPEXTRACTION:="ITS-TPC"}
721+
: ${ALIEN_JDL_TPCRESIDUALMAXTRACKSPERSLOT:=-1}
722+
: ${ALIEN_JDL_TPCRESIDUALADDTRACKSMAP:=35000000}
720723
export CALIB_TPC_SCDCALIB=1
721724
export CALIB_TPC_SCDCALIB_SENDTRKDATA=1
722-
export CONFIG_EXTRA_PROCESS_o2_tpc_scdcalib_interpolation_workflow+=";scdcalib.additionalTracksMap=35000000;scdcalib.minPtNoOuterPoint=0.2;scdcalib.maxQ2Pt=5;scdcalib.minITSNClsNoOuterPoint=6;scdcalib.minITSNCls=4;scdcalib.minTPCNClsNoOuterPoint=90;scdcalib.minTOFTRDPVContributors=2"
723-
: ${TPC_RESIDUAL_TRK_SOURCES_MAP_EXTRACTION:="ITS-TPC"}
724-
export ARGS_EXTRA_PROCESS_o2_tpc_scdcalib_interpolation_workflow+=" --tracking-sources-map-extraction $TPC_RESIDUAL_TRK_SOURCES_MAP_EXTRACTION"
725-
# ad-hoc settings for TPC residual extraction
726-
export ARGS_EXTRA_PROCESS_o2_calibration_residual_aggregator+=" --output-type trackParams,unbinnedResid"
727-
if [[ $ALIEN_JDL_DEBUGRESIDUALEXTRACTION == "1" ]]; then
728-
export CONFIG_EXTRA_PROCESS_o2_tpc_scdcalib_interpolation_workflow+=";scdcalib.maxTracksPerCalibSlot=-1;scdcalib.minPtNoOuterPoint=0.8;scdcalib.minTPCNClsNoOuterPoint=120"
729-
export ARGS_EXTRA_PROCESS_o2_trd_global_tracking+=" --enable-qc"
725+
export CONFIG_EXTRA_PROCESS_o2_tpc_scdcalib_interpolation_workflow+=";scdcalib.maxTracksPerCalibSlot=$ALIEN_JDL_TPCRESIDUALMAXTRACKSPERSLOT;scdcalib.additionalTracksMap=$ALIEN_JDL_TPCRESIDUALADDTRACKSMAP;scdcalib.minPtNoOuterPoint=0.2;scdcalib.maxQ2Pt=5;scdcalib.minITSNClsNoOuterPoint=6;scdcalib.minITSNCls=4;scdcalib.minTPCNClsNoOuterPoint=50;scdcalib.minTOFTRDPVContributors=2"
726+
export ARGS_EXTRA_PROCESS_o2_tpc_scdcalib_interpolation_workflow+=" --tracking-sources-map-extraction $ALIEN_JDL_TPCRESIDUALTRKSOURCESMAPEXTRACTION"
727+
if [[ ! $DO_TPC_RESIDUAL_EXTRACTION =~ "NOEXTCLROAD" ]]; then
728+
clusterErrors=";GPU_rec_tpc.clusterError2AdditionalY=0.3;GPU_rec_tpc.clusterError2AdditionalZ=0.3"
729+
730+
export CONFIG_EXTRA_PROCESS_o2_gpu_reco_workflow+=";$clusterErrors"
731+
export CONFIG_EXTRA_PROCESS_o2_tpcits_match_workflow+=";$clusterErrors"
732+
export CONFIG_EXTRA_PROCESS_o2_tof_matcher_workflow+=";$clusterErrors"
733+
export CONFIG_EXTRA_PROCESS_o2_trd_global_tracking+=";$clusterErrors"
730734
fi
731735
fi
732736
export CALIB_EMC_ASYNC_RECALIB="$ALIEN_JDL_DOEMCCALIB"
@@ -828,6 +832,11 @@ if [[ $ALIEN_JDL_PREPROPAGATE == "1" ]] ; then
828832
export ARGS_EXTRA_PROCESS_o2_aod_producer_workflow+=" --propagate-tracks --propagate-tracks-max-xiu 5"
829833
fi
830834

835+
# possibility to bias the MeanVertex from the CCDB, see https://github.com/AliceO2Group/AliceO2/pull/15549
836+
if [[ -n $ALIEN_JDL_MVBIAS ]]; then
837+
export O2_DPL_MVBIAS=$ALIEN_JDL_MVBIAS
838+
fi
839+
831840
# Enabling QC
832841
if [[ $ALIEN_JDL_QCOFF != "1" ]]; then
833842
export WORKFLOW_PARAMETERS="QC,${WORKFLOW_PARAMETERS}"

GRID/utils/fetch_output_onfailure.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ RecycleBase=""
2525
for ((i = 0; i < job_number; i++)); do
2626
jobid=${FAILEDSUBJOBIDS[i]}
2727
if [ ! "${RecycleBase}" ]; then
28-
RecycleOutputDir=$(alien.py ps --trace ${jobid} | awk '/Going to uploadOutputFiles/' | sed 's/.*outputDir=//' | sed 's/)//')
28+
RecycleOutputDir=$(alien.py ps --trace ${jobid} | awk '/Going to uploadOutputFiles/' | sed 's/.*outputDir=//' | sed 's/)//' | sort -u | head -n1)
2929
# /alice/cern.ch/user/a/aliprod/recycle/alien-job-2974093751
3030
RecycleBase=${RecycleOutputDir%-${jobid}} # Removes the ${jobid} and yields the recycle base path
3131
fi
32-
$(alien.py registerOutput ${jobid}) 2> /dev/null
32+
alien.py registerOutput ${jobid} > /dev/null 2>&1
3333
done
3434

3535
# wait a bit to allow propagation of "registerOutput"

GRID/utils/grid_submit.sh

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,13 @@ export JOBLABEL
230230
export MATTERMOSTHOOK
231231
export CONTROLSERVER
232232

233-
[[ $PRODSPLIT -gt 100 ]] && echo "Production split needs to be smaller than 100 for the moment" && exit 1
233+
# Validate the production split level and derive the zero-padding width used for the
234+
# per-subjob OutputDir counter (#alien_counter_<W>i#) and for local fetching. The width
235+
# adapts to PRODSPLIT (minimum 3, so existing 3-digit layouts are unchanged), which lifts
236+
# the former hard cap of 100 while keeping OutputDir naming consistent at any scale.
237+
[[ ! $PRODSPLIT =~ ^[0-9]+$ || $PRODSPLIT -lt 1 ]] && echo "Production split must be a positive integer (got '${PRODSPLIT}')" && exit 1
238+
COUNTERWIDTH=${#PRODSPLIT}
239+
[[ $COUNTERWIDTH -lt 3 ]] && COUNTERWIDTH=3
234240

235241
# check for presence of jq (needed in code path to fetch output files)
236242
[[ "$FETCHOUTPUT" ]] && { which jq &> /dev/null || { echo "Could not find jq command. Please load or install" && exit 1; }; }
@@ -371,7 +377,7 @@ ${DATACOLLECTION:+InputDataListFormat = ${QUOT}txt-list${QUOT};}
371377
${DATACOLLECTION:+InputDataCollection = ${QUOT}LF:${MY_JOBWORKDIR}/collection.xml,nodownload${QUOT};}
372378
${PRODSPLIT:+Split = ${QUOT}${SPLITMODE}${QUOT};}
373379
${DATACOLLECTION:+SplitMaxInputFileNumber = 1;}
374-
OutputDir = "${MY_JOBWORKDIR}/${PRODSPLIT:+#alien_counter_03i#}";
380+
OutputDir = "${MY_JOBWORKDIR}/${PRODSPLIT:+#alien_counter_0${COUNTERWIDTH}i#}";
375381
Requirements = member(other.GridPartitions,"${GRIDPARTITION:-multicore_8}");
376382
CPUCores = "${CPUCORES}";
377383
MemorySize = "60GB";
@@ -504,7 +510,7 @@ EOF
504510
THIS_JOB=${SUBJOBIDS[jobindex]}
505511
echo "Fetching for job ${THIS_JOB}"
506512
if [ "${THIS_STATUS}" == "DONE" ]; then
507-
SPLITOUTDIR=$(printf "%03d" ${splitcounter})
513+
SPLITOUTDIR=$(printf "%0${COUNTERWIDTH}d" ${splitcounter})
508514
[ ! -f ${SPLITOUTDIR} ] && mkdir ${SPLITOUTDIR}
509515
echo "Fetching result files for subjob ${splitcounter} into ${PWD}"
510516
CPCMD="alien.py cp ${MY_JOBWORKDIR}/${SPLITOUTDIR}/* file:./${SPLITOUTDIR}"

GRID/utils/querymasterjob.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ erroredjobs=${tokens[8]}
2929
echo "MasterID $masterid"
3030
echo "TotalJobs $totaljobs"
3131
echo "DoneJobs $donejobs"
32-
echo "RunningJobs $donejobs"
32+
echo "RunningJobs $runningjobs"
3333
echo "ErroredJobs $erroredjobs"

MC/bin/o2dpg_sim_config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,21 @@ def add(cfg, flatconfig):
9797
add(config, {"FwdMatching.cutFcn" : "cut3SigmaXYAngles"})
9898

9999
# FIT digitizer settings
100+
#2023 pp
101+
if 534125 <= int(args.run) and int(args.run) <= 543113:
102+
if COLTYPEIR == "pp":
103+
# central and semicentral FT0 thresholds
104+
add(config, {"FT0DigParam.mtrg_central_trh": "40", "FT0DigParam.mtrg_semicentral_trh": "20"})
105+
# FV0 trigger settings
106+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "8"})
100107
# 2023 PbPb
101108
if 543437 <= int(args.run) and int(args.run) <= 545367:
102109
add(config, {"FT0DigParam.mMip_in_V": "7", "FT0DigParam.mMV_2_Nchannels": "2", "FT0DigParam.mMV_2_NchannelsInverse": "0.5"})
103110
add(config, {"FV0DigParam.adcChannelsPerMip": "4"})
111+
# central and semicentral FT0 thresholds
112+
add(config, {"FT0DigParam.mtrg_central_trh": "1433", "FT0DigParam.mtrg_semicentral_trh": "35"})
113+
# FV0 trigger settings
114+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "1080"})
104115
# 2024
105116
# first and last run of 2024
106117
if 546088 <= int(args.run) and int(args.run) <= 560623:
@@ -111,6 +122,15 @@ def add(cfg, flatconfig):
111122
if COLTYPEIR == "PbPb":
112123
# 4 ADC channels / MIP
113124
add(config, {"FV0DigParam.adcChannelsPerMip": "4"})
125+
# central and semicentral FT0 thresholds
126+
add(config, {"FT0DigParam.mtrg_central_trh": "1433", "FT0DigParam.mtrg_semicentral_trh": "35"})
127+
# FV0 trigger settings
128+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "1080"})
129+
if COLTYPEIR == "pp":
130+
# central and semicentral FT0 thresholds
131+
add(config, {"FT0DigParam.mtrg_central_trh": "40", "FT0DigParam.mtrg_semicentral_trh": "20"})
132+
# FV0 trigger settings
133+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "8"})
114134
# 2025
115135
# first and last run of 2025
116136
if 562260 <= int(args.run) and int(args.run) <= 568721:

MC/bin/o2dpg_sim_workflow.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1798,6 +1798,12 @@ def getDigiTaskName(det):
17981798
if created_by_option != '':
17991799
created_by_option += ' ' + aod_creator
18001800

1801+
aod_parent_option = option_if_available('o2-aod-producer-workflow', '--aod-parent', envfile=async_envfile)
1802+
if aod_parent_option != '' and len(args.aod_parent_file) > 0:
1803+
aod_parent_option += ' ' + args.aod_parent_file
1804+
else:
1805+
aod_parent_option = ''
1806+
18011807
aod_timeframe_id = f"${{ALIEN_PROC_ID}}{aod_df_id}" if not args.run_anchored else ""
18021808
if len(args.aod_output_folder) > 0:
18031809
aod_timeframe_id = args.aod_output_folder
@@ -1818,7 +1824,7 @@ def getDigiTaskName(det):
18181824
"--anchor-pass ${ALIEN_JDL_LPMANCHORPASSNAME:-unknown}",
18191825
"--anchor-prod ${ALIEN_JDL_LPMANCHORPRODUCTION:-unknown}",
18201826
"--reco-pass ${ALIEN_JDL_LPMPASSNAME:-unknown}",
1821-
f"--aod-parent {args.aod_parent_file}",
1827+
aod_parent_option,
18221828
created_by_option,
18231829
"--combine-source-devices" if not args.no_combine_dpl_devices else "",
18241830
"--disable-mc" if args.no_mc_labels else "",

MC/config/PWGDQ/external/generator/generator_pythia8_HadronTriggered_withGap.C

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,42 @@ FairGenerator*
211211
// gen->PrintDebug();
212212

213213
return gen;
214-
}
214+
}
215+
FairGenerator *
216+
GeneratorInclusiveJpsiPsi2SChiC_EvtGenMidY(int triggerGap, double rapidityMin = -1.5, double rapidityMax = 1.5, bool verbose = false)
217+
{
218+
auto gen = new o2::eventgen::GeneratorEvtGen<o2::eventgen::GeneratorPythia8HadronTriggeredWithGap>();
219+
gen->setTriggerGap(triggerGap);
220+
gen->setRapidityRange(rapidityMin, rapidityMax);
221+
gen->addHadronPDGs(443);
222+
gen->addHadronPDGs(100443);
223+
gen->addHadronPDGs(445);
224+
gen->addHadronPDGs(200443);
225+
gen->setVerbose(verbose);
226+
227+
TString pathO2table = gSystem->ExpandPathName("${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/pythia8/decayer/switchOffJpsi.cfg");
228+
gen->readFile(pathO2table.Data());
229+
gen->setConfigMBdecays(pathO2table);
230+
gen->PrintDebug(true);
231+
232+
gen->SetSizePdg(4);
233+
gen->AddPdg(443, 0);
234+
gen->AddPdg(100443, 1);
235+
gen->AddPdg(443, 2);
236+
gen->AddPdg(100443, 3);
237+
238+
gen->SetForceDecay(kEvtDiElectron);
239+
240+
// set random seed
241+
gen->readString("Random:setSeed on");
242+
uint random_seed;
243+
unsigned long long int random_value = 0;
244+
ifstream urandom("/dev/urandom", ios::in | ios::binary);
245+
urandom.read(reinterpret_cast<char *>(&random_value), sizeof(random_seed));
246+
gen->readString(Form("Random:seed = %llu", random_value % 900000001));
247+
248+
// print debug
249+
// gen->PrintDebug();
250+
251+
return gen;
252+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
### The external generator derives from GeneratorPythia8.
2+
[GeneratorExternal]
3+
fileName=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/external/generator/generator_pythia8_HadronTriggered_withGap.C
4+
funcName=GeneratorInclusiveJpsiPsi2SChiC_EvtGenMidY(5,-1.5,1.5)
5+
6+
[GeneratorPythia8]
7+
config=${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGDQ/pythia8/generator/pythia8_inel_triggerGap.cfg

0 commit comments

Comments
 (0)