From 40e98048f26cdd64d12f53ab1bbae0edb152a46d Mon Sep 17 00:00:00 2001
From: Julie Kirk <julie.kirk@stfc.ac.uk>
Date: Wed, 5 Aug 2020 07:54:42 +0000
Subject: [PATCH] Changes for TrigInDetValidation art tests

	modified:   Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
	modified:   Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
	modified:   Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
	modified:   Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py
	deleted:    Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_test_pu40.py
	modified:   Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40.py
	modified:   Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40_build.py
---
 .../python/TrigInDetArtSteps.py               |  69 ++++++++-
 .../test/test_trigID_all_ttbar_pu80.py        |  56 +-------
 .../test/test_trigID_all_ttbar_pu80_mt.py     |  58 +-------
 .../test/test_trigID_bjet_pu40.py             |  52 +------
 .../test/test_trigID_bjet_test_pu40.py        | 136 ------------------
 .../test/test_trigID_mu_zmumu_pu40.py         |  51 +------
 .../test/test_trigID_mu_zmumu_pu40_build.py   |  50 +------
 7 files changed, 99 insertions(+), 373 deletions(-)
 delete mode 100755 Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_test_pu40.py

diff --git a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
index ca007442f22..4de9eb21354 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py
@@ -9,12 +9,79 @@ The main common check steps are defined in the TrigValSteering.CheckSteps module
 
 import os
 
+from TrigValTools.TrigValSteering.ExecStep import ExecStep
 from TrigAnalysisTest.TrigAnalysisSteps import AthenaCheckerStep
 from TrigValTools.TrigValSteering.Step import Step
 from TrigValTools.TrigValSteering.CheckSteps import RefComparisonStep
 
 ##################################################
-# Additional exec (athena) steps
+# Exec (athena) steps for Reco_tf
+##################################################
+
+class TrigInDetReco(ExecStep):
+    def __init__(self, name='TrigInDetReco'):
+        ExecStep.__init__(self, name)
+##        super(TrigInDetReco, self).__init__(name)
+        self.type = 'Reco_tf'
+        self.max_events=-1
+        self.required = True
+        self.threads = 1 # TODO: change to 4
+        self.concurrent_events = 1 # TODO: change to 4
+        self.perfmon = False
+        self.timeout = 18*3600
+        self.slices = []
+        self.preexec_trig = ' '
+        self.preexec_reco =  ';'.join([
+            'from RecExConfig.RecFlags import rec',
+            'rec.doForwardDet=False',
+            'rec.doEgamma=False',
+            'rec.doMuonCombined=False',
+            'rec.doJetMissingETTag=False',
+            'rec.doTau=False'
+        ])
+        self.preexec_aod = ';'.join([
+            self.preexec_reco,
+            '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)'
+        ])
+        self.preexec_all = ';'.join([
+            'from TriggerJobOpts.TriggerFlags import TriggerFlags',
+            'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
+        ])
+        self.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
+
+
+    def configure(self, test):
+        chains = '['
+        flags = ''
+        for i in self.slices:
+            if (i=='muon') :
+                chains += "'HLT_mu6_idperf_L1MU6',"
+                chains += "'HLT_mu24_idperf_L1MU20',"
+                flags += 'doMuonSlice=True;'
+            if (i=='electron') :
+                chains +=  "'HLT_e5_etcut_L1EM3',"  ## need an idperf chain once one is in the menu
+                flags += 'doEgammaSlice=True;'
+            if (i=='tau') :
+                chains +=  "'HLT_tau25_idperf_tracktwo_L1TAU12IM',"
+                flags += 'doTauSlice=True;'
+            if (i=='bjet') :
+                chains += "'HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20',"
+                flags += 'doBjetSlice=true;'
+
+        chains += ']'
+        self.preexec_trig = 'doEmptyMenu=True;'+flags+'selectChains='+chains
+
+        self.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
+            self.preexec_trig, self.preexec_all, self.preexec_reco, self.preexec_aod)
+        super(TrigInDetReco, self).configure(test)
+
+
+##################################################
+# Additional exec (athena) steps - AOD to TrkNtuple
 ##################################################
 
 class TrigInDetAna(AthenaCheckerStep):
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
index 3745db15c4e..9ad0519a037 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80.py
@@ -24,8 +24,8 @@
 # art-output: *.dat 
 
 
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
 
 
 import sys,getopt
@@ -51,61 +51,15 @@ for opt,arg in opts:
         postproc=True
 
 
-chains = [
-    'HLT_mu6_idperf_L1MU6',
-    'HLT_mu24_idperf_L1MU20',
-    'HLT_e5_etcut_L1EM3',  ## need an idperf chain once one is in the menu
-    'HLT_tau25_idperf_tracktwo_L1TAU12IM',
-    'HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20'
-]
-
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doMuonSlice=True',
-    'doEgammaSlice=True',
-    'doTauSlice=True',
-    'doBjetSlice=True',
-    'selectChains='+str(chains)
-])
-
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
-rdo2aod.max_events = 1000 # TODO: 2000 events
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['muon','electron','tau','bjet']
+rdo2aod.max_events = 2000 
 rdo2aod.threads = 1 # TODO: change to 4
 rdo2aod.concurrent_events = 1 # TODO: change to 4
 rdo2aod.perfmon = False
 rdo2aod.timeout = 18*3600
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
 rdo2aod.input = 'ttbar_pu80'   
 
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
 
 test = Test.Test()
 test.art_type = 'grid'
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
index dbf9b1d6b19..b67f68f0561 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_mt.py
@@ -26,8 +26,8 @@
 # art-output: *.dat 
 
 
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
 
 
 import sys,getopt
@@ -45,60 +45,16 @@ for opt,arg in opts:
 
 
 
-chains = [
-    'HLT_mu6_idperf_L1MU6',
-    'HLT_mu24_idperf_L1MU20',
-    'HLT_e5_etcut_L1EM3',  ## need an idperf chain once one is in the menu
-    'HLT_tau25_idperf_tracktwo_L1TAU12IM',
-    'HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20'
-]
-
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doMuonSlice=True',
-    'doEgammaSlice=True',
-    'doTauSlice=True',
-    'doBjetSlice=True',
-    'selectChains='+str(chains)
-])
-
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
+
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['muon','electron','tau','bjet']
 rdo2aod.max_events = 1000 # TODO: 2000 events
 rdo2aod.threads = 1 # TODO: change to 4
 rdo2aod.concurrent_events = 4 
 rdo2aod.perfmon = False
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
-rdo2aod.input = 'ttbar_pu80'   ## This isn't the same sample as the grid test but for not lets use it.
+rdo2aod.timeout = 18*3600
+rdo2aod.input = 'ttbar_pu80'   
 
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
 
 test = Test.Test()
 test.art_type = 'grid'
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py
index f7dfc28ec53..242cc7286c5 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py
@@ -24,8 +24,8 @@
 # art-output: *.dat 
 
 
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
 
 
 import sys,getopt
@@ -51,54 +51,16 @@ for opt,arg in opts:
         postproc=True
 
 
-chains = [
-    'HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20'
-]
 
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doBjetSlice=True',
-    'selectChains='+str(chains)
-])
-
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
-rdo2aod.max_events = 1000 # TODO: 2000 events
-rdo2aod.threads = 1 # TODO: change to 4
-rdo2aod.concurrent_events = 1 # TODO: change to 4
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['bjet']
+rdo2aod.max_events = 2000 
+rdo2aod.threads = 1 
+rdo2aod.concurrent_events = 1 
 rdo2aod.perfmon = False
 rdo2aod.timeout = 18*3600
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
 rdo2aod.input = 'ttbar'   
 
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
 
 test = Test.Test()
 test.art_type = 'grid'
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_test_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_test_pu40.py
deleted file mode 100755
index fa70d6ec429..00000000000
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_test_pu40.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env python
-
-# art-description: art job for all_ttbar_pu80_grid
-# art-type: grid
-# art-include: master/Athena
-# art-input-nfiles: 3
-# art-athena-mt: 4
-# art-output: *.txt
-# art-output: *.log
-# art-output: log.*
-# art-output: *.out
-# art-output: *.err
-# art-output: *.log.tar.gz
-# art-output: *.new
-# art-output: *.json
-# art-output: *.root
-# art-output: *.check*
-# art-output: HLT*
-# art-output: times*
-# art-output: cost-perCall
-# art-output: cost-perEvent
-# art-output: cost-perCall-chain
-# art-output: cost-perEvent-chain
-# art-output: *.dat 
-
-
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
-
-
-import sys,getopt
-
-try:
-    opts, args = getopt.getopt(sys.argv[1:],"lxp",["local"])
-except getopt.GetoptError:
-    print("Usage:  ")
-    print("-l(--local)    run locally with input file from art eos grid-input")
-    print("-x             don't run athena or post post-processing, only plotting")
-    print("-p             run post-processing, even if -x is set")
-
-
-local=False
-exclude=False
-postproc=False
-for opt,arg in opts:
-    if opt in ("-l", "--local"):
-        local=True
-    if opt=="-x":
-        exclude=True
-    if opt=="-p":
-        postproc=True
-
-
-chains = [
-    'HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20'
-]
-
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doBjetSlice=True',
-    'selectChains='+str(chains),
-    'from TrigBjetHypo.TrigSuperRoiBuilderAllTEConfig import getSuperRoiBuilderAllTEInstance as super; super.EtaHalfWidth = 0.2; super.PhiHalfWidth = 0.2'
-])
-
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
-rdo2aod.max_events = 1000 # TODO: 2000 events
-rdo2aod.threads = 1 # TODO: change to 4
-rdo2aod.concurrent_events = 1 # TODO: change to 4
-rdo2aod.perfmon = False
-rdo2aod.timeout = 18*3600
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
-rdo2aod.input = 'ttbar'   
-
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
-
-test = Test.Test()
-test.art_type = 'grid'
-if (not exclude):
-    test.exec_steps = [rdo2aod]
-    test.exec_steps.append(TrigInDetAna()) # Run analysis to produce TrkNtuple
-    test.check_steps = CheckSteps.default_check_steps(test)
-
-# Run Tidardict
-if ((not exclude) or postproc ):
-    rdict = TrigInDetdictStep()
-    rdict.args='TIDAdata-run3.dat  -f data-hists.root -b Test_bin.dat '
-    test.check_steps.append(rdict)
-
- 
-# Now the comparitor steps
-comp1=TrigInDetCompStep('CompareStep1')
-comp1.chains='HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20:HLT_IDTrack_Bjet_FTF HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20:HLT_IDTrack_Bjet_IDTrig'
-comp1.output_dir = 'HLTEF-plots-bjet'
-test.check_steps.append(comp1)
-
-
-
-cpucost=TrigInDetCpuCostStep('CpuCostStep1')
-test.check_steps.append(cpucost)
-
-cpucost2=TrigInDetCpuCostStep('CpuCostStep2')
-cpucost2.args += '  -p FastTrack'
-cpucost2.output_dir = 'times-FTF' 
-test.check_steps.append(cpucost2)
-
-
-import sys
-sys.exit(test.run())
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40.py
index 0ca7281291a..7edca3a8bc4 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40.py
@@ -25,8 +25,8 @@
 # art-output: *.dat 
 
 
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
 
 import sys,getopt
 
@@ -51,60 +51,19 @@ for opt,arg in opts:
         postproc=True
 
 
-
-
-chains = [
-    'HLT_mu6_idperf_L1MU6',
-    'HLT_mu24_idperf_L1MU20'
-]
-
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doMuonSlice=True',
-    'selectChains='+str(chains)
-])
-
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['muon']
 rdo2aod.max_events = 2000 # TODO: 2000 events
 rdo2aod.threads = 1 # TODO: change to 4
 rdo2aod.concurrent_events = 1 # TODO: change to 4
 rdo2aod.perfmon = False
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG" '
+rdo2aod.timeout = 18*3600
 if local:
     rdo2aod.input = 'Zmumu_pu40'
 else:
     rdo2aod.input = ''
     rdo2aod.args += '--inputRDOFile=$ArtInFile '
 
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
 
 test = Test.Test()
 test.art_type = 'grid'
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40_build.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40_build.py
index 04186e37888..7b125971874 100755
--- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40_build.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mu_zmumu_pu40_build.py
@@ -23,53 +23,17 @@ for opt,arg in opts:
         postproc=True
 
         
-from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps
-from TrigInDetValidation.TrigInDetArtSteps import TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
 
-chains = [
-    'HLT_mu6_idperf_L1MU6',
-    'HLT_mu24_idperf_L1MU20'
-]
-
-preexec_trig = ';'.join([
-    'doEmptyMenu=True',
-    'doMuonSlice=True',
-    'selectChains='+str(chains)
-])
-
-preexec_reco = ';'.join([
-    'from RecExConfig.RecFlags import rec',
-    'rec.doForwardDet=False',
-    'rec.doEgamma=False',
-    'rec.doMuonCombined=False',
-    'rec.doJetMissingETTag=False',
-    'rec.doTau=False'
-])
-
-preexec_aod = ';'.join([
-     preexec_reco,
-     '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)'
-])
-
-preexec_all = ';'.join([
-    'from TriggerJobOpts.TriggerFlags import TriggerFlags',
-    'TriggerFlags.AODEDMSet.set_Value_and_Lock(\\\"AODFULL\\\")',
-])
-
-rdo2aod = ExecStep.ExecStep()
-rdo2aod.type = 'Reco_tf'
-rdo2aod.input = 'Zmumu_pu40'  
-rdo2aod.max_events = 10 # TODO: 2000 events
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['muon']
+rdo2aod.max_events = 2000 # TODO: 2000 events
 rdo2aod.threads = 1 # TODO: change to 4
 rdo2aod.concurrent_events = 1 # TODO: change to 4
 rdo2aod.perfmon = False
-rdo2aod.args = '--outputAODFile=AOD.pool.root --steering="doRDO_TRIG"'
-rdo2aod.args += ' --preExec "RDOtoRDOTrigger:{:s};" "all:{:s};" "RAWtoESD:{:s};" "ESDtoAOD:{:s};"'.format(
-    preexec_trig, preexec_all, preexec_reco, preexec_aod)
+rdo2aod.input = 'Zmumu_pu40'   
+
 
 test = Test.Test()
 test.art_type = 'build'
-- 
GitLab