ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Functions
SCTHitEffMonAlg Namespace Reference

Functions

def dedicatedTitle (i, isub)
 
def SCTHitEffMonAlgConfig (flags)
 

Function Documentation

◆ dedicatedTitle()

def SCTHitEffMonAlg.dedicatedTitle (   i,
  isub 
)

Definition at line 10 of file SCTHitEffMonAlg.py.

10 def dedicatedTitle(i, isub):
11  m_element = i
12  m_layerStr = i / 2
13  m_region = isub
14  if m_region == 1 :
15  return "Layer " + str(m_layerStr) + " Side " + str((m_element % 2 + 1) % 2)
16  else:
17  return "Disk " + str(m_layerStr) + " Side " + str((m_element % 2 + 1) % 2)
18 

◆ SCTHitEffMonAlgConfig()

def SCTHitEffMonAlg.SCTHitEffMonAlgConfig (   flags)
Function to configures some algorithms in the monitoring system.

Definition at line 19 of file SCTHitEffMonAlg.py.

19 def SCTHitEffMonAlgConfig(flags):
20  '''Function to configures some algorithms in the monitoring system.'''
21 
24  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
25  result = ComponentAccumulator()
26 
27  # The following class will make a sequence, configure algorithms, and link
28  # them to GenericMonitoringTools
29  from AthenaMonitoring import AthMonitorCfgHelper
30  helper = AthMonitorCfgHelper(flags, 'SCTHitEffMonCfg')
31 
32 
33 
39  from AthenaConfiguration.ComponentFactory import CompFactory
40  from InDetConfig.InDetTrackHoleSearchConfig import (
41  InDetTrackHoleSearchToolCfg)
42  from InDetConfig.SiClusterOnTrackTool_SCTStripConfig import (
43  InDetSCT_ClusterOnTrackToolCfg)
44  from TrkConfig.TrkResidualPullCalculatorConfig import (
45  ResidualPullCalculatorCfg)
46 
47  myMonAlg = helper.addAlgorithm(
48  CompFactory.SCTHitEffMonAlg,
49  'SCTHitEffMonAlg',
50  HoleSearch = result.popToolsAndMerge(
52  ROTCreator = result.popToolsAndMerge(
54  ResPullCalc = result.popToolsAndMerge(
56  )
57 
58  # # If for some really obscure reason you need to instantiate an algorithm
59  # # yourself, the AddAlgorithm method will still configure the base
60  # # properties and add the algorithm to the monitoring sequence.
61  # helper.AddAlgorithm(myExistingAlg)
62 
63 
64 
66  myMonAlg.TriggerChain = ''
67 
68 
71 
72  # set up geometry / conditions
73  from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
74  result.merge(BunchCrossingCondAlgCfg(flags))
75  from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
76  result.merge(AtlasFieldCacheCondAlgCfg(flags))
77  from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementCondAlgCfg
78  result.merge(SCT_DetectorElementCondAlgCfg(flags))
79 
80  # Add a generic monitoring tool (a "group" in old language). The returned
81  # object here is the standard GenericMonitoringTool.
82 
83  from ROOT import SCT_Monitoring as sctMon
84 
85  myMonGroup = [
86  helper.addGroup(
87  myMonAlg,
88  "SCTHitEffMonitorEC",
89  "SCT/SCTEC/"
90  ),
91  helper.addGroup(
92  myMonAlg,
93  "SCTHitEffMonitorB",
94  "SCT/SCTB/"
95  ),
96  helper.addGroup(
97  myMonAlg,
98  "SCTHitEffMonitorEA",
99  "SCT/SCTEA/"
100  ),
101  helper.addGroup(
102  myMonAlg,
103  "SCTHitEffMonitor",
104  "SCT/GENERAL/"
105  )
106  ]
107 
108 
110 
111  # Conversion of ROOT.vector of ROOT.TString to list of str
112  subDetName = []
113  for i in range(len(sctMon.subDetName)):
114  subDetName.append(sctMon.subDetName[i].Data())
115 
116  mapName = ["m_eff_", "eff_", "p_eff_"]
117  ineffmapName = ["ineffm_", "ineff_", "ineffp_"]
118 
119  sumEff = ["summaryeffm", "summaryeff", "summaryeffp"]
120  sumEffTitle = ["Summary Module Efficiency in Endcap C",
121  "Summary Module Efficiency in Barrel",
122  "Summary Module Efficiency in Endcap A"]
123 
124  limit = [sctMon.N_DISKS*2, sctMon.N_BARRELS*2, sctMon.N_DISKS*2]
125 
126  # GENERAL
127  myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "isub, eff;" + "SctTotalEff",
128  type= "TProfile",
129  title= "SCT Total Efficiency",
130  path="eff",
131  xbins=sctMon.N_REGIONS,
132  xmin=0.,
133  xmax=sctMon.N_REGIONS,
134  xlabels=subDetName,
135  opt='kAlwaysCreate')
136 
137  myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "isub, eff;" + "SctTotalEffBCID",
138  type= "TProfile",
139  title= "SCT Total Efficiency for First BCID",
140  path="eff",
141  xbins=sctMon.N_REGIONS,
142  xmin=0.,
143  xmax=sctMon.N_REGIONS,
144  xlabels=subDetName,
145  cutmask="isFirstBCID",
146  opt='kAlwaysCreate')
147 
148  myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "sideHash, eff;" + "effHashCode",
149  type= "TProfile",
150  title= "Efficiency vs module Hash code" + ";Module Hash Code;Efficiency",
151  path="eff",
152  xbins=sctMon.n_mod[sctMon.GENERAL_INDEX] * 2,
153  xmin=-0.5,
154  xmax=sctMon.n_mod[sctMon.GENERAL_INDEX] * 2 -0.5,
155  opt='kAlwaysCreate')
156 
157  myMonGroup[sctMon.GENERAL_INDEX].defineHistogram(varname= "LumiBlock, eff;" + "effLumiBlock",
158  type= "TProfile",
159  title= "Efficiency vs Luminosity block"+";;Efficiency",
160  path="eff",
161  xbins=sctMon.NBINS_LBs,
162  xmin=0.5,
163  xmax=sctMon.NBINS_LBs + 0.5,
164  opt='kAlwaysCreate')
165 
166 
174 
175  # SCTEC, SCTB, SCTEA
176  for isub in range(sctMon.N_REGIONS):
177  profileLabels = list(range(limit[isub]))
178  for k in range(limit[isub]):
179  profileLabels[k] = dedicatedTitle(k, isub)
180  # Efficiency
181  myMonGroup[isub].defineHistogram(varname= "layerPlusHalfSide, eff;" + sumEff[isub],
182  type= "TProfile",
183  title= sumEffTitle[isub]+ ";;Efficiency",
184  path="eff",
185  xbins=2*sctMon.n_layers[isub],
186  xmin=0.,
187  xmax=sctMon.n_layers[isub],
188  xlabels=profileLabels,
189  opt='kAlwaysCreate')
190  # Efficiency for first BCIDs
191  myMonGroup[isub].defineHistogram(varname= "layerPlusHalfSide, eff;" + sumEff[isub] + "BCID",
192  type= "TProfile",
193  title= sumEffTitle[isub]+" for First BC" + ";;Efficiency",
194  path="eff",
195  xbins=2*sctMon.n_layers[isub],
196  xmin=0.,
197  xmax=sctMon.n_layers[isub],
198  xlabels=profileLabels,
199  cutmask="isFirstBCID",
200  opt='kAlwaysCreate')
201  # Efficiency as a function of LB
202  myMonGroup[isub].defineHistogram(varname= "LumiBlock, eff;"+"effLumiBlock", #different names for fill
203  type= "TProfile",
204  title= "Efficiency vs Luminosity block in "+subDetName[isub]+";Luminosity block"+";Efficiency",
205  path="eff",
206  xbins=sctMon.NBINS_LBs,
207  xmin=0.5,
208  xmax=sctMon.NBINS_LBs + 0.5,
209  opt='kAlwaysCreate')
210 
211  # Disks for SCTEC and SCTEA and layers for SCTB
212  for layer_disk in range(sctMon.n_layers[isub]):
213  for side in range(2):
214  etaPhiSuffix = "_" + str(layer_disk) + "_" + str(side)
215  effName = mapName[isub] + str(layer_disk) + "_" + str(side)
216  ineffName = ineffmapName[isub] + str(layer_disk) + "_" + str(side)
217  # Efficiency
218  myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",eff;" + effName,
219  type= "TProfile2D",
220  title="Hit efficiency of" + sctMon.layerName[isub].Data() + str(layer_disk) + " / side " + str(side) + " in " + subDetName[isub] + ";Index in the direction of #eta;Index in the direction of #phi",
221  path="eff",
222  xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
223  ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
224  opt='kAlwaysCreate')
225  # Efficiency for first BCIDs
226  myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",eff;" + effName + "_bcid",
227  type= "TProfile2D",
228  title="Hit efficiency of" + sctMon.layerName[isub].Data() + str(layer_disk) + " / side " + str(side) + " in " + subDetName[isub] + " for first BCID" + ";Index in the direction of #eta;Index in the direction of #phi",
229  path="eff",
230  xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
231  ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
232  cutmask="isFirstBCID",
233  opt='kAlwaysCreate')
234  # Inefficiency
235  myMonGroup[isub].defineHistogram(varname="ieta" + etaPhiSuffix + ",iphi" + etaPhiSuffix + ",ineff;" + ineffName,
236  type= "TProfile2D",
237  title="Hit inefficiency of" + sctMon.layerName[isub].Data() + str(layer_disk) + " / side " + str(side) + " in " + subDetName[isub] + ";Index in the direction of #eta;Index in the direction of #phi",
238  path="eff",
239  xbins=sctMon.n_etabins[isub], xmin=sctMon.f_etabin[isub] - .5, xmax=sctMon.l_etabin[isub] + .5,
240  ybins=sctMon.n_phibins[isub], ymin=sctMon.f_phibin[isub] - .5, ymax=sctMon.l_phibin[isub] + .5,
241  opt='kAlwaysCreate')
242 
243  # Merge with result object and return
244  result.merge(helper.result())
245  return result
246 
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
Data
@ Data
Definition: BaseObject.h:11
SCTHitEffMonAlg.SCTHitEffMonAlgConfig
def SCTHitEffMonAlgConfig(flags)
Definition: SCTHitEffMonAlg.py:19
python.BunchCrossingCondAlgConfig.BunchCrossingCondAlgCfg
def BunchCrossingCondAlgCfg(flags)
Definition: BunchCrossingCondAlgConfig.py:8
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
SCTHitEffMonAlg.dedicatedTitle
def dedicatedTitle(i, isub)
Definition: SCTHitEffMonAlg.py:10
GenericMonitoringTool.defineHistogram
def defineHistogram(flags, varname, type='TH1F', path=None, title=None, weight=None, xbins=100, xmin=0, xmax=1, xlabels=None, ybins=None, ymin=None, ymax=None, ylabels=None, zmin=None, zmax=None, zlabels=None, opt=None, convention=None, cutmask=None, treedef=None, merge=None)
Generate histogram definition string for the GenericMonitoringTool.Histograms property.
Definition: GenericMonitoringTool.py:306
python.InDetTrackHoleSearchConfig.InDetTrackHoleSearchToolCfg
def InDetTrackHoleSearchToolCfg(flags, name='InDetHoleSearchTool', **kwargs)
Definition: InDetTrackHoleSearchConfig.py:8
str
Definition: BTagTrackIpAccessor.cxx:11
python.SCT_ConditionsAlgorithmsConfig.SCT_DetectorElementCondAlgCfg
def SCT_DetectorElementCondAlgCfg(flags, name="SCT_DetectorElementCondAlg", **kwargs)
Definition: SCT_ConditionsAlgorithmsConfig.py:66
python.MagFieldServicesConfig.AtlasFieldCacheCondAlgCfg
def AtlasFieldCacheCondAlgCfg(flags, **kwargs)
Definition: MagFieldServicesConfig.py:8
python.TrkResidualPullCalculatorConfig.ResidualPullCalculatorCfg
def ResidualPullCalculatorCfg(flags, name='ResidualPullCalculator', **kwargs)
Definition: TrkResidualPullCalculatorConfig.py:6
python.SiClusterOnTrackTool_SCTStripConfig.InDetSCT_ClusterOnTrackToolCfg
def InDetSCT_ClusterOnTrackToolCfg(flags, name='InDetSCT_ClusterOnTrackTool', **kwargs)
Definition: SiClusterOnTrackTool_SCTStripConfig.py:6