######################################################################## 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().DataType = "2011" # Default is "DC06" 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 )