|
19 | 19 |
|
20 | 20 | import sys |
21 | 21 | import argparse |
22 | | -from os import environ |
23 | | -from os.path import join, dirname |
| 22 | +from os import environ, mkdir |
| 23 | +from os.path import join, dirname, isdir |
24 | 24 | import json |
25 | 25 | import array as arr |
26 | 26 |
|
@@ -123,6 +123,10 @@ def getDPL_global_options(bigshm=False): |
123 | 123 | usebkgcache=args.use_bkg_from!=None |
124 | 124 | includeQC=True if args.include_qc=='True' or args.include_qc==True else False |
125 | 125 |
|
| 126 | +qcdir = "QC" |
| 127 | +if includeQC and not isdir(qcdir): |
| 128 | + mkdir(qcdir) |
| 129 | + |
126 | 130 | if doembedding: |
127 | 131 | if not usebkgcache: |
128 | 132 | # ---- do background transport task ------- |
@@ -602,40 +606,44 @@ def createRestDigiTask(name, det='ALLSMALLER'): |
602 | 606 | # workflow['stages'].append(ITSClustersTracksQCtask) |
603 | 607 |
|
604 | 608 | ### MFT |
605 | | - # fixme: there is a bug in Check which causes a segfault, uncomment when the fix is merged |
606 | | - # MFTDigitsQCneeds = [det_to_digitask["MFT"]['name']] |
607 | | - # MFTDigitsQCtask = createTask(name='mftDigitsQC_'+str(tf), needs=MFTDigitsQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
608 | | - # MFTDigitsQCtask['cmd'] = 'o2-qc-mft-digits-root-file-reader --mft-digit-infile=mftdigits.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-digit.json ' + getDPL_global_options() |
609 | | - # workflow['stages'].append(MFTDigitsQCtask) |
| 609 | + MFTDigitsQCneeds = [det_to_digitask["MFT"]['name']] |
| 610 | + MFTDigitsQCtask = createTask(name='mftDigitsQC_local'+str(tf), needs=MFTDigitsQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
| 611 | + MFTDigitsQCtask['cmd'] = 'o2-qc-mft-digits-root-file-reader --mft-digit-infile=mftdigits.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-digit.json --local-batch ../' + qcdir + '/mftDigitsQC.root ' + getDPL_global_options() |
| 612 | + MFTDigitsQCtask['semaphore'] = 'mftDigitsQC' |
| 613 | + workflow['stages'].append(MFTDigitsQCtask) |
610 | 614 |
|
611 | 615 | MFTClustersQCneeds = [MFTRECOtask['name']] |
612 | | - MFTClustersQCtask = createTask(name='mftClustersQC_'+str(tf), needs=MFTClustersQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
613 | | - MFTClustersQCtask['cmd'] = 'o2-qc-mft-clusters-root-file-reader --mft-cluster-infile=mftclusters.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-cluster.json ' + getDPL_global_options() |
| 616 | + MFTClustersQCtask = createTask(name='mftClustersQC_local'+str(tf), needs=MFTClustersQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
| 617 | + MFTClustersQCtask['cmd'] = 'o2-qc-mft-clusters-root-file-reader --mft-cluster-infile=mftclusters.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-cluster.json --local-batch ../' + qcdir + '/mftClustersQC.root ' + getDPL_global_options() |
| 618 | + MFTClustersQCtask['semaphore'] = 'mftClustersQC' |
614 | 619 | workflow['stages'].append(MFTClustersQCtask) |
615 | 620 |
|
616 | 621 | MFTTracksQCneeds = [MFTRECOtask['name']] |
617 | | - MFTTracksQCtask = createTask(name='mftTracksQC_'+str(tf), needs=MFTTracksQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
618 | | - MFTTracksQCtask['cmd'] = 'o2-qc-mft-tracks-root-file-reader --mft-track-infile=mfttracks.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-track.json ' + getDPL_global_options() |
| 622 | + MFTTracksQCtask = createTask(name='mftTracksQC_local'+str(tf), needs=MFTTracksQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
| 623 | + MFTTracksQCtask['cmd'] = 'o2-qc-mft-tracks-root-file-reader --mft-track-infile=mfttracks.root | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-track.json --local-batch ../' + qcdir + '/mftTracksQC.root ' + getDPL_global_options() |
| 624 | + MFTTracksQCtask['semaphore'] = 'mftTracksQC' |
619 | 625 | workflow['stages'].append(MFTTracksQCtask) |
620 | 626 |
|
621 | 627 | ### TPC |
622 | 628 | TPCTrackingQCneeds = [TPCRECOtask['name']] |
623 | | - TPCTrackingQCtask = createTask(name='tpcTrackingQC_'+str(tf), needs=TPCTrackingQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=2, mem='2000') |
624 | | - TPCTrackingQCtask['cmd'] = 'o2-tpc-track-reader | o2-tpc-reco-workflow --input-type clusters --infile tpc-native-clusters.root --output-type disable-writer | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/tpc-qc-tracking-direct.json ' + getDPL_global_options() |
625 | | - workflow['stages'].append(TPCTrackingQCtask) |
| 629 | + TPCTrackingQCtask = createTask(name='tpcTrackingQC_local'+str(tf), needs=TPCTrackingQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=2, mem='2000') |
| 630 | + TPCTrackingQCtask['cmd'] = 'o2-tpc-track-reader | o2-tpc-reco-workflow --input-type clusters --infile tpc-native-clusters.root --output-type disable-writer | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/tpc-qc-tracking-direct.json --local-batch ../' + qcdir + '/tpcTrackingQC.root ' + getDPL_global_options() |
| 631 | + TPCTrackingQCtask['semaphore'] = 'tpcTrackingQC' |
| 632 | + #workflow['stages'].append(TPCTrackingQCtask) |
626 | 633 |
|
627 | 634 | ### TRD |
628 | 635 | TRDDigitsQCneeds = [TRDDigitask['name']] |
629 | | - TRDDigitsQCtask = createTask(name='trdDigitsQC_'+str(tf), needs=TRDDigitsQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
630 | | - TRDDigitsQCtask['cmd'] = 'o2-trd-trap-sim | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/trd-digits-task.json ' + getDPL_global_options() |
| 636 | + TRDDigitsQCtask = createTask(name='trdDigitsQC_local'+str(tf), needs=TRDDigitsQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
| 637 | + TRDDigitsQCtask['cmd'] = 'o2-trd-trap-sim | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/trd-digits-task.json --local-batch ../' + qcdir + '/trdDigitsQC.root ' + getDPL_global_options() |
| 638 | + TRDDigitsQCtask['semaphore'] = 'trdDigitsQC' |
631 | 639 | workflow['stages'].append(TRDDigitsQCtask) |
632 | 640 |
|
633 | 641 | ### RECO |
634 | 642 | vertexQCneeds = [PVFINDERtask['name']] |
635 | | - vertexQCtask = createTask(name='vertexQC_'+str(tf), needs=vertexQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
636 | | - vertexQCtask['cmd'] = 'o2-primary-vertex-reader-workflow | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/vertexing-qc-direct-mc.json ' + getDPL_global_options() |
| 643 | + vertexQCtask = createTask(name='vertexQC_local'+str(tf), needs=vertexQCneeds, tf=tf, cwd=timeframeworkdir, lab=["QC"], cpu=1, mem='2000') |
| 644 | + vertexQCtask['cmd'] = 'o2-primary-vertex-reader-workflow | o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/vertexing-qc-direct-mc.json --local-batch ../' + qcdir + '/vertexQC.root ' + getDPL_global_options() |
| 645 | + vertexQCtask['semaphore'] = 'vertexQC' |
637 | 646 | workflow['stages'].append(vertexQCtask) |
638 | | - |
639 | 647 |
|
640 | 648 |
|
641 | 649 | #secondary vertexer |
@@ -681,6 +689,42 @@ def createRestDigiTask(name, det='ALLSMALLER'): |
681 | 689 | workflow['stages'].append(TFcleanup); |
682 | 690 |
|
683 | 691 |
|
| 692 | +if includeQC: |
| 693 | + #MFT |
| 694 | + MFTDigitsQCneeds = ['mftDigitsQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 695 | + MFTDigitsQCtask = createTask(name='mftDigitsQC_finalize', needs=MFTDigitsQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 696 | + MFTDigitsQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-digit.json --remote-batch mftDigitsQC.root ' + getDPL_global_options() |
| 697 | + workflow['stages'].append(MFTDigitsQCtask) |
| 698 | + |
| 699 | + MFTClustersQCneeds = ['mftClustersQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 700 | + MFTClustersQCtask = createTask(name='mftClustersQC_finalize', needs=MFTClustersQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 701 | + MFTClustersQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-cluster.json --remote-batch mftClustersQC.root ' + getDPL_global_options() |
| 702 | + workflow['stages'].append(MFTClustersQCtask) |
| 703 | + |
| 704 | + MFTTracksQCneeds = ['mftTracksQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 705 | + MFTTracksQCtask = createTask(name='mftTracksQC_finalize', needs=MFTTracksQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 706 | + MFTTracksQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/qc-mft-track.json --remote-batch mftTracksQC.root ' + getDPL_global_options() |
| 707 | + workflow['stages'].append(MFTTracksQCtask) |
| 708 | + |
| 709 | + ### TPC |
| 710 | + TPCTrackingQCneeds = ['tpcTrackingQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 711 | + TPCTrackingQCtask = createTask(name='tpcTrackingQC_finalize', needs=TPCTrackingQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 712 | + TPCTrackingQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/tpc-qc-tracking-direct.json --remote-batch tpcTrackingQC.root ' + getDPL_global_options() |
| 713 | + #workflow['stages'].append(TPCTrackingQCtask) |
| 714 | + |
| 715 | + ### TRD |
| 716 | + TRDDigitsQCneeds = ['trdDigitsQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 717 | + TRDDigitsQCtask = createTask(name='trdDigitsQC_finalize', needs=TRDDigitsQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 718 | + TRDDigitsQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/trd-digits-task.json --remote-batch trdDigitsQC.root ' + getDPL_global_options() |
| 719 | + workflow['stages'].append(TRDDigitsQCtask) |
| 720 | + |
| 721 | + ### RECO |
| 722 | + vertexQCneeds = ['vertexQC_local'+str(tf) for tf in range(1, NTIMEFRAMES + 1)] |
| 723 | + vertexQCtask = createTask(name='vertexQC_finalize', needs=vertexQCneeds, cwd=qcdir, lab=["QC"], cpu=1, mem='2000') |
| 724 | + vertexQCtask['cmd'] = 'o2-qc --config json://${O2DPG_ROOT}/MC/config/QC/json/vertexing-qc-direct-mc.json --remote-batch vertexQC.root ' + getDPL_global_options() |
| 725 | + workflow['stages'].append(vertexQCtask) |
| 726 | + |
| 727 | + |
684 | 728 | dump_workflow(workflow["stages"], args.o) |
685 | 729 |
|
686 | 730 | exit (0) |
0 commit comments