@@ -38,8 +38,10 @@ add_QC_JSON() {
3838 OUTPUT_SUFFIX+=" -$1 "
3939}
4040
41+ JSON_TEMP_FILES=" ()"
42+
4143QC_CONFIG=
42- QC_CONFIG_OVERRIDE=
44+ : ${ QC_CONFIG_OVERRIDE:= } # set to empty string only if not already set externally
4345: ${QC_DETECTOR_CONFIG_OVERRIDE:= } # set to empty string only if not already set externally
4446if [[ -z ${QC_JSON_FROM_OUTSIDE:- } && ! -z ${GEN_TOPO_QC_JSON_FILE:- } && -f $GEN_TOPO_QC_JSON_FILE ]]; then
4547 QC_JSON_FROM_OUTSIDE=$GEN_TOPO_QC_JSON_FILE
@@ -251,7 +253,71 @@ elif [[ -z ${QC_JSON_FROM_OUTSIDE:-} ]]; then
251253 DET_JSON_FILE=" QC_JSON_GLO_$i "
252254 if has_matching_qc $i && [ ! -z " ${! DET_JSON_FILE:- } " ]; then
253255 if [[ $i == " PRIMVTX" ]] && ! has_detector_reco ITS; then continue ; fi
254- if [[ $i == " ITSTPC" ]] && ! has_detectors_reco ITS TPC; then continue ; fi
256+ if [[ $i == " ITSTPC" ]] ; then
257+ if ! has_detectors_reco ITS TPC; then continue
258+ else
259+ # replace the input sources depending on the detector compostition and matching detectors
260+ ITSTPCMatchQuery=" trackITSTPC:GLO/TPCITS/0;trackITSTPCABREFS:GLO/TPCITSAB_REFS/0;trackITSTPCABCLID:GLO/TPCITSAB_CLID/0;trackTPC:TPC/TRACKS;trackTPCClRefs:TPC/CLUSREFS/0;trackITS:ITS/TRACKS/0;trackITSROF:ITS/ITSTrackROF/0;trackITSClIdx:ITS/TRACKCLSID/0;alpparITS:ITS/ALPIDEPARAM/0?lifetime=condition&ccdb-path=ITS/Config/AlpideParam;SVParam:GLO/SVPARAM/0?lifetime=condition&ccdb-path=GLO/Config/SVertexerParam"
261+ TRACKSOURCESK0=" ITS,TPC,ITS-TPC"
262+ if has_processing_step MATCH_SECVTX || has_detector_matching SECVTX ; then
263+ if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
264+ HAS_K0_ENABLED=$( jq -r .qc.tasks.MTCITSTPC.taskParameters.doK0QC " ${! DET_JSON_FILE} " )
265+ else
266+ HAS_K0_ENABLED=$( jq -r .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC " ${! DET_JSON_FILE} " )
267+ fi
268+ if [[ $HAS_K0_ENABLED == " true" ]]; then
269+ ITSTPCMatchQuery+=" ;p2decay3body:GLO/PVTX_3BODYREFS/0;decay3body:GLO/DECAYS3BODY/0;decay3bodyIdx:GLO/DECAYS3BODY_IDX/0;p2cascs:GLO/PVTX_CASCREFS/0;cascs:GLO/CASCS/0;cascsIdx:GLO/CASCS_IDX/0;p2v0s:GLO/PVTX_V0REFS/0;v0s:GLO/V0S/0;v0sIdx:GLO/V0S_IDX/0;pvtx_tref:GLO/PVTX_TRMTCREFS/0;pvtx_trmtc:GLO/PVTX_TRMTC/0;pvtx:GLO/PVTX/0;clusTPCoccmap:TPC/TPCOCCUPANCYMAP/0;clusTPC:TPC/CLUSTERNATIVE;clusTPCshmap:TPC/CLSHAREDMAP/0;trigTPC:TPC/TRIGGERWORDS/0"
270+ if has_secvtx_source ITS-TPC-TRD ; then
271+ ITSTPCMatchQuery+=" ;trigITSTPCTRD:TRD/TRGREC_ITSTPC/0;trackITSTPCTRD:TRD/MATCH_ITSTPC/0"
272+ TRACKSOURCESK0+=" ,ITS-TPC-TRD"
273+ fi
274+ if has_secvtx_source ITS-TPC-TOF ; then
275+ ITSTPCMatchQuery+=" ;matchITSTPCTOF:TOF/MTC_ITSTPC/0"
276+ TRACKSOURCESK0+=" ,ITS-TPC-TOF"
277+ fi
278+ if has_secvtx_source ITS-TPC-TRD-TOF ; then
279+ ITSTPCMatchQuery+=" ;matchITSTPCTRDTOF:TOF/MTC_ITSTPCTRD/0"
280+ TRACKSOURCESK0+=" ,ITS-TPC-TRD-TOF"
281+ fi
282+ if has_secvtx_source TPC-TRD ; then
283+ ITSTPCMatchQuery+=" ;trigTPCTRD:TRD/TRGREC_TPC/0;trackTPCTRD:TRD/MATCH_TPC/0"
284+ TRACKSOURCESK0+=" ,TPC-TRD"
285+ fi
286+ if has_secvtx_source TPC-TOF ; then
287+ ITSTPCMatchQuery+=" ;matchTPCTOF:TOF/MTC_TPC/0;trackTPCTOF:TOF/TOFTRACKS_TPC/0"
288+ TRACKSOURCESK0+=" ,TPC-TOF"
289+ fi
290+ if has_secvtx_source TPC-TRD-TOF ; then
291+ ITSTPCMatchQuery+=" ;matchTPCTRDTOF/TOF/MTC_TPCTRD/0"
292+ TRACKSOURCESK0+=" ,TPC-TRD-TOF"
293+ fi
294+ if has_secvtx_source TOF ; then
295+ ITSTPCMatchQuery+=" ;tofcluster:TOF/CLUSTERS/0"
296+ TRACKSOURCESK0+=" ,TOF"
297+ fi
298+ if has_secvtx_source TRD ; then
299+ TRACKSOURCESK0+=" ,TRD"
300+ fi
301+ fi
302+ TEMP_FILE=$( mktemp " ${i} " _XXXXXXX)
303+ if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
304+ cat " ${! DET_JSON_FILE} " | jq " (.dataSamplingPolicies[] | select(.id == \" ITSTPCmSampK0\" ) | .query) = \" $ITSTPCMatchQuery \" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \" $TRACKSOURCESK0 \" " > " $TEMP_FILE "
305+ else
306+ cat " ${! DET_JSON_FILE} " | jq " .qc.tasks.GLOMatchTrITSTPC.dataSource.query = \" $ITSTPCMatchQuery \" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \" $TRACKSOURCESK0 \" " > " $TEMP_FILE "
307+ fi
308+ else
309+ # we need to force that the K0s part is disabled
310+ TEMP_FILE=$( mktemp " ${i} " _XXXXXXX)
311+ if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
312+ cat " ${! DET_JSON_FILE} " | jq " (.dataSamplingPolicies[] | select(.id == \" ITSTPCmSampK0\" ) | .query) = \" $ITSTPCMatchQuery \" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \" $TRACKSOURCESK0 \" | .qc.tasks.MTCITSTPC.taskParameters.doK0QC = \" false\" " > " $TEMP_FILE "
313+ else
314+ cat " ${! DET_JSON_FILE} " | jq " .qc.tasks.GLOMatchTrITSTPC.dataSource.query = \" $ITSTPCMatchQuery \" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \" $TRACKSOURCESK0 \" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC = \" false\" " > " $TEMP_FILE "
315+ fi
316+ fi
317+ DET_JSON_FILE=TEMP_FILE
318+ JSON_TEMP_FILES+=(" $TEMP_FILE " )
319+ fi
320+ fi
255321 add_QC_JSON GLO_$i ${! DET_JSON_FILE}
256322 fi
257323 done
@@ -303,6 +369,11 @@ elif [[ -z ${QC_JSON_FROM_OUTSIDE:-} ]]; then
303369 fi
304370 MERGED_JSON_FILENAME=$( realpath $MERGED_JSON_FILENAME )
305371
372+ # Clean up: delete the temporary files after use
373+ for tf in " ${JSON_TEMP_FILES[@]} " ; do
374+ rm -f " $tf "
375+ done
376+
306377 if [[ " ${QC_REDIRECT_MERGER_TO_LOCALHOST:- } " == " 1" ]]; then
307378 sed -i.bak -E ' s/( *)"remoteMachine" *: *".*"(,?) *$/\1"remoteMachine": "127.0.0.1"\2/' $MERGED_JSON_FILENAME
308379 unlink $MERGED_JSON_FILENAME .bak
@@ -341,7 +412,9 @@ if [[ ! -z "${QC_JSON_FROM_OUTSIDE:-}" ]]; then
341412 QC_CONFIG_PARAM=" --local-batch=QC.root"
342413 fi
343414 fi
415+
344416 add_W o2-qc " --config json://$QC_JSON_FROM_OUTSIDE ${QC_CONFIG_PARAM} ${QC_CONFIG} "
417+
345418fi
346419
347420if [[ ! -z ${GEN_TOPO_QC_JSON_FILE:- } ]]; then
0 commit comments