コード例 #1
0
def MuonSegmentFittingToolCfg(flags, **kwargs):
    # declareProperty("SLPropagator",   m_slPropagator);
    # declareProperty("SLFitter",       m_slTrackFitter);
    # declareProperty("CurvedFitter",   m_curvedTrackFitter);
    # declareProperty("TrackCleaner",   m_trackCleaner);
    # declareProperty("UpdatePrecisionCoordinate", m_updatePrecisionCoordinate = false );
    result = ComponentAccumulator()
    # FIXME! Add this.
    # acc, propagator = AtlasRungeKuttaPropagatorCfg(flags)
    # result.merge(acc)
    # kwargs.setdefault("SLPropagator", propagator)

    acc = MCTBFitterCfg(flags, name="SLFitter", StraightLine=True)
    slfitter = acc.getPrimary()
    acc.addPublicTool(slfitter)
    result.merge(acc)
    kwargs.setdefault("SLFitter", slfitter)

    acc = MCTBFitterCfg(flags, name="CurvedFitter")
    fitter = acc.getPrimary()

    acc.addPublicTool(fitter)
    result.merge(acc)
    kwargs.setdefault("CurvedFitter", fitter)

    acc = MuonTrackCleanerCfg(flags)
    cleaner = acc.getPrimary()

    acc.addPublicTool(cleaner)
    result.merge(acc)
    kwargs.setdefault("TrackCleaner", cleaner)
    result.setPrivateTools(Muon__MuonSegmentFittingTool(**kwargs))
    return result
コード例 #2
0
def MuonClusterSegmentFinderToolCfg(flags, **kwargs):
    #m_slTrackFitter("Trk::GlobalChi2Fitter/MCTBSLFitter"),
    #m_ambiTool("Trk::SimpleAmbiguityProcessorTool/MuonAmbiProcessor"),
    #m_trackToSegmentTool("Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"),
    #m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
    #m_edmHelperSvc("Muon::MuonEDMHelperSvc/MuonEDMHelperSvc"),
    #m_trackCleaner("Muon::MuonTrackCleaner/MuonTrackCleaner") {
    #declareProperty("SLFitter",            m_slTrackFitter);
    #declareProperty("SegmentAmbiguityTool",m_ambiTool);
    #declareProperty("TrackToSegmentTool",  m_trackToSegmentTool);
    #declareProperty("TrackCleaner",        m_trackCleaner);
    result = ComponentAccumulator()

    acc = MCTBFitterCfg(flags, name="SLFitter", StraightLine=True)
    slfitter = acc.getPrimary()
    result.addPublicTool(slfitter)
    result.merge(acc)
    kwargs.setdefault("SLFitter", slfitter)

    acc = MuonTrackCleanerCfg(flags)
    cleaner = acc.getPrimary()
    result.addPublicTool(cleaner)
    kwargs.setdefault("TrackCleaner", cleaner)
    result.merge(acc)

    acc = MuonTrackSummaryToolCfg(flags)
    track_summary = acc.getPrimary()
    result.addPublicTool(track_summary)
    kwargs.setdefault('TrackSummaryTool', track_summary)
    result.merge(acc)

    acc = MuonAmbiProcessorCfg(flags, name='MuonAmbiProcessor')
    ambi = acc.popPrivateTools()
    acc.addPublicTool(ambi)
    result.merge(acc)
    kwargs.setdefault("SegmentAmbiguityTool", ambi)

    # FIXME - remaining tools
    result.setPrivateTools(Muon__MuonClusterSegmentFinderTool(**kwargs))
    return result
コード例 #3
0
def MooTrackBuilderCfg(flags, name="MooTrackBuilderTemplate", **kwargs):
    Muon__MooTrackBuilder = CompFactory.Muon.MooTrackBuilder
    Trk__STEP_Propagator = CompFactory.Trk.STEP_Propagator
    from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtDriftCircleOnTrackCreatorCfg, TriggerChamberClusterOnTrackCreatorCfg
    from MuonConfig.MuonRecToolsConfig import MuonTrackToSegmentToolCfg
    from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg

    # Based on this: https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L221
    # ignoring all the name_prefix stuff for the moment, since I'm not sure it's necessary any more.
    result = MooTrackFitterCfg(flags)
    moo_track_fitter = result.getPrimary()
    result.addPublicTool(moo_track_fitter)
    kwargs.setdefault("Fitter", moo_track_fitter)

    # Now setup SL fitter (MooSLTrackFitter as defined here:
    # https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecExampleConfigDb.py#L203)
    acc = MCTBFitterCfg(flags, name='MCTBSLFitter', StraightLine=True)
    mctbslfitter = acc.getPrimary()
    result.addPublicTool(mctbslfitter)
    result.merge(acc)

    # Just take the default configuration, as per https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecExampleConfigDb.py#L56
    # FIXME - this should be updated once there is a proper CA implementation for the STEP_Propagator
    prop = Trk__STEP_Propagator(name='MuonStraightLinePropagator')
    result.addPublicTool(prop)

    # TODO - check why Fitter and FitterPreFit are identical
    acc = MooTrackFitterCfg(flags,
                            name="MooSLTrackFitter",
                            Fitter=mctbslfitter,
                            FitterPreFit=mctbslfitter,
                            Propagator=prop,
                            ReducedChi2Cut=10.0,
                            SLFit=True)
    moo_sl_track_fitter = acc.getPrimary()
    result.addPublicTool(moo_sl_track_fitter)
    result.merge(acc)

    kwargs.setdefault("SLFitter", moo_sl_track_fitter)
    kwargs.setdefault(
        "RecalibrateMDTHitsOnTrack",
        ((not flags.Muon.doSegmentT0Fit) and flags.Beam.Type == 'collisions'))

    acc = MuonSeededSegmentFinderCfg(flags)
    muon_seeded_segment_finder = acc.getPrimary()
    result.addPublicTool(muon_seeded_segment_finder)
    result.merge(acc)
    kwargs.setdefault("SeededSegmentFinder", muon_seeded_segment_finder)

    acc = MdtDriftCircleOnTrackCreatorCfg(flags)
    mdt_dcot_creator = acc.getPrimary()
    kwargs.setdefault("MdtRotCreator", mdt_dcot_creator)
    result.merge(acc)

    acc = TriggerChamberClusterOnTrackCreatorCfg(flags)
    muon_comp_cluster_creator = acc.getPrimary()
    kwargs.setdefault("CompetingClustersCreator", muon_comp_cluster_creator)
    result.merge(acc)

    acc = MuonSTEP_PropagatorCfg(flags)
    muon_prop = acc.getPrimary()
    kwargs.setdefault("Propagator", muon_prop)
    result.merge(acc)

    acc = MuonChamberHoleRecoveryToolCfg(flags)
    hole_recovery_tool = acc.getPrimary()
    result.addPublicTool(hole_recovery_tool)
    result.merge(acc)
    kwargs.setdefault("HitRecoveryTool", hole_recovery_tool)
    kwargs.setdefault("ChamberHoleRecoveryTool",
                      hole_recovery_tool)  # FIXME? Remove duplicate from cxx?

    acc = MagneticFieldSvcCfg(flags)
    result.merge(acc)

    acc = MuonTrackToSegmentToolCfg(flags)
    track_to_segment_tool = acc.getPrimary()
    kwargs.setdefault("TrackToSegmentTool", track_to_segment_tool)
    result.merge(acc)

    kwargs.setdefault("Printer", MuonEDMPrinterTool(flags))

    # FIXME - remove ErrorOptimisationTool from cxx?
    # declareProperty("ErrorOptimisationTool","" );

    acc = MuPatCandidateToolCfg(flags)
    cand_tool = acc.getPrimary()
    result.merge(acc)
    kwargs.setdefault("CandidateTool", cand_tool)

    acc = MooCandidateMatchingToolCfg(flags)
    track_segment_matching_tool = acc.getPrimary()
    result.merge(acc)
    kwargs.setdefault("CandidateMatchingTool", track_segment_matching_tool)

    from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg
    acc = MuonTrackSummaryToolCfg(flags)
    track_summary = acc.getPrimary()
    result.merge(acc)
    kwargs.setdefault("TrackSummaryTool", track_summary)

    builder = Muon__MooTrackBuilder(name, **kwargs)
    result.setPrivateTools(builder)
    return result
コード例 #4
0
def MooTrackFitterCfg(flags, name='MooTrackFitter', **kwargs):
    # Based on https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L179
    # (Tons of explicit configuration missing from there though)
    Muon__MooTrackFitter = CompFactory.Muon.MooTrackFitter
    MuonSegmentMomentum = CompFactory.MuonSegmentMomentum
    from MuonConfig.MuonRecToolsConfig import MuonPhiHitSelector, MuonTrackToSegmentToolCfg, MuonTrackSummaryHelperToolCfg, MuPatHitToolCfg
    from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtDriftCircleOnTrackCreatorCfg

    result = MCTBFitterCfg(flags)
    mctb_fitter = result.getPrimary()
    result.addPublicTool(mctb_fitter)
    kwargs.setdefault("Fitter", mctb_fitter)
    kwargs.setdefault("FitterPreFit", mctb_fitter)

    # FIXME MuPatHitTool currently isn't configured, but should be.
    MuPatHitToolCfg
    acc = MuPatHitToolCfg(flags)
    mu_pat_hit_tool = acc.getPrimary()
    result.addPublicTool(mu_pat_hit_tool)
    result.merge(acc)
    kwargs.setdefault("HitTool", mu_pat_hit_tool)

    acc = MuonSTEP_PropagatorCfg(flags)
    muon_prop = acc.getPrimary()
    result.addPublicTool(muon_prop)
    result.merge(acc)

    kwargs.setdefault("Propagator", muon_prop)
    # kwargs.setdefault("SLFit" ,          ) # Was "not jobproperties.BField.allToroidOn()" but do not have access to Field here.
    kwargs.setdefault("ReducedChi2Cut", flags.Muon.Chi2NDofCut)

    momentum_estimator = ""
    if flags.Beam.Type == 'cosmics':
        momentum_estimator = MuonSegmentMomentum(DoCosmics=True)
    else:
        acc = MuonSegmentMomentumFromFieldCfg(flags)
        momentum_estimator = acc.getPrimary()
        result.merge(acc)

    result.addPublicTool(momentum_estimator)
    kwargs.setdefault("SegmentMomentum", momentum_estimator)

    kwargs.setdefault("MuonPrinterTool", MuonEDMPrinterTool(flags))

    acc = MuonTrackToSegmentToolCfg(flags)
    track_to_segment_tool = acc.getPrimary()
    kwargs.setdefault("TrackToSegmentTool", track_to_segment_tool)
    result.merge(acc)

    acc = MdtDriftCircleOnTrackCreatorCfg(flags)
    mdt_dcot_creator = acc.getPrimary()
    kwargs.setdefault("MdtRotCreator", mdt_dcot_creator)
    result.merge(acc)

    kwargs.setdefault("PhiHitSelector", MuonPhiHitSelector(flags))

    acc = MuonTrackCleanerCfg(flags)
    track_cleaner = acc.getPrimary()
    result.merge(acc)
    result.addPublicTool(track_cleaner)
    kwargs.setdefault("TrackCleaner", track_cleaner)
    # Leaving "SegmentInOverlapTool" as default, which is what happens in the current configuration.

    acc = MuonTrackSummaryHelperToolCfg(flags)
    track_summary_helper = acc.getPrimary()
    result.merge(acc)
    kwargs.setdefault("TrackSummaryTool", track_summary_helper)

    kwargs.setdefault("CleanPhiHits", True)
    kwargs.setdefault("UsePreciseHits", True)
    kwargs.setdefault("UsePrefit", False)
    kwargs.setdefault("SeedAtStartOfTrack", False)

    fitter = Muon__MooTrackFitter(name, **kwargs)
    result.setPrivateTools(fitter)
    return result