From 7c9d1d96b46556131b83a606d4dba0ba262eee3d Mon Sep 17 00:00:00 2001
From: Tomasz Bold <tomasz.bold@gmail.com>
Date: Wed, 4 Jul 2018 09:36:49 +0200
Subject: [PATCH] Proposed trigger flags

---
 .../TriggerJobOpts/python/NewTriggerFlags.py  | 165 ++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100644 Trigger/TriggerCommon/TriggerJobOpts/python/NewTriggerFlags.py

diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/NewTriggerFlags.py b/Trigger/TriggerCommon/TriggerJobOpts/python/NewTriggerFlags.py
new file mode 100644
index 00000000000..db9323f4203
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/NewTriggerFlags.py
@@ -0,0 +1,165 @@
+# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+
+from AthenaConfiguration.AthConfigFlags import AthConfigFlags
+
+def createTriggerFlags():
+
+    flags = AthConfigFlags()
+    # enables L1 simulation
+    flags.addFlag('Trigger.doLVL1', lambda prevFlags: prevFlags('global.isMC'))
+
+    # enables L1 topological trigger simulation
+    flags.addFlag('Trigger.doL1Topo', True )
+
+    # writes additional info from Topo simulation
+    flags.addFlag('Trigger.writeL1TopoValData', True )
+    
+    # need proper documentation
+    flags.addFlag('Trigger.useL1CaloCalibration', False)
+
+    # need proper documentation
+    flags.addFlag('Trigger.useRun1CaloEnergyScale', False)
+
+    # enable HLT part of the trigger
+    flags.addFlag('Trigger.doHLT', True)
+
+    # if 1, Run1 decoding version is set; if 2, Run2 
+    flags.addFlag('Trigger.EDMDecodingVersion', 2)
+
+    # enables additional algorithms colecting MC truth infrmation  (this is only used by IDso maybe we need Trigger.ID.doTruth only?)
+    flags.addFlag('Trigger.doTruth', False)
+
+    # only enable services for analysis and BS -> ESD processing (we need better name)
+    flags.addFlag('Trigger.doTriggerConfigOnly', False)    
+
+    # enable Bcm inputs simulation
+    flags.addFlag('Trigger.L1.doBcm', True)
+
+    # enable muon inputs simulation
+    flags.addFlag('Trigger.L1.doMuons', True)
+
+    # version of CTP data, int value up to 4
+    flags.addFlag('Trigger.L1.CTPVersion', 4)
+
+    # list of thresholds (not sure if we want to use new flags to generate L1, leaving out for now?)
+    
+    
+    # enable streaming of HLT content as BS payload
+    flags.addFlag('Trigger.writeBS', False)
+
+    # list of EDM objects to be written to AOD
+    flags.addFlag('Trigger.AODEDMSet', [])
+
+    # list of objects to be written to ESD
+    flags.addFlag('Trigger.ESDEDMSet', [])
+
+    # tag to be used for condutions used by HLT code
+    flags.addFlag('Trigger.OnlineCondTag', 'CONDBR2-HLTP-2016-01')
+
+    # geometry version used by HLT online
+    flags.addFlag('Trigger.OnlineGeoTag', 'ATLAS-R2-2015-04-00-00')
+
+    # configuration tune for various years of Run2 (why string?)
+    flags.addFlag('Trigger.run2Config', '2018')
+
+    # comissionig options
+    # one of:  'HltOnly',
+    #    'Lvl1Only',
+    #    'FullTrigger',
+    #    'NoTrigger'
+    flags.addFlag('Trigger.dataTakingConditions', 'FullTrigger')
+                
+
+    # use or not frontier proxies
+    flags.addFlag('Trigger.triggerUseFrontier', False)
+
+    # the configuration name, see TriggerFlags for full info
+    flags.addFlag('Trigger.triggerConfig', 'MCRECO:DEFAULT')
+
+    # name of the trigger menu
+    flags.addFlag('Trigger.triggerMenuSetup', 'MC_pp_v7_tight_mc_prescale')
+    
+    # generate or not the L1 configuration
+    flags.addFlag('Trigger.generateLVL1Config', False)
+    
+    # L1 XML file name 
+    flags.addFlag('Trigger.LVL1ConfigFile',
+                lambda prevFlags: 'LVL1config_'+prevFlags.triggerMenuSetup()+'_' + prevFlags.menuVersion() + '.xml')
+
+    # generate or not the L1 topo configuration
+    flags.addFlag('Trigger.generateLVL1TopoConfig', False)
+    
+    # L1 topo XML file name
+    flags.addFlag('Trigger.LVL1TopoConfigFile',
+                lambda prevFlags: 'LVL1config_'+prevFlags.triggerMenuSetup()+'_' + prevFlags.menuVersion() + '.xml')
+
+
+    # trigger reconstruction 
+
+    # controls track extension tool setting (not sure we can handle it via this flag now, should it be moved to Trigger.InDet?)
+    flags.addFlag('Trigger.id.useOfflineSpacePoints', False)
+
+    # enables the correction for pileup in cell energy calibration (should it be moved to some place where other calo flags are defined?)
+    flags.addFlag('Trigger.calo.doOffsetCorrection', True )
+
+    # helper to switch between versions
+    def __tunes(default, ver2016, ver2017):
+        from collections import defaultdict
+        return lambda year:  defaultdict( lambda: default,
+                                           (('2016', ver2016),
+                                            ('2017', ver2017)))[year]
+
+                                           
+    # Particle ID tune
+    flags.addFlag('Trigger.egamma.pidVersion',
+                lambda prefVlags:
+                __tunes(default='ElectronPhotonSelectorTools/trigger/rel21_mc16a/',
+                        ver2016='ElectronPhotonSelectorTools/trigger/rel21_mc16a/',
+                        ver2017='ElectronPhotonSelectorTools/trigger/rel21_20170214/')( prevFlags.gte('Trigger.run2Config') )
+    )
+
+    # cluster correction version, allowed value is: None or v12phiflip_noecorrnogap
+    flags.addFlag('Trigger.egamma.clusterCorrectionVersion',
+                lambda prevFlags:
+                __tunes(default=None,
+                        ver2016=None,
+                        ver2017='v12phiflip_noecorrnogap')( prevFlags.get('Trigger.run2Config') )
+    )
+    # tune of MVA
+    flags.addFlag('Trigger.egamma.calibMVAVersiona',
+                  lambda prevFlags:
+                  __tunes(default='egammaMVACalib/online/v3',
+                          ver2016='egammaMVACalib/online/v3',
+                          ver2017='egammaMVACalib/online/v6')( prevFlags.get('Trigger.run2Config') )
+    )
+
+    # muons
+    flags.addFlag('Trigger.muon.doEFRoIDrivenAccess', False)
+                
+    return flags
+    # for reference, this flags are skipped as never used or never set in fact, or set identical to de default or used in a very old JO:
+    # readLVL1Calo, readLVL1Muon, fakeLVL1, useCaloTTL
+    # doCosmicSim - old JO
+    # disableRandomPrescale - never used
+    # doMergedHLTResult - not needed now
+    # doAlwaysUnpackDSResult - never set
+    # doTrt - fast TRT or trigger - never used
+    # doLucid - not sure if ever set to False, identical rec flag exists
+    # doZdc - never set to anything different than default
+    # doHLTpersistency - never red
+    # useOfflineSpacePoints - used only to set 
+    # doNtuple - never red
+    # configForStartup                 
+    # the flags related to trigger DB are redundant of triggerConfig - need to decide if they are needed in this form
+    # also not defined the Prescale sets yet
+    # abortOnConfigurationError - never red
+    # in signatures
+    # egamma: rinferVrsion - not used
+    # muon: doMuonCalibrationStream - not used
+    # tau: doTrackingApproach - not used
+
+if __name__ == '__main__':
+    flags = createTriggerFlags()
+    flags.set('Trigger.run2Config', '2017')
+    assert flags.get('Trigger.egamma.clusterCorrectionVersion') == 'v12phiflip_noecorrnogap'
+    flags.dump()
-- 
GitLab