diff --git a/DATA/production/qc-async/mch-digits.json b/DATA/production/qc-async/mch-digits.json new file mode 100644 index 000000000..7b6cfecf4 --- /dev/null +++ b/DATA/production/qc-async/mch-digits.json @@ -0,0 +1,44 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "QcTaskMCHDigits": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskDigits", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "60", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS/0" + }, + "taskParameters": { + "Diagnostic": "false" + } + } + }, + "checks": {} + } +} \ No newline at end of file diff --git a/DATA/production/qc-async/mch-reco.json b/DATA/production/qc-async/mch-reco.json new file mode 100644 index 000000000..4a9dad236 --- /dev/null +++ b/DATA/production/qc-async/mch-reco.json @@ -0,0 +1,68 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "MCHRofs": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskRofs", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS;rofs:MCH/DIGITROFS" + } + }, + "MCHPreclusters": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskPreclusters", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "540", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "preclusters:MCH/PRECLUSTERS/0;preclusterdigits:MCH/PRECLUSTERDIGITS/0" + } + } + }, + "checks": { + "QcCheckMCHPreclusters": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsPreclustersCheck", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "policy": "OnAny", + "dataSource": [ + { + "type": "Task", + "name": "MCHPreclusters", + "MOs": "all" + } + ] + } + } + } +} \ No newline at end of file diff --git a/DATA/production/qc-async/mch-tracks.json b/DATA/production/qc-async/mch-tracks.json new file mode 100644 index 000000000..5580dddd1 --- /dev/null +++ b/DATA/production/qc-async/mch-tracks.json @@ -0,0 +1,44 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "MCHTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "MCH", + "cycleDurationSeconds": "180", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;mchgeo:GLO/Config/0?lifetime=condition&ccdb-path=GLO/Config/GeometryAligned" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MCH" + } + } + } + } +} \ No newline at end of file diff --git a/DATA/production/qc-sync/mch.json b/DATA/production/qc-sync/mch-digits.json similarity index 100% rename from DATA/production/qc-sync/mch.json rename to DATA/production/qc-sync/mch-digits.json diff --git a/DATA/production/qc-sync/mch-mid.json b/DATA/production/qc-sync/mch-mid.json new file mode 100644 index 000000000..8cb22fcc2 --- /dev/null +++ b/DATA/production/qc-sync/mch-mid.json @@ -0,0 +1,55 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "ali-qcdb.cern.ch:8083", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "influxdb-unix:///tmp/telegraf.sock" + }, + "consul": { + "url": "null:8500" + }, + "conditionDB": { + "url": "null:8083" + } + }, + "tasks": { + "FwdTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "cycleDurationSeconds": "180", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMID:MID/TRACKS;trackMIDROF:MID/TRACKROFS;trackMIDTRACKCLUSTERS:MID/TRACKCLUSTERS;trackClMIDROF:MID/TRCLUSROFS;matchMCHMID:GLO/MTC_MCHMID" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MCH,MID,MCH-MID" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47789", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + } + }, + "checks": {} + }, + "dataSamplingPolicies": [] +} \ No newline at end of file diff --git a/DATA/production/qc-sync/mch-reco.json b/DATA/production/qc-sync/mch-reco.json new file mode 100644 index 000000000..5a1ecae33 --- /dev/null +++ b/DATA/production/qc-sync/mch-reco.json @@ -0,0 +1,192 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "ali-qcdb.cern.ch:8083", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable", + "maxObjectSize": "16777216" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "influxdb-unix:///tmp/telegraf.sock" + }, + "consul": { + "url": "http://ali-consul.cern.ch:8500" + }, + "conditionDB": { + "url": "o2-ccdb.internal" + } + }, + "tasks": { + "QcTaskMCHDigits": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskDigits", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS;orbits:MCH/ORBITS", + "type2": "dataSamplingPolicy", + "name2": "mchdigits" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47790", + "remoteMachine": "alio2-cr1-qc01.cern.ch", + "mergersPerLayer": [ + "3", + "1" + ] + }, + "QcTaskMCHErrors": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::DecodingErrorsTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "rawerrors:MCH/ERRORS" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47791", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + }, + "MCHRofs": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskRofs", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS;rofs:MCH/DIGITROFS" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47792", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + }, + "MCHPreclusters": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsTaskPreclusters", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "540", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "preclusters:MCH/PRECLUSTERS/0;preclusterdigits:MCH/PRECLUSTERDIGITS/0" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47794", + "remoteMachine": "alio2-cr1-qc01.cern.ch", + "mergersPerLayer": [ + "3", + "1" + ] + } + }, + "checks": { + "QcCheckMCHPhysics": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsCheck", + "moduleName": "QcMuonChambers", + "policy": "OnAll", + "detectorName": "MCH", + "checkParameters": { + "MinOccupancy": "0.00001", + "MaxOccupancy": "10.0" + }, + "dataSource": [ + { + "type": "Task", + "name": "QcTaskMCHDigits", + "MOs": "all" + } + ] + }, + "QcCheckMCHErrors": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::DecodingErrorsCheck", + "moduleName": "QcMuonChambers", + "policy": "OnAll", + "checkParameters": { + "MaxErrorRate": "10000" + }, + "detectorName": "MCH", + "dataSource": [ + { + "type": "Task", + "name": "QcTaskMCHErrors", + "MOs": "all" + } + ] + }, + "QcCheckMCHPreclusters": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::PhysicsPreclustersCheck", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "policy": "OnAny", + "dataSource": [ + { + "type": "Task", + "name": "MCHPreclusters", + "MOs": "all" + } + ] + } + } + }, + "dataSamplingPolicies": [ + { + "id": "mchdigits", + "active": "false", + "machines": [ + "localhost" + ], + "query": "digits:MCH/DIGITS;orbits:MCH/ORBITS", + "samplingConditions": [ + { + "condition": "random", + "fraction": "0.01", + "seed": "1234" + } + ], + "blocking": "false" + } + ] +} \ No newline at end of file diff --git a/DATA/production/qc-sync/mch-tracks.json b/DATA/production/qc-sync/mch-tracks.json new file mode 100644 index 000000000..8eeed6891 --- /dev/null +++ b/DATA/production/qc-sync/mch-tracks.json @@ -0,0 +1,55 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "ali-qcdb.cern.ch:8083", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "influxdb-unix:///tmp/telegraf.sock" + }, + "consul": { + "url": "null:8500" + }, + "conditionDB": { + "url": "https://alice-ccdb.cern.ch" + } + }, + "tasks": { + "MCHTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "MCH", + "cycleDurationSeconds": "180", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;mchgeo:GLO/Config/0?lifetime=condition&ccdb-path=GLO/Config/GeometryAligned" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MCH" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47789", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + } + }, + "checks": {} + }, + "dataSamplingPolicies": [] +} \ No newline at end of file diff --git a/DATA/production/qc-sync/mft-mch-mid.json b/DATA/production/qc-sync/mft-mch-mid.json new file mode 100644 index 000000000..b5b737b16 --- /dev/null +++ b/DATA/production/qc-sync/mft-mch-mid.json @@ -0,0 +1,55 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "ali-qcdb.cern.ch:8083", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "influxdb-unix:///tmp/telegraf.sock" + }, + "consul": { + "url": "null:8500" + }, + "conditionDB": { + "url": "null:8083" + } + }, + "tasks": { + "FwdTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "cycleDurationSeconds": "180", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMID:MID/TRACKS;trackMIDROF:MID/TRACKROFS;trackMIDTRACKCLUSTERS:MID/TRACKCLUSTERS;trackClMIDROF:MID/TRCLUSROFS;fwdtracks:GLO/GLFWD;matchMCHMID:GLO/MTC_MCHMID;matchMFTMCH:GLO/MTC_MFTMCH" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MFT,MCH,MID,MFT-MCH,MCH-MID" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47789", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + } + }, + "checks": {} + }, + "dataSamplingPolicies": [] +} \ No newline at end of file diff --git a/DATA/production/qc-sync/mft-mch.json b/DATA/production/qc-sync/mft-mch.json new file mode 100644 index 000000000..9bf80cbf8 --- /dev/null +++ b/DATA/production/qc-sync/mft-mch.json @@ -0,0 +1,55 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "ali-qcdb.cern.ch:8083", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2" + }, + "monitoring": { + "url": "influxdb-unix:///tmp/telegraf.sock" + }, + "consul": { + "url": "null:8500" + }, + "conditionDB": { + "url": "null:8083" + } + }, + "tasks": { + "FwdTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "cycleDurationSeconds": "180", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMID:MID/TRACKS;trackMIDROF:MID/TRACKROFS;fwdtracks:GLO/GLFWD;matchMFTMCH:GLO/MTC_MFTMCH" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MFT,MCH,MFT-MCH" + }, + "location": "local", + "mergingMode": "delta", + "localControl": "odc", + "localMachines": [ + "localhost", + "epn" + ], + "remotePort": "47789", + "remoteMachine": "alio2-cr1-qc01.cern.ch" + } + }, + "checks": {} + }, + "dataSamplingPolicies": [] +} \ No newline at end of file diff --git a/DATA/production/qc-workflow.sh b/DATA/production/qc-workflow.sh index bcbf65730..ccfe45156 100755 --- a/DATA/production/qc-workflow.sh +++ b/DATA/production/qc-workflow.sh @@ -10,6 +10,31 @@ if [[ ! -z $GEN_TOPO_QC_JSON_FILE ]]; then flock 101 || exit 1 fi +FETCHTMPDIR=$(mktemp -d -t GEN_TOPO_DOWNLOAD_JSON-XXXXXX) + +JSON_FILES= +OUTPUT_SUFFIX= + +add_QC_JSON() { + if [[ ${2} =~ ^consul://.* ]]; then + TMP_FILENAME=$FETCHTMPDIR/$1.$RANDOM.$RANDOM.json + curl -s -o $TMP_FILENAME "http://alio2-cr1-hv-aliecs.cern.ch:8500/v1/kv/${2/consul:\/\//}?raw" + if [[ $? != 0 ]]; then + echo "Error fetching QC JSON $2" + exit 1 + fi + else + TMP_FILENAME=$2 + fi + JSON_FILES+=" $TMP_FILENAME" + jq -rM '""' > /dev/null < $TMP_FILENAME + if [[ $? != 0 ]]; then + echo "Invalid QC JSON $2" 1>&2 + exit 1 + fi + OUTPUT_SUFFIX+="-$1" +} + QC_CONFIG= QC_CONFIG_OVERRIDE= if [[ -z $QC_JSON_FROM_OUTSIDE && ! -z $GEN_TOPO_QC_JSON_FILE && -f $GEN_TOPO_QC_JSON_FILE ]]; then @@ -39,11 +64,7 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then [[ -z "$QC_JSON_ZDC" ]] && has_processing_step ZDC_RECO && QC_JSON_ZDC=consul://o2/components/qc/ANY/any/zdc-rec-epn if [[ -z "$QC_JSON_MCH" ]]; then if has_detector MCH && has_processing_step MCH_RECO; then - if has_track_source "MCH-MID"; then - QC_JSON_MCH=consul://o2/components/qc/ANY/any/mch-qcmn-epn-full-track-matching - else QC_JSON_MCH=consul://o2/components/qc/ANY/any/mch-qcmn-epn-full - fi else QC_JSON_MCH=consul://o2/components/qc/ANY/any/mch-qcmn-epn-digits fi @@ -67,7 +88,19 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then QC_JSON_TOF_MATCH=consul://o2/components/qc/ANY/any/tof-qcmn-match-itstpctof fi fi + + if [[ -z "$QC_JSON_MUON_MATCH" ]]; then + if has_track_source "MFT-MCH" && has_track_source "MCH-MID"; then + QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mft-mch-mid + elif has_track_source "MFT-MCH"; then + QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mft-mch + elif has_track_source "MCH-MID"; then + QC_JSON_MUON_MATCH=consul://o2/components/qc/ANY/any/muon-qcmn-epn-mch-mid + fi + fi + [[ -z "$QC_JSON_GLOBAL" ]] && QC_JSON_GLOBAL=$O2DPG_ROOT/DATA/production/qc-sync/qc-global-epn.json # this must be last + elif [[ $SYNCMODE == 1 ]]; then [[ -z "$QC_JSON_TPC" ]] && QC_JSON_TPC=$O2DPG_ROOT/DATA/production/qc-sync/tpc.json [[ -z "$QC_JSON_ITS" ]] && QC_JSON_ITS=$O2DPG_ROOT/DATA/production/qc-sync/its.json @@ -84,7 +117,15 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then [[ -z "$QC_JSON_FV0" ]] && QC_JSON_FV0=$O2DPG_ROOT/DATA/production/qc-sync/fv0.json [[ -z "$QC_JSON_EMC" ]] && QC_JSON_EMC=$O2DPG_ROOT/DATA/production/qc-sync/emc.json [[ -z "$QC_JSON_ZDC" ]] && has_processing_step ZDC_RECO && QC_JSON_ZDC=$O2DPG_ROOT/DATA/production/qc-sync/zdc.json - [[ -z "$QC_JSON_MCH" ]] && QC_JSON_MCH=$O2DPG_ROOT/DATA/production/qc-sync/mch.json + if [[ -z "$QC_JSON_MCH" ]]; then + QC_JSON_MCH=$O2DPG_ROOT/DATA/production/qc-sync/mch-digits.json + if has_processing_step "MCH_RECO"; then + add_QC_JSON MCH_RECO $O2DPG_ROOT/DATA/production/qc-sync/mch-reco.json + fi + if has_track_source "MCH"; then + add_QC_JSON MCH_TRACK $O2DPG_ROOT/DATA/production/qc-sync/mch-tracks.json + fi + fi [[ -z "$QC_JSON_MID" ]] && QC_JSON_MID=$O2DPG_ROOT/DATA/production/qc-sync/mid-digits.json && has_processing_step MID_RECO && QC_JSON_MID=$O2DPG_ROOT/DATA/production/qc-sync/mid.json [[ -z "$QC_JSON_CPV" ]] && QC_JSON_CPV=$O2DPG_ROOT/DATA/production/qc-sync/cpv.json [[ -z "$QC_JSON_PHS" ]] && QC_JSON_PHS=$O2DPG_ROOT/DATA/production/qc-sync/phs.json @@ -98,7 +139,19 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then QC_JSON_TOF_MATCH=$O2DPG_ROOT/DATA/production/qc-sync/itstpctof.json fi fi + + if [[ -z "$QC_JSON_MUON_MATCH" ]]; then + if has_track_source "MFT-MCH" && has_track_source "MCH-MID"; then + QC_JSON_MUON_MATCH=$O2DPG_ROOT/DATA/production/qc-sync/mft-mch-mid.json + elif has_track_source "MFT-MCH"; then + QC_JSON_MUON_MATCH=$O2DPG_ROOT/DATA/production/qc-sync/mft-mch.json + elif has_track_source "MCH-MID"; then + QC_JSON_MUON_MATCH=$O2DPG_ROOT/DATA/production/qc-sync/mch-mid.json + fi + fi + [[ -z "$QC_JSON_GLOBAL" ]] && QC_JSON_GLOBAL=$O2DPG_ROOT/DATA/production/qc-sync/qc-global.json # this must be last + else [[ -z "$QC_JSON_TPC" ]] && QC_JSON_TPC=$O2DPG_ROOT/DATA/production/qc-async/tpc.json [[ -z "$QC_JSON_ITS" ]] && QC_JSON_ITS=$O2DPG_ROOT/DATA/production/qc-async/its.json @@ -109,6 +162,15 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then [[ -z "$QC_JSON_FDD" ]] && QC_JSON_FDD=$O2DPG_ROOT/DATA/production/qc-async/fdd.json [[ -z "$QC_JSON_EMC" ]] && QC_JSON_EMC=$O2DPG_ROOT/DATA/production/qc-async/emc.json [[ -z "$QC_JSON_MID" ]] && QC_JSON_MID=$O2DPG_ROOT/DATA/production/qc-async/mid.json + if [[ -z "$QC_JSON_MCH" ]]; then + QC_JSON_MCH=$O2DPG_ROOT/DATA/production/qc-async/mch-digits.json + if has_processing_step "MCH_RECO"; then + add_QC_JSON MCH_RECO $O2DPG_ROOT/DATA/production/qc-async/mch-reco.json + fi + if has_track_source "MCH"; then + add_QC_JSON MCH_TRACK $O2DPG_ROOT/DATA/production/qc-async/mch-tracks.json + fi + fi [[ -z "$QC_JSON_CPV" ]] && QC_JSON_CPV=$O2DPG_ROOT/DATA/production/qc-async/cpv.json [[ -z "$QC_JSON_PHS" ]] && QC_JSON_PHS=$O2DPG_ROOT/DATA/production/qc-async/phs.json [[ -z "$QC_JSON_TRD" ]] && QC_JSON_TRD=$O2DPG_ROOT/DATA/production/qc-async/trd.json @@ -136,31 +198,7 @@ elif [[ -z $QC_JSON_FROM_OUTSIDE ]]; then echo This script must be run via the gen_topo scripts, or a GEN_TOPO_WORKDIR must be provided where merged JSONS are stored 1>&2 exit 1 fi - - FETCHTMPDIR=$(mktemp -d -t GEN_TOPO_DOWNLOAD_JSON-XXXXXX) - - add_QC_JSON() { - if [[ ${2} =~ ^consul://.* ]]; then - TMP_FILENAME=$FETCHTMPDIR/$1.$RANDOM.$RANDOM.json - curl -s -o $TMP_FILENAME "http://alio2-cr1-hv-aliecs.cern.ch:8500/v1/kv/${2/consul:\/\//}?raw" - if [[ $? != 0 ]]; then - echo "Error fetching QC JSON $2" - exit 1 - fi - else - TMP_FILENAME=$2 - fi - JSON_FILES+=" $TMP_FILENAME" - jq -rM '""' > /dev/null < $TMP_FILENAME - if [[ $? != 0 ]]; then - echo "Invalid QC JSON $2" 1>&2 - exit 1 - fi - OUTPUT_SUFFIX+="-$1" - } - - JSON_FILES= - OUTPUT_SUFFIX= + # TOF matching if has_detector_qc TOF && [[ $WORKFLOW_DETECTORS_QC =~ (^|,)"TOF_MATCH"(,|$) ]] && [ ! -z "$QC_JSON_TOF_MATCH" ]; then @@ -251,6 +289,9 @@ if [[ ! -z "$QC_JSON_FROM_OUTSIDE" ]]; then QC_CONFIG_PARAM="--local-batch=QC.root" fi fi + if [[ ! -z $FST_STAGE ]]; then + QC_CONFIG_PARAM=$(echo $QC_CONFIG_PARAM | sed -e "s/\.root/-${FST_STAGE}\.root/") + fi add_W o2-qc "--config json://$QC_JSON_FROM_OUTSIDE ${QC_CONFIG_PARAM} ${QC_CONFIG}" fi