######################################################################## 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 = 'stripping20' #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 = [ 'Strippingb2LcMuXB2DMuNuXLine' ] for stream in streams: for line in stream.lines: if line.name() in MyLines: print 'Strippingb2LcMuXB2DMuNuXLine' 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/Lc2PKPiforB2DMuNuX/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" } ############################################################################# Lb_SL = CombineParticles("Lb_SL") Lb_SL.Inputs = [ "Phys/MuforB2DMuNuX/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 )