Skip to content
Snippets Groups Projects

Draft: AP for run2 turbo MC XicpToPKmPip

Open Cheng Wang requested to merge chengw/run2_MC_XicpToPKmPip into master
1 unresolved thread
2 files
+ 262
0
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 238
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_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()
################################################################################
DaVinci(
InputType = 'MDST',
Lumi = not isSimulation,
Simulation = isSimulation,
# UserAlgorithms = [seq_XicpToPKmPip,MCTuple],
UserAlgorithms = [seq_XicpToPKmPip],
Turbo = True,
# RootInTES = "/Event/AllStreams"
RootInTES = "/Event/Turbo"
)
Loading