from StrippingSelections.StrippingPsiXForBandQ import PsiX_BQ_Conf as PsiX from StrippingSelections.StrippingPsiX0 import PsiX0Conf as PsiX0 def _psi_(self): """ psi(') -> mu+ mu- """ return psis PsiX0.psi = _psi_ PsiX.psi = _psi_ psix = PsiX('PsiX', {}) psix0 = PsiX0('PsiX0', {}) for s in ( psix.psi_pi(), psix.psi_K(), # psix.psi_2pi(), psix.psi_2K(), psix.psi_2Kpi(), ## psix.psi_3pi(), psix.psi_3K(), psix.psi_3Kpi(), ## psix.psi_4pi(), psix.psi_4Kpi(), psix.psi_4K(),
def configure ( inputdata , ## the list of input files catalogs = [] , ## xml-catalogs (filled by GRID) castor = False , ## use the direct access to castor/EOS ? params = {} ) : from PhysSelPython.Wrappers import AutomaticData jpsi_name = 'FullDSTDiMuonJpsi2MuMuDetachedLine' psi2_name = 'FullDSTDiMuonPsi2MuMuDetachedLine' jpsi = AutomaticData ( '/Event/AllStreams/Phys/%s/Particles' % jpsi_name ) psi2s = AutomaticData ( '/Event/AllStreams/Phys/%s/Particles' % psi2_name ) from PhysSelPython.Wrappers import MergedSelection psis = MergedSelection ( 'SelDetachedPsisForBandQ' , RequiredSelections = [ jpsi , psi2s ] ) from StrippingSelections.StrippingPsiXForBandQ import PsiX_BQ_Conf as PsiX from StrippingSelections.StrippingPsiX0 import PsiX0Conf as PsiX0 def _psi_ ( self ) : """ psi(') -> mu+ mu- """ return psis PsiX0 . psi = _psi_ PsiX . psi = _psi_ logger.warning ( "Redefine PsiX .psi" ) psix = PsiX ( 'PsiX' , {} ) psix0 = PsiX0 ( 'PsiX0' , {} ) for s in ( psix.psi_pi () , psix.psi_K () , # psix.psi_2pi () , psix.psi_2K () , psix.psi_2Kpi () , ## psix.psi_3pi () , psix.psi_3K () , psix.psi_3Kpi () , ## psix.psi_4pi () , psix.psi_4Kpi () , psix.psi_4K () , ## psix.psi_5pi () , psix.psi_5K () , psix.psi_5Kpi () , ## psix.psi_6pi () , psix.psi_6Kpi () , ## psix.psi_7pi () , psix.psi_7Kpi () , ## # Lb psix.psi_pK () , psix.psi_ppi () , psix.psi_pKpipi () , ## # 2protons psix.psi_pp () , psix.psi_pppi () , psix.psi_ppK () , psix.psi_pppipi () , psix.psi_ppKpipi () , psix.psi_pppipipi () , ## ) : a = s.algorithm () a.ParticleCombiners = { '' : 'LoKi::VertexFitter:PUBLIC' } # a.MaxCandidates = 2000 a.StopAtMaxCandidates = True a.StopIncidentType = 'ExceedsCombinatoricsLimit' # from PhysSelPython.Wrappers import MultiSelectionSequence from PhysSelPython.Wrappers import SelectionSequence psi_x = MultiSelectionSequence ( "PSIX" , Sequences = [ ## channels with chic # SelectionSequence ( 'B2CHICK' , psix0 . b2chicK () ) , SelectionSequence ( 'B2CHICKK' , psix0 . b2chicKK () ) , SelectionSequence ( 'B2CHICKPi' , psix0 . b2chicKpi () ) , SelectionSequence ( 'B2CHICKPiPi' , psix0 . b2chicKpipi () ) , SelectionSequence ( 'B2CHICPiPi' , psix0 . b2chicpipi () ) , # SelectionSequence ( 'BC2CHICPi' , psix0 . bc2chicpi () ) , SelectionSequence ( 'Lb2CHICPi' , psix0 . lb2chicpK () ) , ] ) ## import DaVinci from Configurables import DaVinci ## delegate the actual configuration to DaVinci dv = DaVinci ( DataType = '2012' , InputType = 'DST' , Simulation = True , Lumi = False , TupleFile = 'Tuples.root' ## IMPORTANT ) ## add the name of Bender algorithm into User sequence sequence alg_name = 'HistosAndTuples' dv.UserAlgorithms += [ psi_x.sequence(), 'TrackScaleState', alg_name ] ## define the input data setData ( inputdata , catalogs , castor ) ## get/create application manager gaudi = appMgr() ## (1) create the algorithm with given name alg = HistosAndTuples ( alg_name , Inputs = [ 'Phys/SelB2ChicPiPiForPsiX0/Particles' ] ) return SUCCESS