From f7957c00fdc84ef556f50d21eb4b2c6532d47e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais?= <adrian.casais@rai.usc.es> Date: Mon, 3 Jul 2023 16:57:30 +0200 Subject: [PATCH 01/18] Format first --- .../StrippingRD/StrippingDarkBoson.py | 1694 ++++++++++------- 1 file changed, 966 insertions(+), 728 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 536db561b..4cea3e650 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -8,17 +8,17 @@ # granted to it by virtue of its status as an Intergovernmental Organization # # or submit itself to any jurisdiction. # ############################################################################### -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -''' +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +""" Dark Bosons (ALPs, inflatons, WTFs, etc) Author: M. Williams, D. Craik -''' -__author__ = ['Mike Williams', 'Dan Craik'] +""" +__author__ = ["Mike Williams", "Dan Craik"] -moduleName = 'DarkBoson' +moduleName = "DarkBoson" -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# import re from Gaudi.Configuration import * @@ -29,913 +29,1151 @@ from PhysSelPython.Wrappers import EventSelection from StrippingConf.StrippingLine import StrippingLine from StrippingUtils.Utils import LineBuilder from Configurables import LoKi__VoidFilter -from StandardParticles import StdAllNoPIDsPions, StdAllNoPIDsKaons, \ - StdAllNoPIDsProtons, StdNoPIDsUpPions, StdAllLooseMuons, \ - StdLooseDownMuons +from StandardParticles import ( + StdAllNoPIDsPions, + StdAllNoPIDsKaons, + StdAllNoPIDsProtons, + StdNoPIDsUpPions, + StdAllLooseMuons, + StdLooseDownMuons, +) from Beauty2Charm_LoKiCuts import LoKiCuts -from StandardParticles import StdAllLooseGammaLL, StdAllLooseGammaDD, \ - StdAllLooseElectrons, StdLooseAllPhotons#, StdDiElectronFromTracks +from StandardParticles import ( + StdAllLooseGammaLL, + StdAllLooseGammaDD, + StdAllLooseElectrons, + StdLooseAllPhotons, +) # , StdDiElectronFromTracks from Configurables import SubstitutePID from copy import deepcopy from CommonParticles.Utils import * -from Configurables import DiElectronMaker,ProtoParticleCALOFilter +from Configurables import DiElectronMaker, ProtoParticleCALOFilter from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# # Default configuration dictionary default_config = { - 'NAME' : 'DarkBoson', - 'BUILDERTYPE' : 'DarkBosonConf' , - 'STREAMS' : { - 'Bhadron' : [ - 'StrippingB2KX2KKPiDarkBosonLine', - 'StrippingB2KpiX2KKPiDarkBosonLine', - 'StrippingB2KX2KKPiMDarkBosonLine', - 'StrippingB2KpiX2KKPiMDarkBosonLine', - 'StrippingB2KX2PiPiPiDarkBosonLine', - 'StrippingB2KpiX2PiPiPiDarkBosonLine', - 'StrippingB2KX2PiPiPiMDarkBosonLine', - 'StrippingB2KpiX2PiPiPiMDarkBosonLine', - 'StrippingB2KX2EtaPiPi23PIDarkBosonLine', - 'StrippingB2KpiX2EtaPiPi23PIDarkBosonLine', - 'StrippingB2KX2EtaPiPi2GGDarkBosonLine', - 'StrippingB2KpiX2EtaPiPi2GGDarkBosonLine', - 'StrippingB2KX24PiDarkBosonLine', - 'StrippingB2KpiX24PiDarkBosonLine', - 'StrippingB2KX26PiDarkBosonLine', - 'StrippingB2KpiX26PiDarkBosonLine', - 'StrippingB2KX22K2PiDarkBosonLine', - 'StrippingB2KpiX22K2PiDarkBosonLine', - 'StrippingB2KX24KDarkBosonLine', - 'StrippingB2KpiX24KDarkBosonLine', - ], - 'Dimuon' : [ - 'StrippingB2KpiX2MuMuDDDarkBosonLine', - 'StrippingB2KpiX2MuMuDDSSDarkBosonLine', - #'StrippingB2KKX2MuMuDDDarkBosonLine', - #'StrippingB2KKX2MuMuDDSSDarkBosonLine', - 'StrippingB2KX2MuMuDDDarkBosonLine', - 'StrippingB2KX2MuMuDDSSDarkBosonLine', - #'StrippingB2KpiX2PiPiDDDarkBosonLine', - #'StrippingB2KKX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDSSDarkBosonLine', - #'StrippingB2RhoX2MuMuDDDarkBosonLine', - #'StrippingB2KpiX2KKDDDarkBosonLine', - #'StrippingB2KKX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDSSDarkBosonLine', - ], - 'Leptonic' : [ - 'StrippingB2KpiX2MuMuDarkBosonLine', - 'StrippingB2KpiX2MuMuSSDarkBosonLine', - #'StrippingB2KKX2MuMuDarkBosonLine', - #'StrippingB2KKX2MuMuSSDarkBosonLine', - 'StrippingB2KX2MuMuDarkBosonLine', - 'StrippingB2KX2MuMuSSDarkBosonLine', - 'StrippingB2KpiX2PiPiDarkBosonLine', - #'StrippingB2KKX2PiPiDarkBosonLine', - 'StrippingB2KX2PiPiDarkBosonLine', - 'StrippingB2KX2PiPiSSDarkBosonLine', - #'StrippingB2RhoX2MuMuDarkBosonLine', - 'StrippingB2KpiX2KKDarkBosonLine', - #'StrippingB2KKX2KKDarkBosonLine', - 'StrippingB2KX2KKDarkBosonLine', - 'StrippingB2KX2KKSSDarkBosonLine', - 'StrippingB2KpiX2EEDarkBosonLine', - 'StrippingB2KpiX2EESSDarkBosonLine', - #'StrippingB2KKX2EEDarkBosonLine', - #'StrippingB2KKX2EESSDarkBosonLine', - 'StrippingB2KX2EEDarkBosonLine', - 'StrippingB2KX2EESSDarkBosonLine', - 'StrippingB2JKDarkBosonLine', - 'StrippingB2JKstDarkBosonLine', - 'StrippingB2KstX2GammaGammaDarkBosonLine', - 'StrippingB2KstX2PiGammaDarkBosonLine', - 'StrippingB2KstX2PiGammaMDarkBosonLine', - ] + "NAME": "DarkBoson", + "BUILDERTYPE": "DarkBosonConf", + "STREAMS": { + "Bhadron": [ + "StrippingB2KX2KKPiDarkBosonLine", + "StrippingB2KpiX2KKPiDarkBosonLine", + "StrippingB2KX2KKPiMDarkBosonLine", + "StrippingB2KpiX2KKPiMDarkBosonLine", + "StrippingB2KX2PiPiPiDarkBosonLine", + "StrippingB2KpiX2PiPiPiDarkBosonLine", + "StrippingB2KX2PiPiPiMDarkBosonLine", + "StrippingB2KpiX2PiPiPiMDarkBosonLine", + "StrippingB2KX2EtaPiPi23PIDarkBosonLine", + "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine", + "StrippingB2KX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KX24PiDarkBosonLine", + "StrippingB2KpiX24PiDarkBosonLine", + "StrippingB2KX26PiDarkBosonLine", + "StrippingB2KpiX26PiDarkBosonLine", + "StrippingB2KX22K2PiDarkBosonLine", + "StrippingB2KpiX22K2PiDarkBosonLine", + "StrippingB2KX24KDarkBosonLine", + "StrippingB2KpiX24KDarkBosonLine", + ], + "Dimuon": [ + "StrippingB2KpiX2MuMuDDDarkBosonLine", + "StrippingB2KpiX2MuMuDDSSDarkBosonLine", + #'StrippingB2KKX2MuMuDDDarkBosonLine', + #'StrippingB2KKX2MuMuDDSSDarkBosonLine', + "StrippingB2KX2MuMuDDDarkBosonLine", + "StrippingB2KX2MuMuDDSSDarkBosonLine", + #'StrippingB2KpiX2PiPiDDDarkBosonLine', + #'StrippingB2KKX2PiPiDDDarkBosonLine', + #'StrippingB2KX2PiPiDDDarkBosonLine', + #'StrippingB2KX2PiPiDDSSDarkBosonLine', + #'StrippingB2RhoX2MuMuDDDarkBosonLine', + #'StrippingB2KpiX2KKDDDarkBosonLine', + #'StrippingB2KKX2KKDDDarkBosonLine', + #'StrippingB2KX2KKDDDarkBosonLine', + #'StrippingB2KX2KKDDSSDarkBosonLine', + ], + "Leptonic": [ + "StrippingB2KpiX2MuMuDarkBosonLine", + "StrippingB2KpiX2MuMuSSDarkBosonLine", + #'StrippingB2KKX2MuMuDarkBosonLine', + #'StrippingB2KKX2MuMuSSDarkBosonLine', + "StrippingB2KX2MuMuDarkBosonLine", + "StrippingB2KX2MuMuSSDarkBosonLine", + "StrippingB2KpiX2PiPiDarkBosonLine", + #'StrippingB2KKX2PiPiDarkBosonLine', + "StrippingB2KX2PiPiDarkBosonLine", + "StrippingB2KX2PiPiSSDarkBosonLine", + #'StrippingB2RhoX2MuMuDarkBosonLine', + "StrippingB2KpiX2KKDarkBosonLine", + #'StrippingB2KKX2KKDarkBosonLine', + "StrippingB2KX2KKDarkBosonLine", + "StrippingB2KX2KKSSDarkBosonLine", + "StrippingB2KpiX2EEDarkBosonLine", + "StrippingB2KpiX2EESSDarkBosonLine", + #'StrippingB2KKX2EEDarkBosonLine', + #'StrippingB2KKX2EESSDarkBosonLine', + "StrippingB2KX2EEDarkBosonLine", + "StrippingB2KX2EESSDarkBosonLine", + "StrippingB2JKDarkBosonLine", + "StrippingB2JKstDarkBosonLine", + "StrippingB2KstX2GammaGammaDarkBosonLine", + "StrippingB2KstX2PiGammaDarkBosonLine", + "StrippingB2KstX2PiGammaMDarkBosonLine", + ], }, - 'WGs' : [ 'RD' ], - 'CONFIG' : { - "KB" : { # K directly from B - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '2000*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1, + "WGs": ["RD"], + "CONFIG": { + "KB": { # K directly from B + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "2000*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "KBhard": { # K directly from B only for B -> KS0(pipi) K + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 36, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.2, + }, + "PiB": { # pi directly from B + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "2000*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.2, + }, + "KX": { # K from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "PiX": { # pi from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 36, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.2, + }, + "KDX": { # K DOWN from X + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "PiDX": { # pi DOWN from X + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.1, + }, + "MuX": { # muon from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "100*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PIDmu_MIN": -5, + }, + "MuJ": { # muon from J/psi + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PIDmu_MIN": -4, + }, + "E": { # electron cuts + "TRCHI2DOF_MAX": 5, + "MIPCHI2DV_MIN": 9, + "PT_MIN": "100*MeV", + "TRGHP_MAX": 0.4, + "PIDe_MIN": 0, + }, + "gX": { # gamma from X + "PT_MIN": "500*MeV", + "P_MIN": "1000*MeV", + "CL_MIN": "0.3", + }, + "etaX": { # eta->gg from X + "MM_MIN": "450*MeV", + "MM_MAX": "650*MeV", + "PT_MIN": "500*MeV", + "P_MIN": "2000*MeV", + "CL_MIN": "0.2", + }, + "pizMX": { # merged pi0 from X + "PT_MIN": "500*MeV", + "P_MIN": "3000*MeV", + "CL_MIN": "0.1", + }, + "pizRX": { # resolved pi0 from X + "PT_MIN": "500*MeV", + "CL_MIN": "0.1", + }, + "XLL": { # making the X for LL + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + }, + "XLLhard": { # making the X for LL hard vertex for the pions + "VCHI2DOF_MAX": 5, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + }, + "XDD": { # making X for DD + "VCHI2DOF_MAX": 15, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "0*MeV", + }, + "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton + "X3H": { # making the X for 3H decays + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "500*MeV", + "SUMPT_MIN": "0*MeV", + "HAD_MINIPCHI2_MIN": 16, + }, + "XETAHH": { # making the X for eta pipi decays + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "2000*MeV", + "SUMPT_MIN": "0*MeV", + "HAD_MINIPCHI2_MIN": 16, + }, + "J": { # cuts on J/psi + "VCHI2DOF_MAX": 12, + "ADAMASS_MAX": "100*MeV", + }, + "B2KX": { # B -> K X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 25, + "PT_MIN": "1000*MeV", + }, + "B2KXTight": { # B -> K X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 25, + "PT_MIN": "3000*MeV", + }, + "B2HHX": { # B -> Kpi X, KK X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 9, + "PT_MIN": "1000*MeV", + }, + "B2HHXTight": { # B -> Kpi X, KK X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 9, + "PT_MIN": "3000*MeV", + }, + "B2KstX_X2neutrals": { # B -> Kpi X, X -> gg, gpi0 + "SUMPT_MIN": "0*MeV", + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + #'BPVDIRA_MIN' : 0.999, + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "PT_MIN": "3000*MeV", + }, + "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25}, + "GECNTrkMax": 250, + "CommonRelInfoTools": [ + {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"}, + {"Type": "RelInfoVertexIsolationBDT", "Location": "VtxIsoInfoBDT"}, + { + "Type": "RelInfoBs2MuMuBIsolations", + "Variables": [], + "Location": "BsMuMuBIsolation", + "tracktype": 3, + "makeTrackCuts": False, + }, + ], }, - "KBhard" : { # K directly from B only for B -> KS0(pipi) K - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 36, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.2, - }, - "PiB" : { # pi directly from B - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '2000*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.2 - }, - "KX" : { # K from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1 - }, - "PiX" : { # pi from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 36, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.2 - }, - "KDX" : { # K DOWN from X - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1 - }, - "PiDX" : { # pi DOWN from X - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.1 - }, - "MuX" : { # muon from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '100*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PIDmu_MIN' : -5 - }, - "MuJ" : { # muon from J/psi - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PIDmu_MIN' : -4 - }, - "E" : { # electron cuts - 'TRCHI2DOF_MAX' : 5, - 'MIPCHI2DV_MIN' : 9, - 'PT_MIN' : '100*MeV', - 'TRGHP_MAX' : 0.4, - 'PIDe_MIN' : 0 - }, - "gX" : { # gamma from X - 'PT_MIN' : '500*MeV', - 'P_MIN' : '1000*MeV', - 'CL_MIN' : '0.3', - }, - "etaX" : { # eta->gg from X - 'MM_MIN' : '450*MeV', - 'MM_MAX' : '650*MeV', - 'PT_MIN' : '500*MeV', - 'P_MIN' : '2000*MeV', - 'CL_MIN' : '0.2', - }, - "pizMX" : { # merged pi0 from X - 'PT_MIN' : '500*MeV', - 'P_MIN' : '3000*MeV', - 'CL_MIN' : '0.1', - }, - "pizRX" : { # resolved pi0 from X - 'PT_MIN' : '500*MeV', - 'CL_MIN' : '0.1', - }, - "XLL" : { # making the X for LL - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '250*MeV' - }, - "XLLhard" : { # making the X for LL hard vertex for the pions - 'VCHI2DOF_MAX' : 5, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '250*MeV' - }, - "XDD" : { # making X for DD - 'VCHI2DOF_MAX' : 15, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '0*MeV' - }, - "XGG" : { # making the X for diphoton - 'PT_MIN' : '2000*MeV' - }, - "X3H" : { # making the X for 3H decays - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '500*MeV', - 'SUMPT_MIN' : '0*MeV', - 'HAD_MINIPCHI2_MIN' : 16, - }, - "XETAHH" : { # making the X for eta pipi decays - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '2000*MeV', - 'SUMPT_MIN' : '0*MeV', - 'HAD_MINIPCHI2_MIN' : 16, - }, - "J" : { # cuts on J/psi - 'VCHI2DOF_MAX' : 12, - 'ADAMASS_MAX' : '100*MeV', - }, - "B2KX" : { # B -> K X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 25, - 'PT_MIN' : '1000*MeV' - }, - "B2KXTight" : { # B -> K X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 25, - 'PT_MIN' : '3000*MeV' - }, - "B2HHX" : { # B -> Kpi X, KK X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 9, - 'PT_MIN' : '1000*MeV' - }, - "B2HHXTight" : { # B -> Kpi X, KK X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 9, - 'PT_MIN' : '3000*MeV' - }, - "B2KstX_X2neutrals" : { # B -> Kpi X, X -> gg, gpi0 - 'SUMPT_MIN' : '0*MeV', - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - #'BPVDIRA_MIN' : 0.999, - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'PT_MIN' : '3000*MeV' - }, - "Prescales" : { "SS" : 0.1, "DD" : 1.0, "KK": 0.25}, - "GECNTrkMax" : 250, - "CommonRelInfoTools" : [ { "Type": "RelInfoVertexIsolation", "Location":"VtxIsoInfo" }, - { "Type": "RelInfoVertexIsolationBDT", "Location":"VtxIsoInfoBDT" }, - { "Type" : "RelInfoBs2MuMuBIsolations", - "Variables" : [], - "Location" : "BsMuMuBIsolation", - "tracktype" : 3, - "makeTrackCuts" : False, }, - ] - } } -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - -class DarkBosonConf(LineBuilder): +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - __configuration_keys__ = default_config['CONFIG'].keys() - def __init__(self, moduleName, default_config) : +class DarkBosonConf(LineBuilder): + __configuration_keys__ = default_config["CONFIG"].keys() + def __init__(self, moduleName, default_config): LineBuilder.__init__(self, moduleName, default_config) piD = DataOnDemand(Location="Phys/StdNoPIDsDownPions/Particles") kD = DataOnDemand(Location="Phys/StdLooseDownKaons/Particles") pizM = DataOnDemand(Location="Phys/StdLooseMergedPi0/Particles") pizR = DataOnDemand(Location="Phys/StdLooseResolvedPi0/Particles") eta = DataOnDemand(Location="Phys/StdLooseResolvedEta/Particles") - gC = MergedSelection("gC",RequiredSelections=[StdAllLooseGammaLL,StdAllLooseGammaDD]) + gC = MergedSelection( + "gC", RequiredSelections=[StdAllLooseGammaLL, StdAllLooseGammaDD] + ) # pre-filter inputs - kB = filterInputs('KB',default_config['KB'],[StdAllNoPIDsKaons]) - kBhard = filterInputs('KBhard',default_config['KBhard'],[StdAllNoPIDsKaons]) - piB = filterInputs('PiB',default_config['PiB'],[StdAllNoPIDsPions]) - kX = filterInputs('KX',default_config['KX'],[StdAllNoPIDsKaons]) - piX = filterInputs('PiX',default_config['PiX'],[StdAllNoPIDsPions]) - kDX = filterInputs('KDX',default_config['KDX'],[kD]) - piDX = filterInputs('PiDX',default_config['PiDX'],[piD]) - muX = filterInputs('MuX',default_config['MuX'],[StdAllLooseMuons]) - muDX = filterInputs('MuDX',default_config['MuX'],[StdLooseDownMuons]) - muJ = filterInputs('MuJ',default_config['MuJ'],[StdAllLooseMuons]) - - gX = filterInputs('gX',default_config['gX'],[StdLooseAllPhotons]) - pizMX = filterInputs('pizMX',default_config['pizMX'],[pizM]) - pizRX = filterInputs('pizRX',default_config['pizRX'],[pizR]) - etaX = filterInputs('etaX',default_config['etaX'],[eta]) - - eta23piX = makeEta([piX,pizRX],"ForX") + kB = filterInputs("KB", default_config["KB"], [StdAllNoPIDsKaons]) + kBhard = filterInputs("KBhard", default_config["KBhard"], [StdAllNoPIDsKaons]) + piB = filterInputs("PiB", default_config["PiB"], [StdAllNoPIDsPions]) + kX = filterInputs("KX", default_config["KX"], [StdAllNoPIDsKaons]) + piX = filterInputs("PiX", default_config["PiX"], [StdAllNoPIDsPions]) + kDX = filterInputs("KDX", default_config["KDX"], [kD]) + piDX = filterInputs("PiDX", default_config["PiDX"], [piD]) + muX = filterInputs("MuX", default_config["MuX"], [StdAllLooseMuons]) + muDX = filterInputs("MuDX", default_config["MuX"], [StdLooseDownMuons]) + muJ = filterInputs("MuJ", default_config["MuJ"], [StdAllLooseMuons]) + + gX = filterInputs("gX", default_config["gX"], [StdLooseAllPhotons]) + pizMX = filterInputs("pizMX", default_config["pizMX"], [pizM]) + pizRX = filterInputs("pizRX", default_config["pizRX"], [pizR]) + etaX = filterInputs("etaX", default_config["etaX"], [eta]) + + eta23piX = makeEta([piX, pizRX], "ForX") # make/filter X - eestd = DataOnDemand(Location='Phys/StdDiElectronFromTracks/Particles') - ee = filterEE('OS',default_config['E'],default_config['XLL'],[eestd]) - #eeDD = makeEEdd(config) - mmX = makeX('MuMu',default_config['XLL'],'KS0 -> mu+ mu-',[muX]) - mmDDX = makeX('MuMuDD',default_config['XDD'],'KS0 -> mu+ mu-',[muDX]) - kkX = makeX('KK',default_config['XLL'],'KS0 -> K+ K-',[kX]) - kkDDX = makeX('KKDD',default_config['XDD'],'KS0 -> K+ K-',[kDX]) - pipiX = makeX('PiPi',default_config['XLLhard'],'KS0 -> pi+ pi-',[piX]) - pipiDDX = makeX('PiPiDD',default_config['XDD'],'KS0 -> pi+ pi-',[piDX]) + eestd = DataOnDemand(Location="Phys/StdDiElectronFromTracks/Particles") + ee = filterEE("OS", default_config["E"], default_config["XLL"], [eestd]) + # eeDD = makeEEdd(config) + mmX = makeX("MuMu", default_config["XLL"], "KS0 -> mu+ mu-", [muX]) + mmDDX = makeX("MuMuDD", default_config["XDD"], "KS0 -> mu+ mu-", [muDX]) + kkX = makeX("KK", default_config["XLL"], "KS0 -> K+ K-", [kX]) + kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX]) + pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX]) + pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX]) ## 4-6H modes - fourpiX = makeX('4Pi', default_config['XLL'],'KS0 -> pi+ pi+ pi- pi-',[piX]) - sixpiX = makeX('6Pi', default_config['XLL'],'KS0 -> pi+ pi+ pi- pi- pi0 pi0',[piX,pizRX]) - KKpipiX = makeX('2K2Pi',default_config['XLL'],'KS0 -> K+ K- pi+ pi-',[kX,piX]) - fourKX = makeX('4K', default_config['XLL'],'KS0 -> K+ K+ K- K-',[kX]) + fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX]) + sixpiX = makeX( + "6Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi- pi0 pi0", [piX, pizRX] + ) + KKpipiX = makeX( + "2K2Pi", default_config["XLL"], "KS0 -> K+ K- pi+ pi-", [kX, piX] + ) + fourKX = makeX("4K", default_config["XLL"], "KS0 -> K+ K+ K- K-", [kX]) ## gamma modes - ggX = makeX2neutrals('GammaGamma',default_config['XGG'],'pi0 -> gamma gamma',[gX]) - pigX = makeX2neutrals('PiGamma', default_config['XGG'],'eta -> pi0 gamma',[gX,pizRX]) - pigMX = makeX2neutrals('PiGammaM', default_config['XGG'],'eta -> pi0 gamma',[gX,pizMX]) + ggX = makeX2neutrals( + "GammaGamma", default_config["XGG"], "pi0 -> gamma gamma", [gX] + ) + pigX = makeX2neutrals( + "PiGamma", default_config["XGG"], "eta -> pi0 gamma", [gX, pizRX] + ) + pigMX = makeX2neutrals( + "PiGammaM", default_config["XGG"], "eta -> pi0 gamma", [gX, pizMX] + ) ##HHH modes - kkpiX = makeX('KKPi', default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizRX]) - kkpiMX = makeX('KKPiM', default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizMX]) - pipipiX = makeX('PiPiPi', default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizRX]) - pipipiMX = makeX('PiPiPiM', default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizMX]) - #kkpiDDX = makeX('KKPiDD', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX]) - #kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) - #pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) - #pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) - etapipiGGX = makeX('EtaPiPi2GG', default_config['XETAHH'],'KS0 -> eta pi+ pi-',[etaX,piX]) - etapipi3PIX = makeX('EtaPiPi23PI',default_config['XETAHH'],'KS0 -> eta pi+ pi-',[eta23piX,piX]) + kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX]) + kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX]) + pipipiX = makeX( + "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX] + ) + pipipiMX = makeX( + "PiPiPiM", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizMX] + ) + # kkpiDDX = makeX('KKPiDD', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX]) + # kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) + # pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) + # pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) + etapipiGGX = makeX( + "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX] + ) + etapipi3PIX = makeX( + "EtaPiPi23PI", + default_config["XETAHH"], + "KS0 -> eta pi+ pi-", + [eta23piX, piX], + ) # SS X - eeSS = filterEE('SS',default_config['E'],default_config['XLL'],[makeEESS()]) - mmSSX = makeX('MuMuSS',default_config['XLL'],'[KS0 -> mu+ mu+]cc',[muX]) - mmSSDDX = makeX('MuMuSSDD',default_config['XDD'],'[KS0 -> mu+ mu+]cc',[muDX]) - kkSSX = makeX('KKSS',default_config['XLL'],'[KS0 -> K+ K+]cc',[kX]) - kkSSDDX = makeX('KKSSDD',default_config['XDD'],'[KS0 -> K+ K+]cc',[kDX]) - pipiSSX = makeX('PiPiSS',default_config['XLL'],'[KS0 -> pi+ pi+]cc',[piX]) - pipiSSDDX = makeX('PiPiSSDD',default_config['XDD'],'[KS0 -> pi+ pi+]cc',[piDX]) - preSS = default_config['Prescales']['SS'] - - preDD = default_config['Prescales']['DD'] - preKK = default_config['Prescales']['KK'] - - j = makeJ(default_config['J'],[muJ]) - kpiB = makeKst([kB,piB]) + eeSS = filterEE("SS", default_config["E"], default_config["XLL"], [makeEESS()]) + mmSSX = makeX("MuMuSS", default_config["XLL"], "[KS0 -> mu+ mu+]cc", [muX]) + mmSSDDX = makeX("MuMuSSDD", default_config["XDD"], "[KS0 -> mu+ mu+]cc", [muDX]) + kkSSX = makeX("KKSS", default_config["XLL"], "[KS0 -> K+ K+]cc", [kX]) + kkSSDDX = makeX("KKSSDD", default_config["XDD"], "[KS0 -> K+ K+]cc", [kDX]) + pipiSSX = makeX("PiPiSS", default_config["XLL"], "[KS0 -> pi+ pi+]cc", [piX]) + pipiSSDDX = makeX( + "PiPiSSDD", default_config["XDD"], "[KS0 -> pi+ pi+]cc", [piDX] + ) + preSS = default_config["Prescales"]["SS"] + + preDD = default_config["Prescales"]["DD"] + preKK = default_config["Prescales"]["KK"] + + j = makeJ(default_config["J"], [muJ]) + kpiB = makeKst([kB, piB]) # B -> K pi lines - self._makeBLine('B2KpiX2MuMu',['[B0 -> KS0 K+ pi-]cc'], - [mmX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2MuMuDD',['[B0 -> K+ pi- KS0]cc'], - [mmDDX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2EE',['[B0 -> K+ pi- KS0]cc'], - [ee,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2KK',['[B0 -> K+ pi- KS0]cc'], - [kkX,kB,piB],default_config['B2HHX'],preKK) - - #self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2MuMu", + ["[B0 -> KS0 K+ pi-]cc"], + [mmX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2MuMuDD", + ["[B0 -> K+ pi- KS0]cc"], + [mmDDX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2EE", + ["[B0 -> K+ pi- KS0]cc"], + [ee, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2KK", + ["[B0 -> K+ pi- KS0]cc"], + [kkX, kB, piB], + default_config["B2HHX"], + preKK, + ) + + # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], # [kkDDX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2KKPi',['[B0 -> K+ pi- KS0]cc'], - [kkpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2KKPiM',['[B0 -> K+ pi- KS0]cc'], - [kkpiMX,kB,piB],default_config['B2HHX']) - - #self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2KKPi", + ["[B0 -> K+ pi- KS0]cc"], + [kkpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2KKPiM", + ["[B0 -> K+ pi- KS0]cc"], + [kkpiMX, kB, piB], + default_config["B2HHX"], + ) + + # self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'], # [kkpiDDX,kB,piB],default_config['B2HHX']) - #self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'], # [kkpiDDMX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2PiPi',['[B0 -> K+ pi- KS0]cc'], - [pipiX,kB,piB],default_config['B2HHX'],preSS) + self._makeBLine( + "B2KpiX2PiPi", + ["[B0 -> K+ pi- KS0]cc"], + [pipiX, kB, piB], + default_config["B2HHX"], + preSS, + ) - #self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], # [pipiDDX,kB,piB],default_config['B2HHX'],preDD) - self._makeBLine('B2KpiX2PiPiPi',['[B0 -> K+ pi- KS0]cc'], - [pipipiX,kB,piB],default_config['B2HHXTight']) - - self._makeBLine('B2KpiX2PiPiPiM',['[B0 -> K+ pi- KS0]cc'], - [pipipiMX,kB,piB],default_config['B2HHX']) - - #self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2PiPiPi", + ["[B0 -> K+ pi- KS0]cc"], + [pipipiX, kB, piB], + default_config["B2HHXTight"], + ) + + self._makeBLine( + "B2KpiX2PiPiPiM", + ["[B0 -> K+ pi- KS0]cc"], + [pipipiMX, kB, piB], + default_config["B2HHX"], + ) + + # self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'], # [pipipiDDX,kB,piB],default_config['B2HHX']) - #self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'], # [pipipiDDMX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2EtaPiPi2GG',['[B0 -> K+ pi- KS0]cc'], - [etapipiGGX,kB,piB],default_config['B2HHXTight']) - - self._makeBLine('B2KpiX2EtaPiPi23PI',['[B0 -> K+ pi- KS0]cc'], - [etapipi3PIX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX24Pi',['[B0 -> K+ pi- KS0]cc'], - [fourpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX26Pi',['[B0 -> K+ pi- KS0]cc'], - [sixpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX22K2Pi',['[B0 -> K+ pi- KS0]cc'], - [KKpipiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX24K',['[B0 -> K+ pi- KS0]cc'], - [fourKX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2MuMuSS',['[B0 -> K+ pi- KS0]cc'], - [mmSSX,kB,piB],default_config['B2HHX'],preSS) - - self._makeBLine('B2KpiX2MuMuDDSS',['[B0 -> K+ pi- KS0]cc'], - [mmSSDDX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2EESS',['[B0 -> K+ pi- KS0]cc'], - [eeSS,kB,piB],default_config['B2HHX'],preSS) - - self._makeBLine('B2KstX2GammaGamma',['[B0 -> K*(892)0 pi0]cc'], - [ggX,kpiB],default_config['B2KstX_X2neutrals']) - - self._makeBLine('B2KstX2PiGamma',['[B0 -> K*(892)0 eta]cc'], - [pigX,kpiB],default_config['B2KstX_X2neutrals']) - - self._makeBLine('B2KstX2PiGammaM',['[B0 -> K*(892)0 eta]cc'], - [pigMX,kpiB],default_config['B2KstX_X2neutrals']) + self._makeBLine( + "B2KpiX2EtaPiPi2GG", + ["[B0 -> K+ pi- KS0]cc"], + [etapipiGGX, kB, piB], + default_config["B2HHXTight"], + ) + + self._makeBLine( + "B2KpiX2EtaPiPi23PI", + ["[B0 -> K+ pi- KS0]cc"], + [etapipi3PIX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX24Pi", + ["[B0 -> K+ pi- KS0]cc"], + [fourpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX26Pi", + ["[B0 -> K+ pi- KS0]cc"], + [sixpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX22K2Pi", + ["[B0 -> K+ pi- KS0]cc"], + [KKpipiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX24K", + ["[B0 -> K+ pi- KS0]cc"], + [fourKX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2MuMuSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2MuMuDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSDDX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2EESS", + ["[B0 -> K+ pi- KS0]cc"], + [eeSS, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KstX2GammaGamma", + ["[B0 -> K*(892)0 pi0]cc"], + [ggX, kpiB], + default_config["B2KstX_X2neutrals"], + ) + + self._makeBLine( + "B2KstX2PiGamma", + ["[B0 -> K*(892)0 eta]cc"], + [pigX, kpiB], + default_config["B2KstX_X2neutrals"], + ) + + self._makeBLine( + "B2KstX2PiGammaM", + ["[B0 -> K*(892)0 eta]cc"], + [pigMX, kpiB], + default_config["B2KstX_X2neutrals"], + ) # B -> K K lines - #self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'], # [mmX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'], # [mmDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'], # [ee,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'], # [mmSSX,kB],default_config['B2HHX'],preSS) - #self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'], # [mmSSDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'], # [eeSS,kB],default_config['B2HHX'],preSS) - #self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'], # [kkX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'], # [kkDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'], # [pipiX,kB],default_config['B2HHX'],preDD) - #self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'], # [pipiDDX,kB],default_config['B2HHX']) # B -> K lines - self._makeBLine('B2KX2MuMu',['[B+ -> K+ KS0]cc'], - [mmX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2MuMu", ["[B+ -> K+ KS0]cc"], [mmX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2MuMuDD',['[B+ -> K+ KS0]cc'], - [mmDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2MuMuDD", ["[B+ -> K+ KS0]cc"], [mmDDX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2EE',['[B+ -> K+ KS0]cc'], - [ee,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2EE", ["[B+ -> K+ KS0]cc"], [ee, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2KK',['[B+ -> K+ KS0]cc'], - [kkX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], # [kkDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2KKPi',['[B+ -> K+ KS0]cc'], - [kkpiX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2KKPiM',['[B+ -> K+ KS0]cc'], - [kkpiMX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKPiM", ["[B+ -> K+ KS0]cc"], [kkpiMX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'], # [kkpiDDX,kB],default_config['B2KX']) - #self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'], # [kkpiDDMX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPi',['[B+ -> K+ KS0]cc'], - [pipiX,kBhard],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"] + ) - #self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], # [pipiDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPiPi',['[B+ -> K+ KS0]cc'], - [pipipiX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2PiPiPiM',['[B+ -> K+ KS0]cc'], - [pipipiMX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiPiM", ["[B+ -> K+ KS0]cc"], [pipipiMX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'], # [pipipiDDX,kB],default_config['B2KX']) - #self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], # [pipipiDDMX,kB],default_config['B2KX']) - self._makeBLine('B2KX2EtaPiPi2GG',['[B+ -> K+ KS0]cc'], - [etapipiGGX,kB],default_config['B2KXTight']) - - self._makeBLine('B2KX2EtaPiPi23PI',['[B+ -> K+ KS0]cc'], - [etapipi3PIX,kB],default_config['B2KX']) - - self._makeBLine('B2KX24Pi',['[B+ -> K+ KS0]cc'], - [fourpiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX26Pi',['[B+ -> K+ KS0]cc'], - [sixpiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX22K2Pi',['[B+ -> K+ KS0]cc'], - [KKpipiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX24K',['[B+ -> K+ KS0]cc'], - [fourKX,kB],default_config['B2KX']) - - self._makeBLine('B2KX2MuMuSS',['[B+ -> K+ KS0]cc'], - [mmSSX,kB],default_config['B2KX'],preSS) - - self._makeBLine('B2KX2MuMuDDSS',['[B+ -> K+ KS0]cc'], - [mmSSDDX,kB],default_config['B2KX']) - - self._makeBLine('B2KX2EESS',['[B+ -> K+ KS0]cc'], - [eeSS,kB],default_config['B2KX'],preSS) - - self._makeBLine('B2KX2KKSS',['[B+ -> K+ KS0]cc'], - [kkSSX,kB],default_config['B2KX'],preSS) - - #self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], + self._makeBLine( + "B2KX2EtaPiPi2GG", + ["[B+ -> K+ KS0]cc"], + [etapipiGGX, kB], + default_config["B2KXTight"], + ) + + self._makeBLine( + "B2KX2EtaPiPi23PI", + ["[B+ -> K+ KS0]cc"], + [etapipi3PIX, kB], + default_config["B2KX"], + ) + + self._makeBLine( + "B2KX24Pi", ["[B+ -> K+ KS0]cc"], [fourpiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX26Pi", ["[B+ -> K+ KS0]cc"], [sixpiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX22K2Pi", ["[B+ -> K+ KS0]cc"], [KKpipiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX24K", ["[B+ -> K+ KS0]cc"], [fourKX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX2MuMuSS", + ["[B+ -> K+ KS0]cc"], + [mmSSX, kB], + default_config["B2KX"], + preSS, + ) + + self._makeBLine( + "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX2EESS", ["[B+ -> K+ KS0]cc"], [eeSS, kB], default_config["B2KX"], preSS + ) + + self._makeBLine( + "B2KX2KKSS", + ["[B+ -> K+ KS0]cc"], + [kkSSX, kB], + default_config["B2KX"], + preSS, + ) + + # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], # [kkSSDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPiSS',['[B+ -> K+ KS0]cc'], - [pipiSSX,kB],default_config['B2KX'],preSS) + self._makeBLine( + "B2KX2PiPiSS", + ["[B+ -> K+ KS0]cc"], + [pipiSSX, kB], + default_config["B2KX"], + preSS, + ) - #self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], # [pipiSSDDX,kB],default_config['B2KX']) # B -> J/psi lines - self._makeBLine('B2JK',['[B+ -> J/psi(1S) K+]cc'], - [j,kB],default_config['B2KX']) + self._makeBLine( + "B2JK", ["[B+ -> J/psi(1S) K+]cc"], [j, kB], default_config["B2KX"] + ) kst = filterKst() - self._makeBLine('B2JKst',['[B0 -> J/psi(1S) K*(892)0]cc'], - [j,kst],default_config['B2KX']) + self._makeBLine( + "B2JKst", ["[B0 -> J/psi(1S) K*(892)0]cc"], [j, kst], default_config["B2KX"] + ) rho = makeRho([piB]) - #self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX], + # self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX], # default_config['B2HHX']) - #self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX], + # self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX], # default_config['B2HHX']) - - def _makeBLine(self,tag,dec,inputs,default_config,pre=1.0): - sel = makeB(tag,dec,inputs,default_config) - self._makeLine(tag,sel,pre) - - def _makeLine(self,name,sel,pre): - filt = {'Code' : - "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\ - " < %s )" \ - % default_config['CONFIG']['GECNTrkMax'], - 'Preambulo' : [ "from LoKiTracks.decorators import *", - 'from LoKiCore.functions import *' ]} + def _makeBLine(self, tag, dec, inputs, default_config, pre=1.0): + sel = makeB(tag, dec, inputs, default_config) + self._makeLine(tag, sel, pre) + + def _makeLine(self, name, sel, pre): + filt = { + "Code": "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)" + " < %s )" % default_config["CONFIG"]["GECNTrkMax"], + "Preambulo": [ + "from LoKiTracks.decorators import *", + "from LoKiCore.functions import *", + ], + } name = name + "DarkBosonLine" - hlt="" - if name.find('KstX2PiGamma') > -1 or name.find('KstX2GammaGamma') > -1: + hlt = "" + if name.find("KstX2PiGamma") > -1 or name.find("KstX2GammaGamma") > -1: hlt = "HLT_PASS_RE('Hlt2Topo2Body.*Decision')" - elif name.find('MuMu'): + elif name.find("MuMu"): pass else: hlt = "HLT_PASS_RE('Hlt2Topo.*Body.*Decision')" - relInfoTools=self._getRelInfo(name) - #if not relInfoTools: + relInfoTools = self._getRelInfo(name) + # if not relInfoTools: # relInfoTools = default_config['CONFIG']['CommonRelInfoTools'] - sline = StrippingLine(name,pre,selection=sel,HLT2=hlt,checkPV=True,FILTER=filt, - EnableFlavourTagging=False, - RelatedInfoTools = relInfoTools ) #default_config['CONFIG']['CommonRelInfoTools'] ) + sline = StrippingLine( + name, + pre, + selection=sel, + HLT2=hlt, + checkPV=True, + FILTER=filt, + EnableFlavourTagging=False, + RelatedInfoTools=relInfoTools, + ) # default_config['CONFIG']['CommonRelInfoTools'] ) self.registerLine(sline) -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - def _getRelInfo(self,name): + # \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + def _getRelInfo(self, name): relInfoTools = [] - if name.find('DD')>-1: - return relInfoTools ## DD lines go to DST so no relInfoTools + if name.find("DD") > -1: + return relInfoTools ## DD lines go to DST so no relInfoTools decStr = self._getDecStr(name) - if decStr=="": - return relInfoTools ## decay not known - dls = self._getDaugLocs(decStr,"ConeIso05p") + if decStr == "": + return relInfoTools ## decay not known + dls = self._getDaugLocs(decStr, "ConeIso05p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 0.5, - "Variables" : [], - "Location" : 'ConeIso05B0', - "DaughterLocations" : dls, } ) - dls = self._getDaugLocs(decStr,"ConeIso10p") + { + "Type": "RelInfoConeVariables", + "ConeAngle": 0.5, + "Variables": [], + "Location": "ConeIso05B0", + "DaughterLocations": dls, + } + ) + dls = self._getDaugLocs(decStr, "ConeIso10p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 1.0, - "Variables" : [], - "Location" : 'ConeIso10B0', - "DaughterLocations" : dls, } ) - dls = self._getDaugLocs(decStr,"ConeIso15p") + { + "Type": "RelInfoConeVariables", + "ConeAngle": 1.0, + "Variables": [], + "Location": "ConeIso10B0", + "DaughterLocations": dls, + } + ) + dls = self._getDaugLocs(decStr, "ConeIso15p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 1.5, - "Variables" : [], - "Location" : 'ConeIso15B0', - "DaughterLocations" : dls, } ) -# dls = self._getDaugLocs(name,"TrackIsoBDTp") -# relInfoTools.append( -# { "Type": "RelInfoTrackIsolationBDT", -# "Variables" : 0, -# "DaughterLocations" : dls, } ) -# dls = self._getDaugLocs(name,"BsMuMuTrackIsop") -# relInfoTools.append( -# { "Type" : "RelInfoBs2MuMuTrackIsolations", -# "Variables" : [], -# "IsoTwoBody" : True, -# "DaughterLocations" : dls, } ) - relInfoTools.extend(default_config['CONFIG']['CommonRelInfoTools']) + { + "Type": "RelInfoConeVariables", + "ConeAngle": 1.5, + "Variables": [], + "Location": "ConeIso15B0", + "DaughterLocations": dls, + } + ) + # dls = self._getDaugLocs(name,"TrackIsoBDTp") + # relInfoTools.append( + # { "Type": "RelInfoTrackIsolationBDT", + # "Variables" : 0, + # "DaughterLocations" : dls, } ) + # dls = self._getDaugLocs(name,"BsMuMuTrackIsop") + # relInfoTools.append( + # { "Type" : "RelInfoBs2MuMuTrackIsolations", + # "Variables" : [], + # "IsoTwoBody" : True, + # "DaughterLocations" : dls, } ) + relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"]) return relInfoTools - def _getDaugLocs(self,decay,locName): + def _getDaugLocs(self, decay, locName): dls = {} - decay = decay.split('^') - for i in range(1,len(decay)): - dec="^".join([" ".join(decay[:i])," ".join(decay[i:])]) - loc=locName+str(i) + decay = decay.split("^") + for i in range(1, len(decay)): + dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])]) + loc = locName + str(i) dls[dec] = loc return dls - def _getDecStr(self,name): + def _getDecStr(self, name): decay = "" - if name.find('JKst')>-1: + if name.find("JKst") > -1: decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^(K*(892)0 -> ^K+ ^pi-) ]CC" - elif name.find('JK')>-1: + elif name.find("JK") > -1: decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K+ ]CC" else: bpart = self._getBpart(name) xpart = self._getXpart(name) if bpart and xpart: - decay = "".join(["[ ",bpart,"^(",xpart,") ]CC"]) - #print "getDecStr: ",name," ",decay + decay = "".join(["[ ", bpart, "^(", xpart, ") ]CC"]) + # print "getDecStr: ",name," ",decay return decay - def _getXpart(self,name): - ret=None - if name.find('X26Pi')>-1: - ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) ' - elif name.find('X24Pi')>-1: - ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi-' - elif name.find('X22K2Pi')>-1: - ret= 'KS0 -> ^K+ ^pi+ ^K- ^pi-' - elif name.find('X24K')>-1: - ret= 'KS0 -> ^K+ ^K+ ^K- ^K-' - elif name.find('X2PiPiPi')>-1: - ret= 'KS0 -> ^pi+ ^pi- ^pi0' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") - elif name.find('X2KKPi')>-1: - ret= 'KS0 -> ^K+ ^K- ^pi0' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") - elif name.find('X2EtaPiPi')>-1: - ret= 'KS0 -> ^eta ^pi+ ^pi-' - if name.find('2GG')>-1: - ret = ret.replace("eta","(eta -> ^gamma ^gamma) ") + def _getXpart(self, name): + ret = None + if name.find("X26Pi") > -1: + ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) " + elif name.find("X24Pi") > -1: + ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi-" + elif name.find("X22K2Pi") > -1: + ret = "KS0 -> ^K+ ^pi+ ^K- ^pi-" + elif name.find("X24K") > -1: + ret = "KS0 -> ^K+ ^K+ ^K- ^K-" + elif name.find("X2PiPiPi") > -1: + ret = "KS0 -> ^pi+ ^pi- ^pi0" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2KKPi") > -1: + ret = "KS0 -> ^K+ ^K- ^pi0" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2EtaPiPi") > -1: + ret = "KS0 -> ^eta ^pi+ ^pi-" + if name.find("2GG") > -1: + ret = ret.replace("eta", "(eta -> ^gamma ^gamma) ") else: - ret = ret.replace("eta","(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ") - elif name.find('X2MuMu')>-1: - ret= 'KS0 -> ^mu+ ^mu-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2EE')>-1: - ret= 'KS0 -> ^e+ ^e-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2PiPi')>-1: - ret= 'KS0 -> ^pi+ ^pi-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2KK')>-1: - ret= 'KS0 -> ^K+ ^K-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2GammaGamma')>-1: - ret= 'pi0 -> ^gamma ^gamma' - elif name.find('X2PiGamma')>-1: - ret= 'eta -> ^pi0 ^gamma' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") + ret = ret.replace("eta", "(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ") + elif name.find("X2MuMu") > -1: + ret = "KS0 -> ^mu+ ^mu-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2EE") > -1: + ret = "KS0 -> ^e+ ^e-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2PiPi") > -1: + ret = "KS0 -> ^pi+ ^pi-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2KK") > -1: + ret = "KS0 -> ^K+ ^K-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2GammaGamma") > -1: + ret = "pi0 -> ^gamma ^gamma" + elif name.find("X2PiGamma") > -1: + ret = "eta -> ^pi0 ^gamma" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") return ret - def _getBpart(self,name): - if name.find('B2KX')>-1: + def _getBpart(self, name): + if name.find("B2KX") > -1: return "Beauty -> ^K+ " - elif name.find('B2KpiX')>-1: + elif name.find("B2KpiX") > -1: return "Beauty -> ^K+ ^pi- " - elif name.find('B2KstX')>-1: + elif name.find("B2KstX") > -1: return "Beauty -> ^(K*(892)0 -> ^K+ ^pi-) " -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -def filterInputs(which,conf,inputs): - keys = [key.split('_')[0] for key in conf.keys()] - code = LoKiCuts(keys,conf).code() - #code = LoKiCuts.combine(['INMUON',code]) +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + + +def filterInputs(which, conf, inputs): + keys = [key.split("_")[0] for key in conf.keys()] + code = LoKiCuts(keys, conf).code() + # code = LoKiCuts.combine(['INMUON',code]) photonCut = "(NINGENERATION( (ID=='gamma') & ((PT < 500*MeV) | (CL < 0.3)),1)==0)" - code = LoKiCuts.combine([photonCut,code]) - #print "filterInputs: ", which, code - return Selection(which+'DarkBosonFilter',Algorithm=FilterDesktop(Code=code), - RequiredSelections=inputs) - -def filterEE(which,econf,xconf,inputs): - code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" \ - % (xconf['PT_MIN'],econf['PIDe_MIN']) - code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" \ - % econf['MIPCHI2DV_MIN'] - code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf['PT_MIN'] - code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf['TRGHP_MAX'] - code = LoKiCuts.combine([code,LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'], - xconf).code()]) - #print "filterEE: ", code - sel = Selection(which+'FilterEEDarkBosonFilter', - Algorithm=FilterDesktop(Code=code), - RequiredSelections=inputs) + code = LoKiCuts.combine([photonCut, code]) + # print "filterInputs: ", which, code + return Selection( + which + "DarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=inputs, + ) + + +def filterEE(which, econf, xconf, inputs): + code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" % ( + xconf["PT_MIN"], + econf["PIDe_MIN"], + ) + code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" % econf["MIPCHI2DV_MIN"] + code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf["PT_MIN"] + code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf["TRGHP_MAX"] + code = LoKiCuts.combine( + [code, LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], xconf).code()] + ) + # print "filterEE: ", code + sel = Selection( + which + "FilterEEDarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=inputs, + ) decstr = "J/psi(1S) -> e+ e-" - if which=='SS': + if which == "SS": decstr = "[ J/psi(1S) -> e+ e+ ]CC" - sub = SubstitutePID(which+'EESubPIDDarkBoson', - Code="DECTREE('"+decstr+"')") + sub = SubstitutePID(which + "EESubPIDDarkBoson", Code="DECTREE('" + decstr + "')") sub.MaxChi2PerDoF = -666 - sub.Substitutions = {decstr : 'KS0'} - return Selection(which+'EESubPIDDarkBosonSel',Algorithm=sub, - RequiredSelections=[sel]) + sub.Substitutions = {decstr: "KS0"} + return Selection( + which + "EESubPIDDarkBosonSel", Algorithm=sub, RequiredSelections=[sel] + ) + def makeEEdd(default_config): - eedd = DiElectronMaker('EEDDForDarkBoson') + eedd = DiElectronMaker("EEDDForDarkBoson") eedd.Particle = "KS0" selector = trackSelector(eedd, trackTypes=["Downstream"]) - eedd.addTool(ProtoParticleCALOFilter, name='Electron') - eedd.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>'%s'" \ - % default_config['PID']['E']['PIDe_MIN']] + eedd.addTool(ProtoParticleCALOFilter, name="Electron") + eedd.Electron.Selection = [ + "RequiresDet='CALO' CombDLL(e-pi)>'%s'" % default_config["PID"]["E"]["PIDe_MIN"] + ] eedd.DiElectronMassMax = 5000 eedd.DiElectronMassMin = 0 eedd.DiElectronPtMin = 250 eedd.ElectronPtMin = 100 - eedd.ElectronPIDcut = default_config['PID']['E']['PIDe_MIN'] + eedd.ElectronPIDcut = default_config["PID"]["E"]["PIDe_MIN"] + + sel = Selection("EEDDDarkBosonSel", Algorithm=eedd) + code = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config["V"]).code() + # print 'makeEEdd', code + return Selection( + "FilterEEDDDarkBoson", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=[sel], + ) - sel = Selection('EEDDDarkBosonSel',Algorithm=eedd) - code = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config['V']).code() - #print 'makeEEdd', code - return Selection('FilterEEDDDarkBoson',Algorithm=FilterDesktop(Code=code), - RequiredSelections=[sel]) def makeEESS(): - eess = DiElectronMaker('EESSForDarkBoson') + eess = DiElectronMaker("EESSForDarkBoson") eess.Particle = "J/psi(1S)" selector = trackSelector(eess, trackTypes=["Long"]) - eess.addTool(ProtoParticleCALOFilter, name='Electron') + eess.addTool(ProtoParticleCALOFilter, name="Electron") eess.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>-2"] eess.DiElectronMassMax = 5000 eess.DiElectronMassMin = 0 eess.DiElectronPtMin = 250 eess.ElectronPtMin = 100 eess.OppositeSign = False - return Selection('EESSDarkBosonSel',Algorithm=eess) + return Selection("EESSDarkBosonSel", Algorithm=eess) + def filterKst(): - kst = DataOnDemand(Location='Phys/StdLooseDetachedKst2Kpi/Particles') - code = '(MIPCHI2DV(PRIMARY) > 25)' - return Selection('KstDarkBosonFilter',Algorithm=FilterDesktop(Code=code), - RequiredSelections=[kst]) + kst = DataOnDemand(Location="Phys/StdLooseDetachedKst2Kpi/Particles") + code = "(MIPCHI2DV(PRIMARY) > 25)" + return Selection( + "KstDarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=[kst], + ) + -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -def makeX(which,default_config,dec,inputs): - comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config['PT_MIN'] - if(which.find('DD') < 0): + +def makeX(which, default_config, dec, inputs): + comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config["PT_MIN"] + if which.find("DD") < 0: comboCuts += " & (ACUTDOCA(0.2*mm,''))" comboCuts += "& (ADOCACHI2CUT(25,''))" - momCuts = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config).code() - momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts]) - if default_config.has_key('HAD_MINIPCHI2_MIN'): - momCuts += '& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \ - % default_config['HAD_MINIPCHI2_MIN'] - x = CombineParticles(DecayDescriptors=[dec], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeX:',which,comboCuts,momCuts - return Selection("X2"+which+"DarkBosonSel",Algorithm=x, - RequiredSelections=inputs) - -def makeX2neutrals(which,default_config,dec,inputs): - #momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)" - momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config['PT_MIN'] - #if(which.find('C') > -1): + momCuts = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config).code() + momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts]) + if default_config.has_key("HAD_MINIPCHI2_MIN"): + momCuts += ( + "& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)" + % default_config["HAD_MINIPCHI2_MIN"] + ) + x = CombineParticles( + DecayDescriptors=[dec], CombinationCut=comboCuts, MotherCut=momCuts + ) + # print 'makeX:',which,comboCuts,momCuts + return Selection( + "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs + ) + + +def makeX2neutrals(which, default_config, dec, inputs): + # momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)" + momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config["PT_MIN"] + # if(which.find('C') > -1): # momCuts += " & (INTREE( (ID=='gamma') & (ISBASIC) )) & (INTREE( HASTRACK ))" - x = CombineParticles(DecayDescriptors=[dec], - MotherCut=momCuts, - ParticleCombiners = {"" : "MomentumCombiner:PUBLIC"}, - ReFitPVs=False)#True) - #print 'makeX2neutrals:',which,momCuts - return Selection("X2"+which+"DarkBosonSel",Algorithm=x, - RequiredSelections=inputs) - - -def makeJ(default_config,inputs): - comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config['ADAMASS_MAX'] + x = CombineParticles( + DecayDescriptors=[dec], + MotherCut=momCuts, + ParticleCombiners={"": "MomentumCombiner:PUBLIC"}, + ReFitPVs=False, + ) # True) + # print 'makeX2neutrals:',which,momCuts + return Selection( + "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs + ) + + +def makeJ(default_config, inputs): + comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config["ADAMASS_MAX"] comboCuts += " & (ACUTDOCA(0.2*mm,''))" comboCuts += "& (ADOCACHI2CUT(25,''))" - momCuts = LoKiCuts(['HASVERTEX','VCHI2DOF'],default_config).code() - momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts]) - j = CombineParticles(DecayDescriptors=['J/psi(1S) -> mu+ mu-'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeJ:',comboCuts,momCuts - return Selection("J2MuMuDarkBosonSel",Algorithm=j, - RequiredSelections=inputs) - -def makeRho(inputs,which=""): + momCuts = LoKiCuts(["HASVERTEX", "VCHI2DOF"], default_config).code() + momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts]) + j = CombineParticles( + DecayDescriptors=["J/psi(1S) -> mu+ mu-"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeJ:',comboCuts,momCuts + return Selection("J2MuMuDarkBosonSel", Algorithm=j, RequiredSelections=inputs) + + +def makeRho(inputs, which=""): comboCuts = "(AM > 550*MeV) & (AM < 1050*MeV) & ADOCACHI2CUT(25,'')" momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" momCuts += " & (M > 600*MeV) & (M < 1000*MeV)" - rho = CombineParticles(DecayDescriptors=['rho(770)0 -> pi+ pi-'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeRho:',comboCuts,momCuts - return Selection("Rho2PiPi"+which+"DarkBosonSel",Algorithm=rho, - RequiredSelections=inputs) - -def makeKst(inputs,which=""): - comboCuts = "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" #(AM < 2000*MeV)" + rho = CombineParticles( + DecayDescriptors=["rho(770)0 -> pi+ pi-"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeRho:',comboCuts,momCuts + return Selection( + "Rho2PiPi" + which + "DarkBosonSel", Algorithm=rho, RequiredSelections=inputs + ) + + +def makeKst(inputs, which=""): + comboCuts = ( + "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" # (AM < 2000*MeV)" + ) momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" - kst = CombineParticles(DecayDescriptors=['[K*(892)0 -> K+ pi-]cc'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeKst:',comboCuts,momCuts - return Selection("Kst2KPi"+which+"DarkBosonSel",Algorithm=kst, - RequiredSelections=inputs) - -def makeEta(inputs,which=""): + kst = CombineParticles( + DecayDescriptors=["[K*(892)0 -> K+ pi-]cc"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeKst:',comboCuts,momCuts + return Selection( + "Kst2KPi" + which + "DarkBosonSel", Algorithm=kst, RequiredSelections=inputs + ) + + +def makeEta(inputs, which=""): comboCuts = "(AM < 750*MeV) & (ACHI2DOCA(1,2) < 25)" momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" momCuts += " & (M < 650*MeV)" - eta = CombineParticles(DecayDescriptors=['eta -> pi+ pi- pi0'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeOmega:',comboCuts,momCuts - return Selection("Eta2PiPiPi"+which+"DarkBosonSel",Algorithm=eta, - RequiredSelections=inputs) - -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - -def makeB(name,decays,inputs,default_config): - comboCuts = LoKiCuts(['AM','SUMPT'],default_config).code() - momCuts = LoKiCuts(['HASVERTEX','PT','VCHI2DOF','BPVLTIME','BPVIPCHI2','BPVDIRA'],default_config).code() + eta = CombineParticles( + DecayDescriptors=["eta -> pi+ pi- pi0"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeOmega:',comboCuts,momCuts + return Selection( + "Eta2PiPiPi" + which + "DarkBosonSel", Algorithm=eta, RequiredSelections=inputs + ) + + +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + + +def makeB(name, decays, inputs, default_config): + comboCuts = LoKiCuts(["AM", "SUMPT"], default_config).code() + momCuts = LoKiCuts( + ["HASVERTEX", "PT", "VCHI2DOF", "BPVLTIME", "BPVIPCHI2", "BPVDIRA"], + default_config, + ).code() cuts = "" - if default_config.has_key('BPVDIRA_MIN'): - cuts += '(BPVDIRA > %s)' % default_config['BPVDIRA_MIN'] + if default_config.has_key("BPVDIRA_MIN"): + cuts += "(BPVDIRA > %s)" % default_config["BPVDIRA_MIN"] else: - cuts += '(BPVDIRA > 0)' - if default_config.has_key('HAD_MINIPCHI2_MIN'): - cuts += ' & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \ - % default_config['HAD_MINIPCHI2_MIN'] - momCuts = LoKiCuts.combine([momCuts,cuts]) - momCuts += ' & (MM > %s) & (MM < %s)' % (default_config['AM_MIN'],default_config['AM_MAX']) - n=2 - if name.find('B2KpiX') >= 0: n=3 + cuts += "(BPVDIRA > 0)" + if default_config.has_key("HAD_MINIPCHI2_MIN"): + cuts += ( + " & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)" + % default_config["HAD_MINIPCHI2_MIN"] + ) + momCuts = LoKiCuts.combine([momCuts, cuts]) + momCuts += " & (MM > %s) & (MM < %s)" % ( + default_config["AM_MIN"], + default_config["AM_MAX"], + ) + n = 2 + if name.find("B2KpiX") >= 0: + n = 3 alg = None - if n==2: + if n == 2: alg = CombineParticles(DecayDescriptors=decays) else: alg = DaVinci__N3BodyDecays(DecayDescriptors=decays) - alg.Combination12Cut = 'AM < %s' % default_config['AM_MAX'] + alg.Combination12Cut = "AM < %s" % default_config["AM_MAX"] alg.ReFitPVs = True - alg.CombinationCut=comboCuts - alg.MotherCut=momCuts - #print 'makeB:',name,comboCuts,momCuts,decays - return Selection(name+"DarkBosonSel",Algorithm=alg, - RequiredSelections=inputs) + alg.CombinationCut = comboCuts + alg.MotherCut = momCuts + # print 'makeB:',name,comboCuts,momCuts,decays + return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -- GitLab From a55261f9e87ee8dcfcdc1e86cd82f6e15aea6840 Mon Sep 17 00:00:00 2001 From: reallyblaised <blaiserd@proton.me> Date: Fri, 30 Jun 2023 13:36:04 -0400 Subject: [PATCH 02/18] dark scalar lines into mm,kk,pipi with SS --- .../StrippingRD/StrippingDarkBoson.py | 152 +++++++++++++----- .../StrippingRD/__init__.py | 3 +- 2 files changed, 116 insertions(+), 39 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 4cea3e650..7a9b27abe 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -14,7 +14,7 @@ Dark Bosons (ALPs, inflatons, WTFs, etc) Author: M. Williams, D. Craik """ -__author__ = ["Mike Williams", "Dan Craik"] +__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] moduleName = "DarkBoson" @@ -86,15 +86,17 @@ default_config = { #'StrippingB2KKX2MuMuDDSSDarkBosonLine', "StrippingB2KX2MuMuDDDarkBosonLine", "StrippingB2KX2MuMuDDSSDarkBosonLine", - #'StrippingB2KpiX2PiPiDDDarkBosonLine', + "StrippingB2KpiX2PiPiDDDarkBosonLine", + "StrippingB2KpiX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDSSDarkBosonLine', + "StrippingB2KX2PiPiDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2RhoX2MuMuDDDarkBosonLine', - #'StrippingB2KpiX2KKDDDarkBosonLine', + "StrippingB2KpiX2KKDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDSSDarkBosonLine', + "StrippingB2KX2KKDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDDSSDarkBosonLine", # NOTE: 2018 patches ], "Leptonic": [ "StrippingB2KpiX2MuMuDarkBosonLine", @@ -103,15 +105,17 @@ default_config = { #'StrippingB2KKX2MuMuSSDarkBosonLine', "StrippingB2KX2MuMuDarkBosonLine", "StrippingB2KX2MuMuSSDarkBosonLine", - "StrippingB2KpiX2PiPiDarkBosonLine", + "StrippingB2KpiX2PiPiDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2PiPiDarkBosonLine', - "StrippingB2KX2PiPiDarkBosonLine", - "StrippingB2KX2PiPiSSDarkBosonLine", + "StrippingB2KX2PiPiDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2RhoX2MuMuDarkBosonLine', - "StrippingB2KpiX2KKDarkBosonLine", + "StrippingB2KpiX2KKDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2KKDarkBosonLine', - "StrippingB2KX2KKDarkBosonLine", - "StrippingB2KX2KKSSDarkBosonLine", + "StrippingB2KX2KKDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKSSDarkBosonLine", # NOTE: 2018 patches "StrippingB2KpiX2EEDarkBosonLine", "StrippingB2KpiX2EESSDarkBosonLine", #'StrippingB2KKX2EEDarkBosonLine', @@ -310,7 +314,7 @@ default_config = { "AM_MAX": "5800*MeV", "PT_MIN": "3000*MeV", }, - "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25}, + "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 1.0}, "GECNTrkMax": 250, "CommonRelInfoTools": [ {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"}, @@ -447,6 +451,22 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) + self._makeBLine( + "B2KpiX2MuMuSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2MuMuDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) + self._makeBLine( "B2KpiX2EE", ["[B0 -> K+ pi- KS0]cc"], @@ -462,8 +482,29 @@ class DarkBosonConf(LineBuilder): preKK, ) - # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], - # [kkDDX,kB,piB],default_config['B2HHX']) + self._makeBLine( + "B2KpiX2KKSS", + ["[B0 -> K+ pi- KS0]cc"], + [kkSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2KKDD", + ["[B0 -> K+ pi- KS0]cc"], + [kkDDX, kB, piB], + default_config["B2HHX"], + preKK, + ) + + self._makeBLine( + "B2KpiX2KKDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [kkSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) self._makeBLine( "B2KpiX2KKPi", @@ -490,11 +531,34 @@ class DarkBosonConf(LineBuilder): ["[B0 -> K+ pi- KS0]cc"], [pipiX, kB, piB], default_config["B2HHX"], + ) + + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiSS", + ["[B0 -> K+ pi- KS0]cc"], + [pipiSSX, kB, piB], + default_config["B2HHX"], preSS, ) - # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], - # [pipiDDX,kB,piB],default_config['B2HHX'],preDD) + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiDD", + ["[B0 -> K+ pi- KS0]cc"], + [pipiDDX, kB, piB], + default_config["B2HHX"], + preDD, + ) + + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [pipiSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) self._makeBLine( "B2KpiX2PiPiPi", @@ -559,18 +623,10 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMuSS", + "B2KpiX2MuMSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], - preSS, - ) - - self._makeBLine( - "B2KpiX2MuMuDDSS", - ["[B0 -> K+ pi- KS0]cc"], - [mmSSDDX, kB, piB], - default_config["B2HHX"], ) self._makeBLine( @@ -647,11 +703,16 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"] + "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"], preKK ) - # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], - # [kkDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKDD", + ["[B+ -> K+ KS0]cc"], + [kkDDX, kB], + default_config["B2KX"], + preKK, + ) self._makeBLine( "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"] @@ -671,8 +732,9 @@ class DarkBosonConf(LineBuilder): "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"] ) - # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], - # [pipiDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiDD", ["[B+ -> K+ KS0]cc"], [pipiDDX, kB], default_config["B2KX"] + ) self._makeBLine( "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"] @@ -727,7 +789,11 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"] + "B2KX2MuMuDDSS", + ["[B+ -> K+ KS0]cc"], + [mmSSDDX, kB], + default_config["B2KX"], + preSS, ) self._makeBLine( @@ -742,8 +808,13 @@ class DarkBosonConf(LineBuilder): preSS, ) - # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], - # [kkSSDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKDDSS", + ["[B+ -> K+ KS0]cc"], + [kkSSDDX, kB], + default_config["B2KX"], + preSS, + ) self._makeBLine( "B2KX2PiPiSS", @@ -753,8 +824,13 @@ class DarkBosonConf(LineBuilder): preSS, ) - # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], - # [pipiSSDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiDDSS", + ["[B+ -> K+ KS0]cc"], + [pipiSSDDX, kB], + default_config["B2KX"], + preSS, + ) # B -> J/psi lines self._makeBLine( @@ -1176,4 +1252,4 @@ def makeB(name, decays, inputs, default_config): return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# \ No newline at end of file diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py index 62f82fddd..f42c6b6ee 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py @@ -29,7 +29,8 @@ _selections = ('StrippingRareBaryonicMuMu', 'StrippingB2XMuTauMuonic', 'StrippingB2LLXBDTSS', 'StrippingB2KstTauTau', - 'StrippingS2Hyperons' + 'StrippingS2Hyperons', + 'StrippingDarkBoson' ) for _sel in _selections : -- GitLab From c582632cd858f01561df185ac0df714b3a71ad8a Mon Sep 17 00:00:00 2001 From: Blaise Raheem Delaney <blaise.delaney@cern.ch> Date: Sun, 2 Jul 2023 20:48:50 +0200 Subject: [PATCH 03/18] WIP pipig line --- .../StrippingRD/StrippingDarkBoson.py | 62 +++++++++++++------ 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 7a9b27abe..3887cc890 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -12,7 +12,7 @@ """ Dark Bosons (ALPs, inflatons, WTFs, etc) -Author: M. Williams, D. Craik +Author: M. Williams, D. Craik, B. Delaney """ __author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] @@ -69,6 +69,8 @@ default_config = { "StrippingB2KX2EtaPiPi23PIDarkBosonLine", "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine", "StrippingB2KX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KpiX2PiPiGDarkBosonLine", + "StrippingB2KX2PiPiGDarkBosonLine", "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine", "StrippingB2KX24PiDarkBosonLine", "StrippingB2KpiX24PiDarkBosonLine", @@ -87,16 +89,16 @@ default_config = { "StrippingB2KX2MuMuDDDarkBosonLine", "StrippingB2KX2MuMuDDSSDarkBosonLine", "StrippingB2KpiX2PiPiDDDarkBosonLine", - "StrippingB2KpiX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiDDSSDarkBosonLine", #'StrippingB2KKX2PiPiDDDarkBosonLine', - "StrippingB2KX2PiPiDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDDDarkBosonLine", + "StrippingB2KX2PiPiDDSSDarkBosonLine", #'StrippingB2RhoX2MuMuDDDarkBosonLine', - "StrippingB2KpiX2KKDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2KKDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDDDarkBosonLine", + "StrippingB2KpiX2KKDDSSDarkBosonLine", #'StrippingB2KKX2KKDDDarkBosonLine', - "StrippingB2KX2KKDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2KKDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDDDarkBosonLine", + "StrippingB2KX2KKDDSSDarkBosonLine", ], "Leptonic": [ "StrippingB2KpiX2MuMuDarkBosonLine", @@ -105,17 +107,17 @@ default_config = { #'StrippingB2KKX2MuMuSSDarkBosonLine', "StrippingB2KX2MuMuDarkBosonLine", "StrippingB2KX2MuMuSSDarkBosonLine", - "StrippingB2KpiX2PiPiDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2PiPiSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiDarkBosonLine", + "StrippingB2KpiX2PiPiSSDarkBosonLine", #'StrippingB2KKX2PiPiDarkBosonLine', - "StrippingB2KX2PiPiDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2PiPiSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDarkBosonLine", + "StrippingB2KX2PiPiSSDarkBosonLine", #'StrippingB2RhoX2MuMuDarkBosonLine', - "StrippingB2KpiX2KKDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2KKSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDarkBosonLine", + "StrippingB2KpiX2KKSSDarkBosonLine", #'StrippingB2KKX2KKDarkBosonLine', - "StrippingB2KX2KKDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2KKSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDarkBosonLine", + "StrippingB2KX2KKSSDarkBosonLine", "StrippingB2KpiX2EEDarkBosonLine", "StrippingB2KpiX2EESSDarkBosonLine", #'StrippingB2KKX2EEDarkBosonLine', @@ -408,9 +410,16 @@ class DarkBosonConf(LineBuilder): # kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) # pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) # pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) + etapipiGGX = makeX( "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX] ) + + # FIXME: X3H placeholder; might need bespoke selection + pipiGX = makeX( + "PiPiG", default_config["X3H"], "KS0 -> pi+ pi- gamma", [gX, piX] + ) + etapipi3PIX = makeX( "EtaPiPi23PI", default_config["XETAHH"], @@ -533,7 +542,6 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiSS", ["[B0 -> K+ pi- KS0]cc"], @@ -542,7 +550,6 @@ class DarkBosonConf(LineBuilder): preSS, ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiDD", ["[B0 -> K+ pi- KS0]cc"], @@ -551,7 +558,6 @@ class DarkBosonConf(LineBuilder): preDD, ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiDDSS", ["[B0 -> K+ pi- KS0]cc"], @@ -750,6 +756,22 @@ class DarkBosonConf(LineBuilder): # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], # [pipipiDDMX,kB],default_config['B2KX']) + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2PiPiG", + ["[B0 -> K+ pi- KS0]cc"], + [pipiGX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2PiPiG", + ["[B+ -> K+ KS0]cc"], + [pipiGX, kB], + default_config["B2KX"], + ) + self._makeBLine( "B2KX2EtaPiPi2GG", ["[B+ -> K+ KS0]cc"], @@ -1252,4 +1274,4 @@ def makeB(name, decays, inputs, default_config): return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# \ No newline at end of file +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -- GitLab From f89b94bbb95d579f35f6e53e9147accc768baa81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Tue, 11 Jul 2023 18:50:30 +0200 Subject: [PATCH 04/18] Fixing missing line --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 3887cc890..05f4b2ba1 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -1013,6 +1013,8 @@ class DarkBosonConf(LineBuilder): ret = "KS0 -> ^e+ ^e-" if name.find("SS") > -1: ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2PiPiG") > -1: + ret = "KS0 -> ^pi+ ^pi- ^gamma" elif name.find("X2PiPi") > -1: ret = "KS0 -> ^pi+ ^pi-" if name.find("SS") > -1: @@ -1027,6 +1029,7 @@ class DarkBosonConf(LineBuilder): ret = "eta -> ^pi0 ^gamma" if name.find("M") == -1: ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + return ret def _getBpart(self, name): -- GitLab From e486e9a29fe29ded84b3e48bcec82a21bd2d0b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Tue, 11 Jul 2023 20:46:28 +0200 Subject: [PATCH 05/18] Add kshort line --- .../StrippingRD/StrippingDarkBoson.py | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 05f4b2ba1..9372fcca0 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -12,9 +12,9 @@ """ Dark Bosons (ALPs, inflatons, WTFs, etc) -Author: M. Williams, D. Craik, B. Delaney +Author: M. Williams, D. Craik, B. Delaney, A. Casais Vidal """ -__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] +__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney","Adrian Casais Vidal"] moduleName = "DarkBoson" @@ -58,6 +58,10 @@ default_config = { "BUILDERTYPE": "DarkBosonConf", "STREAMS": { "Bhadron": [ + "StrippingB2KpiX2KshortKpiDarkBosonLine", + "StrippingB2KpiX2KshortKpiDDDarkBosonLine", + "StrippingB2KX2KshortKpiDarkBosonLine", + "StrippingB2KX2KshortKpiDDDarkBosonLine", "StrippingB2KX2KKPiDarkBosonLine", "StrippingB2KpiX2KKPiDarkBosonLine", "StrippingB2KX2KKPiMDarkBosonLine", @@ -248,6 +252,18 @@ default_config = { "BPVVDCHI2_MIN": 25, "PT_MIN": "0*MeV", }, + "XKshort":{# making the X for kshort kpi decays + "VCHI2DOF_MAX": 5, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + "HAD_MINIPCHI2_MIN": 25, + }, + "XKshortDD":{# making the X for kshort kpi decays + "VCHI2DOF_MAX": 15, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + "HAD_MINIPCHI2_MIN": 30, + }, "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton "X3H": { # making the X for 3H decays "VCHI2DOF_MAX": 10, @@ -378,6 +394,10 @@ class DarkBosonConf(LineBuilder): kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX]) pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX]) pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX]) + + ksX = makeX("Kshort2PiPi", default_config["XKshort"], "KS0 -> pi+ pi-", [piX]) + ksDDX = makeX("Kshort2PiPiDD", default_config["XKshortDD"], "KS0 -> pi+ pi-", [piDX]) + ## 4-6H modes fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX]) sixpiX = makeX( @@ -400,6 +420,10 @@ class DarkBosonConf(LineBuilder): ##HHH modes kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX]) kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX]) + + kshortKPiX = makeX("KshortKpi", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksX]) + kshortKPiDDX = makeX("kshortKpiDD", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksDDX]) + pipipiX = makeX( "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX] ) @@ -772,6 +796,40 @@ class DarkBosonConf(LineBuilder): default_config["B2KX"], ) + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2KshortKpi", + ["[B0 -> K+ pi- KS0]cc"], + [kshortKPiX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2KshortKpiDD", + ["[B0 -> K+ pi- KS0]cc"], + [kshortKPiDDX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2KshortKpi", + ["[B+ -> K+ KS0]cc"], + [kshortKPiX, kB], + default_config["B2KX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2KshortKpiDD", + ["[B+ -> K+ KS0]cc"], + [kshortKPiDDX, kB], + default_config["B2KX"], + ) + + + self._makeBLine( "B2KX2EtaPiPi2GG", ["[B+ -> K+ KS0]cc"], @@ -995,6 +1053,8 @@ class DarkBosonConf(LineBuilder): ret = "KS0 -> ^pi+ ^pi- ^pi0" if name.find("M") == -1: ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2KshortKpi") > -1: + ret = "[KS0 -> ^(KS0 -> ^pi+ ^pi-) ^K+ ^pi-]CC" elif name.find("X2KKPi") > -1: ret = "KS0 -> ^K+ ^K- ^pi0" if name.find("M") == -1: -- GitLab From 5fbf76413689858f8ffbad55b1be5fe9bc518fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 12:25:16 +0200 Subject: [PATCH 06/18] fix typo --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 9372fcca0..1bb8393e7 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMSS", + "B2KpiX2MuMuSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], -- GitLab From 38fbcff4d3755e59994c6867ccefedfce25d0341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 14:13:38 +0200 Subject: [PATCH 07/18] Added RelInfo tool to neutrals --- .../StrippingRD/StrippingDarkBoson.py | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 1bb8393e7..d5e1c2d3e 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -218,7 +218,7 @@ default_config = { }, "gX": { # gamma from X "PT_MIN": "500*MeV", - "P_MIN": "1000*MeV", + "P_MIN": "3000*MeV", "CL_MIN": "0.3", }, "etaX": { # eta->gg from X @@ -256,13 +256,13 @@ default_config = { "VCHI2DOF_MAX": 5, "BPVVDCHI2_MIN": 25, "PT_MIN": "250*MeV", - "HAD_MINIPCHI2_MIN": 25, + "HAD_MINIPCHI2_MIN": 40, }, "XKshortDD":{# making the X for kshort kpi decays "VCHI2DOF_MAX": 15, "BPVVDCHI2_MIN": 25, "PT_MIN": "250*MeV", - "HAD_MINIPCHI2_MIN": 30, + "HAD_MINIPCHI2_MIN": 40, }, "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton "X3H": { # making the X for 3H decays @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMuSS", + "B2KpiX2MuMSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], @@ -993,6 +993,7 @@ class DarkBosonConf(LineBuilder): } ) dls = self._getDaugLocs(decStr, "ConeIso15p") + relInfoTools.append( { "Type": "RelInfoConeVariables", @@ -1002,6 +1003,16 @@ class DarkBosonConf(LineBuilder): "DaughterLocations": dls, } ) + + dls = self._getDaugLocs(decStr, "GammaIso",onlyGamma=True) + relInfoTools.append( + { + "Type": "RelInfoGammaIso", + "Location": "GammaIso", + "DaughterLocations": dls, + } + ) + # dls = self._getDaugLocs(name,"TrackIsoBDTp") # relInfoTools.append( # { "Type": "RelInfoTrackIsolationBDT", @@ -1016,11 +1027,13 @@ class DarkBosonConf(LineBuilder): relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"]) return relInfoTools - def _getDaugLocs(self, decay, locName): + def _getDaugLocs(self, decay, locName,onlyGamma=False): dls = {} decay = decay.split("^") for i in range(1, len(decay)): dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])]) + if onlyGamma and not ('^gamma' in dec or '^pi0' in dec) : + continue loc = locName + str(i) dls[dec] = loc return dls -- GitLab From c25dd2f9e1af3304c4517538862d9f64485eb980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 14:17:24 +0200 Subject: [PATCH 08/18] fix conflicts --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index d5e1c2d3e..659d9847e 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -218,7 +218,7 @@ default_config = { }, "gX": { # gamma from X "PT_MIN": "500*MeV", - "P_MIN": "3000*MeV", + "P_MIN": "1000*MeV", "CL_MIN": "0.3", }, "etaX": { # eta->gg from X @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMSS", + "B2KpiX2MuMuSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], -- GitLab From 373cb9662a1d69c49bf90683b61b090e08e0017d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais?= <adrian.casais@rai.usc.es> Date: Mon, 3 Jul 2023 16:57:30 +0200 Subject: [PATCH 09/18] Format first --- .../StrippingRD/StrippingDarkBoson.py | 1694 ++++++++++------- 1 file changed, 966 insertions(+), 728 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 536db561b..4cea3e650 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -8,17 +8,17 @@ # granted to it by virtue of its status as an Intergovernmental Organization # # or submit itself to any jurisdiction. # ############################################################################### -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -''' +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +""" Dark Bosons (ALPs, inflatons, WTFs, etc) Author: M. Williams, D. Craik -''' -__author__ = ['Mike Williams', 'Dan Craik'] +""" +__author__ = ["Mike Williams", "Dan Craik"] -moduleName = 'DarkBoson' +moduleName = "DarkBoson" -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# import re from Gaudi.Configuration import * @@ -29,913 +29,1151 @@ from PhysSelPython.Wrappers import EventSelection from StrippingConf.StrippingLine import StrippingLine from StrippingUtils.Utils import LineBuilder from Configurables import LoKi__VoidFilter -from StandardParticles import StdAllNoPIDsPions, StdAllNoPIDsKaons, \ - StdAllNoPIDsProtons, StdNoPIDsUpPions, StdAllLooseMuons, \ - StdLooseDownMuons +from StandardParticles import ( + StdAllNoPIDsPions, + StdAllNoPIDsKaons, + StdAllNoPIDsProtons, + StdNoPIDsUpPions, + StdAllLooseMuons, + StdLooseDownMuons, +) from Beauty2Charm_LoKiCuts import LoKiCuts -from StandardParticles import StdAllLooseGammaLL, StdAllLooseGammaDD, \ - StdAllLooseElectrons, StdLooseAllPhotons#, StdDiElectronFromTracks +from StandardParticles import ( + StdAllLooseGammaLL, + StdAllLooseGammaDD, + StdAllLooseElectrons, + StdLooseAllPhotons, +) # , StdDiElectronFromTracks from Configurables import SubstitutePID from copy import deepcopy from CommonParticles.Utils import * -from Configurables import DiElectronMaker,ProtoParticleCALOFilter +from Configurables import DiElectronMaker, ProtoParticleCALOFilter from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# # Default configuration dictionary default_config = { - 'NAME' : 'DarkBoson', - 'BUILDERTYPE' : 'DarkBosonConf' , - 'STREAMS' : { - 'Bhadron' : [ - 'StrippingB2KX2KKPiDarkBosonLine', - 'StrippingB2KpiX2KKPiDarkBosonLine', - 'StrippingB2KX2KKPiMDarkBosonLine', - 'StrippingB2KpiX2KKPiMDarkBosonLine', - 'StrippingB2KX2PiPiPiDarkBosonLine', - 'StrippingB2KpiX2PiPiPiDarkBosonLine', - 'StrippingB2KX2PiPiPiMDarkBosonLine', - 'StrippingB2KpiX2PiPiPiMDarkBosonLine', - 'StrippingB2KX2EtaPiPi23PIDarkBosonLine', - 'StrippingB2KpiX2EtaPiPi23PIDarkBosonLine', - 'StrippingB2KX2EtaPiPi2GGDarkBosonLine', - 'StrippingB2KpiX2EtaPiPi2GGDarkBosonLine', - 'StrippingB2KX24PiDarkBosonLine', - 'StrippingB2KpiX24PiDarkBosonLine', - 'StrippingB2KX26PiDarkBosonLine', - 'StrippingB2KpiX26PiDarkBosonLine', - 'StrippingB2KX22K2PiDarkBosonLine', - 'StrippingB2KpiX22K2PiDarkBosonLine', - 'StrippingB2KX24KDarkBosonLine', - 'StrippingB2KpiX24KDarkBosonLine', - ], - 'Dimuon' : [ - 'StrippingB2KpiX2MuMuDDDarkBosonLine', - 'StrippingB2KpiX2MuMuDDSSDarkBosonLine', - #'StrippingB2KKX2MuMuDDDarkBosonLine', - #'StrippingB2KKX2MuMuDDSSDarkBosonLine', - 'StrippingB2KX2MuMuDDDarkBosonLine', - 'StrippingB2KX2MuMuDDSSDarkBosonLine', - #'StrippingB2KpiX2PiPiDDDarkBosonLine', - #'StrippingB2KKX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDSSDarkBosonLine', - #'StrippingB2RhoX2MuMuDDDarkBosonLine', - #'StrippingB2KpiX2KKDDDarkBosonLine', - #'StrippingB2KKX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDSSDarkBosonLine', - ], - 'Leptonic' : [ - 'StrippingB2KpiX2MuMuDarkBosonLine', - 'StrippingB2KpiX2MuMuSSDarkBosonLine', - #'StrippingB2KKX2MuMuDarkBosonLine', - #'StrippingB2KKX2MuMuSSDarkBosonLine', - 'StrippingB2KX2MuMuDarkBosonLine', - 'StrippingB2KX2MuMuSSDarkBosonLine', - 'StrippingB2KpiX2PiPiDarkBosonLine', - #'StrippingB2KKX2PiPiDarkBosonLine', - 'StrippingB2KX2PiPiDarkBosonLine', - 'StrippingB2KX2PiPiSSDarkBosonLine', - #'StrippingB2RhoX2MuMuDarkBosonLine', - 'StrippingB2KpiX2KKDarkBosonLine', - #'StrippingB2KKX2KKDarkBosonLine', - 'StrippingB2KX2KKDarkBosonLine', - 'StrippingB2KX2KKSSDarkBosonLine', - 'StrippingB2KpiX2EEDarkBosonLine', - 'StrippingB2KpiX2EESSDarkBosonLine', - #'StrippingB2KKX2EEDarkBosonLine', - #'StrippingB2KKX2EESSDarkBosonLine', - 'StrippingB2KX2EEDarkBosonLine', - 'StrippingB2KX2EESSDarkBosonLine', - 'StrippingB2JKDarkBosonLine', - 'StrippingB2JKstDarkBosonLine', - 'StrippingB2KstX2GammaGammaDarkBosonLine', - 'StrippingB2KstX2PiGammaDarkBosonLine', - 'StrippingB2KstX2PiGammaMDarkBosonLine', - ] + "NAME": "DarkBoson", + "BUILDERTYPE": "DarkBosonConf", + "STREAMS": { + "Bhadron": [ + "StrippingB2KX2KKPiDarkBosonLine", + "StrippingB2KpiX2KKPiDarkBosonLine", + "StrippingB2KX2KKPiMDarkBosonLine", + "StrippingB2KpiX2KKPiMDarkBosonLine", + "StrippingB2KX2PiPiPiDarkBosonLine", + "StrippingB2KpiX2PiPiPiDarkBosonLine", + "StrippingB2KX2PiPiPiMDarkBosonLine", + "StrippingB2KpiX2PiPiPiMDarkBosonLine", + "StrippingB2KX2EtaPiPi23PIDarkBosonLine", + "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine", + "StrippingB2KX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KX24PiDarkBosonLine", + "StrippingB2KpiX24PiDarkBosonLine", + "StrippingB2KX26PiDarkBosonLine", + "StrippingB2KpiX26PiDarkBosonLine", + "StrippingB2KX22K2PiDarkBosonLine", + "StrippingB2KpiX22K2PiDarkBosonLine", + "StrippingB2KX24KDarkBosonLine", + "StrippingB2KpiX24KDarkBosonLine", + ], + "Dimuon": [ + "StrippingB2KpiX2MuMuDDDarkBosonLine", + "StrippingB2KpiX2MuMuDDSSDarkBosonLine", + #'StrippingB2KKX2MuMuDDDarkBosonLine', + #'StrippingB2KKX2MuMuDDSSDarkBosonLine', + "StrippingB2KX2MuMuDDDarkBosonLine", + "StrippingB2KX2MuMuDDSSDarkBosonLine", + #'StrippingB2KpiX2PiPiDDDarkBosonLine', + #'StrippingB2KKX2PiPiDDDarkBosonLine', + #'StrippingB2KX2PiPiDDDarkBosonLine', + #'StrippingB2KX2PiPiDDSSDarkBosonLine', + #'StrippingB2RhoX2MuMuDDDarkBosonLine', + #'StrippingB2KpiX2KKDDDarkBosonLine', + #'StrippingB2KKX2KKDDDarkBosonLine', + #'StrippingB2KX2KKDDDarkBosonLine', + #'StrippingB2KX2KKDDSSDarkBosonLine', + ], + "Leptonic": [ + "StrippingB2KpiX2MuMuDarkBosonLine", + "StrippingB2KpiX2MuMuSSDarkBosonLine", + #'StrippingB2KKX2MuMuDarkBosonLine', + #'StrippingB2KKX2MuMuSSDarkBosonLine', + "StrippingB2KX2MuMuDarkBosonLine", + "StrippingB2KX2MuMuSSDarkBosonLine", + "StrippingB2KpiX2PiPiDarkBosonLine", + #'StrippingB2KKX2PiPiDarkBosonLine', + "StrippingB2KX2PiPiDarkBosonLine", + "StrippingB2KX2PiPiSSDarkBosonLine", + #'StrippingB2RhoX2MuMuDarkBosonLine', + "StrippingB2KpiX2KKDarkBosonLine", + #'StrippingB2KKX2KKDarkBosonLine', + "StrippingB2KX2KKDarkBosonLine", + "StrippingB2KX2KKSSDarkBosonLine", + "StrippingB2KpiX2EEDarkBosonLine", + "StrippingB2KpiX2EESSDarkBosonLine", + #'StrippingB2KKX2EEDarkBosonLine', + #'StrippingB2KKX2EESSDarkBosonLine', + "StrippingB2KX2EEDarkBosonLine", + "StrippingB2KX2EESSDarkBosonLine", + "StrippingB2JKDarkBosonLine", + "StrippingB2JKstDarkBosonLine", + "StrippingB2KstX2GammaGammaDarkBosonLine", + "StrippingB2KstX2PiGammaDarkBosonLine", + "StrippingB2KstX2PiGammaMDarkBosonLine", + ], }, - 'WGs' : [ 'RD' ], - 'CONFIG' : { - "KB" : { # K directly from B - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '2000*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1, + "WGs": ["RD"], + "CONFIG": { + "KB": { # K directly from B + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "2000*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "KBhard": { # K directly from B only for B -> KS0(pipi) K + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 36, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.2, + }, + "PiB": { # pi directly from B + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "2000*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.2, + }, + "KX": { # K from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "PiX": { # pi from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "250*MeV", + "P_MIN": "3000*MeV", + "MIPCHI2DV_MIN": 36, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.2, + }, + "KDX": { # K DOWN from X + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNK_MIN": 0.1, + }, + "PiDX": { # pi DOWN from X + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PROBNNpi_MIN": 0.1, + }, + "MuX": { # muon from X + "TRCHI2DOF_MAX": 3, + "PT_MIN": "100*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 9, + "TRGHP_MAX": 0.3, + "PIDmu_MIN": -5, + }, + "MuJ": { # muon from J/psi + "TRCHI2DOF_MAX": 4, + "PT_MIN": "125*MeV", + "P_MIN": "0*MeV", + "MIPCHI2DV_MIN": 25, + "TRGHP_MAX": 0.3, + "PIDmu_MIN": -4, + }, + "E": { # electron cuts + "TRCHI2DOF_MAX": 5, + "MIPCHI2DV_MIN": 9, + "PT_MIN": "100*MeV", + "TRGHP_MAX": 0.4, + "PIDe_MIN": 0, + }, + "gX": { # gamma from X + "PT_MIN": "500*MeV", + "P_MIN": "1000*MeV", + "CL_MIN": "0.3", + }, + "etaX": { # eta->gg from X + "MM_MIN": "450*MeV", + "MM_MAX": "650*MeV", + "PT_MIN": "500*MeV", + "P_MIN": "2000*MeV", + "CL_MIN": "0.2", + }, + "pizMX": { # merged pi0 from X + "PT_MIN": "500*MeV", + "P_MIN": "3000*MeV", + "CL_MIN": "0.1", + }, + "pizRX": { # resolved pi0 from X + "PT_MIN": "500*MeV", + "CL_MIN": "0.1", + }, + "XLL": { # making the X for LL + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + }, + "XLLhard": { # making the X for LL hard vertex for the pions + "VCHI2DOF_MAX": 5, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + }, + "XDD": { # making X for DD + "VCHI2DOF_MAX": 15, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "0*MeV", + }, + "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton + "X3H": { # making the X for 3H decays + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "500*MeV", + "SUMPT_MIN": "0*MeV", + "HAD_MINIPCHI2_MIN": 16, + }, + "XETAHH": { # making the X for eta pipi decays + "VCHI2DOF_MAX": 10, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "2000*MeV", + "SUMPT_MIN": "0*MeV", + "HAD_MINIPCHI2_MIN": 16, + }, + "J": { # cuts on J/psi + "VCHI2DOF_MAX": 12, + "ADAMASS_MAX": "100*MeV", + }, + "B2KX": { # B -> K X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 25, + "PT_MIN": "1000*MeV", + }, + "B2KXTight": { # B -> K X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 25, + "PT_MIN": "3000*MeV", + }, + "B2HHX": { # B -> Kpi X, KK X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 9, + "PT_MIN": "1000*MeV", + }, + "B2HHXTight": { # B -> Kpi X, KK X + "SUMPT_MIN": "0*MeV", + "VCHI2DOF_MAX": 15, + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "HAD_MINIPCHI2_MIN": 9, + "PT_MIN": "3000*MeV", + }, + "B2KstX_X2neutrals": { # B -> Kpi X, X -> gg, gpi0 + "SUMPT_MIN": "0*MeV", + "BPVIPCHI2_MAX": 10, + "BPVLTIME_MIN": "0.2*ps", + #'BPVDIRA_MIN' : 0.999, + "AM_MIN": "4800*MeV", + "AM_MAX": "5800*MeV", + "PT_MIN": "3000*MeV", + }, + "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25}, + "GECNTrkMax": 250, + "CommonRelInfoTools": [ + {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"}, + {"Type": "RelInfoVertexIsolationBDT", "Location": "VtxIsoInfoBDT"}, + { + "Type": "RelInfoBs2MuMuBIsolations", + "Variables": [], + "Location": "BsMuMuBIsolation", + "tracktype": 3, + "makeTrackCuts": False, + }, + ], }, - "KBhard" : { # K directly from B only for B -> KS0(pipi) K - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 36, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.2, - }, - "PiB" : { # pi directly from B - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '2000*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.2 - }, - "KX" : { # K from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1 - }, - "PiX" : { # pi from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '250*MeV', - 'P_MIN' : '3000*MeV', - 'MIPCHI2DV_MIN' : 36, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.2 - }, - "KDX" : { # K DOWN from X - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNK_MIN' : 0.1 - }, - "PiDX" : { # pi DOWN from X - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PROBNNpi_MIN' : 0.1 - }, - "MuX" : { # muon from X - 'TRCHI2DOF_MAX' : 3, - 'PT_MIN' : '100*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 9, - 'TRGHP_MAX' : 0.3, - 'PIDmu_MIN' : -5 - }, - "MuJ" : { # muon from J/psi - 'TRCHI2DOF_MAX' : 4, - 'PT_MIN' : '125*MeV', - 'P_MIN' : '0*MeV', - 'MIPCHI2DV_MIN' : 25, - 'TRGHP_MAX' : 0.3, - 'PIDmu_MIN' : -4 - }, - "E" : { # electron cuts - 'TRCHI2DOF_MAX' : 5, - 'MIPCHI2DV_MIN' : 9, - 'PT_MIN' : '100*MeV', - 'TRGHP_MAX' : 0.4, - 'PIDe_MIN' : 0 - }, - "gX" : { # gamma from X - 'PT_MIN' : '500*MeV', - 'P_MIN' : '1000*MeV', - 'CL_MIN' : '0.3', - }, - "etaX" : { # eta->gg from X - 'MM_MIN' : '450*MeV', - 'MM_MAX' : '650*MeV', - 'PT_MIN' : '500*MeV', - 'P_MIN' : '2000*MeV', - 'CL_MIN' : '0.2', - }, - "pizMX" : { # merged pi0 from X - 'PT_MIN' : '500*MeV', - 'P_MIN' : '3000*MeV', - 'CL_MIN' : '0.1', - }, - "pizRX" : { # resolved pi0 from X - 'PT_MIN' : '500*MeV', - 'CL_MIN' : '0.1', - }, - "XLL" : { # making the X for LL - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '250*MeV' - }, - "XLLhard" : { # making the X for LL hard vertex for the pions - 'VCHI2DOF_MAX' : 5, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '250*MeV' - }, - "XDD" : { # making X for DD - 'VCHI2DOF_MAX' : 15, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '0*MeV' - }, - "XGG" : { # making the X for diphoton - 'PT_MIN' : '2000*MeV' - }, - "X3H" : { # making the X for 3H decays - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '500*MeV', - 'SUMPT_MIN' : '0*MeV', - 'HAD_MINIPCHI2_MIN' : 16, - }, - "XETAHH" : { # making the X for eta pipi decays - 'VCHI2DOF_MAX' : 10, - 'BPVVDCHI2_MIN' : 25, - 'PT_MIN' : '2000*MeV', - 'SUMPT_MIN' : '0*MeV', - 'HAD_MINIPCHI2_MIN' : 16, - }, - "J" : { # cuts on J/psi - 'VCHI2DOF_MAX' : 12, - 'ADAMASS_MAX' : '100*MeV', - }, - "B2KX" : { # B -> K X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 25, - 'PT_MIN' : '1000*MeV' - }, - "B2KXTight" : { # B -> K X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 25, - 'PT_MIN' : '3000*MeV' - }, - "B2HHX" : { # B -> Kpi X, KK X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 9, - 'PT_MIN' : '1000*MeV' - }, - "B2HHXTight" : { # B -> Kpi X, KK X - 'SUMPT_MIN' : '0*MeV', - 'VCHI2DOF_MAX' : 15, - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'HAD_MINIPCHI2_MIN' : 9, - 'PT_MIN' : '3000*MeV' - }, - "B2KstX_X2neutrals" : { # B -> Kpi X, X -> gg, gpi0 - 'SUMPT_MIN' : '0*MeV', - 'BPVIPCHI2_MAX' : 10, - 'BPVLTIME_MIN' : '0.2*ps', - #'BPVDIRA_MIN' : 0.999, - 'AM_MIN' : '4800*MeV', - 'AM_MAX' : '5800*MeV', - 'PT_MIN' : '3000*MeV' - }, - "Prescales" : { "SS" : 0.1, "DD" : 1.0, "KK": 0.25}, - "GECNTrkMax" : 250, - "CommonRelInfoTools" : [ { "Type": "RelInfoVertexIsolation", "Location":"VtxIsoInfo" }, - { "Type": "RelInfoVertexIsolationBDT", "Location":"VtxIsoInfoBDT" }, - { "Type" : "RelInfoBs2MuMuBIsolations", - "Variables" : [], - "Location" : "BsMuMuBIsolation", - "tracktype" : 3, - "makeTrackCuts" : False, }, - ] - } } -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - -class DarkBosonConf(LineBuilder): +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - __configuration_keys__ = default_config['CONFIG'].keys() - def __init__(self, moduleName, default_config) : +class DarkBosonConf(LineBuilder): + __configuration_keys__ = default_config["CONFIG"].keys() + def __init__(self, moduleName, default_config): LineBuilder.__init__(self, moduleName, default_config) piD = DataOnDemand(Location="Phys/StdNoPIDsDownPions/Particles") kD = DataOnDemand(Location="Phys/StdLooseDownKaons/Particles") pizM = DataOnDemand(Location="Phys/StdLooseMergedPi0/Particles") pizR = DataOnDemand(Location="Phys/StdLooseResolvedPi0/Particles") eta = DataOnDemand(Location="Phys/StdLooseResolvedEta/Particles") - gC = MergedSelection("gC",RequiredSelections=[StdAllLooseGammaLL,StdAllLooseGammaDD]) + gC = MergedSelection( + "gC", RequiredSelections=[StdAllLooseGammaLL, StdAllLooseGammaDD] + ) # pre-filter inputs - kB = filterInputs('KB',default_config['KB'],[StdAllNoPIDsKaons]) - kBhard = filterInputs('KBhard',default_config['KBhard'],[StdAllNoPIDsKaons]) - piB = filterInputs('PiB',default_config['PiB'],[StdAllNoPIDsPions]) - kX = filterInputs('KX',default_config['KX'],[StdAllNoPIDsKaons]) - piX = filterInputs('PiX',default_config['PiX'],[StdAllNoPIDsPions]) - kDX = filterInputs('KDX',default_config['KDX'],[kD]) - piDX = filterInputs('PiDX',default_config['PiDX'],[piD]) - muX = filterInputs('MuX',default_config['MuX'],[StdAllLooseMuons]) - muDX = filterInputs('MuDX',default_config['MuX'],[StdLooseDownMuons]) - muJ = filterInputs('MuJ',default_config['MuJ'],[StdAllLooseMuons]) - - gX = filterInputs('gX',default_config['gX'],[StdLooseAllPhotons]) - pizMX = filterInputs('pizMX',default_config['pizMX'],[pizM]) - pizRX = filterInputs('pizRX',default_config['pizRX'],[pizR]) - etaX = filterInputs('etaX',default_config['etaX'],[eta]) - - eta23piX = makeEta([piX,pizRX],"ForX") + kB = filterInputs("KB", default_config["KB"], [StdAllNoPIDsKaons]) + kBhard = filterInputs("KBhard", default_config["KBhard"], [StdAllNoPIDsKaons]) + piB = filterInputs("PiB", default_config["PiB"], [StdAllNoPIDsPions]) + kX = filterInputs("KX", default_config["KX"], [StdAllNoPIDsKaons]) + piX = filterInputs("PiX", default_config["PiX"], [StdAllNoPIDsPions]) + kDX = filterInputs("KDX", default_config["KDX"], [kD]) + piDX = filterInputs("PiDX", default_config["PiDX"], [piD]) + muX = filterInputs("MuX", default_config["MuX"], [StdAllLooseMuons]) + muDX = filterInputs("MuDX", default_config["MuX"], [StdLooseDownMuons]) + muJ = filterInputs("MuJ", default_config["MuJ"], [StdAllLooseMuons]) + + gX = filterInputs("gX", default_config["gX"], [StdLooseAllPhotons]) + pizMX = filterInputs("pizMX", default_config["pizMX"], [pizM]) + pizRX = filterInputs("pizRX", default_config["pizRX"], [pizR]) + etaX = filterInputs("etaX", default_config["etaX"], [eta]) + + eta23piX = makeEta([piX, pizRX], "ForX") # make/filter X - eestd = DataOnDemand(Location='Phys/StdDiElectronFromTracks/Particles') - ee = filterEE('OS',default_config['E'],default_config['XLL'],[eestd]) - #eeDD = makeEEdd(config) - mmX = makeX('MuMu',default_config['XLL'],'KS0 -> mu+ mu-',[muX]) - mmDDX = makeX('MuMuDD',default_config['XDD'],'KS0 -> mu+ mu-',[muDX]) - kkX = makeX('KK',default_config['XLL'],'KS0 -> K+ K-',[kX]) - kkDDX = makeX('KKDD',default_config['XDD'],'KS0 -> K+ K-',[kDX]) - pipiX = makeX('PiPi',default_config['XLLhard'],'KS0 -> pi+ pi-',[piX]) - pipiDDX = makeX('PiPiDD',default_config['XDD'],'KS0 -> pi+ pi-',[piDX]) + eestd = DataOnDemand(Location="Phys/StdDiElectronFromTracks/Particles") + ee = filterEE("OS", default_config["E"], default_config["XLL"], [eestd]) + # eeDD = makeEEdd(config) + mmX = makeX("MuMu", default_config["XLL"], "KS0 -> mu+ mu-", [muX]) + mmDDX = makeX("MuMuDD", default_config["XDD"], "KS0 -> mu+ mu-", [muDX]) + kkX = makeX("KK", default_config["XLL"], "KS0 -> K+ K-", [kX]) + kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX]) + pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX]) + pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX]) ## 4-6H modes - fourpiX = makeX('4Pi', default_config['XLL'],'KS0 -> pi+ pi+ pi- pi-',[piX]) - sixpiX = makeX('6Pi', default_config['XLL'],'KS0 -> pi+ pi+ pi- pi- pi0 pi0',[piX,pizRX]) - KKpipiX = makeX('2K2Pi',default_config['XLL'],'KS0 -> K+ K- pi+ pi-',[kX,piX]) - fourKX = makeX('4K', default_config['XLL'],'KS0 -> K+ K+ K- K-',[kX]) + fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX]) + sixpiX = makeX( + "6Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi- pi0 pi0", [piX, pizRX] + ) + KKpipiX = makeX( + "2K2Pi", default_config["XLL"], "KS0 -> K+ K- pi+ pi-", [kX, piX] + ) + fourKX = makeX("4K", default_config["XLL"], "KS0 -> K+ K+ K- K-", [kX]) ## gamma modes - ggX = makeX2neutrals('GammaGamma',default_config['XGG'],'pi0 -> gamma gamma',[gX]) - pigX = makeX2neutrals('PiGamma', default_config['XGG'],'eta -> pi0 gamma',[gX,pizRX]) - pigMX = makeX2neutrals('PiGammaM', default_config['XGG'],'eta -> pi0 gamma',[gX,pizMX]) + ggX = makeX2neutrals( + "GammaGamma", default_config["XGG"], "pi0 -> gamma gamma", [gX] + ) + pigX = makeX2neutrals( + "PiGamma", default_config["XGG"], "eta -> pi0 gamma", [gX, pizRX] + ) + pigMX = makeX2neutrals( + "PiGammaM", default_config["XGG"], "eta -> pi0 gamma", [gX, pizMX] + ) ##HHH modes - kkpiX = makeX('KKPi', default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizRX]) - kkpiMX = makeX('KKPiM', default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizMX]) - pipipiX = makeX('PiPiPi', default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizRX]) - pipipiMX = makeX('PiPiPiM', default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizMX]) - #kkpiDDX = makeX('KKPiDD', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX]) - #kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) - #pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) - #pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) - etapipiGGX = makeX('EtaPiPi2GG', default_config['XETAHH'],'KS0 -> eta pi+ pi-',[etaX,piX]) - etapipi3PIX = makeX('EtaPiPi23PI',default_config['XETAHH'],'KS0 -> eta pi+ pi-',[eta23piX,piX]) + kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX]) + kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX]) + pipipiX = makeX( + "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX] + ) + pipipiMX = makeX( + "PiPiPiM", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizMX] + ) + # kkpiDDX = makeX('KKPiDD', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX]) + # kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) + # pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) + # pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) + etapipiGGX = makeX( + "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX] + ) + etapipi3PIX = makeX( + "EtaPiPi23PI", + default_config["XETAHH"], + "KS0 -> eta pi+ pi-", + [eta23piX, piX], + ) # SS X - eeSS = filterEE('SS',default_config['E'],default_config['XLL'],[makeEESS()]) - mmSSX = makeX('MuMuSS',default_config['XLL'],'[KS0 -> mu+ mu+]cc',[muX]) - mmSSDDX = makeX('MuMuSSDD',default_config['XDD'],'[KS0 -> mu+ mu+]cc',[muDX]) - kkSSX = makeX('KKSS',default_config['XLL'],'[KS0 -> K+ K+]cc',[kX]) - kkSSDDX = makeX('KKSSDD',default_config['XDD'],'[KS0 -> K+ K+]cc',[kDX]) - pipiSSX = makeX('PiPiSS',default_config['XLL'],'[KS0 -> pi+ pi+]cc',[piX]) - pipiSSDDX = makeX('PiPiSSDD',default_config['XDD'],'[KS0 -> pi+ pi+]cc',[piDX]) - preSS = default_config['Prescales']['SS'] - - preDD = default_config['Prescales']['DD'] - preKK = default_config['Prescales']['KK'] - - j = makeJ(default_config['J'],[muJ]) - kpiB = makeKst([kB,piB]) + eeSS = filterEE("SS", default_config["E"], default_config["XLL"], [makeEESS()]) + mmSSX = makeX("MuMuSS", default_config["XLL"], "[KS0 -> mu+ mu+]cc", [muX]) + mmSSDDX = makeX("MuMuSSDD", default_config["XDD"], "[KS0 -> mu+ mu+]cc", [muDX]) + kkSSX = makeX("KKSS", default_config["XLL"], "[KS0 -> K+ K+]cc", [kX]) + kkSSDDX = makeX("KKSSDD", default_config["XDD"], "[KS0 -> K+ K+]cc", [kDX]) + pipiSSX = makeX("PiPiSS", default_config["XLL"], "[KS0 -> pi+ pi+]cc", [piX]) + pipiSSDDX = makeX( + "PiPiSSDD", default_config["XDD"], "[KS0 -> pi+ pi+]cc", [piDX] + ) + preSS = default_config["Prescales"]["SS"] + + preDD = default_config["Prescales"]["DD"] + preKK = default_config["Prescales"]["KK"] + + j = makeJ(default_config["J"], [muJ]) + kpiB = makeKst([kB, piB]) # B -> K pi lines - self._makeBLine('B2KpiX2MuMu',['[B0 -> KS0 K+ pi-]cc'], - [mmX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2MuMuDD',['[B0 -> K+ pi- KS0]cc'], - [mmDDX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2EE',['[B0 -> K+ pi- KS0]cc'], - [ee,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2KK',['[B0 -> K+ pi- KS0]cc'], - [kkX,kB,piB],default_config['B2HHX'],preKK) - - #self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2MuMu", + ["[B0 -> KS0 K+ pi-]cc"], + [mmX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2MuMuDD", + ["[B0 -> K+ pi- KS0]cc"], + [mmDDX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2EE", + ["[B0 -> K+ pi- KS0]cc"], + [ee, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2KK", + ["[B0 -> K+ pi- KS0]cc"], + [kkX, kB, piB], + default_config["B2HHX"], + preKK, + ) + + # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], # [kkDDX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2KKPi',['[B0 -> K+ pi- KS0]cc'], - [kkpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2KKPiM',['[B0 -> K+ pi- KS0]cc'], - [kkpiMX,kB,piB],default_config['B2HHX']) - - #self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2KKPi", + ["[B0 -> K+ pi- KS0]cc"], + [kkpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2KKPiM", + ["[B0 -> K+ pi- KS0]cc"], + [kkpiMX, kB, piB], + default_config["B2HHX"], + ) + + # self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'], # [kkpiDDX,kB,piB],default_config['B2HHX']) - #self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'], # [kkpiDDMX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2PiPi',['[B0 -> K+ pi- KS0]cc'], - [pipiX,kB,piB],default_config['B2HHX'],preSS) + self._makeBLine( + "B2KpiX2PiPi", + ["[B0 -> K+ pi- KS0]cc"], + [pipiX, kB, piB], + default_config["B2HHX"], + preSS, + ) - #self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], # [pipiDDX,kB,piB],default_config['B2HHX'],preDD) - self._makeBLine('B2KpiX2PiPiPi',['[B0 -> K+ pi- KS0]cc'], - [pipipiX,kB,piB],default_config['B2HHXTight']) - - self._makeBLine('B2KpiX2PiPiPiM',['[B0 -> K+ pi- KS0]cc'], - [pipipiMX,kB,piB],default_config['B2HHX']) - - #self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'], + self._makeBLine( + "B2KpiX2PiPiPi", + ["[B0 -> K+ pi- KS0]cc"], + [pipipiX, kB, piB], + default_config["B2HHXTight"], + ) + + self._makeBLine( + "B2KpiX2PiPiPiM", + ["[B0 -> K+ pi- KS0]cc"], + [pipipiMX, kB, piB], + default_config["B2HHX"], + ) + + # self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'], # [pipipiDDX,kB,piB],default_config['B2HHX']) - #self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'], + # self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'], # [pipipiDDMX,kB,piB],default_config['B2HHX']) - self._makeBLine('B2KpiX2EtaPiPi2GG',['[B0 -> K+ pi- KS0]cc'], - [etapipiGGX,kB,piB],default_config['B2HHXTight']) - - self._makeBLine('B2KpiX2EtaPiPi23PI',['[B0 -> K+ pi- KS0]cc'], - [etapipi3PIX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX24Pi',['[B0 -> K+ pi- KS0]cc'], - [fourpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX26Pi',['[B0 -> K+ pi- KS0]cc'], - [sixpiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX22K2Pi',['[B0 -> K+ pi- KS0]cc'], - [KKpipiX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX24K',['[B0 -> K+ pi- KS0]cc'], - [fourKX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2MuMuSS',['[B0 -> K+ pi- KS0]cc'], - [mmSSX,kB,piB],default_config['B2HHX'],preSS) - - self._makeBLine('B2KpiX2MuMuDDSS',['[B0 -> K+ pi- KS0]cc'], - [mmSSDDX,kB,piB],default_config['B2HHX']) - - self._makeBLine('B2KpiX2EESS',['[B0 -> K+ pi- KS0]cc'], - [eeSS,kB,piB],default_config['B2HHX'],preSS) - - self._makeBLine('B2KstX2GammaGamma',['[B0 -> K*(892)0 pi0]cc'], - [ggX,kpiB],default_config['B2KstX_X2neutrals']) - - self._makeBLine('B2KstX2PiGamma',['[B0 -> K*(892)0 eta]cc'], - [pigX,kpiB],default_config['B2KstX_X2neutrals']) - - self._makeBLine('B2KstX2PiGammaM',['[B0 -> K*(892)0 eta]cc'], - [pigMX,kpiB],default_config['B2KstX_X2neutrals']) + self._makeBLine( + "B2KpiX2EtaPiPi2GG", + ["[B0 -> K+ pi- KS0]cc"], + [etapipiGGX, kB, piB], + default_config["B2HHXTight"], + ) + + self._makeBLine( + "B2KpiX2EtaPiPi23PI", + ["[B0 -> K+ pi- KS0]cc"], + [etapipi3PIX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX24Pi", + ["[B0 -> K+ pi- KS0]cc"], + [fourpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX26Pi", + ["[B0 -> K+ pi- KS0]cc"], + [sixpiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX22K2Pi", + ["[B0 -> K+ pi- KS0]cc"], + [KKpipiX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX24K", + ["[B0 -> K+ pi- KS0]cc"], + [fourKX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2MuMuSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2MuMuDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSDDX, kB, piB], + default_config["B2HHX"], + ) + + self._makeBLine( + "B2KpiX2EESS", + ["[B0 -> K+ pi- KS0]cc"], + [eeSS, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KstX2GammaGamma", + ["[B0 -> K*(892)0 pi0]cc"], + [ggX, kpiB], + default_config["B2KstX_X2neutrals"], + ) + + self._makeBLine( + "B2KstX2PiGamma", + ["[B0 -> K*(892)0 eta]cc"], + [pigX, kpiB], + default_config["B2KstX_X2neutrals"], + ) + + self._makeBLine( + "B2KstX2PiGammaM", + ["[B0 -> K*(892)0 eta]cc"], + [pigMX, kpiB], + default_config["B2KstX_X2neutrals"], + ) # B -> K K lines - #self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'], # [mmX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'], # [mmDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'], # [ee,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'], # [mmSSX,kB],default_config['B2HHX'],preSS) - #self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'], # [mmSSDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'], # [eeSS,kB],default_config['B2HHX'],preSS) - #self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'], # [kkX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'], # [kkDDX,kB],default_config['B2HHX']) - #self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'], # [pipiX,kB],default_config['B2HHX'],preDD) - #self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'], + # self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'], # [pipiDDX,kB],default_config['B2HHX']) # B -> K lines - self._makeBLine('B2KX2MuMu',['[B+ -> K+ KS0]cc'], - [mmX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2MuMu", ["[B+ -> K+ KS0]cc"], [mmX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2MuMuDD',['[B+ -> K+ KS0]cc'], - [mmDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2MuMuDD", ["[B+ -> K+ KS0]cc"], [mmDDX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2EE',['[B+ -> K+ KS0]cc'], - [ee,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2EE", ["[B+ -> K+ KS0]cc"], [ee, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2KK',['[B+ -> K+ KS0]cc'], - [kkX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], # [kkDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2KKPi',['[B+ -> K+ KS0]cc'], - [kkpiX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2KKPiM',['[B+ -> K+ KS0]cc'], - [kkpiMX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKPiM", ["[B+ -> K+ KS0]cc"], [kkpiMX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'], # [kkpiDDX,kB],default_config['B2KX']) - #self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'], # [kkpiDDMX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPi',['[B+ -> K+ KS0]cc'], - [pipiX,kBhard],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"] + ) - #self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], # [pipiDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPiPi',['[B+ -> K+ KS0]cc'], - [pipipiX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"] + ) - self._makeBLine('B2KX2PiPiPiM',['[B+ -> K+ KS0]cc'], - [pipipiMX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiPiM", ["[B+ -> K+ KS0]cc"], [pipipiMX, kB], default_config["B2KX"] + ) - #self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'], # [pipipiDDX,kB],default_config['B2KX']) - #self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], # [pipipiDDMX,kB],default_config['B2KX']) - self._makeBLine('B2KX2EtaPiPi2GG',['[B+ -> K+ KS0]cc'], - [etapipiGGX,kB],default_config['B2KXTight']) - - self._makeBLine('B2KX2EtaPiPi23PI',['[B+ -> K+ KS0]cc'], - [etapipi3PIX,kB],default_config['B2KX']) - - self._makeBLine('B2KX24Pi',['[B+ -> K+ KS0]cc'], - [fourpiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX26Pi',['[B+ -> K+ KS0]cc'], - [sixpiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX22K2Pi',['[B+ -> K+ KS0]cc'], - [KKpipiX,kB],default_config['B2KX']) - - self._makeBLine('B2KX24K',['[B+ -> K+ KS0]cc'], - [fourKX,kB],default_config['B2KX']) - - self._makeBLine('B2KX2MuMuSS',['[B+ -> K+ KS0]cc'], - [mmSSX,kB],default_config['B2KX'],preSS) - - self._makeBLine('B2KX2MuMuDDSS',['[B+ -> K+ KS0]cc'], - [mmSSDDX,kB],default_config['B2KX']) - - self._makeBLine('B2KX2EESS',['[B+ -> K+ KS0]cc'], - [eeSS,kB],default_config['B2KX'],preSS) - - self._makeBLine('B2KX2KKSS',['[B+ -> K+ KS0]cc'], - [kkSSX,kB],default_config['B2KX'],preSS) - - #self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], + self._makeBLine( + "B2KX2EtaPiPi2GG", + ["[B+ -> K+ KS0]cc"], + [etapipiGGX, kB], + default_config["B2KXTight"], + ) + + self._makeBLine( + "B2KX2EtaPiPi23PI", + ["[B+ -> K+ KS0]cc"], + [etapipi3PIX, kB], + default_config["B2KX"], + ) + + self._makeBLine( + "B2KX24Pi", ["[B+ -> K+ KS0]cc"], [fourpiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX26Pi", ["[B+ -> K+ KS0]cc"], [sixpiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX22K2Pi", ["[B+ -> K+ KS0]cc"], [KKpipiX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX24K", ["[B+ -> K+ KS0]cc"], [fourKX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX2MuMuSS", + ["[B+ -> K+ KS0]cc"], + [mmSSX, kB], + default_config["B2KX"], + preSS, + ) + + self._makeBLine( + "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"] + ) + + self._makeBLine( + "B2KX2EESS", ["[B+ -> K+ KS0]cc"], [eeSS, kB], default_config["B2KX"], preSS + ) + + self._makeBLine( + "B2KX2KKSS", + ["[B+ -> K+ KS0]cc"], + [kkSSX, kB], + default_config["B2KX"], + preSS, + ) + + # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], # [kkSSDDX,kB],default_config['B2KX']) - self._makeBLine('B2KX2PiPiSS',['[B+ -> K+ KS0]cc'], - [pipiSSX,kB],default_config['B2KX'],preSS) + self._makeBLine( + "B2KX2PiPiSS", + ["[B+ -> K+ KS0]cc"], + [pipiSSX, kB], + default_config["B2KX"], + preSS, + ) - #self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], + # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], # [pipiSSDDX,kB],default_config['B2KX']) # B -> J/psi lines - self._makeBLine('B2JK',['[B+ -> J/psi(1S) K+]cc'], - [j,kB],default_config['B2KX']) + self._makeBLine( + "B2JK", ["[B+ -> J/psi(1S) K+]cc"], [j, kB], default_config["B2KX"] + ) kst = filterKst() - self._makeBLine('B2JKst',['[B0 -> J/psi(1S) K*(892)0]cc'], - [j,kst],default_config['B2KX']) + self._makeBLine( + "B2JKst", ["[B0 -> J/psi(1S) K*(892)0]cc"], [j, kst], default_config["B2KX"] + ) rho = makeRho([piB]) - #self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX], + # self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX], # default_config['B2HHX']) - #self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX], + # self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX], # default_config['B2HHX']) - - def _makeBLine(self,tag,dec,inputs,default_config,pre=1.0): - sel = makeB(tag,dec,inputs,default_config) - self._makeLine(tag,sel,pre) - - def _makeLine(self,name,sel,pre): - filt = {'Code' : - "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\ - " < %s )" \ - % default_config['CONFIG']['GECNTrkMax'], - 'Preambulo' : [ "from LoKiTracks.decorators import *", - 'from LoKiCore.functions import *' ]} + def _makeBLine(self, tag, dec, inputs, default_config, pre=1.0): + sel = makeB(tag, dec, inputs, default_config) + self._makeLine(tag, sel, pre) + + def _makeLine(self, name, sel, pre): + filt = { + "Code": "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)" + " < %s )" % default_config["CONFIG"]["GECNTrkMax"], + "Preambulo": [ + "from LoKiTracks.decorators import *", + "from LoKiCore.functions import *", + ], + } name = name + "DarkBosonLine" - hlt="" - if name.find('KstX2PiGamma') > -1 or name.find('KstX2GammaGamma') > -1: + hlt = "" + if name.find("KstX2PiGamma") > -1 or name.find("KstX2GammaGamma") > -1: hlt = "HLT_PASS_RE('Hlt2Topo2Body.*Decision')" - elif name.find('MuMu'): + elif name.find("MuMu"): pass else: hlt = "HLT_PASS_RE('Hlt2Topo.*Body.*Decision')" - relInfoTools=self._getRelInfo(name) - #if not relInfoTools: + relInfoTools = self._getRelInfo(name) + # if not relInfoTools: # relInfoTools = default_config['CONFIG']['CommonRelInfoTools'] - sline = StrippingLine(name,pre,selection=sel,HLT2=hlt,checkPV=True,FILTER=filt, - EnableFlavourTagging=False, - RelatedInfoTools = relInfoTools ) #default_config['CONFIG']['CommonRelInfoTools'] ) + sline = StrippingLine( + name, + pre, + selection=sel, + HLT2=hlt, + checkPV=True, + FILTER=filt, + EnableFlavourTagging=False, + RelatedInfoTools=relInfoTools, + ) # default_config['CONFIG']['CommonRelInfoTools'] ) self.registerLine(sline) -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - def _getRelInfo(self,name): + # \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + def _getRelInfo(self, name): relInfoTools = [] - if name.find('DD')>-1: - return relInfoTools ## DD lines go to DST so no relInfoTools + if name.find("DD") > -1: + return relInfoTools ## DD lines go to DST so no relInfoTools decStr = self._getDecStr(name) - if decStr=="": - return relInfoTools ## decay not known - dls = self._getDaugLocs(decStr,"ConeIso05p") + if decStr == "": + return relInfoTools ## decay not known + dls = self._getDaugLocs(decStr, "ConeIso05p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 0.5, - "Variables" : [], - "Location" : 'ConeIso05B0', - "DaughterLocations" : dls, } ) - dls = self._getDaugLocs(decStr,"ConeIso10p") + { + "Type": "RelInfoConeVariables", + "ConeAngle": 0.5, + "Variables": [], + "Location": "ConeIso05B0", + "DaughterLocations": dls, + } + ) + dls = self._getDaugLocs(decStr, "ConeIso10p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 1.0, - "Variables" : [], - "Location" : 'ConeIso10B0', - "DaughterLocations" : dls, } ) - dls = self._getDaugLocs(decStr,"ConeIso15p") + { + "Type": "RelInfoConeVariables", + "ConeAngle": 1.0, + "Variables": [], + "Location": "ConeIso10B0", + "DaughterLocations": dls, + } + ) + dls = self._getDaugLocs(decStr, "ConeIso15p") relInfoTools.append( - { "Type" : "RelInfoConeVariables", - "ConeAngle" : 1.5, - "Variables" : [], - "Location" : 'ConeIso15B0', - "DaughterLocations" : dls, } ) -# dls = self._getDaugLocs(name,"TrackIsoBDTp") -# relInfoTools.append( -# { "Type": "RelInfoTrackIsolationBDT", -# "Variables" : 0, -# "DaughterLocations" : dls, } ) -# dls = self._getDaugLocs(name,"BsMuMuTrackIsop") -# relInfoTools.append( -# { "Type" : "RelInfoBs2MuMuTrackIsolations", -# "Variables" : [], -# "IsoTwoBody" : True, -# "DaughterLocations" : dls, } ) - relInfoTools.extend(default_config['CONFIG']['CommonRelInfoTools']) + { + "Type": "RelInfoConeVariables", + "ConeAngle": 1.5, + "Variables": [], + "Location": "ConeIso15B0", + "DaughterLocations": dls, + } + ) + # dls = self._getDaugLocs(name,"TrackIsoBDTp") + # relInfoTools.append( + # { "Type": "RelInfoTrackIsolationBDT", + # "Variables" : 0, + # "DaughterLocations" : dls, } ) + # dls = self._getDaugLocs(name,"BsMuMuTrackIsop") + # relInfoTools.append( + # { "Type" : "RelInfoBs2MuMuTrackIsolations", + # "Variables" : [], + # "IsoTwoBody" : True, + # "DaughterLocations" : dls, } ) + relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"]) return relInfoTools - def _getDaugLocs(self,decay,locName): + def _getDaugLocs(self, decay, locName): dls = {} - decay = decay.split('^') - for i in range(1,len(decay)): - dec="^".join([" ".join(decay[:i])," ".join(decay[i:])]) - loc=locName+str(i) + decay = decay.split("^") + for i in range(1, len(decay)): + dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])]) + loc = locName + str(i) dls[dec] = loc return dls - def _getDecStr(self,name): + def _getDecStr(self, name): decay = "" - if name.find('JKst')>-1: + if name.find("JKst") > -1: decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^(K*(892)0 -> ^K+ ^pi-) ]CC" - elif name.find('JK')>-1: + elif name.find("JK") > -1: decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K+ ]CC" else: bpart = self._getBpart(name) xpart = self._getXpart(name) if bpart and xpart: - decay = "".join(["[ ",bpart,"^(",xpart,") ]CC"]) - #print "getDecStr: ",name," ",decay + decay = "".join(["[ ", bpart, "^(", xpart, ") ]CC"]) + # print "getDecStr: ",name," ",decay return decay - def _getXpart(self,name): - ret=None - if name.find('X26Pi')>-1: - ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) ' - elif name.find('X24Pi')>-1: - ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi-' - elif name.find('X22K2Pi')>-1: - ret= 'KS0 -> ^K+ ^pi+ ^K- ^pi-' - elif name.find('X24K')>-1: - ret= 'KS0 -> ^K+ ^K+ ^K- ^K-' - elif name.find('X2PiPiPi')>-1: - ret= 'KS0 -> ^pi+ ^pi- ^pi0' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") - elif name.find('X2KKPi')>-1: - ret= 'KS0 -> ^K+ ^K- ^pi0' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") - elif name.find('X2EtaPiPi')>-1: - ret= 'KS0 -> ^eta ^pi+ ^pi-' - if name.find('2GG')>-1: - ret = ret.replace("eta","(eta -> ^gamma ^gamma) ") + def _getXpart(self, name): + ret = None + if name.find("X26Pi") > -1: + ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) " + elif name.find("X24Pi") > -1: + ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi-" + elif name.find("X22K2Pi") > -1: + ret = "KS0 -> ^K+ ^pi+ ^K- ^pi-" + elif name.find("X24K") > -1: + ret = "KS0 -> ^K+ ^K+ ^K- ^K-" + elif name.find("X2PiPiPi") > -1: + ret = "KS0 -> ^pi+ ^pi- ^pi0" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2KKPi") > -1: + ret = "KS0 -> ^K+ ^K- ^pi0" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2EtaPiPi") > -1: + ret = "KS0 -> ^eta ^pi+ ^pi-" + if name.find("2GG") > -1: + ret = ret.replace("eta", "(eta -> ^gamma ^gamma) ") else: - ret = ret.replace("eta","(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ") - elif name.find('X2MuMu')>-1: - ret= 'KS0 -> ^mu+ ^mu-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2EE')>-1: - ret= 'KS0 -> ^e+ ^e-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2PiPi')>-1: - ret= 'KS0 -> ^pi+ ^pi-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2KK')>-1: - ret= 'KS0 -> ^K+ ^K-' - if name.find('SS')>-1: - ret = "[ "+ret[:-1]+"+ ]CC " - elif name.find('X2GammaGamma')>-1: - ret= 'pi0 -> ^gamma ^gamma' - elif name.find('X2PiGamma')>-1: - ret= 'eta -> ^pi0 ^gamma' - if name.find('M')==-1: - ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ") + ret = ret.replace("eta", "(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ") + elif name.find("X2MuMu") > -1: + ret = "KS0 -> ^mu+ ^mu-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2EE") > -1: + ret = "KS0 -> ^e+ ^e-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2PiPi") > -1: + ret = "KS0 -> ^pi+ ^pi-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2KK") > -1: + ret = "KS0 -> ^K+ ^K-" + if name.find("SS") > -1: + ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2GammaGamma") > -1: + ret = "pi0 -> ^gamma ^gamma" + elif name.find("X2PiGamma") > -1: + ret = "eta -> ^pi0 ^gamma" + if name.find("M") == -1: + ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") return ret - def _getBpart(self,name): - if name.find('B2KX')>-1: + def _getBpart(self, name): + if name.find("B2KX") > -1: return "Beauty -> ^K+ " - elif name.find('B2KpiX')>-1: + elif name.find("B2KpiX") > -1: return "Beauty -> ^K+ ^pi- " - elif name.find('B2KstX')>-1: + elif name.find("B2KstX") > -1: return "Beauty -> ^(K*(892)0 -> ^K+ ^pi-) " -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -def filterInputs(which,conf,inputs): - keys = [key.split('_')[0] for key in conf.keys()] - code = LoKiCuts(keys,conf).code() - #code = LoKiCuts.combine(['INMUON',code]) +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + + +def filterInputs(which, conf, inputs): + keys = [key.split("_")[0] for key in conf.keys()] + code = LoKiCuts(keys, conf).code() + # code = LoKiCuts.combine(['INMUON',code]) photonCut = "(NINGENERATION( (ID=='gamma') & ((PT < 500*MeV) | (CL < 0.3)),1)==0)" - code = LoKiCuts.combine([photonCut,code]) - #print "filterInputs: ", which, code - return Selection(which+'DarkBosonFilter',Algorithm=FilterDesktop(Code=code), - RequiredSelections=inputs) - -def filterEE(which,econf,xconf,inputs): - code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" \ - % (xconf['PT_MIN'],econf['PIDe_MIN']) - code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" \ - % econf['MIPCHI2DV_MIN'] - code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf['PT_MIN'] - code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf['TRGHP_MAX'] - code = LoKiCuts.combine([code,LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'], - xconf).code()]) - #print "filterEE: ", code - sel = Selection(which+'FilterEEDarkBosonFilter', - Algorithm=FilterDesktop(Code=code), - RequiredSelections=inputs) + code = LoKiCuts.combine([photonCut, code]) + # print "filterInputs: ", which, code + return Selection( + which + "DarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=inputs, + ) + + +def filterEE(which, econf, xconf, inputs): + code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" % ( + xconf["PT_MIN"], + econf["PIDe_MIN"], + ) + code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" % econf["MIPCHI2DV_MIN"] + code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf["PT_MIN"] + code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf["TRGHP_MAX"] + code = LoKiCuts.combine( + [code, LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], xconf).code()] + ) + # print "filterEE: ", code + sel = Selection( + which + "FilterEEDarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=inputs, + ) decstr = "J/psi(1S) -> e+ e-" - if which=='SS': + if which == "SS": decstr = "[ J/psi(1S) -> e+ e+ ]CC" - sub = SubstitutePID(which+'EESubPIDDarkBoson', - Code="DECTREE('"+decstr+"')") + sub = SubstitutePID(which + "EESubPIDDarkBoson", Code="DECTREE('" + decstr + "')") sub.MaxChi2PerDoF = -666 - sub.Substitutions = {decstr : 'KS0'} - return Selection(which+'EESubPIDDarkBosonSel',Algorithm=sub, - RequiredSelections=[sel]) + sub.Substitutions = {decstr: "KS0"} + return Selection( + which + "EESubPIDDarkBosonSel", Algorithm=sub, RequiredSelections=[sel] + ) + def makeEEdd(default_config): - eedd = DiElectronMaker('EEDDForDarkBoson') + eedd = DiElectronMaker("EEDDForDarkBoson") eedd.Particle = "KS0" selector = trackSelector(eedd, trackTypes=["Downstream"]) - eedd.addTool(ProtoParticleCALOFilter, name='Electron') - eedd.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>'%s'" \ - % default_config['PID']['E']['PIDe_MIN']] + eedd.addTool(ProtoParticleCALOFilter, name="Electron") + eedd.Electron.Selection = [ + "RequiresDet='CALO' CombDLL(e-pi)>'%s'" % default_config["PID"]["E"]["PIDe_MIN"] + ] eedd.DiElectronMassMax = 5000 eedd.DiElectronMassMin = 0 eedd.DiElectronPtMin = 250 eedd.ElectronPtMin = 100 - eedd.ElectronPIDcut = default_config['PID']['E']['PIDe_MIN'] + eedd.ElectronPIDcut = default_config["PID"]["E"]["PIDe_MIN"] + + sel = Selection("EEDDDarkBosonSel", Algorithm=eedd) + code = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config["V"]).code() + # print 'makeEEdd', code + return Selection( + "FilterEEDDDarkBoson", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=[sel], + ) - sel = Selection('EEDDDarkBosonSel',Algorithm=eedd) - code = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config['V']).code() - #print 'makeEEdd', code - return Selection('FilterEEDDDarkBoson',Algorithm=FilterDesktop(Code=code), - RequiredSelections=[sel]) def makeEESS(): - eess = DiElectronMaker('EESSForDarkBoson') + eess = DiElectronMaker("EESSForDarkBoson") eess.Particle = "J/psi(1S)" selector = trackSelector(eess, trackTypes=["Long"]) - eess.addTool(ProtoParticleCALOFilter, name='Electron') + eess.addTool(ProtoParticleCALOFilter, name="Electron") eess.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>-2"] eess.DiElectronMassMax = 5000 eess.DiElectronMassMin = 0 eess.DiElectronPtMin = 250 eess.ElectronPtMin = 100 eess.OppositeSign = False - return Selection('EESSDarkBosonSel',Algorithm=eess) + return Selection("EESSDarkBosonSel", Algorithm=eess) + def filterKst(): - kst = DataOnDemand(Location='Phys/StdLooseDetachedKst2Kpi/Particles') - code = '(MIPCHI2DV(PRIMARY) > 25)' - return Selection('KstDarkBosonFilter',Algorithm=FilterDesktop(Code=code), - RequiredSelections=[kst]) + kst = DataOnDemand(Location="Phys/StdLooseDetachedKst2Kpi/Particles") + code = "(MIPCHI2DV(PRIMARY) > 25)" + return Selection( + "KstDarkBosonFilter", + Algorithm=FilterDesktop(Code=code), + RequiredSelections=[kst], + ) + -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -def makeX(which,default_config,dec,inputs): - comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config['PT_MIN'] - if(which.find('DD') < 0): + +def makeX(which, default_config, dec, inputs): + comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config["PT_MIN"] + if which.find("DD") < 0: comboCuts += " & (ACUTDOCA(0.2*mm,''))" comboCuts += "& (ADOCACHI2CUT(25,''))" - momCuts = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config).code() - momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts]) - if default_config.has_key('HAD_MINIPCHI2_MIN'): - momCuts += '& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \ - % default_config['HAD_MINIPCHI2_MIN'] - x = CombineParticles(DecayDescriptors=[dec], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeX:',which,comboCuts,momCuts - return Selection("X2"+which+"DarkBosonSel",Algorithm=x, - RequiredSelections=inputs) - -def makeX2neutrals(which,default_config,dec,inputs): - #momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)" - momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config['PT_MIN'] - #if(which.find('C') > -1): + momCuts = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config).code() + momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts]) + if default_config.has_key("HAD_MINIPCHI2_MIN"): + momCuts += ( + "& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)" + % default_config["HAD_MINIPCHI2_MIN"] + ) + x = CombineParticles( + DecayDescriptors=[dec], CombinationCut=comboCuts, MotherCut=momCuts + ) + # print 'makeX:',which,comboCuts,momCuts + return Selection( + "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs + ) + + +def makeX2neutrals(which, default_config, dec, inputs): + # momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)" + momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config["PT_MIN"] + # if(which.find('C') > -1): # momCuts += " & (INTREE( (ID=='gamma') & (ISBASIC) )) & (INTREE( HASTRACK ))" - x = CombineParticles(DecayDescriptors=[dec], - MotherCut=momCuts, - ParticleCombiners = {"" : "MomentumCombiner:PUBLIC"}, - ReFitPVs=False)#True) - #print 'makeX2neutrals:',which,momCuts - return Selection("X2"+which+"DarkBosonSel",Algorithm=x, - RequiredSelections=inputs) - - -def makeJ(default_config,inputs): - comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config['ADAMASS_MAX'] + x = CombineParticles( + DecayDescriptors=[dec], + MotherCut=momCuts, + ParticleCombiners={"": "MomentumCombiner:PUBLIC"}, + ReFitPVs=False, + ) # True) + # print 'makeX2neutrals:',which,momCuts + return Selection( + "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs + ) + + +def makeJ(default_config, inputs): + comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config["ADAMASS_MAX"] comboCuts += " & (ACUTDOCA(0.2*mm,''))" comboCuts += "& (ADOCACHI2CUT(25,''))" - momCuts = LoKiCuts(['HASVERTEX','VCHI2DOF'],default_config).code() - momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts]) - j = CombineParticles(DecayDescriptors=['J/psi(1S) -> mu+ mu-'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeJ:',comboCuts,momCuts - return Selection("J2MuMuDarkBosonSel",Algorithm=j, - RequiredSelections=inputs) - -def makeRho(inputs,which=""): + momCuts = LoKiCuts(["HASVERTEX", "VCHI2DOF"], default_config).code() + momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts]) + j = CombineParticles( + DecayDescriptors=["J/psi(1S) -> mu+ mu-"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeJ:',comboCuts,momCuts + return Selection("J2MuMuDarkBosonSel", Algorithm=j, RequiredSelections=inputs) + + +def makeRho(inputs, which=""): comboCuts = "(AM > 550*MeV) & (AM < 1050*MeV) & ADOCACHI2CUT(25,'')" momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" momCuts += " & (M > 600*MeV) & (M < 1000*MeV)" - rho = CombineParticles(DecayDescriptors=['rho(770)0 -> pi+ pi-'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeRho:',comboCuts,momCuts - return Selection("Rho2PiPi"+which+"DarkBosonSel",Algorithm=rho, - RequiredSelections=inputs) - -def makeKst(inputs,which=""): - comboCuts = "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" #(AM < 2000*MeV)" + rho = CombineParticles( + DecayDescriptors=["rho(770)0 -> pi+ pi-"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeRho:',comboCuts,momCuts + return Selection( + "Rho2PiPi" + which + "DarkBosonSel", Algorithm=rho, RequiredSelections=inputs + ) + + +def makeKst(inputs, which=""): + comboCuts = ( + "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" # (AM < 2000*MeV)" + ) momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" - kst = CombineParticles(DecayDescriptors=['[K*(892)0 -> K+ pi-]cc'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeKst:',comboCuts,momCuts - return Selection("Kst2KPi"+which+"DarkBosonSel",Algorithm=kst, - RequiredSelections=inputs) - -def makeEta(inputs,which=""): + kst = CombineParticles( + DecayDescriptors=["[K*(892)0 -> K+ pi-]cc"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeKst:',comboCuts,momCuts + return Selection( + "Kst2KPi" + which + "DarkBosonSel", Algorithm=kst, RequiredSelections=inputs + ) + + +def makeEta(inputs, which=""): comboCuts = "(AM < 750*MeV) & (ACHI2DOCA(1,2) < 25)" momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX" momCuts += " & (M < 650*MeV)" - eta = CombineParticles(DecayDescriptors=['eta -> pi+ pi- pi0'], - CombinationCut=comboCuts,MotherCut=momCuts) - #print 'makeOmega:',comboCuts,momCuts - return Selection("Eta2PiPiPi"+which+"DarkBosonSel",Algorithm=eta, - RequiredSelections=inputs) - -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# - -def makeB(name,decays,inputs,default_config): - comboCuts = LoKiCuts(['AM','SUMPT'],default_config).code() - momCuts = LoKiCuts(['HASVERTEX','PT','VCHI2DOF','BPVLTIME','BPVIPCHI2','BPVDIRA'],default_config).code() + eta = CombineParticles( + DecayDescriptors=["eta -> pi+ pi- pi0"], + CombinationCut=comboCuts, + MotherCut=momCuts, + ) + # print 'makeOmega:',comboCuts,momCuts + return Selection( + "Eta2PiPiPi" + which + "DarkBosonSel", Algorithm=eta, RequiredSelections=inputs + ) + + +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# + + +def makeB(name, decays, inputs, default_config): + comboCuts = LoKiCuts(["AM", "SUMPT"], default_config).code() + momCuts = LoKiCuts( + ["HASVERTEX", "PT", "VCHI2DOF", "BPVLTIME", "BPVIPCHI2", "BPVDIRA"], + default_config, + ).code() cuts = "" - if default_config.has_key('BPVDIRA_MIN'): - cuts += '(BPVDIRA > %s)' % default_config['BPVDIRA_MIN'] + if default_config.has_key("BPVDIRA_MIN"): + cuts += "(BPVDIRA > %s)" % default_config["BPVDIRA_MIN"] else: - cuts += '(BPVDIRA > 0)' - if default_config.has_key('HAD_MINIPCHI2_MIN'): - cuts += ' & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \ - % default_config['HAD_MINIPCHI2_MIN'] - momCuts = LoKiCuts.combine([momCuts,cuts]) - momCuts += ' & (MM > %s) & (MM < %s)' % (default_config['AM_MIN'],default_config['AM_MAX']) - n=2 - if name.find('B2KpiX') >= 0: n=3 + cuts += "(BPVDIRA > 0)" + if default_config.has_key("HAD_MINIPCHI2_MIN"): + cuts += ( + " & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)" + % default_config["HAD_MINIPCHI2_MIN"] + ) + momCuts = LoKiCuts.combine([momCuts, cuts]) + momCuts += " & (MM > %s) & (MM < %s)" % ( + default_config["AM_MIN"], + default_config["AM_MAX"], + ) + n = 2 + if name.find("B2KpiX") >= 0: + n = 3 alg = None - if n==2: + if n == 2: alg = CombineParticles(DecayDescriptors=decays) else: alg = DaVinci__N3BodyDecays(DecayDescriptors=decays) - alg.Combination12Cut = 'AM < %s' % default_config['AM_MAX'] + alg.Combination12Cut = "AM < %s" % default_config["AM_MAX"] alg.ReFitPVs = True - alg.CombinationCut=comboCuts - alg.MotherCut=momCuts - #print 'makeB:',name,comboCuts,momCuts,decays - return Selection(name+"DarkBosonSel",Algorithm=alg, - RequiredSelections=inputs) + alg.CombinationCut = comboCuts + alg.MotherCut = momCuts + # print 'makeB:',name,comboCuts,momCuts,decays + return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -- GitLab From a8cc4eccf07bae2eda99b70dab3c91eb7ecaeb2e Mon Sep 17 00:00:00 2001 From: reallyblaised <blaiserd@proton.me> Date: Fri, 30 Jun 2023 13:36:04 -0400 Subject: [PATCH 10/18] dark scalar lines into mm,kk,pipi with SS --- .../StrippingRD/StrippingDarkBoson.py | 152 +++++++++++++----- .../StrippingRD/__init__.py | 3 +- 2 files changed, 116 insertions(+), 39 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 4cea3e650..7a9b27abe 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -14,7 +14,7 @@ Dark Bosons (ALPs, inflatons, WTFs, etc) Author: M. Williams, D. Craik """ -__author__ = ["Mike Williams", "Dan Craik"] +__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] moduleName = "DarkBoson" @@ -86,15 +86,17 @@ default_config = { #'StrippingB2KKX2MuMuDDSSDarkBosonLine', "StrippingB2KX2MuMuDDDarkBosonLine", "StrippingB2KX2MuMuDDSSDarkBosonLine", - #'StrippingB2KpiX2PiPiDDDarkBosonLine', + "StrippingB2KpiX2PiPiDDDarkBosonLine", + "StrippingB2KpiX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDDarkBosonLine', - #'StrippingB2KX2PiPiDDSSDarkBosonLine', + "StrippingB2KX2PiPiDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2RhoX2MuMuDDDarkBosonLine', - #'StrippingB2KpiX2KKDDDarkBosonLine', + "StrippingB2KpiX2KKDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDDSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDDarkBosonLine', - #'StrippingB2KX2KKDDSSDarkBosonLine', + "StrippingB2KX2KKDDDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDDSSDarkBosonLine", # NOTE: 2018 patches ], "Leptonic": [ "StrippingB2KpiX2MuMuDarkBosonLine", @@ -103,15 +105,17 @@ default_config = { #'StrippingB2KKX2MuMuSSDarkBosonLine', "StrippingB2KX2MuMuDarkBosonLine", "StrippingB2KX2MuMuSSDarkBosonLine", - "StrippingB2KpiX2PiPiDarkBosonLine", + "StrippingB2KpiX2PiPiDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2PiPiDarkBosonLine', - "StrippingB2KX2PiPiDarkBosonLine", - "StrippingB2KX2PiPiSSDarkBosonLine", + "StrippingB2KX2PiPiDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2RhoX2MuMuDarkBosonLine', - "StrippingB2KpiX2KKDarkBosonLine", + "StrippingB2KpiX2KKDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKSSDarkBosonLine", # NOTE: 2018 patches #'StrippingB2KKX2KKDarkBosonLine', - "StrippingB2KX2KKDarkBosonLine", - "StrippingB2KX2KKSSDarkBosonLine", + "StrippingB2KX2KKDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKSSDarkBosonLine", # NOTE: 2018 patches "StrippingB2KpiX2EEDarkBosonLine", "StrippingB2KpiX2EESSDarkBosonLine", #'StrippingB2KKX2EEDarkBosonLine', @@ -310,7 +314,7 @@ default_config = { "AM_MAX": "5800*MeV", "PT_MIN": "3000*MeV", }, - "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25}, + "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 1.0}, "GECNTrkMax": 250, "CommonRelInfoTools": [ {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"}, @@ -447,6 +451,22 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) + self._makeBLine( + "B2KpiX2MuMuSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2MuMuDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) + self._makeBLine( "B2KpiX2EE", ["[B0 -> K+ pi- KS0]cc"], @@ -462,8 +482,29 @@ class DarkBosonConf(LineBuilder): preKK, ) - # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'], - # [kkDDX,kB,piB],default_config['B2HHX']) + self._makeBLine( + "B2KpiX2KKSS", + ["[B0 -> K+ pi- KS0]cc"], + [kkSSX, kB, piB], + default_config["B2HHX"], + preSS, + ) + + self._makeBLine( + "B2KpiX2KKDD", + ["[B0 -> K+ pi- KS0]cc"], + [kkDDX, kB, piB], + default_config["B2HHX"], + preKK, + ) + + self._makeBLine( + "B2KpiX2KKDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [kkSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) self._makeBLine( "B2KpiX2KKPi", @@ -490,11 +531,34 @@ class DarkBosonConf(LineBuilder): ["[B0 -> K+ pi- KS0]cc"], [pipiX, kB, piB], default_config["B2HHX"], + ) + + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiSS", + ["[B0 -> K+ pi- KS0]cc"], + [pipiSSX, kB, piB], + default_config["B2HHX"], preSS, ) - # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'], - # [pipiDDX,kB,piB],default_config['B2HHX'],preDD) + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiDD", + ["[B0 -> K+ pi- KS0]cc"], + [pipiDDX, kB, piB], + default_config["B2HHX"], + preDD, + ) + + # 2018 patches + self._makeBLine( + "B2KpiX2PiPiDDSS", + ["[B0 -> K+ pi- KS0]cc"], + [pipiSSDDX, kB, piB], + default_config["B2HHX"], + preSS, + ) self._makeBLine( "B2KpiX2PiPiPi", @@ -559,18 +623,10 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMuSS", + "B2KpiX2MuMSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], - preSS, - ) - - self._makeBLine( - "B2KpiX2MuMuDDSS", - ["[B0 -> K+ pi- KS0]cc"], - [mmSSDDX, kB, piB], - default_config["B2HHX"], ) self._makeBLine( @@ -647,11 +703,16 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"] + "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"], preKK ) - # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'], - # [kkDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKDD", + ["[B+ -> K+ KS0]cc"], + [kkDDX, kB], + default_config["B2KX"], + preKK, + ) self._makeBLine( "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"] @@ -671,8 +732,9 @@ class DarkBosonConf(LineBuilder): "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"] ) - # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'], - # [pipiDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiDD", ["[B+ -> K+ KS0]cc"], [pipiDDX, kB], default_config["B2KX"] + ) self._makeBLine( "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"] @@ -727,7 +789,11 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"] + "B2KX2MuMuDDSS", + ["[B+ -> K+ KS0]cc"], + [mmSSDDX, kB], + default_config["B2KX"], + preSS, ) self._makeBLine( @@ -742,8 +808,13 @@ class DarkBosonConf(LineBuilder): preSS, ) - # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'], - # [kkSSDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2KKDDSS", + ["[B+ -> K+ KS0]cc"], + [kkSSDDX, kB], + default_config["B2KX"], + preSS, + ) self._makeBLine( "B2KX2PiPiSS", @@ -753,8 +824,13 @@ class DarkBosonConf(LineBuilder): preSS, ) - # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'], - # [pipiSSDDX,kB],default_config['B2KX']) + self._makeBLine( + "B2KX2PiPiDDSS", + ["[B+ -> K+ KS0]cc"], + [pipiSSDDX, kB], + default_config["B2KX"], + preSS, + ) # B -> J/psi lines self._makeBLine( @@ -1176,4 +1252,4 @@ def makeB(name, decays, inputs, default_config): return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# \ No newline at end of file diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py index 62f82fddd..f42c6b6ee 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py @@ -29,7 +29,8 @@ _selections = ('StrippingRareBaryonicMuMu', 'StrippingB2XMuTauMuonic', 'StrippingB2LLXBDTSS', 'StrippingB2KstTauTau', - 'StrippingS2Hyperons' + 'StrippingS2Hyperons', + 'StrippingDarkBoson' ) for _sel in _selections : -- GitLab From fb54dd0a74c7af08f07c2561c7ad233b06d561d3 Mon Sep 17 00:00:00 2001 From: Blaise Raheem Delaney <blaise.delaney@cern.ch> Date: Sun, 2 Jul 2023 20:48:50 +0200 Subject: [PATCH 11/18] WIP pipig line --- .../StrippingRD/StrippingDarkBoson.py | 62 +++++++++++++------ 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 7a9b27abe..3887cc890 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -12,7 +12,7 @@ """ Dark Bosons (ALPs, inflatons, WTFs, etc) -Author: M. Williams, D. Craik +Author: M. Williams, D. Craik, B. Delaney """ __author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] @@ -69,6 +69,8 @@ default_config = { "StrippingB2KX2EtaPiPi23PIDarkBosonLine", "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine", "StrippingB2KX2EtaPiPi2GGDarkBosonLine", + "StrippingB2KpiX2PiPiGDarkBosonLine", + "StrippingB2KX2PiPiGDarkBosonLine", "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine", "StrippingB2KX24PiDarkBosonLine", "StrippingB2KpiX24PiDarkBosonLine", @@ -87,16 +89,16 @@ default_config = { "StrippingB2KX2MuMuDDDarkBosonLine", "StrippingB2KX2MuMuDDSSDarkBosonLine", "StrippingB2KpiX2PiPiDDDarkBosonLine", - "StrippingB2KpiX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiDDSSDarkBosonLine", #'StrippingB2KKX2PiPiDDDarkBosonLine', - "StrippingB2KX2PiPiDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2PiPiDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDDDarkBosonLine", + "StrippingB2KX2PiPiDDSSDarkBosonLine", #'StrippingB2RhoX2MuMuDDDarkBosonLine', - "StrippingB2KpiX2KKDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2KKDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDDDarkBosonLine", + "StrippingB2KpiX2KKDDSSDarkBosonLine", #'StrippingB2KKX2KKDDDarkBosonLine', - "StrippingB2KX2KKDDDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2KKDDSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDDDarkBosonLine", + "StrippingB2KX2KKDDSSDarkBosonLine", ], "Leptonic": [ "StrippingB2KpiX2MuMuDarkBosonLine", @@ -105,17 +107,17 @@ default_config = { #'StrippingB2KKX2MuMuSSDarkBosonLine', "StrippingB2KX2MuMuDarkBosonLine", "StrippingB2KX2MuMuSSDarkBosonLine", - "StrippingB2KpiX2PiPiDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2PiPiSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2PiPiDarkBosonLine", + "StrippingB2KpiX2PiPiSSDarkBosonLine", #'StrippingB2KKX2PiPiDarkBosonLine', - "StrippingB2KX2PiPiDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2PiPiSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2PiPiDarkBosonLine", + "StrippingB2KX2PiPiSSDarkBosonLine", #'StrippingB2RhoX2MuMuDarkBosonLine', - "StrippingB2KpiX2KKDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KpiX2KKSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KpiX2KKDarkBosonLine", + "StrippingB2KpiX2KKSSDarkBosonLine", #'StrippingB2KKX2KKDarkBosonLine', - "StrippingB2KX2KKDarkBosonLine", # NOTE: 2018 patches - "StrippingB2KX2KKSSDarkBosonLine", # NOTE: 2018 patches + "StrippingB2KX2KKDarkBosonLine", + "StrippingB2KX2KKSSDarkBosonLine", "StrippingB2KpiX2EEDarkBosonLine", "StrippingB2KpiX2EESSDarkBosonLine", #'StrippingB2KKX2EEDarkBosonLine', @@ -408,9 +410,16 @@ class DarkBosonConf(LineBuilder): # kkpiDDMX = makeX('KKPiDDM', default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX]) # pipipiDDX = makeX('PiPiPiDD', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX]) # pipipiDDMX = makeX('PiPiPiDDM', default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX]) + etapipiGGX = makeX( "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX] ) + + # FIXME: X3H placeholder; might need bespoke selection + pipiGX = makeX( + "PiPiG", default_config["X3H"], "KS0 -> pi+ pi- gamma", [gX, piX] + ) + etapipi3PIX = makeX( "EtaPiPi23PI", default_config["XETAHH"], @@ -533,7 +542,6 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiSS", ["[B0 -> K+ pi- KS0]cc"], @@ -542,7 +550,6 @@ class DarkBosonConf(LineBuilder): preSS, ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiDD", ["[B0 -> K+ pi- KS0]cc"], @@ -551,7 +558,6 @@ class DarkBosonConf(LineBuilder): preDD, ) - # 2018 patches self._makeBLine( "B2KpiX2PiPiDDSS", ["[B0 -> K+ pi- KS0]cc"], @@ -750,6 +756,22 @@ class DarkBosonConf(LineBuilder): # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'], # [pipipiDDMX,kB],default_config['B2KX']) + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2PiPiG", + ["[B0 -> K+ pi- KS0]cc"], + [pipiGX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2PiPiG", + ["[B+ -> K+ KS0]cc"], + [pipiGX, kB], + default_config["B2KX"], + ) + self._makeBLine( "B2KX2EtaPiPi2GG", ["[B+ -> K+ KS0]cc"], @@ -1252,4 +1274,4 @@ def makeB(name, decays, inputs, default_config): return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs) -# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# \ No newline at end of file +# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\# -- GitLab From 21601adf07a26e76542b8b3445b2f6f178304920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Tue, 11 Jul 2023 18:50:30 +0200 Subject: [PATCH 12/18] Fixing missing line --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 3887cc890..05f4b2ba1 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -1013,6 +1013,8 @@ class DarkBosonConf(LineBuilder): ret = "KS0 -> ^e+ ^e-" if name.find("SS") > -1: ret = "[ " + ret[:-1] + "+ ]CC " + elif name.find("X2PiPiG") > -1: + ret = "KS0 -> ^pi+ ^pi- ^gamma" elif name.find("X2PiPi") > -1: ret = "KS0 -> ^pi+ ^pi-" if name.find("SS") > -1: @@ -1027,6 +1029,7 @@ class DarkBosonConf(LineBuilder): ret = "eta -> ^pi0 ^gamma" if name.find("M") == -1: ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + return ret def _getBpart(self, name): -- GitLab From a2798373749bba3db14419b3ec266b44f0ac0ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Tue, 11 Jul 2023 20:46:28 +0200 Subject: [PATCH 13/18] Add kshort line --- .../StrippingRD/StrippingDarkBoson.py | 64 ++++++++++++++++++- 1 file changed, 62 insertions(+), 2 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 05f4b2ba1..9372fcca0 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -12,9 +12,9 @@ """ Dark Bosons (ALPs, inflatons, WTFs, etc) -Author: M. Williams, D. Craik, B. Delaney +Author: M. Williams, D. Craik, B. Delaney, A. Casais Vidal """ -__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"] +__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney","Adrian Casais Vidal"] moduleName = "DarkBoson" @@ -58,6 +58,10 @@ default_config = { "BUILDERTYPE": "DarkBosonConf", "STREAMS": { "Bhadron": [ + "StrippingB2KpiX2KshortKpiDarkBosonLine", + "StrippingB2KpiX2KshortKpiDDDarkBosonLine", + "StrippingB2KX2KshortKpiDarkBosonLine", + "StrippingB2KX2KshortKpiDDDarkBosonLine", "StrippingB2KX2KKPiDarkBosonLine", "StrippingB2KpiX2KKPiDarkBosonLine", "StrippingB2KX2KKPiMDarkBosonLine", @@ -248,6 +252,18 @@ default_config = { "BPVVDCHI2_MIN": 25, "PT_MIN": "0*MeV", }, + "XKshort":{# making the X for kshort kpi decays + "VCHI2DOF_MAX": 5, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + "HAD_MINIPCHI2_MIN": 25, + }, + "XKshortDD":{# making the X for kshort kpi decays + "VCHI2DOF_MAX": 15, + "BPVVDCHI2_MIN": 25, + "PT_MIN": "250*MeV", + "HAD_MINIPCHI2_MIN": 30, + }, "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton "X3H": { # making the X for 3H decays "VCHI2DOF_MAX": 10, @@ -378,6 +394,10 @@ class DarkBosonConf(LineBuilder): kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX]) pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX]) pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX]) + + ksX = makeX("Kshort2PiPi", default_config["XKshort"], "KS0 -> pi+ pi-", [piX]) + ksDDX = makeX("Kshort2PiPiDD", default_config["XKshortDD"], "KS0 -> pi+ pi-", [piDX]) + ## 4-6H modes fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX]) sixpiX = makeX( @@ -400,6 +420,10 @@ class DarkBosonConf(LineBuilder): ##HHH modes kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX]) kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX]) + + kshortKPiX = makeX("KshortKpi", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksX]) + kshortKPiDDX = makeX("kshortKpiDD", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksDDX]) + pipipiX = makeX( "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX] ) @@ -772,6 +796,40 @@ class DarkBosonConf(LineBuilder): default_config["B2KX"], ) + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2KshortKpi", + ["[B0 -> K+ pi- KS0]cc"], + [kshortKPiX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KpiX2KshortKpiDD", + ["[B0 -> K+ pi- KS0]cc"], + [kshortKPiDDX, kB, piB], + default_config["B2HHX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2KshortKpi", + ["[B+ -> K+ KS0]cc"], + [kshortKPiX, kB], + default_config["B2KX"], + ) + + # FIXME: not 100% sure this is correct + self._makeBLine( + "B2KX2KshortKpiDD", + ["[B+ -> K+ KS0]cc"], + [kshortKPiDDX, kB], + default_config["B2KX"], + ) + + + self._makeBLine( "B2KX2EtaPiPi2GG", ["[B+ -> K+ KS0]cc"], @@ -995,6 +1053,8 @@ class DarkBosonConf(LineBuilder): ret = "KS0 -> ^pi+ ^pi- ^pi0" if name.find("M") == -1: ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ") + elif name.find("X2KshortKpi") > -1: + ret = "[KS0 -> ^(KS0 -> ^pi+ ^pi-) ^K+ ^pi-]CC" elif name.find("X2KKPi") > -1: ret = "KS0 -> ^K+ ^K- ^pi0" if name.find("M") == -1: -- GitLab From 4b73f14c1965cb28672247bb8816a0f79f25ad80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 12:25:16 +0200 Subject: [PATCH 14/18] fix typo --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 9372fcca0..1bb8393e7 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMSS", + "B2KpiX2MuMuSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], -- GitLab From 74272938c012e8c66d6a979768255880a51d50a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 14:13:38 +0200 Subject: [PATCH 15/18] Added RelInfo tool to neutrals --- .../StrippingRD/StrippingDarkBoson.py | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 1bb8393e7..d5e1c2d3e 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -218,7 +218,7 @@ default_config = { }, "gX": { # gamma from X "PT_MIN": "500*MeV", - "P_MIN": "1000*MeV", + "P_MIN": "3000*MeV", "CL_MIN": "0.3", }, "etaX": { # eta->gg from X @@ -256,13 +256,13 @@ default_config = { "VCHI2DOF_MAX": 5, "BPVVDCHI2_MIN": 25, "PT_MIN": "250*MeV", - "HAD_MINIPCHI2_MIN": 25, + "HAD_MINIPCHI2_MIN": 40, }, "XKshortDD":{# making the X for kshort kpi decays "VCHI2DOF_MAX": 15, "BPVVDCHI2_MIN": 25, "PT_MIN": "250*MeV", - "HAD_MINIPCHI2_MIN": 30, + "HAD_MINIPCHI2_MIN": 40, }, "XGG": {"PT_MIN": "2000*MeV"}, # making the X for diphoton "X3H": { # making the X for 3H decays @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMuSS", + "B2KpiX2MuMSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], @@ -993,6 +993,7 @@ class DarkBosonConf(LineBuilder): } ) dls = self._getDaugLocs(decStr, "ConeIso15p") + relInfoTools.append( { "Type": "RelInfoConeVariables", @@ -1002,6 +1003,16 @@ class DarkBosonConf(LineBuilder): "DaughterLocations": dls, } ) + + dls = self._getDaugLocs(decStr, "GammaIso",onlyGamma=True) + relInfoTools.append( + { + "Type": "RelInfoGammaIso", + "Location": "GammaIso", + "DaughterLocations": dls, + } + ) + # dls = self._getDaugLocs(name,"TrackIsoBDTp") # relInfoTools.append( # { "Type": "RelInfoTrackIsolationBDT", @@ -1016,11 +1027,13 @@ class DarkBosonConf(LineBuilder): relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"]) return relInfoTools - def _getDaugLocs(self, decay, locName): + def _getDaugLocs(self, decay, locName,onlyGamma=False): dls = {} decay = decay.split("^") for i in range(1, len(decay)): dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])]) + if onlyGamma and not ('^gamma' in dec or '^pi0' in dec) : + continue loc = locName + str(i) dls[dec] = loc return dls -- GitLab From 6e18242c18013e89f2b1101fbe6cefad01ec9db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 14:17:24 +0200 Subject: [PATCH 16/18] fix conflicts --- .../StrippingSelections/StrippingRD/StrippingDarkBoson.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index d5e1c2d3e..659d9847e 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -218,7 +218,7 @@ default_config = { }, "gX": { # gamma from X "PT_MIN": "500*MeV", - "P_MIN": "3000*MeV", + "P_MIN": "1000*MeV", "CL_MIN": "0.3", }, "etaX": { # eta->gg from X @@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder): ) self._makeBLine( - "B2KpiX2MuMSS", + "B2KpiX2MuMuSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSX, kB, piB], default_config["B2HHX"], -- GitLab From 9ffc0049d2f586747c8651845bbeb41ae538b341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 15:02:23 +0200 Subject: [PATCH 17/18] remove duplicated line --- .../StrippingRD/StrippingDarkBoson.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 659d9847e..468686baa 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -652,12 +652,12 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) - self._makeBLine( - "B2KpiX2MuMuSS", - ["[B0 -> K+ pi- KS0]cc"], - [mmSSX, kB, piB], - default_config["B2HHX"], - ) + # self._makeBLine( + # "B2KpiX2MuMuSS", + # ["[B0 -> K+ pi- KS0]cc"], + # [mmSSX, kB, piB], + # default_config["B2HHX"], + # ) self._makeBLine( "B2KpiX2EESS", -- GitLab From 460b9fb2656215abcd580d3aa705ee103a903ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch> Date: Fri, 14 Jul 2023 15:15:01 +0200 Subject: [PATCH 18/18] restore old line and remove prescales --- .../StrippingRD/StrippingDarkBoson.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py index 468686baa..f230759d8 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py @@ -484,20 +484,12 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) - self._makeBLine( - "B2KpiX2MuMuSS", - ["[B0 -> K+ pi- KS0]cc"], - [mmSSX, kB, piB], - default_config["B2HHX"], - preSS, - ) - self._makeBLine( "B2KpiX2MuMuDDSS", ["[B0 -> K+ pi- KS0]cc"], [mmSSDDX, kB, piB], default_config["B2HHX"], - preSS, + #preSS, ) self._makeBLine( @@ -652,12 +644,12 @@ class DarkBosonConf(LineBuilder): default_config["B2HHX"], ) - # self._makeBLine( - # "B2KpiX2MuMuSS", - # ["[B0 -> K+ pi- KS0]cc"], - # [mmSSX, kB, piB], - # default_config["B2HHX"], - # ) + self._makeBLine( + "B2KpiX2MuMuSS", + ["[B0 -> K+ pi- KS0]cc"], + [mmSSX, kB, piB], + default_config["B2HHX"], + ) self._makeBLine( "B2KpiX2EESS", -- GitLab