def MakeLine(self,name, D0DecayDescriptor, DstDecayDescriptors, D0Requirements): D0CombinationCut = "(AM > 0.1*GeV) & (AM < 3.0*GeV)" D0CombinationCut += " & (AMAXDOCA('') < 0.05 * mm)" D0CombinationCut += " & (ACHILD(MIPDV(PRIMARY),1)+ACHILD(MIPDV(PRIMARY),2) > 0.2*mm)" D0MotherCut = "(VFASPF(VZ) > 2*mm) & (VFASPF(VCHI2/VDOF) < 4.0)" SlowpionCuts = "(MIPCHI2DV(PRIMARY) < 9)" DstMotherCut = "(PT > 1*MeV)" CombD0 = CombineParticles(name="CombD0for"+name, DecayDescriptors = D0DecayDescriptor, CombinationCut = D0CombinationCut, MotherCut = D0MotherCut) SelD0 = Selection('SelD0for'+name, Algorithm = CombD0, RequiredSelections = D0Requirements) CombDstar = CombineParticles(name = "CombDstarFor"+name, DecayDescriptors = DstDecayDescriptors, DaughtersCuts = {"pi+": SlowpionCuts}, CombinationCut = "(AALLSAMEBPV)", MotherCut = DstMotherCut) SelDstar = Selection("SelDstarfor"+name, Algorithm = CombDstar, RequiredSelections = [SelD0,StdAllLoosePions]) SelDstarTOS = TOSFilter("TOSDstarfor"+name, SelDstar, self.__confdict__["TTSpecs"]) MassFilter =FilterDesktop(name="MassFilter"+name, Code="(DTF_CHI2NDOF(True,'D0') < %(Dst_DTFCHI2_MAX)s) & (DTF_FUN( M ,True,'D0') < %(Dst_M_MAX)s)" %self.__confdict__) MassFilterSel = Selection("MassFilterSel"+name, Algorithm = MassFilter, RequiredSelections = [SelDstarTOS]) if self.__confdict__["Monitor"]: MassFilter.Preambulo = [ "Histo = Gaudi.Histo1DDef" , "mass = monitor ( DTF_FUN( M ,True,'D0') , Histo ( 'Title' , 2000. , 2100. , 100 ) , 'HistoNameInMemory' ) " ] MassFilter.Monitor = True , MassFilter.HistoProduce = True , MassFilter.PostMonitor = """ process ( mass ) >> EMPTY """ LineDstar = StrippingLine(name, HLT1 = self.__confdict__["HLT1"], HLT2 = self.__confdict__["HLT2"], selection = MassFilterSel) return LineDstar
from PhysSelPython.Wrappers import AutomaticData, Selection, SelectionSequence # Need to know the address, since this is an old-style selection. # Treat particles already on the DST as data-on-demand JpsiSel = AutomaticData( Location="/Event/Dimuon/Phys/StrippingJpsiInclusiveCombine") # Filter the J/Psi from Configurables import FilterDesktop _jpsiFilter = FilterDesktop('jpsiFilter', Code='ALL') # Add some histograms. See DaVinci tutorial 4. from Configurables import LoKi__Hybrid__PlotTool as PlotTool _jpsiFilter.HistoProduce = True _jpsiFilter.addTool(PlotTool("InputPlots")) _jpsiFilter.InputPlots.Histos = { "P/1000": ('momentum', 0, 150), "PT/1000": ('pt_%1%', 0, 5, 750), "M": ('mass in MeV_%1%_%2%_%3%', 2.8 * Units.GeV, 3.2 * Units.GeV) } _jpsiFilter.addTool(PlotTool("OutputPlots")) _jpsiFilter.OutputPlots.Histos = { "P/1000": ('momentum', 0, 150), "PT/1000": ('pt_%1%', 0, 5, 750), "M": ('mass in MeV_%1%_%2%_%3%', 2.8 * Units.GeV, 3.2 * Units.GeV) } # JpsiFilterSel = Selection(name='JpsiFilterSel',
selSequence = SeqBs2Jpsi2MuMuPhi2KK.SeqBs2Jpsi2MuMuPhi2KK from PhysSelPython.Wrappers import DataOnDemand, Selection, SelectionSequence particleLocation = selSequence.outputLocation() BsSel = DataOnDemand('DOD_Bs', Location = particleLocation) from Configurables import FilterDesktop _bsFilter = FilterDesktop('_bsFilter', Code = 'ALL') from Configurables import LoKi__Hybrid__PlotTool as PlotTool _bsFilter.HistoProduce = True _bsFilter.addTool( PlotTool("InputPlots") ) # Note that it's using the same functors as above. Hence the same syntax. _bsFilter.InputPlots.Histos = { "P/1000" : ('momentum',0,500) , "PT/1000" : ('pt_%1%',0,5,1000) , "M" : ('mass in MeV_%1%_%2%_%3%',5.2*Units.GeV,5.6*Units.GeV) } _bsFilter.addTool( PlotTool("OutputPlots") ) _bsFilter.OutputPlots.Histos = { "P/1000" : ('momentum',0,500) , "PT/1000" : ('pt_%1%',0,5,1000) , "M" : ('mass in MeV_%1%_%2%_%3%',5.2*Units.GeV,5.6*Units.GeV) } _bsFilter.OutputLevel = 1 BsFilterSel = Selection('HelloWorld', Algorithm = _bsFilter, RequiredSelections = [BsSel] )