95 name='DCMathSegmentMaker',
99 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig
import MdtDriftCircleOnTrackCreatorCfg, TriggerChamberClusterOnTrackCreatorCfg, MdtCalibToolForRotsCfg
100 from MuonCombinedConfig.MuonCombinedRecToolsConfig
import MuonSegmentSelectionToolCfg
115 result=ComponentAccumulator()
117 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
118 kwargs.setdefault(
"edmHelper", result.getPrimaryAndMerge(MuonEDMHelperSvcCfg(flags)))
119 kwargs.setdefault(
"RefitSegment",
True)
120 kwargs.setdefault(
"AssumePointingPhi", flags.Beam.Type
is not BeamType.Cosmics)
121 kwargs.setdefault(
"OutputFittedT0",
True)
125 kwargs.setdefault(
"UsePreciseError",
True)
126 kwargs.setdefault(
"SinAngleCut", 0.4)
128 doSegmentT0Fit = doSegmentT0Fit
or flags.Beam.Type
in [BeamType.SingleBeam, BeamType.Cosmics]
129 if flags.Beam.Type
in [BeamType.SingleBeam, BeamType.Cosmics]:
130 kwargs.setdefault(
"SinAngleCut", 0.9)
131 kwargs.setdefault(
"AddUnassociatedPhiHits",
True)
132 kwargs.setdefault(
"RecoverBadRpcCabling",
True)
133 kwargs.setdefault(
"CurvedErrorScaling",
False)
134 elif not flags.Input.isMC:
135 kwargs.setdefault(
"AddUnassociatedPhiHits",
True)
136 kwargs.setdefault(
"RecoverBadRpcCabling",
True)
138 if flags.Muon.updateSegmentSecondCoordinate:
139 kwargs.setdefault(
"UpdatePhiUsingPhiHits",
True)
141 if flags.Muon.enableCurvedSegmentFinding:
142 kwargs.setdefault(
"CurvedErrorScaling",
False)
143 kwargs.setdefault(
"PreciseErrorScale", 1)
144 kwargs.setdefault(
"UsePreciseError",
True)
148 result.merge(MuonStationIntersectCondAlgCfg(flags))
150 kwargs.setdefault(
"MdtCreator", result.getPrimaryAndMerge(MdtDriftCircleOnTrackCreatorCfg(flags)))
152 kwargs.setdefault(
"MuonCompetingClustersCreator", result.getPrimaryAndMerge(TriggerChamberClusterOnTrackCreatorCfg(flags)))
153 edm_printer = result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags) )
154 kwargs.setdefault(
"EDMPrinter", edm_printer )
156 mdt_dcot_CA = MdtDriftCircleOnTrackCreatorCfg(flags,
157 name=
"MdtDriftCircleOnTrackCreatorAdjustableT0",
159 CalibrationTool = result.popToolsAndMerge(MdtCalibToolForRotsCfg(flags,
160 DoTofCorrection=
True,
161 TimeWindowSetting=MdtCalibWindowNumber(
'Collision_data'))))
162 kwargs.setdefault(
"MdtCreatorT0", result.getPrimaryAndMerge(mdt_dcot_CA))
163 kwargs.setdefault(
"MdtSegmentFinder", result.getPrimaryAndMerge(
MdtMathSegmentFinderCfg(flags, name=
'MdtMathT0FitSegmentFinder', doSegmentT0Fit=
True)))
165 kwargs.setdefault(
"MdtCreatorT0",
"")
168 kwargs.setdefault(
"SegmentFitter", result.getPrimaryAndMerge(
MuonSegmentFittingToolCfg(flags, name=
"MuonSegmentFittingTool")))
170 kwargs.setdefault(
"SegmentSelector", result.popToolsAndMerge(MuonSegmentSelectionToolCfg(flags)))
172 dc_segment_maker = CompFactory.Muon.DCMathSegmentMaker(name=name, **kwargs)
173 result.setPrivateTools(dc_segment_maker)
179 CscAlignmentTool=CompFactory.CscAlignmentTool
180 etaposAlignConsts = [
181 0.0, -0.0902347, -0.0984321, -0.141175,
182 0.0, -0.166412, -0.150399, -0.18592,
183 0.0, -0.0544449, 0.101448, -0.0433321,
184 0.0, -0.047769, -0.156247, -0.0854826,
185 0.0, -0.0970101, -0.227578, -0.301079,
186 0.0, -0.152912, -0.365218, -0.314042,
187 0.0, 0.0338696, -0.264766, -0.224567,
188 0.0, -0.107372, -0.16099, -0.13508,
189 0.0, -0.0663979, -0.0312645, -0.130711,
190 0.0, -0.249974, -0.269372, -0.353648,
191 0.0, -0.194175, 0.0238348, -0.188433,
192 0.0, 0.0977346, 0.0492461, 0.150434,
193 0.0, 0.0444637, -0.0871214, -0.0627541,
194 0.0, 0.0347245, -0.0226186, -0.0826478,
195 0.0, -0.00408879, -0.0638005, -0.206868,
196 0.0, 0.0331328, 0.0402103, 0.118611,
197 0.0, -0.0634537, -0.0516743, 0.0045364,
198 0.0, -0.0957718, -0.235246, -0.439811,
199 0.0, -0.163504, -0.0129115, 0.00140143,
200 0.0, -0.182903, -0.0503858, -0.207799,
201 0.0, -0.0970927, 0, 0.124744,
202 0.0, -0.0169602, -0.0527447, 0.0319154,
203 0.0, -0.176499, -0.196542, -0.0846979,
204 0.0, 0.0589994, 0.0131431, 0.0461769,
205 0.0, -0.0237507, -0.0307316, 0.144429,
206 0.0, -0.0144483, -0.0328234, -0.00553684,
207 0.0, 0.113188, -0.176182, 0.0635706,
208 0.0, -0.109776, -0.727705, -0.756824,
209 0.0, -0.0553061, -0.056162, -0.0336955,
210 0.0, -0.070077, -0.127203, -0.140082,
211 0.0, -0.0844368, -0.0735331, -0.016667,
212 0.0, 0.0426443, -0.153659, -0.129711,
215 phiposAlignConsts = [
249 kwargs.setdefault(
"phiposAlignConsts", phiposAlignConsts)
250 kwargs.setdefault(
"etaposAlignConsts", etaposAlignConsts)
251 kwargs.setdefault(
"useAlignment", flags.Input.isMC
is False and flags.Muon.Align.UseILines
is False )
258 QratCscClusterFitter=CompFactory.QratCscClusterFitter
259 result=ComponentAccumulator()
261 0.000000, 0.000000, 0.000000, 0.000000, 0.0699381, 0.178291, 0.271303, 0.345611,
262 0.400738, 0.452451, 0.493772, 0.526792, 0.553845, 0.580111, 0.603337, 0.624749,
263 0.646065, 0.663924, 0.681897, 0.701345, 0.716067, 0.730324, 0.743168, 0.760598,
264 0.773341, 0.786406, 0.798358, 0.811339, 0.820949, 0.832676, 0.843917, 0.85412,
265 0.863914, 0.873229, 0.88251, 0.892856, 0.903296, 0.910067, 0.917892, 0.928028,
266 0.93461, 0.943679, 0.951617, 0.958326, 0.964428, 0.97341, 0.978204, 0.987075,
270 0.000000, 0.000000, 0.000000, 0.000000, 0.0290177, 0.0834867, 0.188683, 0.269967,
271 0.334887, 0.393036, 0.440317, 0.481884, 0.51725, 0.545107, 0.56959, 0.592327,
272 0.614087, 0.635344, 0.655252, 0.672766, 0.690929, 0.707293, 0.722742, 0.738323,
273 0.753562, 0.76749, 0.780983, 0.79354, 0.806521, 0.818085, 0.829987, 0.841443,
274 0.853723, 0.863393, 0.87431, 0.883139, 0.892962, 0.902803, 0.911276, 0.921417,
275 0.929387, 0.938106, 0.947072, 0.954406, 0.961692, 0.97055, 0.978517, 0.985133,
278 kwargs.setdefault(
"qratcor_csl_eta",qratcor_csl_eta)
279 kwargs.setdefault(
"qratcor_css_eta",qratcor_css_eta)
281 kwargs.setdefault(
"CscAlignmentTool", csc_align_tool )
344 from MuonConfig.MuonRecToolsConfig
import MuonTrackToSegmentToolCfg
345 from TrkConfig.TrkTrackSummaryToolConfig
import MuonTrackSummaryToolCfg
346 result=ComponentAccumulator()
347 kwargs.setdefault(
"IPConstraint", flags.Beam.Type
is BeamType.Collisions)
348 kwargs.setdefault(
'SegmentAmbiguityTool', result.popToolsAndMerge( MuonAmbiProcessorCfg(flags) ) )
349 kwargs.setdefault(
'SLFitter', result.popToolsAndMerge( MCTBSLFitterMaterialFromTrackCfg(flags) ) )
350 kwargs.setdefault(
"TrackToSegmentTool", result.popToolsAndMerge( MuonTrackToSegmentToolCfg(flags) ) )
351 kwargs.setdefault(
"Printer", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)) )
352 if flags.Beam.Type
is not BeamType.Collisions:
353 kwargs.setdefault(
"MmOccupancyBinWidth", 2048)
355 kwargs.setdefault(
'TrackCleaner', result.popToolsAndMerge( MuonTrackCleanerCfg(flags, name=
'MuonTrackCleaner_seg',seg=
True) ) )
356 kwargs.setdefault(
'TrackSummaryTool', result.popToolsAndMerge( MuonTrackSummaryToolCfg(flags, name=
'MuonTrackSummary') ) )
358 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig
import MuonClusterOnTrackCreatorCfg
359 kwargs.setdefault(
"MuonClusterCreator", result.popToolsAndMerge(MuonClusterOnTrackCreatorCfg(flags)) )
361 result.setPrivateTools(CompFactory.Muon.MuonNSWSegmentFinderTool(name,**kwargs))
383 result = ComponentAccumulator()
385 if not flags.Detector.EnableMDT:
386 kwargs.setdefault(
"MdtPrepDataContainer",
"")
387 if not flags.Detector.EnableRPC:
388 kwargs.setdefault(
"RpcPrepDataContainer",
"")
389 if not flags.Detector.EnableTGC:
390 kwargs.setdefault(
"TgcPrepDataContainer",
"")
392 kwargs.setdefault(
'TgcPrepDataContainer',
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
393 kwargs.setdefault(
"CscPrepDataContainer",
"CSC_Clusters" if flags.Detector.EnableCSC
else "")
394 kwargs.setdefault(
"sTgcPrepDataContainer",
"STGC_Measurements" if flags.Detector.EnablesTGC
else "")
395 kwargs.setdefault(
'TgcPrepDataContainer',
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
396 kwargs.setdefault(
"MMPrepDataContainer",
"MM_Measurements" if flags.Detector.EnableMM
else "")
398 kwargs.setdefault(
"PrintSummary", flags.Muon.printSummary)
399 kwargs.setdefault(
"printerTool", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags) ))
402 name =
"MuonLayerHoughTool"))
if flags.Beam.Type
is not BeamType.Cosmics
else \
404 kwargs.setdefault(
"MuonLayerScanTool", hough_tool)
406 the_alg = CompFactory.MuonLayerHoughAlg(name = name,**kwargs)
407 result.addEventAlgo( the_alg, primary =
True )
412 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig
import MuonClusterOnTrackCreatorCfg, MdtDriftCircleOnTrackCreatorCfg, MdtCalibToolForRotsCfg
413 result = ComponentAccumulator()
415 if not flags.Detector.EnableRPC:
416 kwargs.setdefault(
"RpcPrepDataContainer",
"")
417 if not flags.Detector.EnableTGC:
418 kwargs.setdefault(
"TgcPrepDataContainer",
"")
420 if "MdtCreator" not in kwargs:
423 if not flags.Input.isMC
and flags.Beam.Type
is BeamType.Collisions:
424 if flags.Muon.doSegmentT0Fit:
425 timeWindowSetting = MdtCalibWindowNumber(
'Collision_t0fit')
427 timeWindowSetting = MdtCalibWindowNumber(
'Collision_data')
428 acc = MdtDriftCircleOnTrackCreatorCfg(flags, name=
"MdtDriftCircleOnTrackCreatorSegmentFinding",
429 CreateTubeHit =
False,
430 CalibrationTool = result.popToolsAndMerge(MdtCalibToolForRotsCfg(flags,
431 TimeWindowSetting = timeWindowSetting))
435 acc = MdtDriftCircleOnTrackCreatorCfg(flags)
437 kwargs.setdefault(
'MdtCreator', result.popToolsAndMerge(acc))
439 kwargs.setdefault(
'ClusterCreator', result.popToolsAndMerge(MuonClusterOnTrackCreatorCfg(flags)))
440 kwargs.setdefault(
"Printer", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags) ))
441 kwargs.setdefault(
'TgcPrepDataContainer',
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
443 if flags.Beam.Type
is BeamType.Cosmics:
444 kwargs.setdefault(
"AngleCutPhi", 1e9)
445 kwargs.setdefault(
"DropDistance", 100000000.)
447 result.setPrivateTools( CompFactory.Muon.MuonPatternCalibration(name, **kwargs) )
451 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig
import MuonClusterOnTrackCreatorCfg
452 result = ComponentAccumulator()
454 kwargs.setdefault(
"doStgcSegments", flags.Detector.EnablesTGC)
455 kwargs.setdefault(
"doMMSegments", flags.Detector.EnableMM)
456 kwargs.setdefault(
"doMdtSegments",
False)
457 kwargs.setdefault(
"CSC_clusterkey",
"CSC_Clusters" if flags.Detector.EnableCSC
else "")
459 kwargs.setdefault(
"SegmentCollectionName",
"NCB_TrackMuonSegments")
461 kwargs.setdefault(
"NSWSegmentCollectionName",
"")
462 kwargs.setdefault(
"SegmentQuality", 1)
466 if flags.Detector.EnableCSC:
468 name=
'CscSegmentUtilTool_NCB',
473 name=
'Csc2dSegmentMaker_NCB',
474 segmentTool=csc_segment_util_tool))
477 name=
'Csc4dSegmentMaker_NCB',
478 segmentTool=csc_segment_util_tool))
480 kwargs.setdefault(
"Csc2dSegmentMaker", csc_2d_segment_maker)
481 kwargs.setdefault(
"Csc4dSegmentMaker", csc_4d_segment_maker)
483 if flags.Detector.EnablesTGC
or flags.Detector.EnableMM:
484 kwargs.setdefault(
"MuonClusterCreator", result.popToolsAndMerge(MuonClusterOnTrackCreatorCfg(flags)))
486 extrapolator = result.getPrimaryAndMerge(MuonStraightLineExtrapolatorCfg(flags))
487 result.addPublicTool(extrapolator)
488 cleaner = result.popToolsAndMerge( MuonTrackCleanerCfg(flags, name=
'MuonTrackCleaner_seg',seg=
True) )
490 name =
"MuonNSWSegmentFinderTool",
491 TrackCleaner = cleaner,
492 SeedMMStereos =
False,
493 IPConstraint =
False,
494 CaloConstraint =
True))
495 kwargs.setdefault(
"NSWSegmentMaker", segment_finder)
496 the_alg = CompFactory.MuonSegmentFinderAlg(name, **kwargs)
497 result.addEventAlgo(the_alg, primary =
True)
501 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig
import MuonClusterOnTrackCreatorCfg
502 result = ComponentAccumulator()
504 kwargs.setdefault(
"EDMPrinter", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)) )
509 kwargs.setdefault(
'SegmentMaker', segment_maker)
512 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
513 kwargs.setdefault(
"MuonClusterCreator", result.popToolsAndMerge(MuonClusterOnTrackCreatorCfg(flags)))
516 extrapolator = result.getPrimaryAndMerge(MuonStraightLineExtrapolatorCfg(flags))
517 result.addPublicTool(extrapolator)
518 cleaner = result.popToolsAndMerge( MuonTrackCleanerCfg(flags, name=
'MuonTrackCleaner_seg',seg=
True) )
519 segment_finder = result.getPrimaryAndMerge(
MuonNSWSegmentFinderToolCfg(flags, name =
"MuonNSWSegmentFinderTool", TrackCleaner = cleaner))
520 kwargs.setdefault(
"NSWSegmentMaker", segment_finder)
523 if flags.Detector.EnableCSC:
527 kwargs.setdefault(
"CSC_clusterkey",
"")
529 kwargs.setdefault(
"PrintSummary", flags.Muon.printSummary)
530 kwargs.setdefault(
"doStgcSegments", flags.Detector.EnablesTGC)
531 kwargs.setdefault(
"doMMSegments", flags.Detector.EnableMM)
533 kwargs.setdefault(
"SegmentCollectionName",
"TrackMuonSegments" if flags.Muon.segmentOrigin !=
"TruthTracking" else "ThirdChainSegments")
535 the_alg = CompFactory.MuonSegmentFinderAlg( name, **kwargs)
536 result.addEventAlgo(the_alg)
559 Returns a CA setting up Muon Segment Finding
560 @param setup_bytestream if True and if Format.BS, sets up reading from bytestream. If False, disables setting up BS, even if Format.BS is True
564 result = ComponentAccumulator()
566 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
567 result.merge( MuonGeoModelCfg(flags) )
568 from MuonConfig.MuonRecToolsConfig
import MuonEDMHelperSvcCfg
569 result.merge(MuonEDMHelperSvcCfg(flags))
574 if flags.Input.Format
is Format.BS:
575 from MuonConfig.MuonBytestreamDecodeConfig
import MuonByteStreamDecodersCfg
576 result.merge( MuonByteStreamDecodersCfg(flags) )
578 if flags.Input.Format
is Format.BS
or 'StreamRDO' in flags.Input.ProcessingTags:
579 from MuonConfig.MuonRdoDecodeConfig
import MuonRDOtoPRDConvertorsCfg
580 result.merge( MuonRDOtoPRDConvertorsCfg(flags) )
585 if flags.Muon.scheduleActsReco:
586 if not flags.Muon.usePhaseIIGeoSetup:
587 raise RuntimeError(
"The phase II reconstruction flag cannot be set to true without also running the job from a proper SQLite input")
588 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig
import MuonPatternRecognitionCfg
590 result.merge(MuonPatternRecognitionCfg(flags))
598 if flags.Muon.runCommissioningChain:
601 if flags.Beam.Type
is BeamType.Collisions:
604 SegmentContainerName=
"NCB_TrackMuonSegments",
605 xAODContainerName=
"NCB_MuonSegments") )
607 if flags.Detector.EnableMM
or flags.Detector.EnablesTGC:
609 SegmentContainerName=
"TrackMuonNSWSegments",
610 xAODContainerName=
"xAODNSWSegments"))