diff --git a/MC/bin/o2dpg_qc_finalization_workflow.py b/MC/bin/o2dpg_qc_finalization_workflow.py index 58c26bd44..c0a7fc4fc 100755 --- a/MC/bin/o2dpg_qc_finalization_workflow.py +++ b/MC/bin/o2dpg_qc_finalization_workflow.py @@ -95,6 +95,13 @@ def add_QC_postprocessing(taskName, qcConfigPath, needs, runSpecific, prodSpecif add_QC_finalization('ITSTracksClusters', 'json://${O2DPG_ROOT}/MC/config/QC/json/its-clusters-tracks-qc.json') if isActive('MID'): add_QC_finalization('MIDTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mid-task.json') + if isActive('MCH'): + add_QC_finalization('MCHDigitsTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mch-digits-task.json') + add_QC_finalization('MCHErrorsTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mch-errors-task.json') + add_QC_finalization('MCHRecoTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mch-reco-task.json') + add_QC_finalization('MCHTracksTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mch-tracks-task.json') + if isActive('MCH') and isActive('MID'): + add_QC_finalization('MCHMIDTracksTaskQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/mchmid-tracks-task.json') if isActive('FT0') and isActive('TRD'): add_QC_finalization('tofft0PIDQC', 'json://${O2DPG_ROOT}/MC/config/QC/json/pidft0tof.json') elif isActive('FT0'): diff --git a/MC/bin/o2dpg_sim_workflow.py b/MC/bin/o2dpg_sim_workflow.py index 09e9ecd0b..4a53bc2f0 100755 --- a/MC/bin/o2dpg_sim_workflow.py +++ b/MC/bin/o2dpg_sim_workflow.py @@ -1210,6 +1210,7 @@ def getDigiTaskName(det): MCHRECOtask['cmd'] = ('','ln -nfs ../bkg_Kine.root . ;')[doembedding] MCHRECOtask['cmd'] += '${O2_ROOT}/bin/o2-mch-reco-workflow ' + getDPL_global_options() + putConfigValues() MCHRECOtask['cmd'] += ('',' --disable-mc')[args.no_mc_labels] + MCHRECOtask['cmd'] += ' --enable-clusters-root-output' workflow['stages'].append(MCHRECOtask) MIDRECOtask = createTask(name='midreco_'+str(tf), needs=[getDigiTaskName("MID")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500') @@ -1452,6 +1453,32 @@ def addQCPerTF(taskName, needs, readerCommand, configFilePath, objectsFile=''): needs=[MIDRECOtask['name']], readerCommand='o2-mid-digits-reader-workflow | o2-mid-tracks-reader-workflow', configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mid-task.json') + + ### MCH + if isActive('MCH'): + addQCPerTF(taskName='MCHDigitsTaskQC', + needs=[MCHRECOtask['name']], + readerCommand='o2-mch-digits-reader-workflow', + configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mch-digits-task.json') + addQCPerTF(taskName='MCHErrorsTaskQC', + needs=[MCHRECOtask['name']], + readerCommand='o2-mch-errors-reader-workflow', + configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mch-errors-task.json') + addQCPerTF(taskName='MCHRecoTaskQC', + needs=[MCHRECOtask['name']], + readerCommand='o2-mch-reco-workflow', + configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mch-reco-task.json') + addQCPerTF(taskName='MCHTracksTaskQC', + needs=[MCHRECOtask['name']], + readerCommand='o2-global-track-cluster-reader --track-types MCH --cluster-types MCH', + configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mch-tracks-task.json') + + ### MCH + MID + if isActive('MCH') and isActive('MID'): + addQCPerTF(taskName='MCHMIDTracksTaskQC', + needs=[MCHMIDMATCHtask['name']], + readerCommand='o2-global-track-cluster-reader --track-types "MCH,MID,MCH-MID" --cluster-types "MCH,MID"', + configFilePath='json://${O2DPG_ROOT}/MC/config/QC/json/mchmid-tracks-task.json') #secondary vertexer svfinder_threads = ' --threads 1 ' diff --git a/MC/config/QC/json/mch-digits-task.json b/MC/config/QC/json/mch-digits-task.json new file mode 100644 index 000000000..aad04c70a --- /dev/null +++ b/MC/config/QC/json/mch-digits-task.json @@ -0,0 +1,58 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable", + "maxObjectSize": "12582912" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "MCHDigits": { + "active": "true", + "taskName": "Digits", + "className": "o2::quality_control_modules::muonchambers::DigitsTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS" + }, + "taskParameters": { + "Diagnostic": "false" + }, + "grpGeomRequest": { + "geomRequest": "None", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "false", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "false", + "needPropagatorD": "false" + } + } + } + } +} diff --git a/MC/config/QC/json/mch-errors-task.json b/MC/config/QC/json/mch-errors-task.json new file mode 100644 index 000000000..154cb3c75 --- /dev/null +++ b/MC/config/QC/json/mch-errors-task.json @@ -0,0 +1,44 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "http://ccdb-test.cern.ch:8080", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "MCHErrors": { + "active": "true", + "taskName": "Errors", + "className": "o2::quality_control_modules::muonchambers::ErrorTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "600", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "errors:MCH/PROCERRORS/0" + } + } + } + } +} diff --git a/MC/config/QC/json/mch-reco-task.json b/MC/config/QC/json/mch-reco-task.json new file mode 100644 index 000000000..e6f2b719b --- /dev/null +++ b/MC/config/QC/json/mch-reco-task.json @@ -0,0 +1,74 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "" + } + }, + "tasks": { + "Rofs": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::RofsTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/DIGITS;rofs:MCH/DIGITROFS" + }, + "taskParameters": { + "Diagnostic": "false" + } + }, + "MCHPreclusters": { + "active": "true", + "taskName": "Preclusters", + "className": "o2::quality_control_modules::muonchambers::PreclustersTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "preclusters:MCH/PRECLUSTERS/0;preclusterdigits:MCH/PRECLUSTERDIGITS/0" + } + }, + "FRofs": { + "active": "true", + "className": "o2::quality_control_modules::muonchambers::RofsTask", + "moduleName": "QcMuonChambers", + "detectorName": "MCH", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "digits:MCH/F-DIGITS;rofs:MCH/TC-F-DIGITROFS" + }, + "taskParameters": { + "Diagnostic": "false" + } + } + } + } +} diff --git a/MC/config/QC/json/mch-tracks-task.json b/MC/config/QC/json/mch-tracks-task.json new file mode 100644 index 000000000..6b4d9fc64 --- /dev/null +++ b/MC/config/QC/json/mch-tracks-task.json @@ -0,0 +1,58 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "https://alice-ccdb.cern.ch" + } + }, + "tasks": { + "MCHTracks": { + "active": "true", + "taskName": "Tracks", + "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" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID": "MCH" + }, + "grpGeomRequest": { + "geomRequest": "Aligned", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "true", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "true", + "needPropagatorD": "false" + } + } + } + } +} diff --git a/MC/config/QC/json/mchmid-tracks-task.json b/MC/config/QC/json/mchmid-tracks-task.json new file mode 100644 index 000000000..b1129bb33 --- /dev/null +++ b/MC/config/QC/json/mchmid-tracks-task.json @@ -0,0 +1,59 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "https://alice-ccdb.cern.ch" + } + }, + "tasks": { + "TaskMUONTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "taskName": "MUONTracks", + "cycleDurationSeconds": "300", + "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" + }, + "grpGeomRequest": { + "geomRequest": "Aligned", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "true", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "false", + "needPropagatorD": "false" + }, + "location": "remote" + } + } + } +} diff --git a/MC/config/QC/json/mftmch-tracks-task.json b/MC/config/QC/json/mftmch-tracks-task.json new file mode 100644 index 000000000..d90420ea1 --- /dev/null +++ b/MC/config/QC/json/mftmch-tracks-task.json @@ -0,0 +1,59 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "https://alice-ccdb.cern.ch" + } + }, + "tasks": { + "TaskMUONTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "taskName": "MUONTracks", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMFT:MFT/TRACKS;trackMFTROF:MFT/MFTTrackROF;trackMFTClIdx:MFT/TRACKCLSID;alpparMFT:MFT/ALPIDEPARAM/0?lifetime=condition&ccdb-path=MFT/Config/AlpideParam;fwdtracks:GLO/GLFWD" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "GID" : "MCH,MFT,MFT-MCH" + }, + "grpGeomRequest": { + "geomRequest": "Aligned", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "true", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "false", + "needPropagatorD": "false" + }, + "location": "remote" + } + } + } +} diff --git a/MC/config/QC/json/mftmchmid-tracks-task.json b/MC/config/QC/json/mftmchmid-tracks-task.json new file mode 100644 index 000000000..8f7c927b9 --- /dev/null +++ b/MC/config/QC/json/mftmchmid-tracks-task.json @@ -0,0 +1,106 @@ +{ + "qc": { + "config": { + "database": { + "implementation": "CCDB", + "host": "localhost:6464", + "username": "not_applicable", + "password": "not_applicable", + "name": "not_applicable" + }, + "Activity": { + "number": "42", + "type": "2", + "provenance": "qc_mc", + "passName": "passMC", + "periodName": "SimChallenge" + }, + "monitoring": { + "url": "infologger:///debug?qc" + }, + "consul": { + "url": "" + }, + "conditionDB": { + "url": "https://alice-ccdb.cern.ch" + } + }, + "tasks": { + "TaskMUONTracks": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "taskName": "MUONTracks", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMFT:MFT/TRACKS;trackMFTROF:MFT/MFTTrackROF;trackMFTClIdx:MFT/TRACKCLSID;alpparMFT:MFT/ALPIDEPARAM/0?lifetime=condition&ccdb-path=MFT/Config/AlpideParam;fwdtracks:GLO/GLFWD;trackMID:MID/TRACKS;trackMIDROF:MID/TRACKROFS;trackMIDTRACKCLUSTERS:MID/TRACKCLUSTERS;trackClMIDROF:MID/TRCLUSROFS;matchMCHMID:GLO/MTC_MCHMID" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "cutRAbsMin": "17.6", + "cutRAbsMax": "89.5", + "cutEtaMin": "-4.0", + "cutEtaMax": "-2.5", + "cutPtMin": "0.5", + "nSigmaPDCA": "6", + "cutChi2Max": "1000", + "diMuonTimeCut": "100", + "fullHistos": "0", + "GID" : "MCH,MCH-MID" + }, + "grpGeomRequest": { + "geomRequest": "Aligned", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "true", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "false", + "needPropagatorD": "false" + }, + "location": "remote" + }, + "TaskMUONTracksMFT": { + "active": "true", + "className": "o2::quality_control_modules::muon::TracksTask", + "moduleName": "QcMUONCommon", + "detectorName": "GLO", + "taskName": "MUONTracksMFT", + "cycleDurationSeconds": "300", + "maxNumberCycles": "-1", + "dataSource": { + "type": "direct", + "query": "trackMCH:MCH/TRACKS;trackMCHROF:MCH/TRACKROFS;trackMCHTRACKCLUSTERS:MCH/TRACKCLUSTERS;mchtrackdigits:MCH/CLUSTERDIGITS;trackMFT:MFT/TRACKS;trackMFTROF:MFT/MFTTrackROF;trackMFTClIdx:MFT/TRACKCLSID;alpparMFT:MFT/ALPIDEPARAM/0?lifetime=condition&ccdb-path=MFT/Config/AlpideParam;fwdtracks:GLO/GLFWD;trackMID:MID/TRACKS;trackMIDROF:MID/TRACKROFS;trackMIDTRACKCLUSTERS:MID/TRACKCLUSTERS;trackClMIDROF:MID/TRCLUSROFS;matchMCHMID:GLO/MTC_MCHMID" + }, + "taskParameters": { + "maxTracksPerTF": "600", + "cutRAbsMin": "26.5", + "cutRAbsMax": "89.5", + "cutEtaMin": "-3.3", + "cutEtaMax": "-2.5", + "cutPtMin": "0.5", + "nSigmaPDCA": "6", + "cutChi2Max": "1000", + "matchChi2MaxMFT": "45", + "diMuonTimeCut": "100", + "fullHistos": "0", + "GID" : "MCH,MFT-MCH,MCH-MID,MFT-MCH-MID" + }, + "grpGeomRequest": { + "geomRequest": "Aligned", + "askGRPECS": "true", + "askGRPLHCIF": "false", + "askGRPMagField": "true", + "askMatLUT": "false", + "askTime": "false", + "askOnceAllButField": "false", + "needPropagatorD": "false" + }, + "location": "remote" + } + } + } +}