diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele100GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele100GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bb8cd957d237bb2c738bc24919ee7b08b5718c67
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele100GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single ele 100GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422031.ParticleGun_single_ele_Pt100.recon.RDO.e7967_e5984_s3126_r11774_tid20255043_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_ele100GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele10GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele10GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2fbd1ebb713838c25d32288e5af60ab5f544753c
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele10GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single ele 10GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422029.ParticleGun_single_ele_Pt10.recon.RDO.e7967_e5984_s3126_r11774_tid20255009_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_ele10GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele1GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele1GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b22612700da9a1bdeb23670d8f360eff201600a2
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele1GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single ele 1GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422027.ParticleGun_single_ele_Pt1.recon.RDO.e7967_e5984_s3126_r11774_tid20254975_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_ele1GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele5GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele5GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e473e61d8bcd9e6683d2b15d6a993fdd1914aee9
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ele5GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single ele 5GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422028.ParticleGun_single_ele_Pt5.recon.RDO.e7967_e5984_s3126_r11774_tid20254991_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_ele5GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu100GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu100GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7d77449f0124421f904d6c9b98ef603f5a440da7
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu100GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single muon 100GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422036.ParticleGun_single_mu_Pt100.recon.RDO.e7967_e5984_s3126_r11774_tid20254958_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_mu100GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu10GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu10GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cc0c4a1b8548401fc4b3dd2108a08f8bd0d0836f
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu10GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single muon 10GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422034.ParticleGun_single_mu_Pt10.recon.RDO.e7967_e5984_s3126_r11774_tid20254941_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_mu10GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu1GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu1GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3d5f5d10cf1c66f886f8c1b9cdcd27479cc29c25
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu1GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single muon 1GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422032.ParticleGun_single_mu_Pt1.recon.RDO.e7967_e5984_s3126_r11774_tid20254908_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_mu1GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu20GeV_reco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu20GeV_reco.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3d19ffd3749edd16c89189398ff464ea3b5d1498
--- /dev/null
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_mu20GeV_reco.sh
@@ -0,0 +1,101 @@
+#!/bin/bash
+# art-description: art job for InDetPhysValMonitoring, Single muon 20GeV
+# art-type: grid
+# art-input: user.keli.mc16_13TeV.422035.ParticleGun_single_mu_Pt20.recon.RDO.e7967_e5984_s3126_r11774_tid20255026_00
+# art-input-nfiles: 10
+# art-cores: 4
+# art-include: master/Athena
+# art-output: *.root
+# art-output: *.xml 
+# art-output: art_core_*
+# art-output: dcube
+
+set -x
+
+echo "ArtProcess: $ArtProcess"
+lastref_dir=last_results
+script="`basename \"$0\"`"
+success_run=0
+
+case $ArtProcess in
+  "start")
+    echo "Starting"
+    echo "List of files = " ${ArtInFile}
+    ;;
+  "end")
+    echo "Ending"
+    if [ ${success_run} -eq 0 ]  ;then
+      echo "download latest result"
+      art.py download --user=artprod --dst="$lastref_dir" "$ArtPackage" "$ArtJobName"
+      ls -la "$lastref_dir"
+      echo "Merging physval.root"
+      hadd  physval.root art_core_*/physval.ntuple.root
+      echo "postprocess"
+      postProcessIDPVMHistos physval.root
+
+      dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/dcube/config/IDPVMPlots_R22.xml"
+      dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetPhysValMonitoring/ReferenceHistograms/physval_mu20GeV.root"
+      echo "compare with R21"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube \
+	   -c ${dcubeXml} \
+	   -r ${dcubeRef} \
+	   physval.root
+      echo "art-result: $? plots"
+
+      echo "compare with last build"
+      $ATLAS_LOCAL_ROOT/dcube/current/DCubeClient/python/dcube.py \
+	   -p -x dcube_last \
+	   -c ${dcubeXml} \
+	   -r last_results/physval.root \
+	   physval.root
+      echo "art-result: $? plots"
+    else
+      echo "reco failed"
+    fi
+    ;;
+  *)
+    echo "Test $ArtProcess"
+    mkdir "art_core_${ArtProcess}"
+    cd "art_core_${ArtProcess}"
+    IFS=',' read -r -a file <<< "${ArtInFile}"
+    file=${file[${ArtProcess}]}
+    x="../$file"
+    echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC} and ATHENA_PROC_NUMBER=${ATHENA_PROC_NUMBER}"
+    unset  ATHENA_NUM_PROC
+    unset  ATHENA_PROC_NUMBER
+
+    Reco_tf.py \
+      --inputRDOFile $x \
+      --outputNTUP_PHYSVALFile physval.ntuple.root \
+      --outputAODFile   physval.AOD.root \
+      --steering        doRAWtoALL \
+      --checkEventCount False \
+      --ignoreErrors    True \
+      --maxEvents       -1 \
+      --skipEvents      0 \
+      --valid           True \
+      --validationFlags doInDet \
+      --autoConfiguration everything \
+      --preExec 'from InDetRecExample.InDetJobProperties import InDetFlags; \
+      InDetFlags.doSlimming.set_Value_and_Lock(False); rec.doTrigger.set_Value_and_Lock(False); \
+      from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; \
+      InDetPhysValFlags.doValidateTightPrimaryTracks.set_Value_and_Lock(True); \
+      InDetPhysValFlags.doValidateTracksInJets.set_Value_and_Lock(False); \
+      InDetPhysValFlags.doValidateGSFTracks.set_Value_and_Lock(False); \
+      rec.doDumpProperties=True; rec.doCalo=False; rec.doEgamma=False; \
+      rec.doForwardDet=False; rec.doInDet=True; rec.doJetMissingETTag=False; \
+      rec.doLArg=False; rec.doLucid=False; rec.doMuon=False; rec.doMuonCombined=False; \
+      rec.doSemiDetailedPerfMon=True; rec.doTau=False; rec.doTile=False;\
+      from ParticleBuilderOptions.AODFlags import AODFlags;\
+      AODFlags.ThinGeantTruth.set_Value_and_Lock(False);  \
+      AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False); \
+      AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False);\
+      AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
+    echo  "art-result: $? reco_${ArtInFile}"
+    if [ $? -ne 0 ]  ;then
+      success_run=$?
+    fi
+    ls -lR
+    ;;
+esac
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ttbarsimreco.sh b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ttbarsimreco.sh
index dac9586ec6e7f52de119ad12c1772f7b73f173ee..58a9c2c747bf4c2a419202e120f8c7343dfb3a8c 100755
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ttbarsimreco.sh
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/test/test_ttbarsimreco.sh
@@ -42,11 +42,6 @@ art_dcube=/cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube
 
 lastref_dir=last_results
 
-if [ \( $dosim -ne 0 -a -n "$dcube_sim_lastref" \) -o \( $dorec -ne 0 -a -n "$dcube_rec_lastref" \) ]; then
-  run art.py download --user=artprod --dst="$lastref_dir" InDetPhysValMonitoring "$script"
-  run ls -la "$lastref_dir"
-fi
-
 dcube() {
   # Run DCube and print art-result (if $2 is not empty)
   step="$1" statname="$2" dcubemon="$3" dcubecfg="$4" dcuberef="$5" dcubedir="$6"
@@ -143,6 +138,13 @@ if [ $dorec -ne 0 ]; then
     AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False) '
   echo "art-result: $? reco"
 
+  if [ rec_tf_exit_code  eq 0 ]  ;then
+    if [ \( $dosim -ne 0 -a -n "$dcube_sim_lastref" \) -o \( $dorec -ne 0 -a -n "$dcube_rec_lastref" \) ]; then
+    run art.py download --user=artprod --dst="$lastref_dir" InDetPhysValMonitoring "$script"
+    run ls -la "$lastref_dir"
+    fi
+  fi
+
   # DCube InDetPhysValMonitoring performance plots
   dcube InDetPhysValMonitoring plot "$dcubemon_rec" "$dcubecfg_rec" "$lastref_dir/$dcubemon_rec" "$dcube_rec_lastref"
   dcube InDetPhysValMonitoring ""   "$dcubemon_rec" "$dcubecfg_rec"              "$dcuberef_rec" "$dcube_rec_fixref"