Skip to content
Snippets Groups Projects

DrellYan track efficiency Sample (MCDecayTree) v1

Merged Yichen Sun requested to merge sunyi/DrellYan_Track_v1 into master
2 unresolved threads
3 files
+ 371
0
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 238
0
from os import environ
from GaudiKernel.SystemOfUnits import *
from Gaudi.Configuration import *
from Configurables import GaudiSequencer, CombineParticles
from Configurables import DecayTreeTuple, EventTuple, TupleToolTrigger, TupleToolTISTOS
from Configurables import BackgroundCategory, TupleToolDecay, TupleToolVtxIsoln,TupleToolPid,EventCountHisto,TupleToolRecoStats,TupleToolDecayTreeFitter
from Configurables import LoKi__Hybrid__TupleTool, TupleToolVeto
from PhysConf.Selections import TupleSelection, CombineSelection
from DecayTreeTuple.Configuration import *
from PhysSelPython.Wrappers import AutomaticData,SelectionSequence
from Configurables import GaudiSequencer
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
## trigger lines
mtl = [
# L0 lines
'L0MuonDecision',
'L0DiMuonDecision',
'L0MuonEWDecision',
# Hlt1 lines
"Hlt1DiMuonHighMassDecision",
"Hlt1DiMuonLowMassDecision",
"Hlt1DiMuonNoIPDecision",
"Hlt1SingleMuonNoIPDecision",
"Hlt1SingleMuonHighPTDecision",
"Hlt1TrackMuonDecision",
# Hlt2 lines
"Hlt2SingleMuonDecision",
"Hlt2SingleMuonHighPTDecision",
"Hlt2SingleMuonVHighPTDecision",
"Hlt2DiMuonZDecision",
"Hlt2EWSingleMuonHighPtDecision",
"Hlt2EWSingleMuonLowPtDecision",
"Hlt2EWSingleMuonVHighPtDecision",
"Hlt2EWDiMuonDY1Decision",
"Hlt2EWDiMuonDY2Decision",
"Hlt2EWDiMuonDY3Decision",
"Hlt2EWDiMuonDY4Decision",
"Hlt2EWDiMuonDYSSDecision"
"Hlt2EWDiMuonZDecision"
]
tl= [
"TupleToolBremInfo",
"TupleToolAngles",
"TupleToolTrigger",
"TupleToolKinematic",
"TupleToolPid" ,
"TupleToolTrackInfo" ,
"TupleToolPrimaries" ,
#"TupleToolPropertime",
"TupleToolEventInfo" ,
"TupleToolRecoStats" ,
"TupleToolGeometry" ,
"TupleToolTrackIsolation",
"TupleToolTrackPosition",
"TupleToolConeIsolation",
"TupleToolVtxIsoln",
"TupleToolVeto",
]
z_decay = "Z0-> ^mu+ ^mu-"
upsilon_decay = "Upsilon(1S) -> ^mu+ ^mu-"
z_branches = {
"mup" : "Z0 -> ^mu+ mu-",
"mum" : "Z0 -> mu+ ^mu-",
"ZBoson" : "Z0 -> mu+ mu-",
}
upsilon_branches = {
"mup" : "Upsilon(1S) -> ^mu+ mu-",
"mum" : "Upsilon(1S) -> mu+ ^mu-",
"ZBoson" : "Upsilon(1S) -> mu+ mu-",
}
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
"""
Lines of interest:
TrackEffMuonTT_JpsiLine1 : Jpsi-> mu mu, long: minus, muonTT: plus
TrackEffMuonTT_JpsiLine2 : Jpsi-> mu mu, long: plus, muonTT: minus
TrackEffMuonTT_UpsilonLine1 : Upsilon-> mu mu, long: minus, muonTT: plus
TrackEffMuonTT_UpsilonLine2 : Upsilon-> mu mu, long: plus, muonTT: minus
TrackEffMuonTT_ZLine1 : Z-> mu mu, long: minus, muonTT: plus
TrackEffMuonTT_ZLine2 : Z-> mu mu, long: plus, muonTT: minus
"""
## W: reco from StdAllLooseMuons
ZLine1_location="/Event/AllStreams/Phys/TrackEffMuonTT_ZLine1/Particles"
ZLine2_location="/Event/AllStreams/Phys/TrackEffMuonTT_ZLine2/Particles"
UpsilonLine1_location="/Event/AllStreams/Phys/TrackEffMuonTT_UpsilonLine1/Particles"
UpsilonLine2_location="/Event/AllStreams/Phys/TrackEffMuonTT_UpsilonLine2/Particles"
ZLine1_input = AutomaticData(ZLine1_location)
ZLine2_input = AutomaticData(ZLine2_location)
UpsilonLine1_input = AutomaticData(UpsilonLine1_location)
UpsilonLine2_input = AutomaticData(UpsilonLine2_location)
## ------------------------------------------------------------------------- ##
## DY:
tuple_ZLine1 = TupleSelection(
"ZLine1",
[ZLine1_input],
Decay = z_decay,
Branches = z_branches )
tuple_ZLine2 = TupleSelection(
"ZLine2",
[ZLine2_input],
Decay = z_decay,
Branches = z_branches )
tuple_UpsilonLine1 = TupleSelection(
"UpsilonLine1",
[UpsilonLine1_input],
Decay = upsilon_decay,
Branches = upsilon_branches )
tuple_UpsilonLine2 = TupleSelection(
"UpsilonLine2",
[UpsilonLine2_input],
Decay = upsilon_decay,
Branches = upsilon_branches )
## define a list of tuples
ztuples = [ tuple_ZLine1, tuple_ZLine2, tuple_UpsilonLine1, tuple_UpsilonLine2 ]
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
## add algorithms
for tpm in ztuples:
tpm.ToolList += tl
tool = tpm.addTupleTool(TupleToolTISTOS)
tool.Verbose=True
tool.VerboseL0=True
tool.VerboseHlt1=True
tool.VerboseHlt2= True
tool.FillL0 = True
tool.FillHlt1 = True
tool.FillHlt2 = True
tool.OutputLevel = INFO
tool.TriggerList = mtl
# solve TISTOS problems[2] 2017/9/14 10:00
from Configurables import TriggerTisTos
#tool = tpm.addTupleTool(TupleToolTISTOS)
tool.addTool(TriggerTisTos())
## disable CALO hit matching
tool.TriggerTisTos.TOSFracEcal = 0.
tool.TriggerTisTos.TOSFracHcal = 0.
tool.TriggerTisTos.PropertiesPrint = True
## disable muon hit matching (change TOSFracMu)
tool.TriggerTisTos.TOSFracMuon = 0.
tool.TriggerTisTos.PropertiesPrint = True
from Configurables import LoKi__Hybrid__TupleTool
LoKi_All = LoKi__Hybrid__TupleTool( 'LoKi_All')
LoKi_All.Preambulo = ["from LoKiTracks.decorators import *"]
LoKi_All.Variables = {
'ETA' : 'ETA',
'PHI' : 'PHI',
}
tpm.mup.addTupleTool(LoKi_All)
tpm.mum.addTupleTool(LoKi_All)
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
seq_ZLine1 = SelectionSequence('SEQ_ZLine1', tuple_ZLine1)
seq_ZLine2 = SelectionSequence('SEQ_ZLine2', tuple_ZLine2)
seq_UpsilonLine1 = SelectionSequence('SEQ_UpsilonLine1', tuple_UpsilonLine1)
seq_UpsilonLine2 = SelectionSequence('SEQ_UpsilonLine2', tuple_UpsilonLine2)
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
#fill the truth information
mct = MCDecayTreeTuple('mct')
mct.Decay = "Z0-> ^mu+ ^mu-"
mct.Branches = {
"mup" : "Z0 -> ^mu+ mu-",
"mum" : "Z0 -> mu+ ^mu-",
"ZBoson" : "Z0 -> mu+ mu-",
}
mctl=[ 'LoKi::Hybrid::MCTupleTool/MCLoKiTool',
'MCTupleToolAngles',
'MCTupleToolHierarchy',
'MCTupleToolKinematic',
'MCTupleToolPrimaries',
'MCTupleToolReconstructed',
'MCTupleToolInteractions' ]
mct.ToolList=mctl
from Configurables import LoKi__Hybrid__MCTupleTool
MCLoKiTool = LoKi__Hybrid__MCTupleTool( 'MCLoKiTool' )
mct.addTool( MCLoKiTool, name = 'MCLoKiTool')
mct.MCLoKiTool.Variables = {
'TRUEID' : 'MCID',
'TRUEETA' : 'MCETA',
'TRUEPHI' : 'MCPHI',
'TRUEP' : 'MCP'
}
## ------------------------------------------------------------------------- ##
## ------------------------------------------------------------------------- ##
## DaVinci
from Configurables import DaVinci
DaVinci().EvtMax = -1 # Number of events
DaVinci().PrintFreq = 5000
DaVinci().SkipEvents = 0 # Events to skip
#DaVinci().InputType = 'DST'
#DaVinci().DataType = "2018"
#DaVinci().Lumi = False
#DaVinci().Simulation = True
#DaVinci().DDDBtag="dddb-20170721-3"
#DaVinci().CondDBtag="sim-20190430-vc-md100"
#DaVinci().TupleFile = "Tuple.root" # Ntuple
DaVinci().UserAlgorithms = [ seq_ZLine1.sequence(), seq_ZLine2.sequence(), seq_UpsilonLine1.sequence(), seq_UpsilonLine2.sequence(),mct]
#from GaudiConf import IOHelper
######################### Test ##################################################
'''
# Use the local input data
if DaVinci().Simulation == True:
DaVinci().EvtMax = 1000
IOHelper().inputFiles([
'/afs/cern.ch/user/s/sunyi/eos/18/MC_DY_5GeV_dst/00120488_00000004_7.AllStreams.dst'
], clear=True)
# '/afs/cern.ch/user/d/duliu/eos/Duanqing_work/xia_bookkeeping/test_DaVinci/00098349_00000001_1.b2dh.strip.dst'
# ], clear=True)
else:
IOHelper().inputFiles([
'/afs/cern.ch/user/d/duliu/eos/Duanqing_work/xia_bookkeeping/test_DaVinci/2018_Data.bhadroncompleteevent.dst'
], clear=True)
'''
Loading