@@ -10,6 +10,8 @@ if [[ ! -z $GEN_TOPO_QC_JSON_FILE ]]; then
1010 flock 101 || exit 1
1111fi
1212
13+ QC_CONFIG=
14+ QC_CONFIG_OVERRIDE=
1315if [[ -z $QC_JSON_FROM_OUTSIDE && ! -z $GEN_TOPO_QC_JSON_FILE && -f $GEN_TOPO_QC_JSON_FILE ]]; then
1416 QC_JSON_FROM_OUTSIDE=$GEN_TOPO_QC_JSON_FILE
1517elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
@@ -37,9 +39,6 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
3739 [[ -z " $QC_JSON_ZDC " ]] && has_processing_step ZDC_RECO && QC_JSON_ZDC=consul://o2/components/qc/ANY/any/zdc-rec-epn
3840 if [[ -z " $QC_JSON_MCH " ]]; then
3941 if has_detector MCH && has_processing_step MCH_RECO; then
40- if has_track_source " MCH-MID" ; then
41- QC_JSON_MCH=consul://o2/components/qc/ANY/any/mch-qcmn-epn-full-track-matching
42- else
4342 QC_JSON_MCH=consul://o2/components/qc/ANY/any/mch-qcmn-epn-full
4443 fi
4544 else
@@ -65,7 +64,19 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
6564 QC_JSON_TOF_MATCH=consul://o2/components/qc/ANY/any/tof-qcmn-match-itstpctof
6665 fi
6766 fi
67+
68+ if [[ -z " $QC_JSON_MUON_MATCH " ]]; then
69+ if has_track_source " MFT-MCH" && has_track_source " MCH-MID" ; then
70+ QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mft-mch-mid
71+ elif has_track_source " MFT-MCH" ; then
72+ QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mft-mch
73+ elif has_track_source " MCH-MID" ; then
74+ QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mch-mid
75+ fi
76+ fi
77+
6878 [[ -z " $QC_JSON_GLOBAL " ]] && QC_JSON_GLOBAL=$O2DPG_ROOT /DATA/production/qc-sync/qc-global-epn.json # this must be last
79+
6980 elif [[ $SYNCMODE == 1 ]]; then
7081 [[ -z " $QC_JSON_TPC " ]] && QC_JSON_TPC=$O2DPG_ROOT /DATA/production/qc-sync/tpc.json
7182 [[ -z " $QC_JSON_ITS " ]] && QC_JSON_ITS=$O2DPG_ROOT /DATA/production/qc-sync/its.json
@@ -96,7 +107,19 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
96107 QC_JSON_TOF_MATCH=$O2DPG_ROOT /DATA/production/qc-sync/itstpctof.json
97108 fi
98109 fi
110+
111+ if [[ -z " $QC_JSON_MUON_MATCH " ]]; then
112+ if has_track_source " MFT-MCH" && has_track_source " MCH-MID" ; then
113+ QC_JSON_MUON_MATCH=$O2DPG_ROOT /DATA/production/qc-sync/mft-mch-mid.json
114+ elif has_track_source " MFT-MCH" ; then
115+ QC_JSON_MUON_MATCH=$O2DPG_ROOT /DATA/production/qc-sync/mft-mch.json
116+ elif has_track_source " MCH-MID" ; then
117+ QC_JSON_MUON_MATCH=$O2DPG_ROOT /DATA/production/qc-sync/mch-mid.json
118+ fi
119+ fi
120+
99121 [[ -z " $QC_JSON_GLOBAL " ]] && QC_JSON_GLOBAL=$O2DPG_ROOT /DATA/production/qc-sync/qc-global.json # this must be last
122+
100123 else
101124 [[ -z " $QC_JSON_TPC " ]] && QC_JSON_TPC=$O2DPG_ROOT /DATA/production/qc-async/tpc.json
102125 [[ -z " $QC_JSON_ITS " ]] && QC_JSON_ITS=$O2DPG_ROOT /DATA/production/qc-async/its.json
@@ -133,16 +156,20 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
133156 echo " Error fetching QC JSON $2 "
134157 exit 1
135158 fi
136- JSON_FILES+=" $TMP_FILENAME "
137159 else
138- JSON_FILES+=" ${2} "
160+ TMP_FILENAME=$2
161+ fi
162+ JSON_FILES+=" $TMP_FILENAME "
163+ jq -rM ' ""' > /dev/null < $TMP_FILENAME
164+ if [[ $? != 0 ]]; then
165+ echo " Invalid QC JSON $2 " 1>&2
166+ exit 1
139167 fi
140168 OUTPUT_SUFFIX+=" -$1 "
141169 }
142170
143171 JSON_FILES=
144172 OUTPUT_SUFFIX=
145- QC_CONFIG=
146173
147174 # TOF matching
148175 if has_detector_qc TOF && [ ! -z " $QC_JSON_TOF_MATCH " ]; then
@@ -189,7 +216,7 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
189216 else
190217 MERGED_JSON_FILENAME=$GEN_TOPO_QC_JSON_FILE
191218 fi
192- jq -n ' reduce inputs as $s (input; .qc.tasks += ($s.qc.tasks) | .qc.checks += ($s.qc.checks) | .qc.externalTasks += ($s.qc.externalTasks) | .qc.postprocessing += ($s.qc.postprocessing)| .dataSamplingPolicies += ($s.dataSamplingPolicies))' $QC_JSON_GLOBAL $JSON_FILES > $MERGED_JSON_FILENAME
219+ jq -n ' reduce inputs as $s (input; .qc.tasks += ($s.qc.tasks) | .qc.checks += ($s.qc.checks) | .qc.externalTasks += ($s.qc.externalTasks) | .qc.postprocessing += ($s.qc.postprocessing)| .dataSamplingPolicies += ($s.dataSamplingPolicies))' $QC_JSON_GLOBAL $JSON_FILES > $MERGED_JSON_FILENAME
193220 if [[ $? != 0 ]]; then
194221 echo Merging QC workflow with JSON files $JSON_FILES failed 1>&2
195222 exit 1
@@ -199,7 +226,7 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
199226 if [[ " 0$QC_REDIRECT_MERGER_TO_LOCALHOST " == " 01" ]]; then
200227 sed -i.bak -E ' s/( *)"remoteMachine" *: *".*"(,?) *$/\1"remoteMachine": "127.0.0.1"\2/' $MERGED_JSON_FILENAME
201228 unlink $MERGED_JSON_FILENAME .bak
202- QC_CONFIG +=" --override-values \" qc.config.database.host=ccdb-test.cern.ch:8080\" "
229+ QC_CONFIG_OVERRIDE +=" qc.config.database.host=ccdb-test.cern.ch:8080; "
203230 fi
204231
205232 if [[ " 0$GEN_TOPO_QC_OVERRIDE_CCDB_SERVER " != " 0" ]]; then
@@ -211,7 +238,21 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then
211238 rm -Rf $FETCHTMPDIR
212239fi
213240
241+ [[ $EPNSYNCMODE == 1 && $NUMAGPUIDS == 1 ]] && QC_CONFIG_OVERRIDE+=" qc.config.infologger.filterDiscardFile=../../qc-_ID_${NUMAID} .log;"
242+
243+ [[ ! -z $QC_CONFIG_OVERRIDE ]] && QC_CONFIG+=" --override-values \" $QC_CONFIG_OVERRIDE \" "
244+
214245if [[ ! -z " $QC_JSON_FROM_OUTSIDE " ]]; then
246+ if [[ ! -f $QC_JSON_FROM_OUTSIDE ]]; then
247+ echo QC JSON FILE $QC_JSON_FROM_OUTSIDE missing 1>&2
248+ exit 1
249+ fi
250+ jq -rM ' ""' > /dev/null < $QC_JSON_FROM_OUTSIDE
251+ if [[ $? != 0 ]]; then
252+ echo " Final QC JSON FILE $QC_JSON_FROM_OUTSIDE has invalid syntax" 1>&2
253+ # cat $QC_JSON_FROM_OUTSIDE 1>&2
254+ exit 1
255+ fi
215256 add_W o2-qc " --config json://$QC_JSON_FROM_OUTSIDE ${QC_CONFIG_PARAM:- --local --host ${QC_HOST:- localhost} } ${QC_CONFIG} "
216257fi
217258
0 commit comments