B2OC: Add a generic B-meason BDT and a B->Dh BDT
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:
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.