Skip to content
Snippets Groups Projects

Add some multilepton channels with possibility of a displaced dilepton

Merged Vitalii Lisovskyi requested to merge vlisovsk_some_more_mutilep into 2018-patches
1 unresolved thread
1 file
+ 310
3
Compare changes
  • Side-by-side
  • Inline
@@ -61,8 +61,13 @@ default_config = {
, 'Bu2mmLinePrescale' : 1
},
'WGs' : [ 'RD' ],
'STREAMS' : { 'Leptonic' : ['StrippingMultiLepton_B24muXLine','StrippingMultiLepton_B24muXUpLine','StrippingMultiLepton_Jpsi22Mu2EPromptLine','StrippingMultiLepton_Jpsi23MuEDetachedLine','StrippingMultiLepton_Jpsi23MuEPromptLine','StrippingMultiLepton_Jpsi2Mu3EDetachedLine','StrippingMultiLepton_Jpsi2Mu3EPromptLine','StrippingMultiLepton_InclDet4muLowMassLine','StrippingMultiLepton_InclDet4muLowMassUpLine','StrippingMultiLepton_Jpsi24MuPromptLine'],
'Dimuon' : ['StrippingMultiLepton_B24muXTightLine','StrippingMultiLepton_B22mu2eXTightLine','StrippingMultiLepton_InclDet4muLine','StrippingMultiLepton_InclDet2mu2muLine','StrippingMultiLepton_InclDet6muLine','StrippingMultiLepton_InclDet5muLine','StrippingMultiLepton_InclPrompt6muLine','StrippingMultiLepton_Incl8muLine','StrippingMultiLepton_Incl8mu4bodyLine','StrippingMultiLepton_InclDet6mu3bodyLine','StrippingMultiLepton_Jpsi24MuPromptTightLine','StrippingMultiLepton_Jpsi22Mu2EDetachedLine','StrippingMultiLepton_Jpsi22E2EDetachedLine','StrippingMultiLepton_Jpsi22Mu2ESSDetachedLine']}
'STREAMS' : { 'Leptonic' :
[
'StrippingMultiLepton_B24muXLine','StrippingMultiLepton_B24muXUpLine','StrippingMultiLepton_Jpsi22Mu2EPromptLine','StrippingMultiLepton_Jpsi23MuEDetachedLine','StrippingMultiLepton_Jpsi23MuEPromptLine','StrippingMultiLepton_Jpsi2Mu3EDetachedLine','StrippingMultiLepton_Jpsi2Mu3EPromptLine','StrippingMultiLepton_InclDet4muLowMassLine','StrippingMultiLepton_InclDet4muLowMassUpLine','StrippingMultiLepton_Jpsi24MuPromptLine',
'StrippingMultiLepton_B24muXLongLivedLine','StrippingMultiLepton_B26muXLongLivedLine'],
'Dimuon' : ['StrippingMultiLepton_B24muXTightLine','StrippingMultiLepton_B22mu2eXTightLine','StrippingMultiLepton_InclDet4muLine','StrippingMultiLepton_InclDet2mu2muLine','StrippingMultiLepton_InclDet6muLine','StrippingMultiLepton_InclDet5muLine','StrippingMultiLepton_InclPrompt6muLine','StrippingMultiLepton_Incl8muLine','StrippingMultiLepton_Incl8mu4bodyLine','StrippingMultiLepton_InclDet6mu3bodyLine','StrippingMultiLepton_Jpsi24MuPromptTightLine','StrippingMultiLepton_Jpsi22Mu2EDetachedLine','StrippingMultiLepton_Jpsi22E2EDetachedLine','StrippingMultiLepton_Jpsi22Mu2ESSDetachedLine',
'StrippingMultiLepton_Incl8mu4bodyLongLivedLine','StrippingMultiLepton_InclDet6mu3bodyLongLivedLine']
}
}
@@ -114,6 +119,8 @@ class MultiLeptonConf(LineBuilder) :
self._name = name
fourmXLine_name = name+'_B24muX'
fourmX_longlived_Line_name = name+'_B24muXLongLived'
sixmX_longlived_Line_name = name+'_B26muXLongLived'
fourmXUpLine_name = name+'_B24muXUp'
fourmXLineTight_name = name+'_B24muXTight'
twomutwoeXLineTight_name = name+'_B22mu2eXTight'
@@ -123,9 +130,11 @@ class MultiLeptonConf(LineBuilder) :
Incl2m2mLine_name = name+'_InclDet2mu2mu'
Incl6mLine_name = name+'_InclDet6mu'
Incl6m3xLine_name = name+'_InclDet6mu3body'
Incl6m_longlived_Line_name = name+'_InclDet6mu3bodyLongLived'
InclPrompt6mLine_name = name+'_InclPrompt6mu'
Incl8mLine_name = name+'_Incl8mu'
Incl8m4xLine_name = name+'_Incl8mu4body'
Incl8m4x_longlived_Line_name = name+'_Incl8mu4bodyLongLived'
Incl5mLine_name = name+'_InclDet5mu'
Jpsi24MuPromptLine_name = name+'_Jpsi24MuPrompt'
Jpsi24MuPromptTightLine_name = name+'_Jpsi24MuPromptTight'
@@ -198,6 +207,9 @@ class MultiLeptonConf(LineBuilder) :
SelDiMuonPrompt = self._makeDiMuonPrompt( name = "2muPromptFor" + self._name,
params = config )
SelDiMuonLongLived = self._makeDiMuonLongLived( name = "2muLongLivedFor" + self._name,
params = config )
SelFourMuonDetached = self._makeFourMuonDetached( name = "4muDetFor" + self._name,
#dimuons=SelDiMuonDetached,
params = config )
@@ -227,6 +239,18 @@ class MultiLeptonConf(LineBuilder) :
params = config,
masscut = "ADAMASS('B+') < %(BMassWindow)s *MeV"% config)
SelB24mX_LongLived = self._makeB24muX_LongLived(fourmX_longlived_Line_name,
dilepton = SelDiMuonLongLived,
hadrons = [ SelKaons, SelPhis, SelKstars, SelLstars, SelLambdasDD, SelLambdasLL ],
params = config,
masscut = "ADAMASS('B+') < %(BMassWindow)s *MeV"% config)
SelB26mX_LongLived = self._makeB26muX_LongLived(sixmX_longlived_Line_name,
dilepton = SelDiMuonLongLived,
hadrons = [ SelKaons, SelPhis, SelKstars, SelLstars, SelLambdasDD, SelLambdasLL ],
params = config,
masscut = "ADAMASS('B+') < %(BMassWindow)s *MeV"% config)
SelB24mXUp = self._makeB24muX(fourmXUpLine_name,
fourlepton = SelFourMuonDetachedUp,
hadrons = [ SelKaons, SelPhis, SelKstars, SelLstars, SelKshortsLL, SelKshortsDD, SelLambdasDD, SelLambdasLL ],
@@ -264,6 +288,10 @@ class MultiLeptonConf(LineBuilder) :
# dilepton = SelDiMuonDetached,
params = config)
SelSixMuonLongLivedIncl = self._make6mu3bodyInclLongLived(Incl6m_longlived_Line_name,
dilepton = SelDiMuonLongLived,
params = config)
SelSixMuon3xDetachedIncl = self._make6mu3bodyInclDet(Incl6m3xLine_name,
dilepton = SelDiMuonDetached,
params = config)
@@ -276,10 +304,14 @@ class MultiLeptonConf(LineBuilder) :
# dilepton = SelDiMuonDetached,
params = config)
SelOttoMuon4xPromptIncl = self. _make8mu4bodyIncl(Incl8m4xLine_name,
SelOttoMuon4xPromptIncl = self._make8mu4bodyIncl(Incl8m4xLine_name,
# dilepton = SelDiMuonPrompt,
params = config)
SelOttoMuon4xLongLivedIncl = self._make8mu4bodyLongLived(Incl8m4x_longlived_Line_name,
dilepton = SelDiMuonLongLived,
params = config)
SelFiveMuonDetachedIncl = self._make5Mu(Incl5mLine_name,
params = config)
@@ -353,6 +385,46 @@ class MultiLeptonConf(LineBuilder) :
],
MDSTFlag = False )
self.B24mXLine_LongLived = StrippingLine(fourmX_longlived_Line_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
selection = SelB24mX_LongLived,
FILTER = SPDFilter,
RequiredRawEvents=["Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"],
RelatedInfoTools = [
{ "Type" : "RelInfoMuonIDPlus",
"Variables" : ["MU_BDT"],
"DaughterLocations" : {
"[ Beauty -> (X -> ^mu+ mu-) (X -> mu+ mu-) X ]CC" : "Muon1BDT",
"[ Beauty -> (X -> mu+ ^mu-) (X -> mu+ mu-) X ]CC" : "Muon2BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> ^mu+ mu-) X ]CC" : "Muon3BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> mu+ ^mu-) X ]CC" : "Muon4BDT",
}
},
],
MDSTFlag = False )
self.B26mXLine_LongLived = StrippingLine(sixmX_longlived_Line_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
selection = SelB26mX_LongLived,
FILTER = SPDFilter,
RequiredRawEvents=["Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"],
RelatedInfoTools = [
{ "Type" : "RelInfoMuonIDPlus",
"Variables" : ["MU_BDT"],
"DaughterLocations" : {
"[ Beauty -> (X -> ^mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-) X ]CC" : "Muon1BDT",
"[ Beauty -> (X -> mu+ ^mu-) (X -> mu+ mu-) (X -> mu+ mu-) X ]CC" : "Muon2BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> ^mu+ mu-) (X -> mu+ mu-) X ]CC" : "Muon3BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> mu+ ^mu-) (X -> mu+ mu-) X ]CC" : "Muon4BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> ^mu+ mu-) X ]CC" : "Muon5BDT",
"[ Beauty -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ ^mu-) X ]CC" : "Muon6BDT",
}
},
],
MDSTFlag = False )
self.B24mXUpLine = StrippingLine(fourmXUpLine_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
@@ -526,6 +598,50 @@ class MultiLeptonConf(LineBuilder) :
#RequiredRawEvents=["Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"],
MDSTFlag = False )
self.B26m3xInclLongLivedLine = StrippingLine(Incl6m_longlived_Line_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
selection = SelSixMuonLongLivedIncl,
FILTER = SPDFilter,
RelatedInfoTools = [
{ "Type" : "RelInfoMuonIDPlus",
"Variables" : ["MU_BDT"],
"DaughterLocations" : {
" X -> (X -> ^mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon1BDT",
" X -> (X -> mu+ ^mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon2BDT",
" X -> (X -> mu+ mu-) (X -> ^mu+ mu-) (X -> mu+ mu-)" : "Muon3BDT",
" X -> (X -> mu+ mu-) (X -> mu+ ^mu-) (X -> mu+ mu-)" : "Muon4BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> ^mu+ mu-)" : "Muon5BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ ^mu-)" : "Muon6BDT",
}
},
],
#RequiredRawEvents=["Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"],
MDSTFlag = False )
self.B28m4xInclLongLivedLine = StrippingLine(Incl8m4x_longlived_Line_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
selection = SelOttoMuon4xLongLivedIncl,
FILTER = SPDFilter,
RelatedInfoTools = [
{ "Type" : "RelInfoMuonIDPlus",
"Variables" : ["MU_BDT"],
"DaughterLocations" : {
" X -> (X -> ^mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon1BDT",
" X -> (X -> mu+ ^mu-) (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon2BDT",
" X -> (X -> mu+ mu-) (X -> ^mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon3BDT",
" X -> (X -> mu+ mu-) (X -> mu+ ^mu-) (X -> mu+ mu-) (X -> mu+ mu-)" : "Muon4BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> ^mu+ mu-) (X -> mu+ mu-)" : "Muon5BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ ^mu-) (X -> mu+ mu-)" : "Muon6BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-) (X -> ^mu+ mu-)" : "Muon7BDT",
" X -> (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ mu-) (X -> mu+ ^mu-)" : "Muon8BDT",
}
},
],
#RequiredRawEvents=["Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"],
MDSTFlag = False )
self.B25mInclLine = StrippingLine(Incl5mLine_name + "Line",
prescale = config['Bu2mmLinePrescale'],
postscale = 1,
@@ -806,6 +922,14 @@ class MultiLeptonConf(LineBuilder) :
self.registerLine( self.Jpsi23MuEPromptLine )
self.registerLine( self.Jpsi2Mu3EDetachedLine )
self.registerLine( self.Jpsi2Mu3EPromptLine )
#added for the 2018 restripping
self.registerLine( self.B24mXLine_LongLived )
self.registerLine( self.B26mXLine_LongLived )
self.registerLine( self.B26m3xInclLongLivedLine )
self.registerLine( self.B28m4xInclLongLivedLine )
#####################################################
def _filterKaon( self, name, sel, params ):
"""
@@ -1008,6 +1132,58 @@ class MultiLeptonConf(LineBuilder) :
_stdLooseMuons = DataOnDemand(Location = "Phys/StdAllLooseMuons/Particles")
return Selection( name, Algorithm = _Combine, RequiredSelections = [ _stdLooseMuons ] )
# added for the 2018 restripping: dileptons from the KS intermediate particle, to allow for lifetime in the vertex fit
#####################################################
# def _makeDiElectronLongLived( self, name, params ) :
# """
# Make a dielectron
# KS0 is just a proxy to get the two-body combination
# """
#
# from Configurables import DiElectronMaker, ProtoParticleCALOFilter
#
# dieLL = DiElectronMaker('MyDiElectronFromTracks')
# dieLL.Particle = "KS0"
# selector = trackSelector ( dieLL , trackTypes = ["Long"] )
# dieLL.addTool( ProtoParticleCALOFilter, name='Electron' )
# dieLL.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>'-1.0'"]
# dieLL.DiElectronMassMax = 500000.*MeV
# dieLL.DiElectronMassMin = 0.*MeV
# dieLL.DiElectronPtMin = 200.*MeV
#
#
# return Selection( name, Algorithm = dieLL )
#####################################################
def _makeDiMuonLongLived( self, name, params ) :
"""
Make a dimuon
KS0 is just a proxy to get the two-body combination
"""
_Decays = "KS0 -> mu+ mu-"
# define all the cuts
_CombCuts = "(AM > 0*MeV) & (ADOCA(1,2)<%(DiHadronADOCA)s*mm)" % params
_MotherCuts = "(VFASPF(VCHI2PDOF) < 9) & (BPVVDCHI2>16)"
_daughtersCutsmu = "(TRCHI2DOF < %(Trk_Chi2)s) & (TRGHOSTPROB < %(Trk_GhostProb)s)" % params# & (ISMUON) & (PROBNNmu>0.1) " % params
_Combine = CombineParticles()
_Combine.DecayDescriptor = _Decays
_Combine.DaughtersCuts = {
"mu+" : _daughtersCutsmu }
_Combine.CombinationCut = _CombCuts
_Combine.MotherCut = _MotherCuts
_stdLooseMuons = DataOnDemand(Location = "Phys/StdAllLooseMuons/Particles")
return Selection( name, Algorithm = _Combine, RequiredSelections = [ _stdLooseMuons ] )
#####################################################
def _makeFourMuonDetached( self, name, params ) :
"""
@@ -1257,6 +1433,71 @@ class MultiLeptonConf(LineBuilder) :
_Merge = MergedSelection( "Merge" + name, RequiredSelections = hadrons )
return Selection(name, Algorithm = _Combine, RequiredSelections = [ fourlepton, _Merge ] )
#####################################################
def _makeB24muX_LongLived( self, name, dilepton, hadrons, params, masscut ):
"""
CombineParticles / Selection for the B
"""
_Decays = [
"[ B+ -> KS0 KS0 K+ ]cc",
"B_s0 -> KS0 KS0 phi(1020)",
#" B0 -> J/psi(1S) KS0 ",
"[ B0 -> KS0 KS0 K*(892)0 ]cc",
"[Lambda_b0 -> KS0 KS0 Lambda(1520)0]cc ",
"[Lambda_b0 -> KS0 KS0 Lambda0]cc ",
]
_Cut = "((VFASPF(VCHI2/VDOF) < %(BVertexCHI2)s) "\
"& (BPVIPCHI2() < %(BIPCHI2)s) "\
"& (BPVDIRA > %(BDIRA)s) "\
"& (NINTREE ( ( 'mu-' == ABSID ) & (PROBNNmu>0.1) )> 2.5)"\
"& (BPVVDCHI2 > %(BFlightCHI2)s))" % params
_Combine = CombineParticles( DecayDescriptors = _Decays,
CombinationCut = masscut,
MotherCut = _Cut )
_Combine.DaughtersCuts = {
"KS0" : "(M < 6100) & (NINTREE ( ( 'mu-' == ABSID ) & (ISLONG) & ((PROBNNmu>0.1)) )>0.5)" }
_Merge = MergedSelection( "Merge" + name, RequiredSelections = hadrons )
return Selection(name, Algorithm = _Combine, RequiredSelections = [ dilepton, _Merge ] )
#####################################################
def _makeB26muX_LongLived( self, name, dilepton, hadrons, params, masscut ):
"""
CombineParticles / Selection for the B
"""
_Decays = [
"[ B+ -> KS0 KS0 KS0 K+ ]cc",
"B_s0 -> KS0 KS0 KS0 phi(1020)",
#" B0 -> J/psi(1S) KS0 ",
"[ B0 -> KS0 KS0 KS0 K*(892)0 ]cc",
"[Lambda_b0 -> KS0 KS0 KS0 Lambda(1520)0]cc ",
"[Lambda_b0 -> KS0 KS0 KS0 Lambda0]cc ",
]
_Cut = "((VFASPF(VCHI2/VDOF) < %(BVertexCHI2)s) "\
"& (BPVIPCHI2() < %(BIPCHI2)s) "\
"& (BPVDIRA > %(BDIRA)s) "\
"& (NINTREE ( ( 'mu-' == ABSID ) & (PROBNNmu>0.1) )> 4.5)"\
"& (BPVVDCHI2 > %(BFlightCHI2)s))" % params
_Combine = CombineParticles( DecayDescriptors = _Decays,
CombinationCut = masscut,
MotherCut = _Cut )
_Combine.DaughtersCuts = {
"KS0" : "(M < 6100) & (NINTREE ( ( 'mu-' == ABSID ) & (ISLONG) & ((PROBNNmu>0.1)) )>0.5)" }
_Merge = MergedSelection( "Merge" + name, RequiredSelections = hadrons )
return Selection(name, Algorithm = _Combine, RequiredSelections = [ dilepton, _Merge ] )
#####################################################
def _makeB22mu2EXTight( self, name, fourlepton, hadrons, params, masscut ):
"""
@@ -1585,6 +1826,37 @@ class MultiLeptonConf(LineBuilder) :
return Selection( name, Algorithm = _Combine, RequiredSelections = [ dilepton ] )
#####################################################
def _make6mu3bodyInclLongLived( self, name, dilepton, params ) :
"""
Make a 6-muon
Jpsi is just a proxy to get the 6-body combination
"""
_Decays = "J/psi(1S) -> KS0 KS0 KS0"
# define all the cuts
_CombCuts12 = "(ADOCA(1,2)<0.7*mm) & (APT>500)"#" & ( ANUM ( ( 'mu-' == ABSID ) & (ISMUON) )> -0.5)" #2.5
_CombCuts = "ACUTDOCACHI2(16,'')"#" & ( ANUM ( ( 'mu-' == ABSID ) & (ISMUON) )> 0.5)" #4.5
_MotherCuts = "(VFASPF(VCHI2PDOF) < 16) & ( NINTREE ( ( 'mu-' == ABSID ) & (PROBNNmu>0.1) )> 4.5) & ( NINTREE ( ( 'mu-' == ABSID ) & (PT>400) )> 3.5 )" % params
_daughtersCuts = "(PT>400*MeV) & ( NINTREE ( ( 'mu-' == ABSID ) & (ISMUON) )> 0.5)"
_Combine = DaVinci__N3BodyDecays()
_Combine.DecayDescriptor = _Decays
_Combine.DaughtersCuts = {
"KS0" : _daughtersCuts }
_Combine.Combination12Cut = _CombCuts12
# _Combine.Combination123Cut = _CombCuts123
# _Combine.Combination1234Cut = _CombCuts1234
# _Combine.Combination12345Cut = _CombCuts1234
_Combine.CombinationCut = _CombCuts
_Combine.MotherCut = _MotherCuts
#_stdNoPIDLooseMuons = DataOnDemand(Location = "Phys/StdAllNoPIDsMuons/Particles")
return Selection( name, Algorithm = _Combine, RequiredSelections = [ dilepton ] )
#####################################################
def _make8muIncl( self, name, params ) :
@@ -1707,6 +1979,41 @@ class MultiLeptonConf(LineBuilder) :
return Selection( name, Algorithm = _Combine, RequiredSelections = [ seldimu ] )
#####################################################
def _make8mu4bodyLongLived( self, name, dilepton, params ) :
"""
Make a 8-muon
Jpsi is just a proxy to get the 8-body combination
Start with a dimuon
"""
#now, build the Jpsi
_Decays = "J/psi(1S) -> KS0 KS0 KS0 KS0"
# define all the cuts
_CombCuts12 = "(ADOCA(1,2)<0.7*mm) & (APT>500)"#" & ( ANUM ( ( 'mu-' == ABSID ) & (ISMUON) )> 0.5)" #2.5
_CombCuts123 = "ACUTDOCACHI2(16,'')"#" & (ANUM (( 'mu-' == ABSID ) & ISMUON )>0.5)" # & (ANUM (( 'mu-' == ABSID ) & (PROBNNmu>0.05) )>0.5)" #4.5
# _CombCuts1234 = "ACUTDOCACHI2(20,'')"
_CombCuts = "ACUTDOCACHI2(16,'')"#" & ( ANUM ( ( 'mu-' == ABSID ) & (ISMUON) )> 0.5)" #6.5
_MotherCuts = "(VFASPF(VCHI2PDOF) < 16) & ( NINTREE ( ( 'mu-' == ABSID ) & (PROBNNmu>0.05) )> 4.5) & ( NINTREE ( ( 'mu-' == ABSID ) & (PT>400) )> 4.5 ) & ( NINTREE ( ( 'mu-' == ABSID ) & (ISMUON) )> 4.5)" % params #5.5 , 6.5
_daughtersCuts = "(PT>400*MeV) & ( NINTREE ( ( 'mu-' == ABSID ) & (ISMUON) )> 0.5)"
_Combine = DaVinci__N4BodyDecays()
_Combine.DecayDescriptor = _Decays
_Combine.DaughtersCuts = {
"KS0" : _daughtersCuts }
_Combine.Combination12Cut = _CombCuts12
_Combine.Combination123Cut = _CombCuts123
_Combine.CombinationCut = _CombCuts
_Combine.MotherCut = _MotherCuts
return Selection( name, Algorithm = _Combine, RequiredSelections = [ dilepton ] )
#####################################################
def _make2Mu2EInclDetLoose( self, name, dimuon, dielectron, params ) :
"""
Loading