Skip to content
Snippets Groups Projects
Commit 393d8542 authored by Maarten Van Veghel's avatar Maarten Van Veghel Committed by Maarten Van Veghel
Browse files

latest devs

parent 001aad02
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !1514. Comments created here will be created in the context of that merge request.
......@@ -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)
......@@ -115,7 +115,8 @@ from .HbToLLLNu import (
make_b2emumunu_fakeelectron, make_b2mueenu_fakemuon,
make_b2eeenu_trifakeelectron, make_b2eeenu_onefakeelectron)
from .HbToTauNu_BTracking import (
make_x23prong_btracking, make_b2dpipi_d2kpipi, make_b2taunu_tau2pipipi)
make_x23prong_btracking, make_b2dpipi_d2kpipi, make_b2taunu_tau2pipipi,
make_b2taunu_tau2pipipi_with_tracking)
from PyConf.application import default_raw_event
PROCESS = 'hlt2'
......@@ -1598,12 +1599,14 @@ def hlt2_btotaunu_tautopipipinu_btracking_line(
"""
SL Hlt2 line for B+(c)->Tau+(->Pi+Pi+Pi-Nu)Nu + c.c. with ability for B+(c) tracking
"""
line_alg = make_b2taunu_tau2pipipi(process=PROCESS)
line_alg, btracking = make_b2taunu_tau2pipipi_with_tracking(
process=PROCESS)
return HltLine(
name=name,
prescale=prescale,
algs=sl_line_prefilter() + [line_alg],
extra_outputs=[("RawBankVP", make_raw(["VP"]))],
algs=sl_line_prefilter() + [line_alg, btracking],
extra_outputs=[("RawBankVP", make_raw(["VP"])),
("HeavyFlavourTrackingInfo", btracking.OutputLocation)],
persistreco=persistreco)
......@@ -1629,7 +1632,7 @@ def hlt2_btodpipi_dtokpipi_btracking_line(
@register_line_builder(hlt2_lines)
def hlt2_btodpipi_dtokpipi_btracking_loose_line(
name="Hlt2SLB_BToDPiPi_DToKPiPi_BTracking_LooseMinFDT_Line",
prescale=0.1,
prescale=1,
make_raw=default_raw_event,
persistreco=True):
"""
......
......@@ -39,7 +39,7 @@ from PyConf.Algorithms import (
TrackSOAFromV1, LHCb__Converters__Track__SOA__fromSharedV1Track as
TrackSOAFromSharedV1, PrKalmanFilter, PrKalmanFilter_noUT,
PrKalmanFilter_Seed, PrKalmanFilter_Velo, PrKalmanFilter_Downstream,
PrKalmanFilter_Upstream)
PrKalmanFilter_Upstream, VeloHeavyFlavourTracking)
from PyConf.Tools import (PrAddUTHitsTool, PrIgnoreUTHitsTool, UpgradeGhostId,
TrackMasterExtrapolator, TrackLinearExtrapolator)
......@@ -1502,3 +1502,9 @@ def convert_tracks_to_v3_from_v1(tracks_v1,
tracks[tracktype] = trackconverter.OutputTracks
trackrels[tracktype] = trackconverter.Relations
return tracks, trackrels
def make_veloheavyflavourtracks(composites, pvs):
vp_hits = make_VeloClusterTrackingSIMD_hits()
return VeloHeavyFlavourTracking(
Composites=composites, PVs=pvs, Hits=vp_hits)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment