Пример #1
0
    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',
Пример #3
0
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] )