From b4ef5022d6184d920eae92cf763b1242594b56b4 Mon Sep 17 00:00:00 2001 From: chengw <cheng.wang@cern.ch> Date: Wed, 12 Mar 2025 22:49:47 +0800 Subject: [PATCH 1/5] < Ap Run2 MC XicpToPHH > --- run2_MC_XicpToPHH/XicpToPKK_MC.py | 242 ++++++++++++++++++++++++++ run2_MC_XicpToPHH/XicpToPKmPip_MC.py | 244 +++++++++++++++++++++++++++ run2_MC_XicpToPHH/XicpToPPiPi_MC.py | 243 ++++++++++++++++++++++++++ run2_MC_XicpToPHH/info.yaml | 36 ++++ 4 files changed, 765 insertions(+) create mode 100644 run2_MC_XicpToPHH/XicpToPKK_MC.py create mode 100644 run2_MC_XicpToPHH/XicpToPKmPip_MC.py create mode 100644 run2_MC_XicpToPHH/XicpToPPiPi_MC.py create mode 100644 run2_MC_XicpToPHH/info.yaml diff --git a/run2_MC_XicpToPHH/XicpToPKK_MC.py b/run2_MC_XicpToPHH/XicpToPKK_MC.py new file mode 100644 index 0000000000..b34b362316 --- /dev/null +++ b/run2_MC_XicpToPHH/XicpToPKK_MC.py @@ -0,0 +1,242 @@ +import GaudiKernel.SystemOfUnits as Units +from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond, mm, mrad +from Gaudi.Configuration import * + +from Configurables import DaVinci +from Configurables import CombineParticles, DecayTreeTuple +from Configurables import TupleToolDecay, TupleToolPrimaries +from Configurables import TupleToolGeometry, TupleToolKinematic, TupleToolPropertime, TupleToolPrimaries, TupleToolPid, TupleToolEventInfo, TupleToolTrackInfo, TupleToolRecoStats, TupleToolTrigger +from Configurables import TupleToolTISTOS, L0TriggerTisTos, TriggerTisTos +from Configurables import LoKi__Hybrid__TupleTool +from Configurables import LoKi__Hybrid__TupleTool as LoKiTupleTool +from Configurables import FilterDesktop +from Configurables import CondDB, CheckPV, TupleToolDecayTreeFitter +from Configurables import FilterInTrees + +from DecayTreeTuple.Configuration import * +from PhysConf.Selections import CombineSelection, FilterSelection, RebuildSelection +from PhysConf.Selections import SelectionSequence, StrippingSelection +from PhysSelPython.Wrappers import AutomaticData, Selection, MergedSelection +from PhysSelPython.Wrappers import SelectionSequence, DataOnDemand, TupleSelection + +from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth +from TeslaTools import TeslaTruthUtils + +isSimulation = DaVinci().Simulation +#tool list +TupleToolList = [ + "TupleToolGeometry", + "TupleToolKinematic", + "TupleToolPrimaries", + "TupleToolPid", + "TupleToolEventInfo", + "TupleToolTrackInfo", + "TupleToolBremInfo", + "TupleToolRecoStats", + "TupleToolTISTOS", + "TupleToolTrigger", + "TupleToolAngles", + "TupleToolPropertime", + "TupleToolTrackPosition", + "TupleToolANNPID" + ] + +#trigger list +TriggerList = [ + # L0 + "L0ElectronDecision", + "L0HadronDecision", + "L0MuonDecision", + "L0MuonLooseDecision", + "L0MuonEWDecision", + "L0MuonHighDecision", + "L0PhysDecision", + "L0PhotonDecision", + "L0DiMuonDecision", + "L0GlobalDecision", + "L0ElectronHiDecision", + "L0DiElectronDecision", + "L0DiHadronDecision", + # HLT1 + "Hlt1TrackAllL0Decision", + "Hlt1TrackPhotonDecision", + "Hlt1GlobalDecision", + "Hlt1TrackMVADecision", + "Hlt1TwoTrackMVADecision", + "Hlt1TrackMVALooseDecision", + "Hlt1TwoTrackMVALooseDecision", + "Hlt1L0AnyDecision", + "Hlt1TrackMVATightDecision", + "Hlt1TwoTrackMVATightDecision", + + 'Hlt1TrackMuonDecision', + 'Hlt1TrackMuonMVADecision', + 'Hlt1DiMuonHighMassDecision', + 'Hlt1DiMuonLowMassDecision', + 'Hlt1SingleMuonHighPTDecision', + 'Hlt1DiMuonNoL0Decision', + 'Hlt1CalibMuonAlignJpsiDecision', + 'Hlt1DiMuonNoIPDecision', + 'Hlt1DiMuonNoIPSSDecision', + 'Hlt1LowMultMuonDecision', + 'Hlt1MultiDiMuonNoIPDecision', + 'Hlt1MultiMuonNoL0Decision', + 'Hlt1SingleMuonHighPTNoMUIDDecision', + 'Hlt1SingleMuonNoIPDecision', + # HLT2 + 'Hlt2Topo2BodyDecision', + 'Hlt2TopoE2BodyDecision', + "Hlt2Topo3BodyDecision", + "Hlt2Topo4BodyDecision", + "Hlt2IncPhiDecision", + "Hlt2Topo.*Decision", + "Hlt2PhysDecision", + ] + +################################################################################ +LoKi_particle = LoKi__Hybrid__TupleTool("LoKi_particle") +LoKi_particle.Variables = { + "Y" : "Y", + "ETA" : "ETA", + "PHI" : "PHI", + "LOKI_FDCHI2" : "BPVVDCHI2", + "LOKI_FDS" : "BPVDLS", + "LOKI_DIRA" : "BPVDIRA", + "LV01" : "LV01", + "LV02" : "LV02", + "DOCA" : "DOCA(1,2)", + "LOKI_BPVCORRM" : "BPVCORRM", + "LOKI_IPCHI2" : "BPVIPCHI2()", + "LOKI_BPVLTIME" : "BPVLTIME()" +} +LoKi_Xicp2PHH=LoKi__Hybrid__TupleTool("LoKi_Xicp2PHH") +LoKi_Xicp2PHH.Variables = { + 'DOCACHI2_p_h1' : 'DOCACHI2(1,2)', + 'DOCACHI2_p_h2' : 'DOCACHI2(1,3)', + 'DOCACHI2_h1_h2' : 'DOCACHI2(2,3)', + 'DOCA_p_h1' : 'DOCA(1,2)', + 'DOCA_p_h2' : 'DOCA(1,3)', + 'DOCA_h1_h2' : 'DOCA(2,3)', + 'MASS_p_h1' : 'MASS(1,2)', + 'MASS_p_h2' : 'MASS(1,3)', + 'MASS_h1_h2' : 'MASS(2,3)', + } + + +################################################################################ +line_XicpToPKK = "Xic2PHHXicp2PKKLine" + +from PhysConf.Selections import AutomaticData +Input_XicpToPKK = AutomaticData( Location = "Phys/{0}/Particles".format(line_XicpToPKK)) + +from PhysConf.Selections import TupleSelection +XicpToPKK_decay = '[Xi_c+ -> ^p+ ^K+ ^K-]CC' +XicpToPKK_branches = { + "Xicp" : "^([Xi_c+ -> p+ K+ K-]CC)", + "proton" : "[Xi_c+ -> ^p+ K+ K-]CC", + "K1" : "[Xi_c+ -> p+ ^K+ K-]CC", + "K2" : "[Xi_c+ -> p+ K+ ^K-]CC", + } + +Tuple_XicpToPKK = TupleSelection("Tuple_XicpToPKK", [ Input_XicpToPKK ], Decay = XicpToPKK_decay, Branches = XicpToPKK_branches, ToolList = [] ) +################################################################################ +for dtt in [Tuple_XicpToPKK]: + # decay tree fitter (DTF) + dtt.addTool(TupleToolDecay, name="Xicp") + dtt.addTool(TupleToolDecay, name="proton") + dtt.addTool(TupleToolDecay, name="K1") + dtt.addTool(TupleToolDecay, name="K2") + + #LoKi VARIABLES + for particle in [dtt.Xicp,dtt.proton,dtt.K1,dtt.K2]: + particle.addTool(LoKi_particle) + particle.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_particle"] + dtt.Xicp.addTool(LoKi_Xicp2PHH) + dtt.Xicp.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_Xicp2PHH"] + #constrain: PV and Xicp + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTF') + dtt.Xicp.DTF.constrainToOriginVertex = True + dtt.Xicp.DTF.Verbose = True + dtt.Xicp.DTF.daughtersToConstrain = ["Xi_c+"] + dtt.Xicp.DTF.UpdateDaughters = True + #constrain: PV + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyPV') + dtt.Xicp.DTFonlyPV.constrainToOriginVertex = True + dtt.Xicp.DTFonlyPV.Verbose = True + dtt.Xicp.DTFonlyPV.UpdateDaughters = True + #DTF with Momentum Scaling only + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyMS') + dtt.Xicp.DTFonlyMS.Verbose = True + dtt.Xicp.DTFonlyMS.UpdateDaughters = True +################################################################################ + +for dtt in [Tuple_XicpToPKK]: + + dtt.TupleName = "ntp" + dtt.ToolList = TupleToolList + + if isSimulation: + dtt.ToolList += [ + "TupleToolMCTruth", + "TupleToolMCBackgroundInfo" + ] + dtt.TupleToolMCTruth.ToolList += ["MCTupleToolHierarchy"] + +####################################### TISTOS ################################## + dtt.TupleToolTrigger.VerboseL0 = True + dtt.TupleToolTrigger.VerboseHlt1 = True + dtt.TupleToolTrigger.VerboseHlt2 = True + dtt.TupleToolTrigger.FillHlt2 = False + dtt.TupleToolTrigger.TriggerList = TriggerList + + dtt.TupleToolTISTOS.addTool(L0TriggerTisTos()) + dtt.TupleToolTISTOS.addTool(TriggerTisTos()) + dtt.TupleToolTISTOS.VerboseL0 = True + dtt.TupleToolTISTOS.VerboseHlt1 = True + dtt.TupleToolTISTOS.VerboseHlt2 = True + dtt.TupleToolTISTOS.FillHlt2 = False + dtt.TupleToolTISTOS.TriggerList = TriggerList + +from Configurables import MCDecayTreeTuple +MCTuple = MCDecayTreeTuple("MCTruth") +MCTuple.Decay = "^[Xi_c+ => ^p+ ^K+ ^K-]CC" +MCTuple.addBranches({ + "Xicp" : "^([ Xi_c+ ==> p+ K+ K-]CC)", + "proton" : "[ Xi_c+ ==> ^p+ K+ K-]CC", + "K1" : "[ Xi_c+ ==> p+ ^K+ K-]CC", + "K2" : "[ Xi_c+ ==> p+ K+ ^K-]CC", + }) +MCTuple.ToolList += [ + "MCTupleToolKinematic" + ,"MCTupleToolPrimaries" + ,"MCTupleToolAngles" + ,"MCTupleToolHierarchy" + ,"TupleToolRecoStats" + ,"MCTupleToolDecayType" + ,"MCTupleToolPID" + ,"MCTupleToolPrompt" + ] + + +################################################################################ +from PhysConf.Selections import SelectionSequence +seq_XicpToPKK = SelectionSequence('seq_XicpToPKK',Tuple_XicpToPKK).sequence() + +from Configurables import DataOnDemandSvc +dod = DataOnDemandSvc() + +from Configurables import Gaudi__DataLink as Link +rawEvt1 = Link ( 'LinkRawEvent1', + What = '/Event/DAQ/RawEvent' , + Target = '/Event/Trigger/RawEvent' ) +dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 +################################################################################ +DaVinci( + InputType = 'MDST' , + Lumi = not isSimulation, + Simulation = isSimulation, + Turbo = False, + UserAlgorithms = [seq_XicpToPKK,MCTuple], + RootInTES = "ALLSTREAMS" + ) + diff --git a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py new file mode 100644 index 0000000000..6844b1e37d --- /dev/null +++ b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py @@ -0,0 +1,244 @@ +import GaudiKernel.SystemOfUnits as Units +from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond, mm, mrad +from Gaudi.Configuration import * + +from Configurables import DaVinci +from Configurables import CombineParticles, DecayTreeTuple +from Configurables import TupleToolDecay, TupleToolPrimaries +from Configurables import TupleToolGeometry, TupleToolKinematic, TupleToolPropertime, TupleToolPrimaries, TupleToolPid, TupleToolEventInfo, TupleToolTrackInfo, TupleToolRecoStats, TupleToolTrigger +from Configurables import TupleToolTISTOS, L0TriggerTisTos, TriggerTisTos +from Configurables import LoKi__Hybrid__TupleTool +from Configurables import LoKi__Hybrid__TupleTool as LoKiTupleTool +from Configurables import FilterDesktop +from Configurables import CondDB, CheckPV, TupleToolDecayTreeFitter +from Configurables import FilterInTrees + +from DecayTreeTuple.Configuration import * +from PhysConf.Selections import CombineSelection, FilterSelection, RebuildSelection +from PhysConf.Selections import SelectionSequence, StrippingSelection +from PhysSelPython.Wrappers import AutomaticData, Selection, MergedSelection +from PhysSelPython.Wrappers import SelectionSequence, DataOnDemand, TupleSelection + +from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth +from TeslaTools import TeslaTruthUtils + +isSimulation = DaVinci().Simulation +#tool list +TupleToolList = [ + "TupleToolGeometry", + "TupleToolKinematic", + "TupleToolPrimaries", + "TupleToolPid", + "TupleToolEventInfo", + "TupleToolTrackInfo", + "TupleToolBremInfo", + "TupleToolRecoStats", + "TupleToolTISTOS", + "TupleToolTrigger", + "TupleToolAngles", + "TupleToolPropertime", + "TupleToolTrackPosition", + "TupleToolANNPID" + ] + +#trigger list +TriggerList = [ + # L0 + "L0ElectronDecision", + "L0HadronDecision", + "L0MuonDecision", + "L0MuonLooseDecision", + "L0MuonEWDecision", + "L0MuonHighDecision", + "L0PhysDecision", + "L0PhotonDecision", + "L0DiMuonDecision", + "L0GlobalDecision", + "L0ElectronHiDecision", + "L0DiElectronDecision", + "L0DiHadronDecision", + # HLT1 + "Hlt1TrackAllL0Decision", + "Hlt1TrackPhotonDecision", + "Hlt1GlobalDecision", + "Hlt1TrackMVADecision", + "Hlt1TwoTrackMVADecision", + "Hlt1TrackMVALooseDecision", + "Hlt1TwoTrackMVALooseDecision", + "Hlt1L0AnyDecision", + "Hlt1TrackMVATightDecision", + "Hlt1TwoTrackMVATightDecision", + + 'Hlt1TrackMuonDecision', + 'Hlt1TrackMuonMVADecision', + 'Hlt1DiMuonHighMassDecision', + 'Hlt1DiMuonLowMassDecision', + 'Hlt1SingleMuonHighPTDecision', + 'Hlt1DiMuonNoL0Decision', + 'Hlt1CalibMuonAlignJpsiDecision', + 'Hlt1DiMuonNoIPDecision', + 'Hlt1DiMuonNoIPSSDecision', + 'Hlt1LowMultMuonDecision', + 'Hlt1MultiDiMuonNoIPDecision', + 'Hlt1MultiMuonNoL0Decision', + 'Hlt1SingleMuonHighPTNoMUIDDecision', + 'Hlt1SingleMuonNoIPDecision', + # HLT2 + 'Hlt2Topo2BodyDecision', + 'Hlt2TopoE2BodyDecision', + "Hlt2Topo3BodyDecision", + "Hlt2Topo4BodyDecision", + "Hlt2IncPhiDecision", + "Hlt2Topo.*Decision", + "Hlt2PhysDecision", + ] + +################################################################################ +LoKi_particle = LoKi__Hybrid__TupleTool("LoKi_particle") +LoKi_particle.Variables = { + "Y" : "Y", + "ETA" : "ETA", + "PHI" : "PHI", + "LOKI_FDCHI2" : "BPVVDCHI2", + "LOKI_FDS" : "BPVDLS", + "LOKI_DIRA" : "BPVDIRA", + "LV01" : "LV01", + "LV02" : "LV02", + "DOCA" : "DOCA(1,2)", + "LOKI_BPVCORRM" : "BPVCORRM", + "LOKI_IPCHI2" : "BPVIPCHI2()", + "LOKI_BPVLTIME" : "BPVLTIME()" +} +LoKi_Xicp2PHH=LoKi__Hybrid__TupleTool("LoKi_Xicp2PHH") +LoKi_Xicp2PHH.Variables = { + 'DOCACHI2_p_h1' : 'DOCACHI2(1,2)', + 'DOCACHI2_p_h2' : 'DOCACHI2(1,3)', + 'DOCACHI2_h1_h2' : 'DOCACHI2(2,3)', + 'DOCA_p_h1' : 'DOCA(1,2)', + 'DOCA_p_h2' : 'DOCA(1,3)', + 'DOCA_h1_h2' : 'DOCA(2,3)', + 'MASS_p_h1' : 'MASS(1,2)', + 'MASS_p_h2' : 'MASS(1,3)', + 'MASS_h1_h2' : 'MASS(2,3)', + } + + +################################################################################ +line_XicpToPKmPip = "Hlt2CharmHadXicpToPpKmPipTurbo" + +from PhysConf.Selections import AutomaticData +Input_XicpToPKmPip = AutomaticData( Location = "{0}/Particles".format(line_XicpToPKmPip)) + +################################################################################ +from PhysConf.Selections import TupleSelection +# The definition of the line named Hlt2CharmHadXicpToPpKmPipTurbo is [Lambda_c+ -> ^p+ ^K- ^pi+] during 2016-2018. But it is still a proper Xi_c+. +XicpToPKmPip_decay = '[Lambda_c+ -> ^p+ ^K- ^pi+]CC' + +XicpToPKmPip_branches = { + "Xicp" : "^([Lambda_c+ -> p+ K- pi+]CC)", + "Pp" : "[Lambda_c+ -> ^p+ K- pi+]CC", + "Km" : "[Lambda_c+ -> p+ ^K- pi+]CC", + "Pip" : "[Lambda_c+ -> p+ K- ^pi+]CC", + } + +Tuple_XicpToPKmPip = TupleSelection("Tuple_XicpToPKmPip", [ Input_XicpToPKmPip ], Decay = XicpToPKmPip_decay, Branches = XicpToPKmPip_branches, ToolList = [] ) +################################################################################ +for dtt in [Tuple_XicpToPKmPip]: + # decay tree fitter (DTF) + dtt.addTool(TupleToolDecay, name="Xicp") + dtt.addTool(TupleToolDecay, name="Pp") + dtt.addTool(TupleToolDecay, name="Km") + dtt.addTool(TupleToolDecay, name="Pip") + + #LoKi VARIABLES + for particle in [dtt.Xicp,dtt.Pp,dtt.Km,dtt.Pip]: + particle.addTool(LoKi_particle) + particle.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_particle"] + dtt.Xicp.addTool(LoKi_Xicp2PHH) + dtt.Xicp.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_Xicp2PHH"] + #constrain: PV and Xicp + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTF') + dtt.Xicp.DTF.constrainToOriginVertex = True + dtt.Xicp.DTF.Verbose = True + dtt.Xicp.DTF.daughtersToConstrain = ["Lambda_c+"] + dtt.Xicp.DTF.UpdateDaughters = True + #constrain: PV + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyPV') + dtt.Xicp.DTFonlyPV.constrainToOriginVertex = True + dtt.Xicp.DTFonlyPV.Verbose = True + dtt.Xicp.DTFonlyPV.UpdateDaughters = True + #DTF with Momentum Scaling only + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyMS') + dtt.Xicp.DTFonlyMS.Verbose = True + dtt.Xicp.DTFonlyMS.UpdateDaughters = True + +for dtt in [Tuple_XicpToPKmPip]: + + dtt.TupleName = "ntp" + dtt.ToolList = TupleToolList + + if isSimulation: + dtt.ToolList += [ + "TupleToolMCTruth", + "TupleToolMCBackgroundInfo" + ] + dtt.TupleToolMCTruth.ToolList += ["MCTupleToolHierarchy"] + +####################################### TISTOS ################################## + dtt.TupleToolTrigger.VerboseL0 = True + dtt.TupleToolTrigger.VerboseHlt1 = True + dtt.TupleToolTrigger.VerboseHlt2 = True + dtt.TupleToolTrigger.FillHlt2 = False + dtt.TupleToolTrigger.TriggerList = TriggerList + + dtt.TupleToolTISTOS.addTool(L0TriggerTisTos()) + dtt.TupleToolTISTOS.addTool(TriggerTisTos()) + dtt.TupleToolTISTOS.VerboseL0 = True + dtt.TupleToolTISTOS.VerboseHlt1 = True + dtt.TupleToolTISTOS.VerboseHlt2 = True + dtt.TupleToolTISTOS.FillHlt2 = False + dtt.TupleToolTISTOS.TriggerList = TriggerList + +from Configurables import MCDecayTreeTuple +MCTuple = MCDecayTreeTuple("MCTruth") +MCTuple.Decay = "^[Lambda_c+ => ^p+ ^K- ^pi+]CC" +MCTuple.addBranches({ + "Xicp" : "^([ Lambda_c+ ==> p+ K- pi+]CC)", + "Pp" : "[ Lambda_c+ ==> ^p+ K- pi+]CC", + "Km" : "[ Lambda_c+ ==> p+ ^K- pi+]CC", + "Pip" : "[ Lambda_c+ ==> p+ K- ^pi+]CC", + }) +MCTuple.ToolList += [ + "MCTupleToolKinematic" + ,"MCTupleToolPrimaries" + ,"MCTupleToolAngles" + ,"MCTupleToolHierarchy" + ,"TupleToolRecoStats" + ,"MCTupleToolDecayType" + ,"MCTupleToolPID" + ,"MCTupleToolPrompt" + ] + + +################################################################################ +from PhysConf.Selections import SelectionSequence +seq_XicpToPKmPip = SelectionSequence('seq_XicpToPKmPip',Tuple_XicpToPKmPip).sequence() + +from Configurables import DataOnDemandSvc +dod = DataOnDemandSvc() + +from Configurables import Gaudi__DataLink as Link +rawEvt1 = Link ( 'LinkRawEvent1', + What = '/Event/DAQ/RawEvent' , + Target = '/Event/Trigger/RawEvent' ) +dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 +################################################################################ +DaVinci( + InputType = 'MDST' , + Lumi = not isSimulation, + Simulation = isSimulation, + UserAlgorithms = [seq_XicpToPKmPip,MCTuple], + Turbo = True, + RootInTES = "ALLSTREAMS" + ) + diff --git a/run2_MC_XicpToPHH/XicpToPPiPi_MC.py b/run2_MC_XicpToPHH/XicpToPPiPi_MC.py new file mode 100644 index 0000000000..3b7b243210 --- /dev/null +++ b/run2_MC_XicpToPHH/XicpToPPiPi_MC.py @@ -0,0 +1,243 @@ +import GaudiKernel.SystemOfUnits as Units +from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond, mm, mrad +from Gaudi.Configuration import * + +from Configurables import DaVinci +from Configurables import CombineParticles, DecayTreeTuple +from Configurables import TupleToolDecay, TupleToolPrimaries +from Configurables import TupleToolGeometry, TupleToolKinematic, TupleToolPropertime, TupleToolPrimaries, TupleToolPid, TupleToolEventInfo, TupleToolTrackInfo, TupleToolRecoStats, TupleToolTrigger +from Configurables import TupleToolTISTOS, L0TriggerTisTos, TriggerTisTos +from Configurables import LoKi__Hybrid__TupleTool +from Configurables import LoKi__Hybrid__TupleTool as LoKiTupleTool +from Configurables import FilterDesktop +from Configurables import CondDB, CheckPV, TupleToolDecayTreeFitter +from Configurables import FilterInTrees + +from DecayTreeTuple.Configuration import * +from PhysConf.Selections import CombineSelection, FilterSelection, RebuildSelection +from PhysConf.Selections import SelectionSequence, StrippingSelection +from PhysSelPython.Wrappers import AutomaticData, Selection, MergedSelection +from PhysSelPython.Wrappers import SelectionSequence, DataOnDemand, TupleSelection + +from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth +from TeslaTools import TeslaTruthUtils + +isSimulation = DaVinci().Simulation +#tool list +TupleToolList = [ + "TupleToolGeometry", + "TupleToolKinematic", + "TupleToolPrimaries", + "TupleToolPid", + "TupleToolEventInfo", + "TupleToolTrackInfo", + "TupleToolBremInfo", + "TupleToolRecoStats", + "TupleToolTISTOS", + "TupleToolTrigger", + "TupleToolAngles", + "TupleToolPropertime", + "TupleToolTrackPosition", + "TupleToolANNPID" + ] + +#trigger list +TriggerList = [ + # L0 + "L0ElectronDecision", + "L0HadronDecision", + "L0MuonDecision", + "L0MuonLooseDecision", + "L0MuonEWDecision", + "L0MuonHighDecision", + "L0PhysDecision", + "L0PhotonDecision", + "L0DiMuonDecision", + "L0GlobalDecision", + "L0ElectronHiDecision", + "L0DiElectronDecision", + "L0DiHadronDecision", + # HLT1 + "Hlt1TrackAllL0Decision", + "Hlt1TrackPhotonDecision", + "Hlt1GlobalDecision", + "Hlt1TrackMVADecision", + "Hlt1TwoTrackMVADecision", + "Hlt1TrackMVALooseDecision", + "Hlt1TwoTrackMVALooseDecision", + "Hlt1L0AnyDecision", + "Hlt1TrackMVATightDecision", + "Hlt1TwoTrackMVATightDecision", + + 'Hlt1TrackMuonDecision', + 'Hlt1TrackMuonMVADecision', + 'Hlt1DiMuonHighMassDecision', + 'Hlt1DiMuonLowMassDecision', + 'Hlt1SingleMuonHighPTDecision', + 'Hlt1DiMuonNoL0Decision', + 'Hlt1CalibMuonAlignJpsiDecision', + 'Hlt1DiMuonNoIPDecision', + 'Hlt1DiMuonNoIPSSDecision', + 'Hlt1LowMultMuonDecision', + 'Hlt1MultiDiMuonNoIPDecision', + 'Hlt1MultiMuonNoL0Decision', + 'Hlt1SingleMuonHighPTNoMUIDDecision', + 'Hlt1SingleMuonNoIPDecision', + # HLT2 + 'Hlt2Topo2BodyDecision', + 'Hlt2TopoE2BodyDecision', + "Hlt2Topo3BodyDecision", + "Hlt2Topo4BodyDecision", + "Hlt2IncPhiDecision", + "Hlt2Topo.*Decision", + "Hlt2PhysDecision", + ] + +################################################################################ +LoKi_particle = LoKi__Hybrid__TupleTool("LoKi_particle") +LoKi_particle.Variables = { + "Y" : "Y", + "ETA" : "ETA", + "PHI" : "PHI", + "LOKI_FDCHI2" : "BPVVDCHI2", + "LOKI_FDS" : "BPVDLS", + "LOKI_DIRA" : "BPVDIRA", + "LV01" : "LV01", + "LV02" : "LV02", + "DOCA" : "DOCA(1,2)", + "LOKI_BPVCORRM" : "BPVCORRM", + "LOKI_IPCHI2" : "BPVIPCHI2()", + "LOKI_BPVLTIME" : "BPVLTIME()" +} +LoKi_Xicp2PHH=LoKi__Hybrid__TupleTool("LoKi_Xicp2PHH") +LoKi_Xicp2PHH.Variables = { + 'DOCACHI2_p_h1' : 'DOCACHI2(1,2)', + 'DOCACHI2_p_h2' : 'DOCACHI2(1,3)', + 'DOCACHI2_h1_h2' : 'DOCACHI2(2,3)', + 'DOCA_p_h1' : 'DOCA(1,2)', + 'DOCA_p_h2' : 'DOCA(1,3)', + 'DOCA_h1_h2' : 'DOCA(2,3)', + 'MASS_p_h1' : 'MASS(1,2)', + 'MASS_p_h2' : 'MASS(1,3)', + 'MASS_h1_h2' : 'MASS(2,3)', + } + + +################################################################################ +line_XicpToPPiPi = "Xic2PHHXicp2PPiPiLine" + +from PhysConf.Selections import AutomaticData +Input_XicpToPPiPi = AutomaticData( Location = "Phys/{0}/Particles".format(line_XicpToPPiPi)) + +################################################################################ +from PhysConf.Selections import TupleSelection +XicpToPPiPi_decay = '[Xi_c+ -> ^p+ ^pi+ ^pi-]CC' +XicpToPPiPi_branches = { + "Xicp" : "^([Xi_c+ -> p+ pi+ pi-]CC)", + "proton" : "[Xi_c+ -> ^p+ pi+ pi-]CC", + "pi1" : "[Xi_c+ -> p+ ^pi+ pi-]CC", + "pi2" : "[Xi_c+ -> p+ pi+ ^pi-]CC", + } + +Tuple_XicpToPPiPi = TupleSelection("Tuple_XicpToPPiPi", [ Input_XicpToPPiPi ], Decay = XicpToPPiPi_decay, Branches = XicpToPPiPi_branches, ToolList = [] ) +################################################################################ +for dtt in [Tuple_XicpToPPiPi]: + # decay tree fitter (DTF) + dtt.addTool(TupleToolDecay, name="Xicp") + dtt.addTool(TupleToolDecay, name="proton") + dtt.addTool(TupleToolDecay, name="pi1") + dtt.addTool(TupleToolDecay, name="pi2") + + #LoKi VARIABLES + for particle in [dtt.Xicp,dtt.proton,dtt.pi1,dtt.pi2]: + particle.addTool(LoKi_particle) + particle.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_particle"] + dtt.Xicp.addTool(LoKi_Xicp2PHH) + dtt.Xicp.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_Xicp2PHH"] + #constrain: PV and Xicp + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTF') + dtt.Xicp.DTF.constrainToOriginVertex = True + dtt.Xicp.DTF.Verbose = True + dtt.Xicp.DTF.daughtersToConstrain = ["Xi_c+"] + dtt.Xicp.DTF.UpdateDaughters = True + #constrain: PV + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyPV') + dtt.Xicp.DTFonlyPV.constrainToOriginVertex = True + dtt.Xicp.DTFonlyPV.Verbose = True + dtt.Xicp.DTFonlyPV.UpdateDaughters = True + #DTF with Momentum Scaling only + dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyMS') + dtt.Xicp.DTFonlyMS.Verbose = True + dtt.Xicp.DTFonlyMS.UpdateDaughters = True +################################################################################ + +for dtt in [Tuple_XicpToPPiPi]: + + dtt.TupleName = "ntp" + dtt.ToolList = TupleToolList + + if isSimulation: + dtt.ToolList += [ + "TupleToolMCTruth", + "TupleToolMCBackgroundInfo" + ] + dtt.TupleToolMCTruth.ToolList += ["MCTupleToolHierarchy"] + +####################################### TISTOS ################################## + dtt.TupleToolTrigger.VerboseL0 = True + dtt.TupleToolTrigger.VerboseHlt1 = True + dtt.TupleToolTrigger.VerboseHlt2 = True + dtt.TupleToolTrigger.FillHlt2 = False + dtt.TupleToolTrigger.TriggerList = TriggerList + + dtt.TupleToolTISTOS.addTool(L0TriggerTisTos()) + dtt.TupleToolTISTOS.addTool(TriggerTisTos()) + dtt.TupleToolTISTOS.VerboseL0 = True + dtt.TupleToolTISTOS.VerboseHlt1 = True + dtt.TupleToolTISTOS.VerboseHlt2 = True + dtt.TupleToolTISTOS.FillHlt2 = False + dtt.TupleToolTISTOS.TriggerList = TriggerList + +from Configurables import MCDecayTreeTuple +MCTuple = MCDecayTreeTuple("MCTruth") +MCTuple.Decay = "^[Xi_c+ => ^p+ ^pi+ ^pi-]CC" +MCTuple.addBranches({ + "Xicp" : "^([ Xi_c+ ==> p+ pi+ pi-]CC)", + "proton" : "[ Xi_c+ ==> ^p+ pi+ pi-]CC", + "pi1" : "[ Xi_c+ ==> p+ ^pi+ pi-]CC", + "pi2" : "[ Xi_c+ ==> p+ pi+ ^pi-]CC", + }) +MCTuple.ToolList += [ + "MCTupleToolKinematic" + ,"MCTupleToolPrimaries" + ,"MCTupleToolAngles" + ,"MCTupleToolHierarchy" + ,"TupleToolRecoStats" + ,"MCTupleToolDecayType" + ,"MCTupleToolPID" + ,"MCTupleToolPrompt" + ] + + +################################################################################ +from PhysConf.Selections import SelectionSequence +seq_XicpToPPiPi = SelectionSequence('seq_XicpToPPiPi',Tuple_XicpToPPiPi).sequence() + +from Configurables import DataOnDemandSvc +dod = DataOnDemandSvc() + +from Configurables import Gaudi__DataLink as Link +rawEvt1 = Link ( 'LinkRawEvent1', + What = '/Event/DAQ/RawEvent' , + Target = '/Event/Trigger/RawEvent' ) +dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 +################################################################################ +DaVinci( + InputType = 'MDST' , + Lumi = not isSimulation, + Simulation = isSimulation, + Turbo = False, + UserAlgorithms = [seq_XicpToPPiPi,MCTuple], + RootInTES = "ALLSTREAMS" + ) + diff --git a/run2_MC_XicpToPHH/info.yaml b/run2_MC_XicpToPHH/info.yaml new file mode 100644 index 0000000000..c9654d2921 --- /dev/null +++ b/run2_MC_XicpToPHH/info.yaml @@ -0,0 +1,36 @@ +defaults: + application: "DaVinci/v44r11p6" + wg: Charm + automatically_configure: true + inform: + - cheng.wang@cern.ch + +{%- set datasets_XicpToPHH_mc = [ + ('16','MagDown','XicpToPPiPi','/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('17','MagDown','XicpToPPiPi','/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('18','MagDown','XicpToPPiPi','/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('16','MagUp', 'XicpToPPiPi','/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('17','MagUp', 'XicpToPPiPi','/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('18','MagUp', 'XicpToPPiPi','/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), + ('16','MagDown','XicpToPKK', '/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('17','MagDown','XicpToPKK', '/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('18','MagDown','XicpToPKK', '/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('16','MagUp', 'XicpToPKK', '/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('17','MagUp', 'XicpToPKK', '/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('18','MagUp', 'XicpToPKK', '/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), + ('16','MagDown','XicpToPKmPip','/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('17','MagDown','XicpToPKmPip','/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('18','MagDown','XicpToPKmPip','/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('16','MagUp', 'XicpToPKmPip','/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('17','MagUp', 'XicpToPKmPip','/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('18','MagUp', 'XicpToPKmPip','/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), +]%} + +{%- for year, polarity, channel, bk in datasets_XicpToPHH_mc %} +20{{year}}_{{polarity}}_{{channel}}_MC: + input: + bk_query: {{bk}} + output: {{channel}}_MC.ROOT + options: + - {{channel}}_MC.py +{%- endfor %} -- GitLab From 22a88a991d61a5448da2dcf28d2058e07ffc2cdd Mon Sep 17 00:00:00 2001 From: chengw <cheng.wang@cern.ch> Date: Thu, 13 Mar 2025 12:08:59 +0800 Subject: [PATCH 2/5] < try to fix bug> --- run2_MC_XicpToPHH/XicpToPKK_MC.py | 3 ++- run2_MC_XicpToPHH/XicpToPKmPip_MC.py | 3 ++- run2_MC_XicpToPHH/XicpToPPiPi_MC.py | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/run2_MC_XicpToPHH/XicpToPKK_MC.py b/run2_MC_XicpToPHH/XicpToPKK_MC.py index b34b362316..4bbe6f3c81 100644 --- a/run2_MC_XicpToPHH/XicpToPKK_MC.py +++ b/run2_MC_XicpToPHH/XicpToPKK_MC.py @@ -237,6 +237,7 @@ DaVinci( Simulation = isSimulation, Turbo = False, UserAlgorithms = [seq_XicpToPKK,MCTuple], - RootInTES = "ALLSTREAMS" + #RootInTES = "ALLSTREAMS" + RootInTES = "/Event/AllStreams" ) diff --git a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py index 6844b1e37d..776905678e 100644 --- a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py +++ b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py @@ -239,6 +239,7 @@ DaVinci( Simulation = isSimulation, UserAlgorithms = [seq_XicpToPKmPip,MCTuple], Turbo = True, - RootInTES = "ALLSTREAMS" +# RootInTES = "ALLSTREAMS" + RootInTES = "/Event/AllStreams" ) diff --git a/run2_MC_XicpToPHH/XicpToPPiPi_MC.py b/run2_MC_XicpToPHH/XicpToPPiPi_MC.py index 3b7b243210..d1bb4dd30e 100644 --- a/run2_MC_XicpToPHH/XicpToPPiPi_MC.py +++ b/run2_MC_XicpToPHH/XicpToPPiPi_MC.py @@ -238,6 +238,7 @@ DaVinci( Simulation = isSimulation, Turbo = False, UserAlgorithms = [seq_XicpToPPiPi,MCTuple], - RootInTES = "ALLSTREAMS" + #RootInTES = "ALLSTREAMS" + RootInTES = "/Event/AllStreams" ) -- GitLab From a09978c5ddbb54c33afcfade69f02b816dc2ecc8 Mon Sep 17 00:00:00 2001 From: chengw <cheng.wang@cern.ch> Date: Thu, 13 Mar 2025 15:43:24 +0800 Subject: [PATCH 3/5] <Try to fix Xicp To pKmPip> --- run2_MC_XicpToPHH/XicpToPKmPip_MC.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py index 776905678e..3337a0ae9b 100644 --- a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py +++ b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py @@ -240,6 +240,7 @@ DaVinci( UserAlgorithms = [seq_XicpToPKmPip,MCTuple], Turbo = True, # RootInTES = "ALLSTREAMS" - RootInTES = "/Event/AllStreams" +# RootInTES = "/Event/AllStreams" + RootInTES = "/Event/Turbo" ) -- GitLab From 5e6529c8a1af6b92fe9aeb24bebc1997b6c242d8 Mon Sep 17 00:00:00 2001 From: chengw <cheng.wang@cern.ch> Date: Fri, 14 Mar 2025 22:26:19 +0800 Subject: [PATCH 4/5] <Try to fix XicpToPKmPip> --- run2_MC_XicpToPHH/XicpToPKmPip_MC.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py index 3337a0ae9b..c1eba83d14 100644 --- a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py +++ b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py @@ -224,14 +224,14 @@ MCTuple.ToolList += [ from PhysConf.Selections import SelectionSequence seq_XicpToPKmPip = SelectionSequence('seq_XicpToPKmPip',Tuple_XicpToPKmPip).sequence() -from Configurables import DataOnDemandSvc -dod = DataOnDemandSvc() - -from Configurables import Gaudi__DataLink as Link -rawEvt1 = Link ( 'LinkRawEvent1', - What = '/Event/DAQ/RawEvent' , - Target = '/Event/Trigger/RawEvent' ) -dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 +#from Configurables import DataOnDemandSvc +#dod = DataOnDemandSvc() +# +#from Configurables import Gaudi__DataLink as Link +#rawEvt1 = Link ( 'LinkRawEvent1', +# What = '/Event/DAQ/RawEvent' , +# Target = '/Event/Trigger/RawEvent' ) +#dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 ################################################################################ DaVinci( InputType = 'MDST' , -- GitLab From c0a19eaeea91fba81f63903aecc777eb733de25f Mon Sep 17 00:00:00 2001 From: chengw <cheng.wang@cern.ch> Date: Mon, 17 Mar 2025 14:26:54 +0800 Subject: [PATCH 5/5] Update XicpToPKmPip --- run2_MC_XicpToPHH/XicpToPKK_MC.py | 243 -------------------------- run2_MC_XicpToPHH/XicpToPKmPip_MC.py | 14 +- run2_MC_XicpToPHH/XicpToPPiPi_MC.py | 244 --------------------------- run2_MC_XicpToPHH/info.yaml | 34 ++-- 4 files changed, 14 insertions(+), 521 deletions(-) delete mode 100644 run2_MC_XicpToPHH/XicpToPKK_MC.py delete mode 100644 run2_MC_XicpToPHH/XicpToPPiPi_MC.py diff --git a/run2_MC_XicpToPHH/XicpToPKK_MC.py b/run2_MC_XicpToPHH/XicpToPKK_MC.py deleted file mode 100644 index 4bbe6f3c81..0000000000 --- a/run2_MC_XicpToPHH/XicpToPKK_MC.py +++ /dev/null @@ -1,243 +0,0 @@ -import GaudiKernel.SystemOfUnits as Units -from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond, mm, mrad -from Gaudi.Configuration import * - -from Configurables import DaVinci -from Configurables import CombineParticles, DecayTreeTuple -from Configurables import TupleToolDecay, TupleToolPrimaries -from Configurables import TupleToolGeometry, TupleToolKinematic, TupleToolPropertime, TupleToolPrimaries, TupleToolPid, TupleToolEventInfo, TupleToolTrackInfo, TupleToolRecoStats, TupleToolTrigger -from Configurables import TupleToolTISTOS, L0TriggerTisTos, TriggerTisTos -from Configurables import LoKi__Hybrid__TupleTool -from Configurables import LoKi__Hybrid__TupleTool as LoKiTupleTool -from Configurables import FilterDesktop -from Configurables import CondDB, CheckPV, TupleToolDecayTreeFitter -from Configurables import FilterInTrees - -from DecayTreeTuple.Configuration import * -from PhysConf.Selections import CombineSelection, FilterSelection, RebuildSelection -from PhysConf.Selections import SelectionSequence, StrippingSelection -from PhysSelPython.Wrappers import AutomaticData, Selection, MergedSelection -from PhysSelPython.Wrappers import SelectionSequence, DataOnDemand, TupleSelection - -from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth -from TeslaTools import TeslaTruthUtils - -isSimulation = DaVinci().Simulation -#tool list -TupleToolList = [ - "TupleToolGeometry", - "TupleToolKinematic", - "TupleToolPrimaries", - "TupleToolPid", - "TupleToolEventInfo", - "TupleToolTrackInfo", - "TupleToolBremInfo", - "TupleToolRecoStats", - "TupleToolTISTOS", - "TupleToolTrigger", - "TupleToolAngles", - "TupleToolPropertime", - "TupleToolTrackPosition", - "TupleToolANNPID" - ] - -#trigger list -TriggerList = [ - # L0 - "L0ElectronDecision", - "L0HadronDecision", - "L0MuonDecision", - "L0MuonLooseDecision", - "L0MuonEWDecision", - "L0MuonHighDecision", - "L0PhysDecision", - "L0PhotonDecision", - "L0DiMuonDecision", - "L0GlobalDecision", - "L0ElectronHiDecision", - "L0DiElectronDecision", - "L0DiHadronDecision", - # HLT1 - "Hlt1TrackAllL0Decision", - "Hlt1TrackPhotonDecision", - "Hlt1GlobalDecision", - "Hlt1TrackMVADecision", - "Hlt1TwoTrackMVADecision", - "Hlt1TrackMVALooseDecision", - "Hlt1TwoTrackMVALooseDecision", - "Hlt1L0AnyDecision", - "Hlt1TrackMVATightDecision", - "Hlt1TwoTrackMVATightDecision", - - 'Hlt1TrackMuonDecision', - 'Hlt1TrackMuonMVADecision', - 'Hlt1DiMuonHighMassDecision', - 'Hlt1DiMuonLowMassDecision', - 'Hlt1SingleMuonHighPTDecision', - 'Hlt1DiMuonNoL0Decision', - 'Hlt1CalibMuonAlignJpsiDecision', - 'Hlt1DiMuonNoIPDecision', - 'Hlt1DiMuonNoIPSSDecision', - 'Hlt1LowMultMuonDecision', - 'Hlt1MultiDiMuonNoIPDecision', - 'Hlt1MultiMuonNoL0Decision', - 'Hlt1SingleMuonHighPTNoMUIDDecision', - 'Hlt1SingleMuonNoIPDecision', - # HLT2 - 'Hlt2Topo2BodyDecision', - 'Hlt2TopoE2BodyDecision', - "Hlt2Topo3BodyDecision", - "Hlt2Topo4BodyDecision", - "Hlt2IncPhiDecision", - "Hlt2Topo.*Decision", - "Hlt2PhysDecision", - ] - -################################################################################ -LoKi_particle = LoKi__Hybrid__TupleTool("LoKi_particle") -LoKi_particle.Variables = { - "Y" : "Y", - "ETA" : "ETA", - "PHI" : "PHI", - "LOKI_FDCHI2" : "BPVVDCHI2", - "LOKI_FDS" : "BPVDLS", - "LOKI_DIRA" : "BPVDIRA", - "LV01" : "LV01", - "LV02" : "LV02", - "DOCA" : "DOCA(1,2)", - "LOKI_BPVCORRM" : "BPVCORRM", - "LOKI_IPCHI2" : "BPVIPCHI2()", - "LOKI_BPVLTIME" : "BPVLTIME()" -} -LoKi_Xicp2PHH=LoKi__Hybrid__TupleTool("LoKi_Xicp2PHH") -LoKi_Xicp2PHH.Variables = { - 'DOCACHI2_p_h1' : 'DOCACHI2(1,2)', - 'DOCACHI2_p_h2' : 'DOCACHI2(1,3)', - 'DOCACHI2_h1_h2' : 'DOCACHI2(2,3)', - 'DOCA_p_h1' : 'DOCA(1,2)', - 'DOCA_p_h2' : 'DOCA(1,3)', - 'DOCA_h1_h2' : 'DOCA(2,3)', - 'MASS_p_h1' : 'MASS(1,2)', - 'MASS_p_h2' : 'MASS(1,3)', - 'MASS_h1_h2' : 'MASS(2,3)', - } - - -################################################################################ -line_XicpToPKK = "Xic2PHHXicp2PKKLine" - -from PhysConf.Selections import AutomaticData -Input_XicpToPKK = AutomaticData( Location = "Phys/{0}/Particles".format(line_XicpToPKK)) - -from PhysConf.Selections import TupleSelection -XicpToPKK_decay = '[Xi_c+ -> ^p+ ^K+ ^K-]CC' -XicpToPKK_branches = { - "Xicp" : "^([Xi_c+ -> p+ K+ K-]CC)", - "proton" : "[Xi_c+ -> ^p+ K+ K-]CC", - "K1" : "[Xi_c+ -> p+ ^K+ K-]CC", - "K2" : "[Xi_c+ -> p+ K+ ^K-]CC", - } - -Tuple_XicpToPKK = TupleSelection("Tuple_XicpToPKK", [ Input_XicpToPKK ], Decay = XicpToPKK_decay, Branches = XicpToPKK_branches, ToolList = [] ) -################################################################################ -for dtt in [Tuple_XicpToPKK]: - # decay tree fitter (DTF) - dtt.addTool(TupleToolDecay, name="Xicp") - dtt.addTool(TupleToolDecay, name="proton") - dtt.addTool(TupleToolDecay, name="K1") - dtt.addTool(TupleToolDecay, name="K2") - - #LoKi VARIABLES - for particle in [dtt.Xicp,dtt.proton,dtt.K1,dtt.K2]: - particle.addTool(LoKi_particle) - particle.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_particle"] - dtt.Xicp.addTool(LoKi_Xicp2PHH) - dtt.Xicp.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_Xicp2PHH"] - #constrain: PV and Xicp - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTF') - dtt.Xicp.DTF.constrainToOriginVertex = True - dtt.Xicp.DTF.Verbose = True - dtt.Xicp.DTF.daughtersToConstrain = ["Xi_c+"] - dtt.Xicp.DTF.UpdateDaughters = True - #constrain: PV - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyPV') - dtt.Xicp.DTFonlyPV.constrainToOriginVertex = True - dtt.Xicp.DTFonlyPV.Verbose = True - dtt.Xicp.DTFonlyPV.UpdateDaughters = True - #DTF with Momentum Scaling only - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyMS') - dtt.Xicp.DTFonlyMS.Verbose = True - dtt.Xicp.DTFonlyMS.UpdateDaughters = True -################################################################################ - -for dtt in [Tuple_XicpToPKK]: - - dtt.TupleName = "ntp" - dtt.ToolList = TupleToolList - - if isSimulation: - dtt.ToolList += [ - "TupleToolMCTruth", - "TupleToolMCBackgroundInfo" - ] - dtt.TupleToolMCTruth.ToolList += ["MCTupleToolHierarchy"] - -####################################### TISTOS ################################## - dtt.TupleToolTrigger.VerboseL0 = True - dtt.TupleToolTrigger.VerboseHlt1 = True - dtt.TupleToolTrigger.VerboseHlt2 = True - dtt.TupleToolTrigger.FillHlt2 = False - dtt.TupleToolTrigger.TriggerList = TriggerList - - dtt.TupleToolTISTOS.addTool(L0TriggerTisTos()) - dtt.TupleToolTISTOS.addTool(TriggerTisTos()) - dtt.TupleToolTISTOS.VerboseL0 = True - dtt.TupleToolTISTOS.VerboseHlt1 = True - dtt.TupleToolTISTOS.VerboseHlt2 = True - dtt.TupleToolTISTOS.FillHlt2 = False - dtt.TupleToolTISTOS.TriggerList = TriggerList - -from Configurables import MCDecayTreeTuple -MCTuple = MCDecayTreeTuple("MCTruth") -MCTuple.Decay = "^[Xi_c+ => ^p+ ^K+ ^K-]CC" -MCTuple.addBranches({ - "Xicp" : "^([ Xi_c+ ==> p+ K+ K-]CC)", - "proton" : "[ Xi_c+ ==> ^p+ K+ K-]CC", - "K1" : "[ Xi_c+ ==> p+ ^K+ K-]CC", - "K2" : "[ Xi_c+ ==> p+ K+ ^K-]CC", - }) -MCTuple.ToolList += [ - "MCTupleToolKinematic" - ,"MCTupleToolPrimaries" - ,"MCTupleToolAngles" - ,"MCTupleToolHierarchy" - ,"TupleToolRecoStats" - ,"MCTupleToolDecayType" - ,"MCTupleToolPID" - ,"MCTupleToolPrompt" - ] - - -################################################################################ -from PhysConf.Selections import SelectionSequence -seq_XicpToPKK = SelectionSequence('seq_XicpToPKK',Tuple_XicpToPKK).sequence() - -from Configurables import DataOnDemandSvc -dod = DataOnDemandSvc() - -from Configurables import Gaudi__DataLink as Link -rawEvt1 = Link ( 'LinkRawEvent1', - What = '/Event/DAQ/RawEvent' , - Target = '/Event/Trigger/RawEvent' ) -dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 -################################################################################ -DaVinci( - InputType = 'MDST' , - Lumi = not isSimulation, - Simulation = isSimulation, - Turbo = False, - UserAlgorithms = [seq_XicpToPKK,MCTuple], - #RootInTES = "ALLSTREAMS" - RootInTES = "/Event/AllStreams" - ) - diff --git a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py index c1eba83d14..304e2348cf 100644 --- a/run2_MC_XicpToPHH/XicpToPKmPip_MC.py +++ b/run2_MC_XicpToPHH/XicpToPKmPip_MC.py @@ -224,22 +224,14 @@ MCTuple.ToolList += [ from PhysConf.Selections import SelectionSequence seq_XicpToPKmPip = SelectionSequence('seq_XicpToPKmPip',Tuple_XicpToPKmPip).sequence() -#from Configurables import DataOnDemandSvc -#dod = DataOnDemandSvc() -# -#from Configurables import Gaudi__DataLink as Link -#rawEvt1 = Link ( 'LinkRawEvent1', -# What = '/Event/DAQ/RawEvent' , -# Target = '/Event/Trigger/RawEvent' ) -#dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 ################################################################################ DaVinci( - InputType = 'MDST' , + InputType = 'MDST', Lumi = not isSimulation, Simulation = isSimulation, - UserAlgorithms = [seq_XicpToPKmPip,MCTuple], +# UserAlgorithms = [seq_XicpToPKmPip,MCTuple], + UserAlgorithms = [seq_XicpToPKmPip], Turbo = True, -# RootInTES = "ALLSTREAMS" # RootInTES = "/Event/AllStreams" RootInTES = "/Event/Turbo" ) diff --git a/run2_MC_XicpToPHH/XicpToPPiPi_MC.py b/run2_MC_XicpToPHH/XicpToPPiPi_MC.py deleted file mode 100644 index d1bb4dd30e..0000000000 --- a/run2_MC_XicpToPHH/XicpToPPiPi_MC.py +++ /dev/null @@ -1,244 +0,0 @@ -import GaudiKernel.SystemOfUnits as Units -from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond, mm, mrad -from Gaudi.Configuration import * - -from Configurables import DaVinci -from Configurables import CombineParticles, DecayTreeTuple -from Configurables import TupleToolDecay, TupleToolPrimaries -from Configurables import TupleToolGeometry, TupleToolKinematic, TupleToolPropertime, TupleToolPrimaries, TupleToolPid, TupleToolEventInfo, TupleToolTrackInfo, TupleToolRecoStats, TupleToolTrigger -from Configurables import TupleToolTISTOS, L0TriggerTisTos, TriggerTisTos -from Configurables import LoKi__Hybrid__TupleTool -from Configurables import LoKi__Hybrid__TupleTool as LoKiTupleTool -from Configurables import FilterDesktop -from Configurables import CondDB, CheckPV, TupleToolDecayTreeFitter -from Configurables import FilterInTrees - -from DecayTreeTuple.Configuration import * -from PhysConf.Selections import CombineSelection, FilterSelection, RebuildSelection -from PhysConf.Selections import SelectionSequence, StrippingSelection -from PhysSelPython.Wrappers import AutomaticData, Selection, MergedSelection -from PhysSelPython.Wrappers import SelectionSequence, DataOnDemand, TupleSelection - -from Configurables import TupleToolMCBackgroundInfo, TupleToolMCTruth -from TeslaTools import TeslaTruthUtils - -isSimulation = DaVinci().Simulation -#tool list -TupleToolList = [ - "TupleToolGeometry", - "TupleToolKinematic", - "TupleToolPrimaries", - "TupleToolPid", - "TupleToolEventInfo", - "TupleToolTrackInfo", - "TupleToolBremInfo", - "TupleToolRecoStats", - "TupleToolTISTOS", - "TupleToolTrigger", - "TupleToolAngles", - "TupleToolPropertime", - "TupleToolTrackPosition", - "TupleToolANNPID" - ] - -#trigger list -TriggerList = [ - # L0 - "L0ElectronDecision", - "L0HadronDecision", - "L0MuonDecision", - "L0MuonLooseDecision", - "L0MuonEWDecision", - "L0MuonHighDecision", - "L0PhysDecision", - "L0PhotonDecision", - "L0DiMuonDecision", - "L0GlobalDecision", - "L0ElectronHiDecision", - "L0DiElectronDecision", - "L0DiHadronDecision", - # HLT1 - "Hlt1TrackAllL0Decision", - "Hlt1TrackPhotonDecision", - "Hlt1GlobalDecision", - "Hlt1TrackMVADecision", - "Hlt1TwoTrackMVADecision", - "Hlt1TrackMVALooseDecision", - "Hlt1TwoTrackMVALooseDecision", - "Hlt1L0AnyDecision", - "Hlt1TrackMVATightDecision", - "Hlt1TwoTrackMVATightDecision", - - 'Hlt1TrackMuonDecision', - 'Hlt1TrackMuonMVADecision', - 'Hlt1DiMuonHighMassDecision', - 'Hlt1DiMuonLowMassDecision', - 'Hlt1SingleMuonHighPTDecision', - 'Hlt1DiMuonNoL0Decision', - 'Hlt1CalibMuonAlignJpsiDecision', - 'Hlt1DiMuonNoIPDecision', - 'Hlt1DiMuonNoIPSSDecision', - 'Hlt1LowMultMuonDecision', - 'Hlt1MultiDiMuonNoIPDecision', - 'Hlt1MultiMuonNoL0Decision', - 'Hlt1SingleMuonHighPTNoMUIDDecision', - 'Hlt1SingleMuonNoIPDecision', - # HLT2 - 'Hlt2Topo2BodyDecision', - 'Hlt2TopoE2BodyDecision', - "Hlt2Topo3BodyDecision", - "Hlt2Topo4BodyDecision", - "Hlt2IncPhiDecision", - "Hlt2Topo.*Decision", - "Hlt2PhysDecision", - ] - -################################################################################ -LoKi_particle = LoKi__Hybrid__TupleTool("LoKi_particle") -LoKi_particle.Variables = { - "Y" : "Y", - "ETA" : "ETA", - "PHI" : "PHI", - "LOKI_FDCHI2" : "BPVVDCHI2", - "LOKI_FDS" : "BPVDLS", - "LOKI_DIRA" : "BPVDIRA", - "LV01" : "LV01", - "LV02" : "LV02", - "DOCA" : "DOCA(1,2)", - "LOKI_BPVCORRM" : "BPVCORRM", - "LOKI_IPCHI2" : "BPVIPCHI2()", - "LOKI_BPVLTIME" : "BPVLTIME()" -} -LoKi_Xicp2PHH=LoKi__Hybrid__TupleTool("LoKi_Xicp2PHH") -LoKi_Xicp2PHH.Variables = { - 'DOCACHI2_p_h1' : 'DOCACHI2(1,2)', - 'DOCACHI2_p_h2' : 'DOCACHI2(1,3)', - 'DOCACHI2_h1_h2' : 'DOCACHI2(2,3)', - 'DOCA_p_h1' : 'DOCA(1,2)', - 'DOCA_p_h2' : 'DOCA(1,3)', - 'DOCA_h1_h2' : 'DOCA(2,3)', - 'MASS_p_h1' : 'MASS(1,2)', - 'MASS_p_h2' : 'MASS(1,3)', - 'MASS_h1_h2' : 'MASS(2,3)', - } - - -################################################################################ -line_XicpToPPiPi = "Xic2PHHXicp2PPiPiLine" - -from PhysConf.Selections import AutomaticData -Input_XicpToPPiPi = AutomaticData( Location = "Phys/{0}/Particles".format(line_XicpToPPiPi)) - -################################################################################ -from PhysConf.Selections import TupleSelection -XicpToPPiPi_decay = '[Xi_c+ -> ^p+ ^pi+ ^pi-]CC' -XicpToPPiPi_branches = { - "Xicp" : "^([Xi_c+ -> p+ pi+ pi-]CC)", - "proton" : "[Xi_c+ -> ^p+ pi+ pi-]CC", - "pi1" : "[Xi_c+ -> p+ ^pi+ pi-]CC", - "pi2" : "[Xi_c+ -> p+ pi+ ^pi-]CC", - } - -Tuple_XicpToPPiPi = TupleSelection("Tuple_XicpToPPiPi", [ Input_XicpToPPiPi ], Decay = XicpToPPiPi_decay, Branches = XicpToPPiPi_branches, ToolList = [] ) -################################################################################ -for dtt in [Tuple_XicpToPPiPi]: - # decay tree fitter (DTF) - dtt.addTool(TupleToolDecay, name="Xicp") - dtt.addTool(TupleToolDecay, name="proton") - dtt.addTool(TupleToolDecay, name="pi1") - dtt.addTool(TupleToolDecay, name="pi2") - - #LoKi VARIABLES - for particle in [dtt.Xicp,dtt.proton,dtt.pi1,dtt.pi2]: - particle.addTool(LoKi_particle) - particle.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_particle"] - dtt.Xicp.addTool(LoKi_Xicp2PHH) - dtt.Xicp.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_Xicp2PHH"] - #constrain: PV and Xicp - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTF') - dtt.Xicp.DTF.constrainToOriginVertex = True - dtt.Xicp.DTF.Verbose = True - dtt.Xicp.DTF.daughtersToConstrain = ["Xi_c+"] - dtt.Xicp.DTF.UpdateDaughters = True - #constrain: PV - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyPV') - dtt.Xicp.DTFonlyPV.constrainToOriginVertex = True - dtt.Xicp.DTFonlyPV.Verbose = True - dtt.Xicp.DTFonlyPV.UpdateDaughters = True - #DTF with Momentum Scaling only - dtt.Xicp.addTupleTool('TupleToolDecayTreeFitter/DTFonlyMS') - dtt.Xicp.DTFonlyMS.Verbose = True - dtt.Xicp.DTFonlyMS.UpdateDaughters = True -################################################################################ - -for dtt in [Tuple_XicpToPPiPi]: - - dtt.TupleName = "ntp" - dtt.ToolList = TupleToolList - - if isSimulation: - dtt.ToolList += [ - "TupleToolMCTruth", - "TupleToolMCBackgroundInfo" - ] - dtt.TupleToolMCTruth.ToolList += ["MCTupleToolHierarchy"] - -####################################### TISTOS ################################## - dtt.TupleToolTrigger.VerboseL0 = True - dtt.TupleToolTrigger.VerboseHlt1 = True - dtt.TupleToolTrigger.VerboseHlt2 = True - dtt.TupleToolTrigger.FillHlt2 = False - dtt.TupleToolTrigger.TriggerList = TriggerList - - dtt.TupleToolTISTOS.addTool(L0TriggerTisTos()) - dtt.TupleToolTISTOS.addTool(TriggerTisTos()) - dtt.TupleToolTISTOS.VerboseL0 = True - dtt.TupleToolTISTOS.VerboseHlt1 = True - dtt.TupleToolTISTOS.VerboseHlt2 = True - dtt.TupleToolTISTOS.FillHlt2 = False - dtt.TupleToolTISTOS.TriggerList = TriggerList - -from Configurables import MCDecayTreeTuple -MCTuple = MCDecayTreeTuple("MCTruth") -MCTuple.Decay = "^[Xi_c+ => ^p+ ^pi+ ^pi-]CC" -MCTuple.addBranches({ - "Xicp" : "^([ Xi_c+ ==> p+ pi+ pi-]CC)", - "proton" : "[ Xi_c+ ==> ^p+ pi+ pi-]CC", - "pi1" : "[ Xi_c+ ==> p+ ^pi+ pi-]CC", - "pi2" : "[ Xi_c+ ==> p+ pi+ ^pi-]CC", - }) -MCTuple.ToolList += [ - "MCTupleToolKinematic" - ,"MCTupleToolPrimaries" - ,"MCTupleToolAngles" - ,"MCTupleToolHierarchy" - ,"TupleToolRecoStats" - ,"MCTupleToolDecayType" - ,"MCTupleToolPID" - ,"MCTupleToolPrompt" - ] - - -################################################################################ -from PhysConf.Selections import SelectionSequence -seq_XicpToPPiPi = SelectionSequence('seq_XicpToPPiPi',Tuple_XicpToPPiPi).sequence() - -from Configurables import DataOnDemandSvc -dod = DataOnDemandSvc() - -from Configurables import Gaudi__DataLink as Link -rawEvt1 = Link ( 'LinkRawEvent1', - What = '/Event/DAQ/RawEvent' , - Target = '/Event/Trigger/RawEvent' ) -dod.AlgMap [ rawEvt1 . Target ] = rawEvt1 -################################################################################ -DaVinci( - InputType = 'MDST' , - Lumi = not isSimulation, - Simulation = isSimulation, - Turbo = False, - UserAlgorithms = [seq_XicpToPPiPi,MCTuple], - #RootInTES = "ALLSTREAMS" - RootInTES = "/Event/AllStreams" - ) - diff --git a/run2_MC_XicpToPHH/info.yaml b/run2_MC_XicpToPHH/info.yaml index c9654d2921..b98b5487de 100644 --- a/run2_MC_XicpToPHH/info.yaml +++ b/run2_MC_XicpToPHH/info.yaml @@ -5,32 +5,20 @@ defaults: inform: - cheng.wang@cern.ch -{%- set datasets_XicpToPHH_mc = [ - ('16','MagDown','XicpToPPiPi','/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('17','MagDown','XicpToPPiPi','/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('18','MagDown','XicpToPPiPi','/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('16','MagUp', 'XicpToPPiPi','/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('17','MagUp', 'XicpToPPiPi','/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('18','MagUp', 'XicpToPPiPi','/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103093/ALLSTREAMS.MDST'), - ('16','MagDown','XicpToPKK', '/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('17','MagDown','XicpToPKK', '/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('18','MagDown','XicpToPKK', '/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('16','MagUp', 'XicpToPKK', '/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x6139160F/Reco16/Turbo03a/Stripping28r2p2NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('17','MagUp', 'XicpToPKK', '/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('18','MagUp', 'XicpToPKK', '/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim10e-ReDecay01/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34r0p3NoPrescalingFlagged/26103094/ALLSTREAMS.MDST'), - ('16','MagDown','XicpToPKmPip','/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), - ('17','MagDown','XicpToPKmPip','/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), - ('18','MagDown','XicpToPKmPip','/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), - ('16','MagUp', 'XicpToPKmPip','/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), - ('17','MagUp', 'XicpToPKmPip','/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), - ('18','MagUp', 'XicpToPKmPip','/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), +{%- set datasets_XicpToPKmPip_mc = [ + ('16','MagDown','/MC/2016/Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('17','MagDown','/MC/2017/Beam6500GeV-2017-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('18','MagDown','/MC/2018/Beam6500GeV-2018-MagDown-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('16','MagUp', '/MC/2016/Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x6139160F/Reco16/Turbo03a/Stripping28r1NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('17','MagUp', '/MC/2017/Beam6500GeV-2017-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x62661709/Reco17/Turbo04a-WithTurcal/Stripping29r2NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), + ('18','MagUp', '/MC/2018/Beam6500GeV-2018-MagUp-Nu1.6-25ns-Pythia8/Sim09k/Trig0x617d18a4/Reco18/Turbo05-WithTurcal/Stripping34NoPrescalingFlagged/26103092/ALLSTREAMS.MDST'), ]%} -{%- for year, polarity, channel, bk in datasets_XicpToPHH_mc %} -20{{year}}_{{polarity}}_{{channel}}_MC: +{%- for year, polarity,bk in datasets_XicpToPKmPip_mc %} +20{{year}}_{{polarity}}_XicpToPKmPip_MC: input: bk_query: {{bk}} - output: {{channel}}_MC.ROOT + output: XicpToPKmPip_MC.ROOT options: - - {{channel}}_MC.py + - XicpToPKmPip_MC.py {%- endfor %} -- GitLab