def fillTuple( tuple, branches, hasPi0, hasPhoton, vectorID ): from Configurables import DecayTreeTuple, TupleToolDecay from Configurables import TupleToolTrigger, TupleToolTISTOS, TupleToolRecoStats from Configurables import TupleToolAngles, LoKi__Hybrid__TupleTool from Configurables import TupleToolPhotonInfo, TupleToolDecayTreeFitter, TupleToolEventInfo from Configurables import TupleToolMCTruth tuple.Branches = branches # Define Trigger list myTriggerListWithPi0 = ["L0HadronDecision","L0MuonDecision","L0DiMuonDecision","L0ElectronDecision","L0PhotonDecision", "Hlt1L0HadronDecision", "Hlt1SingleHadronDecision", "Hlt1DiHadronDecision", "Hlt1TrackAllL0Decision", "Hlt1PhotonDecision", "L0GlobalPi0Decision", "L0LocalPi0Decision", "Hlt1L0GlobalPi0Decision", "Hlt1L0LocalPi0Decision", "Hlt2TopoOSTF2BodyDecision","Hlt2TopoOSTF3BodyDecision","Hlt2TopoOSTF4BodyDecision", ] myTriggerListWithoutPi0 = ["L0HadronDecision","L0MuonDecision","L0DiMuonDecision","L0ElectronDecision","L0PhotonDecision", "Hlt1L0HadronDecision", "Hlt1SingleHadronDecision", "Hlt1DiHadronDecision", "Hlt1TrackAllL0Decision", "Hlt1PhotonDecision", "L0GlobalPi0Decision", "L0LocalPi0Decision", "Hlt1L0GlobalPi0Decision", "Hlt1L0LocalPi0Decision", "Hlt2TopoOSTF2BodyDecision","Hlt2TopoOSTF3BodyDecision","Hlt2TopoOSTF4BodyDecision", ] if hasPi0 == True : print 'Trigger list contains pi0s' myTriggerList = myTriggerListWithPi0 else : print 'Trigger list do not contains pi0s' myTriggerList = myTriggerListWithoutPi0 # Trigger tuple.addTool(TupleToolTrigger()) tuple.TupleToolTrigger.Verbose = True # tuple.TupleToolTrigger.FillL0 = True # tuple.TupleToolTrigger.FillHlt = True # tuple.TupleToolTrigger.UseAutomaticTriggerList = True tuple.TupleToolTrigger.TriggerList = myTriggerList # TISTOS tuple.addTool(TupleToolTISTOS()) tuple.TupleToolTISTOS.Verbose=True tuple.TupleToolTISTOS.TriggerList = myTriggerList # RecoStats for filling SpdMult, etc tuple.addTool(TupleToolRecoStats()) tuple.TupleToolRecoStats.Verbose=True # Standard tools tuple.ToolList = [ "TupleToolEventInfo" , "TupleToolGeneration" , "TupleToolGeometry" , "TupleToolKinematic" , "TupleToolPid" , "TupleToolPrimaries" , "TupleToolRecoStats" , "TupleToolTrackInfo" , "TupleToolTISTOS" , "TupleToolTrigger" , "MCTupleToolEventType" , "MCTupleToolInteractions" , "TupleToolMCBackgroundInfo" , "TupleToolMCTruth" ] tuple.addTool(TupleToolMCTruth()) tuple.TupleToolMCTruth.ToolList = [ "MCTupleToolKinematic" , "MCTupleToolHierarchy" , "MCTupleToolDecayType" , "MCTupleToolReconstructed" ] # LoKi variables LoKi_DOCA = LoKi__Hybrid__TupleTool("LoKi_DOCA") LoKi_DOCA.Variables = { "MAXDOCA" : "LoKi.Particles.PFunA(AMAXDOCA('LoKi::TrgDistanceCalculator'))", "MINDOCA" : "LoKi.Particles.PFunA(AMINDOCA('LoKi::TrgDistanceCalculator'))", "DOCA12" : "LoKi.Particles.PFunA(ADOCA(1,2))" } LoKi_LT = LoKi__Hybrid__TupleTool("LoKi_LT") LoKi_LT.Variables = { "LT_FITCHI2" : "BPVLTFITCHI2('PropertimeFitter/properTime:PUBLIC')", "LT" : "BPVLTIME('PropertimeFitter/properTime:PUBLIC')", "LT_CHI2" : "BPVLTCHI2('PropertimeFitter/properTime:PUBLIC')" } # DOCA if vectorID=='Kstar' : tuple.addTool(TupleToolDecay,name="Kstar") tuple.Kstar.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_DOCA"] tuple.Kstar.addTool(LoKi_DOCA) elif vectorID=='Phi' : tuple.addTool(TupleToolDecay,name="Phi") tuple.Phi.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_DOCA"] tuple.Phi.addTool(LoKi_DOCA) elif vectorID=='Rho' : tuple.addTool(TupleToolDecay,name="Rho") tuple.Rho.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_DOCA"] tuple.Rho.addTool(LoKi_DOCA) tuple.addTool(TupleToolDecay,name="D0") tuple.D0.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_DOCA"] tuple.D0.addTool(LoKi_DOCA) # LifeTime tuple.addTool(TupleToolDecay,name="Bd") tuple.Bd.ToolList += ["LoKi::Hybrid::TupleTool/LoKi_LT"] tuple.Bd.addTool(LoKi_LT) tuple.D0.ToolList+=["LoKi::Hybrid::TupleTool/LoKi_LT"] tuple.D0.addTool(LoKi_LT) # Helicity if vectorID=='Kstar' : tuple.addTool(TupleToolDecay,name="KstarK") tuple.KstarK.ToolList += ["TupleToolAngles"] elif vectorID=='Phi' : tuple.addTool(TupleToolDecay,name="PhiKPlus") tuple.PhiKPlus.ToolList += ["TupleToolAngles"] elif vectorID=='Rho' : tuple.addTool(TupleToolDecay,name="RhoPiPlus") tuple.RhoPiPlus.ToolList += ["TupleToolAngles"] # DecayTreeFitter (pb with merged) if (hasPi0 == False) | (hasPhoton == True) : tuple.Bd.addTool(TupleToolDecayTreeFitter()) tuple.Bd.TupleToolDecayTreeFitter.DaughtersToConstrain = [ 421 ] tuple.Bd.ToolList += ["TupleToolDecayTreeFitter"] # PhotonInfo if (hasPhoton == True) & (hasPi0 == True) : tuple.addTool(TupleToolDecay,name="D0Pi0Gamma") tuple.D0Pi0Gamma.ToolList += ["TupleToolPhotonInfo"] # The Mu info tuple.addTool(TupleToolEventInfo, name="TupleToolEventInfo") tuple.TupleToolEventInfo.Mu = { 81685: 1.22, 81684: 1.31, 81683: 1.37, 81680: 1.46, 81679: 1.61, 81678: 1.67, 81677: 1.68, 81676: 1.90, 81675: 2.02, 81674: 2.07, 81622: 1.20, 81621: 1.25, 81620: 1.28, 81619: 1.34, 81618: 1.36, 81616: 1.40, 81615: 1.46, 81614: 1.48, 81613: 1.48, 81611: 1.49, 81610: 1.52, 81609: 1.54, 81608: 1.56, 81607: 1.63, 81606: 1.63, 81605: 1.65, 81604: 1.73, 81603: 1.81, 81602: 1.87, 81601: 1.90, 81600: 1.96, 81599: 2.08, 81598: 2.08, 81597: 2.15, 81596: 2.27, 81595: 2.28, 81594: 2.35, 81476: 1.74, 81475: 1.74, 81474: 1.77, 81473: 1.84, 81472: 1.89, 81471: 1.91, 81470: 2.00, 81468: 2.05, 81467: 2.09, 81466: 2.09, 81465: 2.22, 81464: 2.27, 81463: 2.31, 81462: 2.39, 81461: 2.46, 81460: 2.49, 81459: 2.51, 81458: 2.53, 81433: 2.39, 81432: 2.55, 81431: 2.60, 81430: 2.64, 81375: 1.53, 81374: 1.53, 81373: 1.54, 81372: 1.57, 81371: 1.62, 81370: 1.66, 81369: 1.66, 81368: 1.72, 81367: 1.73, 81366: 1.73, 81365: 1.73, 81364: 1.82, 81363: 1.89, 81362: 1.93, 81361: 2.02, 81360: 2.04, 81359: 2.15, 81358: 2.17, 81357: 2.31, 81356: 2.33, 81355: 2.36, 81353: 2.52, 81352: 2.60, 81351: 2.61, 81350: 2.69, 81349: 2.70, 81348: 2.70, 81333: 1.52, 81332: 1.53, 81326: 1.59, 81325: 1.60, 81324: 1.65, 81323: 1.66, 81322: 1.68, 81321: 1.75, 81320: 1.84, 81317: 1.86, 81316: 1.87, 81315: 1.97, 81314: 2.08, 81313: 2.17, 81312: 2.21, 81311: 2.27, 81310: 2.34, 80883: 2.49, 80882: 2.53, 80881: 2.56, 80850: 0.91, 80849: 0.94, 80848: 0.95, 80847: 0.99, 80846: 1.04, 80845: 1.08, 80844: 1.12, 80843: 1.16, 80842: 1.21, 80841: 1.29, 80840: 1.38, 80839: 1.39, 80838: 1.47, 80837: 1.50, 80836: 1.50, 80807: 2.35, 80806: 2.35, 80697: 1.29, 80696: 1.32, 80695: 1.47, 80693: 1.54, 80692: 1.56, 80691: 1.66, 80690: 1.72, 80689: 1.74, 80688: 1.83, 80687: 1.96, 80686: 2.16, 80685: 2.21, 80684: 2.23, 80594: 1.21, 80591: 1.26, 80590: 1.33, 80589: 1.37, 80588: 1.47, 80587: 1.54, 80586: 1.66, 80585: 1.75, 80584: 1.85, 80578: 1.93, 80577: 1.96, 80405: 1.48, 80404: 1.48, 80403: 1.53, 80402: 1.56, 80401: 1.65, 80400: 1.70, 80398: 1.71, 80397: 1.77, 80396: 1.91, 80395: 1.92, 80394: 1.95, 80393: 1.95, 80392: 1.96, 80360: 1.43, 80357: 1.49, 80356: 1.55, 80355: 1.58, 80354: 1.64, 80353: 1.73, 80352: 1.73, 80351: 1.83, 80350: 1.96, 80262: 1.83, 80261: 1.92, 80235: 1.01, 80234: 1.01, 80233: 1.01, 80232: 1.05, 80231: 1.09, 80229: 1.11, 80228: 1.12, 80227: 1.16, 80226: 1.21, 80225: 1.27, 80224: 1.33, 80223: 1.40, 80222: 1.43, 80220: 1.59, 80219: 1.59, 80218: 1.60, 80217: 1.68, 80214: 1.68, 80213: 1.68, 80212: 1.68, 80211: 1.71, 80210: 1.72, 80209: 1.73, 80173: 1.40, 80172: 1.41, 80171: 1.42, 80170: 1.46, 80169: 1.51, 80168: 1.61, 80167: 1.70, 80166: 1.76, 80165: 1.80, 80164: 1.80, 80163: 1.81, 80162: 1.83, 80161: 1.88, 80160: 1.91, 80085: 1.13, 80084: 1.15, 80083: 1.16, 80082: 1.41, 80081: 1.64, 80070: 1.45, 80069: 1.43, # this was reverse-engineered from the integrated luminosity. The Lumi reported in the e-log can't be right. 80033: 0.10, 80032: 0.10, 80030: 0.11, 80029: 0.11, 79951: 1.66, 79950: 1.81, 79949: 1.81, 79886: 1.39, 79885: 1.45, 79884: 1.51, 79883: 1.53, 79882: 1.62, 79881: 1.69, 79880: 1.76, 79879: 1.84, 79878: 1.91, 79877: 2.00, 79843: 1.05, 79842: 1.08, 79841: 1.15, 79840: 1.21, 79839: 1.29, 79838: 1.37, 79837: 1.43, 79836: 1.47, 79835: 1.54, 79834: 1.55, 79833: 1.56, 79832: 1.60, 79831: 1.66, 79830: 1.70, 79829: 1.72, 79828: 1.74, 79827: 1.81, 79826: 1.83, 79794: 0.82, 79793: 0.82, 79792: 0.88, 79791: 0.94, 79790: 1.06, 79789: 1.12, 79788: 1.19, 79787: 1.29, 79786: 1.41, 79785: 1.56, 79784: 1.63, 79783: 1.72, 79782: 1.82, 79781: 1.91, 79780: 1.94, 79755: 1.95, 79754: 2.03, 79753: 2.05, 79660: 1.19, 79659: 1.25, 79658: 1.32, 79657: 1.34, 79656: 1.41, 79655: 1.49, 79654: 1.52, 79653: 1.61, 79652: 1.69, 79651: 1.69, 79650: 1.79, 79649: 1.85, 79648: 1.97, 79647: 2.28, 79646: 2.22, 79586: 0.96, 79585: 1.00, 79584: 1.03, 79583: 1.07, 79582: 1.10, 79581: 1.13, 79580: 1.15, 79579: 1.16, 79578: 1.20, 79577: 1.24, 79576: 1.28, 79575: 1.33, 79574: 1.33, 79573: 1.38, 79572: 1.45, 79571: 1.53 } # --------------------------- # Load units and configurables # --------------------------- from Gaudi.Configuration import * importOptions("$STDOPTS/PreloadUnits.opts") from Configurables import LoKi__HDRFilter from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence, EventSelection from Configurables import FilterDesktop from Configurables import DecayTreeTuple, MCDecayTreeTuple ### --------------------------- ### Shared cuts ### --------------------------- ### final state particles ##_TrackCuts = "(MINTREE(('K+'==ABSID) | ('pi+'==ABSID),PT)>250*MeV)"\ ## " & (MINTREE(('K+'==ABSID) | ('pi+'==ABSID),P)>2*GeV)"\ ## " & (MINTREE(('K+'==ABSID) | ('pi+'==ABSID),MIPCHI2DV(PRIMARY))>4)"\ ## " & (MINTREE(('K+'==ABSID) | ('pi+'==ABSID),TRCHI2DOF)<5)" ##_TrackForD02K3PiCuts = "(MINTREE(('K+'==ABSID),PT)>250*MeV)"\ ## " & (MINTREE(('pi+'==ABSID),PT)>150*MeV)"\ ## " & (MINTREE(('K+'==ABSID),P)>3*GeV)"\ ## " & (MINTREE(('pi+'==ABSID),P)>2*GeV)"\ ## " & (MINTREE(('K+'==ABSID) | ('pi+'==ABSID),MIPCHI2DV(PRIMARY))>4)"\ ## " & (MINTREE(('K+'==ABSID) | ('pi+'==ABSID),TRCHI2DOF)<5)" ##_Pi0Cuts = "(MINTREE(('pi0'==ABSID),PT)>600*MeV)"\ ## " & (MINTREE(('pi0'==ABSID),P)>2*GeV)" ##_KstarCuts = "(CHILDCUT(CHILDCUT(PT>300*MeV,1),2))"\ ## " & (CHILDCUT(CHILDCUT(PT>300*MeV,2),2))"\ ## " & (CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>6.25,1),2))"\ ## " & (CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>6.25,2),2))"\ ## " & (MINTREE(('K*(892)0'==ABSID),PT)>1*GeV)"\ ## " & (MINTREE(('K*(892)0'==ABSID),ADMASS('K*(892)0'))<150*MeV)"\ ## " & (MINTREE(('K*(892)0'==ABSID),VFASPF(VCHI2/VDOF))<12)"\ ## " & (MINTREE(('K*(892)0'==ABSID),MIPCHI2DV(PRIMARY))>4)" ##_D02KPiCuts = "(MINTREE(('D0'==ABSID),PT)>1*GeV)"\ ## " & (MINTREE(('D0'==ABSID),ADMASS('D0'))<100*MeV)"\ ## " & (MINTREE(('D0'==ABSID),VFASPF(VCHI2/VDOF))<12)"\ ## " & (MINTREE(('D0'==ABSID),BPVVDCHI2)>36)"\ ## " & (MINTREE(('D0'==ABSID),BPVDIRA)>0.9)"\ ## " & (CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,1),1) | CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,2),1))" ### " & (CHILDCUT(ADOCA(1,2)<1.5*mm,1))" ##_D02K3PiCuts = "(MINTREE(('D0'==ABSID),PT)>2*GeV)"\ ## " & (MINTREE(('D0'==ABSID),ADMASS('D0'))<100*MeV)"\ ## " & (MINTREE(('D0'==ABSID),VFASPF(VCHI2/VDOF))<10)"\ ## " & (MINTREE(('D0'==ABSID),BPVVDCHI2)>36)"\ ## " & (MINTREE(('D0'==ABSID),BPVDIRA)>0.9)"\ ## " & (CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,1),1) | CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,2),1))" ### " & (MINTREE(('D0'==ABSID),AMAXDOCA('LoKi::TrgDistanceCalculator'))<1.5*mm)" ##_D02KPiPi0Cuts = "(MINTREE(('D0'==ABSID),PT)>2*GeV)"\ ## " & (MINTREE(('D0'==ABSID),ADMASS('D0'))<150*MeV)"\ ## " & (MINTREE(('D0'==ABSID),VFASPF(VCHI2/VDOF))<10)"\ ## " & (MINTREE(('D0'==ABSID),BPVVDCHI2)>36)"\ ## " & (MINTREE(('D0'==ABSID),BPVDIRA)>0.9)"\ ## " & (CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,1),1) | CHILDCUT(CHILDCUT(MIPCHI2DV(PRIMARY)>40,2),1))" ### " & (MINTREE(('D0'==ABSID),ADOCA('LoKi::TrgDistanceCalculator'))<1.5*mm)" ##_BdCuts = "((MINTREE(('B0'==ABSID),ADMASS('B0'))<500*MeV) | (MINTREE(('B0'==ABSID),ADMASS('B_s0'))<500*MeV))"\ ## " & (MINTREE(('B0'==ABSID),VFASPF(VCHI2/VDOF))<10)"\ ## " & (MINTREE(('B0'==ABSID),BPVIPCHI2())<12.25)"\ ## " & (MINTREE(('B0'==ABSID),BPVVDCHI2)>100)"\ ## " & (MINTREE(('B0'==ABSID),BPVLTIME())>0.2*ps)"\ ## " & (MINTREE(('B0'==ABSID),BPVDIRA)>0.9998)" # --------------------------- # B02D0Kstar_D02KPi sequence # --------------------------- # Tupling B02D0Kstar_D02KPi B02D0Kstar_D02KPi_Location = '/Event/AllStreams/Phys/B2DXWithD2hhLine' B02D0Kstar_D02KPi_Tuple = DecayTreeTuple("B02D0Kstar_D02KPi_Tuple") B02D0Kstar_D02KPi_Tuple.Decay = "{[B0 -> (^D0 -> ^K- ^pi+) (^K*(892)0 -> ^K+ ^pi-)]cc,[B0 -> (^D~0 -> ^K+ ^pi-) (^K*(892)0 -> ^K+ ^pi-) ]cc}" B02D0Kstar_D02KPi_Tuple.InputLocations = [ "SelB02D0Kstar_D02KPi" ] B02D0Kstar_D02KPi_hasPi0 = False B02D0Kstar_D02KPi_hasPhoton = False B02D0Kstar_D02KPi_vectorID = 'Kstar' B02D0Kstar_D02KPi_Branches = { "KstarK" : "{[B0 -> (D0 -> K- pi+) (K*(892)0 -> ^K+ pi-) ]cc, [B0 -> (D~0 -> K+ pi-) (K*(892)0 -> ^K+ pi-) ]cc}" ,"D0K" : "{[B0 -> (D0 -> ^K- pi+) (K*(892)0 -> K+ pi-) ]cc, [B0 -> (D~0 -> ^K+ pi-) (K*(892)0 -> K+ pi-) ]cc}" ,"KstarPi" : "{[B0 -> (D0 -> K- pi+) (K*(892)0 -> K+ ^pi-) ]cc, [B0 -> (D~0 -> K+ pi-) (K*(892)0 -> K+ ^pi-) ]cc}" ,"D0Pi" : "{[B0 -> (D0 -> K- ^pi+) (K*(892)0 -> K+ pi-) ]cc, [B0 -> (D~0 -> K+ ^pi-) (K*(892)0 -> K+ pi-) ]cc}" ,"Kstar" : "{[B0 -> (D0 -> K- pi+) (^K*(892)0 -> K+ pi-) ]cc, [B0 -> (D~0 -> K+ pi-) (^K*(892)0 -> K+ pi-) ]cc}" ,"D0" : "{[B0 -> (^D0 -> K- pi+) (K*(892)0 -> K+ pi-) ]cc, [B0 -> (^D~0 -> K+ pi-) (K*(892)0 -> K+ pi-) ]cc}" ,"Bd" : "[B0]cc: {[B0 -> (D0 -> K- pi+) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi-) (K*(892)0 -> K+ pi-) ]cc}" } fillTuple( B02D0Kstar_D02KPi_Tuple, B02D0Kstar_D02KPi_Branches, B02D0Kstar_D02KPi_hasPi0, B02D0Kstar_D02KPi_hasPhoton, B02D0Kstar_D02KPi_vectorID ) B02D0Kstar_D02KPi_MCTuple = MCDecayTreeTuple("B02D0Kstar_D02KPi_MCTuple") B02D0Kstar_D02KPi_MCTuple.Decay ="[[B0]nos -> (^K*(892)0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (^D0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (^K*(892)0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (^D0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (^K*(892)0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (^D~0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (^K*(892)0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (^D~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (^K*(892)~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (^D0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (^K*(892)~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (^D0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (^K*(892)~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (^D~0 -> ^K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (^K*(892)~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (^D~0 -> ^K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" B02D0Kstar_D02KPi_MCTuple.Branches = { "KstarK" : "[[B0]nos -> (K*(892)0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"D0K" : "[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> ^K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> ^K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"KstarPi" : "[[B0]nos -> (K*(892)0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"D0Pi" : "[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ ^pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- ^pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"Kstar" : "[K*(892)0]cc : [[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"D0" : "[D0]cc : [[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" ,"Bd" : "[B0]cc : [[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]nos -> (K*(892)0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma} ) (D0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K+ pi- {,gamma}{,gamma}{,gamma}{,gamma})]cc,[[B0]os -> (K*(892)~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma}) (D~0 -> K- pi+ {,gamma}{,gamma}{,gamma}{,gamma})]cc" } B02D0Kstar_D02KPi_MCTuple.ToolList += [ "MCTupleToolKinematic" , "MCTupleToolHierarchy" , "MCTupleToolDecayType" , "MCTupleToolReconstructed" ] # Filter on Stripping Sequence B02D0Kstar_D02KPi_StripPassFilter = LoKi__HDRFilter( 'B02D0Kstar_D02KPi_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2hhLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Kstar_D02KPi_Cuts = _TrackCuts + " & " + _KstarCuts + " & " + _D02KPiCuts + " & " + _BdCuts _B02D0Kstar_D02KPi_Data = AutomaticData(Location = B02D0Kstar_D02KPi_Location ) _B02D0Kstar_D02KPi_Filter = FilterDesktop('_B02D0Kstar_D02KPi_Filter', ## Code = _B02D0Kstar_D02KPi_Cuts Code = "ALL" ) SelB02D0Kstar_D02KPi = Selection("SelB02D0Kstar_D02KPi", Algorithm = _B02D0Kstar_D02KPi_Filter, RequiredSelections = [ _B02D0Kstar_D02KPi_Data ] ) SeqB02D0Kstar_D02KPi = SelectionSequence( "SeqB02D0Kstar_D02KPi", TopSelection=SelB02D0Kstar_D02KPi ) # Write Dst from Configurables import SelDSTWriter B02D0Kstar_D02KPi_DSTWriter = SelDSTWriter("B02D0Kstar_D02KPi_DSTWriter", SelectionSequences = [ SeqB02D0Kstar_D02KPi ], OutputFileSuffix = 'R08S12b' ) B02D0Kstar_D02KPi_Sequence = GaudiSequencer("B02D0Kstar_D02KPi_Sequence") B02D0Kstar_D02KPi_Sequence.Members += [ B02D0Kstar_D02KPi_MCTuple ] B02D0Kstar_D02KPi_Sequence.Members += [ B02D0Kstar_D02KPi_StripPassFilter ] B02D0Kstar_D02KPi_Sequence.Members += [ SeqB02D0Kstar_D02KPi.sequence() ] #B02D0Kstar_D02KPi_Sequence.Members += [ B02D0Kstar_D02KPi_DSTWriter.sequence() ] B02D0Kstar_D02KPi_Sequence.Members += [ B02D0Kstar_D02KPi_Tuple ] # --------------------------- # B02D0Kstar_D02K3Pi sequence # --------------------------- # Tupling B02D0Kstar_D02K3Pi B02D0Kstar_D02K3Pi_Location = '/Event/AllStreams/Phys/B2DXWithD2hhhhLine' B02D0Kstar_D02K3Pi_Tuple = DecayTreeTuple("B02D0Kstar_D02K3Pi_Tuple") B02D0Kstar_D02K3Pi_Tuple.Decay = "{[B0 -> (^D0 -> ^K- ^pi+ ^pi- ^pi+ ) (^K*(892)0 -> ^K+ ^pi-) ]cc, [B0 -> (^D~0 -> ^K+ ^pi- ^pi+ ^pi- ) (^K*(892)0 -> ^K+ ^pi-) ]cc}" B02D0Kstar_D02K3Pi_Tuple.InputLocations = [ "SelB02D0Kstar_D02K3Pi" ] B02D0Kstar_D02K3Pi_hasPi0 = False B02D0Kstar_D02K3Pi_hasPhoton = False B02D0Kstar_D02K3Pi_vectorID = 'Kstar' B02D0Kstar_D02K3Pi_Branches = { "KstarK" : "{[B0 -> (D0 -> K- pi+ pi- pi+ ) (K*(892)0 -> ^K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi- pi+ pi- ) (K*(892)0 -> ^K+ pi-) ]cc}" ,"D0K" : "{[B0 -> (D0 -> ^K- pi+ pi- pi+ ) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> ^K+ pi- pi+ pi- ) (K*(892)0 -> K+ pi-) ]cc}" ,"KstarPi" : "{[B0 -> (D0 -> K- pi+ pi- pi+ ) (K*(892)0 -> K+ ^pi-) ]cc,[B0 -> (D~0 -> K+ pi- pi+ pi- ) (K*(892)0 -> K+ ^pi-) ]cc}" ,"D0PiOS1" : "{[B0 -> (D0 -> K- ^pi+ pi- pi+) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ ^pi- pi+ pi- ) (K*(892)0 -> K+ pi-) ]cc}" ,"D0PiSS" : "{[B0 -> (D0 -> K- pi+ ^pi- pi+) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi- ^pi+ pi- ) (K*(892)0 -> K+ pi-) ]cc}" ,"D0PiOS2" : "{[B0 -> (D0 -> K- pi+ pi- ^pi+) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi- pi+ ^pi- ) (K*(892)0 -> K+ pi-) ]cc}" ,"Kstar" : "{[B0 -> (D0 -> K- pi+ pi- pi+ ) (^K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi- pi+ pi- ) (^K*(892)0 -> K+ pi-) ]cc}" ,"D0" : "{[B0 -> (^D0 -> K- pi+ pi- pi+) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (^D~0 -> K+ pi- pi+ pi- ) (K*(892)0 -> K+ pi-) ]cc}" ,"Bd" : "[B0]cc: {[B0 -> (D0 -> K- pi+ pi- pi+ ) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> K+ pi- pi+ pi- ) (K*(892)0 -> K+ pi-) ]cc}" } fillTuple( B02D0Kstar_D02K3Pi_Tuple, B02D0Kstar_D02K3Pi_Branches, B02D0Kstar_D02K3Pi_hasPi0, B02D0Kstar_D02K3Pi_hasPhoton, B02D0Kstar_D02K3Pi_vectorID ) # Filter on Stripping Sequence B02D0Kstar_D02K3Pi_StripPassFilter = LoKi__HDRFilter( 'B02D0Kstar_D02K3Pi_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2hhhhLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Kstar_D02K3Pi_Cuts = _TrackForD02K3PiCuts + " & " + _KstarCuts + " & " + _D02K3PiCuts + " & " + _BdCuts _B02D0Kstar_D02K3Pi_Data = AutomaticData(Location = B02D0Kstar_D02K3Pi_Location ) _B02D0Kstar_D02K3Pi_Filter = FilterDesktop('_B02D0Kstar_D02K3Pi_Filter', ## Code = _B02D0Kstar_D02K3Pi_Cuts Code = "ALL" ) SelB02D0Kstar_D02K3Pi = Selection("SelB02D0Kstar_D02K3Pi", Algorithm = _B02D0Kstar_D02K3Pi_Filter, RequiredSelections = [ _B02D0Kstar_D02K3Pi_Data ] ) SeqB02D0Kstar_D02K3Pi = SelectionSequence( "SeqB02D0Kstar_D02K3Pi", TopSelection=SelB02D0Kstar_D02K3Pi ) # Write Dst from Configurables import SelDSTWriter B02D0Kstar_D02K3Pi_DSTWriter = SelDSTWriter("B02D0Kstar_D02K3Pi_DSTWriter", SelectionSequences = [ SeqB02D0Kstar_D02K3Pi ], OutputFileSuffix = 'R08S12b' ) B02D0Kstar_D02K3Pi_Sequence = GaudiSequencer("B02D0Kstar_D02K3Pi_Sequence") B02D0Kstar_D02K3Pi_Sequence.Members += [ B02D0Kstar_D02K3Pi_StripPassFilter ] B02D0Kstar_D02K3Pi_Sequence.Members += [ SeqB02D0Kstar_D02K3Pi.sequence() ] #B02D0Kstar_D02K3Pi_Sequence.Members += [ B02D0Kstar_D02K3Pi_DSTWriter.sequence() ] B02D0Kstar_D02K3Pi_Sequence.Members += [ B02D0Kstar_D02K3Pi_Tuple ] # --------------------------- # B02D0Kstar_D02KPiPi0Resolved sequence # --------------------------- # Tupling B02D0Kstar_D02KPiPi0Resolved B02D0Kstar_D02KPiPi0Resolved_Location = '/Event/AllStreams/Phys/B2DXWithD2KPiPi0ResolvedLine' B02D0Kstar_D02KPiPi0Resolved_Tuple = DecayTreeTuple("B02D0Kstar_D02KPiPi0Resolved_Tuple") B02D0Kstar_D02KPiPi0Resolved_Tuple.Decay = "{[B0 -> (^D0 -> (^pi0 -> ^gamma ^gamma) ^pi+ ^K-) (^K*(892)0 -> ^K+ ^pi-) ]cc,[B0 -> (^D~0 -> (^pi0 -> ^gamma ^gamma) ^pi- ^K+) (^K*(892)0 -> ^K+ ^pi-) ]cc}" B02D0Kstar_D02KPiPi0Resolved_Tuple.InputLocations = [ "SelB02D0Kstar_D02KPiPi0Resolved" ] B02D0Kstar_D02KPiPi0Resolved_hasPi0 = True B02D0Kstar_D02KPiPi0Resolved_hasPhoton = True B02D0Kstar_D02KPiPi0Resolved_vectorID = 'Kstar' B02D0Kstar_D02KPiPi0Resolved_Branches = { "KstarK" : "{[B0 -> (D0 -> (pi0 -> gamma gamma) pi+ K- ) (K*(892)0 -> ^K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) pi- K+ ) (K*(892)0 -> ^K+ pi-) ]cc}" ,"D0K" : "{[B0 -> (D0 -> (pi0 -> gamma gamma) pi+ ^K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) pi- ^K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"KstarPi" : "{[B0 -> (D0 -> (pi0 -> gamma gamma) pi+ K- ) (K*(892)0 -> K+ ^pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) pi- K+ ) (K*(892)0 -> K+ ^pi-) ]cc}" ,"D0Pi" : "{[B0 -> (D0 -> (pi0 -> gamma gamma) ^pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) ^pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"D0Pi0" : "{[B0 -> (D0 -> (^pi0 -> gamma gamma) pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (^pi0 -> gamma gamma) pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"D0Pi0Gamma" : "{[B0 -> (D0 -> (pi0 -> ^gamma ^gamma) pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> ^gamma ^gamma) pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"Kstar" : "{[B0 -> (D0 -> (pi0 -> gamma gamma) pi+ K- ) (^K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) pi- K+ ) (^K*(892)0 -> K+ pi-) ]cc}" ,"D0" : "{[B0 -> (^D0 -> (pi0 -> gamma gamma) pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (^D~0 -> (pi0 -> gamma gamma) pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"Bd" : "[B0]cc: {[B0 -> (D0 -> (pi0 -> gamma gamma) pi+ K- ) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> (pi0 -> gamma gamma) pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" } fillTuple( B02D0Kstar_D02KPiPi0Resolved_Tuple, B02D0Kstar_D02KPiPi0Resolved_Branches, B02D0Kstar_D02KPiPi0Resolved_hasPi0, B02D0Kstar_D02KPiPi0Resolved_hasPhoton, B02D0Kstar_D02KPiPi0Resolved_vectorID ) # Filter on Stripping Sequence B02D0Kstar_D02KPiPi0Resolved_StripPassFilter = LoKi__HDRFilter( 'B02D0Kstar_D02KPiPi0Resolved_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2KPiPi0ResolvedLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Kstar_D02KPiPi0Resolved_Cuts = _Pi0Cuts + " & " + _TrackCuts + " & " + _KstarCuts + " & " + _D02KPiPi0Cuts + " & " + _BdCuts _B02D0Kstar_D02KPiPi0Resolved_Data = AutomaticData(Location = B02D0Kstar_D02KPiPi0Resolved_Location ) _B02D0Kstar_D02KPiPi0Resolved_Filter = FilterDesktop('_B02D0Kstar_D02KPiPi0Resolved_Filter', ## Code = _B02D0Kstar_D02KPiPi0Resolved_Cuts Code = "ALL" ) SelB02D0Kstar_D02KPiPi0Resolved = Selection("SelB02D0Kstar_D02KPiPi0Resolved", Algorithm = _B02D0Kstar_D02KPiPi0Resolved_Filter, RequiredSelections = [ _B02D0Kstar_D02KPiPi0Resolved_Data ] ) SeqB02D0Kstar_D02KPiPi0Resolved = SelectionSequence( "SeqB02D0Kstar_D02KPiPi0Resolved", TopSelection=SelB02D0Kstar_D02KPiPi0Resolved ) # Write Dst from Configurables import SelDSTWriter B02D0Kstar_D02KPiPi0Resolved_DSTWriter = SelDSTWriter("B02D0Kstar_D02KPiPi0Resolved_DSTWriter", SelectionSequences = [ SeqB02D0Kstar_D02KPiPi0Resolved ], OutputFileSuffix = 'R08S12b' ) B02D0Kstar_D02KPiPi0Resolved_Sequence = GaudiSequencer("B02D0Kstar_D02KPiPi0Resolved_Sequence") B02D0Kstar_D02KPiPi0Resolved_Sequence.Members += [ B02D0Kstar_D02KPiPi0Resolved_StripPassFilter ] B02D0Kstar_D02KPiPi0Resolved_Sequence.Members += [ SeqB02D0Kstar_D02KPiPi0Resolved.sequence() ] #B02D0Kstar_D02KPiPi0Resolved_Sequence.Members += [ B02D0Kstar_D02KPiPi0Resolved_DSTWriter.sequence() ] B02D0Kstar_D02KPiPi0Resolved_Sequence.Members += [ B02D0Kstar_D02KPiPi0Resolved_Tuple ] # --------------------------- # B02D0Kstar_D02KPiPi0Merged sequence # --------------------------- # Tupling B02D0Kstar_D02KPiPi0Merged B02D0Kstar_D02KPiPi0Merged_Location = '/Event/AllStreams/Phys/B2DXWithD2KPiPi0MergedLine' B02D0Kstar_D02KPiPi0Merged_Tuple = DecayTreeTuple("B02D0Kstar_D02KPiPi0Merged_Tuple") B02D0Kstar_D02KPiPi0Merged_Tuple.Decay = "{[B0 -> (^D0 -> ^pi0 ^pi+ ^K-) (^K*(892)0 -> ^K+ ^pi-) ]cc,[B0 -> (^D~0 -> ^pi0 ^pi- ^K+) (^K*(892)0 -> ^K+ ^pi-) ]cc}" B02D0Kstar_D02KPiPi0Merged_Tuple.InputLocations = [ "SelB02D0Kstar_D02KPiPi0Merged" ] B02D0Kstar_D02KPiPi0Merged_hasPi0 = True B02D0Kstar_D02KPiPi0Merged_hasPhoton = False B02D0Kstar_D02KPiPi0Merged_vectorID = 'Kstar' B02D0Kstar_D02KPiPi0Merged_Branches = { "KstarK" : "{[B0 -> (D0 -> pi0 pi+ K- ) (K*(892)0 -> ^K+ pi-) ]cc,[B0 -> (D~0 -> pi0 pi- K+ ) (K*(892)0 -> ^K+ pi-) ]cc}" ,"D0K" : "{[B0 -> (D0 -> pi0 pi+ ^K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> pi0 pi- ^K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"KstarPi" : "{[B0 -> (D0 -> pi0 pi+ K- ) (K*(892)0 -> K+ ^pi-) ]cc,[B0 -> (D~0 -> pi0 pi- K+ ) (K*(892)0 -> K+ ^pi-) ]cc}" ,"D0Pi" : "{[B0 -> (D0 -> pi0 ^pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> pi0 ^pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"D0Pi0" : "{[B0 -> (D0 -> ^pi0 pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> ^pi0 pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"Kstar" : "{[B0 -> (D0 -> pi0 pi+ K- ) (^K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> pi0 pi- K+ ) (^K*(892)0 -> K+ pi-) ]cc}" ,"D0" : "{[B0 -> (^D0 -> pi0 pi+ K-) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (^D~0 -> pi0 pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" ,"Bd" : "[B0]cc: {[B0 -> (D0 -> pi0 pi+ K- ) (K*(892)0 -> K+ pi-) ]cc,[B0 -> (D~0 -> pi0 pi- K+ ) (K*(892)0 -> K+ pi-) ]cc}" } fillTuple( B02D0Kstar_D02KPiPi0Merged_Tuple, B02D0Kstar_D02KPiPi0Merged_Branches, B02D0Kstar_D02KPiPi0Merged_hasPi0, B02D0Kstar_D02KPiPi0Merged_hasPhoton, B02D0Kstar_D02KPiPi0Merged_vectorID ) # Filter on Stripping Sequence B02D0Kstar_D02KPiPi0Merged_StripPassFilter = LoKi__HDRFilter( 'B02D0Kstar_D02KPiPi0Merged_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2KPiPi0MergedLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Kstar_D02KPiPi0Merged_Cuts = _Pi0Cuts + " & " + _TrackCuts + " & " + _KstarCuts + " & " + _D02KPiPi0Cuts + " & " + _BdCuts _B02D0Kstar_D02KPiPi0Merged_Data = AutomaticData(Location = B02D0Kstar_D02KPiPi0Merged_Location ) _B02D0Kstar_D02KPiPi0Merged_Filter = FilterDesktop('_B02D0Kstar_D02KPiPi0Merged_Filter', ## Code = _B02D0Kstar_D02KPiPi0Merged_Cuts Code = "ALL" ) SelB02D0Kstar_D02KPiPi0Merged = Selection("SelB02D0Kstar_D02KPiPi0Merged", Algorithm = _B02D0Kstar_D02KPiPi0Merged_Filter, RequiredSelections = [ _B02D0Kstar_D02KPiPi0Merged_Data ] ) SeqB02D0Kstar_D02KPiPi0Merged = SelectionSequence( "SeqB02D0Kstar_D02KPiPi0Merged", TopSelection=SelB02D0Kstar_D02KPiPi0Merged ) # Write Dst from Configurables import SelDSTWriter B02D0Kstar_D02KPiPi0Merged_DSTWriter = SelDSTWriter("B02D0Kstar_D02KPiPi0Merged_DSTWriter", SelectionSequences = [ SeqB02D0Kstar_D02KPiPi0Merged ], OutputFileSuffix = 'R08S12b' ) B02D0Kstar_D02KPiPi0Merged_Sequence = GaudiSequencer("B02D0Kstar_D02KPiPi0Merged_Sequence") B02D0Kstar_D02KPiPi0Merged_Sequence.Members += [ B02D0Kstar_D02KPiPi0Merged_StripPassFilter ] B02D0Kstar_D02KPiPi0Merged_Sequence.Members += [ SeqB02D0Kstar_D02KPiPi0Merged.sequence() ] #B02D0Kstar_D02KPiPi0Merged_Sequence.Members += [ B02D0Kstar_D02KPiPi0Merged_DSTWriter.sequence() ] B02D0Kstar_D02KPiPi0Merged_Sequence.Members += [ B02D0Kstar_D02KPiPi0Merged_Tuple ] # --------------------------- # B02D0Rho_D02KPi sequence # --------------------------- # Tupling B02D0Rho_D02KPi B02D0Rho_D02KPi_Location = '/Event/AllStreams/Phys/B2DXWithD2hhLine' B02D0Rho_D02KPi_Tuple = DecayTreeTuple("B02D0Rho_D02KPi_Tuple") B02D0Rho_D02KPi_Tuple.Decay = "{B0 -> (^D0 -> ^K- ^pi+) (^rho(770)0 -> ^pi+ ^pi-),B0 -> (^D~0 -> ^K+ ^pi-) (^rho(770)0 -> ^pi+ ^pi-)}" B02D0Rho_D02KPi_Tuple.InputLocations = [ "SelB02D0Rho_D02KPi" ] B02D0Rho_D02KPi_hasPi0 = False B02D0Rho_D02KPi_hasPhoton = False B02D0Rho_D02KPi_vectorID = 'Rho' B02D0Rho_D02KPi_Branches = { "RhoPiPlus" : "{B0 -> (D0 -> K- pi+) (rho(770)0 -> ^pi+ pi-), B0 -> (D~0 -> K+ pi-) (rho(770)0 -> ^pi+ pi-)}" ,"D0K" : "{B0 -> (D0 -> ^K- pi+) (rho(770)0 -> pi+ pi-) , B0 -> (D~0 -> ^K+ pi-) (rho(770)0 -> pi+ pi-) }" ,"RhoPiMinus": "{B0 -> (D0 -> K- pi+) (rho(770)0 -> pi+ ^pi-), B0 -> (D~0 -> K+ pi-) (rho(770)0 -> pi+ ^pi-)}" ,"D0Pi" : "{B0 -> (D0 -> K- ^pi+) (rho(770)0 -> pi+ pi-) , B0 -> (D~0 -> K+ ^pi-) (rho(770)0 -> pi+ pi-) }" ,"Rho" : "{B0 -> (D0 -> K- pi+) (^rho(770)0 -> pi+ pi-), B0 -> (D~0 -> K+ pi-) (^rho(770)0 -> pi+ pi-)}" ,"D0" : "{B0 -> (^D0 -> K- pi+) (rho(770)0 -> pi+ pi-) , B0 -> (^D~0 -> K+ pi-) (rho(770)0 -> pi+ pi-) }" ,"Bd" : "[B0]cc: {B0 -> (D0 -> K- pi+) (rho(770)0 -> pi+ pi-), B0 -> (D~0 -> K+ pi-) (rho(770)0 -> pi+ pi-)}" } fillTuple( B02D0Rho_D02KPi_Tuple, B02D0Rho_D02KPi_Branches, B02D0Rho_D02KPi_hasPi0, B02D0Rho_D02KPi_hasPhoton, B02D0Rho_D02KPi_vectorID ) # Filter on Stripping Sequence B02D0Rho_D02KPi_StripPassFilter = LoKi__HDRFilter( 'B02D0Rho_D02KPi_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2hhLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Rho_D02KPi_Cuts = _TrackCuts + " & " + _RhoCuts + " & " + _D02KPiCuts + " & " + _BdCuts _B02D0Rho_D02KPi_Data = AutomaticData(Location = B02D0Rho_D02KPi_Location ) _B02D0Rho_D02KPi_Filter = FilterDesktop('_B02D0Rho_D02KPi_Filter', ## Code = _B02D0Rho_D02KPi_Cuts Code = "ALL" ) SelB02D0Rho_D02KPi = Selection("SelB02D0Rho_D02KPi", Algorithm = _B02D0Rho_D02KPi_Filter, RequiredSelections = [ _B02D0Rho_D02KPi_Data ] ) SeqB02D0Rho_D02KPi = SelectionSequence( "SeqB02D0Rho_D02KPi", TopSelection=SelB02D0Rho_D02KPi ) # Write Dst from Configurables import SelDSTWriter B02D0Rho_D02KPi_DSTWriter = SelDSTWriter("B02D0Rho_D02KPi_DSTWriter", SelectionSequences = [ SeqB02D0Rho_D02KPi ], OutputFileSuffix = 'R08S12b' ) B02D0Rho_D02KPi_Sequence = GaudiSequencer("B02D0Rho_D02KPi_Sequence") B02D0Rho_D02KPi_Sequence.Members += [ B02D0Rho_D02KPi_StripPassFilter ] B02D0Rho_D02KPi_Sequence.Members += [ SeqB02D0Rho_D02KPi.sequence() ] #B02D0Rho_D02KPi_Sequence.Members += [ B02D0Rho_D02KPi_DSTWriter.sequence() ] B02D0Rho_D02KPi_Sequence.Members += [ B02D0Rho_D02KPi_Tuple ] # --------------------------- # B02D0Phi_D02KPi sequence # --------------------------- # Tupling B02D0Phi_D02KPi B02D0Phi_D02KPi_Location = '/Event/AllStreams/Phys/B2DXWithD2hhLine' B02D0Phi_D02KPi_Tuple = DecayTreeTuple("B02D0Phi_D02KPi_Tuple") B02D0Phi_D02KPi_Tuple.Decay = "{B0 -> (^D0 -> ^K- ^pi+) (^phi(1020) -> ^K+ ^K-),B0 -> (^D~0 -> ^K+ ^pi-) (^phi(1020) -> ^K+ ^K-)}" B02D0Phi_D02KPi_Tuple.InputLocations = [ "SelB02D0Phi_D02KPi" ] B02D0Phi_D02KPi_hasPi0 = False B02D0Phi_D02KPi_hasPhoton = False B02D0Phi_D02KPi_vectorID = 'Phi' B02D0Phi_D02KPi_Branches = { "PhiKPlus" : "{B0 -> (D0 -> K- pi+) (phi(1020) -> ^K+ K-), B0 -> (D~0 -> K+ pi-) (phi(1020) -> ^K+ K-)}" ,"D0K" : "{B0 -> (D0 -> ^K- pi+) (phi(1020) -> K+ K-) , B0 -> (D~0 -> ^K+ pi-) (phi(1020) -> K+ K-) }" ,"PhiKMinus": "{B0 -> (D0 -> K- pi+) (phi(1020) -> K+ ^K-), B0 -> (D~0 -> K+ pi-) (phi(1020) -> K+ ^K-)}" ,"D0Pi" : "{B0 -> (D0 -> K- ^pi+) (phi(1020) -> K+ K-) , B0 -> (D~0 -> K+ ^pi-) (phi(1020) -> K+ K-) }" ,"Phi" : "{B0 -> (D0 -> K- pi+) (^phi(1020) -> K+ K-), B0 -> (D~0 -> K+ pi-) (^phi(1020) -> K+ K-)}" ,"D0" : "{B0 -> (^D0 -> K- pi+) (phi(1020) -> K+ K-) , B0 -> (^D~0 -> K+ pi-) (phi(1020) -> K+ K-) }" ,"Bd" : "[B0]cc: {B0 -> (D0 -> K- pi+) (phi(1020) -> K+ K-), B0 -> (D~0 -> K+ pi-) (phi(1020) -> K+ K-)}" } fillTuple( B02D0Phi_D02KPi_Tuple, B02D0Phi_D02KPi_Branches, B02D0Phi_D02KPi_hasPi0, B02D0Phi_D02KPi_hasPhoton, B02D0Phi_D02KPi_vectorID ) # Filter on Stripping Sequence B02D0Phi_D02KPi_StripPassFilter = LoKi__HDRFilter( 'B02D0Phi_D02KPi_StripPassFilter', Code="HLT_PASS('StrippingB2DXWithD2hhLineDecision')", Location="/Event/Strip/Phys/DecReports" ) # Filter on existing candidates to reduce the rate ##_B02D0Phi_D02KPi_Cuts = _TrackCuts + " & " + _PhiCuts + " & " + _D02KPiCuts + " & " + _BdCuts _B02D0Phi_D02KPi_Data = AutomaticData(Location = B02D0Phi_D02KPi_Location ) _B02D0Phi_D02KPi_Filter = FilterDesktop('_B02D0Phi_D02KPi_Filter', ## Code = _B02D0Phi_D02KPi_Cuts Code = "ALL" ) SelB02D0Phi_D02KPi = Selection("SelB02D0Phi_D02KPi", Algorithm = _B02D0Phi_D02KPi_Filter, RequiredSelections = [ _B02D0Phi_D02KPi_Data ] ) SeqB02D0Phi_D02KPi = SelectionSequence( "SeqB02D0Phi_D02KPi", TopSelection=SelB02D0Phi_D02KPi ) # Write Dst from Configurables import SelDSTWriter B02D0Phi_D02KPi_DSTWriter = SelDSTWriter("B02D0Phi_D02KPi_DSTWriter", SelectionSequences = [ SeqB02D0Phi_D02KPi ], OutputFileSuffix = 'R08S12b' ) B02D0Phi_D02KPi_Sequence = GaudiSequencer("B02D0Phi_D02KPi_Sequence") B02D0Phi_D02KPi_Sequence.Members += [ B02D0Phi_D02KPi_StripPassFilter ] B02D0Phi_D02KPi_Sequence.Members += [ SeqB02D0Phi_D02KPi.sequence() ] #B02D0Phi_D02KPi_Sequence.Members += [ B02D0Phi_D02KPi_DSTWriter.sequence() ] B02D0Phi_D02KPi_Sequence.Members += [ B02D0Phi_D02KPi_Tuple ] #----------------------- # complete DST and Tuple sequencer #----------------------- seqSel = GaudiSequencer("seqSel") seqSel.ModeOR = 1 seqSel.IgnoreFilterPassed = True seqSel.Members += [ B02D0Kstar_D02KPi_Sequence ] #seqSel.Members += [ B02D0Phi_D02KPi_Sequence ] #seqSel.Members += [ B02D0Rho_D02KPi_Sequence ] #seqSel.Members += [ B02D0Kstar_D02K3Pi_Sequence ] #seqSel.Members += [ B02D0Kstar_D02KPiPi0Resolved_Sequence ] #seqSel.Members += [ B02D0Kstar_D02KPiPi0Merged_Sequence ] ###----------------------- ### Global Event Cut ###----------------------- ##from Configurables import LoKi__VoidFilter as VoidFilter ##from Configurables import LoKi__Hybrid__CoreFactory as CoreFactory ##modules = CoreFactory('CoreFactory').Modules ##for i in ['LoKiTrigger.decorators']: ## if i not in modules : modules.append(i) ## filterNTracks = VoidFilter('FilterNTracks',Code = "TrSOURCE('Rec/Track/Best') >> (TrSIZE < 240)") ## SeqFilterNTracks = SelectionSequence('SeqFilterNTracks', TopSelection = EventSelection(filterNTracks) ) ###----------------------- ### complete DST and Tuple sequencer with GEC ###----------------------- ##seqSelWithGEC = GaudiSequencer("seqSelWithGEC") ##seqSelWithGEC.Members += [ SeqFilterNTracks.sequence() ] ##seqSelWithGEC.Members += [ seqSel ] #----------------------- # Event Pre Filters #----------------------- from PhysConf.Filters import LoKi_Filters evtFilters = LoKi_Filters ( STRIP_Code = """ HLT_PASS('StrippingB2DXWithD2hhLineDecision') | HLT_PASS('StrippingB2DXWithD2hhhhLineDecision') | HLT_PASS('StrippingB2DXWithD2KPiPi0ResolvedLineDecision') | HLT_PASS('StrippingB2DXWithD2KPiPi0MergedLineDecision')""" ## , ## VOID_Code = """ CONTAINS('/Event/AllStreams/Phys/B2DXWithD2hhLine/Particles')>0 | ## CONTAINS('/Event/AllStreams/Phys/B2DXWithD2hhhhLine/Particles')>0 | ## CONTAINS('/Event/AllStreams/Phys/B2DXWithD2KPiPi0ResolvedLine/Particles')>0 | ## CONTAINS('/Event/AllStreams/Phys/B2DXWithD2KPiPi0MergedLine/Particles')>0 ## """ ## VOID_Code = """ EXISTS('/Event/AllStreams/Phys/B2DXWithD2hhLine/Particles') | ## EXISTS('/Event/AllStreams/Phys/B2DXWithD2hhhhLine/Particles') | ## EXISTS('/Event/AllStreams/Phys/B2DXWithD2KPiPi0ResolvedLine/Particles') | ## EXISTS('/Event/AllStreams/Phys/B2DXWithD2KPiPi0MergedLine/Particles') ## """ ) #----------------------- # DaVinci configuration #----------------------- from Configurables import DaVinci DaVinci().EvtMax = -1 # Number of events DaVinci().SkipEvents = 0 # Events to skip DaVinci().PrintFreq = 1000 DaVinci().DataType = "2010" DaVinci().Simulation = True DaVinci().HistogramFile = "DVHistos.root" # Histogram file DaVinci().TupleFile = "DVNtuples.root" # Ntuple ##DaVinci().UserAlgorithms = [ seqSelWithGEC ] # The algorithms DaVinci().UserAlgorithms = [ seqSel ] # The algorithms ##DaVinci().EventPreFilters = evtFilters.filters ('Filters') DaVinci().Lumi = False # database from Configurables import CondDB #CondDB(UseOracle = True) #CondDB().LocalTags["LHCBCOND"] = ['lumi-20100825'] #for lumi. DaVinci().DDDBtag = "head-20101206" DaVinci().CondDBtag = "sim-20101210-vc-md100" #DaVinci().CondDBtag = "sim-20101210-vc-mu100"