Skip to content
Snippets Groups Projects

B2taunu with btracking lines

Merged Maarten Van Veghel requested to merge mveghel-b2taunu-btracking into master
3 files
+ 63
32
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -19,6 +19,8 @@ from Hlt2Conf.algorithms_thor import ParticleFilter, ParticleCombiner, require_a
from RecoConf.reconstruction_objects import make_pvs
from Hlt2Conf.standard_particles import (make_has_rich_long_pions,
make_has_rich_long_kaons)
from RecoConf.hlt2_tracking import make_veloheavyflavourtracks
"""
SL lines for the B->taunu decays (and control modes) with purpose of using charged
B tracking, hence large transverse flight distance requirements and VELO raw banks
@@ -30,15 +32,16 @@ def make_candidate_btracking(name,
make_particles,
make_pvs=make_pvs,
p_min=10 * GeV,
pt_min=1 * GeV,
ip_min=0.1 * mm,
pt_min=0.5 * GeV,
mipchi2_min=4,
pid=None):
"""
base candidates for btracking
note: note extra track quality (based) cuts due to possible B hits in tracks
"""
pvs = make_pvs()
code = require_all(F.P > p_min, F.PT > pt_min, F.MINIP(pvs) > ip_min)
code = require_all(F.P > p_min, F.PT > pt_min,
F.MINIPCHI2(pvs) > mipchi2_min)
if pid is not None:
code = require_all(code, pid)
return ParticleFilter(make_particles(), F.FILTER(code), name=name)
@@ -49,18 +52,17 @@ def make_x23prong_btracking(name="SLB_ThreeProng_BTracking",
particles=make_has_rich_long_pions,
descriptor="[tau+ -> pi- pi+ pi+]cc",
make_pvs=make_pvs,
comb_doca_max=0.15 * mm,
pt_min=2.0 * GeV,
mipchi2_min=4,
vchi2_max=16,
m_min=400. * MeV,
pt_min=5.0 * GeV,
comb_doca_max=0.1 * mm,
mipchi2_min=10,
vchi2_max=12,
m_min=500. * MeV,
m_max=3500. * MeV,
fdt_min=4. * mm,
fdt_min=5. * mm,
mcorr_min=None,
twobody_m_max=1670 * MeV):
"""
3-prong decay for B tracking purposes, with large transverse flight distance (fdt)
and no track quality (based) requirements
"""
pvs = make_pvs()
@@ -70,8 +72,7 @@ def make_x23prong_btracking(name="SLB_ThreeProng_BTracking",
# three-body selection
combination_code = require_all(
in_range(m_min - 50 * MeV, F.MASS, m_max + 50 * MeV),
F.MAXDOCACUT(comb_doca_max),
F.SUBCOMB(Functor=F.MASS < twobody_m_max, Indices=(1, 3)))
F.MAXDOCACUT(comb_doca_max))
if mipchi2_min is not None:
combination_code = require_all(
combination_code, 1 < F.SUM(F.MINIPCHI2(pvs) > mipchi2_min))
@@ -82,21 +83,23 @@ def make_x23prong_btracking(name="SLB_ThreeProng_BTracking",
if mcorr_min is not None:
vertex_code = require_all(vertex_code, F.BPVCORRM(pvs) > mcorr_min)
if fdt_min is not None:
vertex_code = require_all(vertex_code, F > F.BPVVDRHO(pvs) > fdt_min)
vertex_code = require_all(vertex_code, F.BPVVDRHO(pvs) > fdt_min)
return ParticleCombiner(
particles,
DecayDescriptor=descriptor,
Combination12Cut=twobody_code,
CombinationCut=combination_code,
CompositeCut=vertex_code)
CompositeCut=vertex_code,
name=name)
def make_twopions(pions,
mother_id="rho(770)0",
m_max=3.5 * GeV,
comb_doca_max=0.15 * mm,
vchi2_max=16):
comb_doca_max=0.1 * mm,
vchi2_max=12,
name='SLB_BTracking_TwoPions'):
"""
for pions from B+->D-pi+pi+ dalitz decays, these pions form the B vertex
"""
@@ -107,7 +110,8 @@ def make_twopions(pions,
return ParticleCombiner([pions, pions],
DecayDescriptor=f"[{mother_id} -> pi+ pi+]cc",
CombinationCut=combination_code,
CompositeCut=vertex_code)
CompositeCut=vertex_code,
name=name)
def make_b2taunu_tau2pipipi(process):
@@ -118,18 +122,30 @@ def make_b2taunu_tau2pipipi(process):
assert process in ['hlt2', 'spruce'
], 'Line must be defined as Hlt2 or Sprucing line!'
pions = make_candidate_btracking()
pions = make_candidate_btracking(
name="SLB_BTracking_Pions",
make_particles=make_has_rich_long_pions,
pid=(F.PID_K < 2))
return make_x23prong_btracking(
name="SLB_TauToThreePion_BTracking",
name="SLB_BTracking_TauToThreePion",
particles=[pions, pions, pions],
descriptor="[tau+ -> pi- pi+ pi+]cc")
descriptor="[tau+ -> pi- pi+ pi+]cc",
m_max=1825. * MeV)
def make_b2taunu_tau2pipipi_with_tracking(process):
parts = make_b2taunu_tau2pipipi(process)
pvs = make_pvs()
btracks = make_veloheavyflavourtracks(composites=parts, pvs=pvs)
return parts, btracks
def make_b2dpipi_d2kpipi(process,
vchi2_max=16,
m_min=5.0 * GeV,
m_max=5.7 * GeV):
m_max=5.7 * GeV,
name='SLB_BTracking_B2DPiPi'):
"""
for candidates for B+ -> D- ( -> K+ pi- pi- ) pi+ pi+ with B tracking (control channel)
"""
@@ -137,20 +153,25 @@ def make_b2dpipi_d2kpipi(process,
], 'Line must be defined as Hlt2 or Sprucing line!'
pions = make_candidate_btracking(
name="SLB_Pions_BTracking", particles=make_has_rich_long_pions)
name="SLB_BTracking_Pions",
make_particles=make_has_rich_long_pions,
pid=(F.PID_K < 2))
kaons = make_candidate_btracking(
name="SLB_Kaons_BTracking", particles=make_has_rich_long_kaons)
name="SLB_BTracking_Kaons",
make_particles=make_has_rich_long_kaons,
pid=(F.PID_K > 4))
# input D-, same selection as tau23pi aside from mass window
dps = make_x23prong_btracking(
name="SLB_DToKaonTwoPion_BTracking",
name="SLB_BTracking_DToKaonTwoPion",
particles=[kaons, pions, pions],
descriptor="[D- -> K+ pi- pi-]cc",
m_min=1830 * MeV,
m_max=1910 * MeV)
twopions_id = "rho(770)0"
twopions = make_twopions(pions, mother_id=twopions_id)
twopions = make_twopions(
pions, mother_id=twopions_id, name="SLB_BTracking_TwoPion_For_B")
# combine to form full B
combination_code = require_all(
@@ -162,4 +183,5 @@ def make_b2dpipi_d2kpipi(process,
return ParticleCombiner([dps, twopions],
DecayDescriptor=f"[B+ -> D- {twopions_id}]cc",
CombinationCut=combination_code,
CompositeCut=vertex_code)
CompositeCut=vertex_code,
name=name)
Loading