diff --git a/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaFlags.py b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaFlags.py new file mode 100644 index 0000000000000000000000000000000000000000..b44c532b22f8e234da2af47d88181530f62963a4 --- /dev/null +++ b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaFlags.py @@ -0,0 +1,53 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# vim:fenc=utf-8 +# +# Copyright 2016 Ryan Mackenzie White <ryan.white@cern.ch> +# +# Distributed under terms of the license. + +""" +Job properties for TrigEgamma +Allows configuring PID, calibration, cluster corrections, etc... +""" +from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer +from AthenaCommon.JobProperties import jobproperties + +class ringerVersion (JobProperty): + """ Version ringer tunes """ + statusOn=False + allowedTypes=['str','None'] + StoreValues=None + +class pidVersion (JobProperty): + """ Version of PID tunes + """ + statusOn=True + allowedTypes=['str','None'] + StoredValue='ElectronPhotonSelectorTools/trigger/rel21_20161021/' + +class clusterCorrectionVersion (JobProperty): + """ + Cluster correction version for HLT Calo + """ + statusOn=True + allowedTypes=['str','None'] + allowedValues=['v12phiflip_noecorrnogap'] + StoredValue=None + +class calibMVAVersion (JobProperty): + """ + MVA calibration version + """ + statusOn=True + allowedTypes=['str','None'] + StoredValue='egammaMVACalib/online/v3' + +class TrigEgammaFlags(JobPropertyContainer): + """TrigEgamma information""" + +jobproperties.add_Container(TrigEgammaFlags) + +jobproperties.TrigEgammaFlags.add_JobProperty(pidVersion) +jobproperties.TrigEgammaFlags.add_JobProperty(clusterCorrectionVersion) +jobproperties.TrigEgammaFlags.add_JobProperty(calibMVAVersion) diff --git a/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaRecConfig.py b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaRecConfig.py index 533d14d7ec9acc6117d1a820b46d1511546034a1..ca889397fe9dc132634d3f503497f4b661f24e32 100755 --- a/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaRecConfig.py +++ b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaRecConfig.py @@ -7,11 +7,6 @@ from AthenaCommon.AppMgr import ToolSvc from TrigEgammaRec import TrigEgammaRecConf -# PID -- selectors added via TrigEgammaPIDTools in TrigEgammaHypo -from TrigEgammaHypo.TrigEgammaPidTools import ElectronPidTools -from TrigEgammaHypo.TrigEgammaPidTools import PhotonPidTools -ElectronPidTools() -PhotonPidTools() from egammaRec.Factories import Factory, ToolFactory, FcnWrapper, getPropertyValue # The following tools use the offline configuration @@ -45,7 +40,7 @@ from TrigEgammaRec.TrigEgammaToolFactories import (TrigCaloIsolationTool, ) def configureTrigEgammaMonitoring(tool): - from RecExConfig.RecFlags import rec + # from RecExConfig.RecFlags import rec # Configure monitoring tools from TrigEgammaRec.TrigEgammaRecMonitoring import TrigEgammaRecValidationMonitoring, TrigEgammaRecOnlineMonitoring, TrigEgammaRecCosmicMonitoring validation = TrigEgammaRecValidationMonitoring() diff --git a/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaToolFactories.py b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaToolFactories.py index ed1cc361f1ee1e08f546235c28ba3ca602deead1..fac8084c78bf6e3cecec49b23262ebcd7a4998b0 100644 --- a/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaToolFactories.py +++ b/Trigger/TrigAlgorithms/TrigEgammaRec/python/TrigEgammaToolFactories.py @@ -14,6 +14,7 @@ __author__ = "Ryan Mackenzie White" import logging from AthenaCommon import CfgMgr from AthenaCommon.AppMgr import ToolSvc +from AthenaCommon.SystemOfUnits import GeV,MeV,deg # New configuration for use in rel 19.X with xAOD # Adapted from egammaRec/egammaGetter.py # Factory tools, handles configuration of tools and dependencies @@ -26,6 +27,12 @@ from egammaRec.Factories import Factory, ToolFactory, FcnWrapper, getPropertyVal # egammaOQFlagsBuilder # EMVertexBuilder +mlog = logging.getLogger ('TrigEgammaToolFactories') +# PID -- selectors added via TrigEgammaPIDTools in TrigEgammaHypo +from TrigEgammaHypo.TrigEgammaPidTools import ElectronPidTools +from TrigEgammaHypo.TrigEgammaPidTools import PhotonPidTools +ElectronPidTools() +PhotonPidTools() # Following tools have TrigEgamma factories from egammaTools.egammaToolsFactories import EMTrackMatchBuilder, EMFourMomBuilder, EMShowerBuilder from egammaTrackTools.egammaTrackToolsFactories import EMExtrapolationTools @@ -125,3 +132,58 @@ TrigEMShowerBuilder = EMShowerBuilder.copy( Print = True, ) +from TrigEgammaRec.TrigEgammaFlags import jobproperties +from egammaMVACalib import egammaMVACalibConf +mlog.info("MVA version version %s"%jobproperties.TrigEgammaFlags.calibMVAVersion() ) +mlog.info("Cluster Correction version %s"%jobproperties.TrigEgammaFlags.clusterCorrectionVersion() ) +TrigEgammaMVACalibTool = ToolFactory(egammaMVACalibConf.egammaMVATool,name="TrigEgammaMVACalibTool", + folder=jobproperties.TrigEgammaFlags.calibMVAVersion(),use_layer_corrected = False) + +from TrigCaloRec.TrigCaloRecConf import TrigCaloClusterMaker + +def configureTrigCaloClusterMonitoring(tool): + from TrigCaloRec.TrigCaloClusterMakerMonitoring import TrigCaloClusterMakerValidationMonitoring, TrigCaloClusterMakerOnlineMonitoring, TrigCaloClusterMakerCosmicMonitoring + from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig + clvalidation = TrigCaloClusterMakerValidationMonitoring() + clonline = TrigCaloClusterMakerOnlineMonitoring() + clcosmic = TrigCaloClusterMakerCosmicMonitoring() + cltime = TrigTimeHistToolConfig("TrigCaloClusterMaker_Time") + tool.AthenaMonTools = [ clvalidation, clonline, cltime, clcosmic] + +def configureClusterBuilder(slwAlg): + slwName="trigslw" + if hasattr(slwAlg,slwName): + return + from CaloRec.CaloRecMakers import make_CaloClusterBuilderSW + trigslw= make_CaloClusterBuilderSW (slwName, + tower_container = "LArTowerEM", + eta_size = 3, + phi_size = 5, + e_threshold = 2.5 * GeV, + FillClusterCells = False, + eta_Duplicate = 5, + phi_Duplicate = 5 + ) + #mlog.info("TrigCaloClusterMaker adding slw tool %s"%trigslw.getFullName()) + slwAlg += trigslw + slwAlg.ClusterMakerTools=[ trigslw.getFullName() ] + +def configureClusterCorrections(slwAlg): + '''Add attributes ClusterCorrectionToolsXX to egammaSwTool object''' + if not hasattr(slwAlg,"ClusterCorrectionTools"): + return + from CaloClusterCorrection.CaloSwCorrections import make_CaloSwCorrections + clusterTypes = ("ele37","ele55") + for cl in clusterTypes: + clName = "CaloRunClusterCorrections"+cl + if hasattr(slwAlg,clName): + continue + for tool in make_CaloSwCorrections (cl,version=jobproperties.TrigEgammaFlags.clusterCorrectionVersion()): + #mlog.info("Correction tool %s"%tool.getFullName()) + slwAlg += tool + slwAlg.ClusterCorrectionTools += [tool.getFullName()] + +TrigCaloClusterMaker_slw = Factory(TrigCaloClusterMaker,name='TrigCaloClusterMaker_slw',ClustersOutputName="TriggerClustersegSW", + postInit=[configureClusterBuilder,configureClusterCorrections,configureTrigCaloClusterMonitoring]) + +del mlog