diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharm2PPX.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharm2PPX.py index 23a69ab1c588aa701e2212175582131afa4ae150..8e18d20c7fd9d144f1cbb061f590c588e7ef5163 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharm2PPX.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharm2PPX.py @@ -15,6 +15,14 @@ - Hc+ -> ppK- (exch) - Hc+ -> ppK-pi+pi- - Hs+ -> pppi- : LLL and DDD + + for 2023 Restripping update with following modes: + - Hcc++/+ -> ppKs, ppKspi-, Lamppi-, Lamppi+pi- + - Hcs+ -> ppK-K-pi+, pK-pi+Lam, LamLampi+, ppKsK- + - Pc -> pK+pi-pi-, pKspi- + - Ps -> ppi+pi- : LLL and DDD + + + add modes Lc->pKpi, Lam->ppi with 0.01 prescale for reference """ @@ -35,6 +43,10 @@ from StandardParticles import ( StdAllNoPIDsPions, StdNoPIDsDownProtons, StdNoPIDsDownPions, + StdLooseLambdaLL, + StdLooseLambdaDD, + StdLooseKsLL, + StdLooseKsDD, ) from PhysSelPython.Wrappers import Selection from StrippingUtils.Utils import LineBuilder @@ -82,8 +94,13 @@ default_config = { 'Pion_ProbNN_MIN': 0.1, # Hc maximum mass - 'Comb_MASS_MAX': 3500*MeV , # 3350*MeV, - 'HsComb_MASS_MAX': 2125*MeV, + 'Hc_MASS_MAX': 3500*MeV , # 3350*MeV, + 'Hcs_MASS_MAX': 3650*MeV , + 'Hs_MASS_MAX': 2125*MeV, + 'Pc_MASS_MAX': 3100*MeV , + 'Ps_MASS_MAX': 1650*MeV , + 'Lc_MASS_MAX': 2350*MeV , + 'Lam_MASS_MAX': 1170*MeV , # Maximum distance of closest approach of daughters 'Comb_ADOCACHI2_MAX': 16, 'HsComb_ADOCACHI2_MAX': 16, @@ -91,17 +108,17 @@ default_config = { 'Hc_VCHI2VDOF_MAX': 25.0, 'Hs_VCHI2VDOF_MAX': 25.0, # Maximum angle between Hc momentum and Hc direction of flight - 'Hc_BPVIPCHI2_MAX': 16, - 'Hs_BPVIPCHI2_MAX': 16, + #'Hc_BPVIPCHI2_MAX': 16, + #'Hs_BPVIPCHI2_MAX': 16, # Primary vertex displacement requirement, that the Hc is some sigma # away from the PV and it has a minimum flight time 'Hc_BPVVDCHI2_MIN': 9.0, - 'Hc_BPVCTAU_MIN': 0.*mm, # 0.03*mm, + 'Hc_BPVCTAU_MIN': 0.05*mm, # 0.03*mm, 'Hs_BPVVDCHI2_MIN': 9.0, 'HsDown_BPVVDCHI2_MIN': 4.0, 'Hs_BPVCTAU_MIN': 0.1*mm, # Hc minimum transverse momenta - 'Hc_PT_MIN': -1000*MeV, + 'Hc_PT_MIN': 1000*MeV, 'Hs_PT_MIN': -1000*MeV, # HLT filters, only process events firing triggers matching the RegEx 'Hlt1Filter': None, @@ -113,12 +130,43 @@ default_config = { 'PrescaleHc2PPK': 1.0, 'PrescaleHc2PPKPiPi': 1.0, 'PrescaleHs2PPPi': 1.0, + # + 'PrescaleHc2PPKs': 1.0, + 'PrescaleHc2PPKsPi': 1.0, + 'PrescaleHc2LamPPi': 1.0, + 'PrescaleHc2LamPPiPi': 1.0, + 'PrescaleHcs2PPKKPi': 1.0, + 'PrescaleHcs2PPKsK': 1.0, + 'PrescaleHcs2LamPKPi': 1.0, + 'PrescaleHcs2LamLamPi': 1.0, + 'PrescalePc2PKPiPi': 0.1, + 'PrescalePc2PKsPi': 0.1, + 'PrescalePs2PPiPi': 0.1, + # + 'PrescaleLc2PKPi' : 0.01, + 'PrescaleL2PPi' : 0.01, + # Fraction of candidates to randomly throw after before stripping 'PostscaleHc2PP': 1.0, 'PostscaleHc2PPKPi': 1.0, 'PostscaleHc2PPK': 1.0, 'PostscaleHc2PPKPiPi': 1.0, 'PostscaleHs2PPPi': 1.0, + # + 'PostscaleHc2PPKs': 1.0, + 'PostscaleHc2PPKsPi': 1.0, + 'PostscaleHc2LamPPi': 1.0, + 'PostscaleHc2LamPPiPi': 1.0, + 'PostscaleHcs2PPKKPi': 1.0, + 'PostscaleHcs2PPKsK': 1.0, + 'PostscaleHcs2LamPKPi': 1.0, + 'PostscaleHcs2LamLamPi': 1.0, + 'PostscalePc2PKPiPi': 1.0, + 'PostscalePc2PKsPi': 1.0, + 'PostscalePs2PPiPi': 1.0, + # + 'PostscaleLc2PKPi' : 1.0, + 'PostscaleL2PPi' : 1.0, } } @@ -127,14 +175,6 @@ class StrippingCharm2PPXConf(LineBuilder): # Allowed configuration keys __configuration_keys__ = default_config['CONFIG'].keys() - # Decay descriptors - Hc2pp = ['[Sigma_c++ -> p+ p+]cc'] - Hc2ppkpi = ['[Sigma_c++ -> p+ p+ K- pi+]cc'] - Hc2ppk = ['[Sigma_c+ -> p+ p+ K-]cc'] - Hc2ppkpipi = ['[Sigma_c+ -> p+ p+ K- pi+ pi-]cc'] - - Hs2pppi = ['[Sigma_c+ -> p+ p+ pi-]cc'] - def __init__(self, name, config): """Initialise this LineBuilder instance.""" self.name = name @@ -150,6 +190,26 @@ class StrippingCharm2PPXConf(LineBuilder): hs2pppi_name = '{0}Hs2PPPi'.format(name) hs2pppiDown_name = '{0}Hs2PPPiDown'.format(name) + # + hc2ppKs_name = '{0}Hc2PPKs'.format(name) + hc2ppKspi_name = '{0}Hc2PPKsPi'.format(name) + hc2Lppi_name = '{0}Hc2LamPPi'.format(name) + hc2Lppipi_name = '{0}Hc2LamPPiPi'.format(name) + + hcs2ppKKpi_name = '{0}Hcs2PPKKPi'.format(name) + hcs2ppKsK_name = '{0}Hcs2PPKsK'.format(name) + hcs2LpKpi_name = '{0}Hcs2LamPKPi'.format(name) + hcs2LLpi_name = '{0}Hcs2LamLamPi'.format(name) + + pc2pKpipi_name = '{0}Pc2PKPiPi'.format(name) + pc2pKspi_name = '{0}Pc2PKsPi'.format(name) + ps2ppipi_name = '{0}Ps2PPiPi'.format(name) + ps2ppipiDown_name = '{0}Ps2PPiPiDown'.format(name) + + # reference + lc2pKpi_name = '{0}Lc2PKPiRef'.format(name) + l2ppi_name = '{0}L2PPiRef'.format(name) + # Build pion, kaon, and proton cut strings daugCuts = ( '(PT > {0[Daug_All_PT_MIN]})' @@ -228,31 +288,48 @@ class StrippingCharm2PPXConf(LineBuilder): self.selHc2PP = self.makeHc2PPX( name=hc2pp_name, inputSel=[self.inProtons], - decDescriptors=self.Hc2pp + decDescriptors=['[Sigma_c++ -> p+ p+]cc'], + mass_max = self.config["Hc_MASS_MAX"] ) self.selHc2PPKPi = self.makeHc2PPX( name=hc2ppkpi_name, inputSel=[self.inProtons, self.inKaons, self.inPions ], - decDescriptors=self.Hc2ppkpi + decDescriptors=['[Sigma_c++ -> p+ p+ K- pi+]cc', + '[Sigma_c++ -> p+ p+ K+ pi-]cc', + '[Sigma_c++ -> p+ p+ K- pi-]cc', + '[Sigma_c++ -> p+ p+ K+ pi+]cc', + ], + mass_max = self.config["Hc_MASS_MAX"] ) self.selHc2PPK = self.makeHc2PPX( name=hc2ppk_name, inputSel=[self.inProtons, self.inKaons ], - decDescriptors=self.Hc2ppk + decDescriptors=['[Sigma_c+ -> p+ p+ K-]cc', + '[Sigma_c+ -> p+ p+ K+]cc', + ], + mass_max = self.config["Hc_MASS_MAX"] ) self.selHc2PPKPiPi = self.makeHc2PPX( name=hc2ppkpipi_name, inputSel=[self.inProtons, self.inKaons, self.inPions ], - decDescriptors=self.Hc2ppkpipi + decDescriptors=['[Sigma_c+ -> p+ p+ K- pi+ pi-]cc', + '[Sigma_c+ -> p+ p+ K+ pi+ pi-]cc', + '[Sigma_c+ -> p+ p+ K- pi+ pi+]cc', + '[Sigma_c+ -> p+ p+ K+ pi- pi-]cc', + ], + mass_max = self.config["Hc_MASS_MAX"] ) self.selHs2PPPi = self.makeHs2PPX( name=hs2pppi_name, inputSel=[self.inProtons, self.inPions ], - decDescriptors=self.Hs2pppi, + decDescriptors=['[Sigma_c+ -> p+ p+ pi-]cc', + '[Sigma_c+ -> p+ p+ pi+]cc', + ], + mass_max = self.config["Hs_MASS_MAX"], mipchi2_cut = config['HsDaug_1ofAll_BPVIPCHI2_MIN'], vdchi2_cut = config['Hs_BPVVDCHI2_MIN'], ) @@ -260,7 +337,225 @@ class StrippingCharm2PPXConf(LineBuilder): self.selHs2PPPiDown = self.makeHs2PPX( name=hs2pppiDown_name, inputSel=[self.inDownProtons, self.inDownPions ], - decDescriptors=self.Hs2pppi, + decDescriptors=['[Sigma_c+ -> p+ p+ pi-]cc', + '[Sigma_c+ -> p+ p+ pi+]cc', + ], + mass_max = self.config["Hs_MASS_MAX"], + mipchi2_cut = config['HsDownDaug_1ofAll_BPVIPCHI2_MIN'], + vdchi2_cut = config['HsDown_BPVVDCHI2_MIN'], + ) + + ## + self.selHc2PPKs_KsLL = self.makeHc2PPX( + name=hc2ppKs_name + "_KsLL", + inputSel=[StdLooseKsLL, self.inProtons ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0]cc'], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2PPKs_KsDD = self.makeHc2PPX( + name=hc2ppKs_name + "_KsDD", + inputSel=[StdLooseKsDD, self.inProtons ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0]cc'], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2PPKsPi_KsLL = self.makeHc2PPX( + name=hc2ppKspi_name + "_KsLL", + inputSel=[StdLooseKsLL, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0 pi-]cc', + '[Sigma_c+ -> p+ p+ KS0 pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2PPKsPi_KsDD = self.makeHc2PPX( + name=hc2ppKspi_name + "_KsDD", + inputSel=[StdLooseKsDD, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0 pi-]cc', + '[Sigma_c+ -> p+ p+ KS0 pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2LamPPi_LamLL = self.makeHc2PPX( + name=hc2Lppi_name + "_LamLL", + inputSel=[StdLooseLambdaLL, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2LamPPi_LamDD = self.makeHc2PPX( + name=hc2Lppi_name + "_LamDD", + inputSel=[StdLooseLambdaDD, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2LamPPiPi_LamLL = self.makeHc2PPX( + name=hc2Lppipi_name + "_LamLL", + inputSel=[StdLooseLambdaLL, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ pi+ pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi- pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi+ pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHc2LamPPiPi_LamDD = self.makeHc2PPX( + name=hc2Lppipi_name + "_LamDD", + inputSel=[StdLooseLambdaDD, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ pi+ pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi- pi-]cc', + '[Sigma_c+ -> Lambda0 p+ pi+ pi+]cc' ], + mass_max = self.config["Hc_MASS_MAX"], + ) + + self.selHcs2PPKKPi = self.makeHc2PPX( + name=hcs2ppKKpi_name, + inputSel=[self.inProtons, self.inKaons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ p+ K- K- pi+]cc', + '[Sigma_c+ -> p+ p+ K+ K- pi+]cc', + '[Sigma_c+ -> p+ p+ K+ K- pi-]cc', + '[Sigma_c+ -> p+ p+ K- K- pi-]cc', + '[Sigma_c+ -> p+ p+ K+ K+ pi-]cc', + '[Sigma_c+ -> p+ p+ K+ K+ pi+]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2PPKsK_KsLL = self.makeHc2PPX( + name=hcs2ppKsK_name + "_KsLL", + inputSel=[StdLooseKsLL, self.inProtons, self.inKaons ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0 K-]cc', + '[Sigma_c+ -> p+ p+ KS0 K+]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2PPKsK_KsDD = self.makeHc2PPX( + name=hcs2ppKsK_name + "_KsDD", + inputSel=[StdLooseKsDD, self.inProtons, self.inKaons ], + decDescriptors=['[Sigma_c+ -> p+ p+ KS0 K-]cc', + '[Sigma_c+ -> p+ p+ KS0 K+]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2LamPKPi_LamLL = self.makeHc2PPX( + name=hcs2LpKpi_name + "_LamLL", + inputSel=[StdLooseLambdaLL, self.inProtons, self.inKaons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ K- pi+]cc', + '[Sigma_c+ -> Lambda0 p+ K- pi-]cc', + '[Sigma_c+ -> Lambda0 p+ K+ pi+]cc', + '[Sigma_c+ -> Lambda0 p+ K+ pi-]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2LamPKPi_LamDD = self.makeHc2PPX( + name=hcs2LpKpi_name + "_LamDD", + inputSel=[StdLooseLambdaDD, self.inProtons, self.inKaons, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 p+ K- pi+]cc', + '[Sigma_c+ -> Lambda0 p+ K- pi-]cc', + '[Sigma_c+ -> Lambda0 p+ K+ pi+]cc', + '[Sigma_c+ -> Lambda0 p+ K+ pi-]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2LamLamPi_LamLLLL = self.makeHc2PPX( + name=hcs2LLpi_name + "_LamLLLL", + inputSel=[StdLooseLambdaLL, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 Lambda0 pi+]cc', + '[Sigma_c+ -> Lambda0 Lambda0 pi-]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2LamLamPi_LamDDDD = self.makeHc2PPX( + name=hcs2LLpi_name + "_LamDDDD", + inputSel=[StdLooseLambdaDD, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 Lambda0 pi+]cc', + '[Sigma_c+ -> Lambda0 Lambda0 pi-]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selHcs2LamLamPi_LamLLDD = self.makeHc2PPX( + name=hcs2LLpi_name + "_LamLLDD", + inputSel=[StdLooseLambdaLL, StdLooseLambdaDD, self.inPions ], + decDescriptors=['[Sigma_c+ -> Lambda0 Lambda0 pi+]cc', + '[Sigma_c+ -> Lambda0 Lambda0 pi-]cc' ], + mass_max = self.config["Hcs_MASS_MAX"], + ) + + self.selPc2PKPiPi = self.makeHc2PPX( + name=pc2pKpipi_name, + inputSel=[self.inProtons, self.inKaons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ K+ pi- pi-]cc', + '[Sigma_c+ -> p+ K+ pi+ pi-]cc', + '[Sigma_c+ -> p+ K+ pi+ pi+]cc', + '[Sigma_c+ -> p+ K- pi- pi-]cc', + '[Sigma_c+ -> p+ K- pi+ pi-]cc', + '[Sigma_c+ -> p+ K- pi+ pi+]cc' ], + mass_max = self.config["Pc_MASS_MAX"], + ) + + self.selPc2PKsPi_KsLL = self.makeHc2PPX( + name=pc2pKspi_name + "_KsLL", + inputSel=[StdLooseKsLL, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ KS0 pi-]cc', + '[Sigma_c+ -> p+ KS0 pi+]cc' ], + mass_max = self.config["Pc_MASS_MAX"], + ) + + self.selPc2PKsPi_KsDD = self.makeHc2PPX( + name=pc2pKspi_name + "_KsDD", + inputSel=[StdLooseKsDD, self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ KS0 pi-]cc', + '[Sigma_c+ -> p+ KS0 pi+]cc' ], + mass_max = self.config["Pc_MASS_MAX"], + ) + + self.selPs2PPiPi = self.makeHs2PPX( + name=ps2ppipi_name, + inputSel=[self.inProtons, self.inPions ], + decDescriptors=['[Sigma_c+ -> p+ pi+ pi-]cc', + '[Sigma_c+ -> p+ pi+ pi+]cc', + '[Sigma_c+ -> p+ pi- pi-]cc', + ], + mass_max = self.config["Ps_MASS_MAX"], + mipchi2_cut = config['HsDaug_1ofAll_BPVIPCHI2_MIN'], + vdchi2_cut = config['Hs_BPVVDCHI2_MIN'], + ) + + self.selPs2PPiPiDown = self.makeHs2PPX( + name=ps2ppipiDown_name, + inputSel=[self.inDownProtons, self.inDownPions ], + decDescriptors=['[Sigma_c+ -> p+ pi+ pi-]cc', + '[Sigma_c+ -> p+ pi+ pi+]cc', + '[Sigma_c+ -> p+ pi- pi-]cc', + ], + mass_max = self.config["Ps_MASS_MAX"], + mipchi2_cut = config['HsDownDaug_1ofAll_BPVIPCHI2_MIN'], + vdchi2_cut = config['HsDown_BPVVDCHI2_MIN'], + ) + + ## ref + self.selLc2PKPi = self.makeHc2PPX( + name=lc2pKpi_name, + inputSel=[self.inProtons, self.inKaons, self.inPions ], + decDescriptors=['[Lambda_c+ -> p+ K- pi+]cc'], + mass_max = self.config["Lc_MASS_MAX"], + ) + + self.selL2PPi = self.makeHs2PPX( + name=l2ppi_name, + inputSel=[self.inProtons, self.inPions ], + decDescriptors=['[Lambda0 -> p+ pi-]cc'], + mass_max = self.config["Lam_MASS_MAX"], + mipchi2_cut = config['HsDaug_1ofAll_BPVIPCHI2_MIN'], + vdchi2_cut = config['Hs_BPVVDCHI2_MIN'], + ) + + self.selL2PPiDown = self.makeHs2PPX( + name=l2ppi_name + "Down", + inputSel=[self.inDownProtons, self.inDownPions ], + decDescriptors=['[Lambda0 -> p+ pi-]cc'], + mass_max = self.config["Lam_MASS_MAX"], mipchi2_cut = config['HsDownDaug_1ofAll_BPVIPCHI2_MIN'], vdchi2_cut = config['HsDown_BPVVDCHI2_MIN'], ) @@ -321,6 +616,225 @@ class StrippingCharm2PPXConf(LineBuilder): HLT2=config['Hlt2Filter'] ) + # + self.line_Hc2PPKs_KsLL = self.make_line( + name='{0}Line'.format(hc2ppKs_name + "LL"), + selection=self.selHc2PPKs_KsLL, + prescale=config['PrescaleHc2PPKs'], + postscale=config['PostscaleHc2PPKs'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2PPKs_KsDD = self.make_line( + name='{0}Line'.format(hc2ppKs_name + "DD"), + selection=self.selHc2PPKs_KsDD, + prescale=config['PrescaleHc2PPKs'], + postscale=config['PostscaleHc2PPKs'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2PPKsPi_KsLL = self.make_line( + name='{0}Line'.format(hc2ppKspi_name + "LL"), + selection=self.selHc2PPKsPi_KsLL, + prescale=config['PrescaleHc2PPKsPi'], + postscale=config['PostscaleHc2PPKsPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2PPKsPi_KsDD = self.make_line( + name='{0}Line'.format(hc2ppKspi_name + "DD"), + selection=self.selHc2PPKsPi_KsDD, + prescale=config['PrescaleHc2PPKsPi'], + postscale=config['PostscaleHc2PPKsPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2LamPPi_LamLL = self.make_line( + name='{0}Line'.format(hc2Lppi_name + "LL"), + selection=self.selHc2LamPPi_LamLL, + prescale=config['PrescaleHc2LamPPi'], + postscale=config['PostscaleHc2LamPPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2LamPPi_LamDD = self.make_line( + name='{0}Line'.format(hc2Lppi_name + "DD"), + selection=self.selHc2LamPPi_LamDD, + prescale=config['PrescaleHc2LamPPi'], + postscale=config['PostscaleHc2LamPPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2LamPPiPi_LamLL = self.make_line( + name='{0}Line'.format(hc2Lppipi_name + "LL"), + selection=self.selHc2LamPPiPi_LamLL, + prescale=config['PrescaleHc2LamPPiPi'], + postscale=config['PostscaleHc2LamPPiPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hc2LamPPiPi_LamDD = self.make_line( + name='{0}Line'.format(hc2Lppipi_name + "DD"), + selection=self.selHc2LamPPiPi_LamDD, + prescale=config['PrescaleHc2LamPPiPi'], + postscale=config['PostscaleHc2LamPPiPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2PPKKPi = self.make_line( + name='{0}Line'.format(hcs2ppKKpi_name), + selection=self.selHcs2PPKKPi, + prescale=config['PrescaleHcs2PPKKPi'], + postscale=config['PostscaleHcs2PPKKPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2PPKsK_KsLL = self.make_line( + name='{0}Line'.format(hcs2ppKsK_name + "LL"), + selection=self.selHcs2PPKsK_KsLL, + prescale=config['PrescaleHcs2PPKsK'], + postscale=config['PostscaleHcs2PPKsK'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2PPKsK_KsDD = self.make_line( + name='{0}Line'.format(hcs2ppKsK_name + "DD"), + selection=self.selHcs2PPKsK_KsDD, + prescale=config['PrescaleHcs2PPKsK'], + postscale=config['PostscaleHcs2PPKsK'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2LamPKPi_LamLL = self.make_line( + name='{0}Line'.format(hcs2LpKpi_name + "LL"), + selection=self.selHcs2LamPKPi_LamLL, + prescale=config['PrescaleHcs2LamPKPi'], + postscale=config['PostscaleHcs2LamPKPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2LamPKPi_LamDD = self.make_line( + name='{0}Line'.format(hcs2LpKpi_name + "DD"), + selection=self.selHcs2LamPKPi_LamDD, + prescale=config['PrescaleHcs2LamPKPi'], + postscale=config['PostscaleHcs2LamPKPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2LamLamPi_LamLLLL = self.make_line( + name='{0}Line'.format(hcs2LLpi_name + "LLLL"), + selection=self.selHcs2LamLamPi_LamLLLL, + prescale=config['PrescaleHcs2LamLamPi'], + postscale=config['PostscaleHcs2LamLamPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2LamLamPi_LamDDDD = self.make_line( + name='{0}Line'.format(hcs2LLpi_name + "DDDD"), + selection=self.selHcs2LamLamPi_LamDDDD, + prescale=config['PrescaleHcs2LamLamPi'], + postscale=config['PostscaleHcs2LamLamPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Hcs2LamLamPi_LamLLDD = self.make_line( + name='{0}Line'.format(hcs2LLpi_name + "LLDD"), + selection=self.selHcs2LamLamPi_LamLLDD, + prescale=config['PrescaleHcs2LamLamPi'], + postscale=config['PostscaleHcs2LamLamPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Pc2PKPiPi = self.make_line( + name='{0}Line'.format(pc2pKpipi_name), + selection=self.selPc2PKPiPi, + prescale=config['PrescalePc2PKPiPi'], + postscale=config['PostscalePc2PKPiPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Pc2PKsPi_KsLL = self.make_line( + name='{0}Line'.format(pc2pKspi_name + "LL"), + selection=self.selPc2PKsPi_KsLL, + prescale=config['PrescalePc2PKsPi'], + postscale=config['PostscalePc2PKsPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Pc2PKsPi_KsDD = self.make_line( + name='{0}Line'.format(pc2pKspi_name + "DD"), + selection=self.selPc2PKsPi_KsDD, + prescale=config['PrescalePc2PKsPi'], + postscale=config['PostscalePc2PKsPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Ps2PPiPi = self.make_line( + name='{0}Line'.format(ps2ppipi_name), + selection=self.selPs2PPiPi, + prescale=config['PrescalePs2PPiPi'], + postscale=config['PostscalePs2PPiPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_Ps2PPiPiDown = self.make_line( + name='{0}Line'.format(ps2ppipiDown_name), + selection=self.selPs2PPiPiDown, + prescale=config['PrescalePs2PPiPi'], + postscale=config['PostscalePs2PPiPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + ## reference + + self.line_Lc2PKPi = self.make_line( + name='{0}Line'.format(lc2pKpi_name), + selection=self.selLc2PKPi, + prescale=config['PrescaleLc2PKPi'], + postscale=config['PostscaleLc2PKPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_L2PPi = self.make_line( + name='{0}Line'.format(l2ppi_name), + selection=self.selL2PPi, + prescale=config['PrescaleL2PPi'], + postscale=config['PostscaleL2PPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + + self.line_L2PPiDown = self.make_line( + name='{0}Line'.format(l2ppi_name + "Down"), + selection=self.selL2PPiDown, + prescale=config['PrescaleL2PPi'], + postscale=config['PostscaleL2PPi'], + HLT1=config['Hlt1Filter'], + HLT2=config['Hlt2Filter'] + ) + def make_line(self, name, selection, prescale, postscale, **kwargs): """Create the stripping line defined by the selection. @@ -346,7 +860,7 @@ class StrippingCharm2PPXConf(LineBuilder): else: return False - def makeHc2PPX(self, name, inputSel, decDescriptors): + def makeHc2PPX(self, name, inputSel, decDescriptors, mass_max ): """Return a Selection instance for a Hc -> p+ p+ X decay. Keyword arguments: @@ -357,19 +871,20 @@ class StrippingCharm2PPXConf(LineBuilder): combCuts = ( '(AMAXCHILD(PT) > {0[Daug_1ofAll_PT_MIN]})' + ' & (AM < {1})' ' & (AMAXCHILD(PROBNNp) > {0[Proton_1ofAll_ProbNN_MIN]})' ' & (AMAXCHILD(BPVIPCHI2()) > {0[Daug_1ofAll_BPVIPCHI2_MIN]})' " & (ACUTDOCACHI2({0[Comb_ADOCACHI2_MAX]}, ''))" - ).format(self.config) + ).format(self.config, mass_max + 150*MeV) HcCuts = ( '(VFASPF(VCHI2/VDOF) < {0[Hc_VCHI2VDOF_MAX]})' ' & (BPVVDCHI2 > {0[Hc_BPVVDCHI2_MIN]})' ' & (BPVLTIME(9)*c_light > {0[Hc_BPVCTAU_MIN]})' - ' & (M < {0[Comb_MASS_MAX]})' + ' & (M < {1})' + ' & (PT > {0[Hc_PT_MIN]})' # ' & (BPVIPCHI2() < {0[Hc_BPVIPCHI2_MAX]})' -# ' & (PT > {0[Hc_PT_MIN]})' - ).format(self.config) + ).format(self.config, mass_max) _Hc = CombineParticles( name='Combine{0}'.format(name), @@ -380,7 +895,7 @@ class StrippingCharm2PPXConf(LineBuilder): return Selection(name, Algorithm=_Hc, RequiredSelections=inputSel) - def makeHs2PPX(self, name, inputSel, decDescriptors, mipchi2_cut, vdchi2_cut): + def makeHs2PPX(self, name, inputSel, decDescriptors, mass_max, mipchi2_cut, vdchi2_cut): """Return a Selection instance for a Hs -> p+ p+ X decay. Keyword arguments: @@ -391,19 +906,20 @@ class StrippingCharm2PPXConf(LineBuilder): combCuts = ( '(AMAXCHILD(PT) > {0[HsDaug_1ofAll_PT_MIN]})' + ' & (AM < {2})' ' & (AMAXCHILD(PROBNNp) > {0[HsProton_1ofAll_ProbNN_MIN]})' ' & (AMAXCHILD(BPVIPCHI2()) > {1})' " & (ACUTDOCACHI2({0[HsComb_ADOCACHI2_MAX]}, ''))" - ).format(self.config,mipchi2_cut) + ).format(self.config,mipchi2_cut,mass_max) HsCuts = ( '(VFASPF(VCHI2/VDOF) < {0[Hs_VCHI2VDOF_MAX]})' ' & (BPVVDCHI2 > {1})' ' & (BPVLTIME(9)*c_light > {0[Hs_BPVCTAU_MIN]})' - ' & (M < {0[HsComb_MASS_MAX]})' + ' & (M < {2})' + ' & (PT > {0[Hs_PT_MIN]})' # ' & (BPVIPCHI2() < {0[Hs_BPVIPCHI2_MAX]})' -# ' & (PT > {0[Hs_PT_MIN]})' - ).format(self.config,vdchi2_cut) + ).format(self.config,vdchi2_cut,mass_max) _Hs = CombineParticles( name='Combine{0}'.format(name), diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedBaryonSL.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedBaryonSL.py index 3f89ad6b6a2c760d2d6e1440e60bf7aca1632bc1..cda2bdf3f4bf32c4ecf437a304c60d86ae6f1efa 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedBaryonSL.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedBaryonSL.py @@ -62,6 +62,8 @@ default_config={ , 'signalPrescaleViaLc' : 1.0 , 'signalPrescaleViaLcL0DDMuNu' : 0.8 , 'signalPrescaleViaLcPPiMuNu' : 0.25 + , 'signalPrescaleViaLcPPiMuNu_Tight' : 1.0 + , 'signalPrescaleViaLcPKMuNu_Tight' : 1.0 , 'signalPrescaleViaOmegac0' : 1.0 , 'signalPrescaleViaXic' : 1.0 , 'signalPrescaleViaXicL0LLMuNu' : 0.8 @@ -70,6 +72,8 @@ default_config={ , 'controlPrescaleViaLcL0DDPiNC' : 0.8 , 'controlPrescaleViaLcPKPiNC' : 0.09 , 'controlPrescaleViaLcPPiPiNC' : 0.06 + , 'controlPrescaleViaLcPKPiNC_Tight' : 0.5 + , 'controlPrescaleViaLcPPiPiNC_Tight' : 0.5 , 'controlPrescaleViaOmegac0NC' : 1.0 , 'controlPrescaleViaXicL0LLPiNC' : 0.4 , 'controlPrescaleViaXicL0DDPiNC' : 0.8 @@ -78,16 +82,21 @@ default_config={ , 'GhostProb' : 0.3 , 'TrGhostProbMax' : 0.25 # same for all particles , 'MINIPCHI2' : 4.0 # adimensiional, orig. 9 + , 'P_Min_Tight' : 3.5*GeV , 'MuonP' : 3.0*GeV , 'MuonPT' : 500*MeV , 'MuonIPCHI2' : 5.0 , 'MuonPIDmu' : 0.0 , 'PionP' : 3.0*GeV + , 'PionP_ForXi' : 2.0*GeV , 'PionPT' : 500*MeV + , 'PionPT_ForXi' : 100*MeV , 'PionPIDK' : 10.0 , 'Pion_PIDpiPIDK_Min' : 0.0 , 'KaonP' : 3.0*GeV + , 'KaonP_ForOm' : 2.0*GeV , 'KaonPT' : 500*MeV + , 'KaonPT_ForOm' : 100*MeV , 'KaonPIDK' : 10.0 , 'Kaon_PIDKPIDpi_Min' : 5.0 , 'ProtonP' : 3.0*GeV @@ -99,6 +108,7 @@ default_config={ , 'ProbNNk' : 0.4 , 'ProbNNpi' : 0.5 , 'ProbNNpiMax' : 0.95 + , 'MisID_PROB_Max' : 0.7 , 'LambdaLLPMin' :5000.0*MeV , 'LambdaLLPTMin' : 800.0*MeV , 'LambdaLLCutMass' : 20.0*MeV @@ -120,13 +130,22 @@ default_config={ , 'LambdaDDMaxVZ' :2275.0*mm , 'LambdaPr_PT_MIN' : 500.0*MeV , 'LambdaPi_PT_MIN' : 100.0*MeV - , 'Lc_ADMASS_HalfWin' : 80.0*MeV - , 'Lc_Daug_1of3_MIPCHI2DV_Min': 4.0 + , 'Lc_ADMASS_HalfWin' : 80.0*MeV + , 'Lc_ADMASS_HalfWin_Tight' : 55.0*MeV + , 'Lc_Daug_1of3_MIPCHI2DV_Min' : 4.0 + , 'Lc_Daug_1of3_MIPCHI2DV_Min_Tight': 9.0 , 'Lc_ADOCAMAX_Max' : 0.5*mm + , 'Lc_ADOCAMAX_Max_Tight' : 0.15*mm , 'Lc_APT_Min' : 1.0*GeV - , 'Lc_VCHI2_Max' : 30.0 - , 'Lc_BPVVDCHI2_Min' : 16.0 + , 'Lc_APT_Min_Tight_PPiMu' : 1.6*GeV + , 'Lc_APT_Min_Tight_PKMu' : 1.6*GeV + , 'Lc_AP_Min_Tight' : 25.0*GeV + , 'Lc_VCHI2_Max' : 30.0 + , 'Lc_VCHI2_Max_Tight' : 20.0 + , 'Lc_BPVVDCHI2_Min' : 16.0 + , 'Lc_BPVVDCHI2_Min_Tight' : 25.0 , 'Lc_BPVDIRA_Min' : 0.9 + , 'Lc_BPVDIRA_Min_Tight' : 0.99 , 'Omegac0_ADAMASS_HalfWin' : 170.0*MeV , 'Omegac0_ADMASS_HalfWin' : 120.0*MeV , 'Omegac0_4Dau_VCHI2_Max' : 60.0 @@ -170,10 +189,18 @@ class StrippingCharmedBaryonSL(LineBuilder) : Algorithm = self._kaonFilter("Kfor"+name), RequiredSelections = [StdAllLooseKaons]) + self.selKaon_ForOm = Selection( "SelKforOm" + name, + Algorithm = self._kaonFilter_ForOm("KforOm"+name), + RequiredSelections = [StdAllLooseKaons]) + self.selPion = Selection( "SelPifor" + name, Algorithm = self._pionFilter("Pifor"+name), RequiredSelections = [StdAllLoosePions]) + self.selPion_ForXi = Selection( "SelPiforXi" + name, + Algorithm = self._pionFilter_ForXi("PiforXi"+name), + RequiredSelections = [StdAllLoosePions]) + self.selProton = Selection( "SelProtonfor" + name, Algorithm = self._protonFilter("Protonfor"+name), RequiredSelections = [StdAllLooseProtons]) @@ -208,7 +235,7 @@ class StrippingCharmedBaryonSL(LineBuilder) : ########################################################################## self.Ximinus2LambdaPi = self.createCombinationSel(OutputList = "Ximinus2LambdaPifor"+ self.name, DecayDescriptor = "[Xi- -> Lambda0 pi-]cc", - DaughterLists = [self.selPion, self.selAllLambda], + DaughterLists = [self.selPion_ForXi, self.selAllLambda], DaughterCuts = {"pi-" : "(MIPCHI2DV(PRIMARY)>4) "}, PreVertexCuts = "(ADAMASS('Xi-') < 80*MeV) & (ADOCACHI2CUT(30, ''))", PostVertexCuts = "(ADMASS('Xi-')<64*MeV)"\ @@ -222,7 +249,7 @@ class StrippingCharmedBaryonSL(LineBuilder) : ########################################################################## self.Omegaminus2LambdaK = self.createCombinationSel(OutputList = "Omegaminus2LambdaKfor"+ self.name, DecayDescriptor = "[Omega- -> Lambda0 K-]cc", - DaughterLists = [self.selKaon, self.selAllLambda], + DaughterLists = [self.selKaon_ForOm, self.selAllLambda], DaughterCuts = {"K-" : "(MIPCHI2DV(PRIMARY)>4) "}, PreVertexCuts = "(ADAMASS('Omega-') < 80*MeV) & (ADOCACHI2CUT(30, ''))", PostVertexCuts = "(ADMASS('Omega-')<64*MeV)"\ @@ -259,6 +286,16 @@ class StrippingCharmedBaryonSL(LineBuilder) : _pi = FilterDesktop(Code = _code ) return _pi + def _pionFilter_ForXi( self , _name): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(PionP_ForXi)s) & (PT > %(PionPT_ForXi)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK< %(PionPIDK)s)"\ + "& (PROBNNpi > %(ProbNNpi)s)" % self.config + _pi_ForXi = FilterDesktop(Code = _code ) + return _pi_ForXi + def _kaonFilter( self , _name ): _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ "& (P>%(KaonP)s) & (PT > %(KaonPT)s)"\ @@ -270,6 +307,17 @@ class StrippingCharmedBaryonSL(LineBuilder) : _ka = FilterDesktop(Code = _code ) return _ka + def _kaonFilter_ForOm( self , _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(KaonP_ForOm)s) & (PT > %(KaonPT_ForOm)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK> %(KaonPIDK)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (PROBNNk > %(ProbNNk)s)"\ + "& (HASRICH)&(PIDK-PIDpi>%(Kaon_PIDKPIDpi_Min)s)"% self.config + _ka_ForOm = FilterDesktop(Code = _code ) + return _ka_ForOm + def _protonFilter( self, _name ): _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ "& (PT > %(ProtonPT)s) & (P>%(ProtonP)s)"\ @@ -352,6 +400,58 @@ class StrippingCharmedBaryonSL(LineBuilder) : _strCutComb_L0MuSL = _strCutCombfor + '&' + _strCutComb_MassL0MuSL _strCutComb_pKMuSL = _strCutCombfor + '&' + _strCutComb_MasspKMuSL _strCutComb_ppiMuSL = _strCutCombfor + '&' + _strCutComb_MassppiMuSL + + # Tight cut for Lambda_c+ -> p pi+ mu+ nu to reduce the rate + _strCutCombfor_PPiMu = "(AMINCHILD(MIPCHI2DV(PRIMARY))> %(Lc_Daug_1of3_MIPCHI2DV_Min_Tight)s )" \ + "& (ADOCAMAX('')<%(Lc_ADOCAMAX_Max_Tight)s)" \ + "& (AMINCHILD(P)>%(P_Min_Tight)s)" \ + "& (AP>%(Lc_AP_Min_Tight)s)" \ + "& (APT>%(Lc_APT_Min_Tight_PPiMu)s)" % self.config + _strCutCombfor_PKMu = "(AMINCHILD(MIPCHI2DV(PRIMARY))> %(Lc_Daug_1of3_MIPCHI2DV_Min_Tight)s )" \ + "& (ADOCAMAX('')<%(Lc_ADOCAMAX_Max_Tight)s)" \ + "& (AMINCHILD(P)>%(P_Min_Tight)s)" \ + "& (AP>%(Lc_AP_Min_Tight)s)" \ + "& (APT>%(Lc_APT_Min_Tight_PKMu)s)" % self.config + _strCutCombfor_PPiPi = "(AMINCHILD(MIPCHI2DV(PRIMARY))> %(Lc_Daug_1of3_MIPCHI2DV_Min_Tight)s )" \ + "& (ADOCAMAX('')<%(Lc_ADOCAMAX_Max_Tight)s)" \ + "& (AMINCHILD(P)>%(P_Min_Tight)s)" \ + "& (AP>%(Lc_AP_Min_Tight)s)" \ + "& (APT>%(Lc_APT_Min_Tight_PPiMu)s)" % self.config + _strCutCombfor_PKPi = "(AMINCHILD(MIPCHI2DV(PRIMARY))> %(Lc_Daug_1of3_MIPCHI2DV_Min_Tight)s )" \ + "& (ADOCAMAX('')<%(Lc_ADOCAMAX_Max_Tight)s)" \ + "& (AMINCHILD(P)>%(P_Min_Tight)s)" \ + "& (AP>%(Lc_AP_Min_Tight)s)" \ + "& (APT>%(Lc_APT_Min_Tight_PKMu)s)" % self.config + _strCutMothSL_PPiMu = "(VFASPF(VCHI2) < %(Lc_VCHI2_Max_Tight)s)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min_Tight)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min_Tight)s)" \ + "& (NINTREE(('pi+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('p+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('mu+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s)) > 0)" % self.config + _strCutMothSL_PKMu = "(VFASPF(VCHI2) < %(Lc_VCHI2_Max_Tight)s)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min_Tight)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min_Tight)s)" \ + "& (NINTREE(('K+'==ABSID) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('p+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('mu+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s)) > 0)" % self.config + _strCutMothSL_PPiPi = "(VFASPF(VCHI2) < 20)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min_Tight)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min_Tight)s)" \ + "& (NINTREE(('pi+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 1)" \ + "& (NINTREE(('p+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" % self.config + _strCutMothSL_PKPi = "(VFASPF(VCHI2) < %(Lc_VCHI2_Max_Tight)s)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min_Tight)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min_Tight)s)" \ + "& (NINTREE(('pi+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('K+'==ABSID) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNp < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" \ + "& (NINTREE(('p+'==ABSID) & (PROBNNk < %(MisID_PROB_Max)s) & (PROBNNpi < %(MisID_PROB_Max)s) & (PROBNNmu < %(MisID_PROB_Max)s)) > 0)" % self.config + _strCutComb_ppiMuSL_Tight = _strCutCombfor_PPiMu + '&' + _strCutComb_MassppiMuSL + _strCutComb_pKMuSL_Tight = _strCutCombfor_PKMu + '&' + _strCutComb_MasspKMuSL + _strCutComb_ppipiNC_Tight = _strCutCombfor_PPiPi + '&' + "(ADAMASS('Lambda_c+')< 1.1*%(Lc_ADMASS_HalfWin_Tight)s)" % self.config + _strCutMoth_ppipiNC_Tight = _strCutMothSL_PPiPi + '&' + "(ADMASS('Lambda_c+')< %(Lc_ADMASS_HalfWin_Tight)s)" % self.config + _strCutComb_pKpiNC_Tight = _strCutCombfor_PKPi + '&' + "(ADAMASS('Lambda_c+')< 1.1*%(Lc_ADMASS_HalfWin_Tight)s)" % self.config + _strCutMoth_pKpiNC_Tight = _strCutMothSL_PKPi + '&' + "(ADMASS('Lambda_c+')< %(Lc_ADMASS_HalfWin_Tight)s)" % self.config + _strCutMothSL = _strCutMothfor ''' Stripping Lambda_c+ -> Lambda0(LL) mu+ ''' @@ -390,6 +490,18 @@ class StrippingCharmedBaryonSL(LineBuilder) : EnableFlavourTagging = False ) self.registerLine (Lambdac2PKMuNuLine) + ''' Tight Line ''' + Lambdac2PKMuNuTight = self.createCombinationSel(OutputList = "Lambdac2PKMuNuTight" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ K- mu+]cc", + DaughterLists = [self.selProton, self.selKaon, self.selMuon], + PreVertexCuts = _strCutComb_pKMuSL_Tight, + PostVertexCuts = _strCutMothSL_PKMu ) + Lambdac2PKMuNuTightLine = StrippingLine( self.name + "Lambdac2PKMuNuTightLine", + prescale = self.config['signalPrescaleViaLcPKMuNu_Tight'], + algos = [ Lambdac2PKMuNuTight ], + EnableFlavourTagging = False ) + self.registerLine (Lambdac2PKMuNuTightLine) + ''' Stripping Lambda_c+ -> p+ pi- mu+ ''' Lambdac2PPiMuNu = self.createCombinationSel(OutputList = "Lambdac2PPiMuNu" + self.name, DecayDescriptor = "[Lambda_c+ -> p+ pi- mu+]cc", @@ -402,6 +514,18 @@ class StrippingCharmedBaryonSL(LineBuilder) : EnableFlavourTagging = False ) self.registerLine (Lambdac2PPiMuNuLine) + ''' Tight Line ''' + Lambdac2PPiMuNuTight = self.createCombinationSel(OutputList = "Lambdac2PPiMuNuTight" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ pi- mu+]cc", + DaughterLists = [self.selProton, self.selPion, self.selMuon], + PreVertexCuts = _strCutComb_ppiMuSL_Tight, + PostVertexCuts = _strCutMothSL_PPiMu ) + Lambdac2PPiMuNuTightLine = StrippingLine( self.name + "Lambdac2PPiMuNuTightLine", + prescale = self.config['signalPrescaleViaLcPPiMuNu_Tight'], + algos = [ Lambdac2PPiMuNuTight ], + EnableFlavourTagging = False ) + self.registerLine (Lambdac2PPiMuNuTightLine) + ''' ---------------------- ''' ''' Normalization channels ''' ''' ---------------------- ''' @@ -441,6 +565,19 @@ class StrippingCharmedBaryonSL(LineBuilder) : EnableFlavourTagging = False ) self.registerLine (Lambdac2PKPiNCLine) + ''' Tight Line ''' + Lambdac2PKPiNCTight = self.createCombinationSel(OutputList = "Lambdac2PKPiNCTight" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ K- pi+]cc", + DaughterLists = [self.selProton, self.selKaon, self.selPion], + PreVertexCuts = _strCutComb_pKpiNC_Tight, + PostVertexCuts = _strCutMoth_pKpiNC_Tight ) + Lambdac2PKPiNCTightLine = StrippingLine( self.name + "Lambdac2PKPiNCTightLine", + prescale = self.config['controlPrescaleViaLcPKPiNC_Tight'], + L0DU = "L0_CHANNEL('Hadron')", + algos = [ Lambdac2PKPiNCTight ], + EnableFlavourTagging = False ) + self.registerLine (Lambdac2PKPiNCTightLine) + ''' NC Stripping Lambda_c+ -> p+ pi- pi+ ''' Lambdac2PPiPiNC = self.createCombinationSel(OutputList = "Lambdac2PPiPiNC" + self.name, DecayDescriptor = "[Lambda_c+ -> p+ pi- pi+]cc", @@ -452,6 +589,19 @@ class StrippingCharmedBaryonSL(LineBuilder) : algos = [ Lambdac2PPiPiNC ], EnableFlavourTagging = False ) self.registerLine (Lambdac2PPiPiNCLine) + + ''' Tight Line ''' + Lambdac2PPiPiNCTight = self.createCombinationSel(OutputList = "Lambdac2PPiPiNCTight" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ pi- pi+]cc", + DaughterLists = [self.selProton, self.selPion, self.selPion], + PreVertexCuts = _strCutComb_ppipiNC_Tight, + PostVertexCuts = _strCutMoth_ppipiNC_Tight ) + Lambdac2PPiPiNCTightLine = StrippingLine( self.name + "Lambdac2PPiPiNCTightLine", + prescale = self.config['controlPrescaleViaLcPPiPiNC_Tight'], + L0DU = "L0_CHANNEL('Hadron')", + algos = [ Lambdac2PPiPiNCTight ], + EnableFlavourTagging = False ) + self.registerLine (Lambdac2PPiPiNCTightLine) ## -------------------- End of LambdacSL ------------ ##------------------------------------------------------------------------------------------ diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedMesonSL.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedMesonSL.py new file mode 100644 index 0000000000000000000000000000000000000000..ac354967de5de8b191c51a63efb5ac534e8f0896 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingCharmedMesonSL.py @@ -0,0 +1,623 @@ +############################################################################### +# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +''' +Speculative code for charmed meson searches. +Charmed mesons are from beauty decays (Btag) along with WS lines and normalization lines: +Note: +The mass window for B~0 and D+ are wide enough to include B_s~0 and Ds+ + +1. B~0 -> D+ pi- pi- pi+, D+ -> K+ K- mu+ nu : + +2. B~0 -> D+ pi- pi- pi+, D+ -> pi+ pi- mu+ nu : + +3. B- -> D0 pi- pi- pi+, D0 -> eta pi- mu+ nu, eta -> pi+ pi- pi0(gamma): + +4. B- -> D0 pi- pi- pi+, D0 -> pi- pi+ pi- mu+ nu: + +5. B- -> D0 pi- pi- pi+, D0 -> pi- K+ K- mu+ nu : +''' + + +__author__ = ['Xiao-Rui Lyu', 'Yangjie Su'] +__date__ = '2023/06/30' +__version__ = '$Revision: 0.1 $' +__all__ = ('StrippingCharmedMesonSL' + ,'default_config') + + +from Gaudi.Configuration import * +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from StandardParticles import StdLoosePions, StdNoPIDsDownPions, StdLooseKaons, StdLooseDownKaons +from StandardParticles import StdAllLoosePions, StdAllLooseKaons, StdLooseMuons, StdAllLooseProtons, StdAllLooseMuons, StdAllVeryLooseMuons +from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection +from PhysSelPython.Wrappers import MultiSelectionSequence +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from GaudiKernel.SystemOfUnits import MeV, GeV, mm, picosecond +import sys + + +default_name='CharmedMesonSL' + #### This is the dictionary of all tunable cuts ######## +default_config={ + 'NAME' : 'CharmedMesonSL', + 'WGs' : ['Charm'], + 'BUILDERTYPE' : 'StrippingCharmedMesonSL', + 'STREAMS' : ['Charm'], + 'CONFIG' : { + 'GEC_nLongTrk' : 160 # adimensional + , 'signalPrescaleViaD2KKmunu' : 1.0 + , 'controlPrescaleViaD2KKpi' : 1.0 + , 'signalPrescaleViaD2pipimunu' : 1.0 + , 'controlPrescaleViaD2pipipi' : 1.0 + , 'signalPrescaleViaD02pipipimunu' : 1.0 + , 'controlPrescaleViaD02pipipipi' : 1.0 + , 'signalPrescaleViaD02KKpimunu' : 1.0 + , 'controlPrescaleViaD02KKpipi' : 1.0 + , 'signalPrescaleViaD02etapimunu' : 1.0 + , 'controlPrescaleViaD02etapipi' : 1.0 + , 'TRCHI2DOFMax' : 3.0 + , 'GhostProb' : 0.3 + , 'TrGhostProbMax' : 0.25 # same for all particles + , 'MINIPCHI2' : 4.0 # adimensiional + , 'MuonP' : 3*GeV + , 'MuonPT' : 250*MeV + , 'MuonIPCHI2' : 4.0 + , 'MuonPIDmu' : 0.0 + , 'PionP' : 3*GeV + , 'PionPT' : 250*MeV + , 'PionPIDK' : 5.0 + , 'Pion_PIDpiPIDK_Min' : 0.0 + , 'KaonP' : 3*GeV + , 'KaonPT' : 250*MeV + , 'KaonPIDK' : 10.0 + , 'Kaon_PIDKPIDpi_Min' : 5.0 + , 'ProbNNk' : 0.4 + , 'ProbNNpi' : 0.5 + , 'ProbNNpiMax' : 0.9 + , 'Dp_ADMASS_Min' : 1800.0*MeV + , 'Dp_ADMASS_Max' : 2030.0*MeV #large enough to cover D_s+ + , 'D0_ADMASS_Min' : 1820.0*MeV + , 'D0_ADMASS_Max' : 1900.0*MeV + , 'Dp_Daug_1of3_MIPCHI2DV_Min': 4.0 + , 'Dp_ADOCAMAX_Max' : 0.25*mm + , 'Dp_APT_Min' : 1.2*GeV + , 'Dp_AP_Min' : 20*GeV + , 'Dp_VCHI2_Max' : 30.0 + , 'Dp_BPVVDCHI2_Min' : 16.0 + , 'Dp_BPVDIRA_Min' : 0.95 + , 'KKMu_AM_Min' : 1100.0*MeV + , 'PiPiMu_AM_Min' : 400.0*MeV + , 'PiPiPiMu_AM_Min' : 530.0*MeV + , 'PiKKMu_AM_Min' : 1240.0*MeV + , 'EtaPiMu_AM_Min' : 800.0*MeV + , 'DpSL_AM_Max' : 2080.0*MeV #large enough to cover D_s+ + , 'D0SL_AM_Max' : 1960.0*MeV + + #For B mesons + , 'B0SL_M_Min': 2800*MeV + , 'B0SL_M_Max': 5600*MeV #large enough to cover B_s0 + , 'B0_M_Min': 5100*MeV + , 'B0_M_Max': 5600*MeV #large enough to cover B_s0 + + , 'BpSL_M_Min': 3000*MeV + , 'BpSL_M_Max': 5700*MeV + , 'Bp_M_Min': 5100*MeV + , 'Bp_M_Max': 5500*MeV + + , 'B_AP_Min': 20*GeV + , 'B_APT_Min': 1.5*GeV + , 'B_VCHI2_Max': 30 + , 'B_BPVVDCHI2_Min': 16 + , 'B_BPVDIRA_Min': 0.95 + } ## end of 'CONFIG' +} ## end of default_config + +#------------------------------------------------------------------------------------------------------------- +class StrippingCharmedMesonSL(LineBuilder) : + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config) : + LineBuilder.__init__(self, name, config) + self.name = name + self.config = config + + GECs = { "Code":"( recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG) < %(GEC_nLongTrk)s )" % config, + "Preambulo": ["from LoKiTracks.decorators import *"]} + + ########################################################################## + ## Basic particles: mu, K, pi, eta + ########################################################################## + self.selMuon = Selection( "SelMufor" + name, + Algorithm = self._muonFilter("Mufor"+name), + RequiredSelections = [StdLooseMuons]) + + self.selKaon = Selection( "SelKfor" + name, + Algorithm = self._kaonFilter("Kfor"+name), + RequiredSelections = [StdAllLooseKaons]) + + self.selPion = Selection( "SelPifor" + name, + Algorithm = self._pionFilter("Pifor"+name), + RequiredSelections = [StdAllLoosePions]) + + self.makeEta() + # then use self.Eta2PiPiPi0 and self.Eta2PiPiGamma + + ########################################################################## + ## Charmed Meson SL lines + ########################################################################## + self.DmesonSLList = self.makeDmesonSL() + + + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + # Sub Function + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + def _muonFilter( self , _name): + _code = " (TRCHI2DOF< %(TRCHI2DOFMax)s)"\ + "& (PT>%(MuonPT)s) & (P>%(MuonP)s)"\ + "& (TRGHOSTPROB< %(GhostProb)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MuonIPCHI2)s)"\ + "& (PIDmu > %(MuonPIDmu)s) & ISMUON" % self.config + _mu = FilterDesktop(Code = _code ) + return _mu + + def _pionFilter( self , _name): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(PionP)s) & (PT > %(PionPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK< %(PionPIDK)s) "\ + "& (HASRICH)&(PROBNNpi > %(ProbNNpi)s) " % self.config + _pi = FilterDesktop(Code = _code ) + return _pi + + def _kaonFilter( self , _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(KaonP)s) & (PT > %(KaonPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK> %(KaonPIDK)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (PROBNNk > %(ProbNNk)s) "\ + "& (HASRICH)&(PIDK-PIDpi>%(Kaon_PIDKPIDpi_Min)s) "% self.config + _ka = FilterDesktop(Code = _code ) + return _ka + + def makeB0Line(self, line_name, prescale, charmed_meson, is_NC = False): + comb_cut = "(ADOCA(2,3) < %(Dp_ADOCAMAX_Max)s) & (ADOCA(2,4) < %(Dp_ADOCAMAX_Max)s)"\ + "& (AP > %(B_AP_Min)s)"\ + "& (APT > %(B_APT_Min)s)" % self.config + vertex_cut = "(VFASPF(VCHI2) < %(B_VCHI2_Max)s)" \ + "& (BPVVDCHI2>%(B_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(B_BPVDIRA_Min)s)" % self.config + + if is_NC : + comb_cut = comb_cut + "& in_range(%(B0_M_Min)s - 200*MeV, AM, %(B0_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(B0_M_Min)s , M, %(B0_M_Max)s )" % self.config + else: + comb_cut = comb_cut + "& in_range(%(B0SL_M_Min)s - 200*MeV, AM, %(B0SL_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(B0SL_M_Min)s , M, %(B0SL_M_Max)s )" % self.config + + B0 = self.createCombinationSel(OutputList = "B02DPiPiPi_" + line_name, + DecayDescriptor = "[B~0 -> D+ pi+ pi- pi-]cc", + DaughterLists = [charmed_meson, self.selPion, self.selPion, self.selPion], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + B0Line = StrippingLine( line_name, + prescale = prescale, + selection = B0, + EnableFlavourTagging = False ) + return B0Line + + def makeBpLine(self, line_name, prescale, charmed_meson, is_NC = False): + comb_cut = "(ADOCA(2,3) < %(Dp_ADOCAMAX_Max)s) & (ADOCA(2,4) < %(Dp_ADOCAMAX_Max)s)"\ + "& (AP > %(B_AP_Min)s)"\ + "& (APT > %(B_APT_Min)s)" % self.config + vertex_cut = "(VFASPF(VCHI2) < %(B_VCHI2_Max)s)" \ + "& (BPVVDCHI2>%(B_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(B_BPVDIRA_Min)s)" % self.config + + if is_NC : + comb_cut = comb_cut + "& in_range(%(Bp_M_Min)s - 200*MeV, AM, %(Bp_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(Bp_M_Min)s , M, %(Bp_M_Max)s )" % self.config + else: + comb_cut = comb_cut + "& in_range(%(BpSL_M_Min)s - 200*MeV, AM, %(BpSL_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(BpSL_M_Min)s , M, %(BpSL_M_Max)s )" % self.config + + Bp = self.createCombinationSel(OutputList = "B2D0PiPiPi_" + line_name, + DecayDescriptor = ["B- -> D0 pi+ pi- pi-", "B- -> D~0 pi+ pi- pi-", "B- -> D0 pi- pi+ pi+", "B- -> D~0 pi- pi+ pi+"], + DaughterLists = [charmed_meson, self.selPion, self.selPion, self.selPion], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + BpLine = StrippingLine( line_name, + prescale = prescale, + selection = Bp, + EnableFlavourTagging = False ) + return BpLine + + def makeB0WSLine(self, line_name, prescale, charmed_meson, is_NC = False): + comb_cut = "(ADOCA(2,3) < %(Dp_ADOCAMAX_Max)s) & (ADOCA(2,4) < %(Dp_ADOCAMAX_Max)s)"\ + "& (AP > %(B_AP_Min)s)"\ + "& (APT > %(B_APT_Min)s)" % self.config + vertex_cut = "(VFASPF(VCHI2) < %(B_VCHI2_Max)s)" \ + "& (BPVVDCHI2>%(B_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(B_BPVDIRA_Min)s)" % self.config + if is_NC : + comb_cut = comb_cut + "& in_range(%(B0_M_Min)s - 200*MeV, AM, %(B0_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(B0_M_Min)s , M, %(B0_M_Max)s )" % self.config + else: + comb_cut = comb_cut + "& in_range(%(B0SL_M_Min)s - 200*MeV, AM, %(B0SL_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(B0SL_M_Min)s , M, %(B0SL_M_Max)s )" % self.config + + WS_descriptors=[ + "B0 -> D+ pi+ pi+ pi+", + "B0 -> D- pi- pi- pi-", + "B0 -> D+ pi- pi- pi-", + "B0 -> D- pi+ pi+ pi+", + "B0 -> D+ pi+ pi+ pi-", + "B0 -> D- pi- pi- pi+", + ] + + B0 = self.createCombinationSel(OutputList = "B02DPiPiPi_" + line_name, + DecayDescriptor = WS_descriptors, + DaughterLists = [charmed_meson, self.selPion, self.selPion, self.selPion], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + B0Line = StrippingLine( line_name, + prescale = prescale, + selection = B0, + EnableFlavourTagging = False ) + return B0Line + + def makeBpWSLine(self, line_name, prescale, charmed_meson, is_NC = False): + comb_cut = "(ADOCA(2,3) < %(Dp_ADOCAMAX_Max)s) & (ADOCA(2,4) < %(Dp_ADOCAMAX_Max)s)"\ + "& (AP > %(B_AP_Min)s)"\ + "& (APT > %(B_APT_Min)s)" % self.config + vertex_cut = "(VFASPF(VCHI2) < %(B_VCHI2_Max)s)" \ + "& (BPVVDCHI2>%(B_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(B_BPVDIRA_Min)s)" % self.config + if is_NC : + comb_cut = comb_cut + "& in_range(%(Bp_M_Min)s - 200*MeV, AM, %(Bp_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(Bp_M_Min)s , M, %(Bp_M_Max)s )" % self.config + else: + comb_cut = comb_cut + "& in_range(%(BpSL_M_Min)s - 200*MeV, AM, %(BpSL_M_Max)s + 200*MeV)" % self.config + vertex_cut = vertex_cut + "& in_range(%(BpSL_M_Min)s , M, %(BpSL_M_Max)s )" % self.config + + WS_descriptors=[ + "B- -> D0 pi+ pi+ pi+", + "B- -> D~0 pi- pi- pi-", + "B- -> D0 pi- pi- pi-", + "B- -> D~0 pi+ pi+ pi+", + ] + + Bp = self.createCombinationSel(OutputList = "B2D0PiPiPi_" + line_name, + DecayDescriptor = WS_descriptors, + DaughterLists = [charmed_meson, self.selPion, self.selPion, self.selPion], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + BpLine = StrippingLine( line_name, + prescale = prescale, + selection = Bp, + EnableFlavourTagging = False ) + return BpLine + + + ##------------------------------------------------------------------------------------------ + ## -------------------- Begin to DpSL ------------ + def makeDmesonSL( self ): + + _strCutCombfor = "(AMINCHILD(MIPCHI2DV(PRIMARY))>%(Dp_Daug_1of3_MIPCHI2DV_Min)s)" \ + "& (ADOCAMAX('')<%(Dp_ADOCAMAX_Max)s)" \ + "& (AP>%(Dp_AP_Min)s)" \ + "& (APT>%(Dp_APT_Min)s)" % self.config + + _strCutMothfor = "(VFASPF(VCHI2) < %(Dp_VCHI2_Max)s)" \ + "& (BPVVDCHI2>%(Dp_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(Dp_BPVDIRA_Min)s)" % self.config + + _strCutComb_Mass_Dp = "(AM>0.9*%(Dp_ADMASS_Min)s) & (AM<1.1*%(Dp_ADMASS_Max)s)" % self.config + _strCutMoth_Mass_Dp = "(M>%(Dp_ADMASS_Min)s) & (M<%(Dp_ADMASS_Max)s)" % self.config + _strCutComb_Mass_D0 = "(AM>0.9*%(D0_ADMASS_Min)s) & (AM<1.1*%(D0_ADMASS_Max)s)" % self.config + _strCutMoth_Mass_D0 = "(M>%(D0_ADMASS_Min)s) & (M<%(D0_ADMASS_Max)s)" % self.config + + _strCutComb_Mass_D0_with_neutral = "(AM>0.9*%(D0_ADMASS_Min)s) & (AM<1.1*%(D0_ADMASS_Max)s)" % self.config + _strCutMoth_Mass_D0_with_neutral = "(M>%(D0_ADMASS_Min)s - 100*MeV) & (M<%(D0_ADMASS_Max)s + 100*MeV)" % self.config + + _strCutComb_Dp = _strCutCombfor + '&' + _strCutComb_Mass_Dp + _strCutMoth_Dp = _strCutMothfor + '&' + _strCutMoth_Mass_Dp + _strCutComb_D0 = _strCutCombfor + '&' + _strCutComb_Mass_D0 + _strCutMoth_D0 = _strCutMothfor + '&' + _strCutMoth_Mass_D0 + + _strCutComb_D0_with_neutral = _strCutCombfor + '&' + _strCutComb_Mass_D0_with_neutral + _strCutMoth_D0_with_neutral = _strCutMothfor + '&' + _strCutMoth_Mass_D0_with_neutral + + _strCutComb_MassKKMuSL = "(AM>%(KKMu_AM_Min)s) & (AM<%(DpSL_AM_Max)s)" % self.config + _strCutComb_MassPiPiMuSL = "(AM>%(PiPiMu_AM_Min)s) & (AM<%(DpSL_AM_Max)s)" % self.config + _strCutComb_MassPiPiPiMuSL = "(AM>%(PiPiPiMu_AM_Min)s) & (AM<%(D0SL_AM_Max)s)" % self.config + _strCutComb_MassPiKKMuSL = "(AM>%(PiKKMu_AM_Min)s) & (AM<%(D0SL_AM_Max)s)" % self.config + _strCutComb_MassEtaPiMuSL = "(AM>%(EtaPiMu_AM_Min)s) & (AM<%(D0SL_AM_Max)s)" % self.config + + _strCutComb_KKMuSL = _strCutCombfor + '&' + _strCutComb_MassKKMuSL + _strCutComb_PiPiMuSL = _strCutCombfor + '&' + _strCutComb_MassPiPiMuSL + _strCutComb_PiPiPiMuSL = _strCutCombfor + '&' + _strCutComb_MassPiPiPiMuSL + _strCutComb_PiKKMuSL = _strCutCombfor + '&' + _strCutComb_MassPiKKMuSL + _strCutComb_EtaPiMuSL = _strCutCombfor + '&' + _strCutComb_MassEtaPiMuSL + _strCutMothSL = _strCutMothfor + + ''' Stripping D+ -> K+ K- mu+ ''' + KKMuNu = self.createCombinationSel(OutputList = "D2KKMuNu" + self.name, + DecayDescriptor = "[D+ -> K+ K- mu+]cc", + DaughterLists = [self.selKaon, self.selKaon,self.selMuon], + PreVertexCuts = _strCutComb_KKMuSL, + PostVertexCuts = _strCutMothSL ) + + self.registerLine(self.makeB0Line( + line_name=self.name + "B02DPiPiPiD2KKMuNuFromBLine", + prescale=self.config['signalPrescaleViaD2KKmunu'], + charmed_meson=KKMuNu + )) + self.registerLine(self.makeB0WSLine( + line_name=self.name + "B02DPiPiPiD2KKMuNuFromBWSLine", + prescale=self.config['signalPrescaleViaD2KKmunu'], + charmed_meson=KKMuNu + )) + + ''' Stripping D+ -> pi+ pi- mu+ ''' + PiPiMuNu = self.createCombinationSel(OutputList = "D2PiPiMuNu" + self.name, + DecayDescriptor = "[D+ -> pi+ pi- mu+]cc", + DaughterLists = [self.selPion, self.selPion,self.selMuon], + PreVertexCuts = _strCutComb_PiPiMuSL, + PostVertexCuts = _strCutMothSL ) + self.registerLine(self.makeB0Line( + line_name=self.name + "B02DPiPiPiD2PiPiMuNuFromBLine", + prescale=self.config['signalPrescaleViaD2pipimunu'], + charmed_meson=PiPiMuNu + )) + self.registerLine(self.makeB0WSLine( + line_name=self.name + "B02DPiPiPiD2PiPiMuNuFromBWSLine", + prescale=self.config['signalPrescaleViaD2pipimunu'], + charmed_meson=PiPiMuNu + )) + + ''' Stripping D0 -> pi- pi+ pi- mu+ ''' + PiPiPiMuNu = self.createCombinationSel(OutputList = "D02PiPiPiMuNu" + self.name, + DecayDescriptor = "[D0 -> pi- pi- pi+ mu+]cc", + DaughterLists = [self.selPion, self.selPion, self.selPion, self.selMuon], + PreVertexCuts = _strCutComb_PiPiPiMuSL, + PostVertexCuts = _strCutMothSL ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02PiPiPiMuNuFromBLine", + prescale=self.config['signalPrescaleViaD02pipipimunu'], + charmed_meson=PiPiPiMuNu + )) + self.registerLine(self.makeBpWSLine( + line_name=self.name + "B2D0PiPiPiD02PiPiPiMuNuFromBWSLine", + prescale=self.config['signalPrescaleViaD02pipipimunu'], + charmed_meson=PiPiPiMuNu + )) + + ''' Stripping D0 -> pi- K+ K- mu+ ''' + PiKKMuNu = self.createCombinationSel(OutputList = "D02PiKKMuNu" + self.name, + DecayDescriptor = "[D0 -> pi- K+ K- mu+]cc", + DaughterLists = [self.selPion, self.selKaon, self.selKaon, self.selMuon], + PreVertexCuts = _strCutComb_PiKKMuSL, + PostVertexCuts = _strCutMothSL ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02PiKKMuNuFromBLine", + prescale=self.config['signalPrescaleViaD02KKpimunu'], + charmed_meson=PiKKMuNu + )) + self.registerLine(self.makeBpWSLine( + line_name=self.name + "B2D0PiPiPiD02PiKKMuNuFromBWSLine", + prescale=self.config['signalPrescaleViaD02KKpimunu'], + charmed_meson=PiKKMuNu + )) + + ''' Stripping D0 -> eta pi- mu+, eta -> pi+ pi- pi0 ''' + EtaPiMuNuEta2PiPiPi0 = self.createCombinationSel(OutputList = "D02EtaPiMuNu_Eta2PiPi0" + self.name, + DecayDescriptor = "[D0 -> eta pi- mu+]cc", + DaughterLists = [self.Eta2PiPiPi0, self.selPion, self.selMuon], + PreVertexCuts = _strCutComb_EtaPiMuSL, + PostVertexCuts = _strCutMothSL ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiMuNuEta2PiPiPi0FromBLine", + prescale=self.config['signalPrescaleViaD02etapimunu'], + charmed_meson=EtaPiMuNuEta2PiPiPi0 + )) + self.registerLine(self.makeBpWSLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiMuNuEta2PiPiPi0FromBWSLine", + prescale=self.config['signalPrescaleViaD02etapimunu'], + charmed_meson=EtaPiMuNuEta2PiPiPi0 + )) + + ''' Stripping D0 -> eta pi- mu+, eta -> pi+ pi- gamma ''' + EtaPiMuNuEta2PiPiGamma = self.createCombinationSel(OutputList = "D02EtaPiMuNu_Eta2PiPiGamma" + self.name, + DecayDescriptor = "[D0 -> eta pi- mu+]cc", + DaughterLists = [self.Eta2PiPiGamma, self.selPion, self.selMuon], + PreVertexCuts = _strCutComb_EtaPiMuSL, + PostVertexCuts = _strCutMothSL ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiMuNuEta2PiPiGammaFromBLine", + prescale=self.config['signalPrescaleViaD02etapimunu'], + charmed_meson=EtaPiMuNuEta2PiPiGamma + )) + self.registerLine(self.makeBpWSLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiMuNuEta2PiPiGammaFromBWSLine", + prescale=self.config['signalPrescaleViaD02etapimunu'], + charmed_meson=EtaPiMuNuEta2PiPiGamma + )) + + ''' ---------------------- ''' + ''' Normalization channels ''' + ''' ---------------------- ''' + ''' NC Stripping D+ -> K+ K- pi+ ''' + D2KKPiNC = self.createCombinationSel(OutputList = "D2KKPiNC" + self.name, + DecayDescriptor = "[D+ -> K+ K- pi+]cc", + DaughterLists = [self.selKaon, self.selKaon,self.selPion], + PreVertexCuts = _strCutComb_Dp, + PostVertexCuts = _strCutMoth_Dp ) + + self.registerLine(self.makeB0Line( + line_name=self.name + "B02DPiPiPiD2KKPiNCFromBLine", + prescale=self.config['controlPrescaleViaD2KKpi'], + charmed_meson=D2KKPiNC, + is_NC=True + )) + + ''' NC Stripping D+ -> pi+ pi+ pi-''' + D2PiPiPiNC = self.createCombinationSel(OutputList = "D2PiPiPiNC" + self.name, + DecayDescriptor = "[D+ -> pi+ pi+ pi-]cc", + DaughterLists = [self.selPion, self.selPion,self.selPion], + PreVertexCuts = _strCutComb_Dp, + PostVertexCuts = _strCutMoth_Dp ) + + self.registerLine(self.makeB0Line( + line_name=self.name + "B02DPiPiPiD2PiPiPiNCFromBLine", + prescale=self.config['controlPrescaleViaD2pipipi'], + charmed_meson=D2PiPiPiNC, + is_NC=True + )) + + ''' NC Stripping D0 -> pi+ pi+ pi- pi-''' + D2PiPiPiPiNC = self.createCombinationSel(OutputList = "D02PiPiPiPiNC" + self.name, + DecayDescriptor = "[D0 -> pi+ pi+ pi- pi-]cc", + DaughterLists = [self.selPion, self.selPion,self.selPion, self.selPion], + PreVertexCuts = _strCutComb_D0, + PostVertexCuts = _strCutMoth_D0 ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02PiPiPiPiNCFromBLine", + prescale=self.config['controlPrescaleViaD02pipipipi'], + charmed_meson=D2PiPiPiPiNC, + is_NC=True + )) + + + ''' NC Stripping D0 -> K+ K- pi+ pi-''' + D2KKPiPiNC = self.createCombinationSel(OutputList = "D02KKPiPiNC" + self.name, + DecayDescriptor = "[D0 -> K+ K- pi+ pi-]cc", + DaughterLists = [self.selKaon, self.selKaon,self.selPion, self.selPion], + PreVertexCuts = _strCutComb_D0, + PostVertexCuts = _strCutMoth_D0 ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02PiPiKKNCFromBLine", + prescale=self.config['controlPrescaleViaD02KKpipi'], + charmed_meson=D2KKPiPiNC, + is_NC=True + )) + + '''NC Stripping D0 -> eta pi+ pi-, eta -> pi+ pi- pi0 ''' + EtaPiPiEta2PiPiPi0NC = self.createCombinationSel(OutputList = "D02EtaPiPi_Eta2PiPiPi0NC" + self.name, + DecayDescriptor = "[D0 -> eta pi+ pi-]cc", + DaughterLists = [self.Eta2PiPiPi0, self.selPion, self.selPion], + PreVertexCuts = _strCutComb_D0_with_neutral, + PostVertexCuts = _strCutMoth_D0_with_neutral ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiPiEta2PiPiPi0NCFromBLine", + prescale=self.config['controlPrescaleViaD02etapipi'], + charmed_meson=EtaPiPiEta2PiPiPi0NC, + is_NC=True + )) + + '''NC Stripping D0 -> eta pi+ pi-, eta -> pi+ pi- gamma ''' + EtaPiPiEta2PiPiGammaNC = self.createCombinationSel(OutputList = "D02EtaPiPi_Eta2PiPiGammaNC" + self.name, + DecayDescriptor = "[D0 -> eta pi+ pi-]cc", + DaughterLists = [self.Eta2PiPiGamma, self.selPion, self.selPion], + PreVertexCuts = _strCutComb_D0_with_neutral, + PostVertexCuts = _strCutMoth_D0_with_neutral ) + + self.registerLine(self.makeBpLine( + line_name=self.name + "B2D0PiPiPiD02EtaPiPiEta2PiPiGammaNCFromBLine", + prescale=self.config['controlPrescaleViaD02etapipi'], + charmed_meson=EtaPiPiEta2PiPiGammaNC, + is_NC=True + )) + + ## -------------------- End of DpSL ------------ + ##------------------------------------------------------------------------------------------ + def makeEta(self): + #get standard containers + self.Pi0List = DataOnDemand(Location = "Phys/StdLoosePi02gg/Particles") + self.GammaList = DataOnDemand(Location = "Phys/StdLooseAllPhotons/Particles") + self.LoosePionList = DataOnDemand(Location = "Phys/StdLoosePions/Particles") + + #clean neutrals + _tightpi0_cut = "(CHILD(CL,1)>0.05) & (CHILD(CL,2)>0.05) & (PT>1*GeV)" + _tightgamma_cut = "(CL>0.05) & (PT>500*MeV)" + + #pipi vertex cuts + _pipix_cut = "(BPVVDZ>0) & (VFASPF(VCHI2)<9) & (BPVDIRA>0.95) & (BPVVDCHI2>25)" + + #pipix0 cuts + _eta_cut = "(ADAMASS('eta')<100*MeV) & (APT>1500*MeV)" + + #filter standard containers + self.TightPi0List = self.createSubSel( OutputList = self.name + '_TightPi0', InputList = self.Pi0List, Cuts = _tightpi0_cut) + self.TightGammaList = self.createSubSel( OutputList = self.name + '_TightGamma', InputList = self.GammaList, Cuts = _tightgamma_cut) + + #------------- + + self.Eta2PiPiPi0 = self.createCombinationSel( OutputList = self.name + "_Eta2PiPiPi0", + DecayDescriptor = "eta -> pi+ pi- pi0", + DaughterLists = [ self.LoosePionList, self.TightPi0List], + PreVertexCuts = _eta_cut, + PostVertexCuts = _pipix_cut) + #------------- + + self.Eta2PiPiGamma = self.createCombinationSel( OutputList = self.name + "_Eta2PiPiGamma", + DecayDescriptor = "eta -> pi+ pi- gamma", + DaughterLists = [ self.LoosePionList, self.TightGammaList], + PreVertexCuts = _eta_cut, + PostVertexCuts = _pipix_cut ) + + ########################################################################## + ## Basic Function + ########################################################################## + def createSubSel( self, OutputList, InputList, Cuts ) : + '''create a selection using a FilterDesktop''' + filter = FilterDesktop(Code = Cuts) + return Selection( OutputList, + Algorithm = filter, + RequiredSelections = [ InputList ] ) + + def createCombinationSel( self, OutputList, + DecayDescriptor, + DaughterLists, + DaughterCuts = {} , + PreVertexCuts = "ALL", + PostVertexCuts = "ALL") : + '''create a selection using a ParticleCombiner with a single decay descriptor''' + if type(DecayDescriptor) is list: + combiner = CombineParticles( DecayDescriptors = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + else: + combiner = CombineParticles( DecayDescriptor = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + #print "DEBUG here is :",__file__,sys._getframe().f_lineno diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingDstarD02ETau.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingDstarD02ETau.py new file mode 100644 index 0000000000000000000000000000000000000000..1a94d9d54ecf5eaaac5f5214edc5db97eae1cc44 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingDstarD02ETau.py @@ -0,0 +1,488 @@ +############################################################################### +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +# +__author__ = 'Michele Atzeni, Eluned Anne Smith' +__date__ = '2023/06/30' +__version__ = '$Revision: 1.0 $' +__all__ = ('StrippingDstarD02ETauConf', + 'default_config') +#from Gaudi.Configuration import * +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from PhysSelPython.Wrappers import Selection, DataOnDemand +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from StandardParticles import StdNoPIDsPions, StdAllLooseElectrons, StdLooseKaons +from Configurables import TisTosParticleTagger +''' + Stripping for: + Opposite Sign of the leptons (OS) + - D*(2010)+ -> pi+ (D0-> tau+ -> (pi+ pi- pi+ anti-nu_tau) e-) + - D*(2010)+ -> pi+ (D0-> tau- -> (pi+ pi- pi+ nu_tau) e+) + Same Sign of the leptons (SS) + - D*(2010)+ -> pi+ (D0-> tau+ -> (pi+ pi- pi+ anti-nu_tau) e+) + - D*(2010)+ -> pi+ (D0-> tau- -> (pi- pi+ pi- nu_tau) e-) + Control mode OS: + - D*(2010)+ -> pi+ (D0-> pi+ pi- pi+ K-) + Control mode SS: + - D*(2010)+ -> pi+ (D0-> pi+ pi- pi+ K+) +''' + +default_name = "DstarD02ETau" + +default_config = {'NAME': 'DstarD02ETau', + 'WGs': ['Charm'], + 'BUILDERTYPE': 'StrippingDstarD02ETauConf', + 'STREAMS': ['Charm'], + 'CONFIG': {'PrescaleETauBox': 1., + 'PrescaleETauSSBox': 1., + 'PrescaleK3piBox': 0.025, # needed to keep the rates compatible with DST + 'PrescaleK3piSSBox': 0.025, # needed to keep the rates compatible with DST + 'prefix': '', + 'CUTBASED_M_B': '2865', # MeV + 'CUTBASED_MCORR_B_HIGH': '8600', # MeV + 'CUTBASED_MCORR_B_LOW': '3600', # MeV + 'CUTBASED_MISS_MASS': '876', # MeV + 'CUTBASED_M_TAU_HIGH': '1592', # MeV + 'CUTBASED_M_TAU_LOW': '829', # MeV + 'CUTBASED_M_B': '2865', # MeV + 'CUTBASED_MCORR_B_HIGH': '8600', # MeV + 'CUTBASED_MCORR_B_LOW': '3600', # MeV + 'CUTBASED_MISS_MASS': '876', # MeV + 'HLT_DECISIONS_HAD': {'Hlt2Topo(2|3|4)Body.*Decision%TOS': 0}, + # + 'P_THREE_PI': "500", # MeV + 'PT_THREE_PI': "110", # MeV + 'TRACKCHI2_THREE_PI': "4", # dimensionless + 'TRGHOPROB_THREE_PI': "0.4", # dimensionless + 'MINIPCHI2BPV_THREE_PI': "16", # dimensionless + 'CUTBASED_PROBNNPI_THREE_PI': '0.5', #to reduce rate + 'PROBNNGHOST_THREE_PI': '0.4', + # tau + 'TAU_M_LOW_COMB': "400", # MeV + 'TAU_M_HIGH_COMB': "2100", # MeV + 'TAU_AMAXDOCA_PIS': "0.2", # mm + 'TAU_PT': "700.", # MeV + 'TAU_M_LOW': "400", # MeV + 'TAU_M_HIGH': "2100", # MeV + 'TAU_BPVDIRA': "-1.", + 'CUTBASED_TAU_BPVVDRHO_LOW': "0.05", # mm + 'CUTBASED_TAU_BPVVDRHO_HIGH': "7", # mm + 'CUTBASED_TAU_BPVVDZ': "0.5", # mm + 'CUTBASED_TAU_VCHI2': "16", + 'CUTBASED_TAU_BPVVDCHI2': "16", # mm + # Electron + 'P_E': "0", # MeV + 'PT_E': "110", # MeV + 'TRACKCHI2_E': "4", # dimensionless + 'TRGHOPROB_E': "0.4", # dimensionless + 'MINIPCHI2BPV_E': "16", # dimensionless + 'CUTBASED_PROBNNE_E': '0.1', #dimensionless + 'PROBNNGHOST_E': '0.4', #dimensionless + #Kaon for CM + 'CUTBASED_PROBNNK_K': '0.2', #dimensionless + # D0 + 'P_D0': "2000", # MeV + 'PT_D0': "1000", # MeV + 'MINIPCHI2PV_D0': "50", # dimensionless + 'CUTBASED_M_D0_LOW': '500', # MeV + 'CUTBASED_M_D0_HIGH': '2000', # MeV + 'CUTBASED_MCORR_D0_LOW': '1000', # MeV + 'CUTBASED_MCORR_D0_HIGH': '8000', # MeV + 'CUTBASED_MISS_MASS_LOW': '0', # MeV + 'CUTBASED_MISS_MASS_HIGH': '250', # MeV + 'CUTBASED_MISS_MASS_HIGH_KTHREEPI': '1500', # MeV + 'CUTBASED_TAU_TAU_LOW': '-2.5', # ps + 'CUTBASED_TAU_TAU_HIGH': '3', # ps + 'CUTBASED_TAU_BPVVDRHO': '0.33', # mm + 'CUTBASED_VCHI2_TAU': '20.6', # dimensionless + 'CUTBASED_M_TAU_HIGH': '1592', # MeV + # Dstm + 'DstD0DMWin_LOW': "-10.", # MeV + 'DstD0DMWin_HIGH': "100.", # MeV + 'DstmVtxChi2': "10.", # dimensionless + 'DstMassWin_LOW': "-1250.", # MeV + 'DstMassWin_HIGH': "100.", # MeV + 'PT_PI_FROM_DTSM': "110", # MeV + 'TRACKCHI2_PI_FROM_DTSM': "7", # dimensionless + 'MINIPCHI2BPV_PI_FROM_DTSM': "10", # dimensionles + # Isolations + 'ConeAngles': {"08": 0.8, "10": 1.0, "12": 1.2, "14": 1.4}, + 'ConeVariables': ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'], + 'RelInfoTools_D02ETau': [ + {"Type": "RelInfoVertexIsolation", + "Location": "DstVars_VertexIsoInfo", + "DaughterLocations": {"[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_VertexIsoInfo", + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_VertexIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_VertexIsoInfo", + }}, + {"Type": "RelInfoConeIsolation", + "ConeSize": 0.5, + "Variables": [], + "Location": "DstVars_ConeIsoInfo", + "DaughterLocations": {"[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_ConeIsoInfo", + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_ConeIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_ConeIsoInfo", + }}, + ], + 'RelInfoTools_D02K3pi': [ + {"Type": "RelInfoVertexIsolation", + "Location": "DstVars_VertexIsoInfo", + "DaughterLocations": {"[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_VertexIsoInfo", + }}, + {"Type": "RelInfoConeIsolation", + "ConeSize": 0.5, + "Variables": [], + "Location": "DstVars_ConeIsoInfo", + "DaughterLocations": {"[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_ConeIsoInfo", + }}, + ] + } + } + + +class StrippingDstarD02ETauConf(LineBuilder): + """ + Builder for D*(2010)+ -> pi+ (D0-> tau+ (-> pi+ pi- pi+ anti_nutau) e-) stripping lines + """ + + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config): + LineBuilder.__init__(self, name, config) + # Declare line + line_taue_OS_box = self.baseLineETau(name, config, same_sign=False) + line_taue_SS_box = self.baseLineETau(name, config, same_sign=True) + line_K3pi_OS_box = self.baseLineK3pi(name, config, same_sign=False) + line_K3pi_SS_box = self.baseLineK3pi(name, config, same_sign=True) + lines_to_be = [line_taue_OS_box, line_taue_SS_box, + line_K3pi_OS_box, line_K3pi_SS_box, + ] + # register line + for i in lines_to_be: + self.registerLine(i) + + def baseLineETau(self, name, config, same_sign=False): + """ + Returns the stripping line for the decay + D*(2010)+ -> pi+ (D0-> tau+ (-> pi+ pi- pi+ anti_nutau) e-) + and the decay with tau and electron with the same charge + """ + # Define the taus + name += "_SS" if same_sign else "" + combname = "ETauSS" if same_sign else "ETau" + selTau = self._makeTau_3pi(name="Tau_3piFor"+name, + pionSel=self._makePions4Tau23pi( + "3PionSelFor"+name, config), + config=config) + # Define the electron + # TODO: Should we also include Upstream electrons, as it is done for the pions? + selElectrons = self._makeElectrons(name="ElectronsFor"+name, + config=config) + # Combine Tau and Electron to make the D0 + if same_sign: + selD02ETau_3pi = self._makeD02ETau_3pi(name=name, + tauSel=selTau, + eleSel=selElectrons, + config=config, + DecayDescriptors=["[D0 -> tau+ e+]cc", "[D0 -> tau- e-]cc"]) + else: + selD02ETau_3pi = self._makeD02ETau_3pi(name=name, + tauSel=selTau, + eleSel=selElectrons, + config=config, + DecayDescriptors=["[D0 -> tau+ e-]cc", "[D0 -> tau- e+]cc"]) + xxCombSel = selD02ETau_3pi + + # Combine D0 and pion to make a Dstm + dstar_box = self._makeDstar(config) + dst_req_sel = [DataOnDemand("Phys/StdAllNoPIDsPions/Particles"), + DataOnDemand("Phys/StdNoPIDsUpPions/Particles"), + xxCombSel] + + pres = "Prescale"+combname+"Box" + _tag_sel = Selection(name+"_seq_"+combname+"_box", + Algorithm=dstar_box, + RequiredSelections=dst_req_sel) + # Add isolation variables + for conekey, coneitem in (config['ConeAngles']).iteritems(): + config['RelInfoTools_D02ETau'].append({ + 'Type': 'RelInfoConeVariables', 'ConeAngle': coneitem, 'Variables': config['ConeVariables'], + 'Location': 'P2CVDst'+conekey, + 'DaughterLocations': { + '[D*(2010)+ -> ^(Charm -> l l ) pi+]CC': 'P2CVD0'+conekey, + '[D*(2010)+ -> (Charm -> l l ) ^pi+]CC': 'P2CVpis'+conekey, + '[D*(2010)+ -> (Charm -> ^l l ) pi+]CC': 'P2CL1'+conekey, + '[D*(2010)+ -> (Charm -> l ^l ) pi+]CC': 'P2CL2'+conekey, + } + }) + # Declare line + line_box = StrippingLine(name+config['prefix']+"Dst2PiD02"+combname+"Box", + prescale=config[pres], + # postscale + MDSTFlag=False, + RelatedInfoTools=config['RelInfoTools_D02ETau'], + algos=[_tag_sel], + MaxCandidates=50 + ) + return line_box + + def baseLineK3pi(self, name, config, same_sign=False): + """ + Returns the stripping line for the decay + D*(2010)+ -> pi+ (D0-> K- pi+ pi- pi+ ) and the decay with the K with + same charge w.r.t. the combination of the three pions + """ + # Define the taus + name += "_CM_SS" if same_sign else "_CM" + combname = "K3piSS" if same_sign else "K3pi" + selPions = self._makePions4Tau23pi("3PionSelFor"+name, config) + # TODO: align with electron in case we include Upstream + selKaon = self._makeKaons("KaonSelFor"+name, config) + + # Combine Tau and Electron to make the D0 + if same_sign: + selD02ETau_3pi = self._makeD02K3pi(name=name, + piSel=selPions, + KSel=selKaon, + config=config, + DecayDescriptors=["[D0 -> K+ pi+ pi- pi+]cc"]) + else: + selD02ETau_3pi = self._makeD02K3pi(name=name, + piSel=selPions, + KSel=selKaon, + config=config, + DecayDescriptors=["[D0 -> K- pi+ pi- pi+]cc"]) + xxCombSel = selD02ETau_3pi + + # Combine D0 and pion to make a Dstm + dstar_box = self._makeDstar(config) + dst_req_sel = [DataOnDemand("Phys/StdAllNoPIDsPions/Particles"), + DataOnDemand("Phys/StdNoPIDsUpPions/Particles"), + xxCombSel] + + pres = "Prescale"+combname+"Box" + _tag_sel = Selection(name+"_seq_"+combname+"_box", + Algorithm=dstar_box, + RequiredSelections=dst_req_sel) + + for conekey, coneitem in (config['ConeAngles']).iteritems(): + config['RelInfoTools_D02K3pi'].append({ + 'Type': 'RelInfoConeVariables', + 'ConeAngle': coneitem, + 'Variables': config['ConeVariables'], + 'Location': 'P2CVDst'+conekey, + 'DaughterLocations': { + '[D*(2010)+ -> ^(Charm -> X X X X ) pi+]CC': 'P2CVD0'+conekey, + '[D*(2010)+ -> (Charm -> X X X X) ^pi+]CC': 'P2CVpis'+conekey, } + }) + + # Declare line + line_box = StrippingLine(name+config['prefix']+"Dst2PiD02"+combname+"Box", + prescale=config[pres], + # postscale + MDSTFlag=False, + RelatedInfoTools=config['RelInfoTools_D02K3pi'], + algos=[_tag_sel], + MaxCandidates=50 + ) + return line_box + + #################################################### + def _makeElectrons(self, name, config): + """ + Electron selection + """ + _code = self._eFinalStateKinematicCuts(config) + #to reduce rate + _code += " & (PROBNNghost < "+config['PROBNNGHOST_E'] + \ + ") & (PROBNNe > " + config['CUTBASED_PROBNNE_E'] + ")" + _Filter = FilterDesktop(Code=_code) + + return Selection(name, + Algorithm=_Filter, + RequiredSelections=[StdAllLooseElectrons]) + #################################################### + + def _makeKaons(self, name, config): + """ + Kaons selection + """ + _code = self._kaonsFinalStateKinematicCuts(config) + _code += " & (PROBNNghost < "+config['PROBNNGHOST_E'] + \ + ") & (PROBNNk > " + config['CUTBASED_PROBNNK_K'] + ")" + _Filter = FilterDesktop(Code=_code) + + return Selection(name, + Algorithm=_Filter, + RequiredSelections=[StdLooseKaons]) + + ##################################################### + def _eFinalStateKinematicCuts(self, config): + _code = "(P > " + config['P_E'] + "*MeV) & "\ + "(PT > " + config['PT_E'] + "*MeV) & "\ + "(MIPCHI2DV(PRIMARY) > " + config['MINIPCHI2BPV_E'] + ") & "\ + "(TRCHI2DOF < " + config['TRACKCHI2_E'] + ") & "\ + "(TRGHOSTPROB < " + config['TRGHOPROB_E'] + ") " + return _code + ########################################################### + + def _kaonsFinalStateKinematicCuts(self, config): + # keep aligned to electron + _code = "(P > " + config['P_E'] + "*MeV) & "\ + "(PT > " + config['PT_E'] + "*MeV) & "\ + "(MIPCHI2DV(PRIMARY) > " + config['MINIPCHI2BPV_E'] + ") & "\ + "(TRCHI2DOF < " + config['TRACKCHI2_E'] + ") & "\ + "(TRGHOSTPROB < " + config['TRGHOPROB_E'] + ") " + # _code = "(P > 0 )" + return _code + ############################################################# + + def _makeTau_3pi(self, name, pionSel, config): + + # Minimum mass = 3 pions (140 MeV) = 420 MeV + # This is a variation of the StdTightDetachedTau3pi in https://gitlab.cern.ch/lhcb/Stripping/-/blob/2018-patches/Phys/CommonParticlesArchive/python/CommonParticlesArchive/Stripping28r2p1/CommonParticles/StdTightDetachedTau.py + _preambulo = [""] + _combcut = "(APT>500.*MeV) & ((AM>"+config['TAU_M_LOW_COMB'] + "*MeV)"\ + " & (AM<"+config['TAU_M_HIGH_COMB'] + "*MeV)) "\ + " & (AMAXDOCA('')<"+config['TAU_AMAXDOCA_PIS'] + "*mm)"\ + " & (ANUM(PT > 500*MeV) >= 1)" + _mcut = "(PT>"+config['TAU_PT'] + "*MeV) & (M>"+config['TAU_M_LOW'] + "*MeV)"\ + "& (M<"+config['TAU_M_HIGH'] + "*MeV) & (BPVDIRA>"+config['TAU_BPVDIRA'] + ")"\ + "& (VFASPF(VCHI2) < " + config['CUTBASED_TAU_VCHI2'] + ")"\ + "& (BPVVDCHI2>" + config['CUTBASED_TAU_BPVVDCHI2'] + ") "\ + "& (BPVVDRHO>" + config['CUTBASED_TAU_BPVVDRHO_LOW'] + "*mm)"\ + "& (BPVVDRHO<" + config['CUTBASED_TAU_BPVVDRHO_HIGH'] + "*mm)"\ + "& (BPVVDZ>" + config['CUTBASED_TAU_BPVVDZ'] + "*mm)" + + _CombineTau = CombineParticles(DecayDescriptors=["[tau+ -> pi+ pi- pi+]cc"], + CombinationCut=_combcut, + MotherCut=_mcut, + Preambulo=_preambulo) + + return Selection(name, + Algorithm=_CombineTau, + RequiredSelections=[pionSel] + ) + + def _makePions4Tau23pi(self, name, config): + _code = self._hadFinalStateKinematicCuts_3pi(config) + _code += " & (PROBNNghost < "+config['PROBNNGHOST_THREE_PI'] + \ + ") & (PROBNNpi > " + config['CUTBASED_PROBNNPI_THREE_PI'] + ")" + _code += " & (MIPCHI2DV(PRIMARY) > " + \ + config['MINIPCHI2BPV_THREE_PI'] + ")" + _Filter = FilterDesktop(Code=_code) + return Selection(name, + Algorithm=_Filter, + RequiredSelections=[StdNoPIDsPions] + ) + + # Template for combine particles for D* -> D0 pi + def _makeDstar(self, config): + # loosks for all D0s in the decay, returns the largest mass (mass of the D0 since there is only one) and computes the mass difference with the mother + dstcomb_dstcut = "((M-MAXTREE('D0'==ABSID,M)-145.42) < %(DstD0DMWin_HIGH)s *MeV) & ((M-MAXTREE('D0'==ABSID,M)-145.42) > %(DstD0DMWin_LOW)s *MeV) & (VFASPF(VCHI2/VDOF)< %(DstmVtxChi2)s)" + dstcomb_combcut = "( (AM - 2010.26) < %(DstMassWin_HIGH)s * MeV) & ( (AM - 2010.26) > %(DstMassWin_LOW)s * MeV)" + dstcomb_picut = "(PT> %(PT_PI_FROM_DTSM)s * MeV) & ( MIPCHI2DV(PRIMARY)< %(MINIPCHI2BPV_PI_FROM_DTSM)s) & (TRCHI2DOF<%(TRACKCHI2_PI_FROM_DTSM)s) " + #dstcomb_picut += "& (TRGHOSTPROB> %(TRGHOPROB_THREE_PI)s * MeV) & (PROBNNghost> %(PROBNNGHOST_THREE_PI)s * MeV) & (PROBNNpi> %(CUTBASED_PROBNNPI_THREE_PI)s ) " #try to reduce the rate + #dstcomb_picut += "& (TRGHOSTPROB> %(TRGHOPROB_THREE_PI)s * MeV)" # & (PROBNNghost> %(PROBNNGHOST_THREE_PI)s * MeV) " #try to reduce the rate + dstcomb_picut += "& (TRGHOSTPROB< %(TRGHOPROB_THREE_PI)s ) & (PROBNNpi> %(CUTBASED_PROBNNPI_THREE_PI)s) & (PROBNNghost< %(PROBNNGHOST_THREE_PI)s) " #try to reduce the rate + dstcomb_d0cut = "PT>0" + + dstar = CombineParticles(DecayDescriptors=['D*(2010)+ -> D0 pi+', 'D*(2010)- -> D0 pi-'], + DaughtersCuts={"pi+": dstcomb_picut % config, + "D0": dstcomb_d0cut % config + }, + CombinationCut=dstcomb_combcut % config, + MotherCut=dstcomb_dstcut % config + ) + + return dstar + + ################################################## + + def _hadFinalStateKinematicCuts_3pi(self, config): + _code = "(P > " + config['P_THREE_PI'] + "*MeV) & "\ + "(PT > " + config['PT_THREE_PI'] + "*MeV) & "\ + "(TRCHI2DOF < " + config['TRACKCHI2_THREE_PI'] + ") & "\ + "(TRGHOSTPROB < " + config['TRGHOPROB_THREE_PI'] + ") " + + return _code + ################################################## + + def _makeD02ETau_3pi(self, name, tauSel, eleSel, config, DecayDescriptors): + + preambulo = ["PTRANS = P*sqrt( 1-BPVDIRA**2 )", + "MCOR = sqrt(M**2 + PTRANS**2) + PTRANS", + "allpi = ((('pi+') == ABSID) | (('K+') == ABSID)) ", + "sumpt = SUMTREE( allpi , PT )"] + + _combcut = "(AM > 400 *MeV) & "\ + "(AM < 2200 *MeV)" + _mcut = "((CHILD(MIPCHI2DV(PRIMARY),1)) > " + config['MINIPCHI2PV_D0']+") & "\ + "(P > "+config['P_D0']+"*MeV) & (PT > "+config['PT_D0']+"*MeV) & " \ + "(M > " + config['CUTBASED_M_D0_LOW'] + "*MeV) & "\ + "(M < " + config['CUTBASED_M_D0_HIGH'] + "*MeV) & "\ + "(MCOR < " + config['CUTBASED_MCORR_D0_HIGH'] + "*MeV) & "\ + "(MCOR > " + config['CUTBASED_MCORR_D0_LOW'] + "*MeV) & "\ + "(M - CHILD(M,1) - CHILD(M,2) > " + config['CUTBASED_MISS_MASS_LOW'] + "*MeV) & "\ + "(M - CHILD(M,1) - CHILD(M,2) < " + config['CUTBASED_MISS_MASS_HIGH'] + "*MeV) & "\ + "(CHILD(M,1) * (CHILD(VFASPF(VZ),1) - VFASPF(VZ) )/(CHILD(PZ,1) * 0.299792458) < " + config['CUTBASED_TAU_TAU_HIGH'] + ") & "\ + "(CHILD(M,1) * (CHILD(VFASPF(VZ),1) - VFASPF(VZ) )/(CHILD(PZ,1) * 0.299792458) > " + \ + config['CUTBASED_TAU_TAU_LOW'] + ") " + + _CombineTau = CombineParticles(DecayDescriptors=DecayDescriptors, + CombinationCut=_combcut, + MotherCut=_mcut, + Preambulo=preambulo) + + return Selection(name+"_TauE_3pi", + Algorithm=_CombineTau, + RequiredSelections=[tauSel, eleSel]) + + def _makeD02K3pi(self, name, piSel, KSel, config, DecayDescriptors): + + preambulo = ["PTRANS = P*sqrt( 1-BPVDIRA**2 )", + "MCOR = sqrt(M**2 + PTRANS**2) + PTRANS", + "allpi = ((('pi+') == ABSID) | (('K+') == ABSID)) ", + "sumpt = SUMTREE( allpi , PT )", + "THREEPI_PX = (CHILD(PX,2) + CHILD(PX,3) + CHILD(PX,4))", + "THREEPI_PY = (CHILD(PY,2) + CHILD(PY,3) + CHILD(PY,4))", + "THREEPI_PZ = (CHILD(PZ,2) + CHILD(PZ,3) + CHILD(PZ,4))", + "THREEPI_E2 = (CHILD(E,2) + CHILD(E,3) + CHILD(E,4))**2", + "THREEPI_P2 = (THREEPI_PX**2 + THREEPI_PY**2 + THREEPI_PZ**2)", + "THREEPI_M = sqrt(THREEPI_E2 - THREEPI_P2 )"] + + _combcut = "(AM > 400 *MeV) & "\ + "(AM < 2200 *MeV)" + # TODO: The following cut is present in the selection of the LFV channel but not here, might need simulation to understand how the differ w.r.t. CM + # _mcut = "((CHILD(MIPCHI2DV(PRIMARY),1)) > " + config['MINIPCHI2PV_D0']+") & "\ + _mcut = "(P > "+config['P_D0']+"*MeV) & (PT > "+config['PT_D0']+"*MeV) & " \ + "(M > " + config['CUTBASED_M_D0_LOW'] + "*MeV) & "\ + "(M < " + config['CUTBASED_M_D0_HIGH'] + "*MeV) & "\ + "(MCOR < " + config['CUTBASED_MCORR_D0_HIGH'] + "*MeV) & "\ + "(MCOR > " + config['CUTBASED_MCORR_D0_LOW'] + "*MeV) &"\ + "(M - CHILD(M,1) - THREEPI_M > " + config['CUTBASED_MISS_MASS_LOW'] + "*MeV) & "\ + "(M - CHILD(M,1) - THREEPI_M < " + config['CUTBASED_MISS_MASS_HIGH_KTHREEPI'] + "*MeV) "\ + # "(CHILD(M,1) * (CHILD(VFASPF(VZ),1) - VFASPF(VZ) )/(CHILD(PZ,1) * 0.299792458) < " + config['CUTBASED_TAU_TAU_HIGH'] + ") & "\ + # "(CHILD(M,1) * (CHILD(VFASPF(VZ),1) - VFASPF(VZ) )/(CHILD(PZ,1) * 0.299792458) > " + config['CUTBASED_TAU_TAU_LOW'] + ") " + + _CombineTau = CombineParticles(DecayDescriptors=DecayDescriptors, # TOCHECK + CombinationCut=_combcut, + MotherCut=_mcut, + Preambulo=preambulo) + + return Selection(name+"_K3pi", + Algorithm=_CombineTau, + RequiredSelections=[piSel, KSel]) + diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V03H.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V03H.py index d3888168faa1cbed51e85b5dd40fa51f82370dcd..661ed20213155ce9ad69356c5655325efcdf4b45 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V03H.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V03H.py @@ -74,8 +74,8 @@ default_config = { 'Xic_VCHI2VDOF_MAX_LL': 3.0, 'Xic_VCHI2VDOF_MAX_DD': 3.0, # Maximum logIPCHI2. The Lc+/Xic+ come from the PV - 'Lambdac_logIPCHI2_MAX': 5.0, - 'Xic_logIPCHI2_MAX': 5.0, + #'Lambdac_logIPCHI2_MAX': 5.0, + #'Xic_logIPCHI2_MAX': 5.0, # Maximum angle between Lc+ momentum and Lc+ direction of flight 'Lambdac_acosBPVDIRA_MAX_DD': 45.0 * mrad, 'Lambdac_acosBPVDIRA_MAX_LL': 140.0 * mrad, @@ -315,8 +315,7 @@ class StrippingHc2V03HConf(LineBuilder): "& ((CHILD(VFASPF(VZ),1) - VFASPF(VZ)) > {0[LambdaMinFD_LL]})" "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" - "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" - "& (log(MIPCHI2DV(PRIMARY)) < {0[Lambdac_logIPCHI2_MAX]})").format( + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})").format( self.config) lambdacCuts_DD = ( @@ -327,8 +326,7 @@ class StrippingHc2V03HConf(LineBuilder): "& ((CHILD(VFASPF(VZ),1) - VFASPF(VZ)) > {0[LambdaMinFD_DD]})" "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" - "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" - "& (log(MIPCHI2DV(PRIMARY)) < {0[Lambdac_logIPCHI2_MAX]})").format( + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})").format( self.config) comb12Cuts = ("(DAMASS('Lambda_c+') < {0[Comb_ADAMASS_WIN]})" @@ -396,8 +394,7 @@ class StrippingHc2V03HConf(LineBuilder): "& ((CHILD(VFASPF(VZ),1) - VFASPF(VZ)) > {0[LambdaMinFD_LL]})" "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" - "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" - "& (log(MIPCHI2DV(PRIMARY)) < {0[Xic_logIPCHI2_MAX]})").format( + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})").format( self.config) xicCuts_DD = ( @@ -408,8 +405,7 @@ class StrippingHc2V03HConf(LineBuilder): "& ((CHILD(VFASPF(VZ),1) - VFASPF(VZ)) > {0[LambdaMinFD_DD]})" "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" - "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" - "& (log(MIPCHI2DV(PRIMARY)) < {0[Xic_logIPCHI2_MAX]})").format( + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})").format( self.config) comb12Cuts = ("(DAMASS('Xi_c+') < {0[Comb_ADAMASS_WIN]})" diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V2H.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V2H.py index eed2a9e3952f3a83f8d10247e728b256d2299e72..c2cd5e52827681584a26faec3ea7cdd0ee2d706b 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V2H.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V2H.py @@ -16,8 +16,8 @@ In this file the stripping line for this decay is build Throughout this file, 'Bachelor' refers to the children of the Lambda_c+ which is not part of the V- decay. """ -__author__ = ['Andrea Merli','Louis Henry'] -__date__ = '13/10/2017' +__author__ = ['Andrea Merli','Louis Henry', 'Sergio Jaimes'] +__date__ = '26/06/2023' __all__ = ( 'default_config', @@ -27,9 +27,9 @@ __all__ = ( from GaudiKernel.SystemOfUnits import MeV, GeV, mm, mrad from GaudiConfUtils.ConfigurableGenerators import CombineParticles, FilterDesktop, DaVinci__N3BodyDecays from StandardParticles import StdNoPIDsDownPions as InputDownPions -from StandardParticles import StdNoPIDsPions as InputPions -from StandardParticles import StdNoPIDsKaons as InputKaons -from StandardParticles import StdLooseLambdaLL as InputLambdasLL +from StandardParticles import StdAllLoosePions as InputPions +from StandardParticles import StdAllLooseKaons as InputKaons +from StandardParticles import StdVeryLooseLambdaLL as InputLambdasLL from StandardParticles import StdLooseLambdaDD as InputLambdasDD from PhysSelPython.Wrappers import Selection, MergedSelection, DataOnDemand @@ -40,10 +40,12 @@ default_config = { 'NAME': 'Hc2V2H', 'WGs': ['Charm'], 'BUILDERTYPE': 'StrippingHc2V2HConf', - 'STREAMS': ['CharmCompleteEvent'], + 'STREAMS': ['Charm'], 'CONFIG': { # Minimum Lc+ bachelor momentum 'Bach_P_MIN': 2.0*GeV, + # Minimum Lc+ bachelor transverse momentum + 'Bach_PT_MIN': 150 * MeV, # PID of the Lambda proton "ProbNNpMin_LL" : 0.10, "ProbNNpMin_DD" : 0.0, @@ -183,7 +185,7 @@ class StrippingHc2V2HConf(LineBuilder): RequiredSelections = [DataOnDemand(Location = "Phys/StdLooseLambdaDD/Particles")]) self.LambdaListLooseLL = MergedSelection("StdLooseLLLambdaFor" + self.name, - RequiredSelections = [DataOnDemand(Location = "Phys/StdLooseLambdaLL/Particles")]) + RequiredSelections = [DataOnDemand(Location = "Phys/StdVeryLooseLambdaLL/Particles")]) self.LambdaListLL = self.createSubSel(OutputList = "LambdaLLFor" + self.name, InputList = self.LambdaListLooseLL , @@ -407,6 +409,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_LLL]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_LLL]}))" "& (ADMASS('Lambda_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) lambdacCuts_DDL = ( @@ -414,6 +417,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_DDL]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_DDL]}))" "& (ADMASS('Lambda_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) lambdacCuts_DDD = ( @@ -421,6 +425,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_DDD]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_DDD]}))" "& (ADMASS('Lambda_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) comb12Cuts = ( @@ -501,6 +506,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_LLL]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_LLL]}))" "& (ADMASS('Xi_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) xicCuts_DDL = ( @@ -508,6 +514,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_DDL]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_DDL]}))" "& (ADMASS('Xi_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) xicCuts_DDD = ( @@ -515,6 +522,7 @@ class StrippingHc2V2HConf(LineBuilder): "& ({0[Hc_PVDispCut_DDD]})" "& (BPVDIRA > cos({0[Hc_acosBPVDIRA_MAX_DDD]}))" "& (ADMASS('Xi_c+') < {0[Hc_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3)) > {0[Bach_PT_MIN]})" ).format(self.config) comb12Cuts = ( diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V3H.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V3H.py index 859d5c458100b4a16f7610f5566ca337c5988280..66501e01a91b86129a819f76d985b587c5176611 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V3H.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingHc2V3H.py @@ -18,8 +18,8 @@ Throughout this file, 'Bachelor' refers to the children of the Lambda_c+ which i not part of the V0 decay. """ -__author__ = ['Louis Henry'] -__date__ = '13/10/2017' +__author__ = ['Louis Henry', 'Sergio Jaimes'] +__date__ = '26/06/2023' __all__ = ( 'default_config', @@ -29,9 +29,9 @@ __all__ = ( from GaudiKernel.SystemOfUnits import MeV, GeV, mm, mrad from GaudiConfUtils.ConfigurableGenerators import CombineParticles, FilterDesktop, DaVinci__N4BodyDecays from StandardParticles import StdNoPIDsDownPions as InputDownPions -from StandardParticles import StdNoPIDsPions as InputPions -from StandardParticles import StdNoPIDsKaons as InputKaons -from StandardParticles import StdLooseLambdaLL as InputLambdasLL +from StandardParticles import StdAllLoosePions as InputPions +from StandardParticles import StdAllLooseKaons as InputKaons +from StandardParticles import StdVeryLooseLambdaLL as InputLambdasLL from StandardParticles import StdLooseLambdaDD as InputLambdasDD from PhysSelPython.Wrappers import Selection, MergedSelection, DataOnDemand @@ -42,10 +42,15 @@ default_config = { 'NAME': 'Hc2V3H', 'WGs': ['Charm'], 'BUILDERTYPE': 'StrippingHc2V3HConf', - 'STREAMS': ['CharmCompleteEvent'], + 'STREAMS': ['Charm'], 'CONFIG': { # Minimum Lc+ bachelor momentum 'Bach_P_MIN': 2.0*GeV, + # Minimum Lc+ bachelor transverse momentum + 'Bach_PT_MIN': 200 * MeV, + # Minimum Lc+ bachelor IPCHI2 + 'Bach_IPCHI2_MIN': 1, + 'Bach_IPCHI2_MAX': 9, # PID of the Lambda proton "ProbNNpMin_LL" : 0.10, "ProbNNpMin_DD" : 0.00, @@ -179,7 +184,7 @@ class StrippingHc2V3HConf(LineBuilder): RequiredSelections = [DataOnDemand(Location = "Phys/StdLooseLambdaDD/Particles")]) self.LambdaListLooseLL = MergedSelection("StdLooseLLLambdaFor" + self.name, - RequiredSelections = [DataOnDemand(Location = "Phys/StdLooseLambdaLL/Particles")]) + RequiredSelections = [DataOnDemand(Location = "Phys/StdVeryLooseLambdaLL/Particles")]) self.LambdaListLL = self.createSubSel(OutputList = "LambdaLLFor" + self.name, InputList = self.LambdaListLooseLL , @@ -367,6 +372,9 @@ class StrippingHc2V3HConf(LineBuilder): "& ({0[Xic_PVDispCut_LLL]})" "& (BPVDIRA > cos({0[Xic_acosBPVDIRA_MAX_LLL]}))" "& (ADMASS('Xi_c0') < {0[Xic_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" + "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" ).format(self.config) xicCuts_DDL = ( @@ -374,6 +382,9 @@ class StrippingHc2V3HConf(LineBuilder): "& ({0[Xic_PVDispCut_DDL]})" "& (BPVDIRA > cos({0[Xic_acosBPVDIRA_MAX_DDL]}))" "& (ADMASS('Xi_c0') < {0[Xic_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" + "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" ).format(self.config) xicCuts_DDD = ( @@ -381,6 +392,9 @@ class StrippingHc2V3HConf(LineBuilder): "& ({0[Xic_PVDispCut_DDD]})" "& (BPVDIRA > cos({0[Xic_acosBPVDIRA_MAX_DDD]}))" "& (ADMASS('Xi_c0') < {0[Xic_ADMASS_WIN]})" + "& (min(CHILD(PT,2), CHILD(PT,3), CHILD(PT,4)) > {0[Bach_PT_MIN]})" + "& (min(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MIN]})" + "& (max(CHILD(MIPCHI2DV(PRIMARY),2), CHILD(MIPCHI2DV(PRIMARY),3), CHILD(MIPCHI2DV(PRIMARY),4)) > {0[Bach_IPCHI2_MAX]})" ).format(self.config) comb12Cuts = ( diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2LambdaEtaPi.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2LambdaEtaPi.py new file mode 100644 index 0000000000000000000000000000000000000000..691059c8e9792d3c27b7fbbff75a2c656272a81f --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2LambdaEtaPi.py @@ -0,0 +1,362 @@ +############################################################################### +# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +''' +The code is for analysis of the decay + Lambda_c+ -> Lambda0 eta pi+ +where the daughter baryon is reconstructed via: + Lambda0 -> p pi- (from StdLooseLambdaLL/DD) + +A bachelor pi from Lambda_b0 is tagged for reducing the backgrond rate i.e. + Lambda_b0 -> Lambda_c+ pi- +''' + + +__author__ = ['Xiao-Rui Lyu', 'Yangjie Su'] +__date__ = '2023/06/30' +__version__ = '$Revision: 0.1 $' +__all__ = ('StrippingLambdac2LambdaEtaPi' + ,'default_config') + + +from Gaudi.Configuration import * +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from StandardParticles import StdLoosePions, StdNoPIDsDownPions, StdLooseKaons, StdLooseDownKaons +from StandardParticles import StdAllLoosePions, StdAllLooseKaons, StdLooseMuons, StdAllLooseProtons, StdAllLooseMuons, StdAllVeryLooseMuons +from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection +from PhysSelPython.Wrappers import MultiSelectionSequence +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from GaudiKernel.SystemOfUnits import MeV, GeV, mm, picosecond +import sys + + +default_name='Lambdac2LambdaEtaPi' + #### This is the dictionary of all tunable cuts ######## +default_config={ + 'NAME' : 'Lambdac2LambdaEtaPi', + 'WGs' : ['Charm'], + 'BUILDERTYPE' : 'StrippingLambdac2LambdaEtaPi', + 'STREAMS' : ['Charm'], + 'CONFIG' : { + 'GEC_nLongTrk' : 160 # adimensional + , 'signalPrescale' : 1.0 + , 'TRCHI2DOFMax' : 3.0 + , 'GhostProb' : 0.3 + , 'TrGhostProbMax' : 0.25 # same for all particles + , 'MINIPCHI2' : 3.0 # adimensiional + , 'MuonP' : 3*GeV + , 'MuonPT' : 250*MeV + , 'MuonIPCHI2' : 4.0 + , 'MuonPIDmu' : 0.0 + , 'PionP' : 3*GeV + , 'PionPT' : 250*MeV + , 'PionPIDK' : 5.0 + , 'Pion_PIDpiPIDK_Min' : 0.0 + , 'KaonP' : 3*GeV + , 'KaonPT' : 250*MeV + , 'KaonPIDK' : 10.0 + , 'Kaon_PIDKPIDpi_Min' : 5.0 + , 'ProbNNpMin' : 0.2 #ProbNNp cut for proton in L0, to suppress the bkg of L0 + , 'ProbNNp' : 0.4 + , 'ProbNNk' : 0.4 + , 'ProbNNpi' : 0.4 + , 'ProbNNpiMax' : 0.9 + , 'LambdaLLPMin' :2000.0*MeV + , 'LambdaLLPTMin' : 500.0*MeV + , 'LambdaLLCutMass' : 50.0*MeV + , 'LambdaLLCutFDChi2' : 100.0 ## unitless + , 'LambdaDDPMin' :2000.0*MeV + , 'LambdaDDPTMin' : 500.0*MeV + , 'LambdaDDCutMass' : 50.0*MeV + , 'LambdaDDCutFDChi2' : 100.0## unitless + , 'LambdaVertexChi2' : 10.0## max chi2/ndf for Lambda0 vertex + + , 'Lc_M_HalfWin' : 200.0*MeV + , 'Lb_M_HalfWin' : 200.0*MeV + , 'Lc_Daug_1of3_MIPCHI2DV_Min': 3.0 + , 'Lc_ADOCAMAX_Max' : 0.15*mm + , 'Lc_APT_Min' : 1.2*GeV + , 'Lc_AP_Min' : 15*GeV + , 'Lc_VCHI2_Max' : 30.0 + , 'Lc_BPVVDCHI2_Min' : 16.0 + , 'Lc_BPVVDZ_Min' : 0.5*mm + , 'Lc_BPVDIRA_Min' : 0.95 + + #For Lb + , 'Lb_AP_Min': 20*GeV + , 'Lb_APT_Min': 1.5*GeV + , 'Lb_VCHI2_Max': 30 + , 'Lb_BPVVDCHI2_Min': 16 + , 'Lb_BPVDIRA_Min': 0.95 + } ## end of 'CONFIG' +} ## end of default_config + +#------------------------------------------------------------------------------------------------------------- +class StrippingLambdac2LambdaEtaPi(LineBuilder) : + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config) : + LineBuilder.__init__(self, name, config) + self.name = name + self.config = config + + GECs = { "Code":"( recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG) < %(GEC_nLongTrk)s )" % config, + "Preambulo": ["from LoKiTracks.decorators import *"]} + + ########################################################################## + ## Basic particles: mu, K, pi, eta + ########################################################################## + self.selMuon = Selection( "SelMufor" + name, + Algorithm = self._muonFilter("Mufor"+name), + RequiredSelections = [StdLooseMuons]) + + self.selKaon = Selection( "SelKfor" + name, + Algorithm = self._kaonFilter("Kfor"+name), + RequiredSelections = [StdAllLooseKaons]) + + self.selPion = Selection( "SelPifor" + name, + Algorithm = self._pionFilter("Pifor"+name), + RequiredSelections = [StdAllLoosePions]) + + self.makeEta() + # then use self.Eta2PiPiPi0 and self.Eta2PiPiGamma + + ########################################################################## + ## Lambda0 -> p+ pi- + ########################################################################## + _stdLooseLambdaLL = DataOnDemand("Phys/StdVeryLooseLambdaLL/Particles") + _stdLooseLambdaDD = DataOnDemand("Phys/StdLooseLambdaDD/Particles") + + self.selLambdaLL = Selection("SelLambdaLLfor"+name, + Algorithm = self._LambdaLLFilter("LambdaLLfor"+name), + RequiredSelections = [_stdLooseLambdaLL]) + + self.selLambdaDD = Selection("SelLambdaDDfor"+name, + Algorithm = self._LambdaDDFilter("LambdaDDfor"+name), + RequiredSelections = [_stdLooseLambdaDD]) + + ########################################################################## + ## Charmed Meson SL lines + ########################################################################## + self.DmesonSLList = self.makeLine() + + + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + # Sub Function + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + def _muonFilter( self , _name): + _code = " (TRCHI2DOF< %(TRCHI2DOFMax)s)"\ + "& (PT>%(MuonPT)s) & (P>%(MuonP)s)"\ + "& (TRGHOSTPROB< %(GhostProb)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MuonIPCHI2)s)"\ + "& (PIDmu > %(MuonPIDmu)s) & ISMUON" % self.config + _mu = FilterDesktop(Code = _code ) + return _mu + + def _pionFilter( self , _name): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(PionP)s) & (PT > %(PionPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK< %(PionPIDK)s) "\ + "& (HASRICH)&(PROBNNpi > %(ProbNNpi)s) " % self.config + _pi = FilterDesktop(Code = _code ) + return _pi + + def _kaonFilter( self , _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(KaonP)s) & (PT > %(KaonPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK> %(KaonPIDK)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (PROBNNk > %(ProbNNk)s) "\ + "& (HASRICH)&(PIDK-PIDpi>%(Kaon_PIDKPIDpi_Min)s) "% self.config + _ka = FilterDesktop(Code = _code ) + return _ka + + def _LambdaLLFilter( self, _name): + _code = " (P > %(LambdaLLPMin)s) & (PT > %(LambdaLLPTMin)s)" \ + " &(ADMASS('Lambda0')<%(LambdaLLCutMass)s)"\ + " & (BPVVDCHI2> %(LambdaLLCutFDChi2)s)" \ + " & (VFASPF(VCHI2PDOF) < %(LambdaVertexChi2)s)" % self.config + _l0LL = FilterDesktop(Code = _code) + return _l0LL + + def _LambdaDDFilter( self , _name): + _code = " (P> %(LambdaDDPMin)s) & (PT> %(LambdaDDPTMin)s)" \ + " & (ADMASS('Lambda0') < %(LambdaDDCutMass)s) "\ + " & (BPVVDCHI2> %(LambdaDDCutFDChi2)s)" \ + " & (VFASPF(VCHI2PDOF) < %(LambdaVertexChi2)s)" % self.config + _l0DD = FilterDesktop(Code = _code) + return _l0DD + + def makeLb0Line(self, line_name, prescale, Lc): + comb_cut = "(ADAMASS('Lambda_b0') < 1.1*%(Lb_M_HalfWin)s)"\ + "& (AP > %(Lb_AP_Min)s)"\ + "& (APT > %(Lb_APT_Min)s)" % self.config + vertex_cut = " (ADMASS('Lambda_b0') < %(Lb_M_HalfWin)s)"\ + "& (BPVVDCHI2>%(Lb_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(Lb_BPVDIRA_Min)s)" % self.config + + Lb0 = self.createCombinationSel(OutputList = "Lb02LcPi_" + line_name, + DecayDescriptor = "[Lambda_b0 -> Lambda_c+ pi-]cc", + DaughterLists = [Lc, self.selPion], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + Lb0Line = StrippingLine( line_name, + prescale = prescale, + selection = Lb0, + EnableFlavourTagging = False ) + return Lb0Line + + + ##------------------------------------------------------------------------------------------ + ## -------------------- Begin to DpSL ------------ + def makeLine( self ): + + _strCutCombfor = "(AMINCHILD(MIPCHI2DV(PRIMARY))>%(Lc_Daug_1of3_MIPCHI2DV_Min)s)" \ + "& (AP>%(Lc_AP_Min)s)" \ + "& (ADAMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" \ + "& (APT>%(Lc_APT_Min)s)" % self.config + + _strCutMothfor = "(VFASPF(VCHI2) < %(Lc_VCHI2_Max)s)" \ + "& (ADMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min)s)" % self.config + + _strCutComb_Mass = "(ADAMASS('Lambda_c+') < 1.1*%(Lc_M_HalfWin)s)" % self.config + _strCutMoth_Mass = "(ADMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" % self.config + + _strCutComb = _strCutCombfor + '&' + _strCutComb_Mass + _strCutMoth = _strCutMothfor + '&' + _strCutMoth_Mass + + ''' Stripping Lambda_c+ -> Lambda eta pi+ ''' + LmdEtaPiLLEta2PiPiPi0 = self.createCombinationSel(OutputList = "Lc2LambdaEtaPiLLEta2PiPiPi0" + self.name, + DecayDescriptor = "[Lambda_c+ -> Lambda0 eta pi+]cc", + DaughterLists = [self.selLambdaLL, self.Eta2PiPiPi0,self.selPion], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2LambdaEtaPiLLEta2PiPiPi0", + prescale=self.config['signalPrescale'], + Lc=LmdEtaPiLLEta2PiPiPi0 + )) + + ''' Stripping Lambda_c+ -> Lambda eta pi+ ''' + LmdEtaPiLLEta2PiPiGamma = self.createCombinationSel(OutputList = "Lc2LambdaEtaPiLLEta2PiPiGamma" + self.name, + DecayDescriptor = "[Lambda_c+ -> Lambda0 eta pi+]cc", + DaughterLists = [self.selLambdaLL, self.Eta2PiPiGamma,self.selPion], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2LambdaEtaPiLLEta2PiPiGamma", + prescale=self.config['signalPrescale'], + Lc=LmdEtaPiLLEta2PiPiGamma + )) + + ''' Stripping Lambda_c+ -> Lambda eta pi+ ''' + LmdEtaPiDDEta2PiPiPi0 = self.createCombinationSel(OutputList = "Lc2LambdaEtaPiDDEta2PiPiPi0" + self.name, + DecayDescriptor = "[Lambda_c+ -> Lambda0 eta pi+]cc", + DaughterLists = [self.selLambdaDD, self.Eta2PiPiPi0,self.selPion], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2LambdaEtaPiDDEta2PiPiPi0", + prescale=self.config['signalPrescale'], + Lc=LmdEtaPiDDEta2PiPiPi0 + )) + + ''' Stripping Lambda_c+ -> Lambda eta pi+ ''' + LmdEtaPiDDEta2PiPiGamma = self.createCombinationSel(OutputList = "Lc2LambdaEtaPiDDEta2PiPiGamma" + self.name, + DecayDescriptor = "[Lambda_c+ -> Lambda0 eta pi+]cc", + DaughterLists = [self.selLambdaDD, self.Eta2PiPiGamma,self.selPion], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2LambdaEtaPiDDEta2PiPiGamma", + prescale=self.config['signalPrescale'], + Lc=LmdEtaPiDDEta2PiPiGamma + )) + ## -------------------- End of DpSL ------------ + ##------------------------------------------------------------------------------------------ + def makeEta(self): + #get standard containers + self.Pi0List = DataOnDemand(Location = "Phys/StdLoosePi02gg/Particles") + self.GammaList = DataOnDemand(Location = "Phys/StdLooseAllPhotons/Particles") + self.LoosePionList = DataOnDemand(Location = "Phys/StdLoosePions/Particles") + + #clean neutrals + _tightpi0_cut = "(CHILD(CL,1)>0.05) & (CHILD(CL,2)>0.05) & (PT>1*GeV)" + _tightgamma_cut = "(CL>0.05) & (PT>500*MeV)" + + #pipi vertex cuts + _pipix_cut = "(BPVVDZ>0) & (VFASPF(VCHI2)<9) & (BPVDIRA>0.95) & (BPVVDCHI2>25)" + + #pipix0 cuts + _eta_cut = "(ADAMASS('eta')<100*MeV) & (APT>1500*MeV)" + + #filter standard containers + self.TightPi0List = self.createSubSel( OutputList = self.name + '_TightPi0', InputList = self.Pi0List, Cuts = _tightpi0_cut) + self.TightGammaList = self.createSubSel( OutputList = self.name + '_TightGamma', InputList = self.GammaList, Cuts = _tightgamma_cut) + + #------------- + + self.Eta2PiPiPi0 = self.createCombinationSel( OutputList = self.name + "_Eta2PiPiPi0", + DecayDescriptor = "eta -> pi+ pi- pi0", + DaughterLists = [ self.LoosePionList, self.TightPi0List], + PreVertexCuts = _eta_cut, + PostVertexCuts = _pipix_cut) + #------------- + + self.Eta2PiPiGamma = self.createCombinationSel( OutputList = self.name + "_Eta2PiPiGamma", + DecayDescriptor = "eta -> pi+ pi- gamma", + DaughterLists = [ self.LoosePionList, self.TightGammaList], + PreVertexCuts = _eta_cut, + PostVertexCuts = _pipix_cut ) + + ########################################################################## + ## Basic Function + ########################################################################## + def createSubSel( self, OutputList, InputList, Cuts ) : + '''create a selection using a FilterDesktop''' + filter = FilterDesktop(Code = Cuts) + return Selection( OutputList, + Algorithm = filter, + RequiredSelections = [ InputList ] ) + + def createCombinationSel( self, OutputList, + DecayDescriptor, + DaughterLists, + DaughterCuts = {} , + PreVertexCuts = "ALL", + PostVertexCuts = "ALL") : + '''create a selection using a ParticleCombiner with a single decay descriptor''' + if type(DecayDescriptor) is list: + combiner = CombineParticles( DecayDescriptors = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + else: + combiner = CombineParticles( DecayDescriptor = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + #print "DEBUG here is :",__file__,sys._getframe().f_lineno diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2PEta.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2PEta.py new file mode 100644 index 0000000000000000000000000000000000000000..56113d582cd215b55ef08ce3316267de50d19669 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingLambdac2PEta.py @@ -0,0 +1,271 @@ +############################################################################### +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +''' +Speculative code for charmed baryon searches. +The following two channels are used: +Lambda_b0-> pi (Lambda_c+ -> p+ eta) +Lambda_b0-> pi (Lambda_c+ -> p+ eta') +''' + + +__author__ = ['Xiao-Rui Lyu', 'Pei-Rong Li', 'Miroslav Saur', 'Qi-Le Niu'] +__date__ = '2023/07/12' +__version__ = '$Revision: 0.1 $' +__all__ = ('StrippingLambdac2PEta' + ,'default_config') + + +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from StandardParticles import StdAllLoosePions, StdAllLooseProtons, StdLooseProtons, StdLoosePions +from StandardParticles import StdLooseMergedPi0, StdLooseResolvedPi0 +from StandardParticles import StdLooseResolvedEta, StdLooseEta2gg +from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection +from PhysSelPython.Wrappers import MultiSelectionSequence +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from GaudiKernel.SystemOfUnits import MeV, GeV, mm, picosecond +import sys + + +default_name='Lambdac2PEta' + #### This is the dictionary of all tunable cuts ######## +default_config={ + 'NAME' : 'Lambdac2PEta', + 'WGs' : ['Charm'], + 'BUILDERTYPE' : 'StrippingLambdac2PEta', + 'STREAMS' : ['Charm'], + 'CONFIG' : { + 'GEC_nLongTrk' : 160 # adimensional + , 'signalPrescale' : 1.0 + , 'TRCHI2DOFMax' : 3.0 + , 'TrGhostProbMax' : 0.25 # same for all particles + , 'MINIPCHI2' : 3.0 # adimensiional + , 'ProtonP' : 3.0*GeV + , 'ProtonPT' : 500*MeV + , 'Proton_PIDpPIDpi_Min' : 5.0 + , 'Proton_PIDpPIDK_Min' : 0.0 + , 'PionP' : 3*GeV + , 'PionPT' : 250*MeV + , 'PionPIDK' : 5.0 + , 'ProbNNp' : 0.4 + , 'ProbNNpi' : 0.4 + , 'ProbNNpiMax' : 0.9 + + , 'Lc_M_HalfWin' : 200.0*MeV + , 'Lb_M_HalfWin' : 200.0*MeV + , 'Lc_Daug_1of3_MIPCHI2DV_Min': 3.0 + , 'Lc_ADOCAMAX_Max' : 0.15*mm + , 'Lc_APT_Min' : 1.2*GeV + , 'Lc_AP_Min' : 15*GeV + , 'Lc_VCHI2_Max' : 30.0 + , 'Lc_BPVVDCHI2_Min' : 16.0 + , 'Lc_BPVVDZ_Min' : 0.5*mm + , 'Lc_BPVDIRA_Min' : 0.95 + + #For Lb + , 'Lb_AP_Min': 20*GeV + , 'Lb_APT_Min': 1.5*GeV + , 'Lb_VCHI2_Max': 30 + , 'Lb_BPVVDCHI2_Min': 16 + , 'Lb_BPVVDZ_Min': 0.7*mm + , 'Lb_BPVDIRA_Min': 0.95 + } ## end of 'CONFIG' +} ## end of default_config + +#------------------------------------------------------------------------------------------------------------- +class StrippingLambdac2PEta(LineBuilder) : + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config) : + LineBuilder.__init__(self, name, config) + self.name = name + self.config = config + + GECs = { "Code":"( recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG) < %(GEC_nLongTrk)s )" % config, + "Preambulo": ["from LoKiTracks.decorators import *"]} + + ########################################################################## + ## Basic particles: p+, pi + ########################################################################## + + self.selPi = Selection( "SelPifor" + name, + Algorithm = self._piFilter("Pifor"+name), + RequiredSelections = [StdLoosePions]) + + self.selProton = Selection( "SelPfor" + name, + Algorithm = self._protonFilter("Pfor"+name), + RequiredSelections = [StdLooseProtons]) + + self.makeEta() + # then use self.Eta2PiPiPi0 and self.Eta2PiPiGamma + + + ########################################################################## + self.DmesonSLList = self.makeLine() + + + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + # Sub Function + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + def _protonFilter( self, _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (PT > %(ProtonPT)s) & (P>%(ProtonP)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PROBNNp > %(ProbNNp)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (HASRICH)&(PIDp-PIDpi>%(Proton_PIDpPIDpi_Min)s)"\ + "& (HASRICH)&(PIDp-PIDK>%(Proton_PIDpPIDK_Min)s)"% self.config + _pr = FilterDesktop(Code = _code) + return _pr + + + def _piFilter( self , _name): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(PionP)s) & (PT > %(PionPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK< %(PionPIDK)s) "\ + "& (HASRICH)&(PROBNNpi > %(ProbNNpi)s) " % self.config + _pi = FilterDesktop(Code = _code ) + return _pi + + + def makeLb0Line(self, line_name, prescale, Lc): + comb_cut = "in_range(200, AM, 200000)" + vertex_cut = "ALL" + + Lb0 = self.createCombinationSel(OutputList = "Lb02LcPi_" + line_name, + DecayDescriptor = "[Lambda_b0 -> Lambda_c+ pi-]cc", + DaughterLists = [Lc, self.selPi], + PreVertexCuts = comb_cut, + PostVertexCuts = vertex_cut ) + Lb0Line = StrippingLine( line_name, + prescale = prescale, + selection = Lb0, + EnableFlavourTagging = False ) + return Lb0Line + + + ##------------------------------------------------------------------------------------------ + ## -------------------- Begin to DpSL ------------ + def makeLine( self ): + + _strCutCombfor = "(AMINCHILD(MIPCHI2DV(PRIMARY))>%(Lc_Daug_1of3_MIPCHI2DV_Min)s)" \ + "& (AP>%(Lc_AP_Min)s)" \ + "& (ADAMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" \ + "& (APT>%(Lc_APT_Min)s)" % self.config + + _strCutMothfor = "(VFASPF(VCHI2) < %(Lc_VCHI2_Max)s)" \ + "& (ADMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" \ + "& (BPVVDCHI2>%(Lc_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(Lc_BPVDIRA_Min)s)" % self.config + + _strCutComb_Mass = "(ADAMASS('Lambda_c+') < 1.1*%(Lc_M_HalfWin)s)" % self.config + _strCutMoth_Mass = "(ADMASS('Lambda_c+') < %(Lc_M_HalfWin)s)" % self.config + + _strCutComb = _strCutCombfor + '&' + _strCutComb_Mass + _strCutMoth = _strCutMothfor + '&' + _strCutMoth_Mass + + ''' Stripping Lambda_c+ -> p+ eta ''' + PEta2PiPiPi0 = self.createCombinationSel(OutputList = "Lc2PEta2PiPiPi0" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ eta]cc", + DaughterLists = [self.selProton, self.Eta2PiPiPi0], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2Eta2PiPiPi0", + prescale=self.config['signalPrescale'], + Lc=PEta2PiPiPi0 + )) + + ''' Stripping Lambda_c+ -> p+ eta_prime ''' + PEtap2PiPiEta = self.createCombinationSel(OutputList = "Lc2PEtap2PiPiEta" + self.name, + DecayDescriptor = "[Lambda_c+ -> p+ eta_prime]cc", + DaughterLists = [self.selProton, self.Etap2PiPiEta], + PreVertexCuts = _strCutComb, + PostVertexCuts = _strCutMoth ) + self.registerLine(self.makeLb0Line( + line_name=self.name + "Lb2LcPiLc2Etap2PiPiEta", + prescale=self.config['signalPrescale'], + Lc=PEtap2PiPiEta + )) + + ## -------------------- End of DpSL ------------ + ##------------------------------------------------------------------------------------------ + def makeEta(self): + #get standard containers + self.Pi0List = DataOnDemand(Location = "Phys/StdLoosePi02gg/Particles") + self.LoosePionList = DataOnDemand(Location = "Phys/StdLoosePions/Particles") + + #clean neutrals + _tightpi0_cut = "(CHILD(CL,1)>0.05) & (CHILD(CL,2)>0.05) & (PT>0.0*GeV)" + + #pipi vertex cuts + _pipix_cut = "(BPVVDZ>0) & (VFASPF(VCHI2)<9) & (BPVDIRA>0.95) & (BPVVDCHI2>25)" + + #pipix0 cuts + _eta_cut = "(ADAMASS('eta')<100*MeV) & (APT>1500*MeV)" + _etap_cut = "(ADAMASS('eta_prime')<200*MeV) & (APT>1500*MeV)" + + #filter standard containers + self.TightPi0List = self.createSubSel( OutputList = self.name + '_TightPi0', InputList = self.Pi0List, Cuts = _tightpi0_cut) + + #------------- + + self.Eta2PiPiPi0 = self.createCombinationSel( OutputList = self.name + "_Eta2PiPiPi0", + DecayDescriptor = "eta -> pi+ pi- pi0", + DaughterLists = [ self.LoosePionList, self.TightPi0List], + PreVertexCuts = _eta_cut, + PostVertexCuts = _pipix_cut) + #------------- + self.Etap2PiPiEta = self.createCombinationSel( OutputList = self.name + "_Etap2PiPiEta", + DecayDescriptor = "eta_prime -> pi+ pi- eta", + DaughterLists = [ self.LoosePionList, self.Eta2PiPiPi0], + PreVertexCuts = _etap_cut, + PostVertexCuts = _pipix_cut) + + ########################################################################## + ## Basic Function + ########################################################################## + def createSubSel( self, OutputList, InputList, Cuts ) : + '''create a selection using a FilterDesktop''' + filter = FilterDesktop(Code = Cuts) + return Selection( OutputList, + Algorithm = filter, + RequiredSelections = [ InputList ] ) + + def createCombinationSel( self, OutputList, + DecayDescriptor, + DaughterLists, + DaughterCuts = {} , + PreVertexCuts = "ALL", + PostVertexCuts = "ALL") : + '''create a selection using a ParticleCombiner with a single decay descriptor''' + if type(DecayDescriptor) is list: + combiner = CombineParticles( DecayDescriptors = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + else: + combiner = CombineParticles( DecayDescriptor = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingNeutralCBaryons.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingNeutralCBaryons.py index 65e4490b8c0e3e4606c9dda75daab6926db55d87..4424f47d8dac122dc8c24ae63e36719dfa5f7ef5 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingNeutralCBaryons.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingNeutralCBaryons.py @@ -1,5 +1,5 @@ ############################################################################### -# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration # +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # # # # This software is distributed under the terms of the GNU General Public # # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # @@ -21,20 +21,27 @@ Xi_c0 -> p+ K- Omega+c0 -> Lambda KS0 Omega_c0 -> p+ K- Omega_c0 -> Labda K- pi+ + +Update on 2023/07/06 +Added following decays: +Xi_c0 -> p+ K+ K- pi- +Xi_c0 -> Lz pi+ pi- +Optimized following decays: +Xi_c0 -> p+ K- +Omega+c0 -> Lambda KS0 +Xi_c0 -> Lambda KS0 ''' -__author__ = ['Xuesong Liu, Xiao-Rui Lyu, Zhenwei Yang', 'Miroslav Saur', 'Ziyi Wang'] -__date__ = '2021/03/19' +__author__ = ['Xuesong Liu, Xiao-Rui Lyu, Zhenwei Yang', 'Miroslav Saur', 'Ziyi Wang', 'Pei-Rong Li', 'Ying-Hao Wang'] +__date__ = '2023/07/06' __version__ = '$Revision: 1.1 $' __all__ = ('StrippingNeutralCBaryonsConf' ,'default_config') -from Gaudi.Configuration import * from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles -from StandardParticles import StdLoosePions, StdNoPIDsDownPions, StdLooseKaons, StdLooseDownKaons -from StandardParticles import StdAllLoosePions, StdAllLooseKaons, StdAllLooseProtons +from StandardParticles import StdAllLoosePions, StdAllLooseKaons, StdAllLooseProtons, StdNoPIDsDownPions, StdLooseDownKaons from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection from PhysSelPython.Wrappers import MultiSelectionSequence @@ -78,8 +85,8 @@ default_config={ , 'LambdaDeltaZ_MIN' : 5.0 * mm , 'LambdaPr_PT_MIN' : 500. * MeV , 'LambdaPi_PT_MIN' : 100. * MeV - } ## end of 'CONFIG' -} ## end of default_config + }## end of 'CONFIG' +}## end of default_config #------------------------------------------------------------------------------------------------------------- class StrippingNeutralCBaryonsConf(LineBuilder) : @@ -209,7 +216,7 @@ class StrippingNeutralCBaryonsConf(LineBuilder) : Cuts = "(BPVVDZ > 0.0 * mm) " \ "& (BPVVDZ < 2300.0 * mm) " \ "& (BPVDIRA > 0.99995 ) " \ - "& (ADMASS('KS0') < 40.0 *MeV) " \ + "& (ADMASS('KS0') < 60.0 *MeV) " \ "& (BPVVDCHI2> 100)" % self.config \ ) @@ -217,8 +224,8 @@ class StrippingNeutralCBaryonsConf(LineBuilder) : InputList = self.KS0ListLooseDD , Cuts = "(BPVVDZ > -1000.0 * mm) " \ "& (BPVVDZ < 650.0 * mm) " \ - "& (BPVDIRA > 0.99997 ) " \ - "& (ADMASS('KS0') < 20.0 *MeV) " \ + "& (BPVDIRA > 0.99 ) " \ + "& (ADMASS('KS0') < 60.0 *MeV) " \ "& (BPVVDCHI2> 100)" % self.config \ ) @@ -277,6 +284,30 @@ class StrippingNeutralCBaryonsConf(LineBuilder) : Xic02LambdaKpiLine = StrippingLine( self.name + "Xic02LambdaKpiLine", algos = [ Xic02LambdaKpi ], EnableFlavourTagging = True ) self.registerLine (Xic02LambdaKpiLine) + ''' Stripping Xi_c0->Lambda0(LL) pi+ pi-''' + Xic02LambdaLLpipi = self.createCombinationSel(OutputList = "Xic02LambdaLLpipi"+ self.name, + DecayDescriptor = "[Xi_c0 -> Lambda0 pi+ pi- ]cc", + DaughterLists = [self.LambdaListLL, self.GoodLongPionsList, self.GoodLongPionsList], + DaughterCuts = {"pi+" : " (MIPCHI2DV(PRIMARY)>4)", + "pi-" : " (MIPCHI2DV(PRIMARY)>4)"}, + PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV) & (ADOCACHI2CUT(30, '')) & (ADOCAMAX('')<2.0*mm)", + PostVertexCuts = "(ADMASS('Xi_c0') < 90 *MeV) &(VFASPF(VCHI2/VDOF)< 12.) & (BPVVDCHI2 > 16.0) & (BPVDIRA >0.999) " + ) + Xic02LambdaLLpipiLine = StrippingLine( self.name + "Xic02LambdaLLpipiLine", algos = [ Xic02LambdaLLpipi ], EnableFlavourTagging = True ) + self.registerLine (Xic02LambdaLLpipiLine) + + ''' Stripping Xi_c0->Lambda0(DD) pi+ pi-''' + Xic02LambdaDDpipi = self.createCombinationSel(OutputList = "Xic02LambdaDDpipi"+ self.name, + DecayDescriptor = "[Xi_c0 -> Lambda0 pi+ pi- ]cc", + DaughterLists = [self.LambdaListDD, self.GoodLongPionsList, self.GoodLongPionsList], + DaughterCuts = {"pi+" : " (MIPCHI2DV(PRIMARY)>4)", + "pi-" : " (MIPCHI2DV(PRIMARY)>4)"}, + PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV) & (ADOCACHI2CUT(30, '')) & (ADOCAMAX('')<2.0*mm)", + PostVertexCuts = "(ADMASS('Xi_c0') < 90 *MeV) &(VFASPF(VCHI2/VDOF)< 12.) & (BPVVDCHI2 > 16.0) & (BPVDIRA >0.999) " + ) + Xic02LambdaDDpipiLine = StrippingLine( self.name + "Xic02LambdaDDpipiLine", algos = [ Xic02LambdaDDpipi ], EnableFlavourTagging = True ) + self.registerLine (Xic02LambdaDDpipiLine) + ''' Stripping Xi_c- -> Lambda0(DD) pi-(Long)''' Ximinus2LambdaPiDDL = self.createCombinationSel(OutputList = "Ximinus2LambdaPiDDL"+ self.name, DecayDescriptor = "[Xi- -> Lambda0 pi-]cc", @@ -325,13 +356,26 @@ class StrippingNeutralCBaryonsConf(LineBuilder) : DaughterLists = [self.GoodTightProtonsList, self.GoodTightKaonsList], DaughterCuts = {"K-" : " (MIPCHI2DV(PRIMARY)>4)", "p+" : " (MIPCHI2DV(PRIMARY)>4)"}, - PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV)", + PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV) & (ADOCACHI2CUT(30, '')) & (ADOCAMAX('')<2.5*mm)", PostVertexCuts = "(ADMASS('Xi_c0') < 90 *MeV) &(VFASPF(VCHI2/VDOF)< 12.) & (BPVVDCHI2 > 16.0) & (BPVDIRA >0.999) " ) - #Xic02pKLine = StrippingLine( self.name + "Xic02pKLine", prescale = 0.5, algos = [ Xic02pK ], EnableFlavourTagging = True ) Xic02pKLine = StrippingLine( self.name + "Xic02pKLine", algos = [ Xic02pK ], EnableFlavourTagging = True ) self.registerLine (Xic02pKLine) + ''' Stripping Xi_c0 -> p+ K+ K- pi-''' + Xic02pKKpi = self.createCombinationSel(OutputList = "Xic02pKKpi"+ self.name, + DecayDescriptor = "[Xi_c0 -> p+ K+ K- pi-]cc", + DaughterLists = [self.GoodTightProtonsList, self.GoodTightKaonsList, self.GoodTightKaonsList, self.GoodLongPionsList], + DaughterCuts = {"K-" : " (MIPCHI2DV(PRIMARY)>4)", + "K+" : " (MIPCHI2DV(PRIMARY)>4)", + "pi-" : " (MIPCHI2DV(PRIMARY)>4)", + "p+" : " (MIPCHI2DV(PRIMARY)>4)"}, + PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV)", + PostVertexCuts = "(ADMASS('Xi_c0') < 90 *MeV) &(VFASPF(VCHI2/VDOF)< 12.) & (BPVVDCHI2 > 16.0) & (BPVDIRA >0.999) " + ) + Xic02pKKpiLine = StrippingLine( self.name + "Xic02pKKpiLine", algos = [ Xic02pKKpi ], EnableFlavourTagging = True ) + self.registerLine (Xic02pKKpiLine) + ''' Stripping Xi_c0->Xi- pi+''' Xic02Xipi = self.createCombinationSel(OutputList = "Xic02Xipi"+ self.name, DecayDescriptor = "[Xi_c0 -> Xi- pi+]cc", diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXib2Xic0PiXic02pK.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXib2Xic0PiXic02pK.py new file mode 100644 index 0000000000000000000000000000000000000000..18f994365fcc8e977e263421da9167058902f402 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXib2Xic0PiXic02pK.py @@ -0,0 +1,150 @@ +############################################################################### +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +''' +1)Xi_b- -> Xi_c0 pi-, Xi_c0 -> p+ K- + +''' + +__author__ = ['Xiao-Rui Lyu', 'Miroslav Saur', 'Ziyi Wang', 'Pei-Rong Li', 'Ying-Hao Wang'] +__date__ = '2023/07/06' +__version__ = '$Revision: 0.1 $' +__all__ = ('StrippingXib2Xic0PiXic02pKConf' + ,'default_config') + + +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from StandardParticles import StdAllLoosePions, StdAllLooseKaons, StdAllLooseProtons + +from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection +from PhysSelPython.Wrappers import MultiSelectionSequence +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from GaudiKernel.SystemOfUnits import MeV, mm, picosecond + + +default_name='Xib2Xic0PiXic02pK' + #### This is the dictionary of all tunable cuts ######## +default_config={ + 'NAME' : 'Xib2Xic0PiXic02pK', + 'WGs' : ['Charm'], + 'BUILDERTYPE' : 'StrippingXib2Xic0PiXic02pKConf', + 'STREAMS' : ['Charm'], + 'CONFIG' : { + 'TRCHI2DOFMax' : 3.0 + , 'PionPIDK' : 10.0 + , 'tight_ProtonPIDp' : 7 #to be studied + , 'tight_ProtonPIDppi' : 5.0 + , 'tight_ProtonPIDpK' : 0.0 + , 'tight_KaonPIDpi' : 5.0 + , 'tight_KaonPIDK' : 0.0 + , 'TrGhostProbMax' : 0.25 + , 'ProbNNkMin' : 0.10 + }## end of 'CONFIG' +}## end of default_config + +#------------------------------------------------------------------------------------------------------------- +class StrippingXib2Xic0PiXic02pKConf(LineBuilder) : + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config) : + LineBuilder.__init__(self, name, config) + self.name = name + self.config = config + + # take all long tracks - Long Protons + self.LongProtonsList = MergedSelection("LongProtonsFor" + self.name, + RequiredSelections = [DataOnDemand(Location = "Phys/StdAllLooseProtons/Particles")]) + + # take all long tracks - Long Pions + self.LongPionsList = MergedSelection("LongPionsFor" + self.name, + RequiredSelections = [DataOnDemand(Location = "Phys/StdAllLoosePions/Particles")]) + + # take all long tracks - Long Kaons + self.LongKaonsList = MergedSelection("LongKaonsFor" + self.name, + RequiredSelections = [DataOnDemand(Location = "Phys/StdAllLooseKaons/Particles")]) + + # Good tracks - Tight Protons + self.GoodTightProtonsList = self.createSubSel( OutputList = "GoodTightProtonsFor" + self.name, + InputList = self.LongProtonsList, + Cuts = "(TRCHI2DOF < %(TRCHI2DOFMax)s )"\ + " & (TRGHOSTPROB <%(TrGhostProbMax)s )" \ + " & (PIDp > %(tight_ProtonPIDp)s) "\ + " & ((PIDp-PIDpi) > %(tight_ProtonPIDppi)s) "\ + " & ((PIDp-PIDK) > %(tight_ProtonPIDpK)s) " % self.config ) + # Good tracks - Long Pions + self.GoodLongPionsList = self.createSubSel( OutputList = "GoodLongPionsFor" + self.name, + InputList = self.LongPionsList, + Cuts = "(TRCHI2DOF < %(TRCHI2DOFMax)s )"\ + " & (TRGHOSTPROB <%(TrGhostProbMax)s )" \ + " & (PIDK < %(PionPIDK)s )" % self.config ) + + # Good tracks - Tight Kaons + self.GoodTightKaonsList = self.createSubSel( OutputList = "GoodTightKaonsFor" + self.name, + InputList = self.LongKaonsList, + Cuts = "(TRCHI2DOF < %(TRCHI2DOFMax)s )"\ + " & (TRGHOSTPROB < %(TrGhostProbMax)s )" \ + " & (PROBNNk > %(ProbNNkMin)s )" \ + " & ((PIDK-PIDpi)>%(tight_KaonPIDpi)s)"\ + " & (PIDK > %(tight_KaonPIDK)s )" % self.config ) + + # Xi_c0 -> p+ K- list + self.Xic0List = self.createCombinationSel(OutputList = "Xic0For"+ self.name, + DecayDescriptor = "[Xi_c0 -> p+ K-]cc", + DaughterLists = [self.GoodTightProtonsList, self.GoodTightKaonsList], + DaughterCuts = {"K-" : " (MIPCHI2DV(PRIMARY)>4)", + "p+" : " (MIPCHI2DV(PRIMARY)>4)"}, + PreVertexCuts = "(ADAMASS('Xi_c0') < 120 *MeV) & (ADOCACHI2CUT(30, '')) & (ADOCAMAX('')<2.5*mm)", + PostVertexCuts = "(ADMASS('Xi_c0') < 90 *MeV) &(VFASPF(VCHI2/VDOF)< 12.) & (BPVVDCHI2 > 16.0) & (BPVDIRA >0.999) " + ) + + self.XibList = self.makeXib() + + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + + def createSubSel( self, OutputList, InputList, Cuts ) : + '''create a selection using a FilterDesktop''' + filter = FilterDesktop(Code = Cuts) + return Selection( OutputList, + Algorithm = filter, + RequiredSelections = [ InputList ] ) + + def createCombinationSel( self, OutputList, + DecayDescriptor, + DaughterLists, + DaughterCuts = {} , + PreVertexCuts = "ALL", + PostVertexCuts = "ALL" ) : + '''create a selection using a ParticleCombiner with a single decay descriptor''' + combiner = CombineParticles( DecayDescriptor = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + + def makeXib( self ): + + ''' Stripping Xi_b- -> Xi_c0 pi-''' + Xib2Xic0piXic02pK = self.createCombinationSel(OutputList = "Xib2Xic0piXic02pK"+ self.name, + DecayDescriptor = "[Xi_b- -> Xi_c0 pi-]cc", + DaughterLists = [self.Xic0List, self.GoodLongPionsList], + DaughterCuts = {"pi-" : " (MIPCHI2DV(PRIMARY)>4)" + }, + PreVertexCuts = "(ADAMASS('Xi_b-') < 800 *MeV)", + PostVertexCuts = "(ADMASS('Xi_b-') < 400 *MeV)" + ) + Xib2Xic0piXic02pKLine = StrippingLine( self.name + "Xib2Xic0piXic02pKLine", algos = [ Xib2Xic0piXic02pK ], EnableFlavourTagging = True ) + self.registerLine (Xib2Xic0piXic02pKLine) + + #------------------------------------------------------------------------------------------ diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu.py new file mode 100755 index 0000000000000000000000000000000000000000..d908d70e453fd6cf71072e5698294b00cb5f6982 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu.py @@ -0,0 +1,138 @@ +############################################################################### +# (c) Copyright 2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +""" +Stripping lines for Xic0 -> Xi- mu+ nu +The lines are used to complement the inclusive Xi Turbo lines by adding +Velo raw banks to study if the Xi- can be reconstructed as an upstream track. +""" +from GaudiConfUtils.ConfigurableGenerators import CombineParticles +from Configurables import FilterDesktop +from PhysConf.Selections import ( + FilterSelection, CombineSelection, MergedSelection) +from PhysSelPython.Wrappers import AutomaticData +from StrippingUtils.Utils import LineBuilder +from StrippingConf.StrippingLine import StrippingLine +__author__ = ["Patrik Adlarson", "Artur Ukleja", + "Marian Stahl", "Laurent Dufour"] + +__all__ = ("Xic0ToXiMuNuConf", "default_config") + +moduleName = "Xic0ToXiMuNu" + + +# Import Packages + +# Default configuration dictionary +default_config = { + "NAME": "Xic0ToXiMuNu", + "BUILDERTYPE": "Xic0ToXiMuNuConf", + "CONFIG": { + "descriptor_xi": ["[Xi- -> Lambda0 pi-]cc"], + "descriptor_ximu": ["[Xi_c0 -> Xi- mu+]cc"], + "RequiredRawEvents": ["Velo"], + "bach_pion": { + "tes": "Phys/StdAllNoPIDsPions/Particles", + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)" + }, + "down_pion": { + "tes": "Phys/StdNoPIDsDownPions/Particles", + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)" + }, + "bach_muon": { + "tes": "Phys/StdAllNoPIDsMuons/Particles", + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)" + }, + "lambda_ll": { + "tes": "Phys/StdVeryLooseLambdaLL/Particles", + "filter": """(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) & + (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & + (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)""" + }, + "lambda_dd": { + "tes": "Phys/StdLooseLambdaDD/Particles", + "filter": """(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) & + (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)""" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & + (P>8*GeV) & (PT>400*MeV) """ + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) & + (P>15*GeV) & (PT>600*MeV)""" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) & + (P>15*GeV) & (PT>600*MeV)""" + }, + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "xc0_lll": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)""" + }, + "xc0_ddl": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) """ + }, + "xc0_ddd": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)""" + }, + }, + "STREAMS": { + "CharmCompleteEvent": ["StrippingXic0ToXiMuNu_{0}Line".format(tt) for tt in ["LLL", "DDL", "DDD"]] + }, + "WGs": ["Charm"] +} + + +class Xic0ToXiMuNuConf(LineBuilder): + + __configuration_keys__ = default_config["CONFIG"].keys() + + def __init__(self, moduleName, config): + LineBuilder.__init__(self, moduleName, config) + # decay products + bach_pion = FilterSelection(moduleName+"_bach_pion", [AutomaticData( + config["bach_pion"]["tes"])], Code=config["bach_pion"]["filter"]) + down_pion = FilterSelection(moduleName+"_down_pion", [AutomaticData( + config["down_pion"]["tes"])], Code=config["down_pion"]["filter"]) + bach_muon = FilterSelection(moduleName+"_bach_muon", [AutomaticData( + config["bach_muon"]["tes"])], Code=config["bach_muon"]["filter"]) + lambda_ll = FilterSelection(moduleName+"_lambda_ll", [AutomaticData( + config["lambda_ll"]["tes"])], Code=config["lambda_ll"]["filter"]) + lambda_dd = FilterSelection(moduleName+"_lambda_dd", [AutomaticData( + config["lambda_dd"]["tes"])], Code=config["lambda_dd"]["filter"]) + xi_lll = CombineSelection(moduleName+"_xi_lll", [lambda_ll, bach_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_lll"]["comb_cut"], MotherCut=config["xi_lll"]["mother_cut"]) + xi_ddl = CombineSelection(moduleName+"_xi_ddl", [lambda_dd, bach_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_ddl"]["comb_cut"], MotherCut=config["xi_ddl"]["mother_cut"]) + xi_ddd = CombineSelection(moduleName+"_xi_ddd", [lambda_dd, down_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_ddd"]["comb_cut"], MotherCut=config["xi_ddd"]["mother_cut"]) + # charm baryon candidates; this could look a bit nicer when looping over track types and channels... + + ximu_lll = CombineSelection(moduleName+"_ximu_lll", [xi_lll, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_lll"]["comb_cut"], MotherCut=config["xc0_lll"]["mother_cut"]) + ximu_ddl = CombineSelection(moduleName+"_ximu_ddl", [xi_ddl, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_ddl"]["comb_cut"], MotherCut=config["xc0_ddl"]["mother_cut"]) + ximu_ddd = CombineSelection(moduleName+"_ximu_ddd", [xi_ddd, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_ddd"]["comb_cut"], MotherCut=config["xc0_ddd"]["mother_cut"]) + + # Create the stripping lines + self.registerLine(StrippingLine( + moduleName+"_LLLLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_lll], MDSTFlag=True)) + self.registerLine(StrippingLine( + moduleName+"_DDLLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_ddl], MDSTFlag=True)) + self.registerLine(StrippingLine( + moduleName+"_DDDLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_ddd], MDSTFlag=True)) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu_WS.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu_WS.py new file mode 100644 index 0000000000000000000000000000000000000000..5316c56de5b4af0d70f09cff5751a2fbb68a8f34 --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic0ToXiMuNu_WS.py @@ -0,0 +1,140 @@ +############################################################################### +# (c) Copyright 2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +""" +Stripping lines for Xic0 -> Xi- mu+ nu +The lines are used to complement the inclusive Xi Turbo lines by adding +Velo raw banks to study if the Xi- can be reconstructed as an upstream track. +The wrong sign StrippingLine is needed to understand the background from when Xi- +is wrongly combined with a muon from another event. +""" +from GaudiConfUtils.ConfigurableGenerators import CombineParticles +from Configurables import FilterDesktop +from PhysConf.Selections import ( + FilterSelection, CombineSelection, MergedSelection) +from PhysSelPython.Wrappers import AutomaticData +from StrippingUtils.Utils import LineBuilder +from StrippingConf.StrippingLine import StrippingLine +__author__ = ["Patrik Adlarson", "Artur Ukleja", + "Marian Stahl", "Laurent Dufour"] + +__all__ = ("Xic0ToXiMuNu_WSConf", "default_config") + +moduleName = "Xic0ToXiMuNu_WS" + + +# Import Packages + +# Default configuration dictionary +default_config = { + "NAME": "Xic0ToXiMuNu_WS", + "BUILDERTYPE": "Xic0ToXiMuNu_WSConf", + "CONFIG": { + "descriptor_xi": ["[Xi- -> Lambda0 pi-]cc"], + "descriptor_ximu": ["[Xi_c0 -> Xi- mu-]cc"], + "RequiredRawEvents": ["Velo"], + "bach_pion": { + "tes": "Phys/StdAllNoPIDsPions/Particles", + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)" + }, + "down_pion": { + "tes": "Phys/StdNoPIDsDownPions/Particles", + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)" + }, + "bach_muon": { + "tes": "Phys/StdAllNoPIDsMuons/Particles", + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)" + }, + "lambda_ll": { + "tes": "Phys/StdVeryLooseLambdaLL/Particles", + "filter": """(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) & + (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & + (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)""" + }, + "lambda_dd": { + "tes": "Phys/StdLooseLambdaDD/Particles", + "filter": """(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) & + (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)""" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & + (P>8*GeV) & (PT>400*MeV) """ + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) & + (P>15*GeV) & (PT>600*MeV)""" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": """(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) & + (P>15*GeV) & (PT>600*MeV)""" + }, + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "xc0_lll": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)""" + }, + "xc0_ddl": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) """ + }, + "xc0_ddd": { + "comb_cut": """AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)""", + "mother_cut": """(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)""" + }, + }, + "STREAMS": { + "CharmCompleteEvent": ["StrippingXic0ToXiMuNu_WS_{0}Line".format(tt) for tt in ["LLL", "DDL", "DDD"]] + }, + "WGs": ["Charm"] +} + + +class Xic0ToXiMuNu_WSConf(LineBuilder): + + __configuration_keys__ = default_config["CONFIG"].keys() + + def __init__(self, moduleName, config): + LineBuilder.__init__(self, moduleName, config) + # decay products + bach_pion = FilterSelection(moduleName+"_bach_pion", [AutomaticData( + config["bach_pion"]["tes"])], Code=config["bach_pion"]["filter"]) + down_pion = FilterSelection(moduleName+"_down_pion", [AutomaticData( + config["down_pion"]["tes"])], Code=config["down_pion"]["filter"]) + bach_muon = FilterSelection(moduleName+"_bach_muon", [AutomaticData( + config["bach_muon"]["tes"])], Code=config["bach_muon"]["filter"]) + lambda_ll = FilterSelection(moduleName+"_lambda_ll", [AutomaticData( + config["lambda_ll"]["tes"])], Code=config["lambda_ll"]["filter"]) + lambda_dd = FilterSelection(moduleName+"_lambda_dd", [AutomaticData( + config["lambda_dd"]["tes"])], Code=config["lambda_dd"]["filter"]) + xi_lll = CombineSelection(moduleName+"_xi_lll", [lambda_ll, bach_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_lll"]["comb_cut"], MotherCut=config["xi_lll"]["mother_cut"]) + xi_ddl = CombineSelection(moduleName+"_xi_ddl", [lambda_dd, bach_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_ddl"]["comb_cut"], MotherCut=config["xi_ddl"]["mother_cut"]) + xi_ddd = CombineSelection(moduleName+"_xi_ddd", [lambda_dd, down_pion], DecayDescriptors=config["descriptor_xi"], + CombinationCut=config["xi_ddd"]["comb_cut"], MotherCut=config["xi_ddd"]["mother_cut"]) + # charm baryon candidates; this could look a bit nicer when looping over track types and channels... + + ximu_lll = CombineSelection(moduleName+"_ximu_lll", [xi_lll, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_lll"]["comb_cut"], MotherCut=config["xc0_lll"]["mother_cut"]) + ximu_ddl = CombineSelection(moduleName+"_ximu_ddl", [xi_ddl, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_ddl"]["comb_cut"], MotherCut=config["xc0_ddl"]["mother_cut"]) + ximu_ddd = CombineSelection(moduleName+"_ximu_ddd", [xi_ddd, bach_muon], DecayDescriptors=config["descriptor_ximu"], + CombinationCut=config["amass_ximu"]+config["xc0_ddd"]["comb_cut"], MotherCut=config["xc0_ddd"]["mother_cut"]) + + # Create the stripping lines + self.registerLine(StrippingLine( + moduleName+"_LLLLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_lll], MDSTFlag=True)) + self.registerLine(StrippingLine( + moduleName+"_DDLLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_ddl], MDSTFlag=True)) + self.registerLine(StrippingLine( + moduleName+"_DDDLine", RequiredRawEvents=config["RequiredRawEvents"], algos=[ximu_ddd], MDSTFlag=True)) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic2PHH.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic2PHH.py new file mode 100644 index 0000000000000000000000000000000000000000..ee622d656638017e0165666ca6cc18a4ea8edcff --- /dev/null +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/StrippingXic2PHH.py @@ -0,0 +1,410 @@ +############################################################################### +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +__author__ = ['Hong-Jian Wang'] +__date__ = '07/03/2023' +__version__ = '$Revision: 0.1 $' +__all__ = ('StrippingXic2PHH' + ,'default_config') + +from Gaudi.Configuration import * +from GaudiConfUtils.ConfigurableGenerators import FilterDesktop, CombineParticles +from StandardParticles import StdLoosePions, StdLooseKaons, StdLooseProtons +from StandardParticles import StdLooseKsLL, StdLooseKsDD +from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection +from PhysSelPython.Wrappers import MultiSelectionSequence +from StrippingConf.StrippingLine import StrippingLine +from StrippingUtils.Utils import LineBuilder +from GaudiKernel.SystemOfUnits import MeV, GeV, mm, picosecond +import sys + +default_name='Xic2PHH' + #### This is the dictionary of all tunable cuts ######## +default_config={ + 'NAME' : 'Xic2PHH', + 'WGs' : ['Charm'], + 'BUILDERTYPE' : 'StrippingXic2PHH', + 'STREAMS' : ['Charm'], + 'CONFIG' : { + 'GEC_nLongTrk' : 250 # adimensional + , 'signalPrescaleViaXicPKK' : 1.0 + , 'signalPrescaleViaXicPPhi2KK' : 1.0 + , 'signalPrescaleViaXicPPiPi' : 1.0 + , 'signalPrescaleViaXicPKS0LL' : 1.0 + , 'signalPrescaleViaXicPKS0DD' : 1.0 + , 'TRCHI2DOFMax' : 3.0 + , 'GhostProb' : 0.3 + , 'TrGhostProbMax' : 0.25 # same for all particles + , 'MINIPCHI2' : 4.0 # adimensiional, orig. 9 + , 'PionP' : 3.0*GeV + , 'PionPT' : 500*MeV + , 'PionPIDK' : 10.0 + , 'Pion_PIDpiPIDK_Min' : 0.0 + , 'KaonP' : 2.0*GeV + , 'KaonPT' : 200*MeV + , 'KaonPIDK' : 10.0 + , 'Kaon_PIDKPIDpi_Min' : 5.0 + , 'ProtonP' : 3.0*GeV + , 'ProtonPT' : 500*MeV + , 'Proton_PIDpPIDpi_Min' : 5.0 + , 'Proton_PIDpPIDK_Min' : 0.0 + , 'ProbNNpMin' : 0.2 #ProbNNp cut for proton in L0, to suppress the bkg of L0 + , 'ProbNNp' : 0.4 + , 'ProbNNk' : 0.4 + , 'ProbNNpi' : 0.5 + , 'ProbNNpiMax' : 0.95 + , 'Xic_ADAMASS_HalfWin' : 170.0*MeV + , 'Xic_ADMASS_HalfWin' : 120.0*MeV + , 'Xic_BPVVDCHI2_Min' : 25.0 + , 'Xic_BPVDIRA_Min' : 0.9 + , 'pKK_AM_Min' : 2380.0*MeV + , 'ppipi_AM_Min' : 2380.0*MeV + , 'Xic_AM_Max' : 2550.0*MeV + # KS (DD) + , 'MinKsPT_DD' : 200 * MeV + , 'MaxKsVCHI2NDOF_DD' : 20.0 + , 'MinDz_DD' : 250. * mm + , 'MaxDz_DD' : 9999 * mm + , 'MinKsIpChi2_DD' : 3 + , 'KSCutDIRA_DD' : 0.999 + , 'KSCutMass_DD' : 50 * MeV + , 'KSCutFDChi2_DD' : 5 + # KS (LL) + , 'MinKsPT_LL' : 200 * MeV + , 'MaxKsVCHI2NDOF_LL' : 20.0 + , 'MinDz_LL' : 0 * mm + , 'MaxDz_LL' : 9999 * mm + , 'MinKsIpChi2_LL' : 3 + , 'KSCutDIRA_LL' : 0.999 + , 'KSCutMass_LL' : 35 * MeV + , 'KSCutFDChi2_LL' : 5 + # phi1020 + , 'MinPhiPT' : 200 * MeV + , 'MinPhiP' : 3 * GeV + , 'MinPhiEta' : 2.0 + , 'MaxPhiEta' : 5.0 + , 'BPVIPCHI2_Phi' : 4 + , 'PhiCutMass' : 20 * MeV + } ## end of 'CONFIG' +} ## end of default_config + +#------------------------------------------------------------------------------------------------------------- +class StrippingXic2PHH(LineBuilder) : + __configuration_keys__ = default_config['CONFIG'].keys() + + def __init__(self, name, config) : + LineBuilder.__init__(self, name, config) + self.name = name + self.config = config + + GECs = { "Code":"( recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG) < %(GEC_nLongTrk)s )" % config, + "Preambulo": ["from LoKiTracks.decorators import *"]} + + ########################################################################## + ## Basic particles: K, pi, p + ########################################################################## + self.selKaon = Selection( "SelKfor" + name, + Algorithm = self._kaonFilter("Kfor"+name), + RequiredSelections = [StdLooseKaons]) + + self.selPion = Selection( "SelPifor" + name, + Algorithm = self._pionFilter("Pifor"+name), + RequiredSelections = [StdLoosePions]) + + self.selProton = Selection( "SelPfor" + name, + Algorithm = self._protonFilter("Pfor"+name), + RequiredSelections = [StdLooseProtons]) + ########################################################################## + ## KS0 -> pi+ pi- + ########################################################################## + _stdLooseKs0LL = DataOnDemand("Phys/StdLooseKsLL/Particles") + _stdLooseKs0DD = DataOnDemand("Phys/StdLooseKsDD/Particles") + + self.selKs0LL = Selection("SelKsLL0for"+name, + Algorithm = self._Ks0LLFilter("Ks0LLfor"+name), + RequiredSelections = [_stdLooseKs0LL]) + + self.selKs0DD = Selection("SelKs0DDfor"+name, + Algorithm = self._Ks0DDFilter("Ks0DDfor"+name), + RequiredSelections = [_stdLooseKs0DD]) + ########################################################################## + ## Xi- -> Lambda0 pi- + ########################################################################## + self.phi2KK = self.createCombinationSel(OutputList = "phi2KKfor"+ self.name, + DecayDescriptor = "[phi(1020) -> K+ K-]cc", + DaughterLists = [self.selKaon], + DaughterCuts = {"K+" : "(MIPCHI2DV(PRIMARY)>4) "}, + PreVertexCuts = "(ADAMASS('phi(1020)') < 40*MeV) & (ADOCACHI2CUT(30, ''))", + PostVertexCuts = " (PT > %(MinPhiPT)s) & (P > %(MinPhiP)s)"\ + "& (BPVIPCHI2() > %(BPVIPCHI2_Phi)s)"\ + "& (in_range(%(MinPhiEta)s, ETA, %(MaxPhiEta)s))"\ + "& (ADMASS('phi(1020)') < %(PhiCutMass)s)" % self.config ) + self.Xic2PHHList = self.makeXic2PHH() + + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + # Sub Function + #------------------------------------------------------------------------------------------ + #------------------------------------------------------------------------------------------ + def _pionFilter( self , _name): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(PionP)s) & (PT > %(PionPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK< %(PionPIDK)s)"\ + "& (PROBNNpi > %(ProbNNpi)s)" % self.config + _pi = FilterDesktop(Code = _code ) + return _pi + + def _kaonFilter( self , _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (P>%(KaonP)s) & (PT > %(KaonPT)s)"\ + "& (TRGHOSTPROB< %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PIDK> %(KaonPIDK)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (PROBNNk > %(ProbNNk)s)"\ + "& (HASRICH)&(PIDK-PIDpi>%(Kaon_PIDKPIDpi_Min)s)"% self.config + _ka = FilterDesktop(Code = _code ) + return _ka + + def _protonFilter( self, _name ): + _code = " (TRCHI2DOF < %(TRCHI2DOFMax)s)"\ + "& (PT > %(ProtonPT)s) & (P>%(ProtonP)s)"\ + "& (TRGHOSTPROB < %(TrGhostProbMax)s)"\ + "& (MIPCHI2DV(PRIMARY)> %(MINIPCHI2)s)"\ + "& (PROBNNp > %(ProbNNp)s) & (PROBNNpi < %(ProbNNpiMax)s)"\ + "& (HASRICH)&(PIDp-PIDpi > %(Proton_PIDpPIDpi_Min)s)"\ + "& (HASRICH)&(PIDp-PIDK > %(Proton_PIDpPIDK_Min)s)"% self.config + _pr = FilterDesktop(Code = _code) + return _pr + + def _Ks0LLFilter( self, _name): + _code = " (PT > %(MinKsPT_LL)s)" \ + "& (BPVVDZ > %(MinDz_LL)s ) " \ + "& (BPVVDZ < %(MaxDz_LL)s ) " \ + "& (MIPCHI2DV(PRIMARY) > %(MinKsIpChi2_LL)s) "\ + "& (BPVDIRA > %(KSCutDIRA_LL)s )" \ + "& (ADMASS('KS0') < %(KSCutMass_LL)s)" \ + "& (BPVVDCHI2 > %(KSCutFDChi2_LL)s)" % self.config + _Ks0LL = FilterDesktop(Code = _code) + return _Ks0LL + + def _Ks0DDFilter( self , _name): + _code = " (PT > %(MinKsPT_DD)s)" \ + " & (BPVVDZ > %(MinDz_DD)s ) " \ + " & (BPVVDZ < %(MaxDz_DD)s ) " \ + " & (MIPCHI2DV(PRIMARY) > %(MinKsIpChi2_DD)s) "\ + " & (BPVDIRA > %(KSCutDIRA_DD)s )" \ + " & (ADMASS('KS0') < %(KSCutMass_DD)s)" \ + " & (BPVVDCHI2 > %(KSCutFDChi2_DD)s)" % self.config + _Ks0DD = FilterDesktop(Code = _code) + return _Ks0DD + + ##------------------------------------------------------------------------------------------ + ## -------------------- Begin to makeXic2PHH ------------ + def makeXic2PHH( self ): + #Cut for Basic + + _PreVertexCuts = "(ADAMASS('Xi_c+') < 120*MeV) & (ADOCACHI2CUT(30, ''))" + _PostVertexCuts = "(ADMASS('Xi_c+')<90*MeV)"\ + "& (VFASPF(VCHI2)<25)"\ + "& (P> 1000*MeV) & (PT > 250*MeV)"\ + "& (BPVVDCHI2 > 49.0 )"\ + "& (VFASPF(VCHI2/VDOF) < 12.0)" + + _strCutMothfor = "(BPVVDCHI2>%(Xic_BPVVDCHI2_Min)s)" \ + "& (BPVDIRA>%(Xic_BPVDIRA_Min)s)" % self.config + + _strCutComb_XicMass = "(ADAMASS('Xi_c+') < %(Xic_ADAMASS_HalfWin)s )" % self.config + _strCutMoth_XicMass = "(ADMASS('Xi_c+') < %(Xic_ADMASS_HalfWin)s)" % self.config + + _strCutMothforXicPlus = _strCutMothfor + '&' + _strCutMoth_XicMass + '&' + _PostVertexCuts + + _strCutComb_MassPKK = "(AM>%(pKK_AM_Min)s) & (AM<%(Xic_AM_Max)s)" % self.config + _strCutComb_MassPPiPi = "(AM>%(ppipi_AM_Min)s) & (AM<%(Xic_AM_Max)s)" % self.config + + _strCutComb_Xic2PKK = _strCutComb_XicMass + '&' + _strCutComb_MassPKK + '&' + _PreVertexCuts + _strCutComb_Xic2PPiPi = _strCutComb_XicMass + '&' + _strCutComb_MassPPiPi + '&' + _PreVertexCuts + _strCutMothPHH = _strCutMothforXicPlus + + ''' Stripping Xi_c+ -> p+ K+ K- ''' + Xic2PKK = self.createCombinationSel(OutputList = "Xic2PKK" + self.name, + DecayDescriptor = "[Xi_c+ -> p+ K+ K-]cc", + DaughterLists = [self.selProton, self.selKaon], + PreVertexCuts = _strCutComb_Xic2PKK, + PostVertexCuts = _strCutMothPHH ) + Xic2PKKLine = StrippingLine( self.name + "Xicp2PKKLine", + prescale = self.config['signalPrescaleViaXicPKK'], + algos = [ Xic2PKK ], + EnableFlavourTagging = False, + RelatedInfoTools = self._getRelInfoXic2PKK() ) + self.registerLine (Xic2PKKLine) + + ''' Stripping Xi_c+ -> p+ (phi(1020) -> K+ K-) ''' + Xic2PPhi2KK = self.createCombinationSel(OutputList = "Xic2PPhi2KK" + self.name, + DecayDescriptor = "[Xi_c+ -> p+ phi(1020)]cc", + DaughterLists = [self.selProton, self.phi2KK], + PreVertexCuts = _strCutComb_Xic2PKK, + PostVertexCuts = _strCutMothPHH ) + Xic2PPhi2KKLine = StrippingLine( self.name + "Xicp2PPhi2KKLine", + prescale = self.config['signalPrescaleViaXicPPhi2KK'], + algos = [ Xic2PPhi2KK ], + EnableFlavourTagging = False, + RelatedInfoTools = self._getRelInfoXic2PPhi2KK() ) + self.registerLine (Xic2PPhi2KKLine) + + ''' Stripping Xi_c+ -> p+ pi+ pi-''' + Xic2PPiPi = self.createCombinationSel(OutputList = "Xic2PPiPi" + self.name, + DecayDescriptor = "[Xi_c+ -> p+ pi+ pi-]cc", + DaughterLists = [self.selProton, self.selPion], + PreVertexCuts = _strCutComb_Xic2PPiPi, + PostVertexCuts = _strCutMothPHH ) + Xic2PPiPiLine = StrippingLine( self.name + "Xicp2PPiPiLine", + prescale = self.config['signalPrescaleViaXicPPiPi'], + algos = [ Xic2PPiPi ], + EnableFlavourTagging = False, + RelatedInfoTools = self._getRelInfoXic2PPiPi() ) + self.registerLine (Xic2PPiPiLine) + + ''' Stripping Xi_c+ -> p+ KS0(LL)''' + Xic2PKS0LL = self.createCombinationSel(OutputList = "Xic2PKS0LL" + self.name, + DecayDescriptor = "[Xi_c+ -> p+ KS0]cc", + DaughterLists = [self.selProton, self.selKs0LL], + PreVertexCuts = _strCutComb_Xic2PPiPi, + PostVertexCuts = _strCutMothPHH ) + Xic2PKS0LLLine = StrippingLine( self.name + "Xicp2PKS0LLLine", + prescale = self.config['signalPrescaleViaXicPKS0LL'], + algos = [ Xic2PKS0LL ], + EnableFlavourTagging = False, + RelatedInfoTools = self._getRelInfoXic2PKS0() ) + self.registerLine (Xic2PKS0LLLine) + + ''' Stripping Xi_c+ -> p+ KS0(DD)''' + Xic2PKS0DD = self.createCombinationSel(OutputList = "Xic2PKS0D" + self.name, + DecayDescriptor = "[Xi_c+ -> p+ KS0]cc", + DaughterLists = [self.selProton, self.selKs0DD], + PreVertexCuts = _strCutComb_Xic2PPiPi, + PostVertexCuts = _strCutMothPHH ) + Xic2PKS0DDLine = StrippingLine( self.name + "Xicp2PKS0DDLine", + prescale = self.config['signalPrescaleViaXicPKS0DD'], + algos = [ Xic2PKS0DD ], + EnableFlavourTagging = False, + RelatedInfoTools = self._getRelInfoXic2PKS0() ) + self.registerLine (Xic2PKS0DDLine) + + ## -------------------- end of makeXic2PHH ------------ + ##------------------------------------------------------------------------------------------ + + ########################################################################## + ## Basic Function + ########################################################################## + def createSubSel( self, OutputList, InputList, Cuts ) : + '''create a selection using a FilterDesktop''' + filter = FilterDesktop(Code = Cuts) + return Selection( OutputList, + Algorithm = filter, + RequiredSelections = [ InputList ] ) + + def createCombinationSel( self, OutputList, + DecayDescriptor, + DaughterLists, + DaughterCuts = {} , + PreVertexCuts = "ALL", + PostVertexCuts = "ALL") : + '''create a selection using a ParticleCombiner with a single decay descriptor''' + combiner = CombineParticles( DecayDescriptor = DecayDescriptor, + DaughtersCuts = DaughterCuts, + MotherCut = PostVertexCuts, + CombinationCut = PreVertexCuts, + ReFitPVs = True) + return Selection ( OutputList, + Algorithm = combiner, + RequiredSelections = DaughterLists) + #print "DEBUG here is :",__file__,sys._getframe().f_lineno + + def _getRelInfoXic2PKK(self): + relInfo = [] + for coneAngle in [0.8,1.0,1.3,1.7]: + conestr = str(coneAngle).replace('.','') + relInfo += [ + { "Type" : "RelInfoConeVariables", + "ConeAngle" : coneAngle, + "Variables" : ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'], + "DaughterLocations" : { + "^[Xi_c+ -> p+ K+ K-]CC" : 'P2ConeVar%s_Xic' % conestr, + "[Xi_c+ -> ^p+ K+ K-]CC" : 'P2ConeVar%s_proton' % conestr, + "[Xi_c+ -> p+ ^K+ K-]CC" : 'P2ConeVar%s_K1' % conestr, + "[Xi_c+ -> p+ K+ ^K-]CC" : 'P2ConeVar%s_K2' % conestr } } + ] + relInfo += [ { "Type" : "RelInfoVertexIsolation", + "DaughterLocations" : { + "^[Xi_c+ -> p+ K+ K-]CC" : 'VertexIsoInfo_Xic'} } ] + return relInfo + + def _getRelInfoXic2PPhi2KK(self): + relInfo = [] + for coneAngle in [0.8,1.0,1.3,1.7]: + conestr = str(coneAngle).replace('.','') + relInfo += [ + { "Type" : "RelInfoConeVariables", + "ConeAngle" : coneAngle, + "Variables" : ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'], + "DaughterLocations" : { + "^[Xi_c+ -> p+ (phi(1020) -> K+ K-)]CC" : 'P2ConeVar%s_Xic' % conestr, + "[Xi_c+ -> ^p+ (phi(1020) -> K+ K-)]CC" : 'P2ConeVar%s_proton' % conestr, + "[Xi_c+ -> p+ ^(phi(1020) -> K+ K-)]CC" : 'P2ConeVar%s_phi' % conestr, + "[Xi_c+ -> p+ (phi(1020) -> ^K+ K-)]CC" : 'P2ConeVar%s_K1' % conestr, + "[Xi_c+ -> p+ (phi(1020) -> K+ ^K-)]CC" : 'P2ConeVar%s_K2' % conestr } } + ] + relInfo += [ { "Type" : "RelInfoVertexIsolation", + "DaughterLocations" : { + "^[Xi_c+ -> p+ (phi(1020) -> K+ K-)]CC" : 'VertexIsoInfo_Xic', + "[Xi_c+ -> p+ ^(phi(1020) -> K+ K-)]CC" : 'VertexIsoInfo_phi'} } ] + return relInfo + + def _getRelInfoXic2PPiPi(self): + relInfo = [] + for coneAngle in [0.8,1.0,1.3,1.7]: + conestr = str(coneAngle).replace('.','') + relInfo += [ + { "Type" : "RelInfoConeVariables", + "ConeAngle" : coneAngle, + "Variables" : ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'], + "DaughterLocations" : { + "^[Xi_c+ -> p+ pi+ pi-]CC" : 'P2ConeVar%s_Xic' % conestr, + "[Xi_c+ -> ^p+ pi+ pi-]CC" : 'P2ConeVar%s_proton' % conestr, + "[Xi_c+ -> p+ ^pi+ pi-]CC" : 'P2ConeVar%s_pi1' % conestr, + "[Xi_c+ -> p+ pi+ ^pi-]CC" : 'P2ConeVar%s_pi2' % conestr } } + ] + relInfo += [ { "Type" : "RelInfoVertexIsolation", + "DaughterLocations" : { + "^[Xi_c+ -> p+ pi+ pi-]CC" : 'VertexIsoInfo_Xic'} } ] + return relInfo + + def _getRelInfoXic2PKS0(self): + relInfo = [] + for coneAngle in [0.8,1.0,1.3,1.7]: + conestr = str(coneAngle).replace('.','') + relInfo += [ + { "Type" : "RelInfoConeVariables", + "ConeAngle" : coneAngle, + "Variables" : ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'], + "DaughterLocations" : { + "^[Xi_c+ -> p+ (KS0 -> pi+ pi-)]CC" : 'P2ConeVar%s_Xic' % conestr, + "[Xi_c+ -> ^p+ (KS0 -> pi+ pi-)]CC" : 'P2ConeVar%s_proton' % conestr, + "[Xi_c+ -> p+ ^(KS0 -> pi+ pi-)]CC" : 'P2ConeVar%s_KS0' % conestr, + "[Xi_c+ -> p+ (KS0 -> ^pi+ pi-)]CC" : 'P2ConeVar%s_pi1' % conestr, + "[Xi_c+ -> p+ (KS0 -> pi+ ^pi-)]CC" : 'P2ConeVar%s_pi2' % conestr } } + ] + relInfo += [ { "Type" : "RelInfoVertexIsolation", + "DaughterLocations" : { + "^[Xi_c+ -> p+ (KS0 -> pi+ pi-)]CC" : 'VertexIsoInfo_Xic', + "[Xi_c+ -> p+ ^(KS0 -> pi+ pi-)]CC" : 'VertexIsoInfo_KS0'} } ] + return relInfo diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/__init__.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/__init__.py index a49a51f04431f7a05e9a2dc1a9a8ba426e1e7716..131e42f4ae5707b27269b490fa218ec29af56c97 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/__init__.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingCharm/__init__.py @@ -9,7 +9,21 @@ # or submit itself to any jurisdiction. # ############################################################################### -_selections = ('StrippingLambdacForNeutronPID', 'StrippingXiccSL','StrippingD2KPiPiMuNu','StrippingBs2st2pKpipipi', 'StrippingDstarD2KSHHPi0','StrippingCharmFromBSemi', 'StrippingXcpToXiPipHp', 'StrippingLambdac2V0H', 'StrippingNeutralCBaryons', 'StrippingD2HMuNu', 'StrippingXcpToLambdaKSHp', 'StrippingDstarD2XGamma', 'StrippingCharmedBaryonSL' ) +_selections = ( 'StrippingXic0ToXiMuNu', + 'StrippingXic0ToXiMuNu_WS', + 'StrippingDstarD02ETau', + 'StrippingCharm2PPX', + 'StrippingCharmedBaryonSL', + 'StrippingCharmedMesonSL', + 'StrippingLambdac2LambdaEtaPi', + 'StrippingNeutralCBaryons', + 'StrippingXib2Xic0PiXic02pK', + 'StrippingHc2V2H', + 'StrippingHc2V3H', + 'StrippingHc2V02H', + 'StrippingHc2V03H', + 'StrippingXic2PHH', + 'StrippingLambdac2PEta' ) for _sel in _selections : try : diff --git a/Phys/StrippingSettings/python/StrippingSettings/Stripping28r2p2/LineConfigDictionaries_Charm.py b/Phys/StrippingSettings/python/StrippingSettings/Stripping28r2p2/LineConfigDictionaries_Charm.py index 759f4f0ebef538abf99beff2691d1127ebc2e0b2..3c77505f5047c0dd5f764b36c644a37a4be0ab02 100644 --- a/Phys/StrippingSettings/python/StrippingSettings/Stripping28r2p2/LineConfigDictionaries_Charm.py +++ b/Phys/StrippingSettings/python/StrippingSettings/Stripping28r2p2/LineConfigDictionaries_Charm.py @@ -16,3 +16,937 @@ ## Contact person: Sergio Jaimes (sergio.jaimes@cern.ch) ## ################################################################################ +Charm2PPX = { + "BUILDERTYPE": "StrippingCharm2PPXConf", + "CONFIG": { + "Comb_ADOCACHI2_MAX": 16, + "Daug_1ofAll_BPVIPCHI2_MIN": 9.0, + "Daug_1ofAll_PT_MIN": 700.0, + "Daug_All_BPVIPCHI2_MIN": 4.0, + "Daug_All_CloneDist_MIN": 5000, + "Daug_All_MIPCHI2_MIN": 4.0, + "Daug_All_PT_MIN": 200.0, + "Daug_All_TrChostProb_MAX": 0.5, + "Daug_ETA_MAX": 4.9, + "Daug_ETA_MIN": 2.0, + "Daug_P_MAX": 100000.0, + "Daug_P_MIN": 3200.0, + "Hc_BPVCTAU_MIN": 0.05, + "Hc_BPVVDCHI2_MIN": 9.0, + "Hc_MASS_MAX": 3500.0, + "Hc_PT_MIN": 1000.0, + "Hc_VCHI2VDOF_MAX": 25.0, + "Hcs_MASS_MAX": 3650.0, + "Hlt1Filter": None, + "Hlt2Filter": None, + "HsComb_ADOCACHI2_MAX": 16, + "HsDaug_1ofAll_BPVIPCHI2_MIN": 9.0, + "HsDaug_1ofAll_PT_MIN": -500.0, + "HsDownDaug_1ofAll_BPVIPCHI2_MIN": -9.0, + "HsDown_BPVVDCHI2_MIN": 4.0, + "HsProton_1ofAll_ProbNN_MIN": 0.5, + "Hs_BPVCTAU_MIN": 0.1, + "Hs_BPVVDCHI2_MIN": 9.0, + "Hs_MASS_MAX": 2125.0, + "Hs_PT_MIN": -1000.0, + "Hs_VCHI2VDOF_MAX": 25.0, + "Kaon_ProbNN_MIN": 0.1, + "Lam_MASS_MAX": 1170.0, + "Lc_MASS_MAX": 2350.0, + "Pc_MASS_MAX": 3100.0, + "Pion_ProbNN_MIN": 0.1, + "PostscaleHc2LamPPi": 1.0, + "PostscaleHc2LamPPiPi": 1.0, + "PostscaleHc2PP": 1.0, + "PostscaleHc2PPK": 1.0, + "PostscaleHc2PPKPi": 1.0, + "PostscaleHc2PPKPiPi": 1.0, + "PostscaleHc2PPKs": 1.0, + "PostscaleHc2PPKsPi": 1.0, + "PostscaleHcs2LamLamPi": 1.0, + "PostscaleHcs2LamPKPi": 1.0, + "PostscaleHcs2PPKKPi": 1.0, + "PostscaleHcs2PPKsK": 1.0, + "PostscaleHs2PPPi": 1.0, + "PostscaleL2PPi": 1.0, + "PostscaleLc2PKPi": 1.0, + "PostscalePc2PKPiPi": 1.0, + "PostscalePc2PKsPi": 1.0, + "PostscalePs2PPiPi": 1.0, + "PrescaleHc2LamPPi": 1.0, + "PrescaleHc2LamPPiPi": 1.0, + "PrescaleHc2PP": 1.0, + "PrescaleHc2PPK": 1.0, + "PrescaleHc2PPKPi": 1.0, + "PrescaleHc2PPKPiPi": 1.0, + "PrescaleHc2PPKs": 1.0, + "PrescaleHc2PPKsPi": 1.0, + "PrescaleHcs2LamLamPi": 1.0, + "PrescaleHcs2LamPKPi": 1.0, + "PrescaleHcs2PPKKPi": 1.0, + "PrescaleHcs2PPKsK": 1.0, + "PrescaleHs2PPPi": 1.0, + "PrescaleL2PPi": 0.01, + "PrescaleLc2PKPi": 0.01, + "PrescalePc2PKPiPi": 0.1, + "PrescalePc2PKsPi": 0.1, + "PrescalePs2PPiPi": 0.1, + "Proton_1ofAll_ProbNN_MIN": 0.5, + "Proton_PT_MIN": 300.0, + "Proton_P_MIN": 10000.0, + "Proton_ProbNN_MIN": 0.1, + "Proton_ProbNNk_MAX": 0.8, + "Proton_ProbNNpi_MAX": 0.55, + "Ps_MASS_MAX": 1650.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +CharmedBaryonSL = { + "BUILDERTYPE": "StrippingCharmedBaryonSL", + "CONFIG": { + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 500.0, + "KaonPT_ForOm": 100.0, + "KaonP_ForOm": 2000.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "L0Mu_AM_Min": 1250.0, + "LambdaCutDIRA": 0.99, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 20.0, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDPMin": 5000.0, + "LambdaDDPTMin": 800.0, + "LambdaDaugTrackChi2": 4.0, + "LambdaLDCutFDChi2": 100.0, + "LambdaLDCutMass": 20.0, + "LambdaLDPMin": 3000.0, + "LambdaLDPTMin": 800.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 20.0, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinVZ": -100.0, + "LambdaLLPMin": 5000.0, + "LambdaLLPTMin": 800.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "LambdaVertexChi2": 5.0, + "Lc_ADMASS_HalfWin": 80.0, + "Lc_ADMASS_HalfWin_Tight": 55.0, + "Lc_ADOCAMAX_Max": 0.5, + "Lc_ADOCAMAX_Max_Tight": 0.15, + "Lc_AM_Max": 2370.0, + "Lc_APT_Min": 1000.0, + "Lc_APT_Min_Tight_PKMu": 1600.0, + "Lc_APT_Min_Tight_PPiMu": 1600.0, + "Lc_AP_Min_Tight": 25000.0, + "Lc_BPVDIRA_Min": 0.9, + "Lc_BPVDIRA_Min_Tight": 0.99, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDCHI2_Min_Tight": 25.0, + "Lc_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Lc_Daug_1of3_MIPCHI2DV_Min_Tight": 9.0, + "Lc_VCHI2_Max": 30.0, + "Lc_VCHI2_Max_Tight": 20.0, + "MINIPCHI2": 4.0, + "MisID_PROB_Max": 0.7, + "MuonIPCHI2": 5.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 500.0, + "Oc_AM_Max": 2780.0, + "OmMu_AM_Min": 1780.0, + "Omegac0_4Dau_VCHI2_Max": 60.0, + "Omegac0_ADAMASS_HalfWin": 170.0, + "Omegac0_ADMASS_HalfWin": 120.0, + "Omegac0_BPVDIRA_Min": 0.9, + "Omegac0_BPVVDCHI2_Min": 25.0, + "P_Min_Tight": 3500.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "PionPT_ForXi": 100.0, + "PionP_ForXi": 2000.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "XiMu_AM_Min": 1430.0, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "controlPrescaleViaLcL0DDPiNC": 0.8, + "controlPrescaleViaLcL0LLPiNC": 0.4, + "controlPrescaleViaLcPKPiNC": 0.09, + "controlPrescaleViaLcPKPiNC_Tight": 0.5, + "controlPrescaleViaLcPPiPiNC": 0.06, + "controlPrescaleViaLcPPiPiNC_Tight": 0.5, + "controlPrescaleViaOmegac0NC": 1.0, + "controlPrescaleViaXicL0DDPiNC": 0.8, + "controlPrescaleViaXicL0LLPiNC": 0.4, + "controlPrescaleViaXicXiPiNC": 1.0, + "pKMu_AM_Min": 1550.0, + "ppiMu_AM_Min": 1200.0, + "signalPrescaleViaLc": 1.0, + "signalPrescaleViaLcL0DDMuNu": 0.8, + "signalPrescaleViaLcPKMuNu_Tight": 1.0, + "signalPrescaleViaLcPPiMuNu": 0.25, + "signalPrescaleViaLcPPiMuNu_Tight": 1.0, + "signalPrescaleViaOmegac0": 1.0, + "signalPrescaleViaXic": 1.0, + "signalPrescaleViaXicL0DDMuNu": 0.8, + "signalPrescaleViaXicL0LLMuNu": 0.8 + }, + "STREAMS": [ "CharmCompleteEvent" ], + "WGs": [ "Charm" ] +} + +CharmedMesonSL = { + "BUILDERTYPE": "StrippingCharmedMesonSL", + "CONFIG": { + "B0SL_M_Max": 5600.0, + "B0SL_M_Min": 2800.0, + "B0_M_Max": 5600.0, + "B0_M_Min": 5100.0, + "B_APT_Min": 1500.0, + "B_AP_Min": 20000.0, + "B_BPVDIRA_Min": 0.95, + "B_BPVVDCHI2_Min": 16, + "B_VCHI2_Max": 30, + "BpSL_M_Max": 5700.0, + "BpSL_M_Min": 3000.0, + "Bp_M_Max": 5500.0, + "Bp_M_Min": 5100.0, + "D0SL_AM_Max": 1960.0, + "D0_ADMASS_Max": 1900.0, + "D0_ADMASS_Min": 1820.0, + "DpSL_AM_Max": 2080.0, + "Dp_ADMASS_Max": 2030.0, + "Dp_ADMASS_Min": 1800.0, + "Dp_ADOCAMAX_Max": 0.25, + "Dp_APT_Min": 1200.0, + "Dp_AP_Min": 20000.0, + "Dp_BPVDIRA_Min": 0.95, + "Dp_BPVVDCHI2_Min": 16.0, + "Dp_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Dp_VCHI2_Max": 30.0, + "EtaPiMu_AM_Min": 800.0, + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KKMu_AM_Min": 1100.0, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PiKKMu_AM_Min": 1240.0, + "PiPiMu_AM_Min": 400.0, + "PiPiPiMu_AM_Min": 530.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "controlPrescaleViaD02KKpipi": 1.0, + "controlPrescaleViaD02etapipi": 1.0, + "controlPrescaleViaD02pipipipi": 1.0, + "controlPrescaleViaD2KKpi": 1.0, + "controlPrescaleViaD2pipipi": 1.0, + "signalPrescaleViaD02KKpimunu": 1.0, + "signalPrescaleViaD02etapimunu": 1.0, + "signalPrescaleViaD02pipipimunu": 1.0, + "signalPrescaleViaD2KKmunu": 1.0, + "signalPrescaleViaD2pipimunu": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +DstarD02ETau = { + "BUILDERTYPE": "StrippingDstarD02ETauConf", + "CONFIG": { + "CUTBASED_MCORR_B_HIGH": "8600", + "CUTBASED_MCORR_B_LOW": "3600", + "CUTBASED_MCORR_D0_HIGH": "8000", + "CUTBASED_MCORR_D0_LOW": "1000", + "CUTBASED_MISS_MASS": "876", + "CUTBASED_MISS_MASS_HIGH": "250", + "CUTBASED_MISS_MASS_HIGH_KTHREEPI": "1500", + "CUTBASED_MISS_MASS_LOW": "0", + "CUTBASED_M_B": "2865", + "CUTBASED_M_D0_HIGH": "2000", + "CUTBASED_M_D0_LOW": "500", + "CUTBASED_M_TAU_HIGH": "1592", + "CUTBASED_M_TAU_LOW": "829", + "CUTBASED_PROBNNE_E": "0.1", + "CUTBASED_PROBNNK_K": "0.2", + "CUTBASED_PROBNNPI_THREE_PI": "0.5", + "CUTBASED_TAU_BPVVDCHI2": "16", + "CUTBASED_TAU_BPVVDRHO": "0.33", + "CUTBASED_TAU_BPVVDRHO_HIGH": "7", + "CUTBASED_TAU_BPVVDRHO_LOW": "0.05", + "CUTBASED_TAU_BPVVDZ": "0.5", + "CUTBASED_TAU_TAU_HIGH": "3", + "CUTBASED_TAU_TAU_LOW": "-2.5", + "CUTBASED_TAU_VCHI2": "16", + "CUTBASED_VCHI2_TAU": "20.6", + "ConeAngles": { + "08": 0.8, + "10": 1.0, + "12": 1.2, + "14": 1.4 + }, + "ConeVariables": [ + "CONEANGLE", + "CONEMULT", + "CONEPTASYM" + ], + "DstD0DMWin_HIGH": "100.", + "DstD0DMWin_LOW": "-10.", + "DstMassWin_HIGH": "100.", + "DstMassWin_LOW": "-1250.", + "DstmVtxChi2": "10.", + "HLT_DECISIONS_HAD": { + "Hlt2Topo(2|3|4)Body.*Decision%TOS": 0 + }, + "MINIPCHI2BPV_E": "16", + "MINIPCHI2BPV_PI_FROM_DTSM": "10", + "MINIPCHI2BPV_THREE_PI": "16", + "MINIPCHI2PV_D0": "50", + "PROBNNGHOST_E": "0.4", + "PROBNNGHOST_THREE_PI": "0.4", + "PT_D0": "1000", + "PT_E": "110", + "PT_PI_FROM_DTSM": "110", + "PT_THREE_PI": "110", + "P_D0": "2000", + "P_E": "0", + "P_THREE_PI": "500", + "PrescaleETauBox": 1.0, + "PrescaleETauSSBox": 1.0, + "PrescaleK3piBox": 0.025, + "PrescaleK3piSSBox": 0.025, + "RelInfoTools_D02ETau": [ + { + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_VertexIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_ConeIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "RelInfoTools_D02K3pi": [ + { + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "TAU_AMAXDOCA_PIS": "0.2", + "TAU_BPVDIRA": "-1.", + "TAU_M_HIGH": "2100", + "TAU_M_HIGH_COMB": "2100", + "TAU_M_LOW": "400", + "TAU_M_LOW_COMB": "400", + "TAU_PT": "700.", + "TRACKCHI2_E": "4", + "TRACKCHI2_PI_FROM_DTSM": "7", + "TRACKCHI2_THREE_PI": "4", + "TRGHOPROB_E": "0.4", + "TRGHOPROB_THREE_PI": "0.4", + "prefix": "" + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +#Hc2V02H = { +# "BUILDERTYPE": "StrippingHc2V02HConf", +# "CONFIG": { +# "Bach_PT_MIN": 250.0, +# "Bach_P_MIN": 2000.0, +# "Comb_ADAMASS_WIN": 120.0, +# "Comb_ADOCAMAX_MAX": 0.4, +# "Hlt1Filter": None, +# "Hlt2Filter": None, +# "Lambda0_FDCHI2_MIN_DD": 4, +# "Lambda0_FDCHI2_MIN_LL": 4, +# "Lambda0_PT_MIN": 250.0, +# "Lambda0_P_MIN": 6000.0, +# "Lambda0_VCHI2VDOF_MAX_DD": 25.0, +# "Lambda0_VCHI2VDOF_MAX_LL": 12.0, +# "LambdaMinFD_DD": 500.0, +# "LambdaMinFD_LL": 5.0, +# "MIPCHI2DV_PRIMARY_Min": 2, +# "PostscaleXic2LambdaKKDD": 1.0, +# "PostscaleXic2LambdaKKLL": 1.0, +# "PostscaleXic2LambdaKPiDD": 1.0, +# "PostscaleXic2LambdaKPiLL": 1.0, +# "PostscaleXic2LambdaPiKDD": 1.0, +# "PostscaleXic2LambdaPiKLL": 1.0, +# "PostscaleXic2LambdaPiPiDD": 1.0, +# "PostscaleXic2LambdaPiPiLL": 1.0, +# "PrescaleXic2LambdaKKDD": 1.0, +# "PrescaleXic2LambdaKKLL": 1.0, +# "PrescaleXic2LambdaKPiDD": 1.0, +# "PrescaleXic2LambdaKPiLL": 1.0, +# "PrescaleXic2LambdaPiKDD": 1.0, +# "PrescaleXic2LambdaPiKLL": 1.0, +# "PrescaleXic2LambdaPiPiDD": 1.0, +# "PrescaleXic2LambdaPiPiLL": 1.0, +# "ProbNNkMin": 0.1, +# "ProbNNpMin_L0_DD": 0.1, +# "ProbNNpMin_L0_LL": 0.1, +# "ProbNNpiMin": 0.1, +# "ProbNNpiMin_L0_DD": 0.1, +# "ProbNNpiMin_L0_LL": 0.1, +# "TrGhostProbMax": 0.3, +# "Xic_ADMASS_WIN": 90.0, +# "Xic_PT_min": 250.0, +# "Xic_P_min": 10000.0, +# "Xic_VCHI2VDOF_MAX_DD": 3.0, +# "Xic_VCHI2VDOF_MAX_LL": 3.0, +# "Xic_acosBPVDIRA_MAX_DD": 0.0316, +# "Xic_acosBPVDIRA_MAX_LL": 0.02, +# "p_L0_PT_LL_min": 100.0, +# "p_L0_P_LL_min": 2000.0, +# "pi_L0_PT_LL_min": 100.0, +# "pi_L0_P_LL_min": 2000.0 +# }, +# "STREAMS": [ "Charm" ], +# "WGs": [ "Charm" ] +#} + +Hc2V03H = { + "BUILDERTYPE": "StrippingHc2V03HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 90.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 500.0, + "Lambda0_P_MIN": 10000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 200.0, + "LambdaMinFD_LL": 25.0, + "Lambdac_ADMASS_WIN": 75.0, + "Lambdac_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Lambdac_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Lambdac_VCHI2VDOF_MAX_DD": 3.0, + "Lambdac_VCHI2VDOF_MAX_LL": 3.0, + "Lambdac_acosBPVDIRA_MAX_DD": 0.045, + "Lambdac_acosBPVDIRA_MAX_LL": 0.14, + "PostscaleLambdac2Lambda3PiDD": 1.0, + "PostscaleLambdac2Lambda3PiLL": 1.0, + "PostscaleLambdac2LambdaK2PiDD": 1.0, + "PostscaleLambdac2LambdaK2PiLL": 1.0, + "PostscaleXic2LambdaK2PiDD": 1.0, + "PostscaleXic2LambdaK2PiLL": 1.0, + "PrescaleLambdac2Lambda3PiDD": 1.0, + "PrescaleLambdac2Lambda3PiLL": 1.0, + "PrescaleLambdac2LambdaK2PiDD": 1.0, + "PrescaleLambdac2LambdaK2PiLL": 1.0, + "PrescaleXic2LambdaK2PiDD": 1.0, + "PrescaleXic2LambdaK2PiLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 75.0, + "Xic_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DD": 3.0, + "Xic_VCHI2VDOF_MAX_LL": 3.0, + "Xic_acosBPVDIRA_MAX_DD": 0.045, + "Xic_acosBPVDIRA_MAX_LL": 0.14 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V2H = { + "BUILDERTYPE": "StrippingHc2V2HConf", + "CONFIG": { + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hc_ADMASS_WIN": 90.0, + "Hc_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Hc_PVDispCut_DDL": "(BPVVDCHI2 > 16.0)", + "Hc_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Hc_VCHI2VDOF_MAX_DDD": 12.0, + "Hc_VCHI2VDOF_MAX_DDL": 12.0, + "Hc_VCHI2VDOF_MAX_LLL": 12.0, + "Hc_acosBPVDIRA_MAX_DDD": 0.14, + "Hc_acosBPVDIRA_MAX_DDL": 0.045, + "Hc_acosBPVDIRA_MAX_LLL": 0.14, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 0.0, + "LambdaMinFD_LL": 25.0, + "PostscaleLambdac2XiKPiDDD": 1.0, + "PostscaleLambdac2XiKPiDDL": 1.0, + "PostscaleLambdac2XiKPiLLL": 1.0, + "PostscaleXic2XiPiPiDDD": 1.0, + "PostscaleXic2XiPiPiDDL": 1.0, + "PostscaleXic2XiPiPiLLL": 1.0, + "PrescaleLambdac2XiKPiDDD": 1.0, + "PrescaleLambdac2XiKPiDDL": 1.0, + "PrescaleLambdac2XiKPiLLL": 1.0, + "PrescaleXic2XiPiPiDDD": 1.0, + "PrescaleXic2XiPiPiDDL": 1.0, + "PrescaleXic2XiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xim_FDCHI2_MIN": 16, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V3H = { + "BUILDERTYPE": "StrippingHc2V3HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 200.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 25, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "PostscaleXic2XimPiPiPiDDD": 1.0, + "PostscaleXic2XimPiPiPiDDL": 1.0, + "PostscaleXic2XimPiPiPiLLL": 1.0, + "PrescaleXic2XimPiPiPiDDD": 1.0, + "PrescaleXic2XimPiPiPiDDL": 1.0, + "PrescaleXic2XimPiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 90.0, + "Xic_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_DDL": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DDD": 5.0, + "Xic_VCHI2VDOF_MAX_DDL": 5.0, + "Xic_VCHI2VDOF_MAX_LLL": 5.0, + "Xic_acosBPVDIRA_MAX_DDD": 0.14, + "Xic_acosBPVDIRA_MAX_DDL": 0.14, + "Xic_acosBPVDIRA_MAX_LLL": 0.14, + "Xim_FDCHI2_MIN": 9, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2LambdaEtaPi = { + "BUILDERTYPE": "StrippingLambdac2LambdaEtaPi", + "CONFIG": { + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 50.0, + "LambdaDDPMin": 2000.0, + "LambdaDDPTMin": 500.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 50.0, + "LambdaLLPMin": 2000.0, + "LambdaLLPTMin": 500.0, + "LambdaVertexChi2": 10.0, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2PEta = { + "BUILDERTYPE": "StrippingLambdac2PEta", + "CONFIG": { + "GEC_nLongTrk": 160, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_BPVVDZ_Min": 0.7, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "ProbNNp": 0.4, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +NeutralCBaryons = { + "BUILDERTYPE": "StrippingNeutralCBaryonsConf", + "CONFIG": { + "Bachelor_PT_MIN": 50.0, + "KaonPIDK": -5.0, + "LambdaDDMassWin": 5.7, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDVtxChi2Max": 5.0, + "LambdaDeltaZ_MIN": 5.0, + "LambdaLLMassWin": 5.7, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinDecayTime": 0.005, + "LambdaLLMinVZ": -100.0, + "LambdaLLVtxChi2Max": 5.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "ProbNNpMinDD": 0.05, + "ProbNNpMinLL": 0.1, + "ProtonPIDp": 5, + "ProtonPIDpK": -3, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xib2Xic0PiXic02pK = { + "BUILDERTYPE": "StrippingXib2Xic0PiXic02pKConf", + "CONFIG": { + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu = { + "BUILDERTYPE": "Xic0ToXiMuNuConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu+]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_LLLLine", + "StrippingXic0ToXiMuNu_DDLLine", + "StrippingXic0ToXiMuNu_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu_WS = { + "BUILDERTYPE": "Xic0ToXiMuNu_WSConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu-]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_WS_LLLLine", + "StrippingXic0ToXiMuNu_WS_DDLLine", + "StrippingXic0ToXiMuNu_WS_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic2PHH = { + "BUILDERTYPE": "StrippingXic2PHH", + "CONFIG": { + "BPVIPCHI2_Phi": 4, + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KSCutDIRA_DD": 0.999, + "KSCutDIRA_LL": 0.999, + "KSCutFDChi2_DD": 5, + "KSCutFDChi2_LL": 5, + "KSCutMass_DD": 50.0, + "KSCutMass_LL": 35.0, + "KaonP": 2000.0, + "KaonPIDK": 10.0, + "KaonPT": 200.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MaxDz_DD": 9999.0, + "MaxDz_LL": 9999.0, + "MaxKsVCHI2NDOF_DD": 20.0, + "MaxKsVCHI2NDOF_LL": 20.0, + "MaxPhiEta": 5.0, + "MinDz_DD": 250.0, + "MinDz_LL": 0.0, + "MinKsIpChi2_DD": 3, + "MinKsIpChi2_LL": 3, + "MinKsPT_DD": 200.0, + "MinKsPT_LL": 200.0, + "MinPhiEta": 2.0, + "MinPhiP": 3000.0, + "MinPhiPT": 200.0, + "PhiCutMass": 20.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "pKK_AM_Min": 2380.0, + "ppipi_AM_Min": 2380.0, + "signalPrescaleViaXicPKK": 1.0, + "signalPrescaleViaXicPKS0DD": 1.0, + "signalPrescaleViaXicPKS0LL": 1.0, + "signalPrescaleViaXicPPhi2KK": 1.0, + "signalPrescaleViaXicPPiPi": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + diff --git a/Phys/StrippingSettings/python/StrippingSettings/Stripping29r2p3/LineConfigDictionaries_Charm.py b/Phys/StrippingSettings/python/StrippingSettings/Stripping29r2p3/LineConfigDictionaries_Charm.py index d992d617d5ca7128baa78ee9ab4d28ff5a991852..b725c573b33251429057ed63d76e0583df75ed91 100644 --- a/Phys/StrippingSettings/python/StrippingSettings/Stripping29r2p3/LineConfigDictionaries_Charm.py +++ b/Phys/StrippingSettings/python/StrippingSettings/Stripping29r2p3/LineConfigDictionaries_Charm.py @@ -16,3 +16,937 @@ ## Contact person: Sergio Jaimes (sergio.jaimes@cern.ch) ## ################################################################################ +Charm2PPX = { + "BUILDERTYPE": "StrippingCharm2PPXConf", + "CONFIG": { + "Comb_ADOCACHI2_MAX": 16, + "Daug_1ofAll_BPVIPCHI2_MIN": 9.0, + "Daug_1ofAll_PT_MIN": 700.0, + "Daug_All_BPVIPCHI2_MIN": 4.0, + "Daug_All_CloneDist_MIN": 5000, + "Daug_All_MIPCHI2_MIN": 4.0, + "Daug_All_PT_MIN": 200.0, + "Daug_All_TrChostProb_MAX": 0.5, + "Daug_ETA_MAX": 4.9, + "Daug_ETA_MIN": 2.0, + "Daug_P_MAX": 100000.0, + "Daug_P_MIN": 3200.0, + "Hc_BPVCTAU_MIN": 0.05, + "Hc_BPVVDCHI2_MIN": 9.0, + "Hc_MASS_MAX": 3500.0, + "Hc_PT_MIN": 1000.0, + "Hc_VCHI2VDOF_MAX": 25.0, + "Hcs_MASS_MAX": 3650.0, + "Hlt1Filter": None, + "Hlt2Filter": None, + "HsComb_ADOCACHI2_MAX": 16, + "HsDaug_1ofAll_BPVIPCHI2_MIN": 9.0, + "HsDaug_1ofAll_PT_MIN": -500.0, + "HsDownDaug_1ofAll_BPVIPCHI2_MIN": -9.0, + "HsDown_BPVVDCHI2_MIN": 4.0, + "HsProton_1ofAll_ProbNN_MIN": 0.5, + "Hs_BPVCTAU_MIN": 0.1, + "Hs_BPVVDCHI2_MIN": 9.0, + "Hs_MASS_MAX": 2125.0, + "Hs_PT_MIN": -1000.0, + "Hs_VCHI2VDOF_MAX": 25.0, + "Kaon_ProbNN_MIN": 0.1, + "Lam_MASS_MAX": 1170.0, + "Lc_MASS_MAX": 2350.0, + "Pc_MASS_MAX": 3100.0, + "Pion_ProbNN_MIN": 0.1, + "PostscaleHc2LamPPi": 1.0, + "PostscaleHc2LamPPiPi": 1.0, + "PostscaleHc2PP": 1.0, + "PostscaleHc2PPK": 1.0, + "PostscaleHc2PPKPi": 1.0, + "PostscaleHc2PPKPiPi": 1.0, + "PostscaleHc2PPKs": 1.0, + "PostscaleHc2PPKsPi": 1.0, + "PostscaleHcs2LamLamPi": 1.0, + "PostscaleHcs2LamPKPi": 1.0, + "PostscaleHcs2PPKKPi": 1.0, + "PostscaleHcs2PPKsK": 1.0, + "PostscaleHs2PPPi": 1.0, + "PostscaleL2PPi": 1.0, + "PostscaleLc2PKPi": 1.0, + "PostscalePc2PKPiPi": 1.0, + "PostscalePc2PKsPi": 1.0, + "PostscalePs2PPiPi": 1.0, + "PrescaleHc2LamPPi": 1.0, + "PrescaleHc2LamPPiPi": 1.0, + "PrescaleHc2PP": 1.0, + "PrescaleHc2PPK": 1.0, + "PrescaleHc2PPKPi": 1.0, + "PrescaleHc2PPKPiPi": 1.0, + "PrescaleHc2PPKs": 1.0, + "PrescaleHc2PPKsPi": 1.0, + "PrescaleHcs2LamLamPi": 1.0, + "PrescaleHcs2LamPKPi": 1.0, + "PrescaleHcs2PPKKPi": 1.0, + "PrescaleHcs2PPKsK": 1.0, + "PrescaleHs2PPPi": 1.0, + "PrescaleL2PPi": 0.01, + "PrescaleLc2PKPi": 0.01, + "PrescalePc2PKPiPi": 0.1, + "PrescalePc2PKsPi": 0.1, + "PrescalePs2PPiPi": 0.1, + "Proton_1ofAll_ProbNN_MIN": 0.5, + "Proton_PT_MIN": 300.0, + "Proton_P_MIN": 10000.0, + "Proton_ProbNN_MIN": 0.1, + "Proton_ProbNNk_MAX": 0.8, + "Proton_ProbNNpi_MAX": 0.55, + "Ps_MASS_MAX": 1650.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +CharmedBaryonSL = { + "BUILDERTYPE": "StrippingCharmedBaryonSL", + "CONFIG": { + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 500.0, + "KaonPT_ForOm": 100.0, + "KaonP_ForOm": 2000.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "L0Mu_AM_Min": 1250.0, + "LambdaCutDIRA": 0.99, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 20.0, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDPMin": 5000.0, + "LambdaDDPTMin": 800.0, + "LambdaDaugTrackChi2": 4.0, + "LambdaLDCutFDChi2": 100.0, + "LambdaLDCutMass": 20.0, + "LambdaLDPMin": 3000.0, + "LambdaLDPTMin": 800.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 20.0, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinVZ": -100.0, + "LambdaLLPMin": 5000.0, + "LambdaLLPTMin": 800.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "LambdaVertexChi2": 5.0, + "Lc_ADMASS_HalfWin": 80.0, + "Lc_ADMASS_HalfWin_Tight": 55.0, + "Lc_ADOCAMAX_Max": 0.5, + "Lc_ADOCAMAX_Max_Tight": 0.15, + "Lc_AM_Max": 2370.0, + "Lc_APT_Min": 1000.0, + "Lc_APT_Min_Tight_PKMu": 1600.0, + "Lc_APT_Min_Tight_PPiMu": 1600.0, + "Lc_AP_Min_Tight": 25000.0, + "Lc_BPVDIRA_Min": 0.9, + "Lc_BPVDIRA_Min_Tight": 0.99, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDCHI2_Min_Tight": 25.0, + "Lc_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Lc_Daug_1of3_MIPCHI2DV_Min_Tight": 9.0, + "Lc_VCHI2_Max": 30.0, + "Lc_VCHI2_Max_Tight": 20.0, + "MINIPCHI2": 4.0, + "MisID_PROB_Max": 0.7, + "MuonIPCHI2": 5.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 500.0, + "Oc_AM_Max": 2780.0, + "OmMu_AM_Min": 1780.0, + "Omegac0_4Dau_VCHI2_Max": 60.0, + "Omegac0_ADAMASS_HalfWin": 170.0, + "Omegac0_ADMASS_HalfWin": 120.0, + "Omegac0_BPVDIRA_Min": 0.9, + "Omegac0_BPVVDCHI2_Min": 25.0, + "P_Min_Tight": 3500.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "PionPT_ForXi": 100.0, + "PionP_ForXi": 2000.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "XiMu_AM_Min": 1430.0, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "controlPrescaleViaLcL0DDPiNC": 0.8, + "controlPrescaleViaLcL0LLPiNC": 0.4, + "controlPrescaleViaLcPKPiNC": 0.09, + "controlPrescaleViaLcPKPiNC_Tight": 0.5, + "controlPrescaleViaLcPPiPiNC": 0.06, + "controlPrescaleViaLcPPiPiNC_Tight": 0.5, + "controlPrescaleViaOmegac0NC": 1.0, + "controlPrescaleViaXicL0DDPiNC": 0.8, + "controlPrescaleViaXicL0LLPiNC": 0.4, + "controlPrescaleViaXicXiPiNC": 1.0, + "pKMu_AM_Min": 1550.0, + "ppiMu_AM_Min": 1200.0, + "signalPrescaleViaLc": 1.0, + "signalPrescaleViaLcL0DDMuNu": 0.8, + "signalPrescaleViaLcPKMuNu_Tight": 1.0, + "signalPrescaleViaLcPPiMuNu": 0.25, + "signalPrescaleViaLcPPiMuNu_Tight": 1.0, + "signalPrescaleViaOmegac0": 1.0, + "signalPrescaleViaXic": 1.0, + "signalPrescaleViaXicL0DDMuNu": 0.8, + "signalPrescaleViaXicL0LLMuNu": 0.8 + }, + "STREAMS": [ "CharmCompleteEvent" ], + "WGs": [ "Charm" ] +} + +CharmedMesonSL = { + "BUILDERTYPE": "StrippingCharmedMesonSL", + "CONFIG": { + "B0SL_M_Max": 5600.0, + "B0SL_M_Min": 2800.0, + "B0_M_Max": 5600.0, + "B0_M_Min": 5100.0, + "B_APT_Min": 1500.0, + "B_AP_Min": 20000.0, + "B_BPVDIRA_Min": 0.95, + "B_BPVVDCHI2_Min": 16, + "B_VCHI2_Max": 30, + "BpSL_M_Max": 5700.0, + "BpSL_M_Min": 3000.0, + "Bp_M_Max": 5500.0, + "Bp_M_Min": 5100.0, + "D0SL_AM_Max": 1960.0, + "D0_ADMASS_Max": 1900.0, + "D0_ADMASS_Min": 1820.0, + "DpSL_AM_Max": 2080.0, + "Dp_ADMASS_Max": 2030.0, + "Dp_ADMASS_Min": 1800.0, + "Dp_ADOCAMAX_Max": 0.25, + "Dp_APT_Min": 1200.0, + "Dp_AP_Min": 20000.0, + "Dp_BPVDIRA_Min": 0.95, + "Dp_BPVVDCHI2_Min": 16.0, + "Dp_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Dp_VCHI2_Max": 30.0, + "EtaPiMu_AM_Min": 800.0, + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KKMu_AM_Min": 1100.0, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PiKKMu_AM_Min": 1240.0, + "PiPiMu_AM_Min": 400.0, + "PiPiPiMu_AM_Min": 530.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "controlPrescaleViaD02KKpipi": 1.0, + "controlPrescaleViaD02etapipi": 1.0, + "controlPrescaleViaD02pipipipi": 1.0, + "controlPrescaleViaD2KKpi": 1.0, + "controlPrescaleViaD2pipipi": 1.0, + "signalPrescaleViaD02KKpimunu": 1.0, + "signalPrescaleViaD02etapimunu": 1.0, + "signalPrescaleViaD02pipipimunu": 1.0, + "signalPrescaleViaD2KKmunu": 1.0, + "signalPrescaleViaD2pipimunu": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +DstarD02ETau = { + "BUILDERTYPE": "StrippingDstarD02ETauConf", + "CONFIG": { + "CUTBASED_MCORR_B_HIGH": "8600", + "CUTBASED_MCORR_B_LOW": "3600", + "CUTBASED_MCORR_D0_HIGH": "8000", + "CUTBASED_MCORR_D0_LOW": "1000", + "CUTBASED_MISS_MASS": "876", + "CUTBASED_MISS_MASS_HIGH": "250", + "CUTBASED_MISS_MASS_HIGH_KTHREEPI": "1500", + "CUTBASED_MISS_MASS_LOW": "0", + "CUTBASED_M_B": "2865", + "CUTBASED_M_D0_HIGH": "2000", + "CUTBASED_M_D0_LOW": "500", + "CUTBASED_M_TAU_HIGH": "1592", + "CUTBASED_M_TAU_LOW": "829", + "CUTBASED_PROBNNE_E": "0.1", + "CUTBASED_PROBNNK_K": "0.2", + "CUTBASED_PROBNNPI_THREE_PI": "0.5", + "CUTBASED_TAU_BPVVDCHI2": "16", + "CUTBASED_TAU_BPVVDRHO": "0.33", + "CUTBASED_TAU_BPVVDRHO_HIGH": "7", + "CUTBASED_TAU_BPVVDRHO_LOW": "0.05", + "CUTBASED_TAU_BPVVDZ": "0.5", + "CUTBASED_TAU_TAU_HIGH": "3", + "CUTBASED_TAU_TAU_LOW": "-2.5", + "CUTBASED_TAU_VCHI2": "16", + "CUTBASED_VCHI2_TAU": "20.6", + "ConeAngles": { + "08": 0.8, + "10": 1.0, + "12": 1.2, + "14": 1.4 + }, + "ConeVariables": [ + "CONEANGLE", + "CONEMULT", + "CONEPTASYM" + ], + "DstD0DMWin_HIGH": "100.", + "DstD0DMWin_LOW": "-10.", + "DstMassWin_HIGH": "100.", + "DstMassWin_LOW": "-1250.", + "DstmVtxChi2": "10.", + "HLT_DECISIONS_HAD": { + "Hlt2Topo(2|3|4)Body.*Decision%TOS": 0 + }, + "MINIPCHI2BPV_E": "16", + "MINIPCHI2BPV_PI_FROM_DTSM": "10", + "MINIPCHI2BPV_THREE_PI": "16", + "MINIPCHI2PV_D0": "50", + "PROBNNGHOST_E": "0.4", + "PROBNNGHOST_THREE_PI": "0.4", + "PT_D0": "1000", + "PT_E": "110", + "PT_PI_FROM_DTSM": "110", + "PT_THREE_PI": "110", + "P_D0": "2000", + "P_E": "0", + "P_THREE_PI": "500", + "PrescaleETauBox": 1.0, + "PrescaleETauSSBox": 1.0, + "PrescaleK3piBox": 0.025, + "PrescaleK3piSSBox": 0.025, + "RelInfoTools_D02ETau": [ + { + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_VertexIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_ConeIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "RelInfoTools_D02K3pi": [ + { + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "TAU_AMAXDOCA_PIS": "0.2", + "TAU_BPVDIRA": "-1.", + "TAU_M_HIGH": "2100", + "TAU_M_HIGH_COMB": "2100", + "TAU_M_LOW": "400", + "TAU_M_LOW_COMB": "400", + "TAU_PT": "700.", + "TRACKCHI2_E": "4", + "TRACKCHI2_PI_FROM_DTSM": "7", + "TRACKCHI2_THREE_PI": "4", + "TRGHOPROB_E": "0.4", + "TRGHOPROB_THREE_PI": "0.4", + "prefix": "" + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +#Hc2V02H = { +# "BUILDERTYPE": "StrippingHc2V02HConf", +# "CONFIG": { +# "Bach_PT_MIN": 250.0, +# "Bach_P_MIN": 2000.0, +# "Comb_ADAMASS_WIN": 120.0, +# "Comb_ADOCAMAX_MAX": 0.4, +# "Hlt1Filter": None, +# "Hlt2Filter": None, +# "Lambda0_FDCHI2_MIN_DD": 4, +# "Lambda0_FDCHI2_MIN_LL": 4, +# "Lambda0_PT_MIN": 250.0, +# "Lambda0_P_MIN": 6000.0, +# "Lambda0_VCHI2VDOF_MAX_DD": 25.0, +# "Lambda0_VCHI2VDOF_MAX_LL": 12.0, +# "LambdaMinFD_DD": 500.0, +# "LambdaMinFD_LL": 5.0, +# "MIPCHI2DV_PRIMARY_Min": 2, +# "PostscaleXic2LambdaKKDD": 1.0, +# "PostscaleXic2LambdaKKLL": 1.0, +# "PostscaleXic2LambdaKPiDD": 1.0, +# "PostscaleXic2LambdaKPiLL": 1.0, +# "PostscaleXic2LambdaPiKDD": 1.0, +# "PostscaleXic2LambdaPiKLL": 1.0, +# "PostscaleXic2LambdaPiPiDD": 1.0, +# "PostscaleXic2LambdaPiPiLL": 1.0, +# "PrescaleXic2LambdaKKDD": 1.0, +# "PrescaleXic2LambdaKKLL": 1.0, +# "PrescaleXic2LambdaKPiDD": 1.0, +# "PrescaleXic2LambdaKPiLL": 1.0, +# "PrescaleXic2LambdaPiKDD": 1.0, +# "PrescaleXic2LambdaPiKLL": 1.0, +# "PrescaleXic2LambdaPiPiDD": 1.0, +# "PrescaleXic2LambdaPiPiLL": 1.0, +# "ProbNNkMin": 0.1, +# "ProbNNpMin_L0_DD": 0.1, +# "ProbNNpMin_L0_LL": 0.1, +# "ProbNNpiMin": 0.1, +# "ProbNNpiMin_L0_DD": 0.1, +# "ProbNNpiMin_L0_LL": 0.1, +# "TrGhostProbMax": 0.3, +# "Xic_ADMASS_WIN": 90.0, +# "Xic_PT_min": 250.0, +# "Xic_P_min": 10000.0, +# "Xic_VCHI2VDOF_MAX_DD": 3.0, +# "Xic_VCHI2VDOF_MAX_LL": 3.0, +# "Xic_acosBPVDIRA_MAX_DD": 0.0316, +# "Xic_acosBPVDIRA_MAX_LL": 0.02, +# "p_L0_PT_LL_min": 100.0, +# "p_L0_P_LL_min": 2000.0, +# "pi_L0_PT_LL_min": 100.0, +# "pi_L0_P_LL_min": 2000.0 +# }, +# "STREAMS": [ "Charm" ], +# "WGs": [ "Charm" ] +#} + +Hc2V03H = { + "BUILDERTYPE": "StrippingHc2V03HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 90.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 500.0, + "Lambda0_P_MIN": 10000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 200.0, + "LambdaMinFD_LL": 25.0, + "Lambdac_ADMASS_WIN": 75.0, + "Lambdac_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Lambdac_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Lambdac_VCHI2VDOF_MAX_DD": 3.0, + "Lambdac_VCHI2VDOF_MAX_LL": 3.0, + "Lambdac_acosBPVDIRA_MAX_DD": 0.045, + "Lambdac_acosBPVDIRA_MAX_LL": 0.14, + "PostscaleLambdac2Lambda3PiDD": 1.0, + "PostscaleLambdac2Lambda3PiLL": 1.0, + "PostscaleLambdac2LambdaK2PiDD": 1.0, + "PostscaleLambdac2LambdaK2PiLL": 1.0, + "PostscaleXic2LambdaK2PiDD": 1.0, + "PostscaleXic2LambdaK2PiLL": 1.0, + "PrescaleLambdac2Lambda3PiDD": 1.0, + "PrescaleLambdac2Lambda3PiLL": 1.0, + "PrescaleLambdac2LambdaK2PiDD": 1.0, + "PrescaleLambdac2LambdaK2PiLL": 1.0, + "PrescaleXic2LambdaK2PiDD": 1.0, + "PrescaleXic2LambdaK2PiLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 75.0, + "Xic_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DD": 3.0, + "Xic_VCHI2VDOF_MAX_LL": 3.0, + "Xic_acosBPVDIRA_MAX_DD": 0.045, + "Xic_acosBPVDIRA_MAX_LL": 0.14 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V2H = { + "BUILDERTYPE": "StrippingHc2V2HConf", + "CONFIG": { + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hc_ADMASS_WIN": 90.0, + "Hc_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Hc_PVDispCut_DDL": "(BPVVDCHI2 > 16.0)", + "Hc_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Hc_VCHI2VDOF_MAX_DDD": 12.0, + "Hc_VCHI2VDOF_MAX_DDL": 12.0, + "Hc_VCHI2VDOF_MAX_LLL": 12.0, + "Hc_acosBPVDIRA_MAX_DDD": 0.14, + "Hc_acosBPVDIRA_MAX_DDL": 0.045, + "Hc_acosBPVDIRA_MAX_LLL": 0.14, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 0.0, + "LambdaMinFD_LL": 25.0, + "PostscaleLambdac2XiKPiDDD": 1.0, + "PostscaleLambdac2XiKPiDDL": 1.0, + "PostscaleLambdac2XiKPiLLL": 1.0, + "PostscaleXic2XiPiPiDDD": 1.0, + "PostscaleXic2XiPiPiDDL": 1.0, + "PostscaleXic2XiPiPiLLL": 1.0, + "PrescaleLambdac2XiKPiDDD": 1.0, + "PrescaleLambdac2XiKPiDDL": 1.0, + "PrescaleLambdac2XiKPiLLL": 1.0, + "PrescaleXic2XiPiPiDDD": 1.0, + "PrescaleXic2XiPiPiDDL": 1.0, + "PrescaleXic2XiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xim_FDCHI2_MIN": 16, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V3H = { + "BUILDERTYPE": "StrippingHc2V3HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 200.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 25, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "PostscaleXic2XimPiPiPiDDD": 1.0, + "PostscaleXic2XimPiPiPiDDL": 1.0, + "PostscaleXic2XimPiPiPiLLL": 1.0, + "PrescaleXic2XimPiPiPiDDD": 1.0, + "PrescaleXic2XimPiPiPiDDL": 1.0, + "PrescaleXic2XimPiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 90.0, + "Xic_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_DDL": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DDD": 5.0, + "Xic_VCHI2VDOF_MAX_DDL": 5.0, + "Xic_VCHI2VDOF_MAX_LLL": 5.0, + "Xic_acosBPVDIRA_MAX_DDD": 0.14, + "Xic_acosBPVDIRA_MAX_DDL": 0.14, + "Xic_acosBPVDIRA_MAX_LLL": 0.14, + "Xim_FDCHI2_MIN": 9, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2LambdaEtaPi = { + "BUILDERTYPE": "StrippingLambdac2LambdaEtaPi", + "CONFIG": { + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 50.0, + "LambdaDDPMin": 2000.0, + "LambdaDDPTMin": 500.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 50.0, + "LambdaLLPMin": 2000.0, + "LambdaLLPTMin": 500.0, + "LambdaVertexChi2": 10.0, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2PEta = { + "BUILDERTYPE": "StrippingLambdac2PEta", + "CONFIG": { + "GEC_nLongTrk": 160, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_BPVVDZ_Min": 0.7, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "ProbNNp": 0.4, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +NeutralCBaryons = { + "BUILDERTYPE": "StrippingNeutralCBaryonsConf", + "CONFIG": { + "Bachelor_PT_MIN": 50.0, + "KaonPIDK": -5.0, + "LambdaDDMassWin": 5.7, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDVtxChi2Max": 5.0, + "LambdaDeltaZ_MIN": 5.0, + "LambdaLLMassWin": 5.7, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinDecayTime": 0.005, + "LambdaLLMinVZ": -100.0, + "LambdaLLVtxChi2Max": 5.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "ProbNNpMinDD": 0.05, + "ProbNNpMinLL": 0.1, + "ProtonPIDp": 5, + "ProtonPIDpK": -3, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xib2Xic0PiXic02pK = { + "BUILDERTYPE": "StrippingXib2Xic0PiXic02pKConf", + "CONFIG": { + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu = { + "BUILDERTYPE": "Xic0ToXiMuNuConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu+]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_LLLLine", + "StrippingXic0ToXiMuNu_DDLLine", + "StrippingXic0ToXiMuNu_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu_WS = { + "BUILDERTYPE": "Xic0ToXiMuNu_WSConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu-]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_WS_LLLLine", + "StrippingXic0ToXiMuNu_WS_DDLLine", + "StrippingXic0ToXiMuNu_WS_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic2PHH = { + "BUILDERTYPE": "StrippingXic2PHH", + "CONFIG": { + "BPVIPCHI2_Phi": 4, + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KSCutDIRA_DD": 0.999, + "KSCutDIRA_LL": 0.999, + "KSCutFDChi2_DD": 5, + "KSCutFDChi2_LL": 5, + "KSCutMass_DD": 50.0, + "KSCutMass_LL": 35.0, + "KaonP": 2000.0, + "KaonPIDK": 10.0, + "KaonPT": 200.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MaxDz_DD": 9999.0, + "MaxDz_LL": 9999.0, + "MaxKsVCHI2NDOF_DD": 20.0, + "MaxKsVCHI2NDOF_LL": 20.0, + "MaxPhiEta": 5.0, + "MinDz_DD": 250.0, + "MinDz_LL": 0.0, + "MinKsIpChi2_DD": 3, + "MinKsIpChi2_LL": 3, + "MinKsPT_DD": 200.0, + "MinKsPT_LL": 200.0, + "MinPhiEta": 2.0, + "MinPhiP": 3000.0, + "MinPhiPT": 200.0, + "PhiCutMass": 20.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "pKK_AM_Min": 2380.0, + "ppipi_AM_Min": 2380.0, + "signalPrescaleViaXicPKK": 1.0, + "signalPrescaleViaXicPKS0DD": 1.0, + "signalPrescaleViaXicPKS0LL": 1.0, + "signalPrescaleViaXicPPhi2KK": 1.0, + "signalPrescaleViaXicPPiPi": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + diff --git a/Phys/StrippingSettings/python/StrippingSettings/Stripping34r0p3/LineConfigDictionaries_Charm.py b/Phys/StrippingSettings/python/StrippingSettings/Stripping34r0p3/LineConfigDictionaries_Charm.py index a40c913843f3cb8b5be69855f648dd25b7bd0f67..ddd0f4db88f27c8b0478df7f0442292c1c7f681e 100644 --- a/Phys/StrippingSettings/python/StrippingSettings/Stripping34r0p3/LineConfigDictionaries_Charm.py +++ b/Phys/StrippingSettings/python/StrippingSettings/Stripping34r0p3/LineConfigDictionaries_Charm.py @@ -1,5 +1,5 @@ ############################################################################### -# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration # +# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration # # # # This software is distributed under the terms of the GNU General Public # # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # @@ -16,3 +16,937 @@ ## Contact person: Sergio Jaimes (sergio.jaimes@cern.ch) ## ################################################################################ +Charm2PPX = { + "BUILDERTYPE": "StrippingCharm2PPXConf", + "CONFIG": { + "Comb_ADOCACHI2_MAX": 16, + "Daug_1ofAll_BPVIPCHI2_MIN": 9.0, + "Daug_1ofAll_PT_MIN": 700.0, + "Daug_All_BPVIPCHI2_MIN": 4.0, + "Daug_All_CloneDist_MIN": 5000, + "Daug_All_MIPCHI2_MIN": 4.0, + "Daug_All_PT_MIN": 200.0, + "Daug_All_TrChostProb_MAX": 0.5, + "Daug_ETA_MAX": 4.9, + "Daug_ETA_MIN": 2.0, + "Daug_P_MAX": 100000.0, + "Daug_P_MIN": 3200.0, + "Hc_BPVCTAU_MIN": 0.05, + "Hc_BPVVDCHI2_MIN": 9.0, + "Hc_MASS_MAX": 3500.0, + "Hc_PT_MIN": 1000.0, + "Hc_VCHI2VDOF_MAX": 25.0, + "Hcs_MASS_MAX": 3650.0, + "Hlt1Filter": None, + "Hlt2Filter": None, + "HsComb_ADOCACHI2_MAX": 16, + "HsDaug_1ofAll_BPVIPCHI2_MIN": 9.0, + "HsDaug_1ofAll_PT_MIN": -500.0, + "HsDownDaug_1ofAll_BPVIPCHI2_MIN": -9.0, + "HsDown_BPVVDCHI2_MIN": 4.0, + "HsProton_1ofAll_ProbNN_MIN": 0.5, + "Hs_BPVCTAU_MIN": 0.1, + "Hs_BPVVDCHI2_MIN": 9.0, + "Hs_MASS_MAX": 2125.0, + "Hs_PT_MIN": -1000.0, + "Hs_VCHI2VDOF_MAX": 25.0, + "Kaon_ProbNN_MIN": 0.1, + "Lam_MASS_MAX": 1170.0, + "Lc_MASS_MAX": 2350.0, + "Pc_MASS_MAX": 3100.0, + "Pion_ProbNN_MIN": 0.1, + "PostscaleHc2LamPPi": 1.0, + "PostscaleHc2LamPPiPi": 1.0, + "PostscaleHc2PP": 1.0, + "PostscaleHc2PPK": 1.0, + "PostscaleHc2PPKPi": 1.0, + "PostscaleHc2PPKPiPi": 1.0, + "PostscaleHc2PPKs": 1.0, + "PostscaleHc2PPKsPi": 1.0, + "PostscaleHcs2LamLamPi": 1.0, + "PostscaleHcs2LamPKPi": 1.0, + "PostscaleHcs2PPKKPi": 1.0, + "PostscaleHcs2PPKsK": 1.0, + "PostscaleHs2PPPi": 1.0, + "PostscaleL2PPi": 1.0, + "PostscaleLc2PKPi": 1.0, + "PostscalePc2PKPiPi": 1.0, + "PostscalePc2PKsPi": 1.0, + "PostscalePs2PPiPi": 1.0, + "PrescaleHc2LamPPi": 1.0, + "PrescaleHc2LamPPiPi": 1.0, + "PrescaleHc2PP": 1.0, + "PrescaleHc2PPK": 1.0, + "PrescaleHc2PPKPi": 1.0, + "PrescaleHc2PPKPiPi": 1.0, + "PrescaleHc2PPKs": 1.0, + "PrescaleHc2PPKsPi": 1.0, + "PrescaleHcs2LamLamPi": 1.0, + "PrescaleHcs2LamPKPi": 1.0, + "PrescaleHcs2PPKKPi": 1.0, + "PrescaleHcs2PPKsK": 1.0, + "PrescaleHs2PPPi": 1.0, + "PrescaleL2PPi": 0.01, + "PrescaleLc2PKPi": 0.01, + "PrescalePc2PKPiPi": 0.1, + "PrescalePc2PKsPi": 0.1, + "PrescalePs2PPiPi": 0.1, + "Proton_1ofAll_ProbNN_MIN": 0.5, + "Proton_PT_MIN": 300.0, + "Proton_P_MIN": 10000.0, + "Proton_ProbNN_MIN": 0.1, + "Proton_ProbNNk_MAX": 0.8, + "Proton_ProbNNpi_MAX": 0.55, + "Ps_MASS_MAX": 1650.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +CharmedBaryonSL = { + "BUILDERTYPE": "StrippingCharmedBaryonSL", + "CONFIG": { + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 500.0, + "KaonPT_ForOm": 100.0, + "KaonP_ForOm": 2000.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "L0Mu_AM_Min": 1250.0, + "LambdaCutDIRA": 0.99, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 20.0, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDPMin": 5000.0, + "LambdaDDPTMin": 800.0, + "LambdaDaugTrackChi2": 4.0, + "LambdaLDCutFDChi2": 100.0, + "LambdaLDCutMass": 20.0, + "LambdaLDPMin": 3000.0, + "LambdaLDPTMin": 800.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 20.0, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinVZ": -100.0, + "LambdaLLPMin": 5000.0, + "LambdaLLPTMin": 800.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "LambdaVertexChi2": 5.0, + "Lc_ADMASS_HalfWin": 80.0, + "Lc_ADMASS_HalfWin_Tight": 55.0, + "Lc_ADOCAMAX_Max": 0.5, + "Lc_ADOCAMAX_Max_Tight": 0.15, + "Lc_AM_Max": 2370.0, + "Lc_APT_Min": 1000.0, + "Lc_APT_Min_Tight_PKMu": 1600.0, + "Lc_APT_Min_Tight_PPiMu": 1600.0, + "Lc_AP_Min_Tight": 25000.0, + "Lc_BPVDIRA_Min": 0.9, + "Lc_BPVDIRA_Min_Tight": 0.99, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDCHI2_Min_Tight": 25.0, + "Lc_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Lc_Daug_1of3_MIPCHI2DV_Min_Tight": 9.0, + "Lc_VCHI2_Max": 30.0, + "Lc_VCHI2_Max_Tight": 20.0, + "MINIPCHI2": 4.0, + "MisID_PROB_Max": 0.7, + "MuonIPCHI2": 5.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 500.0, + "Oc_AM_Max": 2780.0, + "OmMu_AM_Min": 1780.0, + "Omegac0_4Dau_VCHI2_Max": 60.0, + "Omegac0_ADAMASS_HalfWin": 170.0, + "Omegac0_ADMASS_HalfWin": 120.0, + "Omegac0_BPVDIRA_Min": 0.9, + "Omegac0_BPVVDCHI2_Min": 25.0, + "P_Min_Tight": 3500.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "PionPT_ForXi": 100.0, + "PionP_ForXi": 2000.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "XiMu_AM_Min": 1430.0, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "controlPrescaleViaLcL0DDPiNC": 0.8, + "controlPrescaleViaLcL0LLPiNC": 0.4, + "controlPrescaleViaLcPKPiNC": 0.09, + "controlPrescaleViaLcPKPiNC_Tight": 0.5, + "controlPrescaleViaLcPPiPiNC": 0.06, + "controlPrescaleViaLcPPiPiNC_Tight": 0.5, + "controlPrescaleViaOmegac0NC": 1.0, + "controlPrescaleViaXicL0DDPiNC": 0.8, + "controlPrescaleViaXicL0LLPiNC": 0.4, + "controlPrescaleViaXicXiPiNC": 1.0, + "pKMu_AM_Min": 1550.0, + "ppiMu_AM_Min": 1200.0, + "signalPrescaleViaLc": 1.0, + "signalPrescaleViaLcL0DDMuNu": 0.8, + "signalPrescaleViaLcPKMuNu_Tight": 1.0, + "signalPrescaleViaLcPPiMuNu": 0.25, + "signalPrescaleViaLcPPiMuNu_Tight": 1.0, + "signalPrescaleViaOmegac0": 1.0, + "signalPrescaleViaXic": 1.0, + "signalPrescaleViaXicL0DDMuNu": 0.8, + "signalPrescaleViaXicL0LLMuNu": 0.8 + }, + "STREAMS": [ "CharmCompleteEvent" ], + "WGs": [ "Charm" ] +} + +CharmedMesonSL = { + "BUILDERTYPE": "StrippingCharmedMesonSL", + "CONFIG": { + "B0SL_M_Max": 5600.0, + "B0SL_M_Min": 2800.0, + "B0_M_Max": 5600.0, + "B0_M_Min": 5100.0, + "B_APT_Min": 1500.0, + "B_AP_Min": 20000.0, + "B_BPVDIRA_Min": 0.95, + "B_BPVVDCHI2_Min": 16, + "B_VCHI2_Max": 30, + "BpSL_M_Max": 5700.0, + "BpSL_M_Min": 3000.0, + "Bp_M_Max": 5500.0, + "Bp_M_Min": 5100.0, + "D0SL_AM_Max": 1960.0, + "D0_ADMASS_Max": 1900.0, + "D0_ADMASS_Min": 1820.0, + "DpSL_AM_Max": 2080.0, + "Dp_ADMASS_Max": 2030.0, + "Dp_ADMASS_Min": 1800.0, + "Dp_ADOCAMAX_Max": 0.25, + "Dp_APT_Min": 1200.0, + "Dp_AP_Min": 20000.0, + "Dp_BPVDIRA_Min": 0.95, + "Dp_BPVVDCHI2_Min": 16.0, + "Dp_Daug_1of3_MIPCHI2DV_Min": 4.0, + "Dp_VCHI2_Max": 30.0, + "EtaPiMu_AM_Min": 800.0, + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KKMu_AM_Min": 1100.0, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PiKKMu_AM_Min": 1240.0, + "PiPiMu_AM_Min": 400.0, + "PiPiPiMu_AM_Min": 530.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "controlPrescaleViaD02KKpipi": 1.0, + "controlPrescaleViaD02etapipi": 1.0, + "controlPrescaleViaD02pipipipi": 1.0, + "controlPrescaleViaD2KKpi": 1.0, + "controlPrescaleViaD2pipipi": 1.0, + "signalPrescaleViaD02KKpimunu": 1.0, + "signalPrescaleViaD02etapimunu": 1.0, + "signalPrescaleViaD02pipipimunu": 1.0, + "signalPrescaleViaD2KKmunu": 1.0, + "signalPrescaleViaD2pipimunu": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +DstarD02ETau = { + "BUILDERTYPE": "StrippingDstarD02ETauConf", + "CONFIG": { + "CUTBASED_MCORR_B_HIGH": "8600", + "CUTBASED_MCORR_B_LOW": "3600", + "CUTBASED_MCORR_D0_HIGH": "8000", + "CUTBASED_MCORR_D0_LOW": "1000", + "CUTBASED_MISS_MASS": "876", + "CUTBASED_MISS_MASS_HIGH": "250", + "CUTBASED_MISS_MASS_HIGH_KTHREEPI": "1500", + "CUTBASED_MISS_MASS_LOW": "0", + "CUTBASED_M_B": "2865", + "CUTBASED_M_D0_HIGH": "2000", + "CUTBASED_M_D0_LOW": "500", + "CUTBASED_M_TAU_HIGH": "1592", + "CUTBASED_M_TAU_LOW": "829", + "CUTBASED_PROBNNE_E": "0.1", + "CUTBASED_PROBNNK_K": "0.2", + "CUTBASED_PROBNNPI_THREE_PI": "0.5", + "CUTBASED_TAU_BPVVDCHI2": "16", + "CUTBASED_TAU_BPVVDRHO": "0.33", + "CUTBASED_TAU_BPVVDRHO_HIGH": "7", + "CUTBASED_TAU_BPVVDRHO_LOW": "0.05", + "CUTBASED_TAU_BPVVDZ": "0.5", + "CUTBASED_TAU_TAU_HIGH": "3", + "CUTBASED_TAU_TAU_LOW": "-2.5", + "CUTBASED_TAU_VCHI2": "16", + "CUTBASED_VCHI2_TAU": "20.6", + "ConeAngles": { + "08": 0.8, + "10": 1.0, + "12": 1.2, + "14": 1.4 + }, + "ConeVariables": [ + "CONEANGLE", + "CONEMULT", + "CONEPTASYM" + ], + "DstD0DMWin_HIGH": "100.", + "DstD0DMWin_LOW": "-10.", + "DstMassWin_HIGH": "100.", + "DstMassWin_LOW": "-1250.", + "DstmVtxChi2": "10.", + "HLT_DECISIONS_HAD": { + "Hlt2Topo(2|3|4)Body.*Decision%TOS": 0 + }, + "MINIPCHI2BPV_E": "16", + "MINIPCHI2BPV_PI_FROM_DTSM": "10", + "MINIPCHI2BPV_THREE_PI": "16", + "MINIPCHI2PV_D0": "50", + "PROBNNGHOST_E": "0.4", + "PROBNNGHOST_THREE_PI": "0.4", + "PT_D0": "1000", + "PT_E": "110", + "PT_PI_FROM_DTSM": "110", + "PT_THREE_PI": "110", + "P_D0": "2000", + "P_E": "0", + "P_THREE_PI": "500", + "PrescaleETauBox": 1.0, + "PrescaleETauSSBox": 1.0, + "PrescaleK3piBox": 0.025, + "PrescaleK3piSSBox": 0.025, + "RelInfoTools_D02ETau": [ + { + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_VertexIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> (Charm -> ^l l) pi+]CC": "Tau_ConeIsoInfo", + "[D*(2010)+ -> (Charm -> l ^l) pi+]CC": "E_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> l l) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "RelInfoTools_D02K3pi": [ + { + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_VertexIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_VertexIsoInfo" + }, + "Location": "DstVars_VertexIsoInfo", + "Type": "RelInfoVertexIsolation" + }, + { + "ConeSize": 0.5, + "DaughterLocations": { + "[D*(2010)+ -> ^(Charm -> X X X X) ^pi+]CC": "pi_ConeIsoInfo", + "[D*(2010)+ -> ^(Charm -> X X X X) pi+]CC": "D0_ConeIsoInfo" + }, + "Location": "DstVars_ConeIsoInfo", + "Type": "RelInfoConeIsolation", + "Variables": [] + } + ], + "TAU_AMAXDOCA_PIS": "0.2", + "TAU_BPVDIRA": "-1.", + "TAU_M_HIGH": "2100", + "TAU_M_HIGH_COMB": "2100", + "TAU_M_LOW": "400", + "TAU_M_LOW_COMB": "400", + "TAU_PT": "700.", + "TRACKCHI2_E": "4", + "TRACKCHI2_PI_FROM_DTSM": "7", + "TRACKCHI2_THREE_PI": "4", + "TRGHOPROB_E": "0.4", + "TRGHOPROB_THREE_PI": "0.4", + "prefix": "" + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V02H = { + "BUILDERTYPE": "StrippingHc2V02HConf", + "CONFIG": { + "Bach_PT_MIN": 250.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.4, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN_DD": 4, + "Lambda0_FDCHI2_MIN_LL": 4, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 6000.0, + "Lambda0_VCHI2VDOF_MAX_DD": 25.0, + "Lambda0_VCHI2VDOF_MAX_LL": 12.0, + "LambdaMinFD_DD": 500.0, + "LambdaMinFD_LL": 5.0, + "MIPCHI2DV_PRIMARY_Min": 2, + "PostscaleXic2LambdaKKDD": 1.0, + "PostscaleXic2LambdaKKLL": 1.0, + "PostscaleXic2LambdaKPiDD": 1.0, + "PostscaleXic2LambdaKPiLL": 1.0, + "PostscaleXic2LambdaPiKDD": 1.0, + "PostscaleXic2LambdaPiKLL": 1.0, + "PostscaleXic2LambdaPiPiDD": 1.0, + "PostscaleXic2LambdaPiPiLL": 1.0, + "PrescaleXic2LambdaKKDD": 1.0, + "PrescaleXic2LambdaKKLL": 1.0, + "PrescaleXic2LambdaKPiDD": 1.0, + "PrescaleXic2LambdaKPiLL": 1.0, + "PrescaleXic2LambdaPiKDD": 1.0, + "PrescaleXic2LambdaPiKLL": 1.0, + "PrescaleXic2LambdaPiPiDD": 1.0, + "PrescaleXic2LambdaPiPiLL": 1.0, + "ProbNNkMin": 0.1, + "ProbNNpMin_L0_DD": 0.1, + "ProbNNpMin_L0_LL": 0.1, + "ProbNNpiMin": 0.1, + "ProbNNpiMin_L0_DD": 0.1, + "ProbNNpiMin_L0_LL": 0.1, + "TrGhostProbMax": 0.3, + "Xic_ADMASS_WIN": 90.0, + "Xic_PT_min": 250.0, + "Xic_P_min": 10000.0, + "Xic_VCHI2VDOF_MAX_DD": 3.0, + "Xic_VCHI2VDOF_MAX_LL": 3.0, + "Xic_acosBPVDIRA_MAX_DD": 0.0316, + "Xic_acosBPVDIRA_MAX_LL": 0.02, + "p_L0_PT_LL_min": 100.0, + "p_L0_P_LL_min": 2000.0, + "pi_L0_PT_LL_min": 100.0, + "pi_L0_P_LL_min": 2000.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V03H = { + "BUILDERTYPE": "StrippingHc2V03HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 90.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 500.0, + "Lambda0_P_MIN": 10000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 200.0, + "LambdaMinFD_LL": 25.0, + "Lambdac_ADMASS_WIN": 75.0, + "Lambdac_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Lambdac_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Lambdac_VCHI2VDOF_MAX_DD": 3.0, + "Lambdac_VCHI2VDOF_MAX_LL": 3.0, + "Lambdac_acosBPVDIRA_MAX_DD": 0.045, + "Lambdac_acosBPVDIRA_MAX_LL": 0.14, + "PostscaleLambdac2Lambda3PiDD": 1.0, + "PostscaleLambdac2Lambda3PiLL": 1.0, + "PostscaleLambdac2LambdaK2PiDD": 1.0, + "PostscaleLambdac2LambdaK2PiLL": 1.0, + "PostscaleXic2LambdaK2PiDD": 1.0, + "PostscaleXic2LambdaK2PiLL": 1.0, + "PrescaleLambdac2Lambda3PiDD": 1.0, + "PrescaleLambdac2Lambda3PiLL": 1.0, + "PrescaleLambdac2LambdaK2PiDD": 1.0, + "PrescaleLambdac2LambdaK2PiLL": 1.0, + "PrescaleXic2LambdaK2PiDD": 1.0, + "PrescaleXic2LambdaK2PiLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 75.0, + "Xic_PVDispCut_DD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DD": 3.0, + "Xic_VCHI2VDOF_MAX_LL": 3.0, + "Xic_acosBPVDIRA_MAX_DD": 0.045, + "Xic_acosBPVDIRA_MAX_LL": 0.14 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V2H = { + "BUILDERTYPE": "StrippingHc2V2HConf", + "CONFIG": { + "Bach_PT_MIN": 150.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hc_ADMASS_WIN": 90.0, + "Hc_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Hc_PVDispCut_DDL": "(BPVVDCHI2 > 16.0)", + "Hc_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Hc_VCHI2VDOF_MAX_DDD": 12.0, + "Hc_VCHI2VDOF_MAX_DDL": 12.0, + "Hc_VCHI2VDOF_MAX_LLL": 12.0, + "Hc_acosBPVDIRA_MAX_DDD": 0.14, + "Hc_acosBPVDIRA_MAX_DDL": 0.045, + "Hc_acosBPVDIRA_MAX_LLL": 0.14, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 49, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "LambdaMinFD_DD": 0.0, + "LambdaMinFD_LL": 25.0, + "PostscaleLambdac2XiKPiDDD": 1.0, + "PostscaleLambdac2XiKPiDDL": 1.0, + "PostscaleLambdac2XiKPiLLL": 1.0, + "PostscaleXic2XiPiPiDDD": 1.0, + "PostscaleXic2XiPiPiDDL": 1.0, + "PostscaleXic2XiPiPiLLL": 1.0, + "PrescaleLambdac2XiKPiDDD": 1.0, + "PrescaleLambdac2XiKPiDDL": 1.0, + "PrescaleLambdac2XiKPiLLL": 1.0, + "PrescaleXic2XiPiPiDDD": 1.0, + "PrescaleXic2XiPiPiDDL": 1.0, + "PrescaleXic2XiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xim_FDCHI2_MIN": 16, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Hc2V3H = { + "BUILDERTYPE": "StrippingHc2V3HConf", + "CONFIG": { + "Bach_IPCHI2_MAX": 9, + "Bach_IPCHI2_MIN": 1, + "Bach_PT_MIN": 200.0, + "Bach_P_MIN": 2000.0, + "Comb_ADAMASS_WIN": 120.0, + "Comb_ADOCAMAX_MAX": 0.5, + "Hlt1Filter": None, + "Hlt2Filter": None, + "Lambda0_FDCHI2_MIN": 25, + "Lambda0_PT_MIN": 250.0, + "Lambda0_P_MIN": 2000.0, + "Lambda0_VCHI2VDOF_MAX": 12.0, + "PostscaleXic2XimPiPiPiDDD": 1.0, + "PostscaleXic2XimPiPiPiDDL": 1.0, + "PostscaleXic2XimPiPiPiLLL": 1.0, + "PrescaleXic2XimPiPiPiDDD": 1.0, + "PrescaleXic2XimPiPiPiDDL": 1.0, + "PrescaleXic2XimPiPiPiLLL": 1.0, + "ProbNNpMin_DD": 0.0, + "ProbNNpMin_LL": 0.1, + "Xic_ADMASS_WIN": 90.0, + "Xic_PVDispCut_DDD": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_DDL": "(BPVVDCHI2 > 9.0)", + "Xic_PVDispCut_LLL": "(BPVVDCHI2 > 16.0)", + "Xic_VCHI2VDOF_MAX_DDD": 5.0, + "Xic_VCHI2VDOF_MAX_DDL": 5.0, + "Xic_VCHI2VDOF_MAX_LLL": 5.0, + "Xic_acosBPVDIRA_MAX_DDD": 0.14, + "Xic_acosBPVDIRA_MAX_DDL": 0.14, + "Xic_acosBPVDIRA_MAX_LLL": 0.14, + "Xim_FDCHI2_MIN": 9, + "Xim_PT_MIN": 250.0, + "Xim_P_MIN": 2000.0, + "Xim_VCHI2VDOF_MAX": 12.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2LambdaEtaPi = { + "BUILDERTYPE": "StrippingLambdac2LambdaEtaPi", + "CONFIG": { + "GEC_nLongTrk": 160, + "GhostProb": 0.3, + "KaonP": 3000.0, + "KaonPIDK": 10.0, + "KaonPT": 250.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "LambdaDDCutFDChi2": 100.0, + "LambdaDDCutMass": 50.0, + "LambdaDDPMin": 2000.0, + "LambdaDDPTMin": 500.0, + "LambdaLLCutFDChi2": 100.0, + "LambdaLLCutMass": 50.0, + "LambdaLLPMin": 2000.0, + "LambdaLLPTMin": 500.0, + "LambdaVertexChi2": 10.0, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "MuonIPCHI2": 4.0, + "MuonP": 3000.0, + "MuonPIDmu": 0.0, + "MuonPT": 250.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Lambdac2PEta = { + "BUILDERTYPE": "StrippingLambdac2PEta", + "CONFIG": { + "GEC_nLongTrk": 160, + "Lb_APT_Min": 1500.0, + "Lb_AP_Min": 20000.0, + "Lb_BPVDIRA_Min": 0.95, + "Lb_BPVVDCHI2_Min": 16, + "Lb_BPVVDZ_Min": 0.7, + "Lb_M_HalfWin": 200.0, + "Lb_VCHI2_Max": 30, + "Lc_ADOCAMAX_Max": 0.15, + "Lc_APT_Min": 1200.0, + "Lc_AP_Min": 15000.0, + "Lc_BPVDIRA_Min": 0.95, + "Lc_BPVVDCHI2_Min": 16.0, + "Lc_BPVVDZ_Min": 0.5, + "Lc_Daug_1of3_MIPCHI2DV_Min": 3.0, + "Lc_M_HalfWin": 200.0, + "Lc_VCHI2_Max": 30.0, + "MINIPCHI2": 3.0, + "PionP": 3000.0, + "PionPIDK": 5.0, + "PionPT": 250.0, + "ProbNNp": 0.4, + "ProbNNpi": 0.4, + "ProbNNpiMax": 0.9, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "signalPrescale": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +NeutralCBaryons = { + "BUILDERTYPE": "StrippingNeutralCBaryonsConf", + "CONFIG": { + "Bachelor_PT_MIN": 50.0, + "KaonPIDK": -5.0, + "LambdaDDMassWin": 5.7, + "LambdaDDMaxVZ": 2275.0, + "LambdaDDMinVZ": 400.0, + "LambdaDDVtxChi2Max": 5.0, + "LambdaDeltaZ_MIN": 5.0, + "LambdaLLMassWin": 5.7, + "LambdaLLMaxVZ": 400.0, + "LambdaLLMinDecayTime": 0.005, + "LambdaLLMinVZ": -100.0, + "LambdaLLVtxChi2Max": 5.0, + "LambdaPi_PT_MIN": 100.0, + "LambdaPr_PT_MIN": 500.0, + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "ProbNNpMinDD": 0.05, + "ProbNNpMinLL": 0.1, + "ProtonPIDp": 5, + "ProtonPIDpK": -3, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xib2Xic0PiXic02pK = { + "BUILDERTYPE": "StrippingXib2Xic0PiXic02pKConf", + "CONFIG": { + "PionPIDK": 10.0, + "ProbNNkMin": 0.1, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "tight_KaonPIDK": 0.0, + "tight_KaonPIDpi": 5.0, + "tight_ProtonPIDp": 7, + "tight_ProtonPIDpK": 0.0, + "tight_ProtonPIDppi": 5.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu = { + "BUILDERTYPE": "Xic0ToXiMuNuConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu+]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_LLLLine", + "StrippingXic0ToXiMuNu_DDLLine", + "StrippingXic0ToXiMuNu_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic0ToXiMuNu_WS = { + "BUILDERTYPE": "Xic0ToXiMuNu_WSConf", + "CONFIG": { + "RequiredRawEvents": [ "Velo" ], + "amass_ximu": "(in_range(1400*MeV,AMASS(),4500*MeV)) & ", + "bach_muon": { + "filter": "(PT>200*MeV) & (P>3000*MeV) & (PROBNNmu>0.3) & (BPVIPCHI2()>4)", + "tes": "Phys/StdAllNoPIDsMuons/Particles" + }, + "bach_pion": { + "filter": "(PT > 120*MeV) & (P > 1000*MeV) & (MIPDV(PRIMARY)>0.01*mm) & (MIPCHI2DV(PRIMARY) > 9.0) & (PROBNNpi>0.03)", + "tes": "Phys/StdAllNoPIDsPions/Particles" + }, + "descriptor_xi": [ + "[Xi- -> Lambda0 pi-]cc" + ], + "descriptor_ximu": [ + "[Xi_c0 -> Xi- mu-]cc" + ], + "down_pion": { + "filter": "(P>1000*MeV) & (PT>150*MeV) & (PROBNNpi>0.03)", + "tes": "Phys/StdNoPIDsDownPions/Particles" + }, + "lambda_dd": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>12*GeV) & (PT>400*MeV) & (CHILDIP(1)<2*mm) & (MAXTREE('p+'==ABSID,P)>9*GeV) & (CHI2VXNDF<30) &\n (MAXTREE('p+'==ABSID,PT)>200*MeV) & (MAXTREE('pi+'==ABSID,PT)>150*MeV) & (VFASPF(VZ) > 300.*mm) & (VFASPF(VZ) < 2485.*mm)", + "tes": "Phys/StdLooseLambdaDD/Particles" + }, + "lambda_ll": { + "filter": "(ADMASS('Lambda0')<20*MeV) & (P>6*GeV) & (PT>200*MeV) & (BPVVDZ>8*mm) & (BPVLTIME() > 2.0*ps) & (CHI2VXNDF<20) &\n (MAXTREE('p+'==ABSID,MIPCHI2DV(PRIMARY))>9) & (MAXTREE('pi-'==ABSID,MIPCHI2DV(PRIMARY))>24) & \n (MAXTREE('p+'==ABSID,PT)>100*MeV) & (MAXTREE('p+'==ABSID,P)>5.0*GeV) & (VFASPF(VZ) > -100.*mm) & (VFASPF(VZ) < 640.*mm) & (BPVVDCHI2 > 100)", + "tes": "Phys/StdVeryLooseLambdaLL/Particles" + }, + "xc0_ddd": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<5.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV)" + }, + "xc0_ddl": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<3.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>20*GeV) & (PT>200*MeV) " + }, + "xc0_lll": { + "comb_cut": "AHASCHILD( (ABSID == 'mu+') ) & (ADOCA(1,2)<1.5)", + "mother_cut": "(VFASPF(VCHI2/VDOF)<25) & (BPVVDCHI2>4) & (P>12*GeV) & (PT>200*MeV)" + }, + "xi_ddd": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>20) & (ADOCA(1,2)<5*mm) & (ACHI2DOCA(1,2)<12)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>10) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_ddl": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ADOCA(1,2)<2.5*mm) & (ACHI2DOCA(1,2)<12) ", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>20) & (BPVLTIME() > 2.0*picosecond) &\n (P>15*GeV) & (PT>600*MeV)" + }, + "xi_lll": { + "comb_cut": "(ASUM(PT)>0.5*GeV) & (ADAMASS('Xi-')<30*MeV) & (ACHILD(2,MIPCHI2DV(PRIMARY))>9) & (ADOCA(1,2)<0.5*mm) & (ACHI2DOCA(1,2)<20)", + "mother_cut": "(ADMASS('Xi-')<25*MeV) & (VFASPF(VCHI2PDOF) < 10.0) & (BPVVDCHI2>15) & (BPVLTIME() > 2.0*picosecond) & \n (P>8*GeV) & (PT>400*MeV) " + } + }, + "STREAMS": { + "CharmCompleteEvent": [ + "StrippingXic0ToXiMuNu_WS_LLLLine", + "StrippingXic0ToXiMuNu_WS_DDLLine", + "StrippingXic0ToXiMuNu_WS_DDDLine" + ] + }, + "WGs": [ "Charm" ] +} + +Xic2PHH = { + "BUILDERTYPE": "StrippingXic2PHH", + "CONFIG": { + "BPVIPCHI2_Phi": 4, + "GEC_nLongTrk": 250, + "GhostProb": 0.3, + "KSCutDIRA_DD": 0.999, + "KSCutDIRA_LL": 0.999, + "KSCutFDChi2_DD": 5, + "KSCutFDChi2_LL": 5, + "KSCutMass_DD": 50.0, + "KSCutMass_LL": 35.0, + "KaonP": 2000.0, + "KaonPIDK": 10.0, + "KaonPT": 200.0, + "Kaon_PIDKPIDpi_Min": 5.0, + "MINIPCHI2": 4.0, + "MaxDz_DD": 9999.0, + "MaxDz_LL": 9999.0, + "MaxKsVCHI2NDOF_DD": 20.0, + "MaxKsVCHI2NDOF_LL": 20.0, + "MaxPhiEta": 5.0, + "MinDz_DD": 250.0, + "MinDz_LL": 0.0, + "MinKsIpChi2_DD": 3, + "MinKsIpChi2_LL": 3, + "MinKsPT_DD": 200.0, + "MinKsPT_LL": 200.0, + "MinPhiEta": 2.0, + "MinPhiP": 3000.0, + "MinPhiPT": 200.0, + "PhiCutMass": 20.0, + "PionP": 3000.0, + "PionPIDK": 10.0, + "PionPT": 500.0, + "Pion_PIDpiPIDK_Min": 0.0, + "ProbNNk": 0.4, + "ProbNNp": 0.4, + "ProbNNpMin": 0.2, + "ProbNNpi": 0.5, + "ProbNNpiMax": 0.95, + "ProtonP": 3000.0, + "ProtonPT": 500.0, + "Proton_PIDpPIDK_Min": 0.0, + "Proton_PIDpPIDpi_Min": 5.0, + "TRCHI2DOFMax": 3.0, + "TrGhostProbMax": 0.25, + "Xic_ADAMASS_HalfWin": 170.0, + "Xic_ADMASS_HalfWin": 120.0, + "Xic_AM_Max": 2550.0, + "Xic_BPVDIRA_Min": 0.9, + "Xic_BPVVDCHI2_Min": 25.0, + "pKK_AM_Min": 2380.0, + "ppipi_AM_Min": 2380.0, + "signalPrescaleViaXicPKK": 1.0, + "signalPrescaleViaXicPKS0DD": 1.0, + "signalPrescaleViaXicPKS0LL": 1.0, + "signalPrescaleViaXicPPhi2KK": 1.0, + "signalPrescaleViaXicPPiPi": 1.0 + }, + "STREAMS": [ "Charm" ], + "WGs": [ "Charm" ] +} +