diff --git a/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_100GeV_25x100.sh b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_100GeV_25x100.sh new file mode 100755 index 0000000000000000000000000000000000000000..79e2f933a8f78af9860364549f67ced6952cd0ed --- /dev/null +++ b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_100GeV_25x100.sh @@ -0,0 +1,207 @@ +#!/bin/bash +# art-description: InclinedDuals sim+reco +# art-type: grid +# art-include: 21.9/Athena +# art-output: *.root +# art-output: *.xml +# art-output: dcube* + +# Fix ordering of output in logfile +exec 2>&1 +run() { (set -x; exec "$@") } + +# Following specify which steps to run. +dosim=1 +dorec=1 # Reco_tf.py not yet working +dophy=1 # If dorec=0, set dophy=1 to run InDetPhysValMonitoring over old ESD + +# Following specify DCube output directories. Set empty to disable. +dcube_sim_muons_100GeV_fixref="dcube_sim_muons_100GeV" +dcube_sim_muons_100GeV_lastref="dcube_sim_muons_100GeV_last" +dcube_digi_pixel_muons_100GeV_fixref="dcube_digi_pixel_muons_100GeV" +dcube_digi_pixel_muons_100GeV_lastref="dcube_digi_pixel_muons_100GeV_last" +dcube_digi_strip_muons_100GeV_fixref="dcube_digi_strip_muons_100GeV" +dcube_digi_strip_muons_100GeV_lastref="dcube_digi_strip_muons_100GeV_last" +dcube_rec_muons_100GeV_fixref="dcube_muons_100GeV" +dcube_rec_muons_100GeV_lastref="dcube_muons_100GeV_last" + +artdata=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art +#artdata=/eos/atlas/atlascerngroupdisk/data-art/grid-input + +name="InclinedDuals" +script="`basename \"$0\"`" + +evnt_muons_100GeV=$artdata/InDetSLHC_Example/inputs/EVNT.09244578.*.pool.root.1 +hits_ref_muons_100GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_HITS_mu_100GeV.root + +if [ $dosim -ne 0 ]; then + hits_muons_100GeV=physval_muons_100GeV.HITS.root +else + hits_muons_100GeV="$hits_ref_muons_100GeV" +fi +if [ $dorec -ne 0 ]; then + esd_muons_100GeV=physval_muons_100GeV.ESD.root +else + esd_muons_100GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_ESD_mu_100GeV.root +fi +#jo=$artdata/InDetSLHC_Example/jobOptions/PhysValITk_jobOptions.py moved to share/ +dcubemon_muons_100GeV_sim=SiHitValid_muons_100GeV.root +dcubemon_muons_100GeV_digi_pixel=PixelRDOAnalysis_muons_100GeV.root +dcubemon_muons_100GeV_digi_strip=SCT_RDOAnalysis_muons_100GeV.root +dcubemon_muons_100GeV_rec=physval_muons_100GeV.root +dcubecfg_sim=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SiHitValid_25x100.xml +dcubecfg_digi_pixel=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_PixelRDOAnalysis_25x100.xml +dcubecfg_digi_strip=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SCT_RDOAnalysis_25x100.xml +dcubecfg_rec=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_physval_25x100.xml +dcuberef_muons_100GeV_sim=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_100GeV_SiHitValid_25x100_2020.root +dcuberef_muons_100GeV_rec=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_100GeV_physval_25x100_2020.root +dcuberef_muons_100GeV_digi_pixel=$artdata/InDetSLHC_Example/ReferenceHistograms/PixelRDOAnalysis_muons_100GeV_25x100_2020.root +dcuberef_muons_100GeV_digi_strip=$artdata/InDetSLHC_Example/ReferenceHistograms/SCT_RDOAnalysis_muons_100GeV_25x100_2020.root +art_dcube=/cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube +lastref_muons_100GeV_dir=last_results_muons_100GeV + +if [ \( $dosim -ne 0 -a -n "$dcube_sim_muons_100GeV_lastref" \) -o \( $dophy -ne 0 -a -n "$dcube_rec_muons_100GeV_lastref" \) ]; then + run art.py download --user=artprod --dst="$lastref_muons_100GeV_dir" InDetSLHC_Example "$script" + run ls -la "$lastref_muons_100GeV_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" + test -n "$dcubedir" || return + run ls -lLU "$art_dcube" "$dcubemon" "$dcubecfg" "$dcuberef" + if [ ! -s "$dcubemon" ]; then + echo "$script: $step output '$dcubemon' not created. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 20 $statname" + return + fi + if [ ! -s "$dcuberef" ]; then + echo "$script: $step DCube reference '$dcuberef' not available. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 21 $statname" + return + fi + echo "$script: DCube comparison of $step output '$dcubemon' with '$dcuberef' reference" + keep="" + test "$dcubedir" != "dcube" -a -d "dcube" && keep="dcube_keep_`uuidgen`" + test -n "$keep" && run mv -f dcube "$keep" + run "$art_dcube" "$name" "$dcubemon" "$dcubecfg" "$dcuberef" + dcube_stat=$? + test -n "$statname" && echo "art-result: $dcube_stat $statname" + test "$dcubedir" != "dcube" && run mv -f dcube "$dcubedir" + test -n "$keep" && run mv -f "$keep" dcube +} + +if [ $dosim -ne 0 ]; then + + ## this runs single muons simulation + run ls -lL "$evnt_muons_100GeV" + + # Sim step: based on RTT SimInclinedDuals_GMX job: + run Sim_tf.py \ + --inputEVNTFile "$evnt_muons_100GeV" \ + --outputHITSFile "$hits_muons_100GeV" \ + --skipEvents 0 \ + --maxEvents 10000 \ + --randomSeed 873254 \ + --geometryVersion ATLAS-P2-ITK-20-00-00_VALIDATION \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --truthStrategy MC15aPlus \ + --DataRunNumber 242000 \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py,InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py' \ + --preExec all:'from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + --postInclude all:'PyJobTransforms/UseFrontier.py,InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/postInclude.SLHC_Setup.py,InDetSLHC_Example/postInclude.SiHitAnalysis.py' \ + --postExec EVNTtoHITS:'ServiceMgr.DetDescrCnvSvc.DoInitNeighbours=False; from AthenaCommon import CfgGetter; CfgGetter.getService("ISF_MC15aPlusTruthService").BeamPipeTruthStrategies+=["ISF_MCTruthStrategyGroupIDHadInt_MC15"];' + echo "art-result: $? sim" + + mv ./SiHitValid.root ./$dcubemon_muons_100GeV_sim + + # DCube Sim hit plots + dcube Sim_tf sim-plot "$dcubemon_muons_100GeV_sim" "$dcubecfg_sim" "$lastref_muons_100GeV_dir/$dcubemon_muons_100GeV_sim" "$dcube_sim_muons_100GeV_lastref" + dcube Sim_tf "" "$dcubemon_muons_100GeV_sim" "$dcubecfg_sim" "$dcuberef_muons_100GeV_sim" "$dcube_sim_muons_100GeV_fixref" + +fi + +if [ $dorec -ne 0 ]; then + + ## Starting reconstruction for single muons + if [ $dosim -ne 0 ] && [ ! -s "$hits_muons_100GeV" ] && [ -s "$hits_ref_muons_100GeV" ]; then + echo "$script: Sim_tf output '$hits_muons_100GeV' not created. Run Reco_tf on '$hits_ref_muons_100GeV' instead." 2>&1 + hits_muons_100GeV="$hits_ref_muons_100GeV" + fi + + run ls -lL "$hits_muons_100GeV" + + # Reco step: based on RecoInclinedDuals_GMX RTT job + # some preExecs for E2D step are workarounds - should be revisited. + run Reco_tf.py \ + --inputHITSFile "$hits_muons_100GeV" \ + --outputRDOFile physval_muons_100GeV.RDO.root \ + --outputESDFile "$esd_muons_100GeV" \ + --outputAODFile physval_muons_100GeV.AOD.root \ + --outputDAOD_IDTRKVALIDFile physval_muons_100GeV.DAOD_IDTRKVALID.root \ + --maxEvents -1 \ + --digiSteeringConf StandardInTimeOnlyTruth \ + --geometryVersion ATLAS-P2-ITK-20-00-00 \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --DataRunNumber 242000 \ + --postInclude all:'InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4_25x100.py' \ + HITtoRDO:'InDetSLHC_Example/postInclude.SLHC_Digitization_lowthresh.py,InDetSLHC_Example/postInclude.RDOAnalysis.py' \ + RAWtoALL:'InDetSLHC_Example/postInclude.DigitalClustering.py' \ + --preExec all:'from AthenaCommon.GlobalFlags import globalflags; globalflags.DataSource.set_Value_and_Lock("geant4"); from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + HITtoRDO:'from Digitization.DigitizationFlags import digitizationFlags; digitizationFlags.doInDetNoise.set_Value_and_Lock(False); digitizationFlags.doBichselSimulation.set_Value_and_Lock(False); digitizationFlags.overrideMetadata+=["SimLayout","PhysicsList"];' \ + RAWtoALL:'from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.doStandardPlots.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();InDetFlags.useDCS.set_Value_and_Lock(True);ServiceMgr.PixelCalibSvc.DisableDB=True;from InDetPrepRawDataToxAOD.InDetDxAODJobProperties import InDetDxAODFlags;InDetDxAODFlags.DumpLArCollisionTime.set_Value_and_Lock(False);InDetDxAODFlags.DumpSctInfo.set_Value_and_Lock(True);InDetDxAODFlags.ThinHitsOnTrack.set_Value_and_Lock(False)' \ + ESDtoDPD:'rec.DPDMakerScripts.set_Value_and_Lock(["InDetPrepRawDataToxAOD/InDetDxAOD.py","PrimaryDPDMaker/PrimaryDPDMaker.py"]);from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDCS.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();ServiceMgr.PixelCalibSvc.DisableDB=True' \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4_25x100.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py,InDetSLHC_Example/preInclude.SLHC_Calorimeter_mu0.py' \ + HITtoRDO:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + default:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Reco.py,InDetSLHC_Example/SLHC_Setup_Reco_TrackingGeometry_GMX.py' \ + RDOMergeAthenaMP:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + POOLMergeAthenaMPAOD0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + POOLMergeAthenaMPDAODIDTRKVALID0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + --postExec HITtoRDO:'pixeldigi.EnableSpecialPixels=False; CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];' \ + RAWtoALL:'ToolSvc.InDetSCT_ClusteringTool.useRowInformation=True; from AthenaCommon.AppMgr import ToolSvc; ToolSvc.InDetTrackSummaryTool.OutputLevel=INFO;from InDetPhysValMonitoring.InDetPhysValMonitoringConf import InDetPhysValDecoratorAlg;decorators = InDetPhysValDecoratorAlg();topSequence += decorators' + reco_stat=$? + echo "art-result: $reco_stat reco" + if [ "$reco_stat" -ne 0 ]; then + echo "$script: Reco_tf.py isn't working yet. Remove jobReport.json to prevent pilot declaring a failed job." + run rm -f jobReport.json + fi + + mv ./PixelRDOAnalysis.root ./$dcubemon_muons_100GeV_digi_pixel + mv ./SCT_RDOAnalysis.root ./$dcubemon_muons_100GeV_digi_strip + + # DCube digi plots + dcube Reco_tf digi-plot "$dcubemon_muons_100GeV_digi_pixel" "$dcubecfg_digi_pixel" "$lastref_muons_100GeV_dir/$dcubemon_muons_100GeV_digi_pixel" "$dcube_digi_pixel_muons_100GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_100GeV_digi_pixel" "$dcubecfg_digi_pixel" "$dcuberef_muons_100GeV_digi_pixel" "$dcube_digi_pixel_muons_100GeV_fixref" + + dcube Reco_tf digi-plot "$dcubemon_muons_100GeV_digi_strip" "$dcubecfg_digi_strip" "$lastref_muons_100GeV_dir/$dcubemon_muons_100GeV_digi_strip" "$dcube_digi_strip_muons_100GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_100GeV_digi_strip" "$dcubecfg_digi_strip" "$dcuberef_muons_100GeV_digi_strip" "$dcube_digi_strip_muons_100GeV_fixref" + +fi + +if [ $dophy -ne 0 ]; then + + ## phys validation and dcube for single muons + run ls -lLU "$esd_muons_100GeV" + + if [ ! -s "$esd_muons_100GeV" ]; then + echo "$script: Reco_tf output '$esd_muons_100GeV' not created - exit" 2>&1 + echo "art-result: 21 physval" +# test -n "$dcube_rec_fixref" && echo "art-result: 22 plot-fixref" + test -n "$dcube_rec_muons_100GeV_lastref" && echo "art-result: 22 plot" + exit + fi + + # Run InDetPhysValMonitoring on ESD. + # It should eventually be possible to include this in the reco step, but this needs Reco_tf to support the ITk IDPVM setup. + ( set -x + inputESDFile="$esd_muons_100GeV" exec athena.py InDetSLHC_Example/PhysValITk_jobOptions.py + ) + echo "art-result: $? physval" + + mv ./physval.root ./$dcubemon_muons_100GeV_rec + + # DCube InDetPhysValMonitoring performance plots + dcube InDetPhysValMonitoring plot "$dcubemon_muons_100GeV_rec" "$dcubecfg_rec" "$lastref_muons_100GeV_dir/$dcubemon_muons_100GeV_rec" "$dcube_rec_muons_100GeV_lastref" + dcube InDetPhysValMonitoring "" "$dcubemon_muons_100GeV_rec" "$dcubecfg_rec" "$dcuberef_muons_100GeV_rec" "$dcube_rec_muons_100GeV_fixref" + +fi diff --git a/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_10GeV_25x100.sh b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_10GeV_25x100.sh new file mode 100755 index 0000000000000000000000000000000000000000..f0bc0e63922fd9836204e82344567ba73474249d --- /dev/null +++ b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_10GeV_25x100.sh @@ -0,0 +1,207 @@ +#!/bin/bash +# art-description: InclinedDuals sim+reco +# art-type: grid +# art-include: 21.9/Athena +# art-output: *.root +# art-output: *.xml +# art-output: dcube* + +# Fix ordering of output in logfile +exec 2>&1 +run() { (set -x; exec "$@") } + +# Following specify which steps to run. +dosim=1 +dorec=1 # Reco_tf.py not yet working +dophy=1 # If dorec=0, set dophy=1 to run InDetPhysValMonitoring over old ESD + +# Following specify DCube output directories. Set empty to disable. +dcube_sim_muons_10GeV_fixref="dcube_sim_muons_10GeV" +dcube_sim_muons_10GeV_lastref="dcube_sim_muons_10GeV_last" +dcube_digi_pixel_muons_10GeV_fixref="dcube_digi_pixel_muons_10GeV" +dcube_digi_pixel_muons_10GeV_lastref="dcube_digi_pixel_muons_10GeV_last" +dcube_digi_strip_muons_10GeV_fixref="dcube_digi_strip_muons_10GeV" +dcube_digi_strip_muons_10GeV_lastref="dcube_digi_strip_muons_10GeV_last" +dcube_rec_muons_10GeV_fixref="dcube_muons_10GeV" +dcube_rec_muons_10GeV_lastref="dcube_muons_10GeV_last" + +artdata=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art +#artdata=/eos/atlas/atlascerngroupdisk/data-art/grid-input + +name="InclinedDuals" +script="`basename \"$0\"`" + +evnt_muons_10GeV=$artdata/InDetSLHC_Example/inputs/EVNT.09244573.*.pool.root.1 +hits_ref_muons_10GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_HITS_mu_10GeV.root + +if [ $dosim -ne 0 ]; then + hits_muons_10GeV=physval_muons_10GeV.HITS.root +else + hits_muons_10GeV="$hits_ref_muons_10GeV" +fi +if [ $dorec -ne 0 ]; then + esd_muons_10GeV=physval_muons_10GeV.ESD.root +else + esd_muons_10GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_ESD_mu_10GeV.root +fi +#jo=$artdata/InDetSLHC_Example/jobOptions/PhysValITk_jobOptions.py moved to share/ +dcubemon_muons_10GeV_sim=SiHitValid_muons_10GeV.root +dcubemon_muons_10GeV_digi_pixel=PixelRDOAnalysis_muons_10GeV.root +dcubemon_muons_10GeV_digi_strip=SCT_RDOAnalysis_muons_10GeV.root +dcubemon_muons_10GeV_rec=physval_muons_10GeV.root +dcubecfg_sim=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SiHitValid_25x100.xml +dcubecfg_digi_pixel=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_PixelRDOAnalysis_25x100.xml +dcubecfg_digi_strip=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SCT_RDOAnalysis_25x100.xml +dcubecfg_rec=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_physval_25x100.xml +dcuberef_muons_10GeV_sim=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_10GeV_SiHitValid_25x100_2020.root +dcuberef_muons_10GeV_rec=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_10GeV_physval_25x100_2020.root +dcuberef_muons_10GeV_digi_pixel=$artdata/InDetSLHC_Example/ReferenceHistograms/PixelRDOAnalysis_muons_10GeV_25x100_2020.root +dcuberef_muons_10GeV_digi_strip=$artdata/InDetSLHC_Example/ReferenceHistograms/SCT_RDOAnalysis_muons_10GeV_25x100_2020.root +art_dcube=/cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube +lastref_muons_10GeV_dir=last_results_muons_10GeV + +if [ \( $dosim -ne 0 -a -n "$dcube_sim_muons_10GeV_lastref" \) -o \( $dophy -ne 0 -a -n "$dcube_rec_muons_10GeV_lastref" \) ]; then + run art.py download --user=artprod --dst="$lastref_muons_10GeV_dir" InDetSLHC_Example "$script" + run ls -la "$lastref_muons_10GeV_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" + test -n "$dcubedir" || return + run ls -lLU "$art_dcube" "$dcubemon" "$dcubecfg" "$dcuberef" + if [ ! -s "$dcubemon" ]; then + echo "$script: $step output '$dcubemon' not created. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 20 $statname" + return + fi + if [ ! -s "$dcuberef" ]; then + echo "$script: $step DCube reference '$dcuberef' not available. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 21 $statname" + return + fi + echo "$script: DCube comparison of $step output '$dcubemon' with '$dcuberef' reference" + keep="" + test "$dcubedir" != "dcube" -a -d "dcube" && keep="dcube_keep_`uuidgen`" + test -n "$keep" && run mv -f dcube "$keep" + run "$art_dcube" "$name" "$dcubemon" "$dcubecfg" "$dcuberef" + dcube_stat=$? + test -n "$statname" && echo "art-result: $dcube_stat $statname" + test "$dcubedir" != "dcube" && run mv -f dcube "$dcubedir" + test -n "$keep" && run mv -f "$keep" dcube +} + +if [ $dosim -ne 0 ]; then + + ## this runs single muons simulation + run ls -lL "$evnt_muons_10GeV" + + # Sim step: based on RTT SimInclinedDuals_GMX job: + run Sim_tf.py \ + --inputEVNTFile "$evnt_muons_10GeV" \ + --outputHITSFile "$hits_muons_10GeV" \ + --skipEvents 0 \ + --maxEvents 10000 \ + --randomSeed 873254 \ + --geometryVersion ATLAS-P2-ITK-20-00-00_VALIDATION \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --truthStrategy MC15aPlus \ + --DataRunNumber 242000 \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py,InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py' \ + --preExec all:'from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + --postInclude all:'PyJobTransforms/UseFrontier.py,InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/postInclude.SLHC_Setup.py,InDetSLHC_Example/postInclude.SiHitAnalysis.py' \ + --postExec EVNTtoHITS:'ServiceMgr.DetDescrCnvSvc.DoInitNeighbours=False; from AthenaCommon import CfgGetter; CfgGetter.getService("ISF_MC15aPlusTruthService").BeamPipeTruthStrategies+=["ISF_MCTruthStrategyGroupIDHadInt_MC15"];' + echo "art-result: $? sim" + + mv ./SiHitValid.root ./$dcubemon_muons_10GeV_sim + + # DCube Sim hit plots + dcube Sim_tf sim-plot "$dcubemon_muons_10GeV_sim" "$dcubecfg_sim" "$lastref_muons_10GeV_dir/$dcubemon_muons_10GeV_sim" "$dcube_sim_muons_10GeV_lastref" + dcube Sim_tf "" "$dcubemon_muons_10GeV_sim" "$dcubecfg_sim" "$dcuberef_muons_10GeV_sim" "$dcube_sim_muons_10GeV_fixref" + +fi + +if [ $dorec -ne 0 ]; then + + ## Starting reconstruction for single muons + if [ $dosim -ne 0 ] && [ ! -s "$hits_muons_10GeV" ] && [ -s "$hits_ref_muons_10GeV" ]; then + echo "$script: Sim_tf output '$hits_muons_10GeV' not created. Run Reco_tf on '$hits_ref_muons_10GeV' instead." 2>&1 + hits_muons_10GeV="$hits_ref_muons_10GeV" + fi + + run ls -lL "$hits_muons_10GeV" + + # Reco step: based on RecoInclinedDuals_GMX RTT job + # some preExecs for E2D step are workarounds - should be revisited. + run Reco_tf.py \ + --inputHITSFile "$hits_muons_10GeV" \ + --outputRDOFile physval_muons_10GeV.RDO.root \ + --outputESDFile "$esd_muons_10GeV" \ + --outputAODFile physval_muons_10GeV.AOD.root \ + --outputDAOD_IDTRKVALIDFile physval_muons_10GeV.DAOD_IDTRKVALID.root \ + --maxEvents -1 \ + --digiSteeringConf StandardInTimeOnlyTruth \ + --geometryVersion ATLAS-P2-ITK-20-00-00 \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --DataRunNumber 242000 \ + --postInclude all:'InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4_25x100.py' \ + HITtoRDO:'InDetSLHC_Example/postInclude.SLHC_Digitization_lowthresh.py,InDetSLHC_Example/postInclude.RDOAnalysis.py' \ + RAWtoALL:'InDetSLHC_Example/postInclude.DigitalClustering.py' \ + --preExec all:'from AthenaCommon.GlobalFlags import globalflags; globalflags.DataSource.set_Value_and_Lock("geant4"); from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + HITtoRDO:'from Digitization.DigitizationFlags import digitizationFlags; digitizationFlags.doInDetNoise.set_Value_and_Lock(False); digitizationFlags.doBichselSimulation.set_Value_and_Lock(False); digitizationFlags.overrideMetadata+=["SimLayout","PhysicsList"];' \ + RAWtoALL:'from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.doStandardPlots.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();InDetFlags.useDCS.set_Value_and_Lock(True);ServiceMgr.PixelCalibSvc.DisableDB=True;from InDetPrepRawDataToxAOD.InDetDxAODJobProperties import InDetDxAODFlags;InDetDxAODFlags.DumpLArCollisionTime.set_Value_and_Lock(False);InDetDxAODFlags.DumpSctInfo.set_Value_and_Lock(True);InDetDxAODFlags.ThinHitsOnTrack.set_Value_and_Lock(False)' \ + ESDtoDPD:'rec.DPDMakerScripts.set_Value_and_Lock(["InDetPrepRawDataToxAOD/InDetDxAOD.py","PrimaryDPDMaker/PrimaryDPDMaker.py"]);from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDCS.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();ServiceMgr.PixelCalibSvc.DisableDB=True' \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4_25x100.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py,InDetSLHC_Example/preInclude.SLHC_Calorimeter_mu0.py' \ + HITtoRDO:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + default:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Reco.py,InDetSLHC_Example/SLHC_Setup_Reco_TrackingGeometry_GMX.py' \ + RDOMergeAthenaMP:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + POOLMergeAthenaMPAOD0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + POOLMergeAthenaMPDAODIDTRKVALID0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + --postExec HITtoRDO:'pixeldigi.EnableSpecialPixels=False; CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];' \ + RAWtoALL:'ToolSvc.InDetSCT_ClusteringTool.useRowInformation=True; from AthenaCommon.AppMgr import ToolSvc; ToolSvc.InDetTrackSummaryTool.OutputLevel=INFO;from InDetPhysValMonitoring.InDetPhysValMonitoringConf import InDetPhysValDecoratorAlg;decorators = InDetPhysValDecoratorAlg();topSequence += decorators' + reco_stat=$? + echo "art-result: $reco_stat reco" + if [ "$reco_stat" -ne 0 ]; then + echo "$script: Reco_tf.py isn't working yet. Remove jobReport.json to prevent pilot declaring a failed job." + run rm -f jobReport.json + fi + + mv ./PixelRDOAnalysis.root ./$dcubemon_muons_10GeV_digi_pixel + mv ./SCT_RDOAnalysis.root ./$dcubemon_muons_10GeV_digi_strip + + # DCube digi plots + dcube Reco_tf digi-plot "$dcubemon_muons_10GeV_digi_pixel" "$dcubecfg_digi_pixel" "$lastref_muons_10GeV_dir/$dcubemon_muons_10GeV_digi_pixel" "$dcube_digi_pixel_muons_10GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_10GeV_digi_pixel" "$dcubecfg_digi_pixel" "$dcuberef_muons_10GeV_digi_pixel" "$dcube_digi_pixel_muons_10GeV_fixref" + + dcube Reco_tf digi-plot "$dcubemon_muons_10GeV_digi_strip" "$dcubecfg_digi_strip" "$lastref_muons_10GeV_dir/$dcubemon_muons_10GeV_digi_strip" "$dcube_digi_strip_muons_10GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_10GeV_digi_strip" "$dcubecfg_digi_strip" "$dcuberef_muons_10GeV_digi_strip" "$dcube_digi_strip_muons_10GeV_fixref" + +fi + +if [ $dophy -ne 0 ]; then + + ## phys validation and dcube for single muons + run ls -lLU "$esd_muons_10GeV" + + if [ ! -s "$esd_muons_10GeV" ]; then + echo "$script: Reco_tf output '$esd_muons_10GeV' not created - exit" 2>&1 + echo "art-result: 21 physval" +# test -n "$dcube_rec_fixref" && echo "art-result: 22 plot-fixref" + test -n "$dcube_rec_muons_10GeV_lastref" && echo "art-result: 22 plot" + exit + fi + + # Run InDetPhysValMonitoring on ESD. + # It should eventually be possible to include this in the reco step, but this needs Reco_tf to support the ITk IDPVM setup. + ( set -x + inputESDFile="$esd_muons_10GeV" exec athena.py InDetSLHC_Example/PhysValITk_jobOptions.py + ) + echo "art-result: $? physval" + + mv ./physval.root ./$dcubemon_muons_10GeV_rec + + # DCube InDetPhysValMonitoring performance plots + dcube InDetPhysValMonitoring plot "$dcubemon_muons_10GeV_rec" "$dcubecfg_rec" "$lastref_muons_10GeV_dir/$dcubemon_muons_10GeV_rec" "$dcube_rec_muons_10GeV_lastref" + dcube InDetPhysValMonitoring "" "$dcubemon_muons_10GeV_rec" "$dcubecfg_rec" "$dcuberef_muons_10GeV_rec" "$dcube_rec_muons_10GeV_fixref" + +fi diff --git a/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_1GeV_25x100.sh b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_1GeV_25x100.sh new file mode 100755 index 0000000000000000000000000000000000000000..8e3578492a57d534d4893c0117de8551bf39b3e9 --- /dev/null +++ b/InnerDetector/InDetExample/InDetSLHC_Example/test/test_InclinedDuals_single_muons_1GeV_25x100.sh @@ -0,0 +1,207 @@ +#!/bin/bash +# art-description: InclinedDuals sim+reco +# art-type: grid +# art-include: 21.9/Athena +# art-output: *.root +# art-output: *.xml +# art-output: dcube* + +# Fix ordering of output in logfile +exec 2>&1 +run() { (set -x; exec "$@") } + +# Following specify which steps to run. +dosim=1 +dorec=1 # Reco_tf.py not yet working +dophy=1 # If dorec=0, set dophy=1 to run InDetPhysValMonitoring over old ESD + +# Following specify DCube output directories. Set empty to disable. +dcube_sim_muons_1GeV_fixref="dcube_sim_muons_1GeV" +dcube_sim_muons_1GeV_lastref="dcube_sim_muons_1GeV_last" +dcube_digi_pixel_muons_1GeV_fixref="dcube_digi_pixel_muons_1GeV" +dcube_digi_pixel_muons_1GeV_lastref="dcube_digi_pixel_muons_1GeV_last" +dcube_digi_strip_muons_1GeV_fixref="dcube_digi_strip_muons_1GeV" +dcube_digi_strip_muons_1GeV_lastref="dcube_digi_strip_muons_1GeV_last" +dcube_rec_muons_1GeV_fixref="dcube_muons_1GeV" +dcube_rec_muons_1GeV_lastref="dcube_muons_1GeV_last" + +artdata=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art +#artdata=/eos/atlas/atlascerngroupdisk/data-art/grid-input + +name="InclinedDuals" +script="`basename \"$0\"`" + +evnt_muons_1GeV=$artdata/InDetSLHC_Example/inputs/EVNT.09244569.*.pool.root.1 +hits_ref_muons_1GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_HITS_mu_1GeV.root + +if [ $dosim -ne 0 ]; then + hits_muons_1GeV=physval_muons_1GeV.HITS.root +else + hits_muons_1GeV="$hits_ref_muons_1GeV" +fi +if [ $dorec -ne 0 ]; then + esd_muons_1GeV=physval_muons_1GeV.ESD.root +else + esd_muons_1GeV=$artdata/InDetSLHC_Example/inputs/InclinedDuals_ESD_mu_1GeV.root +fi +#jo=$artdata/InDetSLHC_Example/jobOptions/PhysValITk_jobOptions.py moved to share/ +dcubemon_muons_1GeV_sim=SiHitValid_muons_1GeV.root +dcubemon_muons_1GeV_digi_pixel=PixelRDOAnalysis_muons_1GeV.root +dcubemon_muons_1GeV_digi_strip=SCT_RDOAnalysis_muons_1GeV.root +dcubemon_muons_1GeV_rec=physval_muons_1GeV.root +dcubecfg_sim=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SiHitValid_25x100.xml +dcubecfg_digi_pixel=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_PixelRDOAnalysis_25x100.xml +dcubecfg_digi_strip=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_SCT_RDOAnalysis_25x100.xml +dcubecfg_rec=$artdata/InDetSLHC_Example/dcube/config/InclinedDuals_physval_25x100.xml +dcuberef_muons_1GeV_sim=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_1GeV_SiHitValid_25x100_2020.root +dcuberef_muons_1GeV_rec=$artdata/InDetSLHC_Example/ReferenceHistograms/InclinedDuals_muons_1GeV_physval_25x100_2020.root +dcuberef_muons_1GeV_digi_pixel=$artdata/InDetSLHC_Example/ReferenceHistograms/PixelRDOAnalysis_muons_1GeV_25x100_2020.root +dcuberef_muons_1GeV_digi_strip=$artdata/InDetSLHC_Example/ReferenceHistograms/SCT_RDOAnalysis_muons_1GeV_25x100_2020.root +art_dcube=/cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube +lastref_muons_1GeV_dir=last_results_muons_1GeV + +if [ \( $dosim -ne 0 -a -n "$dcube_sim_muons_1GeV_lastref" \) -o \( $dophy -ne 0 -a -n "$dcube_rec_muons_1GeV_lastref" \) ]; then + run art.py download --user=artprod --dst="$lastref_muons_1GeV_dir" InDetSLHC_Example "$script" + run ls -la "$lastref_muons_1GeV_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" + test -n "$dcubedir" || return + run ls -lLU "$art_dcube" "$dcubemon" "$dcubecfg" "$dcuberef" + if [ ! -s "$dcubemon" ]; then + echo "$script: $step output '$dcubemon' not created. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 20 $statname" + return + fi + if [ ! -s "$dcuberef" ]; then + echo "$script: $step DCube reference '$dcuberef' not available. Don't create $dcubedir output." 2>&1 + test -n "$statname" && echo "art-result: 21 $statname" + return + fi + echo "$script: DCube comparison of $step output '$dcubemon' with '$dcuberef' reference" + keep="" + test "$dcubedir" != "dcube" -a -d "dcube" && keep="dcube_keep_`uuidgen`" + test -n "$keep" && run mv -f dcube "$keep" + run "$art_dcube" "$name" "$dcubemon" "$dcubecfg" "$dcuberef" + dcube_stat=$? + test -n "$statname" && echo "art-result: $dcube_stat $statname" + test "$dcubedir" != "dcube" && run mv -f dcube "$dcubedir" + test -n "$keep" && run mv -f "$keep" dcube +} + +if [ $dosim -ne 0 ]; then + + ## this runs single muons simulation + run ls -lL "$evnt_muons_1GeV" + + # Sim step: based on RTT SimInclinedDuals_GMX job: + run Sim_tf.py \ + --inputEVNTFile "$evnt_muons_1GeV" \ + --outputHITSFile "$hits_muons_1GeV" \ + --skipEvents 0 \ + --maxEvents 10000 \ + --randomSeed 873254 \ + --geometryVersion ATLAS-P2-ITK-20-00-00_VALIDATION \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --truthStrategy MC15aPlus \ + --DataRunNumber 242000 \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py,InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py' \ + --preExec all:'from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + --postInclude all:'PyJobTransforms/UseFrontier.py,InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4.py,InDetSLHC_Example/postInclude.SLHC_Setup.py,InDetSLHC_Example/postInclude.SiHitAnalysis.py' \ + --postExec EVNTtoHITS:'ServiceMgr.DetDescrCnvSvc.DoInitNeighbours=False; from AthenaCommon import CfgGetter; CfgGetter.getService("ISF_MC15aPlusTruthService").BeamPipeTruthStrategies+=["ISF_MCTruthStrategyGroupIDHadInt_MC15"];' + echo "art-result: $? sim" + + mv ./SiHitValid.root ./$dcubemon_muons_1GeV_sim + + # DCube Sim hit plots + dcube Sim_tf sim-plot "$dcubemon_muons_1GeV_sim" "$dcubecfg_sim" "$lastref_muons_1GeV_dir/$dcubemon_muons_1GeV_sim" "$dcube_sim_muons_1GeV_lastref" + dcube Sim_tf "" "$dcubemon_muons_1GeV_sim" "$dcubecfg_sim" "$dcuberef_muons_1GeV_sim" "$dcube_sim_muons_1GeV_fixref" + +fi + +if [ $dorec -ne 0 ]; then + + ## Starting reconstruction for single muons + if [ $dosim -ne 0 ] && [ ! -s "$hits_muons_1GeV" ] && [ -s "$hits_ref_muons_1GeV" ]; then + echo "$script: Sim_tf output '$hits_muons_1GeV' not created. Run Reco_tf on '$hits_ref_muons_1GeV' instead." 2>&1 + hits_muons_1GeV="$hits_ref_muons_1GeV" + fi + + run ls -lL "$hits_muons_1GeV" + + # Reco step: based on RecoInclinedDuals_GMX RTT job + # some preExecs for E2D step are workarounds - should be revisited. + run Reco_tf.py \ + --inputHITSFile "$hits_muons_1GeV" \ + --outputRDOFile physval_muons_1GeV.RDO.root \ + --outputESDFile "$esd_muons_1GeV" \ + --outputAODFile physval_muons_1GeV.AOD.root \ + --outputDAOD_IDTRKVALIDFile physval_muons_1GeV.DAOD_IDTRKVALID.root \ + --maxEvents -1 \ + --digiSteeringConf StandardInTimeOnlyTruth \ + --geometryVersion ATLAS-P2-ITK-20-00-00 \ + --conditionsTag OFLCOND-MC15c-SDR-14-03 \ + --DataRunNumber 242000 \ + --postInclude all:'InDetSLHC_Example/postInclude.SLHC_Setup_InclBrl_4_25x100.py' \ + HITtoRDO:'InDetSLHC_Example/postInclude.SLHC_Digitization_lowthresh.py,InDetSLHC_Example/postInclude.RDOAnalysis.py' \ + RAWtoALL:'InDetSLHC_Example/postInclude.DigitalClustering.py' \ + --preExec all:'from AthenaCommon.GlobalFlags import globalflags; globalflags.DataSource.set_Value_and_Lock("geant4"); from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags; SLHC_Flags.doGMX.set_Value_and_Lock(True); SLHC_Flags.LayoutOption="InclinedDuals";' \ + HITtoRDO:'from Digitization.DigitizationFlags import digitizationFlags; digitizationFlags.doInDetNoise.set_Value_and_Lock(False); digitizationFlags.doBichselSimulation.set_Value_and_Lock(False); digitizationFlags.overrideMetadata+=["SimLayout","PhysicsList"];' \ + RAWtoALL:'from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.doStandardPlots.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();InDetFlags.useDCS.set_Value_and_Lock(True);ServiceMgr.PixelCalibSvc.DisableDB=True;from InDetPrepRawDataToxAOD.InDetDxAODJobProperties import InDetDxAODFlags;InDetDxAODFlags.DumpLArCollisionTime.set_Value_and_Lock(False);InDetDxAODFlags.DumpSctInfo.set_Value_and_Lock(True);InDetDxAODFlags.ThinHitsOnTrack.set_Value_and_Lock(False)' \ + ESDtoDPD:'rec.DPDMakerScripts.set_Value_and_Lock(["InDetPrepRawDataToxAOD/InDetDxAOD.py","PrimaryDPDMaker/PrimaryDPDMaker.py"]);from InDetRecExample.InDetJobProperties import InDetFlags;InDetFlags.useDCS.set_Value_and_Lock(True);from PixelConditionsServices.PixelConditionsServicesConf import PixelCalibSvc;ServiceMgr +=PixelCalibSvc();ServiceMgr.PixelCalibSvc.DisableDB=True' \ + --preInclude all:'InDetSLHC_Example/preInclude.SLHC_Setup_InclBrl_4_25x100.py,InDetSLHC_Example/preInclude.SLHC_Setup_Strip_GMX.py,InDetSLHC_Example/preInclude.SLHC_Calorimeter_mu0.py' \ + HITtoRDO:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + default:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Reco.py,InDetSLHC_Example/SLHC_Setup_Reco_TrackingGeometry_GMX.py' \ + RDOMergeAthenaMP:'InDetSLHC_Example/preInclude.SLHC.py,InDetSLHC_Example/preInclude.SiliconOnly.py' \ + POOLMergeAthenaMPAOD0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + POOLMergeAthenaMPDAODIDTRKVALID0:'InDetSLHC_Example/preInclude.SLHC.SiliconOnly.Ana.py,InDetSLHC_Example/SLHC_Setup_Reco_Alpine.py' \ + --postExec HITtoRDO:'pixeldigi.EnableSpecialPixels=False; CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];' \ + RAWtoALL:'ToolSvc.InDetSCT_ClusteringTool.useRowInformation=True; from AthenaCommon.AppMgr import ToolSvc; ToolSvc.InDetTrackSummaryTool.OutputLevel=INFO;from InDetPhysValMonitoring.InDetPhysValMonitoringConf import InDetPhysValDecoratorAlg;decorators = InDetPhysValDecoratorAlg();topSequence += decorators' + reco_stat=$? + echo "art-result: $reco_stat reco" + if [ "$reco_stat" -ne 0 ]; then + echo "$script: Reco_tf.py isn't working yet. Remove jobReport.json to prevent pilot declaring a failed job." + run rm -f jobReport.json + fi + + mv ./PixelRDOAnalysis.root ./$dcubemon_muons_1GeV_digi_pixel + mv ./SCT_RDOAnalysis.root ./$dcubemon_muons_1GeV_digi_strip + + # DCube digi plots + dcube Reco_tf digi-plot "$dcubemon_muons_1GeV_digi_pixel" "$dcubecfg_digi_pixel" "$lastref_muons_1GeV_dir/$dcubemon_muons_1GeV_digi_pixel" "$dcube_digi_pixel_muons_1GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_1GeV_digi_pixel" "$dcubecfg_digi_pixel" "$dcuberef_muons_1GeV_digi_pixel" "$dcube_digi_pixel_muons_1GeV_fixref" + + dcube Reco_tf digi-plot "$dcubemon_muons_1GeV_digi_strip" "$dcubecfg_digi_strip" "$lastref_muons_1GeV_dir/$dcubemon_muons_1GeV_digi_strip" "$dcube_digi_strip_muons_1GeV_lastref" + dcube Reco_tf "" "$dcubemon_muons_1GeV_digi_strip" "$dcubecfg_digi_strip" "$dcuberef_muons_1GeV_digi_strip" "$dcube_digi_strip_muons_1GeV_fixref" + +fi + +if [ $dophy -ne 0 ]; then + + ## phys validation and dcube for single muons + run ls -lLU "$esd_muons_1GeV" + + if [ ! -s "$esd_muons_1GeV" ]; then + echo "$script: Reco_tf output '$esd_muons_1GeV' not created - exit" 2>&1 + echo "art-result: 21 physval" +# test -n "$dcube_rec_fixref" && echo "art-result: 22 plot-fixref" + test -n "$dcube_rec_muons_1GeV_lastref" && echo "art-result: 22 plot" + exit + fi + + # Run InDetPhysValMonitoring on ESD. + # It should eventually be possible to include this in the reco step, but this needs Reco_tf to support the ITk IDPVM setup. + ( set -x + inputESDFile="$esd_muons_1GeV" exec athena.py InDetSLHC_Example/PhysValITk_jobOptions.py + ) + echo "art-result: $? physval" + + mv ./physval.root ./$dcubemon_muons_1GeV_rec + + # DCube InDetPhysValMonitoring performance plots + dcube InDetPhysValMonitoring plot "$dcubemon_muons_1GeV_rec" "$dcubecfg_rec" "$lastref_muons_1GeV_dir/$dcubemon_muons_1GeV_rec" "$dcube_rec_muons_1GeV_lastref" + dcube InDetPhysValMonitoring "" "$dcubemon_muons_1GeV_rec" "$dcubecfg_rec" "$dcuberef_muons_1GeV_rec" "$dcube_rec_muons_1GeV_fixref" + +fi