def AddIsolPlots(name_suffix, doEtaSlices=True, doClosure=False, DoProbeMatchPlots=True, ProduceEfficiencies=False): PlotTools = [] # add plotting tools in slices if doEtaSlices: Slices = { "All": (0.0, 10.0), "noCrack": (0.1, 10.0), "Crack": (0.0, 0.1), "Barrel": (0.1, 1.1), "Transition": (1.1, 1.3), "Endcap": (1.3, 2.0), "CSC": (2.0, 2.7) } for etaslice, interval in Slices.iteritems(): PlotTool = CommonMuonTPConfig.AddPlottingTool( name="JPsiTPIsoPlottingTool_%s_%s" % (name_suffix, etaslice), EffiFlag=name_suffix + "_" + etaslice, applySF=False, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) PlotTool.ProbeAbsEtaMin = interval[0] PlotTool.ProbeAbsEtaMax = interval[1] PlotTools.append(PlotTool) if doClosure: PlotToolCL = CommonMuonTPConfig.AddPlottingTool( name="JPsiTPIsoPlottingToolClosure_%s_%s" % (name_suffix, etaslice), EffiFlag=name_suffix + "_" + etaslice + "_Closure", applySF=True, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) PlotToolCL.ProbeAbsEtaMin = interval[0] PlotToolCL.ProbeAbsEtaMax = interval[1] PlotTools.append(PlotToolCL) else: PlotTools = [ CommonMuonTPConfig.AddPlottingTool( name="JPsiTPIsoPlottingTool_%s_All" % name_suffix, EffiFlag=name_suffix + "_All", applySF=False, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) ] if doClosure: PlotTools.append( CommonMuonTPConfig.AddPlottingTool( name="JPsiTPIsoPlottingToolClosure_%s_All" % name_suffix, EffiFlag=name_suffix + "_All_Closure", applySF=True, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies)) # config the plot tools for Zmm isolation for thetool in PlotTools: thetool.doJPsiKinematicPlots = True thetool.doFineEtaPhiPlots = True thetool.DoAsymmErrorGraphs = True thetool.doJPsiDileptonPlots = True return PlotTools
def MuonTPConfig(outputFilename, doPlots=False, doEff=False): # outputFilename: name of the output file # doPlots: steers creation of probe/match histograms # doEff: steers additional creation of efficiency histograms if doPlots is true from AthenaCommon.AppMgr import ServiceMgr from AthenaCommon.AlgSequence import AlgSequence from MuonPerformanceAlgs import ZmumuTPRecoAnalysis from MuonPerformanceAlgs import ZmumuTPMuonAnalysis from MuonPerformanceAlgs import JPsiTPRecoAnalysis from MuonPerformanceAlgs import JPsiTPMuonAnalysis from MuonPerformanceAlgs import CommonMuonTPConfig # Full job is a list of algorithms job = AlgSequence() ############## Zmumu T&P Configuration ######################## do_Zmumu_RecoEff_TagProbe = True # this is for Z->mumu, reco eff. You can add your own analysis in a similar way. do_Zmumu_IsolationEff_TagProbe = True # this is for Z->mumu, isolation eff. You can add your own analysis in a similar way. do_Zmumu_TriggerEff_TagProbe = True # this is for Z->mumu, Trigger eff. ############## JPsi T&P Configuration ######################## do_JPsi_RecoEff_TagProbe = True do_JPsi_IsolationEff_TagProbe = True do_JPsi_TriggerEff_TagProbe = True GRL_to_use = [] #GRL_to_use = ["/afs/cern.ch/user/a/atlasdqm/grlgen/All_Good/data15_13TeV.periodA_DetStatus-v62-pro18_DQDefects-00-01-02_PHYS_StandardGRL_All_Good.xml"] CommonMuonTPConfig.AddTrigDecisionTool() CommonMuonTPConfig.AddTrigMatchingTool() CommonMuonTPConfig.AddMuonSelectionTool() CommonMuonTPConfig.AddGoodRunsListSelectionTool(GRL_to_use) ##### Reco eff analysis options if do_Zmumu_RecoEff_TagProbe: ZmumuTPRecoAnalysis.AddZmumuTPRecoAnalysis(doEtaSlices=False, writeNtuple=True, doClosure=False, doDRSys=True, doValid=False, DoProbeMatchPlots=doPlots, ProduceEfficiencies=doPlots and doEff) if do_JPsi_RecoEff_TagProbe: JPsiTPRecoAnalysis.AddJPsiTPRecoAnalysis(writeNtuple=True, doValid=False, doDRSys=True, DoProbeMatchPlots=doPlots, ProduceEfficiencies=doPlots and doEff) if do_Zmumu_TriggerEff_TagProbe or do_Zmumu_IsolationEff_TagProbe: ZmumuTPMuonAnalysis.AddZmumuTPMuonAnalysis( doIso=do_Zmumu_IsolationEff_TagProbe, doTrig=do_Zmumu_TriggerEff_TagProbe, doTrigEtaSlices=True, doIsolEtaSlices=False, doIsolPlots=False, doTriggerPlots=True, writeNtuple=True, doClosure=False, doDRSys=True, doDPhiTPSys=True, doProbeCharSys=True, doLooseProbes=True, doMediumProbes=True, doTightProbes=True, doTruthProbes=True, doHighPtProbes=True, doL1=True, doL2=False, doEF=False, doHLT=True, DoProbeMatchPlots=False, ProduceEfficiencies=doPlots and doEff) if do_JPsi_TriggerEff_TagProbe or do_JPsi_IsolationEff_TagProbe: JPsiTPMuonAnalysis.AddJPsiTPMuonAnalysis( doIso=do_JPsi_IsolationEff_TagProbe, doTrig=do_JPsi_TriggerEff_TagProbe, doTrigEtaSlices=True, doIsolEtaSlices=False, doIsolPlots=False, doTriggerPlots=True, writeNtuple=True, doClosure=False, doDRSys=True, doDPhiTPSys=True, doProbeCharSys=True, doLooseProbes=True, doMediumProbes=True, doTightProbes=True, doTruthProbes=True, doHighPtProbes=True, doL1=True, doL2=False, doEF=False, doHLT=True, DoProbeMatchPlots=False, ProduceEfficiencies=doPlots and doEff) # Add HistSvc from GaudiSvc.GaudiSvcConf import THistSvc ServiceMgr += THistSvc() ServiceMgr.THistSvc.Output += [ "MUONTP DATAFILE='{}' OPT='RECREATE'".format(outputFilename) ]
def AddConfiguredJPsiTPAlg(name_suffix="myProbes", ProbeKind = "CaloTag", # options: "CaloTag","MS", "Truth", "ID" MatchContainer="Muons", doID=False, doCB=True, doLoose=True, doMedium=True, doTight=True, doHighPt=True, doStandalone=False, doCaloTag=False, doIndividualAuthors=False, writeNtuple=False, useTrigger=True, doDRSys = False, doClosure=False, DoProbeMatchPlots=True, ProduceEfficiencies=False): from AthenaCommon.AlgSequence import AlgSequence from AthenaCommon.AppMgr import ToolSvc job = AlgSequence() MuonContainerToUse = "Muons" #if hasattr(job, "MuonQualityUpdater"): #MuonContainerToUse = "UpdatedMuons" ProbeContainer=MuonContainerToUse if ProbeKind == "MSTrackPart": ProbeContainer = "ExtrapolatedMuonTrackParticles" ProbeKind = "MS" if ProbeKind == "ID": ProbeContainer = "InDetTrackParticles" if ProbeKind == "Truth": ProbeContainer = "MuonTruthParticles" theAlg = CommonMuonTPConfig.AddTagProbeAlg(name="JPsiTPAlg_%s"%name_suffix, ProbeCont=ProbeContainer, MatchCont=MatchContainer) theAlg.TopLevelFolderName = "JPsiTPReco" #AddMuonSelectionTool() # add a plotting tool #PlotTool = AddPlottingTool(name="JPsiTPPlottingTool_%s"%name_suffix,EffiFlag=name_suffix) # add J/Psi TP selection tools SelectionTools = [] SelectionTools += [CommonMuonTPConfig.AddJPsiTPSelectionTool(name="JPsiTPSelectionTool_OC_%s"%name_suffix,EffiFlag="%s_OC"%name_suffix, ProbeType = ProbeKind, UseTrigger = useTrigger)] PlotTools = [] # add plotting tools in slices PlotTools = [CommonMuonTPConfig.AddPlottingTool(name="JPsiTPPlottingTool_%s_All"%name_suffix,EffiFlag=name_suffix+"_All",applySF = False,DoProbeMatchPlots=DoProbeMatchPlots,ProduceEfficiencies=ProduceEfficiencies)] for thetool in PlotTools: thetool.doJPsiKinematicPlots = True thetool.doJPsiDileptonPlots = True # add any desired matching tools MATCH_DR = 0.05 MatchingTools = [] if doID: thistoolID = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_ID"%name_suffix,EffiFlag="IDTracks") thistoolID.MatchToID = True thistoolID.ApplyScaleFactors = False thistoolID.MaximumDrCut = MATCH_DR MatchingTools += [thistoolID] if doDRSys: thistoolID_dRdown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_ID_dRdown"%name_suffix,EffiFlag="IDTracks_dRDown") thistoolID_dRdown.MatchToID = True thistoolID_dRdown.ApplyScaleFactors = False thistoolID_dRdown.IsNominal=False thistoolID_dRdown.MaximumDrCut = 0.5 *MATCH_DR MatchingTools += [thistoolID_dRdown] thistoolID_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_ID_dRUp"%name_suffix,EffiFlag="IDTracks_dRUp") thistoolID_dRUp.MatchToID = True thistoolID_dRUp.ApplyScaleFactors = False thistoolID_dRUp.IsNominal=False thistoolID_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolID_dRUp] if doLoose: thistoolLoose = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose"%name_suffix,EffiFlag="LooseMuons") thistoolLoose.MatchToLoose = True thistoolLoose.ApplyScaleFactors = False thistoolLoose.MaximumDrCut = MATCH_DR MatchingTools += [thistoolLoose] if doDRSys: thistoolLoose_dRdown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose_dRdown"%name_suffix,EffiFlag="LooseMuons_dRDown") thistoolLoose_dRdown.MatchToLoose = True thistoolLoose_dRdown.ApplyScaleFactors = False thistoolLoose_dRdown.IsNominal=False thistoolLoose_dRdown.MaximumDrCut = 0.5 *MATCH_DR MatchingTools += [thistoolLoose_dRdown] thistoolLoose_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose_dRUp"%name_suffix,EffiFlag="LooseMuons_dRUp") thistoolLoose_dRUp.MatchToLoose = True thistoolLoose_dRUp.ApplyScaleFactors = False thistoolLoose_dRUp.IsNominal=False thistoolLoose_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolLoose_dRUp] # also run a version without CaloTag thistoolLoose_noCaloTag = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose_noCaloTag"%name_suffix,EffiFlag="LooseMuons_noCaloTag") thistoolLoose_noCaloTag.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag.ApplyScaleFactors = False thistoolLoose_noCaloTag.MaximumDrCut = MATCH_DR MatchingTools += [thistoolLoose_noCaloTag] if doDRSys: thistoolLoose_noCaloTag_dRdown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose_noCaloTag_dRdown"%name_suffix,EffiFlag="LooseMuons_noCaloTag_dRDown") thistoolLoose_noCaloTag_dRdown.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag_dRdown.ApplyScaleFactors = False thistoolLoose_noCaloTag_dRdown.IsNominal=False thistoolLoose_noCaloTag_dRdown.MaximumDrCut = 0.5 *MATCH_DR MatchingTools += [thistoolLoose_noCaloTag_dRdown] thistoolLoose_noCaloTag_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Loose_noCaloTag_dRUp"%name_suffix,EffiFlag="LooseMuons_noCaloTag_dRUp") thistoolLoose_noCaloTag_dRUp.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag_dRUp.ApplyScaleFactors = False thistoolLoose_noCaloTag_dRUp.IsNominal=False thistoolLoose_noCaloTag_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolLoose_noCaloTag_dRUp] if doMedium: thistoolMed = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Medium"%name_suffix,EffiFlag="MediumMuons") thistoolMed.MatchToMedium = True thistoolMed.ApplyScaleFactors = False thistoolMed.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMed] if doDRSys: thistoolMedium_dRdown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Medium_dRdown"%name_suffix,EffiFlag="MediumMuons_dRDown") thistoolMedium_dRdown.MatchToMedium = True thistoolMedium_dRdown.IsNominal=False thistoolMedium_dRdown.ApplyScaleFactors = False thistoolMedium_dRdown.MaximumDrCut = 0.5 *MATCH_DR MatchingTools += [thistoolMedium_dRdown] thistoolMedium_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Medium_dRUp"%name_suffix,EffiFlag="MediumMuons_dRUp") thistoolMedium_dRUp.MatchToMedium = True thistoolMedium_dRUp.IsNominal=False thistoolMedium_dRUp.ApplyScaleFactors = False thistoolMedium_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMedium_dRUp] if doTight: thistoolTight = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Tight"%name_suffix,EffiFlag="TightMuons") thistoolTight.MatchToTight = True thistoolTight.ApplyScaleFactors = False thistoolTight.MaximumDrCut = MATCH_DR MatchingTools += [thistoolTight] if doDRSys: thistoolTight_dRdown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Tight_dRdown"%name_suffix,EffiFlag="TightMuons_dRDown") thistoolTight_dRdown.MatchToTight = True thistoolTight_dRdown.ApplyScaleFactors = False thistoolTight_dRdown.IsNominal=False thistoolTight_dRdown.MaximumDrCut = 0.5 *MATCH_DR MatchingTools += [thistoolTight_dRdown] thistoolTight_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_Tight_dRUp"%name_suffix,EffiFlag="TightMuons_dRUp") thistoolTight_dRUp.MatchToTight = True thistoolTight_dRUp.IsNominal=False thistoolTight_dRUp.ApplyScaleFactors = False thistoolTight_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolTight_dRUp] if doHighPt: thistoolHighPt = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_HighPt"%name_suffix, EffiFlag="HighPtMuons") thistoolHighPt.MatchToHighPt = True thistoolHighPt.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors("Tight") # UPDATE when SF available for high pt thistoolHighPt.ApplyScaleFactors=doClosure thistoolHighPt.MaximumDrCut = MATCH_DR MatchingTools += [thistoolHighPt] if doDRSys: thistoolHighPt_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_HighPt_dRDown"%name_suffix, EffiFlag="HighPtMuons_dRDown") thistoolHighPt_dRDown.MatchToHighPt = True thistoolHighPt_dRDown.IsNominal=False thistoolHighPt_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors("HighPt") # UPDATE when SF available for high pt #thistoolHighPt_dRDown.ApplyScaleFactors = True thistoolHighPt_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolHighPt_dRDown] thistoolHighPt_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="JPsiTPEfficiencyTool_%s_HighPt_dRUp"%name_suffix, EffiFlag="HighPtMuons_dRUp") thistoolHighPt_dRUp.MatchToHighPt = True thistoolHighPt_dRUp.IsNominal=False thistoolHighPt_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors("Tight") # UPDATE when SF available for high pt #thistoolHighPt_dRUp.ApplyScaleFactors = True thistoolHighPt_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolHighPt_dRUp] ntuples = [] if writeNtuple: ntuples.append(CommonMuonTPConfig.AddTreeTool(name="JPsiTPTreeTool_%s"%name_suffix, EffiFlag="Trees",WriteSFInfo=doClosure)) # create the TP tool itself TheTPTool = CommonMuonTPConfig.AddMuonTPTool(name = "JPsiTPTool_%s"%name_suffix,EffiFlag=name_suffix) TheTPTool.MuonTPSelectionTools = SelectionTools TheTPTool.PlottingTools = PlotTools TheTPTool.MuonTPEfficiencyTools = MatchingTools TheTPTool.TreeTools = ntuples theAlg.MuonTPTools += [TheTPTool]
def AddConfiguredMuonTPAlg(name_suffix="MuonProbe_JPsi", MatchContainer="Muons", doIso=True, doTrig=True, doTrigEtaSlices=True, doIsolEtaSlices=False, doIsolPlots=False, doTriggerPlots=True, writeNtuple=False, doClosure=False, doDRSys=False, doDPhiTPSys=False, doProbeCharSys=False, doVeryLooseProbes=False, doLooseProbes=False, doMediumProbes=False, doTightProbes=False, doHighPtProbes=False, doTruthProbes=False, DoProbeMatchPlots=True, ProduceEfficiencies=False, doL1=False, doL2=False, doEF=False, doHLT=False): from AthenaCommon.AlgSequence import AlgSequence from AthenaCommon.AppMgr import ToolSvc job = AlgSequence() MuonContainerToUse = "Muons" if hasattr(job, "MuonQualityUpdater"): MuonContainerToUse = "UpdatedMuons" ProbeContainer = MuonContainerToUse theAlg = CommonMuonTPConfig.AddTagProbeAlg(name="JPsiTPMuonAlg_%s" % name_suffix, ProbeCont=ProbeContainer, MatchCont=MatchContainer) theAlg.TopLevelFolderName = "JPsiTPMuon" SelectionTools = [] if doLooseProbes: SelecToolsOC_LooseProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_LooseProbes_%s" % name_suffix, EffiFlag="%s_OC_LooseProbes" % name_suffix, ProbeType="Loose") SelecToolsOC_LooseProbes.UseLooseProbes = True SelectionTools.append(SelecToolsOC_LooseProbes) SelecToolsSC_LooseProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_LooseProbes_%s" % name_suffix, EffiFlag="%s_SC_LooseProbes" % name_suffix, ProbeType="Loose", SameSign=True) SelecToolsSC_LooseProbes.UseLooseProbes = True SelectionTools.append(SelecToolsSC_LooseProbes) if doDPhiTPSys: SelecToolsOC_LooseProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_LooseProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_OC_LooseProbesDPhiCut" % name_suffix, ProbeType="Loose") SelecToolsOC_LooseProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsOC_LooseProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsOC_LooseProbesDPhiCut) SelecToolsSC_LooseProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_LooseProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_SC_LooseProbesDPhiCut" % name_suffix, ProbeType="Loose", SameSign=True) SelecToolsSC_LooseProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsSC_LooseProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsSC_LooseProbesDPhiCut) if doProbeCharSys: SelecToolsOC_LooseProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_LooseProbesPos_%s" % name_suffix, EffiFlag="%s_OC_LooseProbesPos" % name_suffix, ProbeType="Loose") SelecToolsOC_LooseProbesPos.doProbeChargeSys = True SelecToolsOC_LooseProbesPos.ProbeCharge = "positive" SelecToolsOC_LooseProbesPos.IsNominal = False SelectionTools.append(SelecToolsOC_LooseProbesPos) SelecToolsOC_LooseProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_LooseProbesNeg_%s" % name_suffix, EffiFlag="%s_OC_LooseProbesNeg" % name_suffix, ProbeType="Loose") SelecToolsOC_LooseProbesNeg.doProbeChargeSys = True SelecToolsOC_LooseProbesNeg.IsNominal = False SelecToolsOC_LooseProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsOC_LooseProbesNeg) SelecToolsSC_LooseProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_LooseProbesPos_%s" % name_suffix, EffiFlag="%s_SC_LooseProbesPos" % name_suffix, ProbeType="Loose", SameSign=True) SelecToolsSC_LooseProbesPos.doProbeChargeSys = True SelecToolsSC_LooseProbesPos.ProbeCharge = "positive" SelecToolsSC_LooseProbesPos.IsNominal = False SelectionTools.append(SelecToolsSC_LooseProbesPos) SelecToolsSC_LooseProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_LooseProbesNeg_%s" % name_suffix, EffiFlag="%s_SC_LooseProbesNeg" % name_suffix, ProbeType="Loose", SameSign=True) SelecToolsSC_LooseProbesNeg.doProbeChargeSys = True SelecToolsSC_LooseProbesNeg.IsNominal = False SelecToolsSC_LooseProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsSC_LooseProbesNeg) if doMediumProbes: SelecToolsOC_MediumProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_MediumProbes_%s" % name_suffix, EffiFlag="%s_OC_MediumProbes" % name_suffix, ProbeType="Medium") SelecToolsOC_MediumProbes.UseMediumProbes = True SelectionTools.append(SelecToolsOC_MediumProbes) SelecToolsSC_MediumProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_MediumProbes_%s" % name_suffix, EffiFlag="%s_SC_MediumProbes" % name_suffix, ProbeType="Medium", SameSign=True) SelecToolsSC_MediumProbes.UseMediumProbes = True SelectionTools.append(SelecToolsSC_MediumProbes) if doDPhiTPSys: SelecToolsOC_MediumProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_MediumProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_OC_MediumProbesDPhiCut" % name_suffix, ProbeType="Medium") SelecToolsOC_MediumProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsOC_MediumProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsOC_MediumProbesDPhiCut) SelecToolsSC_MediumProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_MediumProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_SC_MediumProbesDPhiCut" % name_suffix, ProbeType="Medium", SameSign=True) SelecToolsSC_MediumProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsSC_MediumProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsSC_MediumProbesDPhiCut) if doProbeCharSys: SelecToolsOC_MediumProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_MediumProbesPos_%s" % name_suffix, EffiFlag="%s_OC_MediumProbesPos" % name_suffix, ProbeType="Medium") SelecToolsOC_MediumProbesPos.doProbeChargeSys = True SelecToolsOC_MediumProbesPos.ProbeCharge = "positive" SelecToolsOC_MediumProbesPos.IsNominal = False SelectionTools.append(SelecToolsOC_MediumProbesPos) SelecToolsOC_MediumProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_MediumProbesNeg_%s" % name_suffix, EffiFlag="%s_OC_MediumProbesNeg" % name_suffix, ProbeType="Medium") SelecToolsOC_MediumProbesNeg.doProbeChargeSys = True SelecToolsOC_MediumProbesNeg.IsNominal = False SelecToolsOC_MediumProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsOC_MediumProbesNeg) SelecToolsSC_MediumProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_MediumProbesPos_%s" % name_suffix, EffiFlag="%s_SC_MediumProbesPos" % name_suffix, ProbeType="Medium", SameSign=True) SelecToolsSC_MediumProbesPos.doProbeChargeSys = True SelecToolsSC_MediumProbesPos.ProbeCharge = "positive" SelecToolsSC_MediumProbesPos.IsNominal = False SelectionTools.append(SelecToolsSC_MediumProbesPos) SelecToolsSC_MediumProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_MediumProbesNeg_%s" % name_suffix, EffiFlag="%s_SC_MediumProbesNeg" % name_suffix, ProbeType="Medium", SameSign=True) SelecToolsSC_MediumProbesNeg.doProbeChargeSys = True SelecToolsSC_MediumProbesNeg.IsNominal = False SelecToolsSC_MediumProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsSC_MediumProbesNeg) if doTightProbes: SelecToolsOC_TightProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_TightProbes_%s" % name_suffix, EffiFlag="%s_OC_TightProbes" % name_suffix, ProbeType="Tight") SelecToolsOC_TightProbes.UseTightProbes = True SelectionTools.append(SelecToolsOC_TightProbes) SelecToolsSC_TightProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_TightProbes_%s" % name_suffix, EffiFlag="%s_SC_TightProbes" % name_suffix, ProbeType="Tight", SameSign=True) SelecToolsSC_TightProbes.UseTightProbes = True SelectionTools.append(SelecToolsSC_TightProbes) if doDPhiTPSys: SelecToolsOC_TightProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_TightProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_OC_TightProbesDPhiCut" % name_suffix, ProbeType="Tight") SelecToolsOC_TightProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsOC_TightProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsOC_TightProbesDPhiCut) SelecToolsSC_TightProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_TightProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_SC_TightProbesDPhiCut" % name_suffix, ProbeType="Tight", SameSign=True) SelecToolsSC_TightProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsSC_TightProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsSC_TightProbesDPhiCut) if doProbeCharSys: SelecToolsOC_TightProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_TightProbesPos_%s" % name_suffix, EffiFlag="%s_OC_TightProbesPos" % name_suffix, ProbeType="Tight") SelecToolsOC_TightProbesPos.doProbeChargeSys = True SelecToolsOC_TightProbesPos.ProbeCharge = "positive" SelecToolsOC_TightProbesPos.IsNominal = False SelectionTools.append(SelecToolsOC_TightProbesPos) SelecToolsOC_TightProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_TightProbesNeg_%s" % name_suffix, EffiFlag="%s_OC_TightProbesNeg" % name_suffix, ProbeType="Tight") SelecToolsOC_TightProbesNeg.doProbeChargeSys = True SelecToolsOC_TightProbesNeg.IsNominal = False SelecToolsOC_TightProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsOC_TightProbesNeg) SelecToolsSC_TightProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_TightProbesPos_%s" % name_suffix, EffiFlag="%s_SC_TightProbesPos" % name_suffix, ProbeType="Tight", SameSign=True) SelecToolsSC_TightProbesPos.doProbeChargeSys = True SelecToolsSC_TightProbesPos.ProbeCharge = "positive" SelecToolsSC_TightProbesPos.IsNominal = False SelectionTools.append(SelecToolsSC_TightProbesPos) SelecToolsSC_TightProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_TightProbesNeg_%s" % name_suffix, EffiFlag="%s_SC_TightProbesNeg" % name_suffix, ProbeType="Tight", SameSign=True) SelecToolsSC_TightProbesNeg.doProbeChargeSys = True SelecToolsSC_TightProbesNeg.IsNominal = False SelecToolsSC_TightProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsSC_TightProbesNeg) if doHighPtProbes: SelecToolsOC_HighPtProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_HighPtProbes_%s" % name_suffix, EffiFlag="%s_OC_HighPtProbes" % name_suffix, ProbeType="HighPt") SelecToolsOC_HighPtProbes.UseHighPtProbes = True SelectionTools.append(SelecToolsOC_HighPtProbes) SelecToolsSC_HighPtProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_HighPtProbes_%s" % name_suffix, EffiFlag="%s_SC_HighPtProbes" % name_suffix, ProbeType="HighPt", SameSign=True) SelecToolsSC_HighPtProbes.UseHighPtProbes = True SelectionTools.append(SelecToolsSC_HighPtProbes) if doDPhiTPSys: SelecToolsOC_HighPtProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_HighPtProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_OC_HighPtProbesDPhiCut" % name_suffix, ProbeType="HighPt") SelecToolsOC_HighPtProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsOC_HighPtProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsOC_HighPtProbesDPhiCut) SelecToolsSC_HighPtProbesDPhiCut = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_HighPtProbesDPhiCut_%s" % name_suffix, EffiFlag="%s_SC_HighPtProbesDPhiCut" % name_suffix, ProbeType="HighPt", SameSign=True) SelecToolsSC_HighPtProbesDPhiCut.DeltaPhiCut = 3.04 SelecToolsSC_HighPtProbesDPhiCut.IsNominal = False SelectionTools.append(SelecToolsSC_HighPtProbesDPhiCut) if doProbeCharSys: SelecToolsOC_HighPtProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_HighPtProbesPos_%s" % name_suffix, EffiFlag="%s_OC_HighPtProbesPos" % name_suffix, ProbeType="HighPt") SelecToolsOC_HighPtProbesPos.doProbeChargeSys = True SelecToolsOC_HighPtProbesPos.ProbeCharge = "positive" SelecToolsOC_HighPtProbesPos.IsNominal = False SelectionTools.append(SelecToolsOC_HighPtProbesPos) SelecToolsOC_HighPtProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_HighPtProbesNeg_%s" % name_suffix, EffiFlag="%s_OC_HighPtProbesNeg" % name_suffix, ProbeType="HighPt") SelecToolsOC_HighPtProbesNeg.doProbeChargeSys = True SelecToolsOC_HighPtProbesNeg.IsNominal = False SelecToolsOC_HighPtProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsOC_HighPtProbesNeg) SelecToolsSC_HighPtProbesPos = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_HighPtProbesPos_%s" % name_suffix, EffiFlag="%s_SC_HighPtProbesPos" % name_suffix, ProbeType="HighPt", SameSign=True) SelecToolsSC_HighPtProbesPos.doProbeChargeSys = True SelecToolsSC_HighPtProbesPos.ProbeCharge = "positive" SelecToolsSC_HighPtProbesPos.IsNominal = False SelectionTools.append(SelecToolsSC_HighPtProbesPos) SelecToolsSC_HighPtProbesNeg = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_SC_HighPtProbesNeg_%s" % name_suffix, EffiFlag="%s_SC_HighPtProbesNeg" % name_suffix, ProbeType="HighPt", SameSign=True) SelecToolsSC_HighPtProbesNeg.doProbeChargeSys = True SelecToolsSC_HighPtProbesNeg.IsNominal = False SelecToolsSC_HighPtProbesNeg.ProbeCharge = "negative" SelectionTools.append(SelecToolsSC_HighPtProbesNeg) from AthenaCommon.GlobalFlags import globalflags if doTruthProbes and not globalflags.DataSource() == 'data': SelecToolsOC_TruthProbes = CommonMuonTPConfig.AddJPsiTPSelectionTool( name="JPsiTPSelectionTool_OC_TruthProbes_%s" % name_suffix, EffiFlag="%s_TruthProbes" % name_suffix, ProbeType="TruthMatchedMuons") SelectionTools.append(SelecToolsOC_TruthProbes) for thetool in SelectionTools: thetool.ProbeTrackIsoCut = -1 thetool.ProbeTrackAntiIsoCut = -1 thetool.ProbeCaloIsoCut = -1 thetool.ProbeCaloAntiIsoCut = -1 # also accept high eta muons thetool.ProbeEtaCut = 4.5 PlotTools = [] # first the trigger plots if doTrig and doTriggerPlots: PlotTools += JPsiTPTrigAnalysis.AddTrigPlots( name_suffix=name_suffix, doEtaSlices=doTrigEtaSlices, doClosure=doClosure, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) # then the isolation plots if doIso and doIsolPlots: PlotTools += JPsiTPIsolAnalysis.AddIsolPlots( name_suffix=name_suffix, doEtaSlices=doIsolEtaSlices, doClosure=doClosure, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) MatchingTools = [] if doTrig: MatchingTools += JPsiTPTrigAnalysis.AddTrigMatchTools( name_suffix=name_suffix, doL1=doL1, doL2=doL2, doEF=doEF, doHLT=doHLT, doDRSys=doDRSys) if doIso: MatchingTools += JPsiTPIsolAnalysis.AddIsolMatchTools(name_suffix) ntuples = [] if writeNtuple: ntuples.append( CommonMuonTPConfig.AddTreeTool(name="JPsiTPMuonTreeTool_%s" % name_suffix, EffiFlag="Trees", WriteSFInfo=doClosure)) for ntuple in ntuples: if doIso: ntuple.AddExtendedIsolation = True # create the TP tool itself TheTPTool = CommonMuonTPConfig.AddMuonTPTool(name="MuonProbeTPTool_%s" % name_suffix, EffiFlag=name_suffix) TheTPTool.MuonTPSelectionTools = SelectionTools TheTPTool.PlottingTools = PlotTools TheTPTool.MuonTPEfficiencyTools = MatchingTools TheTPTool.TreeTools = ntuples theAlg.MuonTPTools += [TheTPTool]
def AddConfiguredZmumuTPAlg( name_suffix="myProbes", ProbeKind="CaloTag", # options: "CaloTag","MS", "Truth", "ID" MatchContainer="Muons", doID=False, doCB=True, doLoose=True, doMedium=True, doTight=True, doHighPt=True, doStandalone=False, doCaloTag=False, doIndividualAuthors=False, doEtaSlices=False, writeNtuple=False, doClosure=False, doDRSys=False, DoProbeMatchPlots=True, ProduceEfficiencies=False): from AthenaCommon.AlgSequence import AlgSequence from AthenaCommon.AppMgr import ToolSvc job = AlgSequence() MuonContainerToUse = "Muons" #if hasattr(job, "MuonQualityUpdater"): #MuonContainerToUse = "UpdatedMuons" ProbeContainer = MuonContainerToUse if ProbeKind == "MSTrackPart": ProbeContainer = "ExtrapolatedMuonTrackParticles" ProbeKind = "MS" if ProbeKind == "ID": ProbeContainer = "InDetTrackParticles" if ProbeKind == "Truth": ProbeContainer = "MuonTruthParticles" theAlg = CommonMuonTPConfig.AddTagProbeAlg(name="ZmumuTPAlg_%s" % name_suffix, ProbeCont=ProbeContainer, MatchCont=MatchContainer) theAlg.TopLevelFolderName = "ZmumuTPReco" #AddMuonSelectionTool() # add a plotting tool #PlotTool = AddPlottingTool(name="ZmumuTPPlottingTool_%s"%name_suffix,EffiFlag=name_suffix) # add four TP selection tools (iso and antiiso OC and SC) SelectionTools = [] SelectionTools += [ CommonMuonTPConfig.AddZmumuTPSelectionTool( name="ZmumuTPSelectionTool_OC_%s" % name_suffix, EffiFlag="%s_OC" % name_suffix, ProbeType=ProbeKind) ] SelectionTools += [ CommonMuonTPConfig.AddZmumuTPSelectionTool( name="ZmumuTPSelectionTool_SC_%s" % name_suffix, EffiFlag="%s_SC" % name_suffix, ProbeType=ProbeKind, SameSign=True) ] SelectionTools += [ CommonMuonTPConfig.AddZmumuTPSelectionTool( name="ZmumuTPSelectionTool_OCAntiIso_%s" % name_suffix, EffiFlag="%s_OCAntiIso" % name_suffix, ProbeType=ProbeKind, AntiIso=True) ] SelectionTools += [ CommonMuonTPConfig.AddZmumuTPSelectionTool( name="ZmumuTPSelectionTool_SCAntiIso_%s" % name_suffix, EffiFlag="%s_SCAntiIso" % name_suffix, ProbeType=ProbeKind, SameSign=True, AntiIso=True) ] PlotTools = [] # add plotting tools in slices if doEtaSlices: Slices = { "All": (0.0, 10.0), "noCrack": (0.1, 10.0), "Crack": (0.0, 0.1), "Barrel": (0.1, 1.1), "Transition": (1.1, 1.3), "Endcap": (1.3, 2.0), "CSC": (2.0, 2.7) } for etaslice, interval in Slices.iteritems(): PlotTool = CommonMuonTPConfig.AddPlottingTool( name="ZmumuTPPlottingTool_%s_%s" % (name_suffix, etaslice), EffiFlag=name_suffix + "_" + etaslice, applySF=False, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) PlotTool.ProbeAbsEtaMin = interval[0] PlotTool.ProbeAbsEtaMax = interval[1] PlotTools.append(PlotTool) if doClosure: PlotToolCL = CommonMuonTPConfig.AddPlottingTool( name="ZmumuTPPlottingToolClosure_%s_%s" % (name_suffix, etaslice), EffiFlag=name_suffix + "_" + etaslice + "_Closure", applySF=True, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) PlotToolCL.ProbeAbsEtaMin = interval[0] PlotToolCL.ProbeAbsEtaMax = interval[1] PlotTools.append(PlotToolCL) else: PlotTools = [ CommonMuonTPConfig.AddPlottingTool( name="ZmumuTPPlottingTool_%s_All" % name_suffix, EffiFlag=name_suffix + "_All", applySF=False, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies) ] if doClosure: PlotTools.append( CommonMuonTPConfig.AddPlottingTool( name="ZmumuTPPlottingToolClosure_%s_All" % name_suffix, EffiFlag=name_suffix + "_All_Closure", applySF=True, DoProbeMatchPlots=DoProbeMatchPlots, ProduceEfficiencies=ProduceEfficiencies)) # Config the plot tools for thetool in PlotTools: thetool.doZmumuKinematicPlots = False thetool.doFineEtaPhiPlots = True thetool.doDetectorRegionPlots = True # add any desired matching tools MATCH_DR = 0.05 MatchingTools = [] if doCB: thistoolCB = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CB" % name_suffix, EffiFlag="CombinedMuons") thistoolCB.MatchToCB = True thistoolCB.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") thistoolCB.ApplyScaleFactors = doClosure thistoolCB.MaximumDrCut = MATCH_DR MatchingTools += [thistoolCB] if doDRSys: thistoolCB_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CB_dRDown" % name_suffix, EffiFlag="CombinedMuons_dRDown") thistoolCB_dRDown.IsNominal = False thistoolCB_dRDown.MatchToCB = True thistoolCB_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") #thistoolCB_dRDown.ApplyScaleFactors = True thistoolCB_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolCB_dRDown] thistoolCB_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CB_dRUp" % name_suffix, EffiFlag="CombinedMuons_dRUp") thistoolCB_dRUp.MatchToCB = True thistoolCB_dRUp.IsNominal = False thistoolCB_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") #thistoolCB_dRUp.ApplyScaleFactors = True thistoolCB_dRUp.MaximumDrCut = 2. * MATCH_DR MatchingTools += [thistoolCB_dRUp] if doLoose: thistoolLoose = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose" % name_suffix, EffiFlag="LooseMuons") thistoolLoose.MatchToLoose = True thistoolLoose.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") thistoolLoose.ApplyScaleFactors = doClosure #thistoolLoose.ApplyScaleFactors = True thistoolLoose.MaximumDrCut = MATCH_DR MatchingTools += [thistoolLoose] if doDRSys: thistoolLoose_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose_dRDown" % name_suffix, EffiFlag="LooseMuons_dRDown") thistoolLoose_dRDown.MatchToLoose = True thistoolLoose_dRDown.IsNominal = False thistoolLoose_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolLoose_dRDown.ApplyScaleFactors = True thistoolLoose_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolLoose_dRDown] thistoolLoose_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose_dRUp" % name_suffix, EffiFlag="LooseMuons_dRUp") thistoolLoose_dRUp.MatchToLoose = True thistoolLoose_dRUp.IsNominal = False thistoolLoose_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolLoose_dRUp.ApplyScaleFactors = True thistoolLoose_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolLoose_dRUp] # also run a version without CaloTag thistoolLoose_noCaloTag = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose_noCaloTag" % name_suffix, EffiFlag="LooseMuons_noCaloTag") thistoolLoose_noCaloTag.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") thistoolLoose_noCaloTag.ApplyScaleFactors = doClosure #thistoolLoose_noCaloTag.ApplyScaleFactors = True thistoolLoose_noCaloTag.MaximumDrCut = MATCH_DR MatchingTools += [thistoolLoose_noCaloTag] if doDRSys: thistoolLoose_noCaloTag_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose_noCaloTag_dRDown" % name_suffix, EffiFlag="LooseMuons_noCaloTag_dRDown") thistoolLoose_noCaloTag_dRDown.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolLoose_noCaloTag_dRDown.ApplyScaleFactors = True thistoolLoose_noCaloTag_dRDown.IsNominal = False thistoolLoose_noCaloTag_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolLoose_noCaloTag_dRDown] thistoolLoose_noCaloTag_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Loose_noCaloTag_dRUp" % name_suffix, EffiFlag="LooseMuons_noCaloTag_dRUp") thistoolLoose_noCaloTag_dRUp.MatchToLoose_noCaloTag = True thistoolLoose_noCaloTag_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolLoose_noCaloTag_dRUp.ApplyScaleFactors = True thistoolLoose_noCaloTag_dRUp.IsNominal = False thistoolLoose_noCaloTag_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolLoose_noCaloTag_dRUp] if doMedium: thistoolMed = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Medium" % name_suffix, EffiFlag="MediumMuons") thistoolMed.MatchToMedium = True thistoolMed.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") thistoolMed.ApplyScaleFactors = doClosure thistoolMed.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMed] if doDRSys: thistoolMed_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Medium_dRDown" % name_suffix, EffiFlag="MediumMuons_dRDown") thistoolMed_dRDown.MatchToMedium = True thistoolMed_dRDown.IsNominal = False thistoolMed_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") #thistoolMed_dRDown.ApplyScaleFactors = True thistoolMed_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolMed_dRDown] thistoolMed_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Medium_dRUp" % name_suffix, EffiFlag="MediumMuons_dRUp") thistoolMed_dRUp.MatchToMedium = True thistoolMed_dRUp.IsNominal = False thistoolMed_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") #thistoolMed_dRUp.ApplyScaleFactors = True thistoolMed_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMed_dRUp] thistoolMed_PtrMatch = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_PtrMatch_%s_Medium" % name_suffix, EffiFlag="MediumMuons_PtrMatching") thistoolMed_PtrMatch.MatchToMedium = True thistoolMed_PtrMatch.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Medium") thistoolMed_PtrMatch.ApplyScaleFactors = doClosure #thistoolMed_PtrMatch.ApplyScaleFactors = True thistoolMed_PtrMatch.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMed_PtrMatch] if doTight: thistoolTight = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Tight" % name_suffix, EffiFlag="TightMuons") thistoolTight.MatchToTight = True thistoolTight.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Tight") thistoolTight.ApplyScaleFactors = doClosure #thistoolTight.ApplyScaleFactors = True thistoolTight.MaximumDrCut = MATCH_DR MatchingTools += [thistoolTight] if doDRSys: thistoolTight_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Tight_dRDown" % name_suffix, EffiFlag="TightMuons_dRDown") thistoolTight_dRDown.MatchToTight = True thistoolTight_dRDown.IsNominal = False thistoolTight_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Tight") #thistoolTight_dRDown.ApplyScaleFactors = True thistoolTight_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolTight_dRDown] thistoolTight_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_Tight_dRUp" % name_suffix, EffiFlag="TightMuons_dRUp") thistoolTight_dRUp.MatchToTight = True thistoolTight_dRUp.IsNominal = False thistoolTight_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Tight") #thistoolTight_dRUp.ApplyScaleFactors = True thistoolTight_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolTight_dRUp] if doHighPt: thistoolHighPt = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_HighPt" % name_suffix, EffiFlag="HighPtMuons") thistoolHighPt.MatchToHighPt = True thistoolHighPt.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Tight") # UPDATE when SF available for high pt thistoolHighPt.ApplyScaleFactors = doClosure #thistoolHighPt.ApplyScaleFactors = True thistoolHighPt.MaximumDrCut = MATCH_DR MatchingTools += [thistoolHighPt] if doDRSys: thistoolHighPt_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_HighPt_dRDown" % name_suffix, EffiFlag="HighPtMuons_dRDown") thistoolHighPt_dRDown.MatchToHighPt = True thistoolHighPt_dRDown.IsNominal = False thistoolHighPt_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "HighPt") # UPDATE when SF available for high pt #thistoolHighPt_dRDown.ApplyScaleFactors = True thistoolHighPt_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolHighPt_dRDown] thistoolHighPt_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_HighPt_dRUp" % name_suffix, EffiFlag="HighPtMuons_dRUp") thistoolHighPt_dRUp.MatchToHighPt = True thistoolHighPt_dRUp.IsNominal = False thistoolHighPt_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Tight") # UPDATE when SF available for high pt #thistoolHighPt_dRUp.ApplyScaleFactors = True thistoolHighPt_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolHighPt_dRUp] if doStandalone: thistoolSA = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_SA" % name_suffix, EffiFlag="StandaloneMuons") thistoolSA.MatchToAnyMS = True thistoolSA.IDhitCut = False thistoolSA.ApplyScaleFactors = doClosure thistoolSA.MaximumDrCut = MATCH_DR MatchingTools += [thistoolSA] if doDRSys: thistoolSA_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_SA_dRDown" % name_suffix, EffiFlag="StandaloneMuons_dRDown") thistoolSA_dRDown.MatchToAnyMS = True thistoolSA_dRDown.IDhitCut = False thistoolSA_dRDown.IsNominal = False thistoolSA_dRDown.ApplyScaleFactors = doClosure thistoolSA_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolSA_dRDown] thistoolSA_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_SA_dRUp" % name_suffix, EffiFlag="StandaloneMuons_dRUp") thistoolSA_dRUp.MatchToAnyMS = True thistoolSA_dRUp.IDhitCut = False thistoolSA_dRUp.IsNominal = False thistoolSA_dRUp.ApplyScaleFactors = doClosure thistoolSA_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolSA_dRUp] if doCaloTag: thistoolCT = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CT" % name_suffix, EffiFlag="CaloTaggedMuons") thistoolCT.MatchToCaloTag = True thistoolCT.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") thistoolCT.ApplyScaleFactors = doClosure #thistoolCT.ApplyScaleFactors = True thistoolCT.MaximumDrCut = MATCH_DR MatchingTools += [thistoolCT] if doDRSys: thistoolCT_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CT_dRDown" % name_suffix, EffiFlag="CaloTaggedMuons_dRDown") thistoolCT_dRDown.MatchToCaloTag = True thistoolCT_dRDown.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolCT_dRDown.ApplyScaleFactors = True thistoolCT_dRDown.IsNominal = False thistoolCT_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolCT_dRDown] thistoolCT_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_CT_dRUp" % name_suffix, EffiFlag="CaloTaggedMuons_dRUp") thistoolCT_dRUp.MatchToCaloTag = True thistoolCT_dRUp.ScaleFactorTool = CommonMuonTPConfig.AddMuonEfficiencyScaleFactors( "Loose") #thistoolCT_dRUp.ApplyScaleFactors = True thistoolCT_dRUp.IsNominal = False thistoolCT_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolCT_dRUp] if doID: thistoolID = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_ID" % name_suffix, EffiFlag="IDTracks") thistoolID.MatchToID = True thistoolID.ApplyScaleFactors = doClosure thistoolID.MaximumDrCut = MATCH_DR MatchingTools += [thistoolID] if doDRSys: thistoolID_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_ID_dRUp" % name_suffix, EffiFlag="IDTracks_dRUp") thistoolID_dRUp.MatchToID = True thistoolID_dRUp.ApplyScaleFactors = doClosure thistoolID_dRUp.MaximumDrCut = 2 * MATCH_DR thistoolID_dRUp.IsNominal = False MatchingTools += [thistoolID_dRUp] thistoolID_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_ID_dRDown" % name_suffix, EffiFlag="IDTracks_dRDown") thistoolID_dRDown.MatchToID = True thistoolID_dRDown.ApplyScaleFactors = doClosure thistoolID_dRDown.MaximumDrCut = 0.5 * MATCH_DR thistoolID_dRDown.IsNominal = False MatchingTools += [thistoolID_dRDown] #thistoolID_noMCPcuts = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="ZmumuTPEfficiencyTool_%s_ID_noMCP"%name_suffix,EffiFlag="IDTracks_noMCP") #thistoolID_noMCPcuts.MatchToID = True #thistoolID_noMCPcuts.IDhitCut = False #thistoolID_noMCPcuts.ApplyScaleFactors = doClosure #thistoolID_noMCPcuts.MaximumDrCut = MATCH_DR #MatchingTools += [thistoolID_noMCPcuts] #if doDRSys: #thistoolID_noMCPcuts_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="ZmumuTPEfficiencyTool_%s_ID_noMCP_dRUp"%name_suffix,EffiFlag="IDTracks_noMCP_dRUp") #thistoolID_noMCPcuts_dRUp.MatchToID = True #thistoolID_noMCPcuts_dRUp.ApplyScaleFactors = doClosure #thistoolID_noMCPcuts_dRUp.MaximumDrCut = 2 * MATCH_DR #MatchingTools += [thistoolID_noMCPcuts_dRUp] #thistoolID_noMCPcuts_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool(name="ZmumuTPEfficiencyTool_%s_ID_noMCP_dRDown"%name_suffix,EffiFlag="IDTracks_noMCP_dRDown") #thistoolID_noMCPcuts_dRDown.MatchToID = True #thistoolID_noMCPcuts_dRDown.ApplyScaleFactors = doClosure #thistoolID_noMCPcuts_dRDown.MaximumDrCut = 0.5 * MATCH_DR #MatchingTools += [thistoolID_noMCPcuts_dRDown] if doIndividualAuthors: thistoolMuidCB = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidCB" % name_suffix, EffiFlag="MuidCB") thistoolMuidCB.MatchToMuidCB = True thistoolMuidCB.ApplyScaleFactors = doClosure thistoolMuidCB.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMuidCB] if doDRSys: thistoolMuidCB_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidCB_dRDown" % name_suffix, EffiFlag="MuidCB_dRDown") thistoolMuidCB_dRDown.MatchToMuidCB = True thistoolMuidCB_dRDown.ApplyScaleFactors = doClosure thistoolMuidCB_dRDown.MaximumDrCut = 0.5 * MATCH_DR thistoolMuidCB_dRDown.IsNominal = False MatchingTools += [thistoolMuidCB_dRDown] thistoolMuidCB_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidCB_dRUp" % name_suffix, EffiFlag="MuidCB_dRUp") thistoolMuidCB_dRUp.MatchToMuidCB = True thistoolMuidCB_dRUp.ApplyScaleFactors = doClosure thistoolMuidCB_dRUp.MaximumDrCut = 2 * MATCH_DR thistoolMuidCB_dRUp.IsNominal = False MatchingTools += [thistoolMuidCB_dRUp] thistoolSTACO = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_STACO" % name_suffix, EffiFlag="STACO") thistoolSTACO.MatchToSTACO = True thistoolSTACO.ApplyScaleFactors = doClosure thistoolSTACO.MaximumDrCut = MATCH_DR MatchingTools += [thistoolSTACO] if doDRSys: thistoolSTACO_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_STACO_dRDown" % name_suffix, EffiFlag="STACO_dRDown") thistoolSTACO_dRDown.MatchToSTACO = True thistoolSTACO_dRDown.ApplyScaleFactors = doClosure thistoolSTACO_dRDown.IsNominal = False thistoolSTACO_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolSTACO_dRDown] thistoolSTACO_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_STACO_dRUp" % name_suffix, EffiFlag="STACO_dRUp") thistoolSTACO_dRUp.MatchToSTACO = True thistoolSTACO_dRUp.ApplyScaleFactors = doClosure thistoolSTACO_dRUp.IsNominal = False thistoolSTACO_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolSTACO_dRUp] thistoolMuTag = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTag" % name_suffix, EffiFlag="MuTag") thistoolMuTag.MatchToMuTag = True thistoolMuTag.ApplyScaleFactors = doClosure thistoolMuTag.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMuTag] if doDRSys: thistoolMuTag_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTag_dRDown" % name_suffix, EffiFlag="MuTag_dRDown") thistoolMuTag_dRDown.MatchToMuTag = True thistoolMuTag_dRDown.ApplyScaleFactors = doClosure thistoolMuTag_dRDown.IsNominal = False thistoolMuTag_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolMuTag_dRDown] thistoolMuTag_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTag_dRUp" % name_suffix, EffiFlag="MuTag_dRUp") thistoolMuTag_dRUp.MatchToMuTag = True thistoolMuTag_dRUp.ApplyScaleFactors = doClosure thistoolMuTag_dRUp.IsNominal = False thistoolMuTag_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMuTag_dRUp] thistoolMuTagIMO = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTagIMO" % name_suffix, EffiFlag="MuTagIMO") thistoolMuTagIMO.MatchToMuTagIMO = True thistoolMuTagIMO.ApplyScaleFactors = doClosure thistoolMuTagIMO.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMuTagIMO] if doDRSys: thistoolMuTagIMO_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTagIMO_dRDown" % name_suffix, EffiFlag="MuTagIMO_dRDown") thistoolMuTagIMO_dRDown.MatchToMuTagIMO = True thistoolMuTagIMO_dRDown.ApplyScaleFactors = doClosure thistoolMuTagIMO_dRDown.IsNominal = False thistoolMuTagIMO_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolMuTagIMO_dRDown] thistoolMuTagIMO_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuTagIMO_dRUp" % name_suffix, EffiFlag="MuTagIMO_dRUp") thistoolMuTagIMO_dRUp.MatchToMuTagIMO = True thistoolMuTagIMO_dRUp.ApplyScaleFactors = doClosure thistoolMuTagIMO_dRUp.IsNominal = False thistoolMuTagIMO_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMuTagIMO_dRUp] thistoolMuidSA = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidSA" % name_suffix, EffiFlag="MuidSA") thistoolMuidSA.MatchToMuidSA = True thistoolMuidSA.ApplyScaleFactors = doClosure thistoolMuidSA.IDhitCut = False thistoolMuidSA.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMuidSA] if doDRSys: thistoolMuidSA_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidSA_dRDown" % name_suffix, EffiFlag="MuidSA_dRDown") thistoolMuidSA_dRDown.MatchToMuidSA = True thistoolMuidSA_dRDown.ApplyScaleFactors = doClosure thistoolMuidSA_dRDown.IsNominal = False thistoolMuidSA_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolMuidSA_dRDown] thistoolMuidSA_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidSA_dRUp" % name_suffix, EffiFlag="MuidSA_dRUp") thistoolMuidSA_dRUp.MatchToMuidSA = True thistoolMuidSA_dRUp.ApplyScaleFactors = doClosure thistoolMuidSA_dRUp.IsNominal = False thistoolMuidSA_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMuidSA_dRUp] thistoolMuGirl = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidGirl" % name_suffix, EffiFlag="MuGirl") thistoolMuGirl.MatchToMuGirl = True thistoolMuGirl.ApplyScaleFactors = doClosure thistoolMuGirl.MaximumDrCut = MATCH_DR MatchingTools += [thistoolMuGirl] if doDRSys: thistoolMuGirl_dRDown = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidGirl_dRDown" % name_suffix, EffiFlag="MuGirl_dRDown") thistoolMuGirl_dRDown.MatchToMuGirl = True thistoolMuGirl_dRDown.ApplyScaleFactors = doClosure thistoolMuGirl_dRDown.IsNominal = False thistoolMuGirl_dRDown.MaximumDrCut = 0.5 * MATCH_DR MatchingTools += [thistoolMuGirl_dRDown] thistoolMuGirl_dRUp = CommonMuonTPConfig.AddMuonRecoTPEfficiencyTool( name="ZmumuTPEfficiencyTool_%s_MuidGirl_dRUp" % name_suffix, EffiFlag="MuGirl_dRUp") thistoolMuGirl_dRUp.MatchToMuGirl = True thistoolMuGirl_dRUp.IsNominal = False thistoolMuGirl_dRUp.ApplyScaleFactors = doClosure thistoolMuGirl_dRUp.MaximumDrCut = 2 * MATCH_DR MatchingTools += [thistoolMuGirl_dRUp] ntuples = [] if writeNtuple: ntuples.append( CommonMuonTPConfig.AddTreeTool(name="ZmumuTPTreeTool_%s" % name_suffix, EffiFlag="Trees", WriteSFInfo=doClosure)) # create the TP tool itself TheTPTool = CommonMuonTPConfig.AddMuonTPTool(name="ZmumuTPTool_%s" % name_suffix, EffiFlag=name_suffix) TheTPTool.MuonTPSelectionTools = SelectionTools TheTPTool.PlottingTools = PlotTools TheTPTool.MuonTPEfficiencyTools = MatchingTools TheTPTool.TreeTools = ntuples theAlg.MuonTPTools += [TheTPTool]