diff --git a/ganga/Lb2Lcmunu/Lb2Lcmunu_S24_data2015_NEWJET.py b/ganga/Lb2Lcmunu/Lb2Lcmunu_S24_data2015_NEWJET.py new file mode 100644 index 0000000..82fa4dd --- /dev/null +++ b/ganga/Lb2Lcmunu/Lb2Lcmunu_S24_data2015_NEWJET.py @@ -0,0 +1,257 @@ +######################################################################## +from os import environ +import math +from Gaudi.Configuration import * +#from GaudiPython import AppMgr +from Configurables import DecayTreeTuple, BTaggingTool, SubstitutePID, TrackScaleState +from Configurables import CombineParticles, FilterDesktop, TupleToolDecayTreeFitter, TupleToolDecay +from Configurables import TupleToolTrigger, BackgroundCategory, TupleToolTISTOS, TupleToolRecoStats, TupleToolTagging +from Configurables import DaVinci, HltSelReportsDecoder, HltVertexReportsDecoder, HltDecReportsDecoder, LoKi__Hybrid__TupleTool, TupleToolJets +from DecayTreeTuple.Configuration import * +from StrippingConf.Configuration import StrippingConf, StrippingStream +from StrippingSettings.Utils import strippingConfiguration +from StrippingArchive.Utils import buildStreams, cloneLinesFromStream +from Configurables import CombineParticles +from StrippingArchive import strippingArchive + + +trigger_list = [ + 'L0HadronDecision', + 'L0ElectronDecision', + 'L0ElectronHiDecision', + 'L0MuonDecision', + 'L0DiMuonDecision', + + + # 'Hlt1SingleMuonNoIPDecision', + # 'Hlt1SingleMuonHighPTDecision', + # 'Hlt1DiMuonHighMassDecision', + # 'Hlt1DiMuonLowMassDecision', + 'Hlt1GlobalDecision', + 'Hlt1TrackAllL0Decision', + 'Hlt1SingleMuonNoIPDecision', + 'Hlt1SingleMuonHighPTDecision', + 'Hlt1TrackMuonDecision', + 'Hlt1MuTrackDecision', + # 'Hlt1GlobalDecision', + + 'Hlt2TopoOSTF2BodyDecision', + 'Hlt2TopoOSTF3BodyDecision', + 'Hlt2TopoOSTF4BodyDecision', + 'Hlt2Topo2BodySimpleDecision', + 'Hlt2Topo3BodySimpleDecision', + 'Hlt2Topo4BodySimpleDecision', + 'Hlt2Topo2BodyBBDTDecision', + 'Hlt2Topo3BodyBBDTDecision', + 'Hlt2Topo4BodyBBDTDecision', + 'Hlt2TopoMu2BodyBBDTDecision', + 'Hlt2TopoMu3BodyBBDTDecision', + 'Hlt2TopoMu4BodyBBDTDecision', + 'Hlt2TopoE2BodyBBDTDecision', + 'Hlt2TopoE3BodyBBDTDecision', + 'Hlt2TopoE4BodyBBDTDecision', + # 'Hlt2MuonFromHLT1Decision', + 'Hlt2SingleMuonDecision', + # 'Hlt2SingleMuonHighPTDecision', + # 'Hlt2SingleMuonLowPTDecision', + # 'Hlt2DisplVerticesLowMassSingleDecision', + # 'Hlt2DisplVerticesHighMassSingleDecision', + # 'Hlt2DisplVerticesDoubleDecision', + # 'Hlt2DisplVerticesSinglePostScaledDecision', + # 'Hlt2DisplVerticesHighFDSingleDecision', + # 'Hlt2DisplVerticesSingleDownDecision', + # 'Hlt2DiMuonDecision', + # 'Hlt2DiMuonLowMassDecision', + # 'Hlt2DiMuonBDecision', + 'Hlt2DiMuonDetachedDecision', + 'Hlt2MuTrackDecision', + 'Hlt2GlobalDecision' +] + + +########################################################################### +# First run the stripping + +eventNodeKiller = EventNodeKiller('Stripkiller') +eventNodeKiller.Nodes = [ '/Event/AllStreams', '/Event/Strip' ] + + +stripping = 'stripping24' +#get the configuration dictionary from the database +config = strippingConfiguration(stripping) +#get the line builders from the archive +archive = strippingArchive(stripping) +streams = buildStreams(stripping = config, archive = archive) +MyStream = StrippingStream("MyStream") +MyLines = [ 'Strippingb2LcMuXB2DMuForTauMuLine' ] + +for stream in streams: + for line in stream.lines: + if line.name() in MyLines: + print 'Strippingb2LcMuXB2DMuForTauMuLine' + MyStream.appendLines( [ line ] ) + + +from Configurables import ProcStatusCheck +filterBadEvents = ProcStatusCheck() + +sc = StrippingConf( Streams = [ MyStream ], + MaxCandidates = 2000, + AcceptBadEvents = False, + BadEventSelection = filterBadEvents ) + +########################################################################### + + +#from StandardParticles import StdAllLoosePions + + +Lc_star = CombineParticles("Lc_star") +Lc_star.Inputs = ["Phys/StdAllLoosePions/Particles", "Phys/Lc2pKPiforB2DMuForTauMu/Particles"] +Lc_star.DecayDescriptors = ["[Lambda_c(2595)+ -> Lambda_c+ pi+ pi-]cc"] +Lc_star.MotherCut = "(M<3000) & (M>2300) & (VFASPF(VCHI2/VDOF) < 7.0) " +Lc_star.DaughtersCuts = { "pi+": "PT>0", "pi-": "PT>0", "Lambda_c+": "ADMASS('Lambda_c+') < 50.0 *MeV" } +############################################################################# + +# Tau_3pi = CombineParticles("Tau_3pi") +# Tau_3pi.Inputs = ['Phys/StdLoosePions/Particles'] +# Tau_3pi.DecayDescriptors = ['[tau+ -> pi+ pi- pi+]cc'] +# Tau_3pi.MotherCut = "(M>400.*MeV) & (M < 3500.*MeV) & (BPVDIRA>0.99) & (VFASPF(VCHI2) < 25 )" +# Tau_3pi.DaughtersCuts = {'pi+': '(PT>150.*MeV) & (MIPCHI2DV(PRIMARY) > 4.0) & (TRCHI2DOF<4) & (TRGHOSTPROB<0.4) & (PIDK < 8)', 'pi-': '(PT>150.*MeV) & (MIPCHI2DV(PRIMARY) > 4.0) & (TRCHI2DOF<4) & (TRGHOSTPROB<0.4) & (PIDK < 8)'} +# Tau_3pi.CombinationCut = "((AM>400.*MeV) & (AM<3500.*MeV)) & (ADOCAMAX('')<0.15*mm) & ((AM12<1670.*MeV) or (AM23<1670.*MeV)) & (ANUM(PT < 300*MeV) <= 1) & (15)))" + +############################################################################# + +Lb_SL = CombineParticles("Lb_SL") +Lb_SL.Inputs = [ "Phys/MuforB2DMuForTauMu/Particles", "Phys/Lc_star/Particles"] +Lb_SL.DecayDescriptors = [ "[Lambda_b0 -> Lambda_c(2595)+ mu-]cc" ] +Lb_SL.MotherCut = "(M<6500) & (VFASPF(VCHI2/VDOF) < 7.0) & (BPVDIRA>0.999)" + + +''' +################################################################################ +Lb_SLSel = CombineParticles("Lb_SLSel") +Lb_SLSel.Preambulo=JJACUT +Lb_SLSel.Inputs = ["Phys/Lb_SL/Particles","Phys/StdJetsJEC/Particles"] + +Lb_SLSel.DecayDescriptors = ["[H_10 -> Lambda_b0 CELLjet]cc"] +Lb_SLSel.Preambulo = JJACUT + +Lb_SLSel.MotherCut = "(M<15000)" +Lb_SLSel.CombinationCut = "(AM < 15000)&(DR<1.5)" +''' + + +######################################################################## +#decay = "[ B*_s20 -> ^(B- -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K-) ^[pi+]CC]CC" +decay0 = "[Lambda_b0 -> ^(Lambda_c(2595)+ -> ^(Lambda_c+ -> ^K- ^p+ ^pi+ ) ^pi+ ^pi-) ^mu- ]CC" +#decay0 = "[H_10 -> ^( B*_s20 -> ^K+ ^(B- -> ^(D0 -> ^K- ^pi+) ^mu-)) ^CELLjet ]CC" +#decay0 = "[H_10 -> ^( Lambda_b0 -> ^(Lambda_c(2595)+ -> ^(Lambda_c+ -> K- p+ pi+ ) ) ^mu- ) ^CELLjet ]CC" +#decay1 = "[H_10 -> ^( B*_s20-> ^K- ^(B- -> ^(D0 -> ^K- ^pi+) ^mu-)) ^CELLjet ]CC" +######################################################################## +Lb_SL_OfflineTree = DecayTreeTuple("Lb_SL_OfflineTree") +Lb_SL_OfflineTree.Inputs = ["Phys/Lb_SL/Particles"] +Lb_SL_OfflineTree.Decay = decay0 +Lb_SL_OfflineTree.Branches = { + # "H_10": "[^H_10 -> (Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ) CELLjet]CC", + "Lambda_b0": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC", + # "CELLjet": "[H_10 -> (Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ) ^CELLjet]CC", + "Lambda_c_STAR": "[Lambda_b0 -> ^(Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC", + "mu": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ pi-) ^mu- ]CC", + "Lambda_c": "[Lambda_b0 -> (Lambda_c(2595)+ -> ^(Lambda_c+ -> K- p+ pi+ ) pi+ pi-) mu- ]CC", + "pi_plus": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) ^pi+ pi-) mu- ]CC", + "pi_minus": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ pi+ ) pi+ ^pi-) mu- ]CC", + "p": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- ^p+ pi+ ) pi+ pi-) mu- ]CC", + "pi_Lc": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> K- p+ ^pi+ ) pi+ pi-) mu- ]CC", + "K_Lc": "[Lambda_b0 -> (Lambda_c(2595)+ -> (Lambda_c+ -> ^K- p+ pi+ ) pi+ pi-) mu- ]CC" +} +Lb_SL_OfflineTree.ToolList = [ + "TupleToolKinematic", + "TupleToolPid", + "TupleToolGeometry", + "TupleToolPrimaries", + "TupleToolTrackInfo", + "TupleToolEventInfo", + "TupleToolRecoStats", + "TupleToolAngles", + "TupleToolNeutrinoReco", + "TupleToolMCBackgroundInfo", + "TupleToolMCTruth", + "TupleToolJets", + 'TupleToolTrigger', + 'TupleToolTISTOS', + 'TupleToolRICHPid', + 'TupleToolDira', + 'TupleToolEventInfo', + 'TupleToolPropertime', + 'TupleToolRecoStats', + 'TupleToolTrackPosition' +] + + +Lb_SL_OfflineTree.addTool( TupleToolTrigger, name='TupleToolTrigger' ) +Lb_SL_OfflineTree.TupleToolTrigger.Verbose = True +Lb_SL_OfflineTree.TupleToolTrigger.TriggerList = trigger_list + + +Lb_SL_OfflineTree.addTool( TupleToolTISTOS, name='TupleToolTISTOS' ) +Lb_SL_OfflineTree.TupleToolTISTOS.Verbose = True +Lb_SL_OfflineTree.TupleToolTISTOS.TriggerList = trigger_list +Lb_SL_OfflineTree.ToolList += [ "TupleToolTISTOS" ] + + +######################################################################## +from Configurables import TupleToolNeutrinoReco +Lb_SL_OfflineTree.addTool( TupleToolNeutrinoReco, name = "TupleToolNeutrinoReco" ) +Lb_SL_OfflineTree.TupleToolNeutrinoReco.Verbose = True +Lb_SL_OfflineTree.TupleToolNeutrinoReco.MotherMass = 5619.5 # MeV +Lb_SL_OfflineTree.TupleToolNeutrinoReco.ExtraName = 'mLb' + +from Configurables import TupleToolKinematic +Lb_SL_OfflineTree.addTool( TupleToolKinematic, name = "TupleToolKinematic" ) +Lb_SL_OfflineTree.TupleToolKinematic.Verbose = True + +from Configurables import TupleToolGeometry +Lb_SL_OfflineTree.addTool( TupleToolGeometry, name = "TupleToolGeometry" ) +Lb_SL_OfflineTree.TupleToolGeometry.Verbose = True + +Lb_SL_OfflineTree.addTool(TupleToolRecoStats, name="TupleToolRecoStats") +Lb_SL_OfflineTree.TupleToolRecoStats.Verbose = True +Lb_SL_OfflineTree.UseLabXSyntax = True +Lb_SL_OfflineTree.RevertToPositiveID = False + +from Configurables import TupleToolTrackIsolation +Lb_SL_OfflineTree.addTupleTool('TupleToolTrackIsolation/TrackIsolation') +Lb_SL_OfflineTree.TrackIsolation.MinConeAngle = 0.5 +Lb_SL_OfflineTree.TrackIsolation.MaxConeAngle = 1.5 +Lb_SL_OfflineTree.TrackIsolation.StepSize = 0.1 +Lb_SL_OfflineTree.TrackIsolation.Verbose = True + + +################################################## +#DaVinci().Input = ([ +#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000002_1.allstreams.dst' +#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000003_1.allstreams.dst', +#'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/2012/ALLSTREAMS.DST/00025296/0000/00025296_00000004_1.allstreams.dst' +#]) +from Configurables import DaVinci +#DaVinci().EventPreFilters = fltrs.filters('Filters') +DaVinci().EvtMax = -1 # Number of events +DaVinci().SkipEvents = 0 # Events to skip +DaVinci().PrintFreq = 10000 +DaVinci().Simulation = False +DaVinci().Lumi = True +DaVinci().appendToMainSequence( [ eventNodeKiller ] ) +DaVinci().appendToMainSequence( [ sc.sequence() ] ) +DaVinci().UserAlgorithms = [ HltSelReportsDecoder(), + HltVertexReportsDecoder(), + HltDecReportsDecoder(), + Lc_star, Lb_SL, + Lb_SL_OfflineTree] +DaVinci().TupleFile = "Lb_Lcstarmunu.root" + +#DaVinci().CondDBtag = "Sim08-20130503-1-vc-md100" +#DaVinci().DDDBtag = "Sim08-20130503-1" +#appMgr = AppMgr() +#appMgr.initialize() +#appMgr.run( DaVinci().EvtMax )