4 '''@file SCTTracksMonAlg.py
7 @brief Based on AthenaMonitoring/ExampleMonitorAlgorithm.py
11 '''Function to configures some algorithms in the monitoring system.'''
15 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
20 from AthenaMonitoring
import AthMonitorCfgHelper
21 helper = AthMonitorCfgHelper(flags,
'SCTTracksMonCfg')
30 from AthenaConfiguration.ComponentFactory
import CompFactory
31 from TrkConfig.TrkResidualPullCalculatorConfig
import (
32 ResidualPullCalculatorCfg)
33 myMonAlg = helper.addAlgorithm(CompFactory.SCTTracksMonAlg,
'SCTTracksMonAlg',
34 ResPullCalc = result.popToolsAndMerge(
37 from AthenaConfiguration.Enums
import BeamType
38 if flags.Beam.Type
is BeamType.Collisions:
39 from AthenaMonitoring.FilledBunchFilterToolConfig
import FilledBunchFilterToolCfg
43 if not flags.Input.isMC:
44 if flags.Trigger.doHLT:
46 myMonAlg.doTrigger = doTrigger
56 myMonAlg.TriggerChain =
''
59 from TrkConfig.TrkTrackSummaryToolConfig
import InDetTrackSummaryToolCfg
73 myMonGroup = helper.addGroup(
81 regionNames = [
"EndCapC",
"Barrel",
"EndCapA"]
82 N_REGIONS = len(regionNames)
83 s_triggerNames = [
"RNDM",
"BPTX",
"L1CAL",
"TGC",
"RPC",
"MBTS",
"COSM",
"Calib"]
84 N_TRIGGER_TYPES = len(s_triggerNames)
87 LAST_HIT_BIN = N_HIT_BINS-FIRST_HIT_BIN-1
88 myMonGroup.defineHistogram(varname=
"trk_N",
90 title=
"Number of tracks"+
";Number of Tracks",
92 xbins=400, xmin=0., xmax=4000.,
94 myMonGroup.defineHistogram(varname=
"trk_chi2",
96 title=
"Track #chi^{2} div ndf"+
";Number of track #chi^{2}/NDF",
98 xbins=150, xmin=0., xmax=150.,
100 myMonGroup.defineHistogram(varname=
"trk_d0",
102 title=
"Track d0"+
";d0 [mm]",
104 xbins=160, xmin=-40., xmax=40.,
106 myMonGroup.defineHistogram(varname=
"trk_z0",
108 title=
"Track z0"+
";z0 [mm]",
110 xbins=200, xmin=-200., xmax=200.,
112 myMonGroup.defineHistogram(varname=
"trk_phi",
114 title=
"Track Phi"+
";#phi [rad]",
116 xbins=160, xmin=-4., xmax=4.,
118 myMonGroup.defineHistogram(varname=
"trk_pt",
120 title=
"Track P_{T}"+
";P_{T} [GeV]",
122 xbins=150, xmin=0., xmax=150.,
124 myMonGroup.defineHistogram(varname=
"trk_sct_hits",
126 title=
"SCT HITS per single Track"+
";Num of Hits",
128 xbins=N_HIT_BINS, xmin=FIRST_HIT_BIN, xmax=LAST_HIT_BIN,
130 myMonGroup.defineHistogram(varname=
"trk_eta",
132 title=
"Track Eta"+
";#eta",
134 xbins=160, xmin=-4., xmax=4.,
137 myMonGroup.defineHistogram(varname=
"trackTriggers",
139 title=
"Tracks for different trigger types",
141 xbins=N_TRIGGER_TYPES, xmin=-0.5, xmax=7.5, xlabels=s_triggerNames,
143 myMonGroup.defineHistogram(varname=
"region"+
","+
"hitsRegion"+
";"+
"SCTTrackRate",
145 title=
"Track per event for SCT regions",
147 xbins=3, xmin=0.0, xmax=3.0, xlabels=regionNames,
149 myMonGroup.defineHistogram(varname=
"tracksPerRegion",
151 title=
"Number of tracks in eta regions",
153 xbins=N_REGIONS, xmin=0, xmax=N_REGIONS, xlabels=regionNames,
157 for region
in regionNames:
158 myMonGroup.defineHistogram(varname=
"total"+region+
"Residual",
159 title=
"Overall Residual Distribution for the "+region+
";Residual [mm]",
160 type=
"TH1F", path=
"tracks",
161 xbins=100, xmin=-0.5, xmax=0.5)
162 myMonGroup.defineHistogram(varname=
"total"+region+
"Pull",
163 title=
"Overall Pull Distribution for the "+region+
";Pull",
164 type=
"TH1F", path=
"tracks",
165 xbins=100, xmin=-5, xmax=5)
174 result.merge(helper.result())
177 if __name__ ==
"__main__":
179 from AthenaCommon.Logging
import log
184 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
186 flags.Input.Files = [
"/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/mc16_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s3170_r10572_homeMade.pool.root"]
187 flags.Input.isMC =
True
188 flags.Output.HISTFileName =
'SCTTracksMonOutput.root'
189 flags.GeoModel.Align.Dynamic =
False
190 flags.Detector.GeometryID =
True
191 flags.Detector.GeometryPixel =
True
192 flags.Detector.GeometrySCT =
True
193 flags.Detector.GeometryTRT =
True
197 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
198 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg