ATLAS Offline Software
Loading...
Searching...
No Matches
ElectronRingerSelectorDefs.py
Go to the documentation of this file.
1# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2
3from AthenaCommon.Logging import logging
4mlog = logging.getLogger( 'ElectronRingerSelectorDefs.py' )
5
6# Import from Ringer utilities:
7import ROOT
8ROOT.gSystem.Load('libRingerSelectorToolsEnumsDict.so')
9from ROOT import Ringer
10
11from RingerSelectorTools.RingerSelectorToolsConf import Ringer__AsgElectronRingerSelector
12from CaloRingerAlgs.CaloRingerKeys import outputElectronRingSetsConfKey
13
14# Import egammaPID
15ROOT.gSystem.Load('libElectronPhotonSelectorToolsDict.so')
16from ROOT import egammaPID
17
18from ElectronPhotonSelectorTools.ElectronIsEMSelectorMapping import electronPIDmenu
19from ElectronPhotonSelectorTools.ConfiguredAsgElectronIsEMSelectors \
20 import ConfiguredAsgElectronIsEMSelector
21
23 "Remove egammaPID Electron Calorimeter cuts from isEM"
24 CutIDIsEMMask = CutIDIsEMMask & (~egammaPID.CALO_ELECTRON)
25
26class BaseElectronSelectorConf ( Ringer__AsgElectronRingerSelector ):
27 def _setDefault(self,attrName, default, **kwargs):
28 "Overwrites AsgElectronRingerSelector default to new default value."
29 if attrName not in kwargs:
30 setattr(self, attrName, default)
31
32 def _setCutIDSelector(self,defaultName,quality,menu,**kwargs):
33 """
34 Set the AsgElectronRingerSelector CutIDSelector to default or to the configuration
35 available in the kwargs
36 """
37 removeMask = False
38 if "cutIDConfDict" not in kwargs and "CutIDSelector" not in kwargs:
39 removeMask = True
40 if "CutIDSelector" not in kwargs:
41 CutIDSelectorTool = ConfiguredAsgElectronIsEMSelector(defaultName,
42 quality,
43 menu,
44 **kwargs.pop("cutIDConfDict",{}))
45 from AthenaCommon.AppMgr import ToolSvc
46 ToolSvc += CutIDSelectorTool
47 self.CutIDSelector = CutIDSelectorTool
48 else:
49 self.CutIDSelector = kwargs.pop("CutIDSelector")
50 if removeMask:
52
53 def __init__(self, name, **kwargs):
54 Ringer__AsgElectronRingerSelector.__init__(self,name,**kwargs)
55 self._setDefault("RingSetConfContainerName",
56 outputElectronRingSetsConfKey(),
57 **kwargs)
58 self._setDefault("CacheConfData", True, **kwargs)
59 self._setDefault("useCutIDTrack", False, **kwargs)
60
61
63 def __init__(self, name = "ElectronRingerSelector_TestLoose", **kwargs):
64 BaseElectronSelectorConf.__init__(self,name,**kwargs)
65 self._setDefault("DiscriminationFileName",
66 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineDiscrLoose.root",
67 **kwargs)
68 self._setDefault("ThresholdFileName",
69 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresLoose.root",
70 **kwargs)
71 self._setDefault("CutsMask",
73 kwargs.get("useCutIDTrack",False)),
74 **kwargs)
75 self._setCutIDSelector("LooseRingerIsEMSelector",\
76 egammaPID.ElectronIDLoosePP, \
77 electronPIDmenu.menuDC14, **kwargs)
78
80 def __init__(self, name = "ElectronRingerSelector_TestMedium", **kwargs):
81 BaseElectronSelectorConf.__init__(self,name,**kwargs)
82 self._setDefault("DiscriminationFileName",
83 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineDiscrMedium.root",
84 **kwargs)
85 self._setDefault("ThresholdFileName",
86 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresMedium.root",
87 **kwargs)
88 self._setDefault("CutsMask",
90 kwargs.get("useCutIDTrack",False)),
91 **kwargs)
92 self._setCutIDSelector("MediumRingerIsEMSelector", \
93 egammaPID.ElectronIDMediumPP, \
94 electronPIDmenu.menuDC14, \
95 **kwargs)
96
98 def __init__(self, name = "ElectronRingerSelector_TestTight", **kwargs):
99 BaseElectronSelectorConf.__init__(self,name,**kwargs)
100 self._setDefault("DiscriminationFileName",
101 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineDiscrTight.root",
102 **kwargs)
103 self._setDefault("ThresholdFileName",
104 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresTight.root",
105 **kwargs)
106 self._setDefault("CutsMask",
108 kwargs.get("useCutIDTrack",False)),
109 **kwargs)
110 self._setCutIDSelector("TightRingerIsEMSelector", \
111 egammaPID.ElectronIDTightPP, \
112 electronPIDmenu.menuDC14, **kwargs)
113
115 def __init__(self, name = "ElectronRingerSelector_TestNoCut", **kwargs):
116 # FIXME This doesn't work, for now...
117 BaseElectronSelectorConf.__init__(self,name,**kwargs)
118 self._setDefault("DiscriminationFileName",
119 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineDiscrMedium.root",
120 **kwargs)
121 self._setDefault("ThresholdFileName",
122 "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresMedium.root",
123 **kwargs)
124 self._setDefault("CutsMask",
126 kwargs.get("useCutIDTrack",False)),
127 **kwargs)
128 self._setCutIDSelector("NoCutRingerIsEMSelector", \
129 egammaPID.ElectronIDNoCut, \
130 electronPIDmenu.menuDC14, \
131 **kwargs)
132
133
_setCutIDSelector(self, defaultName, quality, menu, **kwargs)
__init__(self, name="ElectronRingerSelector_TestLoose", **kwargs)
__init__(self, name="ElectronRingerSelector_TestMedium", **kwargs)
__init__(self, name="ElectronRingerSelector_TestNoCut", **kwargs)
__init__(self, name="ElectronRingerSelector_TestTight", **kwargs)
static unsigned int getAppliedCutMsk(const Requirement cut, bool withCutIDTrack=false)
Main methods.