Skip to content

B2OC: Add a generic B-meason BDT and a B->Dh BDT

Shunan Zhang requested to merge b2oc-shunan-BDT into b2oc_upgrade

Implementation

Following the structure in the previous MR !340 (closed), the variables used for generic B-meson BDT is modified, and another BDT aiming for B->Dh decays is implemented.

Training variables for generic B-meson BDT:

log_B_PT: math.log(PT)
B_ETA: ETA
log_B_DIRA: math.log(1.-BPVDIRA())
log_B_ENDVERTEX_CHI2: math.log(VFASPF(VCHI2/VDOF))
log_B_IPCHI2_OWNPV: math.log(BPVIPCHI2())
log_B_IP_OWNPV: math.log(BPVIP())

In addition to the variables above, information of decay products are also included in the B->Dh BDT:

log_D_PT: math.log(CHILD(PT,1))
log_Bac_PT: math.log(CHILD(PT,2))
log_D_MINIPCHI2: math.log(CHILD(MIPCHI2DV(PRIMARY),1))
log_Bac_MINIPCHI2: math.log(CHILD(MIPCHI2DV(PRIMARY),2))

Test

The signal input is upgrade signal MC of 4 decay channels: Bs -> Ds K, Bs -> Ds pi, B+ -> (D0 -> K K) K+ and B+ -> (D0 -> Ks pi pi) K+, and the background input is upgrade minimal bias MC (reconstructed as Bs -> Ds K). Currently the cut value is set to -0.2.

Overtraining test plots of these two BDTs are attached here: overtrain_B_BDT overtrain_B2DH_BDT

A test is run on several events of Bs -> Ds K (signal) MC and minimal bias (background) MC. The example line is Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_Line, two more versions are added with these BDTs applied, respectively. So the lines tested are

Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_Line          # the original line
Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_BBDT_Line     # with B-meson BDT applied
Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_B2DHBDT_Line  # with B->Dh BDT appiled

Results with signal MC:

LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_Line            #=7180    Sum=90       Eff=|( 1.253482 +- 0.131298)%|
LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_BBDT_Line       #=7180    Sum=84       Eff=|( 1.169916 +- 0.126899)%|
LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_B2DHBDT_Line    #=7180    Sum=88       Eff=|( 1.225627 +- 0.129849)%|

Results with background MC:

LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_Line            #=20699   Sum=7        Eff=|(0.03381806 +- 0.0127799)%|
LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_BBDT_Line       #=20699   Sum=2        Eff=|(0.009662303 +- 0.00683195)%|
LAZY_AND: Hlt2B2OC_BdToDsmK_DsmToHHH_LTU_B2DHBDT_Line    #=20699   Sum=3        Eff=|(0.01449345 +- 0.00836719)%|

Usage

The tested lines are not included in this MR, because (nearly) duplicated lines should not appear in the official B2OC branch. The BDTs are implemented in the prefilters.py, to apply them on specific lines, change the line_alg (take test line as an example) from

line_alg = b_builder.make_lifetime_unbiased_b2x(
        particles=[d, bachelor], descriptors=['[B0 -> D_s- K+]cc'])

to

b = b_builder.make_lifetime_unbiased_b2x(
        particles=[d, bachelor], descriptors=['[B0 -> D_s- K+]cc'])
line_alg = b_bdt_filter(b)  # here the generic B-meson BDT is used

and everything else remains the same.

Edited by Shunan Zhang

Merge request reports